1. 26 3月, 2006 7 次提交
  2. 24 3月, 2006 3 次提交
  3. 23 3月, 2006 6 次提交
  4. 22 3月, 2006 2 次提交
  5. 15 3月, 2006 1 次提交
  6. 13 3月, 2006 1 次提交
    • A
      [PATCH] x86-64: Fix up handling of non canonical user RIPs · c33d4568
      Andi Kleen 提交于
      EM64T CPUs have somewhat weird error reporting for non canonical RIPs in
      SYSRET.
      
      We can't handle any exceptions there because the exception handler would
      end up running on the user stack which is unsafe.
      
      To avoid problems any code that might end up with a user touched pt_regs
      should return using int_ret_from_syscall.  int_ret_from_syscall ends up
      using IRET, which allows safe exceptions.
      
      Cc: Ernie Petrides <petrides@redhat.com>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      c33d4568
  7. 09 3月, 2006 1 次提交
  8. 28 2月, 2006 1 次提交
  9. 27 2月, 2006 7 次提交
    • B
      [PATCH] fix build on x86_64 with !CONFIG_HOTPLUG_CPU · d5176123
      Brian Magnuson 提交于
      The commit e2c03888 added
      setup_additional_cpus to setup.c but this is only defined if
      CONFIG_HOTPLUG_CPU is set.  This patch changes the #ifdef to reflect that.
      Signed-off-by: NBrian Magnuson <magnuson@rcn.com>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      d5176123
    • A
      [PATCH] x86_64: Better ATI timer fix · ab9b32ee
      Andi Kleen 提交于
      The previous experiment for using apicmaintimer on ATI systems didn't
      work out very well.  In particular laptops with C2/C3 support often
      don't let it tick during idle, which makes it useless.  There were also
      some other bugs that made the apicmaintimer often not used at all.
      
      I tried some other experiments - running timer over RTC and some other
      things but they didn't really work well neither.
      
      I rechecked the specs now and it turns out this simple change is
      actually enough to avoid the double ticks on the ATI systems.  We just
      turn off IRQ 0 in the 8254 and only route it directly using the IO-APIC.
      
      I tested it on a few ATI systems and it worked there.  In fact it worked
      on all chipsets (NVidia, Intel, AMD, ATI) I tried it on.
      
      According to the ACPI spec routing should always work through the
      IO-APIC so I think it's the correct thing to do anyways (and most of the
      old gunk in check_timer should be thrown away for x86-64).
      
      But for 2.6.16 it's best to do a fairly minimal change:
       - Use the known to be working everywhere-but-ATI IRQ0 both over 8254
         and IO-APIC setup everywhere
       - Except on ATI disable IRQ0 in the 8254
       - Remove the code to select apicmaintimer on ATI chipsets
       - Add some boot options to allow to override this (just paranoia)
      
      In 2.6.17 I hope to switch the default over to this for everybody.
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      ab9b32ee
    • A
      [PATCH] x86_64: Move the SMP time selection earlier · e8b91777
      Andi Kleen 提交于
      SMP time selection originally ran after all CPUs were brought up because
      it needed to know the number of CPUs to decide if it needs an MP safe
      timer or not.
      
      This is not needed anymore because we know present CPUs early.
      
      This fixes a couple of problems:
       - apicmaintimer didn't always work because it relied on state that was
         set up time_init_gtod too late.
       - The output for the used timer in early kernel log was misleading
         because time_init_gtod could actually change it later.  Now always
         print the final timer choice
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      e8b91777
    • A
      [PATCH] x86_64: Fix the additional_cpus=.. option · e2c03888
      Andi Kleen 提交于
      It didn't set up the CPU possible map early enough, so the
      option didn't actually work.
      
      Noticed by Heiko Carstens
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      e2c03888
    • C
      [PATCH] x86_64: Fix NMI watchdog on x460 · 1f992153
      Chris McDermott 提交于
      [description from AK]
      
      Old check for the IO-APIC watchdog during the timer check was wrong -
      it obviously should only drop into this if the IO-APIC watchdog is used.
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      1f992153
    • A
      [PATCH] x86_64: Only do the clustered systems have unsynchronized TSC assumption on IBM systems · 13a229ab
      Andi Kleen 提交于
      Big Unisys systems have multiple clusters too, but they have an
      synchronized TSC.
      
      I'm using the SMBIOS to check for vendor == IBM.
      
      Cc: Chris McDermott <lcm@us.ibm.com>
      Cc: "Protasevich, Natalie" <Natalie.Protasevich@unisys.com>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      13a229ab
    • J
      [PATCH] x86_64: no_iommu removal in pci-gart.c · 60b08c67
      Jon Mason 提交于
      In previous versions of pci-gart.c, no_iommu was used to determine if IOMMU was
      disabled in the GART DMA mapping functions.  This changed in 2.6.16 and now
      gart_xxx() functions are only called if gart is enabled.  Therefore, uses of
      no_iommu in the GART code are no longer necessary and can be removed.
      
      Also, it removes double deceleration of no_iommu and force_iommu in pci.h and
      proto.h, by removing the deceleration in pci.h.
      
      Lastly, end_pfn off by one error.
      
      Tested (along with patch 1/2) on dual opteron with gart enabled, iommu=soft,
      and iommu=off.
      Signed-off-by: NJon Mason <jdmason@us.ibm.com>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      60b08c67
  10. 26 2月, 2006 1 次提交
  11. 18 2月, 2006 6 次提交
  12. 13 2月, 2006 2 次提交
    • A
      [PATCH] x86_64: GART DMA merging fix · 0d541064
      Andi Kleen 提交于
      Don't touch the non DMA members in the sg list in dma_map_sg in the IOMMU
      
      Some drivers (in particular ST) ran into problems because they reused the sg
      lists after passing them to pci_map_sg().  The merging procedure in the K8
      GART IOMMU corrupted the state.  This patch changes it to only touch the dma*
      entries during merging, but not the other fields.  Approach suggested by Dave
      Miller.
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      0d541064
    • J
      [PATCH] arch/x86_64/kernel/traps.c PTRACE_SINGLESTEP oops · a65d17c9
      John Blackwood 提交于
      We found a problem with x86_64 kernels with preemption enabled, where
      having multiple tasks doing ptrace singlesteps around the same time will
      cause the system to 'oops'.  The problem seems that a task can get
      preempted out of the do_debug() processing while it is running on the
      DEBUG_STACK stack.  If another task on that same cpu then enters do_debug()
      and uses the same per-cpu DEBUG_STACK stack, the previous preempted tasks's
      stack contents can be corrupted, and the system will oops when the
      preempted task is context switched back in again.
      
      The typical oops looks like the following:
      
        Unable to handle kernel paging request at ffffffffffffffae RIP: <ffffffff805452a1>{thread_return+34}
        PGD 103027 PUD 102429067 PMD 0
        Oops: 0002 [1] PREEMPT SMP
        CPU 0
        Modules linked in:
        Pid: 3786, comm: ssdd Not tainted 2.6.15.2 #1
        RIP: 0010:[<ffffffff805452a1>] <ffffffff805452a1>{thread_return+34}
        RSP: 0018:ffffffff80824058  EFLAGS: 000136c2
        RAX: ffff81017e12cea0 RBX: 0000000000000000 RCX: 00000000c0000100
        RDX: 0000000000000000 RSI: ffff8100f7856e20 RDI: ffff81017e12cea0
        RBP: 0000000000000046 R08: ffff8100f68a6000 R09: 0000000000000000
        R10: 0000000000000000 R11: ffff81017e12cea0 R12: ffff81000c2d53e8
        R13: ffff81017f5b3be8 R14: ffff81000c0036e0 R15: 000001056cbfc899
        FS:  00002aaaaaad9b00(0000) GS:ffffffff80883800(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
        CR2: ffffffffffffffae CR3: 00000000f6fcf000 CR4: 00000000000006e0
        Process ssdd (pid: 3786, threadinfo ffff8100f68a6000, task ffff8100f7856e20)
        Stack: ffffffff808240d8 ffffffff8012a84a ffff8100055f6c00 0000000000000020
               0000000000000001 ffff81000c0036e0 ffffffff808240b8 0000000000000000
               0000000000000000 0000000000000000
        Call Trace: <#DB>
      	<ffffffff8012a84a>{try_to_wake_up+985}
      	<ffffffff8012c0d3>{kick_process+87}
              <ffffffff8013b262>{signal_wake_up+48}
      	<ffffffff8013b5ce>{specific_send_sig_info+179}
              <ffffffff80546abc>{_spin_unlock_irqrestore+27}
      	<ffffffff8013b67c>{force_sig_info+159}
              <ffffffff801103a0>{do_debug+289} <ffffffff80110278>{sync_regs+103}
              <ffffffff8010ed9a>{paranoid_userspace+35}
        Unable to handle kernel paging request at 00007fffffb7d000 RIP: <ffffffff8010f2e4>{show_trace+465}
        PGD f6f25067 PUD f6fcc067 PMD f6957067 PTE 0
        Oops: 0000 [2] PREEMPT SMP
      
      This patch disables preemptions for the task upon entry to do_debug(), before
      interrupts are reenabled, and then disables preemption before exiting
      do_debug(), after disabling interrupts.  I've noticed that the task can be
      preempted either at the end of an interrupt, or on the call to
      force_sig_info() on the spin_unlock_irqrestore() processing.  It might be
      better to attempt to code a fix in entry.S around the code that calls
      do_debug().
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      a65d17c9
  13. 12 2月, 2006 1 次提交
    • C
      [PATCH] x86-64: Fix HPET timer on x460 · 33042a9f
      Chris McDermott 提交于
      [description from AK]
      
      The IBM Summit 3 chipset doesn't implement the HPET timer replacement
      option.  Since the current Linux code relies on it use a mixed mode with
      both PIT for the interrupt and HPET counters for the time keeping.  That
      was already implemented, but didn't work properly because it was still
      using the last interrupt offset in HPET.  This resulted in x460 not
      booting.  Fix this up by using the free running HPET counter.
      
      Shouldn't affect any other machine because they either use full HPET mode
      or no HPET at all.
      
      TBD needs a similar 32bit fix.
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Cc: Pallipadi, Venkatesh" <venkatesh.pallipadi@intel.com>
      Cc: Bob Picco <bob.picco@hp.com>
      Cc: Bjorn Helgaas <bjorn.helgaas@hp.com>
      Cc: john stultz <johnstul@us.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      33042a9f
  14. 08 2月, 2006 1 次提交