'\" t
.\" Title: pci_create_slot
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.78.1
.\" Date: May 2018
.\" Manual: Hardware Interfaces
.\" Source: Kernel Hackers Manual 3.16.56
.\" Language: English
.\"
.TH "PCI_CREATE_SLOT" "9" "May 2018" "Kernel Hackers Manual 3\&.16\&" "Hardware Interfaces"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
pci_create_slot \- create or increment refcount for physical PCI slot
.SH "SYNOPSIS"
.HP \w'struct\ pci_slot\ *\ pci_create_slot('u
.BI "struct pci_slot * pci_create_slot(struct\ pci_bus\ *\ " "parent" ", int\ " "slot_nr" ", const\ char\ *\ " "name" ", struct\ hotplug_slot\ *\ " "hotplug" ");"
.SH "ARGUMENTS"
.PP
\fIparent\fR
.RS 4
struct pci_bus of parent bridge
.RE
.PP
\fIslot_nr\fR
.RS 4
PCI_SLOT(pci_dev\->devfn) or \-1 for placeholder
.RE
.PP
\fIname\fR
.RS 4
user visible string presented in /sys/bus/pci/slots/
.RE
.PP
\fIhotplug\fR
.RS 4
set if caller is hotplug driver, NULL otherwise
.RE
.SH "DESCRIPTION"
.PP
PCI slots have first class attributes such as address, speed, width, and a
struct pci_slot
is used to manage them\&. This interface will either return a new
struct pci_slot
to the caller, or if the pci_slot already exists, its refcount will be incremented\&.
.PP
Slots are uniquely identified by a
\fIpci_bus\fR,
\fIslot_nr\fR
tuple\&.
.PP
There are known platforms with broken firmware that assign the same name to multiple slots\&. Workaround these broken platforms by renaming the slots on behalf of the caller\&. If firmware assigns name N to
.SH "MULTIPLE SLOTS"
.PP
.PP
The first slot is assigned N The second slot is assigned N\-1 The third slot is assigned N\-2 etc\&.
.SH "PLACEHOLDER SLOTS"
.PP
In most cases,
\fIpci_bus\fR,
\fIslot_nr\fR
will be sufficient to uniquely identify a slot\&. There is one notable exception \- pSeries (rpaphp), where the
\fIslot_nr\fR
cannot be determined until a device is actually inserted into the slot\&. In this scenario, the caller may pass \-1 for
\fIslot_nr\fR\&.
.PP
The following semantics are imposed when the caller passes
\fIslot_nr\fR
== \-1\&. First, we no longer check for an existing
\fBstruct\fR
pci_slot, as there may be many slots with
\fIslot_nr\fR
of \-1\&. The other change in semantics is user\-visible, which is the \*(Aqaddress\*(Aq parameter presented in sysfs will
.SH "CONSIST SOLELY OF A DDDD"
.PP
bb tuple, where dddd is the PCI domain of the
\fBstruct\fR
pci_bus and bb is the bus number\&. In other words, the devfn of the \*(Aqplaceholder\*(Aq slot will not be displayed\&.
.SH "COPYRIGHT"
.br