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

Re: [Xen-devel] [PATCH RFC] x86: Add hack to disable "Fake HT" mode



On 15.11.2019 12:58, George Dunlap wrote:
> On 11/15/19 11:12 AM, Jan Beulich wrote:
>> On 15.11.2019 11:57, George Dunlap wrote:
>>> --- a/tools/libxc/xc_cpuid_x86.c
>>> +++ b/tools/libxc/xc_cpuid_x86.c
>>> @@ -579,52 +579,68 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t 
>>> domid,
>>>      }
>>>      else
>>>      {
>>> -        /*
>>> -         * Topology for HVM guests is entirely controlled by Xen.  For 
>>> now, we
>>> -         * hardcode APIC_ID = vcpu_id * 2 to give the illusion of no SMT.
>>> -         */
>>> -        p->basic.htt = true;
>>> +        p->basic.htt = false;
>>>          p->extd.cmp_legacy = false;
>>>  
>>> -        /*
>>> -         * Leaf 1 EBX[23:16] is Maximum Logical Processors Per Package.
>>> -         * Update to reflect vLAPIC_ID = vCPU_ID * 2, but make sure to 
>>> avoid
>>> -         * overflow.
>>> -         */
>>> -        if ( !(p->basic.lppp & 0x80) )
>>> -            p->basic.lppp *= 2;
>>> -
>>
>> I appreciate you wanting to put all adjustments in a central place, but
>> at least it makes patch review more difficult. How about you latch
>> !getenv("XEN_LIBXC_DISABLE_FAKEHT") into a local boolean at the top of
>> the function and then the above would become
>>
>>         if ( !(p->basic.lppp & 0x80) )
>>             p->basic.lppp <<= fakeht;
>>
>> and e.g. ...
>>
>>>          switch ( p->x86_vendor )
>>>          {
>>>          case X86_VENDOR_INTEL:
>>>              for ( i = 0; (p->cache.subleaf[i].type &&
>>>                            i < ARRAY_SIZE(p->cache.raw)); ++i )
>>>              {
>>> -                p->cache.subleaf[i].cores_per_package =
>>> -                    (p->cache.subleaf[i].cores_per_package << 1) | 1;
>>
>> ... this
>>
>>                 p->cache.subleaf[i].cores_per_package =
>>                     (p->cache.subleaf[i].cores_per_package << fakeht) | 
>> fakeht;
> 
> I'm afraid I think the code itself would then become more difficult to
> read;

Slightly, but yes.

> and it seems a bit strange to be architecting our code based on
> limitations of the diff algorithm and/or diff viewer used.

It's not entirely uncommon to (also) consider how the resulting
diff would look like when putting together a change. And besides
the review aspect, there's also the archeology one - "git blame"
yields much more helpful results when code doesn't get moved
around more than necessary. But yes, there's no very clear "this
is the better option" here. I've taken another look at the code
before your change though - everything is already nicely in one
place with Andrew's most recent code reorg. So I'm now having an
even harder time seeing why you want to move things around again.

Jan

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

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