答复: [External Mail]Re: [PATCH] mm/cma.c: To better understand cma area during debugging, add total and used count logs to in cma_alloc

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> [   24.225125] cma: cma_alloc(cma (____ptrval____), name: reserved, total count 16384, used count: 64, request count 1, align 0)
> [   24.231963] cma: cma_alloc(cma (____ptrval____), name: reserved, total count 16384, used count: 65, request count 1, align 0)
> [   24.235712] cma: cma_alloc(cma (____ptrval____), name: reserved, total count 16384, used count: 66, request count 1, align 0)
>


Above is the cma alloc during boot. The before-and-after context has nothing to do with cma alloc. Below is the log with before-and-after context added.


[   24.006605] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[   24.071644] Serial: AMBA driver
[   24.096063] arm-smmu-v3 9050000.smmuv3: ias 44-bit, oas 44-bit (features 0x00000305)
[   24.097989] cma: cma_alloc(cma (____ptrval____), name: reserved, total count 16384, used count: 64, request count 1, align 0)
[   24.104260] cma: cma_alloc(cma (____ptrval____), name: reserved, total count 16384, used count: 65, request count 1, align 0)
[   24.107504] cma: cma_alloc(cma (____ptrval____), name: reserved, total count 16384, used count: 66, request count 1, align 0)
[   24.140495] cacheinfo: Unable to detect cache hierarchy for CPU 0
[   24.484998] loop: module loaded
[   24.536152] virtio_blk virtio0: [vda] 4194304 512-byte logical blocks (2.15 GB/2.00 GiB)


> --- a/mm/cma.c
> +++ b/mm/cma.c
> @@ -403,6 +403,17 @@ static void cma_debug_show_areas(struct cma *cma)
>       spin_unlock_irq(&cma->lock);
>  }
>
> +static unsigned long cma_get_used(struct cma *cma)
> +{
> +     unsigned long used;
> +
> +     spin_lock_irq(&cma->lock);
> +     used = bitmap_weight(cma->bitmap, (int)cma_bitmap_maxno(cma));

Is the (int) cast needed?
No need here.

> +     spin_unlock_irq(&cma->lock);
> +
> +     return (unsigned long)used << cma->order_per_bit;

Is the (unsigned long) cast needed?
No need here.




发件人: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
发送时间: 2024年9月25日 8:27:19
收件人: Xiang Gao
抄送: linux-mm@xxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; 高翔
主题: [External Mail]Re: [PATCH] mm/cma.c: To better understand cma area during debugging, add total and used count logs to in cma_alloc
 
[外部邮件] 此邮件来源于小米公司外部,请谨慎处理。若对邮件安全性存疑,请将邮件转发给misec@xxxxxxxxxx进行反馈

On Wed, 18 Sep 2024 20:43:25 +0800 Xiang Gao <gxxa03070307@xxxxxxxxx> wrote:

> From: gaoxiang17 <gaoxiang17@xxxxxxxxxx>
>
> [   24.225125] cma: cma_alloc(cma (____ptrval____), name: reserved, total count 16384, used count: 64, request count 1, align 0)
> [   24.231963] cma: cma_alloc(cma (____ptrval____), name: reserved, total count 16384, used count: 65, request count 1, align 0)
> [   24.235712] cma: cma_alloc(cma (____ptrval____), name: reserved, total count 16384, used count: 66, request count 1, align 0)
>

Providing before-and-after output would make the proposal more easily
understood.

> --- a/mm/cma.c
> +++ b/mm/cma.c
> @@ -403,6 +403,17 @@ static void cma_debug_show_areas(struct cma *cma)
>       spin_unlock_irq(&cma->lock);
>  }
>
> +static unsigned long cma_get_used(struct cma *cma)
> +{
> +     unsigned long used;
> +
> +     spin_lock_irq(&cma->lock);
> +     used = bitmap_weight(cma->bitmap, (int)cma_bitmap_maxno(cma));

Is the (int) cast needed?

> +     spin_unlock_irq(&cma->lock);
> +
> +     return (unsigned long)used << cma->order_per_bit;

Is the (unsigned long) bast needed?

> +}
> +
>  /**
>   * cma_alloc() - allocate pages from contiguous area
>   * @cma:   Contiguous memory region for which the allocation is performed.
> @@ -430,8 +441,8 @@ struct page *cma_alloc(struct cma *cma, unsigned long count,
>       if (!cma || !cma->count || !cma->bitmap)
>               return page;
>
> -     pr_debug("%s(cma %p, name: %s, count %lu, align %d)\n", __func__,
> -             (void *)cma, cma->name, count, align);
> +     pr_debug("%s(cma %p, name: %s, total count %lu, used count: %lu, request count %lu, align %d)\n", __func__,
> +             (void *)cma, cma->name, cma->count, cma_get_used(cma), count, align);
>
>       if (!count)
>               return page;
> --
> 2.34.1
#/******本邮件及其附件含有小米公司的保密信息,仅限于发送给上面地址中列出的个人或群组。禁止任何其他人以任何形式使用(包括但不限于全部或部分地泄露、复制、或散发)本邮件中的信息。如果您错收了本邮件,请您立即电话或邮件通知发件人并删除本邮件! This e-mail and its attachments contain confidential information from XIAOMI, which is intended only for the person or entity whose address is listed above. Any use of the information contained herein in any way (including, but not limited to, total or partial disclosure, reproduction, or dissemination) by persons other than the intended recipient(s) is prohibited. If you receive this e-mail in error, please notify the sender by phone or email immediately and delete it!******/#

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux