summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2020-04-25Merge remote-tracking branch 'origin/master' into obsdMatthieu Herrb
2019-12-27Hurd: avoid using the deprecated RPC pci_get_ndevs()Joan Lledó
2019-07-15Merge remote-tracking branch 'origin/master' into obsdMatthieu Herrb
2019-07-12x86: Use MAP_SHARED for memory/rom region mmap && fix modeDamien Zammit
2019-07-11linux: Don't try to include <sys/io.h> on armAdam Jackson
It no longer exists in newer glibc, and didn't work like you'd have hoped on anything but strongarm anyway.
2019-07-11Fix pci_device_get_bridge_info() for multifunction bridgesLichao Mu
Fixes: xorg/lib/libpciaccess#9
2019-07-11Use recursive scan busDamien Zammit
Switch over to the new recursive scan bus routine for x86 Signed-off-by: Damien Zammit <damien@zamaudio.com>
2019-07-11Add better probe cmds for non-VGA roms and regions on x86Damien Zammit
Also add a recursive scan-bus routine that uses the new probe cmds. Signed-off-by: Damien Zammit <damien@zamaudio.com>
2019-07-11New module for the HurdDamien Zammit
This new module uses Hurd's RPCs for accessing the PCI configuration space. Direct access as in {read_write}_{8,16,32} functions is done by the old x86 module. Some x86 function prototypes are now declared in a new header for the Hurd module to use them, in order to duplicate as little code as possible. Author: Joan Lledó <joanlluislledo@gmail.com> Also-by: Damien Zammit <damien@zamaudio.com> Signed-off-by: Damien Zammit <damien@zamaudio.com>
2019-07-10freebsd_pci: remove old probe methodNiclas Zeising
Remove the old probe method. The PCIOCGETBAR ioctl has been in FreeBSD since 8.0 release, if not earlier. Remove the old way of doing it. This is done using unifdef -DPCIOCGETBAR and cleaning up whitespace. Signed-off-by: Niclas Zeising <zeising@daemonic.se>
2019-07-10freebsd_pci: format freebsd_pci_methodsNiclas Zeising
Format freebsd_pci_methods a bit, adding some whitespace and assigning NULL to methods not implemented. This makes it easier to see the names of various methods, as well as which methods are not implemented. Idea from src/linux_sysfs.c Signed-off-by: Niclas Zeising <zeising@daemonic.se>
2019-07-10freebsd_pci: Add has_kernel_driver functionNiclas Zeising
Add a has_kernel_driver function to the FreeBSD libpciaccess functions. This uses the PCIOCATTACHED ioctl to check if a driver is attached to a specific PCI device. Idea taken from the FreeBSD system utility pciconf. Signed-off-by: Niclas Zeising <zeising@daemonic.se>
2019-07-10freebsd_pci: Remove unused variableNiclas Zeising
Remove unused variable, it's written to, but never used. Signed-off-by: Niclas Zeising <zeising@daemonic.se>
2019-07-10freebsd_pci: Make this work on sparc64Niclas Zeising
Make the FreeBSD libpciaccess routines work on FreeBSD. The FreeBSD sparc64 architecture needs special treatment, similar to the PCI_MAGIC_IO_RANGE code. However, PCI_MAGIC_IO_RANGE has been gone for some time. Give this a chance to work on sparc64 anyway. This code has been in the FreeBSD ports tree for some time.
2019-07-10freebsd_pci: update legacy I/O for new architecturesNiclas Zeising
Update FreeBSD legacy I/O routines for new architectures. When we're not on amd64 or i386, and PCI_MAGIC_IO_RANGE is not defined, use IOCTLs to handle reads and writes through /dev/io. This is accomplished by opening /dev/io and using IOCTLs from dev/io/iodev.h, an interface that exists on most FreeBSD architectures. This change has been in the FreeBSD ports tree for quite some time.
2019-07-10freebsd_pci: Fix types in write functionsNiclas Zeising
Fix the type used in write functions to match the size of the write. Signed-off-by: Niclas Zeising <zeising@daemonic.se>
2019-07-10Don't check for struct pci_io.pi_sel.pc_domainNiclas Zeising
Autoconf has a check that pci_io.pi_sel.pc_domain exists. This is only used on FreeBSD. pc_domain was added to pci_io.pi_sel on FreeBSD many many releases ago, and exists on all current FreeBSD releases. Remove the check, and the corresponding HAVE_PCI_IO_PC_DOMAIN, and update the code to take into account that #ifdef HAVE_PCI_IO_PC_DOMAIN is now always true. Signed-off-by: Niclas Zeising <zeising@daemonic.se>
2019-07-10freebsd_pci: Try to conform to uniform styleNiclas Zeising
Try to make freebsd_pci.c conform to a more uniform style. This change is whitespace only, no functional change intended. Signed-off-by: Niclas Zeising <zeising@daemonic.se>
2019-06-16freebsd: Add !legacy open_device_io implementationConrad Meyer
Some drivers, such as QXL, rely on this method and do not check for errors when it is unavailable. FreeBSD's legacy method can enumerate any d/b/s/f just fine, so it should be adequate for the !legacy API, as far as I can tell. With this change, QXL doesn't crash on startup on FreeBSD. Signed-off-by: Conrad Meyer <cem@FreeBSD.org>
2018-11-25Only include <sys/memrange.h> on i386/amd64 as it really isiMark Kettenis
architecture-specific. This prevents us from trying to establish write-combining mappings on other architectures, which in turn makes non-kms pci video drivers work again on those platforms. ok mlarkin@
2018-11-25Fix typo/pasto in previous commit; request write combining mapping when itMark Kettenis
is actually requested and not for every writable mapping.
2018-11-25calloc the pci_sys struct before probing for PCI.Jonathan Gray
As the functions check if the member pointers are NULL but not the pointer to the struct itself. Reworked version of a diff from ratchov@ who created it to prevent a xserver crash on zaurus where there is no PCI. 'looks ok' matthieu@, ok deraadt@
2018-11-25We don't need the VGA arbiter if direct hardware access has been disabled.Mark Kettenis
ok matthieu@
2018-11-25If opening /dev/pciN read-write fails, try opening it read-only. This allowMark Kettenis
X to run with machdep.allowaperture=0 on inteldrm(4) and radeondrm(4). ok matthieu@
2018-11-25Improve VGA arbiter support now that the kernel gives us information aboutMark Kettenis
the resources required by a particular device. ok matthieu@, jsg@
2018-11-25Add support for X server privilege separation to pci_legacy_open_io()Matthieu Herrb
With privilege separation the X server enables legacy i/o port access during the early privileged initialization. Other calls should be no-op. Makes X server 1.12 happy with privilege separation. ok miod@
2018-11-25Merge libpciaccess 0.13 from X.Org.Matthieu Herrb
2018-11-25Merge remote-tracking branch 'origin/master' into obsdMatthieu Herrb
2018-10-24linux: Set number of devices to 0 in case of errorOlivier Fourdan
pci_sys is a global variable which is populated on init, and in case of error reading sysfs on Linux, the devices are NULL, but the number of devices is left unchanged. As a result, we may crash in `pci_device_next()` which relies on the number of devices. To fix the issue, simply reset the number of devices to zero in case of error so we don't try to access indices of a NULL array later on. Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
2017-10-22Merge remote-tracking branch 'origin/master' into obsdMatthieu Herrb
2017-09-20linux: support 32 bit PCI domains (v3)Stephen Hemminger
The PCI domain may be larger than 16 bits on Microsoft Azure and other virtual environments. PCI busses reported by ACPI are limited to 16 bits, but in Azure the domain value for pass through devices is intentionally larger than 16 bits to avoid clashing with local devices. This is needed to support pass through of GPU devices. v3: (ajax) Update FreeBSD and Solaris backends to preserve the full 32-bit domain number, since on those OSes it stands a chance of working already. Update NetBSD and OpenBSD backends to initialize domain_16 compatibly with older libpciaccess; neither backend appears to support more than a handful of domains to begin with though. Trivially update the generic x86 backend for source compatibility, though it still only supports one domain and will never be better. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=101744 Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com> Reviewed-by: Eric Anholt <eric@anholt.net>
2017-04-04use cached devinfo snapshots, remove unnecessary di_init()Henry Zhao
Use cached devinfo (DINFOCACHE) in di_init(). Remove unnecessary di_init() on nexus nodes. Signed-off-by: Henry Zhao <henry.zhao@oracle.com> Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
2017-04-04probe should not hold pci nexus drivers openHenry Zhao
Probe should not hold pci nexus drivers open - close after use. Signed-off-by: Henry Zhao <henry.zhao@oracle.com> Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
2017-04-04Revert "linux_sysfs: include <limits.h> for PATH_MAX"Emil Velikov
This reverts commit 8ea3af620a2d4ad5648917b4a0ef2b23ff566774. The include was added with 6bd2f7f92eae713663f4e13f6e2cb23526607b8c Cc: Adam Jackson <ajax@redhat.com>
2017-01-22Merge remote-tracking branch 'origin/master' into obsdMatthieu Herrb
2017-01-11linux sysfs: retrieve vendor, device... info via separate sysfs filesEmil Velikov
Currently the kernel does not expose the revision file. With that about to change (due in 4.10) we can read all the information required from separate files and avoid opening the config one. The latter has the [negative] side effect of waking up the device, which in some cases can be quite costly. Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
2016-08-15Ignore 32-bit domainsKeith Busch
A pci "domain" need not be limited to the 16-bits. The Linux kernel currently supports 32-bit domains which cause startx to segfault. Updating libpciaccess to support 32-bit domains breaks the library's ABI, and domains requiring 32-bits are not necessary for startx anyway, so this patch ignores them. Reported-by: Pawel Baldysiak <pawel.baldysiak@intel.com> Signed-off-by: Keith Busch <keith.busch@intel.com> Reviewed-by: Eric Anholt <eric@anholt.net>
2016-05-16Merge remote-tracking branch 'origin/master' into obsdMatthieu Herrb
2016-05-02device-name: handle calloc failure in insert()arsharma
Issue was spotted by Klocwork, and fixed by arsharma as part of Android-ia. Just bail out if memory allocation fails. All the callers of insert() already handle the case. [Emil Velikov: Split from larger patch, write commit message] Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2016-05-02vgaarb: add a the trailing NULL character on read(vgaarb_fd)arsharma
Issue was spotted by Klocwork, and fixed by arsharma as part of Android-ia. Not 100% sure if the data read from /dev/vga_arbiter is not already null terminated, but making sure won't hurt either. [Emil Velikov: Split from larger patch, write commit message] Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
2015-11-07Merge remote-tracking branch 'origin/master' into obsdMatthieu Herrb
2015-10-20libpciaccess: Fix incorrect format specificationChuck Tuffli
Building libpciaccess generates a warning on versions of Linux in which the definition of the struct mtrr_sentry has changed to __u64. Since sentry.base is assigned from a pciaddr_t, always cast sentry.base to be type pciaddr_t and modify the formatting string to use PRIx64 instead of %08lx Verified on Ubuntu 10.04 and 14.04 Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=74643 Signed-off-by: Chuck Tuffli <chuck@tuffli.net>
2015-09-22linux_sysfs: include <limits.h> for PATH_MAXFelix Janda
Signed-off-by: Felix Janda <felix.janda@posteo.de> Tested-by: Bernd Kuhls <bernd.kuhls@t-online.de>
2015-06-24Attempt to establish a write combining mapping instead of relying on mttrs.Mark Kettenis
Setting the mttrs failson my thinkpad x1 rev 3, making the xorg-video-vesa driver painfully slow. This makes the machine somewhat usable. ok mpi@
2015-05-09Merge remote-tracking branch 'origin/master' into obsdMatthieu Herrb
2015-05-04linux_sysfs.c: Include <limits.h> for PATH_MAXFelix Janda
Fixes compilation with musl libc. Tested-by: Bernd Kuhls <bernd.kuhls@t-online.de> Signed-off-by: Felix Janda <felix.janda@posteo.de> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2015-05-01Include config.h before anything else in *.cJulien Cristau
Debian bug#749008 <https://bugs.debian.org/749008> Reported-by: Michael Tautschnig <mt@debian.org> Signed-off-by: Julien Cristau <jcristau@debian.org> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2015-03-28Merge remote-tracking branch 'origin/master' into obsdMatthieu Herrb
2015-02-12Check for __linux__ instead of linux during compilationEero Tamminen
"__linux__" is the POSIX define for checking for Linux OS, "linux" is deprecated and apparently not supported by Android. Besides correcting the define, patch adds error for the case OS isn't recognized. Signed-off-by: Eero Tamminen <eero.t.tamminen@intel.com> v2: Drop double negative from commit msg. Spotted by Mateusz Jończyk. [Emil Velikov: Remove irrelevant Android details from commit msg.] Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Reviewed-by: Jasper St. Pierre <jstpierre@mecheye.net> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2015-02-12Include config.h before any other headers.Emil Velikov
The former has a series of defines which in some cases are crusial to be set before including any system headers. Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>