1. 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
  2. 21 9月, 2007 2 次提交
  3. 05 9月, 2007 1 次提交
    • C
      [x86 setup] Work around bug in Xen HVM · ce29a1f8
      Christian Ehrhardt 提交于
      Apparently XEN does not keep the contents of the 48-bit gdt_48 data
      structure that is passed to lgdt in the XEN machine state. Instead it
      appears to save the _address_ of the 48-bit descriptor
      somewhere. Unfortunately this data happens to reside on the stack and
      is probably no longer availiable at the time of the actual protected
      mode jump.
      
      This is Xen bug but given that there is a one-line patch to work
      around this problem, the linux kernel should probably do this.  My fix
      is to make the gdt_48 description in setup_gdt static (in setup_idt
      this is already the case). This allows the kernel to boot under
      Xen HVM again.
      Signed-off-by: NChristian Ehrhardt <lk@c--e.de>
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      ce29a1f8
  4. 01 9月, 2007 1 次提交
  5. 24 8月, 2007 2 次提交
    • H
      [x86 setup] Make sure AH=00h when setting a video mode · 71351b98
      H. Peter Anvin 提交于
      Passing a u8 into a register doesn't mean gcc will zero-extend it.
      Also, don't depend on thhe register not to change.
      
      Per bug report from Saul Tamari.
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      71351b98
    • H
      [x86 setup] Volatilize asm() statements · b015124e
      H. Peter Anvin 提交于
      asm() statements need to be volatile when:
      
      a. They have side effects (other than value returned).
      b. When the value returned can vary over time.
      c. When they have ordering constraints that cannot be expressed to gcc.
      
      In particular, the keyboard and timer reads were violating constraint (b),
      which resulted in the keyboard/timeout poll getting
      loop-invariant-removed when compiling with gcc 4.2.0.
      
      Thanks to an anonymous bug reporter for pointing this out.
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      b015124e
  6. 15 8月, 2007 3 次提交
    • H
      [x86 setup] edd.c: make sure MBR signatures actually get reported · 9a5f35d4
      H. Peter Anvin 提交于
      When filling in the MBR signature array, the setup code failed to advance
      boot_params.edd_mbr_sig_buf_entries, which resulted in the valid data
      being ignored.
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      9a5f35d4
    • H
      [x86 setup] Don't use EDD to get the MBR signature · c1a6e2b0
      H. Peter Anvin 提交于
      At least one machine has been identified in the field which advertises
      EDD for all drives but locks up if one attempts an extended read from
      a non-primary drive.
      
      The MBR is always at CHS 0-0-1, so there is no reason to use an
      extended read, other than the possibility that the BIOS cannot handle
      it.
      
      Although this might break as many machines as it fixes (a small number
      either way), the current state is a regression but the reverse is not.
      Therefore revert to the previous state of not using extended read.
      
      Quite probably the Right Thing to do is to read using plain (CHS) read
      and extended read on failure, but that change would definitely have to
      go through -mm first.
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      c1a6e2b0
    • H
      [x86 setup] The current display page is returned in %bh, not %bl · 362cea33
      H. Peter Anvin 提交于
      The current display page is an 8-bit number, even though struct
      screen_info gives it a 16-bit number.  The number is returned in %bh,
      so it needs to be >> 8 before storing.
      
      Special thanks to Jeff Chua for detailed bug reporting.
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      362cea33
  7. 03 8月, 2007 1 次提交
  8. 02 8月, 2007 1 次提交
  9. 01 8月, 2007 4 次提交
  10. 26 7月, 2007 3 次提交
  11. 20 7月, 2007 2 次提交
  12. 19 7月, 2007 5 次提交
    • S
      [PATCH] x86: do not recompile boot for each build · 3fbc5416
      Sam Ravnborg 提交于
      Keep the arch/i386/boot directory from being rebuilt every time.
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      3fbc5416
    • H
      [x86 setup] Save/restore DS around invocations of INT 10h · 8c027ae2
      H. Peter Anvin 提交于
      There exists at least one card, Trident TVGA8900CL (BIOS dated 1992/9/8)
      which clobbers DS when "scrolling in an SVGA text mode of more than
      800x600 pixels."  Although we are extremely unlikely to run into that
      situation, it is cheap insurance to save and restore DS, and it only adds
      a grand total of 50 bytes to the total output.
      
      Pointed out by Etienne Lorrain.
      
      Cc: Etienne Lorrain <etienne_lorrain@yahoo.fr>
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      8c027ae2
    • H
      [x86 setup] VGA: Clear the Protect bit before setting the vertical height · 7ad37df0
      H. Peter Anvin 提交于
      If the user has asked for the vertical height registers to be recomputed
      by setting bit 15 in the video mode number, we do so without clearing the
      Protect bit in the Vertical Retrace Register before setting the Overflow
      register.  As a result, if the VGA BIOS had set the Protect bit, the
      write to the Overflow register will be dropped, and bits [9:8] of the
      vertical height will be left unchanged.
      
      This is a bug imported from the assembly version of this code.  It was
      pointed out by Etienne Lorrain.
      
      Cc: Etienne Lorrain <etienne_lorrain@yahoo.fr>
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      7ad37df0
    • H
      [x86 setup] Fix assembly constraints · 5593eaa8
      H. Peter Anvin 提交于
      Fix incorrect assembly constraints.  In particular, fix memory
      constraints used inside push..pop, which can cause invalid operation
      since gcc may generate %esp-relative references.
      
      Additionally:
      
      outl() should have "dN" not "dn".
      
      query_mca() shouldn't listen 16/32-bit registers in an 8-bit only
      context.
      
      has_eflag(): the "mask" is only used well after both the stack pointer
      and the output registers have been touched; this requires the output
      registers to be earlyclobbers (=&) and the input to exclude memory (so
      "ri", not "g").
      
      Thanks to Etienne Lorrain and Chuck Ebbert for prompting this review.
      
      Cc: Etienne Lorrain <etienne_lorrain@yahoo.fr>
      Cc: Chuck Ebbert <cebbert@redhat.com>
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      5593eaa8
    • H
      [x86 setup] build/tools.c: fix comment · 9aa3909c
      H. Peter Anvin 提交于
      Correct a comment in arch/i386/boot/build/tools.c; we now build the
      kernel from only two components instead of three, since the boot
      sector has been integrated in the setup code.
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      9aa3909c
  13. 18 7月, 2007 1 次提交
    • J
      xen: suppress abs symbol warnings for unused reloc pointers · 600b2fc2
      Jeremy Fitzhardinge 提交于
      arch/i386/xen/xen-asm.S defines some small pieces of code which are
      used to implement a few paravirt_ops.  They're designed so they can be
      used either in-place, or be inline patched into their callsites if
      there's enough space.
      
      Some of those operations need to make calls out (specifically, if you
      re-enable events [interrupts], and there's a pending event at that
      time).  These calls need the call instruction to be relocated if the
      code is patched inline.  In this case xen_foo_reloc is a
      section-relative symbol which points to xen_foo's required relocation.
      
      Other operations have no need of a relocation, and so their
      corresponding xen_bar_reloc is absolute 0.  These are the cases which
      are triggering the warning.
      
      This patch adds those symbols to the list of safe abs symbols.
      Signed-off-by: NJeremy Fitzhardinge <jeremy@xensource.com>
      Cc: Adrian Bunk <bunk@stusta.de>
      600b2fc2
  14. 13 7月, 2007 13 次提交