NetBSD-Bugs archive

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

kern/44069: NetBSD-current hangs during boot under Linux kvm emulation

>Number:         44069
>Category:       kern
>Synopsis:       NetBSD-current hangs during boot under Linux kvm emulation
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Nov 08 16:40:00 +0000 2010
>Originator:     Andreas Gustafsson
>Release:        NetBSD-current >= 2009.
System: NetBSD
Architecture: i386
Machine: i386

Attempting to boot NetBSD-current/i386 in a Linux KVM virtual machine
fails.  The kernel locks up after printing the line

  attimer0: attached to pcppi0

On some Linux systems (e.g., Ubuntu 10.04), qemu will use KVM
virtualization by default, so this problem also affects booting NetBSD
under qemu on those systems unless the qemu command line option
"--no-kvm" is used.

Booting versions of -current with CVS source date older than
2009. works (the exact date was identified using
automated binary serach).  The problem was introduced, or perhaps
exposed, by following commit by toshii:

Index: mpacpi.c
RCS file: /cvsroot/src/sys/arch/x86/x86/mpacpi.c,v
retrieving revision 1.78
retrieving revision 1.79
diff -u -r1.78 -r1.79
--- mpacpi.c    16 Sep 2009 10:47:54 -0000      1.78
+++ mpacpi.c    4 Nov 2009 14:39:17 -0000       1.79
@@ -1069,7 +1069,7 @@
                arg.Type = ACPI_TYPE_INTEGER;
                arg.Integer.Value = 1;  /* I/O APIC (0 = PIC, 2 = IOSAPIC) */
                rv = AcpiEvaluateObject(NULL, "\\_PIC", &arglist, NULL);
-               if (ACPI_FAILURE(rv)) {
+               if (ACPI_FAILURE(rv) && rv != AE_NOT_FOUND) {
                        if (mp_verbose)
                                printf("mpacpi: switch to APIC mode failed\n");
                        return 0;


On a Linux system (e.g., Ubuntu 10.04 amd64), attempt to boot a 
disk image using

  kvm -hda disk_image_file

Alternatively, you can install anita from
on the Linux system, and then use it to attempt to boot a recent releng 

  anita boot


Reverting the above commit should fix (or perhaps hide) the problem,
but I don't understand the code in question and can't tell if that
would break something else.

Home | Main Index | Thread Index | Old Index