AMD IOV: Fix dom0 initialization
PATCH 1/1 AMD IOV: Fix dom0 initialization
Keir,
This patch fixes dom0 initialization issue in the same way as c/s 17501.
Wei
Signed-off-by Wei Wang <[email protected]>
Signature · 12 lines
AMD Saxony, Dresden, Germany Operating System Research Center Legal Information: AMD Saxony Limited Liability Company & Co. KG Sitz (Geschäftsanschrift): Wilschdorfer Landstr. 101, 01109 Dresden, Deutschland Registergericht Dresden: HRA 4896 vertretungsberechtigter Komplementär: AMD Saxony LLC (Sitz Wilmington, Delaware, USA) Geschäftsführer der AMD Saxony LLC: Dr. Hans-R. Deppe, Thomas McCoy
xen/drivers/passthrough/amd/pci_amd_iommu.c +16 -17
@@ -290,9 +290,9 @@ static void amd_iommu_setup_domain_devic } } -static void __init amd_iommu_setup_dom0_devices (void ) -{ -struct hvm_iommu *hd =domain_hvm_iommu (dom0); +static void amd_iommu_setup_dom0_devices (struct domain *d) +{ +struct hvm_iommu *hd =domain_hvm_iommu (d);struct amd_iommu *iommu;struct pci_dev *pdev;int bus, dev, func;
@@ -322,7 +322,7 @@ static void __init amd_iommu_setup_dom0_ find_iommu_for_device(bus, pdev->devfn) : NULL;if ( iommu ) -amd_iommu_setup_domain_device (dom0, iommu, bdf); +amd_iommu_setup_domain_device (d, iommu, bdf); } } }
@@ -330,7 +330,6 @@ static void __init amd_iommu_setup_dom0_int amd_iov_detect (void ) { -unsigned long i;int last_bus;struct amd_iommu *iommu, *next;
@@ -372,14 +371,6 @@ int amd_iov_detect(void) goto error_out; } -if (iommu_domain_init (dom0) !=0 ) - goto error_out; - -/* setup 1:1 page table for dom0 */ -for ( i =0 ; i < max_page; i++ ) -amd_iommu_map_page (dom0, i, i); - -amd_iommu_setup_dom0_devices ();return 0 ; error_out:
@@ -451,10 +442,18 @@ static int amd_iommu_domain_init(structreturn -ENOMEM ; } -if (is_hvm_domain (domain) ) - hd->paging_mode =IOMMU_PAGE_TABLE_LEVEL_4 ; -else - hd->paging_mode =get_paging_mode (max_page); + hd->paging_mode =is_hvm_domain (domain)? +IOMMU_PAGE_TABLE_LEVEL_4 :get_paging_mode (max_page); + +if ( domain->domain_id ==0 ) + { +unsigned long i; +/* setup 1:1 page table for dom0 */ +for ( i =0 ; i < max_page; i++ ) +amd_iommu_map_page (domain, i, i); + +amd_iommu_setup_dom0_devices (domain); + } hd->domain_id = domain->domain_id;
_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel