1. 21 4月, 2008 5 次提交
    • B
      PCI: x86: use generic pci_enable_resources() · b81d988c
      Bjorn Helgaas 提交于
      Use the generic pci_enable_resources() instead of the arch-specific code.
      
      Unlike this arch-specific code, the generic version:
          - checks for resource collisions with "!r->parent"
      Signed-off-by: NBjorn Helgaas <bjorn.helgaas@hp.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      b81d988c
    • B
      PCI: remove "pci=routeirq" noise from dmesg · 657472e9
      Bjorn Helgaas 提交于
      The "pci=routeirq" option was added in 2004, and I don't get any valid
      reports anymore.  The option is still mentioned in kernel-parameters.txt.
      Signed-off-by: NBjorn Helgaas <bjorn.helgaas@hp.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      657472e9
    • G
      PCI: Include PCI domain in PCI bus names on x86/x86_64 · cb3576fa
      Gary Hade 提交于
      The PCI bus names included in /proc/iomem and /proc/ioports are
      of the form 'PCI Bus #XX' where XX is the bus number.  This patch
      changes the naming to 'PCI Bus XXXX:YY' where XXXX is the domain
      number and YY is the bus number.  For example, PCI bus 14 in
      domain 0 will show as 'PCI Bus 0000:14' instead of 'PCI Bus #14'.
      This change makes the naming consistent with other architectures
      such as ia64 where multiple PCI domain support has been around
      longer.
      Signed-off-by: NGary Hade <garyhade@us.ibm.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      cb3576fa
    • G
      PCI: remove pcibios_fixup_ghosts() · 6355f3d1
      Greg Kroah-Hartman 提交于
      This function was obviously never being used since early 2.5 days as any
      device that it would try to remove would never really be removed from
      the system due to the PCI device list being held in the driver core, not
      the general list of PCI devices.
      
      As we have not had a single report of a problem here in 4 years, I think
      it's safe to remove now.
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      6355f3d1
    • G
      PCI: remove initial bios sort of PCI devices on x86 · 1ba6ab11
      Greg Kroah-Hartman 提交于
      We currently keep 2 lists of PCI devices in the system, one in the
      driver core, and one all on its own.  This second list is sorted at boot
      time, in "BIOS" order, to try to remain compatible with older kernels
      (2.2 and earlier days).  There was also a "nosort" option to turn this
      sorting off, to remain compatible with even older kernel versions, but
      that just ends up being what we have been doing from 2.5 days...
      
      Unfortunately, the second list of devices is not really ever used to 
      determine the probing order of PCI devices or drivers[1].  That is done
      using the driver core list instead.  This change happened back in the
      early 2.5 days.
      
      Relying on BIOS ording for the binding of drivers to specific device
      names is problematic for many reasons, and userspace tools like udev
      exist to properly name devices in a persistant manner if that is needed,
      no reliance on the BIOS is needed.
      
      Matt Domsch and others at Dell noticed this back in 2006, and added a
      boot option to sort the PCI device lists (both of them) in a
      breadth-first manner to help remain compatible with the 2.4 order, if
      needed for any reason.  This option is not going away, as some systems
      rely on them.
      
      This patch removes the sorting of the internal PCI device list in "BIOS"
      mode, as it's not needed at all anymore, and hasn't for many years.
      I've also removed the PCI flags for this from some other arches that for
      some reason defined them, but never used them.
      
      This should not change the ordering of any drivers or device probing.
      
      [1] The old-style pci_get_device and pci_find_device() still used this
      sorting order, but there are very few drivers that use these functions,
      as they are deprecated for use in this manner.  If for some reason, a
      driver rely on the order and uses these functions, the breadth-first
      boot option will resolve any problem.
      
      Cc: Matt Domsch <Matt_Domsch@dell.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      1ba6ab11
  2. 17 4月, 2008 9 次提交
  3. 16 4月, 2008 1 次提交
  4. 11 3月, 2008 1 次提交
    • I
      fix BIOS PCI config cycle buglet causing ACPI boot regression · f5dbb55b
      Ingo Molnar 提交于
      I figured out another ACPI related regression today.
      
      randconfig testing triggered an early boot-time hang on a laptop of mine
      (32-bit x86, config attached) - the screen was scrolling ACPI AML
      exceptions [with no serial port and no early debugging available].
      
      v2.6.24 works fine on that laptop with the same .config, so after a few
      hours of bisection (had to restart it 3 times - other regressions
      interacted), it honed in on this commit:
      
      | 10270d48 is first bad commit
      |
      | Author: Linus Torvalds <torvalds@woody.linux-foundation.org>
      | Date:   Wed Feb 13 09:56:14 2008 -0800
      |
      |     acpi: fix acpi_os_read_pci_configuration() misuse of raw_pci_read()
      
      reverting this commit ontop of -rc5 gave a correctly booting kernel.
      
      But this commit fixes a real bug so the real question is, why did it
      break the bootup?
      
      After quite some head-scratching, the following change stood out:
      
      -                               pci_id->bus = tu8;
      +                               pci_id->bus = val;
      
      pci_id->bus is defined as u16:
      
         struct acpi_pci_id {
                 u16 segment;
                 u16 bus;
         ...
      
      and 'tu8' changed from u8 to u32. So previously we'd unconditionally
      mask the return value of acpi_os_read_pci_configuration()
      (raw_pci_read()) to 8 bits, but now we just trust whatever comes back
      from the PCI access routines and only crop it to 16 bits.
      
      But if the high 8 bits of that result contains any noise then we'll
      write that into ACPI's PCI ID descriptor and confuse the heck out of the
      rest of ACPI.
      
      So lets check the PCI-BIOS code on that theory. We have this codepath
      for 8-bit accesses (arch/x86/pci/pcbios.c:pci_bios_read()):
      
              switch (len) {
              case 1:
                      __asm__("lcall *(%%esi); cld\n\t"
                              "jc 1f\n\t"
                              "xor %%ah, %%ah\n"
                              "1:"
                              : "=c" (*value),
                                "=a" (result)
                              : "1" (PCIBIOS_READ_CONFIG_BYTE),
                                "b" (bx),
                                "D" ((long)reg),
                                "S" (&pci_indirect));
      
      Aha! The "=a" output constraint puts the full 32 bits of EAX into
      *value. But if the BIOS's routines set any of the high bits to nonzero,
      we'll return a value with more set in it than intended.
      
      The other, more common PCI access methods (v1 and v2 PCI reads) clear
      out the high bits already, for example pci_conf1_read() does:
      
              switch (len) {
              case 1:
                      *value = inb(0xCFC + (reg & 3));
      
      which explicitly converts the return byte up to 32 bits and zero-extends
      it.
      
      So zero-extending the result in the PCI-BIOS read routine fixes the
      regression on my laptop. ( It might fix some other long-standing issues
      we had with PCI-BIOS during the past decade ... ) Both 8-bit and 16-bit
      accesses were buggy.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      f5dbb55b
  5. 22 2月, 2008 1 次提交
  6. 19 2月, 2008 1 次提交
  7. 11 2月, 2008 2 次提交
  8. 05 2月, 2008 1 次提交
    • D
      intel-agp: add chipset flushing support · 6c00a61e
      Dave Airlie 提交于
      This adds support for flushing the chipsets on the 915, 945, 965 and G33
      families of Intel chips.
      
      The BIOS doesn't seem to always allocate the BAR on the 965 chipsets
      so I have to use pci resource code to create a resource
      
      It adds an export for pcibios_align_resource.
      6c00a61e
  9. 04 2月, 2008 1 次提交
  10. 02 2月, 2008 1 次提交
  11. 30 1月, 2008 4 次提交
    • A
      x86: serverworks: IRQ routing needs no _p · c11b68bc
      Alan Cox 提交于
      I can find no reason for the _p on the serverworks IRQ routing logic, and
      a review of the documentation contains no indication that any such delay
      is needed so lets try this
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      c11b68bc
    • P
      x86: coding style fixes in arch/x86/pci/fixup.c · 938f6671
      Paolo Ciarrocchi 提交于
      Simple coding style fixes.
      
      no code changed:
      
         text    data     bss     dec     hex filename
         3139     576     194    3909     f45 fixup.o.before
         3139     576     194    3909     f45 fixup.o.after
      
        md5:
         9a3467057478b2d99962bdd448282eeb  fixup.o.before.asm
         9a3467057478b2d99962bdd448282eeb  fixup.o.after.asm
      Signed-off-by: NPaolo Ciarrocchi <paolo.ciarrocchi@gmail.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      938f6671
    • I
      x86: add some pirq debugging · 7d409d60
      Ingo Molnar 提交于
      we use a few static mapping rules in our pirq routing functions,
      and for example regression f3ac8432 was due to the pirq
      being out of range of the remapping array. Put in a few
      WARN_ON_ONCE() lines so that we get notified about any such
      out-of-bound incidents.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      7d409d60
    • G
      PCI: remove default PCI expansion ROM memory allocation · 9f8dacca
      Gary Hade 提交于
      increasing number of PCI slots in large multi-node systems.  The kernel
      currently attempts by default to allocate memory for all PCI expansion
      ROMs so there has also been an increasing number of PCI memory
      allocation failures seen on these systems.  This occurs because the BIOS
      either (1) provides insufficient PCI memory resource for all the
      expansion ROMs or (2) provides adequate PCI memory resource for
      expansion ROMs but provides the space in kernel unexpected BIOS assigned
      P2P non-prefetch windows.
      
      The resulting PCI memory allocation failures may be benign when related
      to memory requests for expansion ROMs themselves but in some cases they
      can occur when attempting to allocate space for more critical BARs.
      This can happen when a successful expansion ROM allocation request
      consumes memory resource that was intended for a non-ROM BAR.  We have
      seen this happen during PCI hotplug of an adapter that contains a P2P
      bridge where successful memory allocation for an expansion ROM BAR on
      device behind the bridge consumed memory that was intended for a non-ROM
      BAR on the P2P bridge.  In all cases the allocation failure messages can
      be very confusing for users.
      
      This patch addresses the issue by changing the kernel default behavior
      so that expansion ROM memory allocations are no longer attempted by
      default when the BIOS has not assigned a specific address range to the
      expansion ROM BAR.  This was done by changing the 'pci=rom' boot option
      behavior for BIOS unassigned expansion ROMs to actually match it's
      current kernel-parameters.txt description which already implies "off" by
      default. Behavior for BIOS assigned expansion ROMs implemented in
      pcibios_assign_resources() [arch/x86/pci/i386.c] is unchanged.
      Signed-off-by: NGary Hade <garyhade@us.ibm.com>
      Cc: Greg KH <greg@kroah.com>
      Cc: Jan Beulich <jbeulich@novell.com>
      Acked-by: N"Jun'ichi Nomura" <j-nomura@ce.jp.nec.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      9f8dacca
  12. 27 11月, 2007 1 次提交
  13. 17 11月, 2007 2 次提交
    • Y
      x86: check boundary in count setup resource · 3d9befd2
      Yinghai Lu 提交于
      need to check info->res_num less than PCI_BUS_NUM_RESOURCES, so
      info->bus->resource[info->res_num] = res will not beyond of bus resource
      array when acpi returns too many resource entries.
      Signed-off-by: NYinghai Lu <yinghai.lu@sun.com>
      Cc: Greg Kroah-Hartman <gregkh@suse.de>
      Cc: Gary Hade <gary.hade@us.ibm.com>
      Cc: Len Brown <lenb@kernel.org>
      Cc: Ingo Molnar <mingo@elte.hu>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      3d9befd2
    • A
      x86: acpi_pciprobe_dmi_table[] must be __devinitdata · 55b8d50c
      Adrian Bunk 提交于
      This patch fixes the following section mismatches with CONFIG_HOTPLUG=n:
      
      <--  snip  -->
      
      ...
      WARNING: vmlinux.o(.data+0x23640): Section mismatch: reference to .init.text.20:can_skip_ioresource_align (between 'acpi_pciprobe_dmi_table' and 'pcibios_irq_mask')
      WARNING: vmlinux.o(.data+0x2366c): Section mismatch: reference to .init.text.20:can_skip_ioresource_align (between 'acpi_pciprobe_dmi_table' and 'pcibios_irq_mask')
      WARNING: vmlinux.o(.data+0x23698): Section mismatch: reference to .init.text.20:can_skip_ioresource_align (between 'acpi_pciprobe_dmi_table' and 'pcibios_irq_mask')
      ...
      
      <--  snip  -->
      Signed-off-by: NAdrian Bunk <bunk@kernel.org>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      55b8d50c
  14. 20 10月, 2007 1 次提交
  15. 18 10月, 2007 1 次提交
  16. 13 10月, 2007 8 次提交