Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/share/man/man9 Update pci_configure_bus(9) to reflect the ne...



details:   https://anonhg.NetBSD.org/src/rev/26053c69ef36
branches:  trunk
changeset: 935828:26053c69ef36
user:      thorpej <thorpej%NetBSD.org@localhost>
date:      Fri Jul 10 02:27:13 2020 +0000

description:
Update pci_configure_bus(9) to reflect the new reality -- no more manual
fiddling with extent maps, use pciconf_resource_{init,add,fini}() instead.

diffstat:

 distrib/sets/lists/comp/mi         |   11 ++-
 share/man/man9/Makefile            |    7 +-
 share/man/man9/pci_configure_bus.9 |  129 +++++++++++++++++++++---------------
 3 files changed, 91 insertions(+), 56 deletions(-)

diffs (261 lines):

diff -r 98959dc203b6 -r 26053c69ef36 distrib/sets/lists/comp/mi
--- a/distrib/sets/lists/comp/mi        Fri Jul 10 00:42:53 2020 +0000
+++ b/distrib/sets/lists/comp/mi        Fri Jul 10 02:27:13 2020 +0000
@@ -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
diff -r 98959dc203b6 -r 26053c69ef36 share/man/man9/Makefile
--- a/share/man/man9/Makefile   Fri Jul 10 00:42:53 2020 +0000
+++ b/share/man/man9/Makefile   Fri Jul 10 02:27:13 2020 +0000
@@ -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 @@
        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 \
diff -r 98959dc203b6 -r 26053c69ef36 share/man/man9/pci_configure_bus.9
--- a/share/man/man9/pci_configure_bus.9        Fri Jul 10 00:42:53 2020 +0000
+++ b/share/man/man9/pci_configure_bus.9        Fri Jul 10 02:27:13 2020 +0000
@@ -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 @@
 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 @@
 .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 @@
 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 @@
 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 @@
 }
 .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 @@
 autoconfiguration.
 .Sh SEE ALSO
 .Xr pci 4 ,
-.Xr extent 9
 .Sh HISTORY
 .Fn pci_configure_bus
 was added in



Home | Main Index | Thread Index | Old Index