From: Konrad Rzeszutek Wilk <konrad.wilk-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
To: Joerg Roedel <joerg.roedel-5C7GfCeVMHo@public.gmane.org>
Cc: iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH 08/16] iommu/amd: Add routines to manage irq remapping tables
Date: Fri, 28 Sep 2012 10:40:13 -0400 [thread overview]
Message-ID: <20120928144011.GF7483@localhost.localdomain> (raw)
In-Reply-To: <1348835046-3262-9-git-send-email-joerg.roedel-5C7GfCeVMHo@public.gmane.org>
On Fri, Sep 28, 2012 at 02:23:58PM +0200, Joerg Roedel wrote:
> Add routines to:
>
> * Alloc remapping tables and single entries from these
> tables
> * Change entries in the tables
> * Free entries in the table
>
> Signed-off-by: Joerg Roedel <joerg.roedel-5C7GfCeVMHo@public.gmane.org>
> ---
> drivers/iommu/amd_iommu.c | 228 +++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 228 insertions(+)
>
> diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
> index a2c1f7a..bd277924 100644
> --- a/drivers/iommu/amd_iommu.c
> +++ b/drivers/iommu/amd_iommu.c
> @@ -31,6 +31,12 @@
> #include <linux/amd-iommu.h>
> #include <linux/notifier.h>
> #include <linux/export.h>
> +#include <linux/irq.h>
> +#include <linux/msi.h>
> +#include <asm/irq_remapping.h>
> +#include <asm/io_apic.h>
> +#include <asm/apic.h>
> +#include <asm/hw_irq.h>
> #include <asm/msidef.h>
> #include <asm/proto.h>
> #include <asm/iommu.h>
> @@ -3773,3 +3779,225 @@ int amd_iommu_device_info(struct pci_dev *pdev,
> return 0;
> }
> EXPORT_SYMBOL(amd_iommu_device_info);
> +
> +#ifdef CONFIG_IRQ_REMAP
> +
> +/*****************************************************************************
> + *
> + * Interrupt Remapping Implementation
> + *
> + *****************************************************************************/
> +
> +union irte {
> + u32 val;
> + struct {
> + u32 valid : 1,
> + no_fault : 1,
> + int_type : 3,
> + rq_eoi : 1,
> + dm : 1,
> + rsvd_1 : 1,
> + destination : 8,
> + vector : 8,
> + rsvd_2 : 8;
> + } fields;
> +};
> +
> +#define DTE_IRQ_PHYS_ADDR_MASK (((1ULL << 45)-1) << 6)
> +#define DTE_IRQ_REMAP_INTCTL (2ULL << 60)
> +#define DTE_IRQ_TABLE_LEN (8ULL << 1)
> +#define DTE_IRQ_REMAP_ENABLE 1ULL
> +
> +static void set_dte_irq_entry(u16 devid, struct irq_remap_table *table)
> +{
> + u64 dte;
> +
> + dte = amd_iommu_dev_table[devid].data[2];
> + dte &= ~DTE_IRQ_PHYS_ADDR_MASK;
> + dte |= virt_to_phys(table->table);
> + dte |= DTE_IRQ_REMAP_INTCTL;
> + dte |= DTE_IRQ_TABLE_LEN;
> + dte |= DTE_IRQ_REMAP_ENABLE;
> +
> + amd_iommu_dev_table[devid].data[2] = dte;
> +}
> +
> +#define IRTE_ALLOCATED (~1U)
> +
> +static struct irq_remap_table *get_irq_table(u16 devid, bool ioapic)
> +{
> + struct irq_remap_table *table = NULL;
> + struct amd_iommu *iommu;
> + unsigned long flags;
> + u16 alias;
> +
> + write_lock_irqsave(&amd_iommu_devtable_lock, flags);
> +
> + iommu = amd_iommu_rlookup_table[devid];
> + if (!iommu)
> + goto out_unlock;
> +
> + table = irq_lookup_table[devid];
> + if (table)
> + goto out;
> +
> + alias = amd_iommu_alias_table[devid];
> + table = irq_lookup_table[alias];
> + if (table) {
> + irq_lookup_table[devid] = table;
> + set_dte_irq_entry(devid, table);
> + iommu_flush_dte(iommu, devid);
> + goto out;
> + }
> +
> + /* Nothing there yet, allocate new irq remapping table */
> + table = kzalloc(sizeof(*table), GFP_ATOMIC);
> + if (!table)
> + goto out;
> +
> + if (ioapic)
> + /* Keep the first 32 indexes free for IOAPIC interrupts */
> + table->min_index = 32;
> +
> + table->table = kmem_cache_alloc(amd_iommu_irq_cache, GFP_ATOMIC);
> + if (!table->table) {
> + kfree(table);
> + goto out;
> + }
> +
> + memset(table->table, 0, MAX_IRQS_PER_TABLE * sizeof(u32));
> +
> + if (ioapic) {
> + int i;
> +
> + for (i = 0; i < 32; ++i)
> + table->table[i] = IRTE_ALLOCATED;
> + }
> +
> + irq_lookup_table[devid] = table;
> + set_dte_irq_entry(devid, table);
> + iommu_flush_dte(iommu, devid);
> + if (devid != alias) {
> + irq_lookup_table[alias] = table;
> + set_dte_irq_entry(devid, table);
> + iommu_flush_dte(iommu, alias);
> + }
> +
> +out:
> + iommu_completion_wait(iommu);
> +
> +out_unlock:
> + write_unlock_irqrestore(&amd_iommu_devtable_lock, flags);
> +
> + return table;
> +}
> +
> +static int alloc_irq_index(struct irq_cfg *cfg, u16 devid, int count)
> +{
> + struct irq_remap_table *table;
> + unsigned long flags;
> + int index, c;
> +
> + table = get_irq_table(devid, false);
> + if (!table)
> + return -ENODEV;
> +
> + spin_lock_irqsave(&table->lock, flags);
> +
> + /* Scan table for free entries */
> + for (c = 0, index = table->min_index;
> + index < MAX_IRQS_PER_TABLE;
> + ++index) {
> + if (table->table[index] == 0)
> + c += 1;
> + else
> + c = 0;
> +
> + if (c == count) {
> + struct irq_2_iommu *irte_info;
> +
> + for (; c != 0; --c)
> + table->table[index - c + 1] = IRTE_ALLOCATED;
> +
> + index -= count - 1;
> +
> + irte_info = &cfg->irq_2_iommu;
> + irte_info->sub_handle = devid;
> + irte_info->irte_index = index;
Should the irte_info also contain the count information to know how
whether the table->table[index] (which would be IRTE_ALLOCATED at
this point) is owned by correct irte_info ?
> + irte_info->iommu = (void *)cfg;
> +
> + goto out;
> + }
> + }
> +
> + index = -ENOSPC;
> +
> +out:
> + spin_unlock_irqrestore(&table->lock, flags);
> +
> + return index;
> +}
> +
> +static int get_irte(u16 devid, int index, union irte *irte)
> +{
> + struct irq_remap_table *table;
> + unsigned long flags;
> +
> + table = get_irq_table(devid, false);
> + if (!table)
> + return -ENOMEM;
> +
> + spin_lock_irqsave(&table->lock, flags);
> + irte->val = table->table[index];
> + spin_unlock_irqrestore(&table->lock, flags);
> +
> + return 0;
> +}
> +
> +static int modify_irte(u16 devid, int index, union irte irte)
> +{
> + struct irq_remap_table *table;
> + struct amd_iommu *iommu;
> + unsigned long flags;
> +
> + iommu = amd_iommu_rlookup_table[devid];
> + if (iommu == NULL)
> + return -EINVAL;
> +
> + table = get_irq_table(devid, false);
> + if (!table)
> + return -ENOMEM;
> +
> + spin_lock_irqsave(&table->lock, flags);
> + table->table[index] = irte.val;
> + spin_unlock_irqrestore(&table->lock, flags);
> +
> + iommu_flush_irt(iommu, devid);
> + iommu_completion_wait(iommu);
> +
> + return 0;
> +}
> +
> +static void free_irte(u16 devid, int index)
> +{
> + struct irq_remap_table *table;
> + struct amd_iommu *iommu;
> + unsigned long flags;
> +
> + iommu = amd_iommu_rlookup_table[devid];
> + if (iommu == NULL)
> + return;
> +
> + table = get_irq_table(devid, false);
> + if (!table)
> + return;
> +
> + spin_lock_irqsave(&table->lock, flags);
> + table->table[index] = 0;
> + spin_unlock_irqrestore(&table->lock, flags);
> +
> + iommu_flush_irt(iommu, devid);
> + iommu_completion_wait(iommu);
> +}
> +
> +#endif
> --
> 1.7.9.5
>
>
> _______________________________________________
> iommu mailing list
> iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org
> https://lists.linuxfoundation.org/mailman/listinfo/iommu
WARNING: multiple messages have this Message-ID (diff)
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Joerg Roedel <joerg.roedel@amd.com>
Cc: iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 08/16] iommu/amd: Add routines to manage irq remapping tables
Date: Fri, 28 Sep 2012 10:40:13 -0400 [thread overview]
Message-ID: <20120928144011.GF7483@localhost.localdomain> (raw)
In-Reply-To: <1348835046-3262-9-git-send-email-joerg.roedel@amd.com>
On Fri, Sep 28, 2012 at 02:23:58PM +0200, Joerg Roedel wrote:
> Add routines to:
>
> * Alloc remapping tables and single entries from these
> tables
> * Change entries in the tables
> * Free entries in the table
>
> Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
> ---
> drivers/iommu/amd_iommu.c | 228 +++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 228 insertions(+)
>
> diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
> index a2c1f7a..bd277924 100644
> --- a/drivers/iommu/amd_iommu.c
> +++ b/drivers/iommu/amd_iommu.c
> @@ -31,6 +31,12 @@
> #include <linux/amd-iommu.h>
> #include <linux/notifier.h>
> #include <linux/export.h>
> +#include <linux/irq.h>
> +#include <linux/msi.h>
> +#include <asm/irq_remapping.h>
> +#include <asm/io_apic.h>
> +#include <asm/apic.h>
> +#include <asm/hw_irq.h>
> #include <asm/msidef.h>
> #include <asm/proto.h>
> #include <asm/iommu.h>
> @@ -3773,3 +3779,225 @@ int amd_iommu_device_info(struct pci_dev *pdev,
> return 0;
> }
> EXPORT_SYMBOL(amd_iommu_device_info);
> +
> +#ifdef CONFIG_IRQ_REMAP
> +
> +/*****************************************************************************
> + *
> + * Interrupt Remapping Implementation
> + *
> + *****************************************************************************/
> +
> +union irte {
> + u32 val;
> + struct {
> + u32 valid : 1,
> + no_fault : 1,
> + int_type : 3,
> + rq_eoi : 1,
> + dm : 1,
> + rsvd_1 : 1,
> + destination : 8,
> + vector : 8,
> + rsvd_2 : 8;
> + } fields;
> +};
> +
> +#define DTE_IRQ_PHYS_ADDR_MASK (((1ULL << 45)-1) << 6)
> +#define DTE_IRQ_REMAP_INTCTL (2ULL << 60)
> +#define DTE_IRQ_TABLE_LEN (8ULL << 1)
> +#define DTE_IRQ_REMAP_ENABLE 1ULL
> +
> +static void set_dte_irq_entry(u16 devid, struct irq_remap_table *table)
> +{
> + u64 dte;
> +
> + dte = amd_iommu_dev_table[devid].data[2];
> + dte &= ~DTE_IRQ_PHYS_ADDR_MASK;
> + dte |= virt_to_phys(table->table);
> + dte |= DTE_IRQ_REMAP_INTCTL;
> + dte |= DTE_IRQ_TABLE_LEN;
> + dte |= DTE_IRQ_REMAP_ENABLE;
> +
> + amd_iommu_dev_table[devid].data[2] = dte;
> +}
> +
> +#define IRTE_ALLOCATED (~1U)
> +
> +static struct irq_remap_table *get_irq_table(u16 devid, bool ioapic)
> +{
> + struct irq_remap_table *table = NULL;
> + struct amd_iommu *iommu;
> + unsigned long flags;
> + u16 alias;
> +
> + write_lock_irqsave(&amd_iommu_devtable_lock, flags);
> +
> + iommu = amd_iommu_rlookup_table[devid];
> + if (!iommu)
> + goto out_unlock;
> +
> + table = irq_lookup_table[devid];
> + if (table)
> + goto out;
> +
> + alias = amd_iommu_alias_table[devid];
> + table = irq_lookup_table[alias];
> + if (table) {
> + irq_lookup_table[devid] = table;
> + set_dte_irq_entry(devid, table);
> + iommu_flush_dte(iommu, devid);
> + goto out;
> + }
> +
> + /* Nothing there yet, allocate new irq remapping table */
> + table = kzalloc(sizeof(*table), GFP_ATOMIC);
> + if (!table)
> + goto out;
> +
> + if (ioapic)
> + /* Keep the first 32 indexes free for IOAPIC interrupts */
> + table->min_index = 32;
> +
> + table->table = kmem_cache_alloc(amd_iommu_irq_cache, GFP_ATOMIC);
> + if (!table->table) {
> + kfree(table);
> + goto out;
> + }
> +
> + memset(table->table, 0, MAX_IRQS_PER_TABLE * sizeof(u32));
> +
> + if (ioapic) {
> + int i;
> +
> + for (i = 0; i < 32; ++i)
> + table->table[i] = IRTE_ALLOCATED;
> + }
> +
> + irq_lookup_table[devid] = table;
> + set_dte_irq_entry(devid, table);
> + iommu_flush_dte(iommu, devid);
> + if (devid != alias) {
> + irq_lookup_table[alias] = table;
> + set_dte_irq_entry(devid, table);
> + iommu_flush_dte(iommu, alias);
> + }
> +
> +out:
> + iommu_completion_wait(iommu);
> +
> +out_unlock:
> + write_unlock_irqrestore(&amd_iommu_devtable_lock, flags);
> +
> + return table;
> +}
> +
> +static int alloc_irq_index(struct irq_cfg *cfg, u16 devid, int count)
> +{
> + struct irq_remap_table *table;
> + unsigned long flags;
> + int index, c;
> +
> + table = get_irq_table(devid, false);
> + if (!table)
> + return -ENODEV;
> +
> + spin_lock_irqsave(&table->lock, flags);
> +
> + /* Scan table for free entries */
> + for (c = 0, index = table->min_index;
> + index < MAX_IRQS_PER_TABLE;
> + ++index) {
> + if (table->table[index] == 0)
> + c += 1;
> + else
> + c = 0;
> +
> + if (c == count) {
> + struct irq_2_iommu *irte_info;
> +
> + for (; c != 0; --c)
> + table->table[index - c + 1] = IRTE_ALLOCATED;
> +
> + index -= count - 1;
> +
> + irte_info = &cfg->irq_2_iommu;
> + irte_info->sub_handle = devid;
> + irte_info->irte_index = index;
Should the irte_info also contain the count information to know how
whether the table->table[index] (which would be IRTE_ALLOCATED at
this point) is owned by correct irte_info ?
> + irte_info->iommu = (void *)cfg;
> +
> + goto out;
> + }
> + }
> +
> + index = -ENOSPC;
> +
> +out:
> + spin_unlock_irqrestore(&table->lock, flags);
> +
> + return index;
> +}
> +
> +static int get_irte(u16 devid, int index, union irte *irte)
> +{
> + struct irq_remap_table *table;
> + unsigned long flags;
> +
> + table = get_irq_table(devid, false);
> + if (!table)
> + return -ENOMEM;
> +
> + spin_lock_irqsave(&table->lock, flags);
> + irte->val = table->table[index];
> + spin_unlock_irqrestore(&table->lock, flags);
> +
> + return 0;
> +}
> +
> +static int modify_irte(u16 devid, int index, union irte irte)
> +{
> + struct irq_remap_table *table;
> + struct amd_iommu *iommu;
> + unsigned long flags;
> +
> + iommu = amd_iommu_rlookup_table[devid];
> + if (iommu == NULL)
> + return -EINVAL;
> +
> + table = get_irq_table(devid, false);
> + if (!table)
> + return -ENOMEM;
> +
> + spin_lock_irqsave(&table->lock, flags);
> + table->table[index] = irte.val;
> + spin_unlock_irqrestore(&table->lock, flags);
> +
> + iommu_flush_irt(iommu, devid);
> + iommu_completion_wait(iommu);
> +
> + return 0;
> +}
> +
> +static void free_irte(u16 devid, int index)
> +{
> + struct irq_remap_table *table;
> + struct amd_iommu *iommu;
> + unsigned long flags;
> +
> + iommu = amd_iommu_rlookup_table[devid];
> + if (iommu == NULL)
> + return;
> +
> + table = get_irq_table(devid, false);
> + if (!table)
> + return;
> +
> + spin_lock_irqsave(&table->lock, flags);
> + table->table[index] = 0;
> + spin_unlock_irqrestore(&table->lock, flags);
> +
> + iommu_flush_irt(iommu, devid);
> + iommu_completion_wait(iommu);
> +}
> +
> +#endif
> --
> 1.7.9.5
>
>
> _______________________________________________
> iommu mailing list
> iommu@lists.linux-foundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/iommu
next prev parent reply other threads:[~2012-09-28 14:40 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-28 12:23 [PATCH 0/16] Interrupt remapping support for AMD IOMMU Joerg Roedel
2012-09-28 12:23 ` Joerg Roedel
[not found] ` <1348835046-3262-1-git-send-email-joerg.roedel-5C7GfCeVMHo@public.gmane.org>
2012-09-28 12:23 ` [PATCH 01/16] iommu/amd: Keep track of HPET and IOAPIC device ids Joerg Roedel
2012-09-28 12:23 ` Joerg Roedel
2012-09-28 14:08 ` Konrad Rzeszutek Wilk
[not found] ` <20120928140833.GB7483-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2012-09-28 14:35 ` Joerg Roedel
2012-09-28 14:35 ` Joerg Roedel
2012-09-28 12:23 ` [PATCH 02/16] iommu/amd: Add slab-cache for irq remapping tables Joerg Roedel
2012-09-28 12:23 ` Joerg Roedel
2012-09-28 12:23 ` [PATCH 03/16] iommu/amd: Allocate data structures to keep track of " Joerg Roedel
2012-09-28 12:23 ` Joerg Roedel
2012-09-28 22:57 ` Shuah Khan
2012-09-28 12:23 ` [PATCH 04/16] iommu/amd: Check if IOAPIC information is correct Joerg Roedel
2012-09-28 12:23 ` Joerg Roedel
[not found] ` <1348835046-3262-5-git-send-email-joerg.roedel-5C7GfCeVMHo@public.gmane.org>
2012-09-28 14:16 ` Konrad Rzeszutek Wilk
2012-09-28 14:16 ` Konrad Rzeszutek Wilk
[not found] ` <20120928141644.GC7483-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2012-09-28 14:37 ` Joerg Roedel
2012-09-28 14:37 ` Joerg Roedel
2012-09-28 12:23 ` [PATCH 05/16] iommu/amd: Split device table initialization into irq and dma part Joerg Roedel
2012-09-28 12:23 ` Joerg Roedel
[not found] ` <1348835046-3262-6-git-send-email-joerg.roedel-5C7GfCeVMHo@public.gmane.org>
2012-09-28 14:17 ` Konrad Rzeszutek Wilk
2012-09-28 14:17 ` Konrad Rzeszutek Wilk
[not found] ` <20120928141752.GD7483-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2012-09-28 14:25 ` Joerg Roedel
2012-09-28 14:25 ` Joerg Roedel
[not found] ` <20120928142555.GC4009-5C7GfCeVMHo@public.gmane.org>
2012-09-28 15:00 ` Konrad Rzeszutek Wilk
2012-09-28 15:00 ` Konrad Rzeszutek Wilk
[not found] ` <20120928150009.GI7483-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2012-09-28 14:59 ` Joerg Roedel
2012-09-28 14:59 ` Joerg Roedel
2012-09-28 12:23 ` [PATCH 06/16] iommu/amd: Make sure IOMMU is not considered to translate itself Joerg Roedel
2012-09-28 12:23 ` Joerg Roedel
2012-09-28 12:23 ` [PATCH 07/16] iommu/amd: Add IRTE invalidation routine Joerg Roedel
2012-09-28 12:23 ` Joerg Roedel
[not found] ` <1348835046-3262-8-git-send-email-joerg.roedel-5C7GfCeVMHo@public.gmane.org>
2012-09-28 14:20 ` Konrad Rzeszutek Wilk
2012-09-28 14:20 ` Konrad Rzeszutek Wilk
2012-09-28 15:36 ` Joerg Roedel
2012-09-28 15:36 ` Joerg Roedel
2012-09-28 12:23 ` [PATCH 08/16] iommu/amd: Add routines to manage irq remapping tables Joerg Roedel
2012-09-28 12:23 ` Joerg Roedel
[not found] ` <1348835046-3262-9-git-send-email-joerg.roedel-5C7GfCeVMHo@public.gmane.org>
2012-09-28 14:40 ` Konrad Rzeszutek Wilk [this message]
2012-09-28 14:40 ` Konrad Rzeszutek Wilk
[not found] ` <20120928144011.GF7483-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2012-09-28 15:01 ` Joerg Roedel
2012-09-28 15:01 ` Joerg Roedel
2012-09-28 12:23 ` [PATCH 09/16] iommu/amd: Add IOAPIC remapping routines Joerg Roedel
2012-09-28 12:23 ` Joerg Roedel
[not found] ` <1348835046-3262-10-git-send-email-joerg.roedel-5C7GfCeVMHo@public.gmane.org>
2012-09-28 14:45 ` Konrad Rzeszutek Wilk
2012-09-28 14:45 ` Konrad Rzeszutek Wilk
[not found] ` <6d716497-bcf6-4d71-88a3-6ec772a4d396@sausexedgep01.amd.com>
[not found] ` <6d716497-bcf6-4d71-88a3-6ec772a4d396-drQb3oNRF8yAbyOsnIB/ifZ4XP/Yx64J@public.gmane.org>
2012-10-01 8:40 ` Joerg Roedel
2012-10-01 8:40 ` Joerg Roedel
[not found] ` <20121001084051.GO4009-5C7GfCeVMHo@public.gmane.org>
2012-10-01 13:47 ` Konrad Rzeszutek Wilk
2012-10-01 13:47 ` Konrad Rzeszutek Wilk
[not found] ` <20121001134753.GF4099-6K5HmflnPlqSPmnEAIUT9EEOCMrvLtNR@public.gmane.org>
2012-10-01 16:33 ` Joerg Roedel
2012-10-01 16:33 ` Joerg Roedel
2012-10-01 16:34 ` Konrad Rzeszutek Wilk
2012-09-28 12:24 ` [PATCH 10/16] iommu/amd: Implement MSI routines for interrupt remapping Joerg Roedel
2012-09-28 12:24 ` Joerg Roedel
[not found] ` <1348835046-3262-11-git-send-email-joerg.roedel-5C7GfCeVMHo@public.gmane.org>
2012-09-28 14:49 ` Konrad Rzeszutek Wilk
2012-09-28 14:49 ` Konrad Rzeszutek Wilk
[not found] ` <20120928144933.GH7483-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2012-09-28 15:04 ` Joerg Roedel
2012-09-28 15:04 ` Joerg Roedel
2012-09-28 12:24 ` [PATCH 11/16] iommu/amd: Add call-back routine for HPET MSI Joerg Roedel
2012-09-28 12:24 ` Joerg Roedel
2012-09-28 12:24 ` [PATCH 12/16] iommu/amd: Add initialization routines for AMD interrupt remapping Joerg Roedel
2012-09-28 12:24 ` Joerg Roedel
2012-09-28 23:18 ` Shuah Khan
[not found] ` <CAKocOONojx7tvu6x+HV97Rae-KXA3hW65Ujmt2t7LCVs9oRpyw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-10-01 8:05 ` Joerg Roedel
2012-10-01 8:05 ` Joerg Roedel
2012-10-01 16:02 ` Shuah Khan
2012-09-28 12:24 ` [PATCH 13/16] iommu/amd: Make sure irq remapping still works on dma init failure Joerg Roedel
2012-09-28 12:24 ` Joerg Roedel
2012-09-28 12:24 ` [PATCH 14/16] iommu/irq: Use amd_iommu_irq_ops if supported Joerg Roedel
2012-09-28 12:24 ` Joerg Roedel
2012-09-28 23:39 ` Shuah Khan
[not found] ` <CAKocOONaiMJs7pWeWxO=_bN5_KU=jZh=kvL7U_v-w9LmSrQ+Fw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-10-01 8:08 ` Joerg Roedel
2012-10-01 8:08 ` Joerg Roedel
2012-10-01 16:04 ` Shuah Khan
2012-09-28 12:24 ` [PATCH 15/16] iommu/amd: Print message to system log when irq remapping is enabled Joerg Roedel
2012-09-28 12:24 ` Joerg Roedel
2012-09-28 12:24 ` [PATCH 16/16] iommu/amd: Report irq remapping through IOMMU-API Joerg Roedel
2012-09-28 12:24 ` Joerg Roedel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120928144011.GF7483@localhost.localdomain \
--to=konrad.wilk-qhclzuegtsvqt0dzr+alfa@public.gmane.org \
--cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=joerg.roedel-5C7GfCeVMHo@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.