1. 12 7月, 2008 4 次提交
  2. 10 7月, 2008 1 次提交
  3. 09 7月, 2008 1 次提交
    • R
      x86: fix C1E && nx6325 stability problem · e2079c43
      Rafael J. Wysocki 提交于
      The problems are that, with the ACPI vs timer overring issue _fixed_,
      after using the box for some time (between several seconds and 1 hour, at
      random) processes get very high CPU loads (once I've got X using 107% of
      the CPU, for example) and the system becomes unresponsive, as though there
      were interrupts lost or something similar.
      
      Andreas Herrman reproduced similar problems:
      
      > Ok, now I've reproduced the stability problem.
      > - Using tip/master,
      > - reverting e38502eb8aa82314d5ab0eba45f50e6790dadd88 and
      > - applying your patch from this posting
      >   http://marc.info/?l=linux-kernel&m=121539354224562&w=4
      >
      > Starting X, firefox, gimp, tuxpaint and doing some drawing in tuxpaint
      > results in a slow system. Drawing is almost not possible anymore --
      > Selections of new colors, cursors etc. is performed with huge delay
      > if it's performed at all.
      >
      > BTW, the code sets up timer IRQ as Virtual Wire IRQ:
      >
      > Jul  8 14:57:58 kodscha IO-APIC (apicid-pin) 2-22, 2-23 not connected.
      > Jul  8 14:57:58 kodscha ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
      > Jul  8 14:57:58 kodscha ...trying to set up timer as Virtual Wire IRQ... works.
      >
      > and both INT0 and INT2 of IOAPIC are masked:
      >
      > Jul  8 14:57:58 kodscha NR Dst Mask Trig IRR Pol Stat Dmod Deli Vect:
      > Jul  8 14:57:58 kodscha 00 000 1    0    0   0   0    0    0    00
      > Jul  8 14:57:58 kodscha 01 003 0    0    0   0   0    1    1    31
      > Jul  8 14:57:58 kodscha 02 003 1    0    0   0   0    0    0    30
      >
      > I've also seen strange CPU utilization -- with syslog-ng:
      >
      > top - 15:33:06 up 35 min,  4 users,  load average: 1.70, 0.68, 0.37
      > Tasks:  64 total,   4 running,  60 sleeping,   0 stopped,   0 zombie
      > Cpu0  :  0.0%us,100.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
      > Cpu1  :  6.4%us, 87.2%sy,  0.0%ni,  5.8%id,  0.0%wa,  0.6%hi,  0.0%si,  0.0%st
      > Mem:    895384k total,   283568k used,   611816k free,    35492k buffers
      > Swap:  1959920k total,        0k used,  1959920k free,   163044k cached
      >
      >   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
      >  4632 root      20   0 17216  800  580 S  104  0.1   0:34.22 syslog-ng
      > 28505 root      20   0  205m  11m 4024 S    6  1.3   0:21.16 X
      > 28518 root      20   0 56292 5652 4492 S    1  0.6   0:01.80 fluxbox
      >     1 root      20   0  3724  608  508 S    0  0.1   0:00.36 init
      >
      > So far I have no clue why C1E-idle in conjunction with virtual wire
      > mode causes this strange behaviour.
      >
      > ... and I start to think about the root cause of all this.
      >
      > I've performed similar tests under X with the IRQ0/INT0 configuration and
      > I did not see above symptoms.
      
      So lets fall back to the IRQ0/INT0 configuration on this box.
      
      This basically restores the dont-use-the-lapic-timer exception mechanism
      that was unconditional on this box prior commit 8750bf5 ("x86: add C1E
      aware idle function").
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      e2079c43
  4. 13 5月, 2008 1 次提交
  5. 17 4月, 2008 2 次提交
    • J
      x86: support for new UV apic · ac23d4ee
      Jack Steiner 提交于
      UV supports really big systems. So big, in fact, that the APICID register
      does not contain enough bits to contain an APICID that is unique across all
      cpus.
      
      The UV BIOS supports 3 APICID modes:
      
      	- legacy mode. This mode uses the old APIC mode where
      	  APICID is in bits [31:24] of the APICID register.
      
      	- x2apic mode. This mode is whitebox-compatible. APICIDs
      	  are unique across all cpus. Standard x2apic APIC operations
      	  (Intel-defined) can be used for IPIs. The node identifier
      	  fits within the Intel-defined portion of the APICID register.
      
      	- x2apic-uv mode. In this mode, the APICIDs on each node have
      	  unique IDs, but IDs on different node are not unique. For example,
      	  if each mode has 32 cpus, the APICIDs on each node might be
      	  0 - 31. Every node has the same set of IDs.
      	  The UV hub is used to route IPIs/interrupts to the correct node.
      	  Traditional APIC operations WILL NOT WORK.
      
      In x2apic-uv mode, the ACPI tables all contain a full unique ID (note:
      exact bit layout still changing but the following is close):
      
      	nnnnnnnnnnlc0cch
      		n = unique node number
      		l = socket number on board
      		c = core
      		h = hyperthread
      
      Only the "lc0cch" bits are written to the APICID register. The remaining bits are
      supplied by having the get_apic_id() function "OR" the extra bits into the value
      read from the APICID register. (Hmmm.. why not keep the ENTIRE APICID register
      in per-cpu data....)
      
      The x2apic-uv mode is recognized by the MADT table containing:
      	  oem_id = "SGI"
      	  oem_table_id = "UV-X"
      Signed-off-by: NJack Steiner <steiner@sgi.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      ac23d4ee
    • J
      x86: add functions to determine if platform is a UV platform · ae261868
      Jack Steiner 提交于
      Add functions that can be used to determine if an x86_64
      system is a SGI "UV" system. UV systems come in 3 types and
      are identified by the OEM ID in the MADT.
      Signed-off-by: NJack Steiner <steiner@sgi.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      ae261868
  6. 11 10月, 2007 1 次提交
  7. 03 5月, 2007 2 次提交
    • I
      [PATCH] x86-64: always use physical delivery mode on > 8 CPUs · 07c7c474
      Ingo Molnar 提交于
      Remove clustered APIC mode.  There's little point in the use of clustered APIC
      mode, broadcasting is limited to within the cluster only, and chipsets have
      bugs in this area as well.  So default to physical APIC mode when the CPU
      count is large, and default to logical APIC mode when the CPU count is 8 or
      smaller.
      
      (this patch only removes the use of genapic_cluster and cleans up the
      resulting genapic.c file - removal of all remaining traces of clustered
      mode will be done by another patch.)
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Cc: Suresh Siddha <suresh.b.siddha@intel.com>
      Cc: Andi Kleen <ak@suse.de>
      Cc: "Li, Shaohua" <shaohua.li@intel.com>
      Cc: "Eric W. Biederman" <ebiederm@xmission.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      07c7c474
    • A
      [PATCH] x86-64: revert x86_64-mm-add-genapic_force · 3dc68d9b
      Andrew Morton 提交于
      This is obsoleted by new Ingo genapic patches.
      
      Cc: Suresh Siddha <suresh.b.siddha@intel.com>
      Cc: Andi Kleen <ak@suse.de>
      Cc: "Li, Shaohua" <shaohua.li@intel.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      3dc68d9b
  8. 07 12月, 2006 1 次提交
  9. 09 10月, 2006 1 次提交
    • E
      [PATCH] x86_64 irq: Allocate a vector across all cpus for genapic_flat. · c7111c13
      Eric W. Biederman 提交于
      The problem we can't take advantage of lowest priority delivery mode if
      the vectors are allocated for only one cpu at a time.  Nor can we work
      around hardware that assumes lowest priority delivery mode is always
      used with several cpus.
      
      So this patch introduces the concept of a vector_allocation_domain.  A
      set of cpus that will receive an irq on the same vector.  Currently the
      code for implementing this is placed in the genapic structure so we can
      vary this depending on how we are using the io_apics.
      
      This allows us to restore the previous behaviour of genapic_flat without
      removing the benefits of having separate vector allocation for large
      machines.
      
      This should also fix the problem report where a hyperthreaded cpu was
      receving the irq on the wrong hyperthread when in logical delivery mode
      because the previous behaviour is restored.
      
      This patch properly records our allocation of the first 16 irqs to the
      first 16 available vectors on all cpus.  This should be fine but it may
      run into problems with multiple interrupts at the same interrupt level.
      Except for some badly maintained comments in the code and the behaviour
      of the interrupt allocator I have no real understanding of that problem.
      Signed-off-by: NEric W. Biederman <ebiederm@xmission.com>
      Acked-by: NMuli Ben-Yehuda <muli@il.ibm.com>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      c7111c13
  10. 26 9月, 2006 1 次提交
  11. 17 4月, 2005 1 次提交
    • L
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds 提交于
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4