Home | History | Annotate | Download | only in pci
History log of /src/sys/dev/pci/pci_usrreq.c
RevisionDateAuthorComments
 1.31  05-Sep-2021  mrg make sure PCI_IOC_DRVNAMEONBUS doesn't access NULL pointers.

hopefully fixes PR#55744. it's not entirely clear why this does
not affect most systems, as there's usually some PCI devices that
do not have attached drivers, eg:

006:00:0: AMD Family17h/7xh Reserved SPP (non-essential instrumentation, subclass 0x00)

on my system i'm testing on.


XXX: pullup-8, pullup-9.
 1.30  24-Sep-2016  mrg branches: 1.30.6;
introduce a better pci_drvname() and PCI_IOC_DRVNAME as pciio_drvnameonbus()
and PCI_IOC_DRVNAMEONBUS. the new ones also take a (autoconf) PCI bus
number, which allows lookups for any device on any pci bus node. use this
in pcictl which current reports the wrong values sometimes.

up next: use these in libpciaccess.
 1.29  24-Aug-2015  pooka branches: 1.29.2;
add some _KERNEL_OPT as the finishing touch
 1.28  25-Jul-2014  dholland branches: 1.28.4;
Add d_discard to all struct cdevsw instances I could find.

All have been set to "nodiscard"; some should get a real implementation.
 1.27  25-Jul-2014  mrg introduce a new pci_drvname(3) to libpci. implement it in the backend
via PCI_IOC_DRVNAME.

update manual and set lists (and remove a couple of doubled entries.)o

this will be used in libpciaccess() to implement the has_kernel_driver()
method.
 1.26  28-May-2014  riastradh Reject unaligned PCI config register ioctl requests before we kassert.
 1.25  16-Mar-2014  dholland branches: 1.25.2;
Change (mostly mechanically) every cdevsw/bdevsw I can find to use
designated initializers.

I have not built every extant kernel so I have probably broken at
least one build; however I've also found and fixed some wrong
cdevsw/bdevsw entries so even if so I think we come out ahead.
 1.24  13-Mar-2012  elad branches: 1.24.2; 1.24.4;
Replace the remaining KAUTH_GENERIC_ISSUSER authorization calls with
something meaningful. All relevant documentation has been updated or
written.

Most of these changes were brought up in the following messages:

http://mail-index.netbsd.org/tech-kern/2012/01/18/msg012490.html
http://mail-index.netbsd.org/tech-kern/2012/01/19/msg012502.html
http://mail-index.netbsd.org/tech-kern/2012/02/17/msg012728.html

Thanks to christos, manu, njoly, and jmmv for input.

Huge thanks to pgoyette for spinning these changes through some build
cycles and ATF.
 1.23  10-Feb-2011  jmcneill branches: 1.23.4; 1.23.8; 1.23.10; 1.23.14; 1.23.16;
pcimmap: if the requested page is marked prefetchable in a child device's
BAR, pass the BUS_SPACE_MAP_PREFETCHABLE flag down to bus_space_mmap
 1.22  30-Jul-2009  macallan branches: 1.22.4; 1.22.6; 1.22.8;
do as elad suggested and call kauth instead of using INSECURE in pcimmap()
 1.21  14-Jul-2009  macallan nuke PCI_ALLOW_MMAP, instead allow mmap(/dev/pci*) with options INSECURE
now the x86 camp should be happy again
 1.20  09-Jul-2009  macallan enable mmap() support for /dev/pci* with options PCI_ALLOW_MMAP
 1.19  07-Jul-2009  christos simplify previous.
 1.18  04-Jul-2009  cegger pciioctl(), pci_devioctl():
simplify implementations of PCI_IOC_BDF_CFGREAD, PCI_IOC_BDF_CFGWRITE,
PCI_IOC_CFGREAD, PCI_IOC_CFGWRITE
No functional changes.
 1.17  04-Jul-2009  cegger remove useless parenthesis
 1.16  11-Jun-2008  cegger branches: 1.16.6; 1.16.10; 1.16.14;
remove unused variable
 1.15  23-Mar-2008  cube branches: 1.15.2; 1.15.4; 1.15.6; 1.15.8;
Split device_t and softc for pci(4).
 1.14  04-Mar-2007  christos branches: 1.14.36;
Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.13  16-Nov-2006  christos branches: 1.13.4;
__unused removal on arguments; approved by core.
 1.12  12-Oct-2006  christos - sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386
 1.11  03-Sep-2006  christos branches: 1.11.2; 1.11.4;
add missing initializers
 1.10  11-Dec-2005  christos branches: 1.10.4; 1.10.8;
