@@ -2919,12 +2919,12 @@ static int __init state_next(void)}break;caseIOMMU_IVRS_DETECTED:-ret=early_amd_iommu_init();-init_state=ret?IOMMU_INIT_ERROR:IOMMU_ACPI_FINISHED;-if(init_state==IOMMU_ACPI_FINISHED&&amd_iommu_disabled){-pr_info("AMD IOMMU disabled\n");+if(amd_iommu_disabled){init_state=IOMMU_CMDLINE_DISABLED;ret=-EINVAL;+}else{+ret=early_amd_iommu_init();+init_state=ret?IOMMU_INIT_ERROR:IOMMU_ACPI_FINISHED;}break;caseIOMMU_ACPI_FINISHED:
--
If you've already moved the Stoney Ridge check out of the way, there's
no real reason why you can't just set init_state=IOMMU_CMDLINE_DISABLED
directly from parse_amd_iommu_options(), is there? Then you don't need
the condition here at all?
On Wed, Mar 17, 2021 at 11:47:11AM +0000, David Woodhouse wrote:
If you've already moved the Stoney Ridge check out of the way, there's
no real reason why you can't just set init_state=IOMMU_CMDLINE_DISABLED
directly from parse_amd_iommu_options(), is there? Then you don't need
the condition here at all?
True, there is even more room for optimization. The amd_iommu_disabled
variable can go away entirely, including its checks in
early_amd_iommu_init(). I will do a patch-set on-top of this for v5.13
which does more cleanups.
Thanks,
Joerg
From: David Woodhouse <dwmw2@infradead.org> Date: 2021-03-17 14:16:20
On 17 March 2021 13:32:35 GMT, Joerg Roedel [off-list ref] wrote:
On Wed, Mar 17, 2021 at 11:47:11AM +0000, David Woodhouse wrote:
quoted
If you've already moved the Stoney Ridge check out of the way,
there's
quoted
no real reason why you can't just set
init_state=IOMMU_CMDLINE_DISABLED
quoted
directly from parse_amd_iommu_options(), is there? Then you don't
need
quoted
the condition here at all?
True, there is even more room for optimization. The amd_iommu_disabled
variable can go away entirely, including its checks in
early_amd_iommu_init(). I will do a patch-set on-top of this for v5.13
which does more cleanups.
If we can get to the point where we don't even need to check amd_iommu_irq_remap in the ...select() function because the IRQ domain is never even registered in the case where the flag ends up false, all the better :)
--
Sent from my Android device with K-9 Mail. Please excuse my brevity.
On Wed, Mar 17, 2021 at 01:37:16PM +0000, David Woodhouse wrote:
If we can get to the point where we don't even need to check
amd_iommu_irq_remap in the ...select() function because the IRQ domain
is never even registered in the case where the flag ends up false, all
the better :)
This should already be achieved with this patch :)
But the check is still needed if something goes wrong during IOMMU
initialization. In this case the IOMMUs are teared down and the memory
is freed. But the IRQ domains stay registered for now, mostly because
the upper-level APIs to register them lack a deregister function.
I havn't looked into the details yet whether it is suffient to call
irq_domain_remove() on a domain created with
arch_create_remap_msi_irq_domain() for example. This needs more research
on my side :)
Regards,
Joerg