[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] AMD/IOMMU: correct handling when XT's prereq features are unavailable
We should neither cause IOMMU initialization as a whole to fail in this case (we should still be able to bring up the system in non-x2APIC or x2APIC physical mode), nor should the remainder of the function be skipped (as the main part of it won't get entered a 2nd time) in such an event. It is merely necessary for the function to indicate to the caller (iov_supports_xt()) that setup failed as far as x2APIC is concerned. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> --- a/xen/drivers/passthrough/amd/iommu_init.c +++ b/xen/drivers/passthrough/amd/iommu_init.c @@ -1364,6 +1364,7 @@ static int __init amd_iommu_prepare_one( int __init amd_iommu_prepare(bool xt) { struct amd_iommu *iommu; + bool no_xt = false; int rc = -ENODEV; BUG_ON( !iommu_found() ); @@ -1400,9 +1401,8 @@ int __init amd_iommu_prepare(bool xt) if ( rc ) goto error_out; - rc = -ENODEV; - if ( xt && (!iommu->features.flds.ga_sup || !iommu->features.flds.xt_sup) ) - goto error_out; + if ( !iommu->features.flds.ga_sup || !iommu->features.flds.xt_sup ) + no_xt = true; } for_each_amd_iommu ( iommu ) @@ -1422,7 +1422,7 @@ int __init amd_iommu_prepare(bool xt) ivhd_type = 0; } - return rc; + return rc ?: xt && no_xt ? -ENODEV : 0; } int __init amd_iommu_init(bool xt) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |