]> git.ipfire.org Git - thirdparty/pciutils.git/log
thirdparty/pciutils.git
2 weeks agomaint/README: git push --tags is done by push-to-public master
Martin Mares [Fri, 5 Apr 2024 21:36:11 +0000 (23:36 +0200)] 
maint/README: git push --tags is done by push-to-public

2 weeks agoReleased as v3.12.0 v3.12.0
Martin Mares [Fri, 5 Apr 2024 21:31:56 +0000 (23:31 +0200)] 
Released as v3.12.0

2 weeks agoUpdate pci.ids to today's snapshot
Martin Mares [Fri, 5 Apr 2024 21:29:11 +0000 (23:29 +0200)] 
Update pci.ids to today's snapshot

2 weeks agoREADME.Windows: Fix typo
Martin Mares [Fri, 5 Apr 2024 20:51:49 +0000 (22:51 +0200)] 
README.Windows: Fix typo

2 weeks agoREADME: Copy win32-kldbg info from manpage
Pali Rohár [Fri, 5 Apr 2024 16:36:14 +0000 (18:36 +0200)] 
README: Copy win32-kldbg info from manpage

2 weeks agolibpci: hwdb: Remove ID_SUBSYSTEM and ID_GEN_SUBSYSTEM usage from pci_id_hwdb_lookup()
Pali Rohár [Sat, 30 Mar 2024 10:06:25 +0000 (11:06 +0100)] 
libpci: hwdb: Remove ID_SUBSYSTEM and ID_GEN_SUBSYSTEM usage from pci_id_hwdb_lookup()

Currently used udev hwdb key "ID_MODEL_FROM_DATABASE" does not return
subsystem, but returns device name.

There is no udev hwdb key which returns subsystem or generic subsystem.
So remove ID_SUBSYSTEM and ID_GEN_SUBSYSTEM from pci_id_hwdb_lookup().

This change fixes issue that pci_id_hwdb_lookup() as subsystem name always
returned device name.

2 weeks agowindows: Do not show unwanted file-not-found GUI message box
Pali Rohár [Fri, 29 Mar 2024 20:19:27 +0000 (21:19 +0100)] 
windows: Do not show unwanted file-not-found GUI message box

Sometimes SEM_FAILCRITICALERRORS flag (disable critical-error-handler GUI
messages) is not enough for LoadLibrary() and SEM_NOOPENFILEERRORBOX flag
(disable file-not-found GUI messages) is needed too to prevent showing GUI
messages on LoadLibrary() failures.

2 weeks agowindows: Correctly propagate error code from win32_call_func_with_tcb_privilege()
Pali Rohár [Wed, 28 Feb 2024 00:06:38 +0000 (01:06 +0100)] 
windows: Correctly propagate error code from win32_call_func_with_tcb_privilege()

Cleanup phase may change error code as it calls other WinAPI functions.

2 weeks agolibpci: ecam: Fix scanning of Extended BIOS Data Area for ACPI RSDP
Pali Rohár [Tue, 27 Feb 2024 23:32:08 +0000 (00:32 +0100)] 
libpci: ecam: Fix scanning of Extended BIOS Data Area for ACPI RSDP

At physical address 0x40E (part of BDA) is stored indirect 16-bit paragraph
offset to the EBDA, and not the EBDA itself. Fix it.

ACPI code in linux kernel checks if the EBDA offset in BDA is above
physical address 0x400. Do the same check here. It is for detection if EBDA
is present as it does not have to be on the old computers or in some
virtualised environments.

2 weeks agoMakefile: Pass CFLAGS also when linking executable
Pali Rohár [Sun, 25 Feb 2024 02:22:08 +0000 (03:22 +0100)] 
Makefile: Pass CFLAGS also when linking executable

Optimization flags like -O2 from $(OPT) passed via $(CFLAGS) used during
compiling individual object files are ignored when gcc's LTO is enabled for
the linking final executable.

Optimization flags used for compiling individual object files should be
same as optimization flags for linking final executable.

Fix propagation of $(CFLAGS) and $(OPT) when LTO is enabled.

3 weeks agomaint/push-to-public: git push --tags requires branches
Martin Mares [Fri, 29 Mar 2024 22:25:43 +0000 (23:25 +0100)] 
maint/push-to-public: git push --tags requires branches

3 weeks agopci.h: Document PCI_FILL_xxx flags
Martin Mares [Fri, 29 Mar 2024 22:10:49 +0000 (23:10 +0100)] 
pci.h: Document PCI_FILL_xxx flags

3 weeks agoUse C99 named initializers for struct pci_methods
Martin Mares [Fri, 29 Mar 2024 21:47:48 +0000 (22:47 +0100)] 
Use C99 named initializers for struct pci_methods

5 weeks agoMerge remote-tracking branch 'github/master'
Martin Mares [Wed, 13 Mar 2024 17:55:25 +0000 (18:55 +0100)] 
Merge remote-tracking branch 'github/master'

5 weeks agoMerge pull request #178 from OscarL/haiku-fix-build-with-dns
Martin Mareš [Wed, 13 Mar 2024 17:55:15 +0000 (18:55 +0100)] 
Merge pull request #178 from OscarL/haiku-fix-build-with-dns

Haiku: fix build with DNS=yes.

5 weeks agoMerge pull request #177 from OscarL/cache-loc-on-man-pages
Martin Mareš [Wed, 13 Mar 2024 17:54:24 +0000 (18:54 +0100)] 
Merge pull request #177 from OscarL/cache-loc-on-man-pages

lspci.man: update the path used to store the cached files.

5 weeks agoHaiku: fix build with DNS=yes.
Oscar Lesta [Wed, 13 Mar 2024 06:26:13 +0000 (03:26 -0300)] 
Haiku: fix build with DNS=yes.

5 weeks agolspci.man: update the path used to store the cached files.
Oscar Lesta [Wed, 13 Mar 2024 05:56:34 +0000 (02:56 -0300)] 
lspci.man: update the path used to store the cached files.

6 weeks agosysfs: Avoid close() potentially clobbering errno
Martin Mares [Tue, 12 Mar 2024 19:47:28 +0000 (20:47 +0100)] 
sysfs: Avoid close() potentially clobbering errno

6 weeks agoMerge remote-tracking branch 'github/master'
Martin Mares [Tue, 12 Mar 2024 11:22:48 +0000 (12:22 +0100)] 
Merge remote-tracking branch 'github/master'

6 weeks agoMerge pull request #176 from OscarL/haiku-build-fix
Martin Mareš [Tue, 12 Mar 2024 11:22:35 +0000 (12:22 +0100)] 
Merge pull request #176 from OscarL/haiku-build-fix

Build fix on Haiku.

6 weeks agoBuild fix on Haiku.
Zoltán Mizsei [Sun, 1 Jul 2018 16:42:31 +0000 (18:42 +0200)] 
Build fix on Haiku.

8 weeks agomaint/push-to-public: Push including tags
Martin Mares [Mon, 26 Feb 2024 20:16:23 +0000 (21:16 +0100)] 
maint/push-to-public: Push including tags

8 weeks agolspci: Add TEE-IO extended capability bit
Alexey Kardashevskiy [Mon, 26 Feb 2024 06:01:35 +0000 (17:01 +1100)] 
lspci: Add TEE-IO extended capability bit

PCIe r6.1, sec 7.5.3.3 defines "TEE-IO Supported" in the PCI Express Device
Capabilities Register which indicates that the function implements
the TEE-IO functionality as described by the TEE Device Interface Security
Protocol (TDISP, PCIe r6.1, chapter 11).

tests/cap-ide is an example of such device.

Signed-off-by: Alexey Kardashevskiy <aik@amd.com>
8 weeks agols-ecaps: Add decode support for IDE Extended Capability
Alexey Kardashevskiy [Mon, 26 Feb 2024 06:01:34 +0000 (17:01 +1100)] 
ls-ecaps: Add decode support for IDE Extended Capability

IDE (Integrity & Data Encryption) Extended Capability defined in [1]
implements control of the PCI link encryption. The verbose level > 2 prints
offsets of the fields to make running setpci easier.

The example output is:

Capabilities: [830 v1] Integrity & Data Encryption
IDECap: Lnk=0 Sel=1 FlowThru- PartHdr- Aggr- PCPC- IDE_KM+ Alg='AES-GCM-256-96b' TCs=8 TeeLim+
IDECtl: FTEn-
SelectiveIDE#0 Cap: RID#=1
SelectiveIDE#0 Ctl: En- NPR- PR- CPL- PCRC- HdrEnc=no Alg='AES-GCM-256-96b' TC0 ID0
SelectiveIDE#0 Sta: insecure RecvChkFail-
SelectiveIDE#0 RID: Valid- Base=0 Limit=0 SegBase=0
SelectiveIDE#0 RID#0: Valid- Base=0 Limit=0

