From: Suresh Siddha <suresh.b.siddha@intel.com>
To: Ingo Molnar <mingo@elte.hu>, Thomas Gleixner <tglx@linutronix.de>
Cc: Joerg Roedel <joerg.roedel@amd.com>,
linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org,
David Woodhouse <dwmw2@infradead.org>,
Alex Williamson <alex.williamson@redhat.com>,
Yinghai Lu <yinghai@kernel.org>,
Suresh Siddha <suresh.b.siddha@intel.com>
Subject: [PATCH 06/10] iommu/vt-d: Convert free_irte into a remap_ops callback
Date: Fri, 30 Mar 2012 11:47:04 -0700 [thread overview]
Message-ID: <1333133228-3134-7-git-send-email-suresh.b.siddha@intel.com> (raw)
In-Reply-To: <1333133228-3134-1-git-send-email-suresh.b.siddha@intel.com>
From: Joerg Roedel <joerg.roedel@amd.com>
The operation for releasing a remapping entry is iommu
specific too.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Acked-by: Yinghai Lu <yinghai@kernel.org>
Cc: David Woodhouse <dwmw2@infradead.org>
Cc: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
---
arch/x86/include/asm/intr_remapping.h | 2 ++
arch/x86/kernel/apic/io_apic.c | 2 +-
drivers/iommu/intel_intr_remapping.c | 3 ++-
drivers/iommu/intr_remapping.c | 8 ++++++++
drivers/iommu/intr_remapping.h | 3 +++
include/linux/dmar.h | 5 -----
6 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/arch/x86/include/asm/intr_remapping.h b/arch/x86/include/asm/intr_remapping.h
index ae933ec..a195b7d 100644
--- a/arch/x86/include/asm/intr_remapping.h
+++ b/arch/x86/include/asm/intr_remapping.h
@@ -43,6 +43,7 @@ extern int intr_setup_ioapic_entry(int irq,
extern int intr_set_affinity(struct irq_data *data,
const struct cpumask *mask,
bool force);
+extern void intr_free_irq(int irq);
#else /* CONFIG_IRQ_REMAP */
@@ -68,6 +69,7 @@ static inline int intr_set_affinity(struct irq_data *data,
{
return 0;
}
+static inline void intr_free_irq(int irq) { }
#endif /* CONFIG_IRQ_REMAP */
#endif /* __X86_INTR_REMAPPING_H */
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index a97c79a..5690469 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -3041,7 +3041,7 @@ void destroy_irq(unsigned int irq)
irq_set_status_flags(irq, IRQ_NOREQUEST|IRQ_NOPROBE);
if (irq_remapped(cfg))
- free_irte(irq);
+ intr_free_irq(irq);
raw_spin_lock_irqsave(&vector_lock, flags);
__clear_irq_vector(irq, cfg);
raw_spin_unlock_irqrestore(&vector_lock, flags);
diff --git a/drivers/iommu/intel_intr_remapping.c b/drivers/iommu/intel_intr_remapping.c
index 25372c1..44a6e04 100644
--- a/drivers/iommu/intel_intr_remapping.c
+++ b/drivers/iommu/intel_intr_remapping.c
@@ -253,7 +253,7 @@ static int clear_entries(struct irq_2_iommu *irq_iommu)
return qi_flush_iec(iommu, index, irq_iommu->irte_mask);
}
-int free_irte(int irq)
+static int free_irte(int irq)
{
struct irq_2_iommu *irq_iommu = irq_2_iommu(irq);
unsigned long flags;
@@ -964,4 +964,5 @@ struct irq_remap_ops intel_irq_remap_ops = {
.enable_faulting = enable_drhd_fault_handling,
.setup_ioapic_entry = intel_setup_ioapic_entry,
.set_affinity = intel_ioapic_set_affinity,
+ .free_irq = free_irte,
};
diff --git a/drivers/iommu/intr_remapping.c b/drivers/iommu/intr_remapping.c
index 2f4f27f..a68d304 100644
--- a/drivers/iommu/intr_remapping.c
+++ b/drivers/iommu/intr_remapping.c
@@ -119,3 +119,11 @@ int intr_set_affinity(struct irq_data *data, const struct cpumask *mask,
return remap_ops->set_affinity(data, mask, force);
}
+
+void intr_free_irq(int irq)
+{
+ if (!remap_ops || !remap_ops->free_irq)
+ return;
+
+ remap_ops->free_irq(irq);
+}
diff --git a/drivers/iommu/intr_remapping.h b/drivers/iommu/intr_remapping.h
index e0bc6e0..5748553 100644
--- a/drivers/iommu/intr_remapping.h
+++ b/drivers/iommu/intr_remapping.h
@@ -60,6 +60,9 @@ struct irq_remap_ops {
/* Set the CPU affinity of a remapped interrupt */
int (*set_affinity)(struct irq_data *data, const struct cpumask *mask,
bool force);
+
+ /* Free an IRQ */
+ int (*free_irq)(int);
};
extern struct irq_remap_ops intel_irq_remap_ops;
diff --git a/include/linux/dmar.h b/include/linux/dmar.h
index f2bd87f..7a207a3 100644
--- a/include/linux/dmar.h
+++ b/include/linux/dmar.h
@@ -121,7 +121,6 @@ extern int alloc_irte(struct intel_iommu *iommu, int irq, u16 count);
extern int set_irte_irq(int irq, struct intel_iommu *iommu, u16 index,
u16 sub_handle);
extern int map_irq_to_irte_handle(int irq, u16 *sub_handle);
-extern int free_irte(int irq);
extern struct intel_iommu *map_dev_to_ir(struct pci_dev *dev);
extern struct intel_iommu *map_ioapic_to_ir(int apic);
@@ -138,10 +137,6 @@ static inline int modify_irte(int irq, struct irte *irte_modified)
{
return -1;
}
-static inline int free_irte(int irq)
-{
- return -1;
-}
static inline int map_irq_to_irte_handle(int irq, u16 *sub_handle)
{
return -1;
--
1.7.6.5
next prev parent reply other threads:[~2012-03-30 18:48 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-30 18:46 [PATCH 00/10] vt-d irq_remap_ops patchset Suresh Siddha
2012-03-30 18:46 ` [PATCH 01/10] iommu: Rename intr_remapping files to intel_intr_remapping Suresh Siddha
2012-03-30 18:47 ` [PATCH 02/10] iommu/vt-d: Make intr-remapping initialization generic Suresh Siddha
2012-03-30 18:47 ` [PATCH 03/10] iommu/vt-d: Convert missing apic.c intr-remapping call to remap_ops Suresh Siddha
2012-03-30 18:47 ` [PATCH 04/10] iommu/vt-d: Convert IR ioapic-setup to use remap_ops Suresh Siddha
2012-03-30 18:47 ` [PATCH 05/10] iommu/vt-d: Convert IR set_affinity function to remap_ops Suresh Siddha
2012-03-30 18:47 ` Suresh Siddha [this message]
2012-03-30 18:47 ` [PATCH 07/10] iommu/vt-d: Convert MSI remapping setup " Suresh Siddha
2012-03-30 18:47 ` [PATCH 08/10] x86, iommu/vt-d: Clean up interfaces for interrupt remapping Suresh Siddha
2012-03-30 18:47 ` [PATCH 09/10] iommu: rename intr_remapping references to irq_remapping Suresh Siddha
2012-03-30 18:47 ` [PATCH 10/10] iommu: rename intr_remapping.[ch] to irq_remapping.[ch] Suresh Siddha
2012-03-31 8:14 ` [PATCH 00/10] vt-d irq_remap_ops patchset Ingo Molnar
2012-03-31 19:18 ` Yinghai Lu
2012-04-01 8:45 ` Ingo Molnar
2012-04-10 15:05 ` 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=1333133228-3134-7-git-send-email-suresh.b.siddha@intel.com \
--to=suresh.b.siddha@intel.com \
--cc=alex.williamson@redhat.com \
--cc=dwmw2@infradead.org \
--cc=iommu@lists.linux-foundation.org \
--cc=joerg.roedel@amd.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=tglx@linutronix.de \
--cc=yinghai@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®