Matthew Wilcox [Wed, 13 May 2009 21:43:53 +0000 (15:43 -0600)]
Improve MSI and MSI-X display
There are several ways I think the MSI and MSI-X capabilities could be
reported better in lspci.
Enable is at the beginning of the MSI-X report, but the end of the
MSI report. Because Enabled is perhaps the most important thing,
I moved it to the start.
The TabSize reported for MSI-X is perhaps a little obscure. I feel
'Count' works better (and is then the same as MSI). We can't readily
tell which of the MSI-X capabilities have been programmed, so we can't
report how many have been enabled.
Both capabilities report 'Mask'. Unfortunately, in MSI, it indicates
whether the device supports per-vector masking, and in MSI-X it indicates
whether all the vectors are masked. This patch changes both; MSI reports
'Maskable' and MSI-X reports 'Masked'.
All these changes combine to turn the report from this:
Martin Mares [Mon, 29 Jun 2009 17:55:24 +0000 (19:55 +0200)]
proc: Work around broken /proc/bus/pci/ on some architectures.
Several architectures (e.g., sparc64) use domains in proc directory
names, which is inconsistent, because /proc/bus/pci/devices is still
unable to represent domains.
Work around it, so that the proc back-end works at least on single-domain
machines.
Vendor- and system-specific VPD items are matched only by their first
character, so we cannot read the item id from the matching structure.
There is a similar issue with unknown VPD items, which is handled by
creating a matching structure dynamically.
We can handle both cases using the static matching structure and the
actual item id, so do that.
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Matthew Wilcox [Fri, 27 Feb 2009 13:20:04 +0000 (06:20 -0700)]
Correct Device Serial Number output
We are currently printing the Device Serial Number backwards. Ben
Hutchings noticed that the DSN was an EUI-64 (derived from a MAC
address), but printed backwards. Before:
Capabilities: [140] Device Serial Number 97-62-84-ff-ff-3b-1f-00
After:
Capabilities: [140] Device Serial Number 00-1f-3b-ff-ff-84-62-97
The MAC address is:
wlan0 Link encap:Ethernet HWaddr 00:1f:3b:84:62:97
Signed-off-by: Matthew Wilcox <willy@linux.intel.com>
Yu Zhao [Sun, 4 Jan 2009 08:10:39 +0000 (16:10 +0800)]
Don't display 'disabled' for a virtual base address
Don't display 'disabled' for the virtual base address since the resource
is reported by the OS not the hardware, which means the IO/MEM enable bits
in the command register may be invalid.
Yu Zhao [Sun, 4 Jan 2009 08:03:45 +0000 (16:03 +0800)]
Fix inconsistent bus centric view between the sysfs and proc methods
The vendor and device IDs may be different when using sysfs and proc
methods with bus centric view enabled. The sysfs method reads the IDs
from the configuration space rather than uses the values from sysfs
entries. But the proc method always uses values from the proc files.
This fix makes the proc method use the values from the configuration
space too for bus centric view.
Yu Zhao [Fri, 26 Dec 2008 01:59:28 +0000 (09:59 +0800)]
Fix base address flags when using sysfs method
The base address flags are ignored when using sysfs method, while
the proc and generic methods combined the flags into 'base_addr'.
This inconsistency may fail some applications using libpci.
Alex Chiang [Wed, 3 Dec 2008 19:30:21 +0000 (12:30 -0700)]
Display physical slot information in lspci -v
We've been exposing slot information in /sys/bus/pci/slots for a
long time now (as long as a hotplug driver or slot detection
driver like pci_slot is loaded).
Let's make life better for our users and display that information
in lspci. If slot entries appear in /sys/bus/pci/slots/,
correlate them to PCI devices, and display the information when
lspci -v is issued.
If no slot entries appear in sysfs (due to no modules loaded), do
nothing.
Now you'll see sample output like the following:
23:01.1 Class 0c04: Device 10df:fd00 (rev 01)
Subsystem: Device 10df:fd00
Physical Slot: 3
Flags: bus master, 66MHz, medium devsel, latency 248, IRQ 60
...
Martin Mares [Sun, 9 Nov 2008 20:16:14 +0000 (21:16 +0100)]
Let `lspci -k' display subsystem names.
Several users have requested a `quick overview' mode that would display
everything needed to identify a device and its drivers. I believe that it
is better to extend the `-k' mode to include subsystems than to introduce
yet another mode.
AMD K8 processors claim that they're using HyperTransport 1.02, but the
publicly available documentation (specifically the BKDG) states that the
HT version is 1.03 in reality.
lspci will issue a warning "!!! Possibly incomplete decoding" and only
decode some basic HT properties for HT versions before 1.03.
Move that boundary down to HT version 1.02.
Max Asbock [Sun, 9 Nov 2008 19:47:00 +0000 (20:47 +0100)]
Fix printing of PCIE AER capability.
The cap_aer function in lspci.c which prints PCIE AER capabilities
labels the uncorrected error mask incorrectly as "status" and it
also has some typos. This patch fixes that.
Signed-off-by: Max Asbock <masbock@linux.vnet.ibm.com>
Martin Mares [Sun, 9 Nov 2008 19:40:08 +0000 (20:40 +0100)]
Fix spelling of MSI.
Change the spelling of 'Signalled' to 'Signaled' to match the PCI spec.
Report the capability as 'MSI' instead of either 'Message Signaled
Interrupts' to fit better with MSI-X and bring the width of this line
below 80 columns.
Inspired-by: Randy Dunlap <randy.dunlap@oracle.com> Signed-off-by: Matthew Wilcox <willy@linux.intel.com>
Martin Mares [Tue, 26 Aug 2008 15:06:23 +0000 (17:06 +0200)]
Call wget with --no-timestamping.
If --timestamping was set in .wgetrc, wget fails, because it is unable to
handle --timestamping and -O simultaneously (for no apparent reason, but
the maintainers have decided that this bug has graduated to a feature,
see https://savannah.gnu.org/bugs/?22896).
Martin Mares [Tue, 26 Aug 2008 13:17:17 +0000 (15:17 +0200)]
Use the visibility attributes only when building a shared library.
Omair Eshkenazi has reported that libpci fails to build with gcc 3.x.
We require gcc 4.x for building shared libraries, but it should not
be needed when SHARED=no.
This patch changes internal.h to define PCI_ABI as the visibility
attribute only if we build a shared library.
However, this means that we need to know the configuration settings
before we include pci.h, so I had to include config.h explicitly
from internal.h and create a new symbol PCI_CONFIG_H to check whether
config.h has been already included.
Martin Mares [Tue, 26 Aug 2008 11:43:06 +0000 (13:43 +0200)]
Fix printing the MSI capability.
Contributed by Matthew Wilcox. His changelog says:
I'd like to present this change for your consideration. I'm not sure
where the original idea comes from that MSI has a 'queue' of interrupts.
It has multiple independent interrupts. Also, rather than just dumping
the raw values from the register, it makes sense to decode them into
the number of interrupts it supports.