Message ID | 1486983858-11362-1-git-send-email-geert+renesas@glider.be (mailing list archive) |
---|---|
State | Under Review |
Delegated to: | Geert Uytterhoeven |
Headers | show |
On Mon, Feb 13, 2017 at 12:04:18PM +0100, Geert Uytterhoeven wrote: > Some IOMMUs (e.g. Renesas IPMMU/VMSA) support only page sizes of 4 KiB, > 2 MiB, and 1 GiB. > > With the default setting of CONFIG_CMA_ALIGNMENT = 8, allocations larger > than 1 MiB are aligned to a 1 MiB boundary only. Hence a 2 MiB > allocation may not be aligned, leading to a mapping of 512 4 KiB pages. > > Increase CONFIG_CMA_ALIGNMENT to allow mapping a 2 MiB buffer using a > single PTE, decreasing memory usage and TLB pressure. > > Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> > --- > Is this useful? I assume you're proposing it because you see an improvement? :) > Should there instead be different defaults in Kconfig, depending on > enabled platform support? I don't object to updating defconfig as a quick hack, but the right solution is probably to make the core Kconfig default value overridable by the architecture. Will
diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig index 7735cfba01c8e650..7af449f3f41435bc 100644 --- a/arch/arm64/configs/defconfig +++ b/arch/arm64/configs/defconfig @@ -144,6 +144,7 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y CONFIG_DMA_CMA=y +CONFIG_CMA_ALIGNMENT=9 CONFIG_MTD=y CONFIG_MTD_BLOCK=y CONFIG_MTD_M25P80=y
Some IOMMUs (e.g. Renesas IPMMU/VMSA) support only page sizes of 4 KiB, 2 MiB, and 1 GiB. With the default setting of CONFIG_CMA_ALIGNMENT = 8, allocations larger than 1 MiB are aligned to a 1 MiB boundary only. Hence a 2 MiB allocation may not be aligned, leading to a mapping of 512 4 KiB pages. Increase CONFIG_CMA_ALIGNMENT to allow mapping a 2 MiB buffer using a single PTE, decreasing memory usage and TLB pressure. Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> --- Is this useful? Should there instead be different defaults in Kconfig, depending on enabled platform support? --- arch/arm64/configs/defconfig | 1 + 1 file changed, 1 insertion(+)