merge ktrace-lwp.
 1.9  28-Jun-2005  thorpej branches: 1.9.2;
Use ANSI function decls and static.
 1.8  29-Jun-2003  fvdl branches: 1.8.2;
Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
 1.7  28-Jun-2003  darrenr Pass lwp pointers throughtout the kernel, as required, so that the lwpid can
be inserted into ktrace records. The general change has been to replace
"struct proc *" with "struct lwp *" in various function prototypes, pass
the lwp through and use l_proc to get the process pointer when needed.

Bump the kernel rev up to 1.6V
 1.6  23-Oct-2002  jdolecek merge kqueue branch into -current

kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals

kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)

based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe
 1.5  06-Sep-2002  gehenna Merge the gehenna-devsw branch into the trunk.

This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
by using this grammer.

- Added the new naming convention.
The name of the device switch must be <prefix>_[bc]devsw for auto-generation
of device switch tables.

- The backward compatibility of loading block/character device
switch by LKM framework is broken. This is necessary to convert
from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
the LKM framework will refer it to assign device major number dynamically.
 1.4  17-Mar-2002  atatat branches: 1.4.4;
Convert ioctl code to use EPASSTHROUGH instead of -1 or ENOTTY for
indicating an unhandled "command". ERESTART is -1, which can lead to
confusion. ERESTART has been moved to -3 and EPASSTHROUGH has been
placed at -4. No ioctl code should now return -1 anywhere. The
ioctl() system call is now properly restartable.
 1.3  13-Nov-2001  lukem branches: 1.3.2;
add RCSID
 1.2  13-Sep-2001  thorpej branches: 1.2.2; 1.2.4;
Oops, didn't intend to enable pcimmap() yet.
 1.1  13-Sep-2001  thorpej Add an ioctl interface to the PCI bus. Add ioctls to read/write
PCI configuration space registers, and to fetch bus info.
 1.2.4.2  01-Oct-2001  fvdl Catch up with -current.
 1.2.4.1  13-Sep-2001  fvdl file pci_usrreq.c was added on branch thorpej-devvp on 2001-10-01 12:45:58 +0000
 1.2.2.6  11-Nov-2002  nathanw Catch up to -current
 1.2.2.5  17-Sep-2002  nathanw Catch up to -current.
 1.2.2.4  01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.2.2.3  14-Nov-2001  nathanw Catch up to -current.
 1.2.2.2  21-Sep-2001  nathanw Catch up to -current.
 1.2.2.1  13-Sep-2001  nathanw file pci_usrreq.c was added on branch nathanw_sa on 2001-09-21 22:35:59 +0000
 1.3.2.4  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.3.2.3  23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.3.2.2  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.3.2.1  13-Nov-2001  thorpej file pci_usrreq.c was added on branch kqueue on 2002-01-10 19:56:55 +0000
 1.4.4.1  16-May-2002  gehenna Add the character device switch.
 1.8.2.4  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.8.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.8.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.8.2.1  02-Jul-2003  darrenr Apply the aborted ktrace-lwp changes to a specific branch. This is just for
