1. 10 9月, 2009 2 次提交
    • 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 13 次提交
  14. 07 1月, 2009 1 次提交
    • R
      PM: Simplify the new suspend/hibernation framework for devices · adf09493
      Rafael J. Wysocki 提交于
      PM: Simplify the new suspend/hibernation framework for devices
      
      Following the discussion at the Kernel Summit, simplify the new
      device PM framework by merging 'struct pm_ops' and
      'struct pm_ext_ops' and removing pointers to 'struct pm_ext_ops'
      from 'struct platform_driver' and 'struct pci_driver'.
      
      After this change, the suspend/hibernation callbacks will only
      reside in 'struct device_driver' as well as at the bus type/
      device class/device type level.  Accordingly, PCI and platform
      device drivers are now expected to put their suspend/hibernation
      callbacks into the 'struct device_driver' embedded in
      'struct pci_driver' or 'struct platform_driver', respectively.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Acked-by: NPavel Machek <pavel@suse.cz>
      Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      adf09493