xref: /freebsd-src/sys/dev/hyperv/vmbus/hyperv_busdma.c (revision fdafd315ad0d0f28a11b9fb4476a9ab059c62b92)
17e118515SSepherosa Ziehau /*-
27e118515SSepherosa Ziehau  * Copyright (c) 2016 Microsoft Corp.
37e118515SSepherosa Ziehau  * All rights reserved.
47e118515SSepherosa Ziehau  *
57e118515SSepherosa Ziehau  * Redistribution and use in source and binary forms, with or without
67e118515SSepherosa Ziehau  * modification, are permitted provided that the following conditions
77e118515SSepherosa Ziehau  * are met:
87e118515SSepherosa Ziehau  * 1. Redistributions of source code must retain the above copyright
97e118515SSepherosa Ziehau  *    notice unmodified, this list of conditions, and the following
107e118515SSepherosa Ziehau  *    disclaimer.
117e118515SSepherosa Ziehau  * 2. Redistributions in binary form must reproduce the above copyright
127e118515SSepherosa Ziehau  *    notice, this list of conditions and the following disclaimer in the
137e118515SSepherosa Ziehau  *    documentation and/or other materials provided with the distribution.
147e118515SSepherosa Ziehau  *
157e118515SSepherosa Ziehau  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
167e118515SSepherosa Ziehau  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
177e118515SSepherosa Ziehau  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
187e118515SSepherosa Ziehau  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
197e118515SSepherosa Ziehau  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
207e118515SSepherosa Ziehau  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
217e118515SSepherosa Ziehau  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
227e118515SSepherosa Ziehau  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
237e118515SSepherosa Ziehau  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
247e118515SSepherosa Ziehau  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
257e118515SSepherosa Ziehau  */
267e118515SSepherosa Ziehau 
277e118515SSepherosa Ziehau #include <sys/param.h>
287e118515SSepherosa Ziehau #include <sys/systm.h>
297e118515SSepherosa Ziehau #include <sys/bus.h>
307e118515SSepherosa Ziehau 
317e118515SSepherosa Ziehau #include <machine/bus.h>
327e118515SSepherosa Ziehau 
337e118515SSepherosa Ziehau #include <dev/hyperv/include/hyperv_busdma.h>
347e118515SSepherosa Ziehau 
35*d8313c45SSepherosa Ziehau #define HYPERV_DMA_MASK	(BUS_DMA_WAITOK | BUS_DMA_NOWAIT | BUS_DMA_ZERO)
367e118515SSepherosa Ziehau 
377e118515SSepherosa Ziehau void
hyperv_dma_map_paddr(void * arg,bus_dma_segment_t * segs,int nseg,int error)387e118515SSepherosa Ziehau hyperv_dma_map_paddr(void *arg, bus_dma_segment_t *segs, int nseg, int error)
397e118515SSepherosa Ziehau {
407e118515SSepherosa Ziehau 	bus_addr_t *paddr = arg;
417e118515SSepherosa Ziehau 
427e118515SSepherosa Ziehau 	if (error)
437e118515SSepherosa Ziehau 		return;
447e118515SSepherosa Ziehau 
457e118515SSepherosa Ziehau 	KASSERT(nseg == 1, ("too many segments %d!", nseg));
467e118515SSepherosa Ziehau 	*paddr = segs->ds_addr;
477e118515SSepherosa Ziehau }
487e118515SSepherosa Ziehau 
49