04 Jun, 2013

1 commit

  • Current multiple-MSI implementation does not take into account actual
    number of requested MSIs and always rounds that number to a larger
    power-of-two value. Yet, the number of MSIs a PCI device could send (and
    therefore the number of messages a device driver could request) may be
    smaller. As result, resources allocated for extra MSIs are just wasted.

    This update takes advantage of 'msi_desc::nvec_used' field introduced with
    generic MSI code to track the number of requested and used MSIs. As
    result, resources associated with interrupts are conserved. Of those
    resources most noticeable are x86 interrupt vectors.

    The initial version of this fix also conserved IRTEs, but Jan noticed that
    a malfunctioning PCI device might send a message number it did not claim
    and thus refer to an IRTE it does not own. To avoid this security hole,
    as many IRTEs are reserved as the device could possibly send.

    [bhelgaas: changelog, rename to "nvec_used"]
    Signed-off-by: Alexander Gordeev
    Signed-off-by: Bjorn Helgaas

    Alexander Gordeev
     

02 May, 2013

1 commit


18 Apr, 2013

1 commit

  • A few years back intel published a spec update:
    http://www.intel.com/content/dam/doc/specification-update/5520-and-5500-chipset-ioh-specification-update.pdf

    For the 5520 and 5500 chipsets which contained an errata (specificially errata
    53), which noted that these chipsets can't properly do interrupt remapping, and
    as a result the recommend that interrupt remapping be disabled in bios. While
    many vendors have a bios update to do exactly that, not all do, and of course
    not all users update their bios to a level that corrects the problem. As a
    result, occasionally interrupts can arrive at a cpu even after affinity for that
    interrupt has be moved, leading to lost or spurrious interrupts (usually
    characterized by the message:
    kernel: do_IRQ: 7.71 No irq handler for vector (irq -1)

    There have been several incidents recently of people seeing this error, and
    investigation has shown that they have system for which their BIOS level is such
    that this feature was not properly turned off. As such, it would be good to
    give them a reminder that their systems are vulnurable to this problem. For
    details of those that reported the problem, please see:
    https://bugzilla.redhat.com/show_bug.cgi?id=887006

    [ Joerg: Removed CONFIG_IRQ_REMAP ifdef from early-quirks.c ]

    Signed-off-by: Neil Horman
    CC: Prarit Bhargava
    CC: Don Zickus
    CC: Don Dutile
    CC: Bjorn Helgaas
    CC: Asit Mallick
    CC: David Woodhouse
    CC: linux-pci@vger.kernel.org
    CC: Joerg Roedel
    CC: Konrad Rzeszutek Wilk
    CC: Arkadiusz Miśkiewicz
    Signed-off-by: Joerg Roedel

    Neil Horman
     

26 Mar, 2013

1 commit


28 Jan, 2013

13 commits


28 Sep, 2012

1 commit


25 Jul, 2012

1 commit

  • Pull IOMMU updates from Joerg Roedel:
    "The most important part of these updates is the IOMMU groups code
    enhancement written by Alex Williamson. It abstracts the problem that
    a given hardware IOMMU can't isolate any given device from any other
    device (e.g. 32 bit PCI devices can't usually be isolated). Devices
    that can't be isolated are grouped together. This code is required
    for the upcoming VFIO framework.

    Another IOMMU-API change written by me is the introduction of domain
    attributes. This makes it easier to handle GART-like IOMMUs with the
    IOMMU-API because now the start-address and the size of the domain
    address space can be queried.

    Besides that there are a few cleanups and fixes for the NVidia Tegra
    IOMMU drivers and the reworked init-code for the AMD IOMMU. The
    latter is from my patch-set to support interrupt remapping. The rest
    of this patch-set requires x86 changes which are not mergabe yet. So
    full support for interrupt remapping with AMD IOMMUs will come in a
    future merge window."

    * tag 'iommu-updates-v3.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: (33 commits)
    iommu/amd: Fix hotplug with iommu=pt
    iommu/amd: Add missing spin_lock initialization
    iommu/amd: Convert iommu initialization to state machine
    iommu/amd: Introduce amd_iommu_init_dma routine
    iommu/amd: Move unmap_flush message to amd_iommu_init_dma_ops()
    iommu/amd: Split enable_iommus() routine
    iommu/amd: Introduce early_amd_iommu_init routine
    iommu/amd: Move informational prinks out of iommu_enable
    iommu/amd: Split out PCI related parts of IOMMU initialization
    iommu/amd: Use acpi_get_table instead of acpi_table_parse
    iommu/amd: Fix sparse warnings
    iommu/tegra: Don't call alloc_pdir with as->lock
    iommu/tegra: smmu: Fix unsleepable memory allocation at alloc_pdir()
    iommu/tegra: smmu: Remove unnecessary sanity check at alloc_pdir()
    iommu/exynos: Implement DOMAIN_ATTR_GEOMETRY attribute
    iommu/tegra: Implement DOMAIN_ATTR_GEOMETRY attribute
    iommu/msm: Implement DOMAIN_ATTR_GEOMETRY attribute
    iommu/omap: Implement DOMAIN_ATTR_GEOMETRY attribute
    iommu/vt-d: Implement DOMAIN_ATTR_GEOMETRY attribute
    iommu/amd: Implement DOMAIN_ATTR_GEOMETRY attribute
    ...

    Linus Torvalds
     

17 Jul, 2012

1 commit


15 Jun, 2012

1 commit

  • Move the ->irq_set_affinity() routines out of the #ifdef CONFIG_SMP
    sections and use config_enabled(CONFIG_SMP) checks inside those
    routines. Thus making those routines simple null stubs for
    !CONFIG_SMP and retaining those routines with no additional
    runtime overhead for CONFIG_SMP kernels.

    Cleans up the ifdef CONFIG_SMP in and around routines related to
    irq_set_affinity in io_apic and irq_remapping subsystems.

    Signed-off-by: Suresh Siddha
    Cc: torvalds@linux-foundation.org
    Cc: joerg.roedel@amd.com
    Cc: Sam Ravnborg
    Cc: Paul Gortmaker
    Link: http://lkml.kernel.org/r/1339723729.3475.63.camel@sbsiddha-desk.sc.intel.com
    Signed-off-by: Ingo Molnar

    Suresh Siddha
     

08 May, 2012

1 commit

  • Fix the below UP build failure with CONFIG_IRQ_REMAP enabled.

    drivers/iommu/intel_irq_remapping.c:955:19: error: ‘struct irq_data’ has no member named ‘affinity’

    Reported-by: Ingo Molnar
    Signed-off-by: Suresh Siddha
    Cc: joro@8bytes.org
    Cc: iommu@lists.linux-foundation.org
    Cc: Joerg Roedel
    Link: http://lkml.kernel.org/r/1336460934-23592-2-git-send-email-suresh.b.siddha@intel.com
    Signed-off-by: Ingo Molnar

    Suresh Siddha
     

07 May, 2012

1 commit