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!