@@ -279,11 +279,6 @@ static struct iommu_dev_data *find_dev_data(u16 devid)
279
279
return dev_data ;
280
280
}
281
281
282
- static struct iommu_dev_data * get_dev_data (struct device * dev )
283
- {
284
- return dev -> archdata .iommu ;
285
- }
286
-
287
282
/*
288
283
* Find or create an IOMMU group for a acpihid device.
289
284
*/
@@ -334,7 +329,7 @@ static bool pdev_pri_erratum(struct pci_dev *pdev, u32 erratum)
334
329
{
335
330
struct iommu_dev_data * dev_data ;
336
331
337
- dev_data = get_dev_data (& pdev -> dev );
332
+ dev_data = dev_iommu_priv_get (& pdev -> dev );
338
333
339
334
return dev_data -> errata & (1 << erratum ) ? true : false;
340
335
}
@@ -369,7 +364,7 @@ static int iommu_init_device(struct device *dev)
369
364
struct iommu_dev_data * dev_data ;
370
365
int devid ;
371
366
372
- if (dev -> archdata . iommu )
367
+ if (dev_iommu_priv_get ( dev ) )
373
368
return 0 ;
374
369
375
370
devid = get_device_id (dev );
@@ -396,7 +391,7 @@ static int iommu_init_device(struct device *dev)
396
391
dev_data -> iommu_v2 = iommu -> is_iommu_v2 ;
397
392
}
398
393
399
- dev -> archdata . iommu = dev_data ;
394
+ dev_iommu_priv_set ( dev , dev_data ) ;
400
395
401
396
return 0 ;
402
397
}
@@ -431,6 +426,8 @@ static void amd_iommu_uninit_device(struct device *dev)
431
426
if (dev_data -> domain )
432
427
detach_device (dev );
433
428
429
+ dev_iommu_priv_set (dev , NULL );
430
+
434
431
/*
435
432
* We keep dev_data around for unplugged devices and reuse it when the
436
433
* device is re-plugged - not doing so would introduce a ton of races.
@@ -493,7 +490,7 @@ static void amd_iommu_report_page_fault(u16 devid, u16 domain_id,
493
490
pdev = pci_get_domain_bus_and_slot (0 , PCI_BUS_NUM (devid ),
494
491
devid & 0xff );
495
492
if (pdev )
496
- dev_data = get_dev_data (& pdev -> dev );
493
+ dev_data = dev_iommu_priv_get (& pdev -> dev );
497
494
498
495
if (dev_data && __ratelimit (& dev_data -> rs )) {
499
496
pci_err (pdev , "Event logged [IO_PAGE_FAULT domain=0x%04x address=0x%llx flags=0x%04x]\n" ,
@@ -2033,7 +2030,7 @@ static int attach_device(struct device *dev,
2033
2030
2034
2031
spin_lock_irqsave (& domain -> lock , flags );
2035
2032
2036
- dev_data = get_dev_data (dev );
2033
+ dev_data = dev_iommu_priv_get (dev );
2037
2034
2038
2035
spin_lock (& dev_data -> lock );
2039
2036
@@ -2097,7 +2094,7 @@ static void detach_device(struct device *dev)
2097
2094
struct iommu_dev_data * dev_data ;
2098
2095
unsigned long flags ;
2099
2096
2100
- dev_data = get_dev_data (dev );
2097
+ dev_data = dev_iommu_priv_get (dev );
2101
2098
domain = dev_data -> domain ;
2102
2099
2103
2100
spin_lock_irqsave (& domain -> lock , flags );
@@ -2146,7 +2143,7 @@ static struct iommu_device *amd_iommu_probe_device(struct device *dev)
2146
2143
2147
2144
iommu = amd_iommu_rlookup_table [devid ];
2148
2145
2149
- if (get_dev_data (dev ))
2146
+ if (dev_iommu_priv_get (dev ))
2150
2147
return & iommu -> iommu ;
2151
2148
2152
2149
ret = iommu_init_device (dev );
@@ -2435,7 +2432,7 @@ static void amd_iommu_domain_free(struct iommu_domain *dom)
2435
2432
static void amd_iommu_detach_device (struct iommu_domain * dom ,
2436
2433
struct device * dev )
2437
2434
{
2438
- struct iommu_dev_data * dev_data = dev -> archdata . iommu ;
2435
+ struct iommu_dev_data * dev_data = dev_iommu_priv_get ( dev ) ;
2439
2436
struct amd_iommu * iommu ;
2440
2437
int devid ;
2441
2438
@@ -2473,7 +2470,7 @@ static int amd_iommu_attach_device(struct iommu_domain *dom,
2473
2470
if (!check_device (dev ))
2474
2471
return - EINVAL ;
2475
2472
2476
- dev_data = dev -> archdata . iommu ;
2473
+ dev_data = dev_iommu_priv_get ( dev ) ;
2477
2474
dev_data -> defer_attach = false;
2478
2475
2479
2476
iommu = amd_iommu_rlookup_table [dev_data -> devid ];
@@ -2632,7 +2629,7 @@ static void amd_iommu_get_resv_regions(struct device *dev,
2632
2629
bool amd_iommu_is_attach_deferred (struct iommu_domain * domain ,
2633
2630
struct device * dev )
2634
2631
{
2635
- struct iommu_dev_data * dev_data = dev -> archdata . iommu ;
2632
+ struct iommu_dev_data * dev_data = dev_iommu_priv_get ( dev ) ;
2636
2633
2637
2634
return dev_data -> defer_attach ;
2638
2635
}
@@ -2659,7 +2656,7 @@ static int amd_iommu_def_domain_type(struct device *dev)
2659
2656
{
2660
2657
struct iommu_dev_data * dev_data ;
2661
2658
2662
- dev_data = get_dev_data (dev );
2659
+ dev_data = dev_iommu_priv_get (dev );
2663
2660
if (!dev_data )
2664
2661
return 0 ;
2665
2662
@@ -2992,7 +2989,7 @@ int amd_iommu_complete_ppr(struct pci_dev *pdev, int pasid,
2992
2989
struct amd_iommu * iommu ;
2993
2990
struct iommu_cmd cmd ;
2994
2991
2995
- dev_data = get_dev_data (& pdev -> dev );
2992
+ dev_data = dev_iommu_priv_get (& pdev -> dev );
2996
2993
iommu = amd_iommu_rlookup_table [dev_data -> devid ];
2997
2994
2998
2995
build_complete_ppr (& cmd , dev_data -> devid , pasid , status ,
@@ -3005,16 +3002,19 @@ EXPORT_SYMBOL(amd_iommu_complete_ppr);
3005
3002
struct iommu_domain * amd_iommu_get_v2_domain (struct pci_dev * pdev )
3006
3003
{
3007
3004
struct protection_domain * pdomain ;
3008
- struct iommu_domain * io_domain ;
3005
+ struct iommu_dev_data * dev_data ;
3009
3006
struct device * dev = & pdev -> dev ;
3007
+ struct iommu_domain * io_domain ;
3010
3008
3011
3009
if (!check_device (dev ))
3012
3010
return NULL ;
3013
3011
3014
- pdomain = get_dev_data (dev )-> domain ;
3012
+ dev_data = dev_iommu_priv_get (& pdev -> dev );
3013
+ pdomain = dev_data -> domain ;
3015
3014
io_domain = iommu_get_domain_for_dev (dev );
3016
- if (pdomain == NULL && get_dev_data (dev )-> defer_attach ) {
3017
- get_dev_data (dev )-> defer_attach = false;
3015
+
3016
+ if (pdomain == NULL && dev_data -> defer_attach ) {
3017
+ dev_data -> defer_attach = false;
3018
3018
pdomain = to_pdomain (io_domain );
3019
3019
attach_device (dev , pdomain );
3020
3020
}
@@ -3040,7 +3040,7 @@ void amd_iommu_enable_device_erratum(struct pci_dev *pdev, u32 erratum)
3040
3040
if (!amd_iommu_v2_supported ())
3041
3041
return ;
3042
3042
3043
- dev_data = get_dev_data (& pdev -> dev );
3043
+ dev_data = dev_iommu_priv_get (& pdev -> dev );
3044
3044
dev_data -> errata |= (1 << erratum );
3045
3045
}
3046
3046
EXPORT_SYMBOL (amd_iommu_enable_device_erratum );
0 commit comments