David Coppa <[email protected]> writes:

> Hi!
>
> Update to pciutils-3.2.1 and add a patch to make it work with
> machdep.allowaperture=0 (for reading at least, code borrowed from
> libpciaccess).
>
> OK?

Works fine on amd64, builds fine on sparc64 (but not pci bus to test).

OK with me, but I'd find the following addition useful:


[...]

> Index: patches/patch-lib_obsd-device_c
> ===================================================================
> RCS file: /cvs/ports/sysutils/pciutils/patches/patch-lib_obsd-device_c,v
> retrieving revision 1.4
> diff -u -p -u -p -r1.4 patch-lib_obsd-device_c
> --- patches/patch-lib_obsd-device_c   11 Jul 2012 18:17:52 -0000      1.4
> +++ patches/patch-lib_obsd-device_c   18 Aug 2014 06:01:22 -0000
> @@ -1,7 +1,23 @@
>  $OpenBSD: patch-lib_obsd-device_c,v 1.4 2012/07/11 18:17:52 gonzalo Exp $
> ---- lib/obsd-device.c.orig   Fri Jan  7 18:04:28 2011
> -+++ lib/obsd-device.c        Fri Jun 29 10:19:48 2012
> -@@ -56,11 +56,6 @@ static int
> +--- lib/obsd-device.c.orig   Fri Jan  7 22:04:28 2011
> ++++ lib/obsd-device.c        Thu Aug 14 07:58:21 2014
> +@@ -41,9 +41,12 @@ obsd_init(struct pci_access *a)
> + {
> +   char *name = pci_get_param(a, "obsd.path");
> + 
> +-  a->fd = open(name, O_RDWR, 0);
> +-  if (a->fd < 0)
> +-    a->error("obsd_init: %s open failed", name);
> ++  a->fd = open(name, O_RDWR | O_CLOEXEC);
> ++  if (a->fd == -1) {
> ++    a->fd = open(name, O_RDONLY | O_CLOEXEC);
> ++    if (a->fd == -1)
> ++      a->error("obsd_init: %s open failed", name);

What about

++      a->error("obsd_init: %s open failed (%s)", name, strerror(errno));

This file already includes errno.h and string.h
The result would be something like:

lspci: obsd_init: /dev/pci open failed (Device not configured)

> ++  }
> + }
> + 
> + static void
> +@@ -56,11 +59,6 @@ static int
>   obsd_read(struct pci_dev *d, int pos, byte *buf, int len)
>   {
>     struct pci_io pi;
> @@ -13,7 +29,7 @@ $OpenBSD: patch-lib_obsd-device_c,v 1.4 
>   
>     if (!(len == 1 || len == 2 || len == 4))
>       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
> +@@ -81,18 +79,16 @@ obsd_read(struct pci_dev *d, int pos, byte *buf, int l
>         else
>                 d->access->error("obsd_read: ioctl(PCIOCREAD) failed");
>     }
>

-- 
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE

Reply via email to