lspci: Show information also for devices with unknown header type
lspci sees header type with 0x7f value in case config space is not
accessible. It may be because of permission issues or missing backend
(e.g. on Windows) or because device itself does not respond to config
cycles and config space is inaccessible.
Inaccessible config space is common scenario for switchable PCIe GPU
cards. Some Nvidia and also some AMD cards when sleep then lspci sees
all-ones in their config space. But kernel has registered those cards and
some of their properties are cached ans available via sysfs or procfs (from
time when card was awake).
Currently lspci shows error message "Unknown header type 7f" and does not
parse any value neither from config space nor from sysfs backend.
So try to show at least information which kernel provided into libpci
struct pci_dev.
Set unknown values to zeros (instead of all-ones which are returned from
config space) and add a new function show_htype_unknown() for showing
additional information in case header type is unknown.
This change will also help new windows backend which has only emulated
config space and therefore valid data only in struct pci_dev.