]> xenbits.xensource.com Git - osstest/rumprun.git/commitdiff
Split PCI and DMA hypercalls into separate files.
authorAntti Kantee <pooka@iki.fi>
Tue, 22 Sep 2015 01:33:57 +0000 (01:33 +0000)
committerAntti Kantee <pooka@iki.fi>
Tue, 22 Sep 2015 01:33:57 +0000 (01:33 +0000)
PCI (usually) implies DMA, but DMA doesn't imply PCI.

platform/hw/pci/Makefile.pci
platform/hw/pci/rumpdma.c [new file with mode: 0644]
platform/hw/pci/rumppci.c
platform/xen/pci/Makefile.pci
platform/xen/pci/rumphyper_dma.c [new file with mode: 0644]
platform/xen/pci/rumphyper_pci.c

index fd940280eab9275f15bce4e5f0c208195d741b8e..4fafa7b819dccbaa8f3b0e98d618803b2f09e3bd 100644 (file)
@@ -3,7 +3,7 @@ PCIDIR!=        cd ${.PARSEDIR} ; pwd -P
 .include "${PCIDIR}/../config.mk"
 .include "${BUILDRUMP_TOOLFLAGS}"
 
-PCI_HYPERCALLS=                rumppci.c
+PCI_HYPERCALLS=                rumppci.c rumpdma.c
 PCI_HYPERCALLS_PATH:=  ${PCIDIR}
 PCI_CPPFLAGS:=         -I${PCIDIR}/../include
 
