Re: [RFT v2] iommu/amd: use subsys_initcall() on amdv2 iommu

From: Luis R. Rodriguez
Date: Thu May 26 2016 - 20:13:02 EST

On Tue, Apr 19, 2016 at 10:02:52AM +0800, Wan Zongshun wrote:
> You have to take carefully to arrange the calling sequence for
> iommuv1, iommuv2, kfd module, and drm like the following sequence :
> v1 ->v2->kfd, drm.
> iommuv1 -- rootfs_initcall(fn)
> IOMMUV2 -- device_initcall(fn)
> kfd module -- late_initcall(fn)
> drm -- late_initcall(fn)

Thanks, it turns out this is not exactly enough, given as
Joerg notes:

AMD-KFD on the other hand needs to be loaded before the
radeon driver (but this it not enforced by symbols), because otherwise
the radeon driver will not initialize the AMD-KFD driver.

We have a theoretical race still possible between the kfd module
and the drm driver. I'll reply to Joerg's e-mail with more feedback.