lkml.org 
[lkml]   [2020]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 430/639] powerpc/cacheinfo: add cacheinfo_teardown, cacheinfo_rebuild
    Date
    From: Nathan Lynch <nathanl@linux.ibm.com>

    [ Upstream commit d4aa219a074a5abaf95a756b9f0d190b5c03a945 ]

    Allow external callers to force the cacheinfo code to release all its
    references to cache nodes, e.g. before processing device tree updates
    post-migration, and to rebuild the hierarchy afterward.

    CPU online/offline must be blocked by callers; enforce this.

    Fixes: 410bccf97881 ("powerpc/pseries: Partition migration in the kernel")
    Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com>
    Reviewed-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/powerpc/kernel/cacheinfo.c | 21 +++++++++++++++++++++
    arch/powerpc/kernel/cacheinfo.h | 4 ++++
    2 files changed, 25 insertions(+)

    diff --git a/arch/powerpc/kernel/cacheinfo.c b/arch/powerpc/kernel/cacheinfo.c
    index a8f20e5928e13..9edb454301336 100644
    --- a/arch/powerpc/kernel/cacheinfo.c
    +++ b/arch/powerpc/kernel/cacheinfo.c
    @@ -865,4 +865,25 @@ void cacheinfo_cpu_offline(unsigned int cpu_id)
    if (cache)
    cache_cpu_clear(cache, cpu_id);
    }
    +
    +void cacheinfo_teardown(void)
    +{
    + unsigned int cpu;
    +
    + lockdep_assert_cpus_held();
    +
    + for_each_online_cpu(cpu)
    + cacheinfo_cpu_offline(cpu);
    +}
    +
    +void cacheinfo_rebuild(void)
    +{
    + unsigned int cpu;
    +
    + lockdep_assert_cpus_held();
    +
    + for_each_online_cpu(cpu)
    + cacheinfo_cpu_online(cpu);
    +}
    +
    #endif /* (CONFIG_PPC_PSERIES && CONFIG_SUSPEND) || CONFIG_HOTPLUG_CPU */
    diff --git a/arch/powerpc/kernel/cacheinfo.h b/arch/powerpc/kernel/cacheinfo.h
    index 955f5e999f1b8..52bd3fc6642da 100644
    --- a/arch/powerpc/kernel/cacheinfo.h
    +++ b/arch/powerpc/kernel/cacheinfo.h
    @@ -6,4 +6,8 @@
    extern void cacheinfo_cpu_online(unsigned int cpu_id);
    extern void cacheinfo_cpu_offline(unsigned int cpu_id);

    +/* Allow migration/suspend to tear down and rebuild the hierarchy. */
    +extern void cacheinfo_teardown(void);
    +extern void cacheinfo_rebuild(void);
    +
    #endif /* _PPC_CACHEINFO_H */
    --
    2.20.1


    \
     
     \ /
      Last update: 2020-01-24 12:24    [W:4.449 / U:0.164 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site