From: Peilin Ye <hidden> Date: 2021-08-18 22:02:04
From: Peilin Ye <redacted>
x86_64 vmalloc() mappings are no longer "synchronized" among page tables
via faulting since commit 6eb82f994026 ("x86/mm: Pre-allocate P4D/PUD
pages for vmalloc area"), since the corresponding P4D or PUD pages are
now preallocated at boot, by preallocate_vmalloc_pages(). Drop the
"lazily synchronized" description for less confusion.
While this file is x86_64-specific, it is worth noting that things are
different for x86_32, where vmalloc()-related changes to `init_mm.pgd` are
synchronized to all page tables in the system during runtime, via
arch_sync_kernel_mappings(). Unfortunately, this synchronization is
subject to race condition, which is further handled via faulting, see
vmalloc_fault(). See commit 4819e15f740e ("x86/mm/32: Bring back vmalloc
faulting on x86_32") for more details.
Reviewed-by: Muchun Song <redacted>
Signed-off-by: Peilin Ye <redacted>
---
Hi all,
Resending this with Muchun's Reviewed-by:.
Thanks,
Peilin Ye
Changes in v2:
- More information for x86_32 in commit message (Joerg Roedel
[off-list ref])
- Use my new email address for work
Documentation/x86/x86_64/mm.rst | 4 ----
1 file changed, 4 deletions(-)
@@ -140,10 +140,6 @@ The direct mapping covers all memory in the system up to the highest memory address (this means in some cases it can also include PCI memory holes).-vmalloc space is lazily synchronized into the different PML4/PML5 pages of-the processes using the page fault handler, with init_top_pgt as-reference.- We map EFI runtime services in the 'efi_pgd' PGD in a 64Gb large virtual memory window (this size is arbitrary, it can be raised later if needed). The mappings are not part of any other kernel PGD and are only available
On Wed, Aug 18, 2021 at 03:01:23PM -0700, Peilin Ye wrote:
From: Peilin Ye <redacted>
x86_64 vmalloc() mappings are no longer "synchronized" among page tables
via faulting since commit 6eb82f994026 ("x86/mm: Pre-allocate P4D/PUD
pages for vmalloc area"), since the corresponding P4D or PUD pages are
now preallocated at boot, by preallocate_vmalloc_pages(). Drop the
"lazily synchronized" description for less confusion.
While this file is x86_64-specific, it is worth noting that things are
different for x86_32, where vmalloc()-related changes to `init_mm.pgd` are
synchronized to all page tables in the system during runtime, via
arch_sync_kernel_mappings(). Unfortunately, this synchronization is
subject to race condition, which is further handled via faulting, see
vmalloc_fault(). See commit 4819e15f740e ("x86/mm/32: Bring back vmalloc
faulting on x86_32") for more details.
Reviewed-by: Muchun Song <redacted>
Signed-off-by: Peilin Ye <redacted>
Reviewed-by: Joerg Roedel <redacted>
quoted hunk
---
Hi all,
Resending this with Muchun's Reviewed-by:.
Thanks,
Peilin Ye
Changes in v2:
- More information for x86_32 in commit message (Joerg Roedel
[off-list ref])
- Use my new email address for work
Documentation/x86/x86_64/mm.rst | 4 ----
1 file changed, 4 deletions(-)
@@ -140,10 +140,6 @@ The direct mapping covers all memory in the system up to the highest memory address (this means in some cases it can also include PCI memory holes).-vmalloc space is lazily synchronized into the different PML4/PML5 pages of-the processes using the page fault handler, with init_top_pgt as-reference.- We map EFI runtime services in the 'efi_pgd' PGD in a 64Gb large virtual memory window (this size is arbitrary, it can be raised later if needed). The mappings are not part of any other kernel PGD and are only available
From: Jonathan Corbet <corbet@lwn.net> Date: 2021-08-20 17:14:57
Joerg Roedel [off-list ref] writes:
On Wed, Aug 18, 2021 at 03:01:23PM -0700, Peilin Ye wrote:
quoted
From: Peilin Ye <redacted>
x86_64 vmalloc() mappings are no longer "synchronized" among page tables
via faulting since commit 6eb82f994026 ("x86/mm: Pre-allocate P4D/PUD
pages for vmalloc area"), since the corresponding P4D or PUD pages are
now preallocated at boot, by preallocate_vmalloc_pages(). Drop the
"lazily synchronized" description for less confusion.
While this file is x86_64-specific, it is worth noting that things are
different for x86_32, where vmalloc()-related changes to `init_mm.pgd` are
synchronized to all page tables in the system during runtime, via
arch_sync_kernel_mappings(). Unfortunately, this synchronization is
subject to race condition, which is further handled via faulting, see
vmalloc_fault(). See commit 4819e15f740e ("x86/mm/32: Bring back vmalloc
faulting on x86_32") for more details.
Reviewed-by: Muchun Song <redacted>
Signed-off-by: Peilin Ye <redacted>