We need to open the pci device O_RDONLY not O_RDWR for this to work, otherwise the result is:
lspci: obsd_init: /dev/pci open failed Index: Makefile =================================================================== RCS file: /cvs/ports/sysutils/pciutils/Makefile,v retrieving revision 1.10 diff -u -p -r1.10 Makefile --- Makefile 30 Sep 2009 05:24:24 -0000 1.10 +++ Makefile 5 Mar 2010 18:36:18 -0000 @@ -5,7 +5,7 @@ NOT_FOR_ARCHS = sparc m68k m88k vax COMMENT = PCI bus configuration register access tools DISTNAME = pciutils-3.1.2 -PKGNAME = ${DISTNAME}p0 +PKGNAME = ${DISTNAME}p1 CATEGORIES = sysutils HOMEPAGE = http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml Index: patches/patch-Makefile =================================================================== RCS file: /cvs/ports/sysutils/pciutils/patches/patch-Makefile,v retrieving revision 1.3 diff -u -p -r1.3 patch-Makefile --- patches/patch-Makefile 30 Jan 2009 22:22:39 -0000 1.3 +++ patches/patch-Makefile 5 Mar 2010 18:36:18 -0000 @@ -1,16 +1,16 @@ ---- Makefile.orig Sun Nov 9 21:28:18 2008 -+++ Makefile Wed Jan 7 13:41:39 2009 +--- Makefile.orig Sun Feb 1 17:49:22 2009 ++++ Makefile Fri Mar 5 19:31:55 2010 @@ -1,8 +1,7 @@ # Makefile for The PCI Utilities - # (c) 1998--2008 Martin Mares <m...@ucw.cz> + # (c) 1998--2009 Martin Mares <m...@ucw.cz> -OPT=-O2 -CFLAGS=$(OPT) -Wall -W -Wno-parentheses -Wstrict-prototypes -Wmissing-prototypes +CFLAGS+= -Wall -W -Wno-parentheses -Wstrict-prototypes -Wmissing-prototypes - VERSION=3.0.3 - DATE=2008-11-09 -@@ -97,7 +96,6 @@ + VERSION=3.1.2 + DATE=2009-02-01 +@@ -105,7 +104,6 @@ install: all $(INSTALL) -c -m 755 update-pciids $(DESTDIR)$(SBINDIR) $(INSTALL) -c -m 644 $(PCI_IDS) $(DESTDIR)$(IDSDIR) $(INSTALL) -c -m 644 lspci.8 setpci.8 update-pciids.8 $(DESTDIR)$(MANDIR)/man8 Index: patches/patch-lib_names-net_c =================================================================== RCS file: /cvs/ports/sysutils/pciutils/patches/patch-lib_names-net_c,v retrieving revision 1.1 diff -u -p -r1.1 patch-lib_names-net_c --- patches/patch-lib_names-net_c 30 Jan 2009 22:22:39 -0000 1.1 +++ patches/patch-lib_names-net_c 5 Mar 2010 18:36:18 -0000 @@ -1,6 +1,7 @@ ---- lib/names-net.c.ori Wed Jan 7 12:50:25 2009 -+++ lib/names-net.c Wed Jan 7 12:52:26 2009 -@@ -194,7 +194,7 @@ +$OpenBSD$ +--- lib/names-net.c.orig Tue Nov 11 00:11:51 2008 ++++ lib/names-net.c Fri Mar 5 19:31:55 2010 +@@ -194,7 +194,7 @@ char resolver_inited = 1; res_init(); } @@ -9,7 +10,7 @@ if (res < 0) { a->debug("\tfailed, h_errno=%d\n", h_errno); -@@ -208,7 +208,7 @@ +@@ -208,7 +208,7 @@ char dns_init_section(&ds, DNS_SEC_ANSWER); while (dns_parse_rr(&ds) > 0) { Index: patches/patch-lib_obsd-device_c =================================================================== RCS file: /cvs/ports/sysutils/pciutils/patches/patch-lib_obsd-device_c,v retrieving revision 1.3 diff -u -p -r1.3 patch-lib_obsd-device_c --- patches/patch-lib_obsd-device_c 30 Dec 2006 14:55:25 -0000 1.3 +++ patches/patch-lib_obsd-device_c 5 Mar 2010 18:36:18 -0000 @@ -1,7 +1,16 @@ $OpenBSD: patch-lib_obsd-device_c,v 1.3 2006/12/30 14:55:25 matthieu Exp $ ---- lib/obsd-device.c.orig Sat Sep 9 12:53:01 2006 -+++ lib/obsd-device.c Sat Dec 16 16:13:26 2006 -@@ -58,11 +58,6 @@ static int +--- lib/obsd-device.c.orig Fri Nov 21 22:00:38 2008 ++++ lib/obsd-device.c Fri Mar 5 19:33:29 2010 +@@ -41,7 +41,7 @@ obsd_init(struct pci_access *a) + { + char *name = pci_get_param(a, "obsd.path"); + +- a->fd = open(name, O_RDWR, 0); ++ a->fd = open(name, O_RDONLY, 0); + if (a->fd < 0) + a->error("obsd_init: %s open failed", name); + } +@@ -56,11 +56,6 @@ static int obsd_read(struct pci_dev *d, int pos, byte *buf, int len) { struct pci_io pi; @@ -12,10 +21,10 @@ $OpenBSD: patch-lib_obsd-device_c,v 1.3 - } u; if (!(len == 1 || len == 2 || len == 4)) - { -@@ -86,18 +81,16 @@ obsd_read(struct pci_dev *d, int pos, by + return pci_generic_block_read(d, pos, buf, len); +@@ -81,18 +76,16 @@ obsd_read(struct pci_dev *d, int pos, byte *buf, int l + else d->access->error("obsd_read: ioctl(PCIOCREAD) failed"); - } } - u.u32 = pi.pi_data; -