1. 07 5月, 2015 1 次提交
  2. 28 1月, 2015 1 次提交
    • Y
      PCI: Fail MSI-X mappings if there's no space assigned to MSI-X BAR · 6a878e50
      Yijing Wang 提交于
      Unlike MSI, which is configured via registers in the MSI capability in
      Configuration Space, MSI-X is configured via tables in Memory Space.
      These MSI-X tables are mapped by a device BAR, and if no Memory Space
      has been assigned to the BAR, MSI-X cannot be used.
      
      Fail MSI-X setup if no space has been assigned for the BAR.
      
      Previously, we ioremapped the MSI-X table even if the resource hadn't been
      assigned.  In this case, the resource address is undefined (and is often
      zero), which may lead to warnings or oopses in this path:
      
        pci_enable_msix
          msix_capability_init
            msix_map_region
              ioremap_nocache
      
      The PCI core sets resource flags to zero when it can't assign space for the
      resource (see reset_resource()).  There are also some cases where it sets
      the IORESOURCE_UNSET flag, e.g., pci_reassigndev_resource_alignment(),
      pci_assign_resource(), etc.  So we must check for both cases.
      
      [bhelgaas: changelog]
      Reported-by: NZhang Jukuo <zhangjukuo@huawei.com>
      Tested-by: NZhang Jukuo <zhangjukuo@huawei.com>
      Signed-off-by: NYijing Wang <wangyijing@huawei.com>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      6a878e50
  3. 24 11月, 2014 2 次提交
  4. 23 11月, 2014 9 次提交
  5. 12 11月, 2014 3 次提交
  6. 07 11月, 2014 1 次提交
    • Y
      PCI/MSI: Add pci_msi_ignore_mask to prevent writes to MSI/MSI-X Mask Bits · 38737d82
      Yijing Wang 提交于
      MSI-X vector Mask Bits are in MSI-X Tables in PCI memory space.  Xen PV
      guests can't write to those tables.  MSI vector Mask Bits are in PCI
      configuration space.  Xen PV guests can write to config space, but those
      writes are ignored.
      
      Commit 0e4ccb15 ("PCI: Add x86_msi.msi_mask_irq() and
      msix_mask_irq()") added a way to override default_mask_msi_irqs() and
      default_mask_msix_irqs() so they can be no-ops in Xen guests, but this is
      more complicated than necessary.
      
      Add "pci_msi_ignore_mask" in the core PCI MSI code.  If set,
      default_mask_msi_irqs() and default_mask_msix_irqs() return without doing
      anything.  This is less flexible, but much simpler.
      
      [bhelgaas: changelog]
      Signed-off-by: NYijing Wang <wangyijing@huawei.com>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      Reviewed-by: NDavid Vrabel <david.vrabel@citrix.com>
      CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      CC: xen-devel@lists.xenproject.org
      38737d82
  7. 02 10月, 2014 7 次提交
  8. 30 9月, 2014 1 次提交
  9. 17 7月, 2014 5 次提交
  10. 04 7月, 2014 3 次提交
  11. 12 6月, 2014 1 次提交
  12. 11 6月, 2014 1 次提交
  13. 01 5月, 2014 1 次提交
    • A
      PCI/MSI: Remove pci_enable_msi_block() · 034cd97e
      Alexander Gordeev 提交于
      There are no users of pci_enable_msi_block() function left.  Obsolete it in
      favor of pci_enable_msi_range() and pci_enable_msi_exact() functions.
      
      Previously, we called arch_setup_msi_irqs() once, requesting the same
      vector count we passed to arch_msi_check_device().  Now we may call it
      several times: if it returns failure, we may retry and request fewer
      vectors.
      
      We don't keep track of the vector count we initially passed to
      arch_msi_check_device().  We only keep track of the number of vectors
      successfully set up by arch_setup_msi_irqs(), and this is what we use to
      clean things up when disabling MSI.  Therefore, we assume that
      arch_msi_check_device() does nothing that will have to be cleaned up later.
      
      [bhelgaas: changelog]
      Signed-off-by: NAlexander Gordeev <agordeev@redhat.com>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      034cd97e
  14. 15 4月, 2014 2 次提交
  15. 14 2月, 2014 2 次提交