1. 05 2月, 2015 1 次提交
    • J
      x86/PCI: Refine the way to release PCI IRQ resources · b4b55cda
      Jiang Liu 提交于
      Some PCI device drivers assume that pci_dev->irq won't change after
      calling pci_disable_device() and pci_enable_device() during suspend and
      resume.
      
      Commit c03b3b07 ("x86, irq, mpparse: Release IOAPIC pin when
      PCI device is disabled") frees PCI IRQ resources when pci_disable_device()
      is called and reallocate IRQ resources when pci_enable_device() is
      called again. This breaks above assumption. So commit 3eec5952
      ("x86, irq, PCI: Keep IRQ assignment for PCI devices during
      suspend/hibernation") and 9eabc99a ("x86, irq, PCI: Keep IRQ
      assignment for runtime power management") fix the issue by avoiding
      freeing/reallocating IRQ resources during PCI device suspend/resume.
      They achieve this by checking dev.power.is_prepared and
      dev.power.runtime_status.  PM maintainer, Rafael, then pointed out that
      it's really an ugly fix which leaking PM internal state information to
      IRQ subsystem.
      
      Recently David Vrabel <david.vrabel@citrix.com> also reports an
      regression in pciback driver caused by commit cffe0a2b ("x86, irq:
      Keep balance of IOAPIC pin reference count"). Please refer to:
      http://lkml.org/lkml/2015/1/14/546
      
      So this patch refine the way to release PCI IRQ resources. Instead of
      releasing PCI IRQ resources in pci_disable_device()/
      pcibios_disable_device(), we now release it at driver unbinding
      notification BUS_NOTIFY_UNBOUND_DRIVER. In other word, we only release
      PCI IRQ resources when there's no driver bound to the PCI device, and
      it keeps the assumption that pci_dev->irq won't through multiple
      invocation of pci_enable_device()/pci_disable_device().
      Signed-off-by: NJiang Liu <jiang.liu@linux.intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      b4b55cda
  2. 16 12月, 2014 1 次提交
  3. 04 1月, 2013 2 次提交
    • G
      X86: drivers: remove __dev* attributes. · a18e3690
      Greg Kroah-Hartman 提交于
      CONFIG_HOTPLUG is going away as an option.  As a result, the __dev*
      markings need to be removed.
      
      This change removes the use of __devinit, __devexit_p, __devinitconst,
      and __devexit from these drivers.
      
      Based on patches originally written by Bill Pemberton, but redone by me
      in order to handle some of the coding style issues better, by hand.
      
      Cc: Bill Pemberton <wfp5p@virginia.edu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Daniel Drake <dsd@laptop.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a18e3690
    • B
      x86/PCI: Remove unused pci_root_bus · b7869ba1
      Bjorn Helgaas 提交于
      pci_root_bus is unused, so remove all references to it.
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      b7869ba1
  4. 23 6月, 2012 3 次提交
  5. 06 6月, 2012 1 次提交
  6. 07 1月, 2012 1 次提交
    • M
      PCI: Pull PCI 'latency timer' setup up into the core · 96c55900
      Myron Stowe 提交于
      The 'latency timer' of PCI devices, both Type 0 and Type 1,
      is setup in architecture-specific code [see: 'pcibios_set_master()'].
      There are two approaches being taken by all the architectures - check
      if the 'latency timer' is currently set between 16 and 255 and if not
      bring it within bounds, or, do nothing (and then there is the
      gratuitously different PA-RISC implementation).
      
      There is nothing architecture-specific about PCI's 'latency timer' so
      this patch pulls its setup functionality up into the PCI core by
      creating a generic 'pcibios_set_master()' function using the '__weak'
      attribute which can be used by all architectures as a default which,
      if necessary, can then be over-ridden by architecture-specific code.
      
      No functional change.
      Signed-off-by: NMyron Stowe <myron.stowe@redhat.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      96c55900
  7. 15 10月, 2011 1 次提交
  8. 18 10月, 2010 1 次提交
  9. 31 7月, 2010 1 次提交
    • M
      x86/PCI: Add option to not assign BAR's if not already assigned · 7bd1c365
      Mike Habeck 提交于
      The Linux kernel assigns BARs that a BIOS did not assign, most likely
      to handle broken BIOSes that didn't enumerate the devices correctly.
      On UV the BIOS purposely doesn't assign I/O BARs for certain devices/
      drivers we know don't use them (examples, LSI SAS, Qlogic FC, ...).
      We purposely don't assign these I/O BARs because I/O Space is a very
      limited resource.  There is only 64k of I/O Space, and in a PCIe
      topology that space gets divided up into 4k chucks (this is due to
      the fact that a pci-to-pci bridge's I/O decoder is aligned at 4k)...
      Thus a system can have at most 16 cards with I/O BARs: (64k / 4k = 16)
      
      SGI needs to scale to >16 devices with I/O BARs.  So by not assigning
      I/O BARs on devices we know don't use them, we can do that (iff the
      kernel doesn't go and assign these BARs that the BIOS purposely didn't
      assign).
      
      This patch will not assign a resource to a device BAR if that BAR was
      not assigned by the BIOS, and the kernel cmdline option 'pci=nobar'
      was specified.   This patch is closely modeled after the 'pci=norom'
      option that currently exists in the tree.
      Signed-off-by: NMike Habeck <habeck@sgi.com>
      Signed-off-by: NMike Travis <travis@sgi.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      7bd1c365
  10. 12 5月, 2010 1 次提交
  11. 10 5月, 2010 1 次提交
  12. 26 2月, 2010 1 次提交
  13. 24 2月, 2010 1 次提交
  14. 20 2月, 2010 3 次提交
  15. 25 11月, 2009 7 次提交
  16. 25 6月, 2009 1 次提交
  17. 13 6月, 2009 1 次提交
  18. 12 6月, 2009 1 次提交
  19. 30 12月, 2008 1 次提交
  20. 12 11月, 2008 1 次提交
    • H
      x86: attempt reboot via port CF9 if we have standard PCI ports · 14d7ca5c
      H. Peter Anvin 提交于
      Impact: Changes reboot behavior.
      
      If port CF9 seems to be safe to touch, attempt it before trying the
      keyboard controller.  Port CF9 is not available on all chipsets (a
      significant but decreasing number of modern chipsets don't implement
      it), but port CF9 itself should in general be safe to poke (no ill
      effects if unimplemented) on any system which has PCI Configuration
      Method #1 or #2, as it falls inside the PCI configuration port range
      in both cases.  No chipset without PCI is known to have port CF9,
      either, although an explicit "pci=bios" would mean we miss this and
      therefore don't use port CF9.  An explicit "reboot=pci" can be used to
      force the use of port CF9.
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      14d7ca5c
  21. 12 7月, 2008 2 次提交
  22. 11 7月, 2008 1 次提交
  23. 09 7月, 2008 1 次提交
    • R
      x86/pci: removing subsys_initcall ordering dependencies · 8dd779b1
      Robert Richter 提交于
      So far subsys_initcalls has been executed in this order depending on
      the object order in the Makefile:
      
      arch/x86/pci/visws.c:subsys_initcall(pcibios_init);
      arch/x86/pci/numa.c:subsys_initcall(pci_numa_init);
      arch/x86/pci/acpi.c:subsys_initcall(pci_acpi_init);
      arch/x86/pci/legacy.c:subsys_initcall(pci_legacy_init);
      arch/x86/pci/irq.c:subsys_initcall(pcibios_irq_init);
      arch/x86/pci/common.c:subsys_initcall(pcibios_init);
      
      This patch removes the ordering dependency. There is now only one
      subsys_initcall function that contains subsystem initialization code
      with a defined order.
      Signed-off-by: NRobert Richter <robert.richter@amd.com>
      Acked-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      8dd779b1
  24. 08 7月, 2008 1 次提交
  25. 11 6月, 2008 1 次提交
    • G
      PCI: boot parameter to avoid expansion ROM memory allocation · bb71ad88
      Gary Hade 提交于
      Contention for scarce PCI memory resources has been growing
      due to an 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 provides a new 'pci=norom' kernel boot parameter
      that can be used to disable the default PCI expansion ROM memory
      resource allocation.  This provides a way to avoid the above
      described issues on systems that do not contain PCI devices
      for which drivers or user-level applications depend on the
      default PCI expansion ROM memory resource allocation behavior.
      Signed-off-by: NGary Hade <garyhade@us.ibm.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      bb71ad88
  26. 06 6月, 2008 1 次提交
    • A
      PCI/x86: fix up PCI stuff so that PCI_GOANY supports OLPC · 2bdd1b03
      Andres Salomon 提交于
      Previously, one would have to specifically choose CONFIG_OLPC and
      CONFIG_PCI_GOOLPC in order to enable PCI_OLPC.  That doesn't really work
      for distro kernels, so this patch allows one to choose CONFIG_OLPC and
      CONFIG_PCI_GOANY in order to build in OLPC support in a generic kernel (as
      requested by Robert Millan).
      
      This also moves GOOLPC before GOANY in the menuconfig list.
      
      Finally, make pci_access_init return early if we detect OLPC hardware.
      There's no need to continue probing stuff, and pci_pcbios_init
      specifically trashes our settings (we didn't run into that before because
      PCI_GOANY wasn't supported).
      Signed-off-by: NAndres Salomon <dilinger@debian.org>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      2bdd1b03
  27. 06 5月, 2008 2 次提交