Page MenuHomeFreeBSD

D4280.diff
No OneTemporary

D4280.diff

Index: head/sys/amd64/amd64/pmap.c
===================================================================
--- head/sys/amd64/amd64/pmap.c
+++ head/sys/amd64/amd64/pmap.c
@@ -1421,6 +1421,9 @@
sched_unpin();
}
+/* 4k PTEs -- Chosen to exceed the total size of Broadwell L2 TLB */
+#define PMAP_INVLPG_THRESHOLD (4 * 1024 * PAGE_SIZE)
+
void
pmap_invalidate_range(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)
{
@@ -1428,6 +1431,11 @@
vm_offset_t addr;
u_int cpuid, i;
+ if (eva - sva >= PMAP_INVLPG_THRESHOLD) {
+ pmap_invalidate_all(pmap);
+ return;
+ }
+
if (pmap_type_guest(pmap)) {
pmap_invalidate_ept(pmap);
return;
Index: head/sys/i386/i386/pmap.c
===================================================================
--- head/sys/i386/i386/pmap.c
+++ head/sys/i386/i386/pmap.c
@@ -1032,6 +1032,9 @@
sched_unpin();
}
+/* 4k PTEs -- Chosen to exceed the total size of Broadwell L2 TLB */
+#define PMAP_INVLPG_THRESHOLD (4 * 1024 * PAGE_SIZE)
+
void
pmap_invalidate_range(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)
{
@@ -1039,6 +1042,11 @@
vm_offset_t addr;
u_int cpuid;
+ if (eva - sva >= PMAP_INVLPG_THRESHOLD) {
+ pmap_invalidate_all(pmap);
+ return;
+ }
+
sched_pin();
if (pmap == kernel_pmap || !CPU_CMP(&pmap->pm_active, &all_cpus)) {
for (addr = sva; addr < eva; addr += PAGE_SIZE)

File Metadata

Mime Type
text/plain
Expires
Wed, Apr 22, 2:37 PM (4 h, 5 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31985587
Default Alt Text
D4280.diff (1 KB)

Event Timeline