summaryrefslogtreecommitdiff
path: root/arch/x86/kernel/amd_iommu_init.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2008-12-24 20:08:26 (GMT)
committerIngo Molnar <mingo@elte.hu>2008-12-24 20:08:26 (GMT)
commitdb8862eafe8a5d030a3b02e81b8bb47447c315e3 (patch)
tree073ea7b46809bf804134cbf008a593413c02a99c /arch/x86/kernel/amd_iommu_init.c
parentc5dee6177f4bd2095aab7d9be9f6ebdddd6deee9 (diff)
parentc20137fc5329eaf24093fc48c52608dc66be8e5c (diff)
downloadlinux-fsl-qoriq-db8862eafe8a5d030a3b02e81b8bb47447c315e3.tar.xz
Merge branch 'linus' into tracing/hw-branch-tracing
Diffstat (limited to 'arch/x86/kernel/amd_iommu_init.c')
-rw-r--r--arch/x86/kernel/amd_iommu_init.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/x86/kernel/amd_iommu_init.c b/arch/x86/kernel/amd_iommu_init.c
index 30ae270..c6cc228 100644
--- a/arch/x86/kernel/amd_iommu_init.c
+++ b/arch/x86/kernel/amd_iommu_init.c
@@ -427,6 +427,10 @@ static u8 * __init alloc_command_buffer(struct amd_iommu *iommu)
memcpy_toio(iommu->mmio_base + MMIO_CMD_BUF_OFFSET,
&entry, sizeof(entry));
+ /* set head and tail to zero manually */
+ writel(0x00, iommu->mmio_base + MMIO_CMD_HEAD_OFFSET);
+ writel(0x00, iommu->mmio_base + MMIO_CMD_TAIL_OFFSET);
+
iommu_feature_enable(iommu, CONTROL_CMDBUF_EN);
return cmd_buf;
@@ -1074,7 +1078,8 @@ int __init amd_iommu_init(void)
goto free;
/* IOMMU rlookup table - find the IOMMU for a specific device */
- amd_iommu_rlookup_table = (void *)__get_free_pages(GFP_KERNEL,
+ amd_iommu_rlookup_table = (void *)__get_free_pages(
+ GFP_KERNEL | __GFP_ZERO,
get_order(rlookup_table_size));
if (amd_iommu_rlookup_table == NULL)
goto free;