• L
    ACPI / EC: Fix a code path that global lock is not held · f3e14329
    Lv Zheng 提交于
    Currently QR_EC is queued up on CPU 0 to be safe with SMM because there is
    no global lock held for acpi_ec_gpe_query(). As we are about to move QR_EC
    to a non CPU 0 bound work queue to avoid invoking kmalloc() in
    advance_transaction(), we have to acquire global lock for the new QR_EC
    work item to avoid regressions.
    
    Known issue:
    1. Global lock for acpi_ec_clear().
       This is an existing issue that acpi_ec_clear() which invokes
       acpi_ec_sync_query() also suffers from the same issue. But this patch's
       target is only the code to invoke acpi_ec_sync_query() in a CPU 0 bound
       work queue item, and the acpi_ec_clear() can be automatically fixed by
       further patch that merges the redundant code, so it is left unchanged.
    Signed-off-by: NLv Zheng <lv.zheng@intel.com>
    Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
    f3e14329
ec.c 32.4 KB