I was looking through those files a bit, and notice there is a
iommu_disable_irq_remapping. I added some printk's to it, and it isn't
being called when the BIOS workaround is hit.
From the code, I gather that it should be disabled at boot, and the
disable_irq_remap flag works by just pretending its not supported, so it
never gets enabled.
However, I see in the enable path (intel_enable_irq_remapping) there is
this:
/*
* Disable intr remapping and queued invalidation, if already
* enabled prior to OS handover.
*/
iommu_disable_irq_remapping(iommu);
It sounds like someone found a BIOS before that hands off to Linux with
it already enabled.
So, I added a call to disable_irq_remapping, but it turns out that this
BIOS doesn't do that. So doesn't help here.
Also, I notice that iommu_disable_irq_remapping looks suspicious as its
weird that GSTS is being read with both readl and dmar_readq. I think
readl is correct, as I think the Intel spec says its a 32-bit field.
_______________________________________________
iommu mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/iommu