1. 10 9月, 2009 4 次提交
    • T
      PCI: separate out pci_add_dynid() · 9dba910e
      Tejun Heo 提交于
      Separate out pci_add_dynid() from store_new_id() and export it so that
      in-kernel code can add PCI IDs dynamically.  As the function will be
      available regardless of HOTPLUG, put it and pull pci_free_dynids()
      outside of CONFIG_HOTPLUG.
      
      This will be used by pci-stub to initialize initial IDs via module
      param.
      
      While at it, remove bogus get_driver() failure check.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Acked-by: NGreg Kroah-Hartman <gregkh@suse.de>
      Reviewed-by: NGrant Grundler <grundler@parisc-linux.org>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      9dba910e
    • M
      PCI: support for PCI Express fundamental reset · 260d703a
      Mike Mason 提交于
      This is the first of three patches that implement a bit field that PCI
      Express device drivers can use to indicate they need a fundamental reset
      during error recovery.
      
      By default, the EEH framework on powerpc does what's known as a "hot
      reset" during recovery of a PCI Express device.  We've found a case
      where the device needs a "fundamental reset" to recover properly.  The
      current PCI error recovery and EEH frameworks do not support this
      distinction.
      
      The attached patch (courtesy of Richard Lary) adds a bit field to
      pci_dev that indicates whether the device requires a fundamental reset
      during recovery.
      
      These patches supersede the previously submitted patch that implemented
      a fundamental reset bit field.
      Signed-off-by: NMike Mason <mmlnx@us.ibm.com>
      Signed-off-by: NRichard Lary <rlary@us.ibm.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      260d703a
    • B
      PCI/GPU: implement VGA arbitration on Linux · deb2d2ec
      Benjamin Herrenschmidt 提交于
      Background:
      Graphic devices are accessed through ranges in I/O or memory space. While most
      modern devices allow relocation of such ranges, some "Legacy" VGA devices
      implemented on PCI will typically have the same "hard-decoded" addresses as
      they did on ISA. For more details see "PCI Bus Binding to IEEE Std 1275-1994
      Standard for Boot (Initialization Configuration) Firmware Revision 2.1"
      Section 7, Legacy Devices.
      
      The Resource Access Control (RAC) module inside the X server currently does
      the task of arbitration when more than one legacy device co-exists on the same
      machine. But the problem happens when these devices are trying to be accessed
      by different userspace clients (e.g. two server in parallel). Their address
      assignments conflict. Therefore an arbitration scheme _outside_ of the X
      server is needed to control the sharing of these resources. This document
      introduces the operation of the VGA arbiter implemented for Linux kernel.
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NTiago Vignatti <tiago.vignatti@nokia.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      deb2d2ec
    • M
      PCI: expose function reset capability in sysfs · 711d5779
      Michael S. Tsirkin 提交于
      Some devices allow an individual function to be reset without affecting
      other functions in the same device: that's what pci_reset_function does.
      For devices that have this support, expose reset attribite in sysfs.
      
      This is useful e.g. for virtualization, where a qemu userspace
      process wants to reset the device when the guest is reset,
      to emulate machine reboot as closely as possible.
      Acked-by: NGreg Kroah-Hartman <gregkh@suse.de>
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      711d5779
  2. 30 6月, 2009 1 次提交
  3. 17 6月, 2009 5 次提交
  4. 16 6月, 2009 1 次提交
  5. 12 6月, 2009 3 次提交
  6. 18 5月, 2009 1 次提交
  7. 07 4月, 2009 1 次提交
    • Y
      PCI: Setup disabled bridges even if buses are added · 296ccb08
      Yuji Shimada 提交于
      This patch sets up disabled bridges even if buses have already been
      added.
      
      pci_assign_unassigned_resources is called after buses are added.
      pci_assign_unassigned_resources calls pci_bus_assign_resources.
      pci_bus_assign_resources calls pci_setup_bridge to configure BARs of
      bridges.
      
      Currently pci_setup_bridge returns immediately if the bus have already
      been added. So pci_assign_unassigned_resources can't configure BARs of
      bridges that were added in a disabled state; this patch fixes the issue.
      
      On logical hot-add, we need to prevent the kernel from re-initializing
      bridges that have already been initialized. To achieve this,
      pci_setup_bridge returns immediately if the bridge have already been
      enabled.
      
      We don't need to check whether the specified bus is a root bus or not.
      pci_setup_bridge is not called on a root bus, because a root bus does
      not have a bridge.
      
      The patch adds a new helper function, pci_is_enabled. I made the
      function name similar to pci_is_managed. The codes which use
      enable_cnt directly are changed to use pci_is_enabled.
      Acked-by: NAlex Chiang <achiang@hp.com>
      Signed-off-by: NYuji Shimada <shimada-yxb@necst.nec.co.jp>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      296ccb08
  8. 31 3月, 2009 1 次提交
  9. 21 3月, 2009 6 次提交
  10. 20 3月, 2009 3 次提交
  11. 05 2月, 2009 1 次提交
  12. 17 1月, 2009 1 次提交
    • R
      PCI PM: Restore standard config registers of all devices early · aa8c6c93
      Rafael J. Wysocki 提交于
      There is a problem in our handling of suspend-resume of PCI devices that
      many of them have their standard config registers restored with
      interrupts enabled and they are put into the full power state with
      interrupts enabled as well.  This may lead to the following scenario:
        * an interrupt vector is shared between two or more devices
        * one device is resumed earlier and generates an interrupt
        * the interrupt handler of another device tries to handle it and
          attempts to access the device the config space of which hasn't been
          restored yet and/or which still is in a low power state
        * the system crashes as a result
      
      To prevent this from happening we should restore the standard
      configuration registers of all devices with interrupts disabled and we
      should put them into the D0 power state right after that.
      Unfortunately, this cannot be done using the existing
      pci_set_power_state(), because it can sleep.  Also, to do it we have to
      make sure that the config spaces of all devices were actually saved
      during suspend.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Acked-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      aa8c6c93
  13. 08 1月, 2009 12 次提交