Messages in this thread Patch in this message | | | From | "Luis R. Rodriguez" <> | Subject | [RFT v2] iommu/amd: use subsys_initcall() on amdv2 iommu | Date | Tue, 29 Mar 2016 10:41:53 -0700 |
| |
We need to ensure amd iommu v2 initializes before driver uses such as drivers/gpu/drm/amd/amdkfd/kfd_module.c, to do this make its init routine a subsys_initcall() which ensures its load init is called first than modules when built-in.
This reverts the old work around implemented through commit 1bacc894c227fad8a7 ("drivers: Move iommu/ before gpu/ in Makefile"), instead of making the dependency implicit by linker order this makes the ordering requirement explicit through proper kernel APIs.
Cc: Oded Gabbay <oded.gabbay@amd.com> Cc: Christian König <christian.koenig@amd.com> Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org> ---
This goes along with the revert included. Can someone please test?
drivers/Makefile | 6 ++---- drivers/iommu/amd_iommu_v2.c | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/drivers/Makefile b/drivers/Makefile index 8f5d076baeb0..cc3cfbddc376 100644 --- a/drivers/Makefile +++ b/drivers/Makefile @@ -50,10 +50,7 @@ obj-$(CONFIG_RESET_CONTROLLER) += reset/ obj-y += tty/ obj-y += char/ -# iommu/ comes before gpu as gpu are using iommu controllers -obj-$(CONFIG_IOMMU_SUPPORT) += iommu/ - -# gpu/ comes after char for AGP vs DRM startup and after iommu +# gpu/ comes after char for AGP vs DRM startup obj-y += gpu/ obj-$(CONFIG_CONNECTOR) += connector/ @@ -146,6 +143,7 @@ obj-y += clk/ obj-$(CONFIG_MAILBOX) += mailbox/ obj-$(CONFIG_HWSPINLOCK) += hwspinlock/ +obj-$(CONFIG_IOMMU_SUPPORT) += iommu/ obj-$(CONFIG_REMOTEPROC) += remoteproc/ obj-$(CONFIG_RPMSG) += rpmsg/ diff --git a/drivers/iommu/amd_iommu_v2.c b/drivers/iommu/amd_iommu_v2.c index 56999d2fac07..60df645b9927 100644 --- a/drivers/iommu/amd_iommu_v2.c +++ b/drivers/iommu/amd_iommu_v2.c @@ -1004,5 +1004,5 @@ static void __exit amd_iommu_v2_exit(void) destroy_workqueue(iommu_wq); } -module_init(amd_iommu_v2_init); +subsys_initcall(amd_iommu_v2_init); module_exit(amd_iommu_v2_exit); -- 2.7.2
| |