[PATCH libdrm] xf86drm: open correct render node on non-linux
Jonathan Gray
jsg at jsg.id.au
Wed Jul 3 13:14:12 UTC 2019
On Wed, Jul 03, 2019 at 12:39:10PM +0100, Eric Engestrom wrote:
> On Monday, 2019-05-13 02:52:04 +1000, Jonathan Gray wrote:
> > drm render nodes have the same major as drm primary devices but offset
> > the minor by a base of 128.
> >
> > I expected the name of the device to have numbering starting at 0 when
> > these non-linux codepaths were added (before OpenBSD had render nodes).
> >
> > Signed-off-by: Jonathan Gray <jsg at jsg.id.au>
>
> I didn't check that OpenBSD is the way you say, but the libdrm code here
> matches with that, so this patch is
> Acked-by: Eric Engestrom <eric.engestrom at intel.com>
> and pushed :)
Thanks for looking over these and pushing. OpenBSD snapshots have
contained these changes as local patches since I sent the mails out so
not expecting any issues.
We are trying to keep the kernel side as close as possible to the
original linux code.
>
> > ---
> > xf86drm.c | 24 ++++++------------------
> > 1 file changed, 6 insertions(+), 18 deletions(-)
> >
> > diff --git a/xf86drm.c b/xf86drm.c
> > index 42022cac..0763fd26 100644
> > --- a/xf86drm.c
> > +++ b/xf86drm.c
> > @@ -2931,7 +2931,7 @@ static char *drmGetMinorNameForFD(int fd, int type)
> > char buf[PATH_MAX + 1];
> > const char *dev_name;
> > unsigned int maj, min;
> > - int n, base;
> > + int n;
> >
> > if (fstat(fd, &sbuf))
> > return NULL;
> > @@ -2956,11 +2956,7 @@ static char *drmGetMinorNameForFD(int fd, int type)
> > return NULL;
> > };
> >
> > - base = drmGetMinorBase(type);
> > - if (base < 0)
> > - return NULL;
> > -
> > - n = snprintf(buf, sizeof(buf), dev_name, DRM_DIR_NAME, min - base);
> > + n = snprintf(buf, sizeof(buf), dev_name, DRM_DIR_NAME, min);
> > if (n == -1 || n >= sizeof(buf))
> > return NULL;
> >
> > @@ -3854,7 +3850,7 @@ drm_public int drmGetDevice2(int fd, uint32_t flags, drmDevicePtr *device)
> > char node[PATH_MAX + 1];
> > const char *dev_name;
> > int node_type, subsystem_type;
> > - int maj, min, n, ret, base;
> > + int maj, min, n, ret;
> >
> > if (fd == -1 || device == NULL)
> > return -EINVAL;
> > @@ -3886,11 +3882,7 @@ drm_public int drmGetDevice2(int fd, uint32_t flags, drmDevicePtr *device)
> > return -EINVAL;
> > };
> >
> > - base = drmGetMinorBase(node_type);
> > - if (base < 0)
> > - return -EINVAL;
> > -
> > - n = snprintf(node, PATH_MAX, dev_name, DRM_DIR_NAME, min - base);
> > + n = snprintf(node, PATH_MAX, dev_name, DRM_DIR_NAME, min);
> > if (n == -1 || n >= PATH_MAX)
> > return -errno;
> > if (stat(node, &sbuf))
> > @@ -4110,7 +4102,7 @@ drm_public char *drmGetDeviceNameFromFd2(int fd)
> > char node[PATH_MAX + 1];
> > const char *dev_name;
> > int node_type;
> > - int maj, min, n, base;
> > + int maj, min, n;
> >
> > if (fstat(fd, &sbuf))
> > return NULL;
> > @@ -4139,11 +4131,7 @@ drm_public char *drmGetDeviceNameFromFd2(int fd)
> > return NULL;
> > };
> >
> > - base = drmGetMinorBase(node_type);
> > - if (base < 0)
> > - return NULL;
> > -
> > - n = snprintf(node, PATH_MAX, dev_name, DRM_DIR_NAME, min - base);
> > + n = snprintf(node, PATH_MAX, dev_name, DRM_DIR_NAME, min);
> > if (n == -1 || n >= PATH_MAX)
> > return NULL;
> >
> > --
> > 2.21.0
> >
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel
More information about the dri-devel
mailing list