[1] PCIe r6.0.1, sections 6.33, 7.9.26

Signed-off-by: Alexey Kardashevskiy <aik@amd.com>
8 weeks agomaint/README: Mention maint/push-to-public
Martin Mares [Sat, 24 Feb 2024 23:12:16 +0000 (00:12 +0100)] 
maint/README: Mention maint/push-to-public

8 weeks agoReleasing as v3.11.1. v3.11.1
Martin Mares [Sat, 24 Feb 2024 23:11:10 +0000 (00:11 +0100)] 
Releasing as v3.11.1.

8 weeks agoREADME: Update information about Windows support
Pali Rohár [Sat, 24 Feb 2024 22:57:35 +0000 (23:57 +0100)] 
README: Update information about Windows support

8 weeks agolib/init.c: Fixed a typo causing compilation on Windows to fail
Martin Mares [Sat, 24 Feb 2024 22:38:10 +0000 (23:38 +0100)] 
lib/init.c: Fixed a typo causing compilation on Windows to fail

The typo was introduced by merging the AmigaOS back-end.

8 weeks agoReleased as v3.11.0 v3.11.0
Martin Mares [Sat, 24 Feb 2024 21:59:12 +0000 (22:59 +0100)] 
Released as v3.11.0

8 weeks agoREADME: Update copyright year and mention pcilmr
Martin Mares [Sat, 24 Feb 2024 21:21:16 +0000 (22:21 +0100)] 
README: Update copyright year and mention pcilmr

8 weeks agoUpdated pci.ids to today's snapshot
Martin Mares [Sat, 24 Feb 2024 20:29:47 +0000 (21:29 +0100)] 
Updated pci.ids to today's snapshot

8 weeks agolibpci: Add missing dependences for i386-ports.o target
Pali Rohár [Tue, 20 Feb 2024 17:44:43 +0000 (18:44 +0100)] 
libpci: Add missing dependences for i386-ports.o target

8 weeks agolibpci: i386-io-sunos.h: Implement intel_cleanup_io
Pali Rohár [Tue, 20 Feb 2024 17:44:06 +0000 (18:44 +0100)] 
libpci: i386-io-sunos.h: Implement intel_cleanup_io

Call 'sysi86(SI86V86, V86SC_IOPL, 0);' - same what is X11 and FlashROM doing.

8 weeks agolibpci: Define STATIC_ALIAS for DLL Windows builds
Pali Rohár [Sat, 24 Feb 2024 15:12:26 +0000 (16:12 +0100)] 
libpci: Define STATIC_ALIAS for DLL Windows builds

Windows builds for versioned symbols use inline asm .set directive which in
some cases makes x86-64 LTO compiler to drop the referenced value. Define
STATIC_ALIAS macro with VERSIONED_ABI (used) attribute which forces LTO
compiler to not drop the symbol from the final DLL library.

8 weeks agolibpci: win32-cfgmgr32: Do not include resolver for cfgmgr32 function for MinGW-w64
Pali Rohár [Sat, 24 Feb 2024 15:09:35 +0000 (16:09 +0100)] 
libpci: win32-cfgmgr32: Do not include resolver for cfgmgr32 function for MinGW-w64

MinGW-w64 toolchain (as opposite to MinGW32) provides all needed cfgmgr32
functions in import library. Use import library and do not resolve
functions at runtime.

8 weeks agolibpci: win32-cfgmgr32: Define mMD_Prefetchable constant
Pali Rohár [Sat, 24 Feb 2024 15:08:13 +0000 (16:08 +0100)] 
libpci: win32-cfgmgr32: Define mMD_Prefetchable constant

Older version of cfgmgr32.h header file use define name fMD_Prefetchable
instead of mMD_Prefetchable. Define constant to fix compilation.

8 weeks agowindows: Try to return error message from win32_strerror() in US English language
Pali Rohár [Sat, 24 Feb 2024 15:05:43 +0000 (16:05 +0100)] 
windows: Try to return error message from win32_strerror() in US English language

The default LANG_NEUTRAL language is the system language, not the "C" locale.

8 weeks agoMerge branch 'amiga'
Martin Mares [Fri, 23 Feb 2024 13:56:39 +0000 (14:56 +0100)] 
Merge branch 'amiga'

2 months agolibpci: Do not build physmem-posix.c when not needed
Pali Rohár [Sun, 18 Feb 2024 18:43:13 +0000 (19:43 +0100)] 
libpci: Do not build physmem-posix.c when not needed

