• T
    percpu: only allow sized arch overrides for {raw|this}_cpu_*() ops · dcba4333
    Tejun Heo 提交于
    Currently, percpu allows two separate methods for overriding
    {raw|this}_cpu_*() ops - for a given operation, an arch can provide
    whole replacement or sized sub operations to override specific parts
    of it.  e.g. arch either can provide this_cpu_add() or
    this_cpu_add_4() to override only the 4 byte operation.
    
    While quite flexible on a glance, the dual-overriding scheme
    complicates the code path for no actual gain.  It compilcates the
    already complex operation definitions and if an arch wants to override
    all sizes, it can easily provide all variants anyway.  In fact, no
    arch is actually making use of whole operation override.
    
    Another oddity is that __this_cpu_*() operations are defined in the
    same way as raw_cpu_*() but ignores full overrides of the raw_cpu_*()
    and doesn't allow full operation override, so if an arch provides
    whole overrides for raw_cpu_*() operations __this_cpu_*() ends up
    using the generic implementations.
    
    More importantly, it takes away the layering between arch-specific and
    generic parts making it impossible for the generic part to implement
    arch-independent features on top of arch-specific overrides.
    
    This patch removes the support for whole operation overrides.  As no
    arch is using it, this doesn't cause any actual difference.
    Signed-off-by: NTejun Heo <tj@kernel.org>
    Acked-by: NChristoph Lameter <cl@linux.com>
    dcba4333
percpu.h 23.5 KB