Page MenuHomeFreeBSD

D9904.id26020.diff
No OneTemporary

D9904.id26020.diff

Index: sys/boot/efi/loader/copy.c
===================================================================
--- sys/boot/efi/loader/copy.c
+++ sys/boot/efi/loader/copy.c
@@ -70,7 +70,6 @@
}
ndesc = sz / dsz;
-
for (i = 0, p = map; i < ndesc;
i++, p = NextMemoryDescriptor(p, dsz)) {
start = p->PhysicalStart;
@@ -81,20 +80,33 @@
continue;
if (p->Type != EfiConventionalMemory)
- continue;
+ printf("Warning: wrong EFI memory type: %d\n",
+ p->Type);
available_pages = p->NumberOfPages -
((KERNEL_PHYSICAL_BASE - start) >> EFI_PAGE_SHIFT);
+ break;
+ }
- if (*nr_pages > available_pages) {
- printf("staging area size is reduced: %ld -> %ld!\n",
- *nr_pages, available_pages);
- *nr_pages = available_pages;
- }
+ for ( ; i < ndesc;
+ i++, p = NextMemoryDescriptor(p, dsz)) {
+ if (p->Type != EfiConventionalMemory &&
+ p->Type != EfiLoaderData)
+ break;
- break;
+ if (p->PhysicalStart != end)
+ break;
+
+ end = p->PhysicalStart + p->NumberOfPages * EFI_PAGE_SIZE;
+
+ available_pages += p->NumberOfPages;
}
+ if (*nr_pages > available_pages) {
+ printf("Staging area's size is reduced: %ld -> %ld!\n",
+ *nr_pages, available_pages);
+ *nr_pages = available_pages;
+ }
out:
free(map);
}

File Metadata

Mime Type
text/plain
Expires
Fri, Nov 14, 6:43 PM (3 h, 8 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25295662
Default Alt Text
D9904.id26020.diff (1 KB)

Event Timeline