2 months agolspci: Fix make uninstall
Pali Rohár [Sun, 18 Feb 2024 16:45:21 +0000 (17:45 +0100)] 
lspci: Fix make uninstall

2 months agopcilmr: Add missing Makefile rules
Pali Rohár [Sun, 18 Feb 2024 16:41:23 +0000 (17:41 +0100)] 
pcilmr: Add missing Makefile rules

2 months agolibpci: ecam: Cache ACPI MCFG table between detect() and init() phase
Pali Rohár [Thu, 18 May 2023 19:40:44 +0000 (21:40 +0200)] 
libpci: ecam: Cache ACPI MCFG table between detect() and init() phase

This will speed up listing devices by lspci as it is not needed to scan
BIOS memory two times.

2 months agolibpci: ecam: Fix detect sequence when addresses are not specified
Pali Rohár [Mon, 8 May 2023 19:25:36 +0000 (21:25 +0200)] 
libpci: ecam: Fix detect sequence when addresses are not specified

Search for ACPI MCFG table in detect sequence, so on failure we can move to
the next pci access method.

2 months agolibpci: Enable POSIX physmem also on Solaris, Haiku nad BeOS
Pali Rohár [Mon, 8 May 2023 19:19:27 +0000 (21:19 +0200)] 
libpci: Enable POSIX physmem also on Solaris, Haiku nad BeOS

Solaris can access physical memory via mmap() of /dev/xsvc device and
Haiku + BeOS of /dev/misc/mem device.

2 months agolibpci: physmem-posix: Fix OFF_MAX definition
Pali Rohár [Sat, 20 Jan 2024 11:30:08 +0000 (12:30 +0100)] 
libpci: physmem-posix: Fix OFF_MAX definition

Expression ((1 << n) - 1) for n=31 has undefined behavior and gcc 11
already evaluates it to zero.

Fix definition of OFF_MAX to prevent signed integer overflow.

2 months agolibpci: Move physical memory mapping mmap() code from ecam/mmio-ports to physmem...
Pali Rohár [Mon, 8 May 2023 19:15:07 +0000 (21:15 +0200)] 
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.

2 months agopcilmr: Fix compilation for windows and djgpp
Pali Rohár [Sun, 18 Feb 2024 13:50:54 +0000 (14:50 +0100)] 
pcilmr: Fix compilation for windows and djgpp

2 months agowindows: Fix setting permissions in grant_process_token_dacl_permissions()
Pali Rohár [Wed, 14 Jun 2023 15:43:21 +0000 (17:43 +0200)] 
windows: Fix setting permissions in grant_process_token_dacl_permissions()

Rewrite function to always add a new allow granting permissions at first
position in DACL. Normally all deny permissions are before allow
permissions, so previously allow permission could have been overridden by
explicit deny permission. With this change, our newly added allow
permission override any possible deny permission and always grant access
for asked process user.

Also properly handle automatic inheritance model which is in use since
Windows 2000 and handle also special case when DACL is not present which
gives allow access to everyone.

2 months agowindows: Move win32_call_func_with_tcb_privilege() from i386-io-windows.h to win32...
Pali Rohár [Wed, 24 May 2023 18:28:38 +0000 (20:28 +0200)] 
windows: Move win32_call_func_with_tcb_privilege() from i386-io-windows.h to win32-helpers.c

2 months agowindows: Move common non-I/O port code from i386-io-windows.h to win32-helpers.c
Pali Rohár [Mon, 8 May 2023 12:04:40 +0000 (14:04 +0200)] 
windows: Move common non-I/O port code from i386-io-windows.h to win32-helpers.c

2 months agowindows: Deduplicate code and move helper functions to new file win32-helpers.c
Pali Rohár [Sun, 7 May 2023 14:40:28 +0000 (16:40 +0200)] 
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.

2 months agowindows: Translate NT status to Win32 error
Pali Rohár [Sun, 7 May 2023 15:05:42 +0000 (17:05 +0200)] 
windows: Translate NT status to Win32 error

2 months agowindows: Split code for enabling Tcb privilege and calling ProcessUserModeIOPL
Pali Rohár [Sun, 7 May 2023 11:32:54 +0000 (13:32 +0200)] 
windows: Split code for enabling Tcb privilege and calling ProcessUserModeIOPL

Code for enabling Tcb privilege is split from SetProcessUserModeIOPL() into
new function CallFuncWithTcbPrivilege().

2 months agowindows: Comment on MSVC inline asm issues
Martin Mares [Sun, 18 Feb 2024 13:15:06 +0000 (14:15 +0100)] 
windows: Comment on MSVC inline asm issues

