|
[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 |