Index: sys/x86/xen/xenpv.c =================================================================== --- sys/x86/xen/xenpv.c +++ sys/x86/xen/xenpv.c @@ -45,6 +45,7 @@ #include #include +#include #include "xenmem_if.h" @@ -145,6 +146,19 @@ return (bus_release_resource(child, SYS_RES_MEMORY, res_id, res)); } +static bus_dma_tag_t +xenpv_get_dma_tag(device_t bus, device_t child) +{ + bus_dma_tag_t parent, newtag; + + parent = bus_get_dma_tag(bus); + + newtag = xen_get_dma_tag(parent); + KASSERT(newtag != NULL, ("%s: Failed to create Xen DMA tag", __func__)); + + return (newtag); +} + static device_method_t xenpv_methods[] = { /* Device interface */ DEVMETHOD(device_identify, xenpv_identify), @@ -159,6 +173,7 @@ DEVMETHOD(bus_release_resource, bus_generic_release_resource), DEVMETHOD(bus_activate_resource, bus_generic_activate_resource), DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource), + DEVMETHOD(bus_get_dma_tag, xenpv_get_dma_tag), /* Interface to allocate memory for foreign mappings */ DEVMETHOD(xenmem_alloc, xenpv_alloc_physmem),