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

Re: [Xen-devel] Problems with hyperthreading in Windows HVM

On Wed, Feb 29, 2012 at 2:37 PM, Ian Campbell <Ian.Campbell@xxxxxxxxxx> wrote:
> On Wed, 2012-02-29 at 00:28 +0000, Roderick Colenbrander wrote:
>> Hi,
>> I have been trying to get Hyperthreading to work in a Windows HVM on
>> Xen 4.1.2 as described in 'xmexample.hvm'. I think I have set it up
>> correctly, but I can't seem to get it to work. There is not much
>> documentation on it and most topics are from years ago.
> I don't know the answers to your questions, or whether this particular
> type of cpuid modification has ever worked. But might it be that
> something on the hypervisor side is also modifying the cpuid results?

It looks like there is code in xen/arch/x86/hvm/hvm.c which deals with
some more cpuid overrides. Initially it looked like libxc was doing
all the filtering and that 'XEN_DOMCTL_set_cpuid' just stored the
info. I'm not sure yet how that hypercall and the hvm.c code interact.
I have to dive more into it.

It also seems that for modern CPUs cpuid function 11 contains
additional topology information which may have to patched as well.

> I suppose you could start at xen/arch/x86/hvm/emulate.c:hvmemul_cpuid
> and trace down to the actual code in question? Looks like hvm_cpuid() is
> probably the key function of interest.
> Note sure where APIC IDs come from either, xen/arch/x86/hvm/vlapic.c
> might be an interesting starting point. Or perhaps this is done by
> hvmloader tools/firmware/hvmloader.c?
> More questions than answers in the above, sorry about that!
> Ian.

I'm going to dive further into the code and look at the places you
pointed to. I guess it can be made to work with some patching.
Assuming this would all work, I really wonder whether how this
hyperthreading fixup would interact with Xen itself. Normally Xen
hides hyperthreading for a reason and each guest works with 'virtual
cores' which get scheduled. My feeling is that the hyperthreading
fixup would have to be combined with CPU pinning to the correct
physical cores. Then to get 4 logical cores in the VM, you need to
assign 2 VCPUs to the VM. Would the guest OS really be able to
schedule threads over 4 logical cores? I really don't know how this
would work in Xen.


Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.