123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- #!/bin/rc
- # pci [-bv] - dump pci configuration
- rfork e
- fn verbose {
- if (! test -f /lib/pci)
- echo $0: no /lib/pci >[1=2]
- awk '
- function lower(s) {
- gsub(/A/, "a", s)
- gsub(/B/, "b", s)
- gsub(/C/, "c", s)
- gsub(/D/, "d", s)
- gsub(/E/, "e", s)
- gsub(/F/, "f", s)
- return s
- }
- BEGIN{
- file="/lib/pci"
- FS="\t"
- while(getline <file > 0){
- if(/^;/) continue
- if(/^[0-9a-fA-F]/){
- vid=lower($1)
- vendor[vid] = $2
- }
- if(/^ [0-9a-fA-F]/){
- did=lower($2)
- id[vid "/" did] = $3
- }
- }
- FS = " "
- }
- {
- print $0
- vid = $4
- sub(/\/.*/, "", vid)
- if(vid in vendor){
- s = vendor[vid]
- if($4 in id)
- s = s " " id[$4]
- print "\t" s
- }
- }
- '
- }
- fn usage {
- echo usage: $1 '[-bv]' >[1=2]
- exit usage
- }
- filter=cat
- bridges=yes
- done=0
- while (~ $done 0 && ! ~ $#* 0 && ~ $1 -*) {
- if (~ $1 -*b*)
- bridges=no
- if (~ $1 -*v*)
- filter=verbose
- switch ($1) {
- case --
- done = 1 # no break in rc, alas
- case -*[~bv]*
- usage $0
- }
- shift
- }
- if (! ~ $#* 0)
- usage $0
- # DMG 06/02/2016 Make pci(8) recognize virtio devices
- # source: http://git.qemu.org/?p=qemu.git;a=blob;f=include/hw/pci/pci.h
- # devices with vendor code 0x1af4 are QEMU own virtio devices.
- # useful device codes below:
- # 0x1000: virtio network card
- # 0x1001: virtio block device
- # 0x1002: virtio balloon
- # 0x1003: virtio console
- # 0x1004: virtio SCSI
- # 0x1005: virtio RNG (random numbers generator)
- # 0x1009: virtio 9P transport
- # based on this information, the translation table below is amended
- # to show these devices in the pci (8) output.
- builtin cd '#$/pci' && grep . *ctl | {
- if (~ $bridges no)
- sed /:06/d
- if not
- cat
- } |
- sed '
- s/ctl:/: /
- t noop
- : noop
- s/: (02\..*\ 1af4\/1000)/: virtio-net \1/
- s/: (01\..*\ 1af4\/1001)/: virtio-disk \1/
- s/: (00\..*\ 1af4\/1002)/: virtio-balloon \1/
- s/: (07\..*\ 1af4\/1003)/: virtio-console \1/
- s/: (01\..*\ 1af4\/1004)/: virtio-scsi \1/
- s/: (00\..*\ 1af4\/1005)/: virtio-rng \1/
- s/: (00\..*\ 1af4\/1009)/: virtio-9p \1/
- s/: 01/: disk 01/
- s/: 02/: net 02/
- s/: 03/: vid 03/
- s/: 04/: aud 04/
- s/: 05/: mem 05/
- s/: 06/: brg 06/
- s/: 07/: ser 07/
- s/: 0c\.03/: usb 0c.03/
- s/: 0c\.05/: smb 0c.05/
- s/: 0d/: rad 0d/
- s/: 10/: cryp 10/
- t
- s/ / --- /
- ' | $filter
|