[PATCH rdma-core v2 3/3] configure: Add check for the presence of DRM headers
Xiong, Jianxin
jianxin.xiong at intel.com
Fri Feb 5 17:23:14 UTC 2021
> -----Original Message-----
> From: Daniel Vetter <daniel at ffwll.ch>
> Sent: Friday, February 05, 2021 5:54 AM
> To: Jason Gunthorpe <jgg at ziepe.ca>
> Cc: Xiong, Jianxin <jianxin.xiong at intel.com>; Yishai Hadas <yishaih at nvidia.com>; Leon Romanovsky <leon at kernel.org>; linux-rdma <linux-
> rdma at vger.kernel.org>; John Hubbard <jhubbard at nvidia.com>; Edward Srouji <edwards at nvidia.com>; Emil Velikov
> <emil.l.velikov at gmail.com>; Gal Pressman <galpress at amazon.com>; dri-devel <dri-devel at lists.freedesktop.org>; Doug Ledford
> <dledford at redhat.com>; Ali Alnubani <alialnu at nvidia.com>; Vetter, Daniel <daniel.vetter at intel.com>; Christian Koenig
> <christian.koenig at amd.com>
> Subject: Re: [PATCH rdma-core v2 3/3] configure: Add check for the presence of DRM headers
>
> On Fri, Feb 5, 2021 at 2:22 PM Jason Gunthorpe <jgg at ziepe.ca> wrote:
> >
> > On Thu, Feb 04, 2021 at 04:29:14PM -0800, Jianxin Xiong wrote:
> > > Compilation of pyverbs/dmabuf_alloc.c depends on a few DRM headers
> > > that are installed by either the kernel-header or the libdrm package.
> > > The installation is optional and the location is not unique.
> > >
> > > Check the presence of the headers at both the standard locations and
> > > any location defined by custom libdrm installation. If the headers
> > > are missing, the dmabuf allocation routines are replaced by stubs
> > > that return suitable error to allow the related tests to skip.
> > >
> > > Signed-off-by: Jianxin Xiong <jianxin.xiong at intel.com>
> > > CMakeLists.txt | 15 +++++++++++++++
> > > pyverbs/CMakeLists.txt | 14 ++++++++++++--
> > > pyverbs/dmabuf_alloc.c | 8 ++++----
> > > pyverbs/dmabuf_alloc_stub.c | 39
> > > +++++++++++++++++++++++++++++++++++++++
> > > 4 files changed, 70 insertions(+), 6 deletions(-) create mode
> > > 100644 pyverbs/dmabuf_alloc_stub.c
> > >
> > > diff --git a/CMakeLists.txt b/CMakeLists.txt index 4113423..95aec11
> > > 100644
> > > +++ b/CMakeLists.txt
> > > @@ -515,6 +515,21 @@ find_package(Systemd)
> > > include_directories(${SYSTEMD_INCLUDE_DIRS})
> > > RDMA_DoFixup("${SYSTEMD_FOUND}" "systemd/sd-daemon.h")
> > >
> > > +# drm headers
> > > +
> > > +# First check the standard locations. The headers could have been
> > > +installed # by either the kernle-headers package or the libdrm package.
> > > +find_path(DRM_INCLUDE_DIRS "drm.h" PATH_SUFFIXES "drm" "libdrm")
> >
> > Is there a reason not to just always call pkg_check_modules?
>
> Note that the gpu-specific libraries are split out, so I'd also check for those just to be sure - I don't know whether all distros package the
> uapi headers consistently in libdrm or sometimes also in one of the libdrm-$vendor packages.
The headers come from the libdrm-devel package, which present itself as "libdrm"
under pkg-config. The gpu-specific packages only include the libraries, not the headers.
The kernel-headers packages doesn't have pkg-config info and can't be checked via pkg_check_modules().
One change I can make here is to use find_path() only for the headers installed by the
kernel-headers package (the "drm" path). The "libdrm" path is covered by the pkg_check_modules() check anyway.
> -Daniel
>
> >
> > > +# Then check custom installation of libdrm if (NOT
> > > +DRM_INCLUDE_DIRS)
> > > + pkg_check_modules(DRM libdrm)
> > > +endif()
> > > +
> > > +if (DRM_INCLUDE_DIRS)
> > > + include_directories(${DRM_INCLUDE_DIRS})
> > > +endif()
> >
> > This needs a hunk at the end:
> >
> > if (NOT DRM_INCLUDE_DIRS)
> > message(STATUS " DMABUF NOT supported (disabling some tests)")
> > endif()
Thanks, missed that.
> >
> > > #-------------------------
> > > # Apply fixups
> > >
> > > diff --git a/pyverbs/CMakeLists.txt b/pyverbs/CMakeLists.txt index
> > > 6fd7625..922253f 100644
> > > +++ b/pyverbs/CMakeLists.txt
> > > @@ -13,8 +13,6 @@ rdma_cython_module(pyverbs ""
> > > cmid.pyx
> > > cq.pyx
> > > device.pyx
> > > - dmabuf.pyx
> > > - dmabuf_alloc.c
> > > enums.pyx
> > > mem_alloc.pyx
> > > mr.pyx
> > > @@ -25,6 +23,18 @@ rdma_cython_module(pyverbs ""
> > > xrcd.pyx
> > > )
> > >
> > > +if (DRM_INCLUDE_DIRS)
> > > +rdma_cython_module(pyverbs ""
> > > + dmabuf.pyx
> > > + dmabuf_alloc.c
> > > +)
> > > +else()
> > > +rdma_cython_module(pyverbs ""
> > > + dmabuf.pyx
> > > + dmabuf_alloc_stub.c
> > > +)
> > > +endif()
> >
> > Like this:
> >
> > if (DRM_INCLUDE_DIRS)
> > set(DMABUF_ALLOC dmabuf_alloc.c)
> > else()
> > set(DMABUF_ALLOC dmabuf_alloc_stbub.c)
> > endif()
> > rdma_cython_module(pyverbs ""
> > dmabuf.pyx
> > $(DMABUF_ALLOC)
> > )
Sure, will change.
> >
> > Jason
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
>
>
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch
More information about the dri-devel
mailing list