1. 20 4月, 2008 1 次提交
  2. 26 2月, 2008 1 次提交
    • H
      x86: handle BIOSes which terminate e820 with CF=1 and no SMAP · 829157be
      H. Peter Anvin 提交于
      The proper way to terminate the e820 chain is with %ebx == 0 on the
      last legitimate memory block.  However, several BIOSes don't do that
      and instead return error (CF = 1) when trying to read off the end of
      the list.  For this error return, %eax doesn't necessarily return the
      SMAP signature -- correctly so, since %ah should contain an error code
      in this case.
      
      To deal with some particularly broken BIOSes, we clear the entire e820
      chain if the SMAP signature is missing in the middle, indicating a
      plain insane e820 implementation.  However, we need to make the test
      for CF = 1 before the SMAP check.
      
      This fixes at least one HP laptop (nc6400) for which none of the
      memory-probing methods (e820, e801, 88) functioned fully according to
      spec.
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      829157be
  3. 11 10月, 2007 1 次提交
  4. 29 9月, 2007 1 次提交
    • H
      [x86 setup] Correct the SMAP check for INT 0x15, AX=0xe820 · 4ee5b10a
      H. Peter Anvin 提交于
      The e820 probe code was checking %edx, not %eax, for the SMAP
      signature on return.  This worked on *almost* all systems, since %edx
      still contained SMAP from the call on entry, but on a handful of
      systems it failed -- plus, we would have missed real mismatches.
      
      The error output is "=d" to make sure gcc knows %edx is clobbered
      here.
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      4ee5b10a
  5. 27 9月, 2007 1 次提交
    • H
      [x86 setup] Handle case of improperly terminated E820 chain · 2efa33f8
      H. Peter Anvin 提交于
      At least one system (a Geode system with a Digital Logic BIOS) has
      been found which suddenly stops reporting the SMAP signature when
      reading the E820 memory chain.  We can't know what, exactly, broke in
      the BIOS, so if we detect this situation, declare the E820 data
      unusable and fall back to E801.
      
      Also, revert to original behavior of always probing all memory
      methods; that way all the memory information is available to the
      kernel.
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      Cc: Jordan Crouse <jordan.crouse@amd.com>
      Cc: Joerg Pommnitz <pommnitz@yahoo.com>
      2efa33f8
  6. 13 7月, 2007 1 次提交