Re: [Patch v7 14/18] x86, irq, ACPI: Introduce a rwsem to protect IOAPIC operations from hotplug

Jiang Liu
2014-11-02T05:24:14Z

On 2014/11/2 2:59, Thomas Gleixner wrote:
> On Mon, 27 Oct 2014, Jiang Liu wrote:
>> We are going to support ACPI based IOAPIC hotplug, so introduce a rwsem
>> to protect IOAPIC data structures from IOAPIC hotplug. We choose to
>> serialize in ACPI instead of in the IOAPIC core because:
>> 1) currently we are only plan to support ACPI based IOAPIC hotplug
>> 2) it's much more cleaner and easier
>> 3) It does't affect IOAPIC discovered by devicetree, SFI and mpparse.
>
> I had a last intensive look at this series as I was about to merge
> it. So I looked at the locking rules here again
>
>> +/*
>> + * Locks related to IOAPIC hotplug
>> + * Hotplug side:
>> + * ->lock_device_hotplug() //device_hotplug_lock
>> + * ->acpi_ioapic_rwsem
>> + * ->ioapic_lock
>> + * Interrupt mapping side:
>> + * ->acpi_ioapic_rwsem
>> + * ->ioapic_mutex
>> + * ->ioapic_lock
>> + */
>
> This looks sane, but I cannot figure out at all why this needs to be a
> rwsem.
>
>> +static DECLARE_RWSEM(acpi_ioapic_rwsem);
>
> I think it should be a simple mutex because the rwsem does not protect
> against concurrent execution what taken for read.
>
> And the site which takes it for write is in the early boot process
> where nothing runs in parallel AFAICT.
Hi Thomas,
You are right. It's not on hot path, so a mutex is better than
a rwsem here. I will send out an updated version soon.
Regards!
Gerry
>
> Thanks,
>
> tglx
>