#
28fdf718 |
| 26-Nov-2024 |
Konstantin Belousov <kib@FreeBSD.org> |
amd64: add machine/pte.h
Following arm64 and risc-v, move definitions that describe hardware-enforced layout of PTEs and #PF error bits, into a dedicated header.
Reviewed by: markj Sponsored by: Th
amd64: add machine/pte.h
Following arm64 and risc-v, move definitions that describe hardware-enforced layout of PTEs and #PF error bits, into a dedicated header.
Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D47749
show more ...
|
Revision tags: release/13.4.0 |
|
#
f3754afd |
| 12-Sep-2024 |
Joshua Rogers <Joshua@Joshua.Hu> |
Remove stray whitespaces from sys/amd64/
Signed-off-by: Joshua Rogers <Joshua@Joshua.Hu> Reviewed by: imp Pull Request: https://github.com/freebsd/freebsd-src/pull/1418
|
Revision tags: release/14.1.0 |
|
#
bc4ffcad |
| 14-May-2024 |
Konstantin Belousov <kib@FreeBSD.org> |
amd64: add variables indicating INVLPGB works
Reviewed by: alc, markj Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D45191
|
#
9c5d7e4a |
| 06-Jun-2024 |
Konstantin Belousov <kib@FreeBSD.org> |
pmap: move the smp_targeted_tlb_shutdown pointer stuff to amd64 pmap.h
Fixes: bec000c9c1ef409989685bb03ff0532907befb4aESC Sponsored by: The FreeBSD Foundation
|
Revision tags: release/13.3.0 |
|
#
1f1b2286 |
| 31-Jan-2024 |
John Baldwin <jhb@FreeBSD.org> |
pmap: Convert boolean_t to bool.
Reviewed by: kib (older version) Differential Revision: https://reviews.freebsd.org/D39921
|
#
90372a9e |
| 26-Jan-2024 |
Mark Johnston <markj@FreeBSD.org> |
arm64: Remove pmap_san_bootstrap() and call kasan_init_early() directly
pmap_san_bootstrap() doesn't really do much, and it was hard-coding the the bootstrap stack size defined in locore.S. Moreove
arm64: Remove pmap_san_bootstrap() and call kasan_init_early() directly
pmap_san_bootstrap() doesn't really do much, and it was hard-coding the the bootstrap stack size defined in locore.S. Moreover, the name is a bit confusing given the existence of pmap_bootstrap_san(). Just remove it and call kasan_init_early() directly like we do on amd64. It will not be used by KMSAN in a forthcoming patch series.
No functional change intended.
MFC after: 1 week Sponsored by: Klara, Inc. Sponsored by: Juniper Networks, Inc. Differential Revision: https://reviews.freebsd.org/D43403
show more ...
|
#
29363fb4 |
| 23-Nov-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove ancient SCCS tags.
Remove ancient SCCS tags from the tree, automated scripting, with two minor fixup to keep things compiling. All the common forms in the tree were removed with a perl s
sys: Remove ancient SCCS tags.
Remove ancient SCCS tags from the tree, automated scripting, with two minor fixup to keep things compiling. All the common forms in the tree were removed with a perl script.
Sponsored by: Netflix
show more ...
|
Revision tags: release/14.0.0 |
|
#
2ff63af9 |
| 16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: one-line .h pattern
Remove /^\s*\*+\s*\$FreeBSD\$.*$\n/
|
#
34eeabff |
| 01-Jun-2023 |
Alan Cox <alc@FreeBSD.org> |
amd64/arm64 pmap: Stop requiring the accessed bit for superpage promotion
Stop requiring all of the PTEs to have the accessed bit set for superpage promotion to occur. Given that change, add suppor
amd64/arm64 pmap: Stop requiring the accessed bit for superpage promotion
Stop requiring all of the PTEs to have the accessed bit set for superpage promotion to occur. Given that change, add support for promotion to pmap_enter_quick(), which does not set the accessed bit in the PTE that it creates.
Since the final mapping within a superpage-aligned and sized region of a memory-mapped file is typically created by a call to pmap_enter_quick(), we now achieve promotions in circumstances where they did not occur before, for example, the X server's read-only mapping of libLLVM-15.so.
See also https://www.usenix.org/system/files/atc20-zhu-weixi_0.pdf
Reviewed by: kib, markj MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D40478
show more ...
|
#
721b44ba |
| 12-May-2023 |
Bjoern A. Zeeb <bz@FreeBSD.org> |
amd64: pmap.h put a guard around a pcpu.h function
pmap_get_pcid() calls zpcpu_get() which is defined in pcpu.h. It is unclear why we do not include that header but like right above the change add a
amd64: pmap.h put a guard around a pcpu.h function
pmap_get_pcid() calls zpcpu_get() which is defined in pcpu.h. It is unclear why we do not include that header but like right above the change add another guard around pmap_get_pcid(). This allows some LinuxKPI headers to compile again.
Suggested by: markj MFC after: 10 days
show more ...
|
#
4961faaa |
| 04-May-2023 |
John Baldwin <jhb@FreeBSD.org> |
pmap_{un}map_io_transient: Use bool instead of boolean_t.
Reviewed by: imp, kib Differential Revision: https://reviews.freebsd.org/D39920
|
#
42f722e7 |
| 01-May-2023 |
Konstantin Belousov <kib@FreeBSD.org> |
amd64: store pcids pmap data in pcpu zone
This change eliminates the struct pmap_pcid array embedded into struct pmap and sized by MAXCPU, which would bloat with MAXCPU increase. Also it removes fa
amd64: store pcids pmap data in pcpu zone
This change eliminates the struct pmap_pcid array embedded into struct pmap and sized by MAXCPU, which would bloat with MAXCPU increase. Also it removes false sharing of cache lines, since the array elements are mostly locally accessed by corresponding CPUs.
Suggested by: mjg Reviewed by: markj Tested by: pho Sponsored by: The FreeBSD Foundation Differential revision: https://reviews.freebsd.org/D39890
show more ...
|
#
9e014369 |
| 01-May-2023 |
Konstantin Belousov <kib@FreeBSD.org> |
amd64: add pmap_get_pcid() helper
Reviewed by: markj Tested by: pho Sponsored by: The FreeBSD Foundation Differential revision: https://reviews.freebsd.org/D39890
|
#
32bb28d8 |
| 01-May-2023 |
Konstantin Belousov <kib@FreeBSD.org> |
amd64: move definition of the struct pmap_pcids into _pmap.h
and rename the structure to pmap_pcid.
Reviewed by: markj Tested by: pho Sponsored by: The FreeBSD Foundation Differential revision: htt
amd64: move definition of the struct pmap_pcids into _pmap.h
and rename the structure to pmap_pcid.
Reviewed by: markj Tested by: pho Sponsored by: The FreeBSD Foundation Differential revision: https://reviews.freebsd.org/D39890
show more ...
|
#
1e0e335b |
| 13-Apr-2023 |
Konstantin Belousov <kib@FreeBSD.org> |
amd64: fix PKRU and swapout interaction
When vm_map_remove() is called from vm_swapout_map_deactivate_pages() due to swapout, PKRU attributes for the removed range must be kept intact. Provide a va
amd64: fix PKRU and swapout interaction
When vm_map_remove() is called from vm_swapout_map_deactivate_pages() due to swapout, PKRU attributes for the removed range must be kept intact. Provide a variant of pmap_remove(), pmap_map_delete(), to allow pmap to distinguish between real removes of the UVA mappings and any other internal removes, e.g. swapout.
For non-amd64, pmap_map_delete() is stubbed by define to pmap_remove().
Reported by: andrew Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D39556
show more ...
|
Revision tags: release/13.2.0 |
|
#
ad97b9bb |
| 04-Jan-2023 |
Konstantin Belousov <kib@FreeBSD.org> |
amd64 pmap.h: make it easier to use the header for other consumers
Guard pmap_invlpg() definition with checks that only provide it when both sys/pcpu.h and machine/cpufunc.h were already included.
amd64 pmap.h: make it easier to use the header for other consumers
Guard pmap_invlpg() definition with checks that only provide it when both sys/pcpu.h and machine/cpufunc.h were already included.
Requested by: Elliott Mitchell Sponsored by: The FreeBSD Foundation MFC after: 1 week
show more ...
|
Revision tags: release/12.4.0 |
|
#
cde70e31 |
| 11-Oct-2022 |
Konstantin Belousov <kib@FreeBSD.org> |
amd64: for small cores, use (big hammer) INVPCID_CTXGLOB instead of INVLPG
A hypothetical CPU bug makes invalidation of global PTEs using INVLPG in pcid mode unreliable, it seems. The workaround is
amd64: for small cores, use (big hammer) INVPCID_CTXGLOB instead of INVLPG
A hypothetical CPU bug makes invalidation of global PTEs using INVLPG in pcid mode unreliable, it seems. The workaround is applied for all CPUs with small cores, since we do not know the scope of the issue, and the right fix.
Reviewed by: alc (previous version) Discussed with: emaste, markj Tested by: karels PR: 261169, 266145 Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D37770
show more ...
|
#
4d90a5af |
| 07-Oct-2022 |
John Baldwin <jhb@FreeBSD.org> |
sys: Consolidate common implementation details of PV entries.
Add a <sys/_pv_entry.h> intended for use in <machine/pmap.h> to define struct pv_entry, pv_chunk, and related macros and inline function
sys: Consolidate common implementation details of PV entries.
Add a <sys/_pv_entry.h> intended for use in <machine/pmap.h> to define struct pv_entry, pv_chunk, and related macros and inline functions.
Note that powerpc does not yet use this as while the mmu_radix pmap in powerpc uses the new scheme (albeit with fewer PV entries in a chunk than normal due to an used pv_pmap field in struct pv_entry), the Book-E pmaps for powerpc use the older style PV entries without chunks (and thus require the pv_pmap field).
Suggested by: kib Reviewed by: kib Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D36685
show more ...
|
#
7ae99f80 |
| 23-Sep-2022 |
John Baldwin <jhb@FreeBSD.org> |
pmap_unmapdev/bios: Accept a pointer instead of a vm_offset_t.
This matches the return type of pmap_mapdev/bios.
Reviewed by: kib, markj Sponsored by: DARPA Differential Revision: https://reviews.f
pmap_unmapdev/bios: Accept a pointer instead of a vm_offset_t.
This matches the return type of pmap_mapdev/bios.
Reviewed by: kib, markj Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D36548
show more ...
|
#
e6639073 |
| 23-Aug-2022 |
John Baldwin <jhb@FreeBSD.org> |
Define _NPCM and the last PC_FREEn constant in terms of _NPCPV.
This applies one of the changes from 5567d6b4419b02a2099527228b1a51cc55a5b47d to other architectures besides arm64.
Reviewed by: kib
Define _NPCM and the last PC_FREEn constant in terms of _NPCPV.
This applies one of the changes from 5567d6b4419b02a2099527228b1a51cc55a5b47d to other architectures besides arm64.
Reviewed by: kib Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D36263
show more ...
|
#
756bc3ad |
| 15-Jun-2022 |
Mark Johnston <markj@FreeBSD.org> |
kasan: Create a shadow for the bootstack prior to hammer_time()
When the kernel is compiled with -asan-stack=true, the address sanitizer will emit inline accesses to the shadow map. In other words,
kasan: Create a shadow for the bootstack prior to hammer_time()
When the kernel is compiled with -asan-stack=true, the address sanitizer will emit inline accesses to the shadow map. In other words, some shadow map accesses are not intercepted by the KASAN runtime, so they cannot be disabled even if the runtime is not yet initialized by kasan_init() at the end of hammer_time().
This went unnoticed because the loader will initialize all PML4 entries of the bootstrap page table to point to the same PDP page, so early shadow map accesses do not raise a page fault, though they are silently corrupting memory. In fact, when the loader does not copy the staging area, we do get a page fault since in that case only the first and last PML4Es are populated by the loader. But due to another bug, the loader always treated KASAN kernels as non-relocatable and thus always copied the staging area.
It is not really practical to annotate hammer_time() and all callees with __nosanitizeaddress, so instead add some early initialization which creates a shadow for the boot stack used by hammer_time(). This is only needed by KASAN, not by KMSAN, but the shared pmap code handles both.
Reported by: mhorne Reviewed by: kib MFC after: 1 month Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D35449
show more ...
|
#
3cd1b382 |
| 13-Jun-2022 |
Brooks Davis <brooks@FreeBSD.org> |
amd64: -m32 support for machine/pmap.h
Install the i386 pmap.h under /usr/include/i386 on amd64 and include when targeting i386.
Reviewed by: jhb, imp
|
Revision tags: release/13.1.0, release/12.3.0 |
|
#
ab12e8db |
| 15-Nov-2021 |
Mark Johnston <markj@FreeBSD.org> |
amd64: Reduce the amount of cpuset copying done for TLB shootdowns
We use pmap_invalidate_cpu_mask() to get the set of active CPUs. This (32-byte) set is copied by value through multiple frames unt
amd64: Reduce the amount of cpuset copying done for TLB shootdowns
We use pmap_invalidate_cpu_mask() to get the set of active CPUs. This (32-byte) set is copied by value through multiple frames until we get to smp_targeted_tlb_shootdown(), where it is copied yet again.
Avoid this copying by having smp_targeted_tlb_shootdown() make a local copy of the active CPUs for the pmap, and drop the cpuset parameter, simplifying callers. Also leverage the use of the non-destructive CPU_FOREACH_ISSET to avoid unneeded copying within smp_targeted_tlb_shootdown().
Reviewed by: alc, kib Tested by: pho MFC after: 1 month Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32792
show more ...
|
#
71e6e9da |
| 15-Nov-2021 |
Mark Johnston <markj@FreeBSD.org> |
amd64: Initialize kernel_pmap's active CPU set to all_cpus
This is in preference to simply filling the cpuset, and allows the conditional in pmap_invalidate_cpu_mask() to be elided.
Also export pma
amd64: Initialize kernel_pmap's active CPU set to all_cpus
This is in preference to simply filling the cpuset, and allows the conditional in pmap_invalidate_cpu_mask() to be elided.
Also export pmap_invalidate_cpu_mask() outside of pmap.c for use in a subsequent commit.
Suggested by: kib Reviewed by: alc, kib Tested by: pho MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32792
show more ...
|
#
175d3380 |
| 03-Nov-2021 |
Mark Johnston <markj@FreeBSD.org> |
amd64: Deduplicate routines for expanding KASAN/KMSAN shadow maps
When working on the ports these functions were slightly different, but now there's no reason for them to be separate.
No functional
amd64: Deduplicate routines for expanding KASAN/KMSAN shadow maps
When working on the ports these functions were slightly different, but now there's no reason for them to be separate.
No functional change intended.
MFC after: 1 week Sponsored by: The FreeBSD Foundation
show more ...
|