[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2] VT-d: Don't assume register-based invalidation is always supported
On Tue, Apr 20, 2021 at 01:38:26PM +0200, Jan Beulich wrote: >On 01.04.2020 22:06, Chao Gao wrote: >> According to Intel VT-d SPEC rev3.3 Section 6.5, Register-based Invalidation >> isn't supported by Intel VT-d version 6 and beyond. >> >> This hardware change impacts following two scenarios: admin can disable >> queued invalidation via 'qinval' cmdline and use register-based interface; >> VT-d switches to register-based invalidation when queued invalidation needs >> to be disabled, for example, during disabling x2apic or during system >> suspension or after enabling queued invalidation fails. >> >> To deal with this hardware change, if register-based invalidation isn't >> supported, queued invalidation cannot be disabled through Xen cmdline; and >> if queued invalidation has to be disabled temporarily in some scenarios, >> VT-d won't switch to register-based interface but use some dummy functions >> to catch errors in case there is any invalidation request issued when queued >> invalidation is disabled. >> >> Signed-off-by: Chao Gao <chao.gao@xxxxxxxxx> > >In principle (with a minor nit further down) >Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> > >However, ... > >> --- >> Changes in v2: >> - verify system suspension and resumption with this patch applied >> - don't fall back to register-based interface if enabling qinval failed. >> see the change in init_vtd_hw(). >> - remove unnecessary "queued_inval_supported" variable >> - constify the "struct vtd_iommu *" of has_register_based_invalidation() >> - coding-style changes > >... while this suggests this is v2 of a recently sent patch, the >submission is dated a little over a year ago. This is confusing. >It is additionally confusing that there were two copies of it in >my inbox, despite mails coming from a list normally getting >de-duplicated somewhere at our end (I believe). You are right. I messed the system time of my server somehow. Sorry for this. If it is possible, please help to update the date of this patch also. > >> --- a/xen/drivers/passthrough/vtd/iommu.c >> +++ b/xen/drivers/passthrough/vtd/iommu.c >> @@ -1193,6 +1193,14 @@ int __init iommu_alloc(struct acpi_drhd_unit *drhd) >> >> iommu->cap = dmar_readq(iommu->reg, DMAR_CAP_REG); >> iommu->ecap = dmar_readq(iommu->reg, DMAR_ECAP_REG); >> + iommu->version = dmar_readl(iommu->reg, DMAR_VER_REG); >> + >> + if ( !iommu_qinval && !has_register_based_invalidation(iommu) ) >> + { >> + printk(XENLOG_WARNING VTDPREFIX "IOMMU %d: cannot disable Queued >> Invalidation.\n", >> + iommu->index); > >Here (and at least once more yet further down): We don't normally end >log messages with a full stop. Easily addressable while committing, of >course. Okay. Please go ahead. Thanks Chao
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |