Re: [PATCH 9/9] iommu: Move flush queue data into iommu_dma_cookie

From: John Garry
Date: Wed Nov 24 2021 - 12:25:28 EST


On 23/11/2021 14:10, Robin Murphy wrote:
ruct iommu_dma_msi_page {
struct list_head list;
@@ -41,7 +43,19 @@ struct iommu_dma_cookie {
enum iommu_dma_cookie_type type;
union {
/* Full allocator for IOMMU_DMA_IOVA_COOKIE */
- struct iova_domain iovad;
+ struct {
+ struct iova_domain iovad;
+
+ struct iova_fq __percpu *fq; /* Flush queue */
+ /* Number of TLB flushes that have been started */
+ atomic64_t fq_flush_start_cnt;
+ /* Number of TLB flushes that have been finished */
+ atomic64_t fq_flush_finish_cnt;
+ /* Timer to regularily empty the flush queues */
+ struct timer_list fq_timer;
+ /* 1 when timer is active, 0 when not */
+ atomic_t fq_timer_on;

I thought that putting all the FQ stuff in its own structure would be neater, but that's just personal preference.

Thanks,
John