diff options
author | Joerg Roedel <joerg.roedel@amd.com> | 2012-06-12 16:30:06 +0200 |
---|---|---|
committer | Joerg Roedel <joerg.roedel@amd.com> | 2012-07-17 12:14:59 +0200 |
commit | 11ee5ac47b78d7e117c84147596a124ce6421a3a (patch) | |
tree | 2346d50c7cb7e6341c1d288547bf06b0a845a9db | |
parent | 643511b37eb72d831646bacafaeace1eeadf5a54 (diff) | |
download | op-kernel-dev-11ee5ac47b78d7e117c84147596a124ce6421a3a.zip op-kernel-dev-11ee5ac47b78d7e117c84147596a124ce6421a3a.tar.gz |
iommu/amd: Split enable_iommus() routine
Split the enable_iommus() routine so that a part of it can
run in early code.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
-rw-r--r-- | drivers/iommu/amd_iommu_init.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c index a5dbefb..b82cf44 100644 --- a/drivers/iommu/amd_iommu_init.c +++ b/drivers/iommu/amd_iommu_init.c @@ -1379,7 +1379,7 @@ static void iommu_apply_resume_quirks(struct amd_iommu *iommu) * This function finally enables all IOMMUs found in the system after * they have been initialized */ -static void enable_iommus(void) +static void early_enable_iommus(void) { struct amd_iommu *iommu; @@ -1389,14 +1389,29 @@ static void enable_iommus(void) iommu_set_device_table(iommu); iommu_enable_command_buffer(iommu); iommu_enable_event_buffer(iommu); - iommu_enable_ppr_log(iommu); - iommu_enable_gt(iommu); iommu_set_exclusion_range(iommu); iommu_enable(iommu); iommu_flush_all_caches(iommu); } } +static void enable_iommus_v2(void) +{ + struct amd_iommu *iommu; + + for_each_iommu(iommu) { + iommu_enable_ppr_log(iommu); + iommu_enable_gt(iommu); + } +} + +static void enable_iommus(void) +{ + early_enable_iommus(); + + enable_iommus_v2(); +} + static void disable_iommus(void) { struct amd_iommu *iommu; |