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
|