CVS commit: src/sys/rump/dev/lib/libpci
Module Name:src Committed By: christos Date: Mon Nov 2 18:58:06 UTC 2020 Modified Files: src/sys/rump/dev/lib/libpci: rumpdev_bus_dma.c Log Message: PR/55777: Ruslan Nikolaev: use MIN() from instead of min() To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/rump/dev/lib/libpci/rumpdev_bus_dma.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/rump/dev/lib/libpci/rumpdev_bus_dma.c diff -u src/sys/rump/dev/lib/libpci/rumpdev_bus_dma.c:1.9 src/sys/rump/dev/lib/libpci/rumpdev_bus_dma.c:1.10 --- src/sys/rump/dev/lib/libpci/rumpdev_bus_dma.c:1.9 Sat Sep 5 12:30:12 2020 +++ src/sys/rump/dev/lib/libpci/rumpdev_bus_dma.c Mon Nov 2 13:58:06 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpdev_bus_dma.c,v 1.9 2020/09/05 16:30:12 riastradh Exp $ */ +/* $NetBSD: rumpdev_bus_dma.c,v 1.10 2020/11/02 18:58:06 christos Exp $ */ /*- * Copyright (c) 2013 Antti Kantee @@ -68,7 +68,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: rumpdev_bus_dma.c,v 1.9 2020/09/05 16:30:12 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rumpdev_bus_dma.c,v 1.10 2020/11/02 18:58:06 christos Exp $"); #include #include @@ -192,7 +192,7 @@ _bus_dmamap_load_buffer(bus_dma_tag_t t, sgsize = PAGE_SIZE - ((u_long)vaddr & PGOFSET); if (buflen < sgsize) sgsize = buflen; - sgsize = min(sgsize, map->dm_maxsegsz); + sgsize = MIN(sgsize, map->dm_maxsegsz); /* * Make sure we don't cross any boundaries.
CVS commit: src/sys/rump/dev/lib/libpci
Module Name:src Committed By: pooka Date: Tue May 10 19:38:29 UTC 2016 Modified Files: src/sys/rump/dev/lib/libpci: Makefile Log Message: Avoid '.' in variable names which are expected to be passed to this Makefile via the env. That character is strictly speaking not allowed by POSIX in an exported variable name, and at least dash >= 0.58 refuses to export such variables. Furthermore, since the individual CFLAGS/CPPFLAGS/etc. variables are not comprehensive enough for all cases (e.g. HURD), just support the .includable version from now on, i.e. RUMPCOMP_MAKEFILEINC_rumpdev_pci. curious failure mode debugged by Martin Lucina To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/sys/rump/dev/lib/libpci/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/rump/dev/lib/libpci/Makefile diff -u src/sys/rump/dev/lib/libpci/Makefile:1.10 src/sys/rump/dev/lib/libpci/Makefile:1.11 --- src/sys/rump/dev/lib/libpci/Makefile:1.10 Tue Jan 26 23:12:15 2016 +++ src/sys/rump/dev/lib/libpci/Makefile Tue May 10 19:38:29 2016 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.10 2016/01/26 23:12:15 pooka Exp $ +# $NetBSD: Makefile,v 1.11 2016/05/10 19:38:29 pooka Exp $ # RUMPTOP= ${TOPRUMP} @@ -28,23 +28,36 @@ SRCS+= pci_at_mainbus.c .error RUMP_PCI_IOSPACE defined in Makefile. Use userfeatures.h instead. .endif +RUMPCOMP_USER_CPPFLAGS:=-I${.PARSEDIR} + +# current state-of-the-art interface (remains to be seen if it's "good enuf") +.ifdef RUMPCOMP_MAKEFILEINC_rumpdev_pci +.include "${RUMPCOMP_MAKEFILEINC_rumpdev_pci}" +.endif + +# old-style ("compat") interfaces. will go away some day or year. +# why? the "protocol" requires passing variables via the env, and +# the names include dots which POSIX does not, strictly speaking, +# allow in env names. There is at least one shell (dash >= 0.58) +# which refuses to pass variables with dots. +.if defined(RUMPCOMP_USER_SRCS.rumpdev_pci) \ +|| defined(RUMPCOMP_MAKEFILEINC.rumpdev_pci) +.warning Use new style RUMPCOMP_MAKEFILEINC_rumpdev_pci +.endif +.ifdef RUMPCOMP_USER_PATH.rumpdev_pci .PATH: ${RUMPCOMP_USER_PATH.rumpdev_pci} RUMPCOMP_USER_SRCS= ${RUMPCOMP_USER_SRCS.rumpdev_pci} -MYDIR:= ${.PARSEDIR} -RUMPCOMP_USER_CPPFLAGS= -I${MYDIR} RUMPCOMP_USER_CPPFLAGS+=${RUMPCOMP_USER_CPPFLAGS.rumpdev_pci} RUMPCOMP_USER_CFLAGS= ${RUMPCOMP_USER_CFLAGS.rumpdev_pci} - CPPFLAGS+= ${RUMPCOMP_CPPFLAGS.rumpdev_pci} - -# XXX: messy -.undef RUMPKERN_ONLY - +.endif .ifdef RUMPCOMP_MAKEFILEINC.rumpdev_pci -.warning RUMPCOMP_MAKEFILEINC interface is unstable and may change .include "${RUMPCOMP_MAKEFILEINC.rumpdev_pci}" .endif +# XXX: messy +.undef RUMPKERN_ONLY + .include "${RUMPTOP}/Makefile.rump" .include .include
CVS commit: src/sys/rump/dev/lib/libpci
Module Name:src Committed By: pooka Date: Mon Jan 18 14:37:54 UTC 2016 Modified Files: src/sys/rump/dev/lib/libpci: rumpdev_bus_space.c Log Message: Implement the inverse of a nop. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c diff -u src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c:1.6 src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c:1.7 --- src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c:1.6 Tue Aug 11 22:28:34 2015 +++ src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c Mon Jan 18 14:37:53 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpdev_bus_space.c,v 1.6 2015/08/11 22:28:34 pooka Exp $ */ +/* $NetBSD: rumpdev_bus_space.c,v 1.7 2016/01/18 14:37:53 pooka Exp $ */ /*- * Copyright (c) 2013 Antti Kantee. All Rights Reserved. @@ -272,6 +272,9 @@ bus_space_unmap(bus_space_tag_t bst, bus bus_size_t size) { + if (bst == 0) + return; + panic("%s: unimplemented", __func__); }
CVS commit: src/sys/rump/dev/lib/libpci
Module Name:src Committed By: pooka Date: Sun Nov 1 22:41:24 UTC 2015 Modified Files: src/sys/rump/dev/lib/libpci: Makefile Log Message: Allow PCI implementers to specify arbitrary makefile constructs. (interface subject to change) from Robert Millan To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/sys/rump/dev/lib/libpci/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/rump/dev/lib/libpci/Makefile diff -u src/sys/rump/dev/lib/libpci/Makefile:1.8 src/sys/rump/dev/lib/libpci/Makefile:1.9 --- src/sys/rump/dev/lib/libpci/Makefile:1.8 Mon Oct 19 16:16:33 2015 +++ src/sys/rump/dev/lib/libpci/Makefile Sun Nov 1 22:41:24 2015 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.8 2015/10/19 16:16:33 pooka Exp $ +# $NetBSD: Makefile,v 1.9 2015/11/01 22:41:24 pooka Exp $ # RUMPTOP= ${TOPRUMP} @@ -43,6 +43,11 @@ CPPFLAGS+= ${RUMPCOMP_CPPFLAGS.rumpdev_ # XXX: messy .undef RUMPKERN_ONLY +.ifdef RUMPCOMP_MAKEFILEINC.rumpdev_pci +.warning RUMPCOMP_MAKEFILEINC interface is unstable and may change +.include "${RUMPCOMP_MAKEFILEINC.rumpdev_pci}" +.endif + .include "${RUMPTOP}/Makefile.rump" .include .include
CVS commit: src/sys/rump/dev/lib/libpci
Module Name:src Committed By: pooka Date: Tue Aug 11 22:28:34 UTC 2015 Modified Files: src/sys/rump/dev/lib/libpci: rumpdev_bus_space.c Log Message: Fix handle typos/pastos in bus_space_barrier() calls To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c diff -u src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c:1.5 src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c:1.6 --- src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c:1.5 Mon Jun 15 15:38:52 2015 +++ src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c Tue Aug 11 22:28:34 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpdev_bus_space.c,v 1.5 2015/06/15 15:38:52 pooka Exp $ */ +/* $NetBSD: rumpdev_bus_space.c,v 1.6 2015/08/11 22:28:34 pooka Exp $ */ /*- * Copyright (c) 2013 Antti Kantee. All Rights Reserved. @@ -134,7 +134,7 @@ bus_space_read_multi_1(bus_space_tag_t b while (count--) { *datap++ = bus_space_read_1(bst, bsh, offset); - bus_space_barrier(bst, bst, offset, 1, BUS_SPACE_BARRIER_READ); + bus_space_barrier(bst, bsh, offset, 1, BUS_SPACE_BARRIER_READ); } } @@ -145,7 +145,7 @@ bus_space_read_multi_2(bus_space_tag_t b while (count--) { *datap++ = bus_space_read_2(bst, bsh, offset); - bus_space_barrier(bst, bst, offset, 2, BUS_SPACE_BARRIER_READ); + bus_space_barrier(bst, bsh, offset, 2, BUS_SPACE_BARRIER_READ); } } @@ -156,7 +156,7 @@ bus_space_read_multi_4(bus_space_tag_t b while (count--) { *datap++ = bus_space_read_4(bst, bsh, offset); - bus_space_barrier(bst, bst, offset, 4, BUS_SPACE_BARRIER_READ); + bus_space_barrier(bst, bsh, offset, 4, BUS_SPACE_BARRIER_READ); } } @@ -220,7 +220,7 @@ bus_space_write_multi_1(bus_space_tag_t const uint8_t value = *datap++; bus_space_write_1(bst, bsh, offset, value); - bus_space_barrier(bst, bst, offset, 1, BUS_SPACE_BARRIER_WRITE); + bus_space_barrier(bst, bsh, offset, 1, BUS_SPACE_BARRIER_WRITE); } } @@ -233,7 +233,7 @@ bus_space_write_multi_2(bus_space_tag_t const uint16_t value = *datap++; bus_space_write_2(bst, bsh, offset, value); - bus_space_barrier(bst, bst, offset, 2, BUS_SPACE_BARRIER_WRITE); + bus_space_barrier(bst, bsh, offset, 2, BUS_SPACE_BARRIER_WRITE); } } @@ -246,7 +246,7 @@ bus_space_write_multi_4(bus_space_tag_t const uint32_t value = *datap++; bus_space_write_4(bst, bsh, offset, value); - bus_space_barrier(bst, bst, offset, 4, BUS_SPACE_BARRIER_WRITE); + bus_space_barrier(bst, bsh, offset, 4, BUS_SPACE_BARRIER_WRITE); } }
CVS commit: src/sys/rump/dev/lib/libpci
Module Name:src Committed By: pooka Date: Mon Jun 15 15:38:52 UTC 2015 Modified Files: src/sys/rump/dev/lib/libpci: Makefile pci_at_mainbus.c pci_user.h rumpdev_bus_dma.c rumpdev_bus_space.c Log Message: Add a userfeature definition for iospace. I/O space is supported if that flag is given and calling the init routine succeeds (and we're on x86, which we probably need to be on anyway for this PCI component to currently be supported). Also, some adjustments to make things between flags consistent, namely deprecate the Makefile variable RUMP_PCI_IOSPACE and don't require userfeature.h to map 1:1 to the interfaces. Includes contributions from Robert Millan. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/rump/dev/lib/libpci/Makefile \ src/sys/rump/dev/lib/libpci/pci_at_mainbus.c cvs rdiff -u -r1.4 -r1.5 src/sys/rump/dev/lib/libpci/pci_user.h \ src/sys/rump/dev/lib/libpci/rumpdev_bus_dma.c \ src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/rump/dev/lib/libpci/Makefile diff -u src/sys/rump/dev/lib/libpci/Makefile:1.5 src/sys/rump/dev/lib/libpci/Makefile:1.6 --- src/sys/rump/dev/lib/libpci/Makefile:1.5 Wed Jun 3 13:41:56 2015 +++ src/sys/rump/dev/lib/libpci/Makefile Mon Jun 15 15:38:52 2015 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.5 2015/06/03 13:41:56 pooka Exp $ +# $NetBSD: Makefile,v 1.6 2015/06/15 15:38:52 pooka Exp $ # RUMPTOP= ${TOPRUMP} @@ -26,7 +26,7 @@ CPPFLAGS+= -I${.CURDIR}/opt -I${RUMPTOP} CPPFLAGS+= -I${RUMPTOP}/librump/rumpvfs .if ${RUMP_PCI_IOSPACE:Uno} == yes -CPPFLAGS+=-DRUMP_PCI_IOSPACE +.error RUMP_PCI_IOSPACE defined in Makefile. Use userfeatures.h instead. .endif .PATH: ${RUMPCOMP_USER_PATH.rumpdev_pci} Index: src/sys/rump/dev/lib/libpci/pci_at_mainbus.c diff -u src/sys/rump/dev/lib/libpci/pci_at_mainbus.c:1.5 src/sys/rump/dev/lib/libpci/pci_at_mainbus.c:1.6 --- src/sys/rump/dev/lib/libpci/pci_at_mainbus.c:1.5 Fri Aug 22 14:28:58 2014 +++ src/sys/rump/dev/lib/libpci/pci_at_mainbus.c Mon Jun 15 15:38:52 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: pci_at_mainbus.c,v 1.5 2014/08/22 14:28:58 pooka Exp $ */ +/* $NetBSD: pci_at_mainbus.c,v 1.6 2015/06/15 15:38:52 pooka Exp $ */ /* * Copyright (c) 2010 Antti Kantee. All Rights Reserved. @@ -26,7 +26,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: pci_at_mainbus.c,v 1.5 2014/08/22 14:28:58 pooka Exp $); +__KERNEL_RCSID(0, $NetBSD: pci_at_mainbus.c,v 1.6 2015/06/15 15:38:52 pooka Exp $); #include sys/param.h #include sys/conf.h @@ -43,6 +43,8 @@ __KERNEL_RCSID(0, $NetBSD: pci_at_mainb #include rump_private.h #include rump_vfs_private.h +#include pci_user.h + RUMP_COMPONENT(RUMP_COMPONENT_DEV) { extern const struct cdevsw pci_cdevsw; @@ -80,8 +82,17 @@ RUMP_COMPONENT(RUMP_COMPONENT_DEV_AFTERM #endif pba.pba_flags = PCI_FLAGS_MEM_OKAY | PCI_FLAGS_MRL_OKAY | PCI_FLAGS_MRM_OKAY | PCI_FLAGS_MWI_OKAY;; -#ifdef RUMP_PCI_IOSPACE - pba.pba_flags |= PCI_FLAGS_IO_OKAY; + +#ifdef RUMPCOMP_USERFEATURE_PCI_IOSPACE + int error; + + error = rumpcomp_pci_iospace_init(); + if (!error) { + pba.pba_flags |= PCI_FLAGS_IO_OKAY; + } else { + aprint_error(pci: I/O space init error %d, I/O space not + available\n, error); + } #endif mainbus = device_find_by_driver_unit(mainbus, 0); Index: src/sys/rump/dev/lib/libpci/pci_user.h diff -u src/sys/rump/dev/lib/libpci/pci_user.h:1.4 src/sys/rump/dev/lib/libpci/pci_user.h:1.5 --- src/sys/rump/dev/lib/libpci/pci_user.h:1.4 Wed Jun 3 13:55:42 2015 +++ src/sys/rump/dev/lib/libpci/pci_user.h Mon Jun 15 15:38:52 2015 @@ -1,3 +1,14 @@ +/* + * Possible userfeature macro flags: + * + * RUMPCOMP_USERFEATURE_PCI_DMAFREE: + * Support free'ing DMA memory. If not, panic() when free() is called. + * + * RUMPCOMP_USERFEATURE_PCI_IOSPACE + * Support for PCI I/O space. If yes, rumpcomp_pci_iospace_init() + * must be provided. + */ + #include rumpcomp_userfeatures_pci.h void *rumpcomp_pci_map(unsigned long, unsigned long); @@ -9,8 +20,8 @@ void *rumpcomp_pci_irq_establish(unsigne /* XXX: needs work: support boundary-restricted allocations */ int rumpcomp_pci_dmalloc(size_t, size_t, unsigned long *, unsigned long *); -#ifdef rumpcomp_pci_free -void rumpcomp_pci_free(unsigned long, size_t); +#ifdef RUMPCOMP_USERFEATURE_PCI_DMAFREE +void rumpcomp_pci_dmafree(unsigned long, size_t); #endif struct rumpcomp_pci_dmaseg { @@ -22,3 +33,7 @@ int rumpcomp_pci_dmamem_map(struct rumpc void **); unsigned long rumpcomp_pci_virt_to_mach(void *); + +#ifdef RUMPCOMP_USERFEATURE_PCI_IOSPACE +int rumpcomp_pci_iospace_init(void); +#endif Index: src/sys/rump/dev/lib/libpci/rumpdev_bus_dma.c diff -u src/sys/rump/dev/lib/libpci/rumpdev_bus_dma.c:1.4 src/sys/rump/dev/lib/libpci/rumpdev_bus_dma.c:1.5 --- src/sys/rump/dev/lib/libpci/rumpdev_bus_dma.c:1.4 Wed Jun 3
CVS commit: src/sys/rump/dev/lib/libpci
Module Name:src Committed By: pooka Date: Wed Jun 3 13:41:56 UTC 2015 Modified Files: src/sys/rump/dev/lib/libpci: Makefile Log Message: Rework how the external hypercalls are specified, more in the direction of something general. I'm not sure if it's entirely general yet (since PCI is the only place to use it), but at least a step in the right direction. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/rump/dev/lib/libpci/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/rump/dev/lib/libpci/Makefile diff -u src/sys/rump/dev/lib/libpci/Makefile:1.4 src/sys/rump/dev/lib/libpci/Makefile:1.5 --- src/sys/rump/dev/lib/libpci/Makefile:1.4 Fri Aug 22 14:28:58 2014 +++ src/sys/rump/dev/lib/libpci/Makefile Wed Jun 3 13:41:56 2015 @@ -1,8 +1,10 @@ -# $NetBSD: Makefile,v 1.4 2014/08/22 14:28:58 pooka Exp $ +# $NetBSD: Makefile,v 1.5 2015/06/03 13:41:56 pooka Exp $ # RUMPTOP= ${TOPRUMP} +.include bsd.own.mk + .PATH: ${RUMPTOP}/../dev/pci LIB= rumpdev_pci @@ -27,11 +29,17 @@ CPPFLAGS+= -I${RUMPTOP}/librump/rumpvfs CPPFLAGS+=-DRUMP_PCI_IOSPACE .endif -.if defined(RUMP_PCI_USER) -RUMPCOMP_USER_SRCS= ${RUMP_PCI_USER} -RUMPCOMP_INCS_DIR:= ${.PARSEDIR} -RUMPCOMP_USER_CPPFLAGS=-I${RUMPCOMP_INCS_DIR} -.endif +.PATH: ${RUMPCOMP_USER_PATH.rumpdev_pci} +RUMPCOMP_USER_SRCS= ${RUMPCOMP_USER_SRCS.rumpdev_pci} +MYDIR:= ${.PARSEDIR} +RUMPCOMP_USER_CPPFLAGS= -I${MYDIR} +RUMPCOMP_USER_CPPFLAGS+=${RUMPCOMP_USER_CPPFLAGS.rumpdev_pci} +RUMPCOMP_USER_CFLAGS= ${RUMPCOMP_USER_CFLAGS.rumpdev_pci} + +CPPFLAGS+= ${RUMPCOMP_CPPFLAGS.rumpdev_pci} + +# XXX: messy +.undef RUMPKERN_ONLY .include ${RUMPTOP}/Makefile.rump .include bsd.lib.mk
CVS commit: src/sys/rump/dev/lib/libpci
Module Name:src Committed By: pooka Date: Wed Jun 3 13:43:24 UTC 2015 Modified Files: src/sys/rump/dev/lib/libpci: pci_user.h Log Message: Demand that rumpcomp_userfeatures_pci.h is available for providing information about the hypercall interface implementation. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/sys/rump/dev/lib/libpci/pci_user.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/rump/dev/lib/libpci/pci_user.h diff -u src/sys/rump/dev/lib/libpci/pci_user.h:1.2 src/sys/rump/dev/lib/libpci/pci_user.h:1.3 --- src/sys/rump/dev/lib/libpci/pci_user.h:1.2 Mon Apr 14 21:43:00 2014 +++ src/sys/rump/dev/lib/libpci/pci_user.h Wed Jun 3 13:43:23 2015 @@ -1,3 +1,5 @@ +#include rumpcomp_userfeatures_pci.h + void *rumpcomp_pci_map(unsigned long, unsigned long); int rumpcomp_pci_confread(unsigned, unsigned, unsigned, int, unsigned int *); int rumpcomp_pci_confwrite(unsigned, unsigned, unsigned, int, unsigned int);
CVS commit: src/sys/rump/dev/lib/libpci
Module Name:src Committed By: pooka Date: Sun May 17 13:45:37 UTC 2015 Modified Files: src/sys/rump/dev/lib/libpci: rumpdev_bus_space.c Log Message: Implement bus_space_read/write_multi() and bus_space_subregion(). Used by (at least) wdc. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c diff -u src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c:1.3 src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c:1.4 --- src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c:1.3 Fri Aug 22 14:28:58 2014 +++ src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c Sun May 17 13:45:37 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpdev_bus_space.c,v 1.3 2014/08/22 14:28:58 pooka Exp $ */ +/* $NetBSD: rumpdev_bus_space.c,v 1.4 2015/05/17 13:45:37 pooka Exp $ */ /*- * Copyright (c) 2013 Antti Kantee. All Rights Reserved. @@ -127,6 +127,39 @@ bus_space_read_4(bus_space_tag_t bst, bu } void +bus_space_read_multi_1(bus_space_tag_t bst, bus_space_handle_t bsh, + bus_size_t offset, uint8_t *datap, bus_size_t count) +{ + + while (count--) { + *datap++ = bus_space_read_1(bst, bsh, offset); + bus_space_barrier(bst, bst, offset, 1, BUS_SPACE_BARRIER_READ); + } +} + +void +bus_space_read_multi_2(bus_space_tag_t bst, bus_space_handle_t bsh, + bus_size_t offset, uint16_t *datap, bus_size_t count) +{ + + while (count--) { + *datap++ = bus_space_read_2(bst, bsh, offset); + bus_space_barrier(bst, bst, offset, 2, BUS_SPACE_BARRIER_READ); + } +} + +void +bus_space_read_multi_4(bus_space_tag_t bst, bus_space_handle_t bsh, + bus_size_t offset, uint32_t *datap, bus_size_t count) +{ + + while (count--) { + *datap++ = bus_space_read_4(bst, bsh, offset); + bus_space_barrier(bst, bst, offset, 4, BUS_SPACE_BARRIER_READ); + } +} + +void bus_space_write_1(bus_space_tag_t bst, bus_space_handle_t bsh, bus_size_t offset, uint8_t v) { @@ -177,6 +210,45 @@ bus_space_write_4(bus_space_tag_t bst, b } } +void +bus_space_write_multi_1(bus_space_tag_t bst, bus_space_handle_t bsh, + bus_size_t offset, const uint8_t *datap, bus_size_t count) +{ + + while (count--) { + const uint8_t value = *datap++; + + bus_space_write_1(bst, bsh, offset, value); + bus_space_barrier(bst, bst, offset, 1, BUS_SPACE_BARRIER_WRITE); + } +} + +void +bus_space_write_multi_2(bus_space_tag_t bst, bus_space_handle_t bsh, + bus_size_t offset, const uint16_t *datap, bus_size_t count) +{ + + while (count--) { + const uint16_t value = *datap++; + + bus_space_write_2(bst, bsh, offset, value); + bus_space_barrier(bst, bst, offset, 2, BUS_SPACE_BARRIER_WRITE); + } +} + +void +bus_space_write_multi_4(bus_space_tag_t bst, bus_space_handle_t bsh, + bus_size_t offset, const uint32_t *datap, bus_size_t count) +{ + + while (count--) { + const uint32_t value = *datap++; + + bus_space_write_4(bst, bsh, offset, value); + bus_space_barrier(bst, bst, offset, 4, BUS_SPACE_BARRIER_WRITE); + } +} + paddr_t bus_space_mmap(bus_space_tag_t bst, bus_addr_t addr, off_t off, int prot, int flags) @@ -190,7 +262,8 @@ bus_space_subregion(bus_space_tag_t bst, bus_size_t offset, bus_size_t size, bus_space_handle_t *nhandlep) { - panic(%s: unimplemented, __func__); + *nhandlep = bsh + offset; + return 0; } void
CVS commit: src/sys/rump/dev/lib/libpci
Module Name:src Committed By: pooka Date: Sun May 17 13:51:31 UTC 2015 Modified Files: src/sys/rump/dev/lib/libpci: rumpdev_pci.c Added Files: src/sys/rump/dev/lib/libpci/opt: opt_pciide.h Log Message: Add pciide_machdep_compat_intr_establish(). Used by ... would you believe pciide? To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/rump/dev/lib/libpci/rumpdev_pci.c cvs rdiff -u -r0 -r1.1 src/sys/rump/dev/lib/libpci/opt/opt_pciide.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/rump/dev/lib/libpci/rumpdev_pci.c diff -u src/sys/rump/dev/lib/libpci/rumpdev_pci.c:1.4 src/sys/rump/dev/lib/libpci/rumpdev_pci.c:1.5 --- src/sys/rump/dev/lib/libpci/rumpdev_pci.c:1.4 Tue Aug 26 10:58:13 2014 +++ src/sys/rump/dev/lib/libpci/rumpdev_pci.c Sun May 17 13:51:31 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpdev_pci.c,v 1.4 2014/08/26 10:58:13 pooka Exp $ */ +/* $NetBSD: rumpdev_pci.c,v 1.5 2015/05/17 13:51:31 pooka Exp $ */ /* * Copyright (c) 2013 Antti Kantee. All Rights Reserved. @@ -26,7 +26,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: rumpdev_pci.c,v 1.4 2014/08/26 10:58:13 pooka Exp $); +__KERNEL_RCSID(0, $NetBSD: rumpdev_pci.c,v 1.5 2015/05/17 13:51:31 pooka Exp $); #include sys/cdefs.h #include sys/param.h @@ -166,3 +166,26 @@ pci_intr_disestablish(pci_chipset_tag_t panic(%s: unimplemented, __func__); } + +#ifdef __HAVE_PCIIDE_MACHDEP_COMPAT_INTR_ESTABLISH +#include dev/pci/pcireg.h +#include dev/pci/pcivar.h +#include dev/pci/pciidereg.h +#include dev/pci/pciidevar.h + +void * +pciide_machdep_compat_intr_establish(device_t dev, + const struct pci_attach_args *pa, int chan, + int (*func)(void *), void *arg) +{ + pci_intr_handle_t ih; + struct pci_attach_args mypa = *pa; + + mypa.pa_intrline = PCIIDE_COMPAT_IRQ(chan); + if (pci_intr_map(mypa, ih) != 0) + return NULL; + return rumpcomp_pci_irq_establish(ih, func, arg); +} + +__strong_alias(pciide_machdep_compat_intr_disestablish,pci_intr_disestablish); +#endif /* __HAVE_PCIIDE_MACHDEP_COMPAT_INTR_ESTABLISH */ Added files: Index: src/sys/rump/dev/lib/libpci/opt/opt_pciide.h diff -u /dev/null src/sys/rump/dev/lib/libpci/opt/opt_pciide.h:1.1 --- /dev/null Sun May 17 13:51:31 2015 +++ src/sys/rump/dev/lib/libpci/opt/opt_pciide.h Sun May 17 13:51:31 2015 @@ -0,0 +1 @@ +/* $NetBSD: opt_pciide.h,v 1.1 2015/05/17 13:51:31 pooka Exp $ */
CVS commit: src/sys/rump/dev/lib/libpci
Module Name:src Committed By: pooka Date: Tue Aug 26 10:58:13 UTC 2014 Modified Files: src/sys/rump/dev/lib/libpci: rumpdev_pci.c Log Message: Implement pci_intr_setattr() (well, kinda. it just ignores the MPSAFE param for now, but that's easy to fix later) To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/rump/dev/lib/libpci/rumpdev_pci.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/rump/dev/lib/libpci/rumpdev_pci.c diff -u src/sys/rump/dev/lib/libpci/rumpdev_pci.c:1.3 src/sys/rump/dev/lib/libpci/rumpdev_pci.c:1.4 --- src/sys/rump/dev/lib/libpci/rumpdev_pci.c:1.3 Tue Apr 15 13:47:06 2014 +++ src/sys/rump/dev/lib/libpci/rumpdev_pci.c Tue Aug 26 10:58:13 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpdev_pci.c,v 1.3 2014/04/15 13:47:06 pooka Exp $ */ +/* $NetBSD: rumpdev_pci.c,v 1.4 2014/08/26 10:58:13 pooka Exp $ */ /* * Copyright (c) 2013 Antti Kantee. All Rights Reserved. @@ -26,7 +26,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: rumpdev_pci.c,v 1.3 2014/04/15 13:47:06 pooka Exp $); +__KERNEL_RCSID(0, $NetBSD: rumpdev_pci.c,v 1.4 2014/08/26 10:58:13 pooka Exp $); #include sys/cdefs.h #include sys/param.h @@ -147,6 +147,19 @@ pci_intr_establish(pci_chipset_tag_t pc, return rumpcomp_pci_irq_establish(ih, func, arg); } +int +pci_intr_setattr(pci_chipset_tag_t pc, pci_intr_handle_t *ih, + int attr, uint64_t data) +{ + + switch (attr) { + case PCI_INTR_MPSAFE: + return 0; + default: + return ENODEV; + } +} + void pci_intr_disestablish(pci_chipset_tag_t pc, void *not_your_above_ih) {
CVS commit: src/sys/rump/dev/lib/libpci
Module Name:src Committed By: pooka Date: Fri Aug 22 14:28:58 UTC 2014 Modified Files: src/sys/rump/dev/lib/libpci: Makefile pci_at_mainbus.c rumpdev_bus_space.c Log Message: Add a compile-time selector for I/O space operations. Needs more work some day, but allows virtio drivers to work today. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/rump/dev/lib/libpci/Makefile cvs rdiff -u -r1.4 -r1.5 src/sys/rump/dev/lib/libpci/pci_at_mainbus.c cvs rdiff -u -r1.2 -r1.3 src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/rump/dev/lib/libpci/Makefile diff -u src/sys/rump/dev/lib/libpci/Makefile:1.3 src/sys/rump/dev/lib/libpci/Makefile:1.4 --- src/sys/rump/dev/lib/libpci/Makefile:1.3 Mon Apr 14 23:53:42 2014 +++ src/sys/rump/dev/lib/libpci/Makefile Fri Aug 22 14:28:58 2014 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.3 2014/04/14 23:53:42 pooka Exp $ +# $NetBSD: Makefile,v 1.4 2014/08/22 14:28:58 pooka Exp $ # RUMPTOP= ${TOPRUMP} @@ -23,6 +23,10 @@ SRCS+= pci_at_mainbus.c CPPFLAGS+= -I${.CURDIR}/opt -I${RUMPTOP}/librump/rumpkern CPPFLAGS+= -I${RUMPTOP}/librump/rumpvfs +.if ${RUMP_PCI_IOSPACE:Uno} == yes +CPPFLAGS+=-DRUMP_PCI_IOSPACE +.endif + .if defined(RUMP_PCI_USER) RUMPCOMP_USER_SRCS= ${RUMP_PCI_USER} RUMPCOMP_INCS_DIR:= ${.PARSEDIR} Index: src/sys/rump/dev/lib/libpci/pci_at_mainbus.c diff -u src/sys/rump/dev/lib/libpci/pci_at_mainbus.c:1.4 src/sys/rump/dev/lib/libpci/pci_at_mainbus.c:1.5 --- src/sys/rump/dev/lib/libpci/pci_at_mainbus.c:1.4 Thu Jul 31 15:55:08 2014 +++ src/sys/rump/dev/lib/libpci/pci_at_mainbus.c Fri Aug 22 14:28:58 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: pci_at_mainbus.c,v 1.4 2014/07/31 15:55:08 pooka Exp $ */ +/* $NetBSD: pci_at_mainbus.c,v 1.5 2014/08/22 14:28:58 pooka Exp $ */ /* * Copyright (c) 2010 Antti Kantee. All Rights Reserved. @@ -26,7 +26,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: pci_at_mainbus.c,v 1.4 2014/07/31 15:55:08 pooka Exp $); +__KERNEL_RCSID(0, $NetBSD: pci_at_mainbus.c,v 1.5 2014/08/22 14:28:58 pooka Exp $); #include sys/param.h #include sys/conf.h @@ -80,7 +80,7 @@ RUMP_COMPONENT(RUMP_COMPONENT_DEV_AFTERM #endif pba.pba_flags = PCI_FLAGS_MEM_OKAY | PCI_FLAGS_MRL_OKAY | PCI_FLAGS_MRM_OKAY | PCI_FLAGS_MWI_OKAY;; -#if 0 +#ifdef RUMP_PCI_IOSPACE pba.pba_flags |= PCI_FLAGS_IO_OKAY; #endif Index: src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c diff -u src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c:1.2 src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c:1.3 --- src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c:1.2 Sun Apr 13 15:43:26 2014 +++ src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c Fri Aug 22 14:28:58 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpdev_bus_space.c,v 1.2 2014/04/13 15:43:26 pooka Exp $ */ +/* $NetBSD: rumpdev_bus_space.c,v 1.3 2014/08/22 14:28:58 pooka Exp $ */ /*- * Copyright (c) 2013 Antti Kantee. All Rights Reserved. @@ -34,6 +34,10 @@ #include pci_user.h +#if defined(RUMP_PCI_IOSPACE) (defined(__i386__) || defined(__x86_64__)) +#define IOSPACE_SUPPORTED +#endif + int bus_space_map(bus_space_tag_t bst, bus_addr_t address, bus_size_t size, int flags, bus_space_handle_t *handlep) @@ -48,8 +52,12 @@ bus_space_map(bus_space_tag_t bst, bus_a * make a hypercall to request it. */ if (bst == 0) { +#ifdef IOSPACE_SUPPORTED *handlep = address; rv = 0; +#else + rv = ENOTSUP; +#endif } else { *handlep = (bus_space_handle_t)rumpcomp_pci_map(address, size); rv = *handlep ? 0 : EINVAL; @@ -65,7 +73,12 @@ bus_space_read_1(bus_space_tag_t bst, bu uint8_t rv; if (bst == 0) { - panic(8bit IO space not supported); +#ifdef IOSPACE_SUPPORTED + unsigned short addr = bsh + offset; + __asm__ __volatile__(inb %1, %0 : =a(rv) : d(addr)); +#else + panic(IO space not supported); +#endif } else { rv = *(volatile uint8_t *)(bsh + offset); } @@ -80,7 +93,12 @@ bus_space_read_2(bus_space_tag_t bst, bu uint16_t rv; if (bst == 0) { - panic(16bit IO space not supported); +#ifdef IOSPACE_SUPPORTED + unsigned short addr = bsh + offset; + __asm__ __volatile__(in %1, %0 : =a(rv) : d(addr)); +#else + panic(IO space not supported); +#endif } else { rv = *(volatile uint16_t *)(bsh + offset); } @@ -95,11 +113,11 @@ bus_space_read_4(bus_space_tag_t bst, bu uint32_t rv; if (bst == 0) { -#if 1 - panic(IO space not supported in this build); -#else +#ifdef IOSPACE_SUPPORTED unsigned short addr = bsh + offset; __asm__ __volatile__(inl %1, %0 : =a(rv) : d(addr)); +#else + panic(IO space not supported); #endif } else { rv = *(volatile uint32_t *)(bsh + offset); @@ -114,8 +132,11 @@ bus_space_write_1(bus_space_tag_t bst, b { if (bst == 0) { -#if 1 - panic(IO space not supported in this build); +#ifdef IOSPACE_SUPPORTED + unsigned short addr = bsh + offset; + __asm__
CVS commit: src/sys/rump/dev/lib/libpci
Module Name:src Committed By: pooka Date: Thu Jul 31 15:55:08 UTC 2014 Modified Files: src/sys/rump/dev/lib/libpci: pci_at_mainbus.c Log Message: add missing \n from Robert Millan r...@freebsd.org via rumpkernel-users To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/rump/dev/lib/libpci/pci_at_mainbus.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/rump/dev/lib/libpci/pci_at_mainbus.c diff -u src/sys/rump/dev/lib/libpci/pci_at_mainbus.c:1.3 src/sys/rump/dev/lib/libpci/pci_at_mainbus.c:1.4 --- src/sys/rump/dev/lib/libpci/pci_at_mainbus.c:1.3 Mon Apr 14 21:34:08 2014 +++ src/sys/rump/dev/lib/libpci/pci_at_mainbus.c Thu Jul 31 15:55:08 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: pci_at_mainbus.c,v 1.3 2014/04/14 21:34:08 pooka Exp $ */ +/* $NetBSD: pci_at_mainbus.c,v 1.4 2014/07/31 15:55:08 pooka Exp $ */ /* * Copyright (c) 2010 Antti Kantee. All Rights Reserved. @@ -26,7 +26,7 @@ */ #include sys/cdefs.h -__KERNEL_RCSID(0, $NetBSD: pci_at_mainbus.c,v 1.3 2014/04/14 21:34:08 pooka Exp $); +__KERNEL_RCSID(0, $NetBSD: pci_at_mainbus.c,v 1.4 2014/07/31 15:55:08 pooka Exp $); #include sys/param.h #include sys/conf.h @@ -61,7 +61,7 @@ RUMP_COMPONENT(RUMP_COMPONENT_DEV) if ((error = rump_vfs_makedevnodes(S_IFCHR, /dev/pci, '0', cmaj, 0, 4)) != 0) - printf(pci: failed to create /dev/pci nodes: %d, error); + printf(pci: failed to create /dev/pci nodes: %d\n, error); } RUMP_COMPONENT(RUMP_COMPONENT_DEV_AFTERMAINBUS)
CVS commit: src/sys/rump/dev/lib/libpci
Module Name:src Committed By: pooka Date: Sun Apr 13 15:43:26 UTC 2014 Modified Files: src/sys/rump/dev/lib/libpci: rumpdev_bus_space.c Log Message: add some sort of bus_space_barrier() To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c diff -u src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c:1.1 src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c:1.2 --- src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c:1.1 Fri Apr 4 12:53:59 2014 +++ src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c Sun Apr 13 15:43:26 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpdev_bus_space.c,v 1.1 2014/04/04 12:53:59 pooka Exp $ */ +/* $NetBSD: rumpdev_bus_space.c,v 1.2 2014/04/13 15:43:26 pooka Exp $ */ /*- * Copyright (c) 2013 Antti Kantee. All Rights Reserved. @@ -26,6 +26,7 @@ */ #include sys/cdefs.h +#include sys/atomic.h #include sys/param.h @@ -175,3 +176,12 @@ bus_space_unmap(bus_space_tag_t bst, bus panic(%s: unimplemented, __func__); } + +void +bus_space_barrier(bus_space_tag_t bst, bus_space_handle_t bsh, + bus_size_t offset, bus_size_t len, int flags) +{ + + /* weelll ... */ + membar_sync(); +}
CVS commit: src/sys/rump/dev/lib/libpci
Module Name:src Committed By: pooka Date: Fri Apr 11 01:03:08 UTC 2014 Modified Files: src/sys/rump/dev/lib/libpci: rumpdev_bus_dma.c Log Message: remove obfuscation macros To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/rump/dev/lib/libpci/rumpdev_bus_dma.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/sys/rump/dev/lib/libpci/rumpdev_bus_dma.c diff -u src/sys/rump/dev/lib/libpci/rumpdev_bus_dma.c:1.1 src/sys/rump/dev/lib/libpci/rumpdev_bus_dma.c:1.2 --- src/sys/rump/dev/lib/libpci/rumpdev_bus_dma.c:1.1 Fri Apr 4 12:53:59 2014 +++ src/sys/rump/dev/lib/libpci/rumpdev_bus_dma.c Fri Apr 11 01:03:08 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpdev_bus_dma.c,v 1.1 2014/04/04 12:53:59 pooka Exp $ */ +/* $NetBSD: rumpdev_bus_dma.c,v 1.2 2014/04/11 01:03:08 pooka Exp $ */ /*- * Copyright (c) 2013 Antti Kantee @@ -86,11 +86,6 @@ int _bus_dmamap_load_buffer (bus_dma_tag_t, bus_dmamap_t, void *, bus_size_t, struct vmspace *, int, paddr_t *, int *, int); -#undef PHYS_TO_BUS_MEM -#define PHYS_TO_BUS_MEM(_t_, _a_) rumpcomp_pci_virt_to_mach((void *)_a_) -#undef BUS_MEM_TO_PHYS -#define BUS_MEM_TO_PHYS(_t_, _a_) rumpcomp_pci_mach_to_virt(_a_) - /* * Common function for DMA map creation. May be called by bus-specific * DMA map creation functions. @@ -212,7 +207,8 @@ _bus_dmamap_load_buffer(bus_dma_tag_t t, * the previous segment if possible. */ if (first) { - map-dm_segs[seg].ds_addr = PHYS_TO_BUS_MEM(t, curaddr); + map-dm_segs[seg].ds_addr + = rumpcomp_pci_virt_to_mach((void *)curaddr); map-dm_segs[seg].ds_len = sgsize; first = 0; } else { @@ -221,13 +217,13 @@ _bus_dmamap_load_buffer(bus_dma_tag_t t, map-dm_maxsegsz (map-_dm_boundary == 0 || (map-dm_segs[seg].ds_addr bmask) == - (PHYS_TO_BUS_MEM(t, curaddr) bmask))) + (rumpcomp_pci_virt_to_mach((void*)curaddr)bmask))) map-dm_segs[seg].ds_len += sgsize; else { if (++seg = map-_dm_segcnt) break; map-dm_segs[seg].ds_addr = - PHYS_TO_BUS_MEM(t, curaddr); +rumpcomp_pci_virt_to_mach((void *)curaddr); map-dm_segs[seg].ds_len = sgsize; } } @@ -334,7 +330,7 @@ bus_dmamap_load_mbuf(bus_dma_tag_t t, bu continue; } map-dm_segs[seg].ds_addr = - PHYS_TO_BUS_MEM(t, lastaddr); + rumpcomp_pci_virt_to_mach((void *)lastaddr); map-dm_segs[seg].ds_len = m-m_len; lastaddr += m-m_len; continue;
CVS commit: src/sys/rump/dev/lib/libpci
Module Name:src Committed By: pooka Date: Fri Apr 4 12:53:59 UTC 2014 Added Files: src/sys/rump/dev/lib/libpci: Makefile PCI.ioconf pci_at_mainbus.c pci_user.h rumpdev_bus_dma.c rumpdev_bus_space.c rumpdev_pci.c shlib_version src/sys/rump/dev/lib/libpci/opt: opt_pci.h Log Message: Add a rump kernel component for the PCI bus. It works both in Xen DomU (via Xen's PCI passthrough) and Linux userspace (via uio_pci_generic). To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 src/sys/rump/dev/lib/libpci/Makefile \ src/sys/rump/dev/lib/libpci/PCI.ioconf \ src/sys/rump/dev/lib/libpci/pci_at_mainbus.c \ src/sys/rump/dev/lib/libpci/pci_user.h \ src/sys/rump/dev/lib/libpci/rumpdev_bus_dma.c \ src/sys/rump/dev/lib/libpci/rumpdev_bus_space.c \ src/sys/rump/dev/lib/libpci/rumpdev_pci.c \ src/sys/rump/dev/lib/libpci/shlib_version cvs rdiff -u -r0 -r1.1 src/sys/rump/dev/lib/libpci/opt/opt_pci.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Added files: Index: src/sys/rump/dev/lib/libpci/Makefile diff -u /dev/null src/sys/rump/dev/lib/libpci/Makefile:1.1 --- /dev/null Fri Apr 4 12:53:59 2014 +++ src/sys/rump/dev/lib/libpci/Makefile Fri Apr 4 12:53:59 2014 @@ -0,0 +1,29 @@ +# $NetBSD: Makefile,v 1.1 2014/04/04 12:53:59 pooka Exp $ +# + +RUMPTOP= ${TOPRUMP} + +.PATH: ${RUMPTOP}/../dev/pci + +LIB= rumpdev_pci +IOCONF= PCI.ioconf + +SRCS+= pci.c pci_map.c pci_quirks.c pci_subr.c pci_stub.c pci_usrreq.c +SRCS+= pcibusprint.c + +SRCS+= rumpdev_pci.c + +# ok, these don't _really_ belong here, but it's the only +# place they're currently useful, so let it slide +SRCS+= rumpdev_bus_space.c +SRCS+= rumpdev_bus_dma.c + +SRCS+= pci_at_mainbus.c + +CPPFLAGS+= -I${.CURDIR}/opt -I${RUMPTOP}/librump/rumpkern + +#RUMPCOMP_USER_SRCS= pci_user.c + +.include ${RUMPTOP}/Makefile.rump +.include bsd.lib.mk +.include bsd.klinks.mk Index: src/sys/rump/dev/lib/libpci/PCI.ioconf diff -u /dev/null src/sys/rump/dev/lib/libpci/PCI.ioconf:1.1 --- /dev/null Fri Apr 4 12:53:59 2014 +++ src/sys/rump/dev/lib/libpci/PCI.ioconf Fri Apr 4 12:53:59 2014 @@ -0,0 +1,12 @@ +# $NetBSD: PCI.ioconf,v 1.1 2014/04/04 12:53:59 pooka Exp $ +# + +ioconf pci + +include conf/files +include dev/pci/files.pci +include rump/dev/files.rump + +pseudo-root mainbus* + +pci*at mainbus? bus ? Index: src/sys/rump/dev/lib/libpci/pci_at_mainbus.c diff -u /dev/null src/sys/rump/dev/lib/libpci/pci_at_mainbus.c:1.1 --- /dev/null Fri Apr 4 12:53:59 2014 +++ src/sys/rump/dev/lib/libpci/pci_at_mainbus.c Fri Apr 4 12:53:59 2014 @@ -0,0 +1,75 @@ +/* $NetBSD: pci_at_mainbus.c,v 1.1 2014/04/04 12:53:59 pooka Exp $ */ + +/* + * Copyright (c) 2010 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 sys/cdefs.h +__KERNEL_RCSID(0, $NetBSD: pci_at_mainbus.c,v 1.1 2014/04/04 12:53:59 pooka Exp $); + +#include sys/param.h +#include sys/conf.h +#include sys/device.h +#include sys/mbuf.h +#include sys/stat.h +#include sys/bus.h + +#include dev/pci/pcivar.h +#include machine/bus_private.h + +#include ioconf.c + +#include rump_private.h + +RUMP_COMPONENT(RUMP_COMPONENT_DEV) +{ + + config_init_component(cfdriver_ioconf_pci, + cfattach_ioconf_pci, cfdata_ioconf_pci); +} + +RUMP_COMPONENT(RUMP_COMPONENT_DEV_AFTERMAINBUS) +{ + struct pcibus_attach_args pba; + device_t mainbus; + + /* XXX: attach args should come from elsewhere */ + memset(pba, 0, sizeof(pba)); + pba.pba_iot = (bus_space_tag_t)0; + pba.pba_memt = (bus_space_tag_t)1; + pba.pba_dmat = (void *)0x20; +#ifdef _LP64 + pba.pba_dmat64 = (void *)0x40; +#endif + pba.pba_flags = PCI_FLAGS_MEM_OKAY | +