Page MenuHomeFreeBSD

D49866.diff
No OneTemporary

D49866.diff

diff --git a/stand/kboot/kboot/arch/amd64/load_addr.c b/stand/kboot/kboot/arch/amd64/load_addr.c
--- a/stand/kboot/kboot/arch/amd64/load_addr.c
+++ b/stand/kboot/kboot/arch/amd64/load_addr.c
@@ -43,23 +43,26 @@
return (true);
}
+/* XXX refactor with aarch64 */
uint64_t
kboot_get_phys_load_segment(void)
{
- static uint64_t base_seg = BAD_SEG;
+#define HOLE_SIZE (64ul << 20)
+#define KERN_ALIGN (2ul << 20)
+ static uint64_t s = 0;
- if (base_seg != BAD_SEG)
- return (base_seg);
+ if (s != 0)
+ return (s);
- if (nr_seg > 0)
- base_seg = find_ram(segs, nr_seg, 2ULL << 20, 2ULL << 20,
- 64ULL << 20, 4ULL << 30);
- if (base_seg == BAD_SEG) {
- /* XXX Should fall back to using /proc/iomem maybe? */
- /* XXX PUNT UNTIL I NEED SOMETHING BETTER */
- base_seg = 300ULL * (1 << 20);
- }
- return (base_seg);
+ print_avail();
+ s = first_avail(KERN_ALIGN, HOLE_SIZE, SYSTEM_RAM);
+ printf("KBOOT GET PHYS Using %#llx\n", (long long)s);
+ if (s != 0)
+ return (s);
+ s = 0x40000000 | 0x4200000; /* should never get here */
+ /* XXX PANIC? XXX */
+ printf("Falling back to the crazy address %#lx which works in qemu\n", s);
+ return (s);
}
void

File Metadata

Mime Type
text/plain
Expires
Sun, Dec 21, 1:34 PM (4 h, 23 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27113736
Default Alt Text
D49866.diff (1 KB)

Event Timeline