others to review, I'm concerned that patch fuziness may have resulted in some
errant code being generated but I'll look at that later by comparing the diff
from the base to the branch with the file I attempt to apply to it. This will,
at the very least, put the changes in a better context for others to review
them and attempt to tinker with removing passing of 'struct lwp' through
the kernel.
 1.9.2.4  24-Mar-2008  yamt sync with head.
 1.9.2.3  03-Sep-2007  yamt sync with head.
 1.9.2.2  30-Dec-2006  yamt sync with head.
 1.9.2.1  21-Jun-2006  yamt sync with head.
 1.10.8.1  03-Sep-2006  yamt sync with head.
 1.10.4.1  09-Sep-2006  rpaulo sync with head
 1.11.4.2  10-Dec-2006  yamt sync with head.
 1.11.4.1  22-Oct-2006  yamt sync with head
 1.11.2.1  18-Nov-2006  ad Sync with head.
 1.13.4.1  12-Mar-2007  rmind Sync with HEAD.
 1.14.36.2  29-Jun-2008  mjf Sync with HEAD.
 1.14.36.1  03-Apr-2008  mjf Sync with HEAD.
 1.15.8.1  18-Jun-2008  simonb Sync with head.
 1.15.6.1  23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.15.4.3  19-Aug-2009  yamt sync with head.
 1.15.4.2  18-Jul-2009  yamt sync with head.
 1.15.4.1  04-May-2009  yamt sync with head.
 1.15.2.1  17-Jun-2008  yamt sync with head.
 1.16.14.1  21-Apr-2010  matt sync to netbsd-5
 1.16.10.1  23-Jul-2009  jym Sync with HEAD.
 1.16.6.4  27-Aug-2014  msaitoh Pull up following revision(s) (requested by riastradh in ticket #1922):
sys/dev/pci/pci_usrreq.c 1.26 via patch

Fix to make pci(4) reject unaligned configuration register reads and writes
before feeding them to a kassert in pci_conf_read/write or to a trap in the
hardware itself.
 1.16.6.3  15-Sep-2009  snj branches: 1.16.6.3.2; 1.16.6.3.6;
Pull up following revision(s) (requested by mrg in ticket #952):
sys/dev/pci/pci_usrreq.c: revision 1.22 via patch
do as elad suggested and call kauth instead of using INSECURE in pcimmap()
 1.16.6.2  15-Sep-2009  snj Pull up following revision(s) (requested by mrg in ticket #952):
sys/dev/pci/pci_usrreq.c: revision 1.21 via patch
nuke PCI_ALLOW_MMAP, instead allow mmap(/dev/pci*) with options INSECURE
now the x86 camp should be happy again
 1.16.6.1  15-Sep-2009  snj Pull up following revision(s) (requested by mrg in ticket #952):
sys/dev/pci/pci_usrreq.c: revision 1.20 via patch
enable mmap() support for /dev/pci* with options PCI_ALLOW_MMAP
 1.16.6.3.6.1  27-Aug-2014  msaitoh Pull up following revision(s) (requested by riastradh in ticket #1922):
sys/dev/pci/pci_usrreq.c 1.26 via patch

Fix to make pci(4) reject unaligned configuration register reads and writes
before feeding them to a kassert in pci_conf_read/write or to a trap in the
hardware itself.
 1.16.6.3.2.1  27-Aug-2014  msaitoh Pull up following revision(s) (requested by riastradh in ticket #1922):
sys/dev/pci/pci_usrreq.c 1.26 via patch

Fix to make pci(4) reject unaligned configuration register reads and writes
before feeding them to a kassert in pci_conf_read/write or to a trap in the
hardware itself.
 1.22.8.1  17-Feb-2011  bouyer Sync with HEAD
 1.22.6.1  06-Jun-2011  jruoho Sync with HEAD.
 1.22.4.1  05-Mar-2011  rmind sync with head
 1.23.16.1  13-Sep-2014  snj Pull up following revision(s) (requested by riastradh in ticket #1124):
sys/dev/pci/pci_usrreq.c: revision 1.26
Reject unaligned PCI config register ioctl requests before we kassert.
 1.23.14.1  13-Sep-2014  snj Pull up following revision(s) (requested by riastradh in ticket #1124):
sys/dev/pci/pci_usrreq.c: revision 1.26
Reject unaligned PCI config register ioctl requests before we kassert.
 1.23.10.1  13-Sep-2014  snj Pull up following revision(s) (requested by riastradh in ticket #1124):
sys/dev/pci/pci_usrreq.c: revision 1.26
Reject unaligned PCI config register ioctl requests before we kassert.
 1.23.8.1  05-Apr-2012  mrg sync to latest -current.
 1.23.4.2  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.23.4.1  17-Apr-2012  yamt sync with head
 1.24.4.1  18-May-2014  rmind sync with head
 1.24.2.2  03-Dec-2017  jdolecek update from HEAD
 1.24.2.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.25.2.1  10-Aug-2014  tls Rebase.
 1.28.4.2  05-Oct-2016  skrll Sync with HEAD
 1.28.4.1  22-Sep-2015  skrll Sync with HEAD
 1.29.2.4  04-Nov-2016  pgoyette Sync with HEAD
 1.29.2.3  26-Jul-2016  pgoyette Rename LOCALCOUNT_INITIALIZER to DEVSW_MODULE_INIT. This better describes
what we're doing, and why.
 1.29.2.2  19-Jul-2016  pgoyette Instead of repeatedly typing the conditional initialization of the
.d_localcount members in the various {b,c}devsw, define an initializer
macro and use it. This also removes the need for defining new symbols
for each 'struct localcount'.

As suggested by riastradh@
 1.29.2.1  18-Jul-2016  pgoyette Rump drivers are always installed via devsw_attach() so we need to
always allocate a 'struct localcount' for these drivers whenever they
are built as modules.
 1.30.6.2  29-Apr-2017  pgoyette Remove more unnecessary #include for sys/localcount.h
 1.30.6.1  27-Apr-2017  pgoyette Restore all work from the former pgoyette-localcount branch (which is
now abandoned doe to cvs merge botch).

The branch now builds, and installs via anita. There are still some
problems (cgd is non-functional and all atf tests time-out) but they
will get resolved soon.

RSS XML Feed