@@ -380,6 +380,29 @@ struct device_domain_info {
380380 struct dmar_domain * domain ; /* pointer to domain */
381381};
382382
383+ struct dmar_rmrr_unit {
384+ struct list_head list ; /* list of rmrr units */
385+ struct acpi_dmar_header * hdr ; /* ACPI header */
386+ u64 base_address ; /* reserved base address*/
387+ u64 end_address ; /* reserved end address */
388+ struct pci_dev * * devices ; /* target devices */
389+ int devices_cnt ; /* target device count */
390+ };
391+
392+ struct dmar_atsr_unit {
393+ struct list_head list ; /* list of ATSR units */
394+ struct acpi_dmar_header * hdr ; /* ACPI header */
395+ struct pci_dev * * devices ; /* target devices */
396+ int devices_cnt ; /* target device count */
397+ u8 include_all :1 ; /* include all ports */
398+ };
399+
400+ static LIST_HEAD (dmar_atsr_units );
401+ static LIST_HEAD (dmar_rmrr_units );
402+
403+ #define for_each_rmrr_units (rmrr ) \
404+ list_for_each_entry(rmrr, &dmar_rmrr_units, list)
405+
383406static void flush_unmaps_timeout (unsigned long data );
384407
385408static DEFINE_TIMER (unmap_timer , flush_unmaps_timeout , 0 , 0 ) ;
@@ -403,6 +426,8 @@ static int timer_on;
403426static long list_size ;
404427
405428static void domain_remove_dev_info (struct dmar_domain * domain );
429+ static void domain_remove_one_dev_info (struct dmar_domain * domain ,
430+ struct pci_dev * pdev );
406431
407432#ifdef CONFIG_INTEL_IOMMU_DEFAULT_ON
408433int dmar_disabled = 0 ;
@@ -2243,8 +2268,6 @@ static int __init si_domain_init(int hw)
22432268 return 0 ;
22442269}
22452270
2246- static void domain_remove_one_dev_info (struct dmar_domain * domain ,
2247- struct pci_dev * pdev );
22482271static int identity_mapping (struct pci_dev * pdev )
22492272{
22502273 struct device_domain_info * info ;
@@ -3432,8 +3455,6 @@ static void __init init_iommu_pm_ops(void)
34323455static inline void init_iommu_pm_ops (void ) {}
34333456#endif /* CONFIG_PM */
34343457
3435- LIST_HEAD (dmar_rmrr_units );
3436-
34373458static void __init dmar_register_rmrr_unit (struct dmar_rmrr_unit * rmrr )
34383459{
34393460 list_add (& rmrr -> list , & dmar_rmrr_units );
@@ -3470,8 +3491,6 @@ rmrr_parse_dev(struct dmar_rmrr_unit *rmrru)
34703491 rmrr -> segment );
34713492}
34723493
3473- static LIST_HEAD (dmar_atsr_units );
3474-
34753494int __init dmar_parse_one_atsr (struct acpi_dmar_header * hdr )
34763495{
34773496 struct acpi_dmar_atsr * atsr ;
0 commit comments