Message ID | 20221216062109.865573-1-panqinglin2020@iscas.ac.cn (mailing list archive) |
---|---|
Headers | show |
Series | riscv, mm: detect svnapot cpu support at runtime | expand |
On Fri, Dec 16, 2022 at 02:21:06PM +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 I got slightly confused between version as I was travelling - I saw 2 v10s so hopefully I have not missed anything. While "leak" is probably not the right word to use here, I think the warning is a reasonable compromise. Acked-by: Conor Dooley <conor.dooley@microchip.com> I have one minor wording nit in patch 1/3, but don't bother resubmitting unless someone else asks for meaningful changes. Thanks, Conor. > - replace test_vmalloc patch link with the standard one > Changes in v11: > - add more detailed warning about HUGETLBFS and SVNAPOT in KConfig text > - fix missing reverse-xmas tree > > > 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 > > > _______________________________________________ > linux-riscv mailing list > linux-riscv@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv >
Hi Palmer, a friendly ping? Thanks, Qinglin On 2022/12/16 14:21, 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 > Changes in v11: > - add more detailed warning about HUGETLBFS and SVNAPOT in KConfig text > - fix missing reverse-xmas tree > > > 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(-) >
Hi Palmer, Just a friendly ping :) Is there anything else I need to do for this patchset? Thanks, Qinglin On 2022/12/16 14:21, 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 > Changes in v11: > - add more detailed warning about HUGETLBFS and SVNAPOT in KConfig text > - fix missing reverse-xmas tree > > > 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(-) >
On Thu, 15 Dec 2022 22:21:06 PST (-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 > Changes in v11: > - add more detailed warning about HUGETLBFS and SVNAPOT in KConfig text > - fix missing reverse-xmas tree > > > 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(-) This is triggering some build failures. I sent along a fix before realizing they're actually coming from this patch set: https://lore.kernel.org/all/20230214201358.10647-1-palmer@rivosinc.com/ . If it's OK I'll just squash that in here, so I can avoid a broken build.
Hi Palmer, On 2/15/23 8:02 AM, Palmer Dabbelt wrote: > On Thu, 15 Dec 2022 22:21:06 PST (-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 >> Changes in v11: >> - add more detailed warning about HUGETLBFS and SVNAPOT in KConfig text >> - fix missing reverse-xmas tree >> >> >> 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(-) > > This is triggering some build failures. I sent along a fix before > realizing they're actually coming from this patch set: > https://lore.kernel.org/all/20230214201358.10647-1-palmer@rivosinc.com/ > . If it's OK I'll just squash that in here, so I can avoid a broken build. There is a newer v13(in [1]) based on new ISA extension API. But it still have conchuod/build_rv64_gcc_allmodconfig check failed in it[2]. I have no idea whether it is caused by my patchset since the output seems not related to my code.. Please let me know if there is anything I need to modify. [1]: https://lore.kernel.org/linux-riscv/20230209131647.17245-1-panqinglin00@gmail.com/ [2]: https://patchwork.kernel.org/project/linux-riscv/patch/20230209131647.17245-4-panqinglin00@gmail.com/ [3]: https://gist.github.com/conor-pwbot/0a1850594abdf3aebe4b3026a52a682d
On Wed, Feb 15, 2023 at 10:47:49AM +0800, Qinglin Pan wrote: > On 2/15/23 8:02 AM, Palmer Dabbelt wrote: > > On Thu, 15 Dec 2022 22:21:06 PST (-0800), panqinglin2020@iscas.ac.cn wrote: > > This is triggering some build failures. I sent along a fix before > > realizing they're actually coming from this patch set: > > https://lore.kernel.org/all/20230214201358.10647-1-palmer@rivosinc.com/ > > . If it's OK I'll just squash that in here, so I can avoid a broken > > build. > > There is a newer v13(in [1]) based on new ISA extension API. But it still > have conchuod/build_rv64_gcc_allmodconfig check failed in it[2]. > I have no idea whether it is caused by my patchset since the output seems > not related to my code.. Please let me know if there is anything I > need to modify. Yah, looking at that it is actually just noise. For some reason the before-the-patch build the scatterlist warnings got merged with other warnings. If you look at the "raw" version of the gist it's pretty easy to see: https://gist.githubusercontent.com/conor-pwbot/0a1850594abdf3aebe4b3026a52a682d/raw/a5ed91502e27795c57c573824a66aff7f68f4323/stderr I dunno what caused that, I'll have to take a look. You can consider that one to be noise, sorry!
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 Changes in v11: - add more detailed warning about HUGETLBFS and SVNAPOT in KConfig text - fix missing reverse-xmas tree 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(-)