If you happen to have this mainboard and wish to use Xen as dom0 on Ubuntu 12.04 LTS – expect “fun” with APIC.

When I first bought this machine long time ago I quickly learned that passing noapic as a kernel parameter was crucial – otherwise the machine was simply refusing to boot. Recently I needed to do a bit of testing – and that involved creation of a lab machine with Xen (as dom0) on Ubuntu 12.04 LTS.

To my surprise the standard trick with noapic did not work. I kept getting the following:

(XEN) *****************************************************
(XEN) Panic on CPU 0:
(XEN) IO-APIC + timer doesn't work! Boot with apic_verbosity=debug and
send a report. Then try booting with hte 'noapic'
option****************************

I also added acpi=off noacpi, but without luck, either. Then I made a small mistake – I introduced two variables at the time and at this point I no longer have access to that system (Xen installation has been replaced with KVM). The steps were:

  • BIOS upgrade: enable HPET (a lot of people claim this is something that helps); BOIS upgrade on M2N-E can be done from a USB key – no need to create weird boot disks or even worse, run the update from Windows
  • setting dom0_max_vcpus=1 kernel parameter

BIOS upgrade takes less than 5 minutes and definitely will help. I used the latest stable release (M2N-E BIOS 1703). If you cannot find the HPET parameter – please check the picture at the bottom of this post.

As for the second task – I found the following in the kernel source:

static void __init xen_smp_prepare_cpus(unsigned int max_cpus)
{
        unsigned cpu;
        unsigned int i;
 
        if (skip_ioapic_setup) {
                char *m = (max_cpus == 0) ?
                        "The nosmp parameter is incompatible with Xen; " \
                        "use Xen dom0_max_vcpus=1 parameter" :
                        "The noapic parameter is incompatible with Xen";
 
                xen_raw_printk(m);
                panic(m);
        }
[...]

As I said – I introduced two variables at the same time – but the end result was: success. I was able to boot Xen kernel.

ASUS M2N-E upgraded BIOS and HPET Support option