aboutsummaryrefslogtreecommitdiffstats
path: root/com32
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2009-05-21 16:03:15 -0700
committerH. Peter Anvin <hpa@zytor.com>2009-05-21 16:03:15 -0700
commitafef2c845b93ebe52c178a5a42d498be75fb4c8c (patch)
tree8e914b01ea0cc2931a4cb0c8455223405fea642b /com32
parent044154a0479cd365597846dd7025755eb852d76f (diff)
downloadsyslinux-afef2c845b93ebe52c178a5a42d498be75fb4c8c.tar.gz
syslinux-afef2c845b93ebe52c178a5a42d498be75fb4c8c.tar.xz
syslinux-afef2c845b93ebe52c178a5a42d498be75fb4c8c.zip
Drop support for ACPI 3 E820 extended memory attributes
Drop all support for ACPI 3 E820 extended memory attributes. There are BIOSes in the field that report completely bogus information here, resulting in no memory at all being detected (we then fall back to E801 detection, but that is problematic in its own ways.) There is strong reasons to believe at this point that the extended memory attributes are not usable in their current form, so drop them and revert back to simple 20-byte support, including for MEMDISK spoofing. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'com32')
-rw-r--r--com32/lib/syslinux/memscan.c9
-rw-r--r--com32/mboot/mem.c9
2 files changed, 0 insertions, 18 deletions
diff --git a/com32/lib/syslinux/memscan.c b/com32/lib/syslinux/memscan.c
index 1f9bd8a7..07439207 100644
--- a/com32/lib/syslinux/memscan.c
+++ b/com32/lib/syslinux/memscan.c
@@ -45,7 +45,6 @@ struct e820_entry {
uint64_t start;
uint64_t len;
uint32_t type;
- uint32_t extattr;
};
int syslinux_scan_memory(scan_memory_callback_t callback, void *data)
@@ -82,8 +81,6 @@ int syslinux_scan_memory(scan_memory_callback_t callback, void *data)
ireg.es = SEG(e820buf);
ireg.edi.w[0] = OFFS(e820buf);
memset(e820buf, 0, sizeof *e820buf);
- /* Set this in case the BIOS doesn't, but doesn't change %ecx to match. */
- e820buf->extattr = 1;
do {
__intcall(0x15, &ireg, &oreg);
@@ -93,12 +90,6 @@ int syslinux_scan_memory(scan_memory_callback_t callback, void *data)
(oreg.ecx.l < 20))
break;
- if (oreg.ecx.l < 24)
- e820buf->extattr = 1; /* Enabled, normal */
-
- if (!(e820buf->extattr & 1))
- continue;
-
start = e820buf->start;
len = e820buf->len;
diff --git a/com32/mboot/mem.c b/com32/mboot/mem.c
index e9d8bbdb..07ccb627 100644
--- a/com32/mboot/mem.c
+++ b/com32/mboot/mem.c
@@ -42,7 +42,6 @@ struct e820_entry {
uint64_t start;
uint64_t len;
uint32_t type;
- uint32_t extattr;
};
#define RANGE_ALLOC_BLOCK 128
@@ -83,8 +82,6 @@ static int mboot_scan_memory(struct AddrRangeDesc **ardp, uint32_t *dosmem)
ireg.es = SEG(e820buf);
ireg.edi.w[0] = OFFS(e820buf);
memset(e820buf, 0, sizeof *e820buf);
- /* Set this in case the BIOS doesn't, but doesn't change %ecx to match. */
- e820buf->extattr = 1;
do {
__intcall(0x15, &ireg, &oreg);
@@ -94,12 +91,6 @@ static int mboot_scan_memory(struct AddrRangeDesc **ardp, uint32_t *dosmem)
(oreg.ecx.l < 20))
break;
- if (oreg.ecx.l < 24)
- e820buf->extattr = 1; /* Enabled, normal */
-
- if (!(e820buf->extattr & 1))
- continue;
-
if (ard_count >= ard_space) {
ard_space += RANGE_ALLOC_BLOCK;
*ardp = ard = realloc(ard, ard_space*sizeof *ard);