Remove another remnant of PV domU support and assume that we always run

with an automatically translated physmap under XEN.

Reviewed by:	royger (earlier version)
Differential Revision:	https://reviews.freebsd.org/D3325
This commit is contained in:
John Baldwin 2015-08-14 18:38:39 +00:00
parent e6e0582bd4
commit 3ebe4c01f7
2 changed files with 4 additions and 73 deletions

View File

@ -280,8 +280,6 @@ struct netfront_info {
struct callout xn_stat_ch;
u_long rx_pfn_array[NET_RX_RING_SIZE];
multicall_entry_t rx_mcl[NET_RX_RING_SIZE+1];
mmu_update_t rx_mmu[NET_RX_RING_SIZE];
struct ifmedia sc_media;
bool xn_resume;
@ -882,13 +880,6 @@ network_alloc_rx_buffers(struct netfront_info *sc)
gnttab_grant_foreign_transfer_ref(ref,
otherend_id, pfn);
sc->rx_pfn_array[nr_flips] = pfn;
if (!xen_feature(XENFEAT_auto_translated_physmap)) {
/* Remove this page before passing
* back to Xen.
*/
MULTI_update_va_mapping(&sc->rx_mcl[i],
vaddr, 0, 0);
}
nr_flips++;
} else {
gnttab_grant_foreign_access_ref(ref,
@ -918,25 +909,6 @@ network_alloc_rx_buffers(struct netfront_info *sc)
reservation.extent_order = 0;
reservation.address_bits = 0;
reservation.domid = DOMID_SELF;
if (!xen_feature(XENFEAT_auto_translated_physmap)) {
/* After all PTEs have been zapped, flush the TLB. */
sc->rx_mcl[i-1].args[MULTI_UVMFLAGS_INDEX] =
UVMF_TLB_FLUSH|UVMF_ALL;
/* Give away a batch of pages. */
sc->rx_mcl[i].op = __HYPERVISOR_memory_op;
sc->rx_mcl[i].args[0] = XENMEM_decrease_reservation;
sc->rx_mcl[i].args[1] = (u_long)&reservation;
/* Zap PTEs and give away pages in one big multicall. */
(void)HYPERVISOR_multicall(sc->rx_mcl, i+1);
if (__predict_false(sc->rx_mcl[i].result != i ||
HYPERVISOR_memory_op(XENMEM_decrease_reservation,
&reservation) != i))
panic("%s: unable to reduce memory "
"reservation\n", __func__);
}
} else {
wmb();
}
@ -961,7 +933,6 @@ xn_rxeof(struct netfront_info *np)
struct netif_rx_response *rx = &rinfo.rx;
struct netif_extra_info *extras = rinfo.extras;
RING_IDX i, rp;
multicall_entry_t *mcl;
struct mbuf *m;
struct mbufq rxq, errq;
int err, pages_flipped = 0, work_to_do;
@ -1022,19 +993,6 @@ xn_rxeof(struct netfront_info *np)
#ifdef notyet
balloon_update_driver_allowance(-pages_flipped);
#endif
/* Do all the remapping work, and M->P updates, in one big
* hypercall.
*/
if (!!xen_feature(XENFEAT_auto_translated_physmap)) {
mcl = np->rx_mcl + pages_flipped;
mcl->op = __HYPERVISOR_mmu_update;
mcl->args[0] = (u_long)np->rx_mmu;
mcl->args[1] = pages_flipped;
mcl->args[2] = 0;
mcl->args[3] = DOMID_SELF;
(void)HYPERVISOR_multicall(np->rx_mcl,
pages_flipped + 1);
}
}
mbufq_drain(&errq);
@ -1273,8 +1231,6 @@ xennet_get_responses(struct netfront_info *np,
int *pages_flipped_p)
{
int pages_flipped = *pages_flipped_p;
struct mmu_update *mmu;
struct multicall_entry *mcl;
struct netif_rx_response *rx = &rinfo->rx;
struct netif_extra_info *extras = rinfo->extras;
struct mbuf *m, *m0, *m_prev;
@ -1346,22 +1302,6 @@ xennet_get_responses(struct netfront_info *np,
goto next;
}
if (!xen_feature( XENFEAT_auto_translated_physmap)) {
/* Remap the page. */
void *vaddr = mtod(m, void *);
uint32_t pfn;
mcl = np->rx_mcl + pages_flipped;
mmu = np->rx_mmu + pages_flipped;
MULTI_update_va_mapping(mcl, (u_long)vaddr,
(((vm_paddr_t)mfn) << PAGE_SHIFT) | PG_RW |
PG_V | PG_M | PG_A, 0);
pfn = (uintptr_t)m->m_ext.ext_arg1;
mmu->ptr = ((vm_paddr_t)mfn << PAGE_SHIFT) |
MMU_MACHPHYS_UPDATE;
mmu->val = pfn;
}
pages_flipped++;
} else {
ret = gnttab_end_foreign_access_ref(ref);

View File

@ -126,10 +126,8 @@ gnttab_set_map_op(struct gnttab_map_grant_ref *map, vm_paddr_t addr,
{
if (flags & GNTMAP_contains_pte)
map->host_addr = addr;
else if (xen_feature(XENFEAT_auto_translated_physmap))
map->host_addr = vtophys(addr);
else
map->host_addr = addr;
map->host_addr = vtophys(addr);
map->flags = flags;
map->ref = ref;
@ -142,10 +140,8 @@ gnttab_set_unmap_op(struct gnttab_unmap_grant_ref *unmap, vm_paddr_t addr,
{
if (flags & GNTMAP_contains_pte)
unmap->host_addr = addr;
else if (xen_feature(XENFEAT_auto_translated_physmap))
unmap->host_addr = vtophys(addr);
else
unmap->host_addr = addr;
unmap->host_addr = vtophys(addr);
unmap->handle = handle;
unmap->dev_bus_addr = 0;
@ -155,13 +151,8 @@ static inline void
gnttab_set_replace_op(struct gnttab_unmap_and_replace *unmap, vm_paddr_t addr,
vm_paddr_t new_addr, grant_handle_t handle)
{
if (xen_feature(XENFEAT_auto_translated_physmap)) {
unmap->host_addr = vtophys(addr);
unmap->new_addr = vtophys(new_addr);
} else {
unmap->host_addr = addr;
unmap->new_addr = new_addr;
}
unmap->host_addr = vtophys(addr);
unmap->new_addr = vtophys(new_addr);
unmap->handle = handle;
}