Mark McLoughlin wrote:
> On Tue, 2008-12-02 at 22:22 +0800, Han, Weidong wrote:
>
>> For some common low level functions which will be also used by
>> virtual
>> machine usage, use domain_flush_cache instead of __iommu_flush_cache.
>>
>> Signed-off-by: Weidong Han <[EMAIL PROTECTED]>
>> ---
>> drivers/pci/intel-iommu.c | 40
>> ++++++++++++++++++++++++---------------- 1 files changed, 24
>> insertions(+), 16 deletions(-)
>>
>> diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c
>> index 429aff4..b00a8f2 100644
>> --- a/drivers/pci/intel-iommu.c
>> +++ b/drivers/pci/intel-iommu.c
>> @@ -200,6 +200,13 @@ static struct intel_iommu
>> *domain_get_iommu(struct dmar_domain *domain) return NULL; }
>>
>> +static void domain_flush_cache(struct dmar_domain *domain,
>> + void *addr, int size)
>> +{
>> + if (!domain->iommu_coherency)
>> + clflush_cache_range(addr, size);
>> +}
>
> This is quite unfortunate; __iommu_flush_cache() is essentially
> identical:
>
> static inline void __iommu_flush_cache(
> struct intel_iommu *iommu, void *addr, int size)
> {
> if (!ecap_coherent(iommu->ecap))
> clflush_cache_range(addr, size);
> }
>
> Is there no way we can use a single function for both purposes?
>
it's not easy, some functions (e.g. qi_submit_sync() in dmar.c) don't have
dmar_domain struct, whereas, domain_flush_cache is necessary for kvm vtd case.
Regards,
Weidong
> Cheers,
> Mark.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html