[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-bugs] [Bug 1616] New: CPU panic when running cpu offline



http://bugzilla.xensource.com/bugzilla/show_bug.cgi?id=1616

           Summary: CPU panic when running cpu offline
           Product: Xen
           Version: unstable
          Platform: Other
        OS/Version: Linux
            Status: NEW
          Severity: major
          Priority: P1
         Component: Hypervisor
        AssignedTo: xen-bugs@xxxxxxxxxxxxxxxxxxx
        ReportedBy: jiajun.xu@xxxxxxxxx


Environment:
------------
Service Arch (ia32/ia32e/IA64): ia32
Guest Arch (ia32/ia32e/IA64): 
Guest OS Type (Linux/Windows):
Change Set: 21438
Hardware: Stoakley/Gulftown-HEDT
Other:
xen-changeset:   21438:840f269d95fb

pvops git:
commit a3e7c7b82c09450487a7e7f5f47b165c49474fd4
Merge: f3d5fe8... a47d360...
Author: Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx>

ioemu git:
commit 01626771cf2e9285fbfddcbded2820fc77745e4b
Author: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
Date:   Fri Apr 30 17:41:45 2010 +0100

Bug detailed description:
--------------------------
when running cpu online/offine, CPU may panic. This bug not happen against
changeset 21380.

To repoduce the bug, you can compile the two attached C file and run following
script:
###################
#!/bin/sh
i=0

while [ $i -le 100 ]
do
./cpu_offline 1 2 3
./cpu_online 1 2 3
i=$(i+1)
done
###################

###############
/*
 *  xen_exec.c - hunt xen plugins 
 *
 *  Copyright (C) 2007 Intel Corporation 
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or (at
 *  your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful, but
 *  WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License along
 *  with this program; if not, write to the Free Software Foundation, Inc.,
 *  59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
 *
 *  Authors:
 *      Haicheng Li <haicheng.li@xxxxxxxxx>
 *
 */

#include <stdio.h>
#include <string.h>
#include <errno.h>

#define _GNU_SOURCE
#include <getopt.h>

#include <xenctrl.h>

#define CPU_NUM 128

int xen_fd = 0;
int cpus[CPU_NUM] = { 0 };
int cpu_num = 0; 
int offline = 1; 

static int xen_cpu_online(void) {
        int rc = 0, err = 0, i;

        for (i = 0; i < cpu_num; i++) {
                rc = xc_cpu_online(xen_fd, cpus[i]);
                if (rc < 0) {
                        fprintf(stderr, "failed to online cpu%d : %s\n",
cpus[i], strerror(errno));
                        err++;
                } else 
                        fprintf(stdout, "cpu%d is online\n", cpus[i]);
        }
}       

static int xen_cpu_offline(void) {
        int rc = 0, err = 0, i;

        for (i = 0; i < cpu_num; i++) {
                rc = xc_cpu_offline(xen_fd, cpus[i]);
                if (rc < 0) {
                        fprintf(stderr, "failed to offline cpu%d : %s\n",
cpus[i], strerror(errno));
                        err++;
                } else 
                        fprintf(stdout, "cpu%d is offline\n", cpus[i]);
        }
}       

void usage(void) {
        printf("./cpu_hp [-a|-d|-h] cpuid \n");
        return;
}

int main(int argc, char **argv) {
        int rc = 0, i; 

        cpu_num = argc - 1;     

        if (cpu_num <= 0) {
                fprintf(stderr, "no cpu specified\n");
                rc = 1;
                goto error;
        }

        for (i = 0; i < cpu_num; i++) {
                cpus[i] = atoi(argv[i+1]);
        }

        xen_fd = xc_interface_open();
        if (xen_fd < 0) {       
                rc = 1;
                fprintf(stderr, "failed to open xc interface: %s\n",
strerror(errno));
        }

        if (offline)    
                xen_cpu_offline();
        else    
                xen_cpu_online();

error:
        return rc; 
}
###############


-- 
Configure bugmail: 
http://bugzilla.xensource.com/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

_______________________________________________
Xen-bugs mailing list
Xen-bugs@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-bugs


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.