x64, x2apic/intr-remap: move IOMMU_WAIT_OP() macro to intel-iommu.h
move IOMMU_WAIT_OP() macro to header file. This will be used by both DMA-remapping and Intr-remapping. Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com> Cc: akpm@linux-foundation.org Cc: arjan@linux.intel.com Cc: andi@firstfloor.org Cc: ebiederm@xmission.com Cc: jbarnes@virtuousgeek.org Cc: steiner@sgi.com Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
committed by
Ingo Molnar
parent
ad3ad3f6a2
commit
cf1337f044
@@ -49,8 +49,6 @@
|
|||||||
|
|
||||||
#define DEFAULT_DOMAIN_ADDRESS_WIDTH 48
|
#define DEFAULT_DOMAIN_ADDRESS_WIDTH 48
|
||||||
|
|
||||||
#define DMAR_OPERATION_TIMEOUT ((cycles_t) tsc_khz*10*1000) /* 10sec */
|
|
||||||
|
|
||||||
#define DOMAIN_MAX_ADDR(gaw) ((((u64)1) << gaw) - 1)
|
#define DOMAIN_MAX_ADDR(gaw) ((((u64)1) << gaw) - 1)
|
||||||
|
|
||||||
|
|
||||||
@@ -486,19 +484,6 @@ static int iommu_alloc_root_entry(struct intel_iommu *iommu)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define IOMMU_WAIT_OP(iommu, offset, op, cond, sts) \
|
|
||||||
{\
|
|
||||||
cycles_t start_time = get_cycles();\
|
|
||||||
while (1) {\
|
|
||||||
sts = op (iommu->reg + offset);\
|
|
||||||
if (cond)\
|
|
||||||
break;\
|
|
||||||
if (DMAR_OPERATION_TIMEOUT < (get_cycles() - start_time))\
|
|
||||||
panic("DMAR hardware is malfunctioning\n");\
|
|
||||||
cpu_relax();\
|
|
||||||
}\
|
|
||||||
}
|
|
||||||
|
|
||||||
static void iommu_set_root_entry(struct intel_iommu *iommu)
|
static void iommu_set_root_entry(struct intel_iommu *iommu)
|
||||||
{
|
{
|
||||||
void *addr;
|
void *addr;
|
||||||
|
@@ -177,6 +177,21 @@ static inline void dmar_writeq(void __iomem *addr, u64 val)
|
|||||||
#define dma_frcd_source_id(c) (c & 0xffff)
|
#define dma_frcd_source_id(c) (c & 0xffff)
|
||||||
#define dma_frcd_page_addr(d) (d & (((u64)-1) << 12)) /* low 64 bit */
|
#define dma_frcd_page_addr(d) (d & (((u64)-1) << 12)) /* low 64 bit */
|
||||||
|
|
||||||
|
#define DMAR_OPERATION_TIMEOUT ((cycles_t) tsc_khz*10*1000) /* 10sec */
|
||||||
|
|
||||||
|
#define IOMMU_WAIT_OP(iommu, offset, op, cond, sts) \
|
||||||
|
{\
|
||||||
|
cycles_t start_time = get_cycles();\
|
||||||
|
while (1) {\
|
||||||
|
sts = op (iommu->reg + offset);\
|
||||||
|
if (cond)\
|
||||||
|
break;\
|
||||||
|
if (DMAR_OPERATION_TIMEOUT < (get_cycles() - start_time))\
|
||||||
|
panic("DMAR hardware is malfunctioning\n");\
|
||||||
|
cpu_relax();\
|
||||||
|
}\
|
||||||
|
}
|
||||||
|
|
||||||
struct intel_iommu {
|
struct intel_iommu {
|
||||||
void __iomem *reg; /* Pointer to hardware regs, virtual addr */
|
void __iomem *reg; /* Pointer to hardware regs, virtual addr */
|
||||||
u64 cap;
|
u64 cap;
|
||||||
|
Reference in New Issue
Block a user