• T
    thermal/x86_pkg_temp: Move work into package struct · 411bb383
    Thomas Gleixner 提交于
    Delayed work structs are held in a static percpu storage, which makes no
    sense at all because work is strictly per package and we never schedule
    more than one work per package.
    
    Aside of that the work cancelation in the hotplug is broken when the work
    is queued on the outgoing cpu and canceled. Nothing reschedules the work on
    another online cpu in the package, so the interrupts stay disabled and the
    work_scheduled flag stays active.
    
    Move the delayed work struct into the package struct, which is the only
    sensible place to have it.
    
    To simplify the cancelation logic schedule the work always on the cpu which
    is the target for the sysfs files. This is required so the cancelation
    logic in the cpu offline path cancels only when the outgoing cpu is the
    current target and reschedule the work when there is still a online
    CPU in the package.
    Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
    Tested-by: NSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Signed-off-by: NZhang Rui <rui.zhang@intel.com>
    411bb383
x86_pkg_temp_thermal.c 15.1 KB