|
Revision tags: v3.14.0 |
|
| #
021d41cf |
| 28-Nov-2024 |
GuEe-GUI <[email protected]> |
Port to RT-Thread Smart DM PCI
Signed-off-by: GuEe-GUI <[email protected]>
|
|
Revision tags: v3.13.0, v3.12.0, v3.11.1, v3.11.0 |
|
| #
ff9f39c7 |
| 08-May-2023 |
Pali Rohár <[email protected]> |
libpci: Add Windows physmem support for PCIe ECAM access
It requires either access to NT Section \Device\PhysicalMemory (or compatible) or to have available kernel32.dll VxDCall2 function or w32skrn
libpci: Add Windows physmem support for PCIe ECAM access
It requires either access to NT Section \Device\PhysicalMemory (or compatible) or to have available kernel32.dll VxDCall2 function or w32skrnl.dll DPMI function.
show more ...
|
| #
a9df1d1b |
| 08-May-2023 |
Pali Rohár <[email protected]> |
libpci: Add DJGPP physmem support for PCIe ECAM access
It requires either Device Mapping support on DPMI host or Physical Address Mapping support together with support for changing DS descriptor lim
libpci: Add DJGPP physmem support for PCIe ECAM access
It requires either Device Mapping support on DPMI host or Physical Address Mapping support together with support for changing DS descriptor limit to maximal size 4 GB which enables address wrapping and so access to addresses below the process base address.
show more ...
|
| #
ba9eff21 |
| 20-Feb-2024 |
Pali Rohár <[email protected]> |
libpci: Add missing dependences for i386-ports.o target
|
| #
3b355715 |
| 18-Feb-2024 |
Pali Rohár <[email protected]> |
libpci: Do not build physmem-posix.c when not needed
|
| #
7d347ab7 |
| 08-May-2023 |
Pali Rohár <[email protected]> |
libpci: Move physical memory mapping mmap() code from ecam/mmio-ports to physmem-posix.c file
This deduplicates physical memory mapping mmap() code found in ecam and mmio-ports backends into common
libpci: Move physical memory mapping mmap() code from ecam/mmio-ports to physmem-posix.c file
This deduplicates physical memory mapping mmap() code found in ecam and mmio-ports backends into common functions with new physmem API.
This new physmem API allows to implement also non-mmap() variants of physical memory mapping.
show more ...
|
| #
db5f48e7 |
| 07-May-2023 |
Pali Rohár <[email protected]> |
windows: Deduplicate code and move helper functions to new file win32-helpers.c
Function win32_strerror() was duplicated in two different files: win32-cfgmgr32.c and win32-kldbg.c. Now there is only
windows: Deduplicate code and move helper functions to new file win32-helpers.c
Function win32_strerror() was duplicated in two different files: win32-cfgmgr32.c and win32-kldbg.c. Now there is only one in win32-helpers.c.
show more ...
|
| #
5b52ae79 |
| 22-Jan-2024 |
Agg242 <[email protected]> |
New back-end for AmigaOS on PowerPC
|
| #
30e9f21e |
| 29-Dec-2023 |
Martin Mares <[email protected]> |
Get rid of workarounds for Linux systems without pread/pwrite
Many things have changed since we introduced work-arounds for Linux systems with missing pread/pwrite in 1999 (if you are curious, it wa
Get rid of workarounds for Linux systems without pread/pwrite
Many things have changed since we introduced work-arounds for Linux systems with missing pread/pwrite in 1999 (if you are curious, it was in commit bc6346df8d89ece4814be7dff951ec1a7d259938).
I believe that it is supported by all reasonably recent Linux systems now. After all, pread() was already defined by POSIX.1-2001.
This should also fix problems with musl libc mentioned in GitHub issue #158.
show more ...
|
|
Revision tags: v3.10.0 |
|
| #
2ba0f6f4 |
| 29-Jan-2023 |
Pali Rohár <[email protected]> |
libpci: Add PCIe ECAM access method
This is a new direct hardware access method via PCIe ECAM (Enhanced Configuration Access Mechanism). It is available on all PCIe-compliant hardware. Requires root
libpci: Add PCIe ECAM access method
This is a new direct hardware access method via PCIe ECAM (Enhanced Configuration Access Mechanism). It is available on all PCIe-compliant hardware. Requires root privileges and access to physical memory.
ECAM mapping can be specified manually via a new ecam.addrs parameter or can be read from ACPI MCFG table. ACPI MCFG table can be located in the system or read from x86 BIOS memory.
show more ...
|
|
Revision tags: v3.9.0, v3.8.0 |
|
| #
aa5a16ef |
| 04-Mar-2022 |
Pali Rohár <[email protected]> |
libpci: Add new windows kldbgdrv.sys implementation
Microsoft Kernel Local Debugging Driver (kldbgdrv.sys) allow access for userspace processes to the PCI config space. It supports access up to 6553
libpci: Add new windows kldbgdrv.sys implementation
Microsoft Kernel Local Debugging Driver (kldbgdrv.sys) allow access for userspace processes to the PCI config space. It supports access up to 65536 domains and whole 4096 bytes long extended PCIe config space. Driver is signed by Microsoft and is available for both 32-bit and 64-bit systems.
Driver is not part of Windows system and has to be installed via WinDbg installation package. Standalone installers for WinDbg 6.12.2.633 version: https://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools_amd64/dbg_amd64.msi https://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools/dbg_x86.msi
This kldbgdrv.sys API is used by the !pci command of new WinDbg kernel debugger for displaying PCI config space.
API of this driver is available only for processes with Debug privilege and only if system was booted with Debugging option.
show more ...
|
| #
2e2fe038 |
| 05-Nov-2022 |
Pali Rohár <[email protected]> |
windows: Put name and version information into lspci/setpci executables
Extend existing .in resource template file and generate resource objects also for lspci.exe and setpci.exe executables.
|
| #
0a7350fb |
| 02-Jan-2022 |
Pali Rohár <[email protected]> |
libpci: Add Intel Type 1 implementation for memory mapped systems
Lot of non-x86 platforms also support Intel Type 1 mechanism. x86 IO ports CF8 and CFC are on these platforms mapped into standard m
libpci: Add Intel Type 1 implementation for memory mapped systems
Lot of non-x86 platforms also support Intel Type 1 mechanism. x86 IO ports CF8 and CFC are on these platforms mapped into standard memory space. Address mapping itself is platform or board specific and there is no default value.
Lot of ARM boards with multiple PCIe controllers are multi-domain and each PCI domain has its own CF8/CFC (address/data) registers mapped into memory space.
Add new mmio-conf1 backend which access CF8/CFC ports via MMIO and define new config option mmio-conf1.addrs which specify list of address/data register pairs in memory space for each PCI domain. Format of this option is: 0xaddr1/0xdata1,0xaddr2/0xdata2,...
show more ...
|
| #
59cb6568 |
| 08-May-2022 |
Pali Rohár <[email protected]> |
libpci: Put name and version information into DLL library
Generate rc file from in template and fill DLL name and DLL version from Makefile.
It looks like that the only possible way via GNU tools t
libpci: Put name and version information into DLL library
Generate rc file from in template and fill DLL name and DLL version from Makefile.
It looks like that the only possible way via GNU tools to specify version information for DLL library is via text rc file compiled as COFF object file via GNU windres and linked into the final DLL library via GNU ld.
show more ...
|
| #
32934d5b |
| 08-May-2022 |
Pali Rohár <[email protected]> |
libpci: Add support for building versioned shared Windows DLL library libpci3.dll
PE/COFF format, used by DLL libraries, does not support version symbols like ELF format. Recommendation from Microso
libpci: Add support for building versioned shared Windows DLL library libpci3.dll
PE/COFF format, used by DLL libraries, does not support version symbols like ELF format. Recommendation from Microsoft for DLL symbol versioning is to use DLL API sets. But DLL API sets scheme requires for every API change to generated a new slim forwarding DLL library, which is unsuitable for distribution which wants just one DLL library with all version symbols.
So instead of Microsoft recommended scheme for DLL versioning, use new different versioning scheme: Symbol is composed by function name, at (@) character and version string (version is same as for ELF targets). Symbol name without version information is added only into the DLL DEF file as alias to symbol with higest version. So linker at application link time resolves "unversioned" symbol to the versioned one via this alias and puts "versioned" symbol into final executable. This works fine if GNU LD is linking application via import library libpci3.dll.a generated from that DLL DEF file libpci3.def. But does not work when linking directly to the DLL library because library itself does not contain aliases. Note that GNU LD does not support linking to DEF file (it is required to first generated import library from DEF file).
Note that older GNU LD versions have bug which cause generation of corrupted DLL files if some symbol contains dot (.) character. Hopefully this bug was fixed in GNU LD 2.21.
At the end application lspci.exe requires library libpci3.dll with symbols pci_alloc@LIBPCI_3.0, pci_init@LIBPCI_3.5, pci_fill_info@LIBPCI_3.8 and therefore libpci3.dll stays backward compatible with future changes.
PE/COFF executables can reference symbols either via name or via its ordinal number. Because DLL DEF files are generated from libpci version script and generator ver2def.pl preserves order of symbols, it means that ordinal numbers stay backward compatible unless order of lines in version script is changed.
WARNINGS:
GCC an GNU LD for Windows target have some bugs which cause that -fvisibility=hidden switch and __attribute__((visibility("default"))) does not work. Seems that they are broken and ignored when building DLL library. So instead use -Wl,--exclude-all-symbols switch with explicit DLL DEF file for building DLL library, which seems to work. This switch is supported since GNU LD 2.21.
GNU LD has also another bug which results in broken DLL library if input DLL DEF file which describes symbols for exports, contains also symbol aliases via == operator.
So do not specify symbol aliases in input DLL DEF file for building DLL library. Instead construct separate DLL DEF file for building libpci3.dll without symbol aliases and separate DLL DEF file libpci3.def with symbol aliases for building import library libpci3.dll.a suitable for linking into target applications. Note that operator == for symbol aliases is supported since GNU dlltool 2.21.
Generate those two DLL DEF files via new script ver2def.pl from libpci.ver version script. So exported functions and version symbols would be defined only at one place in file libpci.ver.
Note that GNU LD for Windows targets has also broken support for version scripts, it exports nonsense data and completely ignores version information. So always use only DLL DEF files generated by ver2def.pl script and never pass original version script to GNU LD.
Due to another bugs in GNU dlltool, ordinals for aliased symbols from DLL DEF file are calculated incorrectly when building import library. So calculate ordinals manually in ver2def.pl script and explicitly put then into generated libpci3.def DLL DEF file for every symbol, including aliases.
And because aliases are stored only in libpci3.def file (and in import library libpci3.dll.a generated from that DEF file) and not in DLL library libpci3.dll itself, it is required to link all libpci applications via import library and not directly to libpci3.dll. This is limitation of PE/COFF format used by DLL libraries.
So for building Windows DLL library libpci3.dll is needed to use GNU binutils 2.21 or new.
show more ...
|
| #
a65bb452 |
| 18-Apr-2022 |
Pali Rohár <[email protected]> |
Makefile: Unify building of shared libpci library
Move Darwin and Linux/ELF platform link switches to new PCILIB_LDFLAGS variable.
|
| #
2d0af6fc |
| 02-Jan-2022 |
Pali Rohár <[email protected]> |
libpci: Add new windows NT sysdbg implementation
NT SysDbg interface allow access to the PCI config space. Only devices on the first domain are available and only first 256 bytes of the PCI config s
libpci: Add new windows NT sysdbg implementation
NT SysDbg interface allow access to the PCI config space. Only devices on the first domain are available and only first 256 bytes of the PCI config space can be accessed. Compared to intel-conf1 access, this API is race free as NT kernel serialize access to PCI I/O ports. This NT SysDbg API is used by the !pci command of 32-bit WinDbg kernel debugger for displaying PCI config space. Debug privilege is required to use this NT interface.
show more ...
|
| #
26c8b543 |
| 31-Dec-2021 |
Pali Rohár <[email protected]> |
libpci: Add windows cfgmgr32 implementation
Access via cfgmgr32.dll library allows to list PCI devices and retrieve their basic properties and system resource configuration. Access is available to a
libpci: Add windows cfgmgr32 implementation
Access via cfgmgr32.dll library allows to list PCI devices and retrieve their basic properties and system resource configuration. Access is available to all users and should not require special privileges, access tokens, rights or permissions.
This cfgmgr32.dll library does not provide access to PCI config space.
show more ...
|
| #
08609192 |
| 02-Jan-2022 |
Pali Rohár <[email protected]> |
libpci: Implement virtual config space for provides without access to config space
Add a new pci_dev member no_config_access which signals that there is no access to config space for particular devi
libpci: Implement virtual config space for provides without access to config space
Add a new pci_dev member no_config_access which signals that there is no access to config space for particular device. Reading operation in this case should return data from emulated virtual config space. For provides there is a new helper function pci_generic_read() which emulates config spaces based on struct pci_dev members.
show more ...
|
|
Revision tags: v3.7.0, v3.6.4, v3.6.3, v3.6.2, v3.6.1, v3.6.0, v3.5.6, v3.5.5, v3.5.4, v3.5.3, v3.5.2, v3.5.1, v3.5.0, v3.4.1, v3.4.0, v3.3.1, v3.3.0, v3.2.1, v3.2.0 |
|
| #
a6665cfb |
| 04-Jan-2013 |
Brice Goglin <[email protected]> |
pkgconfig: Fix libpci.pc for static linking
The libpci.pc file does not seem to be correct for static linking.
$ pkg-config --libs --static libpci -lpci
It brings no dependencies while -lresol
pkgconfig: Fix libpci.pc for static linking
The libpci.pc file does not seem to be correct for static linking.
$ pkg-config --libs --static libpci -lpci
It brings no dependencies while -lresolv (and likely -lz) seems needed:
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../x86_64-linux-gnu/ libpci.a(names-net.o):function pci_id_net_lookup: error: undefined reference to '__res_query'
Something like:
Libs.private: -lresolv -lz
Signed-off-by: Guillem Jover <[email protected]>
show more ...
|
| #
0a913370 |
| 30-Nov-2019 |
Joan Lledó <[email protected]> |
New access method: Hurd via RPCs
A new module for the Hurd that accesses PCI bus using available RPCs.
|
| #
0547ded8 |
| 20-Mar-2018 |
GongYuJian <[email protected]> |
Sylixos: Bits of Makefile and configure
|
| #
ac357d3b |
| 01-Nov-2014 |
Martin Mares <[email protected]> |
Rewritten support for UDEV's HWDB
HWDB is now handled in a way very similar to the DNS resolver.
The interface lives in a separate source file (lib/names-hwdb.c), results of lookups are cached. Use
Rewritten support for UDEV's HWDB
HWDB is now handled in a way very similar to the DNS resolver.
The interface lives in a separate source file (lib/names-hwdb.c), results of lookups are cached. Use of HWDB can be disabled either by passing PCI_LOOKUP_NO_HWDB or by setting the hwdb.disabled configuration parameter.
Also, there should be no more leaks of libudev's structures.
show more ...
|
| #
a54d4bd1 |
| 01-Nov-2014 |
Martin Mares <[email protected]> |
Darwin: Renamed to darwin.c
|
| #
8d1cb3d7 |
| 20-Oct-2014 |
Richard Yao <[email protected]> |
Fix building shared libraries on Darwin
The original patch by Apple did not support building shared libraries on Darwin. This corrects that oversight. It also fixes a few other miscellaneous issues
Fix building shared libraries on Darwin
The original patch by Apple did not support building shared libraries on Darwin. This corrects that oversight. It also fixes a few other miscellaneous issues like incorrect platform detection and the lack of an entry in the README file.
Signed-off-by: Richard Yao <[email protected]>
show more ...
|