I am running Xen packaged with CentOS 5.4 and trying to install Ubuntu 10.04 as an HVM guest.

 

xen_major              : 3

xen_minor              : 1

xen_extra              : .2-164.11.1.el5

 

After sprinkling the kernel with printks, I am seeing that it is stuck in the function detect_extended_topology() in the following loop:

<snip>

       sub_index = 1;

       do {

              cpuid_count(0xb, sub_index, &eax, &ebx, &ecx, &edx);

              printk("%s: after cpuid_count %d\n", __FUNCTION__, sub_index);

 

              /*

               * Check for the Core type in the implemented sub leaves.

               */

              if (LEAFB_SUBTYPE(ecx) == CORE_TYPE) {

                     core_level_siblings = LEVEL_MAX_SIBLINGS(ebx);

                     core_plus_mask_width = BITS_SHIFT_NEXT_LEVEL(eax);

                     break;

              }

 

              sub_index++;

       } while (LEAFB_SUBTYPE(ecx) != INVALID_TYPE);

<snip>

 

The ECX leaf subtype never returns CORE_TYPE or INVALID_TYPE. So think I might be running in to a bug / quirk in the CPUID handling code in Xen packaged with CentOS 5.4. Is there a work around for it? Maybe specifying something in the cpuid option in the config file.

 

Thanks!