aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/amd_iommu_init.c
diff options
context:
space:
mode:
authorJoerg Roedel <joerg.roedel@amd.com>2008-07-11 11:14:32 -0400
committerIngo Molnar <mingo@elte.hu>2008-07-11 12:01:16 -0400
commit5dc8bff0f6d0dfeb1f1c6e694294ba7c33d099f1 (patch)
tree46aaf6e9c57eb392db59ad505fe444f20849284b /arch/x86/kernel/amd_iommu_init.c
parent2e22847fbe05f2543ccebd0c2df94d9cf3c52aa5 (diff)
x86, AMD IOMMU: replace memset with __GFP_ZERO for table allocation
This patch removes the memset from the data structure initialization code and allocate the structures with the __GFP_ZERO flag. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com> Cc: iommu@lists.linux-foundation.org Cc: bhavna.sarathy@amd.com Cc: robert.richter@amd.com Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/amd_iommu_init.c')
-rw-r--r--arch/x86/kernel/amd_iommu_init.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/arch/x86/kernel/amd_iommu_init.c b/arch/x86/kernel/amd_iommu_init.c
index 0c247032308e..2efc3d59b7e6 100644
--- a/arch/x86/kernel/amd_iommu_init.c
+++ b/arch/x86/kernel/amd_iommu_init.c
@@ -890,7 +890,7 @@ int __init amd_iommu_init(void)
890 ret = -ENOMEM; 890 ret = -ENOMEM;
891 891
892 /* Device table - directly used by all IOMMUs */ 892 /* Device table - directly used by all IOMMUs */
893 amd_iommu_dev_table = (void *)__get_free_pages(GFP_KERNEL, 893 amd_iommu_dev_table = (void *)__get_free_pages(GFP_KERNEL | __GFP_ZERO,
894 get_order(dev_table_size)); 894 get_order(dev_table_size));
895 if (amd_iommu_dev_table == NULL) 895 if (amd_iommu_dev_table == NULL)
896 goto out; 896 goto out;
@@ -914,27 +914,23 @@ int __init amd_iommu_init(void)
914 * Protection Domain table - maps devices to protection domains 914 * Protection Domain table - maps devices to protection domains
915 * This table has the same size as the rlookup_table 915 * This table has the same size as the rlookup_table
916 */ 916 */
917 amd_iommu_pd_table = (void *)__get_free_pages(GFP_KERNEL, 917 amd_iommu_pd_table = (void *)__get_free_pages(GFP_KERNEL | __GFP_ZERO,
918 get_order(rlookup_table_size)); 918 get_order(rlookup_table_size));
919 if (amd_iommu_pd_table == NULL) 919 if (amd_iommu_pd_table == NULL)
920 goto free; 920 goto free;
921 921
922 amd_iommu_pd_alloc_bitmap = (void *)__get_free_pages(GFP_KERNEL, 922 amd_iommu_pd_alloc_bitmap = (void *)__get_free_pages(
923 GFP_KERNEL | __GFP_ZERO,
923 get_order(MAX_DOMAIN_ID/8)); 924 get_order(MAX_DOMAIN_ID/8));
924 if (amd_iommu_pd_alloc_bitmap == NULL) 925 if (amd_iommu_pd_alloc_bitmap == NULL)
925 goto free; 926 goto free;
926 927
927 /* 928 /*
928 * memory is allocated now; initialize the device table with all zeroes 929 * let all alias entries point to itself
929 * and let all alias entries point to itself
930 */ 930 */
931 memset(amd_iommu_dev_table, 0, dev_table_size);
932 for (i = 0; i < amd_iommu_last_bdf; ++i) 931 for (i = 0; i < amd_iommu_last_bdf; ++i)
933 amd_iommu_alias_table[i] = i; 932 amd_iommu_alias_table[i] = i;
934 933
935 memset(amd_iommu_pd_table, 0, rlookup_table_size);
936 memset(amd_iommu_pd_alloc_bitmap, 0, MAX_DOMAIN_ID / 8);
937
938 /* 934 /*
939 * never allocate domain 0 because its used as the non-allocated and 935 * never allocate domain 0 because its used as the non-allocated and
940 * error value placeholder 936 * error value placeholder