diff --git a/platform/hw/pci/rumpdma.c b/platform/hw/pci/rumpdma.c
new file mode 100644 (file)
index 0000000..63a83be
--- /dev/null
@@ -0,0 +1,82 @@
+/*-
+ * Copyright (c) 2013, 2014 Antti Kantee.  All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <hw/types.h>
+#include <hw/kernel.h>
+
+#include <bmk-core/pgalloc.h>
+
+#include <bmk-pcpu/pcpu.h>
+
+#include "pci_user.h"
+
+int
+rumpcomp_pci_dmalloc(size_t size, size_t align,
+       unsigned long *pap, unsigned long *vap)
+{
+       void *mem;
+       int i;
+
+        for (i = 0; size >> (i + BMK_PCPU_PAGE_SHIFT); i++)
+                continue;
+
+       mem = bmk_pgalloc(i);
+       if (!mem)
+               return BMK_ENOMEM;
+
+       *pap = (unsigned long)mem;
+       *vap = (unsigned long)mem;
+
+       return 0;
+}
+
+int
+rumpcomp_pci_dmamem_map(struct rumpcomp_pci_dmaseg *dss, size_t nseg,
+       size_t totlen, void **vap)
+{
+
+       if (nseg > 1)
+               return 1;
+
+       *vap = (void *)dss[0].ds_vacookie;
+       return 0;
+}
+
+void
+rumpcomp_pci_dmafree(unsigned long mem, size_t size)
+{
+       int i;
+
+        for (i = 0; size >> (i + BMK_PCPU_PAGE_SHIFT); i++)
+                continue;
+       bmk_pgfree((void *)mem, i);
+}
+
+unsigned long
+rumpcomp_pci_virt_to_mach(void *virt)
+{
+
+       return (unsigned long)virt;
+}
index 2d080c0436e4e504a2821a436ffe1b55070d52fe..d2e8e66e86af022a53f052df337733f7a26ee7f4 100644 (file)
@@ -112,52 +112,3 @@ rumpcomp_pci_map(unsigned long addr, unsigned long len)
 
        return (void *)addr;
 }
-
-int
-rumpcomp_pci_dmalloc(size_t size, size_t align,
-       unsigned long *pap, unsigned long *vap)
-{
-       void *mem;
-       int i;
-
-        for (i = 0; size >> (i + BMK_PCPU_PAGE_SHIFT); i++)
-                continue;
-
-       mem = bmk_pgalloc(i);
-       if (!mem)
-               return BMK_ENOMEM;
-
-       *pap = (unsigned long)mem;
-       *vap = (unsigned long)mem;
-
-       return 0;
-}
-
-int
-rumpcomp_pci_dmamem_map(struct rumpcomp_pci_dmaseg *dss, size_t nseg,
-       size_t totlen, void **vap)
-{
-
-       if (nseg > 1)
-               return 1;
-
-       *vap = (void *)dss[0].ds_vacookie;
-       return 0;
-}
-
-void
-rumpcomp_pci_dmafree(unsigned long mem, size_t size)
-{
-       int i;
-
-        for (i = 0; size >> (i + BMK_PCPU_PAGE_SHIFT); i++)
-                continue;
-       bmk_pgfree((void *)mem, i);
-}
-
-unsigned long
-rumpcomp_pci_virt_to_mach(void *virt)
-{
-
-       return (unsigned long)virt;
-}
index 764128221532e418bb75198fd85e7ef3bb94c3eb..3b990e014b6387d6682bf3f5d66ba86190b78829 100644 (file)
@@ -3,7 +3,7 @@ PCIDIR!=        cd ${.PARSEDIR} ; pwd -P
 .include "${PCIDIR}/../config.mk"
 .include "${BUILDRUMP_TOOLFLAGS}"
 
-PCI_HYPERCALLS=                rumphyper_pci.c
+PCI_HYPERCALLS=                rumphyper_pci.c rumphyper_dma.c
 PCI_HYPERCALLS_PATH:=  ${PCIDIR}
 PCI_CPPFLAGS:=         -I${PCIDIR}/../xen/include
 
diff --git a/platform/xen/pci/rumphyper_dma.c b/platform/xen/pci/rumphyper_dma.c
new file mode 100644 (file)
index 0000000..12ad03e
--- /dev/null
@@ -0,0 +1,73 @@
+/*-
+ * Copyright (c) 2013 Antti Kantee.  All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <mini-os/os.h>
+#include <mini-os/ioremap.h>
+#include <mini-os/pcifront.h>
+#include <mini-os/events.h>
+#include <mini-os/mm.h>
+#include <mini-os/hypervisor.h>
+
+#include <bmk-core/errno.h>
+#include <bmk-core/memalloc.h>
+
+#include "pci_user.h"
+
+int
+rumpcomp_pci_dmalloc(size_t size, size_t align,
+       unsigned long *pap, unsigned long *vap)
+{
+       unsigned long va;
+       int i;
+
+       for (i = 0; size >> (i + PAGE_SHIFT); i++)
+               continue;
+
+       va = minios_alloc_contig_pages(i, 0); /* XXX: MD interface */
+       *vap = (uintptr_t)va;
+       *pap = virt_to_mach(va);
+
+       return 0;
+}
+
+int
+rumpcomp_pci_dmamem_map(struct rumpcomp_pci_dmaseg *dss, size_t nseg,
+       size_t totlen, void **vap)
+{
+
+       if (nseg > 1) {
+               return BMK_EIO;
+       }
+       *vap = (void *)dss[0].ds_vacookie;
+
+       return 0;
+}
+
+unsigned long
+rumpcomp_pci_virt_to_mach(void *virt)
+{
+
+       return virt_to_mach(virt);
+}
index dac1cce511f033a5ae5561616944602454e0c316..4301704616d2b2cd2c36cc3c8ad2793a55a07c26 100644 (file)
@@ -112,40 +112,3 @@ rumpcomp_pci_irq_establish(unsigned cookie, int (*handler)(void *), void *data)
 
        return ihan;
 }
-
-int
-rumpcomp_pci_dmalloc(size_t size, size_t align,
-       unsigned long *pap, unsigned long *vap)
-{
-       unsigned long va;
-       int i;
-
-       for (i = 0; size >> (i + PAGE_SHIFT); i++)
-               continue;
-
-       va = minios_alloc_contig_pages(i, 0); /* XXX: MD interface */
-       *vap = (uintptr_t)va;
-       *pap = virt_to_mach(va);
-
-       return 0;
-}
-
-int
-rumpcomp_pci_dmamem_map(struct rumpcomp_pci_dmaseg *dss, size_t nseg,
-       size_t totlen, void **vap)
-{
-
-       if (nseg > 1) {
-               return BMK_EIO;
-       }
-       *vap = (void *)dss[0].ds_vacookie;
-
-       return 0;
-}
-
-unsigned long
-rumpcomp_pci_virt_to_mach(void *virt)
-{
-
-       return virt_to_mach(virt);
-}