diff --git a/drivers/interrupt_controller/intc_intel_vtd.h b/drivers/interrupt_controller/intc_intel_vtd.h index 22caea61613..c11baacb6dd 100644 --- a/drivers/interrupt_controller/intc_intel_vtd.h +++ b/drivers/interrupt_controller/intc_intel_vtd.h @@ -103,7 +103,7 @@ union qi_wait_descriptor { #define QI_WAIT_STATUS_COMPLETE 0x1UL struct vtd_ictl_data { - struct vtd_irte irte[IRTE_NUM]; + struct vtd_irte irte[IRTE_NUM] __aligned(0x1000); struct qi_descriptor qi[QI_NUM] __aligned(0x1000); int irqs[IRTE_NUM]; int vectors[IRTE_NUM]; diff --git a/include/arch/x86/intel_vtd.h b/include/arch/x86/intel_vtd.h index 2fe005cb327..78ef29097e6 100644 --- a/include/arch/x86/intel_vtd.h +++ b/include/arch/x86/intel_vtd.h @@ -119,14 +119,11 @@ #define VTD_GSTS_TES 31 /* Interrupt Remapping Table Address Register details */ -#define VTD_IRTA_SIZE_MASK 0x00000000000000FF +#define VTD_IRTA_SIZE_MASK 0x000000000000000FUL #define VTD_IRTA_EIME BIT(11) -#define VTD_IRTA_ADDR_SHIFT 12 -#define VTD_IRTA_REG_GEN_CONTENT(addr, size, mode) \ - (0 | \ - (addr << VTD_IRTA_ADDR_SHIFT) | \ - (mode) | (size & VTD_IRTA_SIZE_MASK)) +#define VTD_IRTA_REG_GEN_CONTENT(addr, size, mode) \ + ((uint64_t)(addr) | (mode) | (size & VTD_IRTA_SIZE_MASK)) /* Fault event control register details */ #define VTD_FECTL_REG_IP 30