2 months agowindows: Add strtoull defines for msvc
Pali Rohár [Wed, 24 May 2023 19:45:48 +0000 (21:45 +0200)] 
windows: Add strtoull defines for msvc

2 months agowindows: Make msvc __readeflags more readable
Pali Rohár [Sun, 1 Jan 2023 18:52:16 +0000 (19:52 +0100)] 
windows: Make msvc __readeflags more readable

Semicolon in msvc __asm block means start of the comment, and not end of
the __asm statement, like it is for all other C statements. Also function
which uses msvc inline assembly cannot be inlined to another function
(compiler reports a warning about it, not a fatal error). So add explicit
curly brackets for __asm block, remove misleading semicolons and do not
declare function as inline.

2 months agoMakefile: Fix dependencies on header files
Martin Mares [Sun, 18 Feb 2024 13:12:10 +0000 (14:12 +0100)] 
Makefile: Fix dependencies on header files

2 months agoMaint: Added a script for pushing to both public repos
Martin Mares [Sun, 18 Feb 2024 11:12:01 +0000 (12:12 +0100)] 
Maint: Added a script for pushing to both public repos

2 months agoLet us use <getopt.h> everywhere
Martin Mares [Sun, 18 Feb 2024 11:10:21 +0000 (12:10 +0100)] 
Let us use <getopt.h> everywhere

It is needed by pcilmr anyway.

If it turns out to be missing on your system, please extend
the condition for use of compat/getopt.h in pciutils.h.

2 months agopcilmr: Avoid strftime with %F and produce proper ISO 8601 time
Martin Mares [Sun, 18 Feb 2024 11:09:19 +0000 (12:09 +0100)] 
pcilmr: Avoid strftime with %F and produce proper ISO 8601 time

%F is not portable.

2 months agopcilmr: Clean up includes
Martin Mares [Sun, 18 Feb 2024 11:09:02 +0000 (12:09 +0100)] 
pcilmr: Clean up includes

2 months agopcilmr: No need to copy a string passed to filter parsing functions
Martin Mares [Sun, 18 Feb 2024 11:08:21 +0000 (12:08 +0100)] 
pcilmr: No need to copy a string passed to filter parsing functions

The parsing is guaranteed to be non-destructive in recent libpci.

2 months agobitops.h moved to root
Martin Mares [Sun, 18 Feb 2024 11:07:50 +0000 (12:07 +0100)] 
bitops.h moved to root

It is a part of the utilities, not of libpci.

2 months agolib/types.h makes NULL always available
Martin Mares [Sun, 18 Feb 2024 11:06:03 +0000 (12:06 +0100)] 
lib/types.h makes NULL always available

2 months agoSince we already require C99, we can rely on <stdint.h>
Martin Mares [Sun, 18 Feb 2024 11:05:21 +0000 (12:05 +0100)] 
Since we already require C99, we can rely on <stdint.h>

2 months agoMakefile: Additions to CFLAGS require an override
Martin Mares [Sun, 18 Feb 2024 11:04:44 +0000 (12:04 +0100)] 
Makefile: Additions to CFLAGS require an override

Otherwise, they are ignored when "make CFLAGS=something" is used.

2 months agoMakefile: When linking pcilmr, specify library last
Martin Mares [Sun, 18 Feb 2024 11:04:28 +0000 (12:04 +0100)] 
Makefile: When linking pcilmr, specify library last

2 months agoChangeLog: Preparing for release
Martin Mares [Sun, 18 Feb 2024 00:43:57 +0000 (01:43 +0100)] 
ChangeLog: Preparing for release

2 months agoManual: Document tilde expansion in net.cache_name
Martin Mares [Sun, 18 Feb 2024 00:42:25 +0000 (01:42 +0100)] 
Manual: Document tilde expansion in net.cache_name

2 months agoLocation of name cache now follows XDG base dir specification
Martin Mares [Sun, 18 Feb 2024 00:40:36 +0000 (01:40 +0100)] 
Location of name cache now follows XDG base dir specification

We also create parent directories of net.cache_name automatically.

Tilde expansion is performed internally and it does not change
user-specified net.cache_name any longer.

2 months agoNames: Fixed a rare bug in loading of pci.ids
Martin Mares [Sun, 18 Feb 2024 00:37:49 +0000 (01:37 +0100)] 
Names: Fixed a rare bug in loading of pci.ids

