aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/pci/pci_user.c
Commit message (Collapse)AuthorAgeFilesLines
* pci_user.c: Cosmetic fixesJohn Baldwin2024-11-131-14/+14
| | | | | | | | | Correct leading whitespace for a few lines. Consistently use more canonical #ifdef to test for COMPAT_FREEBSD32. Obtained from: CheriBSD Sponsored by: AFRL, DARPA
* pci_user: Rename _old to _freebsd6Warner Losh2024-07-261-92/+92
| | | | | | | | | | | | The pre-freebsd7 stuff is labeled _old right now. Relabel it as _freebsd6 instead. No functional change intended. I selected freebsd6 because that's the last version to have the ioctls, although I know there were changes in the interface for 4, 5 and 6. This broadly batches what we do with system calls that accumulate changes until we break and use a new one, we use the last major the system call was in. Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D45867
* sys: Remove $FreeBSD$: one-line .c patternWarner Losh2023-08-161-2/+0
| | | | Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
* spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSDWarner Losh2023-05-121-1/+1
| | | | | | | | | The SPDX folks have obsoleted the BSD-2-Clause-FreeBSD identifier. Catch up to that fact and revert to their recommended match of BSD-2-Clause. Discussed with: pfg MFC After: 3 days Sponsored by: Netflix
* dev/pci: fix potential panic due to bogus VPD dataStefan Eßer2022-02-201-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A panic has been observed on a system with a Intel X520 dual LAN device. The panic is caused by a KASSERT() noticing that the amount of VPD data copied out to the pciconf command does not match the amount of data read from the device. The cause of the size mismatch was VPD data that started with 0x82, the VPD tag that indicates that a VPD ident follows, but with a length of more than 255 characters, which happens to be the maximum ident size supported by the API between kernel and the pciconf program. The data provided did not resemble an actual VPD identifier, and it can be assumed that the initial tag value 0x82 happens to be there by accident. An ident size of 255 far exceeds the sensible length of that data element, which is in the order of at most 30 to 40 bytes. This patch adds several consitstency checks to the VPD parser, the most critical being that ident lengths of more than 255 bytes are rejected. Other checks reject VPD with more than one ident tag or with an empty (zero length) ident string. This patch prevents the panic that occured when "pciconf -lV" was executed on the affected system. During the anaylsis of the issue and the VPD code it has been found that the VPD parser uses a state machine that accepts tags in any order and combination. This is a bad match for the actual VPD data, which has a very simple structure that can be parsed with a non-recursive direct descent parser (which always knows exactly which token to expect next). A review fpr a much simpler VPD parser that performs many more consistency checks and rejects invalid VPD has been proposed in review https://reviews.freebsd.org/D34268. Reported by: mikej at paymentallianceintl.com (Michael Jung) Approved by: jhb MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D34255
* Create wrapper for Giant taken for newbusWarner Losh2021-12-101-3/+6
| | | | | | | | | | | Create a wrapper for newbus to take giant and for busses to take it too. bus_topo_lock() should be called before interacting with newbus routines and unlocked with bus_topo_unlock(). If you need the topology lock for some reason, bus_topo_mtx() will provide that. Sponsored by: Netflix Reviewed by: mav Differential Revision: https://reviews.freebsd.org/D31831
* bus: Make BUS_TRANSLATE_RESOURCE behave more like other bus methodsMark Johnston2021-11-151-1/+1
| | | | | | | | | | | | | | | | | | | - Return an errno value upon failure, instead of 1. - Provide a bus_translate_resource() wrapper. - Implement the generic version, which traverses the hierarchy until a bus driver with a non-trivial implementation is found, in subr_bus.c like other similar default implementations. - Make ofw_pcib_translate_resource() return an error if a matching PCI address range is not found. - Make generic_pcie_translate_resource_common() return an int instead of a bool. Fix up callers. No functional change intended. Reviewed by: imp, jhb MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32855
* pci: Add an ioctl to perform I/O to BARsMark Johnston2021-08-141-0/+100
| | | | | | | | | | | This is useful for bhyve, which otherwise has to use /dev/io to handle accesses to I/O port BARs when PCI passthrough is in use. Reviewed by: imp, kib Discussed with: jhb MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D31307
* /dev/pci: clarify meaning of writeable file descriptorKonstantin Belousov2021-07-271-1/+6
| | | | | | | Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D31317
* pci_user: fix build for 32-bit platformsMarcin Wojtas2021-04-061-4/+3
| | | | | | Commit: f2f1ab39c040 ("pci_user: call bus_translate_resource before BAR mmap") broke build for 32-bit platforms due to rman_res_t and vm_paddr_t incompatible types. Fix that.
* pci_user: call bus_translate_resource before BAR mmapMarcin Wojtas2021-04-061-0/+5
| | | | | | | | | | | | | | | | | | On some armv8 machines it is possible that the mapping between CPU and PCI bus BAR base addresses is not 1:1. In case a BAR is allocated in kernel using bus_alloc_resource_any this translation is handled in ofw_pci_activate_resource. Do the same in pci_user.c by calling bus_translate_resource devmethod. This fixes mmaping BARs to userspace on Marvell SoCs (Armada 7k8k/CN913x) and possibly many other platforms. Submitted by: Kornel Duleba <mindal@semihalf.com> Reviewed by: kib Obtained from: Semihalf Sponsored by: Marvell MFC after: 2 weeks Differential revision: https://reviews.freebsd.org/D29604
* pci: clean up empty lines in .c and .h filesMateusz Guzik2020-09-011-2/+0
| | | | Notes: svn path=/head/; revision=365178
* Remove "All rights reserved" phrase from copyright notes.Stefan Eßer2019-12-041-2/+1
| | | | | | | | | | | | | | | | | | | | With the ratification of the Berne Convention in 2000, it became obsolete. I have removed that phrase and the "(c)" only from files without copyright claims by other parties. There are 2 files (pci.c, pci_private.h) that are also claimed by Michael Smith <msmith@freebsd.org> and by BSDi, which have therefore not been included in this commit. When all member nations of the Buenos Aires Convention adopted the Berne Convention, the phrase "All rights reserved" became unnecessary to assert copyright. Remove it from files under my copyright. There are 2 files (pci.c, pci_private.h) that) that do also bear msmith's and BSDi's copyright. I have left them unchanged for now, since I do not know whether they (or the legal successor in case of BSDi) would agree. Notes: svn path=/head/; revision=355382
* Hoist locking giant back up into the ioctl handlerWarner Losh2019-11-241-2/+9
| | | | | | | | | | | Move the locking back into the ioctl handler. This "fixes" the race where we hve a hot plug event just after the dropping of Giant in pci_find_dbsf, assuming the driver doesn't then call anything that drops and picks up Giant again... It's a little safer since don't think it doesn't, but we lack the tools to know for sure. Notes: svn path=/head/; revision=355057
* Push Giant down one layerWarner Losh2019-11-231-1/+1
| | | | | | | | | | | | | | | | | The /dev/pci device doesn't need GIANT, per se. However, one routine that it calls, pci_find_dbsf implicitly does. It walks a list that can change when PCI scans a new bus. With hotplug, this means we could have a race with that scanning. To prevent that, take out Giant around scanning the list. However, given that we have places in the tree that drop giant, if held when we call into them, the whole use of Giant to protect newbus may be less effective that we desire, so add a comment about why we're talking it out, and we'll address the issue when we lock newbus with something other than Giant. Notes: svn path=/head/; revision=355037
* Need to apply the PCIM_BAR_MEM_BASE mask to the physical memoryHans Petter Selasky2019-06-281-3/+5
| | | | | | | | | | | | address before returning it to the user. Some of the least significant bits have special meaning and should be masked away. Discussed with: kib@ MFC after: 3 days Sponsored by: Mellanox Technologies Notes: svn path=/head/; revision=349522
* Fix stray tab.Brooks Davis2018-11-171-1/+1
| | | | | | | | | | | Reported by: jbeich MFC after: 3 days MFC with: r340489 Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D18011 Notes: svn path=/head/; revision=340490
* Fix freebsd32 support for PCIOCGETCONF.Brooks Davis2018-11-161-0/+6
| | | | | | | | | | | | | | | | | This fixes regresssions in pciconf -l and some ports as reported on freebsd-current: https://lists.freebsd.org/pipermail/freebsd-current/2018-November/072144.html Reported by: jbeich Reviewed by: kib (also proposed an idential patch) Tested by: jbeich MFC after: 3 days Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D18011 Notes: svn path=/head/; revision=340489
* Centralize compat support for PCIOCGETCONF.Brooks Davis2018-09-271-18/+154
| | | | | | | | | | | | | | | | The pre-7.x compat for both native and 32-bit code was already in pci_user.c. Use this infrastructure to add implement 32-bit support. This is more correct as ioctl(2) commands only have meaning in the context of a file descriptor. Reviewed by: kib Approved by: re (gjb) Obtained from: CheriBSD Sponsored by: DARPA, AFRL Differential revision: https://reviews.freebsd.org/D17324 Notes: svn path=/head/; revision=338990
* Don't directly dereference a user pointer in the VPD ioctl.John Baldwin2018-08-311-3/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The PCIOCLISTVPD ioctl on /dev/pci is used to fetch a list of VPD key-value pairs for a specific PCI function. It is used by 'pciconf -l -V'. The list is stored in a userland-supplied buffer as an array of variable-length structures where the key and data length are stored in a fixed-size header followed by the variable-length value as a byte array. To facilitate walking this array in userland, <sys/pciio.h> provides a PVE_NEXT() helper macro to return a pointer to the next array element by reading the the length out of the current header and using it to compute the address of the next header. To simplify the implementation, the ioctl handler was also using PVE_NEXT() when on the user address of the user buffer to compute the user address of the next array element. However, the PVE_NEXT() macro when used with a user address was reading the value's length by indirecting the user pointer. The value was ready after the current record had been copied out to the user buffer, so it appeared to work on architectures where user addresses are directly dereferencable from the kernel (all but powerpc and i386 after the 4:4 split). The recent enablement of SMAP on amd64 caught this violation however. To fix, add a variant of PVE_NEXT() for use in the ioctl handler that takes an explicit value length. Reported by: Jeffrey Pieper @ Intel Reviewed by: kib Approved by: re (gjb) MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D16800 Notes: svn path=/head/; revision=338408
* Require write access when mmapping BAR.Konstantin Belousov2018-08-031-1/+0
| | | | | | | | | | | | | | | | | This actually makes the rights requirements for accessing PCI config space and BARs using /dev/pci same. Since unchanged /dev/pci mode only allows write open for root, default configuration de-facto limits the BAR read to root only. In particular, state-changing reads of the registers are limited to root. Discussed with: se Suggested and reviewed by: jhb (kernel part) Sponsored by: The FreeBSD Foundation MFC after: 12 days Differential revision: https://reviews.freebsd.org/D16580 Notes: svn path=/head/; revision=337269
* Add ioctl to conveniently mmap a PCI device BAR into userspace.Konstantin Belousov2018-08-011-1/+93
| | | | | | | | | | | | | | | | | | | | | | Add the ioctl PCIOCBARMMAP on /dev/pci to conveniently create userspace mapping of a PCI device BAR. This is enormously superior to read the BAR value with PCIOCREAD and then try to mmap /dev/mem, and should allow to automatically activate the mapped BARs when needed in future. Current implementation creates new sg pager for each user mmap request. If the pointer (and reference) to a managed device pager is stored in pci_map, we would be able to revoke all mappings on the BAR deactivation or relocation. This is related to the unimplemented BAR activation on mmap, and is postponed for the future. Discussed with: imp, jhb Sponsored by: The FreeBSD Foundation, Mellanox Technologies MFC after: 2 weeks Differential revision: https://reviews.freebsd.org/D15583 Notes: svn path=/head/; revision=337053
* Refactor PCIOCGETCONF for improved readability.Brooks Davis2018-04-091-198/+235
| | | | | | | | | | | | | | | | | | | The code now has a single, consistant flow for all three ioctl variants. ifdefs and for pre-FreeBSD-7 compatability are moved to functions and macros. So the flow is alwasy the same, we impose the cost of allocating, copying to, updating from, and freeing a copy of struct pci_conf_io on all paths. This change will allow PCIOCGETCONF32 support currently in sys/compat/freebsd32/freebsd32_ioctl.c to be moved here. Reviewed by: kib, jhb Obtained from: CheriBSD Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D14978 Notes: svn path=/head/; revision=332343
* Move most of the contents of opt_compat.h to opt_global.h.Brooks Davis2018-04-061-1/+0
| | | | | | | | | | | | | | | | | | | | | opt_compat.h is mentioned in nearly 180 files. In-progress network driver compabibility improvements may add over 100 more so this is closer to "just about everywhere" than "only some files" per the guidance in sys/conf/options. Keep COMPAT_LINUX32 in opt_compat.h as it is confined to a subset of sys/compat/linux/*.c. A fake _COMPAT_LINUX option ensure opt_compat.h is created on all architectures. Move COMPAT_LINUXKPI to opt_dontuse.h as it is only used to control the set of compiled files. Reviewed by: kib, cem, jhb, jtl Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D14941 Notes: svn path=/head/; revision=332122
* Fix several leaks of kernel stack data through paddings.Konstantin Belousov2018-03-271-0/+3
| | | | | | | | | | | | | | | | | | | It is random collection of fixes for issues not yet corrected, reported at https://tsyrklevi.ch/clang_analyzer/freebsd_013017/. Many issues from that list were already corrected. Most of them are for compat32, old compat32 or affect both primary host ABI and compat32. The freebsd32_kldstat(), for instance, was already fixed by using malloc(M_ZERO). Patch includes correction to report the supplied version back, which is just pedantic. Reviewed by: brooks, emaste (previous version) Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D14868 Notes: svn path=/head/; revision=331640
* pci_ioctl: Avoid returning uninitialized error value if user provided empty ↵Conrad Meyer2018-03-011-1/+3
| | | | | | | | | | | | | | buffer In the weird case where the user-provided buffer was zero bytes, we could break out of PCIOCGETCONF and return without initializing error. In this case, initialize error to zero -- we successfully did nothing, as requested. Reported by: Coverity Sponsored by: Dell EMC Isilon Notes: svn path=/head/; revision=330137
* sys/dev: further adoption of SPDX licensing ID tags.Pedro F. Giffuni2017-11-271-0/+2
| | | | | | | | | | | | | | | Mainly focus on files that use BSD 2-Clause license, however the tool I was using misidentified many licenses so this was mostly a manual - error prone - task. The Software Package Data Exchange (SPDX) group provides a specification to make it easier for automated tools to detect and summarize well known opensource licenses. We are gradually adopting the specification, noting that the tags are considered only advisory and do not, in any way, superceed or replace the license texts. Notes: svn path=/head/; revision=326255
* Reliably return PCI_GETCONF_LAST_DEVICE from PCIOCGETCONF.John Baldwin2016-08-091-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | Previously the loop in PCIIOCGETCONF would terminate as soon as it found enough matches. Now it will continue iterating through the PCI device list and only terminate if it finds another matching device for which it has no room to store a conf structure. This means that PCI_GETCONF_LAST_DEVICE is reliably returned when the number of matching devices is equal to the number of slots in the matches buffer. For example, if a program requests the conf structure for a single PCI function with a specified domain/bus/slot/function it will now get PCI_GETCONF_LAST_DEVICE instead of PCI_GETCONF_MORE_DEVS. While here, simplify the loop conditional a bit more by explicitly breaking out of the loop if copyout() fails and removing a redundant i < pci_numdevs check. Reviewed by: vangyzen, imp MFC after: 1 month Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D7445 Notes: svn path=/head/; revision=303881
* Fix syntax error introduced in previous commit where I removed oneStefan Eßer2016-02-191-1/+1
| | | | | | | | character to few. I should have waited for the kernel compile to finish, even though the change seemed so trivial. Notes: svn path=/head/; revision=295816
* Remove redundant check for "(dinfo != NULL)", it has already been performedStefan Eßer2016-02-191-3/+3
| | | | | | | | | as the first part of this complex loop conditional. Found by: PVS Static Analysis Notes: svn path=/head/; revision=295813
* Emulate the Device ID and Vendor ID registers for VFsRyan Stone2015-03-011-16/+4
| | | | | | | | | | | | | | | | | | | The SR-IOV standard requires VFs to read all-ones when the VID and DID registers are read. The VMM (hypervisor) is required to emulate them instead. Make pci_read_config() do this emulation. Change pci_user.c to use pci_read_config() to read config space registers instead of going directly to the pcib so that the emulated VID/DID registers work correctly on VFs. This is required both for pciconf and bhyve PCI passthrough. Differential Revision: https://reviews.freebsd.org/D77 Reviewed by: jhb MFC after: 1 month Sponsored by: Sandvine Inc. Notes: svn path=/head/; revision=279448
* Add support for displaying VPD for PCI devices via pciconf.John Baldwin2014-01-201-9/+119
| | | | | | | | | | | | | | | - Store the length of each read-only VPD value since not all values are guaranteed to be ASCII values (though most are). - Add a new pciio ioctl to fetch VPD for a single PCI device. The values are returned as a list of variable length records, one for the device name and each keyword. - Add a new -V flag to pciconf's list mode which displays VPD data for each device. MFC after: 1 week Notes: svn path=/head/; revision=260926
* Always initialize pattern_buf pointers to NULL, otherwise AMD64 machineDavid Xu2012-12-261-4/+2
| | | | | | | | | panics with: free: address xxx(yyy) has not been allocated. it can be triggered by hald. Notes: svn path=/head/; revision=244695
* Fix zillions of style(9) and spacing bugs introduced by r240981.Gleb Smirnoff2012-09-271-140/+142
| | | | | | | Pointy hat to: sobomax Notes: svn path=/head/; revision=240992
* Fix several build failures for !COMPAT_FREEBSD32 andGleb Smirnoff2012-09-271-31/+44
| | | | | | | | | !COMPAT_FREEBSD* kernels introduced by r240981. Pointy hat to: sobomax Notes: svn path=/head/; revision=240990
* Add 32-bit ABI compat shims. Those are necessary for i386 binary-onlyMaxim Sobolev2012-09-271-6/+201
| | | | | | | | | | | | tools like sysutils/hpacucli (HP P4xx RAID controller management suite) working on amd64 systems. PR: 139271 Submitted by: Kazumi MORINAGA, Eugene Grosbein MFC after: 1 week Notes: svn path=/head/; revision=240981
* Explicitly track the state of all known BARs for each PCI device. The PCIJohn Baldwin2011-03-311-47/+6
| | | | | | | | | | | | | | | | | | | | | bus driver will now remember the size of a BAR obtained during the initial bus scan and use that size when doing lazy resource allocation rather than resizing the BAR. The bus driver will now also report unallocated BARs to userland for display by 'pciconf -lb'. Psuedo-resources that are not BARs (such as the implicit I/O port resources for master/slave ATA controllers) will no longer be listed as BARs in 'pciconf -lb'. During resume, BARs are restored from their new saved state instead of having the raw registers saved and restored across resume. This also fixes restoring BARs at unusual loactions if said BAR has been allocated by a driver. Add a constant for the offset of the ROM BIOS BAR in PCI-PCI bridges and properly handle ROM BIOS BARs in PCI-PCI bridges. The PCI bus now also properly handles the lack of a ROM BIOS BAR in a PCI-Cardbus bridge. Tested by: jkim Notes: svn path=/head/; revision=220195
* Fix 'pciconf -a' by providing an implementation of PCIOCATTACHED.Neel Natu2010-07-291-0/+10
| | | | | | | | | | Reviewed by: imp MFC after: 1 week Pointed out by: Heymian Wong (heymian at mit.alum.edu) Sponsored by: NetApp Notes: svn path=/head/; revision=210597
* pci(4): don't perform maximum register number checkAndriy Gapon2009-09-111-2/+1
| | | | | | | | | | | | | | | | Different sub-kinds of PCI buses may have different rules and thus it is up for the bus backends to do proper input checks. For example, PCIe allows configuration register numbers < 0x1000, while for PCI proper the limit is 0x100. And, in fact, the buses already do the checks. Reviewed by: jhb MFC after: 1 week X-ToDo: add check for negative value to bus backends X-ToDo: use named constant for maximum PCIe register Notes: svn path=/head/; revision=197099
* - Add a new ioctl to /dev/pci to fetch details on an individual BAR of aJohn Baldwin2009-02-021-3/+70
| | | | | | | | | | | | | | | | | device. The details include the current value of the BAR (including all the flag bits and the current base address), its length, and whether or not it is enabled. Since this operation is not invasive, non-root users are allowed to use it (unlike manual config register access which requires root). The intention is that userland apps (such as Xorg) will use this interface rather than dangerously frobbing the BARs from userland to obtain this information. - Add a new sub-mode to the 'list' mode of pciconf. The -b flag when used with -l will now list all the active BARs for each device. MFC after: 1 month Notes: svn path=/head/; revision=188018
* Don't cache the new-bus name of a PCI device in the PCI conf structure,John Baldwin2008-01-151-1/+4
| | | | | | | | | | | | | | but reread it from the device_t every time the device list is fetched. Previously the device name in pciconf -l would not be updated when a driver was unloaded or if a device was detached and attached to a different driver. MFC after: 1 week PR: kern/104777 Submitted by: "Iasen Kostoff" tbyte | otel net Notes: svn path=/head/; revision=175368
* Fix some bugs in the FreeBSD 4/5/6 pci(4) IOCTLs compatibility code:Marius Strobl2007-12-261-12/+9
| | | | | | | | | | | | | | | | | | | - Use the correct offsets when copying out the results of PCIOCGETCONF_OLD. This happened to not affect the 64-bit architectures because there the addition of pc_domain to struct pcisel didn't change the overall size of struct pci_conf. [1] - Always copy the name and unit information to conf_old so it's also part of the output once this information is cached in dinfo. - Use the correct type for flags in struct pci_match_conf_old. This change is more or less cosmetic though. Reported and tested by: bde [1] Reviewed by: imp MFC after: 3 days Committed from: 24C3 Notes: svn path=/head/; revision=174932
* Simplify the old compat #ifdefs.Warner Losh2007-10-261-22/+12
| | | | Notes: svn path=/head/; revision=172999
* Add ABI backwards compatibility to the FreeBSD 4/5/6 versions ofMarius Strobl2007-10-241-51/+295
| | | | | | | | | | | | | | | | | the PCIOCGETCONF, PCIOCREAD and PCIOCWRITE IOCTLs, which was broken with the introduction of PCI domain support. As the size of struct pci_conf_io wasn't changed with that commit, this unfortunately requires the ABI of PCIOCGETCONF to be broken again in order to be able to provide backwards compatibility to the old version of that IOCTL. Requested by: imp Discussed with: re (kensmith) Reviewed by: PCI maintainers (imp, jhb) MFC after: 5 days Notes: svn path=/head/; revision=172932
* Make the PCI code aware of PCI domains (aka PCI segments) so we canMarius Strobl2007-09-301-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | support machines having multiple independently numbered PCI domains and don't support reenumeration without ambiguity amongst the devices as seen by the OS and represented by PCI location strings. This includes introducing a function pci_find_dbsf(9) which works like pci_find_bsf(9) but additionally takes a domain number argument and limiting pci_find_bsf(9) to only search devices in domain 0 (the only domain in single-domain systems). Bge(4) and ofw_pcibus(4) are changed to use pci_find_dbsf(9) instead of pci_find_bsf(9) in order to no longer report false positives when searching for siblings and dupe devices in the same domain respectively. Along with this change the sole host-PCI bridge driver converted to actually make use of PCI domain support is uninorth(4), the others continue to use domain 0 only for now and need to be converted as appropriate later on. Note that this means that the format of the location strings as used by pciconf(8) has been changed and that consumers of <sys/pciio.h> potentially need to be recompiled. Suggested by: jhb Reviewed by: grehan, jhb, marcel Approved by: re (kensmith), jhb (PCI maintainer hat) Notes: svn path=/head/; revision=172394
* Actually make bounds checking for PCIOCREAD and PCIOCWRITE work.Ruslan Ermilov2006-10-061-6/+8
| | | | Notes: svn path=/head/; revision=163055
* For FreeBSD 4 binaries, when trying to read from a device that doesPaul Saab2005-08-261-1/+8
| | | | | | | | | | | not exsist, do not have ioctl return an error, but instead set -1 in the data returned to the user. This allows the HP bios flash utilities to work without requiring changes to their code. Reviewed by: jhb Notes: svn path=/head/; revision=149478
* Use pci_find_bsf() to retrieve the PCI device associated withBruce M Simpson2005-04-131-13/+16
| | | | | | | | | | a bus/device/function tuple. This change enables pciconf(8) to work with CardBus devices. Reviewed by: imp Notes: svn path=/head/; revision=145022
* Use dynamic major number allocation.Poul-Henning Kamp2005-02-271-7/+0
| | | | Notes: svn path=/head/; revision=142715
* Do the dreaded s/dev_t/struct cdev */Poul-Henning Kamp2004-06-161-3/+3
| | | | | | | Bump __FreeBSD_version accordingly. Notes: svn path=/head/; revision=130585