Module Name: src Committed By: thorpej Date: Fri Jul 10 02:27:13 UTC 2020
Modified Files: src/distrib/sets/lists/comp: mi src/share/man/man9: Makefile pci_configure_bus.9 Log Message: Update pci_configure_bus(9) to reflect the new reality -- no more manual fiddling with extent maps, use pciconf_resource_{init,add,fini}() instead. To generate a diff of this commit: cvs rdiff -u -r1.2338 -r1.2339 src/distrib/sets/lists/comp/mi cvs rdiff -u -r1.451 -r1.452 src/share/man/man9/Makefile cvs rdiff -u -r1.17 -r1.18 src/share/man/man9/pci_configure_bus.9 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/distrib/sets/lists/comp/mi diff -u src/distrib/sets/lists/comp/mi:1.2338 src/distrib/sets/lists/comp/mi:1.2339 --- src/distrib/sets/lists/comp/mi:1.2338 Tue Jun 16 01:29:01 2020 +++ src/distrib/sets/lists/comp/mi Fri Jul 10 02:27:13 2020 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.2338 2020/06/16 01:29:01 thorpej Exp $ +# $NetBSD: mi,v 1.2339 2020/07/10 02:27:13 thorpej Exp $ # # Note: don't delete entries from here - mark them as "obsolete" instead. ./etc/mtree/set.comp comp-sys-root @@ -11801,6 +11801,9 @@ ./usr/share/man/cat9/pci_set_powerstate.0 comp-sys-catman .cat ./usr/share/man/cat9/pci_vpd_read.0 comp-sys-catman .cat ./usr/share/man/cat9/pci_vpd_write.0 comp-sys-catman .cat +./usr/share/man/cat9/pciconf_resource_add.0 comp-sys-catman .cat +./usr/share/man/cat9/pciconf_resource_fini.0 comp-sys-catman .cat +./usr/share/man/cat9/pciconf_resource_init.0 comp-sys-catman .cat ./usr/share/man/cat9/pckbport.0 comp-sys-catman .cat ./usr/share/man/cat9/pckbport_attach.0 comp-sys-catman .cat ./usr/share/man/cat9/pckbport_attach_slot.0 comp-sys-catman .cat @@ -19946,6 +19949,9 @@ ./usr/share/man/html9/pci_set_powerstate.html comp-sys-htmlman html ./usr/share/man/html9/pci_vpd_read.html comp-sys-htmlman html ./usr/share/man/html9/pci_vpd_write.html comp-sys-htmlman html +./usr/share/man/html9/pciconf_resource_add.html comp-sys-htmlman html +./usr/share/man/html9/pciconf_resource_fini.html comp-sys-htmlman html +./usr/share/man/html9/pciconf_resource_init.html comp-sys-htmlman html ./usr/share/man/html9/pckbport.html comp-sys-htmlman html ./usr/share/man/html9/pckbport_attach.html comp-sys-htmlman html ./usr/share/man/html9/pckbport_attach_slot.html comp-sys-htmlman html @@ -28250,6 +28256,9 @@ ./usr/share/man/man9/pci_set_powerstate.9 comp-sys-man .man ./usr/share/man/man9/pci_vpd_read.9 comp-sys-man .man ./usr/share/man/man9/pci_vpd_write.9 comp-sys-man .man +./usr/share/man/man9/pciconf_resource_add.9 comp-sys-man .man +./usr/share/man/man9/pciconf_resource_fini.9 comp-sys-man .man +./usr/share/man/man9/pciconf_resource_init.9 comp-sys-man .man ./usr/share/man/man9/pckbport.9 comp-sys-man .man ./usr/share/man/man9/pckbport_attach.9 comp-sys-man .man ./usr/share/man/man9/pckbport_attach_slot.9 comp-sys-man .man Index: src/share/man/man9/Makefile diff -u src/share/man/man9/Makefile:1.451 src/share/man/man9/Makefile:1.452 --- src/share/man/man9/Makefile:1.451 Tue Jun 16 01:29:00 2020 +++ src/share/man/man9/Makefile Fri Jul 10 02:27:13 2020 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.451 2020/06/16 01:29:00 thorpej Exp $ +# $NetBSD: Makefile,v 1.452 2020/07/10 02:27:13 thorpej Exp $ # Makefile for section 9 (kernel function and variable) manual pages. @@ -631,7 +631,10 @@ MLINKS+=pci_msi.9 pci_msix.9 \ pci_msi.9 pci_msix_establish.9 \ pci_msi.9 pci_msix_disestablish.9 MLINKS+=pci_configure_bus.9 pci_conf_hook.9 \ - pci_configure_bus.9 pci_conf_interrupt.9 + pci_configure_bus.9 pci_conf_interrupt.9 \ + pci_configure_bus.9 pciconf_resource_add.9 \ + pci_configure_bus.9 pciconf_resource_fini.9 \ + pci_configure_bus.9 pciconf_resource_init.9 MLINKS+=pckbport.9 pckbport_attach.9 \ pckbport.9 pckbport_attach_slot.9 \ pckbport.9 pckbport_cnattach.9 \ Index: src/share/man/man9/pci_configure_bus.9 diff -u src/share/man/man9/pci_configure_bus.9:1.17 src/share/man/man9/pci_configure_bus.9:1.18 --- src/share/man/man9/pci_configure_bus.9:1.17 Mon Jul 3 21:28:48 2017 +++ src/share/man/man9/pci_configure_bus.9 Fri Jul 10 02:27:13 2020 @@ -1,4 +1,4 @@ -.\" $NetBSD: pci_configure_bus.9,v 1.17 2017/07/03 21:28:48 wiz Exp $ +.\" $NetBSD: pci_configure_bus.9,v 1.18 2020/07/10 02:27:13 thorpej Exp $ .\" .\" Copyright 2001 Wasabi Systems, Inc. .\" All rights reserved. @@ -33,25 +33,29 @@ .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.Dd February 21, 2006 +.Dd July 7, 2020 .Dt PCI_CONFIGURE_BUS 9 .Os .Sh NAME .Nm pci_configure_bus , .Nm pci_conf_hook , -.Nm pci_conf_interrupt +.Nm pci_conf_interrupt , +.Nm pciconf_resource_init , +.Nm pciconf_resource_add , +.Nm pciconf_resource_fini .Nd perform PCI bus configuration .Sh SYNOPSIS .In dev/pci/pciconf.h .Ft int -.Fo pci_configure_bus -.Fa "pci_chipset_tag_t pc" -.Fa "struct extent *ioext" -.Fa "struct extent *memext" -.Fa "struct extent *pmemext" -.Fa "int firstbus" -.Fa "int cacheline_size" -.Fc +.Fn pci_configure_bus "pci_chipset_tag_t pc" "struct pciconf_resources *res" \ + "int firstbus" "int cacheline_size" +.Ft struct pciconf_resources * +.Fn pciconf_resource_init "void" +.Ft void +.Fn pciconf_resource_add "struct pciconf_resources *res" "int type" \ + "bus_addr_t addr" "bus_size_t size" +.Ft void +.Fn pciconf_resource_fini "struct pciconf_resources *res" .Sh DESCRIPTION The .Fn pci_configure_bus @@ -81,30 +85,10 @@ argument is a machine-dependent tag used system. This should be the same value used with .Fn pci_make_tag . -The extent arguments -define memory extents from which the address space for the cards will be -taken. -These addresses should be in the PCI address space. The -.Fa ioext -extent is for PCI I/O accesses. -The -.Fa memext -extent is for PCI memory accesses that might have side effects. -I.e., that can not be cached. -The -.Fa pmemext -extent is for PCI memory accesses that can be cached. -The -.Fa pmemext -extent will be used for any ROMs and any memory regions that are marked as -.Dq prefetchable -in their BAR. -If an implementation does not distinguish between -prefetchable and non-prefetchable memory, it may pass NULL for -.Fa pmemext . -In this case, prefetchable memory allocations will be made from the -non-prefetchable region. +.Fa res +argument is a container for PCI bus resources that will be used to +configure the bus. The .Fa firstbus argument indicates the number of the first bus to be configured. @@ -126,10 +110,11 @@ symbol (without a value), and a machine- .Fn pci_conf_hook (declared in the same header) must be defined. -The prototype for this function is +The prototype for this function is: .Pp -.Fn "int pci_conf_hook" "pci_chipset_tag_t pc" "int bus" \ - "int device" "int function" "pcireg_t id" +.Ft int +.Fn "pci_conf_hook" "pci_chipset_tag_t pc" "int bus" \ + "int device" "int function" "pcireg_t id" ; .Pp In this function, .Fa bus , @@ -174,7 +159,8 @@ machine-dependent function must be defined. The prototype for this function is .Pp -.Fn "void pci_conf_interrupt" "pci_chipset_tag_t pc" "int bus" \ +.Ft void +.Fn "pci_conf_interrupt" "pci_chipset_tag_t pc" "int bus" \ "int device" "int pin" "int swiz" "int *iline" .Pp In this function, @@ -194,6 +180,41 @@ The function is responsible for setting See chapter 9 of the .Dq PCI-to-PCI Bridge Architecture Specification for more information on swizzling (also known as interrupt routing). +.Pp +The resources used to configure the PCI bus are encapsulated into a +resource container. +The +.Fn pciconf_resource_init +function allocates and initializes one of these containers, and the +.Fn pciconf_resource_add +function adds resources to the container, specifying the type, start +address, and size of the resource being added. +The following resource types are supported: +.Bl -tag -width PCICONF_RESOURCE_PREFETCHABLE_MEM -offset indent +.It Dv PCICONF_RESOURCE_IO +An adddress region used for PCI I/O accesses. +.It Dv PCICONF_RESOURCE_MEM +An address region used for PCI memory accesses where reads may have side +effects. +.It Dv PCICONF_RESOURCE_PREFETCHABLE_MEM +An address region used for PCI memory accesses where reads do not have +side effects +.Po +e.g. ROMs, frame buffers, other memory-like regions that are marked as +prefetchable in their BAR +.Pc . +.El +.Pp +If an implementation does not distinguish between prefetchable and +non-prefetchable memory, then adding a +.Dv PCICONF_RESOURCE_PREFETCHABLE_MEM +resource is not required; +.Dv PCICONF_RESOURCE_MEM +resources will be used for ROMs and BARs that are marked as prefetchable. +.Pp +Once the bus has been successfully configured, the resource container should +be disposed of by calling +.Fn pciconf_resource_fini . .Sh RETURN VALUES If successful .Fn pci_configure_bus @@ -247,25 +268,28 @@ pci_conf_interrupt(pci_chipset_tag_t pc, } .Ed .Pp -The BeBox has nearly 1GB of PCI I/O memory starting at processor address -0x81000000 (PCI I/O address 0x01000000), and nearly 1GB of PCI memory -starting at 0xC0000000 (PCI memory address 0x00000000). -The -.Fn pci_configure_bus -function might be called as follows: +This configuration example is taken from the bebox port. .Pp .Bd -literal -compact - struct extent *ioext, *memext; +#define PCI_IO_START 0x00008000 +#define PCI_IO_END 0x0000ffff +#define PCI_IO_SIZE ((PCI_IO_END - PCI_IO_START) + 1) + +#define PCI_MEM_START 0x00000000 +#define PCI_MEM_END 0x0fffffff +#define PCI_MEM_SIZE ((PCI_MEM_END - PCI_MEM_START) + 1) + ... + struct pciconf_resources *pcires; ... - ioext = extent_create("pciio", 0x01000000, 0x0fffffff, - NULL, 0, EX_NOWAIT); - memext = extent_create("pcimem", 0x00000000, 0x0fffffff, - NULL, 0, EX_NOWAIT); + pcires = pciconf_resource_init(); + pciconf_resource_add(pcires, PCICONF_RESOURCE_IO, + PCI_IO_START, PCI_IO_SIZE); + pciconf_resource_add(pcires, PCICONF_RESOURCE_MEM, + PCI_MEM_START, PCI_MEM_SIZE); ... - pci_configure_bus(0, ioext, memext, NULL); + pci_configure_bus(pc, pcires, 0, CACHELINESIZE); ... - extent_destroy(ioext); - extent_destroy(memext); + pciconf_resource_fini(pcires); ... .Ed .Pp @@ -273,7 +297,6 @@ Note that this must be called before the autoconfiguration. .Sh SEE ALSO .Xr pci 4 , -.Xr extent 9 .Sh HISTORY .Fn pci_configure_bus was added in