If the pci.ids file was empty, it was never considered loaded,
so the loading function was called repeatedly and it always flushed
the name cache.

2 months agoGitignore: Add pcilmr
Martin Mares [Sun, 18 Feb 2024 00:36:44 +0000 (01:36 +0100)] 
Gitignore: Add pcilmr

2 months agoLibrary: pci_define_param() returns a pointer to the parameter
Martin Mares [Sun, 18 Feb 2024 00:35:59 +0000 (01:35 +0100)] 
Library: pci_define_param() returns a pointer to the parameter

This will allow overriding pci_param->malloced.

2 months agobitops.h should not be included from public pci.h
Martin Mares [Sat, 17 Feb 2024 23:07:14 +0000 (00:07 +0100)] 
bitops.h should not be included from public pci.h

2 months agoRemoved a forgotten debugging test
Martin Mares [Sat, 17 Feb 2024 23:06:33 +0000 (00:06 +0100)] 
Removed a forgotten debugging test

It was introduced by commit 0ce6ff4aafb36a7923511a8da6bbbebb642e3109.

2 months agopcilmr: Add pcilmr man page
Nikita Proshkin [Wed, 27 Dec 2023 09:45:04 +0000 (14:45 +0500)] 
pcilmr: Add pcilmr man page

Reviewed-by: Sergei Miroshnichenko <s.miroshnichenko@yadro.com>
Signed-off-by: Nikita Proshkin <n.proshkin@yadro.com>
2 months agopcilmr: Add handling of situations when device reports its MaxOffset values equal...
Nikita Proshkin [Wed, 27 Dec 2023 09:45:03 +0000 (14:45 +0500)] 
pcilmr: Add handling of situations when device reports its MaxOffset values equal to 0

According to spec, for the MaxTimingOffset and MaxVoltageOffset parameters
'A 0 value may be reported if the vendor chooses not to report the offset'.

Use max possible Offset value in such situations and report to the user.

Reviewed-by: Sergei Miroshnichenko <s.miroshnichenko@yadro.com>
Signed-off-by: Nikita Proshkin <n.proshkin@yadro.com>
2 months agopcilmr: Add option to save margining results in csv form
Nikita Proshkin [Wed, 27 Dec 2023 09:45:02 +0000 (14:45 +0500)] 
pcilmr: Add option to save margining results in csv form

Reviewed-by: Sergei Miroshnichenko <s.miroshnichenko@yadro.com>
Signed-off-by: Nikita Proshkin <n.proshkin@yadro.com>
2 months agopcilmr: Add --scan mode to search for all LMR-capable Links
Nikita Proshkin [Wed, 27 Dec 2023 09:45:01 +0000 (14:45 +0500)] 
pcilmr: Add --scan mode to search for all LMR-capable Links

Reviewed-by: Sergei Miroshnichenko <s.miroshnichenko@yadro.com>
Signed-off-by: Nikita Proshkin <n.proshkin@yadro.com>
2 months agopcilmr: Add the ability to pass multiple links to the utility
Nikita Proshkin [Wed, 27 Dec 2023 09:45:00 +0000 (14:45 +0500)] 
pcilmr: Add the ability to pass multiple links to the utility

* Add support for different utility modes;
* Make the default (now --margin) mode capable to accept several
  components and run test for all of them;
* Add --full mode for sequential start of the test on all ready links
  in the system;
* The complication of the main function is due to the need to pre-read the
  parameters of the devices before starting the tests in order to calculate
  Total ETA of the utility.

Reviewed-by: Sergei Miroshnichenko <s.miroshnichenko@yadro.com>
Signed-off-by: Nikita Proshkin <n.proshkin@yadro.com>
2 months agopcilmr: Add support for unique hardware quirks
Nikita Proshkin [Wed, 27 Dec 2023 09:44:59 +0000 (14:44 +0500)] 
pcilmr: Add support for unique hardware quirks

Make it possible to change receiver margining parameters depending on
current hardware specificity.

In our tests Intel Ice Lake CPUs RC ports reported
MaxVoltageOffset = 50 (RxA), which led to results several times bigger
than the results of the hardware debugger.
Looks like in Intel Sapphire Rapids this was fixed, these CPU RC ports
report MaxVoltageOffset = 12 (RxA). To solve the problem it was decided
to hardcode Volt Offset to 12 (120 mV) for Ice Lake RC ports.

In the case of margining a specific link, only information about
Downstream and Upstream ports should be sufficient to decide whether to
use quirks, so the feature was implemented based on a list of devices
(vendor - device - revision triples), whose problems are known.

