1. 09 1月, 2009 1 次提交
  2. 12 11月, 2008 1 次提交
    • B
      ACPI: pci_link: remove acpi_irq_balance_set() interface · 32836259
      Bjorn Helgaas 提交于
      This removes the acpi_irq_balance_set() interface from the PCI
      interrupt link driver.
      
      x86 used acpi_irq_balance_set() to tell the PCI interrupt link
      driver to configure links to minimize IRQ sharing.  But the link
      driver can easily figure out whether to turn on IRQ balancing
      based on the IRQ model (PIC/IOAPIC/etc), so we can get rid of
      that external interface.
      
      It's better for the driver to figure this out at init-time.  If
      we set it externally via the x86 code, the interface reduces
      modularity, and we depend on the fact that acpi_process_madt()
      happens before we process the kernel command line.
      Signed-off-by: NBjorn Helgaas <bjorn.helgaas@hp.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      32836259
  3. 22 10月, 2008 2 次提交
  4. 17 10月, 2008 1 次提交
  5. 16 10月, 2008 4 次提交
  6. 11 10月, 2008 2 次提交
  7. 07 10月, 2008 2 次提交
  8. 27 8月, 2008 1 次提交
  9. 21 8月, 2008 1 次提交
    • Y
      x86: fix apic version warning · 11494547
      Yinghai Lu 提交于
      after following patch,
      
      commit 1b313f4a
      Author: Cyrill Gorcunov <gorcunov@gmail.com>
      Date:   Mon Aug 18 20:45:57 2008 +0400
      
          x86: apic - generic_processor_info
      
          - use physid_set instead of phys_cpu and physids_or
          - set phys_cpu_present_map bit AFTER check for allowed
            number of processors
          - add checking for APIC valid version in 64bit mode
            (mostly not needed but added for merging purpose)
          - add apic_version definition for 64bit mode which
            is used now
      
      we are getting warning for acpi path on 64 bit system.
      
      make the 64-bit side fill in apic_version[] as well.
      
      [ mingo@elte.hu: build fix ]
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      11494547
  10. 18 8月, 2008 1 次提交
    • D
      x86: fix i486 suspend to disk CR4 oops · e532c06f
      David Fries 提交于
      arch/x86/power/cpu_32.c __save_processor_state calls read_cr4()
      only a i486 CPU doesn't have the CR4 register.  Trying to read it
      produces an invalid opcode oops during suspend to disk.
      
      Use the safe rc4 reading op instead. If the value to be written is
      zero the write is skipped.
      
      arch/x86/power/hibernate_asm_32.S
      done: swapped the use of %eax and %ecx to use jecxz for
      the zero test and jump over store to %cr4.
      restore_image: s/%ecx/%eax/ to be consistent with done:
      
      In addition to __save_processor_state, acpi_save_state_mem,
      efi_call_phys_prelog, and efi_call_phys_epilog had checks added
      (acpi restore was in assembly and already had a check for
      non-zero).  There were other reads and writes of CR4, but MCE and
      virtualization shouldn't be executed on a i486 anyway.
      Signed-off-by: NDavid Fries <david@fries.net>
      Acked-by: NH. Peter Anvin <hpa@zytor.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      e532c06f
  11. 15 8月, 2008 1 次提交
  12. 13 8月, 2008 1 次提交
  13. 11 8月, 2008 1 次提交
  14. 26 7月, 2008 1 次提交
  15. 25 7月, 2008 1 次提交
  16. 22 7月, 2008 1 次提交
  17. 19 7月, 2008 1 次提交
    • M
      cpumask: Replace cpumask_of_cpu with cpumask_of_cpu_ptr · 65c01184
      Mike Travis 提交于
        * This patch replaces the dangerous lvalue version of cpumask_of_cpu
          with new cpumask_of_cpu_ptr macros.  These are patterned after the
          node_to_cpumask_ptr macros.
      
          In general terms, if there is a cpumask_of_cpu_map[] then a pointer to
          the cpumask_of_cpu_map[cpu] entry is used.  The cpumask_of_cpu_map
          is provided when there is a large NR_CPUS count, reducing
          greatly the amount of code generated and stack space used for
          cpumask_of_cpu().  The pointer to the cpumask_t value is needed for
          calling set_cpus_allowed_ptr() to reduce the amount of stack space
          needed to pass the cpumask_t value.
      
          If there isn't a cpumask_of_cpu_map[], then a temporary variable is
          declared and filled in with value from cpumask_of_cpu(cpu) as well as
          a pointer variable pointing to this temporary variable.  Afterwards,
          the pointer is used to reference the cpumask value.  The compiler
          will optimize out the extra dereference through the pointer as well
          as the stack space used for the pointer, resulting in identical code.
      
          A good example of the orthogonal usages is in net/sunrpc/svc.c:
      
      	case SVC_POOL_PERCPU:
      	{
      		unsigned int cpu = m->pool_to[pidx];
      		cpumask_of_cpu_ptr(cpumask, cpu);
      
      		*oldmask = current->cpus_allowed;
      		set_cpus_allowed_ptr(current, cpumask);
      		return 1;
      	}
      	case SVC_POOL_PERNODE:
      	{
      		unsigned int node = m->pool_to[pidx];
      		node_to_cpumask_ptr(nodecpumask, node);
      
      		*oldmask = current->cpus_allowed;
      		set_cpus_allowed_ptr(current, nodecpumask);
      		return 1;
      	}
      Signed-off-by: NMike Travis <travis@sgi.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      65c01184
  18. 18 7月, 2008 2 次提交
    • H
      x86: unify and correct the GDT_ENTRY() macro · f910d134
      H. Peter Anvin 提交于
      Impact: None (cleanup only)
      
      Merge the GDT_ENTRY() macro between arch/x86/boot/pm.c and
      arch/x86/kernel/acpi/sleep.c and put the new one in
      <asm-x86/segment.h>.
      
      While we're at it, correct the bitmasks for the limit and flags.  The
      new version relies on using ULL constants in order to cause type
      promotion rather than explicit casts; this avoids having to include
      <linux/types.h> in <asm-x86/segments.h>.
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      f910d134
    • H
      x86: unify and correct the GDT_ENTRY() macro · 4fdf08b5
      H. Peter Anvin 提交于
      Merge the GDT_ENTRY() macro between arch/x86/boot/pm.c and
      arch/x86/kernel/acpi/sleep.c and put the new one in
      <asm-x86/segment.h>.
      
      While we're at it, correct the bitmasks for the limit and flags.  The
      new version relies on using ULL constants in order to cause type
      promotion rather than explicit casts; this avoids having to include
      <linux/types.h> in <asm-x86/segments.h>.
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      4fdf08b5
  19. 17 7月, 2008 1 次提交
  20. 15 7月, 2008 2 次提交
    • H
      x86, suspend, acpi: correct and add comments about Big Real Mode · 065cb3df
      H. Peter Anvin 提交于
      Explain that we set up the descriptors for Big Real Mode, and why we
      do so.  In particular, one system that is known to fail without it is
      the Lenovo X61.
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      065cb3df
    • H
      x86, suspend, acpi: enter Big Real Mode · 3bf2e774
      H. Peter Anvin 提交于
      The explanation for recent video BIOS suspend quirk failures is that
      the VESA BIOS expects to be entered in Big Real Mode (*.limit = 0xffffffff)
      instead of ordinary Real Mode (*.limit = 0xffff).
      
      This patch changes the segment descriptors to Big Real Mode instead.
      
      The segment descriptor registers (what Intel calls "segment cache") is
      always active.  The only thing that changes based on CR0.PE is how it is
      *loaded* and the interpretation of the CS flags.
      
      The segment descriptor registers contain of the following sub-registers:
      selector (the "visible" part), base, limit and flags.  In protected mode
      or long mode, they are loaded from descriptors (or fs.base or gs.base can
      be manipulated directly in long mode.)  In real mode, the only thing
      changed by a segment register load is the selector and the base, where the
      base <- selector << 4.  In particular, *the limit and the flags are not
      changed*.
      
      As far as the handling of the CS flags: a code segment cannot be writable
      in protected mode, whereas it is "just another segment" in real mode, so
      there is some kind of quirk that kicks in for this when CR0.PE <- 0.  I'm
      not sure if this is accomplished by actually changing the cs.flags register
      or just changing the interpretation; it might be something that is
      CPU-specific.  In particular, the Transmeta CPUs had an explicit "CS is
      writable if you're in real mode" override, so even if you had loaded CS
      with an execute-only segment it'd be writable (but not readable!) on return
      to real mode.  I'm not at all sure if that is how other CPUs behave.
      Signed-off-by: N"H. Peter Anvin" <hpa@zytor.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      3bf2e774
  21. 13 7月, 2008 1 次提交
  22. 12 7月, 2008 3 次提交
  23. 11 7月, 2008 1 次提交
  24. 10 7月, 2008 1 次提交
  25. 09 7月, 2008 2 次提交
    • I
      x86: build fix for "x86: fix C1E && nx6325 stability problem" · 183fe065
      Ingo Molnar 提交于
      fix:
      
      arch/x86/kernel/acpi/boot.c: In function ‘dmi_ignore_irq0_timer_override’:
      arch/x86/kernel/acpi/boot.c:1443: error: implicit declaration of function ‘force_mask_ioapic_irq_2’
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      183fe065
    • 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
  26. 08 7月, 2008 4 次提交