lkml.org 
[lkml]   [2010]   [Aug]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 15/20] x86: Copy-n-paste arch_teardown_msi_irqs from msi.c to io_apic.c.
    Date
    In preparation for non-privileged domains to disable PCI devices'
    MSI/MSIx, we need to augment arch_teardown_msi_irqs to make
    a call to the privileged domain (patch to follow).

    Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: x86@kernel.org
    Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
    ---
    arch/x86/include/asm/pci.h | 1 +
    arch/x86/kernel/apic/io_apic.c | 14 ++++++++++++++
    2 files changed, 15 insertions(+), 0 deletions(-)

    diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h
    index 404a880..bcf84e1 100644
    --- a/arch/x86/include/asm/pci.h
    +++ b/arch/x86/include/asm/pci.h
    @@ -94,6 +94,7 @@ extern void pci_iommu_alloc(void);

    /* MSI arch hook */
    #define arch_setup_msi_irqs arch_setup_msi_irqs
    +#define arch_teardown_msi_irqs arch_teardown_msi_irqs

    #define PCI_DMA_BUS_IS_PHYS (dma_ops->is_phys)

    diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
    index 8353c40..a8d069e 100644
    --- a/arch/x86/kernel/apic/io_apic.c
    +++ b/arch/x86/kernel/apic/io_apic.c
    @@ -3597,6 +3597,20 @@ void arch_teardown_msi_irq(unsigned int irq)
    destroy_irq(irq);
    }

    +void arch_teardown_msi_irqs(struct pci_dev *dev)
    +{
    + struct msi_desc *entry;
    +
    + list_for_each_entry(entry, &dev->msi_list, list) {
    + int i, nvec;
    + if (entry->irq == 0)
    + continue;
    + nvec = 1 << entry->msi_attrib.multiple;
    + for (i = 0; i < nvec; i++)
    + arch_teardown_msi_irq(entry->irq + i);
    + }
    +}
    +
    #if defined (CONFIG_DMAR) || defined (CONFIG_INTR_REMAP)
    #ifdef CONFIG_SMP
    static int dmar_msi_set_affinity(unsigned int irq, const struct cpumask *mask)
    --
    1.7.0.1


    \
     
     \ /
      Last update: 2010-08-04 20:25    [W:0.025 / U:0.212 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site