Back to Ice Lake ports, according to Integrators List on the pci-sig site,
the list of possible RC ports of Ice Lake Xeon's includes at least three
more options (with ids 347B/C/D) besides the one used in this commit, but
we don't have such processors to check the relevance of the MaxVoltageOffset
problem for these ports.

Reviewed-by: Sergei Miroshnichenko <s.miroshnichenko@yadro.com>
Signed-off-by: Nikita Proshkin <n.proshkin@yadro.com>
2 months agopcilmr: Add utility main function
Nikita Proshkin [Wed, 27 Dec 2023 09:44:58 +0000 (14:44 +0500)] 
pcilmr: Add utility main function

Reviewed-by: Sergei Miroshnichenko <s.miroshnichenko@yadro.com>
Signed-off-by: Nikita Proshkin <n.proshkin@yadro.com>
2 months agopcilmr: Add function for default margining results log
Nikita Proshkin [Wed, 27 Dec 2023 09:44:57 +0000 (14:44 +0500)] 
pcilmr: Add function for default margining results log

Lanes are rated according to the minimum/recommended values.
The minimum values are taken from PCIe Base Spec Rev 5.0 section 8.4.4.
30% UI recommended value for timing is taken from NVIDIA presentation
"PCIe 4.0 Mass Electrical Margins Data Collection".

Receiver lanes are called 'Weird' if all results of all receiver lanes
are equal to the spec minimum value.

Reviewed-by: Sergei Miroshnichenko <s.miroshnichenko@yadro.com>
Signed-off-by: Nikita Proshkin <n.proshkin@yadro.com>
2 months agopcilmr: Add logging functions for margining
Nikita Proshkin [Wed, 27 Dec 2023 09:44:56 +0000 (14:44 +0500)] 
pcilmr: Add logging functions for margining

* Implement option to turn on/off logging for margining;
* Support systems with several PCI domains;
* margin_log_margining function prints margining in progress log using
  one line messages for each Receiver in the form:
  "Margining - <direction> - Lanes [<current simultaneous lanes>] - ETA:
  <current direction-lanes margining remaining time> Steps: <current
  margining steps done> Total ETA: <utility run total remaining time>".

Reviewed-by: Sergei Miroshnichenko <s.miroshnichenko@yadro.com>
Signed-off-by: Nikita Proshkin <n.proshkin@yadro.com>
2 months agopcilmr: Add margining process functions
Nikita Proshkin [Wed, 27 Dec 2023 09:44:55 +0000 (14:44 +0500)] 
pcilmr: Add margining process functions

* Implement the margining flow as described in the section "Example
  Software Flow for Lane Margining at Receiver"
  of the PCIe Base Spec Rev 5.0;
* Implement margining commands formation and response parsing according
  to the PCIe Base Spec Rev 5.0 table 4-26;
* Use Receiver margining parameters as described in the
  PCIe Base Spec Rev 5.0 table 8-11;
* Support lane reversal and simultaneous margining of several link lanes.

Reviewed-by: Sergei Miroshnichenko <s.miroshnichenko@yadro.com>
Signed-off-by: Nikita Proshkin <n.proshkin@yadro.com>
2 months agopcilmr: Add functions for device checking and preparations before main margining...
Nikita Proshkin [Wed, 27 Dec 2023 09:44:54 +0000 (14:44 +0500)] 
pcilmr: Add functions for device checking and preparations before main margining processes

Follow the checklist from PCIe Base Spec Rev 5.0 section 4.2.13.3
"Receiver Margin Testing Requirements":
* Verify the Link is at 16 GT/s or higher data rate, in DO PM state;
* Verify that Margining Ready bit of the device is set;
* Disable the ASPM and Autonomous Speed/Width features for the duration
  of the test.

Also verify that Upstream Port of the Link is Function 0 of a Device,
according to spec, only it must implement margining registers.

Reviewed-by: Sergei Miroshnichenko <s.miroshnichenko@yadro.com>
Signed-off-by: Nikita Proshkin <n.proshkin@yadro.com>
2 months agolibpci: Add separate file for bit manipulation functions
Nikita Proshkin [Wed, 27 Dec 2023 09:44:53 +0000 (14:44 +0500)] 
libpci: Add separate file for bit manipulation functions

Move several macros from lspci and add some more for operations with
bit masks.

