vtd: Remove dead code.

Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
This commit is contained in:
Keir Fraser committed 2008-05-29 14:30:48 +01:00
1 parent 8a41cd8573
commit cedcb04c7d
4 files changed
-214

No files matched your search

-33
View File
@@ -147,39 +147,6 @@ struct acpi_drhd_unit * acpi_find_matched_drhd_unit(struct pci_dev *dev)
return NULL;
}
struct acpi_rmrr_unit * acpi_find_matched_rmrr_unit(struct pci_dev *dev)
{
struct acpi_rmrr_unit *rmrr;
list_for_each_entry ( rmrr, &acpi_rmrr_units, list )
if ( acpi_pci_device_match(rmrr->devices,
rmrr->devices_cnt, dev) )
return rmrr;
return NULL;
}
struct acpi_atsr_unit * acpi_find_matched_atsr_unit(struct pci_dev *dev)
{
struct acpi_atsr_unit *atsru;
struct acpi_atsr_unit *all_ports_atsru;
all_ports_atsru = NULL;
list_for_each_entry ( atsru, &acpi_atsr_units, list )
{
if ( atsru->all_ports )
all_ports_atsru = atsru;
if ( acpi_pci_device_match(atsru->devices,
atsru->devices_cnt, dev) )
return atsru;
}
if ( all_ports_atsru )
return all_ports_atsru;;
return NULL;
}
static int scope_device_count(void *start, void *end)
{
struct acpi_dev_scope *scope;
-1
View File
@@ -86,7 +86,6 @@ struct acpi_atsr_unit {
}
struct acpi_drhd_unit * acpi_find_matched_drhd_unit(struct pci_dev *dev);
struct acpi_rmrr_unit * acpi_find_matched_rmrr_unit(struct pci_dev *dev);
#define DMAR_TYPE 1
#define RMRR_TYPE 2
-178
View File
@@ -123,181 +123,3 @@ void hvm_dpci_isairq_eoi(struct domain *d, unsigned int isairq)
}
}
}
void iommu_set_pgd(struct domain *d)
{
struct hvm_iommu *hd = domain_hvm_iommu(d);
unsigned long p2m_table;
p2m_table = mfn_x(pagetable_get_mfn(d->arch.phys_table));
if ( paging_mode_hap(d) )
{
int level = agaw_to_level(hd->agaw);
struct dma_pte *dpte = NULL;
mfn_t pgd_mfn;
switch ( level )
{
case VTD_PAGE_TABLE_LEVEL_3:
dpte = map_domain_page(p2m_table);
if ( !dma_pte_present(*dpte) )
{
gdprintk(XENLOG_ERR VTDPREFIX,
"iommu_set_pgd: second level wasn't there\n");
unmap_domain_page(dpte);
return;
}
pgd_mfn = _mfn(dma_pte_addr(*dpte) >> PAGE_SHIFT_4K);
hd->pgd_maddr = (paddr_t)(mfn_x(pgd_mfn)) << PAGE_SHIFT_4K;
unmap_domain_page(dpte);
break;
case VTD_PAGE_TABLE_LEVEL_4:
pgd_mfn = _mfn(p2m_table);
hd->pgd_maddr = (paddr_t)(mfn_x(pgd_mfn)) << PAGE_SHIFT_4K;
break;
default:
gdprintk(XENLOG_ERR VTDPREFIX,
"iommu_set_pgd:Unsupported p2m table sharing level!\n");
break;
}
}
else
{
#if CONFIG_PAGING_LEVELS == 3
struct dma_pte *pte = NULL, *pgd_vaddr = NULL, *pmd_vaddr = NULL;
int i;
u64 pmd_maddr;
unsigned long flags;
l3_pgentry_t *l3e;
int level = agaw_to_level(hd->agaw);
spin_lock_irqsave(&hd->mapping_lock, flags);
hd->pgd_maddr = alloc_pgtable_maddr();
if ( hd->pgd_maddr == 0 )
{
spin_unlock_irqrestore(&hd->mapping_lock, flags);
gdprintk(XENLOG_ERR VTDPREFIX,
"Allocate pgd memory failed!\n");
return;
}
pgd_vaddr = map_vtd_domain_page(hd->pgd_maddr);
l3e = map_domain_page(p2m_table);
switch ( level )
{
case VTD_PAGE_TABLE_LEVEL_3: /* Weybridge */
/* We only support 8 entries for the PAE L3 p2m table */
for ( i = 0; i < 8 ; i++ )
{
/* Don't create new L2 entry, use ones from p2m table */
pgd_vaddr[i].val = l3e[i].l3 | _PAGE_PRESENT | _PAGE_RW;
}
break;
case VTD_PAGE_TABLE_LEVEL_4: /* Stoakley */
/* We allocate one more page for the top vtd page table. */
pmd_maddr = alloc_pgtable_maddr();
if ( pmd_maddr == 0 )
{
unmap_vtd_domain_page(pgd_vaddr);
unmap_domain_page(l3e);
spin_unlock_irqrestore(&hd->mapping_lock, flags);
gdprintk(XENLOG_ERR VTDPREFIX,
"Allocate pmd memory failed!\n");
return;
}
pte = &pgd_vaddr[0];
dma_set_pte_addr(*pte, pmd_maddr);
dma_set_pte_readable(*pte);
dma_set_pte_writable(*pte);
pmd_vaddr = map_vtd_domain_page(pmd_maddr);
for ( i = 0; i < 8; i++ )
{
/* Don't create new L2 entry, use ones from p2m table */
pmd_vaddr[i].val = l3e[i].l3 | _PAGE_PRESENT | _PAGE_RW;
}
unmap_vtd_domain_page(pmd_vaddr);
break;
default:
gdprintk(XENLOG_ERR VTDPREFIX,
"iommu_set_pgd:Unsupported p2m table sharing level!\n");
break;
}
unmap_vtd_domain_page(pgd_vaddr);
unmap_domain_page(l3e);
spin_unlock_irqrestore(&hd->mapping_lock, flags);
#elif CONFIG_PAGING_LEVELS == 4
mfn_t pgd_mfn;
l3_pgentry_t *l3e;
int level = agaw_to_level(hd->agaw);
switch ( level )
{
case VTD_PAGE_TABLE_LEVEL_3:
l3e = map_domain_page(p2m_table);
if ( (l3e_get_flags(*l3e) & _PAGE_PRESENT) == 0 )
{
gdprintk(XENLOG_ERR VTDPREFIX,
"iommu_set_pgd: second level wasn't there\n");
unmap_domain_page(l3e);
return;
}
pgd_mfn = _mfn(l3e_get_pfn(*l3e));
hd->pgd_maddr = (paddr_t)(mfn_x(pgd_mfn)) << PAGE_SHIFT_4K;
unmap_domain_page(l3e);
break;
case VTD_PAGE_TABLE_LEVEL_4:
pgd_mfn = _mfn(p2m_table);
hd->pgd_maddr = (paddr_t)(mfn_x(pgd_mfn)) << PAGE_SHIFT_4K;
break;
default:
gdprintk(XENLOG_ERR VTDPREFIX,
"iommu_set_pgd:Unsupported p2m table sharing level!\n");
break;
}
#endif
}
}
void iommu_free_pgd(struct domain *d)
{
#if CONFIG_PAGING_LEVELS == 3
struct hvm_iommu *hd = domain_hvm_iommu(d);
int level = agaw_to_level(hd->agaw);
struct dma_pte *pgd_vaddr = NULL;
switch ( level )
{
case VTD_PAGE_TABLE_LEVEL_3:
if ( hd->pgd_maddr != 0 )
{
free_pgtable_maddr(hd->pgd_maddr);
hd->pgd_maddr = 0;
}
break;
case VTD_PAGE_TABLE_LEVEL_4:
if ( hd->pgd_maddr != 0 )
{
pgd_vaddr = (struct dma_pte*)map_vtd_domain_page(hd->pgd_maddr);
if ( pgd_vaddr[0].val != 0 )
free_pgtable_maddr(pgd_vaddr[0].val);
unmap_vtd_domain_page(pgd_vaddr);
free_pgtable_maddr(hd->pgd_maddr);
hd->pgd_maddr = 0;
}
break;
default:
gdprintk(XENLOG_ERR VTDPREFIX,
"Unsupported p2m table sharing level!\n");
break;
}
#endif
}
-2
View File
@@ -68,8 +68,6 @@ void reassign_device_ownership(struct domain *source,
u8 bus, u8 devfn);
int iommu_map_page(struct domain *d, unsigned long gfn, unsigned long mfn);
int iommu_unmap_page(struct domain *d, unsigned long gfn);
void iommu_set_pgd(struct domain *d);
void iommu_free_pgd(struct domain *d);
void iommu_domain_teardown(struct domain *d);
int hvm_do_IRQ_dpci(struct domain *d, unsigned int irq);
int dpci_ioport_intercept(ioreq_t *p);
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.