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

Re: [Xen-devel] [PATCH v2] x86/apic/x2apic: Share IRQ vector between cluster members only when no cpumask is specified



>>> On 25.08.17 at 18:00, <boris.ostrovsky@xxxxxxxxxx> wrote:
> On 08/25/2017 10:56 AM, Jan Beulich wrote:
>>>>> On 08.08.17 at 17:59, <boris.ostrovsky@xxxxxxxxxx> wrote:
>>> --- a/xen/arch/x86/genapic/delivery.c
>>> +++ b/xen/arch/x86/genapic/delivery.c
>>> @@ -30,7 +30,8 @@ void __init clustered_apic_check_flat(void)
>>>     printk("Enabling APIC mode:  Flat.  Using %d I/O APICs\n", nr_ioapics);
>>>  }
>>>  
>>> -const cpumask_t *vector_allocation_cpumask_flat(int cpu)
>>> +const cpumask_t *vector_allocation_cpumask_flat(int cpu,
>>> +    const cpumask_t *cpumask)
>>>  {
>>>     return &cpu_online_map;
>>>  } 
>>> @@ -58,7 +59,8 @@ void __init clustered_apic_check_phys(void)
>>>     printk("Enabling APIC mode:  Phys.  Using %d I/O APICs\n", nr_ioapics);
>>>  }
>>>  
>>> -const cpumask_t *vector_allocation_cpumask_phys(int cpu)
>>> +const cpumask_t *vector_allocation_cpumask_phys(int cpu,
>>> +    const cpumask_t *cpumask)
>>>  {
>>>     return cpumask_of(cpu);
>>>  }
>>> --- a/xen/arch/x86/genapic/x2apic.c
>>> +++ b/xen/arch/x86/genapic/x2apic.c
>>> @@ -72,8 +72,12 @@ static void __init clustered_apic_check_x2apic(void)
>>>  {
>>>  }
>>>  
>>> -static const cpumask_t *vector_allocation_cpumask_x2apic_cluster(int cpu)
>>> +static const cpumask_t *vector_allocation_cpumask_x2apic_cluster(int cpu,
>>> +    const cpumask_t *cpumask)
>>>  {
>>> +    if ( !cpumask )
>>> +        return cpumask_of(cpu);
>>> +
>>>      return per_cpu(cluster_cpus, cpu);
>>>  }
>> It is a strange addition you're making here: None of the three
>> implementations care about the passed in mask. Why is this then
>> not a bool with a suitable name?
> 
> I can pass in a bool. Say, 'bool share_vectors'.

How about the opposite, 'isolate_vectors'? To me that would seem
to fit better with the intention of the change.

>> Further I'd prefer if you made it a single return statement here,
>> using a conditional expression.
>>
>> And finally I continue to be not really happy about the change as
>> a whole. Despite what was discussed on v1, I'm concerned of the
>> effects of this on hosts _not_ suffering from vector shortage.
>> Could you live with the new behavior requiring a command line
>> option to enable?
> 
> I can add something like 'apic_share_vectors', defaulting to true,
> although it will not be useful in case of a hotplug. Defaulting to false?

Along the lines of the above plus our desire to limit the number
of top level options, how about "apic=isolate-vectors"?

Also I don't understand your reference to hotplug, nor why you
suggest two opposite default values.

But finally, you agreeing to a command line option here makes
me come back to an earlier suggestion: Didn't we agree that
"x2apic_phys" would be sufficient to eliminate the issue? In which
case no patch would be needed at all.

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

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