[PW_SID:1128796] riscv/mm: use physical alignment for vmemmap_start_pfn#2300
[PW_SID:1128796] riscv/mm: use physical alignment for vmemmap_start_pfn#2300linux-riscv-bot wants to merge 2 commits into
Conversation
RISC-V computes vmemmap_start_pfn by rounding phys_ram_base down to VMEMMAP_ADDR_ALIGN. That alignment must therefore be expressed in the physical-address domain. Commit 476849b ("riscv/mm: align vmemmap to maximal folio size") attempted to account for the maximal folio alignment by feeding MAX_FOLIO_VMEMMAP_ALIGN directly into VMEMMAP_ADDR_ALIGN. However, MAX_FOLIO_VMEMMAP_ALIGN is measured in bytes of struct page storage, whereas VMEMMAP_ADDR_ALIGN is used to align a physical address. The mask-based compound_info encoding requires pfn_to_page(0) to be naturally aligned to MAX_FOLIO_VMEMMAP_ALIGN. Commit 9f94db4 ("mm/sparse: check memmap alignment for compound_info_has_mask()") added a check for that requirement and exposed the unit mismatch on systems such as QEMU virt, where the DRAM base is not aligned to MAX_FOLIO_NR_PAGES * PAGE_SIZE. Convert MAX_FOLIO_VMEMMAP_ALIGN to the equivalent physical alignment before using it in VMEMMAP_ADDR_ALIGN. This keeps the existing round_down() logic while making the resulting vmemmap base satisfy the mask-alignment requirement. Fixes: 476849b ("riscv/mm: align vmemmap to maximal folio size") Signed-off-by: Jiakai Xu <xujiakai2025@iscas.ac.cn> Assisted-by: YuanSheng:DeepSeek-V4-Flash Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
|
Patch 1: "riscv/mm: use physical alignment for vmemmap_start_pfn" |
|
Patch 1: "riscv/mm: use physical alignment for vmemmap_start_pfn" |
|
Patch 1: "riscv/mm: use physical alignment for vmemmap_start_pfn" |
|
Patch 1: "riscv/mm: use physical alignment for vmemmap_start_pfn" |
|
Patch 1: "riscv/mm: use physical alignment for vmemmap_start_pfn" |
|
Patch 1: "riscv/mm: use physical alignment for vmemmap_start_pfn" |
|
Patch 1: "riscv/mm: use physical alignment for vmemmap_start_pfn" |
|
Patch 1: "riscv/mm: use physical alignment for vmemmap_start_pfn" |
|
Patch 1: "riscv/mm: use physical alignment for vmemmap_start_pfn" |
|
Patch 1: "riscv/mm: use physical alignment for vmemmap_start_pfn" |
|
Patch 1: "riscv/mm: use physical alignment for vmemmap_start_pfn" |
|
Patch 1: "riscv/mm: use physical alignment for vmemmap_start_pfn" |
8ca72ef to
60e0882
Compare
PR for series 1128796 applied to workflow__riscv__fixes
Name: riscv/mm: use physical alignment for vmemmap_start_pfn
URL: https://patchwork.kernel.org/project/linux-riscv/list/?series=1128796
Version: 1