svcadm(8)을 검색하려면 섹션에서 8 을 선택하고, 맨 페이지 이름에 svcadm을 입력하고 검색을 누른다.
pci(5)
pci(5) File Formats pci(5)
NAME
pci, pcie - configuration files for PCI and PCI Express device drivers
DESCRIPTION
The Peripheral Component Interconnect (PCI) bus is a little endian bus.
PCI Express (PCIe) and PCI-X are successors to PCI. All three types of
devices share the same configuration parameters. What is specified here
for PCI devices applies to PCI-X 1.0 devices as well. All three types
of devices are self-identifying, which means that these devices provide
configuration parameters to the system that allow the system to iden‐
tify the device and its driver. The configuration parameters are repre‐
sented in the form of name-value pairs that can be retrieved using the
DDI property interfaces. See ddi_prop_lookup(9F) for details.
The bus properties of PCI devices or logical bus properties of PCIe
devices are derived from PCI configuration space, or supplied by the
Fcode PROM, if it exists. Therefore, driver configuration files are not
necessary for these devices.
On some occasions, drivers for PCI and PCIe devices can use driver con‐
figuration files to provide driver private properties through the
global property mechanism. See driver.conf(5) for further details.
Driver configuration files can also be used to augment or override
properties for a specific instance of a driver.
All bus drivers of PCI and PCIe devices recognize the following proper‐
ties:
reg
An arbitrary length array where each element of the array consists
of a 5-tuple of 32-bit values. Each array element describes a logi‐
cally contiguous mappable resource on the PCI bus or PCIe device
tree.
The first three values in the 5-tuple describe the PCI address of
the mappable resource. The first tuple contains the following
information:
tab(); lw(1.38i) lw(4.13i) Bits 0 - 78-bit register number Bits 8 -
103-bit function number Bits 11 - 155-bit device number Bits 16 -
238-bit bus number Bits 24 - 252-bit address space type identifier
Bits 31 - 28T{ Register number extended bits 8:11 for extended con‐
fig space. Zero for conventional configuration space. T}
The address space type identifier can be interpreted as follows:
tab(); lw(1.38i) lw(4.13i) 0x0configuration space 0x1I/O space
0x232-bit memory space address 0x364-bit memory space address
The bus number is a unique identifying number assigned to each PCI
bus or PCIe logical bus within its domain.
The device number is a unique identifying number assigned to each
device on a PCI bus or PCIe logical bus. Note that a device number
is unique only within the set of device numbers for a particular
bus or logical bus.
Each PCI or PCIe device can have one to eight logically independent
functions, each with its own independent set of configuration reg‐
isters. Each function on a device is assigned a function number.
For a device with only one function, the function number must be 0.
The register number fields select a particular register within the
set of configuration registers corresponding to the selected func‐
tion. When the address space type identifier indicates configura‐
tion space, non-zero register number extended bits select registers
in extended configuration space.
The second and third values in the reg property 5-tuple specify the
64-bit address of the mappable resource within the PCI or PCIe
address domain. The second 32-bit tuple corresponds to the high
order four bytes of the 64-bit address. The third 32-bit tuple cor‐
responds to the low order bytes.
The fourth and fifth 32-bit values in the 5-tuple reg property
specify the size of the mappable resource. The size is a 64-bit
value, where the fourth tuple corresponds to the high order bytes
of the 64-bit size and the fifth corresponds to the low order.
The driver can refer to the elements of this array by index, and
construct kernel mappings to these addresses using
ddi_regs_map_setup(9F). The index into the array is passed as the
rnumber argument of ddi_regs_map_setup(9F).
At a high-level interrupt context, you can use the ddi_get* and
ddi_put* family of functions to access I/O and memory space. How‐
ever, access to configuration space is not allowed when running at
a high-interrupt level.
interrupts
This property consists of a single-integer element array. Valid
interrupt property values are 1, 2, 3, and 4. This value is derived
directly from the contents of the device's configuration-interrupt-
pin register.
A driver should use an index value of 0 when registering its inter‐
rupt handler with the DDI interrupt interfaces.
All PCI and PCIe devices support the reg property. The device number
and function number as derived from the reg property are used to con‐
struct the address part of the device name under /devices.
Only devices that generate interrupts support an interrupts property.
Occasionally it might be necessary to override or augment the configu‐
ration information supplied by a PCI or PCIe device. This change can be
achieved by writing a driver configuration file that describes a proto‐
type device node specification containing the additional properties
required.
For the system to merge the prototype node specification into an actual
device node, certain conditions must be met.
o First, the name property must be identical. The value of the
name property needs to match the binding name of the device.
The binding name is the name chosen by the system to bind a
driver to a device and is either an alias associated with
the driver or the hardware node name of the device.
o Second, the parent property must identify the PCI bus or
PCIe logical bus.
o Third, the unit-address property must identify the card. The
format of the unit-address property is:
DD[,F]
where DD is the device number and F is the function number. If the
function number is 0, only DD is specified.
EXAMPLES
Example 1 Sample Configuration File
An example configuration file called ACME,scsi-hba.conf for a PCI
driver called ACME,scsi-hba follows:
#
# Copyright (c) 1995, ACME SCSI Host Bus Adapter
# ident "@(#)ACME,scsi-hba.conf 1.1 96/02/04"
name="ACME,scsi-hba" parent="/pci@1,0/pci@1f,4000"
unit-address="3" scsi-initiator-id=6;
hba-advanced-mode="on";
hba-dma-speed=10;
In this example, a property scsi-initiator-id specifies the SCSI bus
initiator id that the adapter should use, for just one particular
instance of adapter installed in the machine. The name property identi‐
fies the driver and the parent property to identify the particular bus
the card is plugged into. This example uses the parent's full path name
to identify the bus. The unit-address property identifies the card
itself, with device number of 3 and function number of 0.
Two global driver properties are also created: hba-advanced-mode (which
has the string value on) and hba-dma-speed (which has the value 10
Mbit/s). These properties apply to all device nodes of the ACME,scsi-
hba.
Configuration files for PCIe devices are similar. Shown below is an
example configuration file called ACME,pcie-widget.conf for a PCIe
driver called ACME,pcie-widget.
#
# Copyright (c) 2005, ACME PCIe Widget Adapter
# ident "@(#)ACME,pcie-widget.conf 1.1 05/11/14"
name="ACME,pcie-widget" parent="/pci@780" unit-address="2,1"
debug-mode=12;
In this example, we provide a property debug-mode for a particular PCIe
device. As before, the logical bus is identified by the pathname of the
parent of the device. The device has a device number of 2, and a func‐
tion number of 1.
ATTRIBUTES
See attributes(7) for descriptions of the following attributes:
tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
TRIBUTE VALUE _ ArchitectureSPARC, x86
SEE ALSO
driver.conf(5), attributes(7), ddi_intr_add_handler(9F),
ddi_prop_lookup(9F), ddi_regs_map_setup(9F)
IEEE 1275 PCI Bus Binding
NOTES
PCIe devices support an extended configuration space unavailable to PCI
devices. While PCIe devices can be operated using a PCI device driver,
operating them using a PCIe device driver can make use of the extended
properties and features made available only in the extended configura‐
tion space.
Oracle Solaris 11.4 11 May 2021 pci(5)