Page MenuHomeFreeBSD

D15675.id43365.diff
No OneTemporary

D15675.id43365.diff

Index: sys/amd64/amd64/machdep.c
===================================================================
--- sys/amd64/amd64/machdep.c
+++ sys/amd64/amd64/machdep.c
@@ -1247,15 +1247,6 @@
basemem = 640;
}
- /*
- * Make hole for "AP -> long mode" bootstrap code. The
- * mp_bootaddress vector is only available when the kernel
- * is configured to support APs and APs for the system start
- * in real mode mode (e.g. SMP bare metal).
- */
- if (init_ops.mp_bootaddress)
- init_ops.mp_bootaddress(physmap, &physmap_idx);
-
/*
* Maxmem isn't the "maximum memory", it's one larger than the
* highest page of the physical address space. It should be
@@ -1294,6 +1285,15 @@
(boothowto & RB_VERBOSE))
printf("Physical memory use set to %ldK\n", Maxmem * 4);
+ /*
+ * Make hole for "AP -> long mode" bootstrap code. The
+ * mp_bootaddress vector is only available when the kernel
+ * is configured to support APs and APs for the system start
+ * in real mode mode (e.g. SMP bare metal).
+ */
+ if (init_ops.mp_bootaddress)
+ init_ops.mp_bootaddress(physmap, &physmap_idx);
+
/* call pmap initialization to make new kernel address space */
pmap_bootstrap(&first);
Index: sys/amd64/amd64/mp_machdep.c
===================================================================
--- sys/amd64/amd64/mp_machdep.c
+++ sys/amd64/amd64/mp_machdep.c
@@ -113,12 +113,16 @@
allocated = false;
for (i = *physmap_idx; i <= *physmap_idx; i -= 2) {
/*
- * Find a memory region big enough below the 4GB boundary to
- * store the initial page tables. Note that it needs to be
- * aligned to a page boundary.
+ * Find a memory region big enough below the 4GB
+ * boundary to store the initial page tables. Region
+ * must be mapped by the direct map.
+ *
+ * Note that it needs to be aligned to a page
+ * boundary.
*/
- if (physmap[i] >= GiB(4) ||
- (physmap[i + 1] - round_page(physmap[i])) < (PAGE_SIZE * 3))
+ if (physmap[i] >= GiB(4) || physmap[i + 1] -
+ round_page(physmap[i]) < PAGE_SIZE * 3 ||
+ physmap[i + 1] > Maxmem)
continue;
allocated = true;

File Metadata

Mime Type
text/plain
Expires
Tue, Sep 8, 11:35 PM (10 h, 2 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
38546224
Default Alt Text
D15675.id43365.diff (2 KB)

Event Timeline