1. 08 7月, 2008 2 次提交
    • R
      x86: Move PCI IO ECS code to x86/pci · 3a27dd1c
      Robert Richter 提交于
      "Form follows function". Code is now where it belongs to.
      Signed-off-by: NRobert Richter <robert.richter@amd.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      3a27dd1c
    • T
      x86, clockevents: add C1E aware idle function · aa276e1c
      Thomas Gleixner 提交于
      C1E on AMD machines is like C3 but without control from the OS. Up to
      now we disabled the local apic timer for those machines as it stops
      when the CPU goes into C1E. This excludes those machines from high
      resolution timers / dynamic ticks, which hurts especially X2 based
      laptops.
      
      The current boot time C1E detection has another, more serious flaw
      as well: some BIOSes do not enable C1E until the ACPI processor module
      is loaded. This causes systems to stop working after that point.
      
      To work nicely with C1E enabled machines we use a separate idle
      function, which checks on idle entry whether C1E was enabled in the
      Interrupt Pending Message MSR. This allows us to do timer broadcasting
      for C1E and covers the late enablement of C1E as well.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      aa276e1c
  2. 10 6月, 2008 2 次提交
  3. 02 6月, 2008 3 次提交
  4. 31 5月, 2008 1 次提交
  5. 24 5月, 2008 1 次提交
  6. 20 5月, 2008 9 次提交
  7. 18 5月, 2008 1 次提交
  8. 15 5月, 2008 1 次提交
  9. 11 5月, 2008 4 次提交
  10. 08 5月, 2008 3 次提交
  11. 07 5月, 2008 1 次提交
    • H
      x86: fix PAE pmd_bad bootup warning · aeed5fce
      Hugh Dickins 提交于
      Fix warning from pmd_bad() at bootup on a HIGHMEM64G HIGHPTE x86_32.
      
      That came from 9fc34113 x86: debug pmd_bad();
      but we understand now that the typecasting was wrong for PAE in the previous
      version: pagetable pages above 4GB looked bad and stopped Arjan from booting.
      
      And revert that cded932b x86: fix pmd_bad
      and pud_bad to support huge pages.  It was the wrong way round: we shouldn't
      weaken every pmd_bad and pud_bad check to let huge pages slip through - in
      part they check that we _don't_ have a huge page where it's not expected.
      
      Put the x86 pmd_bad() and pud_bad() definitions back to what they have long
      been: they can be improved (x86_32 should use PTE_MASK, to stop PAE thinking
      junk in the upper word is good; and x86_64 should follow x86_32's stricter
      comparison, to stop thinking any subset of required bits is good); but that
      should be a later patch.
      
      Fix Hans' good observation that follow_page() will never find pmd_huge()
      because that would have already failed the pmd_bad test: test pmd_huge in
      between the pmd_none and pmd_bad tests.  Tighten x86's pmd_huge() check?
      No, once it's a hugepage entry, it can get quite far from a good pmd: for
      example, PROT_NONE leaves it with only ACCESSED of the KERN_PGTABLE bits.
      
      However... though follow_page() contains this and another test for huge
      pages, so it's nice to keep it working on them, where does it actually get
      called on a huge page?  get_user_pages() checks is_vm_hugetlb_page(vma) to
      to call alternative hugetlb processing, as does unmap_vmas() and others.
      Signed-off-by: NHugh Dickins <hugh@veritas.com>
      Earlier-version-tested-by: NIngo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Jeff Chua <jeff.chua.linux@gmail.com>
      Cc: Hans Rosenfeld <hans.rosenfeld@amd.com>
      Cc: Arjan van de Ven <arjan@linux.intel.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      aeed5fce
  12. 05 5月, 2008 1 次提交
  13. 04 5月, 2008 5 次提交
  14. 03 5月, 2008 1 次提交
  15. 01 5月, 2008 5 次提交
    • J
      dmi: clean-up dmi helper declarations · ef3fb66c
      Jean Delvare 提交于
      The declaration of dmi helper functions is a bit messy and inconsistent at the
      moment:
      
      * On ia64 they are declared in <asm/io.h>.
      * On x86-64 they are declared in <asm/dmi.h>.
      * On i386 they are declared both in <asm/io.h> and <asm/dmi.h>.
      
      Fix the header files so that the dmi helper functions are consistently
      defined in <asm/dmi.h>.
      Signed-off-by: NJean Delvare <khali@linux-fr.org>
      Cc: Matt Domsch <Matt_Domsch@dell.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      ef3fb66c
    • R
      remove div_long_long_rem · f8bd2258
      Roman Zippel 提交于
      x86 is the only arch right now, which provides an optimized for
      div_long_long_rem and it has the downside that one has to be very careful that
      the divide doesn't overflow.
      
      The API is a little akward, as the arguments for the unsigned divide are
      signed.  The signed version also doesn't handle a negative divisor and
      produces worse code on 64bit archs.
      
      There is little incentive to keep this API alive, so this converts the few
      users to the new API.
      Signed-off-by: NRoman Zippel <zippel@linux-m68k.org>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: john stultz <johnstul@us.ibm.com>
      Cc: Christoph Lameter <clameter@sgi.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      f8bd2258
    • R
      rename div64_64 to div64_u64 · 6f6d6a1a
      Roman Zippel 提交于
      Rename div64_64 to div64_u64 to make it consistent with the other divide
      functions, so it clearly includes the type of the divide.  Move its definition
      to math64.h as currently no architecture overrides the generic implementation.
       They can still override it of course, but the duplicated declarations are
      avoided.
      Signed-off-by: NRoman Zippel <zippel@linux-m68k.org>
      Cc: Avi Kivity <avi@qumranet.com>
      Cc: Russell King <rmk@arm.linux.org.uk>
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: David Howells <dhowells@redhat.com>
      Cc: Jeff Dike <jdike@addtoit.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Patrick McHardy <kaber@trash.net>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      6f6d6a1a
    • R
      introduce explicit signed/unsigned 64bit divide · 2418f4f2
      Roman Zippel 提交于
      The current do_div doesn't explicitly say that it's unsigned and the signed
      counterpart is missing, which is e.g.  needed when dealing with time values.
      
      This introduces 64bit signed/unsigned divide functions which also attempts to
      cleanup the somewhat awkward calling API, which often requires the use of
      temporary variables for the dividend.  To avoid the need for temporary
      variables everywhere for the remainder, each divide variant also provides a
      version which doesn't return the remainder.
      
      Each architecture can now provide optimized versions of these function,
      otherwise generic fallback implementations will be used.
      
      As an example I provided an alternative for the current x86 divide, which
      avoids the asm casts and using an union allows gcc to generate better code.
      It also avoids the upper divde in a few more cases, where the result is known
      (i.e.  upper quotient is zero).
      Signed-off-by: NRoman Zippel <zippel@linux-m68k.org>
      Cc: john stultz <johnstul@us.ibm.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      2418f4f2
    • H
      x86: fix HT cpu booting on 32-bit · 5f464707
      Hugh Dickins 提交于
      Since recent smpboot 32/64-bit merge, my dual Xeon with HT has been
      booting only 2 of its 4 cpus (when running an i386 kernel; but x86_64
      is okay).  J.A. Magallón reports the same.
      
       native_cpu_up: bad cpu 2
       native_cpu_up: bad cpu 3
      
      The mach-default cpu_present_to_apicid() was just returning cpu number
      (2, 3) instead of apicid (6, 7): looks like we now need the x86_64 code
      even for the i386 case.
      
      Comparing with other versions of cpu_present_to_apicid(), it seems a
      good idea to include an NR_CPUS test too, since cpu_present() doesn't
      include that; but that wasn't a problem here, and may no problem at all.
      
      Prior to that smpboot merge, my Xeon booted the two HT siblings on one
      physical first, then the two siblings on the other physical after - when
      i386, but alternated them when x86_64.  Since the merge, the x86_64
      sequence is unchanged, but the i386 sequence is now like x86_64.
      
      I prefer this consistency, and I prefer the new sequence: booting with
      maxcpus=2 then uses the independent physicals without HT sharing.
      Signed-off-by: NHugh Dickins <hugh@veritas.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      5f464707