aboutsummaryrefslogtreecommitdiffstats
path: root/core
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 /core
parent044154a0479cd365597846dd7025755eb852d76f (diff)
downloadsyslinux.git-afef2c845b93ebe52c178a5a42d498be75fb4c8c.tar.gz
syslinux.git-afef2c845b93ebe52c178a5a42d498be75fb4c8c.tar.xz
syslinux.git-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 'core')
-rw-r--r--core/highmem.inc19
1 files changed, 6 insertions, 13 deletions
diff --git a/core/highmem.inc b/core/highmem.inc
index c7e602f8..1f8349bd 100644
--- a/core/highmem.inc
+++ b/core/highmem.inc
@@ -43,9 +43,8 @@ get_e820:
.start_over:
mov di,E820Buf
xor ax,ax
- mov cx,12
+ mov cx,10
rep stosw ; Clear buffer
- mov byte [di-4],01h ; Initial extattr value
xor ebx,ebx ; Start with first record
jmp short .do_e820 ; Skip "at end" check first time!
.int_loop: and ebx,ebx ; If we're back at beginning...
@@ -53,7 +52,7 @@ get_e820:
.do_e820: mov eax,0000E820h
mov edx,534D4150h ; "SMAP" backwards
xor ecx,ecx
- mov cl,24 ; ECX <- 24 (size of buffer)
+ mov cl,20 ; ECX <- 20 (size of buffer)
mov di,E820Buf
int 15h
jnc .no_carry
@@ -64,15 +63,9 @@ get_e820:
.no_carry:
cmp eax,534D4150h
jne no_e820
- cmp cl,24
- jb .no_ext_attr
- ;
- ; Some blithering idiot added a whole new field to E820,
- ; completely without regard for its implications...
- ;
- test byte [E820Buf+20],1 ; AddressRangeEnabled
- jz .not_ram
-.no_ext_attr:
+ cmp cx,20
+ jb no_e820
+
;
; Look for a memory block starting at <= 1 MB and continuing upward
;
@@ -159,7 +152,7 @@ got_highmem:
section .bss
alignb 4
-E820Buf resd 6 ; INT 15:E820 data buffer
+E820Buf resd 5 ; INT 15:E820 data buffer
E820Mem resd 1 ; Memory detected by E820
E820Max resd 1 ; Is E820 memory capped?
HighMemSize resd 1 ; End of memory pointer (bytes)