#!/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 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