From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231803; cv=none; d=zohomail.com; s=zohoarc; b=TtA7zZfBfyuFnm4KXGQVBD0Cdyx6/hDdgbKsvfAuP6ftnXBskrxLhuVnkCmlZgDpHunw2rAGhzDXR2aBe9o0KnVXTHVt1Q9u7NGWlmN9zM5A96dukBobsxkOwxbmNuYjWz8lxCnvqhoM8PpHbPMEw5+qfdFO7H3qpJD2S79wZjo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231803; 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=ILMiljXUtFMJS+bsdsifeLy8ObMECoCfyJN5Gi3hDOg=; b=i7QPVtOvgQ94vximFwkT/CFWVj1rjJAl2dkI3SvbkAjOixd4f8vrCFk43p0z+XGUcmfZosw2pIW6XaiIVEVIaJ3W0SiC93auEMVzrh0OrDIN6MeDZJU3tLjszP65KNZ5LlE6uaqTMWX8ORLa60C/DrX/Y1rLdb29IzvkCiCTKgM= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770231803327705.3582812166851; Wed, 4 Feb 2026 11:03:23 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vni9V-0005sB-PM; Wed, 04 Feb 2026 14:03:01 -0500 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 1vni9U-0005rX-TB for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:01 -0500 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 1vni9S-0007h1-Sz for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:00 -0500 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-647--vShM2N9OFuWzXqEDz1ibQ-1; Wed, 04 Feb 2026 14:02:55 -0500 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-430fcb6b2ebso150596f8f.2 for ; Wed, 04 Feb 2026 11:02:55 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43618057f66sm7896393f8f.25.2026.02.04.11.02.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:02:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231776; 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=ILMiljXUtFMJS+bsdsifeLy8ObMECoCfyJN5Gi3hDOg=; b=eOTDH9aVmQTbOnrnQepv8kprwQA0Sjd3ijMnUWC40WnbHr4c4td2HPBCqUc/OD/dOCiRCl vGzJ/ldBae4IX5vFv0SXrSzDvZMnP4cHxBvwP96hfJU9mEkdFxjkgr15R7gyZTN50jSNFp n7uLe3V5fzf9AAZamvh1+HuJ7crxfOA= X-MC-Unique: -vShM2N9OFuWzXqEDz1ibQ-1 X-Mimecast-MFC-AGG-ID: -vShM2N9OFuWzXqEDz1ibQ_1770231774 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231774; x=1770836574; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=ILMiljXUtFMJS+bsdsifeLy8ObMECoCfyJN5Gi3hDOg=; b=huv3qXx26tShqUNq1+20rGMYPYW2LHWaD30avL7ioLFJXnaOUp31FfZTOHpQW8s0/P sIF/w2iRtxwGfXAnCVjU6u7xz4H+1LWS9lLZWqID9+5dSXfdINzv9tWRwWVEaveV046p 23vFplPjwYSQyEh9u04PAcXNxEpcJljkXMwPOdGyP34Unhjg0iNSbBYbR6nHrUSVFJwN A1NqAg6AZMAPlWisObryI0O75gwKd0s+jkxrriHUv3lev8qbpH9jMAy+oZEfOODbwBw7 HPJHwWPItOiRxeX925mWgMWrkBb4NUAW7NTQ8WytZ4qib2bwO8TShUikLm5lSUSEcgOW L67Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231774; x=1770836574; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ILMiljXUtFMJS+bsdsifeLy8ObMECoCfyJN5Gi3hDOg=; b=nBszinFJlRN/Ml9xE4VYi9WJbZhavkxZ9GDKobLRv0y9QHzngExH5RUxXQkxU+G+0b Yy1Q4jW3fhg8HbhYSb5zJ4dKaE4G9PUZW7VyXoZ4oMMtMPygfZPRfjkQaMnCOeWHYwka h7lLWsBYXcGO1K/E2PbXWKhVw33oMh/17MGJgJDhQmr9t9AnIl+BDuS+16k5b8G3tMU7 da8Rsw80ygHnFIWOdn33el5ERK323vMDQuclTtd4skt1Pk+Kq2ZM+lXUPtOcIsP2D/Ob k9HosBPXpijjKwk+5EIrwFTFld8Q4kNGjmoVby2S7GSu79r++h546ilWtpBcYEHYr9hr a93g== X-Gm-Message-State: AOJu0Yz3C5xZOgTzkDaLI5tCvJAWNcTEueqnpHYAJytbj9gx8RTLPQgU rZv7ikYPq8tXax5mjgVehTluIZ5ZJHaOQktNBYzVuwEYRl24506oHMOdnfKhHY4I77fzTS4Ri2u cYOeVwNPDYz1lZcbwnIDhuxRofhv8VVIExC2KGmEUY9Mxr0uRzDSSevQZcw3pe+dLGgStUXJC4S 6fNAb8w5PkOGLU0LbC3vM94UmNji46X0zQGQ== X-Gm-Gg: AZuq6aKT0KXutiKexsMNqs5OpPT5wD/E6wvK+qKULkiaDeife7yZHG3HS+/mXSTqs+o DG0kAV+YpDo6DWD3fNKk5oB8Z3XuDO8Sj7rHE+pfGutKdrE7sviszZoF8cN+yejAjPv+C7vAiH/ OdNlt9yMRvS/EDfdXrMrb5NQdLxJ2PtiBByu3hQrNPXC6OnieZx7uclw+Da8CzdUOsLtc6XZ0wO khfHhCGjKUOIzDLOqZXfcM2hDo4RHL5/a1k3pY+TsiyiX3LSmyIFlHDXQRbVNplYfdb+NVxFPTS 2traZz0lonGI5iQNCdPTCyk0yH4c2rGFptuiUYL8SWw0+QqoCerzeXGxwOSwH92Cd418wzuBuvT OJQgVqWPCjwMo2hpBWFgNyNm8grn4gC9PdQ== X-Received: by 2002:a05:600c:8b88:b0:47e:e20e:bb9c with SMTP id 5b1f17b1804b1-4830e93ebd2mr56399265e9.8.1770231773839; Wed, 04 Feb 2026 11:02:53 -0800 (PST) X-Received: by 2002:a05:600c:8b88:b0:47e:e20e:bb9c with SMTP id 5b1f17b1804b1-4830e93ebd2mr56398925e9.8.1770231773356; Wed, 04 Feb 2026 11:02:53 -0800 (PST) Date: Wed, 4 Feb 2026 14:02:51 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Gustavo Romero , Stefano Garzarella , Pierrick Bouvier Subject: [PULL 01/51] vhost-user: ancilliary -> ancillary Message-ID: <196ac2544107121f64eeae5dccd2e72e72d55ab5.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231804956158500 My dictionary says the former spelling is incorrect. Message-ID: <52339e58-4366-4b7c-872f-b28e05370a5d@linaro.org> Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Gustavo Romero Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- docs/interop/vhost-user.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/interop/vhost-user.rst b/docs/interop/vhost-user.rst index 93a9c8df2b..93f756d3f4 100644 --- a/docs/interop/vhost-user.rst +++ b/docs/interop/vhost-user.rst @@ -411,8 +411,8 @@ in the ancillary data: * ``VHOST_USER_SET_INFLIGHT_FD`` (if ``VHOST_USER_PROTOCOL_F_INFLIGHT_SHMF= D``) * ``VHOST_USER_SET_DEVICE_STATE_FD`` =20 -When sending file descriptors in ancilliary data, *front-end* should -associate the ancilliary data with a ``sendmsg`` operation (or +When sending file descriptors in ancillary data, *front-end* should +associate the ancillary data with a ``sendmsg`` operation (or equivalent) that sends bytes starting with the first byte of the message header. *back-end* can therefore expect that file descriptors will only be received in the first ``recvmsg`` operation for a message --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231848; cv=none; d=zohomail.com; s=zohoarc; b=lePkAIInAkJqjEZGJOCvUpMLBd1dOI1yuJiIbq6lELOROgBgoxTxPiWzx2VjWYmoKUbKWEYEAXFaFZsX42B/v3bcxeeFD0hiMzsWF+2VdnBgNuptWA+nWdSHmkCJaluhZWjMhChovLuz64ClvPVbdkLJKZhAaLMTema0xtcy6Ps= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231848; h=Content-Type: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=bD1aJbj8IneCRsibSK1oGwMvkujFVHWrwVolf2Dfjgw=; b=j4530WAT9R1/HWC13dpMuFsh8VVBchJLJi6l+2TA2tPz9Opo2FtRRVPWz6jKLx7GXFatr4L0t4aOvG7XwfbVY59DHulF9tUr0kYDDQe7QiZnDKKTWAblvkDJO4HVPAbZAHYL6Bk094pHzCnuh4NcGyb62OQO84ds8mpBwYrqBr4= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770231848359291.5587636587737; Wed, 4 Feb 2026 11:04:08 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vni9W-0005t6-Q5; Wed, 04 Feb 2026 14:03:02 -0500 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 1vni9V-0005rt-Bv for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:01 -0500 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 1vni9T-0007hO-Ny for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:01 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-438-dz7j871rOwi7GmGgSo94jA-1; Wed, 04 Feb 2026 14:02:57 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4806fce5ab1so749235e9.2 for ; Wed, 04 Feb 2026 11:02:57 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43617e37e78sm9012143f8f.10.2026.02.04.11.02.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:02:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231778; 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: in-reply-to:in-reply-to:references:references; bh=bD1aJbj8IneCRsibSK1oGwMvkujFVHWrwVolf2Dfjgw=; b=gIr2G98e/Js1/YTNz3YhwzxsIrD4Bh5LQPH2tZgpw3Dy6g05OjRu5HP++O6ooSL09paLW5 a7u775ghJUsnNz3bGoo/OCfAuUKMw0h8t9dXxvlMfpBqrjAugfoOJTgugO/nP6dsvjJfBm 2eAMjyAe5qW8jfGEAhTgNgVAHTmxVvQ= X-MC-Unique: dz7j871rOwi7GmGgSo94jA-1 X-Mimecast-MFC-AGG-ID: dz7j871rOwi7GmGgSo94jA_1770231776 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231776; x=1770836576; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=bD1aJbj8IneCRsibSK1oGwMvkujFVHWrwVolf2Dfjgw=; b=LGe5jqzv1a/TZsVSw6NFt+fz+h7xBVK4tqZgFLGQ0nJyuqtjwQyNwjeXSxzfD+4P76 sGTNhKf95b55x1lDDt4fz908w3ew6l341X2yOKMaw/U/RKoaXCIl3o9gu+V7ttauZW8D rbYivorDa7GxL5dkhvqSyEHEoHk1UVp8MtU94m/zJpKPJXuHQTKzKLuK0v6IHGpaVRou B2Ne4T/UgGZjn5BbhYPEHAJ4TNC7hfOvQG0XPu41Y49/Y+9gzZIXlfbv1Mk8xRb8uQM5 LHcVH5tyi/U4pqRgi7tcrvDsScMADaVHHbYtGcamznKQS6jBjZD4Z+y8PCApiY/Sp0y9 B6qQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231776; x=1770836576; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bD1aJbj8IneCRsibSK1oGwMvkujFVHWrwVolf2Dfjgw=; b=RHPv4l7bBi6JIEDdZLddJTSVXnyniozBRg5LRPcqsZoq5ChocMq5WTT3Psj0Kns1at 0p1Xxfl1MBKrY6vsChHjT9ruFYq72u7F6ESTq2022yyR49kswgHPpYC17wl9zoA4u4++ WxbdbpmmbAfFLab/jjFPYdHTAs4w5yQGjbkAR9vMgf3nS3Xk+MT8iE0MnW+CIbAB1SqO 9mtJmJB0VDetHMuqbzfkFDpD7oX9A+NJfpn+RYTiIsXb0zBX3jfskLecXk1gE3VdpLDH WA4d97CSeURtJy2ED+eBKI8QrmFLCmriYjx845k9QtlhDYBkoumnMtafrEAENQXra2um X4NQ== X-Gm-Message-State: AOJu0YzEx577k1J5XnFLV+RM8BCxFmv6Spn3CoSsUsdQn1xxy0a7gnhz PmgDFzBZpgbeNQN/WFiLzo5KQ1ZY5m+54obCadRZN6TnmnHT1orVyCv72wnK/j8GnyU9KXTFJSY wZPkeYfclZ6YScSv0H0Exrfqt0fW6VSSDJbH/FN9/uH1eJGroH4KK0a0RSxlI+p1x4vjVrmXEis RWZ5jP4KXBOArqnkw/p5swNxfmTE7SoDa9cw== X-Gm-Gg: AZuq6aL0Xv6Bzqv32+KinhP3WdTt5+qF+3W+kZjqkradpu4JSnxrc5GjhYl1ypolT9w GLaU1rqxtdK8VBhoX73FHciUC0DJfGB9RYE9nDvDOQM3c5rlRK8abrjyuA13R84YgAYlN4DF25B nL+wUQJzhZTPlWy5D8lW5dtkDikBCkfG8klOm8dqf/1kzS3RVTHH47LSFa65RT/X4iWlrk4aDkL +ImzhcRRtWiU4Y3/79GyNN4MihpBadSLpQQ5JmFV9kSzOh3qD9q7qBdjtQXvqVTe1yc5JLLDTya ylS8g0EVcPf1RG4p+KVzfj74WqpH2nmEbhoKtD2mzMMAH7RaiLso0mblcH6a5WJGpaMsfMcvKUl 937cJ2mZB45LX4k/PGtShbjL2afouR/8KGA== X-Received: by 2002:a05:600c:19cf:b0:477:582e:7a81 with SMTP id 5b1f17b1804b1-4830e93ea25mr51434785e9.4.1770231776139; Wed, 04 Feb 2026 11:02:56 -0800 (PST) X-Received: by 2002:a05:600c:19cf:b0:477:582e:7a81 with SMTP id 5b1f17b1804b1-4830e93ea25mr51434315e9.4.1770231775540; Wed, 04 Feb 2026 11:02:55 -0800 (PST) Date: Wed, 4 Feb 2026 14:02:53 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Shiju Jose , Jonathan Cameron , Fan Ni Subject: [PULL 02/51] hw/cxl/cxl-mailbox-utils: Move declaration of scrub and ECS feature attributes in cmd_features_set_feature() Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231851278158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Shiju Jose Move the declaration of scrub and ECS feature attributes in cmd_features_set_feature() to the local scope where they are used. Signed-off-by: Shiju Jose Signed-off-by: Jonathan Cameron Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20250917143330.294698-2-Jonathan.Cameron@huawei.com> --- hw/cxl/cxl-mailbox-utils.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/hw/cxl/cxl-mailbox-utils.c b/hw/cxl/cxl-mailbox-utils.c index 6cfdd98168..65b599f7aa 100644 --- a/hw/cxl/cxl-mailbox-utils.c +++ b/hw/cxl/cxl-mailbox-utils.c @@ -1351,10 +1351,6 @@ static CXLRetCode cmd_features_set_feature(const str= uct cxl_cmd *cmd, CXLCCI *cci) { CXLSetFeatureInHeader *hdr =3D (void *)payload_in; - CXLMemPatrolScrubWriteAttrs *ps_write_attrs; - CXLMemPatrolScrubSetFeature *ps_set_feature; - CXLMemECSWriteAttrs *ecs_write_attrs; - CXLMemECSSetFeature *ecs_set_feature; CXLSetFeatureInfo *set_feat_info; uint16_t bytes_to_copy =3D 0; uint8_t data_transfer_flag; @@ -1396,13 +1392,14 @@ static CXLRetCode cmd_features_set_feature(const st= ruct cxl_cmd *cmd, } =20 if (qemu_uuid_is_equal(&hdr->uuid, &patrol_scrub_uuid)) { + CXLMemPatrolScrubSetFeature *ps_set_feature =3D (void *)payload_in; + CXLMemPatrolScrubWriteAttrs *ps_write_attrs =3D + &ps_set_feature->feat_data; + if (hdr->version !=3D CXL_MEMDEV_PS_SET_FEATURE_VERSION) { return CXL_MBOX_UNSUPPORTED; } =20 - ps_set_feature =3D (void *)payload_in; - ps_write_attrs =3D &ps_set_feature->feat_data; - if ((uint32_t)hdr->offset + bytes_to_copy > sizeof(ct3d->patrol_scrub_wr_attrs)) { return CXL_MBOX_INVALID_PAYLOAD_LENGTH; @@ -1423,13 +1420,13 @@ static CXLRetCode cmd_features_set_feature(const st= ruct cxl_cmd *cmd, } } else if (qemu_uuid_is_equal(&hdr->uuid, &ecs_uuid)) { + CXLMemECSSetFeature *ecs_set_feature =3D (void *)payload_in; + CXLMemECSWriteAttrs *ecs_write_attrs =3D ecs_set_feature->feat_dat= a; + if (hdr->version !=3D CXL_ECS_SET_FEATURE_VERSION) { return CXL_MBOX_UNSUPPORTED; } =20 - ecs_set_feature =3D (void *)payload_in; - ecs_write_attrs =3D ecs_set_feature->feat_data; - if ((uint32_t)hdr->offset + bytes_to_copy > sizeof(ct3d->ecs_wr_attrs)) { return CXL_MBOX_INVALID_PAYLOAD_LENGTH; --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231829; cv=none; d=zohomail.com; s=zohoarc; b=MkBYDK2agLPAfNUrzfMsB1CT+zsCIezB+E1rjHhwOxgmu+/pBniqPLjxUOHU8DN56T6PP/IvZHirAT1G0xofppzYS7pQy4HtwbOVjw6EoyVCtptqGk5KbmN1ocWwBXlBk5zjO8ocWyOJrMu+rvZJd4SirhPwoqc/HbGxX6Va9DM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231829; h=Content-Type: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=f6b04XluuWYq9dbsDugfsn4NE3d4xNud4Tf/2I+SCUE=; b=g29PI12lmShcAAwRMoEp8fvL0y9Fh0ASgxtibkfEJSlALSYCkvAn7OQZHe+tJ1x2ufq3A9qTNNQWvKFNAbRuETyjqxK/NKvaZp583SxReWtlAEVcRMJgQBW1n3yR3P7jgLislNxMTw5wUZDeeCU2cI5UugC8bdKXfnxzO7hxAgQ= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770231829526732.2207060481575; Wed, 4 Feb 2026 11:03:49 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vni9c-0005zx-Hp; Wed, 04 Feb 2026 14:03:08 -0500 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 1vni9Z-0005wQ-Uj for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:06 -0500 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 1vni9W-0007hv-P1 for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:05 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-685-V2uBnkDoPo2Su1cezdISzA-1; Wed, 04 Feb 2026 14:03:00 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-480686b3b4cso1737105e9.0 for ; Wed, 04 Feb 2026 11:03:00 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48317d299bfsm3535325e9.2.2026.02.04.11.02.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:02:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231781; 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: in-reply-to:in-reply-to:references:references; bh=f6b04XluuWYq9dbsDugfsn4NE3d4xNud4Tf/2I+SCUE=; b=PMWezmqwHUDXyjrL1BgSrQCnPdt+ci/g/MtSTjZzWM/sWBGJypLZcTi/LmWxAdGzFAuVLo 9U+y27KzOc0fY+IwwyC+QZrSTo5O0PJjRfDzHvJnPspNMiVKXSqZ50cG9jhStMU+rNtNI6 C1/MVibBqfHSkvdqZ8fINcEyZjTFbJE= X-MC-Unique: V2uBnkDoPo2Su1cezdISzA-1 X-Mimecast-MFC-AGG-ID: V2uBnkDoPo2Su1cezdISzA_1770231779 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231779; x=1770836579; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=f6b04XluuWYq9dbsDugfsn4NE3d4xNud4Tf/2I+SCUE=; b=ddjURH0kfNhgKB/N15N03SMsRi28FAjsNE49SmWFBEPN+siVxKSkcOrE+SruPbd8vs NqT7bU6cTaG/xJUWzIq8EpPn73I2Lk7tzWTaMWmwejbs42qT3UtUIlTnGzdJYSEGg06S u3WJ5b6ws9ZcLttMoxkKm/RJO6gh0vOqGUqzSmBzgoItej6SKGSrblAK4RKkUeQHShFl TOfwZJSagZ8m1FeTDdgcxPQuIWwXmOF74iV4sDFc56fyxCuL+BYeBeAYz3S4uUs1ICNq Knrj9gv85+wFj6TE5bUMSPgmVVgr20J5ll/tWNl1YOu+jgXuxWSlh7bFfcJ3N3vJuodE KOwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231779; x=1770836579; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=f6b04XluuWYq9dbsDugfsn4NE3d4xNud4Tf/2I+SCUE=; b=dVmn5RD5bxYmVTuhWob7QUfKCSuORshenaonsbNf3kaGf7kCDOE0LnIzwZ5d95OfrW t6ddJS+oiJnUnizOXVQ6S6aIuUul7zC+CgHy053eFqbQaPSFaX6xZA7RK6qivEsc/bna huWIXF/PvJZYyheYJcM6fIjj24R75z9r1DnLWPojJaYqzQ0KUn9fqcvJWpr/LdXSEslV vxARWLqQ/EtlDlaBQC8MDvB57BmJraA45nck/6ulw009foySIy2m1YBhmw8gZXXlkf5K PJdilSS3LFLrVrz8ZqP0XrAxiX/YdnoYlt36YPNLlRgojnOTuVIKnpBny9frKBc9fKdq CAAw== X-Gm-Message-State: AOJu0Yzp6hRiVySjWuHLHSw+Df22qLW+cMoOOL2WX1CiNrue1fcmf4Xw Odrc+Grbqw8rLB4ZjFTFQWti2Mib76kQYOlhZ6HNWSGMRHBnKFNwZk5t8pIyMS6w9z3sET8jZcj 3B2PN6P5dB2Ydx9nxmIFiDXDQBZ5KRgaoa2jG5xk+sD1JGg3HrE1x1e73O1lMTl0xH6r93sHE8e M3zRf76aRsgNQ5S7ji5/rg7msVyvxmA6yPVA== X-Gm-Gg: AZuq6aIHfJCOXa19vf0oN/f4m8ZzYk0voUrS5ujTo4ZW4eos1NdVSvjOqVfSsUMcsWV S7aJQTHhule55SUYIJv34SkmeWUpuVNMvxG15hA6bF5lIaY1+VzJ4f0keXaBXZYbT1MbXWhKaeO UjatPUA6mKscszPnPd7hJMaPKxfd2AqRCVMwTi1/ZmqNZiiRejNqazVBI8JcwVpOzdktoPoeeZV R6fVeKoexhcdNh8tkNp6NRZrg1BzD3rpEPNYA1WulI20JsPeEzyNnt0rYYxRRpCGlRIrwMRvM2m z5/lsKVfiVY8isPhilnw6WS4UIjr5aaPreQ580fOlrdqXW/fzuj3+NaiTXs6Wln6YQd4Ort9LHb 9nEz9Zqll6OkasE9LvnVQD1ZI08kRIXOdCQ== X-Received: by 2002:a05:600c:a00b:b0:477:7975:30ea with SMTP id 5b1f17b1804b1-4830e971be8mr44111905e9.29.1770231778443; Wed, 04 Feb 2026 11:02:58 -0800 (PST) X-Received: by 2002:a05:600c:a00b:b0:477:7975:30ea with SMTP id 5b1f17b1804b1-4830e971be8mr44111385e9.29.1770231777794; Wed, 04 Feb 2026 11:02:57 -0800 (PST) Date: Wed, 4 Feb 2026 14:02:55 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Davidlohr Bueso , Shiju Jose , Jonathan Cameron , Fan Ni Subject: [PULL 03/51] hw/cxl: Add support for Maintenance command and Post Package Repair (PPR) Message-ID: <5aed4664fcc771eee7b0eb72a2776526788041af.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231831246158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Davidlohr Bueso This adds initial support for the Maintenance command, specifically the soft and hard PPR operations on a dpa. The implementation allows to be executed at runtime, therefore semantically, data is retained and CXL.mem requests are correctly processed. Keep track of the requests upon a general media or DRAM event. Post Package Repair (PPR) maintenance operations may be supported by CXL devices that implement CXL.mem protocol. A PPR maintenance operation requests the CXL device to perform a repair operation on its media. For example, a CXL device with DRAM components that support PPR features may implement PPR Maintenance operations. DRAM components may support two types of PPR, hard PPR (hPPR), for a permanent row repair, and Soft PPR (sPPR), for a temporary row repair. Soft PPR is much faster than hPPR, but the repair is lost with a power cycle. CXL spec 3.2 section 8.2.10.7.1.2 describes the device's sPPR (soft PPR) maintenance operation and section 8.2.10.7.1.3 describes the device's hPPR (hard PPR) maintenance operation feature. CXL spec 3.2 section 8.2.10.7.2.1 describes the sPPR feature discovery and configuration. CXL spec 3.2 section 8.2.10.7.2.2 describes the hPPR feature discovery and configuration. CXL spec 3.2 section 8.2.10.2.1.4 Table 8-60 describes the Memory Sparing Event Record. Signed-off-by: Davidlohr Bueso Co-developed-by: Shiju Jose Signed-off-by: Shiju Jose Signed-off-by: Jonathan Cameron Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20250917143330.294698-3-Jonathan.Cameron@huawei.com> --- hw/cxl/cxl-mailbox-utils.c | 240 +++++++++++++++++++++++++++++++++++- hw/mem/cxl_type3.c | 125 +++++++++++++++++++ include/hw/cxl/cxl_device.h | 112 +++++++++++++++++ include/hw/cxl/cxl_events.h | 42 +++++++ 4 files changed, 517 insertions(+), 2 deletions(-) diff --git a/hw/cxl/cxl-mailbox-utils.c b/hw/cxl/cxl-mailbox-utils.c index 65b599f7aa..8c38b88ad4 100644 --- a/hw/cxl/cxl-mailbox-utils.c +++ b/hw/cxl/cxl-mailbox-utils.c @@ -86,6 +86,8 @@ enum { #define GET_SUPPORTED 0x0 #define GET_FEATURE 0x1 #define SET_FEATURE 0x2 + MAINTENANCE =3D 0x06, + #define PERFORM 0x0 IDENTIFY =3D 0x40, #define MEMORY_DEVICE 0x0 CCLS =3D 0x41, @@ -1111,8 +1113,8 @@ typedef struct CXLSupportedFeatureEntry { #define CXL_FEAT_ENTRY_ATTR_FLAG_CHANGABLE BIT(0) #define CXL_FEAT_ENTRY_ATTR_FLAG_DEEPEST_RESET_PERSISTENCE_MASK GENMASK(3,= 1) #define CXL_FEAT_ENTRY_ATTR_FLAG_PERSIST_ACROSS_FIRMWARE_UPDATE BIT(4) -#define CXL_FEAT_ENTRY_ATTR_FLAG_SUPPORT_DEFAULT_SELECTION BIT(5) -#define CXL_FEAT_ENTRY_ATTR_FLAG_SUPPORT_SAVED_SELECTION BIT(6) +#define CXL_FEAT_ENTRY_ATTR_FLAG_SUPPORT_DEFAULT_SEL BIT(5) +#define CXL_FEAT_ENTRY_ATTR_FLAG_SUPPORT_SAVED_SEL BIT(6) =20 /* Supported Feature Entry : set feature effects */ #define CXL_FEAT_ENTRY_SFE_CONFIG_CHANGE_COLD_RESET BIT(0) @@ -1131,6 +1133,8 @@ typedef struct CXLSupportedFeatureEntry { enum CXL_SUPPORTED_FEATURES_LIST { CXL_FEATURE_PATROL_SCRUB =3D 0, CXL_FEATURE_ECS, + CXL_FEATURE_SPPR, + CXL_FEATURE_HPPR, CXL_FEATURE_MAX }; =20 @@ -1172,6 +1176,28 @@ enum CXL_SET_FEATURE_FLAG_DATA_TRANSFER { }; #define CXL_SET_FEAT_DATA_SAVED_ACROSS_RESET BIT(3) =20 +/* CXL r3.2 section 8.2.10.7.2.1: sPPR Feature Discovery and Configuration= */ +static const QemuUUID soft_ppr_uuid =3D { + .data =3D UUID(0x892ba475, 0xfad8, 0x474e, 0x9d, 0x3e, + 0x69, 0x2c, 0x91, 0x75, 0x68, 0xbb) +}; + +typedef struct CXLMemSoftPPRSetFeature { + CXLSetFeatureInHeader hdr; + CXLMemSoftPPRWriteAttrs feat_data; +} QEMU_PACKED QEMU_ALIGNED(16) CXLMemSoftPPRSetFeature; + +/* CXL r3.2 section 8.2.10.7.2.2: hPPR Feature Discovery and Configuration= */ +static const QemuUUID hard_ppr_uuid =3D { + .data =3D UUID(0x80ea4521, 0x786f, 0x4127, 0xaf, 0xb1, + 0xec, 0x74, 0x59, 0xfb, 0x0e, 0x24) +}; + +typedef struct CXLMemHardPPRSetFeature { + CXLSetFeatureInHeader hdr; + CXLMemHardPPRWriteAttrs feat_data; +} QEMU_PACKED QEMU_ALIGNED(16) CXLMemHardPPRSetFeature; + /* CXL r3.1 section 8.2.9.9.11.1: Device Patrol Scrub Control Feature */ static const QemuUUID patrol_scrub_uuid =3D { .data =3D UUID(0x96dad7d6, 0xfde8, 0x482b, 0xa7, 0x33, @@ -1235,6 +1261,38 @@ static CXLRetCode cmd_features_get_supported(const s= truct cxl_cmd *cmd, for (entry =3D 0, index =3D get_feats_in->start_index; entry < req_entries; index++) { switch (index) { + case CXL_FEATURE_SPPR: + /* Fill supported feature entry for soft-PPR */ + get_feats_out->feat_entries[entry++] =3D + (struct CXLSupportedFeatureEntry) { + .uuid =3D soft_ppr_uuid, + .feat_index =3D index, + .get_feat_size =3D sizeof(CXLMemSoftPPRReadAttrs), + .set_feat_size =3D sizeof(CXLMemSoftPPRWriteAttrs), + .attr_flags =3D CXL_FEAT_ENTRY_ATTR_FLAG_CHANGABLE | + CXL_FEAT_ENTRY_ATTR_FLAG_SUPPORT_DEFAULT_SEL, + .get_feat_version =3D CXL_MEMDEV_SPPR_GET_FEATURE_VERSION, + .set_feat_version =3D CXL_MEMDEV_SPPR_SET_FEATURE_VERSION, + .set_feat_effects =3D CXL_FEAT_ENTRY_SFE_IMMEDIATE_CONFIG_= CHANGE | + CXL_FEAT_ENTRY_SFE_CEL_VALID, + }; + break; + case CXL_FEATURE_HPPR: + /* Fill supported feature entry for hard-PPR */ + get_feats_out->feat_entries[entry++] =3D + (struct CXLSupportedFeatureEntry) { + .uuid =3D hard_ppr_uuid, + .feat_index =3D index, + .get_feat_size =3D sizeof(CXLMemHardPPRReadAttrs), + .set_feat_size =3D sizeof(CXLMemHardPPRWriteAttrs), + .attr_flags =3D CXL_FEAT_ENTRY_ATTR_FLAG_CHANGABLE | + CXL_FEAT_ENTRY_ATTR_FLAG_SUPPORT_DEFAULT_SEL, + .get_feat_version =3D CXL_MEMDEV_HPPR_GET_FEATURE_VERSION, + .set_feat_version =3D CXL_MEMDEV_HPPR_SET_FEATURE_VERSION, + .set_feat_effects =3D CXL_FEAT_ENTRY_SFE_IMMEDIATE_CONFIG_= CHANGE | + CXL_FEAT_ENTRY_SFE_CEL_VALID, + }; + break; case CXL_FEATURE_PATROL_SCRUB: /* Fill supported feature entry for device patrol scrub contro= l */ get_feats_out->feat_entries[entry++] =3D @@ -1333,6 +1391,26 @@ static CXLRetCode cmd_features_get_feature(const str= uct cxl_cmd *cmd, memcpy(payload_out, (uint8_t *)&ct3d->ecs_attrs + get_feature->offset, bytes_to_copy); + } else if (qemu_uuid_is_equal(&get_feature->uuid, &soft_ppr_uuid)) { + if (get_feature->offset >=3D sizeof(CXLMemSoftPPRReadAttrs)) { + return CXL_MBOX_INVALID_INPUT; + } + bytes_to_copy =3D sizeof(CXLMemSoftPPRReadAttrs) - + get_feature->offset; + bytes_to_copy =3D MIN(bytes_to_copy, get_feature->count); + memcpy(payload_out, + (uint8_t *)&ct3d->soft_ppr_attrs + get_feature->offset, + bytes_to_copy); + } else if (qemu_uuid_is_equal(&get_feature->uuid, &hard_ppr_uuid)) { + if (get_feature->offset >=3D sizeof(CXLMemHardPPRReadAttrs)) { + return CXL_MBOX_INVALID_INPUT; + } + bytes_to_copy =3D sizeof(CXLMemHardPPRReadAttrs) - + get_feature->offset; + bytes_to_copy =3D MIN(bytes_to_copy, get_feature->count); + memcpy(payload_out, + (uint8_t *)&ct3d->hard_ppr_attrs + get_feature->offset, + bytes_to_copy); } else { return CXL_MBOX_UNSUPPORTED; } @@ -1444,6 +1522,44 @@ static CXLRetCode cmd_features_set_feature(const str= uct cxl_cmd *cmd, ct3d->ecs_wr_attrs.fru_attrs[count].ecs_config & 0= x1F; } } + } else if (qemu_uuid_is_equal(&hdr->uuid, &soft_ppr_uuid)) { + CXLMemSoftPPRSetFeature *sppr_set_feature =3D (void *)payload_in; + CXLMemSoftPPRWriteAttrs *sppr_write_attrs =3D + &sppr_set_feature->feat_data; + + if (hdr->version !=3D CXL_MEMDEV_SPPR_SET_FEATURE_VERSION) { + return CXL_MBOX_UNSUPPORTED; + } + + memcpy((uint8_t *)&ct3d->soft_ppr_wr_attrs + hdr->offset, + sppr_write_attrs, bytes_to_copy); + set_feat_info->data_size +=3D bytes_to_copy; + + if (data_transfer_flag =3D=3D CXL_SET_FEATURE_FLAG_FULL_DATA_TRANS= FER || + data_transfer_flag =3D=3D CXL_SET_FEATURE_FLAG_FINISH_DATA_TR= ANSFER) { + ct3d->soft_ppr_attrs.op_mode =3D ct3d->soft_ppr_wr_attrs.op_mo= de; + ct3d->soft_ppr_attrs.sppr_op_mode =3D + ct3d->soft_ppr_wr_attrs.sppr_op_mode; + } + } else if (qemu_uuid_is_equal(&hdr->uuid, &hard_ppr_uuid)) { + CXLMemHardPPRSetFeature *hppr_set_feature =3D (void *)payload_in; + CXLMemHardPPRWriteAttrs *hppr_write_attrs =3D + &hppr_set_feature->feat_data; + + if (hdr->version !=3D CXL_MEMDEV_HPPR_SET_FEATURE_VERSION) { + return CXL_MBOX_UNSUPPORTED; + } + + memcpy((uint8_t *)&ct3d->hard_ppr_wr_attrs + hdr->offset, + hppr_write_attrs, bytes_to_copy); + set_feat_info->data_size +=3D bytes_to_copy; + + if (data_transfer_flag =3D=3D CXL_SET_FEATURE_FLAG_FULL_DATA_TRANS= FER || + data_transfer_flag =3D=3D CXL_SET_FEATURE_FLAG_FINISH_DATA_TR= ANSFER) { + ct3d->hard_ppr_attrs.op_mode =3D ct3d->hard_ppr_wr_attrs.op_mo= de; + ct3d->hard_ppr_attrs.hppr_op_mode =3D + ct3d->hard_ppr_wr_attrs.hppr_op_mode; + } } else { return CXL_MBOX_UNSUPPORTED; } @@ -1456,6 +1572,10 @@ static CXLRetCode cmd_features_set_feature(const str= uct cxl_cmd *cmd, memset(&ct3d->patrol_scrub_wr_attrs, 0, set_feat_info->data_si= ze); } else if (qemu_uuid_is_equal(&hdr->uuid, &ecs_uuid)) { memset(&ct3d->ecs_wr_attrs, 0, set_feat_info->data_size); + } else if (qemu_uuid_is_equal(&hdr->uuid, &soft_ppr_uuid)) { + memset(&ct3d->soft_ppr_wr_attrs, 0, set_feat_info->data_size); + } else if (qemu_uuid_is_equal(&hdr->uuid, &hard_ppr_uuid)) { + memset(&ct3d->hard_ppr_wr_attrs, 0, set_feat_info->data_size); } set_feat_info->data_transfer_flag =3D 0; set_feat_info->data_saved_across_reset =3D false; @@ -1466,6 +1586,116 @@ static CXLRetCode cmd_features_set_feature(const st= ruct cxl_cmd *cmd, return CXL_MBOX_SUCCESS; } =20 +static void cxl_mbox_create_mem_sparing_event_records(CXLType3Dev *ct3d, + uint8_t maint_op_class, uint8_t maint_op_sub_c= lass, + CXLMaintenance *ent) +{ + CXLEventSparing event_rec =3D {}; + + cxl_assign_event_header(&event_rec.hdr, + &sparing_uuid, + (1 << CXL_EVENT_TYPE_INFO), + sizeof(event_rec), + cxl_device_get_timestamp(&ct3d->cxl_dstate), + 1, maint_op_class, 1, maint_op_sub_class, + 0, 0, 0, 0); + if (ent) { + event_rec.flags =3D 0; + event_rec.result =3D 0; + stw_le_p(&event_rec.res_avail, 2); + stw_le_p(&event_rec.validity_flags, ent->validity_flags); + event_rec.channel =3D ent->channel; + event_rec.rank =3D ent->rank; + st24_le_p(event_rec.nibble_mask, ent->nibble_mask); + event_rec.bank_group =3D ent->bank_group; + event_rec.bank =3D ent->bank; + st24_le_p(event_rec.row, ent->row); + stw_le_p(&event_rec.column, ent->column); + event_rec.sub_channel =3D ent->sub_channel; + if (ent->validity_flags & CXL_MSER_VALID_COMP_ID) { + strncpy((char *)event_rec.component_id, (char *)ent->component= _id, + sizeof(event_rec.component_id)); + } + } else { + return; + } + + if (cxl_event_insert(&ct3d->cxl_dstate, + CXL_EVENT_TYPE_INFO, + (CXLEventRecordRaw *)&event_rec)) { + cxl_event_irq_assert(ct3d); + } +} + + +static void cxl_perform_ppr(CXLType3Dev *ct3d, uint64_t dpa) +{ + CXLMaintenance *ent, *next; + + QLIST_FOREACH_SAFE(ent, &ct3d->maint_list, node, next) { + if (dpa =3D=3D ent->dpa) { + /* Produce a Memory Sparing Event Record */ + if (ct3d->soft_ppr_attrs.sppr_op_mode & + CXL_MEMDEV_SPPR_OP_MODE_MEM_SPARING_EV_REC_EN) { + cxl_mbox_create_mem_sparing_event_records(ct3d, + CXL_MEMDEV_MAINT_CLASS_SPARING, + CXL_MEMDEV_MAINT_SUBCLASS_CACHELINE_SPARIN= G, + ent); + } + break; + } + } +} + +/* CXL r3.2 section 8.2.10.7.1 - Perform Maintenance (Opcode 0600h) */ +#define MAINTENANCE_PPR_QUERY_RESOURCES BIT(0) + +static CXLRetCode cmd_media_perform_maintenance(const struct cxl_cmd *cmd, + uint8_t *payload_in, size_t len_in, + uint8_t *payload_out, size_t *len_out, + CXLCCI *cci) +{ + struct { + uint8_t class; + uint8_t subclass; + union { + struct { + uint8_t flags; + uint64_t dpa; + uint8_t nibble_mask[3]; + } QEMU_PACKED ppr; + }; + } QEMU_PACKED *maint_in =3D (void *)payload_in; + CXLType3Dev *ct3d =3D CXL_TYPE3(cci->d); + + if (maintenance_running(cci)) { + return CXL_MBOX_BUSY; + } + + switch (maint_in->class) { + case CXL_MEMDEV_MAINT_CLASS_NO_OP: + return CXL_MBOX_SUCCESS; /* nop */ + case CXL_MEMDEV_MAINT_CLASS_PPR: + if (maint_in->ppr.flags & MAINTENANCE_PPR_QUERY_RESOURCES) { + return CXL_MBOX_SUCCESS; + } + + switch (maint_in->subclass) { + case CXL_MEMDEV_MAINT_SUBCLASS_SPPR: + case CXL_MEMDEV_MAINT_SUBCLASS_HPPR: + cxl_perform_ppr(ct3d, ldq_le_p(&maint_in->ppr.dpa)); + return CXL_MBOX_SUCCESS; + default: + return CXL_MBOX_INVALID_INPUT; + } + break; + default: + return CXL_MBOX_INVALID_INPUT; + } + + return CXL_MBOX_SUCCESS; +} + /* CXL r3.1 Section 8.2.9.9.1.1: Identify Memory Device (Opcode 4000h) */ static CXLRetCode cmd_identify_memory_device(const struct cxl_cmd *cmd, uint8_t *payload_in, @@ -3761,6 +3991,12 @@ static const struct cxl_cmd cxl_cmd_set[256][256] = =3D { CXL_MBOX_IMMEDIATE_POLICY_CHANGE | CXL_MBOX_IMMEDIATE_LOG_CHANGE | CXL_MBOX_SECURITY_STATE_CHANGE)}, + [MAINTENANCE][PERFORM] =3D { "MAINTENANCE_PERFORM", + cmd_media_perform_maintenance, ~0, + CXL_MBOX_IMMEDIATE_CONFIG_CHANGE | + CXL_MBOX_IMMEDIATE_DATA_CHANGE | + CXL_MBOX_IMMEDIATE_LOG_CHANGE | + CXL_MBOX_BACKGROUND_OPERATION }, [IDENTIFY][MEMORY_DEVICE] =3D { "IDENTIFY_MEMORY_DEVICE", cmd_identify_memory_device, 0, 0 }, [CCLS][GET_PARTITION_INFO] =3D { "CCLS_GET_PARTITION_INFO", diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c index 6eb20137a0..b02dc31f11 100644 --- a/hw/mem/cxl_type3.c +++ b/hw/mem/cxl_type3.c @@ -964,6 +964,32 @@ static void ct3_realize(PCIDevice *pci_dev, Error **er= rp) ct3d->ecs_attrs.fru_attrs[count].ecs_flags =3D 0; } =20 + /* Set default values for soft-PPR attributes */ + ct3d->soft_ppr_attrs =3D (CXLMemSoftPPRReadAttrs) { + .max_maint_latency =3D 0x5, /* 100 ms */ + .op_caps =3D 0, /* require host involvement */ + .op_mode =3D 0, + .maint_op_class =3D CXL_MEMDEV_MAINT_CLASS_PPR, + .maint_op_subclass =3D CXL_MEMDEV_MAINT_SUBCLASS_SPPR, + .sppr_flags =3D CXL_MEMDEV_SPPR_DPA_SUPPORT_FLAG | + CXL_MEMDEV_SPPR_MEM_SPARING_EV_REC_CAP_FLAG, + .restriction_flags =3D 0, + .sppr_op_mode =3D CXL_MEMDEV_SPPR_OP_MODE_MEM_SPARING_EV_REC_EN + }; + + /* Set default value for hard-PPR attributes */ + ct3d->hard_ppr_attrs =3D (CXLMemHardPPRReadAttrs) { + .max_maint_latency =3D 0x5, /* 100 ms */ + .op_caps =3D 0, /* require host involvement */ + .op_mode =3D 0, + .maint_op_class =3D CXL_MEMDEV_MAINT_CLASS_PPR, + .maint_op_subclass =3D CXL_MEMDEV_MAINT_SUBCLASS_HPPR, + .hppr_flags =3D CXL_MEMDEV_HPPR_DPA_SUPPORT_FLAG | + CXL_MEMDEV_HPPR_MEM_SPARING_EV_REC_CAP_FLAG, + .restriction_flags =3D 0, + .hppr_op_mode =3D CXL_MEMDEV_HPPR_OP_MODE_MEM_SPARING_EV_REC_EN + }; + return; =20 err_release_cdat: @@ -1635,6 +1661,75 @@ static int ct3d_qmp_cxl_event_log_enc(CxlEventLog lo= g) return -EINVAL; } } + +static void cxl_maintenance_insert(CXLType3Dev *ct3d, uint64_t dpa, + bool has_channel, uint8_t channel, + bool has_rank, uint8_t rank, + bool has_nibble_mask, uint32_t nibble_m= ask, + bool has_bank_group, uint8_t bank_group, + bool has_bank, uint8_t bank, + bool has_row, uint32_t row, + bool has_column, uint16_t column, + const char *component_id, + bool has_comp_id_pldm, bool is_comp_id_= pldm, + bool has_sub_channel, uint8_t sub_chann= el) +{ + CXLMaintenance *ent, *m; + + QLIST_FOREACH(ent, &ct3d->maint_list, node) { + if (dpa =3D=3D ent->dpa) { + return; + } + } + m =3D g_new0(CXLMaintenance, 1); + memset(m, 0, sizeof(*m)); + m->dpa =3D dpa; + m->validity_flags =3D 0; + + if (has_channel) { + m->channel =3D channel; + m->validity_flags |=3D CXL_MSER_VALID_CHANNEL; + } + if (has_rank) { + m->rank =3D rank; + m->validity_flags |=3D CXL_MSER_VALID_RANK; + } + if (has_nibble_mask) { + m->nibble_mask =3D nibble_mask; + m->validity_flags |=3D CXL_MSER_VALID_NIB_MASK; + } + if (has_bank_group) { + m->bank_group =3D bank_group; + m->validity_flags |=3D CXL_MSER_VALID_BANK_GROUP; + } + if (has_bank) { + m->bank =3D bank; + m->validity_flags |=3D CXL_MSER_VALID_BANK; + } + if (has_row) { + m->row =3D row; + m->validity_flags |=3D CXL_MSER_VALID_ROW; + } + if (has_column) { + m->column =3D column; + m->validity_flags |=3D CXL_MSER_VALID_COLUMN; + } + if (has_sub_channel) { + m->sub_channel =3D sub_channel; + m->validity_flags |=3D CXL_MSER_VALID_SUB_CHANNEL; + } + if (component_id) { + strncpy((char *)m->component_id, component_id, + sizeof(m->component_id) - 1); + m->validity_flags |=3D CXL_MSER_VALID_COMP_ID; + if (has_comp_id_pldm && is_comp_id_pldm) { + m->validity_flags |=3D CXL_MSER_VALID_COMP_ID_FORMAT; + } + } + + QLIST_INSERT_HEAD(&ct3d->maint_list, m, node); +} + /* Component ID is device specific. Define this as a string. */ void qmp_cxl_inject_general_media_event(const char *path, CxlEventLog log, uint8_t flags, uint64_t dpa, @@ -1671,6 +1766,11 @@ void qmp_cxl_inject_general_media_event(const char *= path, CxlEventLog log, error_setg(errp, "Unhandled error log type"); return; } + if (rc =3D=3D CXL_EVENT_TYPE_INFO && + (flags & CXL_EVENT_REC_FLAGS_MAINT_NEEDED)) { + error_setg(errp, "Informational event cannot require maintenance"); + return; + } enc_log =3D rc; =20 memset(&gem, 0, sizeof(gem)); @@ -1708,6 +1808,15 @@ void qmp_cxl_inject_general_media_event(const char *= path, CxlEventLog log, if (cxl_event_insert(cxlds, enc_log, (CXLEventRecordRaw *)&gem)) { cxl_event_irq_assert(ct3d); } + + if (flags & CXL_EVENT_REC_FLAGS_MAINT_NEEDED) { + cxl_maintenance_insert(ct3d, dpa, has_channel, channel, + has_rank, rank, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, component_id, + has_comp_id_pldm, is_comp_id_pldm, + 0, 0); + } } =20 #define CXL_DRAM_VALID_CHANNEL BIT(0) @@ -1758,6 +1867,11 @@ void qmp_cxl_inject_dram_event(const char *path, Cxl= EventLog log, uint8_t flags, error_setg(errp, "Unhandled error log type"); return; } + if (rc =3D=3D CXL_EVENT_TYPE_INFO && + (flags & CXL_EVENT_REC_FLAGS_MAINT_NEEDED)) { + error_setg(errp, "Informational event cannot require maintenance"); + return; + } enc_log =3D rc; =20 memset(&dram, 0, sizeof(dram)); @@ -1819,6 +1933,17 @@ void qmp_cxl_inject_dram_event(const char *path, Cxl= EventLog log, uint8_t flags, if (cxl_event_insert(cxlds, enc_log, (CXLEventRecordRaw *)&dram)) { cxl_event_irq_assert(ct3d); } + + if (flags & CXL_EVENT_REC_FLAGS_MAINT_NEEDED) { + cxl_maintenance_insert(ct3d, dpa, has_channel, channel, + has_rank, rank, + has_nibble_mask, nibble_mask, + has_bank_group, bank_group, + has_bank, bank, has_row, row, + has_column, column, component_id, + has_comp_id_pldm, is_comp_id_pldm, + has_sub_channel, sub_channel); + } } =20 void qmp_cxl_inject_memory_module_event(const char *path, CxlEventLog log, diff --git a/include/hw/cxl/cxl_device.h b/include/hw/cxl/cxl_device.h index 165355baf9..72e8c68187 100644 --- a/include/hw/cxl/cxl_device.h +++ b/include/hw/cxl/cxl_device.h @@ -430,6 +430,12 @@ static inline bool cxl_dev_media_disabled(CXLDeviceSta= te *cxl_dstate) uint64_t dev_status_reg =3D cxl_dstate->mbox_reg_state64[R_CXL_MEM_DEV= _STS]; return FIELD_EX64(dev_status_reg, CXL_MEM_DEV_STS, MEDIA_STATUS) =3D= =3D 0x3; } + +static inline bool maintenance_running(CXLCCI *cci) +{ + return cci->bg.runtime && cci->bg.opcode =3D=3D 0x0600; +} + static inline bool scan_media_running(CXLCCI *cci) { return !!cci->bg.runtime && cci->bg.opcode =3D=3D 0x4304; @@ -443,6 +449,23 @@ typedef struct CXLError { =20 typedef QTAILQ_HEAD(, CXLError) CXLErrorList; =20 +typedef struct CXLMaintenance { + uint64_t dpa; + uint16_t validity_flags; + uint8_t channel; + uint8_t rank; + uint32_t nibble_mask; + uint8_t bank_group; + uint8_t bank; + uint32_t row; + uint16_t column; + uint8_t component_id[CXL_EVENT_GEN_MED_COMP_ID_SIZE]; + uint8_t sub_channel; + QLIST_ENTRY(CXLMaintenance) node; +} CXLMaintenance; + +typedef QLIST_HEAD(, CXLMaintenance) CXLMaintenanceList; + typedef struct CXLPoison { uint64_t start, length; uint8_t type; @@ -455,6 +478,87 @@ typedef struct CXLPoison { typedef QLIST_HEAD(, CXLPoison) CXLPoisonList; #define CXL_POISON_LIST_LIMIT 256 =20 +/* CXL memory maintenance operation */ +/* + * CXL r3.2 section 8.2.10.7.2, Table 8-125: Mainteance Operation: + * Classes, Subclasses, and Feature UUIDs + */ +#define CXL_MEMDEV_MAINT_CLASS_NO_OP 0x0 +#define CXL_MEMDEV_MAINT_CLASS_PPR 0x1 +#define CXL_MEMDEV_MAINT_CLASS_SPARING 0x2 +#define CXL_MEMDEV_MAINT_CLASS_DEV_BUILT_IN_TEST 0x3 + +#define CXL_MEMDEV_MAINT_SUBCLASS_SPPR 0x0 +#define CXL_MEMDEV_MAINT_SUBCLASS_HPPR 0x1 + +#define CXL_MEMDEV_MAINT_SUBCLASS_CACHELINE_SPARING 0x0 +#define CXL_MEMDEV_MAINT_SUBCLASS_ROW_SPARING 0x1 +#define CXL_MEMDEV_MAINT_SUBCLASS_BANK_SPARING 0x2 +#define CXL_MEMDEV_MAINT_SUBCLASS_RANK_SPARING 0x3 + +/* CXL memory Post Package Repair control attributes */ +/* + * CXL r3.2 section 8.2.10.7.2.1, Table 8-128 and 8-129: + * sPPR Feature Readable/Writable Attributes + */ +typedef struct CXLMemSoftPPRReadAttrs { + uint8_t max_maint_latency; + uint16_t op_caps; + uint16_t op_mode; + uint8_t maint_op_class; + uint8_t maint_op_subclass; + uint8_t rsvd[9]; + uint8_t sppr_flags; + uint16_t restriction_flags; + uint8_t sppr_op_mode; +} QEMU_PACKED CXLMemSoftPPRReadAttrs; + +typedef struct CXLMemSoftPPRWriteAttrs { + uint16_t op_mode; + uint8_t sppr_op_mode; +} QEMU_PACKED CXLMemSoftPPRWriteAttrs; + +#define CXL_MEMDEV_SPPR_GET_FEATURE_VERSION 0x03 +#define CXL_MEMDEV_SPPR_SET_FEATURE_VERSION 0x03 +#define CXL_MEMDEV_SPPR_DPA_SUPPORT_FLAG BIT(0) +#define CXL_MEMDEV_SPPR_NIBBLE_SUPPORT_FLAG BIT(1) +#define CXL_MEMDEV_SPPR_MEM_SPARING_EV_REC_CAP_FLAG BIT(2) +#define CXL_MEMDEV_SPPR_DEV_INITIATED_AT_BOOT_CAP_FLAG BIT(3) + +#define CXL_MEMDEV_SPPR_OP_MODE_MEM_SPARING_EV_REC_EN BIT(0) +#define CXL_MEMDEV_SPPR_OP_MODE_DEV_INITIATED_AT_BOOT BIT(1) + +/* + * CXL r3.2 section 8.2.10.7.2.2, Table 8-131 and 8-132: + * hPPR Feature Readable/Writable Attributes + */ +typedef struct CXLMemHardPPRReadAttrs { + uint8_t max_maint_latency; + uint16_t op_caps; + uint16_t op_mode; + uint8_t maint_op_class; + uint8_t maint_op_subclass; + uint8_t rsvd[9]; + uint8_t hppr_flags; + uint16_t restriction_flags; + uint8_t hppr_op_mode; +} QEMU_PACKED CXLMemHardPPRReadAttrs; + +typedef struct CXLMemHardPPRWriteAttrs { + uint16_t op_mode; + uint8_t hppr_op_mode; +} QEMU_PACKED CXLMemHardPPRWriteAttrs; + +#define CXL_MEMDEV_HPPR_GET_FEATURE_VERSION 0x03 +#define CXL_MEMDEV_HPPR_SET_FEATURE_VERSION 0x03 +#define CXL_MEMDEV_HPPR_DPA_SUPPORT_FLAG BIT(0) +#define CXL_MEMDEV_HPPR_NIBBLE_SUPPORT_FLAG BIT(1) +#define CXL_MEMDEV_HPPR_MEM_SPARING_EV_REC_CAP_FLAG BIT(2) +#define CXL_MEMDEV_HPPR_DEV_INITIATED_AT_BOOT_CAP_FLAG BIT(3) + +#define CXL_MEMDEV_HPPR_OP_MODE_MEM_SPARING_EV_REC_EN BIT(0) +#define CXL_MEMDEV_HPPR_OP_MODE_DEV_INITIATED_AT_BOOT BIT(1) + /* CXL memory device patrol scrub control attributes */ typedef struct CXLMemPatrolScrubReadAttrs { uint8_t scrub_cycle_cap; @@ -605,6 +709,9 @@ struct CXLType3Dev { /* Error injection */ CXLErrorList error_list; =20 + /* Keep track of maintenance requests */ + CXLMaintenanceList maint_list; + /* Poison Injection - cache */ CXLPoisonList poison_list; unsigned int poison_list_cnt; @@ -617,6 +724,11 @@ struct CXLType3Dev { =20 CXLSetFeatureInfo set_feat_info; =20 + /* PPR control attributes */ + CXLMemSoftPPRReadAttrs soft_ppr_attrs; + CXLMemSoftPPRWriteAttrs soft_ppr_wr_attrs; + CXLMemHardPPRReadAttrs hard_ppr_attrs; + CXLMemHardPPRWriteAttrs hard_ppr_wr_attrs; /* Patrol scrub control attributes */ CXLMemPatrolScrubReadAttrs patrol_scrub_attrs; CXLMemPatrolScrubWriteAttrs patrol_scrub_wr_attrs; diff --git a/include/hw/cxl/cxl_events.h b/include/hw/cxl/cxl_events.h index 758b075a64..7cba494b72 100644 --- a/include/hw/cxl/cxl_events.h +++ b/include/hw/cxl/cxl_events.h @@ -199,4 +199,46 @@ typedef enum CXLDCEventType { DC_EVENT_CAPACITY_RELEASED =3D 0x5, } CXLDCEventType; =20 +/* + * CXL r3.2 section Table 8-60: Memory Sparing Event Record + * All fields little endian. + */ +#define CXL_MSER_VALID_CHANNEL BIT(0) +#define CXL_MSER_VALID_RANK BIT(1) +#define CXL_MSER_VALID_NIB_MASK BIT(2) +#define CXL_MSER_VALID_BANK_GROUP BIT(3) +#define CXL_MSER_VALID_BANK BIT(4) +#define CXL_MSER_VALID_ROW BIT(5) +#define CXL_MSER_VALID_COLUMN BIT(6) +#define CXL_MSER_VALID_COMP_ID BIT(7) +#define CXL_MSER_VALID_COMP_ID_FORMAT BIT(8) +#define CXL_MSER_VALID_SUB_CHANNEL BIT(9) + +typedef struct CXLEventSparing { + CXLEventRecordHdr hdr; + uint8_t maint_op_class; + uint8_t maint_op_subclass; + uint8_t flags; + uint8_t result; + uint16_t validity_flags; + uint8_t reserved1[6]; + uint16_t res_avail; + uint8_t channel; + uint8_t rank; + uint8_t nibble_mask[3]; + uint8_t bank_group; + uint8_t bank; + uint8_t row[3]; + uint16_t column; + uint8_t component_id[CXL_EVENT_GEN_MED_COMP_ID_SIZE]; + uint8_t sub_channel; + uint8_t reserved2[0x25]; +} QEMU_PACKED CXLEventSparing; + +/* CXL r3.2 Table 8-60: Memory Sparing Event Record */ +static const QemuUUID sparing_uuid =3D { + .data =3D UUID(0xe71f3a40, 0x2d29, 0x4092, 0x8a, 0x39, + 0x4d, 0x1c, 0x96, 0x6c, 0x7c, 0x65), +}; + #endif /* CXL_EVENTS_H */ --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231846; cv=none; d=zohomail.com; s=zohoarc; b=KnMt8SDpPru7ZwBINC9N7KCvjXVXKdCfOJNOIQ9LmdwMgj3kviChcRQTXYGoBvjr6aFw0aqKmorgrpL1LZ84besVgqC6n5phcwH6lKz4bBYVz3sKwnfznIrQhM4IMw1rRQl9gdRv603tOgq99sUSRxIfNuax+PSa1ZrmuaL7i0Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231846; h=Content-Type: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=kdpxBV07eKB+3arYDNp/6Z4nxyWT8AOAC6C29860iBk=; b=C2NkO8EpdhMDwayNO3GiK/fWc4772OI7VGbOxNXXCncr5VGRshycjqcjNuzvquSWP9nzSysm2bKxJZxnCLJBe2L0wi7kqVB90me0HIV++JXslqSUfqG4PSZLnK3tKMNCVzU5e4f976eiFcmRLa+u5lxkbrc92SVIeZv6paRDJ44= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770231846006757.4963625555057; Wed, 4 Feb 2026 11:04:06 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vni9i-00061m-8h; Wed, 04 Feb 2026 14:03:16 -0500 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 1vni9c-0005zz-Ag for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:08 -0500 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 1vni9Y-0007iW-Vl for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:08 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-489-M1XgtISjOoeA4ClCISCJew-1; Wed, 04 Feb 2026 14:03:02 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4801bceb317so1811685e9.1 for ; Wed, 04 Feb 2026 11:03:02 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4830ec5cc24sm39868465e9.3.2026.02.04.11.02.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:02:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231784; 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: in-reply-to:in-reply-to:references:references; bh=kdpxBV07eKB+3arYDNp/6Z4nxyWT8AOAC6C29860iBk=; b=bdsJlXd/qypJOAsFM13fbRAiMNnjICPUdGGRNguKV5cLNc5/SjFQ7KPHSBhc0i/lEIbbfB EzZoxvBfZKRZOf1Z1e3Y+mveMmUff9G77qdlM3BcVbVWS/hLJgANpNYHOf86XQSmxWJrRH VqcD6aWYTzpDKnO/HbBABSu7jFrPyFc= X-MC-Unique: M1XgtISjOoeA4ClCISCJew-1 X-Mimecast-MFC-AGG-ID: M1XgtISjOoeA4ClCISCJew_1770231781 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231781; x=1770836581; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=kdpxBV07eKB+3arYDNp/6Z4nxyWT8AOAC6C29860iBk=; b=MTEVJJQ1FKz8+BI+NfpabdHup3fxULI1wgbWC71fmz2LbRyAvP1hbuM++FR/30Y54E k986paNW3Ld2/h0MzUCuJNBGxungPzf7NEzRWoOOySch3p0A+/+RC2JrpuxYGdfL+Jo/ W30Yu1X1rZ6G0T2I49+QuXqk1rXlYm2x/OhEdzBWqRI74mMC84ycVIrJxGUeGcLAgis0 xCXwhbGWtRgEdSpOqsyiQtNYYPe4364RAAAWurWN7kOnE1kF59GSN8v7r3ty4qPDUDHS ErqL87WU9yYUXLctgsR3S/Y5UcQqOno7ZIT4GG+U23HxzeHVF4noPEFBcBnIylLGji/1 mfvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231781; x=1770836581; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kdpxBV07eKB+3arYDNp/6Z4nxyWT8AOAC6C29860iBk=; b=hoqu5r5VekUEtvVmn5tIdIuqUJ94LIUxbB+aQqtka+bGZdFgO4BIyKh4+5mdSxeUaw hnhEZ90QCQogQSI8EvDVnhLTM/ZgwU7d6k+9cFXr0cOpy2DJcTQZuBPr7dwIE5LasZCM 3KL0PU/QenOKSxKC9Y3bOA9yJUHBvXrbhHG1I0ve7ioIdqAO1ZjR2HrgpJQRDepN1Mef L0ousT2qsyxFs5GK8BghlZYtWAG7C82dAKDk4RRg2o35LuNQ8hPm0R75auHKWtX5cYYC y3fqOWXnlVfTnmcruBQuzV4VHyoostuwVDS9nPIbUG+t3/6JkgzVsJfb/oipcMpShUTx g6lw== X-Gm-Message-State: AOJu0YxTaIkkrheJnVM9WZuSRtb3P8yjFfcIgGQ5tkK3z/C412rSjqZv QDzwLYS1IZ+n7/vjEZmRqeMImr6aFmCUGBm7+2hliueXLx4El97NlOB5nbPqcbQIj9shwk8pu7s 6Y9NiytDURtekkUPVDjTfTTpzdN+taTJveBuaLYedSSbjuIUqPPy506dfGVxHiZwALJ/4CCWXBr zRm+iG5NX/bFZlhEp1zxiqmx5lhCYXxM7nqg== X-Gm-Gg: AZuq6aIMOuzPGQG3RK9YcyXuvzvT3peYXwnvKF04d/ka65xf0IKtq63phuA2yPZPRV+ vN3ccMzS/4vkeha9ZScPvbV4rCcKxIxNMI2vIivOrWQDMgevnZHbw+OkQxlyh2L4/fon0V5o4xT cZpPYNF85sYvNv+9kmn9Hl4tpE1Kdo6WXm2HGlZibHVvrUj6h+JrYPvdse/TzUSbP6fqFrRNXG8 f8ihH3WTFrufZXKS33PnfKK+22suDuY2d++cslHS258pLM/NOwx1+x1maNoAOVJUpGkvdkL+s6R Q4B5rzkSj0k2gLd6Dmf+01DP6ZPl4BXRh89IIE8iqZffWG5O0rrTYBuEfqbTXO+6ZNCYC4pFYpe RmkyLU5xvUwPSn4QzuNX+UnKtVSVBGc0xHQ== X-Received: by 2002:a05:600c:848a:b0:46e:6d5f:f68 with SMTP id 5b1f17b1804b1-4830e930426mr55743815e9.12.1770231780631; Wed, 04 Feb 2026 11:03:00 -0800 (PST) X-Received: by 2002:a05:600c:848a:b0:46e:6d5f:f68 with SMTP id 5b1f17b1804b1-4830e930426mr55743245e9.12.1770231780019; Wed, 04 Feb 2026 11:03:00 -0800 (PST) Date: Wed, 4 Feb 2026 14:02:57 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Shiju Jose , Jonathan Cameron , Fan Ni Subject: [PULL 04/51] hw/cxl: Add emulation for memory sparing control feature Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231847292158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Shiju Jose Memory sparing is defined as a repair function that replaces a portion of memory with a portion of functional memory at that same DPA. The subclasses for this operation vary in terms of the scope of the sparing being performed. The Cacheline sparing subclass refers to a sparing action that can replace a full cacheline. Row sparing is provided as an alternative to PPR sparing functions and its scope is that of a single DDR row. Bank sparing allows an entire bank to be replaced. Rank sparing is defined as an operation in which an entire DDR rank is replaced. Memory sparing maintenance operations may be supported by CXL devices that implement CXL.mem protocol. A sparing maintenance operation requests the CXL device to perform a repair operation on its media. For example, a CXL device with DRAM components that support memory sparing features may implement sparing Maintenance operations. The host may issue a query command by setting Query Resources flag in the Input Payload (CXL Spec 3.2 Table 8-120) to determine availability of sparing resources for a given address. In response to a query request, the device shall report the resource availability by producing the Memory Sparing Event Record (CXL Spec 3.2 Table 8-60) in which the Channel, Rank, Nibble Mask, Bank Group, Bank, Row, Column, Sub-Channel fields are a copy of the values specified in the request. During the execution of a sparing maintenance operation, a CXL memory device: - May or may not retain data - May or may not be able to process CXL.mem requests correctly. These CXL memory device capabilities are specified by restriction flags in the memory sparing feature readable attributes. When a CXL device identifies error on a memory component, the device may inform the host about the need for a memory sparing maintenance operation by using DRAM event record, where the 'maintenance needed' flag may set. The event record contains some of the DPA, Channel, Rank, Nibble Mask, Bank Group, Bank, Row, Column, Sub-Channel fields that should be repaired. The userspace tool requests for maintenance operation if the 'maintenance needed' flag set in the CXL DRAM error record. CXL spec 3.2 section 8.2.10.7.2.3 describes the memory sparing feature discovery and configuration. CXL spec 3.2 section 8.2.10.7.1.4 describes the device's memory sparing maintenance operation feature. Add emulation for CXL memory device memory sparing control feature and memory sparing maintenance operation command. Signed-off-by: Shiju Jose Signed-off-by: Jonathan Cameron Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20250917143330.294698-4-Jonathan.Cameron@huawei.com> --- hw/cxl/cxl-mailbox-utils.c | 317 +++++++++++++++++++++++++++++++++++- hw/mem/cxl_type3.c | 44 +++++ include/hw/cxl/cxl_device.h | 33 ++++ include/hw/cxl/cxl_events.h | 5 + 4 files changed, 395 insertions(+), 4 deletions(-) diff --git a/hw/cxl/cxl-mailbox-utils.c b/hw/cxl/cxl-mailbox-utils.c index 8c38b88ad4..a4bd49e113 100644 --- a/hw/cxl/cxl-mailbox-utils.c +++ b/hw/cxl/cxl-mailbox-utils.c @@ -1135,6 +1135,10 @@ enum CXL_SUPPORTED_FEATURES_LIST { CXL_FEATURE_ECS, CXL_FEATURE_SPPR, CXL_FEATURE_HPPR, + CXL_FEATURE_CACHELINE_SPARING, + CXL_FEATURE_ROW_SPARING, + CXL_FEATURE_BANK_SPARING, + CXL_FEATURE_RANK_SPARING, CXL_FEATURE_MAX }; =20 @@ -1223,6 +1227,35 @@ typedef struct CXLMemECSSetFeature { CXLMemECSWriteAttrs feat_data[]; } QEMU_PACKED QEMU_ALIGNED(16) CXLMemECSSetFeature; =20 +/* + * CXL r3.2 section 8.2.10.7.2.3: + * Memory Sparing Features Discovery and Configuration + */ +static const QemuUUID cacheline_sparing_uuid =3D { + .data =3D UUID(0x96C33386, 0x91dd, 0x44c7, 0x9e, 0xcb, + 0xfd, 0xaf, 0x65, 0x03, 0xba, 0xc4) +}; + +static const QemuUUID row_sparing_uuid =3D { + .data =3D UUID(0x450ebf67, 0xb135, 0x4f97, 0xa4, 0x98, + 0xc2, 0xd5, 0x7f, 0x27, 0x9b, 0xed) +}; + +static const QemuUUID bank_sparing_uuid =3D { + .data =3D UUID(0x78b79636, 0x90ac, 0x4b64, 0xa4, 0xef, + 0xfa, 0xac, 0x5d, 0x18, 0xa8, 0x63) +}; + +static const QemuUUID rank_sparing_uuid =3D { + .data =3D UUID(0x34dbaff5, 0x0552, 0x4281, 0x8f, 0x76, + 0xda, 0x0b, 0x5e, 0x7a, 0x76, 0xa7) +}; + +typedef struct CXLMemSparingSetFeature { + CXLSetFeatureInHeader hdr; + CXLMemSparingWriteAttrs feat_data; +} QEMU_PACKED QEMU_ALIGNED(16) CXLMemSparingSetFeature; + /* CXL r3.1 section 8.2.9.6.1: Get Supported Features (Opcode 0500h) */ static CXLRetCode cmd_features_get_supported(const struct cxl_cmd *cmd, uint8_t *payload_in, @@ -1323,6 +1356,70 @@ static CXLRetCode cmd_features_get_supported(const s= truct cxl_cmd *cmd, CXL_FEAT_ENTRY_SFE_CEL_VALID, }; break; + case CXL_FEATURE_CACHELINE_SPARING: + /* Fill supported feature entry for Cacheline Memory Sparing */ + get_feats_out->feat_entries[entry++] =3D + (struct CXLSupportedFeatureEntry) { + .uuid =3D cacheline_sparing_uuid, + .feat_index =3D index, + .get_feat_size =3D sizeof(CXLMemSparingReadAttrs), + .set_feat_size =3D sizeof(CXLMemSparingWriteAttrs), + .attr_flags =3D CXL_FEAT_ENTRY_ATTR_FLAG_CHANGABLE | + CXL_FEAT_ENTRY_ATTR_FLAG_SUPPORT_DEFAULT_SEL, + .get_feat_version =3D CXL_MEMDEV_SPARING_GET_FEATURE_VERSI= ON, + .set_feat_version =3D CXL_MEMDEV_SPARING_SET_FEATURE_VERSI= ON, + .set_feat_effects =3D CXL_FEAT_ENTRY_SFE_IMMEDIATE_CONFIG_= CHANGE | + CXL_FEAT_ENTRY_SFE_CEL_VALID, + }; + break; + case CXL_FEATURE_ROW_SPARING: + /* Fill supported feature entry for Row Memory Sparing */ + get_feats_out->feat_entries[entry++] =3D + (struct CXLSupportedFeatureEntry) { + .uuid =3D row_sparing_uuid, + .feat_index =3D index, + .get_feat_size =3D sizeof(CXLMemSparingReadAttrs), + .set_feat_size =3D sizeof(CXLMemSparingWriteAttrs), + .attr_flags =3D CXL_FEAT_ENTRY_ATTR_FLAG_CHANGABLE | + CXL_FEAT_ENTRY_ATTR_FLAG_SUPPORT_DEFAULT_SEL, + .get_feat_version =3D CXL_MEMDEV_SPARING_GET_FEATURE_VERSI= ON, + .set_feat_version =3D CXL_MEMDEV_SPARING_SET_FEATURE_VERSI= ON, + .set_feat_effects =3D CXL_FEAT_ENTRY_SFE_IMMEDIATE_CONFIG_= CHANGE | + CXL_FEAT_ENTRY_SFE_CEL_VALID, + }; + break; + case CXL_FEATURE_BANK_SPARING: + /* Fill supported feature entry for Bank Memory Sparing */ + get_feats_out->feat_entries[entry++] =3D + (struct CXLSupportedFeatureEntry) { + .uuid =3D bank_sparing_uuid, + .feat_index =3D index, + .get_feat_size =3D sizeof(CXLMemSparingReadAttrs), + .set_feat_size =3D sizeof(CXLMemSparingWriteAttrs), + .attr_flags =3D CXL_FEAT_ENTRY_ATTR_FLAG_CHANGABLE | + CXL_FEAT_ENTRY_ATTR_FLAG_SUPPORT_DEFAULT_SEL, + .get_feat_version =3D CXL_MEMDEV_SPARING_GET_FEATURE_VERSI= ON, + .set_feat_version =3D CXL_MEMDEV_SPARING_SET_FEATURE_VERSI= ON, + .set_feat_effects =3D CXL_FEAT_ENTRY_SFE_IMMEDIATE_CONFIG_= CHANGE | + CXL_FEAT_ENTRY_SFE_CEL_VALID, + }; + break; + case CXL_FEATURE_RANK_SPARING: + /* Fill supported feature entry for Rank Memory Sparing */ + get_feats_out->feat_entries[entry++] =3D + (struct CXLSupportedFeatureEntry) { + .uuid =3D rank_sparing_uuid, + .feat_index =3D index, + .get_feat_size =3D sizeof(CXLMemSparingReadAttrs), + .set_feat_size =3D sizeof(CXLMemSparingWriteAttrs), + .attr_flags =3D CXL_FEAT_ENTRY_ATTR_FLAG_CHANGABLE | + CXL_FEAT_ENTRY_ATTR_FLAG_SUPPORT_DEFAULT_SEL, + .get_feat_version =3D CXL_MEMDEV_SPARING_GET_FEATURE_VERSI= ON, + .set_feat_version =3D CXL_MEMDEV_SPARING_SET_FEATURE_VERSI= ON, + .set_feat_effects =3D CXL_FEAT_ENTRY_SFE_IMMEDIATE_CONFIG_= CHANGE | + CXL_FEAT_ENTRY_SFE_CEL_VALID, + }; + break; default: __builtin_unreachable(); } @@ -1411,6 +1508,47 @@ static CXLRetCode cmd_features_get_feature(const str= uct cxl_cmd *cmd, memcpy(payload_out, (uint8_t *)&ct3d->hard_ppr_attrs + get_feature->offset, bytes_to_copy); + } else if (qemu_uuid_is_equal(&get_feature->uuid, + &cacheline_sparing_uuid)) { + if (get_feature->offset >=3D sizeof(CXLMemSparingReadAttrs)) { + return CXL_MBOX_INVALID_INPUT; + } + bytes_to_copy =3D sizeof(CXLMemSparingReadAttrs) - + get_feature->offset; + bytes_to_copy =3D MIN(bytes_to_copy, get_feature->count); + memcpy(payload_out, + (uint8_t *)&ct3d->cacheline_sparing_attrs + get_feature->of= fset, + bytes_to_copy); + } else if (qemu_uuid_is_equal(&get_feature->uuid, &row_sparing_uuid)) { + if (get_feature->offset >=3D sizeof(CXLMemSparingReadAttrs)) { + return CXL_MBOX_INVALID_INPUT; + } + bytes_to_copy =3D sizeof(CXLMemSparingReadAttrs) - + get_feature->offset; + bytes_to_copy =3D MIN(bytes_to_copy, get_feature->count); + memcpy(payload_out, + (uint8_t *)&ct3d->row_sparing_attrs + get_feature->offset, + bytes_to_copy); + } else if (qemu_uuid_is_equal(&get_feature->uuid, &bank_sparing_uuid))= { + if (get_feature->offset >=3D sizeof(CXLMemSparingReadAttrs)) { + return CXL_MBOX_INVALID_INPUT; + } + bytes_to_copy =3D sizeof(CXLMemSparingReadAttrs) - + get_feature->offset; + bytes_to_copy =3D MIN(bytes_to_copy, get_feature->count); + memcpy(payload_out, + (uint8_t *)&ct3d->bank_sparing_attrs + get_feature->offset, + bytes_to_copy); + } else if (qemu_uuid_is_equal(&get_feature->uuid, &rank_sparing_uuid))= { + if (get_feature->offset >=3D sizeof(CXLMemSparingReadAttrs)) { + return CXL_MBOX_INVALID_INPUT; + } + bytes_to_copy =3D sizeof(CXLMemSparingReadAttrs) - + get_feature->offset; + bytes_to_copy =3D MIN(bytes_to_copy, get_feature->count); + memcpy(payload_out, + (uint8_t *)&ct3d->rank_sparing_attrs + get_feature->offset, + bytes_to_copy); } else { return CXL_MBOX_UNSUPPORTED; } @@ -1560,6 +1698,78 @@ static CXLRetCode cmd_features_set_feature(const str= uct cxl_cmd *cmd, ct3d->hard_ppr_attrs.hppr_op_mode =3D ct3d->hard_ppr_wr_attrs.hppr_op_mode; } + } else if (qemu_uuid_is_equal(&hdr->uuid, &cacheline_sparing_uuid)) { + CXLMemSparingSetFeature *mem_sparing_set_feature =3D (void *)paylo= ad_in; + CXLMemSparingWriteAttrs *mem_sparing_write_attrs =3D + &mem_sparing_set_feature->feat_data; + + if (hdr->version !=3D CXL_MEMDEV_SPARING_SET_FEATURE_VERSION) { + return CXL_MBOX_UNSUPPORTED; + } + + memcpy((uint8_t *)&ct3d->cacheline_sparing_wr_attrs + hdr->offset, + mem_sparing_write_attrs, bytes_to_copy); + set_feat_info->data_size +=3D bytes_to_copy; + + if (data_transfer_flag =3D=3D CXL_SET_FEATURE_FLAG_FULL_DATA_TRANS= FER || + data_transfer_flag =3D=3D CXL_SET_FEATURE_FLAG_FINISH_DATA_TRA= NSFER) { + ct3d->cacheline_sparing_attrs.op_mode =3D + ct3d->cacheline_sparing_wr_attrs.op_mo= de; + } + } else if (qemu_uuid_is_equal(&hdr->uuid, &row_sparing_uuid)) { + CXLMemSparingSetFeature *mem_sparing_set_feature =3D (void *)paylo= ad_in; + CXLMemSparingWriteAttrs *mem_sparing_write_attrs =3D + &mem_sparing_set_feature->feat_data; + + if (hdr->version !=3D CXL_MEMDEV_SPARING_SET_FEATURE_VERSION) { + return CXL_MBOX_UNSUPPORTED; + } + + memcpy((uint8_t *)&ct3d->row_sparing_wr_attrs + hdr->offset, + mem_sparing_write_attrs, bytes_to_copy); + set_feat_info->data_size +=3D bytes_to_copy; + + if (data_transfer_flag =3D=3D CXL_SET_FEATURE_FLAG_FULL_DATA_TRANS= FER || + data_transfer_flag =3D=3D CXL_SET_FEATURE_FLAG_FINISH_DATA_TRA= NSFER) { + ct3d->row_sparing_attrs.op_mode =3D + ct3d->row_sparing_wr_attrs.op_mode; + } + } else if (qemu_uuid_is_equal(&hdr->uuid, &bank_sparing_uuid)) { + CXLMemSparingSetFeature *mem_sparing_set_feature =3D (void *)paylo= ad_in; + CXLMemSparingWriteAttrs *mem_sparing_write_attrs =3D + &mem_sparing_set_feature->feat_data; + + if (hdr->version !=3D CXL_MEMDEV_SPARING_SET_FEATURE_VERSION) { + return CXL_MBOX_UNSUPPORTED; + } + + memcpy((uint8_t *)&ct3d->bank_sparing_wr_attrs + hdr->offset, + mem_sparing_write_attrs, bytes_to_copy); + set_feat_info->data_size +=3D bytes_to_copy; + + if (data_transfer_flag =3D=3D CXL_SET_FEATURE_FLAG_FULL_DATA_TRANS= FER || + data_transfer_flag =3D=3D CXL_SET_FEATURE_FLAG_FINISH_DATA_TRA= NSFER) { + ct3d->bank_sparing_attrs.op_mode =3D + ct3d->bank_sparing_wr_attrs.op_mode; + } + } else if (qemu_uuid_is_equal(&hdr->uuid, &rank_sparing_uuid)) { + CXLMemSparingSetFeature *mem_sparing_set_feature =3D (void *)paylo= ad_in; + CXLMemSparingWriteAttrs *mem_sparing_write_attrs =3D + &mem_sparing_set_feature->feat_data; + + if (hdr->version !=3D CXL_MEMDEV_SPARING_SET_FEATURE_VERSION) { + return CXL_MBOX_UNSUPPORTED; + } + + memcpy((uint8_t *)&ct3d->rank_sparing_wr_attrs + hdr->offset, + mem_sparing_write_attrs, bytes_to_copy); + set_feat_info->data_size +=3D bytes_to_copy; + + if (data_transfer_flag =3D=3D CXL_SET_FEATURE_FLAG_FULL_DATA_TRANS= FER || + data_transfer_flag =3D=3D CXL_SET_FEATURE_FLAG_FINISH_DATA_TRA= NSFER) { + ct3d->rank_sparing_attrs.op_mode =3D + ct3d->rank_sparing_wr_attrs.op_mode; + } } else { return CXL_MBOX_UNSUPPORTED; } @@ -1576,6 +1786,15 @@ static CXLRetCode cmd_features_set_feature(const str= uct cxl_cmd *cmd, memset(&ct3d->soft_ppr_wr_attrs, 0, set_feat_info->data_size); } else if (qemu_uuid_is_equal(&hdr->uuid, &hard_ppr_uuid)) { memset(&ct3d->hard_ppr_wr_attrs, 0, set_feat_info->data_size); + } else if (qemu_uuid_is_equal(&hdr->uuid, &cacheline_sparing_uuid)= ) { + memset(&ct3d->cacheline_sparing_wr_attrs, 0, + set_feat_info->data_size); + } else if (qemu_uuid_is_equal(&hdr->uuid, &row_sparing_uuid)) { + memset(&ct3d->row_sparing_wr_attrs, 0, set_feat_info->data_siz= e); + } else if (qemu_uuid_is_equal(&hdr->uuid, &bank_sparing_uuid)) { + memset(&ct3d->bank_sparing_wr_attrs, 0, set_feat_info->data_si= ze); + } else if (qemu_uuid_is_equal(&hdr->uuid, &rank_sparing_uuid)) { + memset(&ct3d->rank_sparing_wr_attrs, 0, set_feat_info->data_si= ze); } set_feat_info->data_transfer_flag =3D 0; set_feat_info->data_saved_across_reset =3D false; @@ -1586,9 +1805,27 @@ static CXLRetCode cmd_features_set_feature(const str= uct cxl_cmd *cmd, return CXL_MBOX_SUCCESS; } =20 -static void cxl_mbox_create_mem_sparing_event_records(CXLType3Dev *ct3d, +#define CXL_MEM_SPARING_FLAGS_QUERY_RESOURCES BIT(0) +#define CXL_MEM_SPARING_FLAGS_HARD_SPARING BIT(1) +#define CXL_MEM_SPARING_FLAGS_SUB_CHANNEL_VALID BIT(2) +#define CXL_MEM_SPARING_FLAGS_NIB_MASK_VALID BIT(3) + +typedef struct CXLMemSparingMaintInPayload { + uint8_t flags; + uint8_t channel; + uint8_t rank; + uint8_t nibble_mask[3]; + uint8_t bank_group; + uint8_t bank; + uint8_t row[3]; + uint16_t column; + uint8_t sub_channel; +} QEMU_PACKED CXLMemSparingMaintInPayload; + +static void cxl_create_mem_sparing_event_records(CXLType3Dev *ct3d, uint8_t maint_op_class, uint8_t maint_op_sub_c= lass, - CXLMaintenance *ent) + CXLMaintenance *ent, + CXLMemSparingMaintInPayload *sparing_pi) { CXLEventSparing event_rec =3D {}; =20 @@ -1616,6 +1853,31 @@ static void cxl_mbox_create_mem_sparing_event_record= s(CXLType3Dev *ct3d, strncpy((char *)event_rec.component_id, (char *)ent->component= _id, sizeof(event_rec.component_id)); } + } else if (sparing_pi) { + event_rec.flags =3D CXL_MSER_FLAGS_QUERY_RESOURCES; + event_rec.result =3D 0; + event_rec.validity_flags =3D CXL_MSER_VALID_CHANNEL | + CXL_MSER_VALID_RANK | + CXL_MSER_VALID_NIB_MASK | + CXL_MSER_VALID_BANK_GROUP | + CXL_MSER_VALID_BANK | + CXL_MSER_VALID_ROW | + CXL_MSER_VALID_COLUMN; + event_rec.res_avail =3D 1; + event_rec.channel =3D sparing_pi->channel; + event_rec.rank =3D sparing_pi->rank; + if (sparing_pi->flags & CXL_MEM_SPARING_FLAGS_NIB_MASK_VALID) { + memcpy(event_rec.nibble_mask, sparing_pi->nibble_mask, + sizeof(sparing_pi->nibble_mask)); + } + event_rec.bank_group =3D sparing_pi->bank_group; + event_rec.bank =3D sparing_pi->bank; + event_rec.column =3D sparing_pi->column; + memcpy(event_rec.row, sparing_pi->row, sizeof(sparing_pi->row)); + if (sparing_pi->flags & CXL_MEM_SPARING_FLAGS_SUB_CHANNEL_VALID) { + event_rec.sub_channel =3D sparing_pi->sub_channel; + event_rec.validity_flags |=3D CXL_MSER_VALID_SUB_CHANNEL; + } } else { return; } @@ -1627,6 +1889,26 @@ static void cxl_mbox_create_mem_sparing_event_record= s(CXLType3Dev *ct3d, } } =20 +static CXLRetCode cxl_perform_mem_sparing(CXLType3Dev *ct3d, uint8_t sub_c= lass, + void *maint_pi) +{ + switch (sub_class) { + case CXL_MEMDEV_MAINT_SUBCLASS_CACHELINE_SPARING: + qemu_log("Cacheline Memory Sparing\n"); + return CXL_MBOX_SUCCESS; + case CXL_MEMDEV_MAINT_SUBCLASS_ROW_SPARING: + qemu_log("Row Memory Sparing\n"); + return CXL_MBOX_SUCCESS; + case CXL_MEMDEV_MAINT_SUBCLASS_BANK_SPARING: + qemu_log("Bank Memory Sparing\n"); + return CXL_MBOX_SUCCESS; + case CXL_MEMDEV_MAINT_SUBCLASS_RANK_SPARING: + qemu_log("Rank Memory Sparing\n"); + return CXL_MBOX_SUCCESS; + default: + return CXL_MBOX_INVALID_INPUT; + } +} =20 static void cxl_perform_ppr(CXLType3Dev *ct3d, uint64_t dpa) { @@ -1637,10 +1919,10 @@ static void cxl_perform_ppr(CXLType3Dev *ct3d, uint= 64_t dpa) /* Produce a Memory Sparing Event Record */ if (ct3d->soft_ppr_attrs.sppr_op_mode & CXL_MEMDEV_SPPR_OP_MODE_MEM_SPARING_EV_REC_EN) { - cxl_mbox_create_mem_sparing_event_records(ct3d, + cxl_create_mem_sparing_event_records(ct3d, CXL_MEMDEV_MAINT_CLASS_SPARING, CXL_MEMDEV_MAINT_SUBCLASS_CACHELINE_SPARIN= G, - ent); + ent, NULL); } break; } @@ -1664,6 +1946,7 @@ static CXLRetCode cmd_media_perform_maintenance(const= struct cxl_cmd *cmd, uint64_t dpa; uint8_t nibble_mask[3]; } QEMU_PACKED ppr; + CXLMemSparingMaintInPayload mem_sparing_pi; }; } QEMU_PACKED *maint_in =3D (void *)payload_in; CXLType3Dev *ct3d =3D CXL_TYPE3(cci->d); @@ -1689,6 +1972,32 @@ static CXLRetCode cmd_media_perform_maintenance(cons= t struct cxl_cmd *cmd, return CXL_MBOX_INVALID_INPUT; } break; + case CXL_MEMDEV_MAINT_CLASS_SPARING: + if (maint_in->mem_sparing_pi.flags & + CXL_MEM_SPARING_FLAGS_QUERY_RESOURCES) { + /* + * CXL r3.2 sect 8.2.10.7.1.4 - Memory Sparing Maintenance Ope= ration + * Produce Memory Sparing Event record to report resources + * availability. + */ + cxl_create_mem_sparing_event_records(ct3d, maint_in->class, + maint_in->subclass, NULL, + &maint_in->mem_sparing_pi= ); + + return CXL_MBOX_SUCCESS; + } + + switch (maint_in->subclass) { + case CXL_MEMDEV_MAINT_SUBCLASS_CACHELINE_SPARING: + case CXL_MEMDEV_MAINT_SUBCLASS_ROW_SPARING: + case CXL_MEMDEV_MAINT_SUBCLASS_BANK_SPARING: + case CXL_MEMDEV_MAINT_SUBCLASS_RANK_SPARING: + return cxl_perform_mem_sparing(ct3d, maint_in->subclass, + &maint_in->mem_sparing_pi); + default: + return CXL_MBOX_INVALID_INPUT; + } + break; default: return CXL_MBOX_INVALID_INPUT; } diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c index b02dc31f11..7e309af935 100644 --- a/hw/mem/cxl_type3.c +++ b/hw/mem/cxl_type3.c @@ -990,6 +990,50 @@ static void ct3_realize(PCIDevice *pci_dev, Error **er= rp) .hppr_op_mode =3D CXL_MEMDEV_HPPR_OP_MODE_MEM_SPARING_EV_REC_EN }; =20 + /* Set default value for Cacheline Memory Sparing attributes */ + ct3d->cacheline_sparing_attrs =3D (CXLMemSparingReadAttrs) { + .max_maint_latency =3D 0x5, /* 100 ms */ + .op_caps =3D 0, /* require host involvement */ + .op_mode =3D 0, + .maint_op_class =3D CXL_MEMDEV_MAINT_CLASS_SPARING, + .maint_op_subclass =3D CXL_MEMDEV_MAINT_SUBCLASS_CACHELINE_SPARING, + .restriction_flags =3D CXL_MEMDEV_HARD_SPARING_SUPPORT_FLAG | + CXL_MEMDEV_SOFT_SPARING_SUPPORT_FLAG, + }; + + /* Set default value for Row Memory Sparing attributes */ + ct3d->row_sparing_attrs =3D (CXLMemSparingReadAttrs) { + .max_maint_latency =3D 0x5, /* 100 ms */ + .op_caps =3D 0, /* require host involvement */ + .op_mode =3D 0, + .maint_op_class =3D CXL_MEMDEV_MAINT_CLASS_SPARING, + .maint_op_subclass =3D CXL_MEMDEV_MAINT_SUBCLASS_ROW_SPARING, + .restriction_flags =3D CXL_MEMDEV_HARD_SPARING_SUPPORT_FLAG | + CXL_MEMDEV_SOFT_SPARING_SUPPORT_FLAG, + }; + + /* Set default value for Bank Memory Sparing attributes */ + ct3d->bank_sparing_attrs =3D (CXLMemSparingReadAttrs) { + .max_maint_latency =3D 0x5, /* 100 ms */ + .op_caps =3D 0, /* require host involvement */ + .op_mode =3D 0, + .maint_op_class =3D CXL_MEMDEV_MAINT_CLASS_SPARING, + .maint_op_subclass =3D CXL_MEMDEV_MAINT_SUBCLASS_BANK_SPARING, + .restriction_flags =3D CXL_MEMDEV_HARD_SPARING_SUPPORT_FLAG | + CXL_MEMDEV_SOFT_SPARING_SUPPORT_FLAG, + }; + + /* Set default value for Rank Memory Sparing attributes */ + ct3d->rank_sparing_attrs =3D (CXLMemSparingReadAttrs) { + .max_maint_latency =3D 0x5, /* 100 ms */ + .op_caps =3D 0, /* require host involvement */ + .op_mode =3D 0, + .maint_op_class =3D CXL_MEMDEV_MAINT_CLASS_SPARING, + .maint_op_subclass =3D CXL_MEMDEV_MAINT_SUBCLASS_RANK_SPARING, + .restriction_flags =3D CXL_MEMDEV_HARD_SPARING_SUPPORT_FLAG | + CXL_MEMDEV_SOFT_SPARING_SUPPORT_FLAG, + }; + return; =20 err_release_cdat: diff --git a/include/hw/cxl/cxl_device.h b/include/hw/cxl/cxl_device.h index 72e8c68187..55797a9ec3 100644 --- a/include/hw/cxl/cxl_device.h +++ b/include/hw/cxl/cxl_device.h @@ -608,6 +608,30 @@ typedef struct CXLMemECSWriteAttrs { CXLMemECSFRUWriteAttrs fru_attrs[CXL_ECS_NUM_MEDIA_FRUS]; } QEMU_PACKED CXLMemECSWriteAttrs; =20 +/* + * CXL r3.2 section 8.2.10.7.2.3, Table 8-134 and 8-135: + * Memory Sparing Feature Readable/Writable Attributes + */ +typedef struct CXLMemSparingReadAttrs { + uint8_t max_maint_latency; + uint16_t op_caps; + uint16_t op_mode; + uint8_t maint_op_class; + uint8_t maint_op_subclass; + uint8_t rsvd[10]; + uint16_t restriction_flags; +} QEMU_PACKED CXLMemSparingReadAttrs; + +typedef struct CXLMemSparingWriteAttrs { + uint16_t op_mode; +} QEMU_PACKED CXLMemSparingWriteAttrs; + +#define CXL_MEMDEV_SPARING_GET_FEATURE_VERSION 0x01 +#define CXL_MEMDEV_SPARING_SET_FEATURE_VERSION 0x01 +#define CXL_MEMDEV_SPARING_SAFE_IN_USE_FLAG BIT(0) +#define CXL_MEMDEV_HARD_SPARING_SUPPORT_FLAG BIT(1) +#define CXL_MEMDEV_SOFT_SPARING_SUPPORT_FLAG BIT(2) + #define DCD_MAX_NUM_REGION 8 =20 typedef struct CXLDCExtentRaw { @@ -735,6 +759,15 @@ struct CXLType3Dev { /* ECS control attributes */ CXLMemECSReadAttrs ecs_attrs; CXLMemECSWriteAttrs ecs_wr_attrs; + /* Memory Sparing control attributes */ + CXLMemSparingReadAttrs cacheline_sparing_attrs; + CXLMemSparingWriteAttrs cacheline_sparing_wr_attrs; + CXLMemSparingReadAttrs row_sparing_attrs; + CXLMemSparingWriteAttrs row_sparing_wr_attrs; + CXLMemSparingReadAttrs bank_sparing_attrs; + CXLMemSparingWriteAttrs bank_sparing_wr_attrs; + CXLMemSparingReadAttrs rank_sparing_attrs; + CXLMemSparingWriteAttrs rank_sparing_wr_attrs; =20 struct dynamic_capacity { HostMemoryBackend *host_dc; diff --git a/include/hw/cxl/cxl_events.h b/include/hw/cxl/cxl_events.h index 7cba494b72..8a660c7a62 100644 --- a/include/hw/cxl/cxl_events.h +++ b/include/hw/cxl/cxl_events.h @@ -203,6 +203,11 @@ typedef enum CXLDCEventType { * CXL r3.2 section Table 8-60: Memory Sparing Event Record * All fields little endian. */ + +#define CXL_MSER_FLAGS_QUERY_RESOURCES BIT(0) +#define CXL_MSER_FLAGS_HARD_SPARING BIT(1) +#define CXL_MSER_FLAGS_DEV_INITIATED BIT(2) + #define CXL_MSER_VALID_CHANNEL BIT(0) #define CXL_MSER_VALID_RANK BIT(1) #define CXL_MSER_VALID_NIB_MASK BIT(2) --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231807; cv=none; d=zohomail.com; s=zohoarc; b=lQrZ25LgRptquVfn+g29eNzSJ/DDrJsx1V10YCE9J0e3Dbcx1DDLHvVCh9dKSP9ofp0T0i7qGJgOFASK03dZMH54ZuwiB5cZGEQgbeUfhQnJ8gm1daER8B4VhOutw85TVI3cH5dt9Qzp5g2fizXahyVQFm4FlQBAzV6eM42NZ1g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231807; h=Content-Type: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=s8o9e/d8lMOSdZF43VdPPly6c5Scmgonl/LFvLQlohY=; b=IpgsKtcPEQhynB0Y/f4YmnPGb+GWrL+9lo82Vh+m3AAHe1cWCrRyL7hqfhfI778s5uvVjvnrPcce7B4WCZUULUfpxW1AIA5cELKeDP152Jd1UxgtUGswIgaptCXYoI928J0aKBKWFioWXuZQr5dG66FtrJJs69LcNpOyk8mQhQU= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770231807663777.6544998185885; Wed, 4 Feb 2026 11:03:27 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vni9q-0006Cp-5g; Wed, 04 Feb 2026 14:03:23 -0500 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 1vni9e-00060d-S8 for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:12 -0500 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 1vni9d-0007iz-74 for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:10 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-530-wLjfd27pMXmOZH8bSFbaFA-1; Wed, 04 Feb 2026 14:03:04 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-430f5dcd4cdso136354f8f.2 for ; Wed, 04 Feb 2026 11:03:04 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43618057f93sm8039320f8f.24.2026.02.04.11.03.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231788; 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: in-reply-to:in-reply-to:references:references; bh=s8o9e/d8lMOSdZF43VdPPly6c5Scmgonl/LFvLQlohY=; b=EtBqCaRH7yY+6FB4rzHTSOFXr42tpI3Tc+s9T+8KXW0r4E3XvGm40qk0qf0pfRq/84uZM4 ClSOxwreNG/D6M449i0BYppgsc0+vLW0oCI05ENtmobCDTXKu8Gn2Y816DSizylwPvhtZc 0zjx/7LwRcm5dsHWqsHofpCLo0WUmD0= X-MC-Unique: wLjfd27pMXmOZH8bSFbaFA-1 X-Mimecast-MFC-AGG-ID: wLjfd27pMXmOZH8bSFbaFA_1770231783 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231783; x=1770836583; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=s8o9e/d8lMOSdZF43VdPPly6c5Scmgonl/LFvLQlohY=; b=g50qVF8F1zzsCyewCNkVCsh42Qg+mFo7w1v1Wc3zHGk8Po2psN/0thu0C5YDhi7Io+ KhNefZ1P5HNFRrWynrf5SlckgQMLRNiGoT7rgcDF5Qjbzu5tVbUJJg3AeXuGDsG3qziF JMAW95AEQ82+OhPyeMNopmg1CdtzzshtRiDOfEYsa9OzUoBqRF4wkOD29bAKgVOVtmJ4 5MSMQSnllnRu1s4ZDa5kc7Gs/TRyvwJNhLy6KPk0Iv3+bO56Q8kDvCFZ7C+lHiuF1L61 1EHb7Z0xK0fH11JNav2yGb5BN6yuqkVu70mjZepZQngpHMylXgl1leQotPRtIwWxRmjG yiBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231783; x=1770836583; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=s8o9e/d8lMOSdZF43VdPPly6c5Scmgonl/LFvLQlohY=; b=fn4A/r2z8nOK106z1cPIrNowquavaN2J9WUaQPQBFYofpm3suW9hGGRPTslkAsH3bJ O8a995o4qoDT3iKjmkiA2xpbNkKQrKXg2FfnClyUMNYeoo8BXVU2p8QdMGbnj/ODLMtT ryerZ/PLlwuHBkUinFKmckAG18kn47bDIOwPavoReh8GhBqYjVem4fQG5Cn0PXBp3fLw NXv/XTFUwpF1HfUiBi+7jmxSRGfUoBPujY1AkmC8HZcbBqOxUMBCYHSowr1H/wUD1zgD PfsMtaKKGmGWqfv8r81HCmCtu5wcM9J9fssIlXh32s1Y9OuTQlvpdwTogQkxCaMtRaiJ XTdQ== X-Gm-Message-State: AOJu0YwdBBNuQKbu2RMbidmWAW+uXtFpxOvN8H0Foy5SS5vPyVf5AtcK R0YTaheens6lbFc1zpmXZtz5emXJHVNHH3cMF1+cKlLJ9J9m8EiZlk8wIUMEk7PtNwoFuAk2H+J olpPFl9z4diyX2LZr9cKQ6Fkd8duQ62oCRJMFNTn+GQNIzqZ9G+dpQ0BphlQUSk/AKi6pVGvPtk 7MVukL5U0kzYh/dql7l+izPz67S4NZVEuY3Q== X-Gm-Gg: AZuq6aKLs7DpJPz0OkKAvRkwP/jiohFqoXhYtVCAi3NAflgfB/oSijVO2MxpDo/zP9e t+Mc+RlxA18ogW6ujZJjREL3NWh3Cg4lwlPx44B3nYlc/7hvyOTT76stJvu2Ss7dWIaMewQd2id m52OdEbXt/wcG0hcstxFraupBdK4PEbbYJfuopl/8ft0bUiscDZtse1UKp/z4GyfjMcOUEp3taC J/Fswhl6TbAuxgXvWY9Hl1CQzqONnPrkGvbDg86N6WP0f5POFUz5SmMqnzQh+knrG7DgYok9T+I OF+fR26XOF5XaILTwVXMXYBHov/YVKWj2FnokEwv9gGVlq+asyRNwyLKYeDMyUnxAMCZw/afEfW PDfmy165igObCag4IlhPGbf+cX4YX8CoLtA== X-Received: by 2002:a05:6000:24c6:b0:435:ab90:6f34 with SMTP id ffacd0b85a97d-43617e3fcf9mr5438935f8f.16.1770231782811; Wed, 04 Feb 2026 11:03:02 -0800 (PST) X-Received: by 2002:a05:6000:24c6:b0:435:ab90:6f34 with SMTP id ffacd0b85a97d-43617e3fcf9mr5438886f8f.16.1770231782333; Wed, 04 Feb 2026 11:03:02 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:00 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Shiju Jose , Markus Armbruster , Jonathan Cameron , Fan Ni , Eric Blake Subject: [PULL 05/51] qapi: cxl: Refactor CXL event injection for common commands arguments Message-ID: <785b458d94343c629d353628f9cf6e5774dbc2f6.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231809914154100 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Shiju Jose Refactor CXL event injection to use struct for common command arguments. Suggested-by: Markus Armbruster Signed-off-by: Shiju Jose Signed-off-by: Jonathan Cameron Reviewed-by: Michael S. Tsirkin Acked-by: Markus Armbruster Signed-off-by: Michael S. Tsirkin Message-Id: <20260114142713.617806-2-Jonathan.Cameron@huawei.com> --- qapi/cxl.json | 89 +++++++++++++++++++++++++++++++++------------------ 1 file changed, 58 insertions(+), 31 deletions(-) diff --git a/qapi/cxl.json b/qapi/cxl.json index eeddb58d1d..55a088586e 100644 --- a/qapi/cxl.json +++ b/qapi/cxl.json @@ -31,11 +31,10 @@ } =20 ## -# @cxl-inject-general-media-event: +# @CXLCommonEventBase: # -# Inject an event record for a General Media Event (CXL r3.0 -# 8.2.9.2.1.1). This event type is reported via one of the event logs -# specified via the log parameter. +# Common event base for a CXL Event (CXL r3.0 8.2.9.2.1 +# Table 8-42 Common Event Record Format). # # @path: CXL type 3 device canonical QOM path # @@ -44,6 +43,16 @@ # @flags: Event Record Flags. See CXL r3.0 Table 8-42 Common Event # Record Format, Event Record Flags for subfield definitions. # +# Since: 8.1 +## +{ 'struct': 'CXLCommonEventBase', + 'data': { 'path': 'str', 'log': 'CxlEventLog', 'flags': 'uint8' } } + +## +# @CXLGeneralMediaEvent: +# +# Event record for a General Media Event (CXL r3.0 8.2.9.2.1.1). +# # @dpa: Device Physical Address (relative to @path device). Note # lower bits include some flags. See CXL r3.0 Table 8-43 General # Media Event Record, Physical Address. @@ -74,26 +83,29 @@ # # Since: 8.1 ## -{ 'command': 'cxl-inject-general-media-event', - 'data': { 'path': 'str', 'log': 'CxlEventLog', 'flags': 'uint8', - 'dpa': 'uint64', 'descriptor': 'uint8', +{ 'struct': 'CXLGeneralMediaEvent', + 'base': 'CXLCommonEventBase', + 'data': { 'dpa': 'uint64', 'descriptor': 'uint8', 'type': 'uint8', 'transaction-type': 'uint8', '*channel': 'uint8', '*rank': 'uint8', '*device': 'uint32', '*component-id': 'str' } } =20 ## -# @cxl-inject-dram-event: +# @cxl-inject-general-media-event: # -# Inject an event record for a DRAM Event (CXL r3.0 8.2.9.2.1.2). -# This event type is reported via one of the event logs specified via -# the log parameter. +# Inject an event record for a General Media Event (CXL r3.0 +# 8.2.9.2.1.1). This event type is reported via one of the event +# logs specified via the log parameter. # -# @path: CXL type 3 device canonical QOM path +# Since: 8.1 +## +{ 'command': 'cxl-inject-general-media-event', + 'data': 'CXLGeneralMediaEvent' } + +## +# @CXLDRAMEvent: # -# @log: Event log to add the event to -# -# @flags: Event Record Flags. See CXL r3.0 Table 8-42 Common Event -# Record Format, Event Record Flags for subfield definitions. +# Event record for a DRAM Event (CXL r3.0 8.2.9.2.1.2). # # @dpa: Device Physical Address (relative to @path device). Note # lower bits include some flags. See CXL r3.0 Table 8-44 DRAM @@ -133,9 +145,9 @@ # # Since: 8.1 ## -{ 'command': 'cxl-inject-dram-event', - 'data': { 'path': 'str', 'log': 'CxlEventLog', 'flags': 'uint8', - 'dpa': 'uint64', 'descriptor': 'uint8', +{ 'struct': 'CXLDRAMEvent', + 'base': 'CXLCommonEventBase', + 'data': { 'dpa': 'uint64', 'descriptor': 'uint8', 'type': 'uint8', 'transaction-type': 'uint8', '*channel': 'uint8', '*rank': 'uint8', '*nibble-mask': 'uint32= ', '*bank-group': 'uint8', '*bank': 'uint8', '*row': 'uint32', @@ -143,18 +155,21 @@ }} =20 ## -# @cxl-inject-memory-module-event: +# @cxl-inject-dram-event: # -# Inject an event record for a Memory Module Event (CXL r3.0 -# 8.2.9.2.1.3). This event includes a copy of the Device Health info -# at the time of the event. +# Inject an event record for a DRAM Event (CXL r3.0 8.2.9.2.1.2). +# This event type is reported via one of the event logs +# specified via the log parameter. # -# @path: CXL type 3 device canonical QOM path +# Since: 8.1 +## +{ 'command': 'cxl-inject-dram-event', + 'data': 'CXLDRAMEvent' } + +## +# @CXLMemModuleEvent: # -# @log: Event Log to add the event to -# -# @flags: Event Record Flags. See CXL r3.0 Table 8-42 Common Event -# Record Format, Event Record Flags for subfield definitions. +# Event record for a Memory Module Event (CXL r3.0 8.2.9.2.1.3). # # @type: Device Event Type. See CXL r3.0 Table 8-45 Memory Module # Event Record for bit definitions for bit definiions. @@ -185,9 +200,9 @@ # # Since: 8.1 ## -{ 'command': 'cxl-inject-memory-module-event', - 'data': { 'path': 'str', 'log': 'CxlEventLog', 'flags' : 'uint8', - 'type': 'uint8', 'health-status': 'uint8', +{ 'struct': 'CXLMemModuleEvent', + 'base': 'CXLCommonEventBase', + 'data': { 'type': 'uint8', 'health-status': 'uint8', 'media-status': 'uint8', 'additional-status': 'uint8', 'life-used': 'uint8', 'temperature' : 'int16', 'dirty-shutdown-count': 'uint32', @@ -195,6 +210,18 @@ 'corrected-persistent-error-count': 'uint32' }} =20 +## +# @cxl-inject-memory-module-event: +# +# Inject an event record for a Memory Module Event (CXL r3.0 +# 8.2.9.2.1.3). This event includes a copy of the Device Health info +# at the time of the event. +# +# Since: 8.1 +## +{ 'command': 'cxl-inject-memory-module-event', + 'data': 'CXLMemModuleEvent' } + ## # @cxl-inject-poison: # --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770232190; cv=none; d=zohomail.com; s=zohoarc; b=QegHUgEh1a//qLVh7feuUt95z5jd/17DQu9mCQuooAuoChXPfR6z8baUnl9j5f14RoJYDnlxml30V5hGFCYicvNrthxGH1xxd86HB3NMW8Gvc+ltHn253E+aqjgU1m3ZSh2Y9yHuDv7mXk6P08BHL29OUqAJjtNiHVmkAg4f28Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770232190; h=Content-Type: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=/H/nOwPy1clw3cBTBK6YYqL/OwBsbWaEEzhWP5t18qI=; b=Xo19J2BOnAY9BOBtkScc0A14qaJfMn4/0tSHkfuq+Yk21l9jTYQK6n+RjuvsK+UEDfA5UHfcZM80pg07gYMOVsxRIjOue6JMgMg0UCNDsI8vcD4iZn4qGtxd2mHJhNUCu/IqXVPY1/I7wsoo1ClYfe4c8SpTA2JInA4se4332vg= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770232190404420.7360759905405; Wed, 4 Feb 2026 11:09:50 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vni9t-0006OY-67; Wed, 04 Feb 2026 14:03:25 -0500 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 1vni9g-000614-9N for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:12 -0500 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 1vni9c-0007ix-Nv for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:11 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-582-smdjZA2hNp2A5SvHmwAvKw-1; Wed, 04 Feb 2026 14:03:06 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-48071615686so1243865e9.1 for ; Wed, 04 Feb 2026 11:03:06 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43618057f66sm7897314f8f.25.2026.02.04.11.03.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231787; 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: in-reply-to:in-reply-to:references:references; bh=/H/nOwPy1clw3cBTBK6YYqL/OwBsbWaEEzhWP5t18qI=; b=B6ke6/NAXRwb5v2bpE14clqea2/AywXBRkpdf9FgSsI7fo4CMrfMczmE+D4iUQ5rQb4WZ0 P5TaYj5tjG1cd8+PUgh3UGEElkm5qcuHAdc5IsB1pMBzDqApN46tSI1IyK9QAkNCV9jBY9 0Y/kA6YDyAdoEPnuzwKAWJbIVcMb+Eg= X-MC-Unique: smdjZA2hNp2A5SvHmwAvKw-1 X-Mimecast-MFC-AGG-ID: smdjZA2hNp2A5SvHmwAvKw_1770231786 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231785; x=1770836585; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=/H/nOwPy1clw3cBTBK6YYqL/OwBsbWaEEzhWP5t18qI=; b=ZhdW9fyJpxNfB0SNoAWlEGknNXYVdlvkrSvRkjt9yeIUY/8NB2apoBd5wSwm22rugK PoZvAHR+bSn8l1aA4tRC936jzIMLmREh7M6hs2FxI7AKaHlZeOmvoNhl+WuAH16PIq8m 1kOKdFekqmwThUgTgUnXpT2NJhM60lh73WI8afyp/JhjcDieY3DHL7cA9LmwoFYZSMfy 4U95vj7XEYOR58qhbCkpasWSYBwoJ2QMXdvbOgj8c17ozw4i+Ye+Qsn2XSC6O37wwzrs Ef+sNJlBUY2w84H0nCBojK3OzRmpZv4JbTh5hhqcHyamWb4BSuXI9tHPJh9AYaziLo5g ju1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231785; x=1770836585; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/H/nOwPy1clw3cBTBK6YYqL/OwBsbWaEEzhWP5t18qI=; b=BjuI3ls93X/OFYt0hsb0EKhfqRMJhoJ360zbTcUA7o8Low/0i7Y2Uc9G1MkqbqwH/D bUo+zkP7BqY+LcfRL3fP4sGl99+V4SPl6CqXmr51ay/5KRnyfMP/R64SVaC5/egp/Gxy ZuUe6Z1Oc17Jo1ISD+J84Ju9WUa/Akt/YDQLXSPNQN0Dubi3AOV4l6pgW17dJKPbDRC+ dGMQBql2y9kkS+1BH4/jqMNM0/1TS+1c+Y6jeeaabogwbbnaECk9YlmwaJ5+G1JFCND4 50gcLbPPUtiZcqlxKpIa2jzpWgg7dRCUY2+zzN7OQb43EBbRtt8IL98EFmjq6Re0xYyu OSXQ== X-Gm-Message-State: AOJu0YyH4lOpIR0eh3TXC+aPIEgH6rk1UuYD2yLsKOm1kCN2uwTYqdQZ bVNHpwvF+YDb99xkbN5du+hsPyOEet55Dluc8p00W1AZWX1/T/2aSybD/XPDLTMeBxHtHz9WrI2 jcC/Fb9ejZ94s/otghsh9olmPfsxt4EVuRjTPIqiJTeINs+dUGLUQy/DsW9udskZaAMHzdtkCQ+ LJWYPkCV4ZmVRGRHIVjgFvxlD5ArX+gtZ4pg== X-Gm-Gg: AZuq6aI8RZ8LZaSNo8d0hMKaKjEHbSZxkkuVIX1jDDX1DFM820oc5S8U9IjNMhinOei 3nA0mpCSOtrW6UR/hnY9umc7KTtVvhafs1Y9pgBSdBrFf+rNKxE2PkXWyJG3WJgGzUjE3ak30Ej 20/VfxZhNkCVC1rSq8FTsrz8VE6X52KiOyBKjhvdNqS6SKnZ8+FsoB3z3mq8YV30YMfXC3VnrtC 1XN5XcvuqFJ7P6PeJsIcaS78IJWI0xWjTUM4gF/ZZm5P8+OZsTK7zmJWwPwezmC5PYgvyo93eal e4IyaeRmbOnQcenTLGA1ZPP7mJ1IPNdgEcxN/i7GyPvOgqHhTC/ucqi5750NRRFPQ1AXR/y7/1z JG320CGhqo4VScoauHu4mRazpbugDqHLVQg== X-Received: by 2002:a05:600c:5295:b0:47f:8c05:786b with SMTP id 5b1f17b1804b1-4830e977283mr48804675e9.28.1770231785052; Wed, 04 Feb 2026 11:03:05 -0800 (PST) X-Received: by 2002:a05:600c:5295:b0:47f:8c05:786b with SMTP id 5b1f17b1804b1-4830e977283mr48804245e9.28.1770231784583; Wed, 04 Feb 2026 11:03:04 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:02 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Shiju Jose , Jonathan Cameron , Markus Armbruster , Fan Ni , Eric Blake Subject: [PULL 06/51] hw/cxl/events: Update for rev3.2 common event record format Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770232191069158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Shiju Jose CXL spec 3.2 section 8.2.9.2.1 Table 8-55, Common Event Record format has updated with optional Maintenance Operation Subclass, LD ID and ID of the device head information. Add updates for the above optional parameters in the related CXL events reporting and in the QMP commands to inject CXL events. Update all related specification references to CXL r3.2 to ensure one consistent source. Signed-off-by: Shiju Jose Signed-off-by: Jonathan Cameron Reviewed-by: Michael S. Tsirkin Acked-by: Markus Armbruster Signed-off-by: Michael S. Tsirkin Message-Id: <20260114142713.617806-3-Jonathan.Cameron@huawei.com> --- hw/cxl/cxl-events.c | 3 +- hw/cxl/cxl-mailbox-utils.c | 3 +- hw/mem/cxl_type3.c | 70 ++++++++++++++++++++++++++++++++----- hw/mem/cxl_type3_stubs.c | 24 +++++++++++-- include/hw/cxl/cxl_device.h | 7 +++- include/hw/cxl/cxl_events.h | 15 ++++++-- qapi/cxl.json | 21 ++++++++--- 7 files changed, 122 insertions(+), 21 deletions(-) diff --git a/hw/cxl/cxl-events.c b/hw/cxl/cxl-events.c index 7583dd9162..5356dfb5b3 100644 --- a/hw/cxl/cxl-events.c +++ b/hw/cxl/cxl-events.c @@ -271,7 +271,8 @@ void cxl_create_dc_event_records_for_extents(CXLType3De= v *ct3d, &dynamic_capacity_uuid, (1 << CXL_EVENT_TYPE_INFO), sizeof(event_rec), - cxl_device_get_timestamp(&ct3d->cxl_dstate)); + cxl_device_get_timestamp(&ct3d->cxl_dstate), + 0, 0, 0, 0, 0, 0, 0, 0); event_rec.type =3D type; event_rec.validity_flags =3D 1; event_rec.host_id =3D 0; diff --git a/hw/cxl/cxl-mailbox-utils.c b/hw/cxl/cxl-mailbox-utils.c index a4bd49e113..a64b8ba535 100644 --- a/hw/cxl/cxl-mailbox-utils.c +++ b/hw/cxl/cxl-mailbox-utils.c @@ -3994,7 +3994,8 @@ static CXLRetCode cmd_fm_set_dc_region_config(const s= truct cxl_cmd *cmd, &dynamic_capacity_uuid, (1 << CXL_EVENT_TYPE_INFO), sizeof(dcEvent), - cxl_device_get_timestamp(&ct3d->cxl_dstate)); + cxl_device_get_timestamp(&ct3d->cxl_dstate), + 0, 0, 0, 0, 0, 0, 0, 0); dcEvent.type =3D DC_EVENT_REGION_CONFIG_UPDATED; dcEvent.validity_flags =3D 1; dcEvent.host_id =3D 0; diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c index 7e309af935..e5248ba4b6 100644 --- a/hw/mem/cxl_type3.c +++ b/hw/mem/cxl_type3.c @@ -1662,12 +1662,39 @@ void qmp_cxl_inject_correctable_error(const char *p= ath, CxlCorErrorType type, =20 void cxl_assign_event_header(CXLEventRecordHdr *hdr, const QemuUUID *uuid, uint32_t flags, - uint8_t length, uint64_t timestamp) + uint8_t length, uint64_t timestamp, + bool has_maint_op_class, uint8_t maint_op_cla= ss, + bool has_maint_op_subclass, + uint8_t maint_op_subclass, + bool has_ld_id, uint16_t ld_id, + bool has_head_id, uint8_t head_id) { - st24_le_p(&hdr->flags, flags); hdr->length =3D length; memcpy(&hdr->id, uuid, sizeof(hdr->id)); stq_le_p(&hdr->timestamp, timestamp); + + if (has_maint_op_class) { + hdr->maint_op_class =3D maint_op_class; + } else { + hdr->maint_op_class =3D 0; + } + + if (has_maint_op_subclass) { + flags |=3D CXL_EVENT_REC_FLAGS_MAINT_OP_SUBCLASS_VALID; + hdr->maint_op_subclass =3D maint_op_subclass; + } + + if (has_ld_id) { + flags |=3D CXL_EVENT_REC_FLAGS_LD_ID_VALID; + stw_le_p(&hdr->ld_id, ld_id); + } + + if (has_head_id) { + flags |=3D CXL_EVENT_REC_FLAGS_HEAD_ID_VALID; + hdr->head_id =3D head_id; + } + + st24_le_p(&hdr->flags, flags); } =20 static const QemuUUID gen_media_uuid =3D { @@ -1776,7 +1803,13 @@ static void cxl_maintenance_insert(CXLType3Dev *ct3d= , uint64_t dpa, =20 /* Component ID is device specific. Define this as a string. */ void qmp_cxl_inject_general_media_event(const char *path, CxlEventLog log, - uint8_t flags, uint64_t dpa, + uint32_t flags, bool has_maint_op_= class, + uint8_t maint_op_class, + bool has_maint_op_subclass, + uint8_t maint_op_subclass, + bool has_ld_id, uint16_t ld_id, + bool has_head_id, uint8_t head_id, + uint64_t dpa, uint8_t descriptor, uint8_t type, uint8_t transaction_type, bool has_channel, uint8_t channel, @@ -1819,7 +1852,10 @@ void qmp_cxl_inject_general_media_event(const char *= path, CxlEventLog log, =20 memset(&gem, 0, sizeof(gem)); cxl_assign_event_header(hdr, &gen_media_uuid, flags, sizeof(gem), - cxl_device_get_timestamp(&ct3d->cxl_dstate)); + cxl_device_get_timestamp(&ct3d->cxl_dstate), + has_maint_op_class, maint_op_class, + has_maint_op_subclass, maint_op_subclass, + has_ld_id, ld_id, has_head_id, head_id); =20 stq_le_p(&gem.phys_addr, dpa); gem.descriptor =3D descriptor; @@ -1872,7 +1908,13 @@ void qmp_cxl_inject_general_media_event(const char *= path, CxlEventLog log, #define CXL_DRAM_VALID_COLUMN BIT(6) #define CXL_DRAM_VALID_CORRECTION_MASK BIT(7) =20 -void qmp_cxl_inject_dram_event(const char *path, CxlEventLog log, uint8_t = flags, +void qmp_cxl_inject_dram_event(const char *path, CxlEventLog log, + uint32_t flags, + bool has_maint_op_class, uint8_t maint_op_c= lass, + bool has_maint_op_subclass, + uint8_t maint_op_subclass, + bool has_ld_id, uint16_t ld_id, + bool has_head_id, uint8_t head_id, uint64_t dpa, uint8_t descriptor, uint8_t type, uint8_t transaction_type, bool has_channel, uint8_t channel, @@ -1920,7 +1962,10 @@ void qmp_cxl_inject_dram_event(const char *path, Cxl= EventLog log, uint8_t flags, =20 memset(&dram, 0, sizeof(dram)); cxl_assign_event_header(hdr, &dram_uuid, flags, sizeof(dram), - cxl_device_get_timestamp(&ct3d->cxl_dstate)); + cxl_device_get_timestamp(&ct3d->cxl_dstate), + has_maint_op_class, maint_op_class, + has_maint_op_subclass, maint_op_subclass, + has_ld_id, ld_id, has_head_id, head_id); stq_le_p(&dram.phys_addr, dpa); dram.descriptor =3D descriptor; dram.type =3D type; @@ -1991,7 +2036,13 @@ void qmp_cxl_inject_dram_event(const char *path, Cxl= EventLog log, uint8_t flags, } =20 void qmp_cxl_inject_memory_module_event(const char *path, CxlEventLog log, - uint8_t flags, uint8_t type, + uint32_t flags, bool has_maint_op_= class, + uint8_t maint_op_class, + bool has_maint_op_subclass, + uint8_t maint_op_subclass, + bool has_ld_id, uint16_t ld_id, + bool has_head_id, uint8_t head_id, + uint8_t type, uint8_t health_status, uint8_t media_status, uint8_t additional_status, @@ -2030,7 +2081,10 @@ void qmp_cxl_inject_memory_module_event(const char *= path, CxlEventLog log, =20 memset(&module, 0, sizeof(module)); cxl_assign_event_header(hdr, &memory_module_uuid, flags, sizeof(module= ), - cxl_device_get_timestamp(&ct3d->cxl_dstate)); + cxl_device_get_timestamp(&ct3d->cxl_dstate), + has_maint_op_class, maint_op_class, + has_maint_op_subclass, maint_op_subclass, + has_ld_id, ld_id, has_head_id, head_id); =20 module.type =3D type; module.health_status =3D health_status; diff --git a/hw/mem/cxl_type3_stubs.c b/hw/mem/cxl_type3_stubs.c index c1a5e4a7c1..91b1478114 100644 --- a/hw/mem/cxl_type3_stubs.c +++ b/hw/mem/cxl_type3_stubs.c @@ -14,7 +14,13 @@ #include "qapi/qapi-commands-cxl.h" =20 void qmp_cxl_inject_general_media_event(const char *path, CxlEventLog log, - uint8_t flags, uint64_t dpa, + uint32_t flags, bool has_maint_op_= class, + uint8_t maint_op_class, + bool has_maint_op_subclass, + uint8_t maint_op_subclass, + bool has_ld_id, uint16_t ld_id, + bool has_head_id, uint8_t head_id, + uint64_t dpa, uint8_t descriptor, uint8_t type, uint8_t transaction_type, bool has_channel, uint8_t channel, @@ -23,7 +29,13 @@ void qmp_cxl_inject_general_media_event(const char *path= , CxlEventLog log, const char *component_id, Error **errp) {} =20 -void qmp_cxl_inject_dram_event(const char *path, CxlEventLog log, uint8_t = flags, +void qmp_cxl_inject_dram_event(const char *path, CxlEventLog log, + uint32_t flags, + bool has_maint_op_class, uint8_t maint_op_c= lass, + bool has_maint_op_subclass, + uint8_t maint_op_subclass, + bool has_ld_id, uint16_t ld_id, + bool has_head_id, uint8_t head_id, uint64_t dpa, uint8_t descriptor, uint8_t type, uint8_t transaction_type, bool has_channel, uint8_t channel, @@ -38,7 +50,13 @@ void qmp_cxl_inject_dram_event(const char *path, CxlEven= tLog log, uint8_t flags, Error **errp) {} =20 void qmp_cxl_inject_memory_module_event(const char *path, CxlEventLog log, - uint8_t flags, uint8_t type, + uint32_t flags, bool has_maint_op_= class, + uint8_t maint_op_class, + bool has_maint_op_subclass, + uint8_t maint_op_subclass, + bool has_ld_id, uint16_t ld_id, + bool has_head_id, uint8_t head_id, + uint8_t type, uint8_t health_status, uint8_t media_status, uint8_t additional_status, diff --git a/include/hw/cxl/cxl_device.h b/include/hw/cxl/cxl_device.h index 55797a9ec3..d5906afb19 100644 --- a/include/hw/cxl/cxl_device.h +++ b/include/hw/cxl/cxl_device.h @@ -868,7 +868,12 @@ bool ct3_test_region_block_backed(CXLType3Dev *ct3d, u= int64_t dpa, uint64_t len); void cxl_assign_event_header(CXLEventRecordHdr *hdr, const QemuUUID *uuid, uint32_t flags, - uint8_t length, uint64_t timestamp); + uint8_t length, uint64_t timestamp, + bool has_maint_op_class, uint8_t maint_op_cla= ss, + bool has_maint_op_subclass, + uint8_t maint_op_subclass, + bool has_ld_id, uint16_t ld_id, + bool has_head_id, uint8_t head_id); void cxl_create_dc_event_records_for_extents(CXLType3Dev *ct3d, CXLDCEventType type, CXLDCExtentRaw extents[], diff --git a/include/hw/cxl/cxl_events.h b/include/hw/cxl/cxl_events.h index 8a660c7a62..a88fbab751 100644 --- a/include/hw/cxl/cxl_events.h +++ b/include/hw/cxl/cxl_events.h @@ -29,9 +29,15 @@ typedef enum CXLEventLogType { =20 /* * Common Event Record Format - * CXL r3.1 section 8.2.9.2.1: Event Records; Table 8-43 + * CXL r3.2 section 8.2.10.2.1: Event Records; Table 8-55 */ -#define CXL_EVENT_REC_HDR_RES_LEN 0xf +#define CXL_EVENT_REC_FLAGS_PERMANENT_COND BIT(2) +#define CXL_EVENT_REC_FLAGS_MAINT_NEEDED BIT(3) +#define CXL_EVENT_REC_FLAGS_PERF_DEGRADED BIT(4) +#define CXL_EVENT_REC_FLAGS_HW_REPLACEMENT_NEEDED BIT(5) +#define CXL_EVENT_REC_FLAGS_MAINT_OP_SUBCLASS_VALID BIT(6) +#define CXL_EVENT_REC_FLAGS_LD_ID_VALID BIT(7) +#define CXL_EVENT_REC_FLAGS_HEAD_ID_VALID BIT(8) typedef struct CXLEventRecordHdr { QemuUUID id; uint8_t length; @@ -40,7 +46,10 @@ typedef struct CXLEventRecordHdr { uint16_t related_handle; uint64_t timestamp; uint8_t maint_op_class; - uint8_t reserved[CXL_EVENT_REC_HDR_RES_LEN]; + uint8_t maint_op_subclass; + uint16_t ld_id; + uint8_t head_id; + uint8_t reserved[0xb]; } QEMU_PACKED CXLEventRecordHdr; =20 #define CXL_EVENT_RECORD_DATA_LENGTH 0x50 diff --git a/qapi/cxl.json b/qapi/cxl.json index 55a088586e..82001c0591 100644 --- a/qapi/cxl.json +++ b/qapi/cxl.json @@ -33,20 +33,33 @@ ## # @CXLCommonEventBase: # -# Common event base for a CXL Event (CXL r3.0 8.2.9.2.1 -# Table 8-42 Common Event Record Format). +# Common event base for a CXL Event (CXL r3.2 8.2.10.2.1 +# Table 8-55 Common Event Record Format). # # @path: CXL type 3 device canonical QOM path # # @log: event log to add the event to # -# @flags: Event Record Flags. See CXL r3.0 Table 8-42 Common Event +# @flags: Event Record Flags. See CXL r3.2 Table 8-55 Common Event # Record Format, Event Record Flags for subfield definitions. # +# @maint-op-class: Maintenance operation class the device requests to +# initiate. +# +# @maint-op-subclass: Maintenance operation subclass the device +# requests to initiate. +# +# @ld-id: Logical Device (LD) ID of LD from where the event +# originated. +# +# @head-id: ID of the device head from where the event originated. +# # Since: 8.1 ## { 'struct': 'CXLCommonEventBase', - 'data': { 'path': 'str', 'log': 'CxlEventLog', 'flags': 'uint8' } } + 'data': { 'path': 'str', 'log': 'CxlEventLog', 'flags': 'uint32', + '*maint-op-class':'uint8', '*maint-op-subclass':'uint8', + '*ld-id':'uint16', '*head-id':'uint8' } } =20 ## # @CXLGeneralMediaEvent: --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231844; cv=none; d=zohomail.com; s=zohoarc; b=lVGZzQJv+XBF6IguK8NNN0mgdippFQupxNjSvgjvaLtpLM1CW2w/d9ENnzWN9DdZ3v4Vb1sMB6t/qG8Fd7ezJoXlv1YPofpbyBY4VM95/zwk7NuQUZ5Ok//nFU1WPNp1D0AbZEas+5S2qs016J/u0Q90ukqvSG/KqVp/kZEpaws= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231844; h=Content-Type: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=RVtC1wf0FBZ9jTZJuqaS0e+wWBhP4Y6BUbTgsT8PmAg=; b=PgF5+ga40OkvtI/k89SwYeDcSX389xTQ/P6KSS9V6Ox2FqaXJNQZQtmjTdEx6pz29SrxYi5YsPcd7uSmneRDBOJmq9GsqgHOUUadpBR7yW0N2oYKUyeHHEGLFf9yjEYijBOn/3gT1cGP1h7BP94qxdChuiTzNBYh8T64R6yqDx8= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770231844008183.7335702937346; Wed, 4 Feb 2026 11:04:04 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vni9r-0006DB-VZ; Wed, 04 Feb 2026 14:03:24 -0500 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 1vni9h-00061n-QH for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:14 -0500 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 1vni9g-0007jI-2Q for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:13 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-661-cOFnvIhENfK5SMe3e1TDrQ-1; Wed, 04 Feb 2026 14:03:09 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-47edfdc6c1aso802525e9.3 for ; Wed, 04 Feb 2026 11:03:08 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4830ffc9f3asm26041975e9.19.2026.02.04.11.03.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231790; 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: in-reply-to:in-reply-to:references:references; bh=RVtC1wf0FBZ9jTZJuqaS0e+wWBhP4Y6BUbTgsT8PmAg=; b=NsbJ3k12NbwxlFCYDQapIY1IY6qoHKuPGeOYpuXiXq69qTtu2lym8pNUAuzjhR8Blpv/li ma0Wv89gASRhmDxrMdAtUnTgMPR0WdRcz0rZD9rw8iLi7Zh4/a3uZFPPcCjUf/UDGa/2iA ku18F+EnccpVCf/eZ4ecKXBC9ND+ZCo= X-MC-Unique: cOFnvIhENfK5SMe3e1TDrQ-1 X-Mimecast-MFC-AGG-ID: cOFnvIhENfK5SMe3e1TDrQ_1770231788 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231787; x=1770836587; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=RVtC1wf0FBZ9jTZJuqaS0e+wWBhP4Y6BUbTgsT8PmAg=; b=EPrAJHJM4ks2VmUqgXWJ89XkBuC1FqC1qlYnTW4K+fly9hiqlWAnOC6/0/nrcmCMZ5 EJYSGKCOM3vaRDrwTeVMJk2lIuJkjpBMzzkG2Ld+iIoQ8sWLxeI5aQNWxX+J5sSvUfjR 84iaHXGgiGlb9XoDrSyYtPHa+CzLyN7Vf9thjav3QiLG/mLPUSR39GYH9yMO5Zm+3Zq1 zA0B0jfmzi2Zu7u/KbHxAz6W0sjbHzo4a2LT2Lzs06aTH/uFDN3/CT5nsZ6NSxSXE6ag sqyrpt9qWOznTA4nEF82b1E3au874QY0CBvzAwEgfEBcmKpBE6DKHQwGvp+oAckH2osZ mpXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231787; x=1770836587; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=RVtC1wf0FBZ9jTZJuqaS0e+wWBhP4Y6BUbTgsT8PmAg=; b=xAqZ8LFg1O90Mwrnli7Ot0QFX4NHIIfDVB3d/O2I8rX74F9l3Tvhkw46OxlNRu+DrM 6Ny9rjJ+sKHjAsup26a22TckCKol+cZEc8DHtyFUReZ5RsnLxdrMSk1mEZu6N19k2wZO jYn/ZPN0AfSOoUcW4n0yk+UlovjNmB2XjckuCRGV6jYHDkeNvH0oEzPeerRuSXjb/sC+ IGYwQgQhljR1bXp2B68hdp6EmaZXk0UnOzz72tWLzjv0z6rFmQ2CzrL9CAO11VjTYf2F q4Utw3hKkKkqBGV4i74mvcJudxkd4VLbUuUY0tM22aejKLdayQaTUsf2cmlaWWtG8YGe InIw== X-Gm-Message-State: AOJu0Yw7prxO+LwhxtEpSbLJ9ezUN7wz3rMpaYx81/ec+b+lak40qfGI qz11I+TUOF5H9Cz1Zsu6mCOpoiKqN9RhJaYSyLZkvdcr0vwx9f02I+z26DC4LiVNZym8huoj+qC wEVX2QDQefX1ZaQ2SWRf610hj7kw+0uenFXFbbcdXK8r+2Z3Im18Y7TA9rlspOFGolOv8gE5fI1 z4xro4zhT2F5ZHSuyGVhFTZFLiZu9VBuS4lg== X-Gm-Gg: AZuq6aJ40Qn5MRUSdspiBaNAWM1oecuuc5e15rgsnZg41Qb557n4qpSBJFGpsoV41yq EvWC4SlFrOJlzgdtxpcO/cgBpAqAMgXf1HzVFPU0BCYw02FNQP3D1iBATbT8YK9Jz5VV45bontq cL7JGHJoV0OPButrA1ilT3gvBX+HOhqxp512t6vGrXvwer4JsQ5Sxqpp6aFHb2VxmiC0UJgfit3 opi9F+TYhpjhGKqV2effusmh4sQUBJGRtlpJv7m3yiT1PWrru/P5ABgKAMkbfJCplYB3MynRZ83 FzC0JM8eGo9KwFjpKaEV8VoCn+MKCo9JBmJNdQe5e8AjoXKj+x+bWJEvD1gX7idt+Npg455rm66 jbHCWXKzczN7h+yvJh3qAxvKxuY4H5M1GUw== X-Received: by 2002:a05:600c:1c02:b0:475:dd89:acb with SMTP id 5b1f17b1804b1-4830e96fb19mr59629135e9.22.1770231787415; Wed, 04 Feb 2026 11:03:07 -0800 (PST) X-Received: by 2002:a05:600c:1c02:b0:475:dd89:acb with SMTP id 5b1f17b1804b1-4830e96fb19mr59628545e9.22.1770231786946; Wed, 04 Feb 2026 11:03:06 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:04 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Shiju Jose , Jonathan Cameron , Fan Ni , Eric Blake , Markus Armbruster Subject: [PULL 07/51] hw/cxl/events: Updates for rev3.2 general media event record Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231846016154100 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Shiju Jose CXL spec rev3.2 section 8.2.10.2.1.1 Table 8-57, general media event table has updated with following new fields. 1. Advanced Programmable Corrected Memory Error Threshold Event Flags 2. Corrected Memory Error Count at Event 3. Memory Event Sub-Type 4. Support for component ID in the PLDM format. Add updates for the above spec changes in the CXL general media event reporting and QMP command to inject general media event. In order to have one consistent source of references, update all to references for this command to CXL r3.2. Signed-off-by: Shiju Jose Signed-off-by: Jonathan Cameron Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260114142713.617806-4-Jonathan.Cameron@huawei.com> --- hw/mem/cxl_type3.c | 29 +++++++++++++++++++++++++++++ hw/mem/cxl_type3_stubs.c | 6 ++++++ include/hw/cxl/cxl_events.h | 7 +++++-- qapi/cxl.json | 25 +++++++++++++++++++------ 4 files changed, 59 insertions(+), 8 deletions(-) diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c index e5248ba4b6..73fd85daa7 100644 --- a/hw/mem/cxl_type3.c +++ b/hw/mem/cxl_type3.c @@ -1716,6 +1716,11 @@ static const QemuUUID memory_module_uuid =3D { #define CXL_GMER_VALID_RANK BIT(1) #define CXL_GMER_VALID_DEVICE BIT(2) #define CXL_GMER_VALID_COMPONENT BIT(3) +#define CXL_GMER_VALID_COMPONENT_ID_FORMAT BIT(4) + +#define CXL_GMER_EV_DESC_UCE BIT(0) +#define CXL_GMER_EV_DESC_THRESHOLD_EVENT BIT(1) +#define CXL_GMER_EV_DESC_POISON_LIST_OVERFLOW_EVENT BIT(2) =20 static int ct3d_qmp_cxl_event_log_enc(CxlEventLog log) { @@ -1816,6 +1821,12 @@ void qmp_cxl_inject_general_media_event(const char *= path, CxlEventLog log, bool has_rank, uint8_t rank, bool has_device, uint32_t device, const char *component_id, + bool has_comp_id_pldm, + bool is_comp_id_pldm, + bool has_cme_ev_flags, + uint8_t cme_ev_flags, + bool has_cme_count, uint32_t cme_c= ount, + uint8_t sub_type, Error **errp) { Object *obj =3D object_resolve_path(path, NULL); @@ -1881,10 +1892,28 @@ void qmp_cxl_inject_general_media_event(const char = *path, CxlEventLog log, strncpy((char *)gem.component_id, component_id, sizeof(gem.component_id) - 1); valid_flags |=3D CXL_GMER_VALID_COMPONENT; + if (has_comp_id_pldm && is_comp_id_pldm) { + valid_flags |=3D CXL_GMER_VALID_COMPONENT_ID_FORMAT; + } } =20 stw_le_p(&gem.validity_flags, valid_flags); =20 + if (has_cme_ev_flags) { + gem.cme_ev_flags =3D cme_ev_flags; + } else { + gem.cme_ev_flags =3D 0; + } + + if (has_cme_count) { + descriptor |=3D CXL_GMER_EV_DESC_THRESHOLD_EVENT; + st24_le_p(gem.cme_count, cme_count); + } else { + st24_le_p(gem.cme_count, 0); + } + + gem.sub_type =3D sub_type; + if (cxl_event_insert(cxlds, enc_log, (CXLEventRecordRaw *)&gem)) { cxl_event_irq_assert(ct3d); } diff --git a/hw/mem/cxl_type3_stubs.c b/hw/mem/cxl_type3_stubs.c index 91b1478114..2047e97846 100644 --- a/hw/mem/cxl_type3_stubs.c +++ b/hw/mem/cxl_type3_stubs.c @@ -27,6 +27,12 @@ void qmp_cxl_inject_general_media_event(const char *path= , CxlEventLog log, bool has_rank, uint8_t rank, bool has_device, uint32_t device, const char *component_id, + bool has_comp_id_pldm, + bool is_comp_id_pldm, + bool has_cme_ev_flags, + uint8_t cme_ev_flags, + bool has_cme_count, uint32_t cme_c= ount, + uint8_t sub_type, Error **errp) {} =20 void qmp_cxl_inject_dram_event(const char *path, CxlEventLog log, diff --git a/include/hw/cxl/cxl_events.h b/include/hw/cxl/cxl_events.h index a88fbab751..a3f69b99a4 100644 --- a/include/hw/cxl/cxl_events.h +++ b/include/hw/cxl/cxl_events.h @@ -115,10 +115,10 @@ typedef struct CXLEventInterruptPolicy { =20 /* * General Media Event Record - * CXL r3.1 Section 8.2.9.2.1.1; Table 8-45 + * CXL r3.2 Section 8.2.10.2.1.1; Table 8-57 */ #define CXL_EVENT_GEN_MED_COMP_ID_SIZE 0x10 -#define CXL_EVENT_GEN_MED_RES_SIZE 0x2e +#define CXL_EVENT_GEN_MED_RES_SIZE 0x29 typedef struct CXLEventGenMedia { CXLEventRecordHdr hdr; uint64_t phys_addr; @@ -130,6 +130,9 @@ typedef struct CXLEventGenMedia { uint8_t rank; uint8_t device[3]; uint8_t component_id[CXL_EVENT_GEN_MED_COMP_ID_SIZE]; + uint8_t cme_ev_flags; + uint8_t cme_count[3]; + uint8_t sub_type; uint8_t reserved[CXL_EVENT_GEN_MED_RES_SIZE]; } QEMU_PACKED CXLEventGenMedia; =20 diff --git a/qapi/cxl.json b/qapi/cxl.json index 82001c0591..c159687f84 100644 --- a/qapi/cxl.json +++ b/qapi/cxl.json @@ -64,22 +64,22 @@ ## # @CXLGeneralMediaEvent: # -# Event record for a General Media Event (CXL r3.0 8.2.9.2.1.1). +# Event record for a General Media Event (CXL r3.2 8.2.10.2.1.1). # # @dpa: Device Physical Address (relative to @path device). Note -# lower bits include some flags. See CXL r3.0 Table 8-43 General +# lower bits include some flags. See CXL r3.2 Table 8-57 General # Media Event Record, Physical Address. # # @descriptor: Memory Event Descriptor with additional memory event -# information. See CXL r3.0 Table 8-43 General Media Event +# information. See CXL r3.2 Table 8-57 General Media Event # Record, Memory Event Descriptor for bit definitions. # -# @type: Type of memory event that occurred. See CXL r3.0 Table 8-43 +# @type: Type of memory event that occurred. See CXL r3.2 Table 8-57 # General Media Event Record, Memory Event Type for possible # values. # # @transaction-type: Type of first transaction that caused the event -# to occur. See CXL r3.0 Table 8-43 General Media Event Record, +# to occur. See CXL r3-2 Table 8-57 General Media Event Record, # Transaction Type for possible values. # # @channel: The channel of the memory event location. A channel is an @@ -94,6 +94,16 @@ # @component-id: Device specific component identifier for the event. # May describe a field replaceable sub-component of the device. # +# @is-comp-id-pldm: This flag specifies whether the device-specific +# component identifier format follows PLDM. +# +# @cme-ev-flags: Advanced programmable corrected memory error +# threshold event flags. +# +# @cme-count: Corrected memory error count at event. +# +# @sub-type: Memory event sub-type. +# # Since: 8.1 ## { 'struct': 'CXLGeneralMediaEvent', @@ -101,7 +111,10 @@ 'data': { 'dpa': 'uint64', 'descriptor': 'uint8', 'type': 'uint8', 'transaction-type': 'uint8', '*channel': 'uint8', '*rank': 'uint8', - '*device': 'uint32', '*component-id': 'str' } } + '*device': 'uint32', '*component-id': 'str', + '*is-comp-id-pldm':'bool', + '*cme-ev-flags':'uint8', '*cme-count':'uint32', + 'sub-type':'uint8' } } =20 ## # @cxl-inject-general-media-event: --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770232195; cv=none; d=zohomail.com; s=zohoarc; b=LqyWzICBasIjB6FfTWJPRg67fDwCohCwKjCQN6RbR7ftoYQiLJpdLXAMwIwxajD3Qsxft9ItyiA1ozkM1SQEh88cwb3vofXmfpt5GC99N3lTK9NTmtQ5Ri4HYumejxfeJQ83K/kzSZcoMxqn4XpNLo5V6YGSuIAO1nrqKaf8Hxg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770232195; h=Content-Type: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=P2QPRaRY25mgH7GQ9hBvdL6BBixB+wpf/B6tPD3ZxpU=; b=hJDTwWsO5e7WMgAxdrev5RupMHIXid5Ri1T2ZtJwg+SaWrKft2Tez9LFayptSjWE0ECBpGh6fK5pt3VGi2FD1ulCwsLIibhoAvX3wTWyOjm5EH3MZjqGFPC/S3EhXuPJ+KNum/MvYARZo3dH2eigU3c/B3Avv2OeryPSoVcnEPw= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770232195456428.6530353517386; Wed, 4 Feb 2026 11:09:55 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vni9t-0006P9-7I; Wed, 04 Feb 2026 14:03:25 -0500 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 1vni9j-00062N-AZ for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:16 -0500 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 1vni9h-0007ja-Hk for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:15 -0500 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-613-NlLDHFrwNky6Frw_E5jaHA-1; Wed, 04 Feb 2026 14:03:11 -0500 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-435db8ebc98so201817f8f.0 for ; Wed, 04 Feb 2026 11:03:11 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43618057f93sm8039995f8f.24.2026.02.04.11.03.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231792; 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: in-reply-to:in-reply-to:references:references; bh=P2QPRaRY25mgH7GQ9hBvdL6BBixB+wpf/B6tPD3ZxpU=; b=MRWdM97fVTeLBRXoNSwB/c9Fy9iPYTLMUnnL7vn0VQaGOS5BgijgSgD2W3sb1QNTV5Nvpp 2KqFn0f2vt6O3GNdLBGImHAbEOnlQUeAD9Whsdxs6nsfZjQM0LNJDCqLZ9nn3eUGddBorU Ay69I+DTXjbL8uTBnA3OYPKyoFlOEi0= X-MC-Unique: NlLDHFrwNky6Frw_E5jaHA-1 X-Mimecast-MFC-AGG-ID: NlLDHFrwNky6Frw_E5jaHA_1770231790 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231790; x=1770836590; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=P2QPRaRY25mgH7GQ9hBvdL6BBixB+wpf/B6tPD3ZxpU=; b=h4IKNGgMaGLGPGRGBbXtP5qsN+gdTluAN1ia+GRqJ6RPGqyXQXrSiGnkKeeU4L0eWD mtWGYKYMxus80Dqnd9Isb62spmwSNIP+EOGcfrrveakasgo3VSxznsddpoG+xIzikhFN sSJhEfyy/XNesBGuU23cQLxiWWRAXKifW6bdIpCGJR1YpSyjaYchfvzXtg+xVJv2khDz o0P4zYOI2IFSp9FgMd178Eh4iXfmpM0lwZZ2k0HY2Mn0tv+zeh7W3TH5++sSEFpVD1zJ b6c/rkL0E2gSWdOr6us+NN1WVMZ0qx+/NY9QKA+OTZKTpcc+mPjgVA5sAcUHkIiq0JJN GV3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231790; x=1770836590; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=P2QPRaRY25mgH7GQ9hBvdL6BBixB+wpf/B6tPD3ZxpU=; b=o01m1h3TFZ5RsDDOK3JzJj4rm/fgiirbjKiEdpuT1bMAExMjP9jd393jIJzB4MlN9K 1OTky98ZvIu8dmBFdJPdnU6pV079bEMMmUbnI1ySU8f06rWu+gxLxKj4uqOzpQdWJhAn VHhJjqymtroeSCIIf82jAERgCxjr/m+VbYfyfyfghfeNjT5xLbfxvGHHc0beqouyZP22 DlEX0eWKCIAkyjSah3adNQC6E/wA/N9WTKmMv+j7U7E1Ni+ep25TcIV3FqGK1Ce/dy+S piENLKg+jwEz1+TYqdXAXhJ8bHsRTZwAE7yN4Or6WBOtH0NTOZXfBPS9kpt8XCqeW0yx PpsA== X-Gm-Message-State: AOJu0YydhmsGm1q4xaiXmsQVrwVZGYVMXqmK7Q24nQU7UpFLlMUJNPV8 I4Z+DuTZuvxJ48pwIupBCZhklxEuybuCAtOrW7cVtDwZJqLrB1TAJe3fVNZe708MUJyz+8YR1GR Pym2oGlrBap+wQRvVoBkYTIzUVxVZV22jtnl/YlI+II5qIB9XHy9z0YI1CqkZprH9GArEx0wdLF C3n6qSIs8OEbyPvMboRzxr9Ap/+Zg4q1kipw== X-Gm-Gg: AZuq6aLMaNra8uRucD40W1KeHR/GaM2IufOJnjOBHtZwI7XgZrQW2oqPVa0uA0z+N33 IFt8tJPl0t2ObZEdXUc5hpQWXGFl5xxVCGgA8tU54az/kjntAWHIxxzIBzfsODsAouNhN6W8tca VlUC4cXB6BHHxXtPKBXoZtx/+4Xwe4miVsUYUaTlrBQgbpxxQigsYQKo+nKH4d9K7qsuV6a6fNT CoUbaXSqbk7Qf2EIbWRXd1Lh8eMkcXplmKhMvAwmxhksOBt+zg4Oi+nQgydVLFzcdSR4wrgGGpi gWtNl3pHNGR+o9HwOkKpJj6fUK+71rGUXuA6Ofm1pBM8xlOjqa63QTHnTeqC2gkHLgI6dqoAhBR qvC5C4L82bbuWuXm6/fzBwzh8pn7TysfxWg== X-Received: by 2002:a05:6000:438a:b0:435:96b7:e0db with SMTP id ffacd0b85a97d-43617e410b4mr5529502f8f.17.1770231789898; Wed, 04 Feb 2026 11:03:09 -0800 (PST) X-Received: by 2002:a05:6000:438a:b0:435:96b7:e0db with SMTP id ffacd0b85a97d-43617e410b4mr5529412f8f.17.1770231789139; Wed, 04 Feb 2026 11:03:09 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:07 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Shiju Jose , Jonathan Cameron , Fan Ni , Eric Blake , Markus Armbruster Subject: [PULL 08/51] hw/cxl/events: Updates for rev3.2 DRAM event record Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770232197318154100 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Shiju Jose CXL spec rev3.2 section 8.2.10.2.1.2 Table 8-58, DRAM event record has updated with following new fields. 1. Component Identifier 2. Sub-channel of the memory event location 3. Advanced Programmable Corrected Memory Error Threshold Event Flags 4. Corrected Volatile Memory Error Count at Event 5. Memory Event Sub-Type Add updates for the above spec changes in the CXL DRAM event reporting and QMP command to inject DRAM event. In order to ensure consistency update all specification references for this command to CXL r3.2. Signed-off-by: Shiju Jose Signed-off-by: Jonathan Cameron Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260114142713.617806-5-Jonathan.Cameron@huawei.com> --- hw/mem/cxl_type3.c | 42 +++++++++++++++++++++++++++++++++++++ hw/mem/cxl_type3_stubs.c | 7 +++++++ include/hw/cxl/cxl_events.h | 9 ++++++-- qapi/cxl.json | 31 +++++++++++++++++++++------ 4 files changed, 81 insertions(+), 8 deletions(-) diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c index 73fd85daa7..d6bb219597 100644 --- a/hw/mem/cxl_type3.c +++ b/hw/mem/cxl_type3.c @@ -1936,6 +1936,13 @@ void qmp_cxl_inject_general_media_event(const char *= path, CxlEventLog log, #define CXL_DRAM_VALID_ROW BIT(5) #define CXL_DRAM_VALID_COLUMN BIT(6) #define CXL_DRAM_VALID_CORRECTION_MASK BIT(7) +#define CXL_DRAM_VALID_COMPONENT BIT(8) +#define CXL_DRAM_VALID_COMPONENT_ID_FORMAT BIT(9) +#define CXL_DRAM_VALID_SUB_CHANNEL BIT(10) + +#define CXL_DRAM_EV_DESC_UCE BIT(0) +#define CXL_DRAM_EV_DESC_THRESHOLD_EVENT BIT(1) +#define CXL_DRAM_EV_DESC_POISON_LIST_OVERFLOW_EVENT BIT(2) =20 void qmp_cxl_inject_dram_event(const char *path, CxlEventLog log, uint32_t flags, @@ -1955,6 +1962,12 @@ void qmp_cxl_inject_dram_event(const char *path, Cxl= EventLog log, bool has_column, uint16_t column, bool has_correction_mask, uint64List *correction_mask, + const char *component_id, + bool has_comp_id_pldm, bool is_comp_id_pldm, + bool has_sub_channel, uint8_t sub_channel, + bool has_cme_ev_flags, uint8_t cme_ev_flags, + bool has_cvme_count, uint32_t cvme_count, + uint8_t sub_type, Error **errp) { Object *obj =3D object_resolve_path(path, NULL); @@ -2046,6 +2059,35 @@ void qmp_cxl_inject_dram_event(const char *path, Cxl= EventLog log, valid_flags |=3D CXL_DRAM_VALID_CORRECTION_MASK; } =20 + if (component_id) { + strncpy((char *)dram.component_id, component_id, + sizeof(dram.component_id) - 1); + valid_flags |=3D CXL_DRAM_VALID_COMPONENT; + if (has_comp_id_pldm && is_comp_id_pldm) { + valid_flags |=3D CXL_DRAM_VALID_COMPONENT_ID_FORMAT; + } + } + + if (has_sub_channel) { + dram.sub_channel =3D sub_channel; + valid_flags |=3D CXL_DRAM_VALID_SUB_CHANNEL; + } + + if (has_cme_ev_flags) { + dram.cme_ev_flags =3D cme_ev_flags; + } else { + dram.cme_ev_flags =3D 0; + } + + if (has_cvme_count) { + descriptor |=3D CXL_DRAM_EV_DESC_THRESHOLD_EVENT; + st24_le_p(dram.cvme_count, cvme_count); + } else { + st24_le_p(dram.cvme_count, 0); + } + + dram.sub_type =3D sub_type; + stw_le_p(&dram.validity_flags, valid_flags); =20 if (cxl_event_insert(cxlds, enc_log, (CXLEventRecordRaw *)&dram)) { diff --git a/hw/mem/cxl_type3_stubs.c b/hw/mem/cxl_type3_stubs.c index 2047e97846..231dda263f 100644 --- a/hw/mem/cxl_type3_stubs.c +++ b/hw/mem/cxl_type3_stubs.c @@ -53,6 +53,13 @@ void qmp_cxl_inject_dram_event(const char *path, CxlEven= tLog log, bool has_column, uint16_t column, bool has_correction_mask, uint64List *correction_mask, + const char *component_id, + bool has_comp_id_pldm, + bool is_comp_id_pldm, + bool has_sub_channel, uint8_t sub_channel, + bool has_cme_ev_flags, uint8_t cme_ev_flags, + bool has_cvme_count, uint32_t cvme_count, + uint8_t sub_type, Error **errp) {} =20 void qmp_cxl_inject_memory_module_event(const char *path, CxlEventLog log, diff --git a/include/hw/cxl/cxl_events.h b/include/hw/cxl/cxl_events.h index a3f69b99a4..0cc7372101 100644 --- a/include/hw/cxl/cxl_events.h +++ b/include/hw/cxl/cxl_events.h @@ -138,7 +138,7 @@ typedef struct CXLEventGenMedia { =20 /* * DRAM Event Record - * CXL r3.1 Section 8.2.9.2.1.2: Table 8-46 + * CXL r3.2 Section 8.2.10.2.1.2: Table 8-58 * All fields little endian. */ typedef struct CXLEventDram { @@ -156,7 +156,12 @@ typedef struct CXLEventDram { uint8_t row[3]; uint16_t column; uint64_t correction_mask[4]; - uint8_t reserved[0x17]; + uint8_t component_id[CXL_EVENT_GEN_MED_COMP_ID_SIZE]; + uint8_t sub_channel; + uint8_t cme_ev_flags; + uint8_t cvme_count[3]; + uint8_t sub_type; + uint8_t reserved; } QEMU_PACKED CXLEventDram; =20 /* diff --git a/qapi/cxl.json b/qapi/cxl.json index c159687f84..630c37d64e 100644 --- a/qapi/cxl.json +++ b/qapi/cxl.json @@ -131,21 +131,21 @@ ## # @CXLDRAMEvent: # -# Event record for a DRAM Event (CXL r3.0 8.2.9.2.1.2). +# Event record for a DRAM Event (CXL r3.2 8.2.10.2.1.2). # # @dpa: Device Physical Address (relative to @path device). Note -# lower bits include some flags. See CXL r3.0 Table 8-44 DRAM +# lower bits include some flags. See CXL r3.2 Table 8-58 DRAM # Event Record, Physical Address. # # @descriptor: Memory Event Descriptor with additional memory event -# information. See CXL r3.0 Table 8-44 DRAM Event Record, Memory +# information. See CXL r3.2 Table 8-58 DRAM Event Record, Memory # Event Descriptor for bit definitions. # -# @type: Type of memory event that occurred. See CXL r3.0 Table 8-44 +# @type: Type of memory event that occurred. See CXL r3.2 Table 8-58 # DRAM Event Record, Memory Event Type for possible values. # # @transaction-type: Type of first transaction that caused the event -# to occur. See CXL r3.0 Table 8-44 DRAM Event Record, +# to occur. See CXL r3.2 Table 8-58 DRAM Event Record, # Transaction Type for possible values. # # @channel: The channel of the memory event location. A channel is an @@ -169,6 +169,21 @@ # @correction-mask: Bits within each nibble. Used in order of bits # set in the nibble-mask. Up to 4 nibbles may be covered. # +# @component-id: Device specific component identifier for the event. +# May describe a field replaceable sub-component of the device. +# +# @is-comp-id-pldm: This flag specifies whether the device-specific +# component identifier format follows PLDM. +# +# @sub-channel: The sub-channel of the memory event location. +# +# @cme-ev-flags: Advanced programmable corrected memory error +# threshold event flags. +# +# @cvme-count: Corrected volatile memory error count at event. +# +# @sub-type: Memory event sub-type. +# # Since: 8.1 ## { 'struct': 'CXLDRAMEvent', @@ -177,7 +192,11 @@ 'type': 'uint8', 'transaction-type': 'uint8', '*channel': 'uint8', '*rank': 'uint8', '*nibble-mask': 'uint32= ', '*bank-group': 'uint8', '*bank': 'uint8', '*row': 'uint32', - '*column': 'uint16', '*correction-mask': [ 'uint64' ] + '*column': 'uint16', '*correction-mask': [ 'uint64' ], + '*component-id': 'str', '*is-comp-id-pldm':'bool', + '*sub-channel':'uint8', + '*cme-ev-flags':'uint8', '*cvme-count':'uint32', + 'sub-type':'uint8' }} =20 ## --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231850; cv=none; d=zohomail.com; s=zohoarc; b=BiHa/2oHylhTpm1CXF6GoSm71RP8oi2A7YzkrK9hCln2nQxOWIMbSWc7sgWlEcXXZc2PNvb1yeIwXHVfqK5lJZX8EGf54FypHXevuvJSpkwz5AsJ2tXJsbAe+pzswemeGdfIPKvwpUvavPlNdmKhDj+GBQ5x3DG/21ve/pwjGU4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231850; h=Content-Type: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=/cqMaZU84kh1h3O8zEa+2dGJkgCLvA3AzeuIm4u7+Aw=; b=Jz6/Y6quQrhAkl2eiSqsmKDwOuJSiRSVLbpRP2l269aJb5jNFB5ATcVOfHnfMNBmYPMsOElTRBu1tUHwPny9HecqMoJ8NK7mwRLBV7qqLJUaLFR5Ub5sNJSL/e0OvSTBUk52zTIz5/+EyKJ1jol3ulTzVpYSaKkzMMNqIVDSGgo= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770231850781377.47199612563554; Wed, 4 Feb 2026 11:04:10 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vni9u-0006VW-1U; Wed, 04 Feb 2026 14:03:26 -0500 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 1vni9o-00069J-3h for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:20 -0500 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 1vni9l-0007jt-Pf for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:19 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-663-mwC-ERUKMWOmUMX4uCz5UA-1; Wed, 04 Feb 2026 14:03:14 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-4830e7c6131so1246685e9.2 for ; Wed, 04 Feb 2026 11:03:13 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48317d2c856sm4341125e9.4.2026.02.04.11.03.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231797; 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: in-reply-to:in-reply-to:references:references; bh=/cqMaZU84kh1h3O8zEa+2dGJkgCLvA3AzeuIm4u7+Aw=; b=QHUpWIWZeO9YAbH+oohNplXtJFjl2QNRq2JK7SWKilb6W+M+sEf9kwwiqO0lc/+XGm5WH9 Cj9Vdik3zDuW7z3BE+GsSmCjCjCrm+tq9Zi3i8RKbBkKUg6n0N5jdZB+YvXeIqxlyNUlmK yOk3xjRYxNSNW7taDjkK7HBiPvk4ms8= X-MC-Unique: mwC-ERUKMWOmUMX4uCz5UA-1 X-Mimecast-MFC-AGG-ID: mwC-ERUKMWOmUMX4uCz5UA_1770231792 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231792; x=1770836592; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=/cqMaZU84kh1h3O8zEa+2dGJkgCLvA3AzeuIm4u7+Aw=; b=mTlVv09KMayNNKxk7X1LsdKyUO3rR1vhKu1N276Bk717Qd5cFOvWE7ujVZs73MPzjN +XAaAPm8rXmd8d3B+KnFleG7zyuiEPkHTUhb/y6hAeSlhhYfdOkuLX5A5MuEQ/jLT4Ib 6cQwVNBFgAr1O2pAwpno4ZPpmbZL68SLlhoEBonCDV5nrFWouw5DVm7kawhrHhkiBPnz dwwIR6eGH3dypq3Yh1y6AQJsrLQjibHnlnE5/gc8o8M2wQJNlsEfop3fFddi6HhKYLCK 2TaRjws+qSPxPb0Z7QK5/81fbbK/yOxQhlOaVfK2n5Ytd+dCBxvpFdT+mURObZh49XMS 1s2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231792; x=1770836592; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/cqMaZU84kh1h3O8zEa+2dGJkgCLvA3AzeuIm4u7+Aw=; b=m5nofLtyh8SlLDrgzW/QQkGRYY5Ay+L4lpOI47sp7+Eq4HHR+9FUQ225zhdWgKFVle z7+JCV10TIojos76GSoE3w5h7mFkm0F/xpB+IklLyED2L6LiCm8YvTejDApt7BUlK0nj EE7XNvJ3UD33QpeMbP1/DWtWazvR2nMmsrkaLQvTaJczfgBhe55EYalSSui653JgVIj0 Kw6rcFHyHd1sl2EgIpba8VEgYBtopy7rT3MlcU1RMqk5Pe2MSgk8dSunf86ZDHbnRXEH 2QSRkGEzg0qK7O2VKiGphUxO0vKZyNlQ0U69Nawk7tYA+IoShaXVqocqQfWAKa5geSKj 78MQ== X-Gm-Message-State: AOJu0YwPsGZIU206/4b8ki2RawLhhNLfd3qp+HdGlaM1Sm6UDZF1FfHe cY3QKdvcnSlgf6OQMrbh99CjOkKHMsOXfQ8qn2AEzpvKW7FiL6jzDoir9ZbQEOplU4NsiKX62Xg gPkFL5JGVFPEzw84dn7cAmKTUCCycD9KVV2Z7vNWMhlVlAxFIextJ/qgqG91aC07Mnq/Vf0fdXO iXG16vDuvSPOH+KsPe3Yi7z1BKQKBQnhSSUA== X-Gm-Gg: AZuq6aKzfZV0U1EkpOcAK3PUQDkiJU3eiMOzLLGyVrkidIhdUUgkOXiaeTaQlQ2uWca kYoq5xtDdAA6DqMxkwfN+puxTAgHY1ZdnmIgWyQf/vN9uV9/CNUyEtOw8rNumWR9BIlF5RlYZoX jUxa46Wflq/RGahwmT2eeQUzoaqK1QIUN/KGl4yOZS+fLMYHXjSxvg12NqvosabA4f5ou4o42zH 05G22vIBQoXkLh1X0K4nWwCF0hfyPAY4N0MY6Rlx9hyD+eBYxA61S0QXXiNuixoipAyKH5rxhKN gk2LLecV8/Si6XDWm7WMQaNw73fJO6xqiZ+BsoJZapVEBxwtCJCLTcjWMHHvdGBVWVBiWgpPrLi cszJNAGQBWybGre3eKCj+bWwHFIuBJ67v2Q== X-Received: by 2002:a05:600c:1c26:b0:477:b734:8c53 with SMTP id 5b1f17b1804b1-4830e933a24mr60204755e9.12.1770231791994; Wed, 04 Feb 2026 11:03:11 -0800 (PST) X-Received: by 2002:a05:600c:1c26:b0:477:b734:8c53 with SMTP id 5b1f17b1804b1-4830e933a24mr60204165e9.12.1770231791419; Wed, 04 Feb 2026 11:03:11 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:09 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Shiju Jose , Jonathan Cameron , Fan Ni , Eric Blake , Markus Armbruster Subject: [PULL 09/51] hw/cxl/events: Updates for rev3.2 memory module event record Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231852179154100 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Shiju Jose CXL spec rev3.2 section 8.2.10.2.1.3 Table 8-50, memory module event record has updated with following new fields. 1. Validity Flags 2. Component Identifier 3. Device Event Sub-Type Add updates for the above spec changes in the CXL memory module event reporting and QMP command to inject memory module event. Updated all references for this command to the CXL r3.2 specification. Signed-off-by: Shiju Jose Signed-off-by: Jonathan Cameron Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260114142713.617806-6-Jonathan.Cameron@huawei.com> --- hw/mem/cxl_type3.c | 20 ++++++++++++++++++++ hw/mem/cxl_type3_stubs.c | 4 ++++ include/hw/cxl/cxl_events.h | 7 +++++-- qapi/cxl.json | 26 ++++++++++++++++++-------- 4 files changed, 47 insertions(+), 10 deletions(-) diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c index d6bb219597..85694707e2 100644 --- a/hw/mem/cxl_type3.c +++ b/hw/mem/cxl_type3.c @@ -2106,6 +2106,9 @@ void qmp_cxl_inject_dram_event(const char *path, CxlE= ventLog log, } } =20 +#define CXL_MMER_VALID_COMPONENT BIT(0) +#define CXL_MMER_VALID_COMPONENT_ID_FORMAT BIT(1) + void qmp_cxl_inject_memory_module_event(const char *path, CxlEventLog log, uint32_t flags, bool has_maint_op_= class, uint8_t maint_op_class, @@ -2122,11 +2125,16 @@ void qmp_cxl_inject_memory_module_event(const char = *path, CxlEventLog log, uint32_t dirty_shutdown_count, uint32_t corrected_volatile_error_= count, uint32_t corrected_persist_error_c= ount, + const char *component_id, + bool has_comp_id_pldm, + bool is_comp_id_pldm, + uint8_t sub_type, Error **errp) { Object *obj =3D object_resolve_path(path, NULL); CXLEventMemoryModule module; CXLEventRecordHdr *hdr =3D &module.hdr; + uint16_t valid_flags =3D 0; CXLDeviceState *cxlds; CXLType3Dev *ct3d; uint8_t enc_log; @@ -2169,6 +2177,18 @@ void qmp_cxl_inject_memory_module_event(const char *= path, CxlEventLog log, stl_le_p(&module.corrected_persistent_error_count, corrected_persist_error_count); =20 + if (component_id) { + strncpy((char *)module.component_id, component_id, + sizeof(module.component_id) - 1); + valid_flags |=3D CXL_MMER_VALID_COMPONENT; + if (has_comp_id_pldm && is_comp_id_pldm) { + valid_flags |=3D CXL_MMER_VALID_COMPONENT_ID_FORMAT; + } + } + module.sub_type =3D sub_type; + + stw_le_p(&module.validity_flags, valid_flags); + if (cxl_event_insert(cxlds, enc_log, (CXLEventRecordRaw *)&module)) { cxl_event_irq_assert(ct3d); } diff --git a/hw/mem/cxl_type3_stubs.c b/hw/mem/cxl_type3_stubs.c index 231dda263f..98292a931c 100644 --- a/hw/mem/cxl_type3_stubs.c +++ b/hw/mem/cxl_type3_stubs.c @@ -78,6 +78,10 @@ void qmp_cxl_inject_memory_module_event(const char *path= , CxlEventLog log, uint32_t dirty_shutdown_count, uint32_t corrected_volatile_error_= count, uint32_t corrected_persist_error_c= ount, + const char *component_id, + bool has_comp_id_pldm, + bool is_comp_id_pldm, + uint8_t sub_type, Error **errp) {} =20 void qmp_cxl_inject_poison(const char *path, uint64_t start, uint64_t leng= th, diff --git a/include/hw/cxl/cxl_events.h b/include/hw/cxl/cxl_events.h index 0cc7372101..89f6aad531 100644 --- a/include/hw/cxl/cxl_events.h +++ b/include/hw/cxl/cxl_events.h @@ -166,7 +166,7 @@ typedef struct CXLEventDram { =20 /* * Memory Module Event Record - * CXL r3.1 Section 8.2.9.2.1.3: Table 8-47 + * CXL r3.2 Section 8.2.10.2.1.3: Table 8-59 * All fields little endian. */ typedef struct CXLEventMemoryModule { @@ -180,7 +180,10 @@ typedef struct CXLEventMemoryModule { uint32_t dirty_shutdown_count; uint32_t corrected_volatile_error_count; uint32_t corrected_persistent_error_count; - uint8_t reserved[0x3d]; + uint16_t validity_flags; + uint8_t component_id[CXL_EVENT_GEN_MED_COMP_ID_SIZE]; + uint8_t sub_type; + uint8_t reserved[0x2a]; } QEMU_PACKED CXLEventMemoryModule; =20 /* diff --git a/qapi/cxl.json b/qapi/cxl.json index 630c37d64e..fc2ff2e080 100644 --- a/qapi/cxl.json +++ b/qapi/cxl.json @@ -214,20 +214,20 @@ ## # @CXLMemModuleEvent: # -# Event record for a Memory Module Event (CXL r3.0 8.2.9.2.1.3). +# Event record for a Memory Module Event (CXL r3.2 8.2.10.2.1.3). # -# @type: Device Event Type. See CXL r3.0 Table 8-45 Memory Module +# @type: Device Event Type. See CXL r3.2 Table 8-59 Memory Module # Event Record for bit definitions for bit definiions. # -# @health-status: Overall health summary bitmap. See CXL r3.0 Table -# 8-100 Get Health Info Output Payload, Health Status for bit +# @health-status: Overall health summary bitmap. See CXL r3.2 Table +# 8-148 Get Health Info Output Payload, Health Status for bit # definitions. # -# @media-status: Overall media health summary. See CXL r3.0 Table -# 8-100 Get Health Info Output Payload, Media Status for bit +# @media-status: Overall media health summary. See CXL r3.2 Table +# 8-148 Get Health Info Output Payload, Media Status for bit # definitions. # -# @additional-status: See CXL r3.0 Table 8-100 Get Health Info Output +# @additional-status: See CXL r3.2 Table 8-148 Get Health Info Output # Payload, Additional Status for subfield definitions. # # @life-used: Percentage (0-100) of factory expected life span. @@ -243,6 +243,14 @@ # @corrected-persistent-error-count: Total number of correctable # errors in persistent memory # +# @component-id: Device specific component identifier for the event. +# May describe a field replaceable sub-component of the device. +# +# @is-comp-id-pldm: This flag specifies whether the device-specific +# component identifier format follows PLDM. +# +# @sub-type: Device event sub-type. +# # Since: 8.1 ## { 'struct': 'CXLMemModuleEvent', @@ -252,7 +260,9 @@ 'life-used': 'uint8', 'temperature' : 'int16', 'dirty-shutdown-count': 'uint32', 'corrected-volatile-error-count': 'uint32', - 'corrected-persistent-error-count': 'uint32' + 'corrected-persistent-error-count': 'uint32', + '*component-id': 'str', '*is-comp-id-pldm':'bool', + 'sub-type':'uint8' }} =20 ## --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770232132; cv=none; d=zohomail.com; s=zohoarc; b=CPAFa9Ayq1zramPVp6jzUM4lvlfIJSAFDrOBZEXlqhFh/IPSqGWw9DLdxr/iLwOMtWbULiEd8HXmH1GnctGCYv+bTWaYbhW/X8IxrpEP3faPp4ASbJvloau3Njl9B3wPBTuAO8Y3/Yh2JpQ2txTWffxyAfqEbW5AFKymXfMZutI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770232132; h=Content-Type: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=wqArM+1zzEyxKYPN9OWdDc0ZApCblVkq8XChZEwMZ3Q=; b=by/jwKP7eDcBedJE1JEmknSXbf9qk114HqwBHlxWUT+Tq/qIpqFduGxts9e1mN8EA/qViPZcFWIAvH0TNViv29n2PWP9eG9hXMSNvedPvrDtI6OyB6kL8zoHPqvA0u/vz/haB8ULiFep5faN+Wu5MOu2MXfKMtE9g+Jv7iiVvBE= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770232132962186.8272839559337; Wed, 4 Feb 2026 11:08:52 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vni9v-0006bX-7q; Wed, 04 Feb 2026 14:03:27 -0500 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 1vni9n-00068y-FI for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:19 -0500 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 1vni9l-0007jr-H0 for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:18 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-607-3vGC6Hf8Oh-evIHI78LJlw-1; Wed, 04 Feb 2026 14:03:15 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-4806cfffca6so1001605e9.2 for ; Wed, 04 Feb 2026 11:03:15 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48317d7a924sm6151735e9.10.2026.02.04.11.03.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231796; 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: in-reply-to:in-reply-to:references:references; bh=wqArM+1zzEyxKYPN9OWdDc0ZApCblVkq8XChZEwMZ3Q=; b=aRTARItdzJ1b8682SRACxQZBvq6vP0MDhXFdN6vnBMwcdwReegy0+HTZFFsIeLiTfIiVod zRobEcoMXXEGqjhLxjaVwkCtelSzBOAb1IFnSnBbesHKLnXHcxaBLxHlGbO/w5IL6Ned3Q l6OdLnlgL/VPJj5IDFpcpWpq0rv1tDM= X-MC-Unique: 3vGC6Hf8Oh-evIHI78LJlw-1 X-Mimecast-MFC-AGG-ID: 3vGC6Hf8Oh-evIHI78LJlw_1770231794 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231794; x=1770836594; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=wqArM+1zzEyxKYPN9OWdDc0ZApCblVkq8XChZEwMZ3Q=; b=oUUAdnoDXEW7qkrKCGs02ex59U5v/bR5j3n7nN/Tbjo1cdbf+JTC62uNjjtLtGuynI n/yB5bfRabY3MrF5o1c8dJtpxmWijBQck2KJA4vjXVwwqW//87FonMvsLd7q3rI0EE0O I06dcj9TGxa0pKUNMrSxq2V7mBMx+uYC23trUI7cnlxJi4waxy3s5GCjG/q0brQO9kpk qOBy44BNZHv3gHO7Wdtg42pOEuDAesrfhZ97vmjbj51YTSs3urh5WUYNFumEXyMcPrQJ 0tC1WWHMuz35mWy95nMyjCDIK5PkXcqKOeS7Y1Jl8uHeVTQKKB/4p1yaoXWouwCa0A2X yKZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231794; x=1770836594; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wqArM+1zzEyxKYPN9OWdDc0ZApCblVkq8XChZEwMZ3Q=; b=VocaDiGNaU+n0L06SPgb66cUGKv3Af8/8wVCWAx+wHqqWBJFHzv36Yvhabho8jvC0u KhB2oZ+325jEH28h6m+V2u/KlLyPeYk3pq07qNytADaKBBcHyabcObcPk+4+fx5UjZLp iWoklYju0M/LNbLgFOskIw/H3lMpsJzdLcNnhb26hvvkra9Ai66ujBEHbLAcmbVXFi4J On7WhS8H4IN95Y1TcbWQ65DVwGJVoi6W+fLwjGu0gvRPylkTdxoKpEGIGLDovMbeQXnq qwF15GaZzx4s+ka+7zHdZUgb5Xx3Aj9KiG8d/RilZ5t8y9CDZIqFm3PRcTWvzMNYa6zs 53Eg== X-Gm-Message-State: AOJu0YwK2iDfdYgSMYJmWoluk6j891hAX9Sd6CAxnmzFchbVu93Wy9lN H1c1Fe0Z4esbREIrnkqUhaQuTpWPevAvg2yYQbbH9aw95Iw0+JcjyVYqW0+B2A76iTK0QcExx6n TRPWoDaxGOnKpzfo2ykm139MuyAYGX7r0U0cy97M2jSQyySXB5KcK3VQl40A4mOwvRUQMA3c6jk wwdr0LxrPcyQLq+Izbt91/PePUPQqmBmW4VQ== X-Gm-Gg: AZuq6aInDBbUzo70FlBKy6Ja2/s4k0bgKQfDQWG4mY/+qPRqod0iBRMeXyjv1MCigrk vYwt1KirpRLOum8gRUMfCgDTvO+MeBKCbGiBvic48O/Sn9bzp5SUzNYRBERI+JhT6A+QOgPa1fi 3fTMHB6uA4hQ4NiI4PgTzP0u2vzynXj+dtApXKu33R0cBiepotukSPnknwWU5XQSku7L21/QOUV iwOU5QnXhNE4dEVVO5lHNtbmjd84WoRP6Pmg2BKHpmCal9Sr3DK5iBAjx9QjYaMgQ393WDY5FYn WRoO4msbgJlp3nKv+KHjyljM0TLT26RKbAMJf13dsBnThhDtDD8P2d00ow9ueTgdMrnI0xFvoLe Kw3k26xuqmMnaC5UHg6UF731PfjNflbwByQ== X-Received: by 2002:a05:600c:4712:b0:47e:e414:b915 with SMTP id 5b1f17b1804b1-4830e934764mr52081585e9.2.1770231793960; Wed, 04 Feb 2026 11:03:13 -0800 (PST) X-Received: by 2002:a05:600c:4712:b0:47e:e414:b915 with SMTP id 5b1f17b1804b1-4830e934764mr52081225e9.2.1770231793415; Wed, 04 Feb 2026 11:03:13 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:11 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Akihiko Odaki , Marcel Apfelbaum Subject: [PULL 10/51] pci/shpc: Do not unparent in instance_finalize() Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770232134680158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Akihiko Odaki Children are automatically unparented so manually unparenting is unnecessary. Worse, automatic unparenting happens before the instance_finalize() callback of the parent gets called, so object_unparent() calls in the callback will refer to objects that are already unparented, which is semantically incorrect. Signed-off-by: Akihiko Odaki Reviewed-by: Michael S. Tsirkin Message-ID: <20251027-shpc-v1-1-00e9b20a355d@rsg.ci.i.u-tokyo.ac.jp> Signed-off-by: Michael S. Tsirkin Message-Id: <20251027-shpc-v1-1-00e9b20a355d@rsg.ci.i.u-tokyo.ac.jp> --- hw/pci/shpc.c | 1 - 1 file changed, 1 deletion(-) diff --git a/hw/pci/shpc.c b/hw/pci/shpc.c index aac6f2d034..938602866d 100644 --- a/hw/pci/shpc.c +++ b/hw/pci/shpc.c @@ -735,7 +735,6 @@ void shpc_free(PCIDevice *d) if (!shpc) { return; } - object_unparent(OBJECT(&shpc->mmio)); g_free(shpc->config); g_free(shpc->cmask); g_free(shpc->wmask); --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231854; cv=none; d=zohomail.com; s=zohoarc; b=NJNHxwRrmaquDgpBhHyc0cCd0it2xeGbEA8i2xurHJbdAO7zdVvjfqESaCFz8NL4xOCv277B4ZIQcb2h/10awhrsPFBGthGVqivNbeOK2qV6drPSftOzHrxLmUHfKtDnVLm46oqNAZZIMw85DmnHeCrGDMBuKX3XAQCqYYiM9ys= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231854; 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=o7oJwB+/MR7DB60Rv9oamUAujf6sHA9qp5RSISJ/HXw=; b=ZPxlNCY6/CgGdkeR4PW7wnyT717xcDGlihiFTB717jI90skqt3Hy8IlJkt8oIHf57nb3ljgksPvbegXWRBzNrS0rju+rD1dnAu4p7FjdKOKsSYmJGxcdXZ+ApZjlftQdMu7pNLI9B4THjjZE0KayVZSMf+gYIOUOP3rDnBl7y9M= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770231854043561.641579826099; Wed, 4 Feb 2026 11:04:14 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vni9w-0006fJ-3l; Wed, 04 Feb 2026 14:03:28 -0500 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 1vni9s-0006LE-8X for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:24 -0500 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 1vni9q-0007kZ-9k for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:23 -0500 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-423-jPoPeFwGPVqUplD-7tdZOQ-1; Wed, 04 Feb 2026 14:03:19 -0500 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-435ab9ed85dso133031f8f.1 for ; Wed, 04 Feb 2026 11:03:19 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43617e25e8csm7558641f8f.1.2026.02.04.11.03.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231801; 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=o7oJwB+/MR7DB60Rv9oamUAujf6sHA9qp5RSISJ/HXw=; b=N4MhTRDzGMxytRl0+BmjvvmBPoSCNKUZsG4EGnfi89XvUa+UqsFGC2RdgPmdiFz6gbiSjj ud0DMcVzKxwtVYSP32VMSkG2FDgIxDLNzBdSwZT2GqspYk6F0Pv7LQda7Sml8mqLikHPBD rmEZERpqHxynRs6NepkyNfz1Ipp6OwQ= X-MC-Unique: jPoPeFwGPVqUplD-7tdZOQ-1 X-Mimecast-MFC-AGG-ID: jPoPeFwGPVqUplD-7tdZOQ_1770231798 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231798; x=1770836598; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=o7oJwB+/MR7DB60Rv9oamUAujf6sHA9qp5RSISJ/HXw=; b=VJRQVE/YPZcpjosM6qc8gYfG3Q/qMPnG2Eh2fL8p8kHL/+qk9mZ1wyIKAtCxW364bx L2wwE2msQywB9sb5FYFWANAOVmn+Pex8+LhHsvB4THYqv1l0+0S8G4l20NLvnikzh01N +Ooc8ymUVEnLOF4kVT7fXDyyoQdAWZuFu0ngVHiicE1Wc5Si/vcIkztd1Av5QW7yaT2i zZQHi9UxKP8zlXGolkzwzSYQA59OiqyBsoQXvYISD3n3x+HpbcIU7BwYA0jcMjeUjOXP 86GoY0IAne+JO4WBNBUneYueEdKFSwyPK9FKh2J95m/QFqmt+c/RbYQxdLm8y7X4mco0 JqMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231798; x=1770836598; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=o7oJwB+/MR7DB60Rv9oamUAujf6sHA9qp5RSISJ/HXw=; b=M86wRkpM4pQ+9bhnKHe4HCjE1bxuKArjLaCBxi/L/ilzTNnoOJu7fsWXpM5AZLLIBH cmEysXygpgLeujAyYT4fkyEsuB/7zJJ0lCkJDuETjGz2VCfC7lvzTwWy27JtWu5/i8rf 2d4S6dipxBZg9IFuI9aTpAQgT0Q/ODIAfFm13CbOvSS8DP63mf11hKr4KX/6JkzUgFBi iwa3DZvC0AxeZsHQz3Cejxg6n59g69o406fOwH8cQbcfB8z7FiqYzWk50DHwWLlk7bsx 2/VmisUNF7T7np8tIXScS95tZY69EyRUXY8dpsnZKljFwRoTuAvFxPu6t/4q3f1qA1jZ rIZA== X-Gm-Message-State: AOJu0YwoFpRb4wkhvXbn9JYED8VSsv+qbagB3LbKXJnzt6JImkE/YzuC ERNrGVJ3SzgFb8F97gaNW2nkZLfghnFJi5IC6vEQLXhUbTeo4qpUDMR83bQ1RZQYgRQpqISNh4d Xs1MmN6TdMhHNoytwCZ6VZoNPktG24X5DNBxNl1yStteEdbfwA+T07qgGrW1MTwhBajoc/kuFOS knJaOnLKAWx9p7ApamKnpZgsAAol4XOtHEuA== X-Gm-Gg: AZuq6aJvRMDV13TWmIeLzpQpkkcLrAYoVjImILN9CxoT5PExxKd9mGVzhCCgE2CsWNS riaQYjNdeQmjavdvK5VEFJ5wKbG/51OGg39PDLhWaY0+xQ+fqkx0ezkBsqfMyfeoiVCaMwsVuSg exjbY7yS991D/u+1cqFOQFB4NZH+W5hBKNMfaSStikJLAJPO4/jGpIQhDerkLPXenOpdktAFDp2 /vspS9eBJiS6/erMKTQQDkUmE7vpxyFo/8sGkB9nluSy37L4hGyIMY64OuHut/uriCr2QW/xvan crcliGLYNz+ePDaQLcLQvAX4f46+QEVLjjbp5hZcor3ztrayEKxKkk4vzKWPbZTivUW9v34Qmv5 gV61GwxyxnVaigwaHH8+l60JnuW/uUJTLSg== X-Received: by 2002:a05:6000:2c08:b0:432:dfa8:e1b6 with SMTP id ffacd0b85a97d-43618053ae7mr5702188f8f.39.1770231797695; Wed, 04 Feb 2026 11:03:17 -0800 (PST) X-Received: by 2002:a05:6000:2c08:b0:432:dfa8:e1b6 with SMTP id ffacd0b85a97d-43618053ae7mr5702086f8f.39.1770231796962; Wed, 04 Feb 2026 11:03:16 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:13 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , =?utf-8?Q?Marc-Andr=C3=A9?= Lureau , BALATON Zoltan , =?utf-8?Q?C=C3=A9dric?= Le Goater , Steven Lee , Troy Lee , Jamin Lin , Andrew Jeffery , Joel Stanley , Andrey Smirnov , Mark Cave-Ayland , Aurelien Jarno , Nicholas Piggin , Aditya Gupta , Glenn Miles , Bernhard Beschow , Marcel Apfelbaum , =?utf-8?B?SGVydsOp?= Poussineau , Elena Ufimtseva , Jagannathan Raman , Paul Burton , Aleksandar Rikalo , qemu-ppc@nongnu.org, qemu-arm@nongnu.org Subject: [PULL 11/51] hw/pci-host: Set DEVICE_CATEGORY_BRIDGE once in parent class_init() Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231856512154100 From: Philippe Mathieu-Daud=C3=A9 No need to set DEVICE_CATEGORY_BRIDGE for each device implementing TYPE_PCI_HOST_BRIDGE: set it once in the parent. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Michael S. Tsirkin Message-ID: <20251027112306.57634-1-philmd@linaro.org> Signed-off-by: Michael S. Tsirkin Message-Id: <20251027112306.57634-1-philmd@linaro.org> --- hw/pci-host/articia.c | 1 - hw/pci-host/aspeed_pcie.c | 1 - hw/pci-host/designware.c | 3 --- hw/pci-host/gpex.c | 2 -- hw/pci-host/grackle.c | 1 - hw/pci-host/gt64120.c | 1 - hw/pci-host/mv64361.c | 1 - hw/pci-host/pnv_phb.c | 1 - hw/pci-host/ppce500.c | 1 - hw/pci-host/q35.c | 1 - hw/pci-host/raven.c | 1 - hw/pci-host/remote.c | 1 - hw/pci-host/sabre.c | 1 - hw/pci-host/uninorth.c | 4 ---- hw/pci-host/xilinx-pcie.c | 2 -- hw/pci/pci_host.c | 1 + 16 files changed, 1 insertion(+), 22 deletions(-) diff --git a/hw/pci-host/articia.c b/hw/pci-host/articia.c index 1881e03d58..04623dfd84 100644 --- a/hw/pci-host/articia.c +++ b/hw/pci-host/articia.c @@ -200,7 +200,6 @@ static void articia_class_init(ObjectClass *klass, cons= t void *data) DeviceClass *dc =3D DEVICE_CLASS(klass); =20 dc->realize =3D articia_realize; - set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); } =20 /* TYPE_ARTICIA_PCI_HOST */ diff --git a/hw/pci-host/aspeed_pcie.c b/hw/pci-host/aspeed_pcie.c index 83a1c7075c..8eeba1f9f3 100644 --- a/hw/pci-host/aspeed_pcie.c +++ b/hw/pci-host/aspeed_pcie.c @@ -350,7 +350,6 @@ static void aspeed_pcie_rc_class_init(ObjectClass *klas= s, const void *data) dc->desc =3D "ASPEED PCIe RC"; dc->realize =3D aspeed_pcie_rc_realize; dc->fw_name =3D "pci"; - set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); =20 hc->root_bus_path =3D aspeed_pcie_rc_root_bus_path; device_class_set_props(dc, aspeed_pcie_rc_props); diff --git a/hw/pci-host/designware.c b/hw/pci-host/designware.c index 019e025382..00c9449c4d 100644 --- a/hw/pci-host/designware.c +++ b/hw/pci-host/designware.c @@ -593,8 +593,6 @@ static void designware_pcie_root_class_init(ObjectClass= *klass, PCIDeviceClass *k =3D PCI_DEVICE_CLASS(klass); DeviceClass *dc =3D DEVICE_CLASS(klass); =20 - set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); - k->vendor_id =3D PCI_VENDOR_ID_SYNOPSYS; k->device_id =3D 0xABCD; k->revision =3D 0; @@ -736,7 +734,6 @@ static void designware_pcie_host_class_init(ObjectClass= *klass, =20 hc->root_bus_path =3D designware_pcie_host_root_bus_path; dc->realize =3D designware_pcie_host_realize; - set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); dc->fw_name =3D "pci"; dc->vmsd =3D &vmstate_designware_pcie_host; } diff --git a/hw/pci-host/gpex.c b/hw/pci-host/gpex.c index b5074c05c0..e66784ce51 100644 --- a/hw/pci-host/gpex.c +++ b/hw/pci-host/gpex.c @@ -200,7 +200,6 @@ static void gpex_host_class_init(ObjectClass *klass, co= nst void *data) hc->root_bus_path =3D gpex_host_root_bus_path; dc->realize =3D gpex_host_realize; dc->unrealize =3D gpex_host_unrealize; - set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); dc->fw_name =3D "pci"; device_class_set_props(dc, gpex_host_properties); } @@ -242,7 +241,6 @@ static void gpex_root_class_init(ObjectClass *klass, co= nst void *data) PCIDeviceClass *k =3D PCI_DEVICE_CLASS(klass); DeviceClass *dc =3D DEVICE_CLASS(klass); =20 - set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); dc->desc =3D "QEMU generic PCIe host bridge"; dc->vmsd =3D &vmstate_gpex_root; k->vendor_id =3D PCI_VENDOR_ID_REDHAT; diff --git a/hw/pci-host/grackle.c b/hw/pci-host/grackle.c index 9a58f0e9b5..b0db7870b0 100644 --- a/hw/pci-host/grackle.c +++ b/hw/pci-host/grackle.c @@ -140,7 +140,6 @@ static void grackle_class_init(ObjectClass *klass, cons= t void *data) =20 dc->realize =3D grackle_realize; device_class_set_props(dc, grackle_properties); - set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); dc->fw_name =3D "pci"; sbc->explicit_ofw_unit_address =3D grackle_ofw_unit_address; } diff --git a/hw/pci-host/gt64120.c b/hw/pci-host/gt64120.c index d361c457ed..566f928304 100644 --- a/hw/pci-host/gt64120.c +++ b/hw/pci-host/gt64120.c @@ -1298,7 +1298,6 @@ static void gt64120_class_init(ObjectClass *klass, co= nst void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); =20 - set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); device_class_set_props(dc, gt64120_properties); dc->realize =3D gt64120_realize; device_class_set_legacy_reset(dc, gt64120_reset); diff --git a/hw/pci-host/mv64361.c b/hw/pci-host/mv64361.c index ef1c77563e..495a82befd 100644 --- a/hw/pci-host/mv64361.c +++ b/hw/pci-host/mv64361.c @@ -108,7 +108,6 @@ static void mv64361_pcihost_class_init(ObjectClass *kla= ss, const void *data) =20 dc->realize =3D mv64361_pcihost_realize; device_class_set_props(dc, mv64361_pcihost_props); - set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); } =20 static const TypeInfo mv64361_pcihost_info =3D { diff --git a/hw/pci-host/pnv_phb.c b/hw/pci-host/pnv_phb.c index 85fcc3b686..0b556d1bf5 100644 --- a/hw/pci-host/pnv_phb.c +++ b/hw/pci-host/pnv_phb.c @@ -202,7 +202,6 @@ static void pnv_phb_class_init(ObjectClass *klass, cons= t void *data) hc->root_bus_path =3D pnv_phb_root_bus_path; dc->realize =3D pnv_phb_realize; device_class_set_props(dc, pnv_phb_properties); - set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); dc->user_creatable =3D true; } =20 diff --git a/hw/pci-host/ppce500.c b/hw/pci-host/ppce500.c index 76623f78c4..67180ba5f0 100644 --- a/hw/pci-host/ppce500.c +++ b/hw/pci-host/ppce500.c @@ -516,7 +516,6 @@ static void e500_pcihost_class_init(ObjectClass *klass,= const void *data) DeviceClass *dc =3D DEVICE_CLASS(klass); =20 dc->realize =3D e500_pcihost_realize; - set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); device_class_set_props(dc, pcihost_properties); dc->vmsd =3D &vmstate_ppce500_pci; } diff --git a/hw/pci-host/q35.c b/hw/pci-host/q35.c index bf56229051..b353d3e1e6 100644 --- a/hw/pci-host/q35.c +++ b/hw/pci-host/q35.c @@ -194,7 +194,6 @@ static void q35_host_class_init(ObjectClass *klass, con= st void *data) device_class_set_props(dc, q35_host_props); /* Reason: needs to be wired up by pc_q35_init */ dc->user_creatable =3D false; - set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); dc->fw_name =3D "pci"; } =20 diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index c50061996c..b3c2678667 100644 --- a/hw/pci-host/raven.c +++ b/hw/pci-host/raven.c @@ -296,7 +296,6 @@ static void raven_pcihost_class_init(ObjectClass *klass= , const void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); =20 - set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); dc->realize =3D raven_pcihost_realizefn; dc->fw_name =3D "pci"; } diff --git a/hw/pci-host/remote.c b/hw/pci-host/remote.c index feaaa9adaa..9ea95fac6e 100644 --- a/hw/pci-host/remote.c +++ b/hw/pci-host/remote.c @@ -55,7 +55,6 @@ static void remote_pcihost_class_init(ObjectClass *klass,= const void *data) dc->realize =3D remote_pcihost_realize; =20 dc->user_creatable =3D false; - set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); dc->fw_name =3D "pci"; } =20 diff --git a/hw/pci-host/sabre.c b/hw/pci-host/sabre.c index b3f57dca7d..cd2328ad53 100644 --- a/hw/pci-host/sabre.c +++ b/hw/pci-host/sabre.c @@ -505,7 +505,6 @@ static void sabre_class_init(ObjectClass *klass, const = void *data) dc->realize =3D sabre_realize; device_class_set_legacy_reset(dc, sabre_reset); device_class_set_props(dc, sabre_properties); - set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); dc->fw_name =3D "pci"; sbc->explicit_ofw_unit_address =3D sabre_ofw_unit_address; } diff --git a/hw/pci-host/uninorth.c b/hw/pci-host/uninorth.c index d39546b6f4..10972de694 100644 --- a/hw/pci-host/uninorth.c +++ b/hw/pci-host/uninorth.c @@ -435,7 +435,6 @@ static void pci_unin_main_class_init(ObjectClass *klass= , const void *data) =20 dc->realize =3D pci_unin_main_realize; device_class_set_props(dc, pci_unin_main_pci_host_props); - set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); dc->fw_name =3D "pci"; sbc->explicit_ofw_unit_address =3D pci_unin_main_ofw_unit_address; } @@ -453,7 +452,6 @@ static void pci_u3_agp_class_init(ObjectClass *klass, c= onst void *data) DeviceClass *dc =3D DEVICE_CLASS(klass); =20 dc->realize =3D pci_u3_agp_realize; - set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); } =20 static const TypeInfo pci_u3_agp_info =3D { @@ -469,7 +467,6 @@ static void pci_unin_agp_class_init(ObjectClass *klass,= const void *data) DeviceClass *dc =3D DEVICE_CLASS(klass); =20 dc->realize =3D pci_unin_agp_realize; - set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); } =20 static const TypeInfo pci_unin_agp_info =3D { @@ -485,7 +482,6 @@ static void pci_unin_internal_class_init(ObjectClass *k= lass, const void *data) DeviceClass *dc =3D DEVICE_CLASS(klass); =20 dc->realize =3D pci_unin_internal_realize; - set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); } =20 static const TypeInfo pci_unin_internal_info =3D { diff --git a/hw/pci-host/xilinx-pcie.c b/hw/pci-host/xilinx-pcie.c index 86c20377d1..40f625b61d 100644 --- a/hw/pci-host/xilinx-pcie.c +++ b/hw/pci-host/xilinx-pcie.c @@ -172,7 +172,6 @@ static void xilinx_pcie_host_class_init(ObjectClass *kl= ass, const void *data) =20 hc->root_bus_path =3D xilinx_pcie_host_root_bus_path; dc->realize =3D xilinx_pcie_host_realize; - set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); dc->fw_name =3D "pci"; device_class_set_props(dc, xilinx_pcie_host_props); } @@ -291,7 +290,6 @@ static void xilinx_pcie_root_class_init(ObjectClass *kl= ass, const void *data) PCIDeviceClass *k =3D PCI_DEVICE_CLASS(klass); DeviceClass *dc =3D DEVICE_CLASS(klass); =20 - set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); dc->desc =3D "Xilinx AXI-PCIe Host Bridge"; k->vendor_id =3D PCI_VENDOR_ID_XILINX; k->device_id =3D 0x7021; diff --git a/hw/pci/pci_host.c b/hw/pci/pci_host.c index 05f1475dc7..91e3885c7f 100644 --- a/hw/pci/pci_host.c +++ b/hw/pci/pci_host.c @@ -245,6 +245,7 @@ static void pci_host_class_init(ObjectClass *klass, con= st void *data) DeviceClass *dc =3D DEVICE_CLASS(klass); device_class_set_props(dc, pci_host_properties_common); dc->vmsd =3D &vmstate_pcihost; + set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); } =20 static const TypeInfo pci_host_type_info =3D { --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231869; cv=none; d=zohomail.com; s=zohoarc; b=ERUZf6UilE8rpYNWqfHLizyfMFeWXJng41xDXzEh1YlD+GlxrxHD/VVXJg6V18X2WsmFKwJV0QXpaYaIijN6JMOxPC4cQFuMwIlxawQDd/5fOsfQ5eQTfL0+HzXFRrgm9w4AIYeV0oR7zgralQiNDZigMfUJJF5fBd3Vi4Xihi8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231869; h=Content-Type: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=iYHpq6gBH13+yNuTw9POcqr/nFbgK0msqGQRhhW0KQM=; b=LweNnrDE9GheAXrMysX18pxClF2Hbiu2vWdKvHAPlYOxED5+cyjN3dVYqg3NP+8HWPjrMMjn83va8ptwsUH7pIf9lQdRoBPXVukvkZ6Bk4EGWpafAFUIJEGnO6XA+Avp1s73FZpfurCoQ29AK+Qo17DaqiSt/nFa+kVY4ysAzjI= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770231869654586.7062184943292; Wed, 4 Feb 2026 11:04:29 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vni9w-0006gK-Ak; Wed, 04 Feb 2026 14:03:28 -0500 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 1vni9t-0006Rz-IY for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:25 -0500 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 1vni9r-0007kn-Sn for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:25 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-587-s47mjBugNUWEXEA-CvoeHg-1; Wed, 04 Feb 2026 14:03:21 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4804157a3c9so1268265e9.1 for ; Wed, 04 Feb 2026 11:03:21 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4830fc0a3bbsm50076705e9.1.2026.02.04.11.03.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231802; 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: in-reply-to:in-reply-to:references:references; bh=iYHpq6gBH13+yNuTw9POcqr/nFbgK0msqGQRhhW0KQM=; b=Uiuh28cLTJlGSKDo5jdY9XoSVI+chP/FRobKV0+94SS4Ng/AU7qVZf7MDLEXqBGEGGrB9e zBPLe94vTa0qyNvND4AvS/7k7I4toGPR3SRcF2ulHzHSQHBWu2tYdVGmSILZsqe95rD84e ZAmrJxdx6j0EvnHTUCIVNDgUVmLWgk4= X-MC-Unique: s47mjBugNUWEXEA-CvoeHg-1 X-Mimecast-MFC-AGG-ID: s47mjBugNUWEXEA-CvoeHg_1770231800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231800; x=1770836600; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=iYHpq6gBH13+yNuTw9POcqr/nFbgK0msqGQRhhW0KQM=; b=RcfxAfBBuPwVblmalKsDz9UjzLmFkSUIjAFLHV05TtYA07YlXOBY7Co4ozWtmS7hDT k42pAt55VJbuAGqCKiB6oJNgUDghhSuts051R9HbjOu4V4P31l1UvHqv1QIWrxegKXuy uldT4JMzISYjNRpPiWppgtOQA3jjUw01mkdriXEiVn9Cw7jjpC7vehGxjOz+u2XXUlAC wluyZ6ttqagvhsPTeKAI7zeHVzR+RaMOONVVKKdcBlBwwSKg1/6WoVzgNM97AUQ5XH+A fe1Ba3gFXcz4kqloG+azvxbwgCLIJiFbbV3JBiNvNhxvtfzAWUBXBIFAIewnGYZWbZ+9 zQ2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231800; x=1770836600; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=iYHpq6gBH13+yNuTw9POcqr/nFbgK0msqGQRhhW0KQM=; b=cZh7bY/NkSxsa6WVbcf7kPEY9cleMYu2pqGETdx7S0gcacXcrlTFsMMILBq3qLtYY9 wExfV1n5hQO+dncF+9uE3QR4elcpFRiX/Fd7v4ST+DBDUJKSt7okvqu3o/GLJ4VypmnL q+4F4cwn+W8O1Pzi/zf2mJbVEqnAQpy3AfY5Vclzyq2NaB0JJyYLkemKj6q1njav9vGy DTXZ3gH3rpZvXg89Mhdt+e7Waqms5hUgiIElsk8Ql3aQ2yw1bvLZKDcbEtLqtbdDuujS oKvCaBUth0JPFlo5jiq9y0JWhBOJb+kN/sinVB+m1QyUhzniy2GWR2JpXw79uGnmDQkD WRkw== X-Gm-Message-State: AOJu0YxPBamVxuHBr5q8ZxD4qS7wATRGxxJLyF37dVLZ4tVtb5MLYcHW yLdVPHo3Zxs3ftw+wtxRiUeNbrfAPEC3ghTNHfrToUc5YkSsbZ1E1MSDmng5YB8xzCjUL+SGLMu RkMuB4QPT87jEjZ7Fld7N2Igivxgn8llsYCTy9azgP4BoS4tQh0HRFJ72PKgRCjxOcqmQ8xmPoF ZETWUa90jPSHjiLDaHZXI0HyFYq/wli76Itw== X-Gm-Gg: AZuq6aKdsBs4LUmg9mFZrn2oUL0xkZJfclLtyvqgklk6/2AoG84fZY1HtAxpPr6inRn OYWB9zFOyGPMwX7RyhzcbBmjpnPJ+aWDplqV73Be/YZTfLIXb8UOgsY4mOQc+rCQZ1Hk6/bTLEL edIPhMZVt6BGTFk/ogatpNE3KXWn5D7kmWgBMHPOLFLgjDF/YGjqRvqgIogVCgJsE5rGuEqtPCX Nq9X9aGpUA9mLDW1g0rkRA4T+ZBUJXafePgOmSV+ld51zlpyasd/EMB0XGq3ijG9T3ksxyT0oiD +ylzABNlZeDIRgeZs1G6EcgrdCOGDo4ULSLWretXQo0k3zENrVCq40eTXueecxTEHv+30Dx2Uk1 OTe4fott5x3iFBxIghFB4a6oB89c44rYW2Q== X-Received: by 2002:a05:600c:1daa:b0:47a:9560:5944 with SMTP id 5b1f17b1804b1-4830e98ad5fmr55903825e9.34.1770231799724; Wed, 04 Feb 2026 11:03:19 -0800 (PST) X-Received: by 2002:a05:600c:1daa:b0:47a:9560:5944 with SMTP id 5b1f17b1804b1-4830e98ad5fmr55903385e9.34.1770231799359; Wed, 04 Feb 2026 11:03:19 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:17 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , CLEMENT MATHIEU--DRIF , Jason Wang , Yi Liu , Marcel Apfelbaum , Paolo Bonzini , Richard Henderson , Eduardo Habkost Subject: [PULL 12/51] intel_iommu: Add an IOMMU index for pre-translated addresses Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231871639158501 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: CLEMENT MATHIEU--DRIF Signed-off-by: Clement Mathieu--Drif Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251029105137.1097933-2-clement.mathieu--drif@eviden.com> --- hw/i386/intel_iommu.c | 13 +++++++++++++ hw/i386/intel_iommu_internal.h | 7 +++++++ 2 files changed, 20 insertions(+) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index e8a6f50a5a..80b21a6468 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -5601,6 +5601,17 @@ static const TypeInfo vtd_info =3D { .class_init =3D vtd_class_init, }; =20 +static int vtd_attrs_to_index(IOMMUMemoryRegion *iommu_mr, MemTxAttrs attr= s) +{ + return attrs.address_type =3D=3D PCI_AT_TRANSLATED ? + VTD_IDX_TRANSLATED : VTD_IDX_UNTRANSLATED; +} + +static int vtd_num_indexes(IOMMUMemoryRegion *iommu) +{ + return VTD_IDX_COUNT; +} + static void vtd_iommu_memory_region_class_init(ObjectClass *klass, const void *data) { @@ -5609,6 +5620,8 @@ static void vtd_iommu_memory_region_class_init(Object= Class *klass, imrc->translate =3D vtd_iommu_translate; imrc->notify_flag_changed =3D vtd_iommu_notify_flag_changed; imrc->replay =3D vtd_iommu_replay; + imrc->attrs_to_index =3D vtd_attrs_to_index; + imrc->num_indexes =3D vtd_num_indexes; } =20 static const TypeInfo vtd_iommu_memory_region_info =3D { diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h index a2ca79f925..be757c290d 100644 --- a/hw/i386/intel_iommu_internal.h +++ b/hw/i386/intel_iommu_internal.h @@ -688,6 +688,13 @@ typedef struct VTDPIOTLBInvInfo { /* Bits to decide the offset for each level */ #define VTD_LEVEL_BITS 9 =20 +/* IOMMU Index */ +typedef enum VTDIOMMUIndex { + VTD_IDX_UNTRANSLATED =3D 0, /* Default */ + VTD_IDX_TRANSLATED =3D 1, + VTD_IDX_COUNT =3D 2, /* Number of supported indexes */ +} VTDIOMMUIndex; + typedef struct VTDHostIOMMUDevice { IntelIOMMUState *iommu_state; PCIBus *bus; --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231867; cv=none; d=zohomail.com; s=zohoarc; b=oJvpRmvi4y4zQ6J4avUppPFVjcenyTgvwz487H1Pf9YJVBcRbRqylGNQw2Wtd5vu6fsHGWpriZFAuMwW874zhyKAsew/8VD7FrR/QnE5BgFgCvLTwZwGkaj91ig8Dy4hxn/uM2xQGT1JWlf7aGEEOAfWqLZ48fdba42/iuDZm9Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231867; h=Content-Type: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=fvEsUtD4PbmE+Ms6GIDHh3NZPUYzXZdD4oNou5cZ8kI=; b=aPdAUeaPFTjNh7Q7qqhO0Wq4do/GzLMPLM0YqnGEAAkKpRlztgAnuj0DPxktYOQskZGoSE6HeatYwNrgLCrt39yQxM9r4+Y62jqlVijtE0q5X+swLz1Ak+ZHGxdzkr/NAP40/prS7Ey6ojEEYdxguWJUUj0+xInasjZfyjKB9c4= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770231867344212.47642627248206; Wed, 4 Feb 2026 11:04:27 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vni9z-0006kI-6h; Wed, 04 Feb 2026 14:03:31 -0500 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 1vni9x-0006ie-3F for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:29 -0500 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 1vni9v-0007lR-An for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:28 -0500 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-138-KfdjpgtBPeCpVuONFhQwDA-1; Wed, 04 Feb 2026 14:03:25 -0500 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-43591aacca2so156043f8f.1 for ; Wed, 04 Feb 2026 11:03:23 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4361805faddsm8349158f8f.33.2026.02.04.11.03.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231806; 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: in-reply-to:in-reply-to:references:references; bh=fvEsUtD4PbmE+Ms6GIDHh3NZPUYzXZdD4oNou5cZ8kI=; b=e4ztpHpokD0Lq58O91pd4tDwmGlWrxa8u8LHwmuJtL3BFkdPKLkLMaKmhmKyv3yk2ZzSzV L4848oUTBONhObD3x61UK8l+bV5zcVUrGzfBEll1fy9MANE1RZyafYzolz7zxJ/gZ6cCjK YHe4ABhdcdK7ATiCFftl7tGASGcI+0w= X-MC-Unique: KfdjpgtBPeCpVuONFhQwDA-1 X-Mimecast-MFC-AGG-ID: KfdjpgtBPeCpVuONFhQwDA_1770231803 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231802; x=1770836602; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=fvEsUtD4PbmE+Ms6GIDHh3NZPUYzXZdD4oNou5cZ8kI=; b=eJMLG4nynrTgNNBE0aDfuGLhsWdUNR5Vt+nxbiJhf11jfX7Ku9VAr05j7dNrhc4W9l Gff0Y5UPLWTrwuWNGRScqgr/2G+kv3nbJ9ITZ+AuQ2K0bvS3pdFdJQwC8NSsEQNx5HTY YrvhxRjfEvw5hThN2dh/UoBl1sIc+ZeuaceU6ArdpZSyULwP7tt/gKDj3fLgRtkZFdIm vbxJliTfSnN5ZegZNGq8abVmE57XrDi3dT9M37QVQe5RnSvX9pPZDdOzcWwvAq3KkNT6 n8ATAlWcqOFwfzA7XobJ0Hj+hc3UgV97sDNfHkjxDpZ7im2G3ryhK1JvT9/cjWfGUbUO kJwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231802; x=1770836602; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fvEsUtD4PbmE+Ms6GIDHh3NZPUYzXZdD4oNou5cZ8kI=; b=R9HOpISzZsgRXizgU3ggf0jRMVS58K0hRSdJ4DnV8yZ2LilP4xy77IlgnIKsun8SEu EqlKzj4jhdtb/e5wRdz7shkQFSuElpFN6nF4Hdyw6t/TlJisxpAPdlEbrmuF/H7gsuh4 RfLgchJvNfJl+zbB2qk6yTgSj765h2GBWBVNXmA51yIR2mKBpu+fI/AEvMRfoAt/Fmzz D3bm73C761qLiM6bD+bpBiquOOcjVJkq+tDK9ERk5x/vz26veZz+4RgG5jzTB+XbwMb7 INmDwN8bx572k+OMDbelnSDRTd2kLYOvwq9F7eKgSNll1r7KyPpI0oOsQT1Eh1i0smzw IVew== X-Gm-Message-State: AOJu0Yz2qEuPHuttG95zEbgHac5Ah9pWX5rWq69kFo1rSJRtwVw1jZIa hEKiH6s9KyF8PXDl1WjCl6pg5R87xhcdQzXqP5nvOkisEedHovogfYxe52XSDeLGuLejYAvssJg UB3mIHdDn9VweBzd8mHRgf8NLnUbZFo9sh0wsftcWys4Yc5PzCdPMADGpxZUcG6WlxnxSBlsMWY 5gt+ZtXWsZcSFTcS2oCyw2ujcGLTDCgQwdDw== X-Gm-Gg: AZuq6aLcRCw++4PReUQ/GqfzJvYPrmlphSkTiiqLfMFWd8rt3eFFdlkR5VBTD1DabuF qLgkX2Qh3V+Ee8sbPUmo9iyCF/QGpdWkZjkb68FcNaFWHpxhXua24/hwG0K1wDT0sKUrvoggolb q3/2EpNbevOhPHI8ZsFcvVp9TXvDorkKosi3KG3aq42cuODgNQEaSkg2R6+5/Er7GCq9It7rfrf /IhJ05NYUzyz7qVXWjmwSZeNUbc6ndZ/DoVgBWOJNeOj+AuWELh2F+TjQTn7mRY6i10yPuIvBsd oMYo8FLBw9NAnEUK/DVLtT1XB5oR+mB647CnEzKxgqMUy8+GUEIqXe41icZby6ZEhrf18auLodu 68to1zbfL2kjGvf2R2geII0/0YNnJ4aUG0w== X-Received: by 2002:a05:6000:2882:b0:436:141:82f8 with SMTP id ffacd0b85a97d-43617e41f07mr6095256f8f.25.1770231802325; Wed, 04 Feb 2026 11:03:22 -0800 (PST) X-Received: by 2002:a05:6000:2882:b0:436:141:82f8 with SMTP id ffacd0b85a97d-43617e41f07mr6095194f8f.25.1770231801767; Wed, 04 Feb 2026 11:03:21 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:19 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , CLEMENT MATHIEU--DRIF , Jason Wang , Yi Liu , Paolo Bonzini , Richard Henderson , Eduardo Habkost , Marcel Apfelbaum Subject: [PULL 13/51] intel_iommu: Support memory operations with pre-translated addresses Message-ID: <40376c5eb89f2961fef811db0ca4c15dfa673a6b.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231869354158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: CLEMENT MATHIEU--DRIF Signed-off-by: Clement Mathieu--Drif Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251029105137.1097933-3-clement.mathieu--drif@eviden.com> --- hw/i386/intel_iommu.c | 118 +++++++++++++++++++++++++++++------------- 1 file changed, 81 insertions(+), 37 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 80b21a6468..7e7c31cb55 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -3985,6 +3985,25 @@ static void vtd_mem_write(void *opaque, hwaddr addr, } } =20 +static void vtd_prepare_identity_entry(hwaddr addr, IOMMUAccessFlags perm, + uint32_t pasid, IOMMUTLBEntry *io= tlb) +{ + iotlb->iova =3D addr & VTD_PAGE_MASK_4K; + iotlb->translated_addr =3D addr & VTD_PAGE_MASK_4K; + iotlb->addr_mask =3D ~VTD_PAGE_MASK_4K; + iotlb->perm =3D perm; + iotlb->pasid =3D pasid; +} + +static inline void vtd_prepare_error_entry(IOMMUTLBEntry *entry) +{ + entry->iova =3D 0; + entry->translated_addr =3D 0; + entry->addr_mask =3D ~VTD_PAGE_MASK_4K; + entry->perm =3D IOMMU_NONE; + entry->pasid =3D PCI_NO_PASID; +} + static IOMMUTLBEntry vtd_iommu_translate(IOMMUMemoryRegion *iommu, hwaddr = addr, IOMMUAccessFlags flag, int iommu_= idx) { @@ -3996,16 +4015,29 @@ static IOMMUTLBEntry vtd_iommu_translate(IOMMUMemor= yRegion *iommu, hwaddr addr, .pasid =3D vtd_as->pasid, }; bool success; + bool is_write =3D flag & IOMMU_WO; =20 if (likely(s->dmar_enabled)) { - success =3D vtd_do_iommu_translate(vtd_as, vtd_as->bus, vtd_as->de= vfn, - addr, flag & IOMMU_WO, &iotlb); + /* Only support translated requests in scalable mode */ + if (iommu_idx =3D=3D VTD_IDX_TRANSLATED && s->root_scalable) { + if (vtd_as->pasid =3D=3D PCI_NO_PASID) { + vtd_prepare_identity_entry(addr, IOMMU_RW, PCI_NO_PASID, + &iotlb); + success =3D true; + } else { + vtd_prepare_error_entry(&iotlb); + error_report_once("%s: translated request with PASID not " + "allowed (pasid=3D0x%" PRIx32 ")", __fun= c__, + vtd_as->pasid); + success =3D false; + } + } else { + success =3D vtd_do_iommu_translate(vtd_as, vtd_as->bus, vtd_as= ->devfn, + addr, is_write, &iotlb); + } } else { /* DMAR disabled, passthrough, use 4k-page*/ - iotlb.iova =3D addr & VTD_PAGE_MASK_4K; - iotlb.translated_addr =3D addr & VTD_PAGE_MASK_4K; - iotlb.addr_mask =3D ~VTD_PAGE_MASK_4K; - iotlb.perm =3D IOMMU_RW; + vtd_prepare_identity_entry(addr, IOMMU_RW, vtd_as->pasid, &iotlb); success =3D true; } =20 @@ -4414,6 +4446,37 @@ static int vtd_int_remap(X86IOMMUState *iommu, MSIMe= ssage *src, src, dst, sid, false); } =20 +static void vtd_report_sid_ir_illegal_access(IntelIOMMUState *s, uint16_t = sid, + uint32_t pasid, hwaddr addr, + bool is_write) +{ + uint8_t bus_n =3D VTD_SID_TO_BUS(sid); + uint8_t devfn =3D VTD_SID_TO_DEVFN(sid); + bool is_fpd_set =3D false; + VTDContextEntry ce; + + /* Try out best to fetch FPD, we can't do anything more */ + if (vtd_dev_to_context_entry(s, bus_n, devfn, &ce) =3D=3D 0) { + is_fpd_set =3D ce.lo & VTD_CONTEXT_ENTRY_FPD; + if (!is_fpd_set && s->root_scalable) { + vtd_ce_get_pasid_fpd(s, &ce, &is_fpd_set, pasid); + } + } + + vtd_report_fault(s, VTD_FR_SM_INTERRUPT_ADDR, is_fpd_set, sid, addr, + is_write, pasid !=3D PCI_NO_PASID, pasid); +} + +static void vtd_report_ir_illegal_access(VTDAddressSpace *vtd_as, + hwaddr addr, bool is_write) +{ + uint8_t bus_n =3D pci_bus_num(vtd_as->bus); + uint16_t sid =3D PCI_BUILD_BDF(bus_n, vtd_as->devfn); + + vtd_report_sid_ir_illegal_access(vtd_as->iommu_state, sid, vtd_as->pas= id, + addr, is_write); +} + static MemTxResult vtd_mem_ir_read(void *opaque, hwaddr addr, uint64_t *data, unsigned size, MemTxAttrs attrs) @@ -4425,9 +4488,11 @@ static MemTxResult vtd_mem_ir_write(void *opaque, hw= addr addr, uint64_t value, unsigned size, MemTxAttrs attrs) { + IntelIOMMUState *s =3D opaque; int ret =3D 0; MSIMessage from =3D {}, to =3D {}; uint16_t sid =3D X86_IOMMU_SID_INVALID; + uint32_t pasid; =20 from.address =3D (uint64_t) addr + VTD_INTERRUPT_ADDR_FIRST; from.data =3D (uint32_t) value; @@ -4435,9 +4500,16 @@ static MemTxResult vtd_mem_ir_write(void *opaque, hw= addr addr, if (!attrs.unspecified) { /* We have explicit Source ID */ sid =3D attrs.requester_id; + pasid =3D attrs.pid !=3D 0 ? attrs.pid : PCI_NO_PASID; + + if (attrs.address_type =3D=3D PCI_AT_TRANSLATED && + sid !=3D X86_IOMMU_SID_INVALID) { + vtd_report_sid_ir_illegal_access(s, sid, pasid, from.address, = true); + return MEMTX_ERROR; + } } =20 - ret =3D vtd_interrupt_remap_msi(opaque, &from, &to, sid, true); + ret =3D vtd_interrupt_remap_msi(s, &from, &to, sid, true); if (ret) { /* Drop this interrupt */ return MEMTX_ERROR; @@ -4462,30 +4534,6 @@ static const MemoryRegionOps vtd_mem_ir_ops =3D { }, }; =20 -static void vtd_report_ir_illegal_access(VTDAddressSpace *vtd_as, - hwaddr addr, bool is_write) -{ - IntelIOMMUState *s =3D vtd_as->iommu_state; - uint8_t bus_n =3D pci_bus_num(vtd_as->bus); - uint16_t sid =3D PCI_BUILD_BDF(bus_n, vtd_as->devfn); - bool is_fpd_set =3D false; - VTDContextEntry ce; - - assert(vtd_as->pasid !=3D PCI_NO_PASID); - - /* Try out best to fetch FPD, we can't do anything more */ - if (vtd_dev_to_context_entry(s, bus_n, vtd_as->devfn, &ce) =3D=3D 0) { - is_fpd_set =3D ce.lo & VTD_CONTEXT_ENTRY_FPD; - if (!is_fpd_set && s->root_scalable) { - vtd_ce_get_pasid_fpd(s, &ce, &is_fpd_set, vtd_as->pasid); - } - } - - vtd_report_fault(s, VTD_FR_SM_INTERRUPT_ADDR, - is_fpd_set, sid, addr, is_write, - true, vtd_as->pasid); -} - static MemTxResult vtd_mem_ir_fault_read(void *opaque, hwaddr addr, uint64_t *data, unsigned size, MemTxAttrs attrs) @@ -5145,14 +5193,10 @@ static IOMMUTLBEntry vtd_iommu_ats_do_translate(IOM= MUMemoryRegion *iommu, =20 if (vtd_is_interrupt_addr(addr)) { vtd_report_ir_illegal_access(vtd_as, addr, flags & IOMMU_WO); + vtd_prepare_error_entry(&entry); entry.target_as =3D &address_space_memory; - entry.iova =3D 0; - entry.translated_addr =3D 0; - entry.addr_mask =3D ~VTD_PAGE_MASK_4K; - entry.perm =3D IOMMU_NONE; - entry.pasid =3D PCI_NO_PASID; } else { - entry =3D vtd_iommu_translate(iommu, addr, flags, 0); + entry =3D vtd_iommu_translate(iommu, addr, flags, VTD_IDX_UNTRANSL= ATED); } =20 return entry; --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231857; cv=none; d=zohomail.com; s=zohoarc; b=WYkuXEwUqzTKDVO1V5HnuBCp6u9qRKTlJZBMz7syKnpvgzt+SHpxQIqZhOLMypFEo59MRQvJof8ycspATN1Z+kIeHM1z7ZXBZ5o2ir64PdJ4vaiZ+mZ6mq46zu7YbL/CuA0dd+QEO66nOln1ngotfLEtIou+RoAIKu+Xs0Tlkg4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231857; h=Content-Type: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=FASluuV0Jcb054KpKqsmGba0D+bzV9eQK8JmA6WXuug=; b=hognPPtwNtRU0vKISC7IkwgqY8B08JMI9tP/OF9OFtVRuWq8ZNj/e/X7ZJFa72nZ3gPpA/hgDf5znT9ln3THITMO5BWyRpMP4p3MAw6UqsSOC5Ak1Ne3nkQoD8LVVoQbMmU7LpTJmtx5SklDt7kC+uEnUQ7C+Y3W2yAG92qYu6Q= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770231857666168.1126745277512; Wed, 4 Feb 2026 11:04:17 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniA4-00072e-Mp; Wed, 04 Feb 2026 14:03:37 -0500 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 1vniA2-0006vy-TK for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:34 -0500 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 1vniA0-0007mh-CT for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:34 -0500 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-637-Qgs30U1AOAS9TIS-Q1dV6A-1; Wed, 04 Feb 2026 14:03:26 -0500 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-42fdbba545fso1119891f8f.0 for ; Wed, 04 Feb 2026 11:03:25 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48317d4a6b1sm3760595e9.11.2026.02.04.11.03.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231811; 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: in-reply-to:in-reply-to:references:references; bh=FASluuV0Jcb054KpKqsmGba0D+bzV9eQK8JmA6WXuug=; b=aIrJjGo6mtWGgCjVHhe8x4uh+e2EeFC0UeZO5uzwk4QpKF0bEKJjNwIW0wE2MzlJwIgv/l szJJck8U5xjgTPZVVTsnsF660moDouIPKnF/DNbDOO1ykE0bw0X+RBQu9JjLmYhF2jO6wb v20rLpfpCf/YkfUF7gZDbA1ZmSvvcu8= X-MC-Unique: Qgs30U1AOAS9TIS-Q1dV6A-1 X-Mimecast-MFC-AGG-ID: Qgs30U1AOAS9TIS-Q1dV6A_1770231805 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231804; x=1770836604; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=FASluuV0Jcb054KpKqsmGba0D+bzV9eQK8JmA6WXuug=; b=hXbGoMmUjTrwQhS4rpQ4DKGM5hsTZ9JOkr3JgQ7KcQdWVRX0xLU7XKxBMUKLD5I/9s fgJTNEYtBjuTct1X537OkiVMrbsGmhHUw/qhbAkp5alsr/UfQrhagP8qzIxpCQkgFA+z bdc3ynSH/QKltShmqX0KEMG7EhDB3SfsPtDQRIKjORANZzMHMD2thaFJHWSYYwyhbFM7 J8yuiwQvmH4yMDSrqQfO6XfbW4+2vNud52fCQqdaJmHEKbynsvIw1OYh2JE44UoRz7PW m6xXfw7IMIH6im7AjErg1t+qC/flKmKMaX4bnquAFvN4hAw2iaTNM3tpN/UFzXLzKeon RTEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231804; x=1770836604; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FASluuV0Jcb054KpKqsmGba0D+bzV9eQK8JmA6WXuug=; b=lmzKFQSUa3B1QOhOvlrsh8Kg29hSnXaoo9cIjmqzdLjOlVJZ6eCH54GrT6UcMhwVta tij93oP3xI8q9U7IHCd+fMX8P3vqAplTyhh2N3AEkZnL+Ag/zHyP6kka75ohsEQas5gF yMR/geIWerrHs1dpXpuozSQ7DCAG1sbDIctHC0F6IZTNfRCuq2lEDTEY89u4FKWk4EtL 8CGL3i3U5sZmV9nZPr5m8vy0xGEVdE0uNsv8dwcZ/L/FYpoWienELboiJDkl0dmqaEZ8 B7K2GK78MLWKeh6uWuf89E8J8llJeTpl9keKJhaKKC8F4nnUBsQ6ZC7YAeu9omU0jqP0 WXDw== X-Gm-Message-State: AOJu0YwElSMhTKvZPqfz16RTvrhCV9hli8L/v09+sTt8qEc9ZX10/bbe Db3L0jehvADbNB6D8fzCw5TD7Z2gGxnjGxdPBRYx10wKQtSgObqrloDlCNRQqu7GOdYZuWYqlmQ 76hKV9bcSy0DGvBQq37ho9eb4BQG0g2nypRPPsKats19WobjfkLG1b7mGEKvtf/1oWNhgxtUeCn hQxSqK3XcLMQela51/PmdNcK2jg0Ero+tWHw== X-Gm-Gg: AZuq6aJKp0BAQs5rL9OUkrjPw3e4RvlfiEz9I1GKY0Ti/xiKqXVTE3Ao+VhTpXrYbfo B2DbemjRdmpNP4u/kr0cNVfVPLUiQMtMfKmh5KbVmkEvSALuDb56wlfMnXsidld82+IDk9yzuBm DSnelAKNzLAYWw2nkWKhhU+/9wxX6rx1uSC4+MgDSqDnB66+as9MZRYvX2XSbiMtfevqh47EcGE vtMxQueA+lgHrE53XBUOqdH3oleI3C7rxstJtcunbSSWG0JtItd1iSHwXnkqRSlgBbEuFpDRXF6 pSttQLbAk9euxjHtVayUv0qLoOnGhoUPGPKplDpgxJY6E+vcOBl787QGOkCv0L44OMkLiuc9Mf9 XVVgWhV51IXBZQjBmC00NGZ0lMaUFlegCUQ== X-Received: by 2002:a05:600c:1c22:b0:46f:a2ba:581f with SMTP id 5b1f17b1804b1-483179da808mr3365795e9.16.1770231804530; Wed, 04 Feb 2026 11:03:24 -0800 (PST) X-Received: by 2002:a05:600c:1c22:b0:46f:a2ba:581f with SMTP id 5b1f17b1804b1-483179da808mr3365375e9.16.1770231803992; Wed, 04 Feb 2026 11:03:23 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:21 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , CLEMENT MATHIEU--DRIF , Marcel Apfelbaum Subject: [PULL 14/51] pcie: Add a function to check if pasid privileged mode is enabled Message-ID: <7b775ce1e595487808620877e77d4158ada2b0ce.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231859122158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: CLEMENT MATHIEU--DRIF Signed-off-by: Clement Mathieu--Drif Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251029105137.1097933-4-clement.mathieu--drif@eviden.com> --- hw/pci/pcie.c | 21 ++++++++++++++++----- include/hw/pci/pcie.h | 1 + 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c index c481c16c0f..50fc4aa8eb 100644 --- a/hw/pci/pcie.c +++ b/hw/pci/pcie.c @@ -1340,6 +1340,16 @@ void pcie_pri_init(PCIDevice *dev, uint16_t offset, = uint32_t outstanding_pr_cap, dev->exp.pri_cap =3D offset; } =20 +static inline bool pcie_pasid_check_ctrl_bit_enabled(const PCIDevice *dev, + uint16_t mask) +{ + if (!pci_is_express(dev) || !dev->exp.pasid_cap) { + return false; + } + return (pci_get_word(dev->config + dev->exp.pasid_cap + PCI_PASID_CTRL= ) & + mask) !=3D 0; +} + uint32_t pcie_pri_get_req_alloc(const PCIDevice *dev) { if (!pcie_pri_enabled(dev)) { @@ -1359,11 +1369,12 @@ bool pcie_pri_enabled(const PCIDevice *dev) =20 bool pcie_pasid_enabled(const PCIDevice *dev) { - if (!pci_is_express(dev) || !dev->exp.pasid_cap) { - return false; - } - return (pci_get_word(dev->config + dev->exp.pasid_cap + PCI_PASID_CTRL= ) & - PCI_PASID_CTRL_ENABLE) !=3D 0; + return pcie_pasid_check_ctrl_bit_enabled(dev, PCI_PASID_CTRL_ENABLE); +} + +bool pcie_pasid_priv_enabled(PCIDevice *dev) +{ + return pcie_pasid_check_ctrl_bit_enabled(dev, PCI_PASID_CTRL_PRIV); } =20 bool pcie_ats_enabled(const PCIDevice *dev) diff --git a/include/hw/pci/pcie.h b/include/hw/pci/pcie.h index fc02aeb169..d4e065db82 100644 --- a/include/hw/pci/pcie.h +++ b/include/hw/pci/pcie.h @@ -165,5 +165,6 @@ void pcie_pri_init(PCIDevice *dev, uint16_t offset, uin= t32_t outstanding_pr_cap, uint32_t pcie_pri_get_req_alloc(const PCIDevice *dev); bool pcie_pri_enabled(const PCIDevice *dev); bool pcie_pasid_enabled(const PCIDevice *dev); +bool pcie_pasid_priv_enabled(PCIDevice *dev); bool pcie_ats_enabled(const PCIDevice *dev); #endif /* QEMU_PCIE_H */ --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231854; cv=none; d=zohomail.com; s=zohoarc; b=Fe3NIvzPu/MxjuGUgK245R+ypr8HHIhCvL7CG8Q4IdQk2XXoKmmm8uScB1CySKFn4AMlQ7rx1o8hGlThjBaakG6UjCWT30Lm37bZxjdY6dYS1i0CsatrQOmxL4cW5wS/nn3adUmVffl5iK+JdioErEBhmnI2PbyxwdFfNoKvk6U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231854; h=Content-Type: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=s18vK9xXewEKiKTPHRSD0yzbqelRM/YB8pIVAnhGq/k=; b=P8v5BgsCXJquyyNTz2CeyZO8fuxTRohclx+2QXwamO+xLapkUzjVOTy5QhuarP8uDvOrSMf5woxjQkmLd38lbEuEJURFPHNDKTmIwRtxIEqaZjouSNU5c5DAqC4BKDng3xaS/ViwCWNuI5hRTRtnxncsvk5b2Q+c6g7gAUR1Ndw= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770231853994484.6664658688742; Wed, 4 Feb 2026 11:04:13 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniA0-0006kw-V9; Wed, 04 Feb 2026 14:03:32 -0500 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 1vni9z-0006kc-Dm for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:31 -0500 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 1vni9y-0007lu-2q for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:31 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-380-85o7qAniNRSpChL13iGwQQ-1; Wed, 04 Feb 2026 14:03:28 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-4801bceb317so1816025e9.1 for ; Wed, 04 Feb 2026 11:03:28 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48317d57009sm3188395e9.14.2026.02.04.11.03.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231809; 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: in-reply-to:in-reply-to:references:references; bh=s18vK9xXewEKiKTPHRSD0yzbqelRM/YB8pIVAnhGq/k=; b=dqgIEgQeAeZRXYFuTc+RRCK8I+ydMhLPbO17mk4FqZF4yIGKYx1R7eSI9OlWuBtLLe80Rz OKlqSa3yTvpfqBQiCzrppJmPK5Qn3DiiFrFjybHCy7fOcvHZj6Cb7jST8fOi6Uy2Rria/v CyXZTlmVnCvQF/IlQKARpAnBdyEfanA= X-MC-Unique: 85o7qAniNRSpChL13iGwQQ-1 X-Mimecast-MFC-AGG-ID: 85o7qAniNRSpChL13iGwQQ_1770231807 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231807; x=1770836607; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=s18vK9xXewEKiKTPHRSD0yzbqelRM/YB8pIVAnhGq/k=; b=uF3ElPnfj9fSy8Xj5XzcGSids7ju3t8NGJDlYISqQywAt9+Wbjy0wUtP+DfWMQEYfZ aap2O2Mqtws07eBGX+eVtfhgETYPwK4CAHVoxkQOGIyzXPACUIiPQkES1KhIbDCY5uIY PXUc0EqclUsiqgJwhCRvBJwUc/pq1iTdcDoQ0qnxMQCC+z3iZR0mZqmBe6yE7SUJn4jp cn73gl2d8Zo71loN9+4IbbIscCzgH1dAxmNfqScpS1YjvYYJqXQ1q0XqNJ5asUA6R9v2 1Yu3mp55RfbGnvECYohdfnZtOTLV5RxLn9Y3994zAmYy4QX16qmR1K3nustOqCt/sRNk kgrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231807; x=1770836607; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=s18vK9xXewEKiKTPHRSD0yzbqelRM/YB8pIVAnhGq/k=; b=SvvJbsLA7ZAkwErtwkUK5i0cWPXm0IDJvUWOHKKVmwGmagRuVOqEPP1edqG+djejcd Q+vb9Bhsqn219iyNjnskV4b9VGYHCiov/PMwvL17oUA735eZ5FlAw61Xd28o7ILtT/wm QxwHORjAFSa60dAvePd4cUY+6mtxLUUZq2sKrkWqnE8kAwHwjBUxKv+BOTe09qZYfKGU vpTglTxpfGLzQCcyzOz3k2UJUOrFh6vu78CMyoaHHayUbxj93rqkFg8OJaNedaSvI5j8 4pY9c7J0ZzGLQl/DhzLrO0uRuOIZJKKCk1Ou9/mGXqeDukBghjGPCT5nOPjY8L0RMSuY xb2A== X-Gm-Message-State: AOJu0Yz1NUBkOp1F34kutPyNx+G85IwUuoP6wPNoPhYcBnD0bWWqyiST pKcIi1TfsSnGqTZ6d61pVvzW4LnEz9zMe5CvpI8yO50Ytu06HLWPFyGmuu5Vr43YawbropJjztr YokuopAQ1nz/Nt2TxZ2tn1gJ/gAJ6yG75/Mnz0IBtwxphWPamscbQt/Q9KIwF56gmmKlCGUYDVY T6qc4XVktgrQoYjZiPLCz5LZF7WIR0zOpSZA== X-Gm-Gg: AZuq6aI0a+Dd6YLd2g841qso+lWcRAmBrFIzUZrO+kwoheHradiza5q2Fshqr5u1+6l poYhgTk80kBWzHxBbNp2zAi3RTMdCAA8OAsLMWU82LtC0bHFAW3oRuq6pP2R7phDl/oB8bAXpHE s5h/09QUwOfiIbfIK+G794AqctN9ueGOB/5QFC2H6nZbUZ6LiVgLPaJtNElz/5Ro5SZbnZ9PdMP FjMFFzcgYZL0gq10nSqsOIax/t4au1lSaEVHyrYy+hgal28GyTGFDdzrX+bx0rxS7Zgabk36yvs RQI5TXBCHrrGhLlDc4uBAr8X33FhLTKJPpFScac3eTlj5qerMDtArN/kdX6zvQqjx4zA3tciBm8 IjkDp4mWE/uafxy9d/a8ZTUcXamITgYKOvg== X-Received: by 2002:a05:600c:848a:b0:46e:6d5f:f68 with SMTP id 5b1f17b1804b1-4830e930426mr55766135e9.12.1770231806690; Wed, 04 Feb 2026 11:03:26 -0800 (PST) X-Received: by 2002:a05:600c:848a:b0:46e:6d5f:f68 with SMTP id 5b1f17b1804b1-4830e930426mr55765535e9.12.1770231806153; Wed, 04 Feb 2026 11:03:26 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:24 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , CLEMENT MATHIEU--DRIF , Marcel Apfelbaum Subject: [PULL 15/51] pci: Block ATS requests when privileged mode is disabled Message-ID: <462d06db2a1bbdf668701ac5654acb4b84d1a1cd.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231855369158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: CLEMENT MATHIEU--DRIF Signed-off-by: Clement Mathieu--Drif Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251029105137.1097933-5-clement.mathieu--drif@eviden.com> --- hw/pci/pci.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 9035caca92..90d6d71efd 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -3171,6 +3171,10 @@ ssize_t pci_ats_request_translation(PCIDevice *dev, = uint32_t pasid, return -EPERM; } =20 + if (priv_req && !pcie_pasid_priv_enabled(dev)) { + return -EPERM; + } + pci_device_get_iommu_bus_devfn(dev, &iommu_bus, &bus, &devfn); if (iommu_bus && iommu_bus->iommu_ops->ats_request_translation) { return iommu_bus->iommu_ops->ats_request_translation(bus, --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770232138; cv=none; d=zohomail.com; s=zohoarc; b=MSMc0CNtEPREHkbKkOSOeaRKacywq3lEgenE9/7O9xXrk2vl6d2poAfJOUnoXrvmyAUCvr1T3KMp5hMho3iGBdsM0TC37UfpBuhqYDzzphF9M+NEFXRAl9PK4J+5BGP9VIIQCFbO74e3Jaig2/Iwa01FJnU7tgmawSrux9+M8AA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770232138; h=Content-Type: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=+939riydvwDd27jqC2atSYgpM2eosXh2uo/JqY9/3xU=; b=k5Rv6/yRkmFrZivIBqQGgm7bXbR6DbRLoMNFwi98BHTodDdWQEY9ti1xq24BCla+0GpRwym3ctp614dQQNlZMZ67/zZsZQrYxl/l77TwIIW77TkurY4yjOBcHV0s5TIthSBDxw3D5S6+Xa+3G3WhGd0EYnmk/6U6Guh1VyJSsaU= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770232138623614.349270069577; Wed, 4 Feb 2026 11:08:58 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniA4-00070l-7p; Wed, 04 Feb 2026 14:03:36 -0500 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 1vniA1-0006qm-VR for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:33 -0500 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 1vniA0-0007mk-C4 for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:33 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-376-yhLOvfY0Pc2jld7g4joNVw-1; Wed, 04 Feb 2026 14:03:30 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-4358f90fe8dso118238f8f.0 for ; Wed, 04 Feb 2026 11:03:30 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43617e25d47sm7489588f8f.5.2026.02.04.11.03.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231811; 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: in-reply-to:in-reply-to:references:references; bh=+939riydvwDd27jqC2atSYgpM2eosXh2uo/JqY9/3xU=; b=HyecGc8Hs1fN/wpGI7XhtzgU2pnzZUq4YfNyfzv3e2LnjeCotTnC7Uuyrfr2RPEBCyfQ3O pKqzHJ9gqvqnh3peDlC8vmDHKsV/ytojx1bKX2QxswlPhUHrz7Zg+ahSmpVouWjibmDyfZ CdaQePwSfGarPEtrZXYeg0OSmaZ6KbI= X-MC-Unique: yhLOvfY0Pc2jld7g4joNVw-1 X-Mimecast-MFC-AGG-ID: yhLOvfY0Pc2jld7g4joNVw_1770231809 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231809; x=1770836609; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=+939riydvwDd27jqC2atSYgpM2eosXh2uo/JqY9/3xU=; b=OJB8UaUyFl2O2t/5fqdE/OPMVOS6YoIoW9FV/e2TN6vPZhg8i6Vehg/FFs12sqAPfc V/j737omikb3+SnB2OGBhgTXYPnfUXgnBloxO210tPQPX94kH1G2AtIISaYuEGy7F4vK gdR/00oqzbIa4oF+bsbB2zMb69gp34HRpANnXMk51yBnjBqi71CVDbsAsJk+aeZATLHC sSA7Q19c7BjsjC67XXn0DSJIY0D4556inTcVw2q8fUlCWTI3pgae23tJZR+sNulRtFcT N0vS7BPmQ5dSlCeCiwBMcYjbmXVCHsM+zIozW523KoiNmGJzSyUtWNAcHxzh0NS9Drrp 00/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231809; x=1770836609; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+939riydvwDd27jqC2atSYgpM2eosXh2uo/JqY9/3xU=; b=IUoQNSQzMU5MQk7FPXPxZ13x7x2my75ESbKWoHRveLcfpzMLFLbMwRbaWBeEjX0N6r jXlj1eaZFByroD1VdLq64y5R04yFLcrcXVcfnyNHpH4qmHpOCOKZx0n3CNqmdbHrSdjc hwH7g7wDBPr38E0nGx8kwYVebOjl8Jvmpa7mkPG+sFLo2HvJRLlb1cLdV2TKQXXDXhVm kNa6u2aLa/8oeVN8j4mlx/JlVi9/CqzCNIenTczUedKP7zDz4hRpPq2lTmucAS+IraGw boSMC0r44t8+PVx1kU2u2S7G8oJd51euvdAMMQXw2i2EUoUhd4fDuwuBU1P4BKSYWceG d+ow== X-Gm-Message-State: AOJu0Yzf5WQG2PAao72jZH41SupKSEb+4Fu/ZCXUojSFOP09zwNtxChJ VSYVVEN8PNTvBQrkMwM2G7cJQJm9vSj0Dnrkg52BUUY7XwGVu4/DlBMDTQd3VArDH1DhAyguOvA 4VpbnNHQjUM27lzf4vkGiwWHXMkm5/m/btOhJsKYQOc4XE8QWIud/G/Fr/87I25X1sH1mokfeWz qEd9LiDwcXT+rqUOPZazEK88lXH+1wSbMAIg== X-Gm-Gg: AZuq6aLWZzTgSYh4Pj0AeEQr6VNCxGWlcR2+0X1Uie58w9RTPSgyAlO2mCi41NnxOR1 1DDm6F3vJwyxcPoLwQ69TtZaJgeWGlQdwhe0DNwIylrBuSlvWM6VUM7mOXbjg4qWdMwxGWjrWZX 1QHZzYF1L47E+PWx4mzE/74qSagA5s88KsjxQFYWwqzPYYlM/eqq2bgWwNj+p/lk2coVI/BRtO+ uw729bkPX9+XZopZW/Q0O2HdvBFfhDLz4I/FWnnFr87EcFWUmeEeC40ra7ySUnMxKkdEEUQuRnu 5BANsjr3OvJxWsc6GGFQAs2p+O8tjkmcBA0EanZf7C8pfNduAJTsKXpz5K7Pk8T6bPQvTFEglfa 3GHb7GzFJCYFJUqXyXJO+IlLU+byfqApyuw== X-Received: by 2002:a05:6000:250a:b0:432:88c4:e180 with SMTP id ffacd0b85a97d-436209bfc2cmr593190f8f.15.1770231809004; Wed, 04 Feb 2026 11:03:29 -0800 (PST) X-Received: by 2002:a05:6000:250a:b0:432:88c4:e180 with SMTP id ffacd0b85a97d-436209bfc2cmr593133f8f.15.1770231808502; Wed, 04 Feb 2026 11:03:28 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:26 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , CLEMENT MATHIEU--DRIF , Jason Wang , Yi Liu , Paolo Bonzini , Richard Henderson , Eduardo Habkost , Marcel Apfelbaum Subject: [PULL 16/51] intel_iommu: Handle insufficient permissions during translation requests Message-ID: <86c5072181002ea6160c716e0524105900c40dc2.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770232140771154100 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: CLEMENT MATHIEU--DRIF ATS translations should not fail when the write permission is not set. Signed-off-by: Clement Mathieu--Drif Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251029105137.1097933-6-clement.mathieu--drif@eviden.com> --- hw/i386/intel_iommu.c | 14 ++++++++------ hw/i386/intel_iommu_internal.h | 3 ++- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 7e7c31cb55..6ba1c1676b 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -1998,7 +1998,7 @@ static int vtd_iova_to_fspte(IntelIOMMUState *s, VTDC= ontextEntry *ce, uint64_t iova, bool is_write, uint64_t *fsptep, uint32_t *fspte_level, bool *reads, bool *writes, uint8_t aw_bits, - uint32_t pasid) + uint32_t pasid, int iommu_idx) { dma_addr_t addr =3D vtd_get_iova_pgtbl_base(s, ce, pasid); uint32_t offset; @@ -2039,7 +2039,8 @@ static int vtd_iova_to_fspte(IntelIOMMUState *s, VTDC= ontextEntry *ce, =20 *reads =3D true; *writes =3D (*writes) && (fspte & VTD_FS_RW); - if (is_write && !(fspte & VTD_FS_RW)) { + /* ATS should not fail when the write permission is not set */ + if (is_write && !(fspte & VTD_FS_RW) && iommu_idx !=3D VTD_IDX_ATS= ) { return -VTD_FR_SM_WRITE; } if (vtd_fspte_nonzero_rsvd(fspte, *fspte_level)) { @@ -2098,7 +2099,7 @@ static void vtd_report_fault(IntelIOMMUState *s, */ static bool vtd_do_iommu_translate(VTDAddressSpace *vtd_as, PCIBus *bus, uint8_t devfn, hwaddr addr, bool is_wri= te, - IOMMUTLBEntry *entry) + IOMMUTLBEntry *entry, int iommu_idx) { IntelIOMMUState *s =3D vtd_as->iommu_state; VTDContextEntry ce; @@ -2204,7 +2205,8 @@ static bool vtd_do_iommu_translate(VTDAddressSpace *v= td_as, PCIBus *bus, =20 if (s->fsts && s->root_scalable) { ret_fr =3D vtd_iova_to_fspte(s, &ce, addr, is_write, &pte, &level, - &reads, &writes, s->aw_bits, pasid); + &reads, &writes, s->aw_bits, pasid, + iommu_idx); pgtt =3D VTD_SM_PASID_ENTRY_FST; } else { ret_fr =3D vtd_iova_to_sspte(s, &ce, addr, is_write, &pte, &level, @@ -4033,7 +4035,7 @@ static IOMMUTLBEntry vtd_iommu_translate(IOMMUMemoryR= egion *iommu, hwaddr addr, } } else { success =3D vtd_do_iommu_translate(vtd_as, vtd_as->bus, vtd_as= ->devfn, - addr, is_write, &iotlb); + addr, is_write, &iotlb, iommu_= idx); } } else { /* DMAR disabled, passthrough, use 4k-page*/ @@ -5196,7 +5198,7 @@ static IOMMUTLBEntry vtd_iommu_ats_do_translate(IOMMU= MemoryRegion *iommu, vtd_prepare_error_entry(&entry); entry.target_as =3D &address_space_memory; } else { - entry =3D vtd_iommu_translate(iommu, addr, flags, VTD_IDX_UNTRANSL= ATED); + entry =3D vtd_iommu_translate(iommu, addr, flags, VTD_IDX_ATS); } =20 return entry; diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h index be757c290d..18d50191d2 100644 --- a/hw/i386/intel_iommu_internal.h +++ b/hw/i386/intel_iommu_internal.h @@ -692,7 +692,8 @@ typedef struct VTDPIOTLBInvInfo { typedef enum VTDIOMMUIndex { VTD_IDX_UNTRANSLATED =3D 0, /* Default */ VTD_IDX_TRANSLATED =3D 1, - VTD_IDX_COUNT =3D 2, /* Number of supported indexes */ + VTD_IDX_ATS =3D 2, + VTD_IDX_COUNT =3D 3, /* Number of supported indexes */ } VTDIOMMUIndex; =20 typedef struct VTDHostIOMMUDevice { --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770232144; cv=none; d=zohomail.com; s=zohoarc; b=I847RLyu3z1+DKjuvdcCRTtROzTm5l2sxZJ3pospgb/ykYAXJHKuujDaLgQZmKr1r6ffX8lTQpJC7T8/p/ntvxSmsdzgeMDhCEB5NJ0OwQPx4TwDQ5CBngwUxy2FphAoKhiv4KMhRUqawECY8yobwCeJho5q0LIyIfuePa3czOo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770232144; h=Content-Type: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=npw1QjPEPkrUSmQMTkhMuqAaf36Fs29cc+AU0ZeYdxU=; b=BVlrUq2PHLz0mLAXB5q/DSsaKxX4I2aQCUhX7Pir9/lMlaYZcj9Ff45A6C9zPuiqLU1YEiLsju9kGucNPLq6FpM37bqk2w5RR+VmbuArw27xNTxe2mrAX9fVCF3RqJr+QUtV1XC9RfIc4gyuzZIL5SpQy93YtD5aBUVe16VU5tM= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770232144772613.1543277558953; Wed, 4 Feb 2026 11:09:04 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniAD-0007CB-7p; Wed, 04 Feb 2026 14:03:45 -0500 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 1vniA4-00071E-71 for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:36 -0500 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 1vniA2-0007oi-HH for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:35 -0500 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-94-HEu0iro1PvipcO24S1VhTw-1; Wed, 04 Feb 2026 14:03:32 -0500 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-43284f60a8aso172877f8f.3 for ; Wed, 04 Feb 2026 11:03:32 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4361805fec6sm7963220f8f.32.2026.02.04.11.03.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231813; 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: in-reply-to:in-reply-to:references:references; bh=npw1QjPEPkrUSmQMTkhMuqAaf36Fs29cc+AU0ZeYdxU=; b=eYhFp2A9fvRG4kQWxmm1kQHEA7K8+F0yd3P4QgrMoxfnuay6WJgAaaj4YJDTrGUeJ4TgCq VCK+PWj2ZcpT01TfQLmUfsz0WlkUf0jV9MWvyKje8FZxw/RJILoVmDmzyWw7hglRK86oJS 7QVLBVhcTLiIAOkS/6+MI8WQpJz9D3I= X-MC-Unique: HEu0iro1PvipcO24S1VhTw-1 X-Mimecast-MFC-AGG-ID: HEu0iro1PvipcO24S1VhTw_1770231812 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231811; x=1770836611; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=npw1QjPEPkrUSmQMTkhMuqAaf36Fs29cc+AU0ZeYdxU=; b=HMtrQkQXmnd1TJ23oxvbyxUYJCo5NIombJTr40bBXBZ2mPGZUo9KytO8IOzj3mG9kA D7O6e3z/5vej64lQeR43B2f/Hf7zquxij9dZgjofTIl4MQ5+rzumh8d5MEOFhOHBcbnW QKqKNvZ+JYVoRtqZPdYa6GjFrxEFk8TaDmUpEYtpDfK2nic5I7zZO8qAO/w+A+CzJM+q oCK4wJmYuV/8mPaeTx6EvtkN885tI8NNz268+hbGx8DfGiQx9KkeexskJ5FR1hgZy/Va reFvdH9WrRG1tN5DS/w+m7E1gbVSAEjco+Dffbly5BnVgc9GYzwSh0PJ+QAxLUQY6BqR ZOIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231811; x=1770836611; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=npw1QjPEPkrUSmQMTkhMuqAaf36Fs29cc+AU0ZeYdxU=; b=v7E0+zcd5F3N1TkWhbw3qMNFURqg9YdZA59pg8SDp6y6++qbq0PR48GDfg7AOX34mV EyPjm1mBGhLjp5SI3Vwe36refzCwXJZfFQ1EMZJxoRSA4Qcl7A4gLuc1wkmlL/XrpI3Z EUUoD3L8/LHLBGWJqEwyQisyy5Ey5NvuQegG0Ky+PWS4hsSSXRR/hUDfrlyWRM5T1uUH MbyO+Y/uF653f8V0qdNFZrJRNGvbIoqLvsQ22T+Mvtg6PpN5Zm52QoKQBfrAbWulRoYN RYgRLEqb/Gc1B18woAX9T5VpDTPyqX93hYY6p28c+3uS5QWRKGqL7xHLAF1HtlMQth/x F3sQ== X-Gm-Message-State: AOJu0YyWT+Winvq60M/2wJjGFkFQY655w0B7dfIV4TX3p7Uft7Ahv7ks QyclLI6DEXcdBoM0BLqNfceQio0XjJcL7WZbITLAuEldwtpmzHAW7MBCg75WOeHuFZFaqh4bZdJ GVrEeeZy1VbL/dZ6kJaUiJscnomQwho64db9Lr+m8DrJ+zDp3ZYj6sldTmLsXh/CcenxP5BYE87 l0bnsqzNAXVC1iwQCfC1EPjh+4OQSfh1wE4A== X-Gm-Gg: AZuq6aJvTjJQDt4Q8RYABoZML7ra/13cimT5zDpaCxZM6FxdawjsrIqKwE0Fjz2pAea wG2Vi/W9FBjW2k1pxvl5kc7z4CMgT6wbrmQMsj9Zgkk1neVLxXFU+CC1/1nd2ktakKnUKuvhPwb 4YdbT/iLbIqlDzrx7AywiPfu33S+PM2bFLRnOQZD/5lFWqomwAOdBcHx1LOwfNKhwupUo/lXSbT LYacxsonW8pvLjNEWDVEA1fzhWe7Ludzk5JcOhVqBdfTJDRJVqjg47bRak9RTllg/YAqLs+aupt v61nd56GD9/jUsIpgsPrvH+NnUL/l+3iBq7wFrjFGcOXfl0IElux8yXJzAV9VoeNHghvELipB9q GF4mAt1X6qkrV5MswOBNnGMLRBVDVmfPBfQ== X-Received: by 2002:a05:6000:26c9:b0:436:7e8:a10 with SMTP id ffacd0b85a97d-43617e317e2mr5379469f8f.13.1770231811338; Wed, 04 Feb 2026 11:03:31 -0800 (PST) X-Received: by 2002:a05:6000:26c9:b0:436:7e8:a10 with SMTP id ffacd0b85a97d-43617e317e2mr5379378f8f.13.1770231810755; Wed, 04 Feb 2026 11:03:30 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:28 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , CLEMENT MATHIEU--DRIF , Jason Wang , Yi Liu , Marcel Apfelbaum , Paolo Bonzini , Richard Henderson , Eduardo Habkost Subject: [PULL 17/51] intel_iommu: Minimal handling of privileged ATS request Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770232146664158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: CLEMENT MATHIEU--DRIF The purpose of this commit is not to support privileged requests but to prevent devices from doing things they wouldn't be able to do with real hardware. We simply block privileged requests when the SRS ecap is not set and abort when the ecap is present. For now, its not worth implementing support for privileged requests because the kernel does not support it. (https://lore.kernel.org/linux-iommu/20230411064815.31456-11-baolu.lu@linux= .intel.com/) However, we may consider working on it depending on how the development goes in the kernel. Signed-off-by: Clement Mathieu--Drif Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251029105137.1097933-7-clement.mathieu--drif@eviden.com> --- hw/i386/intel_iommu.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 6ba1c1676b..77adeed0cc 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -5190,13 +5190,27 @@ static IOMMUTLBEntry vtd_iommu_ats_do_translate(IOM= MUMemoryRegion *iommu, hwaddr addr, IOMMUAccessFlags flags) { - IOMMUTLBEntry entry; + IOMMUTLBEntry entry =3D { .target_as =3D &address_space_memory }; VTDAddressSpace *vtd_as =3D container_of(iommu, VTDAddressSpace, iommu= ); + IntelIOMMUState *s =3D vtd_as->iommu_state; + + /* Guard that makes sure we avoid weird behaviors */ + if ((flags & IOMMU_PRIV) && (s->ecap & VTD_ECAP_SRS)) { + error_report_once("Privileged ATS not supported"); + abort(); + } =20 if (vtd_is_interrupt_addr(addr)) { - vtd_report_ir_illegal_access(vtd_as, addr, flags & IOMMU_WO); vtd_prepare_error_entry(&entry); - entry.target_as =3D &address_space_memory; + vtd_report_ir_illegal_access(vtd_as, addr, flags & IOMMU_WO); + } else if ((flags & IOMMU_PRIV) && !(s->ecap & VTD_ECAP_SRS)) { + /* + * For translation-request-with-PASID with PR=3D1, remapping hardw= are + * not supporting supervisor requests (SRS=3D0 in the Extended + * Capability Register) forces R=3DW=3DE=3D0 in addition to settin= g PRIV=3D1. + */ + vtd_prepare_error_entry(&entry); + entry.perm =3D IOMMU_PRIV; } else { entry =3D vtd_iommu_translate(iommu, addr, flags, VTD_IDX_ATS); } --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231872; cv=none; d=zohomail.com; s=zohoarc; b=mJcNAh6lg/BDq0LkfLOVclF6SSXDhc4Fv8KqWbzF2RRumtFIf+hlWwAq+0lSzrjCTsoR3eS0TzBIdlWnvxiom1g3cj6ITN8rFnrPMnxzn6F9bnC3NbaBF5YIVw43kTKlm6zcL3R/lwFf3wCKWOF5KQRztJPiXmW7g0uS6l8C+xo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231872; h=Content-Type: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=ft9lkVidKGvDWSkbSEDf12J/y4bCfw+ORVztPvg4jUA=; b=gHn1lhoE4WJYBB6LD4/dzRRswuo7PTsuROPZG4ydQKBlFSqBb0lMMhM7x4Jc8WBlWRghKz8F+55aHX1rCo9CGD3NGt3seN13Eq4D2fDJ+YjbGgYTP75W116Ft1gY97JE475uRdGFCrBGroS4oGbF24LsmDh9QcVLdg4bX2xJcI8= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770231872366794.4177736339662; Wed, 4 Feb 2026 11:04:32 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniAa-0000PH-5r; Wed, 04 Feb 2026 14:04:08 -0500 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 1vniA9-0007BY-3L for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:41 -0500 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 1vniA7-0007pW-Dt for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:40 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-678-rUuqJNpXNYOGNONVnW7IrQ-1; Wed, 04 Feb 2026 14:03:35 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-4806fce5ab1so751745e9.2 for ; Wed, 04 Feb 2026 11:03:35 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43617e38ec5sm9088230f8f.14.2026.02.04.11.03.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231817; 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: in-reply-to:in-reply-to:references:references; bh=ft9lkVidKGvDWSkbSEDf12J/y4bCfw+ORVztPvg4jUA=; b=aTm9pgl/dExNZ94M0moSkHUMG6LLhojHERDM1RaqYkGBIE27az2ymzQgMOqPssd5lABCTZ 14dxUHAjNUagv/KDSv7E7/v1ZoRceKcSbCnjYCCWzWWuT62boXR1/niNhRAJF4NazQDxdV 8yzjvF5mIEYUEuVdF8gqgDpFf4aWSXY= X-MC-Unique: rUuqJNpXNYOGNONVnW7IrQ-1 X-Mimecast-MFC-AGG-ID: rUuqJNpXNYOGNONVnW7IrQ_1770231814 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231814; x=1770836614; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=ft9lkVidKGvDWSkbSEDf12J/y4bCfw+ORVztPvg4jUA=; b=UdYmPeVv6XpbSvqb2g5ywA7lDDsl3zin/Pzwxz+Bwbt5YTHxyHIpxOD3VzyIGeGn7b EtaQIX8H36g1kZsEzeOwU2OM2pC6UGHwNCczUOJdN/GFb2opW7dMH7KwlBybR/MWp+rQ G+JOcjDLGHn8fqkNCARs88qe4xz8tG5Q+oIHOaeTeU/g/9cb7YtBSVMKEO5DYWHwOZ0k 3fLE5Xn6PatdSJDOBJItktgwm4mtcTN/3NkWxOpfUuQWJDECnPREyHS2yre2XkXf0y1y xrNqckZ6hABXDOMYkVL0G/77Y4UVyX6nV2UKmeLKeaMckpJ4eNx1TS3c65Gb0vgSwDh2 GQLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231814; x=1770836614; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ft9lkVidKGvDWSkbSEDf12J/y4bCfw+ORVztPvg4jUA=; b=pY4a5LWCg03+YFfQGJlNWPNZy8R1rNLrV3uLxZPEBv/Weu90uFfTl5HhX9yeN4e7ve Qocr81PL6t/7ChQv6cKJ0G4yMhykhRBTyfj9ldfs/f04i3ixY16pGD0tZ5DuRbFgNQAs /T1ag2+1zfTqR7QZaEI0nrs+p55ZPNjK8dWDprERHuA6j07hF1rydvYhMSqGdz2YHUiG qNEbCjT4sp2aIvZBx825yrspJMRJ1f5SBn1zy7yufMUSwbfJzXfr9CUakTMtPeM1KbJg iWHeyc22aL6jeQaVZnIl/7fYEZPRlgUIkjZkWewcUVrO3fZ+n/Zccx6CzuohKK+g/aEZ Xmgw== X-Gm-Message-State: AOJu0Yy/QwcLxZ8XHwPEO3ahmxjD/WZ6CZMkv1E/JNFE00yXYHw48b6A qxpSYGWxG9Xj1s1hq72MceOcKojEEejT0MbsdySY5ctUAiXwEA+sxH0E9Ix0jE8aathoe1P7wga ta4DiU6K/s5S6etdFvUq1+3mGWHltIBGEt8PQQmllmmf08o1ffE9mh9T/dVX6hg3G1FqlHqasZH DodTEqT3PyQ3G+sn1/dp/X/jKVa2nfAtosSw== X-Gm-Gg: AZuq6aK5C8mWbucEexKISQQ3o4VVBdyRV7ckmbteTj7IYvJFpVSrXc0i5kzfwR8VGIc DrFb4+4dZ6b7hq4shvjcyIm2Jgyow+BiXxPbOX6yKNQFa8WTZwMqw854WarcVoM/o8Jc21BKHD9 scSuoTcWAZW1EJ8MIur/QzVYdQ3kFzSJKgmy9Z+8P9c4zaUEWgxxu1zAniwpxFms0EDSXKq7OVB fFdOKpD7CY3Vl3GZ7hRFNmTTYAhtPymgGgX1Euja98olj41nMEATluar528tFYHWt6DtO5mCHZp jnIKGx25G1Br27HkOVrGnaQyREKum6QCmVBmxe+4vhZTwm+6k8crhjKPqJ3NZpyUPC5Bkl1C/ZF D2g4ASRCV6PA/ibrehea2+3cvJ25/CQpqQA== X-Received: by 2002:a05:600c:3143:b0:477:a978:3a7b with SMTP id 5b1f17b1804b1-4830e987c76mr61833085e9.22.1770231813582; Wed, 04 Feb 2026 11:03:33 -0800 (PST) X-Received: by 2002:a05:600c:3143:b0:477:a978:3a7b with SMTP id 5b1f17b1804b1-4830e987c76mr61832445e9.22.1770231813133; Wed, 04 Feb 2026 11:03:33 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:30 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , CLEMENT MATHIEU--DRIF , Jason Wang , Yi Liu , Paolo Bonzini , Richard Henderson , Eduardo Habkost , Marcel Apfelbaum Subject: [PULL 18/51] intel_iommu: Add a CLI option to enable SVM Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231874514154100 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: CLEMENT MATHIEU--DRIF Signed-off-by: Clement Mathieu--Drif Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251029105137.1097933-8-clement.mathieu--drif@eviden.com> --- hw/i386/intel_iommu.c | 45 ++++++++++++++++++++++++---------- hw/i386/intel_iommu_internal.h | 6 ++++- include/hw/i386/intel_iommu.h | 1 + 3 files changed, 38 insertions(+), 14 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 77adeed0cc..dd00079a40 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -2862,8 +2862,10 @@ static bool vtd_inv_desc_reserved_check(IntelIOMMUSt= ate *s, =20 static bool vtd_process_wait_desc(IntelIOMMUState *s, VTDInvDesc *inv_desc) { - uint64_t mask[4] =3D {VTD_INV_DESC_WAIT_RSVD_LO, VTD_INV_DESC_WAIT_RSV= D_HI, - VTD_INV_DESC_ALL_ONE, VTD_INV_DESC_ALL_ONE}; + uint64_t mask[4] =3D { + VTD_INV_DESC_WAIT_RSVD_LO(s->ecap), VTD_INV_DESC_WAIT_RSVD_HI, + VTD_INV_DESC_ALL_ONE, VTD_INV_DESC_ALL_ONE + }; bool ret =3D true; =20 if (!vtd_inv_desc_reserved_check(s, inv_desc, mask, false, @@ -4186,6 +4188,7 @@ static const Property vtd_properties[] =3D { DEFINE_PROP_BOOL("x-flts", IntelIOMMUState, fsts, FALSE), DEFINE_PROP_BOOL("snoop-control", IntelIOMMUState, snoop_control, fals= e), DEFINE_PROP_BOOL("x-pasid-mode", IntelIOMMUState, pasid, false), + DEFINE_PROP_BOOL("svm", IntelIOMMUState, svm, false), DEFINE_PROP_BOOL("dma-drain", IntelIOMMUState, dma_drain, true), DEFINE_PROP_BOOL("stale-tm", IntelIOMMUState, stale_tm, false), DEFINE_PROP_BOOL("fs1gp", IntelIOMMUState, fs1gp, true), @@ -5096,6 +5099,10 @@ static void vtd_init(IntelIOMMUState *s) vtd_spte_rsvd_large[3] &=3D ~VTD_SPTE_SNP; } =20 + if (s->svm) { + s->ecap |=3D VTD_ECAP_PRS | VTD_ECAP_PDS | VTD_ECAP_NWFS; + } + vtd_reset_caches(s); =20 /* Define registers with default values and bit semantics */ @@ -5573,6 +5580,29 @@ static bool vtd_decide_config(IntelIOMMUState *s, Er= ror **errp) return false; } =20 + if (s->svm) { + if (!x86_iommu->dt_supported) { + error_setg(errp, "Need to set device IOTLB for svm"); + return false; + } + + if (!s->fsts) { + error_setg(errp, "Need to set flts for svm"); + return false; + } + + if (!x86_iommu->dma_translation) { + error_setg(errp, "Need to set dma-translation for svm"); + return false; + } + + if (!s->pasid) { + error_setg(errp, "Need to set PASID support for svm"); + return false; + } + } + + return true; } =20 @@ -5583,17 +5613,6 @@ static void vtd_realize(DeviceState *dev, Error **er= rp) X86MachineState *x86ms =3D X86_MACHINE(ms); PCIBus *bus =3D pcms->pcibus; IntelIOMMUState *s =3D INTEL_IOMMU_DEVICE(dev); - X86IOMMUState *x86_iommu =3D X86_IOMMU_DEVICE(s); - - if (s->pasid && x86_iommu->dt_supported) { - /* - * PASID-based-Device-TLB Invalidate Descriptor is not - * implemented and it requires support from vhost layer which - * needs to be implemented in the future. - */ - error_setg(errp, "PASID based device IOTLB is not supported"); - return; - } =20 if (!vtd_decide_config(s, errp)) { return; diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h index 18d50191d2..11a53aa369 100644 --- a/hw/i386/intel_iommu_internal.h +++ b/hw/i386/intel_iommu_internal.h @@ -194,8 +194,10 @@ #define VTD_ECAP_PRS (1ULL << 29) #define VTD_ECAP_MHMV (15ULL << 20) #define VTD_ECAP_SRS (1ULL << 31) +#define VTD_ECAP_NWFS (1ULL << 33) #define VTD_ECAP_PSS (7ULL << 35) /* limit: MemTxAttrs::pid= */ #define VTD_ECAP_PASID (1ULL << 40) +#define VTD_ECAP_PDS (1ULL << 42) #define VTD_ECAP_SMTS (1ULL << 43) #define VTD_ECAP_SSTS (1ULL << 46) #define VTD_ECAP_FSTS (1ULL << 47) @@ -417,7 +419,9 @@ typedef union VTDPRDesc VTDPRDesc; #define VTD_INV_DESC_WAIT_IF (1ULL << 4) #define VTD_INV_DESC_WAIT_FN (1ULL << 6) #define VTD_INV_DESC_WAIT_DATA_SHIFT 32 -#define VTD_INV_DESC_WAIT_RSVD_LO 0Xfffff180ULL +#define VTD_INV_DESC_WAIT_RSVD_LO(ecap) (0Xfffff100ULL | \ + (((ecap) & VTD_ECAP_PDS) \ + ? 0 : (1 << 7))) #define VTD_INV_DESC_WAIT_RSVD_HI 3ULL =20 /* Masks for Context-cache Invalidation Descriptor */ diff --git a/include/hw/i386/intel_iommu.h b/include/hw/i386/intel_iommu.h index 6c61fd39c7..d600e5495f 100644 --- a/include/hw/i386/intel_iommu.h +++ b/include/hw/i386/intel_iommu.h @@ -275,6 +275,7 @@ struct IntelIOMMUState { bool scalable_mode; /* RO - is Scalable Mode supported? */ bool fsts; /* RO - is first stage translation sup= ported? */ bool snoop_control; /* RO - is SNP filed supported? */ + bool svm; /* RO - is SVA/SVM supported? */ =20 dma_addr_t root; /* Current root table pointer */ bool root_scalable; /* Type of root table (scalable or not= ) */ --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231953; cv=none; d=zohomail.com; s=zohoarc; b=LeUuGtSDnoGdLDGfUJRLzCO6AWfrOaoRti8WCqZFbaWgNVa6Z78G4loYtrJ5w4cEiM0dLFlv0WBgT2n42MZK22lvpvVTKR8fwOEbxuUVRhB3vOS3IOJ4It35WNAXnFL24nCgDGSl5mj09Ki1ihhN+8YW0FX7Gw59762zsA6PgWg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231953; h=Content-Type: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=N/0ttN4H2vp0exnhXPyUpk99AJqN6xsIyjQacVDV5Q4=; b=j0B6SrnnQB7mEchgv6m6RqO8uGXwjWQHb/JHBjQYnlegpnmnEsXuOLzyNwEfBYr7a2hzTxiibi+PX+tLuQWqB2riWsdvIffXHcb9EYOERd2PSWZx9KUDZp7EjuoTpVVkF+uskQ4O8G9PpLZxFR70bAFWc6y0gWgVzGZCozsFeWc= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770231953882554.6514418320265; Wed, 4 Feb 2026 11:05:53 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniAO-0007a3-Pc; Wed, 04 Feb 2026 14:03:57 -0500 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 1vniA9-0007BX-2v for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:41 -0500 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 1vniA7-0007qq-Gv for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:40 -0500 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-177-icfqYxqSNnuPoPWupmreRw-1; Wed, 04 Feb 2026 14:03:37 -0500 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-4359e322f30so12695f8f.2 for ; Wed, 04 Feb 2026 11:03:37 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43617e25683sm8186598f8f.6.2026.02.04.11.03.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231818; 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: in-reply-to:in-reply-to:references:references; bh=N/0ttN4H2vp0exnhXPyUpk99AJqN6xsIyjQacVDV5Q4=; b=d2Uir6C8kvtbtsTZxrSrusdevNw3i1vKluahKacpyKA+rwX3HSee/SzNw8DoZax75aWhfm OJoJfRA2FHlZoHp10DesWTexXPu9mxKgudD4uiAQycRNYusAXLb70iM3KqiKOqYd/JhW3j 6Rp5hmH3OQYAoejgZ+FkG/qBUvRQC4g= X-MC-Unique: icfqYxqSNnuPoPWupmreRw-1 X-Mimecast-MFC-AGG-ID: icfqYxqSNnuPoPWupmreRw_1770231816 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231816; x=1770836616; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=N/0ttN4H2vp0exnhXPyUpk99AJqN6xsIyjQacVDV5Q4=; b=NG0IiqXrLtlYGokG3mq0RmGkBi6FIprcckzNscZeRJZnLmaN47aGYNzCGOEVDjZXvt 2X3nTm871M082pZwIJJb3fsP4JsXj2n/kCshp1/vmB3fdskfT+LQWz3M4ocNcjDOHAYD 8EpO8aIkvhlBaPuGC2vpvUx1R1by4A8O+3LooAbPncMjuseQ2lD6xnpzz0ZzrSKd1a0i sDMI2i7oiwHO0vQ3oIuoH0xBFad92myvzjAuiaBoy0M4lvf79/Z+rXzuGeIt4/l9Xz5G cZLkgtgz9j6IwYby5qjhEg7q737+vQIbFcF5FXftYXhEPqhcMgHehXr1M3eJxQqSMwZa vOng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231816; x=1770836616; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=N/0ttN4H2vp0exnhXPyUpk99AJqN6xsIyjQacVDV5Q4=; b=cDvyx9ztvdRiIkgBWAiGoluJ8XxuRCOvJGSBifT8BDpv2DTaOz6hiYGSG4wYJEMUpg WFTgnmTthOnA2GBe7d1gZPvaKdeZOPgdO1ZkgW3L9bsq6SBzVe3yagqBnO6ZamP69gA2 86MY8JHpeuqVtDAm8e7aILEdk4TglDcMb33EaZlaCc5vGHmEbEizC7D/hlXP/ZvqyBxE wWCikaUY2aJsH+zZ2BO2Rx3zXOmpKnf+1+t5iefsp/3bL5sEVRnQwfMatUHBiH5bH1S6 u+QK9WbaS6Z1epSFVm2s615gyAXsbtiJDgcva7e6Vjz+oYHUbZfAdS3vmR7LhU5z5S5/ LWGQ== X-Gm-Message-State: AOJu0YzsZNSpyR7yw42Fbu29FkRljQt8u09TEDXFE1PSDgjVKcEv5LPm N/3jtnIR+mv1HfbfPomJee5LZIOWGBwVEWEgMFYNUp+ADQD5mOCxXy0YXK+SuNvgK1cuUEeMOKu Hw4VRsCC1sG5vpASFS+NqmddSHwGdibCzR1W5yFXK15qJ0p83lcOTbwkzbHCnknROxPXCLOkIW4 K+Cue0Bm+lishYI71H76RSb9G1cHKL7K9X4A== X-Gm-Gg: AZuq6aLt6xusmpvGWO6P3xhjh+6nuMLOskfV+FLQcdEDvMLNZbXJy5bfS47KSYyw7/s PKrXFJJ/wMic8myTnn0+XYxn2KcOfuhuh0FzXmoSvngXuhFs2NISxcFI8BiDaL3z41bXYtC0oQl 23xvrauO2SF1fBOmLisUeFJmorux/n3jOSYpcIcdz8T4L7nGqLhd07nQ28by42JsBQ0q06KhWeV i68OFGUNh1EzIr27KUbP60q/I93nOhdRRBc5QFvbtYrBvXodNSnagF7JZ2Jm+KIX415G79D37kX mjdlUCnLdeQM0hI2zYmot9xY9Yy7NH0lAfUlQbkqYRQlMRyrulcHxjP2f/ZGpcDAcjarqDwdn5l jUQiuo/l4mWl2Z5x/FEPg9fhcJ/hUOW6XTw== X-Received: by 2002:a05:6000:26c6:b0:436:1e6:e1e3 with SMTP id ffacd0b85a97d-4361805a039mr5973307f8f.46.1770231815783; Wed, 04 Feb 2026 11:03:35 -0800 (PST) X-Received: by 2002:a05:6000:26c6:b0:436:1e6:e1e3 with SMTP id ffacd0b85a97d-4361805a039mr5973249f8f.46.1770231815183; Wed, 04 Feb 2026 11:03:35 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:33 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Marcel Apfelbaum , Ani Sinha Subject: [PULL 19/51] x86: q35: ich9: add 'wdat' property Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231955633154100 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov it will be used to make QEMU generate WDAT ACPI table, that describes TCO watchdog in platfom independed way and allows guest to use generic 'wdat' driver. To enable it use '-global ICH9-LPC.wdat=3Don' option. PS: On linux wdat driver takes ove TCO watchdog if WDAT table is present, hence 'wdat=3Doff' by default to avoid guest visible change on existing VMs. Signed-off-by: Igor Mammedov Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251030123750.136175-2-imammedo@redhat.com> --- hw/acpi/ich9.c | 5 +++++ hw/isa/lpc_ich9.c | 1 + include/hw/acpi/ich9.h | 1 + 3 files changed, 7 insertions(+) diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c index 2b3b493c01..08a01aa1aa 100644 --- a/hw/acpi/ich9.c +++ b/hw/acpi/ich9.c @@ -321,6 +321,11 @@ void ich9_pm_init(PCIDevice *lpc_pci, ICH9LPCPMRegs *p= m, qemu_irq sci_irq) acpi_pm_tco_init(&pm->tco_regs, &pm->io); } =20 + if (pm->enable_wdat && !pm->enable_tco) { + error_setg(&error_fatal, + "'wdat' can not be enabled without 'enable_tco=3Don'"); + } + if (pm->acpi_pci_hotplug.use_acpi_hotplug_bridge) { object_property_set_link(OBJECT(lpc_pci), "bus", OBJECT(pci_get_bus(lpc_pci)), &error_abor= t); diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c index 51dc680029..2bf6becb5f 100644 --- a/hw/isa/lpc_ich9.c +++ b/hw/isa/lpc_ich9.c @@ -832,6 +832,7 @@ static const VMStateDescription vmstate_ich9_lpc =3D { =20 static const Property ich9_lpc_properties[] =3D { DEFINE_PROP_BOOL("noreboot", ICH9LPCState, pin_strap.spkr_hi, false), + DEFINE_PROP_BOOL("wdat", ICH9LPCState, pm.enable_wdat, false), DEFINE_PROP_BOOL("smm-compat", ICH9LPCState, pm.smm_compat, false), DEFINE_PROP_BOOL("smm-enabled", ICH9LPCState, pm.smm_enabled, false), DEFINE_PROP_BIT64("x-smi-broadcast", ICH9LPCState, smi_host_features, diff --git a/include/hw/acpi/ich9.h b/include/hw/acpi/ich9.h index 245fe08dc2..c84e17f9f6 100644 --- a/include/hw/acpi/ich9.h +++ b/include/hw/acpi/ich9.h @@ -69,6 +69,7 @@ typedef struct ICH9LPCPMRegs { bool smm_compat; bool enable_tco; TCOIORegs tco_regs; + bool enable_wdat; =20 bool swsmi_timer_enabled; bool periodic_timer_enabled; --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231891; cv=none; d=zohomail.com; s=zohoarc; b=WdLmuCgRmNK1NB8V9R5LXiOEF2JLJCPE/dSDpdNcueZg1poDvzF5WCKzM+mkNJDN3WkfF4mwScXhvSCY2FN78mNj/t4pcvWokpfrVEc6PfAoRKnvIyfZ91OISPWjBsGmr69CF1DCRLF+mfJcncTImHv1KkVqZCFJP5tVc0uHTp4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231891; 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=gLwO/omVOZxtIN6U7uD6xIh7qGAiRmp9jYMggRF++aY=; b=YroY0tfhndLLrQ/XXm0c2c4zYA7Q7JmgwTyw4ZTCQU5VHvgtZmwHx578RC3ip6211OcVkqHM5sXXZFLOHubKxSH4gq50QXBO2C5zUgVDXYpUima7Js8gQDFWLsC10IKc+I+eDJd1qe8mjZFEOjyP+Uxlet8xXg4TYeLgvB/ExW0= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770231891738856.3806156041987; Wed, 4 Feb 2026 11:04:51 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniAO-0007aw-QI; Wed, 04 Feb 2026 14:03:58 -0500 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 1vniAD-0007Mi-FQ for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:47 -0500 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 1vniA9-0007rk-SA for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:43 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-414-w5hb0O65NHWsmHOucyiu3A-1; Wed, 04 Feb 2026 14:03:39 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-4325aa61c6bso144768f8f.0 for ; Wed, 04 Feb 2026 11:03:39 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43617e3a546sm9884677f8f.17.2026.02.04.11.03.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231821; 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=gLwO/omVOZxtIN6U7uD6xIh7qGAiRmp9jYMggRF++aY=; b=PkkN084bVsfIKjgRw94xB1qsW/s5OtG9US/x55MGtGoxb2DGaj8yIW5T09za6UKi9++luR JRgKezhAgMWlD4k6/7dd8rzLb7HlyhSzwSUG+l2ZVeZUAN6pgm64twiIgTbNgDi6OnOM0k hMYufhdC06djLx/dHRoSM676DaTWxSY= X-MC-Unique: w5hb0O65NHWsmHOucyiu3A-1 X-Mimecast-MFC-AGG-ID: w5hb0O65NHWsmHOucyiu3A_1770231818 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231818; x=1770836618; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=gLwO/omVOZxtIN6U7uD6xIh7qGAiRmp9jYMggRF++aY=; b=KVKck1UxKzOzOLAT0ebNoXdWSU9sewLNYHLtvcjUoip6XfQMR3HGmXrxB4oiASRviA Pmr2EaU3jNZPTch0SCHjnJc8LRYZJKTL3WYJUukj4nHv+KAYijdd/ZBHOdA8k+yceh+A GtbolrdMRmi5C08th9UBPgyeFkL7MELDEYCo13HEFrVPoSpIJ9AYBa9QVBDe15jzEix6 HD3Tb7rnUvyIrj1Oamo5iOKkcuTlnb5t7Z1GiRMM4tjgSOBPZn1slOKyOGNZqDRsxENX DLTGXd7oHf4QkZ4eoBlVTWR/zB686nYS1X88WVnq9FuqFofJgJjTn6FXHP5srIuQe+0U 5BtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231818; x=1770836618; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=gLwO/omVOZxtIN6U7uD6xIh7qGAiRmp9jYMggRF++aY=; b=ZNOfCASQzgLAZQu5vES8JR2H9kAi+JzR8z2cv9LcGToDG01Oqnnq71z7wPxcwxyN3D 6J6Iigztidvy68cfF8qijYK2T8JLYxsHUu1jrrdRVX1rPn2oU615zI0LO0gEXtvxjeKX Hf5hGNIa2h9hOoBxvtvIryYsxOdI8eoBT0V5wOsWxJdrJg0Kl+NVTjUhs/FS8SLpJbIe EMAAa/Q7/UTgRiAe2wUpl1Zf6VoHWWZGuFejmEU8OAsgfdHsVKZd4hWQs1J7iWMy28pf 0IHzTZrh4kxrS704EDR2OZ0L4T8W9jRbsHvK/wXLcqIgRhPbVXsMHOgDzDpuzJA27E8v ULVw== X-Gm-Message-State: AOJu0YzsQeIm6yu0EPOmX0MjQRhDeWclbCS6qGwapSj5QSrP5ERJsejU dYRKRzwoHiU8BXBNtWH1BnslkztgcdNNVgAARP+ZUESmWBkvgkgXxUKbFY+/hqU5XXvdMEQIn5g StMV2PJC0teZyNPv/7dNvVwa760SkYBQse4yqr+BIdg9n6WN0betbOl5mdB2fPD2CQo/w225fMP ILiLxoAXWrSZ2a8LP+Rch7Zbs1Rf7BA/s15w== X-Gm-Gg: AZuq6aJheBfuqGL3pireLO9JHhB11s/2wUHv+/vzJo43WCAKkuj5pzo7bRrxszC7GPD 8dUoOjOhT/h/6ID01L8LX7Nu3CM3k2cGJJxPP0DVLZ5A85IQ/i1RODmqgXjMqbofwQwL7Hl1VfO JeIxUp8ra2ApVoLJsuwT4sQLRBaD6wo1Po5TftKMvhSxRQlb/fKFzT76t3s5OewFHf71RjtYRCR 4KY12hbv8wKfBBYZd/n1mXsC/XsY3BqE7ZlXLUcZnr7uM7/50T4UuE6/cZLAnr7qIecMpw5+TWR 43knuRZyf8hmWN6EJedAuyAJcM0taRnHhFsDtXCpz1pCwb5L8kRugodK2ufS6axKSb8VgLMHejz tRndX3gb5EPd/aEJNUOgsWr08Xl9bsQ/oZA== X-Received: by 2002:a5d:5d84:0:b0:435:e061:9e10 with SMTP id ffacd0b85a97d-43617e39658mr6564021f8f.12.1770231817765; Wed, 04 Feb 2026 11:03:37 -0800 (PST) X-Received: by 2002:a5d:5d84:0:b0:435:e061:9e10 with SMTP id ffacd0b85a97d-43617e39658mr6563948f8f.12.1770231817228; Wed, 04 Feb 2026 11:03:37 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:35 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Ani Sinha Subject: [PULL 20/51] acpi: add API to build WDAT instructions Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231893398158500 From: Igor Mammedov Add definitions for WDAT[1] actions/instructions and build_append_wdat_ins() API to build table entries. 1) "Hardware Watchdog Timers Design=C2=A0Specification" https://uefi.org/acpi 'Watchdog Action Table (WDAT)' Signed-off-by: Igor Mammedov Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251030123750.136175-3-imammedo@redhat.com> --- hw/acpi/aml-build.c | 14 +++++ include/hw/acpi/wdat.h | 118 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 include/hw/acpi/wdat.h diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c index dad4cfcc7d..3ec70825de 100644 --- a/hw/acpi/aml-build.c +++ b/hw/acpi/aml-build.c @@ -31,6 +31,7 @@ #include "hw/pci/pci_bus.h" #include "hw/pci/pci_bridge.h" #include "qemu/cutils.h" +#include "hw/acpi/wdat.h" =20 static GArray *build_alloc_array(void) { @@ -2639,3 +2640,16 @@ Aml *aml_error_device(void) =20 return dev; } + +void build_append_wdat_ins(GArray *table_data, + WDATAction action, uint8_t flags, + struct AcpiGenericAddress as, + uint32_t val, uint32_t mask) +{ + build_append_int_noprefix(table_data, action, 1); /* Watchdog Actio= n */ + build_append_int_noprefix(table_data, flags, 1); /* Instruction Fl= ags */ + build_append_int_noprefix(table_data, 0, 2); /* Reserved */ + build_append_gas_from_struct(table_data, &as); /* Register Regio= n */ + build_append_int_noprefix(table_data, val, 4); /* Value */ + build_append_int_noprefix(table_data, mask, 4); /* Mask */ +} diff --git a/include/hw/acpi/wdat.h b/include/hw/acpi/wdat.h new file mode 100644 index 0000000000..c539e97e9b --- /dev/null +++ b/include/hw/acpi/wdat.h @@ -0,0 +1,118 @@ +/* + * Watchdog Action Table (WDAT) definitions + * + * Copyright Red Hat, Inc. 2025 + * Author(s): Igor Mammedov + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ +#ifndef QEMU_HW_ACPI_WDAT_H +#define QEMU_HW_ACPI_WDAT_H + +#include "hw/acpi/acpi-defs.h" + +/* + * Watchdog actions as described in + * "Hardware Watchdog Timers Design=C2=A0Specification" + * for link to spec see https://uefi.org/acpi + * 'Watchdog Action Table (WDAT)' + */ +typedef enum { + /* + * Restarts the watchdog timer's countdown. This action is + * required. + */ + WDAT_ACTION_RESET =3D 0x1, + /* + * Returns the current countdown value of the watchdog hardware + * (in count intervals). + */ + WDAT_ACTION_QUERY_CURRENT_COUNTDOWN_PERIOD =3D 0x4, + /* + * Returns the countdown value the watchdog hardware is + * configured to use when reset (in count intervals). + */ + WDAT_ACTION_QUERY_COUNTDOWN_PERIOD =3D 0x5, + /* + * Sets the countdown value (in count intervals) to be used when + * the watchdog timer is reset. This action is required if + * WDAT_ACTION_RESET does not explicitly write a new + * countdown value to a register during a reset. Otherwise, this + * action is optional. + */ + WDAT_ACTION_SET_COUNTDOWN_PERIOD =3D 0x6, + /* + * Determines if the watchdog hardware is currently in enabled/ + * running state. The same result must occur when performed from + * both from enabled/stopped state and enabled/running state. If + * the watchdog hardware is disabled, results are indeterminate. + * This action is required. + */ + WDAT_ACTION_QUERY_RUNNING_STATE =3D 0x8, + /* + * Starts the watchdog, if not already in running state. If the + * watchdog hardware is disabled, results are indeterminate. + * This action is required. + */ + WDAT_ACTION_SET_RUNNING_STATE =3D 0x9, + /* + * Determines if the watchdog hardware is currently in enabled/ + * stopped state. The same result must occur when performed from + * both the enabled/stopped state and enabled/running state. If + * the watchdog hardware is disabled, results are indeterminate. + * This action is required. + */ + WDAT_ACTION_QUERY_STOPPED_STATE =3D 0xA, + /* + * Stops the watchdog, if not already in stopped state. If the + * watchdog hardware is disabled, results are indeterminate. + * This action is required. + */ + WDAT_ACTION_SET_STOPPED_STATE =3D 0xB, + /* + * Determines if the watchdog hardware is configured to perform a + * reboot when the watchdog is fired. + */ + WDAT_ACTION_QUERY_REBOOT =3D 0x10, + /* + * Configures the watchdog hardware to perform a reboot when it + * is fired. + */ + WDAT_ACTION_SET_REBOOT =3D 0x11, + /* + * Determines if the watchdog hardware is configured to perform a + * system shutdown when fired. + */ + WDAT_ACTION_QUERY_SHUTDOWN =3D 0x12, + /* + * Configures the watchdog hardware to perform a system shutdown + * when fired. + */ + WDAT_ACTION_SET_SHUTDOWN =3D 0x13, + /* + * Determines if the current boot was caused by the watchdog + * firing. The boot status is required to be set if the watchdog + * fired and caused a reboot. It is recommended that the + * Watchdog Status be set if the watchdog fired and caused a + * shutdown. This action is required. + */ + WDAT_ACTION_QUERY_WATCHDOG_STATUS =3D 0x20, + /* + * Sets the watchdog's boot status to the default value. This + * action is required. + */ + WDAT_ACTION_SET_WATCHDOG_STATUS =3D 0x21, +} WDATAction; + +#define WDAT_INS_READ_VALUE 0x0 +#define WDAT_INS_READ_COUNTDOWN 0x1 +#define WDAT_INS_WRITE_VALUE 0x2 +#define WDAT_INS_WRITE_COUNTDOWN 0x3 +#define WDAT_INS_PRESERVE_REGISTER 0x80 + +void build_append_wdat_ins(GArray *table_data, + WDATAction action, uint8_t flags, + struct AcpiGenericAddress as, + uint32_t val, uint32_t mask); + +#endif /* QEMU_HW_ACPI_WDAT_H */ --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770232189; cv=none; d=zohomail.com; s=zohoarc; b=faKgKtvStFBFeyLIz6OHT+vGnn6A1cjKbinY4Jmn4+GDZmSvIsAYwd8G7a1p4tTk22EU5OzMVAUt0Cty0KJMd7ixZe5yGexAOrapRdEboa9oP6COy2xP89B3u3u0rDkGcvGiv0hSS3YWjuu/hcIg1udETpJ5mypjgMpC0ViHUkg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770232189; 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=44CCfFqxFh058FYaqfQ166E828OwbzPeM6ZE6ERmryw=; b=HBEhiTmhBTk2RITGA8f4zOZgwN6r7GUfUeESWCby3F/iIuZatOF0LwoMP/nh/Q629B2n/fiY+lqK/OP3Bdow4cXlfjnKKhjwRx2q7RZku5k2KCgJKPRHM/IABwc/MfMCNI9TguhwPsDQx3KmbeUJkVCiJEL4AUH51/2V9M4qENo= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770232189831422.81625046284796; Wed, 4 Feb 2026 11:09:49 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniAT-0007uv-QI; Wed, 04 Feb 2026 14:04:01 -0500 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 1vniAF-0007Od-D8 for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:49 -0500 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 1vniAD-0007sD-4y for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:47 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-673-ryCqI1UaOjOdNcyPEcifGA-1; Wed, 04 Feb 2026 14:03:41 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4830e7c6131so1250935e9.2 for ; Wed, 04 Feb 2026 11:03:41 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48317d4b2a6sm3151735e9.12.2026.02.04.11.03.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231824; 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=44CCfFqxFh058FYaqfQ166E828OwbzPeM6ZE6ERmryw=; b=efDVeIeBjp1v4KIepxWCV8WJy0+E2D+hiGFnnLRVh7BA7okdb3YceNeolGtEtysDixdbGw RCiVFFCO2tBsrvdPz+zNh+GJ59t3+fWMzdVtwIMBlZEklfmHQ6XiMq6M6EJYZyX0InnchU Yzd6ezv0XFomX+C8sFvQU5KC4ZWNLU8= X-MC-Unique: ryCqI1UaOjOdNcyPEcifGA-1 X-Mimecast-MFC-AGG-ID: ryCqI1UaOjOdNcyPEcifGA_1770231820 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231820; x=1770836620; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=44CCfFqxFh058FYaqfQ166E828OwbzPeM6ZE6ERmryw=; b=rksF+dYAceO0KGc96wMOLzZ7ZZiNm+I/oaYto79K0xDTDsUBlvjHRHmhoswGsTk6fy 27GBRkIaDx/IlJ2Hl5MXbkk4yTZ+6pVYMGVKGObxXZpkk/gGD/a5xeEULMMV6r+kMlso OS/6BHRhJ6GUj/uVMawCLbUg1YgI7w3sv0XWHm2nrdD4ZMaxKzmTBH2QU+hcOtczAlor RaztWE7tiO3SpuPZaKplGKsqvyJE0ay0Y7HHnoTa8rYkNt1W84BL7NQKnNGJBEFdzeLT dZJz33QtrqewAQaptjUhHlQ4TPGOoZnJ+sKxwsM7Fvxw63WnViCQO+aZJCf2aty+ptBA qVLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231820; x=1770836620; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=44CCfFqxFh058FYaqfQ166E828OwbzPeM6ZE6ERmryw=; b=h+CHirTjKsb7Sm0FaKlMw5BuMB4cr3x4cHXiudxz9y2GwCfv4mRfm3uM0lhKbAFmaZ HcpANJzd/SaOJbYVwbDxNaBZWYJF5SURdgSN+xjVfoI9IvwyhoGkNe/q7+O8+uwyJwCj 40IfTcnpdNxuG8bLCBv/XU6zv85YYLv8kKRc3w6QEJvIz9gC4Tjf+urzeZkpxLIo7nbB j8dsd8XN0oIKgE1LeHbHo+9JE+LlqsyBMovjcdEAelNjlw8krluaVoebGgvqRzUUFkZ3 cEcfY79Q17ukgIrkQTzsMsPQvKPq093KVw2zI9ecjKyaJTIT7A4WZ7Ag2QsB3B9fQ0WT rThA== X-Gm-Message-State: AOJu0Yys0oL9NylsCs6MrHc2CU9X95wYOW0DuXAKZF237N9bDNuYk4eg kruWIkOZTpUu9JCbsz7W5VD4ErFfWvVkfjWWIz9ZZVBw/pUpAKoQxHwHg2tTSeRn957t8c5oAeK quzcoQ77iLpPQctlIdCmru93Pe+X5TqEQMOewrZt3IRZ3Aua8PII2HoTXVxMASZZlyV2aYkFMpO nMo2sitLvoRVTJtYZhF5t8ovgt/FTmKxTIRg== X-Gm-Gg: AZuq6aJMUB3Jja4gEXZ9wDa/gHSyZ/EZFa4+kBqtFV3zcmnv6mDB8f0YT8JqmeMOs4W hG4G1JDpXr0ElTI05ZB5hRd1OiA1Jkx+LPmnraHy4xzrYl+Js6l2HX8tKfZSPE//IVmzkT16wg/ lYeYcY7cbzu6qOGxSXTH1oQXH/H/2W1WXDuoEE8P4J1m6PA3ajxgl59zX4f3+NkeIytDGTVhO+6 boBM132w1LWnGLcBUqXOVZO41nqBWzX0Vt2dM1eMP5Fu8YEMLVCpHvWpFWt7sxaSWeSuTguUMiN ZLqLzyNSqBNP1iYRg0RjaXei2+kUwZi2DircGzLQt0VDUDe+WIYeDSHzwBK2nj27jOipZ7Z+5Mk CW2qpJPLUUaW2pjlnLvZpeh8KG6ePc0Ymxw== X-Received: by 2002:a05:600c:4fd0:b0:480:1e9e:f9d with SMTP id 5b1f17b1804b1-4830e92cbc0mr56364795e9.8.1770231819957; Wed, 04 Feb 2026 11:03:39 -0800 (PST) X-Received: by 2002:a05:600c:4fd0:b0:480:1e9e:f9d with SMTP id 5b1f17b1804b1-4830e92cbc0mr56364245e9.8.1770231819433; Wed, 04 Feb 2026 11:03:39 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:37 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Ani Sinha , Paolo Bonzini , Richard Henderson , Eduardo Habkost , Marcel Apfelbaum Subject: [PULL 21/51] x86: q35: generate WDAT ACPI table Message-ID: <3c7a9fcf2e3afcb50a6b740643165e3b6275915c.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770232191163158500 From: Igor Mammedov It will generate WDAT table [1] customized for TCO watchdog. This allows Windows guests (Windows Server 2008/Vista) to use TCO watchdog using built-in generic driver, which aleviates need to install vendor specific drivers. Given that enabling it might change guest behaviour (both Windows/Linux) the feature is disabled by default. Users that need it can enable the feature with following CLI option. -global 'ICH9-LPC.wdat=3Don' 1) "Hardware Watchdog Timers Design=C2=A0Specification" https://uefi.org/acpi 'Watchdog Action Table (WDAT)' Signed-off-by: Igor Mammedov Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251030123750.136175-4-imammedo@redhat.com> --- hw/acpi/meson.build | 3 +- hw/acpi/wdat-ich9.c | 85 ++++++++++++++++++++++++++++++++++++++++++ hw/acpi/wdat-stub.c | 16 ++++++++ hw/i386/acpi-build.c | 13 +++++++ include/hw/acpi/wdat.h | 3 ++ 5 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 hw/acpi/wdat-ich9.c create mode 100644 hw/acpi/wdat-stub.c diff --git a/hw/acpi/meson.build b/hw/acpi/meson.build index 56b5d1ec96..fb4304f21c 100644 --- a/hw/acpi/meson.build +++ b/hw/acpi/meson.build @@ -24,7 +24,7 @@ acpi_ss.add(when: 'CONFIG_ACPI_PCI_BRIDGE', if_true: file= s('pci-bridge.c')) acpi_ss.add(when: 'CONFIG_ACPI_PCIHP', if_true: files('pcihp.c')) acpi_ss.add(when: 'CONFIG_ACPI_PCIHP', if_false: files('acpi-pci-hotplug-s= tub.c')) acpi_ss.add(when: 'CONFIG_ACPI_VIOT', if_true: files('viot.c')) -acpi_ss.add(when: 'CONFIG_ACPI_ICH9', if_true: files('ich9.c', 'ich9_tco.c= ', 'ich9_timer.c')) +acpi_ss.add(when: 'CONFIG_ACPI_ICH9', if_true: files('ich9.c', 'ich9_tco.c= ', 'ich9_timer.c', 'wdat-ich9.c')) acpi_ss.add(when: 'CONFIG_ACPI_ERST', if_true: files('erst.c')) acpi_ss.add(when: 'CONFIG_IPMI', if_true: files('ipmi.c'), if_false: files= ('ipmi-stub.c')) acpi_ss.add(when: 'CONFIG_PC', if_false: files('acpi-x86-stub.c')) @@ -33,6 +33,7 @@ if have_tpm endif system_ss.add(when: 'CONFIG_ACPI', if_false: files('acpi-stub.c', 'aml-bui= ld-stub.c', 'ghes-stub.c', 'acpi_interface.c')) system_ss.add(when: 'CONFIG_ACPI_PCI_BRIDGE', if_false: files('pci-bridge-= stub.c')) +system_ss.add(when: 'CONFIG_ACPI_ICH9', if_false: files('wdat-stub.c')) system_ss.add_all(when: 'CONFIG_ACPI', if_true: acpi_ss) system_ss.add(when: 'CONFIG_GHES_CPER', if_true: files('ghes_cper.c')) system_ss.add(when: 'CONFIG_GHES_CPER', if_false: files('ghes_cper_stub.c'= )) diff --git a/hw/acpi/wdat-ich9.c b/hw/acpi/wdat-ich9.c new file mode 100644 index 0000000000..c32ecf922c --- /dev/null +++ b/hw/acpi/wdat-ich9.c @@ -0,0 +1,85 @@ +/* + * TCO Watchdog Action Table (WDAT) + * + * Copyright Red Hat, Inc. 2025 + * Author(s): Igor Mammedov + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "hw/acpi/aml-build.h" +#include "hw/acpi/wdat.h" +#include "hw/southbridge/ich9.h" + +#define TCO_REG(base, reg_offset, reg_width) { .space_id =3D AML_AS_SYSTEM= _IO, \ + .address =3D base + reg_offset, .bit_width =3D reg_width, \ + .access_width =3D AML_WORD_ACC, }; + +/* + * "Hardware Watchdog Timers Design=C2=A0Specification" + * https://uefi.org/acpi 'Watchdog Action Table (WDAT)' + */ +void build_wdat(GArray *table_data, BIOSLinker *linker, const char *oem_id, + const char *oem_table_id, uint64_t tco_base) +{ + AcpiTable table =3D { .sig =3D "WDAT", .rev =3D 1, .oem_id =3D oem_id, + .oem_table_id =3D oem_table_id }; + struct AcpiGenericAddress tco_rld =3D TCO_REG(tco_base, 0x0, 16); + struct AcpiGenericAddress tco2_sts =3D TCO_REG(tco_base, 0x6, 16); + struct AcpiGenericAddress tco1_cnt =3D TCO_REG(tco_base, 0x8, 16); + struct AcpiGenericAddress tco_tmr =3D TCO_REG(tco_base, 0x12, 16); + + acpi_table_begin(&table, table_data); + build_append_int_noprefix(table_data, 0x20, 4); /* Watchdog Header Len= gth */ + build_append_int_noprefix(table_data, 0xff, 2); /* PCI Segment */ + build_append_int_noprefix(table_data, 0xff, 1); /* PCI Bus Number */ + build_append_int_noprefix(table_data, 0xff, 1); /* PCI Device Number */ + build_append_int_noprefix(table_data, 0xff, 1); /* PCI Function Number= */ + build_append_int_noprefix(table_data, 0, 3); /* Reserved */ + build_append_int_noprefix(table_data, 0x258, 4);/* Timer Period, ms */ + build_append_int_noprefix(table_data, 0x3ff, 4);/* Maximum Count */ + build_append_int_noprefix(table_data, 0x4, 4); /* Minimum Count */ + /* + * WATCHDOG_ENABLED & WATCHDOG_STOPPED_IN_SLEEP_STATE + */ + build_append_int_noprefix(table_data, 0x81, 1); /* Watchdog Flags */ + build_append_int_noprefix(table_data, 0, 3); /* Reserved */ + /* + * watchdog instruction entries + */ + build_append_int_noprefix(table_data, 10, 4); + /* Action table */ + build_append_wdat_ins(table_data, WDAT_ACTION_RESET, + WDAT_INS_WRITE_VALUE, + tco_rld, 0x1, 0x1ff); + build_append_wdat_ins(table_data, WDAT_ACTION_QUERY_RUNNING_STATE, + WDAT_INS_READ_VALUE, + tco1_cnt, 0x0, 0x800); + build_append_wdat_ins(table_data, WDAT_ACTION_SET_RUNNING_STATE, + WDAT_INS_WRITE_VALUE | WDAT_INS_PRESERVE_REGISTER, + tco1_cnt, 0, 0x800); + build_append_wdat_ins(table_data, WDAT_ACTION_QUERY_STOPPED_STATE, + WDAT_INS_READ_VALUE, + tco1_cnt, 0x800, 0x800); + build_append_wdat_ins(table_data, WDAT_ACTION_SET_STOPPED_STATE, + WDAT_INS_WRITE_VALUE | WDAT_INS_PRESERVE_REGISTER, + tco1_cnt, 0x800, 0x800); + build_append_wdat_ins(table_data, WDAT_ACTION_SET_COUNTDOWN_PERIOD, + WDAT_INS_WRITE_COUNTDOWN, + tco_tmr, 0x0, 0x3FF); + build_append_wdat_ins(table_data, WDAT_ACTION_QUERY_COUNTDOWN_PERIOD, + WDAT_INS_READ_COUNTDOWN, + tco_tmr, 0x0, 0x3FF); + build_append_wdat_ins(table_data, WDAT_ACTION_QUERY_WATCHDOG_STATUS, + WDAT_INS_READ_VALUE, + tco2_sts, 0x2, 0x2); + build_append_wdat_ins(table_data, WDAT_ACTION_SET_WATCHDOG_STATUS, + WDAT_INS_WRITE_VALUE | WDAT_INS_PRESERVE_REGISTER, + tco2_sts, 0x2, 0x2); + build_append_wdat_ins(table_data, WDAT_ACTION_SET_WATCHDOG_STATUS, + WDAT_INS_WRITE_VALUE | WDAT_INS_PRESERVE_REGISTER, + tco2_sts, 0x4, 0x4); + + acpi_table_end(linker, &table); +} diff --git a/hw/acpi/wdat-stub.c b/hw/acpi/wdat-stub.c new file mode 100644 index 0000000000..a9b57a047b --- /dev/null +++ b/hw/acpi/wdat-stub.c @@ -0,0 +1,16 @@ +/* + * Copyright Red Hat, Inc. 2025 + * Author(s): Igor Mammedov + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "hw/acpi/aml-build.h" +#include "hw/acpi/wdat.h" + +void build_wdat(GArray *table_data, BIOSLinker *linker, const char *oem_id, + const char *oem_table_id, uint64_t tco_base) +{ + g_assert_not_reached(); +} diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 9446a9f862..ac420eab81 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -77,6 +77,7 @@ =20 #include "hw/acpi/hmat.h" #include "hw/acpi/viot.h" +#include "hw/acpi/wdat.h" =20 #include CONFIG_DEVICES =20 @@ -104,11 +105,13 @@ typedef struct AcpiPmInfo { bool smi_on_cpuhp; bool smi_on_cpu_unplug; bool pcihp_root_en; + bool wdat_enabled; uint8_t s4_val; AcpiFadtData fadt; uint16_t cpu_hp_io_base; uint16_t pcihp_io_base; uint16_t pcihp_io_len; + uint64_t tco_io_base; } AcpiPmInfo; =20 typedef struct AcpiMiscInfo { @@ -203,6 +206,7 @@ static void acpi_get_pm_info(MachineState *machine, Acp= iPmInfo *pm) pm->pcihp_io_len =3D 0; pm->smi_on_cpuhp =3D false; pm->smi_on_cpu_unplug =3D false; + pm->wdat_enabled =3D false; =20 assert(obj); init_common_fadt_data(machine, obj, &pm->fadt); @@ -224,6 +228,9 @@ static void acpi_get_pm_info(MachineState *machine, Acp= iPmInfo *pm) !!(smi_features & BIT_ULL(ICH9_LPC_SMI_F_CPU_HOTPLUG_BIT)); pm->smi_on_cpu_unplug =3D !!(smi_features & BIT_ULL(ICH9_LPC_SMI_F_CPU_HOT_UNPLUG_BIT)); + pm->wdat_enabled =3D object_property_get_bool(obj, "wdat", NULL); + pm->tco_io_base =3D object_property_get_uint(obj, ACPI_PM_PROP_PM_= IO_BASE, + NULL) + ICH9_PMIO_TCO_RLD; } pm->pcihp_io_base =3D object_property_get_uint(obj, ACPI_PCIHP_IO_BASE_PROP, NULL); @@ -2079,6 +2086,12 @@ void acpi_build(AcpiBuildTables *tables, MachineStat= e *machine) acpi_add_table(table_offsets, tables_blob); build_waet(tables_blob, tables->linker, x86ms->oem_id, x86ms->oem_tabl= e_id); =20 + if (pm.wdat_enabled =3D=3D true) { + acpi_add_table(table_offsets, tables_blob); + build_wdat(tables_blob, tables->linker, x86ms->oem_id, + x86ms->oem_table_id, pm.tco_io_base); + } + /* Add tables supplied by user (if any) */ for (u =3D acpi_table_first(); u; u =3D acpi_table_next(u)) { unsigned len =3D acpi_table_len(u); diff --git a/include/hw/acpi/wdat.h b/include/hw/acpi/wdat.h index c539e97e9b..67b9136d8c 100644 --- a/include/hw/acpi/wdat.h +++ b/include/hw/acpi/wdat.h @@ -115,4 +115,7 @@ void build_append_wdat_ins(GArray *table_data, struct AcpiGenericAddress as, uint32_t val, uint32_t mask); =20 +void build_wdat(GArray *table_data, BIOSLinker *linker, const char *oem_id, + const char *oem_table_id, uint64_t tco_base); + #endif /* QEMU_HW_ACPI_WDAT_H */ --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231872; cv=none; d=zohomail.com; s=zohoarc; b=aVlRhh6D9c5bLRJ5itlabRjciwLnTol35Ian91LU+5ZsBncVKbMXkHQDlxPxGlYwpn/liMMeEo5E4/Pbz7twUluLgd9SPcrZ0slurHPFcNe51/bpuv4SxjSaHiZ6xIX/KKaKDlwknqCfSi4wmMWR6KI60gpIyP4LitieZUzK1Gc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231872; h=Content-Type: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=CdyYS3Pk1FuMAygMwTfkSPyp7PDdnzEguqKZ3ur3qG0=; b=CnTWz59bA5djeMzN+cdlSgS3NrwEP4KH2n5A/zym0tZGo6uZYg7Ib2U6ei3sxF0Xj3xXm714HZEck8zO4MmWuvoFnOYYCwd9k79iBcASgijHRswdZnDPooJOrDIEJxMF+X5LnzDAsbP3g9Lmdsji4tX5qosSCVVTvkMAvY2xQXg= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770231872055780.5816915113201; Wed, 4 Feb 2026 11:04:32 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniAS-0007h0-Q4; Wed, 04 Feb 2026 14:04:00 -0500 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 1vniAG-0007ST-M6 for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:49 -0500 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 1vniAF-0007sb-5Z for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:48 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-613-7cmci8NaM6-NZkKGShmNwQ-1; Wed, 04 Feb 2026 14:03:44 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4806865a01bso1120995e9.0 for ; Wed, 04 Feb 2026 11:03:43 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43618057f93sm8042619f8f.24.2026.02.04.11.03.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231826; 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: in-reply-to:in-reply-to:references:references; bh=CdyYS3Pk1FuMAygMwTfkSPyp7PDdnzEguqKZ3ur3qG0=; b=H7Hk+ht4IGni1OUqNT8jd82gynmdLe0D4ntYovJQ2kX707irVP/8BbIKH7MjdVU8opmsa7 DpSTiRmYqxaSNuyC3/yQL2dCD1znDITsRm7oq0S7c2m/CrcXaKgPYsoWFPm8oGpzCZngfQ GppWLWrTYnhpzcjvoHC2Q7MkRaGux4I= X-MC-Unique: 7cmci8NaM6-NZkKGShmNwQ-1 X-Mimecast-MFC-AGG-ID: 7cmci8NaM6-NZkKGShmNwQ_1770231822 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231822; x=1770836622; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=CdyYS3Pk1FuMAygMwTfkSPyp7PDdnzEguqKZ3ur3qG0=; b=OpRLuMa1U6tsSfbfHJGoJxqpqwusa+TTncz2YgygoOoWPeT0ZPU5lfDo7Ilz8qm7XW MDLzfTVigvzPWgDCBiHoZfze1hOMqppe4sobOwxxrrF3z2/aySQMmcmtFW6dTD9swH3t aHvgpHZRK0D8jgb716+5wtfSI+gDW9SCr6Wl1/JELssowK/AvrRnYk/6ZlWL1EJDkagM KxK7G1EBvpMelqAmZxnwCJUO1QtA03zspfX1Nb/80Es1H54beMrQ+ru3/zF3WqMHq6xZ X6UK5d8ihBlFL/af7vNMaK2VVxK3CDATcWQZmvPiSbLvyTZHC7SSOIjbMbihHeoOvrrD bX8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231822; x=1770836622; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CdyYS3Pk1FuMAygMwTfkSPyp7PDdnzEguqKZ3ur3qG0=; b=b0EVHyVI5nP2qQgBi6zx2stLi46uq1ru6dGUJDBit6E+NHhqRmfoyRMkKYY0wWAnMz OSOuaQKuGrVlX96h3Hbsb8pBzIZdYeJq+9BWHq5msoxJ5YhTYT6nucXJNFT9sJ3F1h0s ZnRG1eHe93HugMrvSi2sk4/8mWnLtjIITH3wIcPaOwaEgczXqS209AKGQ/JLkkfHvU8T 4/NeR9lAlcFIDTAHFiYHVV4yqY5OT4pyRL8Nd7GixPyLX5uWSZFcvNUeZeUR/fW9X6J8 hwHCzo0YzJ0yqD7E5XCNi1kwbBKmqVvLBmw9mEyqlfT4r5BbQBXtisBILmm1ACPtr9G1 a+YQ== X-Gm-Message-State: AOJu0Yzp4P62i2VAPJ0haF36CxsBHHBbFkmJalUujvM/8RGVw8KtOR7i dlMpMvTgwHObFWNGoUdcMET7rlfWHz9Ks7ObzBzBRCS2XTCKm7XpKpht/sfwAO7faK3DmyKQZWw mqUI3zyQ6sRidd0KpD4Hzm2rqg9vFa169Nv5rkWxX2C0jl1XqFMYgdNiTKyJAdgwxNxsqrb8XhK umYaNfz4W5YqUigo7feBguP2Mtk3yvYJHfkQ== X-Gm-Gg: AZuq6aKbODawLtpzdpp5O/Y+BbJ7ELJbg+JW1f7y+mI9hpShvuI/79cnBkDVKeTSefx EKUK9lVv2z2+ksE7AvATATjaA8sjGUNZeq+Eg3RKKpcqZGbZy+SrfCzyhdtBrDBIDHJyeV6KPpD 81SNGDlMX6SVbPdgvrj+3XMThULmu0f3uaavAq3U2IakYn7OHp2/5HyiSvsINo0WjbtlNLNmyXv RhFEFSAx27N8NRomPhfsBZVfO2nPPmZR+0qhV2vceHXr3jll0dXEzfmQ6/68VSXRzojGQXJBrM5 vAsmmO6qsE+h5243+knY4H37We0rB/skEb4oNfuqwKgpZsxfF7+bjA5vnWAuxis9LT0vEafq37P kdBMWHqpzb5Zd4qHRyY+PCGMQqyB2YfqrhQ== X-Received: by 2002:a05:6000:1a8c:b0:432:dc1f:6982 with SMTP id ffacd0b85a97d-43617e3c35cmr5483700f8f.16.1770231821953; Wed, 04 Feb 2026 11:03:41 -0800 (PST) X-Received: by 2002:a05:6000:1a8c:b0:432:dc1f:6982 with SMTP id ffacd0b85a97d-43617e3c35cmr5483649f8f.16.1770231821395; Wed, 04 Feb 2026 11:03:41 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:39 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Ani Sinha Subject: [PULL 22/51] tests: x86: q35: acpi: add WDAT table test case Message-ID: <8edd47eff924cddd9e0cb8ace4ab8e62ae9b7f61.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231873187158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov Signed-off-by: Igor Mammedov Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251030123750.136175-5-imammedo@redhat.com> --- tests/qtest/bios-tables-test-allowed-diff.h | 1 + tests/qtest/bios-tables-test.c | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index dfb8523c8b..14b680debe 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1 +1,2 @@ /* List of comma-separated changed AML files to ignore */ +"tests/data/acpi/x86/q35/WDAT.wdat", diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c index e489d94331..99cd714aa7 100644 --- a/tests/qtest/bios-tables-test.c +++ b/tests/qtest/bios-tables-test.c @@ -2511,6 +2511,18 @@ static void test_acpi_isapc_smbios_legacy(void) free_test_data(&data); } =20 +static void test_acpi_q35_wdat(void) +{ + test_data data =3D { + .machine =3D MACHINE_Q35, + .arch =3D "x86", + .variant =3D ".wdat", + }; + + test_acpi_one("-global ICH9-LPC.wdat=3Don", &data); + free_test_data(&data); +} + static void test_oem_fields(test_data *data) { int i; @@ -2805,6 +2817,7 @@ int main(int argc, char *argv[]) qtest_add_func("acpi/q35/cxl", test_acpi_q35_cxl); #endif qtest_add_func("acpi/q35/slic", test_acpi_q35_slic); + qtest_add_func("acpi/q35/wdat", test_acpi_q35_wdat); } if (qtest_has_machine("microvm")) { qtest_add_func("acpi/microvm", test_acpi_microvm_tcg); --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231958; cv=none; d=zohomail.com; s=zohoarc; b=B9IOucdqcufrR2vM6cqOuZ3V+Co0tzE8H6OCTJhRM89LNebpBTJoHvfZVGp277iAQNdQNQp26iD+LAD6P5LT0CNE+BMcb4x5sdwAXEh+LhOQzA6HzHjwyD14T4XYrsNaqULDDNMhRTiOqgIt0bDEBPrYuSiObTK4K1OQTBbYNyU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231958; h=Content-Type: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=jvf+8kNCv/vttBlFTNJUy86tTIEYvZX8DU9qziGh9Yo=; b=cvdC4i8SzaEyqYJOPxsSKrJu6e+xFaBUsDvt/RAyhGGAECUAQ2Opy5fqh7p9nNY6Pp9q41sQvnJMNA2UNc8dpYWuzzQXupE+XpzB7AOjqfNp6ZSVwVzN5i82QzGFVMbqkDcBu52tj3Q7dOpZhb8d+pp7lSszscNY8PPYZOCAOfY= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770231958623238.60516436509874; Wed, 4 Feb 2026 11:05:58 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniAZ-0000Ea-C9; Wed, 04 Feb 2026 14:04:07 -0500 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 1vniAI-0007Ut-KF for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:51 -0500 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 1vniAF-0007sr-Uk for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:49 -0500 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-121-KFdf_4bhPSWTqM3rb7T91Q-1; Wed, 04 Feb 2026 14:03:46 -0500 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-43284f60a8aso178302f8f.3 for ; Wed, 04 Feb 2026 11:03:45 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4830fe86a7bsm23426845e9.8.2026.02.04.11.03.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231827; 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: in-reply-to:in-reply-to:references:references; bh=jvf+8kNCv/vttBlFTNJUy86tTIEYvZX8DU9qziGh9Yo=; b=K99IZedfDKytjPuNpPW5978seBd41CgeC8o6ErWhU+8ZGdNSK5mV/pt4/vwwpJui1ahBi8 AxpMQfn9+RHCmN8w+MFtv3M314peCGFnt9f8ZcbeVyyQQ7HMpnJBCAtePNwt9YZA1gk99e WaoIXMg5kp9PN1PTPXG6OCwVG8IgHgY= X-MC-Unique: KFdf_4bhPSWTqM3rb7T91Q-1 X-Mimecast-MFC-AGG-ID: KFdf_4bhPSWTqM3rb7T91Q_1770231825 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231824; x=1770836624; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=jvf+8kNCv/vttBlFTNJUy86tTIEYvZX8DU9qziGh9Yo=; b=M+ByakKB9FRTqpYkrsrOvJ1ET5uJUR68ECxS6AeG6tJ2JAnKvwWaToUoBTlNgsXJz7 II24cTO4HROxg2pjp7W9CTU7/aY3QOMrk7nE2GoLb/ZQbX995GfEmBIgKZfGp61Gm6lh XA2mULWUPI2JHPhCpEfbbI4vinlW02Et+PMO9SqgWp/1eybhBaeV5Pfb7spZpABWdAOR pv0+tzGCFTMBiG6tNXVjePdwnFSBUxT+u7yXAevVdpuX0yA+tiWY5Dr+I+PdiTSVY2L3 RMvuVnWz6S7VyuhrhaVYm2CetbQN1AOsgIVcJjFs2ZYoKMDE2cXOQ4rJk94zrRG6fgQF B0SQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231824; x=1770836624; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jvf+8kNCv/vttBlFTNJUy86tTIEYvZX8DU9qziGh9Yo=; b=cqAYkH1TnIMNAwH+IRtJKQ76FKiyAx/StdFmgqDCIZsX8RKK5ag+fChRMmoli0nYwI 0xRK733kJEbSbS2k74WdmraZE5MMFJOgwZUtjlO2YwIXGy4VLD87krSOpKYNtEQhJZ46 KU2Pqbfp/VxEZKyPkoJYDNDWzg2g8xwrc3UgbJyv3gInJS8JKcGC2ox8EjyGJBSUXXp+ RQQtzN8gLc25JJAQtQiHcVAVhNusaYa8YoxaKK45ExhcxHSgq8FG7quxWKUsrX0jIjIn ZHkxdFS3PHA1jyEtG0c8kFMCF59MiaESOxLs9SsLZEmQyi05xmY3eRCdjbdngoomzuZX X02A== X-Gm-Message-State: AOJu0YzJ9T7J6BienQ/57n+PFKRcv8zbY/n2VnwrAyPHnkZv7sLd+9Wi D4hJwMFKvvSbu1hFvFetTpr4E4Xb8LeadYYhZKfe1K/dBE7nUND2QbhUurGMBSLZLe+2skYL/Jz rTyGDOKIQ7th6luwsd/Aq1EmiV7Ka+pCMLnfVAjx8yuoEughWx6foU3+6SiW4J45ashZUGnz2bp n+uQyCJ8nqfQMPcXcYoKhIy/aHGEKITE+/gw== X-Gm-Gg: AZuq6aJvdlUt+c57yoa/RkRF6AQsmbJwL/IJvsOtLDrLHjJE5aCieKieYcuFH1IAoQl rdJSual+1Nqye9KtrtQTY2cpmVYwitlZLiCDnBGnM0zoe2Bru0P/Vjn4yx57jy5mMPvq7v9lNWG nSrKoUXYV6ZXlNdxn3IlyNLQv/J1kI53CzDVwvlUUFxofe86IWrCxv71dp5+qMNQg2fO4dwGe2Y C6sTxy3W1uXar3dgXwIsP+Q9mckpxE8LvTP8rzZecqmPi8JCBmOD0CwEiJpNIsEs5qCOWzRNl5F OEas//Auv+lQRKQIKoSRLfRdvf+XnNo3AXiNnjoj8x/ggCHAFESVAhhgtzVtxG3ddEtblXNsI2g b4CsvoYtwbNxZMSftXB7g1+R+uiveQ8V4NA== X-Received: by 2002:a05:600c:c163:b0:480:2521:4d92 with SMTP id 5b1f17b1804b1-4830e988f3amr60107425e9.24.1770231824281; Wed, 04 Feb 2026 11:03:44 -0800 (PST) X-Received: by 2002:a05:600c:c163:b0:480:2521:4d92 with SMTP id 5b1f17b1804b1-4830e988f3amr60106715e9.24.1770231823539; Wed, 04 Feb 2026 11:03:43 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:41 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Ani Sinha Subject: [PULL 23/51] tests: acpi: update expected WDAT blob Message-ID: <4c0583750e9b7b75fef8cb9216e2f9f8827cb355.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231961896154100 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov replace blank table with a new one: +[000h 0000 4] Signature : "WDAT" [Watchdog Action = Table] +[004h 0004 4] Table Length : 00000134 +[008h 0008 1] Revision : 01 +[009h 0009 1] Checksum : 31 +[00Ah 0010 6] Oem ID : "BOCHS " +[010h 0016 8] Oem Table ID : "BXPC " +[018h 0024 4] Oem Revision : 00000001 +[01Ch 0028 4] Asl Compiler ID : "BXPC" +[020h 0032 4] Asl Compiler Revision : 00000001 + +[024h 0036 4] Header Length : 00000020 +[028h 0040 2] PCI Segment : 00FF +[02Ah 0042 1] PCI Bus : FF +[02Bh 0043 1] PCI Device : FF +[02Ch 0044 1] PCI Function : FF +[02Dh 0045 3] Reserved : 000000 +[030h 0048 4] Timer Period : 00000258 +[034h 0052 4] Max Count : 000003FF +[038h 0056 4] Min Count : 00000004 +[03Ch 0060 1] Flags (decoded below) : 81 + Enabled : 1 + Stopped When Asleep : 1 +[03Dh 0061 3] Reserved : 000000 +[040h 0064 4] Watchdog Entry Count : 0000000A + +[044h 0068 1] Watchdog Action : 01 +[045h 0069 1] Instruction : 02 +[046h 0070 2] Reserved : 0000 + +[048h 0072 12] Register Region : [Generic Address Structure] +[048h 0072 1] Space ID : 01 [SystemIO] +[049h 0073 1] Bit Width : 10 +[04Ah 0074 1] Bit Offset : 00 +[04Bh 0075 1] Encoded Access Width : 02 [Word Access:16] +[04Ch 0076 8] Address : 0000000000000660 + +[054h 0084 4] Value : 00000001 +[058h 0088 4] Register Mask : 000001FF + +[05Ch 0092 1] Watchdog Action : 08 +[05Dh 0093 1] Instruction : 00 +[05Eh 0094 2] Reserved : 0000 + +[060h 0096 12] Register Region : [Generic Address Structure] +[060h 0096 1] Space ID : 01 [SystemIO] +[061h 0097 1] Bit Width : 10 +[062h 0098 1] Bit Offset : 00 +[063h 0099 1] Encoded Access Width : 02 [Word Access:16] +[064h 0100 8] Address : 0000000000000668 + +[06Ch 0108 4] Value : 00000000 +[070h 0112 4] Register Mask : 00000800 + +[074h 0116 1] Watchdog Action : 09 +[075h 0117 1] Instruction : 82 +[076h 0118 2] Reserved : 0000 + +[078h 0120 12] Register Region : [Generic Address Structure] +[078h 0120 1] Space ID : 01 [SystemIO] +[079h 0121 1] Bit Width : 10 +[07Ah 0122 1] Bit Offset : 00 +[07Bh 0123 1] Encoded Access Width : 02 [Word Access:16] +[07Ch 0124 8] Address : 0000000000000668 + +[084h 0132 4] Value : 00000000 +[088h 0136 4] Register Mask : 00000800 + +[08Ch 0140 1] Watchdog Action : 0A +[08Dh 0141 1] Instruction : 00 +[08Eh 0142 2] Reserved : 0000 + +[090h 0144 12] Register Region : [Generic Address Structure] +[090h 0144 1] Space ID : 01 [SystemIO] +[091h 0145 1] Bit Width : 10 +[092h 0146 1] Bit Offset : 00 +[093h 0147 1] Encoded Access Width : 02 [Word Access:16] +[094h 0148 8] Address : 0000000000000668 + +[09Ch 0156 4] Value : 00000800 +[0A0h 0160 4] Register Mask : 00000800 + +[0A4h 0164 1] Watchdog Action : 0B +[0A5h 0165 1] Instruction : 82 +[0A6h 0166 2] Reserved : 0000 + +[0A8h 0168 12] Register Region : [Generic Address Structure] +[0A8h 0168 1] Space ID : 01 [SystemIO] +[0A9h 0169 1] Bit Width : 10 +[0AAh 0170 1] Bit Offset : 00 +[0ABh 0171 1] Encoded Access Width : 02 [Word Access:16] +[0ACh 0172 8] Address : 0000000000000668 + +[0B4h 0180 4] Value : 00000800 +[0B8h 0184 4] Register Mask : 00000800 + +[0BCh 0188 1] Watchdog Action : 06 +[0BDh 0189 1] Instruction : 03 +[0BEh 0190 2] Reserved : 0000 + +[0C0h 0192 12] Register Region : [Generic Address Structure] +[0C0h 0192 1] Space ID : 01 [SystemIO] +[0C1h 0193 1] Bit Width : 10 +[0C2h 0194 1] Bit Offset : 00 +[0C3h 0195 1] Encoded Access Width : 02 [Word Access:16] +[0C4h 0196 8] Address : 0000000000000672 + +[0CCh 0204 4] Value : 00000000 +[0D0h 0208 4] Register Mask : 000003FF + +[0D4h 0212 1] Watchdog Action : 05 +[0D5h 0213 1] Instruction : 01 +[0D6h 0214 2] Reserved : 0000 + +[0D8h 0216 12] Register Region : [Generic Address Structure] +[0D8h 0216 1] Space ID : 01 [SystemIO] +[0D9h 0217 1] Bit Width : 10 +[0DAh 0218 1] Bit Offset : 00 +[0DBh 0219 1] Encoded Access Width : 02 [Word Access:16] +[0DCh 0220 8] Address : 0000000000000672 + +[0E4h 0228 4] Value : 00000000 +[0E8h 0232 4] Register Mask : 000003FF + +[0ECh 0236 1] Watchdog Action : 20 +[0EDh 0237 1] Instruction : 00 +[0EEh 0238 2] Reserved : 0000 + +[0F0h 0240 12] Register Region : [Generic Address Structure] +[0F0h 0240 1] Space ID : 01 [SystemIO] +[0F1h 0241 1] Bit Width : 10 +[0F2h 0242 1] Bit Offset : 00 +[0F3h 0243 1] Encoded Access Width : 02 [Word Access:16] +[0F4h 0244 8] Address : 0000000000000666 + +[0FCh 0252 4] Value : 00000002 +[100h 0256 4] Register Mask : 00000002 + +[104h 0260 1] Watchdog Action : 21 +[105h 0261 1] Instruction : 82 +[106h 0262 2] Reserved : 0000 + +[108h 0264 12] Register Region : [Generic Address Structure] +[108h 0264 1] Space ID : 01 [SystemIO] +[109h 0265 1] Bit Width : 10 +[10Ah 0266 1] Bit Offset : 00 +[10Bh 0267 1] Encoded Access Width : 02 [Word Access:16] +[10Ch 0268 8] Address : 0000000000000666 + +[114h 0276 4] Value : 00000002 +[118h 0280 4] Register Mask : 00000002 + +[11Ch 0284 1] Watchdog Action : 21 +[11Dh 0285 1] Instruction : 82 +[11Eh 0286 2] Reserved : 0000 + +[120h 0288 12] Register Region : [Generic Address Structure] +[120h 0288 1] Space ID : 01 [SystemIO] +[121h 0289 1] Bit Width : 10 +[122h 0290 1] Bit Offset : 00 +[123h 0291 1] Encoded Access Width : 02 [Word Access:16] +[124h 0292 8] Address : 0000000000000666 + +[12Ch 0300 4] Value : 00000004 +[130h 0304 4] Register Mask : 00000004 Signed-off-by: Igor Mammedov Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251030123750.136175-6-imammedo@redhat.com> --- tests/data/acpi/x86/q35/WDAT.wdat | Bin 0 -> 308 bytes tests/qtest/bios-tables-test-allowed-diff.h | 1 - 2 files changed, 1 deletion(-) create mode 100644 tests/data/acpi/x86/q35/WDAT.wdat diff --git a/tests/data/acpi/x86/q35/WDAT.wdat b/tests/data/acpi/x86/q35/WD= AT.wdat new file mode 100644 index 0000000000000000000000000000000000000000..e1e056b390e51c49f11f7b0d35e= 4e7c55d8067b1 GIT binary patch literal 308 zcmaivF$w}f3`JkEx{TV)5#kX9FW|0)oq~c}T8Xtc(2GYhPO+$9AY^#?`OH6WH>b6L zth#-_J6bm!dNVTt;vLff$K8QJ!5f$W4`2?6f@Jj4QYvm-AjK}Dx5`T;m_2{<;x*QX lL4w7nzVfzt``kzV@waK@$$at15&T;93Z<9T{~wRc(JwJ97XbhO literal 0 HcmV?d00001 diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index 14b680debe..dfb8523c8b 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1,2 +1 @@ /* List of comma-separated changed AML files to ignore */ -"tests/data/acpi/x86/q35/WDAT.wdat", --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770232097; cv=none; d=zohomail.com; s=zohoarc; b=ZcTTd6HEMUtsjb57r2EiRyH+hAlyRrF2uyazcZeNK+0vkZjR4RfbyF4YrCdhL1dS/4Ir6GN3KRaiaKM/Ij1AJzaUvE44AtW1F6tlUuK0cjaOI2EHkD4dlHXaKcJ3faPWTdZ18Dlgb9evJAfZpJv+W1vQ95uJ3xIJw5jVtAz/IQM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770232097; h=Content-Type: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=1eEfcRbtK2xlCfiX35UT2DVbhf1pwTVIcDLjUARGxQM=; b=YlAXRUP3ombwwZ0afSAUAtvTEj48LQL7dfg+Hieb0w90ajIMLMHbUMDsNoauv2iOy294ydioqNj7lmm7/mPyT/y2AmkmFPSeHmswclyWl0ymi2veQGh3Mv6rE5gCLU9vw+pptss/9L7sy5DIo7mYWtNtLWSJLQL9L2GvWqeUmNE= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17702320977121007.9632658985163; Wed, 4 Feb 2026 11:08:17 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniAU-000849-VZ; Wed, 04 Feb 2026 14:04:03 -0500 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 1vniAJ-0007WN-QL for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:52 -0500 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 1vniAH-0007uc-Sm for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:51 -0500 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-28--qxdtjUqOCKEuWHiyj18fQ-1; Wed, 04 Feb 2026 14:03:47 -0500 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-436164e7f42so188258f8f.3 for ; Wed, 04 Feb 2026 11:03:47 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-436180659b8sm7888347f8f.43.2026.02.04.11.03.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231829; 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: in-reply-to:in-reply-to:references:references; bh=1eEfcRbtK2xlCfiX35UT2DVbhf1pwTVIcDLjUARGxQM=; b=YCf/BWIoElUWtMwnmdg9i3xcs3h5dS0riL/SYG/6AQi5i9P1T7tEoliNMYIVhmltiEzLa6 jCyxHiAzy9sxvj47/7nDUFduz0qFcxf/+trb/TpCM8KUJifpw3P2rTin0ifkS3XYQHZduK nVuxmcfxCbqVcm6Yo9P8ks8pwoQ/wso= X-MC-Unique: -qxdtjUqOCKEuWHiyj18fQ-1 X-Mimecast-MFC-AGG-ID: -qxdtjUqOCKEuWHiyj18fQ_1770231827 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231826; x=1770836626; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=1eEfcRbtK2xlCfiX35UT2DVbhf1pwTVIcDLjUARGxQM=; b=sUio0CruBpA1z13Su8LVckuFGDdyWxtWq+45MnOwD3ykZjua6MLba9g5A9w+IsyWqt JklCMV6XYLHrS0sDIoG6ZL0JzxD5a7vi3zA6XpZ5ziIKAwUzKJKeYYtk3A0fG7QXdUSe +cExfHEHN/mQ2lm5WdgqSeVtvvOG+BChuMFR94BIDreIz2HPfcMFZVzsZXrqkY3R1Huw EfItmcn/nn6toGu3OyMBtoRPGj+XJ27rGhgIRcFp/Tpb+yHCcXYu9o5nM32PShNhndaK lZBjj4P+FMLDzQ4SGb6zP1jW4bUwDIW3+sMn95LmxZ5v0Rlwm8FPy9kUsGw9/YWhRYhp Zk4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231826; x=1770836626; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1eEfcRbtK2xlCfiX35UT2DVbhf1pwTVIcDLjUARGxQM=; b=pYY0Uy/1YK40C7xBJQ7YNGIjQ64Je93Y0O1LNtQTSb2z/HmW0hY8rW8Pd1vjd1wcT+ rMWz0P+RS0iXnSHRcW1VMsVhyxbWWOKOZcHXeNc+agLS79WRtf9282GmLUr0KsNrENX2 QPZEQXgbxVgXIq8zVbImOqbHKxgQubgAhrlaiPIG4PJVP+D0QreCIXufp+28GK5qUjpy H+HFUDp6ktth2fThR0taBTIBwrp2RqsqsC6R5ro+eHdsAp7+brjBzu4zUbSKv6DOItcu NBLZcrHkbvEpwYoJqwqEMgnlcS8+Vzi3Fl/zkNDme2OABAjb7uCJ+FYQ0MvR4BM39bmT /g0A== X-Gm-Message-State: AOJu0YzuHED+4yIhWwit5CWZ/H/f50C1o0P8oAFA6xRs0PRNtzY0NsSe iFxC8utUDIkHkv1sfqgn3GlNv6NH2NMtBoEAkRYRttvsi5K7mOU6OeLJ+AFJLxc0jdOrdwHzQcx dn2Q7HMKS7T3fm4i62NTipsbUanR3uAgr6sx1JmZ1Bi0fNJX8Spmr+ZU8Bf0UOZYd5jaq3hK8pK vltQVNroB0kyv/jzB/11Zhu8Y/tHMwRbZzFA== X-Gm-Gg: AZuq6aLjXzNBKrj9h/CbyIQWNK3d59/TfOTdRhdWQ6n+tzDey3ZQQSSDnMGap1f7fab 2/ukWtwwPnh02k5PlbBKraOEkskn6LRAQ88GPFMHPi1ohOGj03xy58Hv3WKFW1YLSi1temSvC0Z +xKhvVJIQvfY3IXlI8bNxxaA6SxLJFXB3uNFyN++O2ogs8D3DSZfcKfQB6oiBOObhfu7x3BbPmH Foro1pOtKHeBnTRrHhbGfoF9hTDJpxrfxYYqHvgO/Y/Xs+16CK+0yEqvVj2SuWFinsBnzutC+nW +eaqb0cxeo2ebF2eb8H8kx0Z4EQ8OvumRlUH+UYVdXaoJB144UgZm8RZzv1HiLPhDL9BUvw2WqM 5NM/pZUQp+5FsADnxUGutJvrpMeTdwL5S2A== X-Received: by 2002:a5d:64e6:0:b0:42f:b707:56dd with SMTP id ffacd0b85a97d-436180551e9mr6170079f8f.33.1770231826191; Wed, 04 Feb 2026 11:03:46 -0800 (PST) X-Received: by 2002:a5d:64e6:0:b0:42f:b707:56dd with SMTP id ffacd0b85a97d-436180551e9mr6170025f8f.33.1770231825628; Wed, 04 Feb 2026 11:03:45 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:43 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Daniil Tatianin , Stefano Garzarella Subject: [PULL 24/51] virtio/vhost: don't consider non-MAP_SHARED regions public Message-ID: <158f8d3bb06f65cac00bccb681fbd145189a1211.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770232098431158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Daniil Tatianin Just having a file descriptor is not enough to consider a memory region public. If QEMU didn't map it as MAP_SHARED (in case of share=3Doff), guest writes to this region won't be visible to the vhost-user backend, thus causing it to read all zeroes or garbage. Make sure we don't pass such regions and include that to our definition of what a private region is. Signed-off-by: Daniil Tatianin Fixes: 552b25229c ("vhost: Rework memslot filtering and fix "used_memslot" = tracking") Acked-by: Stefano Garzarella Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251113085842.323745-1-d-tatianin@yandex-team.ru> --- hw/virtio/vhost.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index 31e9704cdc..c6a5928cb1 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -592,11 +592,13 @@ static bool vhost_section(struct vhost_dev *dev, Memo= ryRegionSection *section) /* * Some backends (like vhost-user) can only handle memory regions * that have an fd (can be mapped into a different process). Filter - * the ones without an fd out, if requested. - * - * TODO: we might have to limit to MAP_SHARED as well. + * the ones without an fd out, if requested. Also make sure that + * this region is mapped as shared so that the vhost backend can + * observe modifications to this region, otherwise we consider it + * private. */ - if (memory_region_get_fd(section->mr) < 0 && + if ((memory_region_get_fd(section->mr) < 0 || + !qemu_ram_is_shared(section->mr->ram_block)) && dev->vhost_ops->vhost_backend_no_private_memslots && dev->vhost_ops->vhost_backend_no_private_memslots(dev)) { trace_vhost_reject_section(mr->name, 2); --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770232271; cv=none; d=zohomail.com; s=zohoarc; b=VbEvbEUki0loWQthFEUbRfzW5WsatoPb9EJkv4Q5gTGFDqy4YQT7kXBU/YQeJmrNPoDD1C7jThqfqtwSJ342KtBSmif92A6ZxBWzoN9FX6nzKpfKuzsTA+ReOlj7Ph+X6qlqsYJVNLaJGg40vkS3WQj5/vaLiMDwp21ZVGBHes4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770232271; 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=YXkScNv7xNrQiajhZNxV5Y+IbqsvARHUNAQ/l/4frxQ=; b=fQB3GHnPh+9f7l80HZtShkaKOgHRBB8VfgAJhAVdPEdDLlwB6IhLihurBlyyhDeh2HHIwEUEMoGcZcapmKcsYCQ0F5Y6Ut5MaKzalPPIl1fdD7QXZk5xD1pf5Vn2VKWcCMf7V+TPFCr3tb7uiNcGJcPs9IfH2CqerYuVyfN7kLA= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177023227113812.725741245518861; Wed, 4 Feb 2026 11:11:11 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniAV-0008AR-B1; Wed, 04 Feb 2026 14:04:03 -0500 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 1vniAL-0007av-CH for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:55 -0500 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 1vniAJ-0007vH-QH for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:53 -0500 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-357-S1kZFgiONg25G7Y9VaoA8Q-1; Wed, 04 Feb 2026 14:03:50 -0500 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-435a6c0c794so179882f8f.2 for ; Wed, 04 Feb 2026 11:03:49 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43617e263b9sm7935042f8f.4.2026.02.04.11.03.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231831; 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=YXkScNv7xNrQiajhZNxV5Y+IbqsvARHUNAQ/l/4frxQ=; b=Sprhm/1PW5pknAg/m9QSrA/F5rDsJxt18yq7uItgp5Ds0H7Qw0voEGE80AFFXaKHXaBJ0i HvbNv9ItPCDtQ5fa7bIcT3PWp0uXJQM6x7n5/eFIPZxojnlKNbxDCQyZBMymwwuR5KO62z CXp5iQnL3uDzGKUZafO/mFflzXqxUhY= X-MC-Unique: S1kZFgiONg25G7Y9VaoA8Q-1 X-Mimecast-MFC-AGG-ID: S1kZFgiONg25G7Y9VaoA8Q_1770231829 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231828; x=1770836628; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=YXkScNv7xNrQiajhZNxV5Y+IbqsvARHUNAQ/l/4frxQ=; b=LPAKXDgjm1erUf7SnogR0JqEiNTf5J1IN/aFYdKNxktLhBzqiDxGLMo4oAybgwXPdq ZwgqxWss77OzRHWktxDmTldUdZ3dmtpfIG2s5SfG+0LedmFvL+IOHRJK5SwbLGkhsSor dNRhTk1JPhLSj0ZwPCx72i2ad015ieW3X8+q5YUpMxU+gGE912AfC9uSnhEvwEmbbYj7 9UFC8Z/+67JLfKOS5Gr9aFra509USdgEHB8H0BlmeKfMMM8YILi5CkiV3uJFyPDIwIU2 iIoe7TZ6wrymEJM66PyGNxp9kmr0oiu10wkIwA0iCI01ALHbkmaDPwJ8eWzVs3nHXUDQ QVEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231828; x=1770836628; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=YXkScNv7xNrQiajhZNxV5Y+IbqsvARHUNAQ/l/4frxQ=; b=KI6QsPGcxenKComBdG9mTrPYWFx8T6nl3m1rqmHhWIeq26ThFsLm70g4ZWhv+MJAMt sCXlEtd1RK+ww+hJ+qkp4bTQ56gw7EH5B2/xOzqVU4RFpsOeoYq5DXn6x3P2WBBCsb2t pqFI2WIvFIiKUPff1wSOxx8ERa7RM52IowhGfQ0ysFK8g/C30qlpNBcSoXvUFfUhEk21 3cBGCaFamwqU/1PXY6g7aQlbSiYkBdO6DGjuZ+/iBbHZBNgyRrBoyy3VP2fR0QIiFIxD qo6Q0qkt/WKTUcl4sti4qL0EK6wW+9by4+3F7AUYXAw8QvAp9tlgtiF8S8/7m42Rxkrq HKZw== X-Gm-Message-State: AOJu0YwrS+JFEMnbY3LHDXjbfLVxSENcSZTceFOmUVSOSnVD3AlVu225 B4nWumMt7EQ5orITBRgPU5as+UdhrKKJJnKbkDSIqlYNM7AAkTnefc5BLT/V3v7Dm98iuzGd6BS u9pt2frRvVQIcs6HGrDSXNcA5XL87rknAkYcBpJmM12z9EzeC5ztxYk8X5Bw/Bf+xs4b0szHhCb qteTQpc5FsgBeVkzH4acyCmXXA3IfdYBJr3A== X-Gm-Gg: AZuq6aJXZQwItlXs3jg2++X6btMKAabAyAJJRtsMGnu2puuKjdXYhrACgAcHTrlPjTf sSPOBnraVKt4EeBqYTqr2t6IrdfVndAS6Mnl/03pn64ZzQFghlv821rOKUCqQRufksGr3PZgttf xHUgRXtf/K31tdtKukq3fkMnN+7V0KkI1OVRszZiNt0xEcHnWidtPCJxto2mxss2C2AZJsn7UXl YauC1FxFn+mbQWAcXGV5rr3kMy9l6iT4FY0hpcmhRV/vbT/+7h3dM4yiNOo5LSMvoJRcUrqRQFT KEIZgXiXh/5ZbrQjftu2lVobA5N14YD4JuEXNnu/PvyBuppGknnTp4ZkDJHK0Jovn4ZND8QwBij oeTeQRrLq4Hw286bS0ZuHOxtQHKahfcoAIA== X-Received: by 2002:a05:6000:400b:b0:432:8504:befd with SMTP id ffacd0b85a97d-4361805509dmr5469577f8f.32.1770231828491; Wed, 04 Feb 2026 11:03:48 -0800 (PST) X-Received: by 2002:a05:6000:400b:b0:432:8504:befd with SMTP id ffacd0b85a97d-4361805509dmr5469516f8f.32.1770231827967; Wed, 04 Feb 2026 11:03:47 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:45 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Wafer Xie , Eugenio =?utf-8?B?UMOpcmV6?= , Jason Wang , Stefano Garzarella Subject: [PULL 25/51] vdpa: fix vhost-vdpa suspended state not be shared Message-ID: <707e307a3d30cd04b8fe627fa34254732a9d7caa.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770232272644154100 From: Wafer Xie When stopping a vhost-vdpa device, only the first queue pair is marked as s= uspended, while the remaining queues are not updated to the suspended state. As a result, when stopping a multi-queue vhost-vdpa device, the following error message will be printed. qemu-system-x86_64:vhost VQ 2 ring restore failed: -1: Operation not permit= ted (1) qemu-system-x86_64:vhost VQ 3 ring restore failed: -1: Operation not permit= ted (1) So move v->suspended to v->shared, and then all the vhost_vdpa devices cann= ot have different suspended states. Fixes: 0bb302a9960a ("vdpa: add vhost_vdpa_suspend") Suggested-by: Eugenio P=C3=A9rez Acked-by: Eugenio P=C3=A9rez Acked-by: Jason Wang Signed-off-by: Wafer Xie Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Acked-by: Jason Wang Message-Id: <20251119132452.3117-1-wafer@jaguarmicro.com> --- hw/virtio/vhost-vdpa.c | 6 +++--- include/hw/virtio/vhost-vdpa.h | 8 ++++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c index 7061b6e1a3..2f8f11df86 100644 --- a/hw/virtio/vhost-vdpa.c +++ b/hw/virtio/vhost-vdpa.c @@ -905,7 +905,7 @@ static int vhost_vdpa_reset_device(struct vhost_dev *de= v) =20 memory_listener_unregister(&v->shared->listener); v->shared->listener_registered =3D false; - v->suspended =3D false; + v->shared->suspended =3D false; return 0; } =20 @@ -1354,7 +1354,7 @@ static void vhost_vdpa_suspend(struct vhost_dev *dev) if (unlikely(r)) { error_report("Cannot suspend: %s(%d)", g_strerror(errno), errn= o); } else { - v->suspended =3D true; + v->shared->suspended =3D true; return; } } @@ -1481,7 +1481,7 @@ static int vhost_vdpa_get_vring_base(struct vhost_dev= *dev, return 0; } =20 - if (!v->suspended) { + if (!v->shared->suspended) { /* * Cannot trust in value returned by device, let vhost recover used * idx from guest. diff --git a/include/hw/virtio/vhost-vdpa.h b/include/hw/virtio/vhost-vdpa.h index 449bf5c840..80ff670e23 100644 --- a/include/hw/virtio/vhost-vdpa.h +++ b/include/hw/virtio/vhost-vdpa.h @@ -76,6 +76,12 @@ typedef struct vhost_vdpa_shared { =20 /* SVQ switching is in progress, or already completed? */ SVQTransitionState svq_switching; + + /* + * Device suspended successfully. + * The vhost_vdpa devices cannot have different suspended states. + */ + bool suspended; } VhostVDPAShared; =20 typedef struct vhost_vdpa { @@ -83,8 +89,6 @@ typedef struct vhost_vdpa { uint32_t address_space_id; uint64_t acked_features; bool shadow_vqs_enabled; - /* Device suspended successfully */ - bool suspended; VhostVDPAShared *shared; GPtrArray *shadow_vqs; const VhostShadowVirtqueueOps *shadow_vq_ops; --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770232031; cv=none; d=zohomail.com; s=zohoarc; b=fxewAVYV7L4LUi3/BZEm7ecrLHa0Vv6tGTSp4PHKUKoWKWxvcaD17LAUZacqSc3R49SI+PrsEpkpJoFQltOWgx+gcjzGOLsVL0aZklHi6QVu+InKegpjLbOIhw8Plbmued6tNU77RrDIGcK2Ow35x6ts0cQyYkrq+gJC+hprZBw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770232031; h=Content-Type: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=ArWa7ZxMRfjmS5u5tmE8e+KIpDRrIw2EFlofFVZVFnE=; b=IEXygE9e3g4Gpi5k8varrZKDKF1InOCL3q4PxaMKCoL+fQXfQ90xbRktpN1DHYGetpcBtgeYgMoksClrMgyxV3gEqI21NeH7iv256Q6J+HuJ/agCvRCCYP8MOwINksZq2MaIts9Uv3nmI25pEXiDIq2uNb6mLx+ftvXasZkjgH0= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770232031626806.3366643333188; Wed, 4 Feb 2026 11:07:11 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniAa-0000Ru-O5; Wed, 04 Feb 2026 14:04:08 -0500 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 1vniAP-0007h2-J3 for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:00 -0500 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 1vniAM-0007vr-Ss for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:57 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-583-fLSBq9ycPfyhk56oSO4QtA-1; Wed, 04 Feb 2026 14:03:52 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-4358f90fe8dso118430f8f.0 for ; Wed, 04 Feb 2026 11:03:52 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4361805faddsm8351974f8f.33.2026.02.04.11.03.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231833; 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: in-reply-to:in-reply-to:references:references; bh=ArWa7ZxMRfjmS5u5tmE8e+KIpDRrIw2EFlofFVZVFnE=; b=UvqW/pPoRN67U7NRKPhWaEDD7yE/T/bFEH6PXYM+qae+x/JcW3V6O/QqvNhCVb4hGkffO+ gWei+wDT0JO2VWXuk7dpPK6cjpyjf4O1dOGJyyhZXudJdghrLYeeNUb6x1kbvSLQ5+Z8Oa /N3WHxM1KY/Biuv3sHQvP+cGbPo36I8= X-MC-Unique: fLSBq9ycPfyhk56oSO4QtA-1 X-Mimecast-MFC-AGG-ID: fLSBq9ycPfyhk56oSO4QtA_1770231831 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231831; x=1770836631; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=ArWa7ZxMRfjmS5u5tmE8e+KIpDRrIw2EFlofFVZVFnE=; b=MaDtEFQI1XNoEwfdNqLNiOUsQGISeFrpCd9FOqIOWvvFv1hlzVfMSTzOVWNxGgbnbD e7KN958tp7i5+YFiOaEa8DA07Hovm97hV/y1bw/GZENGExDO2xe9G4TBzLz0FDG2//jw jsT36geI83uF2sqyO/GnOFOo2dr84tA0qqaxYySAe6omQWK2FFoPjBeZCNtq/rfMMqhH nlpPgJYGsda52TmcE15XKDQ3TM85PRiKzkgBCZ2cvpcoaZ/se8WDleR8p410kfBRFO5t OABO8ziZNv3n9knqbY0X6lolNwxcqMhNw7LVxtcYVXOD8TAVtKNNFiEhsS2du70kF0r5 xnCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231831; x=1770836631; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ArWa7ZxMRfjmS5u5tmE8e+KIpDRrIw2EFlofFVZVFnE=; b=M2o+YXxPY3qlpz5n4QSEG4/qIk/iRSa/5q8iqEbPnd0azaoK6KQcMMiPISBiMpzlNy wGxDvFh9M0ryZKD17ldU+WwZtWhIWhjUa3cOzfQ1ROaxNEOTn+ECHKPBtCcZt+vUcDl7 tgqIQIK4yTQ1LyHvyBbyIlNPyYFCkTEFknEWxr2gMWSbK81teD6JjvC7etyA0yFWZOOH xt1goE68zrmyb2SK39/CqwkYWP13QrR0y77bo3wAAjXSRqjkO0qzFIn9lruH8mf+WgZs tCmiqUUbr5L0uCk1I6i0VtG1K6wZAhMVxm94VWyiuMpwu6INFrnx7qApE+9SOuAmB6f0 sg4Q== X-Gm-Message-State: AOJu0YzRnoOZ6bKfehIKTqUIf/29hj7ELa79nCjVPEKfvJeDjZXACsiD mmlsYjHWVtEATG8mNxh7eLA5ou4oWjhtKESOg+7RM6mdOwiwo/A1nUSqrZHVgqmqgDhcr6L9BJ3 /7dLzwndz8kUPm5NjAbn4D61GR4vBcfkY7GoA6t+FDw9e5O2dOwESq0oAoRdbBTcDnSF/OIte4C VOQTx2akA48pjh0eVsrJg9Hp4G30ELWCXX1Q== X-Gm-Gg: AZuq6aKJGbTnKlEStexrrcKixjLzj3oujDuzgD5SHWX6qCQCxX5rqzjBxHoaX0zQG7u 2o0hqNmfIj9KYqkbnM3zQNUVmyFn/6f0H8VHAgQMEFR2hMCammSuJgpFn6suvjWaINL7qdN8w6W x1VTrf9cGhLguZtUXxb4MZvMK9fxBHEhYkbBNr1qyzG0vfsjLCz78LxMO2AByfmOi+Lrbn8G732 NrTvc6YopBtXO9w0hoZpv6B3/wOAWtnqFfr9Y63X/W4zcG4+u3Av1t6JTtFK/1UQJXb/oHFxP+g sq79P8VX3kTFfS0LXdyN150svv924Gd+rw4abaP8CVIjxzEomx5+42NyQwmtsCVRogiiNNRUtHb ucmvL7zjZrfODbt3BR0Z0ZtDndnmC1JjIGg== X-Received: by 2002:a05:6000:616:b0:435:92c6:d556 with SMTP id ffacd0b85a97d-436213dfc30mr529202f8f.16.1770231830830; Wed, 04 Feb 2026 11:03:50 -0800 (PST) X-Received: by 2002:a05:6000:616:b0:435:92c6:d556 with SMTP id ffacd0b85a97d-436213dfc30mr529137f8f.16.1770231830333; Wed, 04 Feb 2026 11:03:50 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:48 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Gavin Shan , Markus Armbruster , Igor Mammedov , Mauro Carvalho Chehab , Dongjiu Geng , Ani Sinha , qemu-arm@nongnu.org Subject: [PULL 26/51] acpi/ghes: Automate data block cleanup in acpi_ghes_memory_errors() Message-ID: <41c79ba3ab0dc84f9601f0d48f47e0502334fa2f.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770232032090158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Gavin Shan Use g_auto_ptr() to automate data block cleanup in the function so that it won't be a burden to us. Suggested-by: Markus Armbruster Signed-off-by: Gavin Shan Reviewed-by: Markus Armbruster Reviewed-by: Igor Mammedov Reviewed-by: Mauro Carvalho Chehab Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251201141803.2386129-2-gshan@redhat.com> --- hw/acpi/ghes.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/hw/acpi/ghes.c b/hw/acpi/ghes.c index 5445dc11bd..4e6903a8d3 100644 --- a/hw/acpi/ghes.c +++ b/hw/acpi/ghes.c @@ -566,9 +566,7 @@ int acpi_ghes_memory_errors(AcpiGhesState *ags, uint16_= t source_id, 0xED, 0x7C, 0x83, 0xB1); Error *err =3D NULL; int data_length; - GArray *block; - - block =3D g_array_new(false, true /* clear */, 1); + g_autoptr(GArray) block =3D g_array_new(false, true /* clear */, 1); =20 data_length =3D ACPI_GHES_DATA_LENGTH + ACPI_GHES_MEM_CPER_LENGTH; /* @@ -586,8 +584,6 @@ int acpi_ghes_memory_errors(AcpiGhesState *ags, uint16_= t source_id, /* Report the error */ ghes_record_cper_errors(ags, block->data, block->len, source_id, &err); =20 - g_array_free(block, true); - if (err) { error_report_err(err); return -1; --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231923; cv=none; d=zohomail.com; s=zohoarc; b=gF43Vfw/YrohGC/Qs2Hr+Wq5Md7o/wvgPNfhSodgLDV+PQeEf2KFrjQocucM1yuMGo5zCacbEanCvMYS6mINGxEhh/9bZwA27ZYPu5EK9PhQhN2qy+yDTmHhwXon/n9sIh03v3nLqz5QljWxKC8xuOTdTQFHVWi74W9rEXH21lw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231923; h=Content-Type: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=FlCsVTyOmzbmzNiE9LQNPtkryQmNzG3JOg34QbwilkU=; b=BY1x7FFNt7iiKDz7VqEdtVmgh4MmyEn8yP9ESplTD0DrS0B9WMOV0zq61mZZK7Sd7iEp+TmEVVY6zmYNbXpz0ZDmtYAn5xyb1Xg9zpTogWjV04JMHSOnDvU4KAmr1YZuji55rg3nuuGV64fwnyrs63Q6u8z/ny8sDQYEepKi3MI= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17702319236531009.7706265508748; Wed, 4 Feb 2026 11:05:23 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniAU-00085o-VZ; Wed, 04 Feb 2026 14:04:03 -0500 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 1vniAQ-0007li-Ko for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:00 -0500 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 1vniAP-0007wM-1M for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:03:58 -0500 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-102-eWa6iyAJPeG367E_sOCrKQ-1; Wed, 04 Feb 2026 14:03:55 -0500 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-435add03f12so111933f8f.3 for ; Wed, 04 Feb 2026 11:03:54 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43617e3a3a9sm8382054f8f.18.2026.02.04.11.03.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231836; 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: in-reply-to:in-reply-to:references:references; bh=FlCsVTyOmzbmzNiE9LQNPtkryQmNzG3JOg34QbwilkU=; b=RVl4rj6UABi0i59GiXOryhO7sFUWFSFyADLkT00uqrBbNYyni2/dNu4I+OEh2uEkKOhiix ZEYCuwGWYVa7zpcsJB7kXVuwTfc1dtvMenefnuY4wFwn6D99tzgPQxrYp3Z7tpVIfXMYPc zAltfLOpfeqoatxc/Ee8D7GTkJDBfrw= X-MC-Unique: eWa6iyAJPeG367E_sOCrKQ-1 X-Mimecast-MFC-AGG-ID: eWa6iyAJPeG367E_sOCrKQ_1770231834 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231833; x=1770836633; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=FlCsVTyOmzbmzNiE9LQNPtkryQmNzG3JOg34QbwilkU=; b=hhqTVC2x1aPw+NpRj/B6dWpMMRTkkK/48+Dw3/MkVzP4S9NKL7b8tm5mKG6otORTRY aNeuI2VS6qKyl6/TjjILj2arlR4gNAAHFcoLScTBhqGWRidFtSUMl2wC5T6niw9flDx/ O7Z91w0Zr+kQHjGTgdWmdmd/xcQvacU0wu6gUT1RZKhef/GHptE5SGxqyNIJjLBROLDK oG5PELL6DhnpKfKwza1OjE7HqJ671uBEKuYpVn4L4evcSFkbB6NjSDG/35pwbZpqRFyJ DeeKXpVrarzo+03ye/k4+gWC7J6/7L/hUcvkply4LobuoX9ymUvi8Q1rnPVnAbsiylJd BchQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231833; x=1770836633; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FlCsVTyOmzbmzNiE9LQNPtkryQmNzG3JOg34QbwilkU=; b=FzLPZz9cqW1SebUtOpge/a+tXDo9wHpOTQQFV/MTEMsuCRGq7MCwApikmTeaaqqoIv HrDlHEHFpqd3B+Y+rq0t5PKX1E0Oc0qhnllJlLmX8ZxOjELCu1tCCnxeiYEGhh2HG2XA Kvt0Gt9phjmApQqApAvZvNfihaQtLiwT4qNMgxT5r9UFHDbo9LWlwPuSXmkbt3xN7FoG HbFNWJMbMy7Sek3txeDQ2SgYMgGWsI0yu3pUOclLAMT9OXM9tpxb/QQcQzkokjC2cb/o 8qigLTeaqCZiFG5tedz+xqsa3OQSFn80LOoafWulhgb+gM7GX2adCNFoDKNSF8YgCTLM SKIA== X-Gm-Message-State: AOJu0YyQNsNsaLWiKpnCPCP4hCQtvMrtYJhMrEI7HWOXqPRHdIp5pcED yYorobYBzixV0BpVELlN+T1MzAb0JuUyqHSEn7uqjXbLFKKa9S0a4+EGNwSxDfy2J+L435RjPx+ CoK3HzK3HxJCFOoSy+CztLhONOn8f7flFhKWlBmgdS+GIl1DQmeSJylSi9/0j31+NZDFgKUT1mC L6CMO+vlLUEP+Ww4wTbsyUOC2abdm8rTi7yg== X-Gm-Gg: AZuq6aLiY53TVw0AZzEs45Gj+RLP54KEIwsP38ZCZsH04wikcW1aMA9jSmiPGhKShkB WZcG4zOBipTTpdv7XL3Tp0+rUwW94cV3hIjrr1QhhdmjP8NiFiv0Ze0TpqifWsStY+s35vOsNag nHyJf97veYPLcYSQ72/KuOW7zvs6vsvuuZqG27YvuieoEgcZZPsj4EUd7yckVNnhGrOHxW3xWNG uiKCTyCY2v0LzXbw9RzM1/GECal2btEed6Af0xkpU3tr+XmUSsJOmWoC05s+vdwBuUwZ+g82tV7 2WXVd0OsRtUzmqblZ924ERXCWkFwzRapM55alrlF7wPdRtIQQMdankdSCUGrO8tix2fbdQBFT2X 8ViKEvBVnwQjF+mwwnYtBU+Q6SQGPQPi0jA== X-Received: by 2002:a5d:5d01:0:b0:435:a673:bca1 with SMTP id ffacd0b85a97d-43618031b7dmr6033520f8f.27.1770231833246; Wed, 04 Feb 2026 11:03:53 -0800 (PST) X-Received: by 2002:a5d:5d01:0:b0:435:a673:bca1 with SMTP id ffacd0b85a97d-43618031b7dmr6033451f8f.27.1770231832606; Wed, 04 Feb 2026 11:03:52 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:50 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Gavin Shan , Markus Armbruster , Igor Mammedov , Mauro Carvalho Chehab , Ani Sinha Subject: [PULL 27/51] acpi/ghes: Abort in acpi_ghes_memory_errors() if necessary Message-ID: <6131883f1a836a1df556e862b46af4e60b8d6b2b.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231925155154100 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Gavin Shan The function hw/acpi/ghes-stub.c::acpi_ghes_memory_errors() shouldn't be called by any one. Take g_assert_not_reached() as a clearer indication. Suggested-by: Markus Armbruster Signed-off-by: Gavin Shan Reviewed-by: Igor Mammedov Reviewed-by: Mauro Carvalho Chehab Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251201141803.2386129-3-gshan@redhat.com> --- hw/acpi/ghes-stub.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/acpi/ghes-stub.c b/hw/acpi/ghes-stub.c index 40f660c246..b54f1b093c 100644 --- a/hw/acpi/ghes-stub.c +++ b/hw/acpi/ghes-stub.c @@ -14,7 +14,7 @@ int acpi_ghes_memory_errors(AcpiGhesState *ags, uint16_t source_id, uint64_t physical_address) { - return -1; + g_assert_not_reached(); } =20 AcpiGhesState *acpi_ghes_get_state(void) --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231985; cv=none; d=zohomail.com; s=zohoarc; b=DLh41qMq9Zkn8zaF1d00A5hgbLm98ta8iqbqIxWaNrr1fN2tzo3jfd2BRIJ+fd8kGMcF+1Hzbj0Ud40HrDXGNiZrggHXesTtzQc0BISAIsmuWgaRuKERefP1N8/HLldaIXR/EHt4sIt1bcvfPvi9g5G8dDYbNuoqZl8wPmvzNJA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231985; h=Content-Type: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=pDLl0CipBDb5NTwlLQHww8+blGdI/WR9oxHWsPKmF9s=; b=LOgEgimChJc9Yx1zQy8oV/I3RCS2PFKSEJGF0O6VBqaBQBpQcWyxeYncsjNc5Qlccj3XzJkCxXAVGIs5b3iW+AYK5UugNgLNjcxvx2R8raL65KHg1kNfs9Zf6orx4OEOcQy4kcn43PFNp+FCx7fpZy2imJBlpHkJxaDadK3JqGg= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770231985195891.9214149732893; Wed, 4 Feb 2026 11:06:25 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniAa-0000SQ-Un; Wed, 04 Feb 2026 14:04:08 -0500 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 1vniAU-00080m-78 for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:02 -0500 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 1vniAS-0007y9-Hr for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:01 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-341-a95TTrS3Mf-RjPMXHemqvw-1; Wed, 04 Feb 2026 14:03:57 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-48057c39931so1465965e9.0 for ; Wed, 04 Feb 2026 11:03:56 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4361805fec6sm7965375f8f.32.2026.02.04.11.03.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231839; 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: in-reply-to:in-reply-to:references:references; bh=pDLl0CipBDb5NTwlLQHww8+blGdI/WR9oxHWsPKmF9s=; b=FJ7KtnnlkuN5kLwmKzQHHdqIl0sMYbXBkNvyGKOghoXNWWSpXOLxS5EnhBa6F1DGHOVu0e wN81Qt8qRCr1WEAvYvOQbYbn1+xGZAQXxBpYY86twjvQLs8XOxnidnOwIEksfOLU6Dkv2m Ve5utTbJQmd3sBpGD0aop2DOOqbmHrY= X-MC-Unique: a95TTrS3Mf-RjPMXHemqvw-1 X-Mimecast-MFC-AGG-ID: a95TTrS3Mf-RjPMXHemqvw_1770231836 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231835; x=1770836635; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=pDLl0CipBDb5NTwlLQHww8+blGdI/WR9oxHWsPKmF9s=; b=eVCiqpw5rMGJ1SwnhVzvYB0UvfLYSpZryiZqbfgXJvMSewPMArjB8jQFA+1LmOn1Tz dkL82dkpORcNOjzTZANh+g59aFdKiDhx+jGx3H2WQ4L7Bn0jdcCjD+3IOQzuSpy/6Zhq RC8Xb/n9c5Vu95t9aY8Y/YYxHFggQUy8hGa4HXqI53BvkRSHO9fAlz7QKdB4aUFToO8D 1vw62bUKagkSe6cJ1yq4vHwWlMy4dk9P4cH4V6CprllDZVtA1KH16T1UXWRbb5SOOuAv dAA5V2Vx4UlSA7Hutb3d2BZyK5AmB7lQYWQ+6Ixu5z4sseUkFDpqw0MDExH6TKUpr29K 7ASA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231835; x=1770836635; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pDLl0CipBDb5NTwlLQHww8+blGdI/WR9oxHWsPKmF9s=; b=C5Q96FFs6ab/9Vi8rHQVP50MTiuduvyS4dRyozQHl33aqA/ttOeTTFamzZW1fHlqRr q8l+m8oho8eX6uQX6t2XSyJZPtFXH/ci9rwAYxQDYcpt17rli75YtUIr2+7zpD3vyUIw WsJbJWb8ajhIAaCf4aQ2HNPFZhdiGJNTVi4DY0Y2IrqxD83jxLe1FVhXnIy/IwsKaChr w3FReF6Z7+dWmlXfkuvbVfMCAmJ96Y+elwP6OqsU2ugLz8U8JPK2csjwQ5o7vCITakNj 6xJUPk/NfOLfYJeY/N0cyPWab2tQJBfuP0fX9p9Hz7fqNog4RMOC1Fe/X4VnMLVHRhjV aDNw== X-Gm-Message-State: AOJu0YyYhc2dyL/XesLT9sziI8+rm8FCcjdkmEuOfGE8OnhDqESBrEpV /2E8tT2Dk1jC80DQauNzYBeovWxPT2H8HN+HH4dAQRYNZp/L8m2BjE2Bh16Cgcvsw9Er9R7ZAFa umk6MvC+/hd0/OcrhoqPeuznekCMVbn81ntu3Dj+1JoQch0cL+j8/UZaGCjUxyOgC+/R5jKVmvq cVu+GJRnzFVlY115IehMc6Evk4WJISFRKVNQ== X-Gm-Gg: AZuq6aLnCUonQaT0OR73T4ykOsKeK6DgDjSb7nqDwbtns5lEGXm+z5xGajD15+7Ms3I FeRNR1DcLJ3abd4e7OjdvGJHibr02qQJudFy+z3Hfuu5+kL6Pdnxdi6I1Hh9YTx1hcN/QjbK3UI ueWN7jhMwVMqljfU+ygVlv1h8+1G/3AqospsqvHFEel0YgAyLsyKAS7VWdnGTIEZzTjYYkUesxc BilOoIzTplFaL3uxWEI/Tfg+v6pujVDt9ACT7XIjDK0zxVPs8YmngSaRoMeW5xagrgixRsuMuoD XveGwYQP2ojPH6Eroo99FWc6jJM7yOkkas15ZEo7X2N58OMtA2F9lzvUgeb+2f9xyXvXvsM85vS gA6xgd3e0jAXL6k+Pj/tnIELZzdgckLX7zw== X-Received: by 2002:a05:600c:6087:b0:483:a21:7744 with SMTP id 5b1f17b1804b1-4830e977f1cmr52879905e9.26.1770231835405; Wed, 04 Feb 2026 11:03:55 -0800 (PST) X-Received: by 2002:a05:600c:6087:b0:483:a21:7744 with SMTP id 5b1f17b1804b1-4830e977f1cmr52879395e9.26.1770231834923; Wed, 04 Feb 2026 11:03:54 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:52 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Gavin Shan , Igor Mammedov , Markus Armbruster , Mauro Carvalho Chehab , Paolo Bonzini , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PULL 28/51] target/arm/kvm: Exit on error from acpi_ghes_memory_errors() Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231986095154100 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Gavin Shan A core dump is no sense as there isn't programming bugs related to errors from acpi_ghes_memory_errors(). Exit instead of abort when the function returns errors, and the excessive error message is also dropped. Suggested-by: Igor Mammedov Suggested-by: Markus Armbruster Signed-off-by: Gavin Shan Reviewed-by: Igor Mammedov Reviewed-by: Mauro Carvalho Chehab Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251201141803.2386129-4-gshan@redhat.com> --- target/arm/kvm.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 0828e8b87b..b83f1d5e4f 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -2477,8 +2477,7 @@ void kvm_arch_on_sigbus_vcpu(CPUState *c, int code, v= oid *addr) paddr)) { kvm_inject_arm_sea(c); } else { - error_report("failed to record the error"); - abort(); + exit(1); } } return; --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770232129; cv=none; d=zohomail.com; s=zohoarc; b=fJHnBK7imM6xbeNMRaU2yD5dMK21vS0f5qvdIqiHXixsypUzO9yfTUk22xYOdlUVVndOnwnj4IicWsjWVPz9K9LTVidaCEYPTw4Npz+NqWE04wQCWrxANqLBetyTfpk/gyFDnbt+qVnu8YSpys/FPUkXDiqnH6RS/kNQJJlz5r8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770232129; h=Content-Type: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=k970/8IAuTxyxYQnCxpGZam99VQS84f+0lcT7yhaPYA=; b=cuFLwSwAUtHjpa26xtRr9efHIQ1i+FG4moVBhTXFf6kFmuc3bR31svOQ+4hsPamLGcJfhRlRWlGdNRZUKsb04MLpzQLWek8SzIEVvoBDYwyiZl3k4JrA4RgQnDahAzYopGSgtQ3BpukfCL754fp+cJCWRpKq/BohoTlxpvxEF88= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770232129753692.771384715041; Wed, 4 Feb 2026 11:08:49 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniAb-0000Tc-5X; Wed, 04 Feb 2026 14:04:09 -0500 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 1vniAW-0008Ic-80 for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:04 -0500 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 1vniAU-000802-F9 for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:03 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-437-qZEpGzN_PsegcaZ78mMfPA-1; Wed, 04 Feb 2026 14:04:00 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-48057c39931so1466295e9.0 for ; Wed, 04 Feb 2026 11:03:59 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43618057f9esm7058054f8f.28.2026.02.04.11.03.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231841; 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: in-reply-to:in-reply-to:references:references; bh=k970/8IAuTxyxYQnCxpGZam99VQS84f+0lcT7yhaPYA=; b=fnEdQ35h+nX88SIllTZRhDNO+IvB0uT5cGhouedfSAGvLqVudxRA2oiqglIhM3PXn246mt 4F5K70hr7IBTCzsDplzXqR/d/I3NJpTjs+4TcJX7TiDMaX+3cdF+70W37NieRVqbLirOgu ePYFXaIyz70/mie5l7i2gkie9J3AaJ0= X-MC-Unique: qZEpGzN_PsegcaZ78mMfPA-1 X-Mimecast-MFC-AGG-ID: qZEpGzN_PsegcaZ78mMfPA_1770231838 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231838; x=1770836638; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=k970/8IAuTxyxYQnCxpGZam99VQS84f+0lcT7yhaPYA=; b=Yzje8gxb9/IhHPQUGHIQXwDC2qLJVPEdHCcyhZdW+l7nXUqS0JydL4xD6tvebBFWfl O0DBLKaD86cAIJx94eZkkw8QsE1J/PHG79u7aJWh1wTmaKwcNj11hBkgQsYgImyg68l0 OW6Eya/VSw2K9tppVvxJNirgCqPdCOwK1yeItY+5hVS4bea8OpmOU3HW2/jUUR9tkcRD Zpk1gYeNpXiF+3eJMC9sHfHi4tq8c8uEthNM3Yn812kD4F4cwlAnCCoqhW6ZT3ffTrS7 1gtutqU+J/2ZWaMWUndhk+EOJPkqzPinqxp1onIGMJkMWZUsPcaEbmvqZVs/Ok7qNbE/ FglA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231838; x=1770836638; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=k970/8IAuTxyxYQnCxpGZam99VQS84f+0lcT7yhaPYA=; b=Qw9X+nYB6UzrZPCZN0oXYyVdnj50pqoqIf81NKT/jPmm/CQDukEazv7jHmpcGGVH4f nhZuMbWlc/ijyLtAx8WCKw5CqzpknHyi+qxQNU8eDgaAP2rOWEXd4jKKwhcgEggW8DhO 9aXe6TkvRZvqo47DD2sukGDS7Oa2AsVUHYe1pE+0jYe7CIBaZJ+q5vBW3uryj7SQWCFN bHKhE3wCaH8qFvI5mBXxupMzBOMdBKMBC3wvMhYkQJV3GCKiLuzI1oIPRYIxM7h/p5wi ZcfZm+z3cj2A5bPBm+CA3SDxvWk3L57zd+dIvgMns5NutNeZjG7d7c06BivTS36ClnSb Y3Gg== X-Gm-Message-State: AOJu0YyGH20VTDuXjcQUuB7NeFX889uE5zsxreZXRpDJBehDGqKvlCy7 HZJXgIjoFHevyFmDH7I7FwAcAfNlzTb7asCktTN7FKfyN15Istd5tBYkUgOf6BOTx2ZCNtWhFzF ogjowo0iz9ndLoOFmWz/0agF/TkonAbaVyV2bH7qYlt5A48lYTYs/Gp5LqYXGi/y5mBXwj0dp98 xb8i7rATJyH3Jw+eYmt1xT5I6LVQM0TxoZnw== X-Gm-Gg: AZuq6aI78XIZA9EQM9cbt1I4OUyin3uaOLLixA8GO4o0cbHJ1UjPUvSELGr0AKvnS6s GA4nYEmqJJyvT+Qw9zbFxKjGgKbZh3DuSPgy+muV7Qk5kN0ohV3OomiE7JgW6SSKo0pj5QKeiOG l+4JDsgjLu2oLk8jEclftW1Vi6utLcv54J2E5zFqL49gJdEpQ2WuHjp2HSRVdMFOcRaJLU0DsOu l4gSBrldZxj1d6EEZbOknYkn+001Fu01SJQOPhBxHnpkaxB/VqFBP5w2u/WXAOtpwmPkdl4Lhdm cdXbl7llFhqyI81vdv4jo9ybJkxH4G2M+l3+6H3UKSCBqbbghX9rK+pSDdJ8Ej6EClL8rfgqBCc fnGwqzE0joRZac9W6Rle9VCTQgOS1eK3SuA== X-Received: by 2002:a05:600c:1f16:b0:46e:4b79:551 with SMTP id 5b1f17b1804b1-4830e9897dcmr64074105e9.31.1770231837794; Wed, 04 Feb 2026 11:03:57 -0800 (PST) X-Received: by 2002:a05:600c:1f16:b0:46e:4b79:551 with SMTP id 5b1f17b1804b1-4830e9897dcmr64073585e9.31.1770231837220; Wed, 04 Feb 2026 11:03:57 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:55 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Gavin Shan , Jonathan Cameron , Markus Armbruster , Igor Mammedov , Mauro Carvalho Chehab , Ani Sinha , Dongjiu Geng , qemu-arm@nongnu.org Subject: [PULL 29/51] acpi/ghes: Bail early on error from get_ghes_source_offsets() Message-ID: <43eca99483f62e6d8610dbeee1e00ab94edb8962.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770232132426154100 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Gavin Shan In ghes_record_cper_errors(), get_ghes_source_offsets() can return a error initialized by error_setg(). Without bailing on this error, it can call into the second error_setg() due to the unexpected value returned from the read acknowledgement register. The second error_setg() can trigger assert(*errp =3D=3D NULL) in its callee error_setv(), which isn't expected. Bail early in ghes_record_cper_errors() when error is received from get_ghes_source_offsets() to avoid the unexpected behavior. Signed-off-by: Gavin Shan Reviewed-by: Jonathan Cameron Reviewed-by: Markus Armbruster Reviewed-by: Igor Mammedov Reviewed-by: Mauro Carvalho Chehab Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251201141803.2386129-5-gshan@redhat.com> --- hw/acpi/ghes.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/hw/acpi/ghes.c b/hw/acpi/ghes.c index 4e6903a8d3..d51d4bd466 100644 --- a/hw/acpi/ghes.c +++ b/hw/acpi/ghes.c @@ -444,7 +444,7 @@ static void get_hw_error_offsets(uint64_t ghes_addr, *read_ack_register_addr =3D ghes_addr + sizeof(uint64_t); } =20 -static void get_ghes_source_offsets(uint16_t source_id, +static bool get_ghes_source_offsets(uint16_t source_id, uint64_t hest_addr, uint64_t *cper_addr, uint64_t *read_ack_start_addr, @@ -475,7 +475,7 @@ static void get_ghes_source_offsets(uint16_t source_id, /* For now, we only know the size of GHESv2 table */ if (type !=3D ACPI_GHES_SOURCE_GENERIC_ERROR_V2) { error_setg(errp, "HEST: type %d not supported.", type); - return; + return false; } =20 /* Compare CPER source ID at the GHESv2 structure */ @@ -489,7 +489,7 @@ static void get_ghes_source_offsets(uint16_t source_id, } if (i =3D=3D num_sources) { error_setg(errp, "HEST: Source %d not found.", source_id); - return; + return false; } =20 /* Navigate through table address pointers */ @@ -509,6 +509,8 @@ static void get_ghes_source_offsets(uint16_t source_id, cpu_physical_memory_read(hest_read_ack_addr, read_ack_start_addr, sizeof(*read_ack_start_addr)); *read_ack_start_addr =3D le64_to_cpu(*read_ack_start_addr); + + return true; } =20 NotifierList acpi_generic_error_notifiers =3D @@ -527,9 +529,10 @@ void ghes_record_cper_errors(AcpiGhesState *ags, const= void *cper, size_t len, if (!ags->use_hest_addr) { get_hw_error_offsets(le64_to_cpu(ags->hw_error_le), &cper_addr, &read_ack_register_addr); - } else { - get_ghes_source_offsets(source_id, le64_to_cpu(ags->hest_addr_le), - &cper_addr, &read_ack_register_addr, errp); + } else if (!get_ghes_source_offsets(source_id, + le64_to_cpu(ags->hest_addr_le), + &cper_addr, &read_ack_register_addr, errp)) { + return; } =20 cpu_physical_memory_read(read_ack_register_addr, --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770232177; cv=none; d=zohomail.com; s=zohoarc; b=eaeUcmMNvdapM9yNnQrtzv2n2BdIQfgKxdX2xvpsHm5c2vyqKM/ANxewUrDNDgburqmsom8M55sQZ3fyTYde06da7VFnWeZNQ6PPUlwr/j2SThbbIDMjpjLqA9KB3FCJSUmlXhyUI/cktcNE1nCgsfcgKCMVp/jMwS2VcghWh0M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770232177; h=Content-Type: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=6HhJDWdiH+sSKLH6a+nIbjrvZv2j3XojMKDoG+stmr4=; b=heTgppOLY8Lp2vHrBChqoadKltpSCYW386LhwE3oBZ+0I8bJmkkPjEQAnU4Vmd5X878xXm90QAnT34fX7O+4LT+/z8MmqjKLEtUKG30CLFOM/3/HXleghs2qz/IzalmXzp3QRIjjPpJpPmbnYyGqPVaOpzLwYDUpmkFflRduAJU= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770232177168983.0422642660697; Wed, 4 Feb 2026 11:09:37 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniAc-0000dF-JE; Wed, 04 Feb 2026 14:04:10 -0500 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 1vniAY-0000BX-NI for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:06 -0500 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 1vniAW-00081D-Kq for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:06 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-558-IGDYuDatNPOD8ivS8bkq_w-1; Wed, 04 Feb 2026 14:04:02 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-4830e7c6131so1253595e9.2 for ; Wed, 04 Feb 2026 11:04:02 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48317d345c2sm5071665e9.6.2026.02.04.11.03.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:03:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231843; 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: in-reply-to:in-reply-to:references:references; bh=6HhJDWdiH+sSKLH6a+nIbjrvZv2j3XojMKDoG+stmr4=; b=g/sjk6wXZ078RasBJN3CWEt3bTkESMIGgUB7lg0rRAjPn8tsLZDXXLoRtOPzqTVeKHU5Fk Q1We7cp2bPAOEeGcNWrOOP6YsOAFcr2eGMxxATRT5NJuRqVpN3FZs6kXBJUjjogkgt/YP2 2JUh5wm63ghqWtR/ZrPRWx0QYOYIjy8= X-MC-Unique: IGDYuDatNPOD8ivS8bkq_w-1 X-Mimecast-MFC-AGG-ID: IGDYuDatNPOD8ivS8bkq_w_1770231842 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231841; x=1770836641; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=6HhJDWdiH+sSKLH6a+nIbjrvZv2j3XojMKDoG+stmr4=; b=ceqFDkUbm7UpvlV/V2Gh0Pf9lozBTyjIiWhz8szeAeHWH/W9jx75XuTVgAhuCDvmy6 t1Jdynx/PLt+kUFfptHnE1hn8QzdBoKarRpUzMG5sXHCohJJwNv4t3C20beCUgKTjI3x TlX+y/NcH52HkDswdar6ZaDfacYJiSGJ190ccmNmM96Fv0Ls77HC9kkNPGc5l0aVw+tl N3gR09QtFKbjZwtvohaieE730UJtZYB/6W9SPHP71VkbGKsvGqjlvC6GK/JqvmlvtRAV Moy7IathjrdajbdzoYn0DKnYkFeYaugMXZHGJEZ8z2GGws3CUIgXDO12kc1SRoCO36qy WSWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231841; x=1770836641; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6HhJDWdiH+sSKLH6a+nIbjrvZv2j3XojMKDoG+stmr4=; b=oEzaWHwnB4HhpdnWta97CB2TZFWWKDt4icRSaeQEATWcJgZYGdhcj5pbjRznOW+A74 dskFv2xnsiGSd2jkghm+ssy5xfk9WiwBgYHnE9twGb+4L2dQ+fhIAyfSoyCLx4lvItK1 d3AmHExLU8z9KouAgDSZG6tZxLQld16hX12RXOC5VsvukCLVladY2sFDlzxZ5x1cxRiA RZkJXVatWqT+JDzvlUJz59dRdg1qk86DYUUGo2eOb/xbM6A6BMlt75/jdT89Pd3hZ4uj ega7xaVmPCftnmXzxR5tElhVaZ8IqIYuIlDrA0rEX7NEQlBQ1/uPIF5kSWgOzWr1Yjv5 kOtA== X-Gm-Message-State: AOJu0Yw8u7Rwfrqxq4pmH20yph8Y+iw035F3h7sHOWJIVO7WmNkbNEkV Li4Fke6KqZ5P3a7MDTpbY/6wl4OBNbeK8fMpn4aGOtQfbdsMfyHfI7O1Qqm0+WoZ83fg69eIDGA DlictGLGrUBSDtaQf0EH/KXFERHupSj4cYEVKaPhXwIMX26CjQ9ofWbEjQdjqFV9U83QHhkmm4Y oZf7yZ4VvVNBtANgHm4pj8aUrJMvKi8mko4A== X-Gm-Gg: AZuq6aJ5Mo4o9UE5/o0iBRHtZi6pc+YaM6fc/+xGlx4N00TOGJz5kuUG/DhHrooEMYi HRCZ/obnnPdZjyIiVAm1diw8CFvwMFv8ypgRfdgQESf22f55lYVAVcMaWC+otFJAUXK4JXb+ayX q9orp4dpT+V37Sl2rh1cu5CvHQr1+0pzOKh+09GFlwl4HUureeO3LPQNo0fkdf++A1ACGBbVUM6 j/OTNzofEPCO6htRmGlIn2wSB0afL0W2vVC/tihB6umgdQDG7Ck6bKvcpfKRIyXs+f+YuRl4CwR ywO2RNAylN3XFA0RkzUIiJWa9waG1T4jdYKBBcNRkAw/MACQ9yMUB4GiseLlCgC0r34Gsq8jk1M InVlMRrtp4ua+a/FtzhAMpSabD6dhfMzkvw== X-Received: by 2002:a05:600c:4e4f:b0:477:5cc6:7e44 with SMTP id 5b1f17b1804b1-4830e9335cfmr55705385e9.11.1770231841164; Wed, 04 Feb 2026 11:04:01 -0800 (PST) X-Received: by 2002:a05:600c:4e4f:b0:477:5cc6:7e44 with SMTP id 5b1f17b1804b1-4830e9335cfmr55704845e9.11.1770231840650; Wed, 04 Feb 2026 11:04:00 -0800 (PST) Date: Wed, 4 Feb 2026 14:03:57 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Gavin Shan , Igor Mammedov , Markus Armbruster , Jonathan Cameron , Mauro Carvalho Chehab , Ani Sinha , Dongjiu Geng , Paolo Bonzini , qemu-arm@nongnu.org, kvm@vger.kernel.org Subject: [PULL 30/51] acpi/ghes: Use error_fatal in acpi_ghes_memory_errors() Message-ID: <2f6dc473b905c5c82370f74debc56d5f673d2db7.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770232179034154100 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Gavin Shan Use error_fatal in acpi_ghes_memory_errors() so that the caller needn't explicitly call exit(). The return value of acpi_ghes_memory_errors() and ghes_record_cper_errors() is changed to 'bool' indicating an error has been raised, to be compatible with what's documented in error.h. Suggested-by: Igor Mammedov Suggested-by: Markus Armbruster Signed-off-by: Gavin Shan Reviewed-by: Jonathan Cameron Reviewed-by: Markus Armbruster Reviewed-by: Igor Mammedov Reviewed-by: Mauro Carvalho Chehab Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251201141803.2386129-6-gshan@redhat.com> --- hw/acpi/ghes-stub.c | 4 ++-- hw/acpi/ghes.c | 26 ++++++++++---------------- include/hw/acpi/ghes.h | 6 +++--- target/arm/kvm.c | 9 +++------ 4 files changed, 18 insertions(+), 27 deletions(-) diff --git a/hw/acpi/ghes-stub.c b/hw/acpi/ghes-stub.c index b54f1b093c..5f9313cce9 100644 --- a/hw/acpi/ghes-stub.c +++ b/hw/acpi/ghes-stub.c @@ -11,8 +11,8 @@ #include "qemu/osdep.h" #include "hw/acpi/ghes.h" =20 -int acpi_ghes_memory_errors(AcpiGhesState *ags, uint16_t source_id, - uint64_t physical_address) +bool acpi_ghes_memory_errors(AcpiGhesState *ags, uint16_t source_id, + uint64_t physical_address, Error **errp) { g_assert_not_reached(); } diff --git a/hw/acpi/ghes.c b/hw/acpi/ghes.c index d51d4bd466..c42f1721c4 100644 --- a/hw/acpi/ghes.c +++ b/hw/acpi/ghes.c @@ -516,14 +516,14 @@ static bool get_ghes_source_offsets(uint16_t source_i= d, NotifierList acpi_generic_error_notifiers =3D NOTIFIER_LIST_INITIALIZER(acpi_generic_error_notifiers); =20 -void ghes_record_cper_errors(AcpiGhesState *ags, const void *cper, size_t = len, +bool ghes_record_cper_errors(AcpiGhesState *ags, const void *cper, size_t = len, uint16_t source_id, Error **errp) { uint64_t cper_addr =3D 0, read_ack_register_addr =3D 0, read_ack_regis= ter; =20 if (len > ACPI_GHES_MAX_RAW_DATA_LENGTH) { error_setg(errp, "GHES CPER record is too big: %zd", len); - return; + return false; } =20 if (!ags->use_hest_addr) { @@ -532,7 +532,7 @@ void ghes_record_cper_errors(AcpiGhesState *ags, const = void *cper, size_t len, } else if (!get_ghes_source_offsets(source_id, le64_to_cpu(ags->hest_addr_le), &cper_addr, &read_ack_register_addr, errp)) { - return; + return false; } =20 cpu_physical_memory_read(read_ack_register_addr, @@ -543,7 +543,7 @@ void ghes_record_cper_errors(AcpiGhesState *ags, const = void *cper, size_t len, error_setg(errp, "OSPM does not acknowledge previous error," " so can not record CPER for current error anymore"); - return; + return false; } =20 read_ack_register =3D cpu_to_le64(0); @@ -558,16 +558,17 @@ void ghes_record_cper_errors(AcpiGhesState *ags, cons= t void *cper, size_t len, cpu_physical_memory_write(cper_addr, cper, len); =20 notifier_list_notify(&acpi_generic_error_notifiers, &source_id); + + return true; } =20 -int acpi_ghes_memory_errors(AcpiGhesState *ags, uint16_t source_id, - uint64_t physical_address) +bool acpi_ghes_memory_errors(AcpiGhesState *ags, uint16_t source_id, + uint64_t physical_address, Error **errp) { /* Memory Error Section Type */ const uint8_t guid[] =3D UUID_LE(0xA5BC1114, 0x6F64, 0x4EDE, 0xB8, 0x63, 0x3E, 0x83, \ 0xED, 0x7C, 0x83, 0xB1); - Error *err =3D NULL; int data_length; g_autoptr(GArray) block =3D g_array_new(false, true /* clear */, 1); =20 @@ -584,15 +585,8 @@ int acpi_ghes_memory_errors(AcpiGhesState *ags, uint16= _t source_id, /* Build the memory section CPER for above new generic error data entr= y */ acpi_ghes_build_append_mem_cper(block, physical_address); =20 - /* Report the error */ - ghes_record_cper_errors(ags, block->data, block->len, source_id, &err); - - if (err) { - error_report_err(err); - return -1; - } - - return 0; + return ghes_record_cper_errors(ags, block->data, block->len, + source_id, errp); } =20 AcpiGhesState *acpi_ghes_get_state(void) diff --git a/include/hw/acpi/ghes.h b/include/hw/acpi/ghes.h index df2ecbf6e4..5b29aae4dd 100644 --- a/include/hw/acpi/ghes.h +++ b/include/hw/acpi/ghes.h @@ -98,9 +98,9 @@ void acpi_build_hest(AcpiGhesState *ags, GArray *table_da= ta, const char *oem_id, const char *oem_table_id); void acpi_ghes_add_fw_cfg(AcpiGhesState *vms, FWCfgState *s, GArray *hardware_errors); -int acpi_ghes_memory_errors(AcpiGhesState *ags, uint16_t source_id, - uint64_t error_physical_addr); -void ghes_record_cper_errors(AcpiGhesState *ags, const void *cper, size_t = len, +bool acpi_ghes_memory_errors(AcpiGhesState *ags, uint16_t source_id, + uint64_t error_physical_addr, Error **errp); +bool ghes_record_cper_errors(AcpiGhesState *ags, const void *cper, size_t = len, uint16_t source_id, Error **errp); =20 /** diff --git a/target/arm/kvm.c b/target/arm/kvm.c index b83f1d5e4f..3e35570f15 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -2473,12 +2473,9 @@ void kvm_arch_on_sigbus_vcpu(CPUState *c, int code, = void *addr) */ if (code =3D=3D BUS_MCEERR_AR) { kvm_cpu_synchronize_state(c); - if (!acpi_ghes_memory_errors(ags, ACPI_HEST_SRC_ID_SYNC, - paddr)) { - kvm_inject_arm_sea(c); - } else { - exit(1); - } + acpi_ghes_memory_errors(ags, ACPI_HEST_SRC_ID_SYNC, + paddr, &error_fatal); + kvm_inject_arm_sea(c); } return; } --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231923; cv=none; d=zohomail.com; s=zohoarc; b=kG2cQ13Gt/bfVgof3MFY8NQKHbTZ9NCaK2AsFsnOELN+VvDlXkFiFFcLNeMQjko/VeLPb7zaYKOmTFcz8+vMxTMebtLxwAGuFe/IXldyUXKLZbaqzbpH5PZzw1SlRS5S1ttVduYCnFCsUhz4ytFn26glff0wPub6/UzcxCD2XjA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231923; 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=IRIH6dHk97LErqYrRBUU7eUC8F1/GVFoIBs89PuE0lY=; b=hGvA9iOZ7XB9r2deHWXXIUWscvFsNZ1w4t/tqMZZ80qXBMq35EvN0QtjbACbStRIpOchTVVAirPKP8UPont6wjgZCTw2VSeSCJyPJdF/K+/c1xjB2iLYOwgCiiY9kxP+1iVnIH0Z3nDaC8NiZPpjikXKPb+eodj1+miMuhe54jg= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770231923713185.63841126507305; Wed, 4 Feb 2026 11:05:23 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniAe-0000rq-GG; Wed, 04 Feb 2026 14:04:12 -0500 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 1vniAa-0000RW-KW for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:08 -0500 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 1vniAZ-00082F-4Z for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:08 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-319-ITXHcoT5MPSqnYSRsxhY7g-1; Wed, 04 Feb 2026 14:04:04 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4806cfffca6so1011565e9.2 for ; Wed, 04 Feb 2026 11:04:04 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43617e263b9sm7936301f8f.4.2026.02.04.11.04.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:04:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231846; 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=IRIH6dHk97LErqYrRBUU7eUC8F1/GVFoIBs89PuE0lY=; b=Hma4e5T6W/k/skIY0s+SAjWz8Ou7Sw/GeuWDaMJ2lgITgZh6/hTTnAZQ47jM8mYXEUI54E x4N58hwN5/i+scYUlbomqaoiQnP+8vcafWQ5Ar8Fp9BInuUJWUUXOj1GM3UUtKxmAwOOpB hjBmk9gVMvdmFAMFKIvHucurnW0rk7I= X-MC-Unique: ITXHcoT5MPSqnYSRsxhY7g-1 X-Mimecast-MFC-AGG-ID: ITXHcoT5MPSqnYSRsxhY7g_1770231843 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231843; x=1770836643; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=IRIH6dHk97LErqYrRBUU7eUC8F1/GVFoIBs89PuE0lY=; b=g1WBTFgKZIPO91V6eAH910NmwZ9KBOEN/LYnUtNbjEJoOhgqiORpIocpWQz2UKqmZj 1PpxEEVpJqLjrCVWG5S09z/W7hOcMi5m2DNJd+1op57k09S4ZroV7/NvXn2Qmcj1WOJ/ 5yMoHwlHA1RivklSjgey2qeaThHQQBnrmv2ZVAXeh9r/ZXjyJFFy1VfnJ+hVjuxTS/F7 N0mj9KkNg3uEMxLGxX1EDO5qe16hN5c0PVi/cJJEz/VjCdFjd5l6PZfskCgsEiJLsyQa RYsHWhqDA3jDnW6Td4/jM1pn9Eh4SDJasms1dOa8dYj5SE5y7oJSSs160jdjZBLJ4PjC dYUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231843; x=1770836643; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=IRIH6dHk97LErqYrRBUU7eUC8F1/GVFoIBs89PuE0lY=; b=szvOxQKvEMmk9PEHVdlENT7AxNeJaPqKZl3cCOfvTOXAQdaF80CNsL6Vvq7Wqq6X/I b6M4c+5jjO/Faykr6KYpLE02C1iELyw+tuJ+vlw+ex/nP9qKN0s2VmtQFDLFV3q7T6po T13AUxgQNU9FZo5ehwcH7YQqhcsR8Nto7L0X2h7WRlx+KeuDVVIxlwQUszc4qSLyTjPP Tp1GqrVY62jGY0DCGkO/Qnv8fghnLU+W4wx7TUsfeU3T3XmwORyClR8x/BTsnkuaW0EG hbHo8haYIJ27+uT22Sv4hsTAw8tK1GDN5fwuhIlvZXoGdXwoeetFO68UKmZS5cBkICW3 k8XQ== X-Gm-Message-State: AOJu0YwokM39iASdCfZKPzGWbdaPKJUS2G65Lp7IOuWi5dseyIPqVJrL 2QUWPGWwOvo+mtdJk9KKm6eKkfwf7jRkI8TRrIdZUDRVfJ/arIHtXfZfM7f4HDyZxh4WwvzITym VQ603WIvsdtfJokSSoXe8RDsepxdKTGkMYZARdZ2TskrOH8x8tAt1//TAc/pgZFWC/wfO+EGVTK o7II9ow8cgLQ3yNL6Tvr8B4p6+yHn0EBGKBA== X-Gm-Gg: AZuq6aK04sldOEKG+DxaSzgM+pTr2JWpZNLcXDxrvMyEASugA7wPPr8e2+LEEHxU65F uTx0G1jxIIo7Pw38mTF1eTRYEvOF6q7+xJft/mCngLVgfs6KULkyTdaRGJshLrNKBdFhlJj5WYz 3u4cxXsNq2mAgxs0rvTbLnH3ykm2Ef0FOQptyh1zKj10sCzd5f/b3I8XDHH9mZ7nm+eC1cYx61Q DbB1hwVZUyqjCqKN9soJwT1GRMdi5rWWCswmT4GgJXwXDhBVZG7jveV0Rd3nHa9O5Tx5tIxyeLb VvK0pgatOvBeQBluwfQBc+/RPOqzcAVi+ZaGFaqbDyhT9Ktn21+29nbIjHenAViL6v1f0aWTd/v jjrUDbTPYEEa8OxRB/sxzhrq7dDL/zbwJ5A== X-Received: by 2002:a05:600c:19cd:b0:477:93f7:bbc5 with SMTP id 5b1f17b1804b1-4830e9402f8mr57122485e9.10.1770231843192; Wed, 04 Feb 2026 11:04:03 -0800 (PST) X-Received: by 2002:a05:600c:19cd:b0:477:93f7:bbc5 with SMTP id 5b1f17b1804b1-4830e9402f8mr57121855e9.10.1770231842623; Wed, 04 Feb 2026 11:04:02 -0800 (PST) Date: Wed, 4 Feb 2026 14:04:00 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Eugenio =?utf-8?B?UMOpcmV6?= , Jason Wang , Stefano Garzarella Subject: [PULL 31/51] vhost: accept indirect descriptors in shadow virtqueue Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231925498158500 From: Eugenio P=C3=A9rez The device is not able to generate indirect descriptors by itself, only the driver can do it. And SVQ is already able to handle them by reusing VirtQueue struct. Shadow VirtQueue just transform the indirect descriptors to chained buffers. This way we don't need to map a new buffer for the indirect table and handle its exhaustion etc. As they are only used in control plane and HW devices don't like indirect, we should not see significant downsides with these. Signed-off-by: Eugenio P=C3=A9rez -- Tested functionally by forwarding the CVQ descriptors. Acked-by: Jason Wang Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251201125149.2151026-1-eperezma@redhat.com> --- hw/virtio/vhost-shadow-virtqueue.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/virtio/vhost-shadow-virtqueue.c b/hw/virtio/vhost-shadow-vi= rtqueue.c index 2481d49345..6242aeb69c 100644 --- a/hw/virtio/vhost-shadow-virtqueue.c +++ b/hw/virtio/vhost-shadow-virtqueue.c @@ -34,6 +34,7 @@ bool vhost_svq_valid_features(uint64_t features, Error **= errp) switch (b) { case VIRTIO_F_ANY_LAYOUT: case VIRTIO_RING_F_EVENT_IDX: + case VIRTIO_RING_F_INDIRECT_DESC: continue; =20 case VIRTIO_F_ACCESS_PLATFORM: --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231872; cv=none; d=zohomail.com; s=zohoarc; b=Elhpm3RiFO6+3WdNudmufSfPkIvB8olww85xn1TR1h1iWH4mvusm1BgjsYqst2sLCGekTjn5TonAIaz9vN+TrdlPLXE4D+gkwuA3gcS5THWSgGySIuswXvtnzmxJdOsGY+mouhNGc8cJ8G5Rw9n9GMhe17pgHTlNtkyi+3/HhYI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231872; 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=j3U+rCZB23JOTCshf+slsXWzZHrPIED/RSpRMRmSPAA=; b=TInHN9IepcQ9Z7otFabKfgn7Jgh6RwyPzLho1PYliOnN5VnxWepdYqfTQn/Weg6niz5xI6R8CJVf/7tFNHAFK9zc0nk5KhfiT20T9nkG8jXwFjc+Np0aZzQCVBTWOAIQhW/rfdiP2cGHwTQWujhpqziLzUgDcgOv0H8LWoeAnCw= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770231872246940.5236722972242; Wed, 4 Feb 2026 11:04:32 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniAg-0001N4-WD; Wed, 04 Feb 2026 14:04:15 -0500 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 1vniAe-0000wT-PI for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:12 -0500 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 1vniAd-00083T-25 for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:12 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-530-RkFFxHJEMMuGUpIaWUEnPA-1; Wed, 04 Feb 2026 14:04:07 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-48079ae1001so986265e9.0 for ; Wed, 04 Feb 2026 11:04:06 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48317d8341csm3511625e9.13.2026.02.04.11.04.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:04:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231850; 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=j3U+rCZB23JOTCshf+slsXWzZHrPIED/RSpRMRmSPAA=; b=H7P4r2obgpL2MFvpedRhDoA7oZhSMKT62u4yrteWBPb88XtMlLyQ79gdKi+js3pfLBYRu0 AcPj8pitpf2ZAKwjKNzO7ObXhiPGSGETXKy2MwtpLKncoVf9Z6GrpRwSAjp8q0Tqj948mx fOG8lf0hr1XySOui3Rf0SYqDHpYg+oE= X-MC-Unique: RkFFxHJEMMuGUpIaWUEnPA-1 X-Mimecast-MFC-AGG-ID: RkFFxHJEMMuGUpIaWUEnPA_1770231846 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231845; x=1770836645; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=j3U+rCZB23JOTCshf+slsXWzZHrPIED/RSpRMRmSPAA=; b=Pxepu8P6BQgwP15dWA41BcKu4r77ZWDwLWbz7ocfrZfVwUDSsrS7ik8CgTREPM5aOE 3IX9uqL8s2FF7LDKOhl1lZYgxUa/l0/92lwzkoSycWo1IiqgaO5CRGUVrEFag/gj2YXr pu3/WYsp2KEk6bf8c+Y2uV8hmgtIZ/P8uE1lF9Cq5NJoyTEId/h8tTROigJ1Mo0uGvrf RGYmrcX5P3bbTV6Xvz2NaSzoZnkDw9f4IETwca6RZItdg27B+lPXk//X2RdmOgkYMLNd EkdVr3Lnaq7s+L7SQLm8NjqTQMpAowGm75LMbIHH22X9BsIzpPRhf+2p7xqWBK9roaK8 wHjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231845; x=1770836645; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=j3U+rCZB23JOTCshf+slsXWzZHrPIED/RSpRMRmSPAA=; b=VN/DaOp25eNDBAVzRIMf87aEHc85sMfK5z5YpycbAxg+y86ZzbY8r+pZV/l0ZK53N5 28Pszry4+Av/1JVkyzQgpBWgSApkTHPC7YBAJSQT71eBcdVrUHeRY6NX9ldre6oSNs5p 1roF1OvNf3WgJaE/Zp4Sz2CCOsaZiixtEgJCYNvWZUUqEgYcIYHw9Dcmh7zctHLPl+e5 rVmCWcxjX1pk9BMpF8cNZnT8yzcecDfy1Ec8ngBJY1gqxpqwrNTD3t8YKWDLfcrPrVyw xeJa9sJIpx2GBlPvGjIoTbOvBMmgP8zy6gsCe8uEsz//pNGnZnvriLAGX8NMTUDLZniO Kj7g== X-Gm-Message-State: AOJu0Yw/xpyb3sU9ZpHDG2claXSrvatrc2VBGlH9YpKFllbRm3Gt1hKu JoNB1iSIRor1rdukHiRvBA4lc5SHKgZ+CCUnkEILnRC9QPavG2tPcQTg4d8TFjWQ+NV8VhNLTNo CFGVozg4vnfhNBr5CVNGr9mVTf0UxSQv32Z6Tku7gbNF39TkkLyXG+gXzLt0RqZBGT3G2k0I/LF ogtoWt7QybNbyQbhwgzshV1nz2exHs/xAxjg== X-Gm-Gg: AZuq6aK/kwVhUporRvUktq27ozt/hYXtQchHHuxlJQT3WJ0E/p6kdJ4+107if2SzVTm wu0gFC2wuFx8AYmz0LwqRU170QqEpMmTlIV1i7LjCWG+lYK9y31oJk1b58DCzPa1JX5HJclfEuo DFME8fL/Wyp5RaWaatTLCOpj91+Hmf5x0Af3b9plcaJG+EW9Yg463n5nIary5i/N0icjoaT/b+2 1wY1BZ5sFL1RRbBXPJmWAViQiH+dgxd0NuovZwgFUF2sbLmwHC+S3dlrsYlMDLf4h6yaj9i9+wP Vyuv+N1GIcuDS8WH0kf8Ie1HBH3yQonUhiR8dgNap5IzPodoPeKeUQjA00Mg1mkKocjgARgUvUJ HUJZU/9DAVHFAbCQOWuPK7QWYoRurPT3xrQ== X-Received: by 2002:a05:600c:a03:b0:47d:885d:d2ff with SMTP id 5b1f17b1804b1-4830e991bf6mr50528645e9.29.1770231845573; Wed, 04 Feb 2026 11:04:05 -0800 (PST) X-Received: by 2002:a05:600c:a03:b0:47d:885d:d2ff with SMTP id 5b1f17b1804b1-4830e991bf6mr50527955e9.29.1770231844891; Wed, 04 Feb 2026 11:04:04 -0800 (PST) Date: Wed, 4 Feb 2026 14:04:02 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Dorinda Bassey , Stefano Garzarella , Albert Esteve , =?utf-8?Q?Marc-Andr=C3=A9?= Lureau , Jim MacArthur Subject: [PULL 32/51] virtio-dmabuf: Ensure UUID persistence for hash table insertion Message-ID: <730274b225e4a4b9346e2cd5a8d38858d65e2bb5.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231874367154100 From: Dorinda Bassey In `virtio_add_resource` function, the UUID used as a key for `g_hash_table_insert` was temporary, which could lead to invalid lookups when accessed later. This patch ensures that the UUID remains valid by duplicating it into a newly allocated memory space. The value is then inserted into the hash table with this persistent UUID key to ensure that the key stored in the hash table remains valid as long as the hash table entry exists. Fixes: faefdba847 ("hw/display: introduce virtio-dmabuf") Signed-off-by: Dorinda Bassey Reviewed-by: Stefano Garzarella Reviewed-by: Albert Esteve Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Jim MacArthur Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251204162129.262745-1-dbassey@redhat.com> --- hw/display/virtio-dmabuf.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hw/display/virtio-dmabuf.c b/hw/display/virtio-dmabuf.c index 3dba4577ca..5e0395be77 100644 --- a/hw/display/virtio-dmabuf.c +++ b/hw/display/virtio-dmabuf.c @@ -35,11 +35,13 @@ static bool virtio_add_resource(QemuUUID *uuid, VirtioS= haredObject *value) if (resource_uuids =3D=3D NULL) { resource_uuids =3D g_hash_table_new_full(qemu_uuid_hash, uuid_equal_func, - NULL, + g_free, g_free); } if (g_hash_table_lookup(resource_uuids, uuid) =3D=3D NULL) { - g_hash_table_insert(resource_uuids, uuid, value); + g_hash_table_insert(resource_uuids, + g_memdup2(uuid, sizeof(*uuid)), + value); } else { result =3D false; } --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231982; cv=none; d=zohomail.com; s=zohoarc; b=ZFtRLEary2373aj7pSY3uRYBLc5lx9COcHdxC5eRM7rcMjHxYB3JLiMHCFVfU+xBWA+ufjSdDlk6T5pPFAPQ7Vj168qh5q2fIF386aQIQke3sA7sHAuhuy9TNwqJ0HWUMqWNvEtIEHEd+H4arXSUJkAHxJqtelsodVC/TMvdtmA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231982; h=Content-Type: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=MiaTbqhOE9vPSks7gTjD35BsK/E0RnS5hv86ySxDrko=; b=cM2RXRT/uoJq6sEor63701PfS4FfsX7zSjWhQA8BRYiyAYAqlShnMfeHsPIBqOwG/wpm90IxAmgd65l6AAoyETewsk/MxWbXTx6vVVaLRHZieXvWng1ne4Qz2AgNLiU1Ln1SGwkWSDiEzyq5HgeHGKMfw5oYYsRkFiin7Bz79b4= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177023198266570.26380786625566; Wed, 4 Feb 2026 11:06:22 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniAi-0001WG-Cd; Wed, 04 Feb 2026 14:04:16 -0500 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 1vniAg-0001C5-1I for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:14 -0500 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 1vniAd-00083X-8x for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:13 -0500 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-221-gwvebeLeMPW4vTBGF3RtXA-1; Wed, 04 Feb 2026 14:04:09 -0500 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-4325b81081aso149821f8f.3 for ; Wed, 04 Feb 2026 11:04:09 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4361805faf7sm8232731f8f.30.2026.02.04.11.04.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:04:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231850; 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: in-reply-to:in-reply-to:references:references; bh=MiaTbqhOE9vPSks7gTjD35BsK/E0RnS5hv86ySxDrko=; b=H3DYliCMEonbhWn64QQ2Lx4W1oE/0xPUu0vRXHPhaLHnHSw73JyanCvMuZsN2k1xjuMEyC 1Is79y3h02EwWndY/KP7q20qVyR6IQr/CWrKyAQKBCGaE2yzcgxigFty3xHh9tsDyJI34a Kl59vEegp5/MLBbttxoUW+3ClhIYoUs= X-MC-Unique: gwvebeLeMPW4vTBGF3RtXA-1 X-Mimecast-MFC-AGG-ID: gwvebeLeMPW4vTBGF3RtXA_1770231848 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231848; x=1770836648; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=MiaTbqhOE9vPSks7gTjD35BsK/E0RnS5hv86ySxDrko=; b=L3GED1Asaou1AlnqIrwg90KYFaRCpjF4jIH1bptMAsm76W3FXWw1QEmHZKsm7syLYE a6dvUD/EDMXPt7KPTydN3OAFPEzbXgNFsE7DFaQXCPKuC4ciW3vb+XL5C5k6yjiNZQMR 9VGnJ7Q/pngzYNvlmX2hsQsb06nTXCdimsLy69TSxPnDnKnKNz8i3W85JLwa9EhhwY28 1YuTLucCXrtCa3OaaKhARSXPxhInNNrru2GXqIhVarZy3UPkUA2v0E8tUAfc7kBRq84I mq37H2PCaYDRyBPAUEKQ864oHL6pZf6ivOBd2QljoB5ggbTId1MXB0g3D3ZnFJDlHz+0 5P7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231848; x=1770836648; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MiaTbqhOE9vPSks7gTjD35BsK/E0RnS5hv86ySxDrko=; b=ZPc0f1GuYzGQisJ5sKteZRL7HOPvBtXIxqlyo9dilVU0SlxASPz8OhhAyoDF18y/ea 7/npigJTENGIsdy1g1ikZ19SwyUrUtM0e48ip3tUoyMlkf1/KQkUKByQK5mIm5tjfdUi 2Wn3YAdjXDOvDUf+4+HessU2ZGcGfgdNwBnqoaUNSfTqb0LtvhTgysXIDqESBN15sq9j 67l0uFFSwAIbchJCkpMgCfQYJxnT7KJSLmaIdZU7hpn7WQ5ArkmpOSeGuiZvdG3ocOl3 ENRXhVuOJPY0E2alzba1/MEC3AMFlO9agBE0I+twihgN8p4fF0oketeCbaaDghV2GJex dKsA== X-Gm-Message-State: AOJu0YxCbAw/1qHUu0yBZ8sv9hgcfuzkpP+1GmuNb5XXJb4vylvTWxZo TlNaR2uv6spHE5svf6UwT3aRPtSmzwsGO71GbeghSULO8su0qom7fDtIeGl+10eQwo9GTaxNxKW qatrQ48YhNZLSGMcUw5UVXc4NUaNFu6hoo7HfGeJaHGoIVwkKqTIqkd4yLQKrPQKGhRIs0Wm2kC RFrK4IWCkSKlAD0fS0x93RNyfg+Liec2Utjg== X-Gm-Gg: AZuq6aJ4YqVchHkkehuGEpi1pqeexE64t980cWAMSjf1MIRbhbrZtCkxIee794eLBpU AFR93pW9hFqkRHypxboyOmARfM3jO6VfxhQ2JpkEMPkP/ZGsT/XDin7MYN8HBRiwVXcO7yJvdWH oLRcDmbylKW25NEtccNno5SEgSAJDEUK9Z0T1iTD0TbRPiIggmggrKa8Kqkyn/RT6uyIKNdQuYp rLr2FXNK8yuyql+kMsydxVl9JK4eBuIj6rqvMwi/KcwV8fTJKBX98iYG7QU8YEg/2Idg5ORnABF gO0sG6paLLezNITSyYTYNB6JtHKtjgKSe+ueDyq2QZYjCZQSInbyNljOrDghbT64ukggT/MOH71 JecF5Q/N4z6H6ZI8IGU0gZyFJHYwiso053Q== X-Received: by 2002:a05:6000:2311:b0:435:9bf5:b336 with SMTP id ffacd0b85a97d-43617e3c6f3mr6205298f8f.19.1770231847783; Wed, 04 Feb 2026 11:04:07 -0800 (PST) X-Received: by 2002:a05:6000:2311:b0:435:9bf5:b336 with SMTP id ffacd0b85a97d-43617e3c6f3mr6205235f8f.19.1770231847229; Wed, 04 Feb 2026 11:04:07 -0800 (PST) Date: Wed, 4 Feb 2026 14:04:05 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Kevin Wolf , qemu-stable@nongnu.org, Stefan Hajnoczi Subject: [PULL 33/51] virtio: Fix crash when sriov-pf is set for non-PCI-Express device Message-ID: <0f5b6103768b1e09ada8c06f105f5e167715dbf1.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231983870158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Kevin Wolf Setting the sriov-pf property on devices that aren't PCI Express causes an assertion failure: $ qemu-system-x86_64 \ -blockdev null-co,node-name=3Dnull \ -blockdev null-co,node-name=3Dnull2 \ -device virtio-blk,drive=3Dnull,id=3Dpf \ -device virtio-blk,sriov-pf=3Dpf,drive=3Dnull2 qemu-system-x86_64: ../hw/pci/pcie.c:1062: void pcie_add_capability(PCI= Device *, uint16_t, uint8_t, uint16_t, uint16_t): Assertion `offset >=3D PC= I_CONFIG_SPACE_SIZE' failed. This is because proxy->last_pcie_cap_offset is only initialised to a non-zero value in virtio_pci_realize() if it's a PCI Express device, and then virtio_pci_device_plugged() still tries to use it. To fix this, just skip the SR-IOV code for !pci_is_express(). Then the next thing pci_qdev_realize() does is call pcie_sriov_register_device(), which returns the appropriate error. Cc: qemu-stable@nongnu.org Fixes: d0c280d3fac6 ('pcie_sriov: Make a PCI device with user-created VF AR= I-capable') Signed-off-by: Kevin Wolf Reviewed-by: Stefan Hajnoczi Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251204172657.174391-1-kwolf@redhat.com> --- hw/virtio/virtio-pci.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index b273eb2691..1e8f90df34 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -2183,15 +2183,17 @@ static void virtio_pci_device_plugged(DeviceState *= d, Error **errp) PCI_BASE_ADDRESS_SPACE_IO, &proxy->bar); } =20 - if (pci_is_vf(&proxy->pci_dev)) { - pcie_ari_init(&proxy->pci_dev, proxy->last_pcie_cap_offset); - proxy->last_pcie_cap_offset +=3D PCI_ARI_SIZEOF; - } else { - res =3D pcie_sriov_pf_init_from_user_created_vfs( - &proxy->pci_dev, proxy->last_pcie_cap_offset, errp); - if (res > 0) { - proxy->last_pcie_cap_offset +=3D res; - virtio_add_feature(&vdev->host_features, VIRTIO_F_SR_IOV); + if (pci_is_express(&proxy->pci_dev)) { + if (pci_is_vf(&proxy->pci_dev)) { + pcie_ari_init(&proxy->pci_dev, proxy->last_pcie_cap_offset); + proxy->last_pcie_cap_offset +=3D PCI_ARI_SIZEOF; + } else { + res =3D pcie_sriov_pf_init_from_user_created_vfs( + &proxy->pci_dev, proxy->last_pcie_cap_offset, errp); + if (res > 0) { + proxy->last_pcie_cap_offset +=3D res; + virtio_add_feature(&vdev->host_features, VIRTIO_F_SR_IOV); + } } } } --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770232063; cv=none; d=zohomail.com; s=zohoarc; b=Uf7fDZn3Qvd4FadHmqEiXG5yc7iw+IdhB7cPEkjKW1HqBMQtu4o83JMrWtKggasWRrUHVGwN0jJMHLgF79rxUpV7T5olCEn5Q2EHycyQv5jC6hF5OjoYtvV990F9nxRFeYAQNI8UGIF5TQd/zAEn3fzt51B+8KNJ3xd8aJbQRNI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770232063; h=Content-Type: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=7+1WFKTjVp47HncRnSj6FI8Ibq6JozGOfoaaqKU3fvk=; b=edEm9rdOs3pQDeU3SGrmrGD/hFkR3qH3S77TFqR6VeDGWNhm7+8evCbuPmZlrEK1niyUylQw+jHrSpbW2G1i1dTXtwTZQ0htusgjtOokbMpvsOyJaZ+nV6GRgqGScHVn582KtIvFSQO00KUIBNVLWIccIL7Cp3KLoBYjDsLXZEY= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770232063407108.16417634612822; Wed, 4 Feb 2026 11:07:43 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniAi-0001XZ-Ky; Wed, 04 Feb 2026 14:04:16 -0500 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 1vniAg-0001NM-WC for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:15 -0500 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 1vniAf-00084M-As for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:14 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-676-qVHctL9YPIGtEQ5wgsW0eg-1; Wed, 04 Feb 2026 14:04:11 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-4806cfffca6so1014095e9.2 for ; Wed, 04 Feb 2026 11:04:11 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4830fc0a3bbsm50103375e9.1.2026.02.04.11.04.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:04:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231852; 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: in-reply-to:in-reply-to:references:references; bh=7+1WFKTjVp47HncRnSj6FI8Ibq6JozGOfoaaqKU3fvk=; b=MKb/smesD+bSiaR0dN9r2zAU0cb2iSlsdIxz34P//L+1cVM00Jn8c6S36GuPrHSQSrETPW +0IeFvB8huFxh7phHdYrZG2dkwcJLgwKkbcQcNNVZwUD5HLIsOELAa3Ja38xMhizIQhsTb oexlQLyHXAw/hvXRrVm0dvGTOnaiiEg= X-MC-Unique: qVHctL9YPIGtEQ5wgsW0eg-1 X-Mimecast-MFC-AGG-ID: qVHctL9YPIGtEQ5wgsW0eg_1770231850 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231850; x=1770836650; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=7+1WFKTjVp47HncRnSj6FI8Ibq6JozGOfoaaqKU3fvk=; b=HR6VGbG0DCbXXd9zc3rIqabt/LViUDQzk+Txl2gy5FU3KWcvlP3/+kYrPcLKzSLWvN kE4b2RVOF1KVV+numo5BoWY3FGtx4R7CQ5wW9ri0PRqg0maVtmPF8Q8Qzk43VGb2dWa/ 2Ko7P8qJjcs3HtKBUFIEHm1/TGRd6jBKhukGwGoFxudz+udimpp2GRkqSVUmvA79gs1M +wWFRwOBjCcjeiZvSGATduXku2+BcHKIanuZbejO6mt0vKQVYAckb6qM9KwmACAIUIAS zhJH8KHFgfXDuzSD3Eo+mK5dLFBVJKzysVr0LiIh6OFVuJL/vun/0xcTg9Ln4MrqWQUx M0Ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231850; x=1770836650; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7+1WFKTjVp47HncRnSj6FI8Ibq6JozGOfoaaqKU3fvk=; b=NuJmxj7JdQXJgPQC9qbNh7mt6sLOgIAQuWk+76lrxOxLu2WxAS5rN50FNNILZlZEpT LTQs+dSAzX3HL1IjQrOmwPrGsJBWBiQqu/AVfxD0HrMjqfKveHwVLuJj4NtRvpIoItSd 134q3Z5wJcEdpnZkR+7TNwEGUY9BU8cD98rkOCCOKOqRbPmonHVcBbMKDNK0kNma4iUM 06UsY6yPdJl20j8Yb96RLFh622V0ylc4oJgJXAHwH0ZJCl5oLtN6a0kyA7l/7W1GBqsY dLxvtwiMYMZaSW7yRLjKgAuVJmCfGDJ0qBA3MkXfbNR/HJeIWX0NOKgwd2tHp67pC5P5 n7ow== X-Gm-Message-State: AOJu0YzG4JZB7WPdkDdE0tfI7a7fYH3W5O2nwdbZ8Ry7DilzchEccorZ f3iwpxkvaKApMO+mfJ5cw0gAD2QetOMvWJcXKN7p/5KmSFbLBGIMgvLx67lqWovmUiF5Dcc13PM 4WQn23bVnC+UPxh2nCxNM9rQunZF9WBwSwddI1K05C1LuQzCHIZLXHCPGKKaXVFw/BC+E8kkSuh 8LbgUaa7wSqAXArsbk6XXeE/qJtsW7Pi/wmg== X-Gm-Gg: AZuq6aKLQRVBctP1VD/YzVvmwf6ZeRb5Rmc8yJ+9cEMAOFvWSOjFFPh0deHSDCVl33j C5CVYVEyyyp15+gt+exu0Puclnkaj7RqtmqfMqmLYQ869WQr3NdCKEYTG20XxJbeBY9zKcgRBwx b+Z+dBWQ6UvAJjsMxDazoJTsIFwJzLcpppWAKcWFFBCTg7YBQkha6DD2/HFJuYAludKeBVDFgVL NaSyRWy/8rltrMPcSgoP+4PEHwObDMKFSeiiSGxBQUMGl53IzLyfn300x3BvehC/p1Fwoq3A2fy zpq/hT5RfzjJry12CyWclKDP0q8r/MtRmfGR4PFBl8l1PoZDRsvX4HEFEErhFDlohNWhNKIvt/L 2Bldm1tMWBggfZEHInWDdwsw9xoB/of964A== X-Received: by 2002:a05:600c:8b38:b0:47e:d943:ec08 with SMTP id 5b1f17b1804b1-4830e98aa59mr47502015e9.28.1770231849912; Wed, 04 Feb 2026 11:04:09 -0800 (PST) X-Received: by 2002:a05:600c:8b38:b0:47e:d943:ec08 with SMTP id 5b1f17b1804b1-4830e98aa59mr47501615e9.28.1770231849384; Wed, 04 Feb 2026 11:04:09 -0800 (PST) Date: Wed, 4 Feb 2026 14:04:07 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Kevin Wolf , qemu-stable@nongnu.org, Marcel Apfelbaum Subject: [PULL 34/51] pcie_sriov: Fix PCI_SRIOV_* accesses in pcie_sriov_pf_exit() Message-ID: <0321a3a48cf54ee091726cd61fcb774693431a47.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770232064271158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Kevin Wolf PCI_SRIOV_* are offsets into the SR-IOV capability, not into the PCI config space. pcie_sriov_pf_exit() erroneously takes them as the latter, which makes it read PCI_HEADER_TYPE and PCI_BIST when it tries to read PCI_SRIOV_TOTAL_VF. In many cases we're lucky enough that the PCI config space will be 0 there, so we just skip the whole for loop, but this isn't guaranteed. For example, setting the multifunction bit on the PF and then doing a 'device_del' on it will get a larger number and cause a segfault. Fix this and access the real PCI_SRIOV_* fields in the capability. Cc: qemu-stable@nongnu.org Fixes: 19e55471d4e8 ('pcie_sriov: Allow user to create SR-IOV device') Signed-off-by: Kevin Wolf Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251205145718.55136-1-kwolf@redhat.com> --- hw/pci/pcie_sriov.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/hw/pci/pcie_sriov.c b/hw/pci/pcie_sriov.c index 34e0875d21..c41ac95bee 100644 --- a/hw/pci/pcie_sriov.c +++ b/hw/pci/pcie_sriov.c @@ -195,14 +195,17 @@ bool pcie_sriov_pf_init(PCIDevice *dev, uint16_t offs= et, =20 void pcie_sriov_pf_exit(PCIDevice *dev) { + uint8_t *cfg; + if (dev->exp.sriov_cap =3D=3D 0) { return; } + cfg =3D dev->config + dev->exp.sriov_cap; =20 if (dev->exp.sriov_pf.vf_user_created) { uint16_t ven_id =3D pci_get_word(dev->config + PCI_VENDOR_ID); - uint16_t total_vfs =3D pci_get_word(dev->config + PCI_SRIOV_TOTAL_= VF); - uint16_t vf_dev_id =3D pci_get_word(dev->config + PCI_SRIOV_VF_DID= ); + uint16_t total_vfs =3D pci_get_word(cfg + PCI_SRIOV_TOTAL_VF); + uint16_t vf_dev_id =3D pci_get_word(cfg + PCI_SRIOV_VF_DID); =20 unregister_vfs(dev); =20 @@ -213,8 +216,6 @@ void pcie_sriov_pf_exit(PCIDevice *dev) pci_config_set_device_id(dev->exp.sriov_pf.vf[i]->config, vf_d= ev_id); } } else { - uint8_t *cfg =3D dev->config + dev->exp.sriov_cap; - unparent_vfs(dev, pci_get_word(cfg + PCI_SRIOV_TOTAL_VF)); } } --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770232007; cv=none; d=zohomail.com; s=zohoarc; b=ivKvsoKGfV5SYXIX0p3Ri5lrIYber+P6ErYE7fVafmazPvo5XfGKdRYePgsC69GoCUHPos1QQ0b1XHXzU+0Fe+jL0qiqGnUcoKXBsR4CQRCoWk23tfRvJv1kRH1kqK1a0oD6IuCTXIbJcN3JInVQcJzO5g9MFEGQV1niSDGw1kE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770232007; h=Content-Type: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=F/mr0SaJ3nQqLbGDXUvO9FoPgG42CFKL4dU21fPLl/U=; b=bFSL6V3/FbVpPUgCK0CADATlilnSX2qR+HPlUqTftHwCFAuuxhakvZ93KpBsFs1Q5yfgsMIUlaTS629xQjDmzZisB4YEE1LW98tgJxkNWUEF7XRPx48d+1b/DP+ZT+wa/l1VOWv307Mr3WQx0Y3w16e3kxgpbx28bgwsE0IbK4c= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770232007229541.9723333580098; Wed, 4 Feb 2026 11:06:47 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniAp-0001yd-3L; Wed, 04 Feb 2026 14:04:24 -0500 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 1vniAm-0001tr-5B for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:20 -0500 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 1vniAj-00087N-P9 for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:19 -0500 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-146-EQYcBpiVOoewHw8AV721pQ-1; Wed, 04 Feb 2026 14:04:14 -0500 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-43284f60a8aso189229f8f.3 for ; Wed, 04 Feb 2026 11:04:13 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48317d4d030sm6269655e9.13.2026.02.04.11.04.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:04:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231857; 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: in-reply-to:in-reply-to:references:references; bh=F/mr0SaJ3nQqLbGDXUvO9FoPgG42CFKL4dU21fPLl/U=; b=XtoW0cpO9E3n7cXI6M4kGQ5G+/aTNaqzBTT+5XjfV8MDS8EWHbgtiPLpG5o6d27jVtpOgp oU9TjxFDEgZEPyzKGR7hwsiGfKwfrBRBJti6fgfr8jbranb2EgukbNiZXiE8GYs0KiUeRU uhdhFJKoFcy1ktLFJd8R5t3FwwGpV7o= X-MC-Unique: EQYcBpiVOoewHw8AV721pQ-1 X-Mimecast-MFC-AGG-ID: EQYcBpiVOoewHw8AV721pQ_1770231853 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231852; x=1770836652; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=F/mr0SaJ3nQqLbGDXUvO9FoPgG42CFKL4dU21fPLl/U=; b=pt719wkEsOYo0M1F6HvbFNpuHHMHsaYsvW6WNcYdAWf5sfQ46L+eKadhO5gT4mY5zg Cb6/YrGCxEjyRH6QCbp9pfGu/OwYavmfYDetS1IgLC4nwwtkXpXIzOGemW5eMK2VMj1s CpZfUCBnKHHm815B8Kk3yh2ynT/I0s0fCmfmwh6ysriXSUxBW5bc3AJwxjGmrWud8Z+4 dzOgoQ5CI053hArj27Y7O8CYF3qyC1udI7Vfy5zAJ1yBubZ4pxJqM2RfzB9UGBCy6Vq0 g8ml9U0aGrnAxVI+pRJcoqYYzHY0tFyDPNJyPQpz4FN+ValfaEAzAcaQ13NiRa+Z4Zrx bFwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231852; x=1770836652; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=F/mr0SaJ3nQqLbGDXUvO9FoPgG42CFKL4dU21fPLl/U=; b=NI9vHj+0IbUabFkrV3b5ZGag6H/o/y5qwLUTUHufW10P56cStDRQB0BOFh5bNFOYTR 9y3xe6dIHb78Sez1vpo5aE3nnPrznaDNtq8KYsFzQMzWHHGASuF+Zq1y9FeOp9IWe238 bA9DdseJo23b19sVrlKO/Zn+awZAdSX90WFhW0IQhposJcpaGYL2A2oOEYO3LZtV+hFO L6CsMzYH1DyKVgdbcrM/Q9ei3+rVrFarhXSRdgRcaYHVut5COe1pSJtDZG/axOCVa7qG srsufGFsKbigPqCTA5OU73uAL3kDCjHP6DwrL+/o53Ty02grtKQHr3k3qURBIciUOSiF YKaw== X-Gm-Message-State: AOJu0Yw9RW9/leTX65Affc9LTNH2/ohP39c/c/awwPVm0xhsLt122bD4 G9lyGMDkbM3AsbyhP/P1HmJq44Pw/DMLRqfeMPtSGVphHGcVn1bRsG++GLw4OWfwY7xTApXACQu AMKniVcXPHCvlmoQH/AkBXQ7tj9eGs28ZQWbTxe/0YsPaXhamC5ba0KRJ6+HBTsWchJFZXrzULQ L/nosyx0TedI6MAfnqeg+y4yiYyvMSzc7DtQ== X-Gm-Gg: AZuq6aJNcmbdfFo/JbKIjgVY8ucLSqf2aTKDGfJh4nzRUNSTN4FOSYMihBKidTmjtkl APdgEboQV2GXZvQjScOK8zC4NlOjV8aNtWOLlC1TWDESWvksHPZl9Y3WjxaLEzf/O4LdtgXT+n7 4+N1+0u9N423k+bvcIYubPSOibCJNOQj1noJ8jeEoAFhvKnpclLjyHx2LV19xdFY2PtfzX/7/zk 6qv/ymdzA6otKnlUTiUQWHP03gH7XoCf6vj+yaWDQ1SM0fBUzuRPAqmRSc2VKILKFNgcOVMwd7S dt3fZ78mmU9n2mQWQ7AyxMF6VV0w9feu6Dazc9nhm+QfOuTk57q0FI7ah4fW0CV12P7JAPugAuR PdaxVECiN4wcK260dL8Qyz1unz2mixjTeEw== X-Received: by 2002:a05:6000:4211:b0:432:c05b:d8c7 with SMTP id ffacd0b85a97d-4361805955amr5630939f8f.49.1770231852390; Wed, 04 Feb 2026 11:04:12 -0800 (PST) X-Received: by 2002:a05:6000:4211:b0:432:c05b:d8c7 with SMTP id ffacd0b85a97d-4361805955amr5630868f8f.49.1770231851781; Wed, 04 Feb 2026 11:04:11 -0800 (PST) Date: Wed, 4 Feb 2026 14:04:09 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Andrey Ryabinin , Marcel Apfelbaum , Fabiano Rosas , Laurent Vivier , Paolo Bonzini Subject: [PULL 35/51] q35: Fix migration of SMRAM state Message-ID: <373e5dd104520d2a30dc11b10463ec7ded7fdbbd.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, URIBL_SBL=1.623 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1770232008343158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov When migrating, dst QEMU by default has SMRAM unlocked, and since wmask is not migrated, the migrated value of MCH_HOST_BRIDGE_F_SMBASE in config space fall to prey of mch_update_smbase_smram() ... if (pd->wmask[MCH_HOST_BRIDGE_F_SMBASE] =3D=3D 0xff) { *reg =3D 0x00; and is getting cleared and leads to unlocked smram on dst even if on source it's been locked. As Andrey has pointed out [1], we should derive wmask from config and not other way around. Drop offending chunk and resync wmask based on MCH_HOST_BRIDGE_F_SMBASE register value. That would preserve the register during migration and set smram regions into corresponding state. What that changes is: that it would let guest write junk values in register (with no apparent effect) until it's stumbles upon reserved 0x1 [|] 0x2 values, at which point it would be only possible to lock register and trigger switch to SMRAM blackhole in CPU AS. While at it, fix up test by removing junk discard before negotiation hunk. PS2: Instead of adding a dedicated post_load handler for it, reuse mch_update->mch_update_smbase_smram call chain that is called on write/reset/post_load to be consistent with how we handle mch registers. PS3: for prosterity here is erro message Andrey got due to this bug: qemu: vfio_container_dma_map(0x..., 0x0, 0xa0000, 0x....) =3D -22 (Inva= lid argument) qemu: hardware error: vfio: DMA mapping failed, unable to continue 1) https://patchew.org/QEMU/20251203180851.6390-1-arbn@yandex-team.com/ Fixes: f404220e279c ("q35: implement 128K SMRAM at default SMBASE address") Reported-by: Andrey Ryabinin Signed-off-by: Igor Mammedov Reviewed-by: Andrey Ryabinin Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251211165454.288476-1-imammedo@redhat.com> --- hw/pci-host/q35.c | 27 ++++++++++++--------------- tests/qtest/q35-test.c | 6 ------ 2 files changed, 12 insertions(+), 21 deletions(-) diff --git a/hw/pci-host/q35.c b/hw/pci-host/q35.c index b353d3e1e6..e85e4227b3 100644 --- a/hw/pci-host/q35.c +++ b/hw/pci-host/q35.c @@ -431,30 +431,27 @@ static void mch_update_smbase_smram(MCHPCIState *mch) } =20 if (*reg =3D=3D MCH_HOST_BRIDGE_F_SMBASE_QUERY) { - pd->wmask[MCH_HOST_BRIDGE_F_SMBASE] =3D - MCH_HOST_BRIDGE_F_SMBASE_LCK; + pd->wmask[MCH_HOST_BRIDGE_F_SMBASE] =3D MCH_HOST_BRIDGE_F_SMBASE_L= CK; *reg =3D MCH_HOST_BRIDGE_F_SMBASE_IN_RAM; return; } =20 /* - * default/reset state, discard written value - * which will disable SMRAM balackhole at SMBASE + * reg value can come from register write/reset/migration source, + * update wmask to be in sync with it regardless of source */ - if (pd->wmask[MCH_HOST_BRIDGE_F_SMBASE] =3D=3D 0xff) { - *reg =3D 0x00; + if (*reg =3D=3D MCH_HOST_BRIDGE_F_SMBASE_IN_RAM) { + pd->wmask[MCH_HOST_BRIDGE_F_SMBASE] =3D MCH_HOST_BRIDGE_F_SMBASE_L= CK; + return; + } + if (*reg & MCH_HOST_BRIDGE_F_SMBASE_LCK) { + /* lock register at 0x2 and disable all writes */ + pd->wmask[MCH_HOST_BRIDGE_F_SMBASE] =3D 0; + *reg =3D MCH_HOST_BRIDGE_F_SMBASE_LCK; } =20 + lck =3D *reg & MCH_HOST_BRIDGE_F_SMBASE_LCK; memory_region_transaction_begin(); - if (*reg & MCH_HOST_BRIDGE_F_SMBASE_LCK) { - /* disable all writes */ - pd->wmask[MCH_HOST_BRIDGE_F_SMBASE] &=3D - ~MCH_HOST_BRIDGE_F_SMBASE_LCK; - *reg =3D MCH_HOST_BRIDGE_F_SMBASE_LCK; - lck =3D true; - } else { - lck =3D false; - } memory_region_set_enabled(&mch->smbase_blackhole, lck); memory_region_set_enabled(&mch->smbase_window, lck); memory_region_transaction_commit(); diff --git a/tests/qtest/q35-test.c b/tests/qtest/q35-test.c index 62fff49fc8..4e3a4457f6 100644 --- a/tests/qtest/q35-test.c +++ b/tests/qtest/q35-test.c @@ -206,12 +206,6 @@ static void test_smram_smbase_lock(void) qtest_writeb(qts, SMBASE, SMRAM_TEST_PATTERN); g_assert_cmpint(qtest_readb(qts, SMBASE), =3D=3D, SMRAM_TEST_PATTERN); =20 - /* check that writing junk to 0x9c before before negotiating is ignore= d */ - for (i =3D 0; i < 0xff; i++) { - qpci_config_writeb(pcidev, MCH_HOST_BRIDGE_F_SMBASE, i); - g_assert(qpci_config_readb(pcidev, MCH_HOST_BRIDGE_F_SMBASE) =3D= =3D 0); - } - /* enable SMRAM at SMBASE */ qpci_config_writeb(pcidev, MCH_HOST_BRIDGE_F_SMBASE, 0xff); g_assert(qpci_config_readb(pcidev, MCH_HOST_BRIDGE_F_SMBASE) =3D=3D 0x= 01); --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231945; cv=none; d=zohomail.com; s=zohoarc; b=Kb2fDPFD8LdlBW6tfRpgYozN9iglMLA+xmDfhhJNd/ChgvnARbNufDMrQjrbXF//baP1wkCu2m0SYQtXRSEVpESWnkKnNoMKHW4h0ZqqFdKTxzghLCYMem50vutK9jxJI3Tfq0a005Mc7dHkVImwUxtXPPfmxHmPP+OJ6x+7rgg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231945; h=Content-Type: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=HQNcwHET+Fc0wSADLVDsQMFcE8e91Voekz3r4JROCZw=; b=F8L7KAWNok7L0eE327WygrgVWwkVl/qy9gVq87RJxiren0iVcyHQZvuIp+WsE93S2SPqc3snYlZ2xUWn08GILZJt65wSfi7ZaqinIoAYsaJkdpxzfg1UpDM9PV9QKnummZPy2fFo09M34DFY98kzKYiz5XIDZiiN/XY5dzHLNoQ= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770231945458930.9645464733109; Wed, 4 Feb 2026 11:05:45 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniAq-0001zh-V2; Wed, 04 Feb 2026 14:04:24 -0500 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 1vniAn-0001wY-KG for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:21 -0500 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 1vniAk-00087R-FL for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:21 -0500 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-172-gDWdoMnOPxGHOOxVvl0MCg-1; Wed, 04 Feb 2026 14:04:16 -0500 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-431054c09e3so204650f8f.0 for ; Wed, 04 Feb 2026 11:04:16 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48317d835f0sm3017765e9.14.2026.02.04.11.04.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:04:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231857; 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: in-reply-to:in-reply-to:references:references; bh=HQNcwHET+Fc0wSADLVDsQMFcE8e91Voekz3r4JROCZw=; b=V6plI0R6upaK0bcHLLplYW6Z/OvPS0bjixxfdTohXn6HU2My+fjVgJ+2ySazbJmYSnfIjj K4DxmsZTsCm9KrfFEmk5JOwMS69lhuXiOhEAV8heXUdiuqCTRy0FPiqy5JwVn8MIDIevfH ff/bssACNEMHEkQZdi8XSTy0dmprs0o= X-MC-Unique: gDWdoMnOPxGHOOxVvl0MCg-1 X-Mimecast-MFC-AGG-ID: gDWdoMnOPxGHOOxVvl0MCg_1770231855 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231855; x=1770836655; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=HQNcwHET+Fc0wSADLVDsQMFcE8e91Voekz3r4JROCZw=; b=appnDJDd27Ftfngqz3hmsvz9Lbj0VTuNKuGwMuWYGZ3zkbOQdy+76iI8KoCWh1QpSn nb6C2rXPKFALm56ZOuxlNTokSJ+RC93PggCItNXf3dwHxVSt/K6GYe2+A3wiZyNX+8F5 i9XdOGQ/dgOBfeElbekH/KJKCpzhPOZCbe7uNnHaL7U4SSZekDUMuBoP38HZHWTHsQlJ SkISpNzhD69axSUbuENK+41LRsC/EVgTbOszSokEml+Qk1sub5iv/Nxq9vixKvq1wHVy F5jmAVuE3L6iISd5XWuxHbAa1qy7GjycHEr/fwfH8a5GQN/2FyZ5HeSC6imFsXr17GCd /Ebg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231855; x=1770836655; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HQNcwHET+Fc0wSADLVDsQMFcE8e91Voekz3r4JROCZw=; b=UNN7txCTh22oi7VrJP0kyiWzHxoh2ZY3nL9CSfIsPNXDkzaG1tGUqCsMtQ+oNf8Xkw rtxnK/VSxm8CDOTuhmCnXGCohVRqJ9JLo2p7X3XPpKPO4rX+nJOWkn/AX4vAVtLdsxPM YOFueYK1IiZx0kN7kPSquN/Q5vp1ksqb1SUGL1Gp90zjKU/DgS0JsZmPkUd3fAWlbERo CrdyKiII16q6Ihb5/EvOKbsBHHT14flxztA2r9xHM4HL+swMjCcuYvASl8Me4HsljYe3 9VKWYj2xTzOZJspN9g7Rb6sJogRcRb2nvLpmILb1Uu5Oddu9vOXC2qgxkZtcynmD0wqK gJiw== X-Gm-Message-State: AOJu0Yxd08slOlVqW+1jOjf44pywe1LCsy0j1m8ZPcC92HQulfXgBM+x E/qz/ZgsMvesOQ70Sj4m6WzOAEYfm4bZbUVpk2TV3/YQ1TG0IACJMuNhWyJ0AA7MkKhb919YxLU ixaKn7E2Ra0vospB0H+1sWKVBw2aE3qeRZ3THv6xLz+4/l+I9OMTylfBvd/jfU1p+3Z7H86lOmb +NKZ9/wf4Xm1dOl4Yn8FJG8AjzkiNf81HpXg== X-Gm-Gg: AZuq6aKnzDqPsVK7xZR2YHt/X1dImS0a8fBTLngIx2k/tQOLpSMyiyJz9Xhvkp6t89w 5Ht4+R09WWMxHxHoStjNzytlPTY8pxyuyAOUgNN5+87ZeXWGXAPPj54kZ+ytkexi9jbU+iWuJLP /NTZ6NlX7C+9j6NSyh7VUPWgzTULaRa1zaPNnYtsmEkCNDA62n2He90ATaOwTID66BreQ366t73 kKtPtrXrS29IaCQrEs9VjnCGkCLRuBp3WIsfqu3/BHBSmaieajB496/ZqjEydAcXU5JZlR9AJ38 DO9RuETi4ZuuSfPv1+kzRDzzrJM5LE2kFxzfNbXfLQcZDgEPXcIY5VF9HAYDmnA8lz6KrVmDALK kElIJc7zAuHPGSqSKhKLHKIKdOrGAVZlZAw== X-Received: by 2002:a05:600c:4fcc:b0:480:1d0b:2d15 with SMTP id 5b1f17b1804b1-4830e9926c0mr59612725e9.27.1770231854808; Wed, 04 Feb 2026 11:04:14 -0800 (PST) X-Received: by 2002:a05:600c:4fcc:b0:480:1d0b:2d15 with SMTP id 5b1f17b1804b1-4830e9926c0mr59612415e9.27.1770231854198; Wed, 04 Feb 2026 11:04:14 -0800 (PST) Date: Wed, 4 Feb 2026 14:04:11 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Haixu Cui , Manos Pitsidianakis , Cornelia Huck , Paolo Bonzini Subject: [PULL 36/51] standard-headers: Update virtio_spi.h from Linux v6.18-rc3 Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231947764158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Haixu Cui Synced virtio_spi.h from upstream Linux kernelusing scripts/update-linux-headers.sh. Source: - Linux commit dcb6fa37fd7bc9c3d2b066329b0d27dedf8becaa (v6.18-rc3) - Author: Linus Torvalds - Date: Sun Oct 26 15:59:49 2025 -0700 This update ensures QEMU's standard headers are consistent with the latest virtio SPI definitions from Linux v6.18-rc3. Signed-off-by: Haixu Cui Reviewed-by: Manos Pitsidianakis Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251216032122.1316684-2-quic_haixcui@quicinc.com> --- include/standard-headers/linux/virtio_spi.h | 181 ++++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100644 include/standard-headers/linux/virtio_spi.h diff --git a/include/standard-headers/linux/virtio_spi.h b/include/standard= -headers/linux/virtio_spi.h new file mode 100644 index 0000000000..54e570fb4a --- /dev/null +++ b/include/standard-headers/linux/virtio_spi.h @@ -0,0 +1,181 @@ +/* SPDX-License-Identifier: BSD-3-Clause */ +/* + * Copyright (C) 2023 OpenSynergy GmbH + * Copyright (C) 2025 Qualcomm Innovation Center, Inc. All rights reserved. + */ +#ifndef _LINUX_VIRTIO_VIRTIO_SPI_H +#define _LINUX_VIRTIO_VIRTIO_SPI_H + +#include "standard-headers/linux/types.h" +#include "standard-headers/linux/virtio_config.h" +#include "standard-headers/linux/virtio_ids.h" +#include "standard-headers/linux/virtio_types.h" + +/* Sample data on trailing clock edge */ +#define VIRTIO_SPI_CPHA _BITUL(0) +/* Clock is high when IDLE */ +#define VIRTIO_SPI_CPOL _BITUL(1) +/* Chip Select is active high */ +#define VIRTIO_SPI_CS_HIGH _BITUL(2) +/* Transmit LSB first */ +#define VIRTIO_SPI_MODE_LSB_FIRST _BITUL(3) +/* Loopback mode */ +#define VIRTIO_SPI_MODE_LOOP _BITUL(4) + +/** + * struct virtio_spi_config - All config fields are read-only for the + * Virtio SPI driver + * @cs_max_number: maximum number of chipselect the host SPI controller + * supports. + * @cs_change_supported: indicates if the host SPI controller supports to = toggle + * chipselect after each transfer in one message: + * 0: unsupported, chipselect will be kept in active state throughout the + * message transaction; + * 1: supported. + * Note: Message here contains a sequence of SPI transfers. + * @tx_nbits_supported: indicates the supported number of bit for writing: + * bit 0: DUAL (2-bit transfer), 1 for supported + * bit 1: QUAD (4-bit transfer), 1 for supported + * bit 2: OCTAL (8-bit transfer), 1 for supported + * other bits are reserved as 0, 1-bit transfer is always supported. + * @rx_nbits_supported: indicates the supported number of bit for reading: + * bit 0: DUAL (2-bit transfer), 1 for supported + * bit 1: QUAD (4-bit transfer), 1 for supported + * bit 2: OCTAL (8-bit transfer), 1 for supported + * other bits are reserved as 0, 1-bit transfer is always supported. + * @bits_per_word_mask: mask indicating which values of bits_per_word are + * supported. If not set, no limitation for bits_per_word. + * @mode_func_supported: indicates the following features are supported or= not: + * bit 0-1: CPHA feature + * 0b00: invalid, should support as least one CPHA setting + * 0b01: supports CPHA=3D0 only + * 0b10: supports CPHA=3D1 only + * 0b11: supports CPHA=3D0 and CPHA=3D1. + * bit 2-3: CPOL feature + * 0b00: invalid, should support as least one CPOL setting + * 0b01: supports CPOL=3D0 only + * 0b10: supports CPOL=3D1 only + * 0b11: supports CPOL=3D0 and CPOL=3D1. + * bit 4: chipselect active high feature, 0 for unsupported and 1 for + * supported, chipselect active low is supported by default. + * bit 5: LSB first feature, 0 for unsupported and 1 for supported, + * MSB first is supported by default. + * bit 6: loopback mode feature, 0 for unsupported and 1 for supported, + * normal mode is supported by default. + * @max_freq_hz: the maximum clock rate supported in Hz unit, 0 means no + * limitation for transfer speed. + * @max_word_delay_ns: the maximum word delay supported, in nanoseconds. + * A value of 0 indicates that word delay is unsupported. + * Each transfer may consist of a sequence of words. + * @max_cs_setup_ns: the maximum delay supported after chipselect is asser= ted, + * in ns unit, 0 means delay is not supported to introduce after chipsel= ect is + * asserted. + * @max_cs_hold_ns: the maximum delay supported before chipselect is deass= erted, + * in ns unit, 0 means delay is not supported to introduce before chipse= lect + * is deasserted. + * @max_cs_incative_ns: maximum delay supported after chipselect is deasse= rted, + * in ns unit, 0 means delay is not supported to introduce after chipsel= ect is + * deasserted. + */ +struct virtio_spi_config { + uint8_t cs_max_number; + uint8_t cs_change_supported; +#define VIRTIO_SPI_RX_TX_SUPPORT_DUAL _BITUL(0) +#define VIRTIO_SPI_RX_TX_SUPPORT_QUAD _BITUL(1) +#define VIRTIO_SPI_RX_TX_SUPPORT_OCTAL _BITUL(2) + uint8_t tx_nbits_supported; + uint8_t rx_nbits_supported; + uint32_t bits_per_word_mask; +#define VIRTIO_SPI_MF_SUPPORT_CPHA_0 _BITUL(0) +#define VIRTIO_SPI_MF_SUPPORT_CPHA_1 _BITUL(1) +#define VIRTIO_SPI_MF_SUPPORT_CPOL_0 _BITUL(2) +#define VIRTIO_SPI_MF_SUPPORT_CPOL_1 _BITUL(3) +#define VIRTIO_SPI_MF_SUPPORT_CS_HIGH _BITUL(4) +#define VIRTIO_SPI_MF_SUPPORT_LSB_FIRST _BITUL(5) +#define VIRTIO_SPI_MF_SUPPORT_LOOPBACK _BITUL(6) + uint32_t mode_func_supported; + uint32_t max_freq_hz; + uint32_t max_word_delay_ns; + uint32_t max_cs_setup_ns; + uint32_t max_cs_hold_ns; + uint32_t max_cs_inactive_ns; +}; + +/** + * struct spi_transfer_head - virtio SPI transfer descriptor + * @chip_select_id: chipselect index the SPI transfer used. + * @bits_per_word: the number of bits in each SPI transfer word. + * @cs_change: whether to deselect device after finishing this transfer + * before starting the next transfer, 0 means cs keep asserted and + * 1 means cs deasserted then asserted again. + * @tx_nbits: bus width for write transfer. + * 0,1: bus width is 1, also known as SINGLE + * 2 : bus width is 2, also known as DUAL + * 4 : bus width is 4, also known as QUAD + * 8 : bus width is 8, also known as OCTAL + * other values are invalid. + * @rx_nbits: bus width for read transfer. + * 0,1: bus width is 1, also known as SINGLE + * 2 : bus width is 2, also known as DUAL + * 4 : bus width is 4, also known as QUAD + * 8 : bus width is 8, also known as OCTAL + * other values are invalid. + * @reserved: for future use. + * @mode: SPI transfer mode. + * bit 0: CPHA, determines the timing (i.e. phase) of the data + * bits relative to the clock pulses.For CPHA=3D0, the + * "out" side changes the data on the trailing edge of the + * preceding clock cycle, while the "in" side captures the data + * on (or shortly after) the leading edge of the clock cycle. + * For CPHA=3D1, the "out" side changes the data on the leading + * edge of the current clock cycle, while the "in" side + * captures the data on (or shortly after) the trailing edge of + * the clock cycle. + * bit 1: CPOL, determines the polarity of the clock. CPOL=3D0 is a + * clock which idles at 0, and each cycle consists of a pulse + * of 1. CPOL=3D1 is a clock which idles at 1, and each cycle + * consists of a pulse of 0. + * bit 2: CS_HIGH, if 1, chip select active high, else active low. + * bit 3: LSB_FIRST, determines per-word bits-on-wire, if 0, MSB + * first, else LSB first. + * bit 4: LOOP, loopback mode. + * @freq: the transfer speed in Hz. + * @word_delay_ns: delay to be inserted between consecutive words of a + * transfer, in ns unit. + * @cs_setup_ns: delay to be introduced after CS is asserted, in ns + * unit. + * @cs_delay_hold_ns: delay to be introduced before CS is deasserted + * for each transfer, in ns unit. + * @cs_change_delay_inactive_ns: delay to be introduced after CS is + * deasserted and before next asserted, in ns unit. + */ +struct spi_transfer_head { + uint8_t chip_select_id; + uint8_t bits_per_word; + uint8_t cs_change; + uint8_t tx_nbits; + uint8_t rx_nbits; + uint8_t reserved[3]; + uint32_t mode; + uint32_t freq; + uint32_t word_delay_ns; + uint32_t cs_setup_ns; + uint32_t cs_delay_hold_ns; + uint32_t cs_change_delay_inactive_ns; +}; + +/** + * struct spi_transfer_result - virtio SPI transfer result + * @result: Transfer result code. + * VIRTIO_SPI_TRANS_OK: Transfer successful. + * VIRTIO_SPI_PARAM_ERR: Parameter error. + * VIRTIO_SPI_TRANS_ERR: Transfer error. + */ +struct spi_transfer_result { +#define VIRTIO_SPI_TRANS_OK 0 +#define VIRTIO_SPI_PARAM_ERR 1 +#define VIRTIO_SPI_TRANS_ERR 2 + uint8_t result; +}; + +#endif /* #ifndef _LINUX_VIRTIO_VIRTIO_SPI_H */ --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770232277; cv=none; d=zohomail.com; s=zohoarc; b=kz8Cv2VpqB0QNTo/uAyzyDOpwfE+rpTmwkQnJfghs1fFq7l7uJwc2UXJ4YKfJ7+xsRmW1+6ivUR/1ZTgk0mhtdLYCO02SE0UskcgH0EJWOU3outNRQ8bQ7FItLaKgDjwayd5a/MKyK112h3+UL3WgUx6uYup1fK8ufw/sPken24= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770232277; h=Content-Type: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=pjB3ypqsjtokcsdC8OAdmK6JNoWynQqNyg6cMGB1Ruw=; b=bSEXFcZPDQ0pRn//BV60mat8C2mJF0XR2iHkSeuG0ms3koQBaLEfdiF2kesXsN7kEbkt75XeprDZ6LUQcVobJ6AA4O/V3N2TP6Hu3vu3IyA8EaPU7wuPKrXATiBH+gjz1PI+KANbokP7vLDwlRcxS0dv/VfyqQVlVQryWKvG3tk= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770232277221391.6492431095827; Wed, 4 Feb 2026 11:11:17 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniAs-000295-Bc; Wed, 04 Feb 2026 14:04:26 -0500 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 1vniAp-0001zw-HN for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:24 -0500 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 1vniAn-00087v-4A for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:23 -0500 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-458-Unb3y9N4MgSoh2QtOeFIkw-1; Wed, 04 Feb 2026 14:04:18 -0500 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-4325b182e3cso140528f8f.2 for ; Wed, 04 Feb 2026 11:04:18 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48317d4b2a6sm3178905e9.12.2026.02.04.11.04.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:04:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231860; 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: in-reply-to:in-reply-to:references:references; bh=pjB3ypqsjtokcsdC8OAdmK6JNoWynQqNyg6cMGB1Ruw=; b=KrDCnAEmj8Y37/OKDHSBj5K/ETgDx1FvIcIrlf+QuoYbS0+ep/U5i/KWJYvBDYPTYXJjLV VgG1m3Hnt570W4fpPOLqJfMhujLPQG2OCNqJPCjh/VhQy0mHmmks7PyKlA/0sVp2jJI/wg ie0KAXl5tPp6zfk+2AJTu2r0zq77lC0= X-MC-Unique: Unb3y9N4MgSoh2QtOeFIkw-1 X-Mimecast-MFC-AGG-ID: Unb3y9N4MgSoh2QtOeFIkw_1770231858 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231857; x=1770836657; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=pjB3ypqsjtokcsdC8OAdmK6JNoWynQqNyg6cMGB1Ruw=; b=Slu6q5XqF7+gnaegFHRvb3VdsmXqPVuAYvL9GhRztncmarf7ZLye8XqF3hSDZpiJew eYvWL7TKCfG20indQ0gQJCgc72YmFl1ZAcFJDgqiwai6bA/v5tKogM/svMV4gsWoFqlt lV8VRHKBY6wSZX6fA6TStEZ0gTcJS9j3YJPc3fsOpOtJ7soUPhiefCFJMBwE46VLrWKZ smDVx29DZEfjqgg24Crx1tSMeNj/Yo3CnCgnKO07r+ubgQvkaFv6Sk+1UhtgM/44vEEg A929B+2VakKiB9e1ZKcGg63ojC0H+f9lkDn5EEDs+CkwNRxaMjLjAN567GtmLC1hAK82 Gbmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231857; x=1770836657; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pjB3ypqsjtokcsdC8OAdmK6JNoWynQqNyg6cMGB1Ruw=; b=aZgHYv9A4Pxrr2lZ1A4fspxUcaFqwb/aa8bs//xXKNxgyQ5eoxKx54tZ1bc7ebotdR hhxZXYW7d2gs19I3OKo/F+wEBragwjRpYbWUk/RjlMwVhMA1W5G4PF8fAeyLj8bub4vn ZNuJkMbIcj5nTvM3df9c7H2Z7dtbGeg4CDhl5qDsUH99Gqc4+0rxBURDpZUPqzuDKTWp QzG+LlEhS1DdB6Gv8fiNtgSZFKNwL+sAnYZ50XmofrwKw2qi4ePo9AkL4XG/Jfp/SRYu des3RskkF7pqiCqNYiWYUppwjFXyJAD47yN7CvJn2gNck85ujxI728otmJQPpS4O10Ia meeg== X-Gm-Message-State: AOJu0Yx5CYu0hRNBq8irYtnU/xn4zvbtcEF/pL2qm/UacfTf/uPX8iCd MttyS65ACXzb46XbhyJhEx/KGzhB7JvZn6hmbfezbqwDm8+SfaCEemx/hbLRiZI0P8zOOLnfyv2 5Q1A0owoyolYD98QKKwpFP4nG1H7HTOBVJIrvp0iiq65btr27fBVSIrSOEg48LjsGzkefqHQWuB 85wCGaIMHNu9Tkkf/VWSgpz0338D8tjry4Dg== X-Gm-Gg: AZuq6aK1UdjhHxyWHhWzf0/F+3kCWJepbhGMQJlgC4X40zQu3Ad4uOniIey15KCzow/ pNSyxt/UADDC3HAnaUUd8dSNgqeqVGzhSWvv1JXIzulTSaMO9ARcReV1PLOFE74669NwD4UIFxN zYZpJFVcz+xPuxtxoNAcbW840eXw1+qEMs5Z8V+5xp9iJTQoImt+Uwjefg1OcCJiMtC4iwaLnU5 6rUxoQEDqxqU3XJGRrtcl03WMqgAogsMbkexFW27rf/+aMdcC9qPgYxCHsD5C/tNGR4AxBtc55g CwA6B3zBMfjiWRcB/B6p5f+Gf3xkjtnWtmobVekqlG50rEFp6eqVQtBtqhAaQz2aBQE9Db0GZXe f4BoIY6sFf7L36o/ru6d5r4BR7ffautxzIQ== X-Received: by 2002:a05:600c:4513:b0:47e:e076:c7a5 with SMTP id 5b1f17b1804b1-4830e932591mr56879435e9.11.1770231857083; Wed, 04 Feb 2026 11:04:17 -0800 (PST) X-Received: by 2002:a05:600c:4513:b0:47e:e076:c7a5 with SMTP id 5b1f17b1804b1-4830e932591mr56878815e9.11.1770231856494; Wed, 04 Feb 2026 11:04:16 -0800 (PST) Date: Wed, 4 Feb 2026 14:04:14 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Haixu Cui , Manos Pitsidianakis , Pierrick Bouvier , Paolo Bonzini , Stefano Garzarella Subject: [PULL 37/51] virtio-spi: Add vhost-user-spi device support Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770232279365158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Haixu Cui This patch introduces support for vhost-user-spi and vhost-user-spi-pci devices in QEMU, enabling virtio-based SPI communication via the vhost-user protocol. The implementation follows the virtio-spi specification and leverages the upstream virtio-spi driver in Linux. Relevant references: - Virtio SPI specification: https://github.com/oasis-tcs/virtio-spec/tree/master/device-types/spi - Linux virtio-spi driver: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/d= rivers/spi/spi-virtio.c?h=3Dv6.18-rc3 - vhost-user-spi daemon: https://github.com/rust-vmm/vhost-device/tree/main/vhost-device-spi Example usage with rust-vmm vhost-user-spi daemon: Start the vhost-user-spi daemon: vhost-device-spi --socket-path=3Dvspi.sock --socket-count=3D1 \ --device "/dev/spidev0.0" Launch QEMU with: qemu-system-aarch64 -m 1G \ -chardev socket,path=3D/home/root/vspi.sock0,id=3Dvspi \ -device vhost-user-spi-device,chardev=3Dvspi,id=3Dspi \ -object memory-backend-file,id=3Dmem,size=3D1G,mem-path=3D/dev/shm,= share=3Don \ -numa node,memdev=3Dmem Signed-off-by: Haixu Cui Reviewed-by: Manos Pitsidianakis Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251216032122.1316684-3-quic_haixcui@quicinc.com> --- MAINTAINERS | 6 ++ docs/system/devices/virtio/vhost-user.rst | 3 + hw/virtio/Kconfig | 5 ++ hw/virtio/meson.build | 3 + hw/virtio/vhost-user-spi-pci.c | 69 +++++++++++++++++++++++ hw/virtio/vhost-user-spi.c | 65 +++++++++++++++++++++ hw/virtio/virtio.c | 4 +- include/hw/virtio/vhost-user-spi.h | 25 ++++++++ 8 files changed, 179 insertions(+), 1 deletion(-) create mode 100644 hw/virtio/vhost-user-spi-pci.c create mode 100644 hw/virtio/vhost-user-spi.c create mode 100644 include/hw/virtio/vhost-user-spi.h diff --git a/MAINTAINERS b/MAINTAINERS index 9b7ed4fccb..d049270777 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2556,6 +2556,12 @@ F: hw/virtio/vhost-user-scmi* F: include/hw/virtio/vhost-user-scmi.h F: tests/qtest/libqos/virtio-scmi.* =20 +vhost-user-spi +M: Haixu Cui +S: Maintained +F: include/hw/virtio/vhost-user-spi.h +F: hw/virtio/vhost-user-spi* + virtio-crypto M: Gonglei S: Supported diff --git a/docs/system/devices/virtio/vhost-user.rst b/docs/system/device= s/virtio/vhost-user.rst index f556a840e9..2806d81ca2 100644 --- a/docs/system/devices/virtio/vhost-user.rst +++ b/docs/system/devices/virtio/vhost-user.rst @@ -58,6 +58,9 @@ platform details for what sort of virtio bus to use. * - vhost-user-vsock - Socket based communication - `vhost-device-vsock `_ + * - vhost-user-spi + - Proxy spi devices to host + - `vhost-device-spi `_ =20 The referenced *daemons* are not exhaustive, any conforming backend implementing the device and using the vhost-user protocol should work. diff --git a/hw/virtio/Kconfig b/hw/virtio/Kconfig index 10f5c53ac0..8895682c61 100644 --- a/hw/virtio/Kconfig +++ b/hw/virtio/Kconfig @@ -127,6 +127,11 @@ config VHOST_USER_SCMI default y depends on VIRTIO && VHOST_USER && ARM =20 +config VHOST_USER_SPI + bool + default y + depends on VIRTIO && VHOST_USER + config VHOST_USER_TEST bool default y diff --git a/hw/virtio/meson.build b/hw/virtio/meson.build index affd66887d..6675b63ce6 100644 --- a/hw/virtio/meson.build +++ b/hw/virtio/meson.build @@ -28,6 +28,7 @@ if have_vhost system_virtio_ss.add(when: 'CONFIG_VHOST_USER_RNG', if_true: files('vh= ost-user-rng.c')) system_virtio_ss.add(when: 'CONFIG_VHOST_USER_SND', if_true: files('vh= ost-user-snd.c')) system_virtio_ss.add(when: 'CONFIG_VHOST_USER_INPUT', if_true: files('= vhost-user-input.c')) + system_virtio_ss.add(when: 'CONFIG_VHOST_USER_SPI', if_true: files('vh= ost-user-spi.c')) =20 # PCI Stubs system_virtio_ss.add(when: ['CONFIG_VIRTIO_PCI', 'CONFIG_VHOST_USER_TE= ST'], @@ -42,6 +43,8 @@ if have_vhost if_true: files('vhost-user-snd-pci.c')) system_virtio_ss.add(when: ['CONFIG_VIRTIO_PCI', 'CONFIG_VHOST_USER_IN= PUT'], if_true: files('vhost-user-input-pci.c')) + system_virtio_ss.add(when: ['CONFIG_VIRTIO_PCI', 'CONFIG_VHOST_USER_SP= I'], + if_true: files('vhost-user-spi-pci.c')) endif if have_vhost_vdpa system_virtio_ss.add(files('vhost-vdpa.c')) diff --git a/hw/virtio/vhost-user-spi-pci.c b/hw/virtio/vhost-user-spi-pci.c new file mode 100644 index 0000000000..f813b824b6 --- /dev/null +++ b/hw/virtio/vhost-user-spi-pci.c @@ -0,0 +1,69 @@ +/* + * Vhost-user spi virtio device PCI glue + * + * Copyright (C) 2025 Qualcomm Innovation Center, Inc. All Rights Reserved. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "hw/core/qdev-properties.h" +#include "hw/virtio/vhost-user-spi.h" +#include "hw/virtio/virtio-pci.h" + +struct VHostUserSPIPCI { + VirtIOPCIProxy parent_obj; + VHostUserSPI vdev; +}; + +typedef struct VHostUserSPIPCI VHostUserSPIPCI; + +#define TYPE_VHOST_USER_SPI_PCI "vhost-user-spi-pci-base" + +DECLARE_INSTANCE_CHECKER(VHostUserSPIPCI, VHOST_USER_SPI_PCI, + TYPE_VHOST_USER_SPI_PCI) + +static void vhost_user_spi_pci_realize(VirtIOPCIProxy *vpci_dev, Error **e= rrp) +{ + VHostUserSPIPCI *dev =3D VHOST_USER_SPI_PCI(vpci_dev); + DeviceState *vdev =3D DEVICE(&dev->vdev); + + vpci_dev->nvectors =3D 1; + qdev_realize(vdev, BUS(&vpci_dev->bus), errp); +} + +static void vhost_user_spi_pci_class_init(ObjectClass *klass, const void *= data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + VirtioPCIClass *k =3D VIRTIO_PCI_CLASS(klass); + PCIDeviceClass *pcidev_k =3D PCI_DEVICE_CLASS(klass); + k->realize =3D vhost_user_spi_pci_realize; + set_bit(DEVICE_CATEGORY_INPUT, dc->categories); + pcidev_k->vendor_id =3D PCI_VENDOR_ID_REDHAT_QUMRANET; + pcidev_k->device_id =3D 0; /* Set by virtio-pci based on virtio id */ + pcidev_k->revision =3D 0x00; + pcidev_k->class_id =3D PCI_CLASS_COMMUNICATION_OTHER; +} + +static void vhost_user_spi_pci_instance_init(Object *obj) +{ + VHostUserSPIPCI *dev =3D VHOST_USER_SPI_PCI(obj); + + virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), + TYPE_VHOST_USER_SPI); +} + +static const VirtioPCIDeviceTypeInfo vhost_user_spi_pci_info =3D { + .base_name =3D TYPE_VHOST_USER_SPI_PCI, + .non_transitional_name =3D "vhost-user-spi-pci", + .instance_size =3D sizeof(VHostUserSPIPCI), + .instance_init =3D vhost_user_spi_pci_instance_init, + .class_init =3D vhost_user_spi_pci_class_init, +}; + +static void vhost_user_spi_pci_register(void) +{ + virtio_pci_types_register(&vhost_user_spi_pci_info); +} + +type_init(vhost_user_spi_pci_register); diff --git a/hw/virtio/vhost-user-spi.c b/hw/virtio/vhost-user-spi.c new file mode 100644 index 0000000000..707f96c250 --- /dev/null +++ b/hw/virtio/vhost-user-spi.c @@ -0,0 +1,65 @@ +/* + * Vhost-user spi virtio device + * + * Copyright (C) 2025 Qualcomm Innovation Center, Inc. All Rights Reserved. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qapi/error.h" +#include "hw/core/qdev-properties.h" +#include "hw/virtio/virtio-bus.h" +#include "hw/virtio/vhost-user-spi.h" +#include "qemu/error-report.h" +#include "standard-headers/linux/virtio_ids.h" +#include "standard-headers/linux/virtio_spi.h" + +static const Property vspi_properties[] =3D { + DEFINE_PROP_CHR("chardev", VHostUserBase, chardev), +}; + +static void vspi_realize(DeviceState *dev, Error **errp) +{ + VHostUserBase *vub =3D VHOST_USER_BASE(dev); + VHostUserBaseClass *vubc =3D VHOST_USER_BASE_GET_CLASS(dev); + + /* Fixed for SPI */ + vub->virtio_id =3D VIRTIO_ID_SPI; + vub->num_vqs =3D 1; + vub->vq_size =3D 4; + vub->config_size =3D sizeof(struct virtio_spi_config); + + vubc->parent_realize(dev, errp); +} + +static const VMStateDescription vu_spi_vmstate =3D { + .name =3D "vhost-user-spi", + .unmigratable =3D 1, +}; + +static void vu_spi_class_init(ObjectClass *klass, const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + VHostUserBaseClass *vubc =3D VHOST_USER_BASE_CLASS(klass); + + dc->vmsd =3D &vu_spi_vmstate; + device_class_set_props(dc, vspi_properties); + device_class_set_parent_realize(dc, vspi_realize, + &vubc->parent_realize); + set_bit(DEVICE_CATEGORY_INPUT, dc->categories); +} + +static const TypeInfo vu_spi_info =3D { + .name =3D TYPE_VHOST_USER_SPI, + .parent =3D TYPE_VHOST_USER_BASE, + .instance_size =3D sizeof(VHostUserSPI), + .class_init =3D vu_spi_class_init, +}; + +static void vu_spi_register_types(void) +{ + type_register_static(&vu_spi_info); +} + +type_init(vu_spi_register_types) diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 3dc9423eae..77ca54e520 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -48,6 +48,7 @@ #include "standard-headers/linux/virtio_iommu.h" #include "standard-headers/linux/virtio_mem.h" #include "standard-headers/linux/virtio_vsock.h" +#include "standard-headers/linux/virtio_spi.h" =20 /* * Maximum size of virtio device config space @@ -196,7 +197,8 @@ const char *virtio_device_names[] =3D { [VIRTIO_ID_PARAM_SERV] =3D "virtio-param-serv", [VIRTIO_ID_AUDIO_POLICY] =3D "virtio-audio-pol", [VIRTIO_ID_BT] =3D "virtio-bluetooth", - [VIRTIO_ID_GPIO] =3D "virtio-gpio" + [VIRTIO_ID_GPIO] =3D "virtio-gpio", + [VIRTIO_ID_SPI] =3D "virtio-spi" }; =20 static const char *virtio_id_to_name(uint16_t device_id) diff --git a/include/hw/virtio/vhost-user-spi.h b/include/hw/virtio/vhost-u= ser-spi.h new file mode 100644 index 0000000000..a1a65820cd --- /dev/null +++ b/include/hw/virtio/vhost-user-spi.h @@ -0,0 +1,25 @@ +/* + * Vhost-user spi virtio device + * + * Copyright (C) 2025 Qualcomm Innovation Center, Inc. All Rights Reserved. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef QEMU_VHOST_USER_SPI_H +#define QEMU_VHOST_USER_SPI_H + +#include "hw/virtio/virtio.h" +#include "hw/virtio/vhost.h" +#include "hw/virtio/vhost-user.h" +#include "hw/virtio/vhost-user-base.h" + +#define TYPE_VHOST_USER_SPI "vhost-user-spi-device" + +OBJECT_DECLARE_SIMPLE_TYPE(VHostUserSPI, VHOST_USER_SPI) + +struct VHostUserSPI { + VHostUserBase parent_obj; +}; + +#endif /* QEMU_VHOST_USER_SPI_H */ --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231980; cv=none; d=zohomail.com; s=zohoarc; b=TnpvpkCrpmTybHvkHOEvcOmqgaSBZ8RGjHedepSEz9STedSNNPeNNjO0BbjoIEqSxnEqLOqzUCD9WG/KrRZOErlrMO1i0NesDvB2UKytjh9PGazN/g4M5vBtBWupUAmjscNigiUj2k6Cb9+fiMPCgw1FvxorYBWZ6OB3DAC/O5w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231980; 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=hvGS5jk5i1GJ7axRKGKJTx5StEXiwhAEatUhAVxCO/0=; b=ZmFikM32ET+94HQSgeKJp/OAPzNfIwk56kT/DHd19tsZA6t3rxImU0pgwx0dNiWaeTRLA6bSXbNXDr3sbol6kkN/Nj0yeqo1evP1ZmNUrCm8NsnWkqluvqbGLd7skHOMcL1S70t8TDpyJxzp3Yg+JADsK43l18uNzWh0/FXOteU= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770231980805847.4088034784234; Wed, 4 Feb 2026 11:06:20 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniAy-0002Xu-4J; Wed, 04 Feb 2026 14:04:32 -0500 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 1vniAs-0002Cf-Q1 for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:27 -0500 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 1vniAr-00088n-4a for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:26 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-444-Q70X_FuKMhqNCWdYzpE-Bw-1; Wed, 04 Feb 2026 14:04:21 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4830e7c6131so1256375e9.2 for ; Wed, 04 Feb 2026 11:04:20 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43617e38e38sm8598634f8f.11.2026.02.04.11.04.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:04:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231864; 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=hvGS5jk5i1GJ7axRKGKJTx5StEXiwhAEatUhAVxCO/0=; b=NL/D7dh3FEnle5YlMlGnhrxekQnsYxJwb6KU+tF+Gfh6b6nDKEAK6JEBHLoYOQ3We7elAF IjbmBnOY0Y5zRyWqwqL/k+Wa2XDbU9Z1WFGeRc0WH5QtMy14ucxOb1DdZ3UwbgJAeEXvmC WOvF6OaHbvGsuoSK0v4cFyhoRmbB2oI= X-MC-Unique: Q70X_FuKMhqNCWdYzpE-Bw-1 X-Mimecast-MFC-AGG-ID: Q70X_FuKMhqNCWdYzpE-Bw_1770231859 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231859; x=1770836659; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=hvGS5jk5i1GJ7axRKGKJTx5StEXiwhAEatUhAVxCO/0=; b=lh506so174ZITDzfUiX+TQ9gp8cELGNi1SRmakkwkkEe1rF0NHb+5fYtlOWoML7GSp 5P+6hIC1fur1bLezq2NvbPMCP6zMNN7KjZS1OM5y8j9IdtRBhvm7xZ2KEk2eOkwaQGhr ydIcZ6CsNbO3J9o4wXSFu5uTz57Qv+hBeNhx2Ar3g2cKNAA7ZTUnm7PT5lfDTxcGYIcz ZUNfhqRUFPvpLsbWfNygUmdg+7reFKAPTC5mGgF/T7l4Zvl5w8UsIhisMt+0pL3zV9Ww M6Z/NyL7zbjuWwaNqWfw1dKx53bIgyiYR+tOR8EUP7I0gs8gV5IXMShf3Kmup0oX8L59 D5tg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231859; x=1770836659; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=hvGS5jk5i1GJ7axRKGKJTx5StEXiwhAEatUhAVxCO/0=; b=iqXJk3tSTy+YA1OfuZ3ZlogA8xBdThvUSoIfR6Au3028iXweyc0fylPuiwtpQvmotc TYEjOJk47X3SfecHXRmhCOgO84rNqUUJdOgsX/AECZ35IaEcwTGypRe+xu8LYz6LvC7d 4wze81prtTki7GwDjnjroNkSRO9geoG0sUhRhpO6pBF1n350p02gK8d/9tSFv7LKAPrs 9JN9cfksYiJrpUcNILEEj1QvDoug2jWXTpU5VhHzkwYqdufIBpOb95Fm33Peb12kbZBg 9JtBphgpTBS4xOy0+tx+O6Q5JPT/b92LATvkPq+4at3wkvj+tlG95LRTYhfDqWEvTyPa Iycg== X-Gm-Message-State: AOJu0YxxgDXKHByL93swp+ZMS6A/Ncsw/rBX8DcL7/z42YdQKuut+7WN wCBWCIquwa5unJ5J2OHxjmVvgJnprvoHvLEDItbbNt3lGE692U0wvggPeIoDjy9hpZjSppdnB9G thXV+mpHhKqTeifKImWUJ6x4eNMmCoxk01CYOyqftxKw/RMPYKR5Jlbulf4cfvQMavOKAB8kUzb Xt7cCZX0Y4TqZYejBMEsMFCvkrjK5Nnwslxw== X-Gm-Gg: AZuq6aKz9xf3quGMLBNUiAa3ELQ9lo7I30Ylce42TvKcCwURSERZ+wHJATDVjv/Vuca ZxXE0dWQ5lCMSzou6DQ7zEOLocPX410E5rvdnyXQhXoelv8jY6esG+NzTWtd846DyMaRpDnbWdQ Kpch/Xq2gtm7lmyUTxUjz68hWRBBbnrzD7gUadw+0kqi4AwphR1W6P8/PtoDcCG1o/R+Mz973u4 uZzfcjwbYQHDuEqVjNwj2O7MbfvF1OnIU/4HxTzpBzpt5qHP6uzW52imHv4H4be67GJ1UWuUeKx NmO03e8qaDKym9Mbc+EAZPO7pvswJKLFDc1DGRI6Y0411WXaTzryskq39EXbmI1IyzgjERp353P eWpDJW+QgWRwtgcUIIn4KtR7rM64563x9ww== X-Received: by 2002:a05:600c:1d99:b0:47d:264e:b35a with SMTP id 5b1f17b1804b1-4830e9344dcmr59654965e9.13.1770231859025; Wed, 04 Feb 2026 11:04:19 -0800 (PST) X-Received: by 2002:a05:600c:1d99:b0:47d:264e:b35a with SMTP id 5b1f17b1804b1-4830e9344dcmr59654255e9.13.1770231858559; Wed, 04 Feb 2026 11:04:18 -0800 (PST) Date: Wed, 4 Feb 2026 14:04:16 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , zhenwei pi , =?utf-8?B?7J207J6s7JiB?= , zhenwei pi , "Gonglei (Arei)" Subject: [PULL 38/51] hw/virtio/virtio-crypto: verify asym request size Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231982048154100 From: zhenwei pi The total lenght of request is limited by cryptodev config, verify it to avoid unexpected request from guest. Fixes: CVE-2025-14876 Fixes: 0e660a6f90a ("crypto: Introduce RSA algorithm") Reported-by: =EC=9D=B4=EC=9E=AC=EC=98=81 Signed-off-by: zhenwei pi Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251221024321.143196-2-zhenwei.pi@linux.dev> --- hw/virtio/virtio-crypto.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hw/virtio/virtio-crypto.c b/hw/virtio/virtio-crypto.c index cbd1810fbc..6fceb39681 100644 --- a/hw/virtio/virtio-crypto.c +++ b/hw/virtio/virtio-crypto.c @@ -767,11 +767,18 @@ virtio_crypto_handle_asym_req(VirtIOCrypto *vcrypto, uint32_t len; uint8_t *src =3D NULL; uint8_t *dst =3D NULL; + uint64_t max_len; =20 asym_op_info =3D g_new0(CryptoDevBackendAsymOpInfo, 1); src_len =3D ldl_le_p(&req->para.src_data_len); dst_len =3D ldl_le_p(&req->para.dst_data_len); =20 + max_len =3D (uint64_t)src_len + dst_len; + if (unlikely(max_len > vcrypto->conf.max_size)) { + virtio_error(vdev, "virtio-crypto asym request is too large"); + goto err; + } + if (src_len > 0) { src =3D g_malloc0(src_len); len =3D iov_to_buf(iov, out_num, 0, src, src_len); --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231936; cv=none; d=zohomail.com; s=zohoarc; b=nCId1RQ/ziH6Ml8GIjhRNtGMVhIk/rZzd6fR/kjD1I0p+C/Uz9WGy0SNYQPVsBBhT/Tsw2Ww7TBxCwnIH7MhhV/nRJctfwZFY399LBFGYtv/MIrcvvrenHxFmWSXqagW+Ggwls9bFUmtvJartuUT3Y39goYhvycoRIogLjQQjGM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231936; 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=ej1dx9mzEv6uFTt+nidTdAWYhIzVe6HhR8BEsb/fzCQ=; b=WWEi4YHsuvk+QTcYOvQZAfBJL+CBSo/2lQfKgK9lCXAbYayzoYh53xs/sa08XSuVKU6aqePWuVgJ2lrmerckZvs1XyUNO15pUokt2fd42vBwqwn3rIYtK/Foljdb/Lq7ESHGQoZ4ZUq1U6JtoD9E/liC2IYyj7a8ra1DrxkD2c0= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177023193695963.215687305539745; Wed, 4 Feb 2026 11:05:36 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniAw-0002M7-Og; Wed, 04 Feb 2026 14:04:30 -0500 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 1vniAs-00028y-7z for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:26 -0500 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 1vniAq-00088d-LV for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:25 -0500 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-479-NbZizNR4OYGALe_uz2zFbg-1; Wed, 04 Feb 2026 14:04:22 -0500 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-435db9425ebso158623f8f.1 for ; Wed, 04 Feb 2026 11:04:22 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43617e387b9sm8913503f8f.12.2026.02.04.11.04.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:04:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231864; 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=ej1dx9mzEv6uFTt+nidTdAWYhIzVe6HhR8BEsb/fzCQ=; b=KWiTDJYSE2woVhiWD/fTQc4JmWJxQClODgE1OpEhHu8AU+UueFeVjaa6KfcLeQe1EUMbB7 W8qfdTP0IuLBw1QAx4YU/t5rji3bytgHn/bNydJresMgAHqEpO1DHOILRK1f7UBHlC0XGp UmytxxRzmSYqESFcLUkntozIMeZpCbQ= X-MC-Unique: NbZizNR4OYGALe_uz2zFbg-1 X-Mimecast-MFC-AGG-ID: NbZizNR4OYGALe_uz2zFbg_1770231862 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231861; x=1770836661; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=ej1dx9mzEv6uFTt+nidTdAWYhIzVe6HhR8BEsb/fzCQ=; b=Yby09ilfQH31v/m5n+DbB7yxSMk9ShmzCYL0PObrL/OlVQ2RU+ZDMe/66T/Uy09IA2 HvguspiLeHIjLxPRuZH22WiVwN3fGDw/fNBldptvyoV0Z6xPzR89IgWgwB1SNdEiOD6S CdEKe0LF4WgxR9nySM4mfFyBrE6Dti9dUrtBtaeMsHNzus2Soebj5Ls4Zm6akoP/PbDf JUsnQ8W8dWcdRxLDl8bHGMuAMmC4bbb9qqCSLnqKAMhlInbx4xsLHQE81fkkYgeupMpr c2BoI5uj0MWW6JAH5Nwa1zozpE9FZ4bZkacDOvaLthORIV9noR6f88R8xeD4B7ljUojv JStg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231861; x=1770836661; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ej1dx9mzEv6uFTt+nidTdAWYhIzVe6HhR8BEsb/fzCQ=; b=XSJ6Jg+aF5CSHqibsuiu/ZN+X35N1sM5fuePqV0a8ZG53wk4rsj7lxEsHYXf/5i+bT oDCZ/w/NTaN0/d2vUYrgKsTlr1Eb9AicTF9kcG6YefJI6hg5vvEbir/6bvAhZ358Oold 0/8SOeRaT6oPpecczKJ5u/nN+xSeNbEWwlFYZB0FFwMiVxeLlpcu1arc3xZEThfktot3 fh3X/lXVmMTdOZ0JMq+b66fDBa4j7QG+WeBZaOq6xBSi+LUIRFS6Qmrci/HqSgt6AmfR zdU3mTSCWvWY5cRgGndYdVbn5xhfmqasfv8p1+9uozMH5SQTOyFayuyz4YqYhlzMr451 3YrQ== X-Gm-Message-State: AOJu0YxbOnsaoAnyo6+Bv+2qZwejXyCOLoxkTdkFtVROMXV1dye6hBZT FTM8ePwII/6nOinPO22h389i6e0c7qYMWeB67yYZfhO1LT0j75UCYJZj/0DtU5jiRuZ10rcDmla niqd2Jl7MEmVTo0fVkt/28YUmo7aYcA8hs+AEV4nVM6JZ+L4fSNQDQo5YAGUqBfF+nDYa8IAdvQ iqBQPBrvASHxOM2WE6tYjpMu4yhF2/4o+uDQ== X-Gm-Gg: AZuq6aLd5XcZ0PjAPLFejfg5Ud+ZJgtbl+xHi6FdBqUJcNkCrRn1ighBrz+dwyJltiR xgWDNQ7x1EUa+ZIXEKjnziYVJTtkCWSPAmMPCwkheqjW+fpMvPFZOSC+9vT5CK8C/aEeAyEeTbl IJP5x8aviBIIAhaQGRxbWbuxxr6qk8xgIUQM9cXHRCPnGXfJcniUFCplYokrOWcykcqasYFffrZ l1g9HtrQ0Wkx0tvyz978Pxg7tW7zqP0EzcmRPPM+hF8cQMqcMd+fGIhhKMOcBXdisbmIKb7yJRV 4fVWMfXQsDyDt5QeIN9dsbYA5KSvcsXgkGPjJWLYvuwCVvnQCx7MdpYQiz+T3TSyLwBCvmYCdQc Uz9mC9NpgW+sHGsCYxQXbO6V5s9bB5kadxw== X-Received: by 2002:a05:6000:2281:b0:430:fd0f:28fe with SMTP id ffacd0b85a97d-43618050e5emr6402932f8f.31.1770231861213; Wed, 04 Feb 2026 11:04:21 -0800 (PST) X-Received: by 2002:a05:6000:2281:b0:430:fd0f:28fe with SMTP id ffacd0b85a97d-43618050e5emr6402867f8f.31.1770231860643; Wed, 04 Feb 2026 11:04:20 -0800 (PST) Date: Wed, 4 Feb 2026 14:04:18 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , zhenwei pi , =?utf-8?B?7J207J6s7JiB?= , zhenwei pi , "Gonglei (Arei)" Subject: [PULL 39/51] cryptodev-builtin: Limit the maximum size Message-ID: <48978afc01e7c419e03c4dd608d0c4ece3832d02.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231939828154100 From: zhenwei pi This backend driver is used for demonstration purposes only, unlimited size leads QEMU OOM. Fixes: CVE-2025-14876 Fixes: 1653a5f3fc7 ("cryptodev: introduce a new cryptodev backend") Reported-by: =EC=9D=B4=EC=9E=AC=EC=98=81 Signed-off-by: zhenwei pi Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251221024321.143196-3-zhenwei.pi@linux.dev> --- backends/cryptodev-builtin.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/backends/cryptodev-builtin.c b/backends/cryptodev-builtin.c index 0414c01e06..55a3fbd27b 100644 --- a/backends/cryptodev-builtin.c +++ b/backends/cryptodev-builtin.c @@ -53,6 +53,8 @@ typedef struct CryptoDevBackendBuiltinSession { =20 #define CRYPTODEV_BUITLIN_MAX_AUTH_KEY_LEN 512 #define CRYPTODEV_BUITLIN_MAX_CIPHER_KEY_LEN 64 +/* demonstration purposes only, use a limited size to avoid QEMU OOM */ +#define CRYPTODEV_BUITLIN_MAX_REQUEST_SIZE (1024 * 1024) =20 struct CryptoDevBackendBuiltin { CryptoDevBackend parent_obj; @@ -98,12 +100,7 @@ static void cryptodev_builtin_init( 1u << QCRYPTODEV_BACKEND_SERVICE_TYPE_MAC; backend->conf.cipher_algo_l =3D 1u << VIRTIO_CRYPTO_CIPHER_AES_CBC; backend->conf.hash_algo =3D 1u << VIRTIO_CRYPTO_HASH_SHA1; - /* - * Set the Maximum length of crypto request. - * Why this value? Just avoid to overflow when - * memory allocation for each crypto request. - */ - backend->conf.max_size =3D LONG_MAX - sizeof(CryptoDevBackendOpInfo); + backend->conf.max_size =3D CRYPTODEV_BUITLIN_MAX_REQUEST_SIZE; backend->conf.max_cipher_key_len =3D CRYPTODEV_BUITLIN_MAX_CIPHER_KEY_= LEN; backend->conf.max_auth_key_len =3D CRYPTODEV_BUITLIN_MAX_AUTH_KEY_LEN; cryptodev_builtin_init_akcipher(backend); --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770232150; cv=none; d=zohomail.com; s=zohoarc; b=U+41HsuT30GR1WREcCeKOHJSo861WWetsDIjwvZSt4oleZPQyvlyoxKZgrw+IiJ2LG9ZQXJCwA6w18+b/zusxUABE2RoZ18iwywyLPnLZaVhNYx7FAxym0h0tIO/feTf7IFzByJzzbfaaBlEL1jNKLVIaAPDujxZ5j0IcYH1TXU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770232150; h=Content-Type: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=03AkzHRloJMk9ZlcKj4KKHLNBGVRlt5Fh/16c/Y11xM=; b=ZSK6XkO1Gf/0E4lHHQKmuMQx8lHK/pRrcAaq5IhvJ4GWJiB6QX1/bk0XgvRo53qfs5chRNzT1S8JzsaeU1uelm6V/MakCNmsdcnHFw3h7OpkeLAkb1BJt31ayLtbgO/lKRy82eT02whmhQjJNVhwdt+SGJrBpoiN62eWv8e8XDg= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770232150936323.78573984588274; Wed, 4 Feb 2026 11:09:10 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniAz-0002hd-4H; Wed, 04 Feb 2026 14:04:33 -0500 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 1vniAu-0002Jd-La for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:28 -0500 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 1vniAt-00089K-2g for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:28 -0500 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-622-wMU2un5hNEmHSOvxLxHNig-1; Wed, 04 Feb 2026 14:04:25 -0500 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-4325aa61c6bso145234f8f.0 for ; Wed, 04 Feb 2026 11:04:24 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4361805813asm7970389f8f.27.2026.02.04.11.04.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:04:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231866; 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: in-reply-to:in-reply-to:references:references; bh=03AkzHRloJMk9ZlcKj4KKHLNBGVRlt5Fh/16c/Y11xM=; b=Zwwy/lQOQvbe0Rnve848+LowkH49Outg0/vpsQD/51XQ9IOdavKACMlf+H2JuR4tPWQMTU oI4+pCj/iSuoIXLXAlhZeNEwna4/5jIdih7/ZXIB53MTxnKW48rpP/ParUSNnHzE2nvb8w tcyFz3lAQbre8tCV3+Xv+0xJPKHeUMs= X-MC-Unique: wMU2un5hNEmHSOvxLxHNig-1 X-Mimecast-MFC-AGG-ID: wMU2un5hNEmHSOvxLxHNig_1770231864 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231863; x=1770836663; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=03AkzHRloJMk9ZlcKj4KKHLNBGVRlt5Fh/16c/Y11xM=; b=BWiyFx7GL3d3fI2lM3Vo4ratpt3sIbuZq9W6fgmuqEYAZwAAKkeftXJD1+KOOBSXx3 Hc2HAJWbw5b4u9LoCg2a/uLS/uM7L4e+D9fyrTMrd2VaQbbDq5m5FxrnA0j1HNMO2Z0q SNgzDC34Zho7ccQx89AA9Qaldb7nWM+0macP7eppw/yBJRr7ic9wZDJkEjRPDIDp5/oX VvlmTv1nfBDbEH0SnnlltKCrA52x+bhN6ZWlcma4rxvWbBauAxXeusLH5D8IEsePGxVK 6zbjH8cELVSj8cjE29utCRumjwdQVqnUTapJbSBkAsp9wZJXIkK+Hq/aX9iVPm1YduaX dWZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231863; x=1770836663; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=03AkzHRloJMk9ZlcKj4KKHLNBGVRlt5Fh/16c/Y11xM=; b=IdzHrU52866xXRPPnXinjT5R8z7mq1ePAzYOzaxVi+CZbIVmCCYt3k7mDrgmgXxndJ 2D1RIrnDPlRxD2cSt9vrLTdlc2hMGGtwQqEf/HD1ctF4kaZhz8G9ZqyIUKbGYj59cxId S6TNe0PvtxyhC4ktXuMRZjIebxq3gsluQA3MI5FUs1AyQQkLkW489wdIueqo2uS32+R8 Q3PvQssWdCTnzKFx+AAi9wvSq4/8mvuMu0mmEuyq30vSN16OHTgi4tVNBnJjTi4M2H4a VaaLAg2xeom5F3tcezCz28E6AK5Ph0Wkj+g0Ntc8Gdw1dik5EEGdWuuPCKCZHcUY2cVT Z1Yg== X-Gm-Message-State: AOJu0YzEy4ZTBRNKr7Rd90DppSzuKGrsdCc7K8JqEQ5g1DOL4lQCUgti DevBmu5RL6nlfvXhBfQATO5IWYbIMIQgmFRZc3vK0uRz5OCNBmPJHVs/y5DWjJdeVDq+jTstq1H zx0xSskgxwYTR/TN0Jqvupb9cwixMSy2moAnOJsbn66BpwT9aFmzo/ODHH0IcvbjA1wduY6Vb/0 3O+Ujpw2QcFE23KE0appnoE8gUbC33UMmwVQ== X-Gm-Gg: AZuq6aL1QF9S1fqXxjldJkR7C7HgvvPAlqsoyTccV/sd1yWg2J0TQcQ7SaJusoY86oe QJT6GZ1PgWazqfBA03u9NEwCpm3yibOOOmEy0iWc6v5N9qpPsMN68GzZIzsFuE5MI/N6lMQbBfy +fVpQx6mQWTTCq/am6a5ESvOqs1kPjpmi0B5TvdiBtkdaYbwAMaPxNADVuuCZLvHE/Bk98djpMf Z2QyhIbYPxeBmS8rO77eznqzbAOqlpnPuWc8Y54SzVl7K/goTAgsc4j3ZcZQ6iZRjAPcGI/F/E6 Tk/mnO93+AIZkTN89vPmCt9DsHuBk2p++4coS14gXn7d49k6O9j91RAHrUXtyfsw2dSq/Ve97X1 cxzDGLBsp9NCZqaHdCvihcom4p0yyMKAA/Q== X-Received: by 2002:a05:6000:200e:b0:435:6c8d:d017 with SMTP id ffacd0b85a97d-4361805558bmr5462829f8f.32.1770231863501; Wed, 04 Feb 2026 11:04:23 -0800 (PST) X-Received: by 2002:a05:6000:200e:b0:435:6c8d:d017 with SMTP id ffacd0b85a97d-4361805558bmr5462767f8f.32.1770231862964; Wed, 04 Feb 2026 11:04:22 -0800 (PST) Date: Wed, 4 Feb 2026 14:04:20 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Jean-Philippe Brucker , Eric Auger , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Thomas Huth , Pierrick Bouvier , Richard Henderson , =?utf-8?Q?C=C3=A9dric?= Le Goater Subject: [PULL 40/51] MAINTAINERS: Update VIOT maintainer Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770232152562154100 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jean-Philippe Brucker Unfortunately I can't contribute to QEMU for the time being, but Eric has offered to take on maintainership of the ACPI VIOT. Thank you! Signed-off-by: Jean-Philippe Brucker Reviewed-by: Eric Auger Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251230154844.325364-2-jean-philippe@linaro.org> --- MAINTAINERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index d049270777..ebd27cd7f3 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2197,7 +2197,7 @@ S: Maintained F: hw/riscv/virt-acpi-build.c =20 ACPI/VIOT -M: Jean-Philippe Brucker +M: Eric Auger S: Supported F: hw/acpi/viot.c F: hw/acpi/viot.h --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770232161; cv=none; d=zohomail.com; s=zohoarc; b=NznPOQhNoIcQMJI2aqyRn2aMmLkY/cY8F6slT0x6vX9PVokWKVQRuJW/zO1pv49Y4LkhY5wjzq4OeRNrNsTvg7DflzmgYOOZp2jdo/MHJMxOcQPzku1QzON5hmEStRe2p91P0wPfQZiNAvUicNj0RTZmkWzMNH/UvDGPSf4YkN8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770232161; h=Content-Type: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=Fi6E2clXTxrQ+L0LRK6W+AcUGXgcfu3jZgG8jffOEZY=; b=j7XuMmbu7rIszOnASBiivS5HnUjvVjgXb+5mMrs9DXvsPS9nAAVbFy38jHC8aJD4Vi68k6GFLA6TTN0/Q9aQ/G4YScbjwqBcAKZK2z/HrPDB2fWIY49318EibQf/D0SjYJOGMcGZ0bvf6E9VzLMjGjo8+7tRA2IVLoq2e2Ztwfg= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770232161040360.13766614121505; Wed, 4 Feb 2026 11:09:21 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniB1-0002sA-2x; Wed, 04 Feb 2026 14:04:35 -0500 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 1vniAy-0002dO-KS for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:32 -0500 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 1vniAw-00089j-Ks for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:32 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-688-BDPJjpFcNHG8pinlBXastw-1; Wed, 04 Feb 2026 14:04:27 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-480717a8ef9so1645165e9.1 for ; Wed, 04 Feb 2026 11:04:26 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48317d2c88dsm5759365e9.5.2026.02.04.11.04.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:04:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231868; 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: in-reply-to:in-reply-to:references:references; bh=Fi6E2clXTxrQ+L0LRK6W+AcUGXgcfu3jZgG8jffOEZY=; b=YJVkczwyMMEAukjcshesnJKG349LyuHNjS1CuPo/nsfayqNlXMtUlrAkvFDWcPMaYk+mDh HeSgRyCpJUP/17cD+W9rp8nOD0z1WfJ9D6jLPPuhMrIU4knhkiAs6cDAuJXLY9aIs7Lm1C HTski5imqusr2iyOtQaw2O4IugXwxtY= X-MC-Unique: BDPJjpFcNHG8pinlBXastw-1 X-Mimecast-MFC-AGG-ID: BDPJjpFcNHG8pinlBXastw_1770231866 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231865; x=1770836665; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=Fi6E2clXTxrQ+L0LRK6W+AcUGXgcfu3jZgG8jffOEZY=; b=bPR8TTOojnZkHRu7nzGm7dBRys5WD6jH6JtaHMtlfsm7uPfYIHTu26Yahc6PDoOTTi 165sqIDTiBkxRfmoFZ58XidPtpwZF+QJP+zRG09rOlaiszNPYEzFOiON4IpW9ygZEg1U svSyjZoBKd2XyHtm18CF6PhicWDCnBHnQgLK3zBKjRrY700iyURGhEMv05aWY5sGsXjQ Al1QO209fwRB2iG6s1oIHxB75ieglDXsjZnOwOVCYyjETfauAo2pAmaQn07jSIxxUvHE sbIt3U0sW3y9By2yhYpmkcZSgHLkcneixTlhPx0dsKuu268vVhPXiCUJXq/jG77I4DhQ +mvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231865; x=1770836665; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Fi6E2clXTxrQ+L0LRK6W+AcUGXgcfu3jZgG8jffOEZY=; b=o0TC0Fr1RFBABeiYuOGMYcb8p+uPbI0XASWEcbtk41LbtQuEvoqbm9wM3Pr/HZUYyr uXH7zaf2BfVhxKrXY/FFe/lONX2xKuNKGiXlWlMo4S38xtFLDktxsAuikWV77rZylfqF /6Xm4XxIFBoxwetlcwpEdc0Ei1K7iFYZA4VvjZEYH5Ex8WZLdHEYA45gqxOnRR1f7lAL 2BwMyLMFnSUAXrDlpTjzBF6q/XUR6+yj1G96UWHl7I0iMu02xGu/phTyKJhahbYyT7To T/3qzSv77j5imyTJpUR8U2v4Ccahi9eA0X0CY7p/4YQXhltwvIdsc6+B3hP/j9CQaJnb hpNA== X-Gm-Message-State: AOJu0YxQ280OHXDjWEfhkDqJhp73R3zmaDSHUhzZuxjPq6XnAgtfhTxn vcShTzIbkDmY0yZ/Dck6/te5cACH8I8TRNXBUK2lQZHt5sMQ3kcH31xCaXUvi3i0oobvBgcnVmV uvGdaXW7ml+BIQIoj28FFCYryaQkroB9CcMiD/Ans2JidoLW4XtjKbKbAUWpMnXFblYdPKfESp9 0VDjrr1KU/dyRqCLdz8cnrMCB0NlrjdfRToA== X-Gm-Gg: AZuq6aIyBauRAESfnlxaBo5rplyikW0gDeZuYd41R4uyNX2obR0F/UeN/MQ4FcRJvTj dS3fjErOgzI3ISoMMfqlbJuxelCEOWZ9mW/DQquYIPLCYjEUpSeFgJnqsNVs+ZXt9Vt32Qejc/1 rTXpcHMBpaSpT1lIg+zoT6yrHeuMmvnZFMrSMTt0DgC91sIbMFidoDnIRpQgvIshWX7DVqrRgig 577EvZYd4GZ8zQLa2nnGeOJGL7XCIDhxZLhoAOglaMEkdDspM0Rp/jPDd9c/b4O6vdn0cWNj+LJ ZuSAaxNNzsuAlJVEhoVwzA6DIATafpQIVmhJp0gUzSu0d9fu5jLzlCh8/GzDyUq27uHvEL4lGIH MajTw+jinbrDc8B8J9+6a/xQ+jv0xVv1ElA== X-Received: by 2002:a05:600c:4e94:b0:47e:e2b8:66e6 with SMTP id 5b1f17b1804b1-483179c893bmr4272465e9.14.1770231865551; Wed, 04 Feb 2026 11:04:25 -0800 (PST) X-Received: by 2002:a05:600c:4e94:b0:47e:e2b8:66e6 with SMTP id 5b1f17b1804b1-483179c893bmr4271935e9.14.1770231865132; Wed, 04 Feb 2026 11:04:25 -0800 (PST) Date: Wed, 4 Feb 2026 14:04:23 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Joelle van Dyne , Akihiko Odaki , Alex =?utf-8?Q?Benn=C3=A9e?= , Dmitry Osipenko Subject: [PULL 41/51] virtio-gpu-virgl: correct parent for blob memory region Message-ID: <81cb15cf3774140da7c17341018a3852f920acb5.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770232164829158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Joelle van Dyne When `owner` =3D=3D `mr`, `object_unparent` will crash: object_unparent(mr) -> object_property_del_child(mr, mr) -> object_finalize_child_property(mr, name, mr) -> object_unref(mr) -> object_finalize(mr) -> object_property_del_all(mr) -> object_finalize_child_property(mr, name, mr) -> object_unref(mr) -> fail on g_assert(obj->ref > 0) However, passing a different `owner` to `memory_region_init` does not work. `memory_region_ref` has an optimization where it takes a ref only on the owner. That means when flatviews are created, it does not take a ref on the region and you can get a UAF from `flatview_destroy` called from RCU. The correct fix therefore is to use `NULL` as the name which will set the `owner` but not the `parent` (which is still NULL). This allows us to use `memory_region_ref` on itself while not having to rely on unparent for cleanup. Signed-off-by: Joelle van Dyne Reviewed-by: Akihiko Odaki Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260103214400.71694-1-j@getutm.app> --- hw/display/virtio-gpu-virgl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.c index 07f6355ad6..6a83fb63c8 100644 --- a/hw/display/virtio-gpu-virgl.c +++ b/hw/display/virtio-gpu-virgl.c @@ -120,7 +120,7 @@ virtio_gpu_virgl_map_resource_blob(VirtIOGPU *g, vmr->g =3D g; =20 mr =3D &vmr->mr; - memory_region_init_ram_ptr(mr, OBJECT(mr), "blob", size, data); + memory_region_init_ram_ptr(mr, OBJECT(mr), NULL, size, data); memory_region_add_subregion(&b->hostmem, offset, mr); memory_region_set_enabled(mr, true); =20 @@ -186,7 +186,7 @@ virtio_gpu_virgl_unmap_resource_blob(VirtIOGPU *g, /* memory region owns self res->mr object and frees it by itself */ memory_region_set_enabled(mr, false); memory_region_del_subregion(&b->hostmem, mr); - object_unparent(OBJECT(mr)); + object_unref(OBJECT(mr)); } =20 return 0; --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770232176; cv=none; d=zohomail.com; s=zohoarc; b=g6K9H0pXuFSz1DdiGWZk4L0jRDadAe+/pQN0nK2nef/VNGD2vOLsMp8WD640txiiMP4Thl2RTkYKl20K1GCOzf13Fw7tXzKqFluGvDodPI80d3B7xQZWINoS4Pn8QI3pK1bE35gT2Zk7nMgr20qHDOvsH+cTJ9SmhOQfDkCukfk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770232176; h=Content-Type: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=240llcH1KOsRD5XX9QQlOGkvt40lI+orhfBCWyP5XqQ=; b=juJwU0ny7vLmjrVCUkWQWG1bN7F/F0p1C0NRMuI6qw+JyvEReWCZN0McNLn7WD1N+WwoEupavVXu2UlcfMS+QbcOZZX04ZCSOTZgGijCiDu/gTfaUAHKS8r/tqiHds6aZT9Ed4xEwTbhcq5JtRA7qNhF2win5yzhNS/9wNPvvKQ= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770232176619794.5619651393199; Wed, 4 Feb 2026 11:09:36 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniBc-0002yi-HO; Wed, 04 Feb 2026 14:05:18 -0500 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 1vniB0-0002s8-NS for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:34 -0500 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 1vniAz-0008AT-4N for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:34 -0500 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-372-Y7LmGiV8NMSOJrF-6O5mwA-1; Wed, 04 Feb 2026 14:04:30 -0500 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-435ab907109so103593f8f.3 for ; Wed, 04 Feb 2026 11:04:29 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43617e25683sm8191167f8f.6.2026.02.04.11.04.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:04:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231872; 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: in-reply-to:in-reply-to:references:references; bh=240llcH1KOsRD5XX9QQlOGkvt40lI+orhfBCWyP5XqQ=; b=Et09Ypx49lgbnGVKhAfN0VqjI+O5Lq4NRohyT2OTd8KuLMoyFRdwnvlP09cYC2KFbIPmGi zSwjwoS67HqFaSMWWvzYD8YXJq2+0A0zm7CD8qe24IF5I/VfdC7/t/6DI9DhtaRRGdwAVm cR1iiD7NSw4Q38RofPEj4TRqdRw6PT8= X-MC-Unique: Y7LmGiV8NMSOJrF-6O5mwA-1 X-Mimecast-MFC-AGG-ID: Y7LmGiV8NMSOJrF-6O5mwA_1770231868 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231868; x=1770836668; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=240llcH1KOsRD5XX9QQlOGkvt40lI+orhfBCWyP5XqQ=; b=SRWbqZCEArh/qbqpjtgkShhjWckjHHZtnOT/1zmV1XEloQstlWttQBXLqKHWTrsWmp M6AvjuJpuwKgJ5ej2Ei4aLTq/fL9EezwiCrNLPdPOcuox4QSlTs3MKH8ZmSyQBDIChYL Ax+wJ27LjQuuvg6vdynxGiSDkSne25YQ9E2D9vHzPIbs6VvSKvdQttTDiAqznqpa+4fp 21ldPsJTLBBeSrBxwnT+L23zoRZqXPXzuqR82HlTrka9TtzWAKg+rROaOtpR5g83EBnf rE3YCqI380G60vq4mSe8ef4pQs6b2f9THUUueIPqT8YUad5VIYSbWTzWJmEZEtZEMGvy 0uQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231868; x=1770836668; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=240llcH1KOsRD5XX9QQlOGkvt40lI+orhfBCWyP5XqQ=; b=d4pAI0RlJdraGey+dLvrFgAe4p26Jb2KccQjK0fJQYbsjHU7OdPYoAc3FDrZFeeamv YnqwOCdCNulNYtYSZxCqWE5n1uFpDvhkyUdQRK9EOwj+K61qbIFkQf8OPEbmoHzxgszy w5gsnsCa5iqWKYqmOliE+tDB31QyKEXISEz4rxxT5wUBUjC8KHZJ22nYofdl1JhDNnM2 P4ml04s+rNMVASvFLeY5EC1aspye2Iz6Xzr5s3sTG0DYTjCO6VQhGZlejA6vpU5/eB+Q lkcbIJYW/+64viuq5a3R4u6h6JdxDWOy+kKI3vCZZOwTjics282I+yLiFXT3ULCrWYaQ ux3A== X-Gm-Message-State: AOJu0Yz5XoUK/DSBUNDgfLKfmMxhAoP06TSztZ5KcZPrYOyGAGBf84Jv 2uCEWUcJuV5x+8tzi1vYi6pFXXLHxHBk/h0LuY+UfkezrtEcSvqeKPq1G2co+AYIWL5+pP9M07L YqaexMg4s/ideTQ479clKzk+9v6sapKZ/yF+is3ds6TRLL1ukUBrJ+z7eOYG6ceMwASUBq0C5+6 F2355LgD2NQ6tu5QATYMfLnqKEG+CY9Q6N5g== X-Gm-Gg: AZuq6aIvpM9+0pgseFox7pz0uYhB+XPNXWXbeykdAMYNFHPn+8c/1Z/HBELA32P8lPx dAv2vL0Ys9/AfIKlM75B1NvI4EZGC8ZDJow0vTtnPCO9PGgc6uZM12UTosxZIGz0tefaRRq/oj+ mhoFsTwyAk4gTKjfFzdlfRzA12fDHNhsfVU39ZCF6kwv4cKUiDYSn7BfZbcX1LDq80wOv1PM3S+ ncUfnHpVarczuvi5WVuVPUwTjv6OGXn+m8133r4kVhq9uwu0dNWDRN3+6sLnRBrjMTzd9BGIped ppZbJJJv6N14r223SpQoxifnpz4Gb00j7hpTu2cgK60a04QE5cYKgVS6cwspziROnEbN9S9TvWq hHB/gxzCc4ZAc2lgbIEnTA3XaLmNrrGmKQQ== X-Received: by 2002:a05:6000:240e:b0:432:8651:4071 with SMTP id ffacd0b85a97d-43617e3c672mr5591315f8f.18.1770231867695; Wed, 04 Feb 2026 11:04:27 -0800 (PST) X-Received: by 2002:a05:6000:240e:b0:432:8651:4071 with SMTP id ffacd0b85a97d-43617e3c672mr5591257f8f.18.1770231867191; Wed, 04 Feb 2026 11:04:27 -0800 (PST) Date: Wed, 4 Feb 2026 14:04:25 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Li Chen , Li Chen Subject: [PULL 42/51] virtio-pmem: ignore empty queue notifications Message-ID: <7d3d3fa20b856b3a13b44c0d0824e3bf8bfd9219.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770232178956154100 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Li Chen virtio_pmem_flush() treats a NULL return from virtqueue_pop() as a fatal error and calls virtio_error(), which puts the device into NEEDS_RESET. However, virtqueue handlers can be invoked when no element is available, so an empty queue should be handled as a benign no-op. With a Linux guest this avoids spurious NEEDS_RESET and the resulting -EIO propagation (e.g. EXT4 journal abort and remount-ro). Signed-off-by: Li Chen Acked-by: Michael S. Tsirkin Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260106083859.380338-1-me@linux.beauty> --- hw/virtio/virtio-pmem.c | 1 - 1 file changed, 1 deletion(-) diff --git a/hw/virtio/virtio-pmem.c b/hw/virtio/virtio-pmem.c index 5381d59282..c3b3299c9c 100644 --- a/hw/virtio/virtio-pmem.c +++ b/hw/virtio/virtio-pmem.c @@ -73,7 +73,6 @@ static void virtio_pmem_flush(VirtIODevice *vdev, VirtQue= ue *vq) trace_virtio_pmem_flush_request(); req_data =3D virtqueue_pop(vq, sizeof(VirtIODeviceRequest)); if (!req_data) { - virtio_error(vdev, "virtio-pmem missing request data"); return; } =20 --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770232231; cv=none; d=zohomail.com; s=zohoarc; b=j/bwPB1rMVqevmrRAZC3VVwYRbDNWR6LubhBbqGidR8HjN0D4QaRFdLq4BKjkDLvK/DTka3ZZtQCYDcsIYYSTfFw/JvqGgo0mvcT2Q/S8s4spxI5BhRKdZY4cs4Obu13xR3+rqwnKToiIiCeG8bNQVmmlSg3EYV8UjEgEPgqqFI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770232231; 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=aMlqbmSKooP03sc2CostLcGLDMkW4cYnire/pDDEN4k=; b=fiNpFwkB6yZnMf0j4LWfvZhKA1+6Socs31bK7xONBO184PvnnevnscR16oMW0QNMHBbfv7R10KKtj06MtjDJ3hekRXnjhu/Gygc//sDdf+gmbTdjqBwyVLILQunf/anfArckQiHJC+qgGO0XbX7OJ2sKnB0Gdk01WSYCQoXUCA8= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770232231504426.7164658060402; Wed, 4 Feb 2026 11:10:31 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniC2-0003jO-3h; Wed, 04 Feb 2026 14:05:39 -0500 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 1vniB6-0002xO-0U for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:44 -0500 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 1vniB4-0008BC-FO for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:39 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-150-7ayJdR8fPDS9HAl1poTmXw-1; Wed, 04 Feb 2026 14:04:36 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-483129eb5ccso1267515e9.2 for ; Wed, 04 Feb 2026 11:04:31 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4830ec4a76esm43230005e9.1.2026.02.04.11.04.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:04:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231877; 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=aMlqbmSKooP03sc2CostLcGLDMkW4cYnire/pDDEN4k=; b=Cy9WruY1y7K0WTJNo3hjZvLKpVgEjF4GxR6JllK1ytkylzU+bfPXEw+Ey29xYQ7T7uXFYI ZU2MW0e1Nzn1l32626nJvqotXLNog+HMC+iiztGffqK6G7Wlklv47Qn+ZoXBWjrP2s+pfe Tj+UTqkCujQtvn3ilAOkydLOCJ6v/Wc= X-MC-Unique: 7ayJdR8fPDS9HAl1poTmXw-1 X-Mimecast-MFC-AGG-ID: 7ayJdR8fPDS9HAl1poTmXw_1770231870 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231870; x=1770836670; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=aMlqbmSKooP03sc2CostLcGLDMkW4cYnire/pDDEN4k=; b=iqO4VUXZPcSPVxSRgtiwJ+5n7rr2S6DtXLsRILQtMK6vyG+XCRJtxztiK+sM0TRKRi Wr0X/XLi+SExsAK255DX1R4sJFv0x4duEMKkZ7WsdoV/ip3fQjc3XkfC2coSWOAtdzbG in32Xs0Oqd0VRVonv0Dr/I8zP4Jb6voYIOkrkHPNEUOE0cPPP97TG8y6RGD+AY0/MG0b VVdLFMIAdw8VpFQ1q9KJfo7oKMX/wpMijxvjAeP/WtXH2qQzpM5qA2zlO2NbnZoUebx1 EPt0QKVsIblA4woWqY/9F87r22TMUUF86aZccj3ypBu2tNMPMEHZ6IvgTCHDOdvnGqkO Zohg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231870; x=1770836670; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=aMlqbmSKooP03sc2CostLcGLDMkW4cYnire/pDDEN4k=; b=nTogCuIEECoBcheWHgROhUHDomkertHdFC3PQXh1r0t1nAfC4wakepdvEiuKnviPzk 3P5AlEJOQPiyTERCB8l8/H3tfvmiy/mVCuhmBh7mO1qUWuAe6qCJQTkakw0BEuN/fbZF GBnmuOZRgCX1+jmgfnpd6hPG1W8245O/6wR2Wku9G148xa0Q/QA8PhG9or4rlY7Egdhm fJNc3rN/i3zdQ04Zv7IUAizJMxfYJjybx079jbu3qNLQuRbIoPNFdvWXeRfiRl6y8pA7 Ay7MCzFUQIWfUJWM6yxsk6C5GN4ilzKXuTh0E+waNHhshElsG6Evp52CYBMFchXMIG14 6w6g== X-Gm-Message-State: AOJu0YxqwXKzpkH4HKE70h6MEuhBPAxQqiVmq+1YWCubcHXt67+4HZhj fb/YHWsHS6co12nFvUC8IjU8WtSVcyQOKhXBbCkexZCj2dqX+0cxSWuT+19lmEORv2iZf42UIfo zttpdTCTYpKaLCUnV1b7vykczRtf6jcSKWsBnAzsKBReETR0SVvF7A20pTanH9/RHZzD6ChfzKX SBB05Lqkq6rZ2hieYRCw63gNf+xWG7NkPRCA== X-Gm-Gg: AZuq6aJUKe99XYALUcHS97tfUT9ViYQS0akudGaCDylxf27Dh2iYdAv0iR7JDTo81C1 aIKXc972NHWF7WUZ/j1S40OyRgF1mdgbaAghO9qBnpcLoRQ7Tc48M1zZ/IGViJZyb3qZ2xVkz/C FZScv0X+BaqgFHXiZZZiMGR/9zJZ8Q2LGe3lmrBZqOV3jI19d/Oq1gIKmJN+vt+RdW6DU+A7Bfz pkG0lMAHZ/uFGAqQn2E6o9Z/idoXhi0HyWsIDZYoVjOn2D4FtEldxBVnzGnoOpX+IJMu5JWrGuf k2tXDmzv8qCdf03cHUNs0+6I/+CF3qh9Qiup5Dr2+xw39zSSNfVrR7iVZ6LYD8zZciIn0l4jKAL DOLtNIxLIH7zKI4KEB4/UwJLNlhk03RpUvg== X-Received: by 2002:a05:600c:190a:b0:480:4a90:1b06 with SMTP id 5b1f17b1804b1-4830e9b7a3cmr51073185e9.34.1770231870026; Wed, 04 Feb 2026 11:04:30 -0800 (PST) X-Received: by 2002:a05:600c:190a:b0:480:4a90:1b06 with SMTP id 5b1f17b1804b1-4830e9b7a3cmr51072675e9.34.1770231869491; Wed, 04 Feb 2026 11:04:29 -0800 (PST) Date: Wed, 4 Feb 2026 14:04:27 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Honglei Huang , Akihiko Odaki , Dmitry Osipenko , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Alex =?utf-8?Q?Benn=C3=A9e?= Subject: [PULL 43/51] virtio-gpu: fix error handling in virgl_cmd_resource_create_blob Message-ID: <3aa1e2730e60a54e497a13f6af98bee3390a1074.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770232234545154100 From: Honglei Huang Fix inverted error check in virgl_cmd_resource_create_blob() that causes the function to return error when virtio_gpu_create_mapping_iov() succeeds. virtio_gpu_create_mapping_iov() returns 0 on success and negative values on error. The check 'if (!ret)' incorrectly treats success (ret=3D0) as an error condition, causing the function to fail when it should succeed. Change the condition to 'if (ret !=3D 0)' to properly detect errors. Fixes: 7c092f17ccee ("virtio-gpu: Handle resource blob commands") Signed-off-by: Honglei Huang Reviewed-by: Akihiko Odaki Reviewed-by: Dmitry Osipenko Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260113015203.3643608-2-honghuan@amd.com> --- hw/display/virtio-gpu-virgl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.c index 6a83fb63c8..741728cabb 100644 --- a/hw/display/virtio-gpu-virgl.c +++ b/hw/display/virtio-gpu-virgl.c @@ -705,7 +705,7 @@ static void virgl_cmd_resource_create_blob(VirtIOGPU *g, ret =3D virtio_gpu_create_mapping_iov(g, cblob.nr_entries, sizeof(= cblob), cmd, &res->base.addrs, &res->base.iov, &res->base.iov= _cnt); - if (!ret) { + if (ret !=3D 0) { cmd->error =3D VIRTIO_GPU_RESP_ERR_UNSPEC; return; } --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770232146; cv=none; d=zohomail.com; s=zohoarc; b=ShHRZECIbhEhwPlIX7cgChRd63gu/Vj5b09BCmE/TYXY1H8rc61I9pNQunjNkWiIojBdeYJm0sd2MVtPFMHGo5BoQgf4vrKOwAyCZ5zWchvi/WxoNDlcXKC3T3nTpWjy66J1U4+TZ8OOXsLOtdKxLksl7EESgsXmdlEYuofBxiM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770232146; 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=MYOHd7OZhpLHGlsgoLBWOeyBZyIml693wIxtgYusuig=; b=X0JTHTiukV2lSeXokz5WF4PXZFwxH87H58qz2mS748LYoDD5M1J03MV6Do93sKY3HevRQWsIiCiQq4eYopkT6rUBJUzq/0YmdsU+WiBzDpuvDcU+mcIt5e0x+6PV9tov+AxUg1upAqDFvjevbXj6b198V1l3iwXbxzK+qUrFn4A= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770232146586531.2214303135258; Wed, 4 Feb 2026 11:09:06 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniC0-0003hX-5g; Wed, 04 Feb 2026 14:05:36 -0500 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 1vniB3-0002xB-Ms for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:41 -0500 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 1vniB2-0008B0-6q for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:37 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-556-Tf0mnLSUOC-qIBAJFt7AaQ-1; Wed, 04 Feb 2026 14:04:34 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-4801c1056c7so763405e9.2 for ; Wed, 04 Feb 2026 11:04:34 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4830ec6fc89sm25782095e9.6.2026.02.04.11.04.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:04:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231875; 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=MYOHd7OZhpLHGlsgoLBWOeyBZyIml693wIxtgYusuig=; b=UB7ALBn7yU4N9BljTodWk/JnFKSCf8JnhhFWOjvfEGOnmid3DoKQvZ4jTrdNe+QaBk82Sb sAyrtacuFGafgpNU1/1xZsdHLVLDWlQF/HfwXQNqWRPzsiq+iiUzAcfN5/nNVmDXmI9Jq2 aArtQnP8IMobFLDpgzAYTHT88s50ZB0= X-MC-Unique: Tf0mnLSUOC-qIBAJFt7AaQ-1 X-Mimecast-MFC-AGG-ID: Tf0mnLSUOC-qIBAJFt7AaQ_1770231873 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231872; x=1770836672; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=MYOHd7OZhpLHGlsgoLBWOeyBZyIml693wIxtgYusuig=; b=gvKyK3YkHJoed+hemBVh4ZPObTaBjH3dfkOxWlpRkLP88aQnH5+bSmguo0/7Dk89L8 +s8ClpqQbnvSBNw6yUkQP1eBrcmfyM6GE95AWDSereoEdggD93dq+peyATP1Aq/hrn3R PeUywj9YU8kjjZwwsQ3beQopKO2qRZbj50R+4XSrxQjR0Mbq+xDvEd968jAhr8aXWJF5 mEQXMuXFZC9wuUD1MxTPe9vRd7gwvkz9QnsrmwH/u5UCRIoGfhGeMMZJyxUdQ77VRzIS PApu0XxBLVhAenyzMXOmbuLu4WiGFAQ/oqR5l8az34eb+uzQzrRtow3ZDqdUD7o3SJCA XVVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231872; x=1770836672; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=MYOHd7OZhpLHGlsgoLBWOeyBZyIml693wIxtgYusuig=; b=Ndpx7/+tIuhsrkJ95hxwnbqlJupa9PUsVCkwJrNwpZUury8g7DvSeOmF7fsW82pKEl VJkKbqCKRFdtl2tMKwhR4vm/kKLF0zVEmC9v3bCbKKDtQsYQlmnr4aoQsa83Xbeuz+5n aKeRHqLfSHLR3YuhqAx5JagmywpEzk1tNxvtfDNlKJFVODz6RJ5KYweMRuzV9O75P94b uf8mD/pQFbAvH7Bo821yNqCzyUWSgW11rmFh875H1ipr03OSt9xxb+QgLTDaqEO4SiRH 4M43GEb4/3hpJLqiqMWa2NXbFe9BKLkyFhACtjiuMj6/i8PuCOWhR+/QWx5AQNaGoFjK d/AA== X-Gm-Message-State: AOJu0Yy7sp9KN5WdNu23kO3hEA+qhvjTHPUHZ49kgUToMHt7wjPurXRm yx5ROUY5xYVQSqUe43EbUuNMg3BTkb0OCuX8JgCDOytqiwkG9Tb0L98BSZHQDRPCnxVfRk4Ktjg HY4gGH3qkzNzc8sGFxwNepe1pDyWkATrA/utDFkNw9aHHHTybpkfx3tJbRWhzqYUPLPM67pHYck 98VaBiyHPOgZve16yB+XkNW0+SrAiLrb9wOA== X-Gm-Gg: AZuq6aK5fG+Q8nLqQY+GOg5ZI902p8ez6sXcoIr6JMNgKJneVov1wiX2+usT14MBYxx bwtNPKNqdhEOaB/jkmhVYP/aXfP//z65yvkd7yiL5PV+bfEptDl7jrVL3gCfQ07PedbscJBOQKO 86yCPz3+NDSnh618rSe+nMZjnnPxtkG0Fspp1EDcUr9djYuP8TxSzzQb27s+eohxtjXfU8G/tMx /d4jnW86+VL7aiQb/halPYspDtWS8XYLNpH2zmpAeDGnoiKlqiHtCG8kV1FnBquP/bb9oKs+3sq 0D3P7zwMqD69j16ZDi2TS09iZRGpa7XCi7rdXQvFQOJp5shXkP+l+RGBUWOGyiz55VcTeJ9T1+W WRikD3zcS6v9SG5Js1xNwwnw18tTwIjLsUA== X-Received: by 2002:a05:600c:444d:b0:480:1b1a:551d with SMTP id 5b1f17b1804b1-4830e96d468mr54584575e9.18.1770231872503; Wed, 04 Feb 2026 11:04:32 -0800 (PST) X-Received: by 2002:a05:600c:444d:b0:480:1b1a:551d with SMTP id 5b1f17b1804b1-4830e96d468mr54584085e9.18.1770231871920; Wed, 04 Feb 2026 11:04:31 -0800 (PST) Date: Wed, 4 Feb 2026 14:04:29 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Honglei Huang , Markus Armbruster , Akihiko Odaki , Dmitry Osipenko , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Alex =?utf-8?Q?Benn=C3=A9e?= Subject: [PULL 44/51] virtio-gpu: use consistent error checking for virtio_gpu_create_mapping_iov Message-ID: <24688ce275c19731c359af89a67f4f899be9fca5.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770232149018154100 From: Honglei Huang Unify error checking style for virtio_gpu_create_mapping_iov() across the codebase to improve consistency and readability. virtio_gpu_create_mapping_iov() returns 0 on success and negative values on error. The original code used inconsistent patterns for checking errors: - Some used 'if (ret !=3D 0)' in virtio-gpu-virgl.c and virtio-gpu.c - Some used 'CHECK(!ret, cmd)' in virtio-gpu-rutabaga.c For if-statement checks, change to 'if (ret < 0)' which is the preferred QEMU coding convention for functions that return 0 on success and negative on error. This makes the return value convention immediately clear to code readers. For CHECK macro usage in virtio-gpu-rutabaga.c, keep the original 'CHECK(!ret, cmd)' pattern as it is more concise and consistent with other error checks in the same file. Updated locations: - hw/display/virtio-gpu-virgl.c: virgl_resource_attach_backing() - hw/display/virtio-gpu-virgl.c: virgl_cmd_resource_create_blob() - hw/display/virtio-gpu.c: virtio_gpu_resource_create_blob() - hw/display/virtio-gpu.c: virtio_gpu_resource_attach_backing() Signed-off-by: Honglei Huang Reviewed-by: Markus Armbruster Reviewed-by: Akihiko Odaki Reviewed-by: Dmitry Osipenko Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260113015203.3643608-3-honghuan@amd.com> --- hw/display/virtio-gpu-virgl.c | 4 ++-- hw/display/virtio-gpu.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.c index 741728cabb..ecf8494f36 100644 --- a/hw/display/virtio-gpu-virgl.c +++ b/hw/display/virtio-gpu-virgl.c @@ -561,7 +561,7 @@ static void virgl_resource_attach_backing(VirtIOGPU *g, =20 ret =3D virtio_gpu_create_mapping_iov(g, att_rb.nr_entries, sizeof(att= _rb), cmd, NULL, &res_iovs, &res_niov); - if (ret !=3D 0) { + if (ret < 0) { cmd->error =3D VIRTIO_GPU_RESP_ERR_UNSPEC; return; } @@ -705,7 +705,7 @@ static void virgl_cmd_resource_create_blob(VirtIOGPU *g, ret =3D virtio_gpu_create_mapping_iov(g, cblob.nr_entries, sizeof(= cblob), cmd, &res->base.addrs, &res->base.iov, &res->base.iov= _cnt); - if (ret !=3D 0) { + if (ret < 0) { cmd->error =3D VIRTIO_GPU_RESP_ERR_UNSPEC; return; } diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index f23eec6862..643e91ca2a 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -354,7 +354,7 @@ static void virtio_gpu_resource_create_blob(VirtIOGPU *= g, ret =3D virtio_gpu_create_mapping_iov(g, cblob.nr_entries, sizeof(cblo= b), cmd, &res->addrs, &res->iov, &res->iov_cnt); - if (ret !=3D 0) { + if (ret < 0) { cmd->error =3D VIRTIO_GPU_RESP_ERR_UNSPEC; g_free(res); return; @@ -933,7 +933,7 @@ virtio_gpu_resource_attach_backing(VirtIOGPU *g, =20 ret =3D virtio_gpu_create_mapping_iov(g, ab.nr_entries, sizeof(ab), cm= d, &res->addrs, &res->iov, &res->iov_= cnt); - if (ret !=3D 0) { + if (ret < 0) { cmd->error =3D VIRTIO_GPU_RESP_ERR_UNSPEC; return; } --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770231985; cv=none; d=zohomail.com; s=zohoarc; b=asaoXUnV9ivLcB81R7u+AIbti8dDSaJMmlkNycRaQEV4CjMhd20VSn5xFOQarbYPQz/JCI33IIlO7sNRjPfugnSs43ff5NRHa2rpQdLeXy0pplaMCrTPcuhKT6cBlsaTNw+wN5JpfbHmkmNVR1MtbeuB9kxbHSiXmrHGBUejoTE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770231985; h=Content-Type: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=L23IMh10X5sj0b6aRSM+e7tHXvaNfxEorymlt8NTJG8=; b=U6v5tE5+4gZRPd7qnaw3cqHkMMTFiCGR+XdZef/jXhH/Lh2t0XTzVvUH8FTH0BcHTcSTaLsZY8670gsfrDTA9GId4Rcw6gQR9xy2GoIrtaeU8Y4GqcQyEFJK93dy78PgGnsinyo6mO9VutWoFZacsA5cwqFN9KEzgPpVuTRjzGI= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770231985276119.05204844788602; Wed, 4 Feb 2026 11:06:25 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniCE-00041g-8A; Wed, 04 Feb 2026 14:05:51 -0500 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 1vniB6-0002xP-2z for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:44 -0500 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 1vniB4-0008BA-J7 for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:39 -0500 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-25-Evp2hlTDPBmIX_hWYu74Ow-1; Wed, 04 Feb 2026 14:04:36 -0500 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-432a9ef3d86so121139f8f.2 for ; Wed, 04 Feb 2026 11:04:35 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43617e3a3bbsm8253704f8f.15.2026.02.04.11.04.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:04:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231877; 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: in-reply-to:in-reply-to:references:references; bh=L23IMh10X5sj0b6aRSM+e7tHXvaNfxEorymlt8NTJG8=; b=f/l697eQ959wvDUXrQZ7CbQ381NKXJb2iTtaKIBhSywbjHNeN3covasmBI0gx58MiMUEnk 2Ny1A+iQjwukuYtqbmsrgBzoGBdKTIND/cacT5G9PVlsTsmqnrUqa/PAZEBmR+3w4YqIyk nhxUsH6shfnpQPG2bjGIjrtIC6zRRrs= X-MC-Unique: Evp2hlTDPBmIX_hWYu74Ow-1 X-Mimecast-MFC-AGG-ID: Evp2hlTDPBmIX_hWYu74Ow_1770231875 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231874; x=1770836674; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=L23IMh10X5sj0b6aRSM+e7tHXvaNfxEorymlt8NTJG8=; b=TK/ReU/9lXtYAWXGmaw3wD4s1SMoSU54Zd8d8jRwHLViMe92MU4mHbKl50YqWcUHo9 zh9uUX3y8Z/MkdZZRGAwbhzapVpcSU4dCZ7zYS2yl5pCaLlze/Q0x1Ee5tK4iNkgtwRk VIJHrJtvOtbI6QFeG2nAgyJw+lz30HAavpB/5VWIGzy+RFCnqdYVwZFgZ+wdxd7qa4aX 6bUKcttx8VHP+gcVW399pjGanHHTBHDTtMRVBMX1snq7tTK2c0mAG+/6rHLdpertbb4D 7zfIv6bAd6yzt6RgyfNsBXa9g+HRAsXRZSu80bhM8/lOjXYd3dt7cvfTZpRix6Uyn0j6 6Icg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231874; x=1770836674; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=L23IMh10X5sj0b6aRSM+e7tHXvaNfxEorymlt8NTJG8=; b=s5KVhhX38xeDzoOJWVGwsm2fHFVIUTd1IzJkg5BPEz9uJ80e3dy/RcjGqjAFf54lid SbXadCR1QLupPuUWMKZgc/q7sJr/jBiK+k8/sv8/yTyNrJcd6zlcYaLyle2sEwF0yXrM 4ItqAoQwm2v3E9I9zFkOpC7MIIgeEYojnXTvJiFWDfo5sfQTLBQ4xpalI/uFLDbBSKDv KUsXLEMGlYoVqfz0W0XXsfrPHj3v0KaZRSummuZcVk0RYLPyCvr6xktvC4arNQ83mtWX /8MB8phhfpnxCSlxDcOvYIUJQ9nHUNRFYodjiI8sKEE4vY856aWp0gmrKFgmEbIYzfeD 4fLw== X-Gm-Message-State: AOJu0YxsUEjFlSo7zWP5phLl7iqS9XLX0wO1J6RcwmKmzerVkaz7Rtf/ 7u/FgtJxtXU9WzaoBEMQzR6GmAG8yudrhIIvjAbnTMMMrIsxy1PFwKQ/rDJxkyszCSy4b0WAgfI 5wa9TnEQCgcYlUtLvxbcMBKwmTr3OfiH0CA0uALTS8wOPcq239xK9GtpybHyQGtB3+fH5ezLqbr 1gLV/OGo4FFJbYWDm6dBRIgD9WcHRQ45QX9A== X-Gm-Gg: AZuq6aJgPBVCw/lEy4h13Xyr85JlP5BZRy0xZ5lf4XG+SUHZCFAjPHaYTIKDbkhFJbx T8qd+UtOnbBgqfCVDEGCsoIZ0gTHB+ZApyjV4x3QCR/ZU3TmaiOD2vnlg738PDwNBV1iL9tHqbV ypvR+fqEVwUuXaGcFd8CRmEOrKy/EocRf7eryH7e0jpdJYvdMLSGMme6iQncNhuqzqvZBqblNbV a8Ll39RTyy0qJoiLjKus9Tp+nCkGUs5vgAsO9V0/AH5PfWf6qaKyPfOL0ap0LMrNXACU5JwAGAF yIPovRw/DIuZ4kqvYiQ9fXcHWbp4P29NTkXTUFGA5MujaJnb6LswgYrFbFCeqT4VUAj01sNunBD cDssRsfHF3taOMgA5pzsyh0L9GU3i/dvszA== X-Received: by 2002:a05:6000:2310:b0:436:14fa:a3f3 with SMTP id ffacd0b85a97d-43617e42fbcmr5883032f8f.21.1770231874557; Wed, 04 Feb 2026 11:04:34 -0800 (PST) X-Received: by 2002:a05:6000:2310:b0:436:14fa:a3f3 with SMTP id ffacd0b85a97d-43617e42fbcmr5882987f8f.21.1770231874072; Wed, 04 Feb 2026 11:04:34 -0800 (PST) Date: Wed, 4 Feb 2026 14:04:32 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Alexandr Moshkov , Stefan Hajnoczi , Stefano Garzarella , Pierrick Bouvier Subject: [PULL 45/51] vhost-user.rst: specify vhost-user back-end action on GET_VRING_BASE Message-ID: <6382068b45db410891665ad2d3fad95bd4213e64.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770231986532154100 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Alexandr Moshkov By default, we assume that server need to wait all inflight IO on GET_VRING_BASE. However, this fact is not recorded anywhere in the documentation. So, add this info in rst. Signed-off-by: Alexandr Moshkov Reviewed-by: Stefan Hajnoczi Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260115081103.655749-2-dtalexundeer@yandex-team.ru> --- docs/interop/vhost-user.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/interop/vhost-user.rst b/docs/interop/vhost-user.rst index 93f756d3f4..505f8d3a33 100644 --- a/docs/interop/vhost-user.rst +++ b/docs/interop/vhost-user.rst @@ -1250,7 +1250,8 @@ Front-end message types =20 When and as long as all of a device's vrings are stopped, it is *suspended*, see :ref:`Suspended device state - `. + `. The back-end must complete all inflight I/O + requests for the specified vring before stopping it. =20 The request payload's *num* field is currently reserved and must be set to 0. --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770232077; cv=none; d=zohomail.com; s=zohoarc; b=Rg2Ogi43+2fjuqsojbBpxm5SoWcOlQkJV/zl2tJGO+HFzyGP353CmvgAhhwstg8PXCSyvUB5cyyjVoE913lSkgAmfGMhCP1vf5D5WdE3nm/YohvG1Sml2RDiaNK8myVGrxLsmTD2aYtLVMDPldLlvVMCej1qrEqbneg6ZVTNTQI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770232077; h=Content-Type: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=wGXvf5fY+VkV3ljpaQjbHmq0FJ5IzXTjQ9EoEMpxP6A=; b=OL9udldxUQ9ynP+SXiENwpEizPP6l3IhtsbcMpAy9cQOedwUVPthSwtKGQZURVi9j17+4MeR22PTxRl/506HPbyqnds7DKJIkFbyTzqQYM+K3uA7lSSYfil6utEv6yRh4y0tqr6DqslN4XNEKPgOuFJpqkVlZcpa5IYMqVRRlU8= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770232077498824.1433493156991; Wed, 4 Feb 2026 11:07:57 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniCG-0004Ee-Mi; Wed, 04 Feb 2026 14:05:52 -0500 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 1vniB8-0002xs-Jc for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:48 -0500 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 1vniB6-0008Ca-MU for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:42 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-592--6PE_Z1sP4K2yFkN8ymoFQ-1; Wed, 04 Feb 2026 14:04:38 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-4361765dc85so26585f8f.0 for ; Wed, 04 Feb 2026 11:04:38 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43617e38e38sm8599989f8f.11.2026.02.04.11.04.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:04:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231880; 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: in-reply-to:in-reply-to:references:references; bh=wGXvf5fY+VkV3ljpaQjbHmq0FJ5IzXTjQ9EoEMpxP6A=; b=D3KmPdBNg1x8+Vfmcu/DW1uoOQO3P8vc+S2j8lZh47Tcgws/0QA8HmE99jj7Yh7Z+n0EKT jSEoXQf44p5vWQRaE/ERgXJ4YQql5kt1Wqru22irrQxmuduTJkhdWGL9cy7JJ+Q8YWz+uR MrPxgb/H5P0R2BLnl/yv8s53ILEu7wU= X-MC-Unique: -6PE_Z1sP4K2yFkN8ymoFQ-1 X-Mimecast-MFC-AGG-ID: -6PE_Z1sP4K2yFkN8ymoFQ_1770231877 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231877; x=1770836677; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=wGXvf5fY+VkV3ljpaQjbHmq0FJ5IzXTjQ9EoEMpxP6A=; b=ZxNbjnrf5TyV+lDrwegVU+IrWR97nCChStYYZHKXsvd9G8yeG7t0Vls0w1C4yYkNRH K3q8UU6CwsS1P+luhiT7YydS5tahpDGhZn2WUnwCIZqQFhPk334uAIpLcMXZ5GfsH2sY R04hJo2cjQ+5mZa5FacgzTH9DHlGMUGdd2NASwiaMifNAGTX4da+1HpIdvIRZAHBIE1/ FMBIzvjEudomqBN76nKLbRk4hYuwctTrS7ajHzAUogFv0JCT7FzbP9QB+jts8LNucEc4 S7CGjcTABXoHuep/b0ndQR6FSwNvf+BO4y+Zx6+PIvaMvgUKyOX90BCUeMMB31//aLvx deJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231877; x=1770836677; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wGXvf5fY+VkV3ljpaQjbHmq0FJ5IzXTjQ9EoEMpxP6A=; b=ol+E+yLXRpgRctPxB8pF6oqgspPPzjWNXNyLBnvxk1vXFgW9UFkAx+1aAQFfhHdUJQ Q/FVohGvCMHkhxNaRvrzwdymQAaEg9EGmmTZq5ZCRaegbpv0KjotCn/ui8Bu2pJJfiyR 3UqvRNC86K6a0Yly4a6NFhoWrbUQPP8jXK1rMoDXkuXPv9Wa7Wd28UXdu0a9lBRda5jn wgANiJTidpiWxpK+pgu5fngt1AeaqWHRMH43rdQifJY8es1OsqFPd8t93NegwFUn89m4 9ziN2GQSHUxAynn06/ZoOEve9FD/aR4/wzdMe+aC/waR49ycUQVmjKoutB90Iuus63V7 KR/g== X-Gm-Message-State: AOJu0Yy7Pl5R3r83xuAtTlEMpK/wHqpnR+Wqec7YTB99HUkygyOk2eSh wSz3ROsWsWzLi8MrFWQX2Q/Eawqf0uLIApnZBPOo7X04qRMGcQx8gPP0FyrCnlgRJcuLNyoexsL /nL+2rXrSsbP1S1pVuqqrUxt1DjEfNClqpH8WVOdqBaHgaPQMc6PAaAbQ1rtt0paZ+5on0qHQIz e8UPR8dIOAUCicFmztDFfPUYm7IUpJKRsVOA== X-Gm-Gg: AZuq6aJzk926KvPuw/oLTidfZPqexp29BOX24m4NFrfJbcqwdmEWiwSADCXZmjtnSv7 9y9Zetqjk+CoqA0HIZQkSweb7rtVOp8YVOXGzKUzr7sFZjnCnUop09Hz2VUko+Q00gyiYy3UWgf M9dyMC3/ngrYCdbHvDyUYdBPL1BZ6rmg406YKGFYbvZNGHVbTE1LQkoAHyoQpGJhDXHddm/CO6r uwjYU3iD1fbH/KJb8uWs0hGLvOzUc4grq+mFukxf/rwPLi8bCUxgeUVhjZzWdrdIvIUBIOpixPM Z+nbkXOz1FIJ/6mJYvtteWdz9IkyBDOxjla9txxod5akcyenIiCdXXaWZXNgx7Db2Ibb6AA4lOK BXNw9Zy5MLo24tlRL8uIAm2XH7FPng1Ztaw== X-Received: by 2002:a05:6000:230a:b0:436:684:b94a with SMTP id ffacd0b85a97d-43617e346demr5598179f8f.4.1770231876761; Wed, 04 Feb 2026 11:04:36 -0800 (PST) X-Received: by 2002:a05:6000:230a:b0:436:684:b94a with SMTP id ffacd0b85a97d-43617e346demr5598128f8f.4.1770231876282; Wed, 04 Feb 2026 11:04:36 -0800 (PST) Date: Wed, 4 Feb 2026 14:04:34 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Alexandr Moshkov , Stefan Hajnoczi , Stefano Garzarella , Pierrick Bouvier Subject: [PULL 46/51] vhost-user: introduce protocol feature for skip drain on GET_VRING_BASE Message-ID: <891e89735f87ebcf80f0e939a0d4005e7f1bf935.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770232080013154100 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Alexandr Moshkov Add vhost-user protocol feature VHOST_USER_PROTOCOL_F_GET_VRING_BASE_INFLIGHT Now on GET_VRING_BASE this feature can control whether to wait for in-flight requests to complete or not. Also we have to validate that this feature will be enabled only when qemu and back-end supports in-flight buffer and in-flight migration It will be helpfull in future for in-flight requests migration in vhost-user devices. Update docs, add ref to label for inflight-io-tracking Signed-off-by: Alexandr Moshkov Reviewed-by: Stefan Hajnoczi Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260115081103.655749-3-dtalexundeer@yandex-team.ru> --- docs/interop/vhost-user.rst | 59 +++++++++++++++++++++------------- hw/virtio/vhost-user.c | 7 ++++ include/hw/virtio/vhost-user.h | 2 ++ 3 files changed, 46 insertions(+), 22 deletions(-) diff --git a/docs/interop/vhost-user.rst b/docs/interop/vhost-user.rst index 505f8d3a33..137c9f3669 100644 --- a/docs/interop/vhost-user.rst +++ b/docs/interop/vhost-user.rst @@ -743,6 +743,8 @@ negotiated, back-end can send file descriptors (at most= 8 descriptors in each message) to front-end via ancillary data using this fd communication channel. =20 +.. _inflight_io_tracking: + Inflight I/O tracking --------------------- =20 @@ -1040,26 +1042,27 @@ Protocol features =20 .. code:: c =20 - #define VHOST_USER_PROTOCOL_F_MQ 0 - #define VHOST_USER_PROTOCOL_F_LOG_SHMFD 1 - #define VHOST_USER_PROTOCOL_F_RARP 2 - #define VHOST_USER_PROTOCOL_F_REPLY_ACK 3 - #define VHOST_USER_PROTOCOL_F_MTU 4 - #define VHOST_USER_PROTOCOL_F_BACKEND_REQ 5 - #define VHOST_USER_PROTOCOL_F_CROSS_ENDIAN 6 - #define VHOST_USER_PROTOCOL_F_CRYPTO_SESSION 7 - #define VHOST_USER_PROTOCOL_F_PAGEFAULT 8 - #define VHOST_USER_PROTOCOL_F_CONFIG 9 - #define VHOST_USER_PROTOCOL_F_BACKEND_SEND_FD 10 - #define VHOST_USER_PROTOCOL_F_HOST_NOTIFIER 11 - #define VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD 12 - #define VHOST_USER_PROTOCOL_F_RESET_DEVICE 13 - #define VHOST_USER_PROTOCOL_F_INBAND_NOTIFICATIONS 14 - #define VHOST_USER_PROTOCOL_F_CONFIGURE_MEM_SLOTS 15 - #define VHOST_USER_PROTOCOL_F_STATUS 16 - #define VHOST_USER_PROTOCOL_F_XEN_MMAP 17 - #define VHOST_USER_PROTOCOL_F_SHARED_OBJECT 18 - #define VHOST_USER_PROTOCOL_F_DEVICE_STATE 19 + #define VHOST_USER_PROTOCOL_F_MQ 0 + #define VHOST_USER_PROTOCOL_F_LOG_SHMFD 1 + #define VHOST_USER_PROTOCOL_F_RARP 2 + #define VHOST_USER_PROTOCOL_F_REPLY_ACK 3 + #define VHOST_USER_PROTOCOL_F_MTU 4 + #define VHOST_USER_PROTOCOL_F_BACKEND_REQ 5 + #define VHOST_USER_PROTOCOL_F_CROSS_ENDIAN 6 + #define VHOST_USER_PROTOCOL_F_CRYPTO_SESSION 7 + #define VHOST_USER_PROTOCOL_F_PAGEFAULT 8 + #define VHOST_USER_PROTOCOL_F_CONFIG 9 + #define VHOST_USER_PROTOCOL_F_BACKEND_SEND_FD 10 + #define VHOST_USER_PROTOCOL_F_HOST_NOTIFIER 11 + #define VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD 12 + #define VHOST_USER_PROTOCOL_F_RESET_DEVICE 13 + #define VHOST_USER_PROTOCOL_F_INBAND_NOTIFICATIONS 14 + #define VHOST_USER_PROTOCOL_F_CONFIGURE_MEM_SLOTS 15 + #define VHOST_USER_PROTOCOL_F_STATUS 16 + #define VHOST_USER_PROTOCOL_F_XEN_MMAP 17 + #define VHOST_USER_PROTOCOL_F_SHARED_OBJECT 18 + #define VHOST_USER_PROTOCOL_F_DEVICE_STATE 19 + #define VHOST_USER_PROTOCOL_F_GET_VRING_BASE_INFLIGHT 20 =20 Front-end message types ----------------------- @@ -1250,12 +1253,24 @@ Front-end message types =20 When and as long as all of a device's vrings are stopped, it is *suspended*, see :ref:`Suspended device state - `. The back-end must complete all inflight I/O - requests for the specified vring before stopping it. + `. =20 The request payload's *num* field is currently reserved and must be set to 0. =20 + By default, the back-end must complete all inflight I/O requests for the + specified vring before stopping it. + + If the ``VHOST_USER_PROTOCOL_F_GET_VRING_BASE_INFLIGHT`` protocol + feature has been negotiated, the back-end may suspend in-flight I/O + requests and record them as described in :ref:`Inflight I/O tracking + ` instead of completing them before stopping the v= ring. + How to suspend an in-flight request depends on the implementation of the= back-end + but it typically can be done by aborting or cancelling the underlying I/O + request. The ``VHOST_USER_PROTOCOL_F_GET_VRING_BASE_INFLIGHT`` + protocol feature must only be neogotiated if + ``VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD`` is also negotiated. + ``VHOST_USER_SET_VRING_KICK`` :id: 12 :equivalent ioctl: ``VHOST_SET_VRING_KICK`` diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c index 63fa9a1b4b..bb8f8eab77 100644 --- a/hw/virtio/vhost-user.c +++ b/hw/virtio/vhost-user.c @@ -2225,6 +2225,13 @@ static int vhost_user_backend_init(struct vhost_dev = *dev, void *opaque, } } =20 + if (!u->user->supports_inflight_migration || + !virtio_has_feature(protocol_features, + VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD)) { + protocol_features &=3D ~(1ULL << + VHOST_USER_PROTOCOL_F_GET_VRING_BASE_INFLIG= HT); + } + /* final set of protocol features */ dev->protocol_features =3D protocol_features; err =3D vhost_user_set_protocol_features(dev, dev->protocol_featur= es); diff --git a/include/hw/virtio/vhost-user.h b/include/hw/virtio/vhost-user.h index 55d5725ef8..53fe996686 100644 --- a/include/hw/virtio/vhost-user.h +++ b/include/hw/virtio/vhost-user.h @@ -32,6 +32,7 @@ enum VhostUserProtocolFeature { /* Feature 17 reserved for VHOST_USER_PROTOCOL_F_XEN_MMAP. */ VHOST_USER_PROTOCOL_F_SHARED_OBJECT =3D 18, VHOST_USER_PROTOCOL_F_DEVICE_STATE =3D 19, + VHOST_USER_PROTOCOL_F_GET_VRING_BASE_INFLIGHT =3D 20, VHOST_USER_PROTOCOL_F_MAX }; =20 @@ -68,6 +69,7 @@ typedef struct VhostUserState { GPtrArray *notifiers; int memory_slots; bool supports_config; + bool supports_inflight_migration; } VhostUserState; =20 /** --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770232271; cv=none; d=zohomail.com; s=zohoarc; b=LpHkBIvKbP3p+aKgH4oS5sSZ8iAg0Uii2PERTc/ufMkrnXTvoVQHg6Lm6lhe4XNSZOJcaRDvIdOVwoAPIx0x1b3p7XIqmh8bTOAWeuoWzgE9Tmzf541UpF6BurM6j9+W3g9mrCUgBOCa3z7apEv41vDKFvdIUuebiTlfACPjdSo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770232271; h=Content-Type: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=0m3fu01MzQJcwZ0QMeUZQcEMiRgauyETG8pOx1+H3bk=; b=dsvOaUQ6+h+LOKFniGtIOaWp1JOEzIP/L6ix02ono+l23pSwuzpEOswA3OiR17j55gZ+3Cig3MCtWbU1a73Joaq08s0usTaQVtPAgc7ufMf6VWwU3PqxBGVeaamTLVGX/od1NRcgyABN9dF95tzCLQzcJtGBhGOONg0SGv53Qso= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17702322714131008.3014474527153; Wed, 4 Feb 2026 11:11:11 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniBx-0003ch-Ka; Wed, 04 Feb 2026 14:05:33 -0500 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 1vniBI-00030v-80 for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:05:03 -0500 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 1vniB8-0008En-Ur for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:45 -0500 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-652-mzLH6MvWNSehEmRLRfj0Ww-1; Wed, 04 Feb 2026 14:04:41 -0500 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-43591aacca2so156751f8f.1 for ; Wed, 04 Feb 2026 11:04:40 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43618057f93sm8046826f8f.24.2026.02.04.11.04.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:04:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231882; 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: in-reply-to:in-reply-to:references:references; bh=0m3fu01MzQJcwZ0QMeUZQcEMiRgauyETG8pOx1+H3bk=; b=H4B9qTxDuVp+Cbt1cI56bpxpCWVdkURAajqGJH/TxwY4d32kZOf1v+OMQQgWcldYBaVWSj nhggPO1RlDAr7v7I6nMyvTKcIHf+c4oH4yw7BEeuPSLmlQCq1uPy30rustRKVKCjtv/8ho wWr2HLE6cvHZtf+TsVQyTDbOd0DFU/s= X-MC-Unique: mzLH6MvWNSehEmRLRfj0Ww-1 X-Mimecast-MFC-AGG-ID: mzLH6MvWNSehEmRLRfj0Ww_1770231879 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231879; x=1770836679; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=0m3fu01MzQJcwZ0QMeUZQcEMiRgauyETG8pOx1+H3bk=; b=DBd5RF5g75rUhhkreqU3YD4klLsAeRLqsrbJmD9K3axTVaVrZ5PbEr4Bm31GCtL03i NORkXxILl5ZYk2I7vNgjMvyZNhmp3b+tSfZmGbglzy+COGM0jb5eY+dA3svmso1rj2fx OhOpn9I5u/qiUmEMHThYtWlRfy39/LHIWwLKE6eZxvkzJKrZdXlUEOv/LZw36/GPxCLa c8VdHoGx1ZdbadvgQOcb8bWYmX+X+9Q5nJKza0gb03cs1RHCvkQ7ONFyjQQRHGr23tmI kKL8kl1pn6WS81yKhs59nX21OEe1lQgo01DuVEWluU/nRk2GtnjXwNNoNouMRwMP9cG2 q5Hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231879; x=1770836679; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0m3fu01MzQJcwZ0QMeUZQcEMiRgauyETG8pOx1+H3bk=; b=lh/q1eocpJvkK8LztbahWGrrdKRc8oIdPBvNIvT5tBtkn6QCYvkjDGNwpguW7fTjh8 Z1EgdHLk9uOYkQXY6z3WB2trMJLIv7GGTpWyPBONUMpp+T00VYEJBbJKsea/Q6ezk5y6 HhhUArPw8OFWnHhmwPBmKcZq5YeWY2M7Q3CFZ4hWHxPRmesCtljr5wtj7SGDO8C4MdGK iB5r8/gxlZaz2xdCuhxeECRin4+K5SMZVkXzwDWo/jheGQLAUXHdIcUb0wjSon8+n0g3 Tfyo45WD7pwGn39ejOkWYerPgOTKRKr7B8g5c1sPcllZbYPnu6GYU3RyZVzmBZ1Fd8Vw lvhA== X-Gm-Message-State: AOJu0Yydcl0bi46RQeK9BO+d9O+b3b61dMVQya2aUXU2+AGMbiVncZ6J xm5p30gtF7BSTt55hs0REU7lMj+rTcHM2dkFdWegIFDvPkg9n53Xj97C7VmuSULr4zUtoM5t9E7 T/HTpUtxENW0QlY3jioRrJO6G2ixxAa5nms2hmAvsU8G5x76Om3ZETxbyLlb4lTCENCfwbgDBoU cOzkJgGaZqfRolN/KBWMrSdbpD4kAgZLXq8Q== X-Gm-Gg: AZuq6aIVd7FlAEZnuLFrUDEPuR+e3k4CKJouP57emSlnWdw5aBvHeU9Anoc8qTUEMd7 j4iMOzy5mHkHn1Wupgfz7YpbmTA6AvD7VeBuZokuhMaCOYgTxdbqFvKgjjeCPwK/I9xBfitnkU8 I1kmk4ZhkCbhHo02NaAaNgbJaoaV9f7spSLYtDXgtDim/uycecChU6Xq+ZeVLgMKvEeA3Tv2WUq BXMtzKxeqq+TGgd5fQjn8vdQeqmODWW4HI67k/h0/ZHZ747HUS2iKXzkG9D+WnpCz0J4crFtOdt BBaeJ9HwfwqTzSdj7Y7IXY1XPEhre7a3Yv05HIIXNjgkakWCaoGO79zz56gYCQxDXyWMP+00xaA CmFXujtkmZla6Z5C7Y5D5Fmutz8sbX+q76Q== X-Received: by 2002:a05:6000:18a3:b0:432:7d2a:2be4 with SMTP id ffacd0b85a97d-43618061f74mr6087433f8f.60.1770231878890; Wed, 04 Feb 2026 11:04:38 -0800 (PST) X-Received: by 2002:a05:6000:18a3:b0:432:7d2a:2be4 with SMTP id ffacd0b85a97d-43618061f74mr6087371f8f.60.1770231878317; Wed, 04 Feb 2026 11:04:38 -0800 (PST) Date: Wed, 4 Feb 2026 14:04:36 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Alexandr Moshkov , Peter Xu , Stefan Hajnoczi , Fabiano Rosas Subject: [PULL 47/51] vmstate: introduce VMSTATE_VBUFFER_UINT64 Message-ID: <12e2242ea717e1f4ecadba290988d13e7acd1fd2.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770232273865158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Alexandr Moshkov This is an analog of VMSTATE_VBUFFER_UINT32 macro, but for uint64 type. Signed-off-by: Alexandr Moshkov Acked-by: Peter Xu Reviewed-by: Stefan Hajnoczi Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260115081103.655749-4-dtalexundeer@yandex-team.ru> --- include/migration/vmstate.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index ed9095a466..89f9f49d20 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -706,6 +706,16 @@ extern const VMStateInfo vmstate_info_qlist; .offset =3D offsetof(_state, _field), \ } =20 +#define VMSTATE_VBUFFER_UINT64(_field, _state, _version, _test, _field_siz= e) { \ + .name =3D (stringify(_field)), \ + .version_id =3D (_version), \ + .field_exists =3D (_test), \ + .size_offset =3D vmstate_offset_value(_state, _field_size, uint64_t),\ + .info =3D &vmstate_info_buffer, \ + .flags =3D VMS_VBUFFER | VMS_POINTER, \ + .offset =3D offsetof(_state, _field), \ +} + #define VMSTATE_VBUFFER_ALLOC_UINT32(_field, _state, _version, \ _test, _field_size) { \ .name =3D (stringify(_field)), \ --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770232144; cv=none; d=zohomail.com; s=zohoarc; b=VVmANdi7pBtrEpTq6uoXHmU4AtX+EWogJRx3O+PCOgXYawe9yG16GqAeM0GM/GcEA6Yw+o5tmd2gkGPgED2jpky65hiqEJQUMn5oE0z0vNhXlVOkYE31eWHZqS0Zdrjq3eEgRTei22similqGtNfcD/4ff/8s0L22aHjSA4KGkc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770232144; h=Content-Type: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=f25Nke9lbXBse1DcsUR1BuSwyhsX+SCykZqse82vnPI=; b=is0T9YFoBArLtPCQP9Th4UEIiDsUmDakN7AM12+Y9ldxK95O9V/MsYyOwA0ktH1XFZfW4U+TeD+K/Bs0ljnsi1Jxkuf2Si5FtNAXEmkMKA/VvjUOHlnhGhjESx+Yuurn6gmY/IxlHSC3ik7mPHBV29u/uiu8A2Cn4/Dd72YYun0= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177023214449531.506372409672736; Wed, 4 Feb 2026 11:09:04 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniCL-0004ll-8v; Wed, 04 Feb 2026 14:05:57 -0500 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 1vniBP-000396-EO for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:05:08 -0500 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 1vniBE-0008FV-1L for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:53 -0500 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-678-HD4hRnrdP5CZeRE5WhYz5Q-1; Wed, 04 Feb 2026 14:04:42 -0500 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-436164e7f42so188993f8f.3 for ; Wed, 04 Feb 2026 11:04:42 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-436180640e5sm7542944f8f.40.2026.02.04.11.04.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:04:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231883; 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: in-reply-to:in-reply-to:references:references; bh=f25Nke9lbXBse1DcsUR1BuSwyhsX+SCykZqse82vnPI=; b=Hrl7bqpRaGDSiW7vaRyxzNWXt3bLd8qcN3UM8i9h+8uziqVw76//nV9B0hxVAAPqJAba5Z hWrW5t5GUKtNYXD0XPDOIAZbmVtKIm/cBro6o6q6oXp8qwJJNn/JNHt8WHTh+SklKbdjrI kfrgVIuyESuGDD4XcERdr5tLCebtrNU= X-MC-Unique: HD4hRnrdP5CZeRE5WhYz5Q-1 X-Mimecast-MFC-AGG-ID: HD4hRnrdP5CZeRE5WhYz5Q_1770231881 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231881; x=1770836681; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=f25Nke9lbXBse1DcsUR1BuSwyhsX+SCykZqse82vnPI=; b=HHYK/J3fULyJKeVSpXUT2nKlLHTzLylLdItxggzoLPGnj3LDGU7fHFGBA0AaLkz5tm KE+rxuYyjKtNSV/aVzqxfCeksWZ4A4kghMMplStvWawIDBCW20HLztTJtCgfj2HbiHl+ 5U2VM/Ko/LKLxkYiyFCIswC5aYhtrtU35nLzqbSlydBSBvGE9EpHVynWxWcBtGDkpegJ x+bCDfkNchAWlSJo2oAFSF0EbonnnYfnXJEmeRCqgYm0w77aKAhFacNM//3QB3DttR7O KrdJ8og/9JpBuc0PyJF0pSK/dc+fK78vABNAqG89mqixf6Xhiu+hva5r7z+CeYeC+8Fq CR5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231881; x=1770836681; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=f25Nke9lbXBse1DcsUR1BuSwyhsX+SCykZqse82vnPI=; b=iEHR5EM/BLAmQYad6WGoeNfbZPuHV58L4ZNkXgk3gxLzNnCINIJF45zvFwiAi4XjH/ XalSbn/mTyUyKT6HLW0xAg2E6Ly1grk4N4Z6utQUFVgsr1PLu6xZOIN186DGjV//Cr2U CWmbdMY466imv8QqbLflAnM9b4EMBlljKAzVXvsMRedJhu3TozuN/CLl8ro1N8G1jLdd ycCMOJKo4sgiJY0FxcB3Lq0HVmmF6dt0/itA35l62aY6iHhdU4/dO4uXk0PyPOXJOpDs B665CVmk1R4BhwBkMqCw8c2yDPNmArsVZa841KZZFd7LCw2zZwi1KV8lwlV8+V7f2uVS JWog== X-Gm-Message-State: AOJu0YxcVKa6RwFhAsKUbTMXwgXA31qPH1uyuOpthRVy/BHOAjtvUpkW ifcj99HWHUVuXI75TOyGldT4d2/4vpGqN0yzPvRTLOXMKuzBSn0CfYSOGz2qamkvsquDSn93rRl 6c5Dtgs0UbIPDvwaOOZ8bps3UIYu49ZMYFYf7Y79jPzpNURklkNJ80hMVJ6ZgnAO5TQy5p+Iv3a Q1n2ORa9Ol4SUQYcSiLnqhBGXf6hLnLG6lgw== X-Gm-Gg: AZuq6aJrJK30M7/Rm4xFbuWbeyvH+CHGsZ/Xs5PzjuSgnT21zroPSerArkuNmUJM2li fbk6qDbACFA9chQXKOPoPPjOfsuFOFwk9cGSfpsb2Z+UZWWC6P0VrWL6UWRMXNoyUG1wgAEPnV4 bf2Tk7GR2subZHTUIaDUlG3j53UjMYrnt2gb6hpSp/YxVHMdix6vjPN5vAmdrk5RJKOPAYok0dE sfBJI7n1EL9WJ4uCll5r3vA6imS5gZqnO0ur3ip/a4Zg8QjjzDi17g6p4G0k50baHDtEs930bpy 6qaMD/jjV8ztsOjsqY7rSK431N1dN4vD8DoPtfLdVuAOknYK4eSK8N/3fe1zx2TaNL6fyvEnxcM 2lSAW8qCHQ6AMpzHLuqCZlHB5uw5HD0feRw== X-Received: by 2002:a5d:64e6:0:b0:42f:b707:56dd with SMTP id ffacd0b85a97d-436180551e9mr6176041f8f.33.1770231881021; Wed, 04 Feb 2026 11:04:41 -0800 (PST) X-Received: by 2002:a5d:64e6:0:b0:42f:b707:56dd with SMTP id ffacd0b85a97d-436180551e9mr6175981f8f.33.1770231880462; Wed, 04 Feb 2026 11:04:40 -0800 (PST) Date: Wed, 4 Feb 2026 14:04:38 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Alexandr Moshkov , Stefan Hajnoczi , Stefano Garzarella Subject: [PULL 48/51] vhost: add vmstate for inflight region with inner buffer Message-ID: <41ccfe54e16060219a0ef5ee106bbf63ed8abb24.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770232147014154100 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Alexandr Moshkov Prepare for future inflight region migration for vhost-user-blk. We need to migrate size, queue_size, and inner buffer. So firstly it migrate size and queue_size fields, then allocate memory for buffer with migrated size, then migrate inner buffer itself. Signed-off-by: Alexandr Moshkov Reviewed-by: Stefan Hajnoczi Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260115081103.655749-5-dtalexundeer@yandex-team.ru> --- hw/virtio/vhost.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index c6a5928cb1..52801c1796 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -1918,6 +1918,62 @@ void vhost_get_features_ex(struct vhost_dev *hdev, } } =20 +static bool vhost_inflight_buffer_pre_load(void *opaque, Error **errp) +{ + struct vhost_inflight *inflight =3D opaque; + + int fd =3D -1; + void *addr =3D qemu_memfd_alloc("vhost-inflight", inflight->size, + F_SEAL_GROW | F_SEAL_SHRINK | F_SEAL_SEA= L, + &fd, errp); + if (*errp) { + return -ENOMEM; + } + + inflight->offset =3D 0; + inflight->addr =3D addr; + inflight->fd =3D fd; + + return true; +} + +const VMStateDescription vmstate_vhost_inflight_region_buffer =3D { + .name =3D "vhost-inflight-region/buffer", + .pre_load_errp =3D vhost_inflight_buffer_pre_load, + .fields =3D (const VMStateField[]) { + VMSTATE_VBUFFER_UINT64(addr, struct vhost_inflight, 0, NULL, size), + VMSTATE_END_OF_LIST() + } +}; + +static bool vhost_inflight_region_post_load(void *opaque, + int version_id, + Error **errp) +{ + struct vhost_inflight *inflight =3D opaque; + + if (inflight->addr =3D=3D NULL) { + error_setg(errp, "inflight buffer subsection has not been loaded"); + return false; + } + + return true; +} + +const VMStateDescription vmstate_vhost_inflight_region =3D { + .name =3D "vhost-inflight-region", + .post_load_errp =3D vhost_inflight_region_post_load, + .fields =3D (const VMStateField[]) { + VMSTATE_UINT64(size, struct vhost_inflight), + VMSTATE_UINT16(queue_size, struct vhost_inflight), + VMSTATE_END_OF_LIST() + }, + .subsections =3D (const VMStateDescription * const []) { + &vmstate_vhost_inflight_region_buffer, + NULL + } +}; + void vhost_ack_features_ex(struct vhost_dev *hdev, const int *feature_bits, const uint64_t *features) { --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770232261; cv=none; d=zohomail.com; s=zohoarc; b=MyPMEabdv6QI8KgXs8lwmKSUf7rNZKFUL/UwLzv++BEMnBOtX3leFFJdi1+isyFU9Z/kqZgt5/0cVziSZqdq9FEGRs8eQh/sM04bmIqzBmVmyP756f4O2VEMtXmtUeuP9n3XDLi8OG42i2SgcfLncmmWRXm3aw3mMtT3tsa0NF4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770232261; h=Content-Type: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=BHV9CRtIc65hjBzMkzz5+7e4XSr1yitt8eUrbCO0Ung=; b=kC3KD8TRFWmzrZ5JadMvxnJiBSsdyVJ2WFPy3uEeq3dr+tYR9qVpL8ABQHWXidi6JBl9FUocMPn03x6Y1q9rWHCIer9StQ9i2uqEYeTr90FHc+cUSPawy1hlZ6fIYVaFhHsfqfczl5ave6ta+ov76e3beVwfRUX9MUMYqHi9ap4= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770232261377174.29939484474937; Wed, 4 Feb 2026 11:11:01 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniCK-0004iH-DT; Wed, 04 Feb 2026 14:05:56 -0500 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 1vniBT-0003Bn-K3 for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:05:09 -0500 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 1vniBI-0008Fn-1j for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:04:57 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-155-NSLfXvkCOWGMaolB0lsskA-1; Wed, 04 Feb 2026 14:04:46 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-4801c1056c7so763955e9.2 for ; Wed, 04 Feb 2026 11:04:44 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48317d3f007sm7648095e9.9.2026.02.04.11.04.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:04:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231888; 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: in-reply-to:in-reply-to:references:references; bh=BHV9CRtIc65hjBzMkzz5+7e4XSr1yitt8eUrbCO0Ung=; b=Rsv71bbaF3qQtndm7YDQbC9bt7+XsZFY7MOJY/NlMz6xOaK6rQ+dddVcm8RrlBDlahvkWc ix5CrxoPyboRiGVNf9dhRkPRttWembckbIynkh/WDZpQwQvTYNfM9FwexEGUdq9tTegSU4 a7go52L9LPry0VxaWNwyXWEebWrFYEw= X-MC-Unique: NSLfXvkCOWGMaolB0lsskA-1 X-Mimecast-MFC-AGG-ID: NSLfXvkCOWGMaolB0lsskA_1770231884 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231883; x=1770836683; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=BHV9CRtIc65hjBzMkzz5+7e4XSr1yitt8eUrbCO0Ung=; b=X2ega7iZWDbbIfGVIfakEEHmEOQw0WBD1Stij3+20tOFCQ6g2cKugb7HUQmLl5YIqM by8wBSESUOcuFgfaDFMpoDZZQ9zm9uS0Kq8pYj6ND9uCOc1ZQGs2x4LAukl2E3q9kWjc cTdgWbLNg4wpP5bHJwbmkpXXkjqMt8ghQpGVjoXCRW/jmmQ6SZBpDjkDQki5c5Q0CHnR gWf/LeTMxMEb0Vr4+mp8ZOM7xhD/qXWQM4JlF8oynavKOI5fosORc3zTK7EyLqqc9JRF QaZKXi23+LVFn1qShSSDOZeMhrOGSCwyvCUzlw5wM9f4QrJ+n8g4TVnnmHI3KW9wTiVg ye1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231883; x=1770836683; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BHV9CRtIc65hjBzMkzz5+7e4XSr1yitt8eUrbCO0Ung=; b=f0hO2j/1say0GvxOPugH3yMuAic5eXneySIUH8kNVz7rUlj+hLccSXKj2i6SQ54O2p dDrr/L3+KcwiHrIIGrrg6aFFUqlTaDyqFIFA9mt+RcnM4/oQAGuks0ANy1aXPFYDNO5k aQsKfBQaZeNzFoERi2Po8t2pSEVPZAugWMr7ATqOO3RCfLj1RObwYWwUt+M9BPhMmggi pSNaq/ax22tKitXYiXM8WTjapSBk+2gusSgXKP3PS6mJDGdeg4Ts51aELjBz63Ks6+rY 0d/IcpJm61m56xPUMqSRINI3GFRkUQMCysU+m+cUjFq9NoxDkrDug+Og0tnC6oe1DCVY J/uQ== X-Gm-Message-State: AOJu0YzO9gkJ7NJQ6Tu9nqh+nIbLNqZU41iriAQx64e+zH5eduyRGMt7 7UvMR0aU5BgogpbjBnoFco2TOrVyFyJpM4+8PnE8aUW06AUMOPxSvJhn9pEcyFwuR3ycLZg2FHu wK0FzP8ALu7Q4G1E4oWeoDK+x/m5AxVhH8BJ4uVFNL20WCJ+8IzqbA6Cw/RJfJGHMiJ7eC+98Gn beGizVC4OYWOSvqU4wVckhfc6AhHSPPRqA7Q== X-Gm-Gg: AZuq6aKGIrch90SHQsCETvjTkf7vOHXivjSvDI5ozQY2DEpm3tSCzjyW80mjMjG/i8i ByWQ7zd9uSlARZSMUbLVzmakUnjkBa2AZU+8/o6PRt50tGdUkW4S70kA5jh670u8YDxA/7DRRIs DGBndUQCToqb/5A+XZZK9WYTzwzYF9DkmaFGb4rr4jtui0V325QwOqbLMMwzjlKhjvYTIwyH2Zn piGiJLTmxeK6ztyKyd4S5Q8l8oR88jTZHybz7zZi1QuelwpYRhUdJdRC4Hm2bqyxfhKJBg/DDLN sQt/k2twL89nXsBCFNk4MfHF/c4bPKUil2JXyUlzlB6lNlN9JzMT3n9Qkc5rm7CpRcVJwFk4Lw8 yjKpIOyoLHPeC/7aye5pwbqAtM00nXNLOQQ== X-Received: by 2002:a05:600c:1988:b0:47b:deb9:15fb with SMTP id 5b1f17b1804b1-4830e9913afmr53018555e9.33.1770231883407; Wed, 04 Feb 2026 11:04:43 -0800 (PST) X-Received: by 2002:a05:600c:1988:b0:47b:deb9:15fb with SMTP id 5b1f17b1804b1-4830e9913afmr53018065e9.33.1770231882929; Wed, 04 Feb 2026 11:04:42 -0800 (PST) Date: Wed, 4 Feb 2026 14:04:40 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Alexandr Moshkov , Stefan Hajnoczi , Raphael Norwitz , Raphael Norwitz , Stefano Garzarella , Kevin Wolf , Hanna Reitz , qemu-block@nongnu.org Subject: [PULL 49/51] vhost-user-blk: support inter-host inflight migration Message-ID: <2e6dd85eed340e12b523a548970a47550be9ac44.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770232263355158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Alexandr Moshkov During inter-host migration, waiting for disk requests to be drained in the vhost-user backend can incur significant downtime. This can be avoided if QEMU migrates the inflight region in vhost-user-blk. Thus, during the qemu migration, with feature flag the vhost-user back-end can immediately stop vrings, so all in-flight requests will be migrated to another host. Signed-off-by: Alexandr Moshkov Reviewed-by: Stefan Hajnoczi Reviewed-by: Raphael Norwitz Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260115081103.655749-6-dtalexundeer@yandex-team.ru> --- hw/block/vhost-user-blk.c | 27 +++++++++++++++++++++++++++ include/hw/virtio/vhost-user-blk.h | 1 + include/hw/virtio/vhost.h | 6 ++++++ 3 files changed, 34 insertions(+) diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c index 4d81d2dc34..c151e83677 100644 --- a/hw/block/vhost-user-blk.c +++ b/hw/block/vhost-user-blk.c @@ -353,6 +353,7 @@ static int vhost_user_blk_connect(DeviceState *dev, Err= or **errp) vhost_dev_set_config_notifier(&s->dev, &blk_ops); =20 s->vhost_user.supports_config =3D true; + s->vhost_user.supports_inflight_migration =3D s->inflight_migration; ret =3D vhost_dev_init(&s->dev, &s->vhost_user, VHOST_BACKEND_TYPE_USE= R, 0, errp); if (ret < 0) { @@ -568,6 +569,26 @@ static struct vhost_dev *vhost_user_blk_get_vhost(Virt= IODevice *vdev) return &s->dev; } =20 +static bool vhost_user_blk_inflight_needed(void *opaque) +{ + struct VHostUserBlk *s =3D opaque; + + bool inflight_migration =3D virtio_has_feature(s->dev.protocol_feature= s, + VHOST_USER_PROTOCOL_F_GET_VRING_BASE_INFLIG= HT); + + return inflight_migration; +} + +static const VMStateDescription vmstate_vhost_user_blk_inflight =3D { + .name =3D "vhost-user-blk/inflight", + .version_id =3D 1, + .needed =3D vhost_user_blk_inflight_needed, + .fields =3D (const VMStateField[]) { + VMSTATE_VHOST_INFLIGHT_REGION(inflight, VHostUserBlk), + VMSTATE_END_OF_LIST() + }, +}; + static const VMStateDescription vmstate_vhost_user_blk =3D { .name =3D "vhost-user-blk", .minimum_version_id =3D 1, @@ -576,6 +597,10 @@ static const VMStateDescription vmstate_vhost_user_blk= =3D { VMSTATE_VIRTIO_DEVICE, VMSTATE_END_OF_LIST() }, + .subsections =3D (const VMStateDescription * const []) { + &vmstate_vhost_user_blk_inflight, + NULL + } }; =20 static const Property vhost_user_blk_properties[] =3D { @@ -591,6 +616,8 @@ static const Property vhost_user_blk_properties[] =3D { VIRTIO_BLK_F_WRITE_ZEROES, true), DEFINE_PROP_BOOL("skip-get-vring-base-on-force-shutdown", VHostUserBlk, skip_get_vring_base_on_force_shutdown, false), + DEFINE_PROP_BOOL("inflight-migration", VHostUserBlk, + inflight_migration, false), }; =20 static void vhost_user_blk_class_init(ObjectClass *klass, const void *data) diff --git a/include/hw/virtio/vhost-user-blk.h b/include/hw/virtio/vhost-u= ser-blk.h index 8158d4673d..1e41a2bcdf 100644 --- a/include/hw/virtio/vhost-user-blk.h +++ b/include/hw/virtio/vhost-user-blk.h @@ -52,6 +52,7 @@ struct VHostUserBlk { bool started_vu; =20 bool skip_get_vring_base_on_force_shutdown; + bool inflight_migration; }; =20 #endif diff --git a/include/hw/virtio/vhost.h b/include/hw/virtio/vhost.h index 08bbb4dfe9..89817bd848 100644 --- a/include/hw/virtio/vhost.h +++ b/include/hw/virtio/vhost.h @@ -554,4 +554,10 @@ static inline int vhost_load_backend_state(struct vhos= t_dev *dev, QEMUFile *f, } #endif =20 +extern const VMStateDescription vmstate_vhost_inflight_region; +#define VMSTATE_VHOST_INFLIGHT_REGION(_field, _state) \ + VMSTATE_STRUCT_POINTER(_field, _state, \ + vmstate_vhost_inflight_region, \ + struct vhost_inflight) + #endif --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770232262; cv=none; d=zohomail.com; s=zohoarc; b=g0HaeTU28xvuB5mBF5jRBbIZrvZRLB5Zr8UtJFyFptrsz/D/Xex9G9YvUC9MGzsr+5ChLGyJm7x/gm9zXOLyh9i93yrDKRDoIAifrOK1OYu4U3M4JnqRyd3jQEZPUFSWq0ktv3+dWz3GdUbSnlaIXMJO89XFKSyCeuV/WH1h+C4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770232262; h=Content-Type: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=iFcxXry7cWSnSdoZKjAQluEgDqzJ6zOGhiXLEuhnG6I=; b=RfPdVeuGGs4P6I7FA88QOQf0hOYHiU644ZoXOnFaWwud8INnr+lEthMkIoNiv2SUJ5R9rpkb/k+YghWlvybFqF+q8EexM+OcS6795Y2s4S5yDXYyMVuHNemubuLFNf+O1vYNUdbaIJgnvlsFkeP5/0PZkCUk9/yLD6CD3LiGLpw= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770232262898919.8319282283621; Wed, 4 Feb 2026 11:11:02 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniCJ-0004YX-7Y; Wed, 04 Feb 2026 14:05:55 -0500 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 1vniBZ-0003G1-Ed for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:05:14 -0500 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 1vniBR-0008GN-Hi for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:05:05 -0500 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-122-31lAhKLKM3KZx94gLUhyWw-1; Wed, 04 Feb 2026 14:04:47 -0500 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-435ab907109so103722f8f.3 for ; Wed, 04 Feb 2026 11:04:47 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43617e25d47sm7494986f8f.5.2026.02.04.11.04.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:04:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231892; 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: in-reply-to:in-reply-to:references:references; bh=iFcxXry7cWSnSdoZKjAQluEgDqzJ6zOGhiXLEuhnG6I=; b=HCInf9VTq9H9RQco/SrNEMCnb4nZEWJNGx6Y+X3cbvdZ4at2Q8puiymFprMKH8rkISWy0J j3KjjclKSvxVovFFY8iyoQqeR3iQc6GP/Abm0mrDlLDfqg2l65Zma2pxkbQY7+2A+g/R+j DT05+Q71q8xTEbbHhqrpbsu/9EcTfOU= X-MC-Unique: 31lAhKLKM3KZx94gLUhyWw-1 X-Mimecast-MFC-AGG-ID: 31lAhKLKM3KZx94gLUhyWw_1770231886 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231886; x=1770836686; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=iFcxXry7cWSnSdoZKjAQluEgDqzJ6zOGhiXLEuhnG6I=; b=GUWzN5n6tB+B34KuSumClpEWz9vRJVthczUioPYmdrB0Cmg7s9n0bMMevIEhqn4k2q QfHRTOCFGjSNRI0DlhUIRnohZdSyYNxJnr2fKF5vo5dL0qLP0tbOkGeLJOTzszbV5SD5 r7ZCns0qXJJ0Z1hqeo9pIVzy2MXDpelX8x0uTNIO4PT7EsNPoKjuv1EvEz9SCHE/6KlK ELEG5DpTEVHd9ZzIb+IxGjXoGwnRPxKyvEG1vEOMuuvZtX6VtqchZNcXHJxhIrzn7nFp aUUotTI5Xi2oCwV/LxfN080anPlKdd6xOCkehzlSseTpuZHL8NGUQt3kCjh0DSKlzZpl i/bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231886; x=1770836686; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=iFcxXry7cWSnSdoZKjAQluEgDqzJ6zOGhiXLEuhnG6I=; b=Kbz11uR+FLOvY84GF08IJOupF8Gdtli60B3vDSoIPG1fxmEyWBLSTFO1bCsYam2M4h oR0f6uSAn3GMnaSGs6KPMuz2KKCuhZ9qCUb0MBbSmO94Fqm9HPVfZzudmzUuevRE3HIy /oGFX59pGthg3BsUloG/xsccAfbIzr+zr/qbkHcT/1CpautJr+fmtBR4lvDZnCDXRDX9 o5XRfNjKr6TCsatVPpcNrUhW1Jw9WXH7uv7OzSdlK/iaVtDgnSDPSq2swR6Ex9Mmx3iP 3aED3AD+TM0NO6Rb1+hyOjvex02FEBjbrYDYMV2OL9qfKCZGoxynbgLlwzcsNwlrFNzB tGxw== X-Gm-Message-State: AOJu0YwwyQii24pmHN6EWD6w7171/uiCHk7OBCgOZH4PEbg4hCuN8lQa 7dqIbxk5Ouj4b0e6wsiUykysx685Ej4CxnBOZWECBeweL09+HEHc4sxwh/ihysYhrVXzEPDT5eI 7v4jHCw27wFvWRgsceB49WGzp6JDMncXM57YQt/+7v7fEzNoplCqDSdUIK+6VEeWnyJ0eBcRbsJ E6i4Ujkuvf0SfcdDXzeyMaGnR+R3arREwWyw== X-Gm-Gg: AZuq6aL/MnKM0vNvER8zG4fOY2wBTebXElSzqj/X/tDuHd5sk6j8tgKBgiPVohorXhZ 0swM5iCErSaexFcjyxeSop0J5/0OZARY4FviVyvSn0bFftbuo4ebWD/R7yV3E1VnIP6DBkmG9+J dXHimPWtFpf18JnORGIlQer2gO++k1Yqzlhb5MyNBGGRqnCijHCviaunAEn4vHsCu22gsp5pb2V wESsqjlVWXhgLnfPHOQ1l7aUQQNvs/ZOVyJb+gpVycRnJ73gBx30F7S1OnVjzRuSKxakdWtudIa CkoYwm4ZoNNkj/H926WhCqLbqidTU5oPFsWWdtr43rz6qe6OX0ZnGmxNeknD2jP1lLC4tRT+kxf n4IBH8D2xpfFDd0foxbss3DH8SqSzI33yoQ== X-Received: by 2002:a05:6000:26c2:b0:42f:b0ab:7b48 with SMTP id ffacd0b85a97d-43617e300d3mr5073346f8f.1.1770231885692; Wed, 04 Feb 2026 11:04:45 -0800 (PST) X-Received: by 2002:a05:6000:26c2:b0:42f:b0ab:7b48 with SMTP id ffacd0b85a97d-43617e300d3mr5073291f8f.1.1770231885070; Wed, 04 Feb 2026 11:04:45 -0800 (PST) Date: Wed, 4 Feb 2026 14:04:43 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Jonathan Cameron , Fan Ni Subject: [PULL 50/51] hw/cxl: Check for overflow on santize media as both base and offset 64bit. Message-ID: <6227c8b4932df515143fae61db5b384aaaf0a5bf.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770232263298158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jonathan Cameron The both the size and base of a media sanitize operation are both provided by the VM, an overflow is possible which may result in checks on valid range passing when they should not. Close that by checking for overflow on the addition. Fixes: 40ab4ed10775 ("hw/cxl/cxl-mailbox-utils: Media operations Sanitize a= nd Write Zeros commands CXL r3.2(8.2.10.9.5.3)") Closes: https://lore.kernel.org/qemu-devel/CAFEAcA8Rqop+ju0fuxN+0T57NBG+bep= 80z45f6pY0ci2fz_G3A@mail.gmail.com/ Reported-by: Peter Maydell Signed-off-by: Jonathan Cameron Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260102154731.474859-2-Jonathan.Cameron@huawei.com> --- hw/cxl/cxl-mailbox-utils.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/hw/cxl/cxl-mailbox-utils.c b/hw/cxl/cxl-mailbox-utils.c index a64b8ba535..d8f62a13a8 100644 --- a/hw/cxl/cxl-mailbox-utils.c +++ b/hw/cxl/cxl-mailbox-utils.c @@ -2411,7 +2411,7 @@ static uint64_t get_dc_size(CXLType3Dev *ct3d, Memory= Region **dc_mr) static int validate_dpa_addr(CXLType3Dev *ct3d, uint64_t dpa_addr, size_t length) { - uint64_t vmr_size, pmr_size, dc_size; + uint64_t vmr_size, pmr_size, dc_size, dpa_end; =20 if ((dpa_addr % CXL_CACHE_LINE_SIZE) || (length % CXL_CACHE_LINE_SIZE) || @@ -2423,7 +2423,12 @@ static int validate_dpa_addr(CXLType3Dev *ct3d, uint= 64_t dpa_addr, pmr_size =3D get_pmr_size(ct3d, NULL); dc_size =3D get_dc_size(ct3d, NULL); =20 - if (dpa_addr + length > vmr_size + pmr_size + dc_size) { + /* sanitize 64 bit values coming from guest */ + if (uadd64_overflow(dpa_addr, length, &dpa_end)) { + return -EINVAL; + } + + if (dpa_end > vmr_size + pmr_size + dc_size) { return -EINVAL; } =20 --=20 MST From nobody Sat Feb 7 15:12:20 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1770232182; cv=none; d=zohomail.com; s=zohoarc; b=WWkva9AnQKyU1rG3uncNYpvVx+kT8Lgqy9L1MV0a5LMRPJRvxf5fZXK7FpP42ubCZv3Y9PZyO2950e249JCmgbxWmA8rVUXkw1dxawBQM/AyPqTm3uLDVVc73GnyHAhiggtkDOZJkMykyz00O4KGBTFnzjY6kL1iKyZMwWSPxhs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770232182; h=Content-Type: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=sdPq6lHZS69iXcK74zZ9QXneSB3GbIyJznf4tebCiz8=; b=jO3sg33AAEiUYfJ4L7+n1iUJH37XxQkfpG3NwW2vwLdK98JmFhVrwK0nM6e8A+1USw5s1kHLgO+Y0hMoty5bEvyyeaICZZCGlt84FVG+B+nrb8mW2N5pD82fJjKYEkiT9uuIOFj17+W41rCsFx/0vo9eQ21l5uEnFiJ9nwQI2Cs= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770232182480216.27067726941596; Wed, 4 Feb 2026 11:09:42 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vniCI-0004Os-12; Wed, 04 Feb 2026 14:05:54 -0500 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 1vniBV-0003D8-MD for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:05:09 -0500 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 1vniBN-0008G7-K0 for qemu-devel@nongnu.org; Wed, 04 Feb 2026 14:05:03 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-176-efoD3sJhNl-CUEO7xZdJMw-1; Wed, 04 Feb 2026 14:04:49 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-47edf8ba319so1965485e9.2 for ; Wed, 04 Feb 2026 11:04:48 -0800 (PST) Received: from redhat.com (IGLD-80-230-34-155.inter.net.il. [80.230.34.155]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43618058473sm8616782f8f.22.2026.02.04.11.04.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Feb 2026 11:04:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1770231891; 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: in-reply-to:in-reply-to:references:references; bh=sdPq6lHZS69iXcK74zZ9QXneSB3GbIyJznf4tebCiz8=; b=bx48m9O5iwWImbQSXw3LaoDbuMk9rJE85x7ioE0Ti603AiAx5bX6uoVr75pdd9PJoVOJek 6dG4PddOJ7oyrc5Pi09oun3h/SEkTN3C99fyMvA+gxoQ5ylcudVXUL3knF0y3syB+pFidQ HMDyavgG43BQ3xVQ+XV7wj54l0Z7pB8= X-MC-Unique: efoD3sJhNl-CUEO7xZdJMw-1 X-Mimecast-MFC-AGG-ID: efoD3sJhNl-CUEO7xZdJMw_1770231888 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1770231887; x=1770836687; darn=nongnu.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=sdPq6lHZS69iXcK74zZ9QXneSB3GbIyJznf4tebCiz8=; b=MeqEMqJEbsg6aEpUj05wHAKmaIzoDoCed3PTGq0J+Jm2iIETcEuOQYa3hqlQTmBbxi ePtHs8Eoa5xU/Fe649rgc9mfQCWmAG8BnGXba9yfoyD+hy71gthwV8egObJ9lFk0Zd30 AZ3QqFf+pcaYYzW6l0QxwSpIQlH/8+LISUtjincQo7gJKOwj0+0xgGQzIDOUn9AuPWqB /FVaisZRYIhwaQUZ2lbPriPOedi+H4cNPeefPQknwGKrrr8HzmK3MwhIf7i0NbZB5tTp K3CXptpY9oaNizmMm4gH3qF32uJCVUpsRp5HuIKHOYI6YeZwVAgfGwD5SMFJTeA51WUO DUyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770231887; x=1770836687; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sdPq6lHZS69iXcK74zZ9QXneSB3GbIyJznf4tebCiz8=; b=lwtQ9OJT4LvvGEYJKmsp9qrKDWZhx6P/FGWSi4H5zmSJ+luf4ldvKJ1ara5/W6JIrn i52TfxlNIMq4NinqTyyLg2wqsW77jlVedI94I6ehuGX3B2gviNzG5OXkJpLBVUYhMmdP wZX/aW/8pPXZ5d91rh4Y1F/Tm/7zsQ757QMIt/yt3G/+mpciPoFBhCwBn28f+2+i+qs8 Or1zFEjs/vMymO/z3tDfBQdVV/oB1nAyj994iGKDLcB54EZu0uNOYJuvC2qoWMlzIeW7 ujs2xRTRhUQqDjEl+6dNbOv+3gBqiKUd3dkYRr2p8y4iXHa2hn7awMXjapVnChWYZKLr zNsA== X-Gm-Message-State: AOJu0YxRhotWcxR9A1j8J5M2YC65+NhmFThA4U0lQk5XSarbqebLW177 D2W95TOXfGfhQLnNGHqZ/Cm71pYgLv7Ns3JCpVBAFoqUSqWMvf/qrHBgTMIfiFfUySCvB54RbM9 IMUvByigtyMTBQz59M6ryoGo0hWQQg0s06s/yXlpbQ63LR4uRqHIldRDyQNg0RhFRIwWnaBfoAQ 194NyXnS69pQBDEGa3WxsQWmehCdy3qJ/lYA== X-Gm-Gg: AZuq6aL3MbgjNOaPFq0mRXODxjICp67CGp7fYtX3DzMV33wzRlYXpPYgrwRuFsh9oeb dBuATtl0LchrC0TMHcBYA0UH+iPTV3i9haxadX4lH2ZMCWjWNgLZUU5gjB2tlR6wjIYtLzxBhHi 9JZLb2wJP20w3y+zglrQA1ynfLGuRxcr4KnakvsGZIOPNZxyl+ayfb4GPq3R/DXrt9HHzbmuc9E 4Skg790Te6FOJBVLAuzIQ/Zm17cAEYsVCqCqXQQFHWTuzIiPC+0J8YwVyNR+kIYQ+Xi4v4Z8HK7 shKdDUCE9qX531giXxOovD29gKnotMz36ejfP36XoK2fLd/BLXMWO1qc/ZmpiiHOuPebBnOhVlX bZErcBBDcXIlMqPY1IaUtqH8TCgOGeNGHlA== X-Received: by 2002:a05:600c:154c:b0:477:5b0a:e616 with SMTP id 5b1f17b1804b1-4830e921d0amr46104735e9.5.1770231887496; Wed, 04 Feb 2026 11:04:47 -0800 (PST) X-Received: by 2002:a05:600c:154c:b0:477:5b0a:e616 with SMTP id 5b1f17b1804b1-4830e921d0amr46104365e9.5.1770231887040; Wed, 04 Feb 2026 11:04:47 -0800 (PST) Date: Wed, 4 Feb 2026 14:04:45 -0500 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Jonathan Cameron , Fan Ni Subject: [PULL 51/51] hw/cxl: Take into account how many media operations are requested for param check Message-ID: <1ef708ee4b765b9eac097192d54b69a603589f9b.1770231744.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent 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=mst@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_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: qemu development 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: 1770232182882158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jonathan Cameron Whilst the spec doesn't speak to it directly my assumption is that a request for more operations than exist should result in an invalid input error return. Fixes: 77a8e9fe0ecb ("hw/cxl/cxl-mailbox-utils: Add support for Media opera= tions discovery commands cxl r3.2 (8.2.10.9.5.3)") Closes: https://lore.kernel.org/qemu-devel/CAFEAcA-p5wZkNxK7wNVq_3PAzEE-muO= d1Def-0O-FSpck4DrBQ@mail.gmail.com/ Reported-by: Peter Maydell Signed-off-by: Jonathan Cameron Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20260102154731.474859-3-Jonathan.Cameron@huawei.com> --- hw/cxl/cxl-mailbox-utils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/cxl/cxl-mailbox-utils.c b/hw/cxl/cxl-mailbox-utils.c index d8f62a13a8..2f449980cd 100644 --- a/hw/cxl/cxl-mailbox-utils.c +++ b/hw/cxl/cxl-mailbox-utils.c @@ -2547,7 +2547,7 @@ static CXLRetCode media_operations_discovery(uint8_t = *payload_in, * sub class command. */ if (media_op_in_disc_pl->dpa_range_count || - start_index > ARRAY_SIZE(media_op_matrix)) { + start_index + num_ops > ARRAY_SIZE(media_op_matrix)) { return CXL_MBOX_INVALID_INPUT; } =20 --=20 MST