[PATCH] cpu: msr: GPF avoidance on BOCHs QEMU systems (LP: #925001)
Chris Van Hoof
vanhoof at canonical.com
Sat Feb 4 06:37:24 UTC 2012
On 02/02/2012 05:46 AM, Colin King wrote:
> From: Colin Ian King<colin.king at canonical.com>
>
> Bochs firmware based QEMU systems on some configurations get
> General Protection Faults when running the MSR tests. Since this
> isn't real hardware that we care about we can just kludge around
> this by not allowing the MSR tests in Bochs based systems.
>
> Signed-off-by: Colin Ian King<colin.king at canonical.com>
> ---
> src/cpu/msr/msr.c | 19 +++++++++++++++++++
> 1 files changed, 19 insertions(+), 0 deletions(-)
>
> diff --git a/src/cpu/msr/msr.c b/src/cpu/msr/msr.c
> index d6aa00e..5de27a7 100644
> --- a/src/cpu/msr/msr.c
> +++ b/src/cpu/msr/msr.c
> @@ -30,6 +30,8 @@ static fwts_cpuinfo_x86 *cpuinfo;
>
> static int msr_init(fwts_framework *fw)
> {
> + char *bios_vendor;
> +
> if ((cpuinfo = fwts_cpu_get_info(0)) == NULL) {
> fwts_log_error(fw, "Cannot get CPU info");
> return FWTS_ERROR;
> @@ -45,6 +47,23 @@ static int msr_init(fwts_framework *fw)
> fwts_log_error(fw, "Cannot detect the number of CPUs on this machine.");
> return FWTS_ABORTED;
> }
> +
> + /*
> + * Running MSR tests inside virtual machines such as QEMU with some kernel/kvm
> + * combinations have been observed to cause GPFs. We kludge around this by
> + * avoiding MSR tests for a Bochs BIOS based QEMU virtual machine.
> + */
> + if ((bios_vendor = fwts_get("/sys/class/dmi/id/bios_vendor")) != NULL) {
> + if (strstr(bios_vendor, "Bochs")) {
> + fwts_log_error(fw,
> + "MSR test being avoiding inside a virtual machine as "
> + "this is known to cause General Protection Faults on "
> + "some configurations.");
> + free(bios_vendor);
> + return FWTS_SKIP;
> + }
> + free(bios_vendor);
> + }
> return FWTS_OK;
> }
>
Put together a test build[0] of fwts-live based with kernel 3.2.0-14.23
+ fwts version 0.24.17 + this patch patch[1]:
* [0] --
http://hwe.ubuntu.com/fwts-live/test_images/fwts-live-oneiric-amd64-experimental-usb-hdd-20120204-0.img
* [1] --
http://kernel.ubuntu.com/git?p=vanhoof/fwts.git;a=shortlog;h=refs/heads/kvm-msr-test
* [1] -- https://launchpad.net/~vanhoof/+archive/fwts-sandbox/+packages
"""
$ sudo kvm -m 512 -hda
fwts-live-oneiric-amd64-experimental-usb-hdd-20120204-0.img --vga vmware
[ while in kvm instance ]
$ dmesg | grep BOCHS
ACPI: RSDP 00000000000fd9a0 00014 (v00 BOCHS )
$ dpkg -l fwts
[...]
ii fwts 0.24.17ubuntu1 Firmware Test Suite
$ sudo fwts msr
Running 1 tests. results appended to results.log
Test: MSR register tests
Test skipped..
"""
Everything looks good on my end and the rest of the --batch tests
continue as expected. Thanks Colin!
--chris
Tested-by: Chris Van Hoof <vanhoof at canonical.com>
More information about the fwts-devel
mailing list