Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F140123385
D49866.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
1 KB
Referenced Files
None
Subscribers
None
D49866.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D49866: kboot/amd64: Use segs framework to find kernel location
Attached
Detach File
Event Timeline
Log In to Comment