From nobody Fri May 17 08:25:10 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1712233473; cv=none; d=zohomail.com; s=zohoarc; b=AQVpMd3PDYQxgm0WcrMU4pCTGWWHyXkpSFGR+j2ni4+VDAutJGFt61TmC/IJE8LjK/L3zQotqqqmalb0VytVzwcBiujnecb/r/Fy4x/cWf7H5/GSm3sBrYYxri3waI2whQQ1wKZDA9hFJ0o/niBsljR18DHRVbZyYjOxfa6Ny2U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712233473; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=RduIHs0sVwVRJt/xTxYLax5k5ayyoz0yKuhL8Jrw+bY=; b=fJ9U6X5HZoOdFhb9NI+OC5KS497klGctEX91WZiUx2MV7vCg8pO5J/+92ETnZArZ9YTPaxncWvEQLMLua4ykZxTwGwfHXc3XLKXFT8uhXTZNYIS2EZDzRqzoGPxuDKnHCPoA8ZZIJBTEO5Kgp8+lhLXQoc9RbOFf9spBfZFL+2Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1712233473129437.91028434657323; Thu, 4 Apr 2024 05:24:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rsM8D-0000V2-FU; Thu, 04 Apr 2024 08:23:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsM8B-0000TI-OS for qemu-devel@nongnu.org; Thu, 04 Apr 2024 08:23:47 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsM8A-0000xP-Al for qemu-devel@nongnu.org; Thu, 04 Apr 2024 08:23:47 -0400 Received: from mail-ej1-f72.google.com (mail-ej1-f72.google.com [209.85.218.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-223-QnH-NVhMP52bAxXKjrpXkg-1; Thu, 04 Apr 2024 08:23:44 -0400 Received: by mail-ej1-f72.google.com with SMTP id a640c23a62f3a-a46bae02169so183993566b.1 for ; Thu, 04 Apr 2024 05:23:44 -0700 (PDT) Received: from localhost.localdomain (host-87-12-25-33.business.telecomitalia.it. [87.12.25.33]) by smtp.gmail.com with ESMTPSA id p14-20020aa7cc8e000000b0056c4372c161sm9302566edt.55.2024.04.04.05.23.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Apr 2024 05:23:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1712233425; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=RduIHs0sVwVRJt/xTxYLax5k5ayyoz0yKuhL8Jrw+bY=; b=evFcUZVNgqx0hxBn8PIECnztObQPsSEKytJw3IJxyOxghk0sYGkZ7cIB1qDFddWVSKrAZC p+o1ZUScQVWHN+0Rl/7IqG2uyuwDNNZlzlIONnahjrPkUUlX87KxpQZmktLg8131tsB7xg X1zmSoZYhsGiMV4M7SjIlmP0SXGbGdE= X-MC-Unique: QnH-NVhMP52bAxXKjrpXkg-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712233422; x=1712838222; 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=RduIHs0sVwVRJt/xTxYLax5k5ayyoz0yKuhL8Jrw+bY=; b=uv+9ZHqOJ0guSx+T+1KxTRMDJOi/+bnuBTmWfKjcNShzhUvRx1TE5BpKP7wWt810JW OfcIIIkg8pG9DRZQrtPni++0nB+xWYJlbG/5n4noilt54gLWl4d3e3P8HLMRS2kdx0WW TgAFqMAzol6zhjrTsuYqjrqQ6+WIYqDInUQhgDmUklJLYJrUPXGsaKNPLrPpGL/smqMR yimLToLaQe1xAx1qD/TZ1NA7xOUO2hI7HGseVspXHQS3PeMgbwuVPK0KViucWwf4HcVm uPazhzAFGP/xqql/2bOOjr33TtmpLg8r31bB7TBsyoazwiB5L280HpzkD9rjeyOhm7MJ kSyg== X-Gm-Message-State: AOJu0YzzUymd1VXYzJZ6kzlKVkOq5JQQlKUgznZoM3PPYc9wfVptjChr EbI+H4Po7Bdm+zt/n4doM5mQRy2jKHWvnULA462+3yp6JRB8MzBG4SzlhIEEkGUGLQIrFH/CUdO dzVnWFA6/bowWFsEoaBQakQxh7w16fysPdyteqjeGYrxC3QzclqKB8Qj9wD89sONcd5lBEYnb61 rWYgBZjTBfL1G31QX6+cFlr9vGMp7bGkEXO0PP X-Received: by 2002:a17:906:e0d0:b0:a4e:4981:d3fb with SMTP id gl16-20020a170906e0d000b00a4e4981d3fbmr4783167ejb.29.1712233422701; Thu, 04 Apr 2024 05:23:42 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGf4eCsIC+G13AWXm6UQZeHHIGvPgrDBYeQmRPOqAoJLpzfAsa9TtnvrYBAq3muulHzgRGjnQ== X-Received: by 2002:a17:906:e0d0:b0:a4e:4981:d3fb with SMTP id gl16-20020a170906e0d000b00a4e4981d3fbmr4783126ejb.29.1712233422342; Thu, 04 Apr 2024 05:23:42 -0700 (PDT) From: Stefano Garzarella To: qemu-devel@nongnu.org Cc: Coiby Xu , "Michael S. Tsirkin" , qemu-block@nongnu.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , slp@redhat.com, Eduardo Habkost , Kevin Wolf , Hanna Reitz , Igor Mammedov , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Thomas Huth , Raphael Norwitz , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Brad Smith , stefanha@redhat.com, Eric Blake , Paolo Bonzini , Laurent Vivier , David Hildenbrand , Markus Armbruster , gmaglione@redhat.com, Jason Wang , Stefano Garzarella Subject: [PATCH for-9.1 v3 01/11] libvhost-user: set msg.msg_control to NULL when it is empty Date: Thu, 4 Apr 2024 14:23:20 +0200 Message-ID: <20240404122330.92710-2-sgarzare@redhat.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240404122330.92710-1-sgarzare@redhat.com> References: <20240404122330.92710-1-sgarzare@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=sgarzare@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1712233474526100001 Content-Type: text/plain; charset="utf-8" On some OS (e.g. macOS) sendmsg() returns -1 (errno EINVAL) if the `struct msghdr` has the field `msg_controllen` set to 0, but `msg_control` is not NULL. Reviewed-by: Eric Blake Reviewed-by: David Hildenbrand Signed-off-by: Stefano Garzarella Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- subprojects/libvhost-user/libvhost-user.c | 1 + 1 file changed, 1 insertion(+) diff --git a/subprojects/libvhost-user/libvhost-user.c b/subprojects/libvho= st-user/libvhost-user.c index a879149fef..22bea0c775 100644 --- a/subprojects/libvhost-user/libvhost-user.c +++ b/subprojects/libvhost-user/libvhost-user.c @@ -632,6 +632,7 @@ vu_message_write(VuDev *dev, int conn_fd, VhostUserMsg = *vmsg) memcpy(CMSG_DATA(cmsg), vmsg->fds, fdsize); } else { msg.msg_controllen =3D 0; + msg.msg_control =3D NULL; } =20 do { --=20 2.44.0 From nobody Fri May 17 08:25:10 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1712233515; cv=none; d=zohomail.com; s=zohoarc; b=jV3c1Ae3pTkoibf6PYOrp+lcPYMCQ6+XlnGw2cBX0yjrih4L2CbN14WCHdW1MtrXBrqsaN5A4yvv3f+7+qW69ijJa2agHGlCdr8PoMJXBb8ZKeyaEhY70yZFLZW9a/UauwO/pXXaCtUqE+wSXabAdmud61CIJNttMzbbgVwXY7Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712233515; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=e0qQ06PVKFywP7ew4GM4yPpqWIJ6sbW+Ybg5PYCFH7A=; b=nzrS2K/NG2NE7fcz+5NL21YemHc5sm//s2sEnFOrEagHpYgDnhh0R8i6mCg/mt3RvjwOrqd/VJz0I+QfEicexWbzLvWx+zPHKJ7x/DoHg0nAj5kg8Mie1NSs2ArgKpEkka1aPEmPIM+iGe9S5vTlz1bNo5ycSwg6JU7PS0VpMNo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 171223351573049.476666375121795; Thu, 4 Apr 2024 05:25:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rsM8H-0000i5-5Y; Thu, 04 Apr 2024 08:23:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsM8G-0000ed-Ep for qemu-devel@nongnu.org; Thu, 04 Apr 2024 08:23:52 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsM8E-0000xy-QX for qemu-devel@nongnu.org; Thu, 04 Apr 2024 08:23:52 -0400 Received: from mail-ej1-f71.google.com (mail-ej1-f71.google.com [209.85.218.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-584-M6ckj_pLMkO5D62Cs6cLFw-1; Thu, 04 Apr 2024 08:23:49 -0400 Received: by mail-ej1-f71.google.com with SMTP id a640c23a62f3a-a4e846f0acaso77062166b.1 for ; Thu, 04 Apr 2024 05:23:48 -0700 (PDT) Received: from localhost.localdomain (host-87-12-25-33.business.telecomitalia.it. [87.12.25.33]) by smtp.gmail.com with ESMTPSA id g16-20020a170906539000b00a46dd1f7dc1sm8991860ejo.92.2024.04.04.05.23.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Apr 2024 05:23:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1712233430; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=e0qQ06PVKFywP7ew4GM4yPpqWIJ6sbW+Ybg5PYCFH7A=; b=h+16GMffgKUVrt9123vA2gx83dWFsFKFqGK4DPy+539rL+Z5Yzr3ndA9gl4pi+s5XfaIhG fI3R+vxdKUePISVPbqwV2qFNBohbK/5bNDRMsLhErj0FbITLoR9c5ieXB8msdG+sqtbfc+ RrseK5m/SUwfOY+bgSnD5zc/Wrg8vvw= X-MC-Unique: M6ckj_pLMkO5D62Cs6cLFw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712233427; x=1712838227; 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=e0qQ06PVKFywP7ew4GM4yPpqWIJ6sbW+Ybg5PYCFH7A=; b=mHujCzMjbvMdxClJzbPQPjxw+pvMlgx+GwdhAh9SVi4q3DDzKj67YKiDoxMow9OvKc RJUp7tZ88AMhlZXElFv5Z9LKlvNyWYGfyhdYMzb7UCEyizEfUTu/nMUoWk8yKwJH7A+P zVIt/tVZht4Y4Ha6VEf5y//KR7jnNCshEYOKpb8UHjjivxYqSKsRaUD40IS2Xs4Q9PW1 Po9D4ypFYY2OH29RZXFzm+HLdBxTU1Ic/lr1p7LraenVGle3jp4kmhrwIbuyHEekSq7J 0Ld9rZH+Q6eK46A1owNAyPQBU6NzrZJKnd2x2fA9goqpfFOribdp+5OdurlyFceC9dMJ Rh0A== X-Gm-Message-State: AOJu0YxYi/PkV9sez9FZwAkjL5oZprS3w+7EYCvAyUkPk/UjV12HL3qQ PTs5VX45azp4QSiil7v7hIxr47keEqW7NZbfe8g9pC/g0Sls631mcRp/1P3AoIedcbWDR4zN0N4 f1y+Jg+zKqVnAVqarUIbLVdjI9HD80PyPyDHPgJVUmUgg1SO3bLRezykXH2hZFmC7xV51am+Jdy y60KMac6kUxUFQGSXrUM85G7HJs+3VKIjoY6cl X-Received: by 2002:a17:906:5fd4:b0:a4e:1154:fa46 with SMTP id k20-20020a1709065fd400b00a4e1154fa46mr1475026ejv.70.1712233427424; Thu, 04 Apr 2024 05:23:47 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFpmnAKlRvQWA3fSspahWldcTefg82FZZxs3TBbeilAReIUd1d/B90RxGCv9v7iPwbbnI616w== X-Received: by 2002:a17:906:5fd4:b0:a4e:1154:fa46 with SMTP id k20-20020a1709065fd400b00a4e1154fa46mr1474988ejv.70.1712233426951; Thu, 04 Apr 2024 05:23:46 -0700 (PDT) From: Stefano Garzarella To: qemu-devel@nongnu.org Cc: Coiby Xu , "Michael S. Tsirkin" , qemu-block@nongnu.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , slp@redhat.com, Eduardo Habkost , Kevin Wolf , Hanna Reitz , Igor Mammedov , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Thomas Huth , Raphael Norwitz , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Brad Smith , stefanha@redhat.com, Eric Blake , Paolo Bonzini , Laurent Vivier , David Hildenbrand , Markus Armbruster , gmaglione@redhat.com, Jason Wang , Stefano Garzarella Subject: [PATCH for-9.1 v3 02/11] libvhost-user: fail vu_message_write() if sendmsg() is failing Date: Thu, 4 Apr 2024 14:23:21 +0200 Message-ID: <20240404122330.92710-3-sgarzare@redhat.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240404122330.92710-1-sgarzare@redhat.com> References: <20240404122330.92710-1-sgarzare@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=sgarzare@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1712233516700100003 Content-Type: text/plain; charset="utf-8" In vu_message_write() we use sendmsg() to send the message header, then a write() to send the payload. If sendmsg() fails we should avoid sending the payload, since we were unable to send the header. Discovered before fixing the issue with the previous patch, where sendmsg() failed on macOS due to wrong parameters, but the frontend still sent the payload which the backend incorrectly interpreted as a wrong header. Signed-off-by: Stefano Garzarella --- subprojects/libvhost-user/libvhost-user.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/subprojects/libvhost-user/libvhost-user.c b/subprojects/libvho= st-user/libvhost-user.c index 22bea0c775..a11afd1960 100644 --- a/subprojects/libvhost-user/libvhost-user.c +++ b/subprojects/libvhost-user/libvhost-user.c @@ -639,6 +639,11 @@ vu_message_write(VuDev *dev, int conn_fd, VhostUserMsg= *vmsg) rc =3D sendmsg(conn_fd, &msg, 0); } while (rc < 0 && (errno =3D=3D EINTR || errno =3D=3D EAGAIN)); =20 + if (rc <=3D 0) { + vu_panic(dev, "Error while writing: %s", strerror(errno)); + return false; + } + if (vmsg->size) { do { if (vmsg->data) { --=20 2.44.0 From nobody Fri May 17 08:25:10 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1712233570; cv=none; d=zohomail.com; s=zohoarc; b=YfsUyIvkMLp3+QRZ1j/+ukbNTYLEtCC+gz3RMy+KhFO39ne7h7BvI0JQt86p0gx7zbbawL1wKOcN2LwAKuia0R4CKoudaRrowb3wz4LQqbDsbT1h3DB/COGO9stu7hx3GoNokIQKSQ8RlxFA29af7QhhY7PeddjtUe6QohFJi7c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712233570; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ZpxLxEjZKPolHxK9jEBltREEiUiPHa29JLrUzO0K+0U=; b=kncrd8Ixgh7NhsJRpwuCH7AFhNoGIdxOgKlNnInHrS7YnY3EhXlhskuVjJxQxIbgq7ldzmt/CiHpWIQE6XYouuPCc7ORIj7/Hg2ZMiAFNR8SVeU7tSD/Er9lGQ1mCUdk6bcZWvLwg37qDCO7OIDV/pAzpd7sf1U03BwQFoF0SmM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1712233570206639.5400154553769; Thu, 4 Apr 2024 05:26:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rsM8M-0000ky-VD; Thu, 04 Apr 2024 08:23:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsM8L-0000kn-K8 for qemu-devel@nongnu.org; Thu, 04 Apr 2024 08:23:58 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsM8K-0000zF-3x for qemu-devel@nongnu.org; Thu, 04 Apr 2024 08:23:57 -0400 Received: from mail-ed1-f72.google.com (mail-ed1-f72.google.com [209.85.208.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-619-Xvx2rbBaOoy0jB0Ws_xOMQ-1; Thu, 04 Apr 2024 08:23:54 -0400 Received: by mail-ed1-f72.google.com with SMTP id 4fb4d7f45d1cf-5684c1abc7fso489865a12.3 for ; Thu, 04 Apr 2024 05:23:53 -0700 (PDT) Received: from localhost.localdomain (host-87-12-25-33.business.telecomitalia.it. [87.12.25.33]) by smtp.gmail.com with ESMTPSA id k16-20020aa7c390000000b0056e2979b960sm1076edq.20.2024.04.04.05.23.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Apr 2024 05:23:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1712233435; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ZpxLxEjZKPolHxK9jEBltREEiUiPHa29JLrUzO0K+0U=; b=EdzoA5dDCnFXA3IeNd3Jp8f8ooY1J9/3b2l1DWOltoFCBcnimjGf28YFAviABtcJ5yYhfQ 57wJgbFVLNDopy9ZetMs/ygdyDKdjtqAdnVCpjdV5V6fnuyQTl/mw7hIWNlul72b+F4DZq rtixOrdXdC00AdaTxvYG/BmZjnM5qD0= X-MC-Unique: Xvx2rbBaOoy0jB0Ws_xOMQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712233432; x=1712838232; 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=ZpxLxEjZKPolHxK9jEBltREEiUiPHa29JLrUzO0K+0U=; b=FtuBWsCllOCRNCmK0qmKGGdHIwREOZ3/8CzF82KOnYHWvnvDSUlcB54P2Wg50mBCqx SCNSA3WH77t7gIZ015trsToRsijyUrdP4hrPFIAbXWQ4Bc0WQwz35IMdxgxV6nOTPCx+ gUTlpHkeM6WOLPyOhNoLcZ12IwgQtHbNKT6ClDFFFI+yNEOEzwF5ozn1oRo7zY9ISnmx /uHfp9JuwmVJejvVk9hLFwMNfKcU9XKw0boIq00X47fVzUqFUrwQ+nPu8r73ZZpk170u xsAHfyKcyyvA88FnROZFOFABZsvFPBQ/LjA74FbxUHvNLRDw/wWJVJDcKvktVlU5SkYD zw8A== X-Gm-Message-State: AOJu0Yxhh2SS7msJ5RH3w+xpvCJ+2+HNE7PZGUa23XtjH4M1ZxlIADy2 9tr0nMus0Eqr0/2XtGMgej6MqzAeMpc2fOz9hogUmYDxBd4DlpPN41t+elnRV9cJ4yILsvIDIzx X8WcJqb2eX/08EbsUW4jjtnC6QKsP50hoUfRN8Qd/qu6HQ55Z6f60HH1PYH80w3qb5H2oy8Z4n5 RwXXAQAutlErvh/YKmJL/dGOIZJ1xCOysBAtQC X-Received: by 2002:a50:ab5b:0:b0:56d:fca8:d209 with SMTP id t27-20020a50ab5b000000b0056dfca8d209mr1685420edc.10.1712233432321; Thu, 04 Apr 2024 05:23:52 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFo5LhWeqDE998SAVHKQT4KfEeuzyPktirErjhPfVxA/95CkcUbc78fYRSokzUX2kv/oeQiYA== X-Received: by 2002:a50:ab5b:0:b0:56d:fca8:d209 with SMTP id t27-20020a50ab5b000000b0056dfca8d209mr1685384edc.10.1712233431989; Thu, 04 Apr 2024 05:23:51 -0700 (PDT) From: Stefano Garzarella To: qemu-devel@nongnu.org Cc: Coiby Xu , "Michael S. Tsirkin" , qemu-block@nongnu.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , slp@redhat.com, Eduardo Habkost , Kevin Wolf , Hanna Reitz , Igor Mammedov , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Thomas Huth , Raphael Norwitz , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Brad Smith , stefanha@redhat.com, Eric Blake , Paolo Bonzini , Laurent Vivier , David Hildenbrand , Markus Armbruster , gmaglione@redhat.com, Jason Wang , Stefano Garzarella Subject: [PATCH for-9.1 v3 03/11] libvhost-user: mask F_INFLIGHT_SHMFD if memfd is not supported Date: Thu, 4 Apr 2024 14:23:22 +0200 Message-ID: <20240404122330.92710-4-sgarzare@redhat.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240404122330.92710-1-sgarzare@redhat.com> References: <20240404122330.92710-1-sgarzare@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=sgarzare@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1712233570839100005 Content-Type: text/plain; charset="utf-8" libvhost-user will panic when receiving VHOST_USER_GET_INFLIGHT_FD message if MFD_ALLOW_SEALING is not defined, since it's not able to create a memfd. VHOST_USER_GET_INFLIGHT_FD is used only if VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD is negotiated. So, let's mask that feature if the backend is not able to properly handle these messages. Signed-off-by: Stefano Garzarella --- subprojects/libvhost-user/libvhost-user.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/subprojects/libvhost-user/libvhost-user.c b/subprojects/libvho= st-user/libvhost-user.c index a11afd1960..1c361ffd51 100644 --- a/subprojects/libvhost-user/libvhost-user.c +++ b/subprojects/libvhost-user/libvhost-user.c @@ -1674,6 +1674,16 @@ vu_get_protocol_features_exec(VuDev *dev, VhostUserM= sg *vmsg) features |=3D dev->iface->get_protocol_features(dev); } =20 + /* + * If MFD_ALLOW_SEALING is not defined, we are not able to handle + * VHOST_USER_GET_INFLIGHT_FD messages, since we can't create a memfd. + * Those messages are used only if VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD + * is negotiated. A device implementation can enable it, so let's mask + * it to avoid a runtime panic. + */ +#ifndef MFD_ALLOW_SEALING + features &=3D ~(1ULL << VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD); +#endif vmsg_set_reply_u64(vmsg, features); return true; } --=20 2.44.0 From nobody Fri May 17 08:25:10 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1712233507; cv=none; d=zohomail.com; s=zohoarc; b=FA+vyuJFdsnXH/Yf3EFgo9gBxcfK/u9AbwjX8RT9gbjtnqDgnoEh3EtePI6n5Z/PYCtiWsmEYSsb8RtypWGzCBi3ynsK/3m4ICGr8bwzOmTayfPlbDcH6i6284xXc1p/F7Wqf+UGdevIdt0L1BB4PQ2q3VtmS5x+T/yYWKm7Li8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712233507; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=YGsiOWJv5V843yPjMDAAyG56pyYPyj7fhXTNvvLUdHs=; b=BNH4XiKiVSTIaUQfh63Er/o/+dhiAV+decjFobfUXmZMdojkiEEIghpdXsUewnBWPKMY37qDS/pVqsdFlOC+RAuZ9vzyjsAhn5aDH1Qqkd6RGYo2YmS2Byi5/LuE5WiLSnWrYZ83JKz/L5WrzG27dc3Hw1yoteF3z1kBp4ZXhmo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1712233507808640.6555191894362; Thu, 4 Apr 2024 05:25:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rsM8T-0000mo-Gs; Thu, 04 Apr 2024 08:24:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsM8Q-0000lq-Rz for qemu-devel@nongnu.org; Thu, 04 Apr 2024 08:24:03 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsM8P-00010T-CY for qemu-devel@nongnu.org; Thu, 04 Apr 2024 08:24:02 -0400 Received: from mail-lf1-f71.google.com (mail-lf1-f71.google.com [209.85.167.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-665-Llgkv_NEPeCbsNgrmCe_ag-1; Thu, 04 Apr 2024 08:23:59 -0400 Received: by mail-lf1-f71.google.com with SMTP id 2adb3069b0e04-515bbb9a73aso884610e87.0 for ; Thu, 04 Apr 2024 05:23:59 -0700 (PDT) Received: from localhost.localdomain (host-87-12-25-33.business.telecomitalia.it. [87.12.25.33]) by smtp.gmail.com with ESMTPSA id ev6-20020a056402540600b005682a0e915fsm9165344edb.76.2024.04.04.05.23.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Apr 2024 05:23:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1712233440; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=YGsiOWJv5V843yPjMDAAyG56pyYPyj7fhXTNvvLUdHs=; b=TsGNtRHE3HbOcgBoav5fcjcRadM21EpQX+Z3envTgX9z+4GjpxWmGwKcZ/b68Qav2QMXH5 1waS/Ge4vi//QJex7p3tdDufTnISwYl+2cAR/kTVp1KmUZDdFL257N7asi7AWxtYBPgWVK vLNLD03jnaJcKYlcQsDxHiA+89l8mGM= X-MC-Unique: Llgkv_NEPeCbsNgrmCe_ag-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712233437; x=1712838237; 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=YGsiOWJv5V843yPjMDAAyG56pyYPyj7fhXTNvvLUdHs=; b=dxtgf0S1y/eY8g7zjWmhCbM7D690qSb66LNbVwsS+q4A0Xfg0ESPYrxVfKZrehl5p5 mXoKZuoLfFtg0HbeglHR3GUsy7BVg+79Gx3NPX/BzxoQYWLTgJebn4qVE/ilQvW63GPL sewNBDTNIZzc3Yk8vXNSicz8vPs3rv52RkXrobWHPJ9Qrn2Qb54uVUckqlF+UWfIN3cr s4M8upiUBZd5of0gBaqBOjMVjLqh9rvLFwqakMymYvQMe48ui9fxi/pQMPoWcdD/rdq5 e3Vxxjt0/JuG0ICE0GKh0wdzV0hWRQWe2PXHEcpVUlKf5uRpUkOMNfaawgxpcI+XCNzq C/Lw== X-Gm-Message-State: AOJu0Yywk+dm5/eByi4L6jXxpR83eOp3zEZS5+gjk/pBHb5Ctjau1ol9 n1Pyn5ucFPm8/Gk7h2jP7bd6qY5T/vNTXqZevzZ23QkgTYuwq5h38NXz4N5SFxEWgiC50UilfCu zaGEw19sHjT0A1jAhGF+Nq6zOfPssuP4X/5cqWwzbcPX/U9Gb5zeFjEk7ylEWUIQdVpmyjLBUK0 gAdQtHfwwrFM5mv0O+V/tGlyicdzLNuOJ4bu8/ X-Received: by 2002:ac2:4a6c:0:b0:515:90e5:4555 with SMTP id q12-20020ac24a6c000000b0051590e54555mr1482594lfp.16.1712233437524; Thu, 04 Apr 2024 05:23:57 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEsRFyDiXYHKCS1Gh7h+M1i+yM7rWqRzttF8unR9EdETBwvAmEMHGiXF9Ctl8llmwqLq6c/oA== X-Received: by 2002:ac2:4a6c:0:b0:515:90e5:4555 with SMTP id q12-20020ac24a6c000000b0051590e54555mr1482547lfp.16.1712233437009; Thu, 04 Apr 2024 05:23:57 -0700 (PDT) From: Stefano Garzarella To: qemu-devel@nongnu.org Cc: Coiby Xu , "Michael S. Tsirkin" , qemu-block@nongnu.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , slp@redhat.com, Eduardo Habkost , Kevin Wolf , Hanna Reitz , Igor Mammedov , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Thomas Huth , Raphael Norwitz , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Brad Smith , stefanha@redhat.com, Eric Blake , Paolo Bonzini , Laurent Vivier , David Hildenbrand , Markus Armbruster , gmaglione@redhat.com, Jason Wang , Stefano Garzarella Subject: [PATCH for-9.1 v3 04/11] vhost-user-server: do not set memory fd non-blocking Date: Thu, 4 Apr 2024 14:23:23 +0200 Message-ID: <20240404122330.92710-5-sgarzare@redhat.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240404122330.92710-1-sgarzare@redhat.com> References: <20240404122330.92710-1-sgarzare@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=sgarzare@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1712233508678100002 Content-Type: text/plain; charset="utf-8" In vhost-user-server we set all fd received from the other peer in non-blocking mode. For some of them (e.g. memfd, shm_open, etc.) it's not really needed, because we don't use these fd with blocking operations, but only to map memory. In addition, in some systems this operation can fail (e.g. in macOS setting an fd returned by shm_open() non-blocking fails with errno =3D ENOTTY). So, let's avoid setting fd non-blocking for those messages that we know carry memory fd (e.g. VHOST_USER_ADD_MEM_REG, VHOST_USER_SET_MEM_TABLE). Signed-off-by: Stefano Garzarella --- v3: - avoiding setting fd non-blocking for messages where we have memory fd (Eric) --- util/vhost-user-server.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/util/vhost-user-server.c b/util/vhost-user-server.c index 3bfb1ad3ec..b19229074a 100644 --- a/util/vhost-user-server.c +++ b/util/vhost-user-server.c @@ -65,6 +65,18 @@ static void vmsg_close_fds(VhostUserMsg *vmsg) static void vmsg_unblock_fds(VhostUserMsg *vmsg) { int i; + + /* + * These messages carry fd used to map memory, not to send/receive mes= sages, + * so this operation is useless. In addition, in some systems this + * operation can fail (e.g. in macOS setting an fd returned by shm_ope= n() + * non-blocking fails with errno =3D ENOTTY) + */ + if (vmsg->request =3D=3D VHOST_USER_ADD_MEM_REG || + vmsg->request =3D=3D VHOST_USER_SET_MEM_TABLE) { + return; + } + for (i =3D 0; i < vmsg->fd_num; i++) { qemu_socket_set_nonblock(vmsg->fds[i]); } --=20 2.44.0 From nobody Fri May 17 08:25:10 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1712233515; cv=none; d=zohomail.com; s=zohoarc; b=TEqwzLIVuxrZhu94/Ee88OQKOQrBYM/M6F5bZJ9An3iKJfZeQ7J37TBJDkl1Lly16wmnC8Jug57hJsCiazrJuj+VtHICcdMVPQWKEKDiCFfrOHN0qfdFk/vSrP9NoRVnQHJg9QQVshmCFQA1kjIC8ovRFYX6cfpei3g3jZ0Mu2I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712233515; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=QKw7wwOpcT5LAk2fX9NUDEtqgiO584+Et0vV37YJJRo=; b=GmeNJXOfCIXjghURrKD/2xwz2qnKB/waOIfsyJYANsWJpYDkSClg5qeFzSWgJKyH1Z6ZDKibJ/fs4PZCE9zHW1cSuo/m50ffkzydFnnqj7yrd9OX5uwjgm/ARYWBtwx4uK597dmJP7vimy4IPnxmgrCo4Le1vXj0DjxenoMwUDs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1712233515696478.33444230001646; Thu, 4 Apr 2024 05:25:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rsM8W-0000nh-Tm; Thu, 04 Apr 2024 08:24:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsM8W-0000nS-2S for qemu-devel@nongnu.org; Thu, 04 Apr 2024 08:24:08 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsM8U-00011B-14 for qemu-devel@nongnu.org; Thu, 04 Apr 2024 08:24:07 -0400 Received: from mail-ej1-f71.google.com (mail-ej1-f71.google.com [209.85.218.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-298-XpfEoJrEN2KAw9dAtJ_0_A-1; Thu, 04 Apr 2024 08:24:04 -0400 Received: by mail-ej1-f71.google.com with SMTP id a640c23a62f3a-a4d8e5d6722so74891466b.0 for ; Thu, 04 Apr 2024 05:24:04 -0700 (PDT) Received: from localhost.localdomain (host-87-12-25-33.business.telecomitalia.it. [87.12.25.33]) by smtp.gmail.com with ESMTPSA id he18-20020a1709073d9200b00a4729f093ecsm8939234ejc.53.2024.04.04.05.23.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Apr 2024 05:24:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1712233445; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=QKw7wwOpcT5LAk2fX9NUDEtqgiO584+Et0vV37YJJRo=; b=Hke4Z/5VkHOPfYvjDhJIRQoNvAg4pXurmNlaj890Nzkg5p7CLNjYXu/P6JELutgUHocrAr NYOL8NBIBbL0uIZzcTk9XvfLVNALiFGWUO98pw/ojOLaW+qbRj8to+NJvAz0UQ1y/y+A35 sqP7u/fe3+Gt+2Pc/IdwJipBBVX5od0= X-MC-Unique: XpfEoJrEN2KAw9dAtJ_0_A-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712233443; x=1712838243; 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=QKw7wwOpcT5LAk2fX9NUDEtqgiO584+Et0vV37YJJRo=; b=P/VhoB6Jdipxuvy7d61MvKkFIg+1Yb+eoykcKEfHdoP/3CtlRUSBr0Mj3Caapy/CMg 7aI4ebY3NGXZyZzgYH4dOSr2w3TXzSqlXxTVrrInjS10RrCruxRAbhPbEIJA/U+8MYbV /cBBagpHmAB3916EQd13RchPF0SVm5DuVVrJFoDgR6BGM4g4yTWUb5w91OlT5wmSRfO3 51QU76zWlywakE+rLvrLUQR+poYxLhT1c7jwo7LIEVOXZIg43rvUaHOhgVHN9opXr9vw 8/g8+sPAAPtg609IkwoBnMybin9Wdssmz2neJIVbSRW0inJTm2Vv2LRModZ1rLfKlvo5 9VdA== X-Gm-Message-State: AOJu0YwIFIfdkpenmb+f5/A0c7jVSpoAW4Tlpf8t6QO03Lv7cHUgTXtQ TqBOqNfrT+HhLCyNewmnet7FRhmH4/V5nCUZxL9PB8vQtCsFGaSJV/A5HZlAeo9qKC5XviqXopw DkFmjGgBbY7KdNZpyeFu26SBuET+45zpT+YgoHj1MAXLmCewS+T7IwfCpbCQ+M+wS1bP6dPAyYx Tg3kpZwKDy51wgV5LBTMKhedzga2ar6A6qlWHi X-Received: by 2002:a17:907:7fa8:b0:a47:533f:2d0f with SMTP id qk40-20020a1709077fa800b00a47533f2d0fmr1870271ejc.66.1712233442810; Thu, 04 Apr 2024 05:24:02 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGUkMNDCbjmDXUBORv2+OjnxSPlQZHeZfj3puzvtjO4VS/SA9sf6x+sWV8YND+p4xcSVaYgrw== X-Received: by 2002:a17:907:7fa8:b0:a47:533f:2d0f with SMTP id qk40-20020a1709077fa800b00a47533f2d0fmr1870237ejc.66.1712233442542; Thu, 04 Apr 2024 05:24:02 -0700 (PDT) From: Stefano Garzarella To: qemu-devel@nongnu.org Cc: Coiby Xu , "Michael S. Tsirkin" , qemu-block@nongnu.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , slp@redhat.com, Eduardo Habkost , Kevin Wolf , Hanna Reitz , Igor Mammedov , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Thomas Huth , Raphael Norwitz , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Brad Smith , stefanha@redhat.com, Eric Blake , Paolo Bonzini , Laurent Vivier , David Hildenbrand , Markus Armbruster , gmaglione@redhat.com, Jason Wang , Stefano Garzarella Subject: [PATCH for-9.1 v3 05/11] contrib/vhost-user-blk: fix bind() using the right size of the address Date: Thu, 4 Apr 2024 14:23:24 +0200 Message-ID: <20240404122330.92710-6-sgarzare@redhat.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240404122330.92710-1-sgarzare@redhat.com> References: <20240404122330.92710-1-sgarzare@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-type: text/plain Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=sgarzare@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PP_MIME_FAKE_ASCII_TEXT=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1712233516700100004 On macOS passing `-s /tmp/vhost.socket` parameter to the vhost-user-blk application, the bind was done on `/tmp/vhost.socke` pathname, missing the last character. This sounds like one of the portability problems described in the unix(7) manpage: Pathname sockets When binding a socket to a pathname, a few rules should be observed for maximum portability and ease of coding: =E2=80=A2 The pathname in sun_path should be null-terminated. =E2=80=A2 The length of the pathname, including the terminating null byte, should not exceed the size of sun_path. =E2=80=A2 The addrlen argument that describes the enclosing sockaddr_un structure should have a value of at least: offsetof(struct sockaddr_un, sun_path) + strlen(addr.sun_path)+1 or, more simply, addrlen can be specified as sizeof(struct sockaddr_un). So let's follow the last advice and simplify the code as well. Signed-off-by: Stefano Garzarella Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- contrib/vhost-user-blk/vhost-user-blk.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/contrib/vhost-user-blk/vhost-user-blk.c b/contrib/vhost-user-b= lk/vhost-user-blk.c index 89e5f11a64..a8ab9269a2 100644 --- a/contrib/vhost-user-blk/vhost-user-blk.c +++ b/contrib/vhost-user-blk/vhost-user-blk.c @@ -469,7 +469,6 @@ static int unix_sock_new(char *unix_fn) { int sock; struct sockaddr_un un; - size_t len; =20 assert(unix_fn); =20 @@ -481,10 +480,9 @@ static int unix_sock_new(char *unix_fn) =20 un.sun_family =3D AF_UNIX; (void)snprintf(un.sun_path, sizeof(un.sun_path), "%s", unix_fn); - len =3D sizeof(un.sun_family) + strlen(un.sun_path); =20 (void)unlink(unix_fn); - if (bind(sock, (struct sockaddr *)&un, len) < 0) { + if (bind(sock, (struct sockaddr *)&un, sizeof(un)) < 0) { perror("bind"); goto fail; } --=20 2.44.0 From nobody Fri May 17 08:25:10 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1712233581; cv=none; d=zohomail.com; s=zohoarc; b=oIEt/supF9ao6tumq6l6cewy7Q2MG+LPcoUQDzSupINpJ2RXf5n7U8TkGq5VcvfSphrT5WcLFe0xInvrF/+60ak1BgoYWA1v8wowWs6sKb7oPhnPl4gRwO5OW2WSDvlBwtiDMXxZzFXl2qhv71zMcQnHMD8O+hwdeAFhuWfdGqg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712233581; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=kzYc+J54vOGcpzVPbA08PRAO84CKwMnNUHeaTVFrt3k=; b=WX85Qp6HTL9siLkVGmV07TmrhPORYkagkNj6qc4G/NjR91dFW/1+BuaYO6wU+1+oA6x9ja54Pv+KIOrds3AR3UuscePwtXzejKuLgLytEvgFOIos5h+z6BMsaV0JHTycgYvMqb6WTcNW/S4Fzv1kbFRw4sh0T2KFtRDEfezbPzw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17122335813561007.7690062473216; Thu, 4 Apr 2024 05:26:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rsM8f-0000pm-Cp; Thu, 04 Apr 2024 08:24:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsM8b-0000pB-Nc for qemu-devel@nongnu.org; Thu, 04 Apr 2024 08:24:13 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsM8Z-00011r-J3 for qemu-devel@nongnu.org; Thu, 04 Apr 2024 08:24:12 -0400 Received: from mail-ej1-f72.google.com (mail-ej1-f72.google.com [209.85.218.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-450-TCQ1EZpnO_indoT5oAYsJg-1; Thu, 04 Apr 2024 08:24:09 -0400 Received: by mail-ej1-f72.google.com with SMTP id a640c23a62f3a-a46852c2239so60998966b.1 for ; Thu, 04 Apr 2024 05:24:08 -0700 (PDT) Received: from localhost.localdomain (host-87-12-25-33.business.telecomitalia.it. [87.12.25.33]) by smtp.gmail.com with ESMTPSA id r17-20020a170906705100b00a42f6d17123sm8943953ejj.46.2024.04.04.05.24.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Apr 2024 05:24:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1712233450; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=kzYc+J54vOGcpzVPbA08PRAO84CKwMnNUHeaTVFrt3k=; b=UvJyu64mjfqqnJ8CAraTqm0LC+QrsoyAA5b2cF/aU6H7XGvJRGlaEspEYk1ZauFzluBJnI 6wZN9MhwEdBGbcg4Qzd/DhemE5HL9HA4HfLj3MXl0iLj98n3ubvuK7/L6zoGMnSTi1Yhvu X5EVE4zDJP4UTxlbgP4HJxlZ9IaXEno= X-MC-Unique: TCQ1EZpnO_indoT5oAYsJg-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712233447; x=1712838247; 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=kzYc+J54vOGcpzVPbA08PRAO84CKwMnNUHeaTVFrt3k=; b=M/MxXjryxY3p5c74CpOGw4QYYQ3ZSCh/24FWp8BCUeBgnkpL7FR3Kyxc4JDYifenYv wmpcJjRAssyZXktWUe0wp9AUdQ846vYFen8p8UJErKA/ujj9Kt9p7yc6PoLG2pDjnsz+ I/CruF/84KyQCdTswjr2dwHcBONNeqyuWjc1YLl0+yCV4knq6acK7K3zoDiFJfNrgwKF ZsqbE9IKrgEo1CFYBVVFcCnLo5QGcys6cQkanf3fVsg3d0JN9LIsso2d2bA3cGCkJxcw APltttj5c/jV/vA66HZnRyf+sgg5og8tJhC6HvlbwPoFjowX+ti1cwFNaT8onzhOnnbO S+3Q== X-Gm-Message-State: AOJu0YwqoxNP74lVBT0w6a0AoKaDR+BprksD9ySYqdS0uNYGpAdXCoLj LEN++mAQtJoIyoJgK1Pu4ZeVpKRU/DTY17xPxV29NE11QqhTKQorOBj3LQGlxgmtHo8PI9BJPan O6DvUwRkoq6OP+Z967lCEjeoBzQm0gZtIyz/FxqzB8RHnpDxhVVRwZTi+m5uOmgIDvFJRXFPbGu yUP1tIPpcVlbu1XQOMSiK3XL5U6US7d+coprNB X-Received: by 2002:a17:906:94e:b0:a4e:4e8c:bedc with SMTP id j14-20020a170906094e00b00a4e4e8cbedcmr1437237ejd.53.1712233447566; Thu, 04 Apr 2024 05:24:07 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFA0DRjWjymIeLJkewZMdnq50nfbl8le8bp+v6WOjYoCk+nvvjtEE8qK6+sYbGLj04IY8W+AA== X-Received: by 2002:a17:906:94e:b0:a4e:4e8c:bedc with SMTP id j14-20020a170906094e00b00a4e4e8cbedcmr1437206ejd.53.1712233447297; Thu, 04 Apr 2024 05:24:07 -0700 (PDT) From: Stefano Garzarella To: qemu-devel@nongnu.org Cc: Coiby Xu , "Michael S. Tsirkin" , qemu-block@nongnu.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , slp@redhat.com, Eduardo Habkost , Kevin Wolf , Hanna Reitz , Igor Mammedov , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Thomas Huth , Raphael Norwitz , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Brad Smith , stefanha@redhat.com, Eric Blake , Paolo Bonzini , Laurent Vivier , David Hildenbrand , Markus Armbruster , gmaglione@redhat.com, Jason Wang , Stefano Garzarella Subject: [PATCH for-9.1 v3 06/11] vhost-user: enable frontends on any POSIX system Date: Thu, 4 Apr 2024 14:23:25 +0200 Message-ID: <20240404122330.92710-7-sgarzare@redhat.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240404122330.92710-1-sgarzare@redhat.com> References: <20240404122330.92710-1-sgarzare@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=sgarzare@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1712233582938100003 Content-Type: text/plain; charset="utf-8" The vhost-user protocol is not really Linux-specific so let's enable vhost-user frontends for any POSIX system. In vhost_net.c we use VHOST_FILE_UNBIND which is defined in a Linux specific header, let's define it for other systems as well. Signed-off-by: Stefano Garzarella --- meson.build | 1 - hw/net/vhost_net.c | 5 +++++ hw/block/Kconfig | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/meson.build b/meson.build index c9c3217ba4..c19d51501a 100644 --- a/meson.build +++ b/meson.build @@ -151,7 +151,6 @@ have_tpm =3D get_option('tpm') \ =20 # vhost have_vhost_user =3D get_option('vhost_user') \ - .disable_auto_if(host_os !=3D 'linux') \ .require(host_os !=3D 'windows', error_message: 'vhost-user is not available on Windows').allowe= d() have_vhost_vdpa =3D get_option('vhost_vdpa') \ diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c index fd1a93701a..fced429813 100644 --- a/hw/net/vhost_net.c +++ b/hw/net/vhost_net.c @@ -34,8 +34,13 @@ #include "standard-headers/linux/virtio_ring.h" #include "hw/virtio/vhost.h" #include "hw/virtio/virtio-bus.h" +#if defined(__linux__) #include "linux-headers/linux/vhost.h" +#endif =20 +#ifndef VHOST_FILE_UNBIND +#define VHOST_FILE_UNBIND -1 +#endif =20 /* Features supported by host kernel. */ static const int kernel_feature_bits[] =3D { diff --git a/hw/block/Kconfig b/hw/block/Kconfig index 9e8f28f982..29ee09e434 100644 --- a/hw/block/Kconfig +++ b/hw/block/Kconfig @@ -40,7 +40,7 @@ config VHOST_USER_BLK bool # Only PCI devices are provided for now default y if VIRTIO_PCI - depends on VIRTIO && VHOST_USER && LINUX + depends on VIRTIO && VHOST_USER =20 config SWIM bool --=20 2.44.0 From nobody Fri May 17 08:25:10 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1712233608; cv=none; d=zohomail.com; s=zohoarc; b=dQt3sjCy2CQtGs4bEfOYS7B9Yv5BeY4EyIVUhyJg7Zb6MIOwVskNkBEOla/6TA3JMHKqJ92WGJGKR5rDutuplTR6NZW6H79mtAVVhHYF9/qMF0s8wrT+zugDYndbnOp1Et46R1nUx4t00ga/4Hky+Sox7+IqWLOF0GST1xfdldY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712233608; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7su9FVCHZgY5W4CseWaTDVux0tjQnk92YCDB/2U9JF8=; b=iErJWnDG+G9SQAw/4bgjjQYAE0JYSiUVHsMb73GfWuNDDoBPnzS6Bx801jMTOqJNXdzn2Gab9zfk9AROF80n82uULAleJDNOoOIB0ia/2wBybsO4EbJIrEQd7JiHryxmhNvRsCMFhUon12F1JKRWdLvLlvro1pPjVXDsuh3z2OY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1712233608177707.0169051522817; Thu, 4 Apr 2024 05:26:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rsM8v-0001CH-H2; Thu, 04 Apr 2024 08:24:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsM8u-00014u-7V for qemu-devel@nongnu.org; Thu, 04 Apr 2024 08:24:32 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsM8e-00012H-Mk for qemu-devel@nongnu.org; Thu, 04 Apr 2024 08:24:31 -0400 Received: from mail-ej1-f71.google.com (mail-ej1-f71.google.com [209.85.218.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-498-Qg9tHhcZMcGdIYj5uPOJsg-1; Thu, 04 Apr 2024 08:24:14 -0400 Received: by mail-ej1-f71.google.com with SMTP id a640c23a62f3a-a4943e972d1so208270566b.0 for ; Thu, 04 Apr 2024 05:24:13 -0700 (PDT) Received: from localhost.localdomain (host-87-12-25-33.business.telecomitalia.it. [87.12.25.33]) by smtp.gmail.com with ESMTPSA id ce8-20020a170906b24800b00a466c66804bsm8942382ejb.49.2024.04.04.05.24.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Apr 2024 05:24:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1712233455; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7su9FVCHZgY5W4CseWaTDVux0tjQnk92YCDB/2U9JF8=; b=I5NYa+TIor2S59R0RoXA5frmlSzn3Y7kYnHw3pBviA+jby3X91BYULss68TNp8xIMUdS9i hNH1XJ9VUXSWfZAj8v982JOyZx54mRt2UkC5smovZcTThiQAch1SPMCNzYtw9vWNG+xA23 iN99YJGO7b8ZtbZYoWv3L9zzYSc2Aj0= X-MC-Unique: Qg9tHhcZMcGdIYj5uPOJsg-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712233452; x=1712838252; 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=7su9FVCHZgY5W4CseWaTDVux0tjQnk92YCDB/2U9JF8=; b=JAokMf+q30OD7egYVTpyp7AOXChhF+djVu/GV68kv29DLXqETub0z1UI171pOEz9VK miDVxb4kzUfUIeE41OyG4QTmluu8k6F2Oyh76H9rBobUnv9GeENV241xFpHUfacQFQli qguHepkSsH7LQipM+KA/dwAYqCat1gYNuF0nhS5jdrTdRBUJAbrRO65s/XuoilO5xdGw tyVgkqLWnuH8YCkQqfYXuVXH/8YHONcSDouqIS5I7jpWY3QWFbYDlOmY5jlSwXnJXe2h HMzCIF+NDxDiErVKTZd8EsGrJRSvkvTroiunEPtMVBBw8a7sEbC1740h/jwTK3O6LK4t MJZw== X-Gm-Message-State: AOJu0YwcD1CGT/IMSFniSJ8Yx6zfKdS/jvMN+nyyu2ez5tzfA9+qZATg jScaHHqAIcnFEpHLkNkMt4lZI1lkXMdKUBGN9F/B6I46WFFlnN4JAdVzYL9ZWDwf1b7JXKIve7M +XhI2VK/XALZZrOoqCGen5AOoeZiQz2RAkP2j6v8A9f9GDdybzoaCGn+w/s8qLRBy25xYdJZOVm ut2K6c/Mmp3XFBFLu3EZNAcHIWxhklrXe9cWp0 X-Received: by 2002:a17:906:fa0f:b0:a51:8fd0:b1db with SMTP id lo15-20020a170906fa0f00b00a518fd0b1dbmr929372ejb.20.1712233452501; Thu, 04 Apr 2024 05:24:12 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEgeevPlWwYI/B4IQOsKCoWqeHZ7WSl59OfcMLqKKYcoDwzXismtyQqnjB7MvNqxHsyArhORQ== X-Received: by 2002:a17:906:fa0f:b0:a51:8fd0:b1db with SMTP id lo15-20020a170906fa0f00b00a518fd0b1dbmr929335ejb.20.1712233452191; Thu, 04 Apr 2024 05:24:12 -0700 (PDT) From: Stefano Garzarella To: qemu-devel@nongnu.org Cc: Coiby Xu , "Michael S. Tsirkin" , qemu-block@nongnu.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , slp@redhat.com, Eduardo Habkost , Kevin Wolf , Hanna Reitz , Igor Mammedov , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Thomas Huth , Raphael Norwitz , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Brad Smith , stefanha@redhat.com, Eric Blake , Paolo Bonzini , Laurent Vivier , David Hildenbrand , Markus Armbruster , gmaglione@redhat.com, Jason Wang , Stefano Garzarella Subject: [PATCH for-9.1 v3 07/11] libvhost-user: enable it on any POSIX system Date: Thu, 4 Apr 2024 14:23:26 +0200 Message-ID: <20240404122330.92710-8-sgarzare@redhat.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240404122330.92710-1-sgarzare@redhat.com> References: <20240404122330.92710-1-sgarzare@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=sgarzare@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_PASS=-0.001, T_SPF_HELO_TEMPERROR=0.01 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1712233609000100001 Content-Type: text/plain; charset="utf-8" The vhost-user protocol is not really Linux-specific so let's enable libvhost-user for any POSIX system. Compiling it on macOS and FreeBSD some problems came up: - avoid to include linux/vhost.h which is avaibale only on Linux (vhost_types.h contains many of the things we need) - macOS doesn't provide sys/endian.h, so let's define them (note: libvhost-user doesn't include qemu's headers, so we can't use use "qemu/bswap.h") - define eventfd_[write|read] as write/read wrapper when system doesn't provide those (e.g. macOS) - copy SEAL defines from include/qemu/memfd.h to make the code works on FreeBSD where MFD_ALLOW_SEALING is defined - define MAP_NORESERVE if it's not defined (e.g. on FreeBSD) Signed-off-by: Stefano Garzarella --- meson.build | 2 +- subprojects/libvhost-user/libvhost-user.h | 2 +- subprojects/libvhost-user/libvhost-user.c | 60 +++++++++++++++++++++-- 3 files changed, 59 insertions(+), 5 deletions(-) diff --git a/meson.build b/meson.build index c19d51501a..3197a2f62e 100644 --- a/meson.build +++ b/meson.build @@ -3194,7 +3194,7 @@ endif config_host_data.set('CONFIG_FDT', fdt.found()) =20 vhost_user =3D not_found -if host_os =3D=3D 'linux' and have_vhost_user +if have_vhost_user libvhost_user =3D subproject('libvhost-user') vhost_user =3D libvhost_user.get_variable('vhost_user_dep') endif diff --git a/subprojects/libvhost-user/libvhost-user.h b/subprojects/libvho= st-user/libvhost-user.h index deb40e77b3..e13e1d3931 100644 --- a/subprojects/libvhost-user/libvhost-user.h +++ b/subprojects/libvhost-user/libvhost-user.h @@ -18,9 +18,9 @@ #include #include #include -#include #include #include "standard-headers/linux/virtio_ring.h" +#include "standard-headers/linux/vhost_types.h" =20 /* Based on qemu/hw/virtio/vhost-user.c */ #define VHOST_USER_F_PROTOCOL_FEATURES 30 diff --git a/subprojects/libvhost-user/libvhost-user.c b/subprojects/libvho= st-user/libvhost-user.c index 1c361ffd51..03edb4bf64 100644 --- a/subprojects/libvhost-user/libvhost-user.c +++ b/subprojects/libvhost-user/libvhost-user.c @@ -28,9 +28,7 @@ #include #include #include -#include #include -#include =20 /* Necessary to provide VIRTIO_F_VERSION_1 on system * with older linux headers. Must appear before @@ -39,8 +37,8 @@ #include "standard-headers/linux/virtio_config.h" =20 #if defined(__linux__) +#include #include -#include #include #include #include @@ -52,6 +50,62 @@ =20 #endif =20 +#if defined(__APPLE__) && (__MACH__) +#include +#define htobe16(x) OSSwapHostToBigInt16(x) +#define htole16(x) OSSwapHostToLittleInt16(x) +#define be16toh(x) OSSwapBigToHostInt16(x) +#define le16toh(x) OSSwapLittleToHostInt16(x) + +#define htobe32(x) OSSwapHostToBigInt32(x) +#define htole32(x) OSSwapHostToLittleInt32(x) +#define be32toh(x) OSSwapBigToHostInt32(x) +#define le32toh(x) OSSwapLittleToHostInt32(x) + +#define htobe64(x) OSSwapHostToBigInt64(x) +#define htole64(x) OSSwapHostToLittleInt64(x) +#define be64toh(x) OSSwapBigToHostInt64(x) +#define le64toh(x) OSSwapLittleToHostInt64(x) +#endif + +#ifdef CONFIG_EVENTFD +#include +#else +#define eventfd_t uint64_t + +int eventfd_write(int fd, eventfd_t value) +{ + return (write(fd, &value, sizeof(value)) =3D=3D sizeof(value)) ? 0 : -= 1; +} + +int eventfd_read(int fd, eventfd_t *value) +{ + return (read(fd, value, sizeof(*value)) =3D=3D sizeof(*value)) ? 0 : -= 1; +} +#endif + +#ifdef MFD_ALLOW_SEALING +#include + +#ifndef F_LINUX_SPECIFIC_BASE +#define F_LINUX_SPECIFIC_BASE 1024 +#endif + +#ifndef F_ADD_SEALS +#define F_ADD_SEALS (F_LINUX_SPECIFIC_BASE + 9) +#define F_GET_SEALS (F_LINUX_SPECIFIC_BASE + 10) + +#define F_SEAL_SEAL 0x0001 /* prevent further seals from being set */ +#define F_SEAL_SHRINK 0x0002 /* prevent file from shrinking */ +#define F_SEAL_GROW 0x0004 /* prevent file from growing */ +#define F_SEAL_WRITE 0x0008 /* prevent writes */ +#endif +#endif + +#ifndef MAP_NORESERVE +#define MAP_NORESERVE 0 +#endif + #include "include/atomic.h" =20 #include "libvhost-user.h" --=20 2.44.0 From nobody Fri May 17 08:25:10 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1712233566; cv=none; d=zohomail.com; s=zohoarc; b=grgvklrC19VN42W7N54+Z7/3FrjNjBKDVbuw23lnXOHdgamrvAUiCCkrwReq0OY5lpTi+D0DgW692x3oE8qeSc+tBnOSPA3gyazaqr9iZuG+uX2iqnGjHJd9X0/9Bv2XIi6PpuQhKZ0rhAMLwSEa4jZG9vPyHAGU+Bh3s17FNVo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712233566; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hUBleTHPhrTzw3WOX5ng8C0tTB6CO+fZECbVOwKbaZ0=; b=gTG+ZNVmu5LsOCj/y7rGlOsSnyduI1rJK4uJOOR1+8ShkRT8gNz5Fu2WoZYBW4Moe3ynl+vZ/rKFDkUzgs7PswNw8gFUx0joqm1N4/zZdeni1tVGmaOiMkaahfzmtx2KshEEyupH3LtR7tQYCCXxnipgT233v8ypIhnMNCcl3hw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1712233566733844.1490504869146; Thu, 4 Apr 2024 05:26:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rsM8r-0000xq-PY; Thu, 04 Apr 2024 08:24:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsM8q-0000wF-4K for qemu-devel@nongnu.org; Thu, 04 Apr 2024 08:24:28 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsM8j-00012s-HE for qemu-devel@nongnu.org; Thu, 04 Apr 2024 08:24:27 -0400 Received: from mail-ej1-f72.google.com (mail-ej1-f72.google.com [209.85.218.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-606--OpYbxlDPlGi4ytiV0y3_g-1; Thu, 04 Apr 2024 08:24:18 -0400 Received: by mail-ej1-f72.google.com with SMTP id a640c23a62f3a-a4e9636661eso63908266b.1 for ; Thu, 04 Apr 2024 05:24:18 -0700 (PDT) Received: from localhost.localdomain (host-87-12-25-33.business.telecomitalia.it. [87.12.25.33]) by smtp.gmail.com with ESMTPSA id ae12-20020a17090725cc00b00a4e238e46edsm8863356ejc.223.2024.04.04.05.24.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Apr 2024 05:24:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1712233461; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=hUBleTHPhrTzw3WOX5ng8C0tTB6CO+fZECbVOwKbaZ0=; b=DCbSSUC7Ntd1BMovhq9K1/iatDZjOYOc9lHtQfBz/0sJyyLkYpYLVjfNqvJQ6KZBajob1r 4oRcqobDVj2n2NAQP30efwNsjSe9BJSEqU/irGYSM+i9NjbYlDE3+5J9wXmnyMrqrZ6Ow2 YG+xrSUTZrlOArXqHXQ9x66DUzZ4Hk4= X-MC-Unique: -OpYbxlDPlGi4ytiV0y3_g-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712233457; x=1712838257; 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=hUBleTHPhrTzw3WOX5ng8C0tTB6CO+fZECbVOwKbaZ0=; b=wYVL99VlpIy7OyVqfraCGH6cYAafyLMXSlumaAUkM/U6y6R6yTsgfk6CqttuqUKoai TZhCQfTX/8b6qFU7GxMLLWJEMMeQw38o2NeEGUer5/ttjDz+Vkj3DqfMRFBaOHGxsJf0 otgYjb5gg8RxXwxdJEH9wxfvRQ9yg2F2vbbw09aSQ2Njzm09l4FULsZiXnEGdOuQoHq7 7GFAGCM2V6CH4ULh21euAyXynCntGQMdKUZMGnIFUhyvT0cLnb100axBjW4F3IN7ZBha /uItFIUzdeuShqetazA82dwGnTFWzzwmEW008rVr8lK04XOX3Ygg7jeDOWv8lwU6F2tU nyJw== X-Gm-Message-State: AOJu0YwO4ZM+4XeIEKsSsCo/7PZZ8ppOscEN/UGbAh7FaNFgQeFyLZ2K ZocF5kES9I2M4WzF7DMQ+N7lwa/7olXEjpQkereh9DBYKHEo4FSi+m+No5M1uto8FpGM2SKYAEs AcGQkebutc5iCvAZ1HZ7LO2KcYWu/hUJk4oXIFkehpLrPzW4nIfX7+TJkYS9P4dijubHGKl3fgg L46PV+pdyn2Mn5aXg+1eAGv8m1MsMQNd1Wflbc X-Received: by 2002:a17:907:972a:b0:a4e:8ac4:3c3a with SMTP id jg42-20020a170907972a00b00a4e8ac43c3amr1703201ejc.48.1712233457236; Thu, 04 Apr 2024 05:24:17 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGadvVDD/2KErjg6Wk90wALemTQ238F10UzxVetTsl3Onf2Z32+9RxoXuEzzx+cpJI0vRNYhw== X-Received: by 2002:a17:907:972a:b0:a4e:8ac4:3c3a with SMTP id jg42-20020a170907972a00b00a4e8ac43c3amr1703165ejc.48.1712233456835; Thu, 04 Apr 2024 05:24:16 -0700 (PDT) From: Stefano Garzarella To: qemu-devel@nongnu.org Cc: Coiby Xu , "Michael S. Tsirkin" , qemu-block@nongnu.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , slp@redhat.com, Eduardo Habkost , Kevin Wolf , Hanna Reitz , Igor Mammedov , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Thomas Huth , Raphael Norwitz , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Brad Smith , stefanha@redhat.com, Eric Blake , Paolo Bonzini , Laurent Vivier , David Hildenbrand , Markus Armbruster , gmaglione@redhat.com, Jason Wang , Stefano Garzarella Subject: [PATCH for-9.1 v3 08/11] contrib/vhost-user-blk: enable it on any POSIX system Date: Thu, 4 Apr 2024 14:23:27 +0200 Message-ID: <20240404122330.92710-9-sgarzare@redhat.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240404122330.92710-1-sgarzare@redhat.com> References: <20240404122330.92710-1-sgarzare@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=sgarzare@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1712233568834100001 Content-Type: text/plain; charset="utf-8" Let's make the code more portable by using the "qemu/bswap.h" API and adding defines from block/file-posix.c to support O_DIRECT in other systems (e.g. macOS). vhost-user-server.c is a dependency, let's enable it for any POSIX system. Signed-off-by: Stefano Garzarella --- meson.build | 2 -- contrib/vhost-user-blk/vhost-user-blk.c | 19 +++++++++++++++++-- util/meson.build | 4 +++- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/meson.build b/meson.build index 3197a2f62e..b541e5c875 100644 --- a/meson.build +++ b/meson.build @@ -1956,8 +1956,6 @@ has_statx =3D cc.has_header_symbol('sys/stat.h', 'STA= TX_BASIC_STATS', prefix: gnu_ has_statx_mnt_id =3D cc.has_header_symbol('sys/stat.h', 'STATX_MNT_ID', pr= efix: gnu_source_prefix) =20 have_vhost_user_blk_server =3D get_option('vhost_user_blk_server') \ - .require(host_os =3D=3D 'linux', - error_message: 'vhost_user_blk_server requires linux') \ .require(have_vhost_user, error_message: 'vhost_user_blk_server requires vhost-user suppo= rt') \ .disable_auto_if(not have_tools and not have_system) \ diff --git a/contrib/vhost-user-blk/vhost-user-blk.c b/contrib/vhost-user-b= lk/vhost-user-blk.c index a8ab9269a2..462e584857 100644 --- a/contrib/vhost-user-blk/vhost-user-blk.c +++ b/contrib/vhost-user-blk/vhost-user-blk.c @@ -16,6 +16,7 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/bswap.h" #include "standard-headers/linux/virtio_blk.h" #include "libvhost-user-glib.h" =20 @@ -24,6 +25,20 @@ #include #endif =20 +/* OS X does not have O_DSYNC */ +#ifndef O_DSYNC +#ifdef O_SYNC +#define O_DSYNC O_SYNC +#elif defined(O_FSYNC) +#define O_DSYNC O_FSYNC +#endif +#endif + +/* Approximate O_DIRECT with O_DSYNC if O_DIRECT isn't available */ +#ifndef O_DIRECT +#define O_DIRECT O_DSYNC +#endif + enum { VHOST_USER_BLK_MAX_QUEUES =3D 8, }; @@ -267,13 +282,13 @@ static int vub_virtio_process_req(VubDev *vdev_blk, req->in =3D (struct virtio_blk_inhdr *)elem->in_sg[in_num - 1].iov_bas= e; in_num--; =20 - type =3D le32toh(req->out->type); + type =3D le32_to_cpu(req->out->type); switch (type & ~VIRTIO_BLK_T_BARRIER) { case VIRTIO_BLK_T_IN: case VIRTIO_BLK_T_OUT: { ssize_t ret =3D 0; bool is_write =3D type & VIRTIO_BLK_T_OUT; - req->sector_num =3D le64toh(req->out->sector); + req->sector_num =3D le64_to_cpu(req->out->sector); if (is_write) { ret =3D vub_writev(req, &elem->out_sg[1], out_num); } else { diff --git a/util/meson.build b/util/meson.build index 0ef9886be0..f52682ce96 100644 --- a/util/meson.build +++ b/util/meson.build @@ -113,10 +113,12 @@ if have_block util_ss.add(files('filemonitor-stub.c')) endif if host_os =3D=3D 'linux' - util_ss.add(files('vhost-user-server.c'), vhost_user) util_ss.add(files('vfio-helpers.c')) util_ss.add(files('chardev_open.c')) endif + if host_os !=3D 'windows' + util_ss.add(files('vhost-user-server.c'), vhost_user) + endif endif =20 if cpu =3D=3D 'aarch64' --=20 2.44.0 From nobody Fri May 17 08:25:10 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1712233603; cv=none; d=zohomail.com; s=zohoarc; b=nRc0fEaA+qwkdd83ZlIoErzfk/IZ+Ax8OY1zA5a9xXtCrps6FzwmmfJxrIAHEsemLhJ7tkrPVW1Uojhx8pa3EhUBW919l+UVdJXbI0zi3FVX4ZPdymNt5Cf07ojNK8IkhK1RNsFBBMgQ55xWVUGoJqkbfHv4Fq9kZoG5osHgws8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712233603; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=a31EVxox+uEf/JvzH//LShQvlLk4Tanal3CfBj7bgpw=; b=Lf9b0530WkY2gLBJoGfZ68WEqUrpYsePyT8BeDahYZ5ee6J9YS4v+e5L4qdYa/t2Av3JHR0MMyGk2fIpA6n6ttz9LwUdUamVEDTs5a9ID/KDZcXR/0/37xMWDyQESTNwpFRKyrA+FhE5eHxL+Hcn3T2qWQZQqG2btqZzR92tElo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1712233603251806.9735454127043; Thu, 4 Apr 2024 05:26:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rsM8s-0000yB-B8; Thu, 04 Apr 2024 08:24:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsM8q-0000wc-O3 for qemu-devel@nongnu.org; Thu, 04 Apr 2024 08:24:28 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsM8n-00014T-Qv for qemu-devel@nongnu.org; Thu, 04 Apr 2024 08:24:28 -0400 Received: from mail-ej1-f72.google.com (mail-ej1-f72.google.com [209.85.218.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-634-qrBQwBT9MCCCttF5nWOxrA-1; Thu, 04 Apr 2024 08:24:23 -0400 Received: by mail-ej1-f72.google.com with SMTP id a640c23a62f3a-a4e9636661eso63913366b.1 for ; Thu, 04 Apr 2024 05:24:23 -0700 (PDT) Received: from localhost.localdomain (host-87-12-25-33.business.telecomitalia.it. [87.12.25.33]) by smtp.gmail.com with ESMTPSA id qf4-20020a1709077f0400b00a5195edf8e8sm174517ejc.62.2024.04.04.05.24.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Apr 2024 05:24:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1712233465; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=a31EVxox+uEf/JvzH//LShQvlLk4Tanal3CfBj7bgpw=; b=R8I3un0wTct1U6ES223AO7B0L4cZ1yx2kk+5X+8flT+d1cid45KADNHSAwsVPzyxql5FP0 oWa30fJ+HCjdkwNz1nFM63bAkLH/gqOkG1gKadLCoujGvxKsxOWRfTdv96h6/UIGDSlYby HyvTAgvpBYMzdBbkRfpgaMDavg4TG6o= X-MC-Unique: qrBQwBT9MCCCttF5nWOxrA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712233462; x=1712838262; 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=a31EVxox+uEf/JvzH//LShQvlLk4Tanal3CfBj7bgpw=; b=rU7MCfwAb89Z7KYI86aN38HHVxeoWxb6A8fDpI9me7KTLBIq2MX4/4hVxsesRcNGZm SdUFvBOiLVOCxEybAYNqNQRP57NpG1mHZmuFJW8F0UC5OUHJUetQQaC/b8+yIWS3yoLL Brj8ISa9swYXQ7RtD6m8DQoaQj8jacNEAC+MroAKWtOltGViG7lDKMMsFjN88Y8l8aIe o4BIa+j92M8Vn2taZXq5N1eAs8MlVrq0VAGUGha1yhkqRpfZjGbp9b3rfZl1c6mp397i G+DjbXa1MYUjixIe0gUBVyfJxdQ+EOvgQHSOqlp7q0KvWhyvyDoJV9d6PRgZSTPTp5mN 2MDg== X-Gm-Message-State: AOJu0YzyWF525nuwxKCwXBYkFGllUWNP1k8Y0Xk6VR8+vug6qBQVI/FN luRFhU4PH5ypMiWZsH2M3T91w9vnAD9Pwl8E9kngo833Hfukmov2XaYhle9F3K457W5+f59ZjwI kP105PC4bGpkp9gcMdly6Ax2QyszDQ7awCikt/GXYeMtFyi/gyUoSz9UzYtuuwMqKgNmTa9zc8p Da/nD714MMSuk2PognqO/thqMb+W008y/D1Xqm X-Received: by 2002:a17:906:1956:b0:a4a:aa3b:8002 with SMTP id b22-20020a170906195600b00a4aaa3b8002mr1485742eje.15.1712233461710; Thu, 04 Apr 2024 05:24:21 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF5yuDCHj61XKP+6xN1UroYtqXFtcA32EQMQT2scH8qJyhRE3qsgdCdlgWysAROmnSaHUiVtQ== X-Received: by 2002:a17:906:1956:b0:a4a:aa3b:8002 with SMTP id b22-20020a170906195600b00a4aaa3b8002mr1485704eje.15.1712233461311; Thu, 04 Apr 2024 05:24:21 -0700 (PDT) From: Stefano Garzarella To: qemu-devel@nongnu.org Cc: Coiby Xu , "Michael S. Tsirkin" , qemu-block@nongnu.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , slp@redhat.com, Eduardo Habkost , Kevin Wolf , Hanna Reitz , Igor Mammedov , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Thomas Huth , Raphael Norwitz , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Brad Smith , stefanha@redhat.com, Eric Blake , Paolo Bonzini , Laurent Vivier , David Hildenbrand , Markus Armbruster , gmaglione@redhat.com, Jason Wang , Stefano Garzarella Subject: [PATCH for-9.1 v3 09/11] hostmem: add a new memory backend based on POSIX shm_open() Date: Thu, 4 Apr 2024 14:23:28 +0200 Message-ID: <20240404122330.92710-10-sgarzare@redhat.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240404122330.92710-1-sgarzare@redhat.com> References: <20240404122330.92710-1-sgarzare@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=sgarzare@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1712233605087100004 Content-Type: text/plain; charset="utf-8" shm_open() creates and opens a new POSIX shared memory object. A POSIX shared memory object allows creating memory backend with an associated file descriptor that can be shared with external processes (e.g. vhost-user). The new `memory-backend-shm` can be used as an alternative when `memory-backend-memfd` is not available (Linux only), since shm_open() should be provided by any POSIX-compliant operating system. This backend mimics memfd, allocating memory that is practically anonymous. In theory shm_open() requires a name, but this is allocated for a short time interval and shm_unlink() is called right after shm_open(). After that, only fd is shared with external processes (e.g., vhost-user) as if it were associated with anonymous memory. In the future we may also allow the user to specify the name to be passed to shm_open(), but for now we keep the backend simple, mimicking anonymous memory such as memfd. Signed-off-by: Stefano Garzarella Acked-by: David Hildenbrand --- v3 - enriched commit message and documentation to highlight that we want to mimic memfd (David) --- docs/system/devices/vhost-user.rst | 5 +- qapi/qom.json | 17 +++++ backends/hostmem-shm.c | 118 +++++++++++++++++++++++++++++ backends/meson.build | 1 + qemu-options.hx | 11 +++ 5 files changed, 150 insertions(+), 2 deletions(-) create mode 100644 backends/hostmem-shm.c diff --git a/docs/system/devices/vhost-user.rst b/docs/system/devices/vhost= -user.rst index 9b2da106ce..35259d8ec7 100644 --- a/docs/system/devices/vhost-user.rst +++ b/docs/system/devices/vhost-user.rst @@ -98,8 +98,9 @@ Shared memory object =20 In order for the daemon to access the VirtIO queues to process the requests it needs access to the guest's address space. This is -achieved via the ``memory-backend-file`` or ``memory-backend-memfd`` -objects. A reference to a file-descriptor which can access this object +achieved via the ``memory-backend-file``, ``memory-backend-memfd``, or +``memory-backend-shm`` objects. +A reference to a file-descriptor which can access this object will be passed via the socket as part of the protocol negotiation. =20 Currently the shared memory object needs to match the size of the main diff --git a/qapi/qom.json b/qapi/qom.json index 85e6b4f84a..5252ec69e3 100644 --- a/qapi/qom.json +++ b/qapi/qom.json @@ -721,6 +721,19 @@ '*hugetlbsize': 'size', '*seal': 'bool' } } =20 +## +# @MemoryBackendShmProperties: +# +# Properties for memory-backend-shm objects. +# +# The @share boolean option is true by default with shm. +# +# Since: 9.1 +## +{ 'struct': 'MemoryBackendShmProperties', + 'base': 'MemoryBackendProperties', + 'data': { } } + ## # @MemoryBackendEpcProperties: # @@ -976,6 +989,8 @@ { 'name': 'memory-backend-memfd', 'if': 'CONFIG_LINUX' }, 'memory-backend-ram', + { 'name': 'memory-backend-shm', + 'if': 'CONFIG_POSIX' }, 'pef-guest', { 'name': 'pr-manager-helper', 'if': 'CONFIG_LINUX' }, @@ -1047,6 +1062,8 @@ 'memory-backend-memfd': { 'type': 'MemoryBackendMemfdPropertie= s', 'if': 'CONFIG_LINUX' }, 'memory-backend-ram': 'MemoryBackendProperties', + 'memory-backend-shm': { 'type': 'MemoryBackendShmProperties', + 'if': 'CONFIG_POSIX' }, 'pr-manager-helper': { 'type': 'PrManagerHelperProperties', 'if': 'CONFIG_LINUX' }, 'qtest': 'QtestProperties', diff --git a/backends/hostmem-shm.c b/backends/hostmem-shm.c new file mode 100644 index 0000000000..7595204d29 --- /dev/null +++ b/backends/hostmem-shm.c @@ -0,0 +1,118 @@ +/* + * QEMU host POSIX shared memory object backend + * + * Copyright (C) 2024 Red Hat Inc + * + * Authors: + * Stefano Garzarella + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + */ + +#include "qemu/osdep.h" +#include "sysemu/hostmem.h" +#include "qapi/error.h" + +#define TYPE_MEMORY_BACKEND_SHM "memory-backend-shm" + +OBJECT_DECLARE_SIMPLE_TYPE(HostMemoryBackendShm, MEMORY_BACKEND_SHM) + +struct HostMemoryBackendShm { + HostMemoryBackend parent_obj; +}; + +static bool +shm_backend_memory_alloc(HostMemoryBackend *backend, Error **errp) +{ + g_autoptr(GString) shm_name =3D g_string_new(NULL); + g_autofree char *backend_name =3D NULL; + uint32_t ram_flags; + int fd, oflag; + mode_t mode; + + if (!backend->size) { + error_setg(errp, "can't create backend with size 0"); + return false; + } + + /* + * Let's use `mode =3D 0` because we don't want other processes to ope= n our + * memory unless we share the file descriptor with them. + */ + mode =3D 0; + oflag =3D O_RDWR | O_CREAT | O_EXCL; + backend_name =3D host_memory_backend_get_name(backend); + + /* + * Some operating systems allow creating anonymous POSIX shared memory + * objects (e.g. FreeBSD provides the SHM_ANON constant), but this is = not + * defined by POSIX, so let's create a unique name. + * + * From Linux's shm_open(3) man-page: + * For portable use, a shared memory object should be identified + * by a name of the form /somename;" + */ + g_string_printf(shm_name, "/qemu-" FMT_pid "-shm-%s", getpid(), + backend_name); + + fd =3D shm_open(shm_name->str, oflag, mode); + if (fd < 0) { + error_setg_errno(errp, errno, + "failed to create POSIX shared memory"); + return false; + } + + /* + * We have the file descriptor, so we no longer need to expose the + * POSIX shared memory object. However it will remain allocated as lon= g as + * there are file descriptors pointing to it. + */ + shm_unlink(shm_name->str); + + if (ftruncate(fd, backend->size) =3D=3D -1) { + error_setg_errno(errp, errno, + "failed to resize POSIX shared memory to %" PRIu6= 4, + backend->size); + close(fd); + return false; + } + + ram_flags =3D backend->share ? RAM_SHARED : 0; + ram_flags |=3D backend->reserve ? 0 : RAM_NORESERVE; + + return memory_region_init_ram_from_fd(&backend->mr, OBJECT(backend), + backend_name, backend->size, + ram_flags, fd, 0, errp); +} + +static void +shm_backend_instance_init(Object *obj) +{ + HostMemoryBackendShm *m =3D MEMORY_BACKEND_SHM(obj); + + MEMORY_BACKEND(m)->share =3D true; +} + +static void +shm_backend_class_init(ObjectClass *oc, void *data) +{ + HostMemoryBackendClass *bc =3D MEMORY_BACKEND_CLASS(oc); + + bc->alloc =3D shm_backend_memory_alloc; +} + +static const TypeInfo shm_backend_info =3D { + .name =3D TYPE_MEMORY_BACKEND_SHM, + .parent =3D TYPE_MEMORY_BACKEND, + .instance_init =3D shm_backend_instance_init, + .class_init =3D shm_backend_class_init, + .instance_size =3D sizeof(HostMemoryBackendShm), +}; + +static void register_types(void) +{ + type_register_static(&shm_backend_info); +} + +type_init(register_types); diff --git a/backends/meson.build b/backends/meson.build index 8b2b111497..3867b0d363 100644 --- a/backends/meson.build +++ b/backends/meson.build @@ -13,6 +13,7 @@ system_ss.add([files( if host_os !=3D 'windows' system_ss.add(files('rng-random.c')) system_ss.add(files('hostmem-file.c')) + system_ss.add([files('hostmem-shm.c'), rt]) endif if host_os =3D=3D 'linux' system_ss.add(files('hostmem-memfd.c')) diff --git a/qemu-options.hx b/qemu-options.hx index 7fd1713fa8..02783803aa 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -5230,6 +5230,17 @@ SRST =20 The ``share`` boolean option is on by default with memfd. =20 + ``-object memory-backend-shm,id=3Did,merge=3Don|off,dump=3Don|off,shar= e=3Don|off,prealloc=3Don|off,size=3Dsize,host-nodes=3Dhost-nodes,policy=3Dd= efault|preferred|bind|interleave`` + Creates a POSIX shared memory backend object, which allows + QEMU to share the memory with an external process (e.g. when + using vhost-user). This backend mimics memfd, allocating memory th= at is + practically anonymous. This is useful when memfd is not available. + + Please refer to ``memory-backend-file`` for a description of the + options. + + The ``share`` boolean option is on by default with shm. + ``-object iommufd,id=3Did[,fd=3Dfd]`` Creates an iommufd backend which allows control of DMA mapping through the ``/dev/iommu`` device. --=20 2.44.0 From nobody Fri May 17 08:25:10 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1712233594; cv=none; d=zohomail.com; s=zohoarc; b=algHKOhxm8JYg/TGd7s4SlpUetVa+aPzGGvjldPyzV5M9LYy87+h+ajmBc16cQRKZWSPQjkLNh25Rkl5XUpl2QoGZD77Nckqu5mBzryVeifQ10cZ7jxko998ciTDhjfP6yDJTeCY9IQK8LMg4U7Np5HUrq0wDduhcZXOOzROgrQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712233594; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=c2fIVWILzKzQaFbqxYLTu1zrjB/5hVEGYyQqHDi9HUo=; b=dZ4uQYO1z8BmkMLmuLA/uyKumqIeu58U44FC6Nhy3fEr+Wlgp7ekAAyUHToojPT/Sxhy2m+O9K2mtB9JDYGOUVqAiVgH6gB1I+HVachMNCbUzzvBeq52HLxdM31LcywNLvrL08khk4Km6icHHeEH/cJ7ZwyOtjhs5fgCd7FaT3Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17122335943191007.7738310621578; Thu, 4 Apr 2024 05:26:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rsM8v-0001Ay-6q; Thu, 04 Apr 2024 08:24:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsM8t-00011i-CE for qemu-devel@nongnu.org; Thu, 04 Apr 2024 08:24:31 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsM8r-00015D-Uv for qemu-devel@nongnu.org; Thu, 04 Apr 2024 08:24:31 -0400 Received: from mail-ej1-f70.google.com (mail-ej1-f70.google.com [209.85.218.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-112-yjjNMoecNDqa8qDdz6028g-1; Thu, 04 Apr 2024 08:24:28 -0400 Received: by mail-ej1-f70.google.com with SMTP id a640c23a62f3a-a4747f29e19so40095066b.1 for ; Thu, 04 Apr 2024 05:24:27 -0700 (PDT) Received: from localhost.localdomain (host-87-12-25-33.business.telecomitalia.it. [87.12.25.33]) by smtp.gmail.com with ESMTPSA id k3-20020a170906128300b00a4e2bf2f743sm8248392ejb.184.2024.04.04.05.24.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Apr 2024 05:24:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1712233469; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=c2fIVWILzKzQaFbqxYLTu1zrjB/5hVEGYyQqHDi9HUo=; b=Hs0epVWuxTrwPMpj0FYTDafgzuhO2RiDBKdhD6v+M1M4zzbWiOayvJQ+ch0TpATve7nQaR GVlaf4DorBAsSgd6skUlwxv9pPlqFIrLhcw0OEhwA+MyaGhNN7nANGPSHv98KR6oQfpEkH By39jpufb6D2jck3NWkNPkopuR9/QuE= X-MC-Unique: yjjNMoecNDqa8qDdz6028g-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712233466; x=1712838266; 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=c2fIVWILzKzQaFbqxYLTu1zrjB/5hVEGYyQqHDi9HUo=; b=dUZ9fvUMbV6pMq75jAS2AoIvB62wQfIsVtAL2T64yJREGTf9lTIVQAKdBKq3GhyqAm 8LBT//mBdRRed8SwgpPeNp69Fwv8KCBrP2BjoAo/UfRNomilnxxyn++wmtJtXetZ6dHF Guo9+N/738DoxAMRmUrH6yKDlVA7EvJor1euEzvb0t7pVe1hhKxP3XLw2LBUZZq02COb MeEBNlv2Vl0hs4SI0BN/RnpePA8kyEnPMeoKjHoIL9wPTFvxvvHwvippH/uMuqOAJcbm VTlzqAi8PkNSfpLoYgmyRxZaK4qsUfIuBet9M26f/rbQuftqSy2wyUE0XX4fDwT8pUpN H2Cg== X-Gm-Message-State: AOJu0Yx79+4P3bLAxxks0ayCkMAi43JHDvi3JHPRTfQhDNfgvCape7w4 ShNDTjqY9ew8ufMonEcrPl4lEJIUm/U2z4Vtz2jQd4IgXobtJWJ4zqrNAeuKklbghVjtjTBbgVN pguTGtIhtHEMorqWvpp0Mi34sG1W8Clnt4rCg7+gOyBUD84YDE57uCYc7JQecw7Oom02WJXmZ/G TTRBxT4d4dQXX8nevwJuZck70JeDmnJuduf3wu X-Received: by 2002:a17:906:ad88:b0:a46:be3d:1ed8 with SMTP id la8-20020a170906ad8800b00a46be3d1ed8mr1548527ejb.54.1712233466521; Thu, 04 Apr 2024 05:24:26 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFPDbYYtYutONj3xlYGfi4w0M5oZBHPpxKBz3NDyMUpKM7tjlT2megPDbztsFyxHOS2hezpsQ== X-Received: by 2002:a17:906:ad88:b0:a46:be3d:1ed8 with SMTP id la8-20020a170906ad8800b00a46be3d1ed8mr1548491ejb.54.1712233466202; Thu, 04 Apr 2024 05:24:26 -0700 (PDT) From: Stefano Garzarella To: qemu-devel@nongnu.org Cc: Coiby Xu , "Michael S. Tsirkin" , qemu-block@nongnu.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , slp@redhat.com, Eduardo Habkost , Kevin Wolf , Hanna Reitz , Igor Mammedov , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Thomas Huth , Raphael Norwitz , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Brad Smith , stefanha@redhat.com, Eric Blake , Paolo Bonzini , Laurent Vivier , David Hildenbrand , Markus Armbruster , gmaglione@redhat.com, Jason Wang , Stefano Garzarella Subject: [PATCH for-9.1 v3 10/11] tests/qtest/vhost-user-blk-test: use memory-backend-shm Date: Thu, 4 Apr 2024 14:23:29 +0200 Message-ID: <20240404122330.92710-11-sgarzare@redhat.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240404122330.92710-1-sgarzare@redhat.com> References: <20240404122330.92710-1-sgarzare@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=sgarzare@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1712233594924100001 Content-Type: text/plain; charset="utf-8" `memory-backend-memfd` is available only on Linux while the new `memory-backend-shm` can be used on any POSIX-compliant operating system. Let's use it so we can run the test in multiple environments. Signed-off-by: Stefano Garzarella --- tests/qtest/vhost-user-blk-test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/qtest/vhost-user-blk-test.c b/tests/qtest/vhost-user-blk= -test.c index 117b9acd10..e945f6abf2 100644 --- a/tests/qtest/vhost-user-blk-test.c +++ b/tests/qtest/vhost-user-blk-test.c @@ -906,7 +906,7 @@ static void start_vhost_user_blk(GString *cmd_line, int= vus_instances, vhost_user_blk_bin); =20 g_string_append_printf(cmd_line, - " -object memory-backend-memfd,id=3Dmem,size=3D256M,share=3Don= " + " -object memory-backend-shm,id=3Dmem,size=3D256M,share=3Don " " -M memory-backend=3Dmem -m 256M "); =20 for (i =3D 0; i < vus_instances; i++) { --=20 2.44.0 From nobody Fri May 17 08:25:10 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1712233562; cv=none; d=zohomail.com; s=zohoarc; b=A2kuoAlEvnE8eZa7cFMMJAsO4ADEeqtFLYL44ucnb2hQxd2hKGeLsKUDKppm+kkS9cArXkDBmuQpDsl6ETR0iN/U6yXBDC6Bi/yQz/o6rzn13fDS27XVrPEIJB29jajhyDu+xrVfJAaTw/YGmnNAnCZ/hzmzIzRZ2cn671quxT4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712233562; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=R1WyM23yZC7OHPkKjODH8U9UyVky6gI6o4OQy8pzYy0=; b=nwzBL8XIi2kaZ0gqAxl68vleRV/tZk7uE0ZTj4dxTrxKQK/f5H80QbnYAP5Eur6oJsQdVSZ9bbuqOLfZcJFmsA3t5R3O8r40uJKPTwkTXDKtBy5ngCJhHYFdPqfQewWsOOSWqhBJ0TeLEMbOVB8feWgu6YXHBQWxSegb0wG+QAw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1712233562688826.7419630588732; Thu, 4 Apr 2024 05:26:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rsM8z-0001Gf-VD; Thu, 04 Apr 2024 08:24:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsM8y-0001Fg-3y for qemu-devel@nongnu.org; Thu, 04 Apr 2024 08:24:36 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsM8w-00015w-F2 for qemu-devel@nongnu.org; Thu, 04 Apr 2024 08:24:35 -0400 Received: from mail-ej1-f72.google.com (mail-ej1-f72.google.com [209.85.218.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-530-_qWBfNcHNg-TsLXoT53JpA-1; Thu, 04 Apr 2024 08:24:32 -0400 Received: by mail-ej1-f72.google.com with SMTP id a640c23a62f3a-a474ac232e9so58362566b.2 for ; Thu, 04 Apr 2024 05:24:32 -0700 (PDT) Received: from localhost.localdomain (host-87-12-25-33.business.telecomitalia.it. [87.12.25.33]) by smtp.gmail.com with ESMTPSA id 17-20020a170906309100b00a4710e7817esm8940046ejv.135.2024.04.04.05.24.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Apr 2024 05:24:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1712233473; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=R1WyM23yZC7OHPkKjODH8U9UyVky6gI6o4OQy8pzYy0=; b=iREpW8L0GFxSEQdJRF3Lisww0lntf/SvLhNwk2f2KefbAOm6LdONkKjaNVhYcyBgY+iQN0 OE4alz9ruHfsbT5Q2bMYMgnrEug+bF9pNS65WMmxq70iR+VB/zHSuKFqG1xEWXx0sRTGfH UMWyzdXqox2YJOU6PPirN0qlzgOj95g= X-MC-Unique: _qWBfNcHNg-TsLXoT53JpA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712233471; x=1712838271; 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=R1WyM23yZC7OHPkKjODH8U9UyVky6gI6o4OQy8pzYy0=; b=klwaBXHM4pgmA8vuJ4+6Sqcc/RhJCUP8VQqswS9/OJZzLDFMzQg0FS9SNWZS6ejGMv Fkuqz2YyPtlfm/pPWB4nKek5fagGg2/hD4Fxfyu9tAC5L7Hz2flqycxJyyWzINnUrMKY k94X2WxpQF0zGarhpBPIKPvRbU/ul3//8ZANW/IbplZBGSoe3zb6VLhiJ//7GJKtsb4Y 0LUcVUvBvISj5cURrllxFajlGMs4iziSlTFEPz/oCsNAznuCh6IEBVufvmz9oHgAfO+s G+eQ7rCX28x6msFY3LW58CFgIy5nNB7jaxW59ZeOV7IatBnFHf3McFEBQe1D7kjjrBM5 Py8w== X-Gm-Message-State: AOJu0YyI1C/7Up1XspBlKhkVLXioTblj5/sCdLbhcwycAmYPD7XcmNwK oJxmj8lzbNdgtmT0G8yPWJLHv1HoQqfHnv0lQeIolFjtskFQkxE6KgzKfEP5sjEH2YNT30QPP3E RcR+V8QfMXHTukuDPi8ZD4luP80QC4qP/4wPOb+3JrkE3Cdb0fq8EzILQ8epIqwE3X/xpnCSWYp x6mLOpcrFaVW3byJ0bnksmEKtCiBAvlxLwCRto X-Received: by 2002:a17:907:9850:b0:a4e:42f3:3c87 with SMTP id jj16-20020a170907985000b00a4e42f33c87mr1681997ejc.60.1712233471121; Thu, 04 Apr 2024 05:24:31 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGa8HqwHIVn74d+5TwQ5e6856Cb33d8mpM5HS9fZrWrlSJxx+U719JVBIlsdtx7HxGm0w+qMg== X-Received: by 2002:a17:907:9850:b0:a4e:42f3:3c87 with SMTP id jj16-20020a170907985000b00a4e42f33c87mr1681966ejc.60.1712233470790; Thu, 04 Apr 2024 05:24:30 -0700 (PDT) From: Stefano Garzarella To: qemu-devel@nongnu.org Cc: Coiby Xu , "Michael S. Tsirkin" , qemu-block@nongnu.org, =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , slp@redhat.com, Eduardo Habkost , Kevin Wolf , Hanna Reitz , Igor Mammedov , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Thomas Huth , Raphael Norwitz , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Brad Smith , stefanha@redhat.com, Eric Blake , Paolo Bonzini , Laurent Vivier , David Hildenbrand , Markus Armbruster , gmaglione@redhat.com, Jason Wang , Stefano Garzarella Subject: [PATCH for-9.1 v3 11/11] tests/qtest/vhost-user-test: add a test case for memory-backend-shm Date: Thu, 4 Apr 2024 14:23:30 +0200 Message-ID: <20240404122330.92710-12-sgarzare@redhat.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240404122330.92710-1-sgarzare@redhat.com> References: <20240404122330.92710-1-sgarzare@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=sgarzare@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1712233565003100001 Content-Type: text/plain; charset="utf-8" `memory-backend-shm` can be used with vhost-user devices, so let's add a new test case for it. Signed-off-by: Stefano Garzarella --- tests/qtest/vhost-user-test.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/tests/qtest/vhost-user-test.c b/tests/qtest/vhost-user-test.c index d4e437265f..8c1d903b2a 100644 --- a/tests/qtest/vhost-user-test.c +++ b/tests/qtest/vhost-user-test.c @@ -44,6 +44,8 @@ "mem-path=3D%s,share=3Don -numa node,memdev=3Dmem" #define QEMU_CMD_MEMFD " -m %d -object memory-backend-memfd,id=3Dmem,size= =3D%dM," \ " -numa node,memdev=3Dmem" +#define QEMU_CMD_SHM " -m %d -object memory-backend-shm,id=3Dmem,size= =3D%dM," \ + " -numa node,memdev=3Dmem" #define QEMU_CMD_CHR " -chardev socket,id=3D%s,path=3D%s%s" #define QEMU_CMD_NETDEV " -netdev vhost-user,id=3Dhs0,chardev=3D%s,vhostfo= rce=3Don" =20 @@ -195,6 +197,7 @@ enum test_memfd { TEST_MEMFD_AUTO, TEST_MEMFD_YES, TEST_MEMFD_NO, + TEST_MEMFD_SHM, }; =20 static void append_vhost_net_opts(TestServer *s, GString *cmd_line, @@ -228,6 +231,8 @@ static void append_mem_opts(TestServer *server, GString= *cmd_line, =20 if (memfd =3D=3D TEST_MEMFD_YES) { g_string_append_printf(cmd_line, QEMU_CMD_MEMFD, size, size); + } else if (memfd =3D=3D TEST_MEMFD_SHM) { + g_string_append_printf(cmd_line, QEMU_CMD_SHM, size, size); } else { const char *root =3D init_hugepagefs() ? : server->tmpfs; =20 @@ -788,6 +793,19 @@ static void *vhost_user_test_setup_memfd(GString *cmd_= line, void *arg) return server; } =20 +static void *vhost_user_test_setup_shm(GString *cmd_line, void *arg) +{ + TestServer *server =3D test_server_new("vhost-user-test", arg); + test_server_listen(server); + + append_mem_opts(server, cmd_line, 256, TEST_MEMFD_SHM); + server->vu_ops->append_opts(server, cmd_line, ""); + + g_test_queue_destroy(vhost_user_test_cleanup, server); + + return server; +} + static void test_read_guest_mem(void *obj, void *arg, QGuestAllocator *all= oc) { TestServer *server =3D arg; @@ -1081,6 +1099,11 @@ static void register_vhost_user_test(void) "virtio-net", test_read_guest_mem, &opts); =20 + opts.before =3D vhost_user_test_setup_shm; + qos_add_test("vhost-user/read-guest-mem/shm", + "virtio-net", + test_read_guest_mem, &opts); + if (qemu_memfd_check(MFD_ALLOW_SEALING)) { opts.before =3D vhost_user_test_setup_memfd; qos_add_test("vhost-user/read-guest-mem/memfd", --=20 2.44.0