iommu/amd: Add stat counter for IOMMUv2 events
Add some interesting statistic counters for events when IOMMUv2 is active. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
This commit is contained in:
		
							parent
							
								
									6a113ddc03
								
							
						
					
					
						commit
						399be2f519
					
				| @ -359,6 +359,11 @@ DECLARE_STATS_COUNTER(domain_flush_single); | ||||
| DECLARE_STATS_COUNTER(domain_flush_all); | ||||
| DECLARE_STATS_COUNTER(alloced_io_mem); | ||||
| DECLARE_STATS_COUNTER(total_map_requests); | ||||
| DECLARE_STATS_COUNTER(complete_ppr); | ||||
| DECLARE_STATS_COUNTER(invalidate_iotlb); | ||||
| DECLARE_STATS_COUNTER(invalidate_iotlb_all); | ||||
| DECLARE_STATS_COUNTER(pri_requests); | ||||
| 
 | ||||
| 
 | ||||
| static struct dentry *stats_dir; | ||||
| static struct dentry *de_fflush; | ||||
| @ -393,6 +398,10 @@ static void amd_iommu_stats_init(void) | ||||
| 	amd_iommu_stats_add(&domain_flush_all); | ||||
| 	amd_iommu_stats_add(&alloced_io_mem); | ||||
| 	amd_iommu_stats_add(&total_map_requests); | ||||
| 	amd_iommu_stats_add(&complete_ppr); | ||||
| 	amd_iommu_stats_add(&invalidate_iotlb); | ||||
| 	amd_iommu_stats_add(&invalidate_iotlb_all); | ||||
| 	amd_iommu_stats_add(&pri_requests); | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
| @ -509,6 +518,8 @@ static void iommu_handle_ppr_entry(struct amd_iommu *iommu, u32 head) | ||||
| 	volatile u64 *raw; | ||||
| 	int i; | ||||
| 
 | ||||
| 	INC_STATS_COUNTER(pri_requests); | ||||
| 
 | ||||
| 	raw = (u64 *)(iommu->ppr_log + head); | ||||
| 
 | ||||
| 	/*
 | ||||
| @ -3356,6 +3367,8 @@ out: | ||||
| static int __amd_iommu_flush_page(struct protection_domain *domain, int pasid, | ||||
| 				  u64 address) | ||||
| { | ||||
| 	INC_STATS_COUNTER(invalidate_iotlb); | ||||
| 
 | ||||
| 	return __flush_pasid(domain, pasid, address, false); | ||||
| } | ||||
| 
 | ||||
| @ -3376,6 +3389,8 @@ EXPORT_SYMBOL(amd_iommu_flush_page); | ||||
| 
 | ||||
| static int __amd_iommu_flush_tlb(struct protection_domain *domain, int pasid) | ||||
| { | ||||
| 	INC_STATS_COUNTER(invalidate_iotlb_all); | ||||
| 
 | ||||
| 	return __flush_pasid(domain, pasid, CMD_INV_IOMMU_ALL_PAGES_ADDRESS, | ||||
| 			     true); | ||||
| } | ||||
| @ -3495,6 +3510,8 @@ int amd_iommu_complete_ppr(struct pci_dev *pdev, int pasid, | ||||
| 	struct amd_iommu *iommu; | ||||
| 	struct iommu_cmd cmd; | ||||
| 
 | ||||
| 	INC_STATS_COUNTER(complete_ppr); | ||||
| 
 | ||||
| 	dev_data = get_dev_data(&pdev->dev); | ||||
| 	iommu    = amd_iommu_rlookup_table[dev_data->devid]; | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user