lkml.org 
[lkml]   [2018]   [Dec]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v5 3/3] mm: Add /sys/kernel/slab/cache/cache_dma32
    Date
    A previous patch in this series adds support for SLAB_CACHE_DMA32
    kmem caches. This adds the corresponding
    /sys/kernel/slab/cache/cache_dma32 entries, and fixes slabinfo
    tool.

    Signed-off-by: Nicolas Boichat <drinkcat@chromium.org>
    ---

    There were different opinions on whether this sysfs entry should
    be added, so I'll leave it up to the mm/slub maintainers to decide
    whether they want to pick this up, or drop it.

    Documentation/ABI/testing/sysfs-kernel-slab | 9 +++++++++
    mm/slub.c | 11 +++++++++++
    tools/vm/slabinfo.c | 7 ++++++-
    3 files changed, 26 insertions(+), 1 deletion(-)

    diff --git a/Documentation/ABI/testing/sysfs-kernel-slab b/Documentation/ABI/testing/sysfs-kernel-slab
    index 29601d93a1c2ea..d742c6cfdffbe9 100644
    --- a/Documentation/ABI/testing/sysfs-kernel-slab
    +++ b/Documentation/ABI/testing/sysfs-kernel-slab
    @@ -106,6 +106,15 @@ Description:
    are from ZONE_DMA.
    Available when CONFIG_ZONE_DMA is enabled.

    +What: /sys/kernel/slab/cache/cache_dma32
    +Date: December 2018
    +KernelVersion: 4.21
    +Contact: Nicolas Boichat <drinkcat@chromium.org>
    +Description:
    + The cache_dma32 file is read-only and specifies whether objects
    + are from ZONE_DMA32.
    + Available when CONFIG_ZONE_DMA32 is enabled.
    +
    What: /sys/kernel/slab/cache/cpu_slabs
    Date: May 2007
    KernelVersion: 2.6.22
    diff --git a/mm/slub.c b/mm/slub.c
    index 4caadb926838ef..840f3719d9d543 100644
    --- a/mm/slub.c
    +++ b/mm/slub.c
    @@ -5104,6 +5104,14 @@ static ssize_t cache_dma_show(struct kmem_cache *s, char *buf)
    SLAB_ATTR_RO(cache_dma);
    #endif

    +#ifdef CONFIG_ZONE_DMA32
    +static ssize_t cache_dma32_show(struct kmem_cache *s, char *buf)
    +{
    + return sprintf(buf, "%d\n", !!(s->flags & SLAB_CACHE_DMA32));
    +}
    +SLAB_ATTR_RO(cache_dma32);
    +#endif
    +
    static ssize_t usersize_show(struct kmem_cache *s, char *buf)
    {
    return sprintf(buf, "%u\n", s->usersize);
    @@ -5444,6 +5452,9 @@ static struct attribute *slab_attrs[] = {
    #ifdef CONFIG_ZONE_DMA
    &cache_dma_attr.attr,
    #endif
    +#ifdef CONFIG_ZONE_DMA32
    + &cache_dma32_attr.attr,
    +#endif
    #ifdef CONFIG_NUMA
    &remote_node_defrag_ratio_attr.attr,
    #endif
    diff --git a/tools/vm/slabinfo.c b/tools/vm/slabinfo.c
    index 334b16db0ebbe9..4ee1bf6e498dfa 100644
    --- a/tools/vm/slabinfo.c
    +++ b/tools/vm/slabinfo.c
    @@ -29,7 +29,7 @@ struct slabinfo {
    char *name;
    int alias;
    int refs;
    - int aliases, align, cache_dma, cpu_slabs, destroy_by_rcu;
    + int aliases, align, cache_dma, cache_dma32, cpu_slabs, destroy_by_rcu;
    unsigned int hwcache_align, object_size, objs_per_slab;
    unsigned int sanity_checks, slab_size, store_user, trace;
    int order, poison, reclaim_account, red_zone;
    @@ -531,6 +531,8 @@ static void report(struct slabinfo *s)
    printf("** Hardware cacheline aligned\n");
    if (s->cache_dma)
    printf("** Memory is allocated in a special DMA zone\n");
    + if (s->cache_dma32)
    + printf("** Memory is allocated in a special DMA32 zone\n");
    if (s->destroy_by_rcu)
    printf("** Slabs are destroyed via RCU\n");
    if (s->reclaim_account)
    @@ -599,6 +601,8 @@ static void slabcache(struct slabinfo *s)
    *p++ = '*';
    if (s->cache_dma)
    *p++ = 'd';
    + if (s->cache_dma32)
    + *p++ = 'D';
    if (s->hwcache_align)
    *p++ = 'A';
    if (s->poison)
    @@ -1205,6 +1209,7 @@ static void read_slab_dir(void)
    slab->aliases = get_obj("aliases");
    slab->align = get_obj("align");
    slab->cache_dma = get_obj("cache_dma");
    + slab->cache_dma32 = get_obj("cache_dma32");
    slab->cpu_slabs = get_obj("cpu_slabs");
    slab->destroy_by_rcu = get_obj("destroy_by_rcu");
    slab->hwcache_align = get_obj("hwcache_align");
    --
    2.20.0.rc2.403.gdbc3b29805-goog
    \
     
     \ /
      Last update: 2018-12-07 07:17    [W:3.490 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site