[PATCH v11] mm,kfence: decouple kfence from page granularity mapping judgement

Marco Elver elver at google.com
Thu Mar 16 14:43:02 PDT 2023


On Thu, 16 Mar 2023 at 16:10, Zhenhua Huang <quic_zhenhuah at quicinc.com> wrote:
>
> Kfence only needs its pool to be mapped as page granularity, if it is
> inited early. Previous judgement was a bit over protected. From [1], Mark
> suggested to "just map the KFENCE region a page granularity". So I
> decouple it from judgement and do page granularity mapping for kfence
> pool only. Need to be noticed that late init of kfence pool still requires
> page granularity mapping.
>
> Page granularity mapping in theory cost more(2M per 1GB) memory on arm64
> platform. Like what I've tested on QEMU(emulated 1GB RAM) with
> gki_defconfig, also turning off rodata protection:
> Before:
> [root at liebao ]# cat /proc/meminfo
> MemTotal:         999484 kB
> After:
> [root at liebao ]# cat /proc/meminfo
> MemTotal:        1001480 kB
>
> To implement this, also relocate the kfence pool allocation before the
> linear mapping setting up, arm64_kfence_alloc_pool is to allocate phys
> addr, __kfence_pool is to be set after linear mapping set up.
>
> LINK: [1] https://lore.kernel.org/linux-arm-kernel/Y+IsdrvDNILA59UN@FVFF77S0Q05N/
> Suggested-by: Mark Rutland <mark.rutland at arm.com>
> Signed-off-by: Zhenhua Huang <quic_zhenhuah at quicinc.com>
> Reviewed-by: Kefeng Wang <wangkefeng.wang at huawei.com>

Reviewed-by: Marco Elver <elver at google.com>

One question: what happens if the page-granular direct map is
requested either way, is there any downside with this patch? Does it
mean map_mem() just does a little extra work it shouldn't have? (Not
saying that's a problem, just trying to ask you to double-check it's
ok.)

However, please also wait for an arm64 maintainer to have a look. I'm
assuming that because it touches mostly arm64 code, this patch ought
to go through the arm64 tree?

Thanks,
-- Marco



More information about the linux-arm-kernel mailing list