Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp446081rwl; Wed, 29 Mar 2023 04:20:04 -0700 (PDT) X-Google-Smtp-Source: AKy350bM80JA/YwpztstlZSBvmFaoy7jSdIa0UWA0zvd2Of4GeANPH6ECpm02AJ3HIr8hEE6Uv95 X-Received: by 2002:a50:ff06:0:b0:502:30e6:1e65 with SMTP id a6-20020a50ff06000000b0050230e61e65mr13036273edu.12.1680088803959; Wed, 29 Mar 2023 04:20:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680088803; cv=none; d=google.com; s=arc-20160816; b=BaxjSzotLr0Ao42CFx4HkKTWZP+lC6mZW41fZ/Utd/dNPQVTZGLabAY8dHgdhz9CHj VVmAxYZfeplkdjIE569y1bbQ5+ssM+HSK2EaeamzPy1AMjA/BI553BarE0ShhdJ2H0eD RDchzAVPYxTe0y1K29sQ21Uy50CUVC3aUB46FykAW8KwvJ5TwzL/UegpkjlmwhSGKtgR UVKOfACPz3muK2Mp3B8UJDKGKdeTQPf2YV4Su0dnuXKkfM42Wz+vAnGEd04RJbalNpb7 7wiJQYhP1gtTDmv3rAjGqcQjJ77QVwrU/ra4aSvuNBBbIDbmk8AimqF/K3preuBU0AVC RN9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=wrfwKePkllnALnkJ2zV/3yw/+BvIeTv0XWFEcNBw8YA=; b=ZJLxUMJUgMDSJaaSYmrBEWkgAklj2wjuis8MGO3yDnanYhtPFZfikf+odHlnLSOdY4 1rtdCdQ05cddskYRSqDKskb2NKpkmwPYh+usTh/tVYW/lIh8qxciZKbvi5mE0svFtJ3g 9zfoFgMo4268A8AFd2UJk9v9EjNCQagZc4XRy7MqD64Hxxo1Dxp5F4DZuEa4e3dsnItc 6PUEzVjsWxxKmbnbAI5HCX1TLqFEL29/e8etWMffrgTkqvujcblR18fgfwT+jt6iCUwd hQ9Ua2advhjfSdYCWeRQzi9Ug2+OkHyiCu5NDRsEiZ97B0h2EjNosQtKuMBwLG0vMvDS UpDQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@daynix-com.20210112.gappssmtp.com header.s=20210112 header.b=1dcJ+wPm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w4-20020aa7dcc4000000b005005c465878si13896698edu.168.2023.03.29.04.19.39; Wed, 29 Mar 2023 04:20:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@daynix-com.20210112.gappssmtp.com header.s=20210112 header.b=1dcJ+wPm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229646AbjC2LEI (ORCPT + 99 others); Wed, 29 Mar 2023 07:04:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60488 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229607AbjC2LDs (ORCPT ); Wed, 29 Mar 2023 07:03:48 -0400 Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com [IPv6:2a00:1450:4864:20::52c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 046A84233 for ; Wed, 29 Mar 2023 04:03:47 -0700 (PDT) Received: by mail-ed1-x52c.google.com with SMTP id b20so61585681edd.1 for ; Wed, 29 Mar 2023 04:03:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=daynix-com.20210112.gappssmtp.com; s=20210112; t=1680087825; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wrfwKePkllnALnkJ2zV/3yw/+BvIeTv0XWFEcNBw8YA=; b=1dcJ+wPmxC9snk2hmBPEKQoXzNuJWkkqm3ON1LX6qgcNx0LODC4FnhV8ZDgh9qxxHz 7bHUxRbbIvcjerza/iEoLvHl/lR3VWp5km9cVI831ypXHNgO0EkUg+sUCcVYo0zNUIf2 CjJFDKin+n+wlWQiU4Ggips5+i45qU30QX6d10hw3dKuiBqoNWtEJ+FMk0F3ewl9x3cc RCIG2QP0Djcave7xpgQw7q08JJEQ/ItGsBLMEDkxNn000ZCZ3KQowjl0Yf/4+4/osAFQ rvj/Nc5iwAAUJxjYpbKb6v6nG5yq6R19STcdmxfA1jsF2WqiJFIemuvit3TIY6a1HiGN MGYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680087825; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wrfwKePkllnALnkJ2zV/3yw/+BvIeTv0XWFEcNBw8YA=; b=bLPMGzCFWJPg7qnQJ5Ej8+4Bcab0GG06eJ8Sf1o519psKDSIQE6wPjsGQaRATGknIX fdT6EnqICVjWrzxLk3yZa7IFourIxBxmMb2Gl8Z42NMg6mNCvxvVzLMNVenohjoK/Qlf BkYj03axfkRycwD+E5QstKQdN+WTSZBmatg0QQU4wCXCnwgoPsMI0VoO5XRyiaIcw9iO 7tuOPt29zSGEBXkLTjJAFCOOL79vPn+bWXotXFOfzK/iiDo9TGkiGBQTj1nP2Tr+X3lC B/8tQCOShteylYLgT5iKkWI4KVhRRV0E2iEpx6uggCzKYn58t/qMXocUp9ht/GM2DT0h FHBg== X-Gm-Message-State: AAQBX9ddqFOA93+HgVToZDH5sY2si7J3JITztOSg3bwKvrhI0m29THNU LtsO8ARALdQ4I+aB11qglmeRAw== X-Received: by 2002:a17:906:71d7:b0:8a6:5720:9101 with SMTP id i23-20020a17090671d700b008a657209101mr20733205ejk.4.1680087825633; Wed, 29 Mar 2023 04:03:45 -0700 (PDT) Received: from localhost.localdomain (178-133-100-41.mobile.vf-ua.net. [178.133.100.41]) by smtp.gmail.com with ESMTPSA id md12-20020a170906ae8c00b008e68d2c11d8sm16406975ejb.218.2023.03.29.04.03.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Mar 2023 04:03:45 -0700 (PDT) From: Andrew Melnychenko To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, mst@redhat.com, jasowang@redhat.com, yoshfuji@linux-ipv6.org, dsahern@kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org Cc: yan@daynix.com, yuri.benditovich@daynix.com Subject: [RFC PATCH 4/5] qmp: Added new command to retrieve eBPF blob. Date: Wed, 29 Mar 2023 13:45:45 +0300 Message-Id: <20230329104546.108016-5-andrew@daynix.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230329104546.108016-1-andrew@daynix.com> References: <20230329104546.108016-1-andrew@daynix.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=0.0 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_NONE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Added command "request-ebpf". This command returns eBPF program encoded base64. The program taken from the skeleton and essentially is an ELF object that can be loaded in the future with libbpf. Signed-off-by: Andrew Melnychenko --- monitor/qmp-cmds.c | 17 +++++++++++++++++ qapi/misc.json | 25 +++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/monitor/qmp-cmds.c b/monitor/qmp-cmds.c index b0f948d337..8f2fc3e7ec 100644 --- a/monitor/qmp-cmds.c +++ b/monitor/qmp-cmds.c @@ -32,6 +32,7 @@ #include "hw/mem/memory-device.h" #include "hw/intc/intc.h" #include "hw/rdma/rdma.h" +#include "ebpf/ebpf.h" NameInfo *qmp_query_name(Error **errp) { @@ -209,3 +210,19 @@ static void __attribute__((__constructor__)) monitor_init_qmp_commands(void) qmp_marshal_qmp_capabilities, QCO_ALLOW_PRECONFIG, 0); } + +EbpfObject *qmp_request_ebpf(const char *id, Error **errp) +{ + EbpfObject *ret = NULL; + size_t size = 0; + const guchar *data = ebpf_find_binary_by_id(id, &size); + + if (data) { + ret = g_new0(EbpfObject, 1); + ret->object = g_base64_encode(data, size); + } else { + error_setg(errp, "can't find eBPF object with id: %s", id); + } + + return ret; +} diff --git a/qapi/misc.json b/qapi/misc.json index 6ddd16ea28..4689802460 100644 --- a/qapi/misc.json +++ b/qapi/misc.json @@ -618,3 +618,28 @@ { 'event': 'VFU_CLIENT_HANGUP', 'data': { 'vfu-id': 'str', 'vfu-qom-path': 'str', 'dev-id': 'str', 'dev-qom-path': 'str' } } + +## +# @EbpfObject: +# +# Structure that holds eBPF ELF object encoded in base64. +## +{ 'struct': 'EbpfObject', + 'data': {'object': 'str'} } + +## +# @request-ebpf: +# +# Function returns eBPF object that can be loaded with libbpf. +# Management applications (g.e. libvirt) may load it and pass file +# descriptors to QEMU. Which allows running QEMU without BPF capabilities. +# +# Returns: RSS eBPF object encoded in base64. +# +# Since: 7.3 +# +## +{ 'command': 'request-ebpf', + 'data': { 'id': 'str' }, + 'returns': 'EbpfObject' } + -- 2.39.1