All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Daniel P. Berrangé" <berrange@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Michael S. Tsirkin" <mst@redhat.com>,
	"Yuri Benditovich" <yuri.benditovich@daynix.com>,
	"Daniel P. Berrangé" <berrange@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Andrew Melnychenko" <andrew@daynix.com>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Marc-André Lureau" <marcandre.lureau@redhat.com>,
	"Jason Wang" <jasowang@redhat.com>
Subject: [PATCH v3 1/8] net: fix build when libbpf is disabled, but libxdp is enabled
Date: Wed, 23 Oct 2024 09:50:56 +0100	[thread overview]
Message-ID: <20241023085103.1980072-2-berrange@redhat.com> (raw)
In-Reply-To: <20241023085103.1980072-1-berrange@redhat.com>

The net/af-xdp.c code is enabled when the libxdp library is present,
however, it also has direct API calls to bpf_xdp_query_id &
bpf_xdp_detach which are provided by the libbpf library.

As a result if building with --disable-libbpf, but libxdp gets
auto-detected, we'll fail to link QEMU

  /usr/bin/ld: libcommon.a.p/net_af-xdp.c.o: undefined reference to symbol 'bpf_xdp_query_id@@LIBBPF_0.7.0'

There are two bugs here

 * Since we have direct libbpf API calls, when building
   net/af-xdp.c, we must tell meson that libbpf is a
   dependancy, so that we directly link to it, rather
   than relying on indirect linkage.

 * When must skip probing for libxdp at all, when libbpf
   is not found, raising an error if --enable-libxdp was
   given explicitly.

Fixes: cb039ef3d9e3112da01e1ecd9b136ac9809ef733
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 meson.build     | 10 ++++++++--
 net/meson.build |  2 +-
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/meson.build b/meson.build
index d26690ce20..a9dfa1f3a7 100644
--- a/meson.build
+++ b/meson.build
@@ -2164,8 +2164,14 @@ endif
 # libxdp
 libxdp = not_found
 if not get_option('af_xdp').auto() or have_system
-    libxdp = dependency('libxdp', required: get_option('af_xdp'),
-                        version: '>=1.4.0', method: 'pkg-config')
+    if libbpf.found()
+        libxdp = dependency('libxdp', required: get_option('af_xdp'),
+                            version: '>=1.4.0', method: 'pkg-config')
+    else
+        if get_option('af_xdp').enabled()
+            error('libxdp requested, but libbpf is not available')
+        endif
+    endif
 endif
 
 # libdw
diff --git a/net/meson.build b/net/meson.build
index e0cd71470e..bb97b4dcbe 100644
--- a/net/meson.build
+++ b/net/meson.build
@@ -39,7 +39,7 @@ if have_netmap
   system_ss.add(files('netmap.c'))
 endif
 
-system_ss.add(when: libxdp, if_true: files('af-xdp.c'))
+system_ss.add(when: [libxdp, libbpf], if_true: files('af-xdp.c'))
 
 if have_vhost_net_user
   system_ss.add(when: 'CONFIG_VIRTIO_NET', if_true: files('vhost-user.c'), if_false: files('vhost-user-stub.c'))
-- 
2.46.0



  reply	other threads:[~2024-10-23  8:52 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-23  8:50 [PATCH v3 0/8] Report fatal errors from failure with pre-opened eBPF RSS FDs Daniel P. Berrangé
2024-10-23  8:50 ` Daniel P. Berrangé [this message]
2024-10-23  8:50 ` [PATCH v3 2/8] hw/net: fix typo s/epbf/ebpf/ in virtio-net Daniel P. Berrangé
2024-10-23  8:50 ` [PATCH v3 3/8] ebpf: drop redundant parameter checks in static methods Daniel P. Berrangé
2024-10-23  8:50 ` [PATCH v3 4/8] ebpf: improve error trace events Daniel P. Berrangé
2024-10-23  8:51 ` [PATCH v3 5/8] ebpf: add formal error reporting to all APIs Daniel P. Berrangé
2024-10-23  8:51 ` [PATCH v3 6/8] hw/net: report errors from failing to use eBPF RSS FDs Daniel P. Berrangé
2024-10-23  8:51 ` [PATCH v3 7/8] ebpf: improve trace event coverage to all key operations Daniel P. Berrangé
2024-10-23  8:51 ` [PATCH v3 8/8] hw/net: improve tracing of eBPF RSS setup Daniel P. Berrangé

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20241023085103.1980072-2-berrange@redhat.com \
    --to=berrange@redhat.com \
    --cc=andrew@daynix.com \
    --cc=jasowang@redhat.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=philmd@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=yuri.benditovich@daynix.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.