Message ID | 20221212075223.806705-1-panqinglin2020@iscas.ac.cn (mailing list archive) |
---|---|
Headers | show |
Series | riscv, mm: detect svnapot cpu support at runtime | expand |
Hi Qinglin, This is actually v11, not a v10 resend. And please don't send new versions minutes after sending previous versions. v10 is still under review and discussion. Thanks, drew On Mon, Dec 12, 2022 at 03:52:20PM +0800, panqinglin2020@iscas.ac.cn wrote: > From: Qinglin Pan <panqinglin2020@iscas.ac.cn> > > Svnapot is a RISC-V extension for marking contiguous 4K pages as a non-4K > page. This patch set is for using Svnapot in hugetlb fs and huge vmap. > > This patchset adds a Kconfig item for using Svnapot in > "Platform type"->"SVNAPOT extension support". Its default value is on, > and people can set it off if they don't allow kernel to detect Svnapot > hardware support and leverage it. > > Tested on: > - qemu rv64 with "Svnapot support" off and svnapot=true. > - qemu rv64 with "Svnapot support" on and svnapot=true. > - qemu rv64 with "Svnapot support" off and svnapot=false. > - qemu rv64 with "Svnapot support" on and svnapot=false. > > > Changes in v2: > - detect Svnapot hardware support at boot time. > Changes in v3: > - do linear mapping again if has_svnapot > Changes in v4: > - fix some errors/warns reported by checkpatch.pl, thanks @Conor > Changes in v5: > - modify code according to @Conor and @Heiko > Changes in v6: > - use static key insead of alternative errata > Changes in v7: > - add napot_cont_order for possible more napot order in the future > - remove linear mapping related code from this patchset to another patch > - refactor hugetlb code for svnapot according to thanks @Andrew @Conor > - use tools/testing/selftests/vm/map_hugetlb as hugetlb testing program > - support svnapot in huge vmap on newer for-next branch > Changes in v8: > - fix compilation errors in rv32_defconfig > - insert some lines of whitespace according to @Conor's suggestion > Changes in v9: > - use alternative to avoid using static branches inside heavily used > inline functions > - change napot_cont_mask definition > - post test_vmalloc modification about testing vmalloc_huge > Changes in v10: > - fix some nits caught by @Andrew > - collect Reviewed-by/Acked-by > - add memory leak warning in KConfig text > - replace test_vmalloc patch link with the standard one > > > Qinglin Pan (3): > riscv: mm: modify pte format for Svnapot > riscv: mm: support Svnapot in hugetlb page > riscv: mm: support Svnapot in huge vmap > > arch/riscv/Kconfig | 21 +- > arch/riscv/include/asm/errata_list.h | 15 +- > arch/riscv/include/asm/hugetlb.h | 34 ++- > arch/riscv/include/asm/hwcap.h | 2 +- > arch/riscv/include/asm/page.h | 5 - > arch/riscv/include/asm/pgtable-64.h | 34 +++ > arch/riscv/include/asm/pgtable.h | 43 +++- > arch/riscv/include/asm/vmalloc.h | 61 +++++- > arch/riscv/kernel/cpu.c | 1 + > arch/riscv/kernel/cpufeature.c | 15 ++ > arch/riscv/mm/hugetlbpage.c | 301 +++++++++++++++++++++++++++ > 11 files changed, 519 insertions(+), 13 deletions(-) > > -- > 2.37.4 >
On 2022/12/12 16:07, Andrew Jones wrote: > Hi Qinglin, > > This is actually v11, not a v10 resend. And please don't send new versions > minutes after sending previous versions. v10 is still under review and > discussion. > > Thanks, > drew Hi Andrew, Thanks for the notification. I will send v11 after a few days. Thanks, Qinglin. > > On Mon, Dec 12, 2022 at 03:52:20PM +0800, panqinglin2020@iscas.ac.cn wrote: >> From: Qinglin Pan <panqinglin2020@iscas.ac.cn> >> >> Svnapot is a RISC-V extension for marking contiguous 4K pages as a non-4K >> page. This patch set is for using Svnapot in hugetlb fs and huge vmap. >> >> This patchset adds a Kconfig item for using Svnapot in >> "Platform type"->"SVNAPOT extension support". Its default value is on, >> and people can set it off if they don't allow kernel to detect Svnapot >> hardware support and leverage it. >> >> Tested on: >> - qemu rv64 with "Svnapot support" off and svnapot=true. >> - qemu rv64 with "Svnapot support" on and svnapot=true. >> - qemu rv64 with "Svnapot support" off and svnapot=false. >> - qemu rv64 with "Svnapot support" on and svnapot=false. >> >> >> Changes in v2: >> - detect Svnapot hardware support at boot time. >> Changes in v3: >> - do linear mapping again if has_svnapot >> Changes in v4: >> - fix some errors/warns reported by checkpatch.pl, thanks @Conor >> Changes in v5: >> - modify code according to @Conor and @Heiko >> Changes in v6: >> - use static key insead of alternative errata >> Changes in v7: >> - add napot_cont_order for possible more napot order in the future >> - remove linear mapping related code from this patchset to another patch >> - refactor hugetlb code for svnapot according to thanks @Andrew @Conor >> - use tools/testing/selftests/vm/map_hugetlb as hugetlb testing program >> - support svnapot in huge vmap on newer for-next branch >> Changes in v8: >> - fix compilation errors in rv32_defconfig >> - insert some lines of whitespace according to @Conor's suggestion >> Changes in v9: >> - use alternative to avoid using static branches inside heavily used >> inline functions >> - change napot_cont_mask definition >> - post test_vmalloc modification about testing vmalloc_huge >> Changes in v10: >> - fix some nits caught by @Andrew >> - collect Reviewed-by/Acked-by >> - add memory leak warning in KConfig text >> - replace test_vmalloc patch link with the standard one >> >> >> Qinglin Pan (3): >> riscv: mm: modify pte format for Svnapot >> riscv: mm: support Svnapot in hugetlb page >> riscv: mm: support Svnapot in huge vmap >> >> arch/riscv/Kconfig | 21 +- >> arch/riscv/include/asm/errata_list.h | 15 +- >> arch/riscv/include/asm/hugetlb.h | 34 ++- >> arch/riscv/include/asm/hwcap.h | 2 +- >> arch/riscv/include/asm/page.h | 5 - >> arch/riscv/include/asm/pgtable-64.h | 34 +++ >> arch/riscv/include/asm/pgtable.h | 43 +++- >> arch/riscv/include/asm/vmalloc.h | 61 +++++- >> arch/riscv/kernel/cpu.c | 1 + >> arch/riscv/kernel/cpufeature.c | 15 ++ >> arch/riscv/mm/hugetlbpage.c | 301 +++++++++++++++++++++++++++ >> 11 files changed, 519 insertions(+), 13 deletions(-) >> >> -- >> 2.37.4 >>
From: Qinglin Pan <panqinglin2020@iscas.ac.cn> Svnapot is a RISC-V extension for marking contiguous 4K pages as a non-4K page. This patch set is for using Svnapot in hugetlb fs and huge vmap. This patchset adds a Kconfig item for using Svnapot in "Platform type"->"SVNAPOT extension support". Its default value is on, and people can set it off if they don't allow kernel to detect Svnapot hardware support and leverage it. Tested on: - qemu rv64 with "Svnapot support" off and svnapot=true. - qemu rv64 with "Svnapot support" on and svnapot=true. - qemu rv64 with "Svnapot support" off and svnapot=false. - qemu rv64 with "Svnapot support" on and svnapot=false. Changes in v2: - detect Svnapot hardware support at boot time. Changes in v3: - do linear mapping again if has_svnapot Changes in v4: - fix some errors/warns reported by checkpatch.pl, thanks @Conor Changes in v5: - modify code according to @Conor and @Heiko Changes in v6: - use static key insead of alternative errata Changes in v7: - add napot_cont_order for possible more napot order in the future - remove linear mapping related code from this patchset to another patch - refactor hugetlb code for svnapot according to thanks @Andrew @Conor - use tools/testing/selftests/vm/map_hugetlb as hugetlb testing program - support svnapot in huge vmap on newer for-next branch Changes in v8: - fix compilation errors in rv32_defconfig - insert some lines of whitespace according to @Conor's suggestion Changes in v9: - use alternative to avoid using static branches inside heavily used inline functions - change napot_cont_mask definition - post test_vmalloc modification about testing vmalloc_huge Changes in v10: - fix some nits caught by @Andrew - collect Reviewed-by/Acked-by - add memory leak warning in KConfig text - replace test_vmalloc patch link with the standard one Qinglin Pan (3): riscv: mm: modify pte format for Svnapot riscv: mm: support Svnapot in hugetlb page riscv: mm: support Svnapot in huge vmap arch/riscv/Kconfig | 21 +- arch/riscv/include/asm/errata_list.h | 15 +- arch/riscv/include/asm/hugetlb.h | 34 ++- arch/riscv/include/asm/hwcap.h | 2 +- arch/riscv/include/asm/page.h | 5 - arch/riscv/include/asm/pgtable-64.h | 34 +++ arch/riscv/include/asm/pgtable.h | 43 +++- arch/riscv/include/asm/vmalloc.h | 61 +++++- arch/riscv/kernel/cpu.c | 1 + arch/riscv/kernel/cpufeature.c | 15 ++ arch/riscv/mm/hugetlbpage.c | 301 +++++++++++++++++++++++++++ 11 files changed, 519 insertions(+), 13 deletions(-)