unsigned long flags;
struct ir_ctrl *ir_ctrl = iommu_ir_ctrl(iommu);
- if ( ir_ctrl == NULL )
- {
- dprintk(XENLOG_ERR VTDPREFIX,
- "remap_entry_to_ioapic_rte: ir_ctl is not ready\n");
- return -EFAULT;
- }
-
if ( index < 0 || index > IREMAP_ENTRY_NR - 1 )
{
dprintk(XENLOG_ERR VTDPREFIX,
struct iommu *iommu = ioapic_to_iommu(IO_APIC_ID(apic));
struct ir_ctrl *ir_ctrl = iommu_ir_ctrl(iommu);
- if ( !iommu || !ir_ctrl || ir_ctrl->iremap_maddr == 0 ||
- (ir_ctrl->iremap_num == 0) ||
+ if ( !ir_ctrl || !ir_ctrl->iremap_maddr || !ir_ctrl->iremap_num ||
( (index = apic_pin_2_ir_idx[apic][ioapic_pin]) < 0 ) )
return __io_apic_read(apic, reg);
struct ir_ctrl *ir_ctrl = iommu_ir_ctrl(iommu);
int saved_mask;
- if ( !iommu || !ir_ctrl || ir_ctrl->iremap_maddr == 0 )
+ if ( !ir_ctrl || !ir_ctrl->iremap_maddr )
{
__io_apic_write(apic, reg, value);
return;
unsigned long flags;
struct ir_ctrl *ir_ctrl = iommu_ir_ctrl(iommu);
- if ( ir_ctrl == NULL )
- {
- dprintk(XENLOG_ERR VTDPREFIX,
- "remap_entry_to_msi_msg: ir_ctl == NULL");
- return -EFAULT;
- }
-
remap_rte = (struct msi_msg_remap_entry *) msg;
index = (remap_rte->address_lo.index_15 << 15) |
remap_rte->address_lo.index_0_14;
iommu = drhd->iommu;
ir_ctrl = iommu_ir_ctrl(iommu);
- if ( !iommu || !ir_ctrl || ir_ctrl->iremap_maddr == 0 )
+ if ( !ir_ctrl || !ir_ctrl->iremap_maddr )
return;
remap_entry_to_msi_msg(iommu, msg);
iommu = drhd->iommu;
ir_ctrl = iommu_ir_ctrl(iommu);
- if ( !iommu || !ir_ctrl || ir_ctrl->iremap_maddr == 0 )
+ if ( !ir_ctrl || !ir_ctrl->iremap_maddr )
return;
msi_msg_to_remap_entry(iommu, pdev, msi_desc, msg);
xfree(intel);
}
-struct qi_ctrl *iommu_qi_ctrl(struct iommu *iommu)
-{
- return iommu ? &iommu->intel->qi_ctrl : NULL;
-}
-
-struct ir_ctrl *iommu_ir_ctrl(struct iommu *iommu)
-{
- return iommu ? &iommu->intel->ir_ctrl : NULL;
-}
-
-struct iommu_flush *iommu_get_flush(struct iommu *iommu)
-{
- return iommu ? &iommu->intel->flush : NULL;
-}
-
static int iommus_incoherent;
static void __iommu_flush_cache(void *addr, unsigned int size)
{
#ifndef _INTEL_IOMMU_H_
#define _INTEL_IOMMU_H_
-#include <xen/types.h>
+#include <xen/iommu.h>
/*
* Intel IOMMU register specification per version 1.0 public spec.
struct acpi_drhd_unit *drhd;
};
+static inline struct qi_ctrl *iommu_qi_ctrl(struct iommu *iommu)
+{
+ return iommu ? &iommu->intel->qi_ctrl : NULL;
+}
+
+static inline struct ir_ctrl *iommu_ir_ctrl(struct iommu *iommu)
+{
+ return iommu ? &iommu->intel->ir_ctrl : NULL;
+}
+
+static inline struct iommu_flush *iommu_get_flush(struct iommu *iommu)
+{
+ return iommu ? &iommu->intel->flush : NULL;
+}
+
#define INTEL_IOMMU_DEBUG(fmt, args...) \
do \
{ \
{
iommu = ioapic_to_iommu(mp_ioapics[apic].mpc_apicid);
ir_ctrl = iommu_ir_ctrl(iommu);
- if ( !iommu || !ir_ctrl || ir_ctrl->iremap_maddr == 0 ||
- ir_ctrl->iremap_num == 0 )
+ if ( !ir_ctrl || !ir_ctrl->iremap_maddr || !ir_ctrl->iremap_num )
continue;
printk( "\nRedirection table of IOAPIC %x:\n", apic);
struct msi_msg;
void msi_msg_read_remap_rte(struct msi_desc *msi_desc, struct msi_msg *msg);
void msi_msg_write_remap_rte(struct msi_desc *msi_desc, struct msi_msg *msg);
-struct qi_ctrl *iommu_qi_ctrl(struct iommu *iommu);
-struct ir_ctrl *iommu_ir_ctrl(struct iommu *iommu);
-struct iommu_flush *iommu_get_flush(struct iommu *iommu);
void hvm_dpci_isairq_eoi(struct domain *d, unsigned int isairq);
struct hvm_irq_dpci *domain_get_irq_dpci(const struct domain *);
void free_hvm_irq_dpci(struct hvm_irq_dpci *dpci);