Reviewed-by: Sergei Miroshnichenko <s.miroshnichenko@yadro.com>
Signed-off-by: Nikita Proshkin <n.proshkin@yadro.com>
2 months agolspci: Add Lane Margining support to the lspci
Nikita Proshkin [Wed, 27 Dec 2023 09:44:52 +0000 (14:44 +0500)] 
lspci: Add Lane Margining support to the lspci

Gather all the info available without writing to the config space.
Without any commands margining capability exposes only 3 status bits to
read through Margining Port Capabilities and Margining Port Status registers.
It makes sense to show them anyway. For example, Margining Ready bit
indicates whether the device is actually ready for the margining process.

Reviewed-by: Sergei Miroshnichenko <s.miroshnichenko@yadro.com>
Signed-off-by: Nikita Proshkin <n.proshkin@yadro.com>
2 months agolibpci: Add constants for Lane Margining at the Receiver Extended Capability
Nikita Proshkin [Wed, 27 Dec 2023 09:44:51 +0000 (14:44 +0500)] 
libpci: Add constants for Lane Margining at the Receiver Extended Capability

Reviewed-by: Sergei Miroshnichenko <s.miroshnichenko@yadro.com>
Signed-off-by: Nikita Proshkin <n.proshkin@yadro.com>
2 months agolspci: Fix unsynchronized caches in lspci struct device and pci struct pci_dev
Nikita Proshkin [Wed, 27 Dec 2023 09:44:50 +0000 (14:44 +0500)] 
lspci: Fix unsynchronized caches in lspci struct device and pci struct pci_dev

lspci initializes both caches for the device to the same memory block in
its scan_device function. Latter calls to config_fetch function will
realloc cache in struct device, but not in struct pci_dev leading to
the invalid pointer in the latter. pci_dev cache is used by pci_read_*
functions, what will lead to a possible use-after-free situations.

Example:

With patch:

2 months agoMacOS: An attempt to appease compiler picky about attribute placement
Martin Mares [Sat, 17 Feb 2024 22:30:22 +0000 (23:30 +0100)] 
MacOS: An attempt to appease compiler picky about attribute placement

2 months agoMerge pull request #166 from DigitalDJ/master
Martin Mareš [Sat, 17 Feb 2024 22:22:18 +0000 (23:22 +0100)] 
Merge pull request #166 from DigitalDJ/master

i386-ports: Add support for OpenBSD

2 months agoAmigaOS: Removed extraneous type cast amiga
Martin Mares [Sat, 17 Feb 2024 22:17:00 +0000 (23:17 +0100)] 
AmigaOS: Removed extraneous type cast

2 months agoAmigaOS: Construct version string automatically
Martin Mares [Sat, 17 Feb 2024 22:14:54 +0000 (23:14 +0100)] 
AmigaOS: Construct version string automatically

2 months agoNew back-end for AmigaOS on PowerPC
Agg242 [Mon, 22 Jan 2024 16:41:47 +0000 (17:41 +0100)] 
New back-end for AmigaOS on PowerPC

3 months agoi386-ports: Add support for OpenBSD
Grant Pannell [Sat, 30 Dec 2023 15:27:30 +0000 (01:57 +1030)] 
i386-ports: Add support for OpenBSD

3 months agolib: Refactor access to x86 I/O ports
Pali Rohár [Sun, 8 Oct 2023 13:10:12 +0000 (15:10 +0200)] 
lib: Refactor access to x86 I/O ports

On all systems except BeOS and Haiku are x86 I/O ports accessed in the
standard way by the x86 in/out instructions.

On more systems there are wrapper functions for x86 in/out instructions but
under different names and sometimes even for same system those names
depends on user version of toolchain/compiler. And also some systems have
same function names but switched order of arguments.

Simplify this code, define own wrapper functions for x86 in/out
instructions in new header file i386-io-access.h and use it for every
platform except BeOS and Haiku.

This change simplifies Windows port, duplicated code between SunOS and
Windows and also tons of redefined port functions in every port.

To not conlict with possible system functions included from some header
file, add intel_ prefix for every function included from the file
lib/i386-io-access.h into lib/i386-ports.c

3 months agoRename aux fields in structs pci_access and pci_dev to backend_data
Martin Mares [Fri, 29 Dec 2023 18:33:21 +0000 (19:33 +0100)] 
Rename aux fields in structs pci_access and pci_dev to backend_data

This hopefully conveys the purpose much better than just "aux".

3 months agoGet rid of workarounds for Linux systems without pread/pwrite
Martin Mares [Fri, 29 Dec 2023 14:23:00 +0000 (15:23 +0100)] 
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.