From nobody Sun Jul 26 10:59:17 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=1783262123; cv=none; d=zohomail.com; s=zohoarc; b=ZEEG6AVzi+yoiasY03f8Iv7tccITwlwLwqUArZj7KfxNOznXOtL5/bI5g28JhweS5dgPtYPl30tUcW6ZLhjXb4Z7vyxE3Ao4vz/+3UX934UKRQABE16YV0nuXvab3OZ0voiBEl7VeKQxLdt4V0AOfBqp81a7pFv1/CL5sp1SL5w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262123; 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=RyXo8IcwoquYoDigzOCgrundImULxF1Wii2Ii3gongY=; b=DYIMPQieHdy4vCnQSWL6fTaVnqfQvJB5o6BfHN4q4WEVXkRZscNGM8hOkYvovWv64G8dwHXpcDR4I2HSCbr1noiJBBftjTaDZ16dXtDBeOChUdnEnSjirrxp4R+6jG37+OsA0c4rizKFklKBOTwA+C0AF8wkBKTsue4h3JiDRUo= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17832621237181008.8118363918933; Sun, 5 Jul 2026 07:35:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNvn-0005AA-LA; Sun, 05 Jul 2026 10:34:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNvm-00059Y-Gc for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:34:50 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNvk-000135-UG for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:34:50 -0400 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-490-rA04qQ0KOeuhgkdFPozYrA-1; Sun, 05 Jul 2026 10:34:45 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-493caa3c54eso18811115e9.2 for ; Sun, 05 Jul 2026 07:34:45 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47a9de1d8cdsm18401486f8f.1.2026.07.05.07.34.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:34:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262086; 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=RyXo8IcwoquYoDigzOCgrundImULxF1Wii2Ii3gongY=; b=Gh6IzMOZE5tjsopiRdY3CVkirNibMf+4YmbPVgRuDwlsRk+cc9PqZnPTu/KMDkboeEOk+6 4MKPfG5um2PrsBEZH5ndVyBVDfFwVI/v2nkAjnPbXaTf9nwKGAetpXtcSb+1H8jf+QG6Ny eVUSfMIDY3Ve6Ea2eV91N7q1Ga+Cx5k= X-MC-Unique: rA04qQ0KOeuhgkdFPozYrA-1 X-Mimecast-MFC-AGG-ID: rA04qQ0KOeuhgkdFPozYrA_1783262084 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262084; x=1783866884; 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=RyXo8IcwoquYoDigzOCgrundImULxF1Wii2Ii3gongY=; b=fLHaELXDH8Q5iKUqypfHzyaL9pCSfTuWHvix5WWSjGgSq4nv9/mxU5hhgy9gjP1x6F mfh8IHCke1VtC087f0Y6yc7BMyd4DJejzwYo1xrt2R1gHBn5M9lxdhuFtfuHXVUdxqlM DjRCaxAXoCByG8gx6OLQq1brq0/KZqvl7k5YNB968dkkMFWyBeFUFfb6K6DuZp+SOF/c j2K34g2LbRPpEc2TD0UwO55eurca46m0m7qHC8ZzhzdBsFjHCAo7xRo9ZlmWH20WGYG1 BLWZhPi+X+nvhjexBQhkJ9YPjYHf+jbhtSnV5hKgkJ4kbb9bjAHl2gfqL6hPHOkHlzN7 pcpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262084; x=1783866884; 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=RyXo8IcwoquYoDigzOCgrundImULxF1Wii2Ii3gongY=; b=CEHYu8N8W5F4u503PnSvs2P++uLoajCS8Ee5JoYO7wtiGMdiaUgK6rQpZXHfNyVh/s 0HkT6vRJKn2DRm9nw79uh/LCkeigtODK9BXz+tsr8hsRGryCJpGryGQFYicnesdeXD0N 2ieHguY1slMXjb5/FnGyu7Z4i8GxrsqkehRMqgY6PIIjRz3HiRhA8n0Tse9j9FE8dXXr IPQm+11DrQC9Mr1fiD0f4uShORspBjddd4rp8jM4baYPytk7MsXd9Rknqy1VDRkhNtRI Uv2XyeEAfTxz06TD1yuKp0GoplTo2k4oEhxulfYC0d6tEd/ZMRB/lEn1myOqkEbBKBHm gGUw== X-Gm-Message-State: AOJu0YwQjuvX47X17IuLFv7FS+c+rUMOw32tbcL+tS8WKwV13IsZDt9H zarHdQEJdepvVPFxGC9jvM1fIYyuZMiIKYLD82VIasY63L3u8CLml+gBd0oQUKThRlVKCKJqiHt 6TglajOpVHAek96/sfaD1VdkkGiMncK6oRSIf12nmZlXHXscLo0oLe+FarjyEyyBzHv22xUz8k2 O+TTEavNf0MaJWLp0elC5p6GNJStolrVKemg== X-Gm-Gg: AfdE7cmEhWtzHr9hwAal30Ej3pbjCpKgftpNF2eGfyUJeIvwNjOvu0HoouokPa6FuON N0ZjMcF35L76DK/hMA+N+AdrF6Oy8kBcPRyWqpTMZjYo0hGAwxbzh5wy/uHZC4Hn0ZIDrQbfTiz gmsRka88izwRjqZ/XltBzgx3AENrfBhRkMkyFU2nbQTvMmh3rPOH42W8Cvb1N0QZbXvjDCQKIGP iiVboQnDrrZt8sPRVuw+kK5hP35eu9MkUbApEeV0LoUyfflvqJ6vKGDldfzchB+K/PwwSqvvNcV Zm7HXuKqC13ECUUOvkW+dCIe1Hc1GiRxYztlQn3EAahmkxqE86lx6fkXajmHjw0HveLQ4UPsU6c 6Hf4quFUD0czIAn2T+ioMFeuPHyUuad2t X-Received: by 2002:a05:600c:8711:b0:493:aa24:792b with SMTP id 5b1f17b1804b1-493d11f15c6mr73895675e9.22.1783262083929; Sun, 05 Jul 2026 07:34:43 -0700 (PDT) X-Received: by 2002:a05:600c:8711:b0:493:aa24:792b with SMTP id 5b1f17b1804b1-493d11f15c6mr73895215e9.22.1783262083407; Sun, 05 Jul 2026 07:34:43 -0700 (PDT) Date: Sun, 5 Jul 2026 10:34:40 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , David Hoppenbrouwers , Sairaj Kodilkar , Igor Mammedov , Alejandro Jimenez , Paolo Bonzini , Richard Henderson Subject: [PULL 01/44] amd_iommu: Fix opcode reported in invalid command handling Message-ID: <0611d393031f9941fcfaf3f17c3ac2b7a0ea00d1.1783261895.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262126551158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: David Hoppenbrouwers According to the AMD I/O Virtualization Technology (IOMMU) Specification (Rev 3.10), Section 2.4 Commands, the Generic Command Buffer Entry Format encodes the opcode in bits [63:60] of the command buffer. When handling illegal opcodes, the traces for unhandled commands and event log info extract the opcode from an incorrect offset in the command buffer. Fix this issue to avoid potential confusion with mismatched opcodes in traces and unlikely errors in guest event processing. Fixes: d29a09ca68428 ("hw/i386: Introduce AMD IOMMU") Signed-off-by: David Hoppenbrouwers Reviewed-by: Sairaj Kodilkar Acked-by: Igor Mammedov Signed-off-by: Alejandro Jimenez Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260630220806.1758748-2-alejandro.j.jimenez@oracle.com> --- hw/i386/amd_iommu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index 79216fb305..05b7c638f4 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -1509,9 +1509,9 @@ static void amdvi_cmdbuf_exec(AMDVIState *s) amdvi_inval_all(s, cmd); break; default: - trace_amdvi_unhandled_command(extract64(cmd[1], 60, 4)); + trace_amdvi_unhandled_command(extract64(cmd[0], 60, 4)); /* log illegal command */ - amdvi_log_illegalcom_error(s, extract64(cmd[1], 60, 4), + amdvi_log_illegalcom_error(s, extract64(cmd[0], 60, 4), s->cmdbuf + s->cmdbuf_head); } } --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262518; cv=none; d=zohomail.com; s=zohoarc; b=jA640fIBZroyNUfRlpDCq1Sep4duXba/Yo1onnNqZxeUdYNDQJQWBl7lhtWv/FucSWxDMi42ER75utoG62KB1kcbUaQ7kNhTZIEa45k0DcnnyzfoI2qx7dhMaAvax/ae5AyNIG7/0sw0eyUsOW7+MxgksdJE5SIOmZVqL2oQqSY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262518; 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=CmUOAPQVXCl4E0rudTEc0c+PXxTXF2cnu4kF7EBDh3s=; b=fv5HmS5ZgznSg06JHDZ+Ouen4aSWAu84oxxHamfwgcHwIX+JMtWw+cmWF8ftkIxBncCDXGC0L126Ltd1QFSzd/NJyQWOp4inCxo1ZUBn1FL4Jl3OcxNpaP62kZQmtBu0TDNbwXlOXJWK/DHmWOfcN+EpD/YLkfyCLoeEDVnIugU= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262518401282.71165430395286; Sun, 5 Jul 2026 07:41:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNvp-0005Af-72; Sun, 05 Jul 2026 10:34:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNvn-0005A9-Fi for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:34:51 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNvl-00013r-Vg for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:34:51 -0400 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-536-632opPjzMtWqerxiJ8hByA-1; Sun, 05 Jul 2026 10:34:47 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-492714d002cso13444505e9.0 for ; Sun, 05 Jul 2026 07:34:47 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63b6f8csm260196235e9.11.2026.07.05.07.34.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:34:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262089; 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=CmUOAPQVXCl4E0rudTEc0c+PXxTXF2cnu4kF7EBDh3s=; b=FVYBax4p8u0fXK2cE6O1J7+IJvUc5zwMG5Ar+AgrtFAJ9lK9KxcP//B7lpP6ZCjg+vGY+E cn6hqQLEYy/aqDf/1eZbdFekiKlsJ210iWeLmIM5vwxKKBSvK1kvOePeAOhZTg3H9+bJaN LSDQc0ShCoiy4MNYddL9L+ROONHDbxc= X-MC-Unique: 632opPjzMtWqerxiJ8hByA-1 X-Mimecast-MFC-AGG-ID: 632opPjzMtWqerxiJ8hByA_1783262086 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262086; x=1783866886; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :content-type:mime-version:references:message-id:subject:cc:to:from :date:from:to:cc:subject:date:message-id:reply-to:content-type; bh=CmUOAPQVXCl4E0rudTEc0c+PXxTXF2cnu4kF7EBDh3s=; b=AXi88mU0wIbGG38Vho/r59XPLf0q3GAx/jq7Lj8zdqEjrPdqAWzhRjFc1ikgraS8mA dYeBdpofriplV3opyVsmtmazf2hX5iwEw7toV8PKfyJo8UtYlL7zMi9BAgGoHyyF8T8n 5+tlNM/FtoQ25ElY7be1DiVqJOVswUGAqsHJJJqoqAE5HVwkN1Uew5K1PHgEom6S9E/I SBKwBlza8ysW2xrDxhQCfadNEnm5nxSAUXGy3cM+ODstdkcJU6s1RF1sHOYH8m8PypfX Z9Bl5JFeawTnwR+AQvpqaoXlcESNjAsDFGgdKNt6XxxEloRz3dIFIpMJuRFQaBlaDvXM b8JQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262086; x=1783866886; h=in-reply-to:content-transfer-encoding:content-disposition :content-type: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:content-type; bh=CmUOAPQVXCl4E0rudTEc0c+PXxTXF2cnu4kF7EBDh3s=; b=YJc9QksC78JIeaoIvay0CnFefurh63UVeDMxse8x9tY7qm6YCE/IdYM5RH1LiIxJt6 MyempYAADgj0HIcKrPwT2p8ZaWEXyfCTLFNrQmUFkwpnNb+Nz3nL0lnIvJMvePCwpuIB cEmLMcZ3McS1sOUN5QP+StQHutd3EjYg+t3Mga8V4Y9UcE0NBFp727+DDUkiCyeP65oh GHyBzfvW+C9CBmmgt9MZKf1mnwDyDk/r6sr108tBotDImV050uqvUlekHsPTjlL2O/+y yQxkuL5l/yAGvMyRkpMHn7hJ8ERD75Uft4jDjleKdZTxuxxjn2MAiC1h8dtd8NsMiDxV PmNg== X-Gm-Message-State: AOJu0YxKY9vVUtKjN9QvMyjZ4Vs2HWwaYWAgInCPzwXdy5c3wAAoHBj/ KxB/rxABNSdnqfdpJlyW96lgUhThEnGrLbizGlwXj1Tn/4tMaK7W8UieSIYeIBPK2tOUd2xczu3 yNxwkTyPxwq5cPMT2EobELZO73Xgeq7AJjms1BUCUEX2sF+5Gnl5R96QcJbCWBLQDxpvzmPXzlR 8MZFpyHWfincBPWdmKnILPfNdurLNx8t80vg== X-Gm-Gg: AfdE7clSOvrbcoTJCIqtarrYD1qOVpVbHA6fa0d9PBcEZFW6DaxtmVNRkJBF8eaqXR2 jSGW2mshvOvIjxTjijyTpHYfNkvE2XWig4R2mRrpp9UWuQl4BDxi85psMc+BGZdNa+YxDsZ+Mx2 BhWusshkyouy9ER6lTMawilg0Kw9AD7LiS7YqtAzu0lROjpV3FPiw3tdWcZc2PumDRXhilxnV3+ o8etwW4S2I9TMAQwnLXAVmulMJE3DQ1z9bb6+nfq6W5X1BTyl+0Noy/nUTSkTp7rYODH5mLjUZ9 cm8qOFTXXYJezpVKJq29ZmjSY7U+vfGltx1iE5QqZ1EG5l+OZgo4GbFOtTsCTT4KQLDVCywbJ/G CHVarCODUkeNdafyRmUEMdfyhD5dqfnRh X-Received: by 2002:a05:600c:a01:b0:493:bd2a:93bb with SMTP id 5b1f17b1804b1-493d11ced23mr79054585e9.3.1783262086349; Sun, 05 Jul 2026 07:34:46 -0700 (PDT) X-Received: by 2002:a05:600c:a01:b0:493:bd2a:93bb with SMTP id 5b1f17b1804b1-493d11ced23mr79054135e9.3.1783262085739; Sun, 05 Jul 2026 07:34:45 -0700 (PDT) Date: Sun, 5 Jul 2026 10:34:43 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Alejandro Jimenez , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Sairaj Kodilkar , Paolo Bonzini , Richard Henderson Subject: [PULL 02/44] amd_iommu: Return int from page walk status helpers Message-ID: <784768f7faccf02fcf904db023cd29c790b57443.1783261895.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.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262519544158500 From: Alejandro Jimenez fetch_pte() returns a status code 0 on success, and (small) negative values on failure. The PTE value itself is returned via an output parameter. amdvi_get_top_pt_level_and_perms() follows the same return convention. Both functions currently return uint64_t, which means any negative error values are returned as unsigned and then converted back to int by the callers. This does not cause any issues in the current implementation, but Coverity flags the type mismatch and potential overflow. Make both helpers return int, so the type matches what the return variable is (0 on success, small negative value on failure), and also the type used by all callers to store their return values. No functional changes are intended. Fixes: a1c97c395729 ("amd_iommu: Sync shadow page tables on page invalidati= on") Fixes: 786550e2d38a ("amd_iommu: Follow root pointer before page walk and u= se 1-based levels") Reported-by: Peter Maydell Suggested-by: Peter Maydell Signed-off-by: Alejandro Jimenez Reviewed-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260630220806.1758748-3-alejandro.j.jimenez@oracle.com> --- hw/i386/amd_iommu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index 05b7c638f4..a0835a20d7 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -659,7 +659,7 @@ static uint64_t large_pte_page_size(uint64_t pte) * - IOVA exceeds the address width supported by DTE[Mode] * In all such cases a page walk must be aborted. */ -static uint64_t amdvi_get_top_pt_level_and_perms(hwaddr address, uint64_t = dte, +static int amdvi_get_top_pt_level_and_perms(hwaddr address, uint64_t dte, uint8_t *top_level, IOMMUAccessFlags *dte_per= ms) { @@ -702,7 +702,7 @@ static uint64_t amdvi_get_top_pt_level_and_perms(hwaddr= address, uint64_t dte, * page table walk. This means that the DTE has valid data, but one o= f the * lower level entries in the Page Table could not be read. */ -static uint64_t fetch_pte(AMDVIAddressSpace *as, hwaddr address, uint64_t = dte, +static int fetch_pte(AMDVIAddressSpace *as, hwaddr address, uint64_t dte, uint64_t *pte, hwaddr *page_size) { uint64_t pte_addr; --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262197; cv=none; d=zohomail.com; s=zohoarc; b=nm0aBm1Md0Mo+xvxg+ImduvBR+qAd0b2ozNP4cI+GrZVk42vkoku/WIyze+MKYJs+4e6YMI6MLo1KM5QWqruCYnhFAquUyE4yvUOUr/Qc/B4m2SU5x7vmCkjG4G/ljyhhMwk6m3g2LjjIpKemGhh8Kd/ycpq/qNvK4ri24uR8fc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262197; 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=SfP5ZteIZuG9MnPCQQceIltovRko4AplCnjjhfUb6nY=; b=CL6uIhpoXFbYkcXZ9yxTq/wJMz3X48BRZNYgFybD18pLpoFZrrb5AHyJts0SMsP+6l+TDKWUlPwGly/oCvzmX3VBV6OmimPnU8L2kHCrG7PgF2uBkvbxNysN2Ezeb+6QITrgr155EDX+v2f/dIWMmRBudbtgdHomXPkQJ8tH9a0= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262197845318.78774012965073; Sun, 5 Jul 2026 07:36:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNvs-0005BB-NI; Sun, 05 Jul 2026 10:34:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNvr-0005B0-KE for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:34:55 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNvp-00016J-Um for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:34:55 -0400 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-552-MNVOAvd5NeqBItOLfg3DvQ-1; Sun, 05 Jul 2026 10:34:50 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-493c1bc7a70so17070015e9.1 for ; Sun, 05 Jul 2026 07:34:49 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493ccdb566csm198342605e9.7.2026.07.05.07.34.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:34:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262093; 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=SfP5ZteIZuG9MnPCQQceIltovRko4AplCnjjhfUb6nY=; b=K758yidreKpnAfc8ohGoa3T7XS+gO/KqybKiNwZLwpe/lSch+Ig9KLt58eorJlvUaebcl0 KCt70nF4fYtCvf+8nnXa4xyYyTlnuHl4wF6p5gdFaMpj6dcBS89ptnzkrvPTsHfiIvLgFy 8M0Ab18upAh+xFbzDQmCyvTW5LBADfk= X-MC-Unique: MNVOAvd5NeqBItOLfg3DvQ-1 X-Mimecast-MFC-AGG-ID: MNVOAvd5NeqBItOLfg3DvQ_1783262089 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262089; x=1783866889; 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=SfP5ZteIZuG9MnPCQQceIltovRko4AplCnjjhfUb6nY=; b=e1eUuVAUpgn8Q+PAj3CR0VrlEffc5GHQ6AF3nbhaxaO0p5OUX5lyvskFLFRM2VhBHx o7d5PryUbqegQqThwJyEmf9hM5QcMTVYS0ADPWzBo77DvVAeY8p3ESMKYEmdBdkMDGAU 8X3nJrNBagX9TJpHDJdFA/MzgJl1XlXQ0GsjQ6d/S1ORTg4yHbxJkCB+GGbrjqmWIQ04 p31sT5WIpdZCIRwBEDI9ix4JYC/9u8nijA/XTpZBXa4NOpe+/YaPFsLH/VDQTyFvfQTl EiuzMp31l2OZFesGIJJxZggTyYqifImUalEP6J9+X9AlRWZ4BM49qgSgI69elfuR06DI /vpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262089; x=1783866889; 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=SfP5ZteIZuG9MnPCQQceIltovRko4AplCnjjhfUb6nY=; b=aL4m33Rn03POx11OAiToJ+4xWyfqOnTO235JCOtWAmG8kEvHqjTP92xsYKjHpkgFlw ZLBxuDPts8Oi2L1a/WuRhiBADKLGbotV3EEO2zVWNlpdMHrDHEUkcEqhxBUlUFqUHdrg Idc2x6Kka65D5fd0y7zECQTKCyDVt9lXe3RdHpbzPNh/Zl7uAPZneMwbxPdaAMrLVb9d d9i/anvkNtdjc/eWUaGeJwFremlZiMrRFoMTJvY+77r7Q0y9b9dUlZLdM1wU7o+z5Ghw 2bva9tB0RB3r3kKhPK+G+bFZGD1KRgrAFdO94emWoZ/lf1ZDyMMHosj8RDRMKTeMVazP gTJA== X-Gm-Message-State: AOJu0YwNn2PMtflyLExty4ORVfjdEtGGHnN6UWfjLi9GU/5BSJzqp+cj lCpeDf05FOesmibeJOivlg8ANQ83raIrpa1ILja0DtZHOnF/C13MCP/CcHIPzpVD9wJXg137YiO Ctp/3ahkU5N0PhMS+VHY8aavVl7H4GG05/W+5Lqpf0xoUapPp+EY1G698sJ23zNTe8hcaOFLu1H HqLzEL0pOmhTH0EREgIF1Reo0XzInqxO5cUA== X-Gm-Gg: AfdE7cn+iUWdrutNL0gR7vzlG64ETqaCU8UBBGXCV7eT+fH+QDLkZr1ykH+byNrLMat Nq6amrbS8wCdqxCw7TGvLdsvdsrnp68CaeIeeZL3YyNy0cJ9UhN+SZl08eSxh+RJxDKhvhC9LKs 9E3lCkAIgZur2iDyL8OOzuc9YQfgfMZpJf1hL5Rw/7ZeHPuLYbSE45WtCroDJYuUxX++85lUUlF vS5ZU7TFa2JgzJl/idgVMnbNDIRCEclihtNRlRhvxkyPBlKaznA38xvBQyl6evVbupPckeuKK6u JTJmrzqGLYGEIzhgaHVHH3wfAUuR6Kgjm3LJHPozGuCg8iCXxEKS5Omo8VkuBSI9pJcot4Q9c7S uxLOIse6gsgaoxSMzcDWZ+LHwEnpr5MI8 X-Received: by 2002:a05:600c:1992:b0:493:b91c:6bf with SMTP id 5b1f17b1804b1-493d11f149emr72442505e9.18.1783262088585; Sun, 05 Jul 2026 07:34:48 -0700 (PDT) X-Received: by 2002:a05:600c:1992:b0:493:b91c:6bf with SMTP id 5b1f17b1804b1-493d11f149emr72442215e9.18.1783262088059; Sun, 05 Jul 2026 07:34:48 -0700 (PDT) Date: Sun, 5 Jul 2026 10:34:45 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Alejandro Jimenez , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Sairaj Kodilkar , Paolo Bonzini , Richard Henderson Subject: [PULL 03/44] amd_iommu: Decode XT interrupt control register without bitfields Message-ID: <83ec1c7fcb243c232186df790f5847808cc26982.1783261895.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.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262198244158500 From: Alejandro Jimenez The XT IOMMU General Interrupt Control Register is a guest-visible MMIO register. Decoding it with bitfields depends on host bitfield layout and is not portable to big-endian hosts. Fix this by removing union mmio_xt_intr and explicitly extracting fields with FIELD_EX64() from the full register value returned by amdvi_readq(), which has already been converted to host endianness. Using a designated initializer for X86IOMMUIrq also ensures fields not provided by the XT register (e.g. msi_addr_last_bits) are initialized before x86_iommu_irq_to_msi_message() uses them. CID: 1660056 Fixes: cf0210df65aa ("amd_iommu: Generate XT interrupts when xt support is = enabled") Reported-by: Peter Maydell Suggested-by: Peter Maydell Signed-off-by: Alejandro Jimenez Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Peter Maydell Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260630220806.1758748-4-alejandro.j.jimenez@oracle.com> --- hw/i386/amd_iommu.h | 14 -------------- hw/i386/amd_iommu.c | 28 ++++++++++++++++++---------- 2 files changed, 18 insertions(+), 24 deletions(-) diff --git a/hw/i386/amd_iommu.h b/hw/i386/amd_iommu.h index 3cab04a6d4..ca4440a4c1 100644 --- a/hw/i386/amd_iommu.h +++ b/hw/i386/amd_iommu.h @@ -340,20 +340,6 @@ struct irte_ga { union irte_ga_hi hi; }; =20 -union mmio_xt_intr { - uint64_t val; - struct { - uint64_t rsvd_1:2, - destination_mode:1, - rsvd_2:5, - destination_lo:24, - vector:8, - delivery_mode:1, - rsvd_3:15, - destination_hi:8; - }; -}; - #define TYPE_AMD_IOMMU_DEVICE "amd-iommu" OBJECT_DECLARE_SIMPLE_TYPE(AMDVIState, AMD_IOMMU_DEVICE) =20 diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index a0835a20d7..291cb368a9 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -34,6 +34,7 @@ #include "hw/core/qdev-properties.h" #include "kvm/kvm_i386.h" #include "qemu/iova-tree.h" +#include "hw/core/registerfields.h" =20 struct AMDVIAddressSpace { PCIBus *bus; /* PCIBus (for bus number) */ @@ -88,6 +89,13 @@ typedef struct AMDVIIOTLBKey { uint16_t devid; } AMDVIIOTLBKey; =20 +/* XT IOMMU General Interrupt Control Register layout */ +FIELD(AMDVI_XT_GEN_INTR, DEST_MODE, 2, 1) +FIELD(AMDVI_XT_GEN_INTR, DEST_LO, 8, 24) +FIELD(AMDVI_XT_GEN_INTR, VECTOR, 32, 8) +FIELD(AMDVI_XT_GEN_INTR, DELIVERY_MODE, 40, 1) +FIELD(AMDVI_XT_GEN_INTR, DEST_HI, 56, 8) + uint64_t amdvi_extended_feature_register(AMDVIState *s) { uint64_t feature =3D AMDVI_DEFAULT_EXT_FEATURES; @@ -194,17 +202,17 @@ static void amdvi_assign_andq(AMDVIState *s, hwaddr a= ddr, uint64_t val) =20 static void amdvi_build_xt_msi_msg(AMDVIState *s, MSIMessage *msg) { - union mmio_xt_intr xt_reg; - struct X86IOMMUIrq irq; + uint64_t xt_reg =3D amdvi_readq(s, AMDVI_MMIO_XT_GEN_INTR); =20 - xt_reg.val =3D amdvi_readq(s, AMDVI_MMIO_XT_GEN_INTR); - - irq.vector =3D xt_reg.vector; - irq.delivery_mode =3D xt_reg.delivery_mode; - irq.dest_mode =3D xt_reg.destination_mode; - irq.dest =3D (xt_reg.destination_hi << 24) | xt_reg.destination_lo; - irq.trigger_mode =3D 0; - irq.redir_hint =3D 0; + X86IOMMUIrq irq =3D { + .vector =3D FIELD_EX64(xt_reg, AMDVI_XT_GEN_INTR, VECTOR), + .delivery_mode =3D FIELD_EX64(xt_reg, AMDVI_XT_GEN_INTR, DELIVERY_= MODE), + .dest_mode =3D FIELD_EX64(xt_reg, AMDVI_XT_GEN_INTR, DEST_MODE), + .dest =3D (FIELD_EX64(xt_reg, AMDVI_XT_GEN_INTR, DEST_HI) << 24) | + FIELD_EX64(xt_reg, AMDVI_XT_GEN_INTR, DEST_LO), + .trigger_mode =3D 0, + .redir_hint =3D 0, + }; =20 x86_iommu_irq_to_msi_message(&irq, msg); } --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262584; cv=none; d=zohomail.com; s=zohoarc; b=NQ9s1mf6tmjGblqLwf/n/3RVqfYMFH5C5JeoLfm1PIpaW+q1ZPE2ToFC3xf+fpGOZMOeHViXj5dm1q6Rg89okIrK6Zzd1joMD85rKfUdM5mVXym+sT9ojzhBgqQXNs97/VhbT7zNL81QsnFDvl8TFcI/oWF1iR8zh7ENK+f9Yv4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262584; 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=OZ+hFgNQf8FoNmFlIkaqMaOQk1+bebbE5wXB+o3lSjg=; b=SrpCL7MAxgyDM+kegwNlcqdcVYFCy83nWsm1klCU1l3Z1QGGJ8b4/zp1wDH6PBzmk8UpuYsRQNzJoTylz8DA4YjtuE7OOqsAwrzh0Mb/OcBb+5Emy26ohTLlYSHfRM8kX7lMPCONVXb6kuhVoJrcz8b90luA9of68Qmnr3rV34g= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262584230320.5746970761322; Sun, 5 Jul 2026 07:43:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNvu-0005Bs-B5; Sun, 05 Jul 2026 10:34:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNvs-0005BH-Sj for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:34:56 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNvr-00016m-1R for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:34:56 -0400 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-558-8u3J8gsDOhK20fQaPLs2-Q-1; Sun, 05 Jul 2026 10:34:52 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-493b0fe95b6so11366865e9.1 for ; Sun, 05 Jul 2026 07:34:52 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63bf7efsm299935025e9.14.2026.07.05.07.34.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:34:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262094; 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=OZ+hFgNQf8FoNmFlIkaqMaOQk1+bebbE5wXB+o3lSjg=; b=RrQ7Birkq5Qb0UrIxnMcqSatJ+KtLE+u2Q1G3Twmc0LF9INquD+B+HIpQPwSrKngZiNJG1 IngmJFb/kPModUCqSxr3an1jawi8Q5J6tSD+1gFgYS98dEiig/y188N9cgrjshRKZ+vKDO rzQIX7MKQlvuZIMh7CTrELuAYnif6tQ= X-MC-Unique: 8u3J8gsDOhK20fQaPLs2-Q-1 X-Mimecast-MFC-AGG-ID: 8u3J8gsDOhK20fQaPLs2-Q_1783262091 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262091; x=1783866891; 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=OZ+hFgNQf8FoNmFlIkaqMaOQk1+bebbE5wXB+o3lSjg=; b=ZK2ibwWLBvGBFrcNcJKbU0ZJnZAI7XnW4K2jALBHtAgu9mfpJyvjy5KSX0fPG0D9K4 7il8SP5nZ1/xS00R1cxasu4B3bKQTgQYnhVLKDbLPEgahS4VhgpKf0K2JJPDGfNai7k0 Y+sO+7RCYeRkZH8VIJwrwctHwIpbNcsKksMO7xTfH4uaw0owHHATXY6XyM/gieeRMxoj v3+JcdZ8zAYjwQS0bNY1Hp3jgsPFA7pRyvgtNbvQyRnV4bPLRmNq1iKFbT1B9vWzMK1u CJypEOB6W7EmwWmP4+QTJOfGTNhZdKV3O9dIQWOOJeA975cw+R/FQkvIwCTSuCLbYIYj CVVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262091; x=1783866891; 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=OZ+hFgNQf8FoNmFlIkaqMaOQk1+bebbE5wXB+o3lSjg=; b=kYxxXuLJMt0KjSEMh6y7K0SjuI5jgYL/xXNWpkS3tDQsXGfzcajmfXhYLJRCP92L1q +8BVWCDbKaweWMkRin1lrQa5xT4i5sSfLstYaKgjdKD4Mc+EYkGUV1nE8ukc+ekNQcY3 zZyqQ4K/B91xIssqCqFoF93DLCwbTp1C0F/3jcAPqQkqf6v3QGCoDL6rffX/iFNhYy7M I0o0JlGYVU2YPxLAAAN9lDY9bEoVNIFYVYAGZjZonhVJVgRkhNg+uWbve4Bv2AYs2Gaw XIHeM1BMN3jQsYOYNhfQkvh/DPOtfC/2Q9IB83oyBiqMMRLbMirwSylnfJWtW753TJsd koWQ== X-Gm-Message-State: AOJu0YwZwcDepIueAmm3EWU7CPkS1uw7ngP0+AEtF6w67++wlGN9PGmS VTeMxa3VJ7UnClMKg/s2eI2yIAiqyRAjjMIsF7aKXEyHHxdDHsf52Pob8vjzsM0bDL7YzuNh3Qe gG4X8/5Mo4Mpvq6EzhEzI9ZaYHadohPNil6nVGDAAhCJs1UaJNbNRgZoLPwjLOWW1MvKuMFeAiC RC3Xy6wR/bkSPactrZB5K8/e58xnFpUVelVQ== X-Gm-Gg: AfdE7cm6h44f8c4M/P+px93GXEnyVdab6ifXgZeWV57dP9TU/bgdM0Qx/2iPxG8O/xn zfOTiRi2j5mfsNlWkWB1y/9G4kL/g+POL0idccqgiBlmGcA6ZuGT4cm57BgX+D/nCz0OufxxgOa FGWdzIgjo5Y4/oHR9GAZAfusLFtCvDPHHYU2Sk2bsL8VZCtDHPC8NahiWIF545ubbh1ASBt0mfj M+G8ivqrnmhqzir0MyG5N8AQwr2oShXE4ME4QlH3QfJrsL9tluqOJ3lCR1rmn3JOUjryQDlKcwM 7BRDNnLHhqL5SplvnViF4lCtTEgvjPxMohvankcUcqpOshcTOjdLcvWwU8L9A/B3UClilHknhge VsFo/S5YNwspo/AzHzmkBPx4Tc/FIQ0Cn X-Received: by 2002:a05:600c:198d:b0:493:bb6b:5bb5 with SMTP id 5b1f17b1804b1-493d11db4c1mr78424215e9.13.1783262090987; Sun, 05 Jul 2026 07:34:50 -0700 (PDT) X-Received: by 2002:a05:600c:198d:b0:493:bb6b:5bb5 with SMTP id 5b1f17b1804b1-493d11db4c1mr78423865e9.13.1783262090398; Sun, 05 Jul 2026 07:34:50 -0700 (PDT) Date: Sun, 5 Jul 2026 10:34:48 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Alejandro Jimenez , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Sairaj Kodilkar , Paolo Bonzini , Richard Henderson Subject: [PULL 04/44] amd_iommu: Decode IRTEs without bitfields Message-ID: <5bebd769ec33aaeafbdefa7aebc0ea016ba07f09.1783261895.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.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262585853158500 From: Alejandro Jimenez Interrupt remapping table entries are data stored in guest memory in little-endian format. Decoding them with bitfields depends on host bitfield layout and the value returned from dma_memory_read() is not portable to big-endian hosts. Replace the legacy and GA IRTE bitfield definitions with explicit FIELD() definitions. Convert the guest memory values returned from dma_memory_read() with le32_to_cpu() or le64_to_cpu(), then extract relevant fields using FIELD_EX32() or FIELD_EX64() as appropriate to match the IRTE format. Fixes: b44159fe0078 ("x86_iommu/amd: Add interrupt remap support when VAPIC= is not enabled") Fixes: 135f866e609c ("x86_iommu/amd: Add interrupt remap support when VAPIC= is enabled") Reported-by: Peter Maydell Suggested-by: Peter Maydell Signed-off-by: Alejandro Jimenez Reviewed-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260630220806.1758748-5-alejandro.j.jimenez@oracle.com> --- hw/i386/amd_iommu.h | 49 ------------------------ hw/i386/amd_iommu.c | 93 +++++++++++++++++++++++++++++++++------------ 2 files changed, 69 insertions(+), 73 deletions(-) diff --git a/hw/i386/amd_iommu.h b/hw/i386/amd_iommu.h index ca4440a4c1..687691ec1c 100644 --- a/hw/i386/amd_iommu.h +++ b/hw/i386/amd_iommu.h @@ -291,55 +291,6 @@ #define AMDVI_DEV_LINT0_PASS_MASK (1ULL << 62) #define AMDVI_DEV_LINT1_PASS_MASK (1ULL << 63) =20 -/* Interrupt remapping table fields (Guest VAPIC not enabled) */ -union irte { - uint32_t val; - struct { - uint32_t valid:1, - no_fault:1, - int_type:3, - rq_eoi:1, - dm:1, - guest_mode:1, - destination:8, - vector:8, - rsvd:8; - } fields; -}; - -/* Interrupt remapping table fields (Guest VAPIC is enabled) */ -union irte_ga_lo { - uint64_t val; - - /* For int remapping */ - struct { - uint64_t valid:1, - no_fault:1, - /* ------ */ - int_type:3, - rq_eoi:1, - dm:1, - /* ------ */ - guest_mode:1, - destination:24, - rsvd_1:32; - } fields_remap; -}; - -union irte_ga_hi { - uint64_t val; - struct { - uint64_t vector:8, - rsvd_2:48, - destination_hi:8; - } fields; -}; - -struct irte_ga { - union irte_ga_lo lo; - union irte_ga_hi hi; -}; - #define TYPE_AMD_IOMMU_DEVICE "amd-iommu" OBJECT_DECLARE_SIMPLE_TYPE(AMDVIState, AMD_IOMMU_DEVICE) =20 diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index 291cb368a9..c7bf21b762 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -89,6 +89,11 @@ typedef struct AMDVIIOTLBKey { uint16_t devid; } AMDVIIOTLBKey; =20 +typedef struct AMDVIIrteGA { + uint64_t ga_lo; + uint64_t ga_hi; +} AMDVIIrteGA; + /* XT IOMMU General Interrupt Control Register layout */ FIELD(AMDVI_XT_GEN_INTR, DEST_MODE, 2, 1) FIELD(AMDVI_XT_GEN_INTR, DEST_LO, 8, 24) @@ -96,6 +101,37 @@ FIELD(AMDVI_XT_GEN_INTR, VECTOR, 32, 8) FIELD(AMDVI_XT_GEN_INTR, DELIVERY_MODE, 40, 1) FIELD(AMDVI_XT_GEN_INTR, DEST_HI, 56, 8) =20 +/* Interrupt Remapping Table Fields Formats */ + +/* Basic 32-bit IRTE layout (GAEn=3D0) */ +FIELD(AMDVI_IRTE, VALID, 0, 1) +FIELD(AMDVI_IRTE, SUP_IOPF, 1, 1) +FIELD(AMDVI_IRTE, INT_TYPE, 2, 3) +FIELD(AMDVI_IRTE, RQ_EOI, 5, 1) +FIELD(AMDVI_IRTE, DM, 6, 1) +FIELD(AMDVI_IRTE, GUEST_MODE, 7, 1) +FIELD(AMDVI_IRTE, DESTINATION, 8, 8) +FIELD(AMDVI_IRTE, VECTOR, 16, 8) + +/* 128-bit IRTE layout (GAEn=3D1) */ +FIELD(AMDVI_IRTE_GA_LO, VALID, 0, 1) +FIELD(AMDVI_IRTE_GA_LO, SUP_IOPF, 1, 1) +FIELD(AMDVI_IRTE_GA_LO, INT_TYPE, 2, 3) +FIELD(AMDVI_IRTE_GA_LO, RQ_EOI, 5, 1) +FIELD(AMDVI_IRTE_GA_LO, DM, 6, 1) +FIELD(AMDVI_IRTE_GA_LO, GUEST_MODE, 7, 1) +/* + * In the 128-bit IRTE format, XT mode uses IRTE_GA_LOW.Destination[23:0] + * together with IRTE_GA_HI.DestinationHi[7:0] to construct a 32-bit x2APIC + * destination. + * Without XTEn (i.e. when x2APIC support is not enabled), only + * IRTE_GA_LOW.Destination[7:0] is used. + */ +FIELD(AMDVI_IRTE_GA_LO, DESTINATION, 8, 24) + +FIELD(AMDVI_IRTE_GA_HI, VECTOR, 0, 8) +FIELD(AMDVI_IRTE_GA_HI, DESTINATION_HI, 56, 8) + uint64_t amdvi_extended_feature_register(AMDVIState *s) { uint64_t feature =3D AMDVI_DEFAULT_EXT_FEATURES; @@ -1983,7 +2019,7 @@ static IOMMUTLBEntry amdvi_translate(IOMMUMemoryRegio= n *iommu, hwaddr addr, } =20 static int amdvi_get_irte(AMDVIState *s, MSIMessage *origin, uint64_t *dte, - union irte *irte, uint16_t devid) + uint32_t *irte, uint16_t devid) { uint64_t irte_root, offset; =20 @@ -1998,7 +2034,8 @@ static int amdvi_get_irte(AMDVIState *s, MSIMessage *= origin, uint64_t *dte, return -AMDVI_IR_GET_IRTE; } =20 - trace_amdvi_ir_irte_val(irte->val); + *irte =3D le32_to_cpu(*irte); + trace_amdvi_ir_irte_val(*irte); =20 return 0; } @@ -2010,8 +2047,9 @@ static int amdvi_int_remap_legacy(AMDVIState *iommu, X86IOMMUIrq *irq, uint16_t sid) { + uint8_t int_type; + uint32_t irte; int ret; - union irte irte; =20 /* get interrupt remapping table */ ret =3D amdvi_get_irte(iommu, origin, dte, &irte, sid); @@ -2019,32 +2057,33 @@ static int amdvi_int_remap_legacy(AMDVIState *iommu, return ret; } =20 - if (!irte.fields.valid) { + if (!FIELD_EX32(irte, AMDVI_IRTE, VALID)) { trace_amdvi_ir_target_abort("RemapEn is disabled"); return -AMDVI_IR_TARGET_ABORT; } =20 - if (irte.fields.guest_mode) { + if (FIELD_EX32(irte, AMDVI_IRTE, GUEST_MODE)) { error_report_once("guest mode is not zero"); return -AMDVI_IR_ERR; } =20 - if (irte.fields.int_type > AMDVI_IOAPIC_INT_TYPE_ARBITRATED) { + int_type =3D FIELD_EX32(irte, AMDVI_IRTE, INT_TYPE); + if (int_type > AMDVI_IOAPIC_INT_TYPE_ARBITRATED) { error_report_once("reserved int_type"); return -AMDVI_IR_ERR; } =20 - irq->delivery_mode =3D irte.fields.int_type; - irq->vector =3D irte.fields.vector; - irq->dest_mode =3D irte.fields.dm; - irq->redir_hint =3D irte.fields.rq_eoi; - irq->dest =3D irte.fields.destination; + irq->delivery_mode =3D int_type; + irq->vector =3D FIELD_EX32(irte, AMDVI_IRTE, VECTOR); + irq->dest_mode =3D FIELD_EX32(irte, AMDVI_IRTE, DM); + irq->redir_hint =3D FIELD_EX32(irte, AMDVI_IRTE, RQ_EOI); + irq->dest =3D FIELD_EX32(irte, AMDVI_IRTE, DESTINATION); =20 return 0; } =20 static int amdvi_get_irte_ga(AMDVIState *s, MSIMessage *origin, uint64_t *= dte, - struct irte_ga *irte, uint16_t devid) + AMDVIIrteGA *irte, uint16_t devid) { uint64_t irte_root, offset; =20 @@ -2058,7 +2097,9 @@ static int amdvi_get_irte_ga(AMDVIState *s, MSIMessag= e *origin, uint64_t *dte, return -AMDVI_IR_GET_IRTE; } =20 - trace_amdvi_ir_irte_ga_val(irte->hi.val, irte->lo.val); + irte->ga_lo =3D le64_to_cpu(irte->ga_lo); + irte->ga_hi =3D le64_to_cpu(irte->ga_hi); + trace_amdvi_ir_irte_ga_val(irte->ga_hi, irte->ga_lo); return 0; } =20 @@ -2069,8 +2110,9 @@ static int amdvi_int_remap_ga(AMDVIState *iommu, X86IOMMUIrq *irq, uint16_t sid) { + AMDVIIrteGA irte; + uint8_t int_type; int ret; - struct irte_ga irte; =20 /* get interrupt remapping table */ ret =3D amdvi_get_irte_ga(iommu, origin, dte, &irte, sid); @@ -2078,30 +2120,33 @@ static int amdvi_int_remap_ga(AMDVIState *iommu, return ret; } =20 - if (!irte.lo.fields_remap.valid) { + if (!FIELD_EX64(irte.ga_lo, AMDVI_IRTE_GA_LO, VALID)) { trace_amdvi_ir_target_abort("RemapEn is disabled"); return -AMDVI_IR_TARGET_ABORT; } =20 - if (irte.lo.fields_remap.guest_mode) { + if (FIELD_EX64(irte.ga_lo, AMDVI_IRTE_GA_LO, GUEST_MODE)) { error_report_once("guest mode is not zero"); return -AMDVI_IR_ERR; } =20 - if (irte.lo.fields_remap.int_type > AMDVI_IOAPIC_INT_TYPE_ARBITRATED) { + int_type =3D FIELD_EX64(irte.ga_lo, AMDVI_IRTE_GA_LO, INT_TYPE); + if (int_type > AMDVI_IOAPIC_INT_TYPE_ARBITRATED) { error_report_once("reserved int_type is set"); return -AMDVI_IR_ERR; } =20 - irq->delivery_mode =3D irte.lo.fields_remap.int_type; - irq->vector =3D irte.hi.fields.vector; - irq->dest_mode =3D irte.lo.fields_remap.dm; - irq->redir_hint =3D irte.lo.fields_remap.rq_eoi; + irq->delivery_mode =3D int_type; + irq->vector =3D FIELD_EX64(irte.ga_hi, AMDVI_IRTE_GA_HI, VECTOR); + irq->dest_mode =3D FIELD_EX64(irte.ga_lo, AMDVI_IRTE_GA_LO, DM); + irq->redir_hint =3D FIELD_EX64(irte.ga_lo, AMDVI_IRTE_GA_LO, RQ_EOI); if (iommu->xten) { - irq->dest =3D irte.lo.fields_remap.destination | - (irte.hi.fields.destination_hi << 24); + irq->dest =3D FIELD_EX64(irte.ga_lo, AMDVI_IRTE_GA_LO, DESTINATION= ) | + (FIELD_EX64(irte.ga_hi, AMDVI_IRTE_GA_HI, DESTINATION_= HI) + << 24); } else { - irq->dest =3D irte.lo.fields_remap.destination & 0xff; + irq->dest =3D FIELD_EX64(irte.ga_lo, AMDVI_IRTE_GA_LO, DESTINATION= ) & + 0xff; } =20 return 0; --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262296; cv=none; d=zohomail.com; s=zohoarc; b=ZaSSm2ghnaRIiBvrC7FWKwnCkc4Wpr6Y+kybzD52scqFNpS4jpft8EMGY5Ehzh2VMmTLYz+1OXF+1d6a/IkAUOy04uQfC2NW51J787RPYx3AimwpC3+2+nczhzALPcf8QKUJHLlivTH1VGLNN6tVeWepTYJI8nGzTP36coEthgs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262296; 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=NTRUDBx0gpZabdbM32vez4CHeJyZ2PohKLpfkYO6ixU=; b=AfD0OggpSYqiwt574NZUwJ/iCUDupPLizNC8tylytDggTQWyB6kv/UL/uRi8spqHW1Kgy/+urr6FxZKYzGLByqGv72Ril9IBBs0hO6nBaEZXKhTfxPNhUOG1aK2mECwTe+SZXmc2ia7pqBD0pEt+e4LnT73urqA9/7zLMvjfGPg= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262296628573.6307072030509; Sun, 5 Jul 2026 07:38:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNvw-0005C4-2i; Sun, 05 Jul 2026 10:35:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNvu-0005Bt-Cf for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:34:58 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNvs-00017Y-LG for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:34:58 -0400 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-20-TLB17nmYMyaxoHx6NrlFhw-1; Sun, 05 Jul 2026 10:34:54 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-47127ee7e07so1397340f8f.2 for ; Sun, 05 Jul 2026 07:34:54 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47aa039ae4fsm17086316f8f.18.2026.07.05.07.34.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:34:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262096; 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=NTRUDBx0gpZabdbM32vez4CHeJyZ2PohKLpfkYO6ixU=; b=dH0du0wI4Ny+IewM3XEpDMfx0BJRuSj+Ng8dFX8RiHyL2GLKpDFCrfixJ1Q7dn1nCvfXlf eMQnYLjMN3tc1CkV2WwjiWqiQkb1tguCa+3Wc326HIcprDiE1DMgUel/w22ZxZZS7t0wWF kHdSrOgXR0x2kuKrPzTlLc7RJtpFnWs= X-MC-Unique: TLB17nmYMyaxoHx6NrlFhw-1 X-Mimecast-MFC-AGG-ID: TLB17nmYMyaxoHx6NrlFhw_1783262093 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262093; x=1783866893; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :content-type:mime-version:references:message-id:subject:cc:to:from :date:from:to:cc:subject:date:message-id:reply-to:content-type; bh=NTRUDBx0gpZabdbM32vez4CHeJyZ2PohKLpfkYO6ixU=; b=l/bVARWjehPnBkvhVB58281+H6q6/OiUfQzhkOkaTdOljXdvJohv8mrjlHjLO18zAO kOrRNPL/ziwCk2LDBPdMqNQhhZQKWCAzu9uEuCqoayebNIDnmGy+kCAgegwIC68X/ldA zMB/+0OqlVRtE2vB9CPk2lQ7QbwsmG5rW8wE/vvXcugBYqEiiW4CLdwk95GwXM4mTjJl UFRlz972SSpskKV8JP8s7/QHOiE/7Tk9bEWTe3Vyu/zdBQcgyRdi4kwuWh2yQ986RORS ngIvuS6YFWHMRrlgMTWQZEUwwPxpOib/ELNqEd5qdtmXY6ifeNFrfFyoBUhDYkTwJFb2 7AZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262093; x=1783866893; h=in-reply-to:content-transfer-encoding:content-disposition :content-type: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:content-type; bh=NTRUDBx0gpZabdbM32vez4CHeJyZ2PohKLpfkYO6ixU=; b=fxpCPqk7F5oPiXXm/nUa72pzNTMHuuZBj3CMvzRI4ZdeV9PheujDSkge4KHKQSJkWf 0g2X4x5jHLq9ftDGLm1J6lI3lyFDGjwu9QTk/Mso/Y3rov0HkhNwbF5bk5025YTwXjOl O80TKmK31HdTa5HW4nGnmGPaZmL71mo2EIQ0mG0sOxen4UGNmY5UPZ3DVq05Nh09tCRl fSCihQF2PsAsPJhHB1eAR7vncOoP7/3NEF1C793VWF/giSjadoCopo9iTqspIN7BOk0h l6lj1caRwRnA5W2NmUz3py6OwlyYW5RXUBQsWmTvd01oXM/j40jVbIWC1xci79wvko8j CPIw== X-Gm-Message-State: AOJu0YyNifcSca3g6yTdLenGXs5zU1Hw8G8Em/lSk7jR5krZPtxgM/cj FYDKhofzzdyfWuBHTSx0WTl1Tpa00WwKciKWo9n5mQsGiasPNVQAYyBaJJ+ZxpiGv6WhDqpvIBH 1PjEQgaC4+IWxFN72B198q6WObvseTp5c9dNbr0/Shqb/S4UHLkvycrPaUCjUbOXvhicA9oqSfa u+PaTCjWOeGNiXFHDuFT3Vcr/Ufart0viCEg== X-Gm-Gg: AfdE7clXGR2t+QoneBOHdH7zmOW+/fJYE7EUNEFdCccxwvftJj5DUKT8ztypFi8nMYt +XoMxOu1BInWkzt4l7OrMWUaxp3UbrpFLPqyf6yIUoq/AQOzp8qXfnOYUtwx6fOhDKvW/1sgetE am7OPrV/uBBBs7ZzlcwIRUFo6bM5KOv0lKJtTX9LhvDQKW2F43aUN5RW8mPVn+k8jV6aq6Wy7SS BJPF9s+K+miDpoIiqOJ3xoeC2LSXv5b3GePLlyY3WMjkUWj3GuE6bPy99GCeZ65OZVQWfsOlFIP sHiqJQ/Ly6Kz26rM9aJlB66ioGIsw8jkKyzoCn+7jjPMOEZmQM+g9+Zl1tHyXDE3f9XjVNkQ281 6pjq40GhNQ7LaaD90Dxi59Fhk+AwBsPBy X-Received: by 2002:a05:6000:4203:b0:464:8d68:618a with SMTP id ffacd0b85a97d-47aaaec0251mr7606680f8f.32.1783262093320; Sun, 05 Jul 2026 07:34:53 -0700 (PDT) X-Received: by 2002:a05:6000:4203:b0:464:8d68:618a with SMTP id ffacd0b85a97d-47aaaec0251mr7606641f8f.32.1783262092719; Sun, 05 Jul 2026 07:34:52 -0700 (PDT) Date: Sun, 5 Jul 2026 10:34:50 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Alejandro Jimenez , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Sairaj Kodilkar , Paolo Bonzini , Richard Henderson Subject: [PULL 05/44] amd_iommu: Fix endianness handling for command buffer entries 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.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262298772158500 From: Alejandro Jimenez AMD IOMMU command buffer entries are stored in guest memory in little-endian format. Convert command buffer with le64_to_cpu() after dma_memory_read(), so that command handlers can all operate using host native endianness. Remove the cpu_to_le*() conversions from command handlers, since the values are used internally by device emulation and do not need translation. Conversion is only necessary when reading or writing to guest memory e.g. writing completion-wait data and event log entries. The flow for command buffer handling is: - Retrieve command buffer (cmd[]) from guest memory (via dma_memory_read()) - Convert command buffer to host endianness (via le64_to_cpu()) - All handlers decode fields from cmd[] in host-endian format - All emulation code uses decoded values in host-endian format - Use cpu_to_le*() when writing back data to guest memory Fixes: d29a09ca6842 ("hw/i386: Introduce AMD IOMMU") Signed-off-by: Alejandro Jimenez Reviewed-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260630220806.1758748-6-alejandro.j.jimenez@oracle.com> --- hw/i386/amd_iommu.c | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index c7bf21b762..90252c52af 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -278,6 +278,7 @@ static uint32_t get_next_eventlog_entry(AMDVIState *s) =20 static void amdvi_log_event(AMDVIState *s, uint64_t *evt) { + uint64_t le_evt[2]; uint32_t evtlog_tail_next; =20 /* event logging not enabled */ @@ -298,8 +299,14 @@ static void amdvi_log_event(AMDVIState *s, uint64_t *e= vt) return; } =20 + /* + * Convert event buffer to little-endian before writing it to guest me= mory. + */ + le_evt[0] =3D cpu_to_le64(evt[0]); + le_evt[1] =3D cpu_to_le64(evt[1]); + if (dma_memory_write(&address_space_memory, s->evtlog + s->evtlog_tail, - evt, AMDVI_EVENT_LEN, MEMTXATTRS_UNSPECIFIED)) { + le_evt, AMDVI_EVENT_LEN, MEMTXATTRS_UNSPECIFIED))= { trace_amdvi_evntlog_fail(s->evtlog, s->evtlog_tail); } =20 @@ -545,15 +552,18 @@ static void amdvi_update_iotlb(AMDVIState *s, uint16_= t devid, static void amdvi_completion_wait(AMDVIState *s, uint64_t *cmd) { /* pad the last 3 bits */ - hwaddr addr =3D cpu_to_le64(extract64(cmd[0], 3, 49)) << 3; - uint64_t data =3D cpu_to_le64(cmd[1]); + hwaddr addr =3D extract64(cmd[0], 3, 49) << 3; + uint64_t data =3D cmd[1]; + + /* Format the data to be written to guest memory as little-endian */ + uint64_t le_data =3D cpu_to_le64(data); =20 if (extract64(cmd[0], 52, 8)) { amdvi_log_illegalcom_error(s, extract64(cmd[0], 60, 4), s->cmdbuf + s->cmdbuf_head); } if (extract64(cmd[0], 0, 1)) { - if (dma_memory_write(&address_space_memory, addr, &data, + if (dma_memory_write(&address_space_memory, addr, &le_data, AMDVI_COMPLETION_DATA_SIZE, MEMTXATTRS_UNSPECIFIED)) { trace_amdvi_completion_wait_fail(addr); @@ -1281,7 +1291,7 @@ static void amdvi_update_addr_translation_mode(AMDVIS= tate *s, uint16_t devid) /* log error without aborting since linux seems to be using reserved bits = */ static void amdvi_inval_devtab_entry(AMDVIState *s, uint64_t *cmd) { - uint16_t devid =3D cpu_to_le16((uint16_t)extract64(cmd[0], 0, 16)); + uint16_t devid =3D extract64(cmd[0], 0, 16); =20 trace_amdvi_devtab_inval(PCI_BUS_NUM(devid), PCI_SLOT(devid), PCI_FUNC(devid)); @@ -1448,9 +1458,9 @@ static void amdvi_sync_domain(AMDVIState *s, uint16_t= domid, uint64_t addr, /* we don't have devid - we can't remove pages by address */ static void amdvi_inval_pages(AMDVIState *s, uint64_t *cmd) { - uint16_t domid =3D cpu_to_le16((uint16_t)extract64(cmd[0], 32, 16)); - uint64_t addr =3D cpu_to_le64(extract64(cmd[1], 12, 52)) << 12; - uint16_t flags =3D cpu_to_le16((uint16_t)extract64(cmd[1], 0, 3)); + uint16_t domid =3D extract64(cmd[0], 32, 16); + uint64_t addr =3D extract64(cmd[1], 12, 52) << 12; + uint16_t flags =3D extract64(cmd[1], 0, 3); =20 if (extract64(cmd[0], 20, 12) || extract64(cmd[0], 48, 12) || extract64(cmd[1], 3, 9)) { @@ -1497,7 +1507,7 @@ static void amdvi_inval_inttable(AMDVIState *s, uint6= 4_t *cmd) static void iommu_inval_iotlb(AMDVIState *s, uint64_t *cmd) { =20 - uint16_t devid =3D cpu_to_le16(extract64(cmd[0], 0, 16)); + uint16_t devid =3D extract64(cmd[0], 0, 16); if (extract64(cmd[1], 1, 1) || extract64(cmd[1], 3, 1) || extract64(cmd[1], 6, 6)) { amdvi_log_illegalcom_error(s, extract64(cmd[0], 60, 4), @@ -1509,7 +1519,7 @@ static void iommu_inval_iotlb(AMDVIState *s, uint64_t= *cmd) g_hash_table_foreach_remove(s->iotlb, amdvi_iotlb_remove_by_devid, &devid); } else { - amdvi_iotlb_remove_page(s, cpu_to_le64(extract64(cmd[1], 12, 52)) = << 12, + amdvi_iotlb_remove_page(s, extract64(cmd[1], 12, 52) << 12, devid); } trace_amdvi_iotlb_inval(); @@ -1527,6 +1537,15 @@ static void amdvi_cmdbuf_exec(AMDVIState *s) return; } =20 + /* + * Commands in guest memory are little-endian. Convert once after read= ing + * so that command handlers can decode values in host native endiannes= s. + * Convert back to little-endian only when writing data to guest memor= y via + * dma_memory_write(). + */ + cmd[0] =3D le64_to_cpu(cmd[0]); + cmd[1] =3D le64_to_cpu(cmd[1]); + switch (extract64(cmd[0], 60, 4)) { case AMDVI_CMD_COMPLETION_WAIT: amdvi_completion_wait(s, cmd); --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262144; cv=none; d=zohomail.com; s=zohoarc; b=PsiWC2NEB2lry3u2k4WD5Q6Dfkb31KdfYIaypRcJz+Qd1rxDKrmubmxBUKKTC0ZHV6bhc/6xC9NngQYZqLQPIqDH0xyr9OWUnQLdmce4JPoTT9h6X4IG8vMympnqGOgoyrp9ijurUFlFtJaHv4GoZqvJnfMm6kiGFpCvSu2z7QQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262144; 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=GWgLSgRjMvIhm/wnAk+8Q7OAoMVBC49d4pbNeVzxotc=; b=bIKD9k/EpaCn8xEpDtEnCVjyShUPOML0KsAMP3rkyXhwqu3iXoDTTa0R2GSi8q6nBHvzewKZQpeQXRmNfKgjvWXqVqjbeBrMZ/Ffn+Npv2vyfbkkqK1owMe40714YQm7oVhVCjAMmJ6s3R7ZbfCJ6xm5pCGpOM8z1v/RGWfs1P0= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262144567738.7249112139109; Sun, 5 Jul 2026 07:35:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNw7-0005EQ-PG; Sun, 05 Jul 2026 10:35:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNw5-0005Dz-Uh for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:09 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNw4-00019L-2q for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:09 -0400 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-568-VkDJ3WviM6Gr429wGiNDUA-1; Sun, 05 Jul 2026 10:35:01 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-472bdd6f529so1206744f8f.1 for ; Sun, 05 Jul 2026 07:35:00 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493ccdab27dsm197009035e9.4.2026.07.05.07.34.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:34:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262107; 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=GWgLSgRjMvIhm/wnAk+8Q7OAoMVBC49d4pbNeVzxotc=; b=A4VFX0tUcbZAl5JAh2kjXLEvxje5meHUBK8Jf08ANoAg0tESHzT/M660We+kpLzcIjndJ9 vI8Ygi6v4b8VJmTrytR6NGLUMldZEMhxGwfuT7Jf5TpbABCbDB+KdSAt7S4t2XO14klI3T 7qgOSCptjO+C9SH6JSSCMhQcOAbg9eQ= X-MC-Unique: VkDJ3WviM6Gr429wGiNDUA-1 X-Mimecast-MFC-AGG-ID: VkDJ3WviM6Gr429wGiNDUA_1783262098 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262098; x=1783866898; 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=GWgLSgRjMvIhm/wnAk+8Q7OAoMVBC49d4pbNeVzxotc=; b=ZcIsoLac1uPwOj4q0cVcolmTnmWyXKK7ESrwxCy4a4RIq9V/jCtQmDcIMFbeldVgXd beqF7d9QE9qiI+2BOn7CMLHV1OoqNAdV0bRJLO+KjWJo3y/Q9FwGnBHmdHF0c51RKq9I wq5F3nLiSpKnQDQ0VP7NlzgmwsO4mbbCNpZt2d73b/mgfk/olALILJis0NtnvU4UUY9V 2oX8CDV2Wi6zpdHpDSEDGI7OT/QEJ9v9dPqUrI0aPXaClErDZDnjFm1DpEgYEra/g8/d bqXd+coiqjQqQ8nEg/6cGQHFr9Z72lh6V7rUVPRL3aoJqBvJbjMOv05kyXzPZE10uR5O i6ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262098; x=1783866898; 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=GWgLSgRjMvIhm/wnAk+8Q7OAoMVBC49d4pbNeVzxotc=; b=I3+oB7UEsCx2m85QltfR12bwoEQtGfq1J+rLu8OzDx8E/TkpW75lGroSyNWoxsKEV3 16PN+P6rRk85rvXURuPUcukX8JduTbip4Xzd/WB7IfpTrQk9HhGLSPmTserN86bvpU5C HH77Q/bQ2guxcfmQEBG/6gntoJ7pem8EGMpzOQbckdIfEKH6N0KgPI1bUIDmfu/sXzQw HQLVRxjC+sbkoiN4hQpKUcmGAGBLbYt+aZDUofOkPVuKq4Flikyw0kr3gBNJ6faLmbct jSbDu6lsqZGbeVU1Emn825VEbrLHF/jlEEKIJuZ1bVYItu6DV9UEsCY8qKV/aOnoAvpP 76kg== X-Gm-Message-State: AOJu0YzuVyybKYdJ+J/SBqtPwzfHdEbl/5d8AKFX7dz3QIA0GL0OVX1M zH01psc0xPv0QLsah3TU8MZZyz4/s71WaVFATUzqBNrlTtoZ1keKkeT+0J7BBFGtGzKvhzL+JaG DBQXtF65t08KXcqpkuwWrYj98lpVzEkM1IYuylx/zDY2s0FcXaWcMFE3YKDrpdH0TIbHBfcaES4 QrzaRFd4ap/wpuNV8DLK5xOxR+eF7Lh1vArg== X-Gm-Gg: AfdE7cmEoyxHL3hm1KMrhMyY89jUq4/Dg38Rr1xYmkn2pdsuyFR+TlPrm/S3MnNxatw 0tE6AaseZWoRY0Wd13ImUbT8G8wOzHDW9Q7ZeCWB/pwSIYAv+2LO2wmKKCyzDCpGnSc71W73f8O PNFFllhgSRuKoGR7VCghMr2A8RXw2V2cddFDmbtq/OW8ux0KulSC/AyWV5fQN5WV9HXI6cSPsSq 8u0m9htOavHhnFLHnw+57yKL2tStK7RBgyEOx/eWzl0kGlYKM8w7uoQ4+VWTYF02nkXlWYjmCZV jTasw9qngBTQu5v6OUIcLapWgZI0wsVK9F5eNhfyzz4CWSLK9XFZ6KggXj49wnWAj/qNdhYWeN2 dsqSj+OtkL9uyhbUkjnASP6YPqemlWbmp X-Received: by 2002:a05:600c:8b67:b0:493:bc88:ddcf with SMTP id 5b1f17b1804b1-493d11f35f7mr74037015e9.23.1783262096213; Sun, 05 Jul 2026 07:34:56 -0700 (PDT) X-Received: by 2002:a05:600c:8b67:b0:493:bc88:ddcf with SMTP id 5b1f17b1804b1-493d11f35f7mr74036665e9.23.1783262095661; Sun, 05 Jul 2026 07:34:55 -0700 (PDT) Date: Sun, 5 Jul 2026 10:34:52 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , fanhuang , Igor Mammedov , "David Hildenbrand (Arm)" , Paolo Bonzini Subject: [PULL 06/44] hw/mem: add sp-mem device for Specific Purpose Memory Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262146220158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: fanhuang Introduce a TYPE_MEMORY_DEVICE subclass `sp-mem` for boot-time SOFT_RESERVED memory exposed to the guest with a per-device NUMA proximity domain. The device targets accelerator memory (HBM and similar) that the firmware hands to the guest OS as SOFT_RESERVED memory, so a driver in the guest -- rather than the kernel's general allocator -- owns the range. Usage: -object memory-backend-ram,id=3Dspm0,size=3D$SIZE -numa node,nodeid=3D$N -device sp-mem,id=3Ddev0,memdev=3Dspm0,node=3D$N[,addr=3D$GPA] The device is boot-time only (no hotplug). Signed-off-by: FangSheng Huang Reviewed-by: Igor Mammedov Reviewed-by: David Hildenbrand (Arm) Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260623075051.3797975-2-FangSheng.Huang@amd.com> --- include/hw/mem/sp-mem.h | 33 ++++++++++++ hw/mem/sp-mem.c | 109 ++++++++++++++++++++++++++++++++++++++++ hw/mem/Kconfig | 4 ++ hw/mem/meson.build | 1 + 4 files changed, 147 insertions(+) create mode 100644 include/hw/mem/sp-mem.h create mode 100644 hw/mem/sp-mem.c diff --git a/include/hw/mem/sp-mem.h b/include/hw/mem/sp-mem.h new file mode 100644 index 0000000000..a8951b49e6 --- /dev/null +++ b/include/hw/mem/sp-mem.h @@ -0,0 +1,33 @@ +/* + * Specific Purpose Memory (SPM) device + * + * TYPE_MEMORY_DEVICE subclass for boot-time-only memory exposed to the + * guest as an E820 SOFT_RESERVED range with a SRAT memory-affinity entry. + * + * Copyright (c) 2026 Advanced Micro Devices, Inc. + * + * Authors: + * FangSheng Huang + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef QEMU_SP_MEM_H +#define QEMU_SP_MEM_H + +#include "hw/core/qdev.h" +#include "qom/object.h" + +#define TYPE_SP_MEM "sp-mem" + +OBJECT_DECLARE_SIMPLE_TYPE(SpMemDevice, SP_MEM) + +struct SpMemDevice { + DeviceState parent_obj; + + HostMemoryBackend *hostmem; + uint32_t node; + uint64_t addr; +}; + +#endif /* QEMU_SP_MEM_H */ diff --git a/hw/mem/sp-mem.c b/hw/mem/sp-mem.c new file mode 100644 index 0000000000..d088222f54 --- /dev/null +++ b/hw/mem/sp-mem.c @@ -0,0 +1,109 @@ +/* + * Specific Purpose Memory (SPM) device + * + * Copyright (c) 2026 Advanced Micro Devices, Inc. + * + * Authors: + * FangSheng Huang + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qemu/module.h" +#include "qapi/error.h" +#include "hw/core/qdev-properties.h" +#include "hw/core/qdev.h" +#include "hw/mem/sp-mem.h" +#include "hw/mem/memory-device.h" +#include "system/hostmem.h" + +#define SP_MEM_MEMDEV_PROP "memdev" +#define SP_MEM_NODE_PROP "node" +#define SP_MEM_ADDR_PROP "addr" + +static const Property sp_mem_properties[] =3D { + DEFINE_PROP_LINK(SP_MEM_MEMDEV_PROP, SpMemDevice, hostmem, + TYPE_MEMORY_BACKEND, HostMemoryBackend *), + DEFINE_PROP_UINT32(SP_MEM_NODE_PROP, SpMemDevice, node, 0), + DEFINE_PROP_UINT64(SP_MEM_ADDR_PROP, SpMemDevice, addr, 0), +}; + +static uint64_t sp_mem_get_addr(const MemoryDeviceState *md) +{ + return object_property_get_uint(OBJECT(md), SP_MEM_ADDR_PROP, + &error_abort); +} + +static void sp_mem_set_addr(MemoryDeviceState *md, uint64_t addr, + Error **errp) +{ + object_property_set_uint(OBJECT(md), SP_MEM_ADDR_PROP, addr, errp); +} + +static MemoryRegion *sp_mem_get_memory_region(MemoryDeviceState *md, + Error **errp) +{ + SpMemDevice *spm =3D SP_MEM(md); + + if (!spm->hostmem) { + error_setg(errp, "'%s' property must be set", SP_MEM_MEMDEV_PROP); + return NULL; + } + return host_memory_backend_get_memory(spm->hostmem); +} + +static void sp_mem_realize(DeviceState *dev, Error **errp) +{ + SpMemDevice *spm =3D SP_MEM(dev); + + if (!spm->hostmem) { + error_setg(errp, "'%s' property is required", SP_MEM_MEMDEV_PROP); + return; + } + if (host_memory_backend_is_mapped(spm->hostmem)) { + error_setg(errp, "memory backend '%s' is already in use", + object_get_canonical_path_component(OBJECT(spm->hostmem= ))); + return; + } + host_memory_backend_set_mapped(spm->hostmem, true); +} + +static void sp_mem_unrealize(DeviceState *dev) +{ + SpMemDevice *spm =3D SP_MEM(dev); + + host_memory_backend_set_mapped(spm->hostmem, false); +} + +static void sp_mem_class_init(ObjectClass *oc, const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(oc); + MemoryDeviceClass *mdc =3D MEMORY_DEVICE_CLASS(oc); + + dc->desc =3D "SPM (Specific Purpose Memory) device"; + dc->hotpluggable =3D false; + dc->realize =3D sp_mem_realize; + dc->unrealize =3D sp_mem_unrealize; + device_class_set_props(dc, sp_mem_properties); + + mdc->get_addr =3D sp_mem_get_addr; + mdc->set_addr =3D sp_mem_set_addr; + mdc->get_memory_region =3D sp_mem_get_memory_region; + mdc->get_plugged_size =3D memory_device_get_region_size; +} + +static const TypeInfo sp_mem_types[] =3D { + { + .name =3D TYPE_SP_MEM, + .parent =3D TYPE_DEVICE, + .class_init =3D sp_mem_class_init, + .instance_size =3D sizeof(SpMemDevice), + .interfaces =3D (InterfaceInfo[]) { + { TYPE_MEMORY_DEVICE }, + { } + }, + }, +}; + +DEFINE_TYPES(sp_mem_types) diff --git a/hw/mem/Kconfig b/hw/mem/Kconfig index 73c5ae8ad9..39ddb36710 100644 --- a/hw/mem/Kconfig +++ b/hw/mem/Kconfig @@ -16,3 +16,7 @@ config CXL_MEM_DEVICE bool default y if CXL select MEM_DEVICE + +config SP_MEM + bool + select MEM_DEVICE diff --git a/hw/mem/meson.build b/hw/mem/meson.build index 8c2beeb7d4..f410d75475 100644 --- a/hw/mem/meson.build +++ b/hw/mem/meson.build @@ -4,6 +4,7 @@ mem_ss.add(when: 'CONFIG_DIMM', if_true: files('pc-dimm.c')) mem_ss.add(when: 'CONFIG_NPCM7XX', if_true: files('npcm7xx_mc.c')) mem_ss.add(when: 'CONFIG_NVDIMM', if_true: files('nvdimm.c')) mem_ss.add(when: 'CONFIG_CXL_MEM_DEVICE', if_true: files('cxl_type3.c')) +mem_ss.add(when: 'CONFIG_SP_MEM', if_true: files('sp-mem.c')) stub_ss.add(files('cxl_type3_stubs.c')) =20 stub_ss.add(files('memory-device-stubs.c')) --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262404; cv=none; d=zohomail.com; s=zohoarc; b=VZFbP3OgDj0GZ16Jt68Ae0T6n44TDRN6SXW+oCIRoYMklVWcuOlT8p01nY/pG1qkd8R08cCA9AhmbvvDM+uurZ1cK+ckNJP0jrUaNwn9/yXL3oxZvnE76qVnN4hD9/dbMkucYZ0BxrM9AL9ENuL9QHNuv5khhnn8ORQ1DgshA/U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262404; 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=qqAS8b/Gv9NQ3zOBRAXok3JwSvk1ksPGJ1eMtlRChKY=; b=TPO/PJoYg5emq38ncqxVilNdz8AMwaff1P4INhPyCRlAyjBfEDyVV9lqLOcpdr+ll30XijDflGUZNejia+cEPUDx0sfexcuoGMX1T6r+ysnEdkq7TS8fBFgVE9Oq5lfPYaTM+AGV+iG8Xys+IAOBzFKmfIVzHR/1UgtgajbpNDw= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262404336374.47745640842265; Sun, 5 Jul 2026 07:40:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNw1-0005Cr-KD; Sun, 05 Jul 2026 10:35:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNvz-0005CZ-Mq for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:03 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNvy-000186-0l for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:03 -0400 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-606-vnyXjP6UMwqHwutPtEbgJg-1; Sun, 05 Jul 2026 10:35:00 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-492488f8583so21515525e9.2 for ; Sun, 05 Jul 2026 07:34:59 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47a9de1d905sm16767920f8f.2.2026.07.05.07.34.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:34:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262101; 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=qqAS8b/Gv9NQ3zOBRAXok3JwSvk1ksPGJ1eMtlRChKY=; b=SaPd4dDedBKZSKR4ZH422//mogoUQMkpz6snuGWSIfnlLC/ALaFIcdT3s+KJ1OrhEbbDvY Aep5Dt5AD18DLjCsuQZTIiiVxbtLTZATvJjPXpva6YQQENFnGVSlycjoMzzl14Leypreic BaOpC/BdxMd+KdhIXuaX+UY9/YY225U= X-MC-Unique: vnyXjP6UMwqHwutPtEbgJg-1 X-Mimecast-MFC-AGG-ID: vnyXjP6UMwqHwutPtEbgJg_1783262099 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262099; x=1783866899; 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=qqAS8b/Gv9NQ3zOBRAXok3JwSvk1ksPGJ1eMtlRChKY=; b=S4ozIl0O78/M6cPvgqpoYbF9sK+fMRz/Cy27CBoBITEp2Sr1Mpj51FiE9zyGBsCmD4 2vw2yJQGuSw5uPIJGvtLV6xd6aNCPLU+xnSK+z2rj+G5P6uoXj7di6EQvsOf6+ka8Phh DuXNbVk9v5Z2UUIc+xhq2LyQNxoWEhbP4ACu3vZk1qO1+ZbYKyjx7M3ALh6LnwGeAC2I T488dh4X8Z/Fv8Y7elDvChefpz6UKBnTH/GoxrpUaJaCn0j1BYy+acAYFa/51VbQc/lI NOtc6Zps3tU3/0XFau9BmbAO750tPR1ySD7wystexJW2QBkrmPYKNHliROQw//cAJSDX KruA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262099; x=1783866899; 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=qqAS8b/Gv9NQ3zOBRAXok3JwSvk1ksPGJ1eMtlRChKY=; b=Ab7+W9hH8/XXHtf7HmP4Uuy0WqTb2yZwd2rb/pwJ8zShBr7JEJM37QTTex3jvnQSrE HQVsHmtk9sfiZXSWziZXmOfVPs0G1n9dAZ34fr9BOYc6Fmxhu+spHSurx0Ez5ERWh3sz m/vslyaIY8rEEamA5WHbfHLTmYGb9HXSuFOdjnTxjujuKMophsn/nPBJ1RInfPRX2RZ3 fz/ufnHGiHULK6Ay/Jjq0+ZoZz6i9PPHiarIE/VV2TXaPpqsIY5PAZLEux5eNOfC9V4L RxqwmLV27cu8P1F1Ptl2Ij0M9Vrp2vT+T6BVt8A07e4FbwVHZjW0+SfNJKd9KApQO446 vrBQ== X-Gm-Message-State: AOJu0Yzu7YLGJU0k0rVConQTxYdKQbu9cCynaEg1buGfr2EQhSvXB/xr QLiO0KGYjOuXM8buxQaaQxEFJRFrn1mkE9yfReQinjGjaHZ9hgTRXlfTDpskNgAuRiTsPaxlSxO IKg6xW2hM3qHpISjZPTsgBq8Eti7skAfabjm43XTnggQOrJRAvMSuPOwEF2BJPFnIT2jBH9XXZk il/S+KRUoW7cyG/6ksuVo6x66ezFP7SKB/1A== X-Gm-Gg: AfdE7ckZ5Eo9NpjuaTvNUUukW0Qp2YK4oegL51cZsSQ8kNmZMmkeGoaJGrn9zbiZcjb Iwtlk16gpwKwlKCA3qivYMOaPadJu8KSFVU8MLG6u0+mdQJnD9K/kaELdpLBquS/dsiUHTvX1kG IYzvblG3+7bTLs5Hm5JYAC74lRYHCZaEM2uIZGvZeNb93QudHdlNt21GHbWCl7wvdNiaeBvzJbB 0V6rTYi0BZbvA5P96JV/0nKVjJZTtGOUQqyIk9FreNAXlPKQa4uOwq2gNIHXh+ae8/mCQ4dVlMs gUNMocLT6YRFvjPPw1P8+pLx/Ypu4gsozGdJoP222TbDxZPMoQbRFWeJ2mHEfUO/ZXn5Q4IZjby /YSTvP1azdyBlghsnioNQYzgzuiyJPiee X-Received: by 2002:a05:600c:b8d:b0:493:ad1b:b38d with SMTP id 5b1f17b1804b1-493d5ff8f97mr33941445e9.37.1783262098763; Sun, 05 Jul 2026 07:34:58 -0700 (PDT) X-Received: by 2002:a05:600c:b8d:b0:493:ad1b:b38d with SMTP id 5b1f17b1804b1-493d5ff8f97mr33941105e9.37.1783262098234; Sun, 05 Jul 2026 07:34:58 -0700 (PDT) Date: Sun, 5 Jul 2026 10:34:55 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , fanhuang , Igor Mammedov , "David Hildenbrand (Arm)" , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Zhao Liu , Eric Blake , Markus Armbruster Subject: [PULL 07/44] qapi, hmp: introspection for the sp-mem device Message-ID: <839c0a2bd8132cdef2faab952d7c3f49b9fa984c.1783261895.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262405093158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: fanhuang Add a SpMemDeviceInfo variant to MemoryDeviceInfo so `query-memory-devices` reports each sp-mem instance (id, addr, size, node, memdev), and print it from HMP `info memory-devices`. Signed-off-by: FangSheng Huang Reviewed-by: Igor Mammedov Reviewed-by: David Hildenbrand (Arm) Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260623075051.3797975-3-FangSheng.Huang@amd.com> --- qapi/machine.json | 43 ++++++++++++++++++++++++++++++++++++-- hw/core/machine-hmp-cmds.c | 11 ++++++++++ hw/mem/sp-mem.c | 19 +++++++++++++++++ 3 files changed, 71 insertions(+), 2 deletions(-) diff --git a/qapi/machine.json b/qapi/machine.json index 685e4e29b8..9b2248038f 100644 --- a/qapi/machine.json +++ b/qapi/machine.json @@ -1413,6 +1413,32 @@ } } =20 +## +# @SpMemDeviceInfo: +# +# sp-mem device state information +# +# @id: device's ID +# +# @addr: physical address, where device is mapped +# +# @size: size of memory that the device provides, in bytes +# +# @node: NUMA proximity domain to which the device is assigned +# +# @memdev: memory backend linked with device +# +# Since: 11.1 +## +{ 'struct': 'SpMemDeviceInfo', + 'data': { '*id': 'str', + 'addr': 'size', + 'size': 'size', + 'node': 'int', + 'memdev': 'str' + } +} + ## # @MemoryDeviceInfoKind: # @@ -1426,11 +1452,13 @@ # # @hv-balloon: since 8.2. # +# @sp-mem: since 11.1. +# # Since: 2.1 ## { 'enum': 'MemoryDeviceInfoKind', 'data': [ 'dimm', 'nvdimm', 'virtio-pmem', 'virtio-mem', 'sgx-epc', - 'hv-balloon' ] } + 'hv-balloon', 'sp-mem' ] } =20 ## # @PCDIMMDeviceInfoWrapper: @@ -1482,6 +1510,16 @@ { 'struct': 'HvBalloonDeviceInfoWrapper', 'data': { 'data': 'HvBalloonDeviceInfo' } } =20 +## +# @SpMemDeviceInfoWrapper: +# +# @data: sp-mem device state information +# +# Since: 11.1 +## +{ 'struct': 'SpMemDeviceInfoWrapper', + 'data': { 'data': 'SpMemDeviceInfo' } } + ## # @MemoryDeviceInfo: # @@ -1499,7 +1537,8 @@ 'virtio-pmem': 'VirtioPMEMDeviceInfoWrapper', 'virtio-mem': 'VirtioMEMDeviceInfoWrapper', 'sgx-epc': 'SgxEPCDeviceInfoWrapper', - 'hv-balloon': 'HvBalloonDeviceInfoWrapper' + 'hv-balloon': 'HvBalloonDeviceInfoWrapper', + 'sp-mem': 'SpMemDeviceInfoWrapper' } } =20 diff --git a/hw/core/machine-hmp-cmds.c b/hw/core/machine-hmp-cmds.c index 46846f741a..686304bafa 100644 --- a/hw/core/machine-hmp-cmds.c +++ b/hw/core/machine-hmp-cmds.c @@ -279,6 +279,7 @@ void hmp_info_memory_devices(Monitor *mon, const QDict = *qdict) PCDIMMDeviceInfo *di; SgxEPCDeviceInfo *se; HvBalloonDeviceInfo *hi; + SpMemDeviceInfo *spmi; =20 for (info =3D info_list; info; info =3D info->next) { value =3D info->value; @@ -350,6 +351,16 @@ void hmp_info_memory_devices(Monitor *mon, const QDict= *qdict) monitor_printf(mon, " memdev: %s\n", hi->memdev); } break; + case MEMORY_DEVICE_INFO_KIND_SP_MEM: + spmi =3D value->u.sp_mem.data; + monitor_printf(mon, "Memory device [%s]: \"%s\"\n", + MemoryDeviceInfoKind_str(value->type), + spmi->id ? spmi->id : ""); + monitor_printf(mon, " addr: 0x%" PRIx64 "\n", spmi->addr); + monitor_printf(mon, " node: %" PRId64 "\n", spmi->node); + monitor_printf(mon, " size: %" PRIu64 "\n", spmi->size); + monitor_printf(mon, " memdev: %s\n", spmi->memdev); + break; default: g_assert_not_reached(); } diff --git a/hw/mem/sp-mem.c b/hw/mem/sp-mem.c index d088222f54..962d0f937e 100644 --- a/hw/mem/sp-mem.c +++ b/hw/mem/sp-mem.c @@ -53,6 +53,24 @@ static MemoryRegion *sp_mem_get_memory_region(MemoryDevi= ceState *md, return host_memory_backend_get_memory(spm->hostmem); } =20 +static void sp_mem_fill_device_info(const MemoryDeviceState *md, + MemoryDeviceInfo *info) +{ + SpMemDeviceInfo *di =3D g_new0(SpMemDeviceInfo, 1); + SpMemDevice *spm =3D SP_MEM(md); + DeviceState *dev =3D DEVICE(md); + + di->id =3D dev->id ? g_strdup(dev->id) : NULL; + di->addr =3D spm->addr; + di->size =3D memory_region_size( + host_memory_backend_get_memory(spm->hostmem)); + di->node =3D spm->node; + di->memdev =3D object_get_canonical_path(OBJECT(spm->hostmem)); + + info->u.sp_mem.data =3D di; + info->type =3D MEMORY_DEVICE_INFO_KIND_SP_MEM; +} + static void sp_mem_realize(DeviceState *dev, Error **errp) { SpMemDevice *spm =3D SP_MEM(dev); @@ -91,6 +109,7 @@ static void sp_mem_class_init(ObjectClass *oc, const voi= d *data) mdc->set_addr =3D sp_mem_set_addr; mdc->get_memory_region =3D sp_mem_get_memory_region; mdc->get_plugged_size =3D memory_device_get_region_size; + mdc->fill_device_info =3D sp_mem_fill_device_info; } =20 static const TypeInfo sp_mem_types[] =3D { --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262557; cv=none; d=zohomail.com; s=zohoarc; b=FBoXo45sP52BYLXlLNSoRWIjlBvYLhZSlmwxrmxzE1aP25nIDzC0+9ob383Fip2xfxBNa/dCq3RgtpbHN73tLy2C4L8OMG1MpfJ/zu+0l/c4N5wfPYBMtk5kev+5Q460Tnur8KqAnKMK/klaGFDOXYTzsi6IgKN7+o0KikuIyZs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262557; 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=J0MKVmrch/pvBo8melADVF6zAaT/qDBqYQukgYg8kKY=; b=S9AtbeI7IA1zaYu4DJ6HWOwSR9JpVVnWtYQ5L86dq1MpezoCGsypihQrG4+wcURTRJBIc+UAZaBakGiubhahqNV9M7bJEJEl3u3sZPQIMQ09z1RKtz38Uu+yo4fQESE0UgDWnDl3ap/al23h/4uOqv/uWg1cXRqII/A4HBhTuV4= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17832625577051015.0922631942766; Sun, 5 Jul 2026 07:42:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNw2-0005DT-UP; Sun, 05 Jul 2026 10:35:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNw2-0005D6-2g for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:06 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNw0-00018Z-AJ for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:05 -0400 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-38-gawYNeLzMmK22axxNY3Ysw-1; Sun, 05 Jul 2026 10:35:02 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-490a767c7dcso16872705e9.2 for ; Sun, 05 Jul 2026 07:35:02 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c0e92687sm301930125e9.0.2026.07.05.07.34.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:34:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262103; 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=J0MKVmrch/pvBo8melADVF6zAaT/qDBqYQukgYg8kKY=; b=Z5rY2aXaq77kai6tMCjQTAPtR+35mvlZychgHPOoDxoKYTYaeuQrtdxgfq5E5EcSyWvbKh 5m9bqXWAv/mlFoQvfA/11noE+DnyOcuFNlMoDrmW7mhkZdaX/7i5+8v5s+WXLdheKfIZET Ve6QKeVl9GSsWrx9m+151BvDe4Flrok= X-MC-Unique: gawYNeLzMmK22axxNY3Ysw-1 X-Mimecast-MFC-AGG-ID: gawYNeLzMmK22axxNY3Ysw_1783262101 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262101; x=1783866901; darn=nongnu.org; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:from:to:cc:subject :date:message-id:reply-to:content-type; bh=J0MKVmrch/pvBo8melADVF6zAaT/qDBqYQukgYg8kKY=; b=AqC3vpB90IS4oCd4Hf3BlZKQc8WGYsccZtHYHoYhshz9PNR1wFTeFmDcBbPP8Y9hnF xfSWF8HsVslK/pirez0jy18A059TvS5dUGyk5DXQdip49ilSpBCAWkVUuuLjdRAksGym YGmvWOCphicAEvfjBuyTcWAyIOq7jzJgPw4Os6Cgcrz6oTyK7M7Mn6HY0sk3v0MV37Ty kIwEnlSoJkYt3R/G44Vxn6TmSVHKY1w3ZZ4YWXfQGG2vwDQtZofV0+1A4gbOY+jR9n2Y bOLqDkoZHCvteIbDpTvO3ESAe/MBBmhIGp4y01cw9ZpLBn0X2idDzm0WFQFohaXxMBZ+ eLDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262101; x=1783866901; h=in-reply-to:content-disposition:content-type: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 :content-type; bh=J0MKVmrch/pvBo8melADVF6zAaT/qDBqYQukgYg8kKY=; b=JHNJOk3BEpAPZqAHinV2UH7BF9Ndrfhz83plZFuW5eJYG4ChnzKFHCSiPQXMMhvSmS pyYL4X4yrHR/vIl4ePt8/oiYmRapb6dE0xzhil0PNfzwo/nLLpTmp0kLJJv3QbtpQ0Js l/l+o1LMOYvCBNmliCkThr76Z0voDIIgFhvKOsdaewAeYraEh2jgZt94etS+6OaYpwnR nSFbtEnHcOC0n+Y7e3qYpCr/tQic+J9b5W3WAX3hA1VfXlZK0S7/8fcxfyQxG5DN9mgA k+iUVcWNY9Xbj0oxQ8XSKhUrQ5GQUeJx4b6RsWcwsdBWirjLiN7gV2fxS1Rxbb2r6Z9I rnTw== X-Gm-Message-State: AOJu0Yy9l/6YHajiac2cdGWS9bwdpY7iT06naAYZLA2sPgyhPffR7dWD Dv9f2L2hGcNZ5OCKdq2U3SsvjeQxJRNfkxDVG8KJqryctSOqQ9pjay76n/uB5FirIDSddrD42/b 2oqOiP85PP3tQ9eDIs8c0ADczxig1P9eM3HIhaqDvIMEQNqR9AeCzL0cvaAfrbBIIJEiaJnDOtc k17FThiizYzPJe5uh/2TNSOXfx6u9yO8tQBg== X-Gm-Gg: AfdE7ck+7isRdVwVyC7TQOn9fYL8Nqrv/UnIuwj1h7SY+mxgrg4mvddRglh7FO4J7+b NB+CN3HYIbXyic/6N35vO8teHHYU6ABwrkb/G7k/cVjMamuvC1uGDS/NeMbYhsD/ZNZKDarkH4s l/+GVMmlWHZvKQDia/9skVLGUO0vQJBkke7wpfYKumJAJTtsubV4AL9uDJhveK/A9sc2DwR+jJe kJUt1W0f39+ahOUkIgjKPFj6Y+yAImoBNc7qpbynX9gudu82H4fziaOoBoApLijQykdEBdxByCE i4KiidiIqjjLmFKR3vj9s9y5G6HX3Ucbcnhl/fWsO7Im9DNRGZ/LBK3JZghLhLZElhmQdCXpICb Sf1diozi84GZii8TM00HDR4uhv9UzHUwd X-Received: by 2002:a05:600c:c0d1:10b0:493:bb23:152a with SMTP id 5b1f17b1804b1-493d11fe189mr56804225e9.34.1783262100856; Sun, 05 Jul 2026 07:35:00 -0700 (PDT) X-Received: by 2002:a05:600c:c0d1:10b0:493:bb23:152a with SMTP id 5b1f17b1804b1-493d11fe189mr56803945e9.34.1783262100356; Sun, 05 Jul 2026 07:35:00 -0700 (PDT) Date: Sun, 5 Jul 2026 10:34:58 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , fanhuang , Igor Mammedov , Ani Sinha , Paolo Bonzini , Richard Henderson Subject: [PULL 08/44] i386/acpi-build: partition device_memory SRAT umbrella for sp-mem Message-ID: <78f08a0f47e787921d8beb78a5bade9a8a64400b.1783261895.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262559713158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: fanhuang Restructure the device_memory SRAT umbrella entry into a per-kind partition: each TYPE_SP_MEM device gets an ENABLED entry at its own proximity_domain; the remaining sub-ranges get HOTPLUGGABLE | ENABLED placeholders at the highest PXM, preserving the existing umbrella convention. Signed-off-by: FangSheng Huang Reviewed-by: Igor Mammedov Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260623075051.3797975-4-FangSheng.Huang@amd.com> --- hw/i386/acpi-build.c | 96 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 92 insertions(+), 4 deletions(-) diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 2ee061558c..8837b69687 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -52,6 +52,7 @@ #include "migration/vmstate.h" #include "hw/mem/memory-device.h" #include "hw/mem/nvdimm.h" +#include "hw/mem/sp-mem.h" #include "system/numa.h" #include "system/reset.h" #include "hw/hyperv/vmbus-bridge.h" @@ -1351,6 +1352,96 @@ build_tpm_tcpa(GArray *table_data, BIOSLinker *linke= r, GArray *tcpalog, } #endif =20 +typedef struct { + uint64_t addr; + uint64_t size; + uint32_t node; +} SpMemRange; + +static int sp_mem_collect_ranges_cb(Object *obj, void *opaque) +{ + GArray *ranges =3D opaque; + SpMemDevice *spm; + MemoryDeviceClass *mdc; + SpMemRange r; + + if (!object_dynamic_cast(obj, TYPE_SP_MEM)) { + return 0; + } + spm =3D SP_MEM(obj); + mdc =3D MEMORY_DEVICE_GET_CLASS(MEMORY_DEVICE(spm)); + r.addr =3D mdc->get_addr(MEMORY_DEVICE(spm)); + r.size =3D memory_region_size( + host_memory_backend_get_memory(spm->hostmem)); + r.node =3D spm->node; + g_array_append_val(ranges, r); + return 0; +} + +static gint sp_mem_range_compare(gconstpointer a, gconstpointer b) +{ + const SpMemRange *range_a =3D a; + const SpMemRange *range_b =3D b; + + if (range_a->addr < range_b->addr) { + return -1; + } + if (range_a->addr > range_b->addr) { + return 1; + } + return 0; +} + +/* + * Emit SRAT memory-affinity entries covering the device_memory region. + * + * For each plugged TYPE_SP_MEM device, emit an ENABLED entry at the + * device's own proximity_domain. All remaining sub-ranges (gaps + * between sp-mem devices, leading and trailing padding, and ranges + * occupied by other memory devices) are covered by HOTPLUGGABLE | + * ENABLED placeholder entries at PXM =3D nb_numa_nodes - 1. + */ +static void build_srat_device_memory(GArray *table_data, MachineState *ms) +{ + g_autoptr(GArray) ranges =3D g_array_new(FALSE, TRUE, sizeof(SpMemRang= e)); + uint32_t hotplug_pxm =3D ms->numa_state->num_nodes - 1; + uint64_t region_start, region_end; + guint i; + + region_start =3D ms->device_memory->base; + region_end =3D region_start + memory_region_size(&ms->device_memory->m= r); + + object_child_foreach_recursive(qdev_get_machine(), + sp_mem_collect_ranges_cb, ranges); + g_array_sort(ranges, sp_mem_range_compare); + + for (i =3D 0; i < ranges->len; i++) { + SpMemRange *r =3D &g_array_index(ranges, SpMemRange, i); + + if (region_start < r->addr) { + build_srat_memory(table_data, region_start, r->addr - region_s= tart, + hotplug_pxm, + MEM_AFFINITY_HOTPLUGGABLE | + MEM_AFFINITY_ENABLED); + } + build_srat_memory(table_data, r->addr, r->size, r->node, + MEM_AFFINITY_ENABLED); + region_start =3D r->addr + r->size; + } + + /* + * Cover the rest of the device_memory window that no sp-mem device + * occupies. Keeping it HOTPLUGGABLE preserves the umbrella entry's + * role for future pc-dimm / virtio-mem hot-add into this window. + */ + if (region_start < region_end) { + build_srat_memory(table_data, region_start, region_end - region_st= art, + hotplug_pxm, + MEM_AFFINITY_HOTPLUGGABLE | + MEM_AFFINITY_ENABLED); + } +} + #define HOLE_640K_START (640 * KiB) #define HOLE_640K_END (1 * MiB) =20 @@ -1487,10 +1578,7 @@ build_srat(GArray *table_data, BIOSLinker *linker, M= achineState *machine) * providing _PXM method if necessary. */ if (machine->device_memory) { - build_srat_memory(table_data, machine->device_memory->base, - memory_region_size(&machine->device_memory->mr), - nb_numa_nodes - 1, - MEM_AFFINITY_HOTPLUGGABLE | MEM_AFFINITY_ENABLED= ); + build_srat_device_memory(table_data, machine); } =20 acpi_table_end(linker, &table); --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262179; cv=none; d=zohomail.com; s=zohoarc; b=BTl0sK2a3AwFwGMLo9uU415t8kx3OguoN1jVOA8W+5bRhMiAGmb/GnhoBZK8nDXKfO3qOAndwnZbXEnmF2syrY3DMQrBgk7dAU+YzLLd9M+12H/rDXYMHDtQWPoBPwJ//ZlVSj3RF159fIt8o5JZOf5wmN1UO9WseWpGTQEyFhA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262179; 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=8m9Fd1JZ474Z+kDkH9U0m9q8ELzUr5+kmXzicQoBzoo=; b=YTetEhb/Rr98eTZHAb/PPWCxiqtHPMO/H7bsqq3BIxuFrcLi/Puta7MQsacIIK03rutscksUFdInpJ53iWyrscQ0vYbNbIdlmNRpqvxEy09CXhGNvdU6HFc/qV5wwIdT6sk0b6oWRuip5uXDS9DZ1EIqC15ueX7DRHeQ6yJXCtU= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262179576160.03808982663656; Sun, 5 Jul 2026 07:36:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNw6-0005E7-Et; Sun, 05 Jul 2026 10:35:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNw4-0005Dq-Fs for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:08 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNw2-000193-Lq for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:08 -0400 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-616-PYHrcTiBNd2YRkVDV3qkxw-1; Sun, 05 Jul 2026 10:35:04 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-4926596eebcso13163365e9.3 for ; Sun, 05 Jul 2026 07:35:04 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493ccdab3a8sm231740435e9.6.2026.07.05.07.35.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:35:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262106; 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=8m9Fd1JZ474Z+kDkH9U0m9q8ELzUr5+kmXzicQoBzoo=; b=LcX8OpFwBSpRV4XbWB5wfUpwMXLFhEiPaP45v47PSpLuMRjIvcWRnUWKiM8UwcoVQC9Iy/ f6080VFyF2FB+RoGB42A9V3s4EVXZ78QAxZptB/YeU3oSJ/sLrB/2zpQqyZw+eCJZKkWg1 kxUSGihKCewXnYERX+M9+aJinE0ZVzU= X-MC-Unique: PYHrcTiBNd2YRkVDV3qkxw-1 X-Mimecast-MFC-AGG-ID: PYHrcTiBNd2YRkVDV3qkxw_1783262103 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262103; x=1783866903; darn=nongnu.org; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:from:to:cc:subject :date:message-id:reply-to:content-type; bh=8m9Fd1JZ474Z+kDkH9U0m9q8ELzUr5+kmXzicQoBzoo=; b=PjLefHVRmDXgj8m8v5bUx9HjHUqT3F5EoWbIp1wO56Em4wsei0OdennA7yyYG6e4id K7ZIOo3WXel086+bG5Vp2IyVbsnSIUHRIcueScwA9YeSMumAMVXECqtMl0wBzWPq3oJ1 sN4j8kO4Ecn+v67t9bsd3/5j2Y7Htl8PZng1MOtBKzSKkowF5eeE8iZzlPUzvyyu1qlB 2Q6gUMmf28mBTqmIoPkBDyZeASiZ9q0ozaNYSnhIedyh/tbyriR94FaeahiFlXsyk2N8 lSAKPdWUKj5YR0Qdi8pnO97ojfdHLopxlxBiOMHOKbRikEEs3Fyadu9o0cIDaYShXU0O X1vQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262103; x=1783866903; h=in-reply-to:content-disposition:content-type: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 :content-type; bh=8m9Fd1JZ474Z+kDkH9U0m9q8ELzUr5+kmXzicQoBzoo=; b=GNlnMUCI1QTNafufwMza6bYt3kSL3ybFmQv+qAmlwukJJdo/EPqlL+MtHjnOSkrbmN CCTGYgZn43yhWCfygQrJGwdDztc1bghbyp+y+4V6qGdezE051eg6sG4XDR2YIR66L0v0 M+KUf0vF7ByHy0R8Rn1ofa2VUmoClk9hp7/Z0nbofNBHxAxJoQ1Isz+iEf0Y3LrdZjHq QEttQEkEq9L7f3gS0LpPUr5Vd4ofnyfj6FMCb8AiMGgQWSiP7mTZVIfuFyT4zjky6MjF a9jITQlYMf3XYQiR/YmTI2UfYobABR6Bh0yM0n3Z4hSeh693oLukRv2TmHCAGlT6IiHA 7c+A== X-Gm-Message-State: AOJu0Yw1s0mqO118U3yUH4UJyZYkxVLmysIS7ldT5ZlDxSkkIUZFvn4T gvN8Nxz88qPgKnFgxhqayEp4/Y5O2eIotsHF0e29v70qTLkI5JFkGtTBKnbT4C54EILku3VKVNY N1POdDoP4poZ6aCjLD5xFxor6Br7m0NbZQvSa1x5NLintW4hz0Aucue6u7hY8YfEZ8WlgWcrzDL 1k+USqukvSFfpClhpHrfUVix7Lzo7eWNdA8w== X-Gm-Gg: AfdE7ck0DGSLBdkRZsWYfSKTUnZ4f4m/uNOwJQ9d7Ws1bViSNclvzZokUt5732ezt3X Iohbd46ecBJbRWZRiKKXi7DKWoOcagYfgZuWeO7caLQ1Ui5HqQWzldm9Oj++IEqF+iOmeTGHb+8 PHoueAU18cFNstyh9xtbyljDva8iFVn2W/65HjLpQ27DebJ63rrQvFBsqKEm9jkgdbwjr1trX0b sduoi+RS5va/45vIzNuIZkaC60xhR1YKBpAgkvk4y7ZKvUML7RR0jlZ9SEcen4pY1Daj4i0HmRU 43cgaEu4xAZj2yKJzK7CWrrHUgb2E/lwZvkiRWuNZfzorn97l/2phgA/sBChyYg8mqFJktXdM1a VT9yLv4nsm2Px+4BrZIJarkzW6GZs3tK/ X-Received: by 2002:a05:600c:154f:b0:492:3754:15f2 with SMTP id 5b1f17b1804b1-493d11f703dmr76966555e9.32.1783262103257; Sun, 05 Jul 2026 07:35:03 -0700 (PDT) X-Received: by 2002:a05:600c:154f:b0:492:3754:15f2 with SMTP id 5b1f17b1804b1-493d11f703dmr76966225e9.32.1783262102623; Sun, 05 Jul 2026 07:35:02 -0700 (PDT) Date: Sun, 5 Jul 2026 10:35:00 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , fanhuang , Igor Mammedov , "David Hildenbrand (Arm)" , Paolo Bonzini , Richard Henderson Subject: [PULL 09/44] hw/i386: hook sp-mem into the pc machine plug path Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262180114158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: fanhuang Add the pc machine hookup for TYPE_SP_MEM so each sp-mem instance is placed by the memory-device framework and reported to the guest as E820_SOFT_RESERVED. Signed-off-by: FangSheng Huang Reviewed-by: Igor Mammedov Reviewed-by: David Hildenbrand (Arm) Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260623075051.3797975-5-FangSheng.Huang@amd.com> --- hw/i386/e820_memory_layout.h | 11 ++++++----- hw/i386/pc.c | 36 ++++++++++++++++++++++++++++++++++++ hw/i386/Kconfig | 2 ++ 3 files changed, 44 insertions(+), 5 deletions(-) diff --git a/hw/i386/e820_memory_layout.h b/hw/i386/e820_memory_layout.h index b50acfa201..6ef169db9c 100644 --- a/hw/i386/e820_memory_layout.h +++ b/hw/i386/e820_memory_layout.h @@ -10,11 +10,12 @@ #define HW_I386_E820_MEMORY_LAYOUT_H =20 /* e820 types */ -#define E820_RAM 1 -#define E820_RESERVED 2 -#define E820_ACPI 3 -#define E820_NVS 4 -#define E820_UNUSABLE 5 +#define E820_RAM 1 +#define E820_RESERVED 2 +#define E820_ACPI 3 +#define E820_NVS 4 +#define E820_UNUSABLE 5 +#define E820_SOFT_RESERVED 0xefffffff =20 struct e820_entry { uint64_t address; diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 73a625327c..2bacece249 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -63,6 +63,7 @@ #include "hw/i386/kvm/xen_gnttab.h" #include "hw/i386/kvm/xen_xenstore.h" #include "hw/mem/memory-device.h" +#include "hw/mem/sp-mem.h" #include "e820_memory_layout.h" #include "trace.h" #include "sev.h" @@ -1285,11 +1286,43 @@ static void pc_hv_balloon_plug(HotplugHandler *hotp= lug_dev, memory_device_plug(MEMORY_DEVICE(dev), MACHINE(hotplug_dev)); } =20 +static void pc_sp_mem_pre_plug(HotplugHandler *hotplug_dev, + DeviceState *dev, Error **errp) +{ + MachineState *ms =3D MACHINE(hotplug_dev); + SpMemDevice *spm =3D SP_MEM(dev); + + if (ms->numa_state && spm->node >=3D ms->numa_state->num_nodes) { + error_setg(errp, + "'node' property value %" PRIu32 + " exceeds the number of NUMA nodes (%d)", + spm->node, ms->numa_state->num_nodes); + return; + } + memory_device_pre_plug(MEMORY_DEVICE(dev), ms, errp); +} + +static void pc_sp_mem_plug(HotplugHandler *hotplug_dev, + DeviceState *dev, Error **errp) +{ + SpMemDevice *spm =3D SP_MEM(dev); + MemoryDeviceClass *mdc =3D MEMORY_DEVICE_GET_CLASS(MEMORY_DEVICE(dev)); + uint64_t addr, size; + + memory_device_plug(MEMORY_DEVICE(dev), MACHINE(hotplug_dev)); + + addr =3D mdc->get_addr(MEMORY_DEVICE(dev)); + size =3D memory_region_size(host_memory_backend_get_memory(spm->hostme= m)); + e820_add_entry(addr, size, E820_SOFT_RESERVED); +} + static void pc_machine_device_pre_plug_cb(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { pc_memory_pre_plug(hotplug_dev, dev, errp); + } else if (object_dynamic_cast(OBJECT(dev), TYPE_SP_MEM)) { + pc_sp_mem_pre_plug(hotplug_dev, dev, errp); } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { x86_cpu_pre_plug(hotplug_dev, dev, errp); } else if (object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_MD_PCI)) { @@ -1326,6 +1359,8 @@ static void pc_machine_device_plug_cb(HotplugHandler = *hotplug_dev, { if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { pc_memory_plug(hotplug_dev, dev, errp); + } else if (object_dynamic_cast(OBJECT(dev), TYPE_SP_MEM)) { + pc_sp_mem_plug(hotplug_dev, dev, errp); } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { x86_cpu_plug(hotplug_dev, dev, errp); } else if (object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_MD_PCI)) { @@ -1370,6 +1405,7 @@ static HotplugHandler *pc_get_hotplug_handler(Machine= State *machine, DeviceState *dev) { if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM) || + object_dynamic_cast(OBJECT(dev), TYPE_SP_MEM) || object_dynamic_cast(OBJECT(dev), TYPE_CPU) || object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_MD_PCI) || object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_IOMMU_PCI) || diff --git a/hw/i386/Kconfig b/hw/i386/Kconfig index 12473acaa7..e27d8816e5 100644 --- a/hw/i386/Kconfig +++ b/hw/i386/Kconfig @@ -84,6 +84,7 @@ config I440FX select PCI_I440FX select PIIX select DIMM + select SP_MEM select SMBIOS select SMBIOS_LEGACY select FW_CFG_DMA @@ -113,6 +114,7 @@ config Q35 select LPC_ICH9 select AHCI_ICH9 select DIMM + select SP_MEM select SMBIOS select FW_CFG_DMA =20 --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262123; cv=none; d=zohomail.com; s=zohoarc; b=N5T8v/GGfXXSgMcDupgL24V9K73bdw049bY0zAdGA4SifkcCWORC5Rlutd0DzJ3v2X47b3XpGdcH3fEHd9S1WWVK8XZoGpW2vK9Tu/8uTXh+KmXdP/JIdEDZj9MC14wLgS1DUn6RXlI3cbWua95u5Tw5Ppo6DBfZpHY8OFH6d/4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262123; 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=2DHimW6kdYatJs0jDdZ1l1I3QjMcND/ZKDaeWLIUlzU=; b=jMvVRqc1Kx7Lj/eV19JSSUOSicRxDBVAdf+L2Oy/ZArYFcAobDvh/2lnSUSxw1lmISeHLe70FzsG+OCQPSkDAdonxwVqq083rznGrofsv0n+Xz7XLNHlFUxV7YyQUz5j5Xg+3rR4h0hPBidq2I1SRCBq3iHSmMsZekfxC8FpY6w= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262123960693.8708672196841; Sun, 5 Jul 2026 07:35:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNwB-0005FH-M4; Sun, 05 Jul 2026 10:35:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwA-0005F8-Q1 for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:14 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNw8-00019o-Td for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:14 -0400 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-696-cHRAV9X-NHy-VmH1SGb5Bg-1; Sun, 05 Jul 2026 10:35:07 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-493b0a5e636so20534535e9.3 for ; Sun, 05 Jul 2026 07:35:07 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493ccdab3a8sm231746015e9.6.2026.07.05.07.35.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:35:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262112; 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=2DHimW6kdYatJs0jDdZ1l1I3QjMcND/ZKDaeWLIUlzU=; b=VaKE6xxL8zXKQhJnZzd10oOxn5NKOvHJpneIq5ZRmuysSfzcnLEWrzDRERNnAeoEvn/Qs6 71m45JUquYOk/nKyvzsTB2LvEzblgDzYhVOuvRo01ssWUycDF8X1tIiRLWe25RDpMwdMxm PcGQXGFj/nU8P35GQZMj40XVf5BzTCw= X-MC-Unique: cHRAV9X-NHy-VmH1SGb5Bg-1 X-Mimecast-MFC-AGG-ID: cHRAV9X-NHy-VmH1SGb5Bg_1783262107 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262106; x=1783866906; 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=2DHimW6kdYatJs0jDdZ1l1I3QjMcND/ZKDaeWLIUlzU=; b=DY+mfuXw52j6/T1INrGLgTpkSxSFE6t4bMCZ3wKpiayYiRJk09eOXifliOVTf7rU12 7sE37S7+aJ+wtfMuvOaBgTuZpiaHLmU8sK0EE630jfdYK7LqY4jCNmivb0iQJJZSDwOe la4dn1CWIFbiJaHNdMBa3tV1U0zhT0w9bPxOrZmQWNRo6M2wcFKMyvQhrNj01/weBThU kWYKaUEyMhz3CVqNGYkGBkxLN7pSNJN8BE+pt60oF7wHMS3F73jml3o0i5s07TlCkKSB XaD6YIwu0dGF9kj/vTN6k6PrhHJ6jkr4J5xN8grYgR6etKEj9qzwiCuB1/gdghjZjO/2 vpVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262106; x=1783866906; 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=2DHimW6kdYatJs0jDdZ1l1I3QjMcND/ZKDaeWLIUlzU=; b=mAOSUHZQXiE4K+Ek/akiSz1rahERqxixwPnq3UeZsFthgnkdgybGj/PrU99YZcLLb/ CMHj4YmzgGUazBkTQ7/UI+O1zYukOdNgaFfsRSEwgDb6+HtGlKRc0bkmMde58EsdeI+D bB6E91l36hRaxnlejWYbUcwKukW5NQ+gO8oaZuVQ7+fNlMwf7QqRvGJ95M3a4MywFHwj hzBLUdnVt4CtTWTuT1I5D6lHpALFr+YylQEOpqahZvLULWwkkkYduFBhF/yjtIV83ZcX IhDO3nWeWleaESjOvdSF5i7jpeIt7Tg1uKPt2nwXsZPtqRdQHopmhsvCU6rK5NcgO/uz JRwg== X-Gm-Message-State: AOJu0Yx4mjdk3Op0lG5aOp4JGyQNXW7hOE2d8HazxsSSqEfuUlXZNsIP NC8f3jA2BJmmaNXC/LPf+hDEP11FGFxA4Y1zCCzKgdOayEp+eTtPfSLFCNYTtsV9IcieMUuHIbF IcqSjdRcuUSSomwUZ6Ou/rA7NqsGrc4CEV7rodCad9uG4puLGiwP/icwIy0OTD9NO/e/+3n/a0e 6ZV8LO77yldtYQo6AdBaRkGJ4z9CRb4iTZ/A== X-Gm-Gg: AfdE7cmNjjTUGcPknO1S00SGJoT/lYE0qM0RyJTL+vGzt2w1QTPMjADcGblWaui/Okf vlWv1HeiRnHESyI1vwUzotqVmetrpCMPdzST/w9kKYhT3TnVKww1Db75DmmD4PUe/QtA97qN2XB lNegO1CSUNvmMK/r9nLIztdAA1UMGR4oE2ePKWcQaerUxF3JEQOxUxgXetLh+auXjVSlsds7fOt MNGi79Pb711Pf+2D8tYmgCsfkwshECGLCaaFVjwS21PaurgV/CXf40KolEk48IRinZ+VRQsPXZl h2vON5KZFX+uf5DmboeKzadOR0SffxVM63YLhPXh7NE84RQ0IJjNyxLoa4puN56XSNAKmNdhR9v hSyEH3CgUG3bf7iAKZR/scmwNwORE/f+3 X-Received: by 2002:a05:600c:1554:b0:490:b8c0:d470 with SMTP id 5b1f17b1804b1-493d11f0598mr82524465e9.19.1783262106536; Sun, 05 Jul 2026 07:35:06 -0700 (PDT) X-Received: by 2002:a05:600c:1554:b0:490:b8c0:d470 with SMTP id 5b1f17b1804b1-493d11f0598mr82524015e9.19.1783262105969; Sun, 05 Jul 2026 07:35:05 -0700 (PDT) Date: Sun, 5 Jul 2026 10:35:02 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , fanhuang , Igor Mammedov , David Hildenbrand , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= , Thomas Huth , Pierrick Bouvier , Markus Armbruster Subject: [PULL 10/44] MAINTAINERS: cover sp-mem under Memory devices, add R: tag Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262126538158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: fanhuang Signed-off-by: FangSheng Huang Acked-by: Igor Mammedov Acked-by: David Hildenbrand Reviewed-by: Michael S. Tsirkin Acked-by: David Hildenbrand (Arm) Signed-off-by: Michael S. Tsirkin Message-ID: <20260623075051.3797975-6-FangSheng.Huang@amd.com> --- MAINTAINERS | 3 +++ 1 file changed, 3 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 97dcc78ded..5ee7c1f601 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3417,13 +3417,16 @@ F: tests/unit/test-ram-discard-manager-stubs.c Memory devices M: David Hildenbrand M: Igor Mammedov +R: FangSheng Huang S: Supported F: hw/mem/memory-device*.c F: hw/mem/nvdimm.c F: hw/mem/pc-dimm.c +F: hw/mem/sp-mem.c F: include/hw/mem/memory-device.h F: include/hw/mem/nvdimm.h F: include/hw/mem/pc-dimm.h +F: include/hw/mem/sp-mem.h F: docs/nvdimm.txt =20 SPICE --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262176; cv=none; d=zohomail.com; s=zohoarc; b=feaIWRYqLD2yGyVgPARiF2GT6pAlrk3mAm8BW5MHQB78kI4WfHtV5rZnDisNd0X7VTDrXrmeyQsMH0FKs2EBoaIXQKW0jEhVu7LNXzrnBmqId89Q58qOTW2ka733QJC9Dc6C4TQwGcDRN/FrbPVPO1O/gv2S4ohd7uZpJ+3Hx6E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262176; 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=gOig7T9TXJk8k/eyxbncF441hI8NL8jYn2f6MBx/XUc=; b=IQzN8qveQ2kRNbOv+A3aXTfNdLYFJMxkF6PULXZqkSim2WkX89v+pCYEy879whV/eTuikS4SF0GVdhbCIzgKyx+K1yCig0tHHF34LIn3R4wVUIuYWGVt4ipIyD73FGeevaiJW+OdFED5nA3a2eEx9hIIDs191oMtK1bpOyLmPF0= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262176867154.51265764244738; Sun, 5 Jul 2026 07:36:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNwC-0005FP-Df; Sun, 05 Jul 2026 10:35:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwA-0005F0-BF for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:14 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNw8-00019l-TS for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:14 -0400 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-444-TxRHWTEaMs2BRh6-uK_Olw-1; Sun, 05 Jul 2026 10:35:10 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-493d88406cdso1969745e9.1 for ; Sun, 05 Jul 2026 07:35:10 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47aa0a558easm16514324f8f.27.2026.07.05.07.35.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:35:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262112; 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=gOig7T9TXJk8k/eyxbncF441hI8NL8jYn2f6MBx/XUc=; b=Gllkhg7wqiIjj4kAurGHhdB23jK9zYBQc/y2vqIMpg+f1iJqLAOsZNxdfhC4K93o6Nnr3Y lg7z/vBAiip6JXrvlyTjxqXOhjyF/BXmNvsmeUnwUlsaeF6lAnSiQlRanz18QNhwM6r4cH J+dJJzzLWFFxFscaWL4eR1bmck7XyN0= X-MC-Unique: TxRHWTEaMs2BRh6-uK_Olw-1 X-Mimecast-MFC-AGG-ID: TxRHWTEaMs2BRh6-uK_Olw_1783262109 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262109; x=1783866909; 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=gOig7T9TXJk8k/eyxbncF441hI8NL8jYn2f6MBx/XUc=; b=JLkSAn7k82F0llBCAF92SQLVneZO5ocvhIdQyiXZfiGAGpi1dlYzgat2szs9ZdHHRM ZJLlLx2Aqu6JeqlaRP/mfe0qXOEchyuM2lxFZrHgXD6x0RqkgRtIZsxIN1/39Pmoir+k kAW9Dhpa8cpROdsy6KFuRz6ROr3UIlU/QtF4U/CiCQmvuQ1UcKXIBWgGotSewL/X8Ff4 3nNnc+QRj7847bw0/XS8AhAIdTm37p/EWCnzVGaeJ/KQiJLs/yCb/o8L8og9wiHuJbqd PNFyJdHpI4JreiUTSTFrebb1CrhrF0Fa/0ePQL3XznyEbqeXSvJZqGzL3QW9LxG2crAH MsRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262109; x=1783866909; 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=gOig7T9TXJk8k/eyxbncF441hI8NL8jYn2f6MBx/XUc=; b=SOmgxIPAxgztpGpBy6Rxx3cdL1ohImdX66ymEjqdiZyacmJ/1rHtmRpoEkHd82bX+o SIUmUWmA1KUb8d8qqG6EuVIpscdPLzfhEUNIna0NaN+VU6Jg/We/n3D3BN87U8DNlVaL z+Z+fp2N4yFem1ZwddulcHrdI5bTQCvn+oL5N8nZDCtA/r1t0iuJHf1+IKv1MHft8vvv ILUQQ2T29zypmaMPSyJ8IomgDEIG8KV4YYpWx13Fu41m8C4UoiXFVDktStQqMjU9as6l Mu3fJySBcsk3F7ki1UOYsn06IQ7J49rMPH0kCYD/yffV/GQzJe79bUKG5trPqKjy4JgW WIjA== X-Gm-Message-State: AOJu0Yxrpuiku/X+23tEFO/ce4/xib2EOb2GsuN+J1DEPbmVEvzzI0ZB YN/c7uJvsT1jszaYjL78/2WTJAVUacKRsnsD/yYp/nVEDng+sS/YEUhsk9QI8hP5Y98ADRaADF+ wCRSqo63wdenVUE+ce6/TCzTIBDa7yF14Io8QxoDgzlGazqryAtSjtpojdx7TmjG9A/4S0X36HS H3LTJ/WkRWHnjK5zbZSw2VisjeD7V/sp8r/A== X-Gm-Gg: AfdE7clCNM+CKNCxsESND67Y8yBzpG5jVNkwOxBhaPmHfKs5JKSzi6Eknxxb18EA6tw wcyqAkgotqYLfhC73Wkj628eYqn5wUojkYN/wDWCV/Y83xH3gxj/KRoM3fmW7UznJlZSIhmqOpQ EbK7v7c11wtX8izFPI9Yzl2UwGqtr2V1OBKShP18BGOREj8MweOQ+CuGQ3uLzSsYt5uKI63HKm6 mtZv1M1Oy7hCImX4qUcAATpdR3LQUdad4hCBLTN/uHjeZ3nNzfhE3jk+g3xzCNHidjyoYelIy6t kj8x/+mlefTaBTPxmcDI25uelubrcP24nq1uHTOUiZSqreYOsypp+9Gqfytyre/lO8XpA7795r6 AQeLJkgdRieW9A+j8UhOdQAPsDPoxS3/A X-Received: by 2002:a05:600c:4e4c:b0:492:46c3:c7dc with SMTP id 5b1f17b1804b1-493d11d6895mr80163925e9.14.1783262109407; Sun, 05 Jul 2026 07:35:09 -0700 (PDT) X-Received: by 2002:a05:600c:4e4c:b0:492:46c3:c7dc with SMTP id 5b1f17b1804b1-493d11d6895mr80163545e9.14.1783262108822; Sun, 05 Jul 2026 07:35:08 -0700 (PDT) Date: Sun, 5 Jul 2026 10:35:06 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , fanhuang , Igor Mammedov , Ani Sinha Subject: [PULL 11/44] tests/acpi: add empty expected blobs for sp-mem SRAT test Message-ID: <54f0db2f592af764d329892bd85bd35fa03bde52.1783261895.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262178225158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: fanhuang Add empty SRAT.spmem and DSDT.spmem stubs and list them in bios-tables-test-allowed-diff.h. Signed-off-by: FangSheng Huang Acked-by: Igor Mammedov Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260623075051.3797975-7-FangSheng.Huang@amd.com> --- tests/qtest/bios-tables-test-allowed-diff.h | 2 ++ tests/data/acpi/x86/q35/DSDT.spmem | 0 tests/data/acpi/x86/q35/SRAT.spmem | 0 3 files changed, 2 insertions(+) create mode 100644 tests/data/acpi/x86/q35/DSDT.spmem create mode 100644 tests/data/acpi/x86/q35/SRAT.spmem diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index dfb8523c8b..188003fa90 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1 +1,3 @@ /* List of comma-separated changed AML files to ignore */ +"tests/data/acpi/x86/q35/DSDT.spmem", +"tests/data/acpi/x86/q35/SRAT.spmem", diff --git a/tests/data/acpi/x86/q35/DSDT.spmem b/tests/data/acpi/x86/q35/D= SDT.spmem new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/data/acpi/x86/q35/SRAT.spmem b/tests/data/acpi/x86/q35/S= RAT.spmem new file mode 100644 index 0000000000..e69de29bb2 --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262134; cv=none; d=zohomail.com; s=zohoarc; b=AcOfzkHR6V2uXJC63LtPzkxeBtJAGRh12uoTLTWKGEQY/M5mCKaJ5KWciMekbFW2xO6oDJslg4tOKxtqrBGYtJibhUIl/tAcFKbPLc/6u25dkWnsKcuzx/EAdvNVQMrIB1uk7Exv+G3K8mWWvJVRLklnA2gCTVU4k8CHmJ7QRCU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262134; 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=TN4hM0h/oeHfWerEOP7yQ+tFpXqcE34vqzrhfzhWtJk=; b=Po/IaPEoCp1xGiD05Hvl3qaxs12xX3wI6eibfFTbGupGwsEYFVk/7VsYidLjtICAfF+/Utp1ysdTCyuObx3sNg94VN0wtxw+zlOv7cLPO6e9StYAhLdrqwoh1RtL1gfHQcPDZLa+zckFJWR+DKF+rdALde02xq/piFp27WWo3bI= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262134332458.98507761917017; Sun, 5 Jul 2026 07:35:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNwF-0005GF-O8; Sun, 05 Jul 2026 10:35:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwD-0005Fn-F1 for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:17 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwB-0001LB-Q5 for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:17 -0400 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-136-fUouAC_TNKehc38A7II_lA-1; Sun, 05 Jul 2026 10:35:13 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-4926fa2cb17so20276945e9.1 for ; Sun, 05 Jul 2026 07:35:13 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c637bc21sm518262585e9.7.2026.07.05.07.35.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:35:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262115; 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=TN4hM0h/oeHfWerEOP7yQ+tFpXqcE34vqzrhfzhWtJk=; b=h2R+QY0jyRxmyj+Qu/iMz/GHFtxajGzPJXYMoYc8VWW5YLUy5WlE7rdybxYyea7qMSFmbd m84AUtGnP7LRU6D0dx7Ij7oClLKhzjoC8Zjc677tv8AwFdLKA/bRssG2oTSgyRYGbfSQSQ tKdhrjZUatYydjLzfTWyIwTsRD3Zpf8= X-MC-Unique: fUouAC_TNKehc38A7II_lA-1 X-Mimecast-MFC-AGG-ID: fUouAC_TNKehc38A7II_lA_1783262113 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262112; x=1783866912; 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=TN4hM0h/oeHfWerEOP7yQ+tFpXqcE34vqzrhfzhWtJk=; b=czdlnBC5lJkecZ+2Y7l9dgMx9NPFdzcIXES+N8FMo31j0svYeaQ9CLWcXH+UZcNh2k UIohzrTxF1ssFW1kLLYg8QDZcfBA34n1/bAKY+cUJ/1xj3VhQ22Q93PhNqiXD/BjwWft 3FOUcMRK9DoXAFSemw7eZiCzOiJ6RKQyB9QS0E1yCBuy7zos21KBOQ9c4ltJSGemkbxl Ii3Nh8p8yFz4QDBDdljqksCo/bYPKpjePgH4GSjWPk9YGhR9gFTIVb73mvgE/o0Jit4t tqDqfHkgha8i05Sv3s6RxFN3BTPy07s2JH9pqae3X93YVOGDyEdXXmIgXsw22us8JnwF azUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262112; x=1783866912; 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=TN4hM0h/oeHfWerEOP7yQ+tFpXqcE34vqzrhfzhWtJk=; b=kaETnWj8Icd43KdO1jJWr8f/kcT2xUCHBjSLa7SyKqqX3m9HFxQFGkLAi9Bf+oa/I9 Dz5QGEp/nwy3BywBKt4/j1sN5J2OM8Q4gqkYmgEvukvElQdYo0xu90NqDUFNF9BDIGVX A02si/Bc042OUcTwCJz3ssCST/IAA53iDy5Nia4LmALNkHVeytt5bgK7rsSyHvKWKn8U od6cdJhR/hGZv6wpN0lDASIPWB9xQUaWrTNihdoc4/cXIJiAhfuZpxlu514NCk/OFNej ShXkqYmros/5gE+4YZlt8qIbsi4eHlPEjMC+ouRtBuTL1XaRSsBQZQi3q7NCRIqH5muP AwzA== X-Gm-Message-State: AOJu0YycyeWo3gBed6VY/2TSkTlN4IFfFVAH4lb5AOjVA0ZlVfPoIzEt og8TfAEBc28a5NjM47VOW9Ec3Gl1SkOpUE87eIHmFny2n+SoyAjuusjMKLt422Uwhl2ncuu3hpX foHBX6xTCm3zJbuRtG5MMpb0UGE9Pw2rk04AT85zFFTWAWj0zinnDrcuy/6wPXEY0BlhESeXMES LM0C8mV9G3sI9Pksg5XGjhVnTOxz6hUtKc4Q== X-Gm-Gg: AfdE7cmL/qBV0qpVRxIEF7u0zjxEduAyNRpNGOu1uFdnjlS8lX+2YUms8VvAv7E4Ypj klRuRa6Uo+Z23VNksQ3/1IkztWuCpu7UNmlMn7Ph6lvADMEeKZKfV3TU2KL2OlqXPlOF4j/P1BT s+nlxBgKXsdmIVdi7Q29PoSVMkLJD4p2nle6tHo1DSQhRPIv+ULfjFBd5xY4EXttb3J8FV6A7We MlW0pEOIkL0SgQU8riO39mC7OGhDgfZwz/qFaHzdReupIBkwN2dVuPKAsndhNR3t9Rd062/u3Pj kXhU76fbnyqzF9sKCXDXW6EDT6BSmd4F9B3lCHQ7v3kestIwRCXmWdCBAeEZc9plQ2TDND/WQlT abzHZDNvoAe4EHDkJkwH1NNWWc6hp0fBn X-Received: by 2002:a05:600c:6287:b0:490:af63:2cb1 with SMTP id 5b1f17b1804b1-493d128b6e3mr63750955e9.7.1783262112457; Sun, 05 Jul 2026 07:35:12 -0700 (PDT) X-Received: by 2002:a05:600c:6287:b0:490:af63:2cb1 with SMTP id 5b1f17b1804b1-493d128b6e3mr63750725e9.7.1783262111864; Sun, 05 Jul 2026 07:35:11 -0700 (PDT) Date: Sun, 5 Jul 2026 10:35:09 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , fanhuang , Igor Mammedov , Ani Sinha Subject: [PULL 12/44] tests/acpi: add bios-tables-test case for sp-mem Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262136330158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: fanhuang Add a q35 bios-tables-test case that boots two sp-mem devices on distinct NUMA nodes within the device_memory window, exercising the per-kind SRAT partition (per-device ENABLED entries plus HOTPLUGGABLE placeholders for the remaining sub-ranges). Signed-off-by: FangSheng Huang Reviewed-by: Igor Mammedov Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260623075051.3797975-8-FangSheng.Huang@amd.com> --- tests/qtest/bios-tables-test.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c index af6d9b5136..45abd8bd8c 100644 --- a/tests/qtest/bios-tables-test.c +++ b/tests/qtest/bios-tables-test.c @@ -1416,6 +1416,26 @@ static void test_acpi_q35_tcg_numamem(void) free_test_data(&data); } =20 +static void test_acpi_q35_tcg_sp_mem(void) +{ + test_data data =3D {}; + + data.machine =3D MACHINE_Q35; + data.arch =3D "x86", + data.variant =3D ".spmem"; + test_acpi_one(" -m 128M,slots=3D4,maxmem=3D1G" + " -object memory-backend-ram,id=3Dram0,size=3D128M" + " -numa node,nodeid=3D0,memdev=3Dram0" + " -numa node,nodeid=3D1" + " -numa node,nodeid=3D2" + " -object memory-backend-ram,id=3Dspm0,size=3D128M" + " -object memory-backend-ram,id=3Dspm1,size=3D128M" + " -device sp-mem,id=3Dsp0,memdev=3Dspm0,node=3D1" + " -device sp-mem,id=3Dsp1,memdev=3Dspm1,node=3D2", + &data); + free_test_data(&data); +} + static void test_acpi_q35_kvm_xapic(void) { test_data data =3D {}; @@ -2807,6 +2827,7 @@ int main(int argc, char *argv[]) if (strcmp(arch, "i386")) { qtest_add_func("acpi/q35/memhp", test_acpi_q35_tcg_memhp); qtest_add_func("acpi/q35/dimmpxm", test_acpi_q35_tcg_dimm_= pxm); + qtest_add_func("acpi/q35/sp-mem", test_acpi_q35_tcg_sp_mem= ); qtest_add_func("acpi/q35/acpihmat", test_acpi_q35_tcg_acpi_hmat); qtest_add_func("acpi/q35/mmio64", test_acpi_q35_tcg_mmio64= ); --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262161; cv=none; d=zohomail.com; s=zohoarc; b=kXHYApogKgX9FmuUMKNQhkOemxAW/BdfSEOXmBB0PNL7nfLwFYW8wh6a/Apv74B77oDo6BaLBdkslcOjoeHUXrHHkuDAJcxXnn1bNGLOofTkawDll5qCsmFsmEdRHBvSWUwYqEOhvMA59YVVnPZx/cuRakDsZyW5A2TY8lq1wno= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262161; 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=AFaImrZTdS330B1dghG/ZI1aly2aYdlzdVTbq7XpGDQ=; b=WWdoDWmw8k4BMzgTJOR8Yp46l5qDSpMYcllYvcvNiA9NKbvfgII+ORSUl5rBshU6r5YcQbGXXjVu0zEHC0Ac9vvGTjzUrbxt5JoUFnxEtXDobJUuNXm/I+aDs3SsyvGKSCuJZqLejASM9LF6/KHJhr02zvwY8sR+MJXrpvf3FjQ= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262161877320.17326303970754; Sun, 5 Jul 2026 07:36:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNwJ-0005Kx-9g; Sun, 05 Jul 2026 10:35:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwH-0005Gk-3V for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:21 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwE-0001Lg-SF for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:20 -0400 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-154-jJt0hgn1OwefQTv7HIAVug-1; Sun, 05 Jul 2026 10:35:16 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-47407691804so1596124f8f.1 for ; Sun, 05 Jul 2026 07:35:16 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47a9e4d843csm15976570f8f.14.2026.07.05.07.35.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:35:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262118; 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=AFaImrZTdS330B1dghG/ZI1aly2aYdlzdVTbq7XpGDQ=; b=LIAZUkOJ6JScwQqxI78khFp1xFFbLsBz7wFfrwIEsSOGTooGBzqRCJnvUconTCyCwMVNvH Y5GV1KhjEL+ukIRBtRPPHPTmbQU8miMSk4346PNXo/GaYfG8Rwe0BDOzpF4nBxv0NtXh1o vO4Pr4om32FSsKxV0fSmpWunH5jHCKU= X-MC-Unique: jJt0hgn1OwefQTv7HIAVug-1 X-Mimecast-MFC-AGG-ID: jJt0hgn1OwefQTv7HIAVug_1783262116 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262115; x=1783866915; 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=AFaImrZTdS330B1dghG/ZI1aly2aYdlzdVTbq7XpGDQ=; b=H9ah0CXGOOG4AiipeaRB6LhCG42AnriIwMWh/a6hGlpPQXdURJLVJ3wEbRZgTp1HBw ML8pM2TE3N7pfTM0yflTCsjRcAcB453Epo3y1Gmyygfnh1QWNyWBq4LAFsO6ltXaRLfS sMCZVcgRi0hyJGYlzBVDx8tc7JgYOS9QXYxd0SORaOJGEITlB46rbwYiEBWqFuNUi4Wl vZo8zmFTMJi1tKbU6yRFup+yMzNG0zI6H77RilV2kWASz2coiKUpBL7nBqQusU1heoEr 5MUfYbumg5E9prt8rd56fjq2xdV7Z6jp6GET8OszbGov7X1Ey4PkoXvnFZFoDwRf3TIm f77g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262115; x=1783866915; 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=AFaImrZTdS330B1dghG/ZI1aly2aYdlzdVTbq7XpGDQ=; b=N2BQeJSvNCzA7QWperU2RdFb5mbWnk7+81GE+pKrFTCJ4AFVrjgn5FtUruBBGpO5Ad b0TSfMW2/RVRVyIWNdczNjfS1EPB3n+DPYvil79VdlEHZSB9qcRQR60NI/US2rhHPC3J SRg6teEZfIucpAjEIQ/2bJU/sLeJlPDwWsprvXVl5CuMrqbeeGQXLaEEe5C4pqp68c67 +6hy97qhOg4t+5QgDoZnDzrCpZMoIKvkcGvUIq8vrCoxpd/ZdA2WBK43Sm42fZmoPfHT DDlwe3U6oCUnBVtzDDpT++oSNFG8vASYCOw+QsaOAoX6EDtgFrAibS83Ndz4j3SEt8lP HTng== X-Gm-Message-State: AOJu0YyhO1owfiLM39fNuQlk2+0Rsrbc1JxYedSMcfiMXjD0z1mi78jG IAXrGEzQruJfFVi+v6jtLvCwu3JF/8zeiSc5d539GfajqlZlv99Lu1nLvC8S9olU8JI/y1adu+y WWGbquQ/EmDexd0grOlNP4Sinbf1ArFPaC/6agZ8d0b02zXJOolVctAtrsLxOdRmDAKyrLw8BmA 1d8Zw9a7hfd2wgjJZHHbRSaBrJLiTgs7EUyg== X-Gm-Gg: AfdE7cncIE73cMSGlTfJwjGCi2bqWGjMNxJSPPhAwnYyyFvSW6J4bGTKE1TV85HZ9i2 U7i0tIWZ/OEX8FDGVjSTnBVldp01qmoTPOzqYlzOppwBqTrtGXAoUdp9duQnNI6l/KXYmGlqbzH 8AVh6UH/Megdj+GOR1t0jPTdqSWedGaPs8E9P0KOSmN9gaB6vYGuNMj0f7R0gNl/Orr6x/uvSUG EzajwLzaAY/UuzjU2RzxgQoJa2AZYFazjTZpiu9qzT01h5gsFBEJnMgt4Xjj10jNZ9LP60yg0w9 GBVER5EoHA928hvgA+tu3npAS4RppjFbVMZ4ctbUSOaMnxbiVZunpOYJkW+u8q146BoGnEsBmzD ULsRTarF+7qOrcj7BWL2Mdul3wokA1dLm X-Received: by 2002:a05:6000:2209:b0:46e:8226:96a8 with SMTP id ffacd0b85a97d-47aa9b74f8cmr8013075f8f.17.1783262115461; Sun, 05 Jul 2026 07:35:15 -0700 (PDT) X-Received: by 2002:a05:6000:2209:b0:46e:8226:96a8 with SMTP id ffacd0b85a97d-47aa9b74f8cmr8013031f8f.17.1783262114842; Sun, 05 Jul 2026 07:35:14 -0700 (PDT) Date: Sun, 5 Jul 2026 10:35:12 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , fanhuang , Igor Mammedov , Ani Sinha Subject: [PULL 13/44] tests/acpi: generate expected blobs for sp-mem SRAT test Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262162059158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: fanhuang Populate the expected ACPI blobs for the sp-mem test and clear the allowed-diff list. SRAT memory-affinity entries for the device_memory window (q35, -m 128M,maxmem=3D1G, sp0 on node 1 and sp1 on node 2, each 128M): Proximity Domain : 1 Base : 0x100000000 Length : 0x08000000 (Enabled) Proximity Domain : 2 Base : 0x108000000 Length : 0x08000000 (Enabled) Proximity Domain : 2 Base : 0x110000000 Length : 0x128000000 (Hot Plugg= able) Each sp-mem device gets an ENABLED entry at its own proximity domain; the remaining device_memory window is covered by a HOTPLUGGABLE placeholder at the highest proximity domain. (DSDT.spmem differs from the base only by the memory-hotplug AML enabled by -m,maxmem.) Signed-off-by: FangSheng Huang Acked-by: Igor Mammedov Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260623075051.3797975-9-FangSheng.Huang@amd.com> --- tests/qtest/bios-tables-test-allowed-diff.h | 2 -- tests/data/acpi/x86/q35/DSDT.spmem | Bin 0 -> 9910 bytes tests/data/acpi/x86/q35/SRAT.spmem | Bin 0 -> 384 bytes 3 files changed, 2 deletions(-) diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index 188003fa90..dfb8523c8b 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1,3 +1 @@ /* List of comma-separated changed AML files to ignore */ -"tests/data/acpi/x86/q35/DSDT.spmem", -"tests/data/acpi/x86/q35/SRAT.spmem", diff --git a/tests/data/acpi/x86/q35/DSDT.spmem b/tests/data/acpi/x86/q35/D= SDT.spmem index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..7e6f850e7a25aaa3cb7abc0ff2a= eab4ca7fdb716 100644 GIT binary patch literal 9910 zcmchdPiz~rdxYU|U*(%n+t|Y6K zoIGUV#1Bye0}>6iu1_yvUA%W=3D0v33;*Hf=3DG(93%_-x{E&9(u{ODC$#K{APEh`B4;5 zA6gx#nc4aNe)HL#neTF!x}$f0{TdJD*_^;*ND zxkQS(Cpli$YmJ(uep|0?HRyjG_`mS|kACXYoq+6qp*-E)2_8N6cL{WQup2N21!be; zIW^DinKQO#RwS=3D!>T>ltlO#_IOG(MwGIgT1ro2r@OFemyX!`AyK|9?)D3qAuTEAcW z%kt8@zqtKT_1VAv?uSp_V<}C)z53)mCTaTZwE#Z+PkeUOA1I&o59vdY^J6Q6(r0~s zIBZkkNZ>=3Du=3DW^Htp;m_PsT*lScdY#2M*kiO3Q0=3D*!QyA(0G@yE|NrQG_s7j&D6{8v16=3DzH1~fpOSvaGsA#o{v0iqMYi+ATbI(H=3DRJ2-q%PQNZzFl@{t)*=3Dc z^&7TktS8)8pf(x>2hbxpqK5=3DxxUWO=3Dkf?7~O?`V(FNhVuhadIzRh`-VeCnB(I-z7I zfF%3`K6?Bg)s$zQ@o0m@p_N5^xbeJyQp} za7BVVdF)d%^d;NW>O_@2+tg@q05zp|i^3UKw6FMVwL4wAxbfj}F_+4XMx@o=3DFi2RY zt@cKp6lG{*&+%**{R1l|vITg%VK%51{S-_kH%vnU7MZ{UeoJGu8LYyVUS;Cwp%&8(y6>+MVQ^lOK zh;tTk&SK74%sGcR=3DMd){=3DA6Tv^N4dEan57TdCa+hI2RD-0_I%6oR_$=3D8ts~wxUv>) zc9%k>c2GIbd;HZ<8SnASDCaWDxr}oz$2q}3tAc?x9P`vb8;*Hqpbf`7 zGth=3D(#z`pwO>AwHfGQpzB@A@2D^kKh8KWh*GPbq^SH@kzK*O%wiNQdHEJ?16N08)7 z(LlqlTnPpmj)>cRiYwz0q_{FZxnQ8e;K4uz&NSjoBTg_-ffEc=3D;LIS-4B`X>6*$2_ z1;pWFi?RL3{>D`h?5~sFi?RL3{>FE zAy6*v{dsUS`;P=3DON+RNyQi&H~~D0~I*IKn2bs;w&OgFi?RL3{>DOA+MF6AV<~1OpW~XA$Qt;sgT~IKe;#&N;+6hd9AN1x_$ffpZ>l&Ld7R zP=3DON+RN!1doC}B(3{>C*0~I(gaiw6O4aXD>wBeYdfi@g7w!uZDT;w@pB^aon1OpY6 zmyz-^Qi6dBN-$7CxrCHUNC^fiD8WDl4&e*w=3DNb4{RZHegr%MOfPuTGR8M5q< z<<#ruO|6ra>`tdrm}a@3Wk{AkTsR_6ppB*NPR9&BIbbscN<(OLd#$Nfd!rgZn~`V2 zCo+;}cbvi;EB$PmWRqz^2qT2#2q8yAo$;J*l?-7BcIReQEqJ=3D=3DkcUua$Gl|*9&tbq zt;6f{p3`yYlY?jskRIBj?6tA%^d+*_gzPn*y*8G;c0u-<+p~Z@d^#gnV|JE!iS(L~ zUgPPtvGm#n>9r`mJ_ZlZ#Qx@UuM6pQo?ahIuV0W}kJ20C=3D~FL}-Vo9oJiRfN-nbyW z5v8w>r%%5``nr(5&ePY&($_CYUysr^#?xnBB7H+h-{9#RW9b_gq;Ev&o8#%HULt){ zNZ;h?n`7yl7o=3D~xJuB64%<)yvlrVj~c_@6jhmR|9o0{QEUd`}z9fccT#;kzD6()oW z+a`uPw=3DRn~Tya9Uux(ynKh#T2EZztm?@OH;=3D z;?cq$v1RIc&E6_EKlmtk|G|&S_xC^i;KBX9{SS#tHM_MDEt))I4f>`0rA*}`;vU-_ zc#8j}%w+fEn^38evSu4?s+nzvY8~qq)r|EDeAFpPYMP}>?nx1PCN;-sl}TCCtKG8O ztG{!Hza7x*t#Disz)A%&hwoO>YC-GPe~=3Dik{sH-kR;g4D)n-O>y49@v%AL1UA{&eu z9{!IvJ4P#j*CGA!12F1<&G_!?=3DZ>^ChQ4a0f#l^9(eY5mdSzmK)m+pZtu0-EA!%*n zb}=3D!MG-JJ0OpF4u7tp(3Y|i%Y(tz9zs1NTN$o?1Y+<*3c`gD&5#1HnyvvcTyAY_Bdb+zGJmMMRKrHz;M(J3$ z9_&uOQdU;mbh`2dS8DQvJ2y(r(u2bZr!!!Q@mA=3D1Z@f{jb|;R`ee``;7U4@bRffGq z8o~l0l4n)Bg&dQJLZ;I-z&cf}P9SG;WoxO-C!MCBBCbvV9m6fekw6 zQj5QftY$1nYYWE$;=3D8ZFvC-&@e|hSIBJd&Lpwthuck4g!X~2i_`P@M5hr@wZmJImd z?)%htUxy$=3Ds(#0UJy-}E{PzLj0dsxM6mDv~x35+gEUn{Y;~~U-C98AedSQ)Kp1etj zoQz)Dp8kCeZ!6)2W%L(SM@Qrd2-&n{wp(GbXqoM1SbVKz#I0|%jJS2qs%}Sp7p>}c zGl0tkA}F*VPym+;1W;%}ko(XK1<*o;9|rY6eF|-G{65qvZ!GXe`q60%lv;4CHPEN} z&`cz&v$lHr&iWJ?P=3DOKod0VNOML*cOH`W?nDArjdlvLG|G9o;u@! z!NV|kOO$TqG#&gp;P0Mp^)%h;KO)`QX}Yz)YdZBhto!JG2QK0v-1<-`t{e_>{R5VO z@@iO4LV4{_*u&T2Jsh@F*oYKsHr!*wU$4NgHr8|O*N^igA@jA(=3DRR%F7xD|4N{{n| zhD+lwG9fSI(|VpSl0WgEdqhizkr6zb=3D6?x-eh4CsMx+0Y4*d^0@@zEv&DY_PXWu`! z_q>}37vjIclN#|);&a1SfN4$X3c1(h@93{{SZ+gnfBO}oP< z=3D~xh3Gbh{+pO5uSekRj}Bcgok4jf(cikTFp1j^UFqLg9@mf*GT!Vv&b{`u@OxV^XP zx3%!=3DQvRl4ZB;6K7LSiuNh@i%>sIQQ@4%g|(q800rRn9IO2w1Bs@@@P?+vH&PFRt_ z=3DT*sbR&+Ath1IyQ1_igbp*r=3Dm&dYE=3DZ+31bn9pQIOYtP`$v?fFgf!3-j#7BaCE1;u zHTclrLzhU|?%Xt>T!)Vad^9DucYUL#d-3v5Cc`rqeR)}6vkmGKpHSMMcgbBs>9qub z3-YS9xpk_VDIt}_(%0a}L~d`jWp`KN*s1X5gQC6)%Qxu9$&ZtgbnTc&Ueh+MQ%#!k zRg5(SHr=3D2vk}r}(dPU*4D7|lVy4vY*a?x!Jj~$SJQ0W?>FrFEwUX4zC0?s8g)S`wY QStg1MH&$xKGb$_OuW}xhhyVZp literal 0 HcmV?d00001 diff --git a/tests/data/acpi/x86/q35/SRAT.spmem b/tests/data/acpi/x86/q35/S= RAT.spmem index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9ecd266eda68d035f72f170cb13= 46b97da623c28 100644 GIT binary patch literal 384 zcmWFzatvu;WME+AbMklg2v%^42yj+VP*7lGU|;~TK{N=3D%fdDF>Q3Eam1za!&iavxo y0jT^3c9=3DqB^AYOs1L~_oxB|-JfVlu6!@$6(!2}cLAX1$GR2|#~W|#>K3=3D9Att_cAE literal 0 HcmV?d00001 --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262553; cv=none; d=zohomail.com; s=zohoarc; b=WLODXhzh++pvQB5OGg7Bq7hN8DBlhUK7OM+llRHhm4Czpj2PoYkZ4HUBKzKLv8H6VlryNO3Q0A/lrSp/c/WoSayUPyQGXiiD63MfOs/+W0NvnrGwbsiGBE9P0iy+cJ8qPS3CcJVaYyXuRU05rfu1oxbW0+D1BoVeJKnSPKKd4ns= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262553; 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=Tt/+h8SYwu/l7AdrLBpXz0yzDqrDTzChIc9yr8nOxw0=; b=m3ss1EoikRAcCcDoYQJWziuvvyXuvykZ7naK67MuOTQPjFVf8xO1YSI+E8PU7KQcyHa9MXipCYqqWpjwXlk2+lY5BMswIecbpfDd0mvKsINYXnlUuK9+ttcL/Of5lU3sLln1UbwdFZhiikTmRBe+xnOfhg6D9zPZu7Bryl7Sipg= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262553199460.6318887607821; Sun, 5 Jul 2026 07:42:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNwK-0005Nm-VV; Sun, 05 Jul 2026 10:35:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwI-0005IK-Pp for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:22 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwH-0001Ms-4A for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:22 -0400 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-108-WaUtGU1BNqeBgXbtrjWJGQ-1; Sun, 05 Jul 2026 10:35:19 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-493b0fe95b6so11367755e9.1 for ; Sun, 05 Jul 2026 07:35:18 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493ccdab3a8sm231771455e9.6.2026.07.05.07.35.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:35:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262120; 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=Tt/+h8SYwu/l7AdrLBpXz0yzDqrDTzChIc9yr8nOxw0=; b=YjrjsJsIod+HqCUjLAqauEnkwut66M/zf1YbLlms1xpYkH8t/vNIBOQki7J0z2H2D+nAoG 4IUH0R366JzXg4AoTsJzcwagZGY9ThbS37VUiIaGZh1K3u3SGl87k8dxmDeTzVvPftENye j1zoS9BtikZ9nN++RJ99d9rLseI6BoQ= X-MC-Unique: WaUtGU1BNqeBgXbtrjWJGQ-1 X-Mimecast-MFC-AGG-ID: WaUtGU1BNqeBgXbtrjWJGQ_1783262118 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262118; x=1783866918; darn=nongnu.org; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:from:to:cc:subject :date:message-id:reply-to:content-type; bh=Tt/+h8SYwu/l7AdrLBpXz0yzDqrDTzChIc9yr8nOxw0=; b=kTWAl9UgbTKPFFN/A/rMxjG2tszyAlEIydNHdWcGEX1c0RnCcv4SbImmsKvRZHiSf3 tl+9Ui3UeiKAzxukj6LN2m+h6EYvZbbutzcoloaM55NlS7g400Aev0uO+Y2uM4DGx9At cg3hUnFbbl1DPSFqfJEMHtyS5bDFy1nF2qj7v1mPYXbk0xM36ZhqR0CABR0yeB+XdzgJ zvcXxzXZu3I4Iznj+0EYqQhWKOvy64ZCI6WoopSvWmFwFbgRJHQ+q0aOM5HfLYfe+XYi 7tinztQm+dnvBQ+2wyDqQjM7eaFMGkzA+csVVCXvdCYyirwzgew7OKgNXtyuejDe2B6y q+jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262118; x=1783866918; h=in-reply-to:content-disposition:content-type: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 :content-type; bh=Tt/+h8SYwu/l7AdrLBpXz0yzDqrDTzChIc9yr8nOxw0=; b=FF/3vG/Ypsrs1uMmcnQGdpTUbqI/I0BG+nPVwW5mbaPKswCTG+N2Mgj2kSECWyXbt+ b5Aw1K+rZ/Kony83pVaMsXQSnffemsz+uHZwZeU5EtIJpD/NPqC2gzBbpIMxa6h55Vf3 IvFsxFVjs4fc86pGIiTkqLGUQouR706yKwZK54yZJ2b4SutvND85CM7WAZkLN8bZhEoB ToYqdvTjakCeusjqfw2ocfxZcTfdoEQS32TO1lAKVmnSJbFGHLGWU6EzHeIwbwwaCpgK C6TatPzeMogdaMR6HEW5kj1qFH/SfQ1M1CvnWivXrGmWca+/sPgFOxxurWL5RGrI7nUn rNpw== X-Gm-Message-State: AOJu0Yy7KYSK+aO4y5HhJHNqd2zRZ1L5L0/6GNTMsPmrpaGhhJ+gvbZA tk1JML15EDPn0WO8vibHW8dwrix2qsw5H/ooRsghECtXkhg6WukddBgp0HOSnjGYwzkBBrDkzPu Kg03qF9NemsFZ4pshKjDoog9qxT1jkpdFLqd4OuFefRzVwr5Ly8WTXF1DfLe1GA4dLMhf6Z9VCa Ap34d1TNc24HcdF5t/C55c1+wyp/fT/BYjpA== X-Gm-Gg: AfdE7cneUVXNiwYXQq8k+0KNFvLYtTdT25gHz/R+kYyNooaFBCqGxZv9PuAhfAlZ2Jk RaAmMOL9ZD260TndmpYi6uZ1niHdeCn4B3CBeGyduHdKBOwIlZw5WH39YPkMiUEiSTpybBeV1wW W7dn+DrVERBt8wsBwF3TenqKk0hR6tkel8fYBNN3R6Me97jBev6jxKeRqLc4xCwMMQmGGUa7KrX kVZxKggBTKz+TEi+cllCtZLLiZvhO11cQtS62fr7TE+Yp9xUzD35k+bIqUpEHxS0b3Z1Q0O35+8 JyEzENgPpiVH7AAHF95cfdpoWZTubkclaOuNhuvwgoHOULGONht08QAovtBw7yv6xB0k6pDcSEY Jk8L8JxPbJo2pgcngoBz9Nxt6+DfAEqTT X-Received: by 2002:a05:600c:5790:b0:493:aa0a:45b0 with SMTP id 5b1f17b1804b1-493d11f3656mr55947535e9.23.1783262117656; Sun, 05 Jul 2026 07:35:17 -0700 (PDT) X-Received: by 2002:a05:600c:5790:b0:493:aa0a:45b0 with SMTP id 5b1f17b1804b1-493d11f3656mr55947215e9.23.1783262117110; Sun, 05 Jul 2026 07:35:17 -0700 (PDT) Date: Sun, 5 Jul 2026 10:35:15 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , fanhuang , Igor Mammedov , Fabiano Rosas , Laurent Vivier , Paolo Bonzini Subject: [PULL 14/44] tests/qtest: add e820 fw_cfg test Message-ID: <0819ca9dbd882fff0a1cf9a241a444b4bd34ebbd.1783261895.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262555840158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: fanhuang Add a qtest that reads the "etc/e820" fw_cfg table and checks its structural invariants: the file is a whole number of e820 entries and every entry has a non-zero length. The baseline q35 case asserts the guest sees RAM and, with no sp-mem device, no SOFT_RESERVED range. Signed-off-by: FangSheng Huang Acked-by: Igor Mammedov Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260623075051.3797975-10-FangSheng.Huang@amd.com> --- tests/qtest/e820-test.c | 95 +++++++++++++++++++++++++++++++++++++++++ tests/qtest/meson.build | 1 + 2 files changed, 96 insertions(+) create mode 100644 tests/qtest/e820-test.c diff --git a/tests/qtest/e820-test.c b/tests/qtest/e820-test.c new file mode 100644 index 0000000000..1db0744c08 --- /dev/null +++ b/tests/qtest/e820-test.c @@ -0,0 +1,95 @@ +/* + * qtest e820 fw_cfg test case + * + * Validate the "etc/e820" fw_cfg table that QEMU hands to the firmware. + * + * Copyright (c) 2026 Advanced Micro Devices, Inc. + * + * Authors: + * FangSheng Huang + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" + +#include "libqtest.h" +#include "libqos/fw_cfg.h" +#include "qemu/bswap.h" + +/* e820 entry layout and types (cf. hw/i386/e820_memory_layout.h) */ +#define E820_RAM 1 +#define E820_SOFT_RESERVED 0xefffffff + +struct e820_entry { + uint64_t address; + uint64_t length; + uint32_t type; +} QEMU_PACKED; + +#define E820_MAX_ENTRIES 128 + +/* + * Read and structurally validate "etc/e820": the file is a packed array + * of struct e820_entry, so its size must be a whole multiple of the entry + * size and every entry must have a non-zero length. Returns the entry + * count and fills @table. + */ +static size_t get_e820_table(QFWCFG *fw_cfg, struct e820_entry *table) +{ + size_t filesize, n, i; + + filesize =3D qfw_cfg_get_file(fw_cfg, "etc/e820", table, + E820_MAX_ENTRIES * sizeof(*table)); + g_assert_cmpint(filesize, >, 0); + g_assert_cmpint(filesize % sizeof(struct e820_entry), =3D=3D, 0); + + n =3D filesize / sizeof(struct e820_entry); + g_assert_cmpint(n, <=3D, E820_MAX_ENTRIES); + + for (i =3D 0; i < n; i++) { + g_assert_cmpint(le64_to_cpu(table[i].length), >, 0); + } + + return n; +} + +static void test_e820_basic(void) +{ + struct e820_entry table[E820_MAX_ENTRIES]; + QFWCFG *fw_cfg; + QTestState *s; + size_t n, i; + bool found_ram =3D false, found_soft_reserved =3D false; + + s =3D qtest_init("-machine q35 -m 256M"); + fw_cfg =3D pc_fw_cfg_init(s); + + n =3D get_e820_table(fw_cfg, table); + for (i =3D 0; i < n; i++) { + switch (le32_to_cpu(table[i].type)) { + case E820_RAM: + found_ram =3D true; + break; + case E820_SOFT_RESERVED: + found_soft_reserved =3D true; + break; + } + } + + /* baseline: RAM present, no SOFT_RESERVED range */ + g_assert_true(found_ram); + g_assert_false(found_soft_reserved); + + pc_fw_cfg_uninit(fw_cfg); + qtest_quit(s); +} + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + + qtest_add_func("e820/basic", test_e820_basic); + + return g_test_run(); +} diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build index 5e18b947c7..93175baa87 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build @@ -58,6 +58,7 @@ qtests_i386 =3D \ (config_all_devices.has_key('CONFIG_AHCI_ICH9') ? ['tco-test'] : []) + = \ (config_all_devices.has_key('CONFIG_FDC_ISA') ? ['fdc-test'] : []) + = \ (config_all_devices.has_key('CONFIG_I440FX') ? ['fw_cfg-test'] : []) + = \ + (config_all_devices.has_key('CONFIG_Q35') ? ['e820-test'] : []) + = \ (config_all_devices.has_key('CONFIG_FW_CFG_DMA') ? ['vmcoreinfo-test'] := []) + \ (config_all_devices.has_key('CONFIG_Q35') ? ['dump-test'] : []) + = \ (config_all_devices.has_key('CONFIG_I440FX') ? ['i440fx-test'] : []) + = \ --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262371; cv=none; d=zohomail.com; s=zohoarc; b=UIk8z+q6ueWKJWuRIZOU13JuiE872WLAS2mGdxBwEzMvgVvO3btGI79ONn8Yee9K/wMJUxNl23CxWSDYyVNbNVNlhinYmUuXctiwswA499CRA1uFJtfPXsAcLoF7Xqs5dKVW4XFvAbG2F2pSANHUIj0hPr733xVfn7ts8B1oa+I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262371; 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=Balp7D8MFSKnXNPxZzDjhjGfDYz0bsOOyDe5UyFYcAo=; b=HQ/JM3X0BqGEwC4/FoNfRpG5V/iYGwW2xn4He+AoHTH6ia+aE2pLGFxYEercgIxi+yPNa2D/X45dgJGwzzkRsAfvbiEDn9Xk+kB9N6XauXaeYRrPyJU4yBslo0eibLLkN5+4ORWjtfRajZ11O0cSvizlgq6S1uN53+07Hz5vqcY= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262371276102.30017096016934; Sun, 5 Jul 2026 07:39:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNwM-0005QU-0b; Sun, 05 Jul 2026 10:35:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwK-0005Nq-SK for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:24 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwJ-0001P5-Co for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:24 -0400 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-392-pBpH1-O9M_aL5cru0-RIJA-1; Sun, 05 Jul 2026 10:35:21 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4926fa2cb17so20277185e9.1 for ; Sun, 05 Jul 2026 07:35:21 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c6381e4fsm347059965e9.8.2026.07.05.07.35.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:35:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262122; 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=Balp7D8MFSKnXNPxZzDjhjGfDYz0bsOOyDe5UyFYcAo=; b=QXuGOwEX1F+0hMWZKbeNs5uG+MLcJAzlyv5Z88gSxlWirFt7oCVQMpV6Z+/Ytm6pXGAq0W c2/MFqpailb69qzv/Uix8hAWSEzzKZFe8VS5P9LUW2ts4e7h1HN2w1K3idGU1h/87LiAeF oS4Rqaew++8tk0VFCPQ8D+lKWZ9Zo6I= X-MC-Unique: pBpH1-O9M_aL5cru0-RIJA-1 X-Mimecast-MFC-AGG-ID: pBpH1-O9M_aL5cru0-RIJA_1783262120 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262120; x=1783866920; 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=Balp7D8MFSKnXNPxZzDjhjGfDYz0bsOOyDe5UyFYcAo=; b=TinnaqIw74mW/8Hx0MJlzCkflrAyS9PFW9mj8Qbcgkri042I+8McuUaFlaOP3pSUv9 XhFNLU92EqZNliliGDeVjbEAUZYD8lo7U5rkcoO0f9ll6z1E5IUjbJEm/oBgN+vTchLM fdUj+6XP5xwzh3unlLeypM//vS+Zensk99z4jhkJG51fKIfS88SUCtsXcQZuJISiSKm3 rRib+a+4ZY2bs0E6jhhceIpMiQgKyFTjijjGXT6L5PjUlHBe4xU3ZYZFB6oGJuR3dL5f m3+JUud3LUmbX48Blq7nUXEh9RYhaV6WAo6eMw/OhXfLI1/fCa525BaqYj7QlasiCf+4 eL+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262120; x=1783866920; 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=Balp7D8MFSKnXNPxZzDjhjGfDYz0bsOOyDe5UyFYcAo=; b=AavlcU9xFizMc7fpqGNwM0+gQW8afHeozBoObyRJZSAP0eFzZzm8c86/pMFmL0X/6r hcxXWi3ZwUMz8Awjho8ujAdANngR2n/zBNod2a9tlcgighNiPumfgQ/mEdrpao2JlYRI tDsfiw0hI/k20tBV39wFJI867GgKTEDL2anP2YQSi0XBYWP44mMktc7yMVAEIWP2cIkK VyCp1hV7sCCSbcKaEH0CfGsCmIO8nqxN04bKhIxcmF/VzbrYbmyn8qtUTqgH00wTJIeJ xToXeOQu/y6c74uV0G2CxVNt9qU62mNE7SDC4PPUnNs6QLkdyIAuHn2AGeCFR79nuQVO 7Hog== X-Gm-Message-State: AOJu0YxLI4BhEehQrOt40Ni9jewjVxvNqAO0aKxgJKpt8n2UeZ4+ixCb h4BVdR/D6OKyNs3Ra1fDwOn8NB2kFV/FWLvQJ7v0C9aIMnARz5dCU4MP75QgsXtiEaFWdQl4JOq +RW+wb7XrNJihDvUAWQ/NFlbi/PsOjZBA+MNzMBUWKuWfAHK51sQoAp8GVWqENyeq16MrfEXKyv +aNnQYWYY5Sp8kjmwDYr+ymA/mg3c74L7gvg== X-Gm-Gg: AfdE7cmICR9rS8B1BhLtV8zIip/IqGkkyNyg3lN/RsuRG+bIFkMDmEo8hI5rSxV9w5D xYfGzMMMZ5cAiEykjIzDtGCzEs9wVdK2KEskmx7ttvioE/Rx8P4iaoP7DjL513OXMpEk1cXM7ui CawM87uB4D2jLitUrqV9ZH3b2BWjmRIbpqnk77gEZ+yWDtFqABkhGRSeJN71Idqc04ON6f+PkEf vo0MkpBQv2cFTDJBGViRiejdqYP3tbr36SoR0CF4okn8zuHnrn5Th+94qxp2fxcAqT58c6z/o+u Ibs81Qr8qgfwy2KzN03cY+fd8HSXWprWnrYUrnytU1iuAExDhFh7suLvUvfHLmTTuAUWPJl3/tz EXrUDUyI08M1gGai8U5kdk9UaN/Yc+BiC X-Received: by 2002:a05:600c:37c3:b0:493:d3c5:6c32 with SMTP id 5b1f17b1804b1-493d4b50573mr46822295e9.6.1783262119945; Sun, 05 Jul 2026 07:35:19 -0700 (PDT) X-Received: by 2002:a05:600c:37c3:b0:493:d3c5:6c32 with SMTP id 5b1f17b1804b1-493d4b50573mr46821845e9.6.1783262119383; Sun, 05 Jul 2026 07:35:19 -0700 (PDT) Date: Sun, 5 Jul 2026 10:35:17 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , fanhuang , Igor Mammedov , Fabiano Rosas , Laurent Vivier , Paolo Bonzini Subject: [PULL 15/44] tests/qtest: cover sp-mem SOFT_RESERVED e820 entry Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262372906158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: fanhuang Boot one sp-mem device and assert the guest's e820 table gains exactly one E820_SOFT_RESERVED range whose length matches the device's backend size. Signed-off-by: FangSheng Huang Acked-by: Igor Mammedov Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260623075051.3797975-11-FangSheng.Huang@amd.com> --- tests/qtest/e820-test.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tests/qtest/e820-test.c b/tests/qtest/e820-test.c index 1db0744c08..aafa3c1aa2 100644 --- a/tests/qtest/e820-test.c +++ b/tests/qtest/e820-test.c @@ -16,6 +16,7 @@ #include "libqtest.h" #include "libqos/fw_cfg.h" #include "qemu/bswap.h" +#include "qemu/units.h" =20 /* e820 entry layout and types (cf. hw/i386/e820_memory_layout.h) */ #define E820_RAM 1 @@ -85,11 +86,44 @@ static void test_e820_basic(void) qtest_quit(s); } =20 +static void test_e820_sp_mem(void) +{ + struct e820_entry table[E820_MAX_ENTRIES]; + QFWCFG *fw_cfg; + QTestState *s; + size_t n, i; + int soft_reserved =3D 0; + uint64_t soft_reserved_len =3D 0; + + s =3D qtest_init("-machine q35 -m 256M,slots=3D2,maxmem=3D2G " + "-object memory-backend-ram,id=3Dram0,size=3D256M " + "-numa node,nodeid=3D0,memdev=3Dram0 " + "-object memory-backend-ram,id=3Dspm0,size=3D128M " + "-device sp-mem,id=3Dsp0,memdev=3Dspm0,node=3D0"); + fw_cfg =3D pc_fw_cfg_init(s); + + n =3D get_e820_table(fw_cfg, table); + for (i =3D 0; i < n; i++) { + if (le32_to_cpu(table[i].type) =3D=3D E820_SOFT_RESERVED) { + soft_reserved++; + soft_reserved_len =3D le64_to_cpu(table[i].length); + } + } + + /* exactly one SOFT_RESERVED range, sized to the backend */ + g_assert_cmpint(soft_reserved, =3D=3D, 1); + g_assert_cmpint(soft_reserved_len, =3D=3D, 128 * MiB); + + pc_fw_cfg_uninit(fw_cfg); + qtest_quit(s); +} + int main(int argc, char **argv) { g_test_init(&argc, &argv, NULL); =20 qtest_add_func("e820/basic", test_e820_basic); + qtest_add_func("e820/sp-mem", test_e820_sp_mem); =20 return g_test_run(); } --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262176; cv=none; d=zohomail.com; s=zohoarc; b=mbqwBTMgr4I4WRiuwDVPX5M2ufZGIlRPx190/jeaFa9xPjBMD0AI6Aw11EVBohh5e772ZcOUQhGPnwaC6a/v21iQjtL5zrKnd7jNBBAZbBlK0/Rr+G3rdFwcB7duVlcc3S3PBAJDbqVOqwhVm7QGrJTmCtjq2ZwmSSPuiaGNPBY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262176; 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=nMXYW48LA6fV03UPNCuWpcdWlH4nBmPiXP0Gti6mM1k=; b=HxKErDFNZcfd+iMkZ3Bi7J0qNAHJyMvZ8+Ku69BJphCe9dzzCAbEiQ0pDwj3WRX6fJUIyd79oHys9a3q5QusJZ+iGNDdRa04PFtRw2bzqzXHpKxl4fPXH4/UTX7g8EjFwq3oWpGOK/YUy3pguQiy5Fa1bv4ST/FiKFoog5RsRW0= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262176264943.2165276218375; Sun, 5 Jul 2026 07:36:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNwQ-0005Wd-GJ; Sun, 05 Jul 2026 10:35:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwO-0005W2-Us for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:28 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwN-0001PI-JY for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:28 -0400 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-500-5utvMBdnN7Kw7QZp0KWXwQ-1; Sun, 05 Jul 2026 10:35:23 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-475e540a0ffso1212426f8f.3 for ; Sun, 05 Jul 2026 07:35:23 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47aa039b0cesm16150051f8f.22.2026.07.05.07.35.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:35:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262127; 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=nMXYW48LA6fV03UPNCuWpcdWlH4nBmPiXP0Gti6mM1k=; b=PCuwbnbNVYBa0Br5up60BE1tTpD9tbub0p3M2INgaly5lQ6ic8iRqZOb5HnFknaWT4X++E L3F6gFkmwiFS9Plbo6gPV8F853WKLc7FRDf6U6XQ9lw1FvgEbqI4ILU+qbj92wwOg+PSzC o4HvALVZpwTDO4Nzyh0y+yr5KXoyqdM= X-MC-Unique: 5utvMBdnN7Kw7QZp0KWXwQ-1 X-Mimecast-MFC-AGG-ID: 5utvMBdnN7Kw7QZp0KWXwQ_1783262123 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262122; x=1783866922; 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=nMXYW48LA6fV03UPNCuWpcdWlH4nBmPiXP0Gti6mM1k=; b=cxyUbf4Pkzq01m4dRG6E5AJIIjVLd85RYHRlXALlOvQenxZQNG6FKVtPsHIcP3qSGH rq11TjWx5zPNi9zDjtK+t0l9C4B63fkUWtDwJSFIaUR8A1IxJuBHpou6hWBbyoMvTYrA 5mRxrYXs84SqktNpWNn70onjf9pESj7KVZxPOROxd7uwEYPu9w0hXmbE9gQCEuXd6k1T gT3mHKGx7cg54hHWZWUVq15UbgxMlxMdZ+YmZws3kmxZ1iyHHNcCVhxSV9qKkQ6S70eJ 1al8jXpuHDP1iO9gr6RD2AvWtDHmkWp4RaKPp4fDGreeNkoi0ZH9ErZBy/yu6D+MYhnq BXxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262122; x=1783866922; 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=nMXYW48LA6fV03UPNCuWpcdWlH4nBmPiXP0Gti6mM1k=; b=hEfhGTyc95kizrLkHHJr2vhlPWjtaX2LqAOEk0Y8cjHc+6hDFq1TioOmVwaVMhh7+R sJX8b3gjPk1xGI8G9g/q2TOn87PDnpq/p8+r7Oqg1WYDZHO/teyHPZa9XK0B6VI+GVW2 8I/1ocx08YbfIF4oYyyo2SnZUtJmj4ZyigK6rtuLp+Yr8a7fbgg4tpepH/KaSl4RQmEi yeWTmQtSpvtwDHpdbUdDl6NHUgeI4iMAEH2WtYX4bLTOtcL85IPZkq+MOhhjzkXwSZuA zN7JsZM+p/vqfiLlIOyGUGDg4vx8tNQpikx6Hq7uI3oOEGXkCODdAIVTcRLD/+gVf2lq QKxA== X-Gm-Message-State: AOJu0YxoBwO1jGCsMmKyHaGdG2lpCSZGxdwtzMq5lyevC0DVLnX8JkXu 6IVWUYSrM/3p6r7NNdYCgESLGtJYu1+aRBvuFuXV1lesFSwcEa1Yzq9W747UY14FQWHZfm8A9YN WyRRlAU0RAbesS/us2W1DPVzQERot/1qspFI+mViIoLIoKiJDPJigdZ0RaTlAdnZV/EKrd9kgEu Ww/+De/6Uvk8TgqpX+uv6Dg62zwF4/o81nmA== X-Gm-Gg: AfdE7ck2M5LwrDcy43Tbxh+wMxo+bKBOIC/qD6SDUhykq7HID+ZozIW9ZnnFQN3LfAi jwIrA9TBDIj0wi1yjpMUGj5KWLNxM5q6Rf2dcBb6VkZr0QFjUv8c17uce/6zfVQ1752yyzZIC+I MYJ423EuduSvnUomZ1PB7Kc1utb2sBea4s3uKRh9h4P9Yoe4PeXfXGWssRpDS3DyqXdq6IGUApg M+EpRCIaMcLmbQ8YXWU39bx7M2Rda+TOxCUSRh/TMdtEcxEQSjlulOnqVW0qjG7mlCnafqa3Z/D C7hfNxFhILvTWrXEBEGtN32e1QKeomSX69U6VRXjPs6pqQf8HLFt9y7ckUoZ+EoXr7YQuOyj6p3 6xeI8n2TZdHczjzO1cAlAi0ftLcKdBg6P X-Received: by 2002:a05:6000:718:b0:474:4525:eb32 with SMTP id ffacd0b85a97d-47aaa60dea9mr7176658f8f.11.1783262122412; Sun, 05 Jul 2026 07:35:22 -0700 (PDT) X-Received: by 2002:a05:6000:718:b0:474:4525:eb32 with SMTP id ffacd0b85a97d-47aaa60dea9mr7176611f8f.11.1783262121790; Sun, 05 Jul 2026 07:35:21 -0700 (PDT) Date: Sun, 5 Jul 2026 10:35:19 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , no92 , Clement Mathieu--Drif , Yi Liu , Jason Wang , Paolo Bonzini , Richard Henderson Subject: [PULL 16/44] intel_iommu: Correctly set pt bit in extended capability register Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262178645158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: no92 With the changes in c7b2e22bd957, the `pt` bit was set in the (wrong) capability register, instead of the (correct) extended capability register. Fixes: c7b2e22bd957 ("hw/i386/x86-iommu: Remove X86IOMMUState::pt_supported= field") Signed-off-by: no92 Reviewed-by: Clement Mathieu--Drif Reviewed-by: Yi Liu Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260624103933.1793586-3-leo@managarm.org> --- hw/i386/intel_iommu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 744cdfd2e6..d1af7a3135 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -4988,7 +4988,7 @@ static void vtd_cap_init(IntelIOMMUState *s) { X86IOMMUState *x86_iommu =3D X86_IOMMU_DEVICE(s); =20 - s->cap =3D VTD_CAP_FRO | VTD_CAP_NFR | VTD_CAP_ND | VTD_ECAP_PT | + s->cap =3D VTD_CAP_FRO | VTD_CAP_NFR | VTD_CAP_ND | VTD_CAP_MAMV | VTD_CAP_PSI | VTD_CAP_SSLPS | VTD_CAP_DRAIN | VTD_CAP_ESRTPS | VTD_CAP_MGAW(s->aw_bits); if (x86_iommu->dma_translation) { @@ -4999,7 +4999,7 @@ static void vtd_cap_init(IntelIOMMUState *s) s->cap |=3D VTD_CAP_SAGAW_48bit; } } - s->ecap =3D VTD_ECAP_QI | VTD_ECAP_IRO; + s->ecap =3D VTD_ECAP_QI | VTD_ECAP_IRO | VTD_ECAP_PT; =20 if (x86_iommu_ir_supported(x86_iommu)) { s->ecap |=3D VTD_ECAP_IR | VTD_ECAP_MHMV; --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262328; cv=none; d=zohomail.com; s=zohoarc; b=ZtW48ZtGZyTlBdSBauw9j9+x6fKrqVr119lNMUDwAXy8uYMWgB24XiKXLFscfCHdwww7c3xOpHamo9VErHEJNlVPCcJhOA2IgI4q5NJ3HTmLkJw5V+UAajmd28iiRTnxTK2ZMZlbhN9Ye1GIWRfX0+FTqyXE+dlaQFmKNPx7R3w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262328; 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=KaSdnqdUHOdNjE92Isaz5bDk0xwKKp123cOyS+LMJdc=; b=EiSteqCJzYHn+7PT+sGknu7FSpqBiXbDe+jQ278aIaMxZ0Dk05dtwQYzqxlM8o1J+7P3bdu2fF3KbwREDp6KjVXO1U8zyekstUVCwVQffGc6WAKN57BeuaO0zHMest4Ox1jEXN2myevm5iYchbqu2UnWpkuGTiGCr+7v9BimfuI= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262328417301.16268228905835; Sun, 5 Jul 2026 07:38:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNwR-0005Wi-H1; Sun, 05 Jul 2026 10:35:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwP-0005WA-Sg for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:29 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwO-0001PP-A0 for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:29 -0400 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-474-wjJtRTsFMYWp3B5r57XjnQ-1; Sun, 05 Jul 2026 10:35:26 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-493c619bb52so15299395e9.1 for ; Sun, 05 Jul 2026 07:35:25 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47aa0f214d2sm16402547f8f.33.2026.07.05.07.35.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:35:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262127; 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=KaSdnqdUHOdNjE92Isaz5bDk0xwKKp123cOyS+LMJdc=; b=BwoBP5jLzdrko8SLx54i/ojuQTlbBt3E/b9NTDwQoB7z7xCMXQ061FH//GgtxNgk9gEmgd a/EMlgmiLm0R1SJIU4uUxtMtqDOc6PNGU0HMGOwnyfikIb9xKOOSagYhlLbOjVp06Z8V02 4DGuWDfgYo7hfhP9kZSWd2vklmDuCz0= X-MC-Unique: wjJtRTsFMYWp3B5r57XjnQ-1 X-Mimecast-MFC-AGG-ID: wjJtRTsFMYWp3B5r57XjnQ_1783262125 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262125; x=1783866925; 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=KaSdnqdUHOdNjE92Isaz5bDk0xwKKp123cOyS+LMJdc=; b=ImvFBm5X0I09cxSfqliiyf38hPD4pvpKk+Xvd+MgoFJra0SDVMTYq8gPxylHtOVlvA kkyVMbUUv/bEtU+qWbaIyHFmODWBLxBo2F1POeAzi7TvI3giVoXj/nv0rRYigbe4D3De tWbz+C9PPC+PdDjff5onqUOAJXe0f8/PuSFhUB1WDLJ1NqZGkG/bMLt+9tGasjnMaYCD SVLMqyZNkGIgOcwO1NL0KACxj2OUIxHkWxKLChCv4Bv2ADMKVYCIvF+JMRrh/pG7RkSY Nc2XFNH+y0KZQYlvz/WgjqJdveudQinecHfyqTIkxJeLEVq2lsgJRvx3UT0hihgdx4go ZfTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262125; x=1783866925; 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=KaSdnqdUHOdNjE92Isaz5bDk0xwKKp123cOyS+LMJdc=; b=Pir/1nqdtlldFed/w8Sf8zsszi46oSBpu9X3XLFNyAaaOxeVq3AzA2SMX+kkrnDp2B 439SFcZF92JRrjEAxh1kWh9EqEvjZju3kK/9H/y3RLRyvFw7Te+i/O41nukF4dclwusr Kz6DonKqzwlYAqM2eDJyYMFADbpKCJop6bAup42+1hAeMNy8sg1g6ZotiHqJun97F9DS hlVGNjDk6GmsSCwGRp6By5gyROhYJNKZEUaDBq32WFcs/18Hle3YquOPsOhhb+iROish MaJXnp/i5RVFwXwF0KJHZCz1sqTag7FKzQOXKVyxKbii4nW3s4EPe2Sk6JwkA30UDE2b akUQ== X-Gm-Message-State: AOJu0YwWt+jtnp4FJqipvmkO+l6L4JNJXxs6TyLI/dKu/MHbUhR1MP5N ceT/w0F6OjIhpSYUvw4QlWrV5rlXzCo6wZAoBJFNGPvezuysRNTJQBJBSgA+mVyPaxRlrmMy0Zl Vgzns4IHfZOxkdxuzkwmjJ1s4IU41FvUPoheN45pE38PoNPLu4HuFwWJfkI/sprT+AROMTVrUjK QXScyUXNPtpbNIr+6kJWK/7XNxLdJ+v32PgA== X-Gm-Gg: AfdE7cndiT2eUQC6XXLA+T2XWYW7kbvNHiVXb3W0KmF8ZKOpj1MVvGSpfoovSV8UYq5 XOPbXqa+cGTDtkkY6esfx0WcvErWsFvpvoFpArXIJdGg4rLu0AgcUdP5/RtCYSjtcD/UztJy6mq rV7a0awJMtgV015Uny24sWGSvq5VD5L4BBnPWOwcPCgV4Do4UT6LDHl2HuXZSZ7FyhgHYAEdmP3 izW0lYWL/mAkjnmMfQm0Q9X+s3639ZyXnsUNnqrEXKGTTj5I6IE8sdjGnlnmi+M47H225yvTYd1 p5vJshvbjSdqbKROpSiD+AtVsbc5kh1DLn31onZtCJ4MuZvDJDGqgPZWB13Bwqa7e/yhhc75d2K nxIG8uGC2m1tb9ahQ4HssVp/UByWXYbJJ X-Received: by 2002:a05:600c:6792:b0:492:e5a5:5a46 with SMTP id 5b1f17b1804b1-493d11fd611mr68954315e9.35.1783262124820; Sun, 05 Jul 2026 07:35:24 -0700 (PDT) X-Received: by 2002:a05:600c:6792:b0:492:e5a5:5a46 with SMTP id 5b1f17b1804b1-493d11fd611mr68953945e9.35.1783262124138; Sun, 05 Jul 2026 07:35:24 -0700 (PDT) Date: Sun, 5 Jul 2026 10:35:21 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Stefan Hajnoczi , Jorge Moreira , "Michael S . Tsirkin" , Stefano Garzarella , Pierrick Bouvier Subject: [PULL 17/44] vhost-user.rst: clarify when rings are started Message-ID: <37b14d86d65a29e94a1d50cb4b9593dffc612e76.1783261895.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262328770158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Stefan Hajnoczi Jorge Moreira pointed out that the ring state machine is underspecified. In the discussion that followed, we discovered that the spec says one thing and implementations do something else. This patch updates the spec to reflect how things are actually implemented across widely-used front-ends and back-ends including QEMU, crosvm, rust-vmm, and DPDK. Do this while taking care not to make any other existing implementations non-compliant by changing the spec. The spec says rings are started when a kick is received but the implementations actually start rings when VHOST_USER_SET_VRING_KICK is received. Reconcile this as follows: - Clarify that a ring can be stopped and then started again. The back-end must resume processing available requests when the ring is restarted. - Update the spec to say rings are started when VHOST_USER_SET_VRING_KICK is received. - Ensure compatibility by saying front-ends SHOULD inject a kick in case the back-end strictly implemented the old spec. - Avoid future back-end dependencies on injected kicks by saying that back-ends SHOULD NOT expect a kick to start rings. This way implementors have clarity on how things work while still allowing compatibility for existing implementations. Reported-by: Jorge Moreira Cc: "Michael S . Tsirkin" Signed-off-by: Stefan Hajnoczi Reviewed-by: Stefano Garzarella Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260604201029.250450-2-stefanha@redhat.com> --- docs/interop/vhost-user.rst | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/docs/interop/vhost-user.rst b/docs/interop/vhost-user.rst index c83ae2accb..a704f3cb53 100644 --- a/docs/interop/vhost-user.rst +++ b/docs/interop/vhost-user.rst @@ -518,12 +518,26 @@ Rings have two independent states: started/stopped, a= nd enabled/disabled. * started and enabled: The back-end must process the ring normally, i.e. process all requests and execute them. =20 -Each ring is initialized in a stopped and disabled state. The back-end -must start a ring upon receiving a kick (that is, detecting that file -descriptor is readable) on the descriptor specified by -``VHOST_USER_SET_VRING_KICK`` or receiving the in-band message -``VHOST_USER_VRING_KICK`` if negotiated, and stop a ring upon receiving -``VHOST_USER_GET_VRING_BASE``. +Each ring is initialized in a stopped and disabled state. Rings are start= ed +with ``VHOST_USER_SET_VRING_KICK`` (or ``VHOST_USER_VRING_KICK`` if +``VHOST_USER_PROTOCOL_F_INBAND_NOTIFICATIONS`` is negotiated) and stopped = with +``VHOST_USER_GET_VRING_BASE``. A stopped ring enters the started state ag= ain +with ``VHOST_USER_SET_VRING_KICK`` (or ``VHOST_USER_VRING_KICK`` if +``VHOST_USER_PROTOCOL_F_INBAND_NOTIFICATIONS`` is negotiated) and the back= -end +resumes processing requests. + +Note that previous versions of this specification stated that rings start = when +the back-end receives a kick (that is, detecting that file descriptor is +readable) on the descriptor specified by ``VHOST_USER_SET_VRING_KICK`` or +receiving the in-band message ``VHOST_USER_VRING_KICK`` if negotiated. +Widely-used front-ends and back-ends did not implement this behavior and it +complicates poll mode back-ends that do not rely on the kick file descript= or. + +For compatibility with back-ends that implemented the start on kick behavi= or, +front-ends SHOULD inject a kick after ``VHOST_USER_SET_VRING_KICK``. This +ensures that the back-end processes any available requests in the ring. +Back-ends SHOULD NOT rely on receiving a kick after +``VHOST_USER_SET_VRING_KICK``. =20 Rings can be enabled or disabled by ``VHOST_USER_SET_VRING_ENABLE``. =20 --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262491; cv=none; d=zohomail.com; s=zohoarc; b=H9ea2xaBKYwq4Gt5U3Fd1wWK29UW/MQioUJVQ9hpJMaqMbcvM2mKAmdKnYemVgeVvOH9u6fWpqCBpGopWrDxVBAOpWKjaMtmlryCXrdwqvGXfQcxcErDR43Z+eBKXnqfY00TmjdOe5xid/PYQB/W36zRXvr1MU7KQuluy1ggue8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262491; 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=XNytVY+RK4HHxAkd8Avgx+3Crv9VVEXYr/YVFcZH3Jg=; b=Y5GCSUGWKpBNK6wxWROxtRlACX0tkWtfXlJ6yR8LjmdZs45UD61ZxYFzlZ5Bb0NrG2sGpTiAjOMrRC7TltL4+GouMoOZNcj37RTSdngoVPoeBZqcIm2yq6K3wpBnFpq4Ev0Rpn8ZZxMfSvZaNGfI4tjsUNvfyo5J1U+W1jHLb8c= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262491000349.3696281023738; Sun, 5 Jul 2026 07:41:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNwU-0005Yq-8j; Sun, 05 Jul 2026 10:35:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwR-0005Wk-K9 for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:31 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwQ-0001Pd-25 for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:31 -0400 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-416-iY6jdKFbNcmjgU5sHZjN4g-1; Sun, 05 Jul 2026 10:35:28 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-47d81cf0c4cso183316f8f.2 for ; Sun, 05 Jul 2026 07:35:27 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493ccb4cafesm195863905e9.0.2026.07.05.07.35.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:35:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262129; 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=XNytVY+RK4HHxAkd8Avgx+3Crv9VVEXYr/YVFcZH3Jg=; b=NAdXtUJsgDGMVM7ExL72J5RGj1dc0/ZP4J3DrhjdGKiQDm9fEYfP5R3aBX7/5vjktXA9hl EMdUI+SlicBmPClQoXffC9drKn7Vgk9jZXLtM0+xIRAp8PAYwPzBKWye4zvih7lHizkUbj royw+idZGLU1cnPBi00ZC6zLB7aSyBE= X-MC-Unique: iY6jdKFbNcmjgU5sHZjN4g-1 X-Mimecast-MFC-AGG-ID: iY6jdKFbNcmjgU5sHZjN4g_1783262127 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262127; x=1783866927; 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=XNytVY+RK4HHxAkd8Avgx+3Crv9VVEXYr/YVFcZH3Jg=; b=niV39JKzkeHWAmJ+6wTtBuRXU3HuILD9lfPJCFBPgRHfD17oF/fq0GDnnEQovaIPIB 6YyBw5RIVs1nQOJQsHjZCdN/zjNLy9zujKWv/9E5LNKv+QxxxXLrNuK/YiknebmTtgKb qFEsRzGmp7LuiylfYACbAWUYE3eOwK3tJMDCBirc+/FrD93rnCqCFS3eEZGLJC5C5OL5 uo6JM0TMOHt4ggHdayV6eR0PeVgg/U9DheDD7eV7R/D56kR81qMuJdBVA2oZR6oiFN2z WHptTyow7lIFU3yM5VB9gPwHmmEg1aT74ukFZLXnbwnVOnRZ3XMYO5mYzdtg/5CzB4H5 1f/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262127; x=1783866927; 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=XNytVY+RK4HHxAkd8Avgx+3Crv9VVEXYr/YVFcZH3Jg=; b=Lrd5Or2IBRoDqJyVs2HtaNrBRHWdSdh4Wf3T/TnQoMjt5kaNOeYlYDiUZMKQX+hY4j +8BHuxG2YC4QxUaNMkQNJsPj0i8j4UXs7Qb2V0ESVeXVywHpSFGT/MfsUYmVdeqSMavC 7CXgzNJtgre3BkXHlhABFptC0Od6Nc7kos3hfreoWW7ZO1jXUb3mj6DRRtzX64RPWYCx 1tKlo+PGX2Vspi5PrlA7oDLr3gmJXGX7BkNPx7cZLOzP/psX4LKorQtXlNTdq+hOnZDM d9D2hQIemPE9S6EAaUcygYK41F3QpEucipONAamLIoxw0hEUR1oJrOe3CDTz5/XDxETa knmQ== X-Gm-Message-State: AOJu0YzmA/FIgIIR29zU2TGKUvS7B/XiUW5LSUE/7cg/VOsDNAkggV/V vpe+AZBjKeTQp8REABF8ymkcAX4d/X5VrF9CfWmhmx6hQV7RnD0IOqi4NLsp3y0+2sCmkb0troD gkX2WS2PzB+R//cp/yF6j48LFSbzaF4+VH82YAzQCJeV8hV2b2VhcEC+Z6ALd5bQkvg/NCW9pzb ydqOrZJCxlUFd3c4T7VSI7Uas2M1ai+IdTZA== X-Gm-Gg: AfdE7cmVYos+H9V/KONMIilE5BZSdYTAGGggm4vW3IcUB59mgi5e0J2wOTH1rDyyEbR bOAAbrYm4wgOIDquvfYkWrZjAp6aukQGPbvvLj2CqS4FVNMWZIhDrW5Obt1mRg1+XTSsNZge6b8 8I6fglvL+AKgeL48tDA6Tzc8Ms/Zlh+tzv7smE1GUqMSaqfqm/aWdebdP0QIB/CDvhwDLxJSJOn 6BP65HTbAHke5635wHaC7Ms6NAtUo2B9CcsDARHQ5QeS/sxR8+v5H+2UmMupYkICC+lFMCyHVRL oAyRucyftvSCeWXcKUO6Kex5csA7dPYgP5lBbMKkxtAPbpmx/kIGiHOEkybXIQjeqcZUVVQQIAk TctKSSfz2WD7LkarJfXsLwINE49leUKzY X-Received: by 2002:a05:600c:c0d1:20b0:493:cfc8:12e7 with SMTP id 5b1f17b1804b1-493d11f38e9mr57690155e9.25.1783262126763; Sun, 05 Jul 2026 07:35:26 -0700 (PDT) X-Received: by 2002:a05:600c:c0d1:20b0:493:cfc8:12e7 with SMTP id 5b1f17b1804b1-493d11f38e9mr57689845e9.25.1783262126219; Sun, 05 Jul 2026 07:35:26 -0700 (PDT) Date: Sun, 5 Jul 2026 10:35:24 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Stefan Hajnoczi , Stefano Garzarella Subject: [PULL 18/44] libvhost-user: look for available vq buffers upon SET_VRING_KICK Message-ID: <1ace07171a4f772afd85a419bcd55fe56631966f.1783261895.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262491476158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Stefan Hajnoczi When a vring is started the back-end must look for available vq buffers and process them. This scenario can happen if the back-end is stopped with unprocessed available buffers and then started again. The inflight I/O tracking code already did this, but it should also be done when inflight I/O tracking is not enabled. Move the code and make it robust in case of EINTR or EAGAIN. Signed-off-by: Stefan Hajnoczi Reviewed-by: Stefano Garzarella Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260604201029.250450-3-stefanha@redhat.com> --- subprojects/libvhost-user/libvhost-user.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/subprojects/libvhost-user/libvhost-user.c b/subprojects/libvho= st-user/libvhost-user.c index d2df50e3d0..2c35bddd6f 100644 --- a/subprojects/libvhost-user/libvhost-user.c +++ b/subprojects/libvhost-user/libvhost-user.c @@ -1390,11 +1390,6 @@ vu_check_queue_inflights(VuDev *dev, VuVirtq *vq) vq->counter =3D vq->resubmit_list[0].counter + 1; } =20 - /* in case of I/O hang after reconnecting */ - if (eventfd_write(vq->kick_fd, 1)) { - return -1; - } - return 0; } =20 @@ -1436,6 +1431,20 @@ vu_set_vring_kick_exec(VuDev *dev, VhostUserMsg *vms= g) vu_panic(dev, "Failed to check inflights for vq: %d\n", index); } =20 + /* Inject a kick to look for available vq buffers */ + if (dev->vq[index].kick_fd !=3D -1) { + int ret; + + do { + ret =3D eventfd_write(dev->vq[index].kick_fd, 1); + } while (ret !=3D 0 && errno =3D=3D EINTR); + + if (ret !=3D 0 && errno !=3D EAGAIN /* already readable */) { + vu_panic(dev, "Failed to inject kick during SET_VRING_KICK " + "on vq: %d with error: %m\n", index); + } + } + return false; } =20 --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262323; cv=none; d=zohomail.com; s=zohoarc; b=Yqg8F3HesrTkZdkkkKGAXpAJ3Wv3B9Otcfx9kLi6Pm8F4CIYG6YgyCx7K9IEk4LmOwvYaCqzM4jY5jHn38/xgSWMVSaIZd05M6ejjXFDERRsvTJhzjMcwiagvUwJUUoAirVumrhOs0FoO+DuWErvgB5cGnYGcFihMQtyRtUzErg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262323; 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=bYG7Cd5XYlUgzARXK0+epA8MtHOy9/+okNge9QNu4BQ=; b=XIY4tKGognpWK1oMpeFgJOqNVYLHgmCQL3bQr+VKAy2sChNSfts0B1radaq5zxbrEswTUrn/OoHZCnCpLVkonc6Kwn30gCMgRnVMdU4w6o3zf9bD5TX9YkG/CnUcRfRWXeuOXKsmSt4Dquys9qcXqD8PqhXwe4tYhc7W+v+LClw= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262323954309.3294224911623; Sun, 5 Jul 2026 07:38:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNwX-0005am-C7; Sun, 05 Jul 2026 10:35:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwV-0005aH-LW for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:35 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwU-0001Px-7A for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:35 -0400 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-160-TsRf1ZpHPQOkYp3xYSPYLw-1; Sun, 05 Jul 2026 10:35:30 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-4629f312a67so1699112f8f.2 for ; Sun, 05 Jul 2026 07:35:29 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47a9e3e2702sm16949135f8f.9.2026.07.05.07.35.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:35:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262133; 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=bYG7Cd5XYlUgzARXK0+epA8MtHOy9/+okNge9QNu4BQ=; b=OE39CKJgxboboXxbRlR8DFFDcmb2JPFBmcvJXEywpzVp2DDUvKrwgLl1Tpm+nSHqDr/vXe pEIZsSe0uu5ICpWpIZSt4YxWr8dJdcmxzOl8l8QTSqps2qu7CLVXB8i0Q/93xUu983Eza6 0hXDg7OX0CAlsqud4kdupm9etN1VYP8= X-MC-Unique: TsRf1ZpHPQOkYp3xYSPYLw-1 X-Mimecast-MFC-AGG-ID: TsRf1ZpHPQOkYp3xYSPYLw_1783262129 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262129; x=1783866929; 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=bYG7Cd5XYlUgzARXK0+epA8MtHOy9/+okNge9QNu4BQ=; b=ZJGWBhA5P3Lo/lXOSSEnn8jbqLEUBLPbZTSWrkwlff6r78vwDefN8Z85G3qC+Js8yn 3phJGqnwaUvuywnk/rJUflz96TNc5KcZgmWWXAJ43fiuVUs91cq8/yQuEvpBhke2eW7c ekYufczuR5lCf7TRWRQXks7gHcEXTofiD+wM4lhCnMmHQbl45qZBulcIq0Lq9vNk/NF0 jwiD4DfHG75iCBcejpEZvX0C67pI+He3D2onybHD9Xvj69tWdfW6mEIaqEaPbM82JEBa Zyc/luCxCYcxMFaRC1hVgFNycQTmSv+8iK7PMUIOpQx0LhF8qklvxwILuRpjkHo8Hv6d vi+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262129; x=1783866929; 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=bYG7Cd5XYlUgzARXK0+epA8MtHOy9/+okNge9QNu4BQ=; b=sZQjU6SSrYlzayul/NP97hd+STiuPAv8ikqyxAl9eyJjyJX4M9O0+gEQ3HudHQ1zpT I0yUN7GVjCa98WSIC4MAuIATZ2A/cSsFtowI+it19+UWHlkC1wZ+oBgR6QXRNvdKCbU9 0SC7P+vrC/RMzwOooCQJHc43+E06Wcf8EUz/4hsjSG/Ynh2pU/tNX5GOqFgAmPC8EOaD SzCmTfBm+PKNb7FdFzOoeBpjP/TEXNNtQ8ZRdTNOeXRJIwZ9VM0maTdbXkWIzyLKeC4m 7sd8qfiD8kIf5ITJJMI8q1C/Zdb38woY2wtWHnMS0DTOkL1CySXCQW1I99XrhCM7Oi71 UwFw== X-Gm-Message-State: AOJu0YxCXL/u4w6s2jE9vyWPnnw274Isuw+lzFpwj3UBkr9y8z4+EURO AaCu6Lq+O8slApGrXq48VMQwyeCnpAmCCYU59xu4Tg8zgoPPPvT3exGAhs1W1sK6GKyNIB5byZH OLjExANJONwpprcVGShQLVEI/jWJLEqWWKS8e8uQ9NxSQcOhzNHMn2215XJBvsvc7YmfNRF2DtS YmFzP4CeSAlQAiSnlzpvs7ZfIvDSd7nz+Z3A== X-Gm-Gg: AfdE7ck5mqirhyP0u4d0xUJ9ztukjHN+UESY37qdsmp67YbZlYJYjKnHBsmKFnFIDY7 Ge9PyURszTBRcrEQx2aV4ViGk+0LhlfWrm96Hl16kP3if/p1StTpCJ1MasmsR4z2WvJyW0uk39+ mUz3oCiARrzTz5POGzuJq104EM33SByDwJHodUHIW4YwY5WoU5b3auu361hzXoY3Ulssq+WGVFG /V9OTsg7vNdNJ1soYASaioGCXhKB0sE8GWSfMEmP7gtOreLoRKWdG0cSeIr/g+BLS5+Jog3mZI5 /w/uejih/zXdzRS0umWVOKrTAVTEZi7xCMEGarQc7/zRJda61c/WWxzboW3D+Z8EiA5zb+LWwM8 vBR/24yO7Lw9O1vdiMHOAnDV8X954jd4V X-Received: by 2002:a05:6000:2086:b0:43d:dd:8ca4 with SMTP id ffacd0b85a97d-47aaa60d40bmr7638431f8f.14.1783262128786; Sun, 05 Jul 2026 07:35:28 -0700 (PDT) X-Received: by 2002:a05:6000:2086:b0:43d:dd:8ca4 with SMTP id ffacd0b85a97d-47aaa60d40bmr7638408f8f.14.1783262128212; Sun, 05 Jul 2026 07:35:28 -0700 (PDT) Date: Sun, 5 Jul 2026 10:35:26 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Stefan Hajnoczi , Stefano Garzarella Subject: [PULL 19/44] vhost-user: inject kick after SET_VRING_KICK Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262324716158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Stefan Hajnoczi The vhost-user specification was updated to say that front-ends should inject a kick after SET_VRING_KICK in case the back-end implements the old spec wording which said vrings start when a kick is received. Do this in QEMU's front-end. An example scenario where this behavior helps: the back-end fails to check if the vring has available buffers when SET_VRING_KICK is received and the front-end stopped and then restarted the vring. In the case the back-end may not notice the available buffers unless the front-end injects a kick. Signed-off-by: Stefan Hajnoczi Reviewed-by: Stefano Garzarella Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260604201029.250450-4-stefanha@redhat.com> --- hw/virtio/vhost-user.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c index d627351f45..517cc4ca71 100644 --- a/hw/virtio/vhost-user.c +++ b/hw/virtio/vhost-user.c @@ -1487,7 +1487,29 @@ static int vhost_set_vring_file(struct vhost_dev *de= v, static int vhost_user_set_vring_kick(struct vhost_dev *dev, struct vhost_vring_file *file) { - return vhost_set_vring_file(dev, VHOST_USER_SET_VRING_KICK, file); + int ret =3D vhost_set_vring_file(dev, VHOST_USER_SET_VRING_KICK, file); + if (ret < 0) { + return ret; + } + + /* + * Inject a kick in case the back-end only starts vring processing upon + * receiving a kick. The spec suggests this to improve compatibility. + */ + if (file->fd !=3D -1) { + uint64_t val =3D 1; + ssize_t nwritten; + + do { + nwritten =3D write(file->fd, &val, sizeof(val)); + } while (nwritten < 0 && errno =3D=3D EINTR); + + if (nwritten < 0 && errno !=3D EAGAIN /* back-end can already read= */) { + return -errno; + } + } + + return 0; } =20 static int vhost_user_set_vring_call(struct vhost_dev *dev, --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262186; cv=none; d=zohomail.com; s=zohoarc; b=Ws9++QYjFucrelEcsBaEgjoA135bYdIm2eOTKoyQ3sANBcIc7Z/ohSA8igvvPTs5MnEyQ2HuHbxQENEKc0Iu3xUNw8VBBFEzCCvKTFBfXyl6t9/NU8pSp8vJFUeq74f9/tctiQtbbVlGefnXVfJEwd252eLfPZN0uYSqf6p5ALM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262186; 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=u90+7BA/9+gBWZCPusQaFHx03QikGWcwz/+Bmxojzyc=; b=no3B6jh2ZtHoZWoutuJ4k4Mqf1mxQZyTQKVHY3HZr2EPzaShDS8AjAt1ptg+mV/BozeP+rrILHmzy/tDpWFW/sLAnzkbC9tuyR2K9ZJ3zPnj0YNabB+lZ11iwZogaKkU1Fo3QKiqbt7fwCTRYx2KPxvrQKWJLvlv2nQ/XbiMQaQ= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262186984960.2382265923831; Sun, 5 Jul 2026 07:36:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNwY-0005bM-Tn; Sun, 05 Jul 2026 10:35:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwY-0005b3-32 for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:38 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwV-0001Q7-TN for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:37 -0400 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-320-l9_Ou6ijOvyiKLtZjP1MWQ-1; Sun, 05 Jul 2026 10:35:33 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-46fb9079a04so837815f8f.3 for ; Sun, 05 Jul 2026 07:35:33 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47aa039b126sm16303035f8f.24.2026.07.05.07.35.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:35:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262135; 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=u90+7BA/9+gBWZCPusQaFHx03QikGWcwz/+Bmxojzyc=; b=TcFVAXnsu7wMPN9NXNNa2WsWJGOBTrVf0qC7jW+oaXdXPfNYtyRBGPskqUhbeUNGeT2lCi D43r3lvNE4qrGG51TPVJWMKglLbtDH4uOwg8VRTLukp/UB8IU8iNWFBf1hl/WWqJ7i9VAn 9Jl7TpeVJ3q5LcbwZ7fjYHstqoi8awU= X-MC-Unique: l9_Ou6ijOvyiKLtZjP1MWQ-1 X-Mimecast-MFC-AGG-ID: l9_Ou6ijOvyiKLtZjP1MWQ_1783262132 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262132; x=1783866932; 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=u90+7BA/9+gBWZCPusQaFHx03QikGWcwz/+Bmxojzyc=; b=Da7p81iM1RR+/o1IxcEgcdrHb4s9VpZ5h7PHqPRrLbCc5Y/pGP+H+M/foS5dOZuwKr FFMorUSCe9gjGLklGWrIHphXCTRfEydE/MAwZrvrwQmOjJBZATyhwX4YeZWpGZ3ZvW2j 7hQLlvmgtlGcRzNSz8YhXF6NuGpGQUcvEf3bYM/uJiopDdaPQFVhTRO2KqCMr1jDjfD+ lxydeX9SquLqIZa3zPFOzO7Ie4JnXH9TUO/DN1qxfzwBa1JpNDURYPE81IhaDHraUJ+r f+mLrfZLHjAAWaV/f7W8IEiyACRCxQ9rBUsJmRC3OGBtn6WJBPYsV/XNk7Nrdd/BEk+4 9+RQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262132; x=1783866932; 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=u90+7BA/9+gBWZCPusQaFHx03QikGWcwz/+Bmxojzyc=; b=Bk4GjSRrkrxN48pbYo/kXAeA/wdhTXclJEgeedpxG/A233pcp8+zUgo6Iswqi/e0+u FQIIzCWYILbUmry/uZr/P90SXG4zEgzw6O9fHoEy7gxZCB8tRVeuaIyuCSF4OgqrG0jA RrJb9Do1rXJCmYNHjP53Byfo4gB6ao+A6+1JAPkLpy26Q4s+C0VBiDFFGSUMsMw+bhfA fWCTPwZHcMAckl/U/PJz8foFBjhMgvCoCGw8CeinOHLYHUrHH3ldh59URtCQUSYys0zq cMukE9UfbvoX5CHizaz4i95QHD0bNs2R7L7BziErsKejHQnCh3ut4DtYD4ULndgzg/eK RFgg== X-Gm-Message-State: AOJu0YzIT+gyD3uRPBfsrrLnFgkvV65/UZXY062sYjZcVnEIDt1hVIIT oHtkpVY+GixLA/rOImbQqfp5UsZe1PUXVK9/wf68dNAa7Yz5jg3j89+tw6V6ifzwSK5PukU39I0 Pw0rT++UE30t1FW1CxyhrhbCfUH7ykV56mGWDXaajqDA1XV/fGvB504lm548yWvm2L9g7js6TeV +zn/JgY3YwTN2Sgc59QL39JmdCl4c2yC3uLQ== X-Gm-Gg: AfdE7cnc3vYznUzvqHXRBoPTuo5+O2s6NSLsc4zIs2D1JHcnc8nIAZ69OTJ0vUqDWGQ 74/nYcRp54wdCZ0+MOGvMzViTCPKkDhUjMA0VlZ4oaGVgxiab8ZnbRo9cv3l3A+PIkKgjLSZN14 RmvqHWtgQtZKigpbMbIBBcyuLV8Z1TvRIgiSxZUhzxEHIpsypSxC+118+T6gxSNpDNcZGpvGrer B7pyNZtlhjtgt51tRRxaIEG2nmvQBURJdOklC2wWvK/Q+K6j+0P2QXTU2AbyeXlX8gLKNpnvp+D KotUUq6JrCwXI4QtZjU4hrIozdffYuuJGxrimxNFxh+aq1XYWOEfO4MGu4ON0r5Ea5EqutjMYSy 93dkoX7O1mdgLqKnKfeXA+kFPmMmnkGn2 X-Received: by 2002:adf:f3c4:0:b0:465:ba53:a006 with SMTP id ffacd0b85a97d-47aacf86305mr5419711f8f.23.1783262131673; Sun, 05 Jul 2026 07:35:31 -0700 (PDT) X-Received: by 2002:adf:f3c4:0:b0:465:ba53:a006 with SMTP id ffacd0b85a97d-47aacf86305mr5419682f8f.23.1783262131104; Sun, 05 Jul 2026 07:35:31 -0700 (PDT) Date: Sun, 5 Jul 2026 10:35:28 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Laurent Vivier , qemu-stable@nongnu.org, Amit Shah , =?utf-8?Q?Marc-Andr=C3=A9?= Lureau , Paolo Bonzini Subject: [PULL 20/44] hw/char/virtio-serial-bus: fix guest-triggerable OOM in control_out() Message-ID: <36b37f8494800ed9c5d4b6ef03924bd1636cb810.1783261895.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262188326158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Laurent Vivier A malicious guest can craft virtqueue descriptors with arbitrary lengths. control_out() calls iov_size() on the guest-supplied scatter-gather list and passes the result directly to g_malloc(), allowing a guest to force QEMU to attempt multi-gigabyte allocations and crash the host process. Fix this by copying at most sizeof(struct virtio_console_control) into a stack-local variable instead of allocating a buffer sized by the guest. handle_control_message() only accesses the fixed-size id, event, and value fields, so no data beyond the struct was ever needed. Cc: qemu-stable@nongnu.org Resolves: https://gitlab.com/qemu-project/qemu/-/issues/3585 Signed-off-by: Laurent Vivier Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260622161144.2883799-1-lvivier@redhat.com> --- hw/char/virtio-serial-bus.c | 34 +++++++--------------------------- 1 file changed, 7 insertions(+), 27 deletions(-) diff --git a/hw/char/virtio-serial-bus.c b/hw/char/virtio-serial-bus.c index cd234dc6db..c1973f0248 100644 --- a/hw/char/virtio-serial-bus.c +++ b/hw/char/virtio-serial-bus.c @@ -344,22 +344,16 @@ void virtio_serial_throttle_port(VirtIOSerialPort *po= rt, bool throttle) } =20 /* Guest wants to notify us of some event */ -static void handle_control_message(VirtIOSerial *vser, void *buf, size_t l= en) +static void handle_control_message(VirtIOSerial *vser, + struct virtio_console_control *gcpkt) { VirtIODevice *vdev =3D VIRTIO_DEVICE(vser); struct VirtIOSerialPort *port; VirtIOSerialPortClass *vsc; - struct virtio_console_control cpkt, *gcpkt; + struct virtio_console_control cpkt; uint8_t *buffer; size_t buffer_len; =20 - gcpkt =3D buf; - - if (len < sizeof(cpkt)) { - /* The guest sent an invalid control packet */ - return; - } - cpkt.event =3D virtio_lduw_p(vdev, &gcpkt->event); cpkt.value =3D virtio_lduw_p(vdev, &gcpkt->value); =20 @@ -457,41 +451,27 @@ static void control_in(VirtIODevice *vdev, VirtQueue = *vq) =20 static void control_out(VirtIODevice *vdev, VirtQueue *vq) { + struct virtio_console_control cpkt; VirtQueueElement *elem; VirtIOSerial *vser; - uint8_t *buf; size_t len; =20 vser =3D VIRTIO_SERIAL(vdev); =20 - len =3D 0; - buf =3D NULL; for (;;) { - size_t cur_len; - elem =3D virtqueue_pop(vq, sizeof(VirtQueueElement)); if (!elem) { break; } =20 - cur_len =3D iov_size(elem->out_sg, elem->out_num); - /* - * Allocate a new buf only if we didn't have one previously or - * if the size of the buf differs - */ - if (cur_len > len) { - g_free(buf); - - buf =3D g_malloc(cur_len); - len =3D cur_len; + len =3D iov_to_buf(elem->out_sg, elem->out_num, 0, &cpkt, sizeof(c= pkt)); + if (len =3D=3D sizeof(cpkt)) { + handle_control_message(vser, &cpkt); } - iov_to_buf(elem->out_sg, elem->out_num, 0, buf, cur_len); =20 - handle_control_message(vser, buf, cur_len); virtqueue_push(vq, elem, 0); g_free(elem); } - g_free(buf); virtio_notify(vdev, vq); } =20 --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262581; cv=none; d=zohomail.com; s=zohoarc; b=jKvJUH3Ddoj8nwYL0QDAKqM9EptuJCxdtb0bwTEWXNmrXxFPg/e3bLA5NPH2hulH04SVTtX/WGUBqAiJxDqFxnInAnb9AbGztFxPzvqwD7W+MvFrlRmNJFZVJgiygqkhKnjqyaYpC1Oq3UQfTu6NawlqCV3/uoJ3uYp6o7RuvlM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262581; 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=M/pDiHFNHl4AEoQzRlTnpmRpNB3vDThrml6JhOkf8EM=; b=lVf/cjPAtzomVWIIBwlHKFY8k1B34e/4N1gZX6otl1VC8dqiGEhHrjWzIiY15mIZqjwcLHQGvloIVmtIMNFaq5sBzQy7FayyUdT3XZ4ei/umkdEabfIQtnSWeBROYWTY9Zucy8gjTavYxB+RLaRsJLqTiDkVF5USSa3Oj+xwzHo= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262581224291.02294930355913; Sun, 5 Jul 2026 07:43:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNwa-0005by-By; Sun, 05 Jul 2026 10:35:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwZ-0005bn-Kz for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:39 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwX-0001QP-Jd for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:39 -0400 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-196-o5XOPf4PM8Cbw4ivRKduFg-1; Sun, 05 Jul 2026 10:35:35 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-475eba52438so1414667f8f.3 for ; Sun, 05 Jul 2026 07:35:35 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47aa09608d4sm17272049f8f.25.2026.07.05.07.35.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:35:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262137; 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=M/pDiHFNHl4AEoQzRlTnpmRpNB3vDThrml6JhOkf8EM=; b=gmswQZ0BEk3XlnwzoHDrV3nXpiWK17FxtEmP+6x44QdLVzmIaqedhRLbeYkIQqZhjtfedv +rQvm/ZBOt9R9AyxQRm914Pdu4zjerMXAE9m9D6byJQRXGiGDMAYYn7MBbSVXZsGGq2EpD Q0T6sO3kaT2XOzzbYtdB8c/DFBNiKEI= X-MC-Unique: o5XOPf4PM8Cbw4ivRKduFg-1 X-Mimecast-MFC-AGG-ID: o5XOPf4PM8Cbw4ivRKduFg_1783262134 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262134; x=1783866934; darn=nongnu.org; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:from:to:cc:subject :date:message-id:reply-to:content-type; bh=M/pDiHFNHl4AEoQzRlTnpmRpNB3vDThrml6JhOkf8EM=; b=KuGIBCB0JICuaYjGkp88GuN/f3DvqlXMKLtCXRIobBysORh+niT/U23SaM6KQ0MzyY 7H8PJ3crTAUaa99SGmGo2lKNB6zw/omUOA6SG0QPOerqfOjCfMyc8D5hoCVZBB2MXXdJ A159P2AhN2mp2opKccuer0FFsIpCCRfSJRDlpvC/Snv3cygedX0JiQq2vih9+VU+1Lwl p04hNNnJc+t2BUTiQcAD0c/vECIjh52Sm2ltOPiZFFwJv7l+x/HKQQnJoD1b2bF9RYtY I5L5i8hVuWxcXX72V5yqzevFUV1AKcg5hdYVcrobHAKBPXJ/ilbkUJ5tvYqe5LS1Rwcf 6dyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262134; x=1783866934; h=in-reply-to:content-disposition:content-type: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 :content-type; bh=M/pDiHFNHl4AEoQzRlTnpmRpNB3vDThrml6JhOkf8EM=; b=Z8t7kOxYWAMw4BuQzrx3TDoYakE8Mj/jjPipvV1aYrL8icPtZWA7hpq6JDRrsiTbkb ZOEoOwTdzQdJNB9u2Ry0kCsx+70oV4Qer3ehgt56XePiuE1SKEx8ifBewjNyE9xwuL7o Rg0aWnH+DgqcbWGybhDN510VdIvGTENtYB1Wr8XlpT2d0MrQYGSEJRQ669p9bdJbIJV+ 4Bev9NOed707vEnNBVoYLyVQz4OWt64ZcsSSiXum0q8lLRDMNImSUilYRjkQ3faZgOyd l6ZkJVFyUmi/gQfDD2kVJBF8QI4N8s9Y9HpLoE8MksTAC0yUvextrSV5rt4FV3OTXKsG 9QXg== X-Gm-Message-State: AOJu0Yx/jG7F7fOOlOcyaUsSJsZL3jbf4oOwGFF2p1M8qA7rsCl/vVLM aPewkCvpWlCh/7zvvXHBJBk8zHSXeHndHxCKGQP/TCz6ePp+RDYbRbxaXTetsYEMgstafvoddf4 2+ADfAtrkwcaHlLLnRm3MrTaE/8i2FNoqLKwbFixbahasYhf3W5D5222JzmL88/gXhJbcizXV/c 4GNxolu4FY8FmRvvRZKzKqhOUkdYEJnGX9jg== X-Gm-Gg: AfdE7ckkUf0XIctCVwHu0qFfQCRB71iUqvvdfuvJ+cUQf5/Gnc3jKeb/OHqXIgcRLhZ LRYplzZCrvx4v7YZOK2mkIM9nwsst77MpKGo5qN13vNO3QujZQhVRGt2EWBEIYO47pyXVeB5EE7 YTSVf6auoTRvhDHK5sUIKXw96YLhcayyTrPh/lx3FJeuSQUvJT2LnBRAl6vsT9LjGkz+XQRGqv/ /Xye4LwAjFiCA12pFqnEpz5Dxpxv1bzRe4KDmlYJR4B7z88LAQzhuadx3CCcEyVM/pWqcHRxXqR 4H5VAykm6/AUIKaoP9/Sdt6Adt+rUWanSBzpUW55RRwm5tKzU9UQhaKt37raVPPvNarignjmUKl PRwnXQRm9abj6srv5Xq3LulY+s35BWmYp X-Received: by 2002:a5d:5e08:0:b0:475:f100:35f9 with SMTP id ffacd0b85a97d-47aae0d9d11mr7273845f8f.54.1783262134425; Sun, 05 Jul 2026 07:35:34 -0700 (PDT) X-Received: by 2002:a5d:5e08:0:b0:475:f100:35f9 with SMTP id ffacd0b85a97d-47aae0d9d11mr7273811f8f.54.1783262133890; Sun, 05 Jul 2026 07:35:33 -0700 (PDT) Date: Sun, 5 Jul 2026 10:35:31 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Junjie Cao , Jason Wang , Yi Liu , =?utf-8?Q?Cl=C3=A9ment?= Mathieu--Drif , Fabiano Rosas , Laurent Vivier , Paolo Bonzini , Tao Tang Subject: [PULL 21/44] tests/qtest/libqos: share Intel IOMMU test setup helpers Message-ID: <302fec996c31ac312278a6a756d66d053b80d2fa.1783261895.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262582310158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Junjie Cao iommu-intel-test.c keeps the iommu-testdev PCI setup (save_fn(), setup_qtest_pci_device()) and the VT-d command-line / capability helpers (qvtd_iommu_args(), qvtd_check_caps()) as file-local statics. A second Intel IOMMU test would have to copy them, which defeats the purpose of the shared qos-intel-iommu module. Move them into qos-intel-iommu so sibling tests can reuse them: save_fn() becomes qvtd_save_pci_dev() and setup_qtest_pci_device() becomes qvtd_setup_qtest_pci_device(); qvtd_iommu_args() and qvtd_check_caps() keep their names. No functional change: iommu-intel-test now calls the public qvtd_setup_qtest_pci_device() instead of its file-local copy. Signed-off-by: Junjie Cao Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260703072200.463082-2-junjie.cao@intel.com> --- tests/qtest/libqos/qos-intel-iommu.h | 23 ++++++++ tests/qtest/iommu-intel-test.c | 78 +--------------------------- tests/qtest/libqos/qos-intel-iommu.c | 77 +++++++++++++++++++++++++++ 3 files changed, 101 insertions(+), 77 deletions(-) diff --git a/tests/qtest/libqos/qos-intel-iommu.h b/tests/qtest/libqos/qos-= intel-iommu.h index c6cacc5c3f..dd6f920464 100644 --- a/tests/qtest/libqos/qos-intel-iommu.h +++ b/tests/qtest/libqos/qos-intel-iommu.h @@ -182,4 +182,27 @@ void qvtd_run_translation_case(QTestState *qts, QPCIDe= vice *dev, QPCIBar bar, uint64_t iommu_base, const QVTDTestConfig *cfg); =20 +/* + * qvtd_iommu_args - Build the -device intel-iommu command-line fragment + * for the requested translation mode. + */ +const char *qvtd_iommu_args(QVTDTransMode mode); + +/* + * qvtd_check_caps - Check whether the running QEMU exposes the ECAP bits + * required by @mode. Calls g_test_skip() and returns + * false when a required capability is missing. + */ +bool qvtd_check_caps(QTestState *qts, QVTDTransMode mode); + +/* + * qvtd_setup_qtest_pci_device - Create a QPCIBus, locate the iommu-testdev + * PCI function, enable it and map BAR0. + * + * On success, *pcibus and *bar are populated and the returned QPCIDevice + * must be released by the caller via g_free(). + */ +QPCIDevice *qvtd_setup_qtest_pci_device(QTestState *qts, QPCIBus **pcibus, + QPCIBar *bar); + #endif /* QTEST_LIBQOS_INTEL_IOMMU_H */ diff --git a/tests/qtest/iommu-intel-test.c b/tests/qtest/iommu-intel-test.c index 703bbfef73..c2744def6f 100644 --- a/tests/qtest/iommu-intel-test.c +++ b/tests/qtest/iommu-intel-test.c @@ -24,82 +24,6 @@ static uint64_t intel_iommu_expected_gpa(uint64_t iova) return (QVTD_PT_VAL & VTD_PAGE_MASK_4K) + (iova & 0xfff); } =20 -static void save_fn(QPCIDevice *dev, int devfn, void *data) -{ - QPCIDevice **pdev =3D (QPCIDevice **) data; - - *pdev =3D dev; -} - -static QPCIDevice *setup_qtest_pci_device(QTestState *qts, QPCIBus **pcibu= s, - QPCIBar *bar) -{ - QPCIDevice *dev =3D NULL; - - *pcibus =3D qpci_new_pc(qts, NULL); - g_assert(*pcibus !=3D NULL); - - qpci_device_foreach(*pcibus, IOMMU_TESTDEV_VENDOR_ID, - IOMMU_TESTDEV_DEVICE_ID, save_fn, &dev); - - g_assert(dev); - qpci_device_enable(dev); - *bar =3D qpci_iomap(dev, 0, NULL); - g_assert_false(bar->is_io); - - return dev; -} - -static const char *qvtd_iommu_args(QVTDTransMode mode) -{ - switch (mode) { - case QVTD_TM_SCALABLE_FLT: - return "-device intel-iommu,scalable-mode=3Don,fsts=3Don "; - case QVTD_TM_SCALABLE_PT: - case QVTD_TM_SCALABLE_SLT: - return "-device intel-iommu,scalable-mode=3Don "; - default: - return "-device intel-iommu "; - } -} - -static bool qvtd_check_caps(QTestState *qts, QVTDTransMode mode) -{ - uint64_t ecap =3D qtest_readq(qts, - Q35_HOST_BRIDGE_IOMMU_ADDR + DMAR_ECAP_REG= ); - - /* All scalable modes require SMTS */ - if (qvtd_is_scalable(mode) && !(ecap & VTD_ECAP_SMTS)) { - g_test_skip("ECAP.SMTS not supported"); - return false; - } - - switch (mode) { - case QVTD_TM_SCALABLE_PT: - if (!(ecap & VTD_ECAP_PT)) { - g_test_skip("ECAP.PT not supported"); - return false; - } - break; - case QVTD_TM_SCALABLE_SLT: - if (!(ecap & VTD_ECAP_SSTS)) { - g_test_skip("ECAP.SSTS not supported"); - return false; - } - break; - case QVTD_TM_SCALABLE_FLT: - if (!(ecap & VTD_ECAP_FSTS)) { - g_test_skip("ECAP.FSTS not supported"); - return false; - } - break; - default: - break; - } - - return true; -} - static void run_intel_iommu_translation(const QVTDTestConfig *cfg) { QTestState *qts; @@ -124,7 +48,7 @@ static void run_intel_iommu_translation(const QVTDTestCo= nfig *cfg) } =20 /* Setup and configure IOMMU-testdev PCI device */ - dev =3D setup_qtest_pci_device(qts, &pcibus, &bar); + dev =3D qvtd_setup_qtest_pci_device(qts, &pcibus, &bar); g_assert(dev); =20 g_test_message("### Intel IOMMU translation mode=3D%d ###", cfg->trans= _mode); diff --git a/tests/qtest/libqos/qos-intel-iommu.c b/tests/qtest/libqos/qos-= intel-iommu.c index f8ca4c871b..4095ac0917 100644 --- a/tests/qtest/libqos/qos-intel-iommu.c +++ b/tests/qtest/libqos/qos-intel-iommu.c @@ -11,6 +11,7 @@ #include "qemu/osdep.h" #include "hw/i386/intel_iommu_internal.h" #include "tests/qtest/libqos/pci.h" +#include "tests/qtest/libqos/pci-pc.h" #include "qos-iommu-testdev.h" #include "qos-intel-iommu.h" =20 @@ -452,3 +453,79 @@ void qvtd_run_translation_case(QTestState *qts, QPCIDe= vice *dev, } } } + +const char *qvtd_iommu_args(QVTDTransMode mode) +{ + switch (mode) { + case QVTD_TM_SCALABLE_FLT: + return "-device intel-iommu,scalable-mode=3Don,fsts=3Don "; + case QVTD_TM_SCALABLE_PT: + case QVTD_TM_SCALABLE_SLT: + return "-device intel-iommu,scalable-mode=3Don "; + default: + return "-device intel-iommu "; + } +} + +bool qvtd_check_caps(QTestState *qts, QVTDTransMode mode) +{ + uint64_t ecap =3D qtest_readq(qts, + Q35_HOST_BRIDGE_IOMMU_ADDR + DMAR_ECAP_REG= ); + + /* All scalable modes require SMTS */ + if (qvtd_is_scalable(mode) && !(ecap & VTD_ECAP_SMTS)) { + g_test_skip("ECAP.SMTS not supported"); + return false; + } + + switch (mode) { + case QVTD_TM_SCALABLE_PT: + if (!(ecap & VTD_ECAP_PT)) { + g_test_skip("ECAP.PT not supported"); + return false; + } + break; + case QVTD_TM_SCALABLE_SLT: + if (!(ecap & VTD_ECAP_SSTS)) { + g_test_skip("ECAP.SSTS not supported"); + return false; + } + break; + case QVTD_TM_SCALABLE_FLT: + if (!(ecap & VTD_ECAP_FSTS)) { + g_test_skip("ECAP.FSTS not supported"); + return false; + } + break; + default: + break; + } + + return true; +} + +static void qvtd_save_pci_dev(QPCIDevice *dev, int devfn, void *data) +{ + QPCIDevice **pdev =3D (QPCIDevice **)data; + + *pdev =3D dev; +} + +QPCIDevice *qvtd_setup_qtest_pci_device(QTestState *qts, QPCIBus **pcibus, + QPCIBar *bar) +{ + QPCIDevice *dev =3D NULL; + + *pcibus =3D qpci_new_pc(qts, NULL); + g_assert(*pcibus !=3D NULL); + + qpci_device_foreach(*pcibus, IOMMU_TESTDEV_VENDOR_ID, + IOMMU_TESTDEV_DEVICE_ID, qvtd_save_pci_dev, &dev); + + g_assert(dev); + qpci_device_enable(dev); + *bar =3D qpci_iomap(dev, 0, NULL); + g_assert_false(bar->is_io); + + return dev; +} --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262237; cv=none; d=zohomail.com; s=zohoarc; b=R9ONTyIKx7/CTUpSpw4QdjcXGXWDwxTmnYc1dREXUjlXkbwqDeD2Jz32ANdT6Btau7bAbsicprtMKTGHfIUVWYA9nVZGXtm03h0bJrz2QRLFDfvBleLe35v0iORyJKwUSspiWaC6z9HGBPL659kSihAsQvyOi3neTsRyRIIk4tg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262237; 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=7gzvm/baNSTAbavpHAQf6bg/1oIizBvPeR+NV/37wdU=; b=JSX/KBI0fbpkilui/RKShDLHY/dXKGaGzkm8mgqcPB22pw/XkFUOJID2o3glZ1BfMnSyDV0I0Z0RFtYKQDFdResmmynDpHz9Rja5A17xgITPkgIaqA5m/QS+X2fQZ2patXCExAddRl7Nz1fTdi/88GZ4attDwFEhV8g5QqrxJTk= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262237718521.6576301422796; Sun, 5 Jul 2026 07:37:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNwd-0005co-M5; Sun, 05 Jul 2026 10:35:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwc-0005cR-96 for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:42 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwZ-0001Qf-Vn for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:41 -0400 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-204-x26Vn7OsMo2DH1devNIDew-1; Sun, 05 Jul 2026 10:35:38 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-493c588b6f2so15001135e9.0 for ; Sun, 05 Jul 2026 07:35:37 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c637568dsm313847125e9.4.2026.07.05.07.35.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:35:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262139; 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=7gzvm/baNSTAbavpHAQf6bg/1oIizBvPeR+NV/37wdU=; b=fWNYUZyJY9mvQAhqEDRBVqtFModBpZ7+XREZulxNl/f7AR3vN+XtQoxcuugn+9UwZomtwN NT0EDisStOVtT2XVLvDttq0jZ/sqeY6ZjReSdJJGH7thYCQ5gz/PQDcLf3bOQiMW5xoRmR t02xGPkbnImPzaCqvvGCCeA5CFpL+Ig= X-MC-Unique: x26Vn7OsMo2DH1devNIDew-1 X-Mimecast-MFC-AGG-ID: x26Vn7OsMo2DH1devNIDew_1783262137 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262137; x=1783866937; 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=7gzvm/baNSTAbavpHAQf6bg/1oIizBvPeR+NV/37wdU=; b=FlxwdEv4EHj1hTPGcVR0WzC6+jRf3Rn8BUZ8UuTYfU9WVnomgiImRWbV+SWBwtiw4x k6C+tTt/EpGJq+BkqXLR62ypE9nK4qrLlMBMEVA6HFXyZP/F6TX0gxPL5MfIQYVq4fiF S99Rcj5fvGz1Ewe9c1cQYhzvSHGb5UkQQc+yuE88kLDkvlKK02s7zbtekZWWLEhqU+c+ 2IDh2f7n8H0C15ho0d4saZaRd3bFEGqjXOTexaPVBiBESjqYXXyeuKYDmpzcaWXnqb+/ aCud8eXcSCRXqUXXcbRMIPXOT1O1vG96p0ZsyjyGnf91caManJRPK7oDL4JuJa9rXdNW +iCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262137; x=1783866937; 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=7gzvm/baNSTAbavpHAQf6bg/1oIizBvPeR+NV/37wdU=; b=HBfJteY44EHAZUJCxt+gOhP6D+uW+d3CXpEVF/X6bBWm2MmHJqF0+tCNcy6MH9KUKo gBpon5X6+jJEh82TihykdUGjqM6XnOJeyoIZzgNCzP2cLMtsllUkH2OPybfVvMXl2e0B i4+V2pdsJX8JN5gE2z+hqEt0+r9as0gJJboHgigCgKfZ3OIMEyZ+tmxS/CqZTYwhGang /aRV4znx+dy4V/dPrB72tQbMvaD/P0JGtjoPVUwj/iTengQFy52gJH0XUBRKpDY4mShv v54jUOVwCG/TtkYgAruz66gJNyay99G+EjQUVoFgeKmmkBPzh8qR1guZBzX9bhOO+GLV 7Sgw== X-Gm-Message-State: AOJu0YxpJr631MYX43S23MFq9gNPWitn3wPNxyucuaduMUiriZyWeMz9 qy5JRnmzM6LvTuAYirBOlUsj1692KUZS9E/6uK7oEBkjXW+rGevc58dsk+bpAJzDTnSZ6kWG2CN klhLJibBXIohOwULHJ0/PRDctawoR6206urJb0yAVxlIAF6+hvySJZ5QFnBw4Ces/2RfQvwrKtH UeFh5Ed7+raxUeNHWGABH1W/xDmEo8X5DYpA== X-Gm-Gg: AfdE7cldFbU4dYFZNb7m+zTJEGJh+CUj8dg0y5NThUdouxU0K+jCDHe0HkKgXjcrr8Z F9gL/Ccy7sf/nelIO6V7g6Wor+w+K5vxJg3OXi9jkxRHDh+fgQAIt3dEHDriPlq6xeSZy+/1Z5s /NbTzovtmp3fzjNs3JvazLcBI1EBdc630msXHdUfTZAaWcupPOiVoK3Q6Cvh9qErTkW693fnaM6 pHoUzbM02VmjrC9LZWvJDKLutpbf6AqVpfZSk3z07ZbUUxHKBWSBqeYD6oJIWHqq0Q2AIhlhyxN +Q8pXVPh3cjRg7pfqB3B7zJvIcCAu24EgwSv6ifBdm1Y7sn0eiDsgZx2Gtr1jTOINM+0Bndg8qp 27DYCTwmjLZKInN7v+5o49+3NcwMnf7yu X-Received: by 2002:a05:600c:3506:b0:493:be08:c372 with SMTP id 5b1f17b1804b1-493d11dd320mr76655735e9.17.1783262136726; Sun, 05 Jul 2026 07:35:36 -0700 (PDT) X-Received: by 2002:a05:600c:3506:b0:493:be08:c372 with SMTP id 5b1f17b1804b1-493d11dd320mr76655325e9.17.1783262136167; Sun, 05 Jul 2026 07:35:36 -0700 (PDT) Date: Sun, 5 Jul 2026 10:35:34 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Junjie Cao , Tao Tang , Fabiano Rosas , Laurent Vivier , Paolo Bonzini Subject: [PULL 22/44] tests/qtest/libqos: add Intel IOMMU invalidation helpers Message-ID: <3c774326fe1ee8182666b00748609a7751b9d0b6.1783261895.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.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262238730158500 From: Junjie Cao Add the building blocks a queued-invalidation test needs on top of the existing translation helpers: - qvtd_leaf_pte_addr() / qvtd_make_leaf_pte() let a test locate and rewrite the leaf PTE built by qvtd_setup_translation_tables() without re-deriving the page-table index or leaf attributes by hand. The attributes reuse qvtd_get_fl_pte_attrs()/qvtd_get_pte_attrs() so the first- and second-level leaf formats stay defined in one place. - qvtd_submit_iotlb_global_inv() / _domain_inv() / _page_inv() write an IOTLB Invalidation Descriptor (global / domain-selective / page-selective) into the Invalidation Queue and advance IQT_REG. - qvtd_submit_inv_wait_and_poll() submits an Invalidation Wait Descriptor with Status Write and polls the status word with a bounded retry loop, asserting on timeout. No caller yet; used by the IOTLB invalidation test that follows. Signed-off-by: Junjie Cao Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260703072200.463082-3-junjie.cao@intel.com> --- tests/qtest/libqos/qos-intel-iommu.h | 51 +++++++++++++ tests/qtest/libqos/qos-intel-iommu.c | 108 +++++++++++++++++++++++++++ 2 files changed, 159 insertions(+) diff --git a/tests/qtest/libqos/qos-intel-iommu.h b/tests/qtest/libqos/qos-= intel-iommu.h index dd6f920464..3a97d14786 100644 --- a/tests/qtest/libqos/qos-intel-iommu.h +++ b/tests/qtest/libqos/qos-intel-iommu.h @@ -40,6 +40,16 @@ */ #define QVTD_IQ_BASE (QVTD_MEM_BASE + 0x00020000) #define QVTD_IQ_QS 0 /* QS=3D0 =E2=86=92 256 entries */ +#define QVTD_IQ_DESC_SIZE 16 /* 128-bit descriptor (iq_dw=3D0) */ +#define QVTD_IQT_SHIFT 4 /* IQT_REG[18:4] is the tail index = */ + +/* + * Invalidation Wait Descriptor with Status Write (VT-d 6.5.2.8). + * The IOMMU writes QVTD_INV_WAIT_DATA to QVTD_INV_WAIT_ADDR after all + * preceding invalidation descriptors complete. + */ +#define QVTD_INV_WAIT_ADDR (QVTD_MEM_BASE + 0x00040000) +#define QVTD_INV_WAIT_DATA 0x1u =20 /* * Fault Event MSI configuration. @@ -205,4 +215,45 @@ bool qvtd_check_caps(QTestState *qts, QVTDTransMode mo= de); QPCIDevice *qvtd_setup_qtest_pci_device(QTestState *qts, QPCIBus **pcibus, QPCIBar *bar); =20 +/* + * qvtd_leaf_pte_addr - Address of the leaf (L1) PTE for @iova, assuming + * the hierarchy was built by + * qvtd_setup_translation_tables() with 4 KB leaves. + */ +uint64_t qvtd_leaf_pte_addr(uint64_t iova); + +/* + * qvtd_make_leaf_pte - Build a leaf PTE value mapping @pa, for the + * 4-level / 4 KB-leaf layout used by + * qvtd_setup_translation_tables(). + * Selects FLT or SLT/legacy attributes from @mode. + */ +uint64_t qvtd_make_leaf_pte(uint64_t pa, QVTDTransMode mode); + +/* + * qvtd_submit_inv_wait_and_poll - Submit an Invalidation Wait Descriptor + * with Status Write and poll until the + * IOMMU writes the expected status data. + * + * Asserts on timeout. Returns the new tail index. + */ +uint32_t qvtd_submit_inv_wait_and_poll(QTestState *qts, uint64_t iommu_bas= e, + uint32_t tail); + +/* + * qvtd_submit_iotlb_global_inv - global IOTLB invalidation. + * qvtd_submit_iotlb_domain_inv - domain-selective IOTLB invalidation. + * qvtd_submit_iotlb_page_inv - page-selective IOTLB invalidation; + * @addr must be 4 KB aligned. @am + * selects the address mask per VT-d + * 6.5.2.4 (am=3D0 =E2=86=92 single 4 KB p= age). + */ +uint32_t qvtd_submit_iotlb_global_inv(QTestState *qts, uint64_t iommu_base, + uint32_t tail); +uint32_t qvtd_submit_iotlb_domain_inv(QTestState *qts, uint64_t iommu_base, + uint16_t domain_id, uint32_t tail); +uint32_t qvtd_submit_iotlb_page_inv(QTestState *qts, uint64_t iommu_base, + uint16_t domain_id, uint64_t addr, + uint8_t am, uint32_t tail); + #endif /* QTEST_LIBQOS_INTEL_IOMMU_H */ diff --git a/tests/qtest/libqos/qos-intel-iommu.c b/tests/qtest/libqos/qos-= intel-iommu.c index 4095ac0917..c793ec899c 100644 --- a/tests/qtest/libqos/qos-intel-iommu.c +++ b/tests/qtest/libqos/qos-intel-iommu.c @@ -15,6 +15,10 @@ #include "qos-iommu-testdev.h" #include "qos-intel-iommu.h" =20 +/* Bounded poll for the invalidation-wait Status Write. */ +#define QVTD_INV_WAIT_POLL_MAX_ITERS 1000 +#define QVTD_INV_WAIT_POLL_INTERVAL_US 1000 + #define QVTD_AW_48BIT_ENCODING 2 =20 uint32_t qvtd_expected_dma_result(QVTDTestContext *ctx) @@ -232,6 +236,30 @@ static uint64_t qvtd_get_fl_pte_attrs(bool is_leaf) return attrs; } =20 +uint64_t qvtd_leaf_pte_addr(uint64_t iova) +{ + return qvtd_get_table_addr(QVTD_PT_L1_BASE, 1, iova); +} + +uint64_t qvtd_make_leaf_pte(uint64_t pa, QVTDTransMode mode) +{ + uint64_t attrs; + + /* + * Reuse the same leaf attributes qvtd_setup_translation_tables() writ= es, + * so a rewritten PTE stays consistent with the initial mapping. US= =3D1 in + * the first-level format is required because the PASID entry runs with + * SRE=3D0, which makes every DMA appear as a user-mode access + * (VT-d 3.6.2 / 9.9). + */ + if (mode =3D=3D QVTD_TM_SCALABLE_FLT) { + attrs =3D qvtd_get_fl_pte_attrs(true); + } else { + attrs =3D qvtd_get_pte_attrs(); + } + return (pa & VTD_PAGE_MASK_4K) | attrs; +} + void qvtd_setup_translation_tables(QTestState *qts, uint64_t iova, QVTDTransMode mode) { @@ -529,3 +557,83 @@ QPCIDevice *qvtd_setup_qtest_pci_device(QTestState *qt= s, QPCIBus **pcibus, =20 return dev; } + +/* + * Write a 128-bit invalidation descriptor at the current tail and advance + * IQT_REG. Internal helper for the IOTLB / wait variants below. + */ +static uint32_t qvtd_submit_inv_desc(QTestState *qts, uint64_t iommu_base, + uint64_t desc_lo, uint64_t desc_hi, + uint32_t tail) +{ + uint64_t desc_addr =3D QVTD_IQ_BASE + (uint64_t)tail * QVTD_IQ_DESC_SI= ZE; + + qtest_writeq(qts, desc_addr, desc_lo); + qtest_writeq(qts, desc_addr + 8, desc_hi); + tail++; + + qtest_writeq(qts, iommu_base + DMAR_IQT_REG, + (uint64_t)tail << QVTD_IQT_SHIFT); + return tail; +} + +uint32_t qvtd_submit_inv_wait_and_poll(QTestState *qts, uint64_t iommu_bas= e, + uint32_t tail) +{ + uint64_t lo, hi; + uint32_t status =3D 0; + int i; + + qtest_writel(qts, QVTD_INV_WAIT_ADDR, 0); + + lo =3D VTD_INV_DESC_WAIT | VTD_INV_DESC_WAIT_SW | + ((uint64_t)QVTD_INV_WAIT_DATA << VTD_INV_DESC_WAIT_DATA_SHIFT); + hi =3D QVTD_INV_WAIT_ADDR; + + tail =3D qvtd_submit_inv_desc(qts, iommu_base, lo, hi, tail); + + for (i =3D 0; i < QVTD_INV_WAIT_POLL_MAX_ITERS; i++) { + status =3D qtest_readl(qts, QVTD_INV_WAIT_ADDR); + if (status =3D=3D QVTD_INV_WAIT_DATA) { + return tail; + } + g_usleep(QVTD_INV_WAIT_POLL_INTERVAL_US); + } + + g_assert_cmphex(status, =3D=3D, QVTD_INV_WAIT_DATA); + return tail; +} + +uint32_t qvtd_submit_iotlb_global_inv(QTestState *qts, uint64_t iommu_base, + uint32_t tail) +{ + uint64_t lo =3D VTD_INV_DESC_IOTLB | VTD_INV_DESC_IOTLB_GLOBAL; + + return qvtd_submit_inv_desc(qts, iommu_base, lo, 0, tail); +} + +uint32_t qvtd_submit_iotlb_domain_inv(QTestState *qts, uint64_t iommu_base, + uint16_t domain_id, uint32_t tail) +{ + uint64_t lo =3D VTD_INV_DESC_IOTLB | VTD_INV_DESC_IOTLB_DOMAIN | + ((uint64_t)domain_id << 16); + + return qvtd_submit_inv_desc(qts, iommu_base, lo, 0, tail); +} + +uint32_t qvtd_submit_iotlb_page_inv(QTestState *qts, uint64_t iommu_base, + uint16_t domain_id, uint64_t addr, + uint8_t am, uint32_t tail) +{ + uint64_t lo =3D VTD_INV_DESC_IOTLB | VTD_INV_DESC_IOTLB_PAGE | + ((uint64_t)domain_id << 16); + /* + * AM selects the invalidation range per VT-d 6.5.2.4: + * am=3D0 =E2=86=92 4 KB, am=3D9 =E2=86=92 2 MB, am=3D18 =E2=86= =92 1 GB. + * IH (hi[6]) is left clear, requesting full invalidation + * including non-leaf paging-structure caches. + */ + uint64_t hi =3D (addr & ~0xfffULL) | (am & 0x3fULL); + + return qvtd_submit_inv_desc(qts, iommu_base, lo, hi, tail); +} --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262179; cv=none; d=zohomail.com; s=zohoarc; b=C2GnpnZVk3pcGBI2iINRaSrFB6G67d8KKHsERV4V6nD/bmMDyZB3FQ1W639hgo9x3bl9jQEbJPv5T6dRan+8prUoZUN6jXNBrjY/NRrm2eI+TfpOjD/U0EfZ1DTe7AXWGtuYIqplkRI/V+sZfU32uFbyfQcZVQG7weDF9c4T0ww= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262179; 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=cb8hvZGlfsx1UPYS1D+IEIOgWAqyKvl7ucGxLQHLN/U=; b=UwZN4syMsN946EobXjE9wLku/zCwr6xopr1lrz3SAhQD+slY6xEIjCBLIpAk9lX8z1ggiiGjtjLhHjkby51i1HHmT2GFvRU6uL1jBkp0/AIzXJyHw0V1xKEJDEILuLgHvq0SDpTRa3YgPkEkhIFmQgA+pbyprksVVGtqd3K+u8U= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262179294290.4304792537595; Sun, 5 Jul 2026 07:36:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNwg-0005gI-Vh; Sun, 05 Jul 2026 10:35:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwf-0005fZ-6Q for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:45 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwc-0001Qo-GW for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:44 -0400 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-526-6Qwd_404PXGuzqM8yAfKtg-1; Sun, 05 Jul 2026 10:35:40 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-49244130073so14047255e9.1 for ; Sun, 05 Jul 2026 07:35:40 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63ba971sm481411445e9.13.2026.07.05.07.35.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:35:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262141; 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=cb8hvZGlfsx1UPYS1D+IEIOgWAqyKvl7ucGxLQHLN/U=; b=iwBu/xbIfyjUDgT7ht56qXHA/+l0Es6ltZi06Qnn17V7/qnT8w0wRsZKVQ8cDNy7eAxiXi SilwEDwCJWJoNc8uSDy5S76ho+BxMrqvo2BOFYsJKf2/pP7tRSTjG5QXiKkHnZstEnI92Y u5TYmA0tJN4cZRKOT/rJn4XixMXhLzQ= X-MC-Unique: 6Qwd_404PXGuzqM8yAfKtg-1 X-Mimecast-MFC-AGG-ID: 6Qwd_404PXGuzqM8yAfKtg_1783262139 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262139; x=1783866939; 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=cb8hvZGlfsx1UPYS1D+IEIOgWAqyKvl7ucGxLQHLN/U=; b=XYtBujgBJT5br59m3PaamFVOPAI54nJ/Nzn2BnMa6JcnBkCWLIzWCFMv3jrDg+WOK/ se3UidF2Jwt5k7RV0V3kWvKRxZZsyBAOX6HpChMMjMBf5Zh92ffsYvoD+uWUWx8IMaF3 u/sdn7olsTniGilKX6XQP7S9D80pFvPiNS241Isy/NzKsN8kzIDyvypbMGgCqgbSuRO8 whrVONAWzHfioSqmfp95OoSeI3+xV782u6wXFU2TXMEyFq3tkpHzo5CFXwUC+V8TuWwx 57QaI39RJ6UtIMN9A06s6vd+CyLbSS14NnphhvxDfHwY9vGzvL0Dr+GzQdlLgw8zf+fk R+/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262139; x=1783866939; 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=cb8hvZGlfsx1UPYS1D+IEIOgWAqyKvl7ucGxLQHLN/U=; b=hOD1o8FrawwaeQFrT+eFP8+risAXu0b8MaIZh8XJuft1RvaChkGD4knABayeU2yKGR FHch4lZpYTeS4AaxXbGWxSelcTp+mu2jS9pMMT3Vnd4VQueFRWqMpL/80RLA4UZZxFXP 66Xoy/rk3uX8tT8mibf0HkC7b73Yh8s0uzcGcXuiw7m38TDFY2TV8oyVfRMuhpQyaim7 Le7W1P2bolezjkubCo2fTNvMUeHNl3kDNjxwy6bmdLYzSET0EzP+GtznDpYWurAwETKJ yl4NiA+mDMrvf02+q3zfuLktwysXZSA/4HV/vAM6TYQhcyliOx/zjMHWvVv0DUjgxS9s kqQw== X-Gm-Message-State: AOJu0YzaOEyKdn5C4XlGFM2L624mxMi7LPQS3RulR3fc2dRqC9rKVLUs JZGsfX4GfIL151tLVnsd2L9lehgd8T+smmWRS8JVTuyuGZ5rHX2mQ/NqtcwfFk/au5T9ZZYFyGt UpEqMWYlmeCD4ZpFeXJxuVnMLCqbJhCsZ3tUqj2ihJgGs5bw8tQOv95jk1+o0+aWKo8xKiI4pO9 6yDOhmOzq6Rg5CS+NbK4ImP7XuCialfk9RhQ== X-Gm-Gg: AfdE7clbk4lx9yfEUNk4mYIHdo95v+EcZ5YO8N/9Cj0Q4L+iw38gBjSbGsJzeIyqcr2 3y+S/oUvosaZTZVe5MWUtF7bIl1f5cctgur+Zu5j9u5LPkXOJ4KPfr2KrMPuXlX23hW3fayvbaE zlIjEH6qSU82SwI3p7VF+HRaAYGvJP+YTmKd4p5YUJfn+frVXVVO4b8DKh4Nth3THVbqST+Ien6 iZX6Sz8f0HuRgVTr0PyqUclLaadLooo7jFzOEP4PodLBhOgoN7jOwBP2mmJT+HF+pVAySiVY4yJ ZKM3tZWlOOCjCVf7qshLcSz6zM6GFFGYbSAIZ6so93Lz0H/TVEZ7allIu7LRxQnNBOA2VZoz1rW WKbIp6PlG0nYh8oQ1RzIIgNrLZ1f50mcE X-Received: by 2002:a05:600c:a010:b0:493:c8f7:3631 with SMTP id 5b1f17b1804b1-493d5e61de8mr37295935e9.22.1783262139217; Sun, 05 Jul 2026 07:35:39 -0700 (PDT) X-Received: by 2002:a05:600c:a010:b0:493:c8f7:3631 with SMTP id 5b1f17b1804b1-493d5e61de8mr37295535e9.22.1783262138509; Sun, 05 Jul 2026 07:35:38 -0700 (PDT) Date: Sun, 5 Jul 2026 10:35:36 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Junjie Cao , Jason Wang , Yi Liu , =?utf-8?Q?Cl=C3=A9ment?= Mathieu--Drif , Fabiano Rosas , Laurent Vivier , Paolo Bonzini Subject: [PULL 23/44] tests/qtest: add IOTLB invalidation test for Intel IOMMU Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262180233158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Junjie Cao Nothing in tree exercises IOTLB invalidation for any emulated vIOMMU: the existing iommu-testdev tests only check one-shot translation, so a regression that failed to flush a stale IOTLB entry would go unnoticed. Add a test that drives the queued-invalidation path end to end (vtd_process_inv_desc -> vtd_process_iotlb_desc -> vtd_iotlb_{global,domain,page}_invalidate). For each {legacy, scalable-slt, scalable-flt} x {global, domain, page} combination it: 1. maps IOVA -> PA_A and DMAs, populating the IOTLB; 2. rewrites the leaf PTE to PA_B *without* invalidating and DMAs again, asserting the stale entry is still served (MISMATCH); 3. submits the IOTLB invalidation plus a wait descriptor, then DMAs and asserts the fresh page walk now reaches PA_B. Step 2 makes the flush observable: it fails loudly if the IOTLB is not actually caching the first translation. For scalable first-level (flt), QEMU keeps first- and second-level mappings in a single IOTLB that the legacy VTD_INV_DESC_IOTLB descriptor flushes for every level, so the test uses that descriptor across all modes. PASID-selective invalidation (VTD_INV_DESC_PIOTLB, vtd_piotlb_*) is a separate path and is left for a follow-up. It also adds three page-selective cases that cache a second page and check its fate after invalidating the first: for second-level (legacy, scalable-s= lt) the second page survives, while for first-level (scalable-flt) QEMU flushes= all first-stage entries of the domain, so it does not. This distinguishes a page-selective flush from a domain-wide or global one. Signed-off-by: Junjie Cao Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260703072200.463082-4-junjie.cao@intel.com> --- MAINTAINERS | 1 + tests/qtest/iommu-intel-inv-test.c | 346 +++++++++++++++++++++++++++++ tests/qtest/meson.build | 2 +- 3 files changed, 348 insertions(+), 1 deletion(-) create mode 100644 tests/qtest/iommu-intel-inv-test.c diff --git a/MAINTAINERS b/MAINTAINERS index 5ee7c1f601..cbdfce4866 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4106,6 +4106,7 @@ F: include/hw/i386/intel_iommu.h F: tests/functional/x86_64/test_intel_iommu.py F: tests/qtest/intel-iommu-test.c F: tests/qtest/iommu-intel-test.c +F: tests/qtest/iommu-intel-inv-test.c =20 AMD-Vi Emulation M: Alejandro Jimenez diff --git a/tests/qtest/iommu-intel-inv-test.c b/tests/qtest/iommu-intel-i= nv-test.c new file mode 100644 index 0000000000..1467eef647 --- /dev/null +++ b/tests/qtest/iommu-intel-inv-test.c @@ -0,0 +1,346 @@ +/* + * QTest for Intel IOMMU (VT-d) IOTLB invalidation via Invalidation Queue + * + * Validates that IOTLB invalidation descriptors submitted through the + * queued invalidation interface correctly flush cached translations, + * forcing the IOMMU to re-walk page tables on subsequent DMA. + * + * Copyright (c) 2026 Intel Corporation. + * + * Author: Junjie Cao + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "libqtest.h" +#include "libqos/pci.h" +#include "libqos/pci-pc.h" +#include "hw/i386/intel_iommu_internal.h" +#include "hw/misc/iommu-testdev.h" +#include "libqos/qos-intel-iommu.h" +#include "libqos/qos-iommu-testdev.h" + +#define DMA_LEN 4 + +/* + * Second DMA target page, chosen to fall well outside any address used by + * qos-intel-iommu's fixed structure layout. + */ +#define QVTD_PT_VAL_B (QVTD_MEM_BASE + 0x00200000) + +/* + * A second IOVA/target page for the page-selectivity test. QVTD_IOVA_2 is + * QVTD_IOVA + 4K: it shares the L4/L3/L2 walk built by + * qvtd_build_translation() and differs only in the leaf (L1) slot, so map= ping + * it costs one extra leaf PTE. QVTD_PT_VAL_2 is its distinct target page. + */ +#define QVTD_IOVA_2 (QVTD_IOVA + 0x1000) +#define QVTD_PT_VAL_2 (QVTD_MEM_BASE + 0x00300000) + +typedef enum { + IOTLB_INV_GLOBAL, + IOTLB_INV_DOMAIN, + IOTLB_INV_PAGE, +} IOTLBInvGranularity; + +/* + * Core invalidation test, parameterized by translation mode and + * invalidation granularity. + * + * The iommu-testdev device performs DMA writes via the IOMMU (using the + * IOVA) and verifies by reading back from the expected GPA directly. If + * the IOTLB is stale, the DMA write lands at the old PA while readback + * uses the GPA we supply, causing a mismatch (ITD_DMA_ERR_MISMATCH). + * + * Test sequence: + * 1. Setup translation: IOVA -> PA_A + * 2. DMA(gpa=3DPA_A) -> success (IOTLB populates cache) + * 3. Modify PTE: IOVA -> PA_B (no invalidation) + * 4. DMA(gpa=3DPA_B) -> MISMATCH (stale IOTLB directs write to PA_A) + * 5. Issue IOTLB invalidation + wait + * 6. DMA(gpa=3DPA_B) -> success (cache flushed, fresh page walk) + * + * Phase 4 depends on QEMU's IOTLB caching the Phase 1 translation; if a + * future change makes IOTLB caching lazy this assertion would no longer + * exercise the stale-cache path. + */ +static void run_iotlb_inv_test(QVTDTransMode mode, IOTLBInvGranularity gra= n) +{ + QTestState *qts; + QPCIBus *pcibus; + QPCIDevice *dev; + QPCIBar bar; + uint32_t tail =3D 0; + uint32_t result; + uint64_t pa_a, pa_b; + + if (!qtest_has_machine("q35")) { + g_test_skip("q35 machine not available"); + return; + } + + qts =3D qtest_initf("-machine q35 -smp 1 -m 512 -net none " + "%s -device iommu-testdev", + qvtd_iommu_args(mode)); + + if (!qvtd_check_caps(qts, mode)) { + qtest_quit(qts); + return; + } + + dev =3D qvtd_setup_qtest_pci_device(qts, &pcibus, &bar); + + /* + * The IOMMU translates an IOVA to a page base, then the page offset + * from the IOVA is added. So GPA =3D page_base + (IOVA & 0xfff). + */ + pa_a =3D (QVTD_PT_VAL & VTD_PAGE_MASK_4K) + (QVTD_IOVA & 0xfff); + pa_b =3D (QVTD_PT_VAL_B & VTD_PAGE_MASK_4K) + (QVTD_IOVA & 0xfff); + + /* --- Phase 1: Setup and initial DMA (populates IOTLB) --- */ + qvtd_build_translation(qts, mode, dev->devfn); + qvtd_program_regs(qts, Q35_HOST_BRIDGE_IOMMU_ADDR, mode); + + qtest_memset(qts, pa_a, 0, DMA_LEN); + qtest_memset(qts, pa_b, 0, DMA_LEN); + + result =3D qos_iommu_testdev_trigger_dma(dev, bar, QVTD_IOVA, pa_a, + DMA_LEN, 0); + g_assert_cmpuint(result, =3D=3D, 0); + + /* --- Phase 2: Modify PTE without invalidation -> stale IOTLB --- */ + qtest_writeq(qts, qvtd_leaf_pte_addr(QVTD_IOVA), + qvtd_make_leaf_pte(QVTD_PT_VAL_B & VTD_PAGE_MASK_4K, mode= )); + qtest_memset(qts, pa_a, 0, DMA_LEN); + qtest_memset(qts, pa_b, 0, DMA_LEN); + + result =3D qos_iommu_testdev_trigger_dma(dev, bar, QVTD_IOVA, pa_b, + DMA_LEN, 0); + g_assert_cmpuint(result, =3D=3D, ITD_DMA_ERR_MISMATCH); + + /* --- Phase 3: Invalidate IOTLB -> fresh page walk succeeds --- */ + switch (gran) { + case IOTLB_INV_GLOBAL: + tail =3D qvtd_submit_iotlb_global_inv(qts, Q35_HOST_BRIDGE_IOMMU_A= DDR, + tail); + break; + case IOTLB_INV_DOMAIN: + tail =3D qvtd_submit_iotlb_domain_inv(qts, Q35_HOST_BRIDGE_IOMMU_A= DDR, + QVTD_DOMAIN_ID, tail); + break; + case IOTLB_INV_PAGE: + tail =3D qvtd_submit_iotlb_page_inv(qts, Q35_HOST_BRIDGE_IOMMU_ADD= R, + QVTD_DOMAIN_ID, QVTD_IOVA, 0, + tail); + break; + } + tail =3D qvtd_submit_inv_wait_and_poll(qts, Q35_HOST_BRIDGE_IOMMU_ADDR, + tail); + + qtest_memset(qts, pa_a, 0, DMA_LEN); + qtest_memset(qts, pa_b, 0, DMA_LEN); + + result =3D qos_iommu_testdev_trigger_dma(dev, bar, QVTD_IOVA, pa_b, + DMA_LEN, 0); + g_assert_cmpuint(result, =3D=3D, 0); + + g_free(dev); + qpci_free_pc(pcibus); + qtest_quit(qts); +} + +/* + * Page-selectivity test: verify that a page-selective invalidation flushes + * the named page and touches other cached pages only as far as the model + * intends. run_iotlb_inv_test() caches a single entry, so it cannot tell= a + * page-selective flush from a domain-wide or global one; this test caches= two + * pages in the same domain and checks the second one's fate. + * + * The expected fate of the second page depends on the translation level: + * + * - second-level (legacy / scalable-slt): a page-selective descriptor + * evicts only the matching gfn, so IOVA_2 survives. + * - first-level (scalable-flt): QEMU invalidates all first-stage entrie= s of + * the domain on a page-selective descriptor (vtd_hash_remove_by_page() + * returns true for any pgtt=3D=3DFST entry of the domain, matching th= e VT-d + * spec for first-stage IOTLB invalidation), so IOVA_2 is flushed too. + * + * Method: map IOVA -> PA_A and IOVA_2 -> PA_A_2, DMA both to populate two + * IOTLB entries, rewrite both leaf PTEs to PA_B* without invalidating, th= en + * page-invalidate IOVA only. IOVA always re-walks to PA_B. For IOVA_2 we + * verify the DMA against its *original* page PA_A_2: if the entry survive= d, + * the stale cache still serves PA_A_2 (success); if it was flushed, the f= resh + * walk reaches PA_B_2 and mismatches PA_A_2. So a survived entry gives + * success and a flushed entry gives MISMATCH, and we assert whichever the + * mode requires -- catching both an over-matching second-level flush and a + * regression that stopped flushing first-stage entries domain-wide. + */ +static void run_page_selectivity_test(QVTDTransMode mode) +{ + QTestState *qts; + QPCIBus *pcibus; + QPCIDevice *dev; + QPCIBar bar; + uint32_t tail =3D 0; + uint32_t result; + uint64_t pa_a, pa_b, pa_a2, pa_b2; + bool fl_domain_wide =3D (mode =3D=3D QVTD_TM_SCALABLE_FLT); + + if (!qtest_has_machine("q35")) { + g_test_skip("q35 machine not available"); + return; + } + + qts =3D qtest_initf("-machine q35 -smp 1 -m 512 -net none " + "%s -device iommu-testdev", + qvtd_iommu_args(mode)); + + if (!qvtd_check_caps(qts, mode)) { + qtest_quit(qts); + return; + } + + dev =3D qvtd_setup_qtest_pci_device(qts, &pcibus, &bar); + + pa_a =3D (QVTD_PT_VAL & VTD_PAGE_MASK_4K) + (QVTD_IOVA & 0xfff); + pa_b =3D (QVTD_PT_VAL_B & VTD_PAGE_MASK_4K) + (QVTD_IOVA & 0xfff); + pa_a2 =3D (QVTD_PT_VAL_2 & VTD_PAGE_MASK_4K) + (QVTD_IOVA_2 & 0xfff); + pa_b2 =3D (QVTD_PT_VAL_B & VTD_PAGE_MASK_4K) + (QVTD_IOVA_2 & 0xfff); + + /* --- Setup: IOVA -> PA_A (built by helper) and IOVA_2 -> PA_A_2 --- = */ + qvtd_build_translation(qts, mode, dev->devfn); + qtest_writeq(qts, qvtd_leaf_pte_addr(QVTD_IOVA_2), + qvtd_make_leaf_pte(QVTD_PT_VAL_2 & VTD_PAGE_MASK_4K, mode= )); + qvtd_program_regs(qts, Q35_HOST_BRIDGE_IOMMU_ADDR, mode); + + /* Populate both IOTLB entries. */ + qtest_memset(qts, pa_a, 0, DMA_LEN); + qtest_memset(qts, pa_a2, 0, DMA_LEN); + result =3D qos_iommu_testdev_trigger_dma(dev, bar, QVTD_IOVA, pa_a, + DMA_LEN, 0); + g_assert_cmpuint(result, =3D=3D, 0); + result =3D qos_iommu_testdev_trigger_dma(dev, bar, QVTD_IOVA_2, pa_a2, + DMA_LEN, 0); + g_assert_cmpuint(result, =3D=3D, 0); + + /* Rewrite both leaf PTEs to PA_B* without invalidating. */ + qtest_writeq(qts, qvtd_leaf_pte_addr(QVTD_IOVA), + qvtd_make_leaf_pte(QVTD_PT_VAL_B & VTD_PAGE_MASK_4K, mode= )); + qtest_writeq(qts, qvtd_leaf_pte_addr(QVTD_IOVA_2), + qvtd_make_leaf_pte(QVTD_PT_VAL_B & VTD_PAGE_MASK_4K, mode= )); + + /* Page-selective invalidation of IOVA only. */ + tail =3D qvtd_submit_iotlb_page_inv(qts, Q35_HOST_BRIDGE_IOMMU_ADDR, + QVTD_DOMAIN_ID, QVTD_IOVA, 0, tail); + tail =3D qvtd_submit_inv_wait_and_poll(qts, Q35_HOST_BRIDGE_IOMMU_ADDR, + tail); + + /* IOVA was flushed: fresh walk reaches PA_B. */ + qtest_memset(qts, pa_a, 0, DMA_LEN); + qtest_memset(qts, pa_b, 0, DMA_LEN); + result =3D qos_iommu_testdev_trigger_dma(dev, bar, QVTD_IOVA, pa_b, + DMA_LEN, 0); + g_assert_cmpuint(result, =3D=3D, 0); + + /* + * IOVA_2's fate, verified against its original page PA_A_2: + * - second-level: entry survives, stale cache serves PA_A_2 -> succ= ess; + * - first-level: entry was flushed domain-wide, fresh walk reaches + * PA_B_2 -> MISMATCH against PA_A_2. + */ + qtest_memset(qts, pa_a2, 0, DMA_LEN); + qtest_memset(qts, pa_b2, 0, DMA_LEN); + result =3D qos_iommu_testdev_trigger_dma(dev, bar, QVTD_IOVA_2, pa_a2, + DMA_LEN, 0); + if (fl_domain_wide) { + g_assert_cmpuint(result, =3D=3D, ITD_DMA_ERR_MISMATCH); + } else { + g_assert_cmpuint(result, =3D=3D, 0); + } + + g_free(dev); + qpci_free_pc(pcibus); + qtest_quit(qts); +} + +/* + * scalable-flt is covered here even though, per the VT-d spec, first-level + * mappings are invalidated with the PASID-based descriptor + * (VTD_INV_DESC_PIOTLB). QEMU keeps first- and second-level mappings in a + * single IOTLB that the legacy VTD_INV_DESC_IOTLB descriptor flushes for + * every level, so this test drives that descriptor across all modes. + * PASID-selective (PIOTLB) invalidation is a separate path, left for a + * follow-up. + */ +static const struct { + const char *name; + QVTDTransMode mode; +} trans_modes[] =3D { + { "legacy", QVTD_TM_LEGACY_TRANS }, + { "scalable-slt", QVTD_TM_SCALABLE_SLT }, + { "scalable-flt", QVTD_TM_SCALABLE_FLT }, +}; + +static const struct { + const char *name; + IOTLBInvGranularity gran; +} granularities[] =3D { + { "global", IOTLB_INV_GLOBAL }, + { "domain", IOTLB_INV_DOMAIN }, + { "page", IOTLB_INV_PAGE }, +}; + +typedef struct { + QVTDTransMode mode; + IOTLBInvGranularity gran; +} TestCase; + +static void test_iotlb_inv(const void *opaque) +{ + const TestCase *tc =3D opaque; + + run_iotlb_inv_test(tc->mode, tc->gran); +} + +static void test_page_selectivity(const void *opaque) +{ + const QVTDTransMode *mode =3D opaque; + + run_page_selectivity_test(*mode); +} + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + + for (size_t m =3D 0; m < ARRAY_SIZE(trans_modes); m++) { + for (size_t g =3D 0; g < ARRAY_SIZE(granularities); g++) { + TestCase *tc =3D g_new(TestCase, 1); + char *path; + + tc->mode =3D trans_modes[m].mode; + tc->gran =3D granularities[g].gran; + + path =3D g_strdup_printf("/iommu-testdev/intel/iotlb-inv/%s-%s= ", + granularities[g].name, + trans_modes[m].name); + qtest_add_data_func_full(path, tc, test_iotlb_inv, g_free); + g_free(path); + } + } + + for (size_t m =3D 0; m < ARRAY_SIZE(trans_modes); m++) { + QVTDTransMode *mode =3D g_new(QVTDTransMode, 1); + char *path; + + *mode =3D trans_modes[m].mode; + path =3D g_strdup_printf( + "/iommu-testdev/intel/iotlb-inv/page-selective/%s", + trans_modes[m].name); + qtest_add_data_func_full(path, mode, test_page_selectivity, g_free= ); + g_free(path); + } + + return g_test_run(); +} diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build index 93175baa87..56ff860e21 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build @@ -100,7 +100,7 @@ qtests_i386 =3D \ (config_all_devices.has_key('CONFIG_AMD_IOMMU') ? ['amd-iommu-test'] : [= ]) + \ (config_all_devices.has_key('CONFIG_VTD') ? ['intel-iommu-test'] : []) += \ (config_all_devices.has_key('CONFIG_VTD') and - config_all_devices.has_key('CONFIG_IOMMU_TESTDEV') ? ['iommu-intel-test= '] : []) + \ + config_all_devices.has_key('CONFIG_IOMMU_TESTDEV') ? ['iommu-intel-test= ', 'iommu-intel-inv-test'] : []) + \ (host_os !=3D 'windows' and = \ config_all_devices.has_key('CONFIG_ACPI_ERST') ? ['erst-test'] : []) + = \ (config_all_devices.has_key('CONFIG_PCIE_PORT') and = \ --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262562; cv=none; d=zohomail.com; s=zohoarc; b=Jv7SFE+/65B93qUwDuN246NJnxqX9LP6fZS0wQAA44wz+2gA5OKnOvlwxR7lxk9gO2F/WdbPfbCQhw8MLyC3grtPNbyEls43xnWbuTy7BexuevxZaPiFlactMllNsDX+ak74RoLrV6YCcRgBI/yB3AT0plSyxA50GThXtvi/e6U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262562; 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=QyVIPTtjvDwClzpwMwcfeN9BG2/EOcSdSHSa/m2GmrU=; b=PVWhl4lvdSaRangKWdRLiec9FXw/A7eLbeYqj3NgpMjUtAl3E0NfOa0dg0JpLQ9wlU/EJSIYgkmebrIERmmusvPsHaAmziQm7O0R0xSYLUkMMBve6lhdPbEJ2goj+ETwxXOSlF1IRaKOMoRD8oXKSBKMU5i4Ft5ZG9TV9UxQQss= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262562409291.4897164556146; Sun, 5 Jul 2026 07:42:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNwj-0005gw-IU; Sun, 05 Jul 2026 10:35:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwh-0005gV-3u for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:47 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwf-0001Rc-K8 for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:46 -0400 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-638-yLS2rQVvPJeon93qAV8D9g-1; Sun, 05 Jul 2026 10:35:43 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-493c20d0468so25557705e9.1 for ; Sun, 05 Jul 2026 07:35:43 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493bef23feasm283450795e9.2.2026.07.05.07.35.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:35:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262145; 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=QyVIPTtjvDwClzpwMwcfeN9BG2/EOcSdSHSa/m2GmrU=; b=atPfE1jJgXbexviBFIvQCRmwSpXqL8SjAM1c6uiBiK4kVX+JUo/di0la4+qS689JijFy+r kZZI0lbg9MR4JP7tt/sMRqq4jKMQDTkULNKtOE1yeMyae4+lNChrUFX4csHBzTwsbj4YiU VqX2xoAh7dz0j5u+C2Ysw6GcucX30FQ= X-MC-Unique: yLS2rQVvPJeon93qAV8D9g-1 X-Mimecast-MFC-AGG-ID: yLS2rQVvPJeon93qAV8D9g_1783262143 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262143; x=1783866943; darn=nongnu.org; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:from:to:cc:subject :date:message-id:reply-to:content-type; bh=QyVIPTtjvDwClzpwMwcfeN9BG2/EOcSdSHSa/m2GmrU=; b=bY1n/loDfNew3S60n061fy793rDAms/BN0kFmnqYEWvsIGWOYonGlrgiDMLQvTvNzV lmK/O6K8uXUBLiNxxMfdc9Fjg0lU1L0HsJCCYJ3Jrz/IUoxGoMi4fVdl2eYsqg2S3K/H ZwfkOMPTRh5tjQO9YYH1tKMeURpLXvC+/daWgfCkSC/8H9G11jB1r5kzu0mavMIQXssL SgFW4PCR45v4xaG951TyCRdT5vgLY7cqCml7+SBVg+b3p3TH5oW85mPayqLC50GqgYqm tpYuksDXtT+tO/QF4nTovJ6E/OkwIU72b66zz6Ria1HXv6aluKl9Hfk9Bh2B74YCjtcQ 7qqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262143; x=1783866943; h=in-reply-to:content-disposition:content-type: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 :content-type; bh=QyVIPTtjvDwClzpwMwcfeN9BG2/EOcSdSHSa/m2GmrU=; b=CTKGt1Ai3X1RDXt3Buz2mEz47eMQKWvZaCn927OERu7K8ObPToidlWHcNeu01/S6Dt oK1B64dtamggzWk1Zr++K5JtUq7+8/CuvivbmljgkJYT4JH0EwT7qtZPKyRkb5DLGcP/ yTa7Q8v9xxBq+J+4Ttzecd0QhLERzmJj8c4NWorJbQ01o6fSo44PSGtQRUrYFI7Na7w0 7/V0/Ktvf1a7ERG+O2Yb/1PVVxFYaa35drgIAosFECV4XXO82OFwondEoRn19Wvot8of uVK05hXmjkYvXjGp25Xbz5QPeaCaefib3KRT5SU1Dw7GrxEDkjDmfWgiovgfDKMs80wk swGQ== X-Gm-Message-State: AOJu0Yw1zD3vCjUTTfd2yecvwNKNZ4LQC9o0KIBSkcCKDe2iiTJsmXRJ 9qUqsmKh+xQKt+r6vp4y3J2xqn42qlVxK2FmZbB7z1IjOST760Jzs2oXOuL0KFSfZwlOUXfJzcl EgjEWwhWrGtXcc+CKIxBcHdCbATT2lXW5vMcI1zpDqIAajl7PLC3QNSzUwiqlT+IHG2/JcLLFp2 sxQXAQgHLSb0WBpUMKsWaiE6rze8XVk8DDhQ== X-Gm-Gg: AfdE7cnyTcY0coZEcu8TxaVN8d9q+NMt5w6NfdnEniJZp9/CGoRaxgyPEmrd/DTNTtI 8a7McVp9t9yY88KKRONTmLQUIu8iIr5VttcDfmd965PF9hS+pHta+9p06DAkJ44FWmMZj4S7+Dc GtN11MCl4vLP0MbuZRU0KWwSJk025LmnqbWix5PoJq6m5nXZzK8WVd3qE5ejJdrK2+O2k0bBAJz P6krwt4/nkvfXjZFdlrLMJVgcGuKSVoyPus8c680EoASLKdFJatnQG2B7eDkNRgqdSPW2+5furY v6ExoS1uunDbfWG0fd+ym1B17puGVzE+j+obgQFBzvPMxBnEnOMAaEQxbMVW5St5TwizjPFNQpI IHDYP25wonA9pqYeQvcs/fPXKaUoYAM0u X-Received: by 2002:a05:600c:c4a5:b0:493:aab3:c09c with SMTP id 5b1f17b1804b1-493d11fa9abmr78828685e9.28.1783262142607; Sun, 05 Jul 2026 07:35:42 -0700 (PDT) X-Received: by 2002:a05:600c:c4a5:b0:493:aab3:c09c with SMTP id 5b1f17b1804b1-493d11fa9abmr78828345e9.28.1783262142119; Sun, 05 Jul 2026 07:35:42 -0700 (PDT) Date: Sun, 5 Jul 2026 10:35:38 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , GuoHan Zhao , Alex =?utf-8?Q?Benn=C3=A9e?= , Stefano Garzarella Subject: [PULL 24/44] vhost-user-base: free virtqueue array during cleanup Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262563913158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: GuoHan Zhao vhost-user-base stores the VirtQueue pointers in a GPtrArray, but its cleanup helper only deletes the VirtQueues and leaves the array itself allocated. Free the GPtrArray after deleting the queues and clear the pointer so cleanup remains safe if the error path reaches it with no queues to release. Fixes: 6275989647ef (virtio: split into vhost-user-base and vhost-user-devi= ce) Signed-off-by: GuoHan Zhao Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260629092619.2607275-1-zhaoguohan@kylinos.cn> --- hw/virtio/vhost-user-base.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/hw/virtio/vhost-user-base.c b/hw/virtio/vhost-user-base.c index 39b5e637fc..6ac523f9eb 100644 --- a/hw/virtio/vhost-user-base.c +++ b/hw/virtio/vhost-user-base.c @@ -193,9 +193,13 @@ static void do_vhost_user_cleanup(VirtIODevice *vdev, = VHostUserBase *vub) { vhost_user_cleanup(&vub->vhost_user); =20 - for (int i =3D 0; i < vub->num_vqs; i++) { - VirtQueue *vq =3D g_ptr_array_index(vub->vqs, i); - virtio_delete_queue(vq); + if (vub->vqs) { + for (int i =3D 0; i < vub->num_vqs; i++) { + VirtQueue *vq =3D g_ptr_array_index(vub->vqs, i); + virtio_delete_queue(vq); + } + g_ptr_array_free(vub->vqs, true); + vub->vqs =3D NULL; } =20 virtio_cleanup(vdev); --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262179; cv=none; d=zohomail.com; s=zohoarc; b=ge7ic6lShtno4wq7wIP41WC8rw1alMSFA2EhogN29R44tK0roI8q3+4G+o90Qsh3Rjo4DWif6H5eYxgfLpKGbTEFn5/uvRQx2Uj+5+qMwXqFEXGOsUsmVB3Z+lzhETzzAoWYpaYOgqWSJFn8Bs/LBnXeWBFAvN6/zKr5l7YJbWw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262179; 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=YmY8MnQhP5H5i1Kwg/ZO3RsXJdwMXxmgaiaGkLPRGEQ=; b=McHUBnYNXfoJ3I/94QrQGEtcJiWaRJMQ2BdJPlCLFhjjzWzEeBBQ4J2INYugHdkF919IiK24iASBIpH+ms2BDJJyj+I0d4nFnfZ59uiCLA2JDhgi7IvgDcEzrDSPkNkmBeHq934ayjr+TzPN24wlVf970RrBzhLmA/s4Kz7eZu4= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262179511627.7914731328473; Sun, 5 Jul 2026 07:36:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNwn-0005vH-10; Sun, 05 Jul 2026 10:35:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwl-0005pf-3I for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:51 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwj-0001Rn-Ec for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:50 -0400 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-552-cryb-MAMP02iAPlNnWdrYQ-1; Sun, 05 Jul 2026 10:35:47 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-493ce4b7777so13845755e9.3 for ; Sun, 05 Jul 2026 07:35:47 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c637bc21sm518323425e9.7.2026.07.05.07.35.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:35:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262148; 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=YmY8MnQhP5H5i1Kwg/ZO3RsXJdwMXxmgaiaGkLPRGEQ=; b=Xv9RdZ3BSXs2MH2/+Q7MMiMmyIKBNE9X37P79tEVo6HBY2vEYE0ng2PYoS5L57f9b0gQrQ z4dpjiaK98FAFePIuVLnOnHVVtXec55VyBkgA0Y7tXi0LmJ5QZhHLfOHzyRsY9qj2sHpA+ 7uvrLfrmPQMxaRAjsiA2p0971MFXfVw= X-MC-Unique: cryb-MAMP02iAPlNnWdrYQ-1 X-Mimecast-MFC-AGG-ID: cryb-MAMP02iAPlNnWdrYQ_1783262146 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262146; x=1783866946; darn=nongnu.org; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:from:to:cc:subject :date:message-id:reply-to:content-type; bh=YmY8MnQhP5H5i1Kwg/ZO3RsXJdwMXxmgaiaGkLPRGEQ=; b=UzBrxuvoHjRk9Lk30VkS4PS8pnhhzOYdoGsxyKALgG9VoUZGX/t3VqScZBcud4ePIK wGdIndEZ/+V9N0UzRa7IKiWqZJFpsk9z/w51yxNJBLNqq9GrsEJB4hA9rTr+/Nt4KXtx bFlxvxdUU1O7h3MMEvSnKOG8wpf23jy/oCK3nD92Kdqt7dUEMhKV/n2fx0Oo1nEzzioj vOh4yNF46urWolahIQjQMl+Ia/w9QekA/LgDy1exgDaEBudQGyROyh3Xmtd3TNBsUWYw Zg2TJ0jmp2yAkUtK7bNF+/RTsezqmc9dJaIjVsjKqGq1xTNVBPSIFjkynZyNWSTlvbeS Uwug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262146; x=1783866946; h=in-reply-to:content-disposition:content-type: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 :content-type; bh=YmY8MnQhP5H5i1Kwg/ZO3RsXJdwMXxmgaiaGkLPRGEQ=; b=kUCGwMK1ykEoIJy5kB3EnQuuRW3D+ae2A8ar5+nuObhkH2YyfI3f+93DkX+K2kJnqw pievLUvSPmwtrpDatICMOsLszS+sjhp+OFKCAoZZTKKVcU3vXvbw1P8je2gDuzpx0rdQ 9ANrEShdyIgM2LknK+t22tMJW2AGk8IepZwgQPF8HLG1+2o1m0imlp+d40c3WCuj56EN GuBjwmxkcArXkHSMrCwAe8owwrSW6gHo7hHO18anIihnF6+PqOvo//IMmKkpu4DQTztV RkyE2kyfgvn8FP+a6doyTxJvXf5Y8W2KH/kNsdRm6Tep9UJ6leoOlRsCYq8HzpyG7knG G17Q== X-Gm-Message-State: AOJu0YyIarZgxElR/zau5LaJZTXObaNZ9GV5wnyS8GtalDKh45DIA3GB FRI8E/0Lp/5QT+a4up1RPeu4f8t+k0QlYBRJntoSKDJ3TK1GlZlfCw+1Tcgm0X/riC9jVcsHOK5 jE2CvQBOzeqNtEA4UOJ1tx8MBC8Lrv6lENNl7J3If0D+2yf1CJNB8R8q57+hz98mBXxmifiFd/j KqCE3OM4WPFx+Fte8r7gUCVrP2K+KSlCRWUw== X-Gm-Gg: AfdE7cnCvJ3er0a5EBsKgELFid7GUBcO1iavbbjfwilApbIA2LPHkpasx1uKnhn2meA 40eR3oUzSPXWkQbvKRKHbFBdVhBxJhzCFx/E1nXRo2nWZFPaQm62u/nj91gsCemPf/h9Je0BbAp bUzUHkLU2RFgVn+TleBsD2mWWkxhRbknxwiNp9Sqj+ukw5nHynMtEs0PiR0dsgsbLWPGrPxAZNk xsKE9xVfKOHaXryczpr7XqPt4iaRZOD93rKz9lQLRkrVYiyeEk1jey1uMdan23rHG0F/drVTSIk oSfNPl6OAQOYXvY4t4UJR66cRcqGOqcD07EUT1q5lD9eo9/kctD57BQvKeyw29IbivlEWCKF36j zzA7DbxJ+SIxLDPtMU2ndfR9WtXetygjR X-Received: by 2002:a05:600c:5489:b0:493:bacb:1341 with SMTP id 5b1f17b1804b1-493d36ff89emr60131095e9.4.1783262146127; Sun, 05 Jul 2026 07:35:46 -0700 (PDT) X-Received: by 2002:a05:600c:5489:b0:493:bacb:1341 with SMTP id 5b1f17b1804b1-493d36ff89emr60130025e9.4.1783262144291; Sun, 05 Jul 2026 07:35:44 -0700 (PDT) Date: Sun, 5 Jul 2026 10:35:42 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , GuoHan Zhao , Alex =?utf-8?Q?Benn=C3=A9e?= , Stefano Garzarella Subject: [PULL 25/44] vhost-user-base: clean up vhost_dev on realize failure Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262181104158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: GuoHan Zhao Failures after vhost_dev_init() currently skip vhost_dev_cleanup(), leaking initialized vhost_dev state. Add a separate unwind label for those paths. Keep a copy of vhost_dev.vqs so the array can still be freed after vhost_dev_cleanup() clears struct vhost_dev. Fixes: 6608dca74ecf (vhost-user-device: Add shared memory BAR) Signed-off-by: GuoHan Zhao Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260630012058.2663259-1-zhaoguohan@kylinos.cn> --- hw/virtio/vhost-user-base.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/hw/virtio/vhost-user-base.c b/hw/virtio/vhost-user-base.c index 6ac523f9eb..478ec68f09 100644 --- a/hw/virtio/vhost-user-base.c +++ b/hw/virtio/vhost-user-base.c @@ -287,6 +287,7 @@ static void vub_device_realize(DeviceState *dev, Error = **errp) VirtIODevice *vdev =3D VIRTIO_DEVICE(dev); VHostUserBase *vub =3D VHOST_USER_BASE(dev); uint64_t memory_sizes[VIRTIO_MAX_SHMEM_REGIONS]; + struct vhost_virtqueue *vhost_vqs =3D NULL; int i, ret, nregions, regions_processed =3D 0; =20 if (!vub->chardev.chr) { @@ -338,6 +339,7 @@ static void vub_device_realize(DeviceState *dev, Error = **errp) =20 vub->vhost_dev.nvqs =3D vub->num_vqs; vub->vhost_dev.vqs =3D g_new0(struct vhost_virtqueue, vub->vhost_dev.n= vqs); + vhost_vqs =3D vub->vhost_dev.vqs; =20 /* connect to backend */ ret =3D vhost_dev_init(&vub->vhost_dev, &vub->vhost_user, @@ -353,7 +355,7 @@ static void vub_device_realize(DeviceState *dev, Error = **errp) errp); =20 if (ret < 0) { - goto err; + goto err_vhost_dev; } =20 for (i =3D 0; i < VIRTIO_MAX_SHMEM_REGIONS && regions_processed < nreg= ions; i++) { @@ -368,14 +370,14 @@ static void vub_device_realize(DeviceState *dev, Erro= r **errp) errp); =20 if (ret < 0) { - goto err; + goto err_vhost_dev; } } =20 if (memory_sizes[i] % qemu_real_host_page_size() !=3D 0) { error_setg(errp, "Shared memory %d size must be a multiple= of " "the host page size", i); - goto err; + goto err_vhost_dev; } =20 virtio_new_shmem_region(vdev, i, memory_sizes[i]); @@ -385,7 +387,10 @@ static void vub_device_realize(DeviceState *dev, Error= **errp) qemu_chr_fe_set_handlers(&vub->chardev, NULL, NULL, vub_event, NULL, dev, NULL, true); return; +err_vhost_dev: + vhost_dev_cleanup(&vub->vhost_dev); err: + g_free(vhost_vqs); do_vhost_user_cleanup(vdev, vub); } =20 --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262489; cv=none; d=zohomail.com; s=zohoarc; b=aHnWlOz4dHmVoSc+hzfP9NVerBtsCh6AqldJOVhQR8nP6NgKfuonLGhb8YWBgvKBe6IimIv7CxpKe6FC4IA55LgZnruFLFCk9PdDasVw0/4wJRTL9OrTGpunYXMRxUPiIzlQpZYGji9fu4jhvyLGgmLX4j7KFofwqC6EMaejeUE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262489; 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=S/TONRYQ3N3aydVgfUlml6h82IkxOyVKOC3903eRb38=; b=XwTsy9OjytMBFQfkr31PlirAIj0xfwsduw3txPVCIYwXcSeVJNCtsQfJKSK6DHH6vQrOkWQL27yss6J/+FOYabINcOKhtTb9QkiTjYwjI4QuY4KXjjP/xaY/CFYLESQAWoO9RnAJqGM9lZqhLiR94dye5DHJT36F96Xd3+SPF+A= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262489260154.7267915532667; Sun, 5 Jul 2026 07:41:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNwo-0005xv-E5; Sun, 05 Jul 2026 10:35:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwm-0005su-6o for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:52 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwk-0001Ru-Lb for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:51 -0400 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-618-FLLKoaEDMLOTjPizFybO8w-1; Sun, 05 Jul 2026 10:35:48 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-493caa3c54eso18814385e9.2 for ; Sun, 05 Jul 2026 07:35:48 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493ccdab3a8sm231828705e9.6.2026.07.05.07.35.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:35:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262150; 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=S/TONRYQ3N3aydVgfUlml6h82IkxOyVKOC3903eRb38=; b=XoB3CUgs8WEMeDK52rPscy2QMMZHbKC5zGmkYwdsMiO/ZSHuF/dlvmQNGx4S0pe4/uF+6a pFPAuRNv+tT74DaUx+6z/Tx1nuPNSvc60ByTOKkRkuJSjj1aggX6ASSZ80EWg5cNugMl3N x/OkSFyzVeb1603zhI8iXr+0aTAdyOU= X-MC-Unique: FLLKoaEDMLOTjPizFybO8w-1 X-Mimecast-MFC-AGG-ID: FLLKoaEDMLOTjPizFybO8w_1783262148 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262147; x=1783866947; 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=S/TONRYQ3N3aydVgfUlml6h82IkxOyVKOC3903eRb38=; b=aNaYzvSClOVuB7Hg/O8IsBkVFf6Q2bvoqOp2iRUDEoW4FkDNYgHG2bkSBb7P6CrBBc DJjIRN8rRDEOnU5hA5hbGxUSmMupJM5l7Sh/d5mgYPDBil42oVfGB8GEEmGiKf9q6NTx /GmsskM63nAnn7SkUeM94Yf6ZB2JlzO4aZkhwPj+GgXu5b9VKe/lJzO0qxxTx06VhTWC eHXOyou8sQt12a1F10cGjBvQIvRYTfcb8i9vO9e2UvKVGRZj0qUoYyqYcsCx2M1UOSKj OtrqZYDdsqqLsAbXJOI1SApQruXk0fg6sxnT6sGWPxVz01oMykfLLPjiShbh9Eq8cExQ JyEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262147; x=1783866947; 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=S/TONRYQ3N3aydVgfUlml6h82IkxOyVKOC3903eRb38=; b=WeTOQJfNcrvdTqICs6GkcViyWz153G0e525jwVpP7yuyxeq6/ZZJqdWF/kRWc1Bibp +2LHrKBBZHNZZtB5jwtpG9iZk4xHVvnNPNoZ52m1idJtVGbDzJ1YXBOQ1y/gUddc40PV qs2T2Mg3rNsIfmN3J0MgMLaf5WVNyNuDk0hGti7GbBVFQjZ1iHn7polhaUjvQaoMRXQC t8RV27FtOZBEV7bG6ucFZZWE5J4xxL8G2pNanvzQsjFvfx5mjxieuRq8/9Gj/bzGinXW B2KLWi89s3plUFCMScg/JEN+0vEGQwRgtkqu45BK6oREAKCVYY2/1cBj5A1BBOxhV+43 f+1g== X-Gm-Message-State: AOJu0Yw8hBV8U6dO4tgxt1G/M63w5CwAFsfhq+58nAMCx7m7HvUbz8vw IP6rKic4BY+hKjQIlNT7nBbDNnIch9irW9mRAv5ounkOWsA6TbitoqgM2qRXvsXoDre36on3wZY uwyjNtUs+wDvgRV8rfmZ9bBpwFlDZBPyoLTm60mHS5hrHJTLo1X084wPeTgVzfaY1TBu44S2FJQ Vd8L5ccD1MGd0vp7N7BszbpEusc0xa0VfJbw== X-Gm-Gg: AfdE7cnVnCNK3gHQbjgEkV0351f3ihGiwFTp2euO+Fi1qR1tqkONA0EfKztAJ6JGSa1 eBFrWZeAdJ6MI2NgKbYT4Ux80sghirhvGxFruWQG8x0FkGHJ49W8ljQ2hCGS0ThKnuhduWEdzH2 c59/lpouq8ux8kluNraXNpPN13Wjk6q77GMBGixvfFnoDx2I0Ts76fkFNpR5fkpjKHJTR6/GH77 NnKTXWEMesqLfGspwxqBXuJpg0BXIGj/AfoKVW+GGXE//h9fefamKbWY7LK6FvI3wOVfaKIto0b eut7CEfArrJRy/Z1FQeqKNeQFZnO4AYlDbOzG4cpmWpj0wMki5PT8fmnSGLrI12sa7GsL8XBsM5 1RtrhSC/Bgj04SBN4MWzMXiLt5lON/lm1 X-Received: by 2002:a05:600c:5897:b0:492:4cce:53e2 with SMTP id 5b1f17b1804b1-493d11d0775mr52669955e9.3.1783262147470; Sun, 05 Jul 2026 07:35:47 -0700 (PDT) X-Received: by 2002:a05:600c:5897:b0:492:4cce:53e2 with SMTP id 5b1f17b1804b1-493d11d0775mr52669555e9.3.1783262146820; Sun, 05 Jul 2026 07:35:46 -0700 (PDT) Date: Sun, 5 Jul 2026 10:35:44 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , lizhaoxin04 , Miao Kezhan , Paolo Bonzini , Vladimir Sementsov-Ogievskiy , Markus Armbruster Subject: [PULL 26/44] vdpa: fix use-after-free of vqs in vhost_vdpa_device_unrealize Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262490041158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: lizhaoxin04 vhost_vdpa_device_unrealize() frees s->dev.vqs before vhost_dev_cleanup(), but vhost_dev_cleanup() still accesses hdev->vqs while tearing down virtqueues. This leads to a use-after-free and may crash QEMU with SIGSEGV during vDPA hot-unplug. Save the vqs pointer in a local variable, call vhost_dev_cleanup(), and free it afterward. This matches the cleanup pattern used by vhost-scsi. Fixes: b430a2bd23 ("vdpa: add vdpa-dev support") Co-developed-by: Miao Kezhan Signed-off-by: Li Zhaoxin Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260622100145.18924-1-lizhaoxin04@baidu.com> --- hw/virtio/vdpa-dev.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/virtio/vdpa-dev.c b/hw/virtio/vdpa-dev.c index 94188d37bb..089a77f4d0 100644 --- a/hw/virtio/vdpa-dev.c +++ b/hw/virtio/vdpa-dev.c @@ -172,6 +172,7 @@ static void vhost_vdpa_device_unrealize(DeviceState *de= v) { VirtIODevice *vdev =3D VIRTIO_DEVICE(dev); VhostVdpaDevice *s =3D VHOST_VDPA_DEVICE(vdev); + struct vhost_virtqueue *vqs =3D s->dev.vqs; int i; =20 virtio_set_status(vdev, 0); @@ -183,8 +184,8 @@ static void vhost_vdpa_device_unrealize(DeviceState *de= v) virtio_cleanup(vdev); =20 g_free(s->config); - g_free(s->dev.vqs); vhost_dev_cleanup(&s->dev); + g_free(vqs); g_free(s->vdpa.shared); qemu_close(s->vhostfd); s->vhostfd =3D -1; --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262529; cv=none; d=zohomail.com; s=zohoarc; b=hGST2ES+vGkm2pHgivXsQdCVltOtQDacFkZYyj2Ir08IaXTJMyfzJtpIX4Lo5sIDbzAVnL/4+/nTBNlZTbO0d5LlXYJv4xoWrRC88W/lQRUeDJ8Z8ArR4aJMarEwkgWZMxikeJQtbz9Pg7uZrTf7vrTorgToJLXvnlj1bJIix3o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262529; 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=D9F4wIuw/hWCTmZxs9cVla3JXisKf8d26stym2rmfd4=; b=QuOV+iYC4mXXrUMIP5VmEXPTCVjVlIHEjPEwhLVUxeEyYGEJc4UCSHTjaKKtHcBZHAHSrJVBRStmcP3bB8sEzYHzmF0bHGcqiZ+0JdOQrX6sJRuLjSRSk1VwbGdqNiPLNPIaa131x87gLsmghQo9V1oWj89HjjMcbxUA0wrRYPE= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178326252958422.084743479259032; Sun, 5 Jul 2026 07:42:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNwp-0005ym-Hk; Sun, 05 Jul 2026 10:35:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwo-0005xY-3a for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:54 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwm-0001SC-QV for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:53 -0400 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-562-HlJiBkieMraTv3I7h7KarA-1; Sun, 05 Jul 2026 10:35:50 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-47127ee7e07so1397663f8f.2 for ; Sun, 05 Jul 2026 07:35:50 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47aa0f21328sm16705681f8f.32.2026.07.05.07.35.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:35:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262152; 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=D9F4wIuw/hWCTmZxs9cVla3JXisKf8d26stym2rmfd4=; b=homFobUpgZj0GjPBot+Mp2WJVgbHvUGwm7dbffZrGrZLFnCr9IT4J1HhE9++eZb3RtusqH g8hiorSIRWTogDDFdV9nRUw7xgTdkTI81nSYTGzC9larrrQwR9v1pL92L3Mz61lijTGz+0 fTHus+rvrjy6Z5YeJalZYf3g52nazmc= X-MC-Unique: HlJiBkieMraTv3I7h7KarA-1 X-Mimecast-MFC-AGG-ID: HlJiBkieMraTv3I7h7KarA_1783262150 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262149; x=1783866949; 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=D9F4wIuw/hWCTmZxs9cVla3JXisKf8d26stym2rmfd4=; b=VTDMhpjg3HfjpGQ3VUK0OAX66aBgNVNmQIkyg+b9eY9/B1um1fu7t5awZabWOp4zd3 7oBkX4UP5uFOrFsENKScMFW5IRhU9HyOIE8LRfryWcHDJJo/ubDhP1q9O2CYnmpJ89pf fHDA5UQJmg3l5gbL4Ost0E33Mki9YCyY1akn838jBpjsAs3hym2iDH6/yLGW85oISUMY NaVNkw7MmdjV7nwKZnvK+7KGUkjyPRq8Fmw3XHncjg4lfMw0tQUs6zp925a0N9lFTP7R 5EnSCCDOWmlHCOW9Rqdh52BsNhqkR3lCK+vnafkfZ/yQrrKnxLjCxYxO/h5q/6dpqBJS 4NpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262149; x=1783866949; 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=D9F4wIuw/hWCTmZxs9cVla3JXisKf8d26stym2rmfd4=; b=r6feRvOii9K0yCBlQbZjCZfUEpauliLBXxH29U+zReS3PigZUkoBap7bdL0UDbxeNo GWqdvhrxpQ49QE6iglxZdd2ZkqKuHNMaPgLEvx7yqLUM6L9lGU+us/R4bxd/gYOXxRbK FI/1h1dbq5g6J9QW95WEWcYu/DuNchuWyTOS1ZsbF19xWL0dZWOE/dkwIzI57QiVmke7 ARKDopo+FFCaVTYcVP7VK+rk3RQblMq2rKAsc6bWd6N1Upnq4Hl/EWByVFWZSZPZTev9 nRntjE5YOzfCimP68bLdttmyuDdyaECqevVT7YjBIkQfZlVAbumxI0y4Qpw/9nBrBu3Z XHPg== X-Gm-Message-State: AOJu0YwZFHJwGVkNi3Uj5n+8MaSFbOjtibGAmhgs6AtbplECjlnJQfKb s4ilLdia3XKnkk/Rvl+NXKbScrS8cpm11Va8SEv+p9wzGLp2kAt4zD80PDg5oebeVaPTLZ/Itli cew13Q7Y/YQmIksd8hk47g1vFYzX1OhMNvNStKskq5hCst2RBw3Pz/ifcbjW94b9fKcjEaH/f4S Kz7t79SbDr6oiYDEeauO4EbLkgBo/Oz53Q9Q== X-Gm-Gg: AfdE7cnZpiJFpP3dZuFgQcSKwqe412lRebwaRwkuo8LElQfmu5jzkubjT1DAPYsFOdd vRsi+uv3zcZzCGZvMa6TlqxxoNSrqBifH2OV4Aw8Pg+1vUWe49BLgqtS/H6fyYErbsxVG41qb0H +j3RIeVB/y/r83Dp2/0Y0WrqNLKmgPPL+AwPvG+IryxL0Dqq49aADl80vi2X9274tEM0g4g5Pom AgyMUcAN2Q1JcGXgpCXqj6BY6O2ZDR4cY7iKCjLH0mKSK0BU+LWYDZHmvE4lcSiC4FC9N7SDRlr FakjdDjzQHXyWHj7U9vyA2Z8FYkuRkWz2xQ17aaVwtMYCP6DL/wGDfA8WhOcjd7lnyv4GZVVI5m EBdLuUcPMVY9HtX/NZADk8hl4GGaswm4P X-Received: by 2002:a05:6000:4203:b0:464:8d68:618a with SMTP id ffacd0b85a97d-47aaaec0251mr7609422f8f.32.1783262149483; Sun, 05 Jul 2026 07:35:49 -0700 (PDT) X-Received: by 2002:a05:6000:4203:b0:464:8d68:618a with SMTP id ffacd0b85a97d-47aaaec0251mr7609392f8f.32.1783262148931; Sun, 05 Jul 2026 07:35:48 -0700 (PDT) Date: Sun, 5 Jul 2026 10:35:46 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Eric Auger , Leif Lindholm , qemu-arm@nongnu.org Subject: [PULL 27/44] arm: sbsa_gwdt: fixup default "clock-frequency" Message-ID: <8e1aee6db42122cd1f781bf6048103fc76436c41.1783261895.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262531665158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov Comment about keeping legacy freq, is wrong to begin with (should be 62.5MHz), but that value also doesn't make sense anymore as the watchdog is used only by un-versioned SBSA board and the later has hard-coded it to 1GHz. Other potential user (arm/virt) also has system clock at 1GHz. Drop misleading comment about legacy and set default to 1GHz to match both boards. (not that it does matter, since users are setting frequency to match CPU's one explicitly) Signed-off-by: Igor Mammedov Reviewed-by: Eric Auger Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260702145856.1539572-2-imammedo@redhat.com> --- hw/watchdog/sbsa_gwdt.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/hw/watchdog/sbsa_gwdt.c b/hw/watchdog/sbsa_gwdt.c index 7ade5c6f18..b739a3ce3c 100644 --- a/hw/watchdog/sbsa_gwdt.c +++ b/hw/watchdog/sbsa_gwdt.c @@ -264,11 +264,10 @@ static void wdt_sbsa_gwdt_realize(DeviceState *dev, E= rror **errp) static const Property wdt_sbsa_gwdt_props[] =3D { /* * Timer frequency in Hz. This must match the frequency used by - * the CPU's generic timer. Default 62.5Hz matches QEMU's legacy - * CPU timer frequency default. + * the CPU's generic timer. */ DEFINE_PROP_UINT64("clock-frequency", struct SBSA_GWDTState, freq, - 62500000), + 1000000000), }; =20 static void wdt_sbsa_gwdt_class_init(ObjectClass *klass, const void *data) --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262612; cv=none; d=zohomail.com; s=zohoarc; b=dYK3ja1JzZ2+khGpKF7663k10B1OFGmB6QQDeYBpn2qqKvMh+l6EVVsPG3/aRM6KZUhE0L8Iv9zlG/qzD7qa7fWQ6Nr8zWFESqeS/Zg6LShSXWVBZvOn6A6tq+HM6Fd2h8qo3HMfjgnpCbpUoTrtw7rRZKTD3c9cOa5Ulx5x8D8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262612; 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=BTnu3PjGzlRsbS7CoAoKXq3Veho6h75memFBiQUlhOk=; b=HYyTdewRMDkmgy5SUsEnRAjJ0efErk1pDtWNCDzxckaDai84hHONepEL80nOb5dfVkPcm+cuez5R20J61KjvpNkWuxGwBj3MZa6xLjNjOaO+dMwifgtPq/M+jhPFnCfFOtBFDPrMoQLUvBDz88jMcUNveGl2FqPKVcyi5sOuiuE= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262612683464.7293495345491; Sun, 5 Jul 2026 07:43:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNwu-0006TS-Mj; Sun, 05 Jul 2026 10:36:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNws-0006HP-QS for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:58 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwr-0001Sm-9A for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:58 -0400 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-692-N8m50B3EOdW40o-qt17iYg-1; Sun, 05 Jul 2026 10:35:53 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-493c526df6bso14963285e9.3 for ; Sun, 05 Jul 2026 07:35:53 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47aa039afacsm15387892f8f.19.2026.07.05.07.35.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:35:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262156; 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=BTnu3PjGzlRsbS7CoAoKXq3Veho6h75memFBiQUlhOk=; b=JFCluPdgF02Bws47lDsMpPjypyWDYQfYhE8HHIWJJJDlUtisSjjkqpLicRk72r9hO5ilAH byTxig/GtEjRZizs/kc8yKIF4f7d2XnnqcuLR1Ze4rLn6mn+a5gpCucZi4N9//kTsjuIdP YnPjd2oQzRFJ8aIdDoY8WdS6Enn9xeI= X-MC-Unique: N8m50B3EOdW40o-qt17iYg-1 X-Mimecast-MFC-AGG-ID: N8m50B3EOdW40o-qt17iYg_1783262152 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262152; x=1783866952; darn=nongnu.org; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:from:to:cc:subject :date:message-id:reply-to:content-type; bh=BTnu3PjGzlRsbS7CoAoKXq3Veho6h75memFBiQUlhOk=; b=XzjyKjd+6HPndr612TOvzKR5z01GgcJ6TC9AxjJsCiInXVJCJauog6vm87frOPIqi3 WBP/n6vfUK4SW3540z3QEDJxMkEGb9zpLjwiY9M6EFD6lMlBqfzbRVebWXHUJeBBKui0 ebiX5PgRhqG13IriEVRbM88Vhjck36BUYi1EcHgACj0+YWoific2dFcoCXrzttTnEzvt q7hOtox9NAG1cvVWCLJh64bzeoERnoimujzcNjWUcAZ6Na4Lm+uirOBRkcQUyyFhgdyt DmV5h6t86XJquan91SwdUzlf3FyQrhP/KJnQnjRe2PqWkQYyZtId9nvQOf9dC6y3kd5a +foA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262152; x=1783866952; h=in-reply-to:content-disposition:content-type: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 :content-type; bh=BTnu3PjGzlRsbS7CoAoKXq3Veho6h75memFBiQUlhOk=; b=WEoaG/Nhmuyyz8jMf6g+pCY1xlowyL7/REZgj5tOX8pmMy0kXQ/6sUyk1MagKzLNoS 2BvD+Rf7mXGOtZAV7yyJdFB9vebK6Db2wx+aaE06bqRwrssK/Yzud0hp3yLgGd5SlRXi +0GcTdIcniQPqNb9TaBGW4KDxuAhT8lS3RCvSpnfQzI/E40WsXW2Mdw8cDR5Gl2xYZ6G jcFrMkpc91I5oztol2X17Yg2XHdwiEsEHgihRM74PCxkCVBjie69S+BpbAH6wTQcOT0l VNuN9O5YUVFCtOXVjbiN/KdU+5zhjqjBcYtgs1AhjOgBhBOY+Boa4DctoDh8jJFPG7Z6 raIg== X-Gm-Message-State: AOJu0YzidydZ7PmNvInfd/0CuThGiim75ciU45etTmuFglItQQU0Yv7i d0fAx0lH767MYLupBNCyivh+YnvKY0Zgj6WWyTvOJg4EtKvQLRHmMsbhftL/mOAH1YIyBPRLZjY eZPd5DTd/SKZtQnznydPKOfa8SqmxATN8tA9JRDz1nvgl5kUwBRJGwvsuTO/OcZZMpmr4HopHVe sP7cOn2T8DJr3nG3fRGfsjSJT6rdjnvKJlPQ== X-Gm-Gg: AfdE7ckDakykMT3/5eLb55dqvUtBQC51viyKNXOTFU5BhnqJMRGQs8+rRiECMw8Hojd GcdDR6Q9WttFj7drb6kCDCChM1ET3OJ6RnyC5edkkpz9l+ZJCWEhu+RrKcxoSj6IapcBisy/WDb 5wI1YLhsXFDAXYTkOkdhd29AIXkNAqDwm5fsCC0Tek9KnMr2RLi+I2hGoUREuhbO1HPS4gB5Pxk pGYeevZldDDTPZkyoiSLBFKzB/PCc98DPqVIqNOG2jS4t9qWoqa3WMpJSTIQCzuZCj/aYko0nLW prMnS0u/pMA9fewPObV7iEUmWSpT2deZCxh4EFuV0hhkdtZE9dF/1o6j4JU8NNfYF7UPFV7h8f6 fUH0jFujpTBr7Kkh5+5HXsYuPrLC2g4qC X-Received: by 2002:a5d:5509:0:b0:478:19e7:22a2 with SMTP id ffacd0b85a97d-47aac4eb421mr5845194f8f.25.1783262151774; Sun, 05 Jul 2026 07:35:51 -0700 (PDT) X-Received: by 2002:a5d:5509:0:b0:478:19e7:22a2 with SMTP id ffacd0b85a97d-47aac4eb421mr5845165f8f.25.1783262151150; Sun, 05 Jul 2026 07:35:51 -0700 (PDT) Date: Sun, 5 Jul 2026 10:35:49 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Ani Sinha , Eric Auger , Leif Lindholm , qemu-arm@nongnu.org Subject: [PULL 28/44] arm: add tracing events to sbsa_gwdt Message-ID: <88e1d327fdb73e22479c97139fb237dabf6788ff.1783261895.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262614001158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov Signed-off-by: Igor Mammedov Reviewed-by: Ani Sinha Reviewed-by: Eric Auger Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260702145856.1539572-3-imammedo@redhat.com> --- hw/watchdog/sbsa_gwdt.c | 8 ++++++++ hw/watchdog/trace-events | 9 +++++++++ 2 files changed, 17 insertions(+) diff --git a/hw/watchdog/sbsa_gwdt.c b/hw/watchdog/sbsa_gwdt.c index b739a3ce3c..acb970e8b3 100644 --- a/hw/watchdog/sbsa_gwdt.c +++ b/hw/watchdog/sbsa_gwdt.c @@ -24,6 +24,7 @@ #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" +#include "trace.h" =20 static const VMStateDescription vmstate_sbsa_gwdt =3D { .name =3D "sbsa-gwdt", @@ -62,6 +63,7 @@ static uint64_t sbsa_gwdt_rread(void *opaque, hwaddr addr= , unsigned int size) qemu_log_mask(LOG_GUEST_ERROR, "bad address in refresh frame read = :" " 0x%x\n", (int)addr); } + trace_sbsa_gwdt_refresh_read(addr, ret); return ret; } =20 @@ -93,6 +95,7 @@ static uint64_t sbsa_gwdt_read(void *opaque, hwaddr addr,= unsigned int size) qemu_log_mask(LOG_GUEST_ERROR, "bad address in control frame read = :" " 0x%x\n", (int)addr); } + trace_sbsa_gwdt_control_read(addr, ret); return ret; } =20 @@ -127,6 +130,7 @@ static void sbsa_gwdt_rwrite(void *opaque, hwaddr offse= t, uint64_t data, unsigned size) { SBSA_GWDTState *s =3D SBSA_GWDT(opaque); =20 + trace_sbsa_gwdt_refresh_write(offset, data); if (offset =3D=3D SBSA_GWDT_WRR) { s->wcs &=3D ~(SBSA_GWDT_WCS_WS0 | SBSA_GWDT_WCS_WS1); =20 @@ -141,6 +145,7 @@ static void sbsa_gwdt_write(void *opaque, hwaddr offset= , uint64_t data, unsigned size) { SBSA_GWDTState *s =3D SBSA_GWDT(opaque); =20 + trace_sbsa_gwdt_control_write(offset, data); switch (offset) { case SBSA_GWDT_WCS: s->wcs =3D data & SBSA_GWDT_WCS_EN; @@ -180,6 +185,7 @@ static void wdt_sbsa_gwdt_reset(DeviceState *dev) { SBSA_GWDTState *s =3D SBSA_GWDT(dev); =20 + trace_sbsa_gwdt_reset(); timer_del(s->timer); =20 s->wcs =3D 0; @@ -196,10 +202,12 @@ static void sbsa_gwdt_timer_sysinterrupt(void *opaque) =20 if (!(s->wcs & SBSA_GWDT_WCS_WS0)) { s->wcs |=3D SBSA_GWDT_WCS_WS0; + trace_sbsa_gwdt_ws0_asserted(); sbsa_gwdt_update_timer(s, TIMEOUT_REFRESH); qemu_set_irq(s->irq, 1); } else { s->wcs |=3D SBSA_GWDT_WCS_WS1; + trace_sbsa_gwdt_ws1_asserted(); qemu_log_mask(CPU_LOG_RESET, "Watchdog timer expired.\n"); /* * Reset the watchdog only if the guest gets notified about diff --git a/hw/watchdog/trace-events b/hw/watchdog/trace-events index d85b3ca769..b388f7b250 100644 --- a/hw/watchdog/trace-events +++ b/hw/watchdog/trace-events @@ -42,3 +42,12 @@ k230_wdt_interrupt(void) "K230 WDT interrupt" k230_wdt_reset(void) "K230 WDT system reset" k230_wdt_restart(void) "K230 WDT restart" k230_wdt_reset_device(void) "K230 WDT device reset" + +#sbsa_gwdt.c +sbsa_gwdt_refresh_read(uint64_t addr, uint32_t value) "[0x%" PRIx64 "] -> = 0x%" PRIx32 +sbsa_gwdt_refresh_write(uint64_t addr, uint64_t value) "[0x%" PRIx64 "] <-= 0x%" PRIx64 +sbsa_gwdt_control_read(uint64_t addr, uint32_t value) "[0x%" PRIx64 "] -> = 0x%" PRIx32 +sbsa_gwdt_control_write(uint64_t addr, uint64_t value) "[0x%" PRIx64 "] <-= 0x%" PRIx64 +sbsa_gwdt_ws0_asserted(void) "WS0 signal is asserted" +sbsa_gwdt_ws1_asserted(void) "WS1 signal is asserted" +sbsa_gwdt_reset(void) "reset watchdog to default state" --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262653; cv=none; d=zohomail.com; s=zohoarc; b=gvxio5uuvmdwr9xi3wHa2praKb7auPCfDPIzDcWpVdSR23Pf8mjlAUjAzhACoTRnX3/F82kVAlItWMZUkrm+OBvH7rjExLqEODV6VwVSP2kvV0TXFrXaWBbl5e8AiNkksl2T6APXhFQV5efEnNGCtBH0T3XZbP5gRvhs60ntlys= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262653; 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=DNcvRMiitysJcmRtUZXzlgXLa0I8VMObuPV+Psg+jNU=; b=AnY5ioiY1J6ieEEnXXXRvUaQlRJEXhy6qKab2ITfUC34GpdzoQmt1vpQ8lBWIv3DaO4Nenof2tEG0DIIpW43DoF3amFiwa7m4vwyP/vqwW2TtJlzgzOslFOexeadb/J9YglooGpMj9uiSWhtzk4lKF+EW0LfMACsVYG7TTYArjU= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178326265371325.362180970059967; Sun, 5 Jul 2026 07:44:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNwv-0006ZB-Ed; Sun, 05 Jul 2026 10:36:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwt-0006Lv-C7 for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:59 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwr-0001Sq-SZ for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:35:59 -0400 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-118-7L_ugxnHO8mFZwIiZJY_0Q-1; Sun, 05 Jul 2026 10:35:56 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-493b0fe95b6so11369705e9.1 for ; Sun, 05 Jul 2026 07:35:55 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493bef183e7sm376987125e9.2.2026.07.05.07.35.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:35:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262157; 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=DNcvRMiitysJcmRtUZXzlgXLa0I8VMObuPV+Psg+jNU=; b=g1rvJX59jBKNGUMxlYXmdrQZez5VGFcmCKeXRoMk335MNi4dj50wxWaucTeUcGu7hpaKkN nl9PRNvrrigoHbpqmtAGwehplb3xqlEph8/283OvyHBBSQqT47O9nwkiUhH1EM6T6fiNq0 qDhsSZIPB5Lki5pnmAia9qkZ8HME+gw= X-MC-Unique: 7L_ugxnHO8mFZwIiZJY_0Q-1 X-Mimecast-MFC-AGG-ID: 7L_ugxnHO8mFZwIiZJY_0Q_1783262155 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262155; x=1783866955; 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=DNcvRMiitysJcmRtUZXzlgXLa0I8VMObuPV+Psg+jNU=; b=Fv2RUnOAsqikfy3twyTgJSjHysN3RlGvlHs0c5+ZHX0asCTNVCS/MHGhEfloyeKrcA EGkfR1M0ZJP4ebUwmEzX29eQWJvW+e+nwVRM1slrnnPszl0n2hO7MDeTr3+gvrAiO03a i82Bfvfm5LM5wJHujJN45QEamJufLtWgtuMFxHHgVtCMQoEIETlYkQiSU0S2PYryIkh/ UPhpDyTBk78FZEBpOjC7e69Hdr9/Ac5DRiG1bMl4Xva1cuBlQMxhpbv5kyn9Ok+cXLD4 h2M9e4ejO3G5lu9/lD48w9f+15jDOYhliNxrScEZgvXmOaLS96vjAr5tPV3SRHMR02NK QPjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262155; x=1783866955; 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=DNcvRMiitysJcmRtUZXzlgXLa0I8VMObuPV+Psg+jNU=; b=tFlksjiLZeEAnolxp67gYMc9RwqT9RuhF/bofHaQlgnQqzq80upOUHK/Ukz+IB3ivu wC2jpVjNbf9D48loYMOdSxfNg/g36gZuRIvyvwXdin40h6+o+WYzuUAwIXQEnsAsBI9d wNeqkbLwHJ4JvwvI156r5FOiRcYNG4Fz48BK8g1Xa9t7yLCIhP7gJbGukoM7pI4WVU2j ChjdWH3oBmCx7FGvWWLveIEkxVca5YbXfWMJK0y6F8ROJWPWLfQfpbO0m7xktA7XusVV krgCzoEZUjpSmSA3GcwdsrV9tEArewTkSs8ATGhOi49XSMT4tuynCKB0KLZ1I4COS3W6 DDSg== X-Gm-Message-State: AOJu0YwnBWLSGUBKXFH0zh7lYWoHhC8AgE2vyM3WvIqfWcZulaTCWMb2 ZjerjVq45XrRcmXZDW0w6njy2pAb060XEIXgymCrHUQNq4WSYMb94drP1Li3fVG7xBpXGwdfexQ hSnIxTHcnVt1/l4fRRs0Qj5+1d6Cw/fFRBp3+GhCaIpASpdiXjjzGetFAlAvYtyooXC92S9k7jg h9PxNUeHY26VqwGJc5vjsKaeJ9nLT8U+6Vbg== X-Gm-Gg: AfdE7cnovKs43G5NMflQ1EvHL+K3wbRamhAr0iH1mPiytQDs0QXGJcwt0OgK5RyXfMM WAUStWhPUh8Lc2UoqLLz5it2DuoqKcRjKuxxFn+u74alEI1eLnq5gwJU5QnTw6uksSKjrk13gLJ rcUshQX/dprzX0kF8g31wQZA7JVVFStROQNwbLCnWr7h/4wn7HXiM6f6sbGxv5gv15s4LLFoPdI lnrDbKSP6JSjl8yxseoTFodctORrYjDBgdcXbS9CQPWlBsi87icH5h+K6XKP4OJqADieLI6YTaG 5YFzYM4bg4JRA8c5TqYp/YnYduk/QceHCwWFa3xxsy9re6r3jeJfqYGqBT0aJJ5FyevE+4xYWOG DZYgNpDRIpweuSeIGtSEqYNIuv0gm2ZH3 X-Received: by 2002:a05:600c:528c:b0:492:454c:347c with SMTP id 5b1f17b1804b1-493d11d3bc2mr84590605e9.7.1783262154512; Sun, 05 Jul 2026 07:35:54 -0700 (PDT) X-Received: by 2002:a05:600c:528c:b0:492:454c:347c with SMTP id 5b1f17b1804b1-493d11d3bc2mr84590175e9.7.1783262153952; Sun, 05 Jul 2026 07:35:53 -0700 (PDT) Date: Sun, 5 Jul 2026 10:35:51 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Eric Auger , Leif Lindholm , qemu-arm@nongnu.org Subject: [PULL 29/44] arm: sbsa_gwdt: rename device type to sbsa-gwdt Message-ID: <5cb6dfc12d36ede1f79deb58385e324e7dc1cce9.1783261895.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262654324158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov Use hyphenated name to follow QEMU device naming convention. Migration compatibility is preserved since the vmstate name is already "sbsa-gwdt". Signed-off-by: Igor Mammedov Reviewed-by: Eric Auger Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260702145856.1539572-4-imammedo@redhat.com> --- include/hw/watchdog/sbsa_gwdt.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/hw/watchdog/sbsa_gwdt.h b/include/hw/watchdog/sbsa_gwd= t.h index 307a4f291a..8941dcff9e 100644 --- a/include/hw/watchdog/sbsa_gwdt.h +++ b/include/hw/watchdog/sbsa_gwdt.h @@ -16,7 +16,7 @@ #include "hw/core/sysbus.h" #include "hw/core/irq.h" =20 -#define TYPE_WDT_SBSA "sbsa_gwdt" +#define TYPE_WDT_SBSA "sbsa-gwdt" #define SBSA_GWDT(obj) \ OBJECT_CHECK(SBSA_GWDTState, (obj), TYPE_WDT_SBSA) #define SBSA_GWDT_CLASS(klass) \ --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262531; cv=none; d=zohomail.com; s=zohoarc; b=lO27LJTNKiGDXZIawg3446Dd/e17gzfUbaZ0OpFGB1kgcZHo/SDTinDZfhOi63CDXblTfZC6yFo2Ie8rlIoXNzKg9/MVtgE3xQwtHIYGGgLw5YkKa1JO7hrpZ1nYg+V1r3JPt0o1CGtn8FsFFbJIuEUi8uMEtDKKpxfddkpm9PU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262531; 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=U3P010/LuXOaHyF7DjJ+zP16GwxhbB6+LYV7Vn8ZSCo=; b=V3bH5HR5HiHeDjWCY87Qzo6LihJ+s4NYpOAb774uL9gpdN3wlwmwKvX/C6UwqBZYkmL8pwrjFA+yNl3mey10KLSM3cGJIQvhcxSpoLfIfqXokrzroc3l+cdld4BgE+M8tgMcjqAHa/V3lfFgMp4hl4Fs+zb+nwyrbJaRvonbmbQ= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262531281684.579330905306; Sun, 5 Jul 2026 07:42:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNwy-00070U-EZ; Sun, 05 Jul 2026 10:36:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNww-0006mH-SK for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:02 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwu-0001TA-FN for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:02 -0400 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-606-4w-nZzaVOfWKKtvjdGhy1w-1; Sun, 05 Jul 2026 10:35:58 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-472bdd6f529so1207059f8f.1 for ; Sun, 05 Jul 2026 07:35:58 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47a9de1d910sm16223943f8f.6.2026.07.05.07.35.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:35:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262159; 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=U3P010/LuXOaHyF7DjJ+zP16GwxhbB6+LYV7Vn8ZSCo=; b=PVb1H+0R+NSy4ea452T59QSjf1v5za4CCKLmSyn6cseH0MEsNFp9c6/miGtZPvpuT/eBiw GMF0uj7kmLkcHbQPNoGqifAs4RJer3TLore5pnLWRIfnpXcUKL+7wVJ/9xnD4fHEFT/JOY i99h/lXa/T1MpC6np1r5ed4zUwtn1qU= X-MC-Unique: 4w-nZzaVOfWKKtvjdGhy1w-1 X-Mimecast-MFC-AGG-ID: 4w-nZzaVOfWKKtvjdGhy1w_1783262157 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262157; x=1783866957; 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=U3P010/LuXOaHyF7DjJ+zP16GwxhbB6+LYV7Vn8ZSCo=; b=cGQDT112rq6ftE7ib39GQAf20lSVwYL1HI5UYJQU/8u0XZjGqup88KlYZvYHkGBcHM Vn5B0T3YIdBbV+SRQ5rpS4kFsyd/7xU0qJ3zyivI2LtyF1nxObwBP32NgwEPHvqWErAJ h2h4ZvKhclaz/nordGHoyf7cBgHqZcrvsGN4ri3iqKDOVCQSaHTt6E1fujvM36VNtRWO StmHjgFw0Q+v3Z0gksfRcvWdXQNpHclYUCk/UwQYiN+bwRJo8VBrHapZ3DM0kByVRn1c NGDwOi3mTh9wowNm6jnvcVU/gkWf/kbwbE7bGOEdzD3uh5kqGn9KwFHPWrkDCsbb+uzQ cjSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262157; x=1783866957; 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=U3P010/LuXOaHyF7DjJ+zP16GwxhbB6+LYV7Vn8ZSCo=; b=Biocp+JgHpbldY6oCDYjHv7bNd9ZQpruE2kLzlvpfcA8XLOdLvSOfNnVCi/NHW4UNP YDXiV/+QX96MJP8eOzgKr+ioPvqr4HU/m5Y393urE9ep9solOoLjcDz4m6X8oiFUD5ll hkqnEIGbSK5icO0/cwxHbsxbDMPuRHp4bI7O2kQX8cI9tgwbXi2eNixWPw5vfHCTEMDd WfGS2pby0HDtY4dcr/zCrXOAocSQoQ5WnbpXfQ7fnfe6RJzOnqhcEyNpZsUbGhzidj5d cpe8BA1DrjIkodSFvojJvPokIJ6ew4xPQIEmlFyzk/zkzczzEPaFtjuAiNyX5IRsY3FB WF4g== X-Gm-Message-State: AOJu0YxxbhRKjJFotIwy0wgSyi+MiIsO0QGNOr4iJEgq5hu/P6RlFz+T 294+3VHWsaCxz/W0wqk/HJyQVCJu24SxZTROdHNMuK9harKUvbMxRLphmt8HggDMeTjuVhXhINI 0Q5kyEXuE/HffeXtAuj5+Jf8mK+8bQfcs6sYmKIrhrgA2/SpZy2aYJAk9e6u1MQcotPMFZ+pXAE sJWU4zd2AkLH+YTleERiytipgOkk/fnu3iig== X-Gm-Gg: AfdE7cl0yjOytSFFJMWzLUT6rEajPfV6l0BQa9jRVvAq36fTM9wcGsm5gA4fA88y2aK /0j40WoWBDJR+FD4J4xaHk66IEYAQ0BRft2jsgLjJmcxUstbBW+XdfoC8f3kDkJcweLYBUyrH79 Cp00wiomku+1TZ1h0Bo3VKsrKjfxk7Ky4awbpkFiGEjHERil0K8ZVWYOCvXsda0lXVzCVBPVYmY kKBJU5A/rlZPdhPSqvFbzNNIalvfCyu4Pg5vYePYhjIVrSdpU6nZHgjpVI1pqUbb2H8gsw/lUPP /LSC0SPNe3v0jv0A/b+Isj4N2dFm0ijssx21FX+iJPRtyzF1FpsznoDVfz5GbPMGHzJZzwvXuhz nmdbr3rsG6Y67gqWjHGQKiccIbT+5VeT9 X-Received: by 2002:a5d:6f0c:0:b0:475:e7f7:ef76 with SMTP id ffacd0b85a97d-47aaaadf31emr7876241f8f.13.1783262156979; Sun, 05 Jul 2026 07:35:56 -0700 (PDT) X-Received: by 2002:a5d:6f0c:0:b0:475:e7f7:ef76 with SMTP id ffacd0b85a97d-47aaaadf31emr7876205f8f.13.1783262156389; Sun, 05 Jul 2026 07:35:56 -0700 (PDT) Date: Sun, 5 Jul 2026 10:35:54 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Eric Auger , Pierrick Bouvier , Paolo Bonzini , Ani Sinha , Leif Lindholm , qemu-arm@nongnu.org Subject: [PULL 30/44] arm: virt: create sbsa-gwdt watchdog Message-ID: <2f27572eb5ca08c71cdd872d018ea5ad8791dce4.1783261895.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, WEIRD_QUOTING=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: 1783262531807158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov Allow to use SBSA generic watchdog with virt machine type. (includes conditional generation of corresponding FDT and ACPI GTDT descriptors) Use '-device sbsa-gwdt' to command line to enable it. Instead of using dynamic sysbus infra to wire up MMIO/IRQ/FDT, statically assign resources in machine's mem/irq maps and wire them up at device (pre_)plug handlers. It's similar to dynamic sysbus wiring, modulo resources are nailed down statically, and wiring is limited to virt machine only. (Benefit is that tests don't break anymore on rebase due to address being stable) Tested with Fedora 43: FDT: -M virt,acpi=3Doff -device sbsa-gwdt ACPI: -M virt -device sbsa-gwdt Note: Windows sees GTDT, initializes watchdog but instead pinging WRR it sets/advances WOR to way too large value, so it's never going to trigger watchdog reboot (it's Windows driver issue though). Signed-off-by: Igor Mammedov Reviewed-by: Eric Auger Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260702145856.1539572-5-imammedo@redhat.com> --- docs/system/arm/virt.rst | 9 ++++++++ include/hw/arm/virt.h | 3 +++ hw/arm/virt-acpi-build.c | 29 ++++++++++++++++++++++++-- hw/arm/virt.c | 44 ++++++++++++++++++++++++++++++++++++++++ hw/core/sysbus-fdt.c | 2 ++ hw/watchdog/sbsa_gwdt.c | 2 ++ hw/arm/Kconfig | 1 + 7 files changed, 88 insertions(+), 2 deletions(-) diff --git a/docs/system/arm/virt.rst b/docs/system/arm/virt.rst index ae0be35d57..bf5a9c8f6c 100644 --- a/docs/system/arm/virt.rst +++ b/docs/system/arm/virt.rst @@ -39,6 +39,7 @@ The virt board supports: - A PL061 GPIO controller - An optional machine-wide SMMUv3 IOMMU - User-creatable SMMUv3 devices (see below for example) +- An optional SBSA Generic Watchdog Timer (see below) - hotpluggable DIMMs - hotpluggable NVDIMMs - An MSI controller (GICv2m or ITS). @@ -314,6 +315,14 @@ User-creatable SMMUv3 devices bypassing QEMU and improving throughput for workloads that issue many invalidations. Without it, every invalidation command traps into QEMU. =20 +SBSA Generic Watchdog +""""""""""""""""""""" + +The SBSA Generic Watchdog Timer (GWDT) can be added to the virt machine +using ``-device sbsa-gwdt``. It is only supported on the virt machine, +which wires up statically assigned MMIO regions and IRQs via +machine-specific plug handlers. + Linux guest kernel configuration """""""""""""""""""""""""""""""" =20 diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h index 171d44c644..22e66d1a11 100644 --- a/include/hw/arm/virt.h +++ b/include/hw/arm/virt.h @@ -97,6 +97,9 @@ enum { VIRT_NVDIMM_ACPI, VIRT_PVTIME, VIRT_ACPI_PCIHP, + VIRT_GWDT_WS0, + VIRT_GWDT_REFRESH, + VIRT_GWDT_CONTROL, VIRT_LOWMEMMAP_LAST, }; =20 diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index 99490aa7b1..f5b3b4ce48 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -64,6 +64,7 @@ #include "hw/virtio/virtio-acpi.h" #include "target/arm/cpu.h" #include "target/arm/multiprocessing.h" +#include "hw/watchdog/sbsa_gwdt.h" =20 #include "smmuv3-accel.h" #include "tegra241-cmdqv.h" @@ -868,6 +869,8 @@ build_gtdt(GArray *table_data, BIOSLinker *linker, Virt= MachineState *vms) const uint32_t irqflags =3D 0; /* Interrupt is Level triggered */ AcpiTable table =3D { .sig =3D "GTDT", .rev =3D 3, .oem_id =3D vms->oe= m_id, .oem_table_id =3D vms->oem_table_id }; + uint32_t gtdt_start =3D table_data->len; + Object *wdt =3D object_resolve_type_unambiguous(TYPE_WDT_SBSA, NULL); =20 acpi_table_begin(&table, table_data); =20 @@ -898,10 +901,15 @@ build_gtdt(GArray *table_data, BIOSLinker *linker, Vi= rtMachineState *vms) build_append_int_noprefix(table_data, irqflags, 4); /* CntReadBase Physical address */ build_append_int_noprefix(table_data, 0xFFFFFFFFFFFFFFFF, 8); + /* Platform Timer Count */ - build_append_int_noprefix(table_data, 0, 4); + build_append_int_noprefix(table_data, wdt ? 1 : 0, 4); /* Platform Timer Offset */ - build_append_int_noprefix(table_data, 0, 4); + build_append_int_noprefix(table_data, + wdt ? (table_data->len - gtdt_start) + + 4 + 4 + 4 /* len of this & following 2 fields to skip */ + : 0, 4); + if (vms->ns_el2_virt_timer_irq) { /* Virtual EL2 Timer GSIV */ build_append_int_noprefix(table_data, ARCH_TIMER_NS_EL2_VIRT_IRQ, = 4); @@ -911,6 +919,23 @@ build_gtdt(GArray *table_data, BIOSLinker *linker, Vir= tMachineState *vms) build_append_int_noprefix(table_data, 0, 4); build_append_int_noprefix(table_data, 0, 4); } + + /* ACPI 6.5 spec: 5.2.25.2 ARM Generic Watchdog Structure (Table 5-124= ) */ + if (wdt) { + hwaddr rbase =3D vms->memmap[VIRT_GWDT_REFRESH].base; + hwaddr cbase =3D vms->memmap[VIRT_GWDT_CONTROL].base; + int irq =3D ARM_SPI_BASE + vms->irqmap[VIRT_GWDT_WS0]; + + build_append_int_noprefix(table_data, 1 /* Type: Watchdog GT */, 1= ); + build_append_int_noprefix(table_data, 28 /* Length */, 2); + build_append_int_noprefix(table_data, 0, 1); /* Reserved */ + /* RefreshFrame Physical Address */ + build_append_int_noprefix(table_data, rbase, 8); + /* WatchdogControlFrame Physical Address */ + build_append_int_noprefix(table_data, cbase, 8); + build_append_int_noprefix(table_data, irq, 4); /* Watchdog Timer G= SIV */ + build_append_int_noprefix(table_data, 0, 4); /* Watchdog Timer Fla= gs */ + } acpi_table_end(linker, &table); } =20 diff --git a/hw/arm/virt.c b/hw/arm/virt.c index d8d27f2ef6..eabc5274d5 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -95,6 +95,7 @@ #include "hw/cxl/cxl.h" #include "hw/cxl/cxl_host.h" #include "qemu/guest-random.h" +#include "hw/watchdog/sbsa_gwdt.h" =20 static GlobalProperty arm_virt_compat_defaults[] =3D { { TYPE_VIRTIO_IOMMU_PCI, "aw-bits", "48" }, @@ -214,6 +215,8 @@ static const MemMapEntry base_memmap[] =3D { /* ...repeating for a total of NUM_VIRTIO_TRANSPORTS, each of that siz= e */ [VIRT_PLATFORM_BUS] =3D { 0x0c000000, 0x02000000 }, [VIRT_SECURE_MEM] =3D { 0x0e000000, 0x01000000 }, + [VIRT_GWDT_REFRESH] =3D { 0x0f000000, 0x00001000 }, + [VIRT_GWDT_CONTROL] =3D { 0x0f001000, 0x00001000 }, [VIRT_PCIE_MMIO] =3D { 0x10000000, 0x2eff0000 }, [VIRT_PCIE_PIO] =3D { 0x3eff0000, 0x00010000 }, [VIRT_PCIE_ECAM] =3D { 0x3f000000, 0x01000000 }, @@ -264,6 +267,7 @@ static const int a15irqmap[] =3D { [VIRT_GPIO] =3D 7, [VIRT_UART1] =3D 8, [VIRT_ACPI_GED] =3D 9, + [VIRT_GWDT_WS0] =3D 10, [VIRT_MMIO] =3D 16, /* ...to 16 + NUM_VIRTIO_TRANSPORTS - 1 */ [VIRT_GIC_V2M] =3D 48, /* ...to 48 + NUM_GICV2M_SPIS - 1 */ [VIRT_SMMU] =3D 74, /* ...to 74 + NUM_SMMU_IRQS - 1 */ @@ -2085,6 +2089,27 @@ static void create_smmu(const VirtMachineState *vms,= PCIBus *bus) create_smmuv3_dt_bindings(vms, base, size, irq); } =20 +static void create_gwdt_dt_bindings(VirtMachineState *vms) +{ + MachineState *ms =3D MACHINE(vms); + hwaddr rbase =3D vms->memmap[VIRT_GWDT_REFRESH].base; + hwaddr cbase =3D vms->memmap[VIRT_GWDT_CONTROL].base; + int irq =3D vms->irqmap[VIRT_GWDT_WS0]; + char *nodename =3D g_strdup_printf("/watchdog@%" PRIx64, cbase); + + qemu_fdt_add_subnode(ms->fdt, nodename); + qemu_fdt_setprop_string(ms->fdt, nodename, + "compatible", "arm,sbsa-gwdt"); + qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", + 2, cbase, 2, SBSA_GWDT_CMMIO_SIZE, + 2, rbase, 2, SBSA_GWDT_RMMIO_SIZE); + qemu_fdt_setprop_cells(ms->fdt, nodename, "interrupts", + GIC_FDT_IRQ_TYPE_SPI, irq, + GIC_FDT_IRQ_FLAGS_LEVEL_HI); + qemu_fdt_setprop_cell(ms->fdt, nodename, "timeout-sec", 30); + g_free(nodename); +} + static void create_virtio_iommu_dt_bindings(VirtMachineState *vms) { const char compat[] =3D "virtio,pci-iommu\0pci1af4,1057"; @@ -3820,6 +3845,11 @@ static void virt_machine_device_pre_plug_cb(HotplugH= andler *hotplug_dev, qlist_append_str(reserved_regions, resv_prop_str); qdev_prop_set_array(dev, "reserved-regions", reserved_regions); g_free(resv_prop_str); + } else if (object_dynamic_cast(OBJECT(dev), TYPE_WDT_SBSA)) { + uint64_t cntfrq =3D object_property_get_int(OBJECT(qemu_get_cpu(0)= ), + "cntfrq", &error_abort); + + qdev_prop_set_uint64(dev, "clock-frequency", cntfrq); } else if (object_dynamic_cast(OBJECT(dev), TYPE_ARM_SMMUV3)) { if (vms->legacy_smmuv3_present || vms->iommu =3D=3D VIRT_IOMMU_VIR= TIO) { error_setg(errp, "virt machine already has %s set. " @@ -3871,6 +3901,19 @@ static void virt_machine_device_plug_cb(HotplugHandl= er *hotplug_dev, { VirtMachineState *vms =3D VIRT_MACHINE(hotplug_dev); =20 + if (object_dynamic_cast(OBJECT(dev), TYPE_WDT_SBSA)) { + SysBusDevice *s =3D SYS_BUS_DEVICE(dev); + hwaddr rbase =3D vms->memmap[VIRT_GWDT_REFRESH].base; + hwaddr cbase =3D vms->memmap[VIRT_GWDT_CONTROL].base; + int irq =3D vms->irqmap[VIRT_GWDT_WS0]; + + sysbus_mmio_map(s, 0, rbase); + sysbus_mmio_map(s, 1, cbase); + sysbus_connect_irq(s, 0, qdev_get_gpio_in(vms->gic, irq)); + + create_gwdt_dt_bindings(vms); + } + if (vms->platform_bus_dev) { MachineClass *mc =3D MACHINE_GET_CLASS(vms); =20 @@ -4123,6 +4166,7 @@ static void virt_machine_class_init(ObjectClass *oc, = const void *data) machine_class_allow_dynamic_sysbus_dev(mc, TYPE_RAMFB_DEVICE); machine_class_allow_dynamic_sysbus_dev(mc, TYPE_UEFI_VARS_SYSBUS); machine_class_allow_dynamic_sysbus_dev(mc, TYPE_ARM_SMMUV3); + machine_class_allow_dynamic_sysbus_dev(mc, TYPE_WDT_SBSA); #ifdef CONFIG_TPM machine_class_allow_dynamic_sysbus_dev(mc, TYPE_TPM_TIS_SYSBUS); #endif diff --git a/hw/core/sysbus-fdt.c b/hw/core/sysbus-fdt.c index 89d0c46445..12238570b5 100644 --- a/hw/core/sysbus-fdt.c +++ b/hw/core/sysbus-fdt.c @@ -36,6 +36,7 @@ #include "hw/display/ramfb.h" #include "hw/uefi/var-service-api.h" #include "hw/arm/fdt.h" +#include "hw/watchdog/sbsa_gwdt.h" =20 /* * internal struct that contains the information to create dynamic @@ -140,6 +141,7 @@ static const BindingEntry bindings[] =3D { TYPE_BINDING(TYPE_ARM_SMMUV3, no_fdt_node), TYPE_BINDING(TYPE_RAMFB_DEVICE, no_fdt_node), TYPE_BINDING(TYPE_UEFI_VARS_SYSBUS, add_uefi_vars_node), + TYPE_BINDING(TYPE_WDT_SBSA, no_fdt_node), TYPE_BINDING("", NULL), /* last element */ }; =20 diff --git a/hw/watchdog/sbsa_gwdt.c b/hw/watchdog/sbsa_gwdt.c index acb970e8b3..49fdd723c2 100644 --- a/hw/watchdog/sbsa_gwdt.c +++ b/hw/watchdog/sbsa_gwdt.c @@ -285,6 +285,8 @@ static void wdt_sbsa_gwdt_class_init(ObjectClass *klass= , const void *data) dc->realize =3D wdt_sbsa_gwdt_realize; device_class_set_legacy_reset(dc, wdt_sbsa_gwdt_reset); dc->hotpluggable =3D false; + /* requires machine-specific wiring (MMIO/IRQ/FDT) at plug time */ + dc->user_creatable =3D true; set_bit(DEVICE_CATEGORY_WATCHDOG, dc->categories); dc->vmsd =3D &vmstate_sbsa_gwdt; dc->desc =3D "SBSA-compliant generic watchdog device"; diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index 5f5c4899ad..f9a225c19b 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -36,6 +36,7 @@ config ARM_VIRT select VIRTIO_MEM_SUPPORTED select ACPI_CXL select ACPI_HMAT + select WDT_SBSA =20 config CUBIEBOARD bool --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262649; cv=none; d=zohomail.com; s=zohoarc; b=EPXpCBNN/xYMeIvouoYwiLSZ13axD/T/GXGwBPVcon37f78JyfElIVk4Xd7tdliArNkq07A+fNrWv4x900XPzJoWQ5egYPEz7QipU788Wj/v9zuei+df897vmgSJKZmhddaY49Ms9FYFS9iVkbxx3OrQWwWZ2O/3vAXJHIP8Ujw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262649; 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=8AY5qydpCSDNc84ZBXBXAVjwTf6BeQKuqySCp6fMp00=; b=WSDKwIJTzFv147uyXI6mFuFkTXB+7AZ9rh00n4wYKdHfb06yDkfWRGJ7mlZX39QtSM3x01hVOnZfS7tjlQ2eXZ1DIEX1h8pkhY0LgmwIc6xP1A9BBPXAgj6HWwwNHmZaUyeKd2idFvCWH35Rc7wdnsKgRMNNgDertybIAM8zedI= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262649136323.2677296641574; Sun, 5 Jul 2026 07:44:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNx0-0007J3-OD; Sun, 05 Jul 2026 10:36:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwz-00079P-7x for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:05 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNww-0001TV-Q9 for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:04 -0400 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-332-i7ZHdpTGOkSEzm8TXHKm5A-1; Sun, 05 Jul 2026 10:36:00 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-47499916233so252404f8f.2 for ; Sun, 05 Jul 2026 07:36:00 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47aa0f21328sm16706668f8f.32.2026.07.05.07.35.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:35:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262162; 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=8AY5qydpCSDNc84ZBXBXAVjwTf6BeQKuqySCp6fMp00=; b=PyBrBUzw7Tifmy2lsIYxg3/n/VCod/ytAlRRsZUtWyxM98TGIGNywJxiK3ElJonMP8Z3+S s5X3HJdzhhki5KX/bpy091poyDXzdgyHvDeYDY9prQoC2ahJrGBTMP8KBPboiOuxBtzowj jHWkCwepLL09ot1YguxVbvZR/d9yGXU= X-MC-Unique: i7ZHdpTGOkSEzm8TXHKm5A-1 X-Mimecast-MFC-AGG-ID: i7ZHdpTGOkSEzm8TXHKm5A_1783262159 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262159; x=1783866959; 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=8AY5qydpCSDNc84ZBXBXAVjwTf6BeQKuqySCp6fMp00=; b=HWwpzNhCbBxN8EnjXaJOOBStpINAhRlizdRVekVP3gOVUzcW+BjfE3mVKFkpE/IV11 U6GMyj/UQ7RNOFGAJjLyP2nTWeJp2OuUtP/FLAFXPdS1wivfLKFKfyfTxqLQLijrnATY /YRyoPOu58S5SnuMNsRU8futLojFzdXuJkGkedc804wlk7Ghg3CZaOpuKWrRj2wu9hy6 3+u8foX7aU6d70NGQH+qHseDAy/mopDjpYprx+muqgq277ZRIf7ZoBDAwNgGPtg72yFy 7132+JgVfFQ1MiFlhuzCxifgT1VNG3rvys9W3Q/+wDp+85Y2a5oY5aAKMu5O/aAi74gd RRLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262159; x=1783866959; 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=8AY5qydpCSDNc84ZBXBXAVjwTf6BeQKuqySCp6fMp00=; b=gdVnz9954vTrIiM/i9LJlaSHnO4rcTUYu/kH0tAOtoB1bvbmfSE79LDbUfI8rbnZk1 xYA5TBJlGZNiIJYdLwQJ6NAZJYLUJ3KZSTpJbOK5jP/H7WtEom7H43+VH/A05aWa6rsp Gb3yu0lN9V/rdTsM/xOtFqpHLAMIfu9ykbOQPkMxQc9yCZRId30GPFs/ZHsQkSSFDaF8 QKED9gAw2H/UUEh/TNAT5VJuN7Kg+400nWeuw6dbcScwlAe8vp4H+mZVQsKnEXho7jei dYErhBd1kKZRbNjR4qupyXJI5fO/xXdPP1dI1RQBWKw7w1/bjdJmAtp+H8sjSrGus2cF aHsA== X-Gm-Message-State: AOJu0YxzOcyAI/W6M9qwtWswP0oDdUeS85RN3Llgy9ZsEVRyNzOOBmQh GAeSQxyYkblI6CncuKTNmfQC3x1n4Tfm1QXBN1j1UjlkXR/NGLP1fXbJkQ5obWkSd1XHCp2IAaM WAGVUyb2wYHtC+xftIIPcnhmyPyhpPWUYRuSviW7Rp6ApGGca6WCKlytRbZi/h5STXhdZw0B0u8 xHk2j3/ro21umHc+PSwOjvCJaKVkBFC4vpNg== X-Gm-Gg: AfdE7cmLSRUBF8KZcZ27nla19vvBcW9T08KDLyLpRAMr/oMoicMax1sLgtgRdCQGaBO GutZPA4iC102qAgy4KHCst6AdOST1D3CHa4UOyqQepO6bF045Vd+t2fxquaP7+wCVoiSkNR/ZUI vztNIOIuHIOHbzLszTpx7mNejF29pCR8tNLWb3419ZrZYN1fwTNHgkYZbQSqhmieUDlrgqeVOjM OanTjCPhWgW8v3znDyEU0USLs8aQE1chQnKfswTMqJWJ8t3Zx8e8YxoAWvlJ4AJFByJ5GFHwut4 zRgXaNSa4ffk1gX3lwdYVPBUi3vj9cSwn01i51+U9ZjyYgfc6/FcNdYdeanaGPuTeqpJqYFEEf4 g3rUf6PFKVgamUNzhBKij0MV3VHNQvJgr X-Received: by 2002:a5d:6e64:0:b0:476:681c:4642 with SMTP id ffacd0b85a97d-47aae0da59fmr4707038f8f.44.1783262159224; Sun, 05 Jul 2026 07:35:59 -0700 (PDT) X-Received: by 2002:a5d:6e64:0:b0:476:681c:4642 with SMTP id ffacd0b85a97d-47aae0da59fmr4707006f8f.44.1783262158569; Sun, 05 Jul 2026 07:35:58 -0700 (PDT) Date: Sun, 5 Jul 2026 10:35:56 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Eric Auger , Leif Lindholm , qemu-arm@nongnu.org Subject: [PULL 31/44] arm: sbsa-gwdt: add 'wdat' option Message-ID: <51011f7f36b4406718d9698530c4e9d920184755.1783261895.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262650329158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov it will be used by arm/virt board, to pick WDAT compatible watchdog impl. and act as switch over to WDAT ACPI table vesus default GTDT ACPI table. Signed-off-by: Igor Mammedov Reviewed-by: Eric Auger Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260702145856.1539572-6-imammedo@redhat.com> --- include/hw/watchdog/sbsa_gwdt.h | 1 + hw/watchdog/sbsa_gwdt.c | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/include/hw/watchdog/sbsa_gwdt.h b/include/hw/watchdog/sbsa_gwd= t.h index 8941dcff9e..5ad7c7a798 100644 --- a/include/hw/watchdog/sbsa_gwdt.h +++ b/include/hw/watchdog/sbsa_gwdt.h @@ -73,6 +73,7 @@ typedef struct SBSA_GWDTState { uint32_t woru; uint32_t wcvl; uint32_t wcvu; + bool wdat; } SBSA_GWDTState; =20 #endif /* WDT_SBSA_GWDT_H */ diff --git a/hw/watchdog/sbsa_gwdt.c b/hw/watchdog/sbsa_gwdt.c index 49fdd723c2..330a74798a 100644 --- a/hw/watchdog/sbsa_gwdt.c +++ b/hw/watchdog/sbsa_gwdt.c @@ -265,6 +265,14 @@ static void wdt_sbsa_gwdt_realize(DeviceState *dev, Er= ror **errp) =20 sysbus_init_irq(sbd, &s->irq); =20 + /* + * WDAT spec: "The clock interval that the WDT uses must be + * greater than or equal to 1 millisecond." + */ + if (s->wdat) { + s->freq =3D 1000; + } + s->timer =3D timer_new_ns(QEMU_CLOCK_VIRTUAL, sbsa_gwdt_timer_sysinter= rupt, dev); } @@ -276,6 +284,7 @@ static const Property wdt_sbsa_gwdt_props[] =3D { */ DEFINE_PROP_UINT64("clock-frequency", struct SBSA_GWDTState, freq, 1000000000), + DEFINE_PROP_BOOL("wdat", struct SBSA_GWDTState, wdat, false), }; =20 static void wdt_sbsa_gwdt_class_init(ObjectClass *klass, const void *data) --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262606; cv=none; d=zohomail.com; s=zohoarc; b=DWQwGTp4D9PfjJwY2cLYu4rQ60/eQQI/bNELX7JXoiL42f6ofHiChCrZSJ3oOPjn5ktQAnhYY0owLy7ppoZeNULXZJR/9mzjmUI/OWIjdZ7KjYTdzMDGBugWo3xvLBnBZlVO3jOJKcbcnZ8g9UyONmKNE1K6Y632YE1jZSLEiYc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262606; 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=/hrhP2vErrhnWdlJ9qXwUQ+a7VJaYAqlc0qLDKyd82o=; b=R1y130CdqVgERj9eakIZt9e9s+XahMIj5B2OWQxI341R644pQous433fXMwgw439s7SkpPR0TW1AeItU1IAXF55MYBCBSUItS5Av2QSDMD4XWx6wxhOAh7OXVuOflKjJ4dyzXJvISfn6rqTBLR3Ln/6sNFUdoNazVSMoxrrPRCE= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178326260652692.79935897449502; Sun, 5 Jul 2026 07:43:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNx2-0007ow-QN; Sun, 05 Jul 2026 10:36:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNx1-0007OK-9F for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:07 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNwy-0001To-Tq for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:06 -0400 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-412-5v0jtE-JMUGdHGT7tQE30Q-1; Sun, 05 Jul 2026 10:36:02 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-472a798fc7cso1004196f8f.1 for ; Sun, 05 Jul 2026 07:36:02 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47aa039ad21sm16547173f8f.20.2026.07.05.07.35.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:36:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262164; 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=/hrhP2vErrhnWdlJ9qXwUQ+a7VJaYAqlc0qLDKyd82o=; b=iJNYvUlkTowvPLpWShOXi9xDE4gtQqHHzRZwtwKnUTh4Z7KZ4xwpRNrAjiypEyRkZULuu6 r6mHcei9l32HDr9nHxmA+lYZBO3kqplHSkAYnrfACY+3EtEqX05mV8gC2DYUVH+cE2gsnZ kdDHwSvTiTXmpMnc6P/ME1TqynTBVWM= X-MC-Unique: 5v0jtE-JMUGdHGT7tQE30Q-1 X-Mimecast-MFC-AGG-ID: 5v0jtE-JMUGdHGT7tQE30Q_1783262161 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262161; x=1783866961; darn=nongnu.org; h=in-reply-to:content-transfer-encoding:content-disposition :content-type:mime-version:references:message-id:subject:cc:to:from :date:from:to:cc:subject:date:message-id:reply-to:content-type; bh=/hrhP2vErrhnWdlJ9qXwUQ+a7VJaYAqlc0qLDKyd82o=; b=goCmst/brLPMj8KmZ9ge60tLK6IeL7A+sQ2B/jaWnyOaZrVaGQBGUijmDbvyRD+nCO 8lCrAB6gpWQz+M3lqF/fA4LM6jTtnpVIVd1zOZYsqOWalL0iBh4z7KEwqDzthRlkoEis ph6FutNt8qd0xUb4BApsgHkAVa64MTGa40WxKUZUc0wJ/0GM6nL7sN39KkT/hWWt/zRP PIbkYkNPtzrHHVHiS7xrrRuRAaF4p0d9jjdChCn58wQJXu8MrFviRK5YcqtrNzzOkORK Bow+PrDaplrF++b/O4jzQ8kvT2LZfwT9jYzRnK2y/KD7ZzB3u1TdX84PG3p3nir4hHHT DV+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262161; x=1783866961; h=in-reply-to:content-transfer-encoding:content-disposition :content-type: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:content-type; bh=/hrhP2vErrhnWdlJ9qXwUQ+a7VJaYAqlc0qLDKyd82o=; b=qigxIupcDIYgOF0nUgb6zLtgY7qqhA2eeQ+9qVkML1q8OPYRP+UWlc/XYHlUUjk2V2 j2blPTXg071Bq/BjowW91NAI8FTYBelMtK5gKNWjEqNdRgYs2fLAkWJc77Aq/i5D64/u G8yeP10nMaF6rsmPI+oUTKv/ZeH8bB5ea191NgRVt3O3xfHXHfbDjYyUTxOiYd4fYsGJ Six5bc2MM2k9OsaAaeGs6viaJG1XoGXGCX8WhoB4+1TyHQpz5l2WYQR54MBY56AocBVl prsWSbdV9rTJHxKu2xiSVD93pW7nx7ldX7dLqkN0vHf8CSqBYoBbgsKxFDuomK6cCTD+ dHVA== X-Gm-Message-State: AOJu0YxXXcDw/CHILKE4rcw0Wio+EN4ofpdy5q68z64nnkgPj+HZKk0g Le7L3yGmThYrFB/4WxgjI/lBqwEU/Z2XJNN2z2SyO1SJ2zbiBiodjkx4yYb4bC5AQ5AWmV0gc0a STphW98O0RG1coErzf3Kec8GcWkARFb/a4ISJfs+DH63UzyHnebwSqT/y//1pYAubr2OMM9klB7 tPESOvGVHOLDUVa+uCOeSgplYXepAWyavVNg== X-Gm-Gg: AfdE7cm7CPrz2olx+7iqWe6PAg3ZuHA6f3SsNVt3orIDNwS4dHiCtGzMJiNZLjzO4hf 34fAS5xczk9IumDIQa7xJcmxeatM8asXdsQfgX2AJnRs87Yx/81Gg9RK/qpOhIgQCJVfZkEDYQc AnG19IamCYRSxUH2KHW1FEtsw3KM01GP56UWVnL8sfGaK9Hq+mRr75QAHe8rfm3PWzb871KBn70 VGDr+J0tFmwgSfRRsP+GZm3a+YrbVidnO3Orofrsw27wOQJZP3G1gu+BVlAXQrgCwL3tXPAVWqy rZYMGAxszNr+DswzAfhrDu8Dfn4LtH1U2Krv2nRhBlSD7j3QiPRU3mwaPPromU4omwDtR7mFHnn ifGm36zkElo7R2fJnYOq0BFCYW9bStyUb X-Received: by 2002:a05:6000:61e:b0:475:f0f0:9eca with SMTP id ffacd0b85a97d-47aad35e8b4mr8420846f8f.53.1783262161362; Sun, 05 Jul 2026 07:36:01 -0700 (PDT) X-Received: by 2002:a05:6000:61e:b0:475:f0f0:9eca with SMTP id ffacd0b85a97d-47aad35e8b4mr8420803f8f.53.1783262160780; Sun, 05 Jul 2026 07:36:00 -0700 (PDT) Date: Sun, 5 Jul 2026 10:35:58 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Eric Auger , Ani Sinha Subject: [PULL 32/44] acpi: introduce WDAT table for GWDT 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.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262608001158500 From: Igor Mammedov Add build_gwdt_wdat() to generate a Watchdog Action Table designed for SBSA Generic Watchdog Timer. Signed-off-by: Igor Mammedov Reviewed-by: Eric Auger Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260702145856.1539572-7-imammedo@redhat.com> --- include/hw/acpi/wdat-gwdt.h | 19 +++++++ hw/acpi/wdat-gwdt-stub.c | 16 ++++++ hw/acpi/wdat-gwdt.c | 99 +++++++++++++++++++++++++++++++++++++ hw/acpi/meson.build | 2 + 4 files changed, 136 insertions(+) create mode 100644 include/hw/acpi/wdat-gwdt.h create mode 100644 hw/acpi/wdat-gwdt-stub.c create mode 100644 hw/acpi/wdat-gwdt.c diff --git a/include/hw/acpi/wdat-gwdt.h b/include/hw/acpi/wdat-gwdt.h new file mode 100644 index 0000000000..42339e031e --- /dev/null +++ b/include/hw/acpi/wdat-gwdt.h @@ -0,0 +1,19 @@ +/* + * GWDT Watchdog Action Table (WDAT) definition + * + * Copyright Red Hat, Inc. 2026 + * Author(s): Igor Mammedov + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ +#ifndef QEMU_HW_ACPI_WDAT_GWDT_H +#define QEMU_HW_ACPI_WDAT_GWDT_H + +#include "hw/acpi/aml-build.h" +#include "hw/watchdog/sbsa_gwdt.h" + +void build_gwdt_wdat(GArray *table_data, BIOSLinker *linker, const char *o= em_id, + const char *oem_table_id, uint64_t rbase, uint64_t cb= ase, + uint64_t freq); + +#endif /* QEMU_HW_ACPI_WDAT_GWDT_H */ diff --git a/hw/acpi/wdat-gwdt-stub.c b/hw/acpi/wdat-gwdt-stub.c new file mode 100644 index 0000000000..4d43783f70 --- /dev/null +++ b/hw/acpi/wdat-gwdt-stub.c @@ -0,0 +1,16 @@ +/* + * Copyright Red Hat, Inc. 2026 + * Author(s): Igor Mammedov + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "hw/acpi/wdat-gwdt.h" + +void build_gwdt_wdat(GArray *table_data, BIOSLinker *linker, const char *o= em_id, + const char *oem_table_id, uint64_t rbase, uint64_t cb= ase, + uint64_t freq) +{ + g_assert_not_reached(); +} diff --git a/hw/acpi/wdat-gwdt.c b/hw/acpi/wdat-gwdt.c new file mode 100644 index 0000000000..b30566ef6a --- /dev/null +++ b/hw/acpi/wdat-gwdt.c @@ -0,0 +1,99 @@ +/* + * SBSA GWDT Watchdog Action Table (WDAT) + * + * Copyright Red Hat, Inc. 2026 + * 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-gwdt.h" +#include "hw/acpi/wdat.h" +#include "hw/watchdog/sbsa_gwdt.h" + +#define GWDT_REG(base, reg_offset, reg_width) { \ + .space_id =3D AML_AS_SYSTEM_MEMORY, \ + .address =3D base + reg_offset, .bit_width =3D reg_width,= \ + .access_width =3D AML_DWORD_ACC }; + +/* + * "Hardware Watchdog Timers Design=C2=A0Specification" + * https://uefi.org/acpi 'Watchdog Action Table (WDAT)' + */ +void build_gwdt_wdat(GArray *table_data, BIOSLinker *linker, const char *o= em_id, + const char *oem_table_id, uint64_t rbase, uint64_t cb= ase, + uint64_t freq) +{ + AcpiTable table =3D { .sig =3D "WDAT", .rev =3D 1, .oem_id =3D oem_id, + .oem_table_id =3D oem_table_id }; + + struct AcpiGenericAddress wrr =3D GWDT_REG(rbase, 0x0, 32); + struct AcpiGenericAddress wor_l =3D GWDT_REG(cbase, SBSA_GWDT_WOR, 32= ); + struct AcpiGenericAddress wcs =3D GWDT_REG(cbase, SBSA_GWDT_WCS, 32); + + acpi_table_begin(&table, table_data); + build_append_int_noprefix(table_data, 0x20, 4); /* Watchdog Header Len= gth */ + /* + * PCI location fields are set to 0xff to indicate + * that the watchdog is not a PCI device. + */ + 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 */ + /* + * WDAT spec: "The clock interval that the WDT uses must be + * greater than or equal to 1 millisecond." + */ + g_assert(freq <=3D 1000); + /* Timer Period, ms */ + build_append_int_noprefix(table_data, 1000 / freq, 4); + /* + * WDAT spec: "The time-out period before the WDT fires is recommended + * to be at least 5 minutes." + * Set max count to 10min and min count to 5sec. + */ + build_append_int_noprefix(table_data, 600 * freq, 4); /* Maximum Count= */ + build_append_int_noprefix(table_data, 5 * freq, 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, 8, 4); + /* Action table: WCS (control/status) register actions */ + build_append_wdat_ins(table_data, WDAT_ACTION_QUERY_RUNNING_STATE, + WDAT_INS_READ_VALUE, + wcs, 0x1, 0x1); + build_append_wdat_ins(table_data, WDAT_ACTION_SET_RUNNING_STATE, + WDAT_INS_WRITE_VALUE | WDAT_INS_PRESERVE_REGISTER, + wcs, 1, 0x00000001); + build_append_wdat_ins(table_data, WDAT_ACTION_QUERY_STOPPED_STATE, + WDAT_INS_READ_VALUE, + wcs, 0x0, 0x00000001); + build_append_wdat_ins(table_data, WDAT_ACTION_SET_STOPPED_STATE, + WDAT_INS_WRITE_VALUE | WDAT_INS_PRESERVE_REGISTER, + wcs, 0x0, 0x00000001); + build_append_wdat_ins(table_data, WDAT_ACTION_QUERY_WATCHDOG_STATUS, + WDAT_INS_READ_VALUE, + wcs, 0x4, 0x00000004); + /* WOR (offset) and WRR (refresh) register actions */ + build_append_wdat_ins(table_data, WDAT_ACTION_SET_COUNTDOWN_PERIOD, + WDAT_INS_WRITE_COUNTDOWN, + wor_l, 0, 0xffffffff); + /* WRR: any write refreshes the watchdog, value is ignored */ + build_append_wdat_ins(table_data, WDAT_ACTION_RESET, + WDAT_INS_WRITE_VALUE, + wrr, 0x1, 0x1); + build_append_wdat_ins(table_data, WDAT_ACTION_SET_WATCHDOG_STATUS, + WDAT_INS_WRITE_VALUE | WDAT_INS_PRESERVE_REGISTER, + wrr, 0x4, 0x4); + + acpi_table_end(linker, &table); +} diff --git a/hw/acpi/meson.build b/hw/acpi/meson.build index 0c7bfb278a..09ad488a04 100644 --- a/hw/acpi/meson.build +++ b/hw/acpi/meson.build @@ -31,11 +31,13 @@ acpi_ss.add(when: 'CONFIG_ACPI_ERST', if_true: files('e= rst.c')) acpi_ss.add(when: 'CONFIG_IPMI', if_true: files('ipmi.c')) stub_ss.add(files('ipmi-stub.c')) stub_ss.add(files('acpi-x86-stub.c')) +acpi_ss.add(when: 'CONFIG_WDT_SBSA', if_true: files('wdat-gwdt.c')) if have_tpm acpi_ss.add(files('tpm.c')) endif stub_ss.add(files('acpi-stub.c', 'aml-build-stub.c', 'ghes-stub.c')) stub_ss.add(files('pci-bridge-stub.c')) +stub_ss.add(files('wdat-gwdt-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')) stub_ss.add(files('ghes_cper_stub.c')) --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262178; cv=none; d=zohomail.com; s=zohoarc; b=YOevV0fy0eDHPLvZVKRECerYuBSLESHBPW/EQZmLPlmFYcIBhu1wG+/u5fF0ylWauYLGCKJZuKtw/8p/y5tlJPsUwilf3b86hhKC4ApBzx7toibrqrXhgpQok8PtMpSCAxsmlGXbnjWJ2zTg0+t/uZiVXO09/FzlhyuzABYytE0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262178; 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=EowkyqYpt77ogpC25tBSGvHiPA9OIiKf4U4BzNArRJA=; b=fba9/AA5nl7RrTtFDFxhVuFIIKr9xt2POzGBiAMIM072MO5/1tNVjYmyll0GvV+acH06LHwV6y8STPygQHtmmfrtJ+ObODjpWjYdWg20ktBdz9OHE38RPyM07k/I1eAd6hEdEeMauaxKobkgmMOhL/n9qKbtwrmDvL5eP2SuXA0= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262178900503.7133540738604; Sun, 5 Jul 2026 07:36:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNx5-00083h-FH; Sun, 05 Jul 2026 10:36:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNx3-0007td-14 for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:09 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNx1-0001UA-1l for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:08 -0400 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-496-iUDVb1TXMUCwvLJsJIE8Zw-1; Sun, 05 Jul 2026 10:36:05 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-493bf840a69so15255465e9.3 for ; Sun, 05 Jul 2026 07:36:04 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493cce03fa1sm202542715e9.11.2026.07.05.07.36.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:36:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262166; 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=EowkyqYpt77ogpC25tBSGvHiPA9OIiKf4U4BzNArRJA=; b=SZEjojyNFexMXwt9PmERZnu4FAguM1WyPCeeSaSC99oOVr/bDXReVdfGhiEbaQZOxkaBJ+ sTEjf4iDfN6Fs03aJ/QpC60SP0f62AZmPEIGlB8lujHRYRccVwpWa0iAvBo4bI6Kh7yv12 UwpQdBME8mKdgQq9XIGxnrNdrP10TDA= X-MC-Unique: iUDVb1TXMUCwvLJsJIE8Zw-1 X-Mimecast-MFC-AGG-ID: iUDVb1TXMUCwvLJsJIE8Zw_1783262164 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262164; x=1783866964; 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=EowkyqYpt77ogpC25tBSGvHiPA9OIiKf4U4BzNArRJA=; b=XYa0WefROnuG+ClRTUo17JEeRhvZhJ9mG54ZI9VRoXECHO8mvWE15TAStWObinzb1O FEF+M1H1A+Gik0fShF3XYiMOCxoL96GOQ+oJEdY2BVFo+we/3bxLXkCWJIm1jn3pF2me Ck0VXJDhKHlkCycW4dFB+cVhb0UlKf+vPFPhP5w6cRz9TDEOcW2i3Xz4/9Dt4RIryBIq lqpd9mk1c3k8tMbSnvbUtsIlGs7XQAb5O/tNExvJYeuNuTBFJNSVyXnxpCnDIL/f1URJ 1cJoKKZ/hEgR+M5dNUB3Bymc7EsIDL0Y3+kehYIUchR1T9v3FJvaeaUQSxs5zyinvsvb k7eQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262164; x=1783866964; 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=EowkyqYpt77ogpC25tBSGvHiPA9OIiKf4U4BzNArRJA=; b=APTBYZufi3skwJTLoPeNUp6jyfYKAAhf/LGFxBUU2uLeVrr9dh9LaqatAmH3Nbh+qD 8bsRfhQOohes5IorI/SG9UyFzhACfmLWBOY/MEcak6E8Y08S4mRwgWmAEhR3WL6v3KBR BjMaorH44KeDdxpxJk01hPQhddcOO/FEW6ja7impJ1a0ie+weUFVGYkBuL90KEkRMUtH mecTwXPhBIJhHaE/SVlGI2j3c2kHYS1I0j6/YORPnqKjfe9sVOfzlGT+N0ofxtiu7F1e NfgI2myejbeibHbZ/ZSbr19RFgHd1jMcxzp1l9olPtHoWEGYGH1jEafIDuQ+HV/u0uvu +/og== X-Gm-Message-State: AOJu0YybCK5YCAsjwxo6BKkUNgBowfT3zpaJyNSQOr6xdMVHi+iiyXHo rs+TT7UKudjSMsZdWbeIION6b/k3ZXK8rAOAceW3EaIgl/LkM30zWSZhBNYz3wLwBVAjmtY7zyV yQIe+j8lb5b+wKTFBJ1GDGSn+j5fkhbdt/RDTJ9VawcRPyterkuUWlJXKvev7+KgrVDzYHvs+D8 PA+4pyOD5gSA5QSBUMFQXlzUlBUhY6Q1mHMg== X-Gm-Gg: AfdE7cnOOsFplOw5XeVIsrzFPJSN+6SAq4zopW0znhglqn52p6pag3KsZniRthEK6Of 4VqqklrT/egqCSciZUK0gHH8pP1GwUw/WbTYgW/2fCV4QD7HhX7QwloeGrzrt0gJEC9oeaQc+Gb d5LPnRQCTuXKhiVtHetYg8cZXr0MMiIjUKEbhTcmd330Jo6drHKk0Akf+fo8kDUtwTJn/nWHqk7 e4EcaWftPhGQI02qmsclPnd3e9xqgFB2/2y+VPk5o1opDFHZr+x5NTsLLUCysqsAv5h1H3hPANG qe1K5eDcPKjPO971qqTF2xj5YKzwu1+zzLM+bB78dwbYYdTk2Ux0/g47au1MJQHgtkcZTlolNh1 V7pB+PN6P1hlflyO6UFU3jLIZqQRcUJY9 X-Received: by 2002:a05:600d:110:b0:493:b750:b565 with SMTP id 5b1f17b1804b1-493d11fe310mr44791065e9.35.1783262163674; Sun, 05 Jul 2026 07:36:03 -0700 (PDT) X-Received: by 2002:a05:600d:110:b0:493:b750:b565 with SMTP id 5b1f17b1804b1-493d11fe310mr44790815e9.35.1783262163135; Sun, 05 Jul 2026 07:36:03 -0700 (PDT) Date: Sun, 5 Jul 2026 10:36:00 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Eric Auger , Pierrick Bouvier , Ani Sinha , qemu-arm@nongnu.org Subject: [PULL 33/44] arm: virt: add support for WDAT based watchdog Message-ID: <285bc90d5b31775b7803e50822930a2914bf42de.1783261895.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, WEIRD_QUOTING=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: 1783262180107158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov Add WDAT handling for sbsa-gwdt on arm/virt machine. WDAT mode is enabled by 'wdat' option: ex: "-device sbsa-gwdt,wdat=3Don" When WDAT is enabled: - Build the WDAT ACPI table instead of the GTDT watchdog entry, since they are mutually exclusive due to different timer resolution (WDAT uses 1 kHz vs GTDT's system counter frequency). - Skip FDT watchdog node creation, as the DT-based Linux driver would use the system counter frequency which doesn't match the WDAT-mode 1 kHz clock. Signed-off-by: Igor Mammedov Reviewed-by: Eric Auger Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260702145856.1539572-8-imammedo@redhat.com> --- docs/system/arm/virt.rst | 15 +++++++++++++++ hw/arm/virt-acpi-build.c | 34 ++++++++++++++++++++++++++-------- hw/arm/virt.c | 12 ++++++++---- 3 files changed, 49 insertions(+), 12 deletions(-) diff --git a/docs/system/arm/virt.rst b/docs/system/arm/virt.rst index bf5a9c8f6c..5f6dd17978 100644 --- a/docs/system/arm/virt.rst +++ b/docs/system/arm/virt.rst @@ -323,6 +323,21 @@ using ``-device sbsa-gwdt``. It is only supported on t= he virt machine, which wires up statically assigned MMIO regions and IRQs via machine-specific plug handlers. =20 +Two modes are available: + +Native mode (default) + The watchdog is described via the ACPI GTDT table and FDT, using + the system counter frequency. Example:: + + -device sbsa-gwdt + +WDAT mode + The watchdog is described via the ACPI WDAT table (no FDT node), + using a 1 kHz timer frequency. WDAT and GTDT watchdog entries are + mutually exclusive. Example:: + + -device sbsa-gwdt,wdat=3Don + Linux guest kernel configuration """""""""""""""""""""""""""""""" =20 diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index f5b3b4ce48..f6386088b6 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -65,6 +65,7 @@ #include "target/arm/cpu.h" #include "target/arm/multiprocessing.h" #include "hw/watchdog/sbsa_gwdt.h" +#include "hw/acpi/wdat-gwdt.h" =20 #include "smmuv3-accel.h" #include "tegra241-cmdqv.h" @@ -859,7 +860,8 @@ build_srat(GArray *table_data, BIOSLinker *linker, Virt= MachineState *vms) * 5.2.25 Generic Timer Description Table (GTDT) */ static void -build_gtdt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) +build_gtdt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms, + bool add_watchdog) { /* * Table 5-117 Flag Definitions @@ -870,7 +872,6 @@ build_gtdt(GArray *table_data, BIOSLinker *linker, Virt= MachineState *vms) AcpiTable table =3D { .sig =3D "GTDT", .rev =3D 3, .oem_id =3D vms->oe= m_id, .oem_table_id =3D vms->oem_table_id }; uint32_t gtdt_start =3D table_data->len; - Object *wdt =3D object_resolve_type_unambiguous(TYPE_WDT_SBSA, NULL); =20 acpi_table_begin(&table, table_data); =20 @@ -903,12 +904,12 @@ build_gtdt(GArray *table_data, BIOSLinker *linker, Vi= rtMachineState *vms) build_append_int_noprefix(table_data, 0xFFFFFFFFFFFFFFFF, 8); =20 /* Platform Timer Count */ - build_append_int_noprefix(table_data, wdt ? 1 : 0, 4); + build_append_int_noprefix(table_data, add_watchdog ? 1 : 0, 4); /* Platform Timer Offset */ build_append_int_noprefix(table_data, - wdt ? (table_data->len - gtdt_start) + - 4 + 4 + 4 /* len of this & following 2 fields to skip */ - : 0, 4); + add_watchdog ? (table_data->len - gtdt_start) + + 4 + 4 + 4 /* len of this & following 2 fields to sk= ip */ + : 0, 4); =20 if (vms->ns_el2_virt_timer_irq) { /* Virtual EL2 Timer GSIV */ @@ -921,7 +922,7 @@ build_gtdt(GArray *table_data, BIOSLinker *linker, Virt= MachineState *vms) } =20 /* ACPI 6.5 spec: 5.2.25.2 ARM Generic Watchdog Structure (Table 5-124= ) */ - if (wdt) { + if (add_watchdog) { hwaddr rbase =3D vms->memmap[VIRT_GWDT_REFRESH].base; hwaddr cbase =3D vms->memmap[VIRT_GWDT_CONTROL].base; int irq =3D ARM_SPI_BASE + vms->irqmap[VIRT_GWDT_WS0]; @@ -1332,13 +1333,19 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBui= ldTables *tables) VirtMachineClass *vmc =3D VIRT_MACHINE_GET_CLASS(vms); GArray *table_offsets; unsigned dsdt, xsdt; + bool has_wdat =3D false; GArray *tables_blob =3D tables->table_data; MachineState *ms =3D MACHINE(vms); CPUCoreCaches caches[CPU_MAX_CACHES]; unsigned int num_caches; + Object *wdt =3D object_resolve_type_unambiguous(TYPE_WDT_SBSA, NULL); =20 num_caches =3D virt_get_caches(vms, caches); =20 + if (wdt) { + has_wdat =3D object_property_get_bool(wdt, "wdat", &error_abort); + } + table_offsets =3D g_array_new(false, true /* clear */, sizeof(uint32_t)); =20 @@ -1357,6 +1364,17 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuil= dTables *tables) acpi_add_table(table_offsets, tables_blob); build_madt(tables_blob, tables->linker, vms); =20 + acpi_add_table(table_offsets, tables_blob); + if (wdt && has_wdat) { + uint64_t freq =3D object_property_get_uint(wdt, "clock-frequency", + &error_abort); + build_gwdt_wdat(tables_blob, tables->linker, + vms->oem_id, vms->oem_table_id, + vms->memmap[VIRT_GWDT_REFRESH].base, + vms->memmap[VIRT_GWDT_CONTROL].base, + freq); + } + if (!vmc->no_cpu_topology) { acpi_add_table(table_offsets, tables_blob); build_pptt(tables_blob, tables->linker, ms, vms->oem_id, @@ -1364,7 +1382,7 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuild= Tables *tables) } =20 acpi_add_table(table_offsets, tables_blob); - build_gtdt(tables_blob, tables->linker, vms); + build_gtdt(tables_blob, tables->linker, vms, wdt && !has_wdat); =20 acpi_add_table(table_offsets, tables_blob); { diff --git a/hw/arm/virt.c b/hw/arm/virt.c index eabc5274d5..fb916c341b 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -3846,10 +3846,12 @@ static void virt_machine_device_pre_plug_cb(Hotplug= Handler *hotplug_dev, qdev_prop_set_array(dev, "reserved-regions", reserved_regions); g_free(resv_prop_str); } else if (object_dynamic_cast(OBJECT(dev), TYPE_WDT_SBSA)) { - uint64_t cntfrq =3D object_property_get_int(OBJECT(qemu_get_cpu(0)= ), - "cntfrq", &error_abort); + if (!object_property_get_bool(OBJECT(dev), "wdat", &error_abort)) { + uint64_t cntfrq =3D object_property_get_int(OBJECT(qemu_get_cp= u(0)), + "cntfrq", &error_abo= rt); =20 - qdev_prop_set_uint64(dev, "clock-frequency", cntfrq); + qdev_prop_set_uint64(dev, "clock-frequency", cntfrq); + } } else if (object_dynamic_cast(OBJECT(dev), TYPE_ARM_SMMUV3)) { if (vms->legacy_smmuv3_present || vms->iommu =3D=3D VIRT_IOMMU_VIR= TIO) { error_setg(errp, "virt machine already has %s set. " @@ -3911,7 +3913,9 @@ static void virt_machine_device_plug_cb(HotplugHandle= r *hotplug_dev, sysbus_mmio_map(s, 1, cbase); sysbus_connect_irq(s, 0, qdev_get_gpio_in(vms->gic, irq)); =20 - create_gwdt_dt_bindings(vms); + if (!object_property_get_bool(OBJECT(dev), "wdat", &error_abort)) { + create_gwdt_dt_bindings(vms); + } } =20 if (vms->platform_bus_dev) { --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262512; cv=none; d=zohomail.com; s=zohoarc; b=OsnFzY85FiQpEW7dkEOqg9viNXa34m68YF8gVlCH+hsNk5/W3vFJbPmvJzhtRKZ59b5rSeFa1D9YBXIzs2ODO5+eaS3Tc5cG91W2SekBg4CpeN9+Q3eKRm35fnQ2zQ+J6G7evOW4Z4gMM9Jlnk6QCmvZrzTlcCOvCz0cxnYeOLM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262512; 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=nlTT0Zv6+Q1VR1ufK/CGHuyuiZoq5W+Y8sw9WEHE9hs=; b=BE4WdHhd3jn57AIMHVbgWDGj5L4vQc1K7WL/gAuLst7WgTRG9b65udj4TlCQ1/N0dfPRASeLzjhFvBPFClxZvCPcVdseQ9zxmoz2BKr6o13STilIf0Fom7fgaiPh/ha8KW+/PslGVqFVsom2N4P+qjAUlJv+QlH/k2PcvgYzdsc= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262512974382.32553615238896; Sun, 5 Jul 2026 07:41:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNx6-00089W-Oc; Sun, 05 Jul 2026 10:36:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNx4-0007zI-Fq for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:10 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNx2-0001UN-VN for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:10 -0400 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-278-V5_COmPiOJe3yjG3umN4Iw-1; Sun, 05 Jul 2026 10:36:07 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-475b0b4e8d5so1525545f8f.1 for ; Sun, 05 Jul 2026 07:36:06 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47aa039bcdasm17066425f8f.21.2026.07.05.07.36.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:36:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262168; 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=nlTT0Zv6+Q1VR1ufK/CGHuyuiZoq5W+Y8sw9WEHE9hs=; b=I/pYRhjfsRvuj5Q4aY+cCDtawISEspDYe6ilR4spSyc3U9nU5XzYq/jpQtCtf2XQT3gMb1 2BiwMDKgfSkh6YBp0OLgMvq+yRQM7vKOiZQgUgDa/LQDswUQ3qDZiaOQfmBYYneSt/TviA 6057ydi//qzLe55tAubkeg/d6ia4K5E= X-MC-Unique: V5_COmPiOJe3yjG3umN4Iw-1 X-Mimecast-MFC-AGG-ID: V5_COmPiOJe3yjG3umN4Iw_1783262166 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262166; x=1783866966; darn=nongnu.org; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:from:to:cc:subject :date:message-id:reply-to:content-type; bh=nlTT0Zv6+Q1VR1ufK/CGHuyuiZoq5W+Y8sw9WEHE9hs=; b=aWhJFaoniXafjL7tYXU7zVzR3IunvtZNfgeXg4iSm9GHm18G1sSyyqU7/QpItawe7d j0vCx1gIjVfLS8QQOhfS20IBYFYkysH4Lol+1+7zkTUaoSTuOytZlMhxW33deSrVDp7h uQK0VPWZEVVLS3mFY/7JXJMSLfIJPn6tai3bPoxQjiS6L5rP663ah4/AGEaijegF7ECJ 2p+XMDn8Hz/Qz5fh0VK6dLCy0dZFdAN0IBzQf88ZopK85t9FjT1gSKGRQ37zQ7P1Pf/j 9KqJDaMX2iQks0awH4v980WoOWvzckO6Lrs+rF5DOQzp7Mc8TsMtYotgM81JNid8tt0N bg/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262166; x=1783866966; h=in-reply-to:content-disposition:content-type: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 :content-type; bh=nlTT0Zv6+Q1VR1ufK/CGHuyuiZoq5W+Y8sw9WEHE9hs=; b=RVB3h+ZXEtEcCGXZtmxXESD2F/oljJPJx/IJ3nIM/hEiQr7e48UNZzXP0m0bOKqSuQ quCCGKBxQ5ppMBjDHpLskFK+qlHx0zFExJYHCmTNDYSM3D5Q5NfjVWoB1k7iiWNAsP2G lH+Bozl9NUA92btc2CHQtiTXp4qI6PF+X4PxpvP+wps5dumvtDZEjFIQdPhrf/4lREXr qX12u3yD+0nkSDnbYyygQSU4m4pNv3k7gXfXSRlsA0eof+0u/pyVQUcJwHcJ2HfNi9pt qls8TGttSTtf3wwb05iacI476bQgZHuYg8HZ412SCYhasWsCY8IEXYaeEyobToEndBCC 023A== X-Gm-Message-State: AOJu0YxTlLvw9H9cmBWZXRc1YbNf5obVewYdNof6BW7pQ/HMtKrmeG8v G6bVs85Sot7bY3oBP5+Gvz239oEuxW45JQALPNvVM1kJvJ7f8vI3rHCco50svRGzuMNqUnr2Lm9 R/Lpld7v8dVO9UKrMZDGqs+s+pUgHTkBV6qn+z3eCSOAuJUKSby8AUGzscgY1Bf2yIsdQneIRog xZlb1Eh5zkyyLUWNY8qUy7GZ/DmUZ2CEWaSg== X-Gm-Gg: AfdE7cklU40UjRjcKC5XkOPNzW4a4e5HE6JmG9P+ModzjmSTaia5pHCcq+6U1qB2Owf GIjsQ5pSnR/ahs7ttxPmPsuVkq9j4pudZcedusCEvjByz6IZCfEUvTD8dITph+7W01EKHd0ds5E PphUwEJtnS+J7YIXP0deENA9C7i79gFRTbAx1djqVny1uYLtGjktovE/pMME/cS3DIrBxa2pvtn mC1GnT+flMQuqtcJLC4bSR8PepuSQPuwtlHC75UNm0W8HN/dnGDaYw64SAcLB24cVbRbsAn6wPN tnS7XnPZFxO4kO6vv2WauHHNgtufbe1JoDr0sXLjOZ63O6zX+oRKko4BYUdPt8DqaB6Vb5OKJ1m mltCEMaksZwKN3sGCGh0+7nVMs2xFkzUH X-Received: by 2002:a05:6000:46c4:b0:46d:8169:bb39 with SMTP id ffacd0b85a97d-47aad6436bdmr4685258f8f.37.1783262165792; Sun, 05 Jul 2026 07:36:05 -0700 (PDT) X-Received: by 2002:a05:6000:46c4:b0:46d:8169:bb39 with SMTP id ffacd0b85a97d-47aad6436bdmr4685230f8f.37.1783262165161; Sun, 05 Jul 2026 07:36:05 -0700 (PDT) Date: Sun, 5 Jul 2026 10:36:03 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Eric Auger , Ani Sinha Subject: [PULL 34/44] tests: acpi: arm/virt: whitelist new WDAT table Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262513469158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov Signed-off-by: Igor Mammedov Reviewed-by: Eric Auger Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260702145856.1539572-9-imammedo@redhat.com> --- tests/qtest/bios-tables-test-allowed-diff.h | 1 + tests/data/acpi/aarch64/virt/WDAT.wdat | 0 2 files changed, 1 insertion(+) create mode 100644 tests/data/acpi/aarch64/virt/WDAT.wdat diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index dfb8523c8b..135186b40b 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/aarch64/virt/WDAT.wdat", diff --git a/tests/data/acpi/aarch64/virt/WDAT.wdat b/tests/data/acpi/aarch= 64/virt/WDAT.wdat new file mode 100644 index 0000000000..e69de29bb2 --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262475; cv=none; d=zohomail.com; s=zohoarc; b=btaBNBa63KBwWFNEZBhCrGOQov7YyQqEKP/hN3C129F8zTRjIPv6eVz+tt2nk4eZv6umIm+MIo0BIkWnanQjiAr5UF+l0f9CUE/8wKG0x9w9amXo0nxYne/ll3ADqm3YJR1hWDIaRoL5+18O4XhM9ZkL6HF0jCrsEzn1Z7ZFp38= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262475; 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=6tLo5ValhhX5+3ojK35pEOt1WBonnoMN0bsSkHuXA4g=; b=jdZ+Wo4gCSR+E7ko+E6/DOt/NHw5HR1xOWmCIFXnlNe+S/6C0RnCxvlpjaJHP/v+1uSFhKt125WH7aRuyMmi03p0fKXfSdC0Kt+iO0godSRszCVuyI47vnHJzPdmtgl+o4RKrLyn8Osu3kyZgAqxL7Xx7wZcOKboe7y6OVkQiKs= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262475651116.14906423758441; Sun, 5 Jul 2026 07:41:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNx7-0008BB-RF; Sun, 05 Jul 2026 10:36:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNx6-00087o-AT for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:12 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNx4-0001Uh-Oz for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:11 -0400 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-90-pScO2svdMnCzmdRLiLf5_Q-1; Sun, 05 Jul 2026 10:36:09 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-493bfc3b84aso8825705e9.0 for ; Sun, 05 Jul 2026 07:36:08 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c63ba97csm286082175e9.12.2026.07.05.07.36.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:36:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262170; 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=6tLo5ValhhX5+3ojK35pEOt1WBonnoMN0bsSkHuXA4g=; b=eelMjmBOumefrkXfHE+bYRVrF9uioLQl6xcUI6avYWulZMXzVvh1V6LVpKvGz+SgbkpFyv jHLSSwLmut8zRjjjSFQ+OK+/sqLc0HnCe3/QBIV59Ke5HVU5urnsjspCDCWfO6hmH6+03x sGWEQN+MfX0kn7aZ4/bLuZGvQi9ZI0w= X-MC-Unique: pScO2svdMnCzmdRLiLf5_Q-1 X-Mimecast-MFC-AGG-ID: pScO2svdMnCzmdRLiLf5_Q_1783262168 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262168; x=1783866968; 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=6tLo5ValhhX5+3ojK35pEOt1WBonnoMN0bsSkHuXA4g=; b=cCh0FtjtfrK1bzGIUTLG4cHtz2TCAq3rv95JCMt1PViEYmr7X6LG374iRTH+k8Sler JJbFH6E/Ix81Gk41m+IuEY2T7BegX8d1Q2ovsl3A1lIhM6+B6/tt6ysVn9en3FqvA3Km Rz9S89G6qSfPNPuAcGNw8nDDLWSjWs2dKhnAgDyTJjYMTLfLqDA2AYj32oSC+W38AFIl dWI1tVpvM4vK76DTGnSqTWyUCADfTCqauyn/kblT0PNkRi3dRAoYMC3Qar9NjSglQETA P8urP0e2aw0iTxU8LNBbpPhbmJcw2Go2pxA1UlfoEUMRPJIJrHfLpeUWzwNRaZ18uKrU aVyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262168; x=1783866968; 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=6tLo5ValhhX5+3ojK35pEOt1WBonnoMN0bsSkHuXA4g=; b=pzb7EvKwa2yZNJDDSd5g8V7r/rlos8axDCztS6Y50wT3s8ajykv5f5tZ3u1lrziDW/ TgCGnVIzZDIfmW4IpIMdEjmjC4Pn1av8c9xROaQb705SqIUfbx2Rxj2F8Q630CHmShDi i5V0qDSKmF8gAIZNNmpq96UNGc0WqNFPhKCIPj5tPKs0NSVBkxDAnCEeUq7NCQ3QU10O 0kJrpf1flLvWKFQzpy2ymy23xxVoZr+KnFRYAv1MYflA0nh39MnS92lp+7v8k1Wr4UtS eP8lhfX0WH3LvaogiiT1VGEiUIzLARwsAYXxAs7Zg/k10rysK1HC2x0UHkYFmyQmTFgC kSWw== X-Gm-Message-State: AOJu0Yxd86WFRNiGgHbbAfMF6QjtOqcDTankfxMiV0RcAeGDk3qnI/zx LgI3tTzClos83zLXSBB/wkTDpQk6QpNUZ2J6vok2lRdk0es6rNzSK7Roowpt9fTWR+V5wwAJ3Zd Rec7/ii7cqcmygm/E1v3tTYh6ng4NLPTEbLko+ehefeWN2SGiYVHVzW2gTsqWoKJNkLCsU5xdvz k3c+UIbVA0mgihR4bMAjd1cUhoxzZRMrSg/A== X-Gm-Gg: AfdE7cnN+CkfReH8jLBNhHuea8jtM2gBdxSu6gorWNrPdFAvfK+XZMp9AuXiLaGkive eGqeQeiiZ/3QMC9WwE/MXkuN1LgyNv/87m0EPZdeWE3JPe/kJ5+kUNach/Zyj01ERibfvhaCAaa iQ4mJiOa0hvIK94XoKY0m/FlgrobQlPyj7JaUJAtWV345TfyAzj0Y9IFQJLg90NgTPXYdRi+Fbo fnMD4rWTw9gc4+66ZNQR1GfrscI/7B2zvoJs1V93HiH6dz4DzYsBciYVD42ZEQwIcuGHMJUr9rC vpNGlmBwtJ90jFDQkFve71CfdVdiSw2KuVSnEDXNvzKHanmViiHhqSYNChP4Bwk+4GCxJ3bmtH3 G5MzuXVrW+enJAyRKW8XDd3oKiqWMNF9u X-Received: by 2002:a05:600c:3493:b0:492:4363:e7d6 with SMTP id 5b1f17b1804b1-493d11fdfaamr74132065e9.37.1783262167790; Sun, 05 Jul 2026 07:36:07 -0700 (PDT) X-Received: by 2002:a05:600c:3493:b0:492:4363:e7d6 with SMTP id 5b1f17b1804b1-493d11fdfaamr74131655e9.37.1783262167295; Sun, 05 Jul 2026 07:36:07 -0700 (PDT) Date: Sun, 5 Jul 2026 10:36:05 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Eric Auger , Ani Sinha Subject: [PULL 35/44] tests: acpi: arm/virt: add WDAT table test case Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262477317158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov Signed-off-by: Igor Mammedov Reviewed-by: Eric Auger Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260702145856.1539572-10-imammedo@redhat.com> --- tests/qtest/bios-tables-test.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c index 45abd8bd8c..cee3dff31f 100644 --- a/tests/qtest/bios-tables-test.c +++ b/tests/qtest/bios-tables-test.c @@ -2295,6 +2295,25 @@ static void test_acpi_aarch64_virt_tcg_msi_gicv2m(vo= id) free_test_data(&data); } =20 +static void test_acpi_aarch64_virt_tcg_wdat(void) +{ + test_data data =3D { + .machine =3D "virt", + .arch =3D "aarch64", + .variant =3D ".wdat", + .tcg_only =3D true, + .uefi_fl1 =3D "pc-bios/edk2-aarch64-code.fd", + .uefi_fl2 =3D "pc-bios/edk2-arm-vars.fd", + .cd =3D "tests/data/uefi-boot-images/bios-tables-test.aarch64.iso.= qcow2", + .ram_start =3D 0x40000000ULL, + .scan_len =3D 128ULL * MiB, + }; + + test_acpi_one("-cpu cortex-a57 " + "-device sbsa-gwdt,wdat=3Don", &data); + free_test_data(&data); +} + static void test_acpi_q35_viot(void) { test_data data =3D { @@ -2914,6 +2933,8 @@ int main(int argc, char *argv[]) qtest_add_func("acpi/virt/smmuv3-dev", test_acpi_aarch64_virt_smmuv3_dev); } + qtest_add_func("acpi/virt/acpi-watchdog", + test_acpi_aarch64_virt_tcg_wdat); } } else if (strcmp(arch, "riscv64") =3D=3D 0) { if (has_tcg && qtest_has_device("virtio-blk-pci")) { --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262367; cv=none; d=zohomail.com; s=zohoarc; b=MeoB+MErHtiBAwV5qiwBKBqtsOCXPBZKTlds/eHs1ARtQ9l5I8niPW+mQToVJmoH+KNB4wFmyPIOWAsknAdES17iWf/cruNsQg1C1majPKgAPJeWw/PJZihY5W79YZIRHd2ALbhn3/DT4O7flZX73t9g6sQToJNLX1uPs4y73V4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262367; 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=ZZw+mxBnJsNRobqBTA/GyoILVLgdQGiI4YFVDcGE1Qk=; b=EuooCD9Q4Q0RZWW1RVrm9DPy2RfZ0w/EzCHeTUQIlFDq1EyJpCN/mRg+QrQWODSYaY2XYTf9nKfcwU5EwsEtSdhKQOJQX+bvCT/xn4PEpwEwlGymtakFJO+Ib+tvMHhmVO7B73zGj6tKPh59S7aO806kydAVaA51QJ0PLndqrhg= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262367511514.7636547021555; Sun, 5 Jul 2026 07:39:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNxB-0008JC-7f; Sun, 05 Jul 2026 10:36:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNx9-0008FI-9e for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:15 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNx7-0001Uv-BL for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:15 -0400 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-246-CVk_r9JsPBOSmdGKMqQqdQ-1; Sun, 05 Jul 2026 10:36:11 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-470cb859d96so1069052f8f.3 for ; Sun, 05 Jul 2026 07:36:11 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47a9b4d850dsm17396573f8f.0.2026.07.05.07.36.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:36:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262172; 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=ZZw+mxBnJsNRobqBTA/GyoILVLgdQGiI4YFVDcGE1Qk=; b=DyZr+GmbcwvXJv8bYIOPsUvheq8pAObPY+HYLZeF0uW0NGKdJuNW0vYgGm/3aG5jj3Dcwy 2MoxI1oxRKtP93TLRGg31W7bvF4HuHhMN0SqyU7j2XBfYqCh8NKkcJhWav3J8GC3KBMvJd 49qdbT9ln4L0hTogBIPWStQLLFU222E= X-MC-Unique: CVk_r9JsPBOSmdGKMqQqdQ-1 X-Mimecast-MFC-AGG-ID: CVk_r9JsPBOSmdGKMqQqdQ_1783262170 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262170; x=1783866970; 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=ZZw+mxBnJsNRobqBTA/GyoILVLgdQGiI4YFVDcGE1Qk=; b=GgBQgtFANxffI9nJsgUocSRaocF6Zo10E+9Hgr05irYXLd5AU8ASUPKvCSRi3eWObd IIR97FCM5kIiLWeiqZu9W1VIaWK77fihYyMGp1fysC4gpRalaTMIl5EucVBRpD7NhTEQ B78v0cZBBQjsYL8KwvAe8iBmmaZQ3MvF279OwZjVekUFtfGecSaWG+48MyIYH6dJJ/Mx GdjmLGnLieeS+9ssTKHdgK9a8oeU0WHgr6GOYhfF1sakqn5LvwLE2cAeOiow5WbbyGy6 FmQ3EEzSi803Xd8P34+uNPQqpgTqQsls0oXmm/VV2MwIlXKsjZhZxpB+5YUOHO60n247 uVBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262170; x=1783866970; 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=ZZw+mxBnJsNRobqBTA/GyoILVLgdQGiI4YFVDcGE1Qk=; b=cuf1wmdfxbf0uWheL2YqzUEJaJBpWp8/16mfhkzEgO0axRA9NsxERgmUG9+clr1qvI x9U3tI9VwHX1ERVp/HJIg2AgKpfhSV1njr80S6+IWVR2N57s/0OrxR6+zdfbp83vQovG 5i96K5UUFWdcP/USFxlrWXKpX9KUWMQhoL+ZO/GqypylYt25a6LYQd2hERNxS8sQtusE oHDa1Bz9XOngQMbB042lAPRd8PXPJ3FUFNM+eoJVcUm2Ms/PPoV1Ykb3l5wqPhrErEqD r/sG+lrExuUzQHO8oYEqk/crs/JMu25OLzPzf2SY5WKWBfcMWgx6jy+7/jtwfgVNt/hb lgJw== X-Gm-Message-State: AOJu0YyViitWpy0emPPnBK/hxFythcweq6ORh1yWMFmWXTfSjMloB6vH x5G74yKJtOP6WMhvngpaL339TuGzV2LeVmHKQck0lNM9gxx997SY9k3UxsJfSbA5TSf1q4OnSdt 0VH7m4Au2E5kruxN5BcJgVWqOeVDUdKET1fFY/WjCGFf/eGQZOP56qzrhdVRZHediedVBajlw54 BWRsBCG5pS4Rn5JIKEJVpsO9pMBH+C0EjBnw== X-Gm-Gg: AfdE7cl00xKqt08QX69KIxuCmv1l/7zLx0B8wSJ/I3/fZMeVBsDN2BFMHTBoMYT0aXV v6F2Na5Ai97lSvchGWdEd1l+w0wku71T7SdlXSmrKtUtipETwHg2UXPqVkF/F6rd+x8BYN3ujMI NHuFnsmNK69DFbbdwIE7DtYLERr7mYT1uEYP3ek9I6l1uIoRvfHyfOyKlCfZn1fjYq3VmMnVa+W EgZ1zc1bc0y79r076AiSuNrRzB51fytGGdSxhrxrh+VFUIlzDXKYF/FtrTQ9BLKomdotVtdraZs m4EBRkP/MLaSHtejJvdZYCWNmxPVdqGDIvNlElqOo8CeJfXdPQpqlo3IxWXFJgPO7r5J8+Gzr7F yVa3iQR7xwTySRNRn5wM/iYDP4OYepfW2 X-Received: by 2002:a5d:438e:0:b0:473:d65d:49c1 with SMTP id ffacd0b85a97d-47aac4ecd02mr5560127f8f.32.1783262169962; Sun, 05 Jul 2026 07:36:09 -0700 (PDT) X-Received: by 2002:a5d:438e:0:b0:473:d65d:49c1 with SMTP id ffacd0b85a97d-47aac4ecd02mr5560111f8f.32.1783262169331; Sun, 05 Jul 2026 07:36:09 -0700 (PDT) Date: Sun, 5 Jul 2026 10:36:07 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Eric Auger , Ani Sinha Subject: [PULL 36/44] tests: acpi: arm/virt: update expected WDAT blob Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262368985158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov replace blank table with a new one: [000h 0000 004h] Signature : "WDAT" [Watchdog Action= Table] [004h 0004 004h] Table Length : 00000104 [008h 0008 001h] Revision : 01 [009h 0009 001h] Checksum : 3B [00Ah 0010 006h] Oem ID : "BOCHS " [010h 0016 008h] Oem Table ID : "BXPC " [018h 0024 004h] Oem Revision : 00000001 [01Ch 0028 004h] Asl Compiler ID : "BXPC" [020h 0032 004h] Asl Compiler Revision : 00000001 [024h 0036 004h] Header Length : 00000020 [028h 0040 002h] PCI Segment : 00FF [02Ah 0042 001h] PCI Bus : FF [02Bh 0043 001h] PCI Device : FF [02Ch 0044 001h] PCI Function : FF [02Dh 0045 003h] Reserved : 000000 [030h 0048 004h] Timer Period : 00000001 [034h 0052 004h] Max Count : 000927C0 [038h 0056 004h] Min Count : 00001388 [03Ch 0060 001h] Flags (decoded below) : 81 Enabled : 1 Stopped When Asleep : 1 [03Dh 0061 003h] Reserved : 000000 [040h 0064 004h] Watchdog Entry Count : 00000008 [044h 0068 001h] Watchdog Action : 08 [045h 0069 001h] Instruction : 00 [046h 0070 002h] Reserved : 0000 [048h 0072 00Ch] Register Region : [Generic Address Structure] [048h 0072 001h] Space ID : 00 [SystemMemory] [049h 0073 001h] Bit Width : 20 [04Ah 0074 001h] Bit Offset : 00 [04Bh 0075 001h] Encoded Access Width : 03 [DWord Access:32] [04Ch 0076 008h] Address : 000000000C001000 [054h 0084 004h] Value : 00000001 [058h 0088 004h] Register Mask : 00000001 [05Ch 0092 001h] Watchdog Action : 01 [05Dh 0093 001h] Instruction : 02 [05Eh 0094 002h] Reserved : 0000 [060h 0096 00Ch] Register Region : [Generic Address Structure] [060h 0096 001h] Space ID : 00 [SystemMemory] [061h 0097 001h] Bit Width : 20 [062h 0098 001h] Bit Offset : 00 [063h 0099 001h] Encoded Access Width : 03 [DWord Access:32] [064h 0100 008h] Address : 000000000C000000 [06Ch 0108 004h] Value : 00000001 [070h 0112 004h] Register Mask : 00000007 [074h 0116 001h] Watchdog Action : 06 [075h 0117 001h] Instruction : 03 [076h 0118 002h] Reserved : 0000 [078h 0120 00Ch] Register Region : [Generic Address Structure] [078h 0120 001h] Space ID : 00 [SystemMemory] [079h 0121 001h] Bit Width : 20 [07Ah 0122 001h] Bit Offset : 00 [07Bh 0123 001h] Encoded Access Width : 03 [DWord Access:32] [07Ch 0124 008h] Address : 000000000C001008 [084h 0132 004h] Value : 00000000 [088h 0136 004h] Register Mask : FFFFFFFF [08Ch 0140 001h] Watchdog Action : 09 [08Dh 0141 001h] Instruction : 82 [08Eh 0142 002h] Reserved : 0000 [090h 0144 00Ch] Register Region : [Generic Address Structure] [090h 0144 001h] Space ID : 00 [SystemMemory] [091h 0145 001h] Bit Width : 20 [092h 0146 001h] Bit Offset : 00 [093h 0147 001h] Encoded Access Width : 03 [DWord Access:32] [094h 0148 008h] Address : 000000000C001000 [09Ch 0156 004h] Value : 00000001 [0A0h 0160 004h] Register Mask : 00000001 [0A4h 0164 001h] Watchdog Action : 0A [0A5h 0165 001h] Instruction : 00 [0A6h 0166 002h] Reserved : 0000 [0A8h 0168 00Ch] Register Region : [Generic Address Structure] [0A8h 0168 001h] Space ID : 00 [SystemMemory] [0A9h 0169 001h] Bit Width : 20 [0AAh 0170 001h] Bit Offset : 00 [0ABh 0171 001h] Encoded Access Width : 03 [DWord Access:32] [0ACh 0172 008h] Address : 000000000C001000 [0B4h 0180 004h] Value : 00000000 [0B8h 0184 004h] Register Mask : 00000001 [0BCh 0188 001h] Watchdog Action : 0B [0BDh 0189 001h] Instruction : 82 [0BEh 0190 002h] Reserved : 0000 [0C0h 0192 00Ch] Register Region : [Generic Address Structure] [0C0h 0192 001h] Space ID : 00 [SystemMemory] [0C1h 0193 001h] Bit Width : 20 [0C2h 0194 001h] Bit Offset : 00 [0C3h 0195 001h] Encoded Access Width : 03 [DWord Access:32] [0C4h 0196 008h] Address : 000000000C001000 [0CCh 0204 004h] Value : 00000000 [0D0h 0208 004h] Register Mask : 00000001 [0D4h 0212 001h] Watchdog Action : 20 [0D5h 0213 001h] Instruction : 00 [0D6h 0214 002h] Reserved : 0000 [0D8h 0216 00Ch] Register Region : [Generic Address Structure] [0D8h 0216 001h] Space ID : 00 [SystemMemory] [0D9h 0217 001h] Bit Width : 20 [0DAh 0218 001h] Bit Offset : 00 [0DBh 0219 001h] Encoded Access Width : 03 [DWord Access:32] [0DCh 0220 008h] Address : 000000000C001000 [0E4h 0228 004h] Value : 00000004 [0E8h 0232 004h] Register Mask : 00000004 [0ECh 0236 001h] Watchdog Action : 21 [0EDh 0237 001h] Instruction : 82 [0EEh 0238 002h] Reserved : 0000 [0F0h 0240 00Ch] Register Region : [Generic Address Structure] [0F0h 0240 001h] Space ID : 00 [SystemMemory] [0F1h 0241 001h] Bit Width : 20 [0F2h 0242 001h] Bit Offset : 00 [0F3h 0243 001h] Encoded Access Width : 03 [DWord Access:32] [0F4h 0244 008h] Address : 000000000C000000 [0FCh 0252 004h] Value : 00000004 [100h 0256 004h] Register Mask : 00000004 Raw Table Data: Length 260 (0x104) Signed-off-by: Igor Mammedov Reviewed-by: Eric Auger Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260702145856.1539572-11-imammedo@redhat.com> --- tests/qtest/bios-tables-test-allowed-diff.h | 1 - tests/data/acpi/aarch64/virt/WDAT.wdat | Bin 0 -> 260 bytes 2 files changed, 1 deletion(-) diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index 135186b40b..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/aarch64/virt/WDAT.wdat", diff --git a/tests/data/acpi/aarch64/virt/WDAT.wdat b/tests/data/acpi/aarch= 64/virt/WDAT.wdat index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d5adacf9114637d8803d08906ff= 1e29ac61f5fe0 100644 GIT binary patch literal 260 zcmZXOK@NgI3`O4vF`x@byg*$Mjv=3D^kCkZBU9awQJZ&p(1B&bcAwm0T&h&0RR91 literal 0 HcmV?d00001 --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262235; cv=none; d=zohomail.com; s=zohoarc; b=Iu2UvdnW5N4Tev1nDUD/oZyrxa88QE4SdW9IJdYoQxve3UPhkiritGj7jAbOey/3civMp0m3emXYL+UXEs5x5zLlXENeV/lSns2IWe/U8BvH4ax/dDXqj/df9cFK3/+QRcG4zNjMaJY9DOoVahFIJpU7E/dKKdYdU7Q1kocV3i8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262235; 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=BKcbDf1CX3VPM01pSKKAbpI0+d2M2svaEBOIYsZZCWY=; b=j6kwRHBiYjXLmYmpaePNA0lziH3QdQe22RNab66iCWvyE4tCAxb4RuBFksZqfycf/F2m+ZUobCPFjXsZmdWY9+KhvKAwmKyox4cJFH7Hj2s1TKuJ73iktwPhR+kIeBGDjI7foDQesz7IpE/uQGRd9dhL7suM6TZwWOzv6tcosOM= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262235765157.3027373553159; Sun, 5 Jul 2026 07:37:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNxL-0008S6-4F; Sun, 05 Jul 2026 10:36:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNxB-0008Jf-Dp for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:17 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNxA-0001V5-25 for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:17 -0400 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-502-RcrcLSaDPSKmbcfblVv7SA-1; Sun, 05 Jul 2026 10:36:13 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-4731a357b0aso1721366f8f.2 for ; Sun, 05 Jul 2026 07:36:13 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47aa039af67sm19443056f8f.17.2026.07.05.07.36.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:36:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262175; 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=BKcbDf1CX3VPM01pSKKAbpI0+d2M2svaEBOIYsZZCWY=; b=VqNlyIab1X++F19X+7bzdV4MP8SzPGCgtva4d97NUrdl6orG6aW2HmxGqyBsjHznE43fmf 6IpKe+V+I9qtrhQBm6Brk7NtY3WMOnoxgqEG16NJF+K1x73W8Ul8LoTecGE259WL0szEsd agTfEg3+P/LzE4kBLM24W/eZmeOJ9o4= X-MC-Unique: RcrcLSaDPSKmbcfblVv7SA-1 X-Mimecast-MFC-AGG-ID: RcrcLSaDPSKmbcfblVv7SA_1783262172 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262172; x=1783866972; darn=nongnu.org; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:from:to:cc:subject :date:message-id:reply-to:content-type; bh=BKcbDf1CX3VPM01pSKKAbpI0+d2M2svaEBOIYsZZCWY=; b=dRbXPIp0RUNuzlxmsMy+uwJnVCmYvNZsqkFMzeOzOw3kCo1UzTCmvpdBZKhT5lFVfK IaSHsZJltX8nLUNr8aWKEIKvmPGdTzKYKvP1toX/jpaHXdioYDa0xfJhedN+C7lU1QHU +gjH8JVfgJJeuTVsy4VoKXyrb9BgMRg/lo0V2o6Z3ynVMUL13MVNXA/Cv8qtU17jyIOD TDleyw/CLwHDKkxtmuKMS3wDSWh2PpeC+ojy/4mtcHugCLKM8qek9uQncNfKLxb34An0 +IjJPqN/vcFHsGzte9aM6t6G7nqDHELjAOnBtfbCQJlmAIiVlG2r/Rym96YXC7YQ+fdg yNrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262172; x=1783866972; h=in-reply-to:content-disposition:content-type: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 :content-type; bh=BKcbDf1CX3VPM01pSKKAbpI0+d2M2svaEBOIYsZZCWY=; b=aOcHaL2KNMW+iOREhYu6DlzDdWBP7OR5N93GT9s/3d1CbnHMbg/GHevqmWCerYsWJR fhiIX9He9AcuQ2PZTn41WvxGj3ExhoRdPzdqQKjKuAIf7vZGXvBE99naqDNq2P3kafaO X9URtfKvkyWm0GK3zbEy+8+gFB0JVYVaXF0PqMUaCueQvDdKdW6b+GZYu5rCA7Wie8pJ fOZiOJDy+uNMv13qvrg2p9tafKF2qsK5Cef9CzVj4qTnwwSDHwVTVOQkoflOPd0zvCkG NoHP0cX7K6z6FZ5Wh/wjrfXOUfZlYFF6K5IfElhDQyi0zhQL5VU0uSu8yE9ly2TDoMOA Lmzw== X-Gm-Message-State: AOJu0YxNOLxzaeP0EqdEUF8plFjHTt/Whk1MfbQXjQWMb8WGwZ3JL7S3 YPohHH5t8aVKeQ+3ID7Q9hGP6H1GM3QhQ7enYw0APa3wOl6bC62RFlHaOlfVLMLRExp15v2HHCi UiGo/CjOy8E0W6xZlBjjYZQLaj9/jALAuQG2RKsaeax+yRNjMvm2AOzEasQfnQ5oqh8U208Dh8X hvPFJ+DZTAXYWTP6r6F8RgDN+3Br2J5QLz9w== X-Gm-Gg: AfdE7cmf1/NPeFrxFYe+ib/GmR1a4PKQzNXUgzi0/Zqn4FYJt45QyC6Z00y4asePNdD N89Om/6qhJa8Fu3Wz5Q90MaXSMZB3tgM8RTmoEUdqgIESigLgbhh5bW1ePR1wSird7mUApDVR/K a+OXQoC0CFqrQvWqw/m7aL/lxYfjsz1fcUw5TDUOHG9Tagm+TY2HTtfeCQleQW1hvinUWBYLeqI eJ2VLOk4+XwJP7J/E0bShzE7hOSszHe2Klt7L9YEY85t5lTQDQhizrkQD5sDtcD/kP2X1+hmxUK 8HRpl5JYyL5nh6L1hkoWYy2TrlUaVoAcURDjtYl7P87JD/ULDAwNWDC6zwjZ8CYdVsSI87hd0aE tlLSY2Zw66uGyjoMnrznhNdcyvfcS/49i X-Received: by 2002:a05:6000:4811:b0:476:c622:d41f with SMTP id ffacd0b85a97d-47aadc0b977mr8277572f8f.47.1783262172148; Sun, 05 Jul 2026 07:36:12 -0700 (PDT) X-Received: by 2002:a05:6000:4811:b0:476:c622:d41f with SMTP id ffacd0b85a97d-47aadc0b977mr8277537f8f.47.1783262171513; Sun, 05 Jul 2026 07:36:11 -0700 (PDT) Date: Sun, 5 Jul 2026 10:36:09 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Eric Auger , Ani Sinha Subject: [PULL 37/44] tests: acpi: arm/virt: whitelist GTDT table Message-ID: <01ba94bb27b003d9421dec125137c5701d261c07.1783261895.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262236470158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov Signed-off-by: Igor Mammedov Reviewed-by: Eric Auger Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260702145856.1539572-12-imammedo@redhat.com> --- tests/qtest/bios-tables-test-allowed-diff.h | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index dfb8523c8b..3e9be28cc4 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/aarch64/virt/GTDT", --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262496; cv=none; d=zohomail.com; s=zohoarc; b=D5git/upjaDdwmlKFfKKlg8ni1nrYnVVoXK7dApaRR51XV7d9oNI3HyK46lTJkh7P0OsySMxh4HYr2Tw8JpNYmJyLzT6g2dzvY77EeQH8uL8bxJnKt0VyVG71dXmbDYecBywb6OkiiKjcu9/tDYFpHSMUB/mX25QDzbXfEATa1I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262496; 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=lZJhrzwj0rR5P5+aXZ0Vf5nhibC8oR9PHvHBDPY2UrI=; b=OcqF7+PWW2RyvwK3ROAds1KEKsjvTknNhpuByY7dv3KvpcKux3dkRnVTks2B0/YjT5mdv4+PPd2hZMBbK9s4gpf6BL/8+WVkVLFezuWfGV+i94cplPQB6xC2IyMYOwGm3Tpq3yT4V9IqMsZ8T4neg46+rf6hqznT9PozPz8SKlg= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262496762673.3162278719554; Sun, 5 Jul 2026 07:41:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNxY-0000Fg-RF; Sun, 05 Jul 2026 10:36:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNxE-0008QE-Gq for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:21 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNxD-0001VU-5p for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:20 -0400 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-326-ww4I156mO5C5I6dofQUpXA-1; Sun, 05 Jul 2026 10:36:16 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-493bf840a69so15255875e9.3 for ; Sun, 05 Jul 2026 07:36:15 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493ccdab3a8sm231862935e9.6.2026.07.05.07.36.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:36:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262178; 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=lZJhrzwj0rR5P5+aXZ0Vf5nhibC8oR9PHvHBDPY2UrI=; b=WeANrcFHVAK/xoA5CXvy5Im5e61hWyrt0SrhWEWAACDfUAdN4SsUApPRx36DlTNLSjl/bQ 36sqff8TV1cd3smhhOrSGXfnCHbUQd96V+CmfJy6xcFR+fSSlE8ngqgr36+0b8HY4OagKW PUFbEH8+smgzpeqdMsw6pNV3BJEnEUw= X-MC-Unique: ww4I156mO5C5I6dofQUpXA-1 X-Mimecast-MFC-AGG-ID: ww4I156mO5C5I6dofQUpXA_1783262174 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262174; x=1783866974; 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=lZJhrzwj0rR5P5+aXZ0Vf5nhibC8oR9PHvHBDPY2UrI=; b=pPNEvjSdW2uU9xD93ki2k9Nb13sQ2po1L+GPtKdkRccyCTZ8ZnOytOX4gFHbMsAuhK vIHQKasiKgrLDEdC3aFf8+otCTk/FxEYuG0kuMgdk4YiA7lNO6sJuSXwgBf598N3ojwy SJ733n7yyprsz3ttJzd2jYL0wwXjJtDn/qwcGEKfj7I6yuoHQ5by2J5W+JqQli5B7UXa TYtX7Uyzo33KKAUyM8vaoc4p5WYy8KnlSkeCxORSjVS6JmfnStPl0las2PCd0LXCjKf9 64s3mt6t4dtag2trUwilIMuIp7RI3BR5hHvsmEIvupChFap+um3bHHXaeAxTgmniQn3g gz1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262174; x=1783866974; 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=lZJhrzwj0rR5P5+aXZ0Vf5nhibC8oR9PHvHBDPY2UrI=; b=gmsmzARFRfj5S1CgXu5kupzeCpO4Xt4n1ZZxe5nqFwBxlhx0JwxIESjtD4aTp9l4ua IavRPoCFXf3FBkYJuAU2WCEuTdfeyhSn1yw5BwWa1K3e4npI+yst+VmgdEk9BboAy+/E 5KQkdTEWeAWUZt0+MPT14J1AmRmEJGEj8Fo3dSbsg5I4dkYylRPHHC5i/G6dIWMZm0Gd rKbvH3oudKgmhuaa+mqOBqhKEgdIdrY+4I+OVxxg8nRCzj37PHVQyJdyviGI9MiWo3q6 SkGEESkSAIc6nvCvoqO/sZit3Xg9ejLCfr4DTi7HzReOj58Hncm7CHijqoGt8a1Bud2q 9SGA== X-Gm-Message-State: AOJu0YzbknvkR/jO0qQgz0uE1eN5j1HkSq8s0s1LGq3hG/cdkmAvdopJ Q0PSMWm7aLJGjQoPDRPHqczfI8Sn6EG+oKmvHKeCxHB5/S1zIWWbesHaUF0ut6PjUl0DVrqmERy 0fSb2e9y81vm5EQjnr3vAo1mos0JVc6hCkB4V26nZJXp9E5LYhKwoM8gK8Nk8imXVY0B15gBUBg vj19SclskOcM4/Omwz6YNTAMRYaNcnDUxgHA== X-Gm-Gg: AfdE7ckBRXBf6CSvyhNHmmpT0zmGIQDVumzXAM+GYAFqDl9rlVDHHYkeav/4isycNm5 TZ16dJ5VJCu87EFnuRjd3U5n0AvotSTQFiUPMRUcEPMPzNe5IRXnLvQbg4aSzkrLnMcKUFMsku6 URI0Zh5S0w6yWGCAs71m8AoHiS9sl5vfClmGdMd7OnBrfuFo0OLNyxKPT6YAeS/x9ISPOlxkPtY QE3VnNmDQZgPLiHyjacDNaKvGC/mEOSI6X6PGZ908mmesC306kSDI+z8Mau2aaFTGWCz5FgtMMU W/lQgGkyglkv3Q5B30IBVujhKutsyjqlTuUvK5JP1mmM8mSvcnUaE9q0MjT80lrokM7G4xw9nkx K/7q7/qVUeXAEu3tApN/VbDb5zbDb6cNy X-Received: by 2002:a05:600c:528c:b0:493:c194:4e7a with SMTP id 5b1f17b1804b1-493d11d3d1dmr77545925e9.3.1783262174145; Sun, 05 Jul 2026 07:36:14 -0700 (PDT) X-Received: by 2002:a05:600c:528c:b0:493:c194:4e7a with SMTP id 5b1f17b1804b1-493d11d3d1dmr77545465e9.3.1783262173594; Sun, 05 Jul 2026 07:36:13 -0700 (PDT) Date: Sun, 5 Jul 2026 10:36:11 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Eric Auger , Ani Sinha Subject: [PULL 38/44] tests: acpi: arm/virt: add GTDT watchdog table test case Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262497589158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov Signed-off-by: Igor Mammedov Reviewed-by: Eric Auger Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260702145856.1539572-13-imammedo@redhat.com> --- tests/qtest/bios-tables-test.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c index cee3dff31f..5cc526510a 100644 --- a/tests/qtest/bios-tables-test.c +++ b/tests/qtest/bios-tables-test.c @@ -2314,6 +2314,24 @@ static void test_acpi_aarch64_virt_tcg_wdat(void) free_test_data(&data); } =20 +static void test_acpi_aarch64_virt_tcg_gtdt_wd(void) +{ + test_data data =3D { + .machine =3D "virt", + .arch =3D "aarch64", + .variant =3D ".gwdt", + .tcg_only =3D true, + .uefi_fl1 =3D "pc-bios/edk2-aarch64-code.fd", + .uefi_fl2 =3D "pc-bios/edk2-arm-vars.fd", + .cd =3D "tests/data/uefi-boot-images/bios-tables-test.aarch64.iso.= qcow2", + .ram_start =3D 0x40000000ULL, + .scan_len =3D 128ULL * MiB, + }; + + test_acpi_one("-cpu cortex-a57 -device sbsa-gwdt", &data); + free_test_data(&data); +} + static void test_acpi_q35_viot(void) { test_data data =3D { @@ -2935,6 +2953,8 @@ int main(int argc, char *argv[]) } qtest_add_func("acpi/virt/acpi-watchdog", test_acpi_aarch64_virt_tcg_wdat); + qtest_add_func("acpi/virt/gwdt-watchdog", + test_acpi_aarch64_virt_tcg_gtdt_wd); } } else if (strcmp(arch, "riscv64") =3D=3D 0) { if (has_tcg && qtest_has_device("virtio-blk-pci")) { --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262575; cv=none; d=zohomail.com; s=zohoarc; b=R/Fz/55Y66jnrrAarx+ktlEwgJTdshq45lB980qzItTfQJxLNtIMyMgXxNv+uRC3EzdYQteQndJkHFQ4AfvsyY10QEj+zLfwdBYQVle3IURJ7HZ4Xno3yNBr4lpe4LxpkPWiJng2H8qK+ggjDlyadmpMmNvgb/Xbx/loc7OlUmw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262575; 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=CnVUHm1T3f9cs33jF9PmuVsxOvS2TEhc45aVXWGfqyQ=; b=OUOLC/3kI7HmqYOWnSIracgXbBjYmN+t/yxNzBj9DmsRWy9PmAVs+gdv8OBHfkP53g+8Bxrau4DhkEUQx3u4fsSXqazaVxIZ5lHbcD/AKpPNkTN4gZ2hINhqkG3FXXZs3027QKLgDpDHDzPqR760CLdr2IzwxDrap4z0KK83Afw= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262575719189.78153063239415; Sun, 5 Jul 2026 07:42:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNy2-0000rH-LG; Sun, 05 Jul 2026 10:37:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNxI-0008Sg-O0 for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:25 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNxH-0001Vu-AU for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:24 -0400 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-610-vttm9YEBO5GG7hKAXgDvdg-1; Sun, 05 Jul 2026 10:36:17 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-47345535410so1824947f8f.1 for ; Sun, 05 Jul 2026 07:36:17 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47a9de1d91bsm19513666f8f.4.2026.07.05.07.36.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:36:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262182; 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=CnVUHm1T3f9cs33jF9PmuVsxOvS2TEhc45aVXWGfqyQ=; b=QYqD5vxl/rAd3bZeBBDEsdl82lx+OgMG8sC8J1ttcMsHb0Lyyb8xpDxSPBMqebz7X3Afnu z3eiLEmY+bYl7bPAtZ/gQJGVNgTvF7IKiDABQOM5t//y9F+deTQYYPGYb+bi3tJ0yaf917 Hlzh+Hllof4LG9veKXCzxUma4ESeD0M= X-MC-Unique: vttm9YEBO5GG7hKAXgDvdg-1 X-Mimecast-MFC-AGG-ID: vttm9YEBO5GG7hKAXgDvdg_1783262177 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262176; x=1783866976; 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=CnVUHm1T3f9cs33jF9PmuVsxOvS2TEhc45aVXWGfqyQ=; b=Bc/eVO3R8/Zy0ZCsk1haJ4bsSqn6dtglxra8LO8I0s+DLtwwRVibLyTtr6RBzSxd9j i2nfqDyEdktt6JfGqoIgsSpVkf8FbtNjcj0kK05cqie0rCZESImH/Xq4j6gsRRoa8oSH tEa0rKVdd7sRmnVfwGfm0JD9Zf7srSEwxFzjEal7uVAXWV5aIy9gpQhIMcy/gEJroSmv kNcIG06OTqixUOXgAkoLBptJoW5ssp6cHNmRWnCvfCezEnYq1o2zFQCQKgXUexDd3otS 93fkQyZv8D0zI9WMG3EbAZJgjI4cV5uU8dXjN27ITQK/QYLLzy++i2lLDiDodCJ0Nujk pmPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262176; x=1783866976; 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=CnVUHm1T3f9cs33jF9PmuVsxOvS2TEhc45aVXWGfqyQ=; b=awaxm8mIWrQtzuTbRKppsoYtSM8PcW2uY6IbMcHhZj9jDjQj3AvTcaZDztIZCcepHr 7Faz6hlc4j4dbfUcmjDq1D0xcGq035EP0PmHdpQT9pQhfyRt53+99ZNV72DmxACOrsRl 4rDpUmvOnL+50iRtPuSaNgfBeTLRiJREMcCq0IbNAGgWyAwd2w2lOMYW4fJnnTfNIUPT E8gScj0gRyRDA0IfVj45MLxxfu2AQLiiOeRm9S2iVx0uXZ+61u4pHSx7kScMI4uPimg1 t524g6ctvvcInj09nzI0KPKu9RvUwFf4nmNnkNtl2X7CqC3s5fdNbdIDi7wImCiUB5ix LPdA== X-Gm-Message-State: AOJu0Yz0qvzKkmMuAbnZJXzWMjLktY+47rpN/2N0wKLx0zsXNR/AT250 T6+JmV6P+rbkoP2RQFE9TlSlBhxYkEunI0RMpQzvCBjIG4XAKSS8upQnU+bswXKOKIwQ19XFGs7 y4ByMAeRfwzYPhJd4TrMN52fq2lsXQ8pBe7RMFXEKsUzwSAkFCqkDj2sRdFRU31+DTnIhLXOyiz GR+68dO5KS284TV3pq6unSh9SGbwSlKnuHeQ== X-Gm-Gg: AfdE7clzfSbs1qXM6xGCmDw+sYlHALobPvHV0eP1rC3M4ZMXHv8fx5+jrxLD9fKE3Dk MHn2SUeXY3HHmLeNYd5eqyzX2WC3nDcqcfVlN8wqTaBW1A9iS8ebAXke2GcH660DK71SKHGybJp 7rJsnu75uAHah1KMec1OfFzaFMVmI8lRXuTN0+4ooKMV3sGLzl0fm7ORay1tGNNr1t1oBosb8U9 VAgyxl25IM+WJRo+nplYqKtdw8ssjkS+MXUC1h63ZRU9B2MqivMkLZVC8UbcNAKb4nLNKOGK4xv a1eWosEeX+lBTRyKWrxShVdUXBogVJLi0XvnbB/Sbdj8nisUmAU43+w0I0stn21Iezde2xyUwCd NJiPMoqSUeTB86WF8jtn4hUGlpDnycXFh X-Received: by 2002:adf:f0c5:0:b0:474:6a5b:8606 with SMTP id ffacd0b85a97d-47aac5e2f9dmr6129549f8f.21.1783262176447; Sun, 05 Jul 2026 07:36:16 -0700 (PDT) X-Received: by 2002:adf:f0c5:0:b0:474:6a5b:8606 with SMTP id ffacd0b85a97d-47aac5e2f9dmr6129508f8f.21.1783262175751; Sun, 05 Jul 2026 07:36:15 -0700 (PDT) Date: Sun, 5 Jul 2026 10:36:13 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Igor Mammedov , Eric Auger , Ani Sinha Subject: [PULL 39/44] tests: acpi: arm/virt: update expected GTDT blob Message-ID: <7205b8ffb6566465af0628c2fd5258e26dca6b41.1783261895.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262577757158501 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Igor Mammedov Expected diff from base GTDT is an addition of watchdog timer block: [000h 0000 004h] Signature : "GTDT" [Generic Timer = Description Table] -[004h 0004 004h] Table Length : 00000068 +[004h 0004 004h] Table Length : 00000084 [008h 0008 001h] Revision : 03 -[009h 0009 001h] Checksum : 93 +[009h 0009 001h] Checksum : 39 [00Ah 0010 006h] Oem ID : "BOCHS " [010h 0016 008h] Oem Table ID : "BXPC " [018h 0024 004h] Oem Revision : 00000001 @@ -48,17 +48,30 @@ Always On : 0 [050h 0080 008h] Counter Read Block Address : FFFFFFFFFFFFFFFF -[058h 0088 004h] Platform Timer Count : 00000000 -[05Ch 0092 004h] Platform Timer Offset : 00000000 +[058h 0088 004h] Platform Timer Count : 00000001 +[05Ch 0092 004h] Platform Timer Offset : 00000068 [060h 0096 004h] Virtual EL2 Timer GSIV : 00000000 [064h 0100 004h] Virtual EL2 Timer Flags : 00000000 -Raw Table Data: Length 104 (0x68) +[068h 0104 001h] Subtable Type : 01 [Generic Watchdog Time= r] +[069h 0105 002h] Length : 001C +[06Bh 0107 001h] Reserved : 00 +[06Ch 0108 008h] Refresh Frame Address : 000000000C000000 +[074h 0116 008h] Control Frame Address : 000000000C001000 +[07Ch 0124 004h] Timer Interrupt : 00000090 +[080h 0128 004h] Timer Flags (decoded below) : 00000000 + Trigger Mode : 0 + Polarity : 0 + Security : 0 + +Raw Table Data: Length 132 (0x84) Signed-off-by: Igor Mammedov Reviewed-by: Eric Auger Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260702145856.1539572-14-imammedo@redhat.com> --- tests/qtest/bios-tables-test-allowed-diff.h | 1 - tests/data/acpi/aarch64/virt/GTDT.gwdt | Bin 0 -> 132 bytes 2 files changed, 1 deletion(-) create mode 100644 tests/data/acpi/aarch64/virt/GTDT.gwdt diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index 3e9be28cc4..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/aarch64/virt/GTDT", diff --git a/tests/data/acpi/aarch64/virt/GTDT.gwdt b/tests/data/acpi/aarch= 64/virt/GTDT.gwdt new file mode 100644 index 0000000000000000000000000000000000000000..44e6f2b18d2848f595a8c69bdb5= 4a59e1becaffd GIT binary patch literal 132 zcmXwwyA6Oq3`5@udZ_s+HDlZ%K?f37Fam?H1k-{Nf(yUca^^hc3n=3Dcmre&9SY)M2U h0D3DQ7eKED3_uCAo*U=3DC)xXm_Rp< (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262661722417.13412233544943; Sun, 5 Jul 2026 07:44:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNxm-0000YN-8c; Sun, 05 Jul 2026 10:36:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNxH-0008SW-HW for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:25 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNxF-0001Vq-Jj for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:22 -0400 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-36-yZG6lKdpNzqmuQ_d4ac6fQ-1; Sun, 05 Jul 2026 10:36:19 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-493c1bc7a70so17075645e9.1 for ; Sun, 05 Jul 2026 07:36:19 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493ccdabda3sm211307885e9.5.2026.07.05.07.36.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:36:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262181; 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=517GJyNBuZi5k0iP+IHcA4L7bP/uK04jnda2MyKM78w=; b=eNmkGFWK5QTWCU5jHLPfdifXLXdgJVuYla8nMBFP4+B8iyYmS8sbBYZVexYjjYQK8Nv/c6 2ph3H/9xPP0lRR2ArWDlnCHhkvSJ1wCtiN1h+QyWcehVCTVQw2yYuJYVDOqilA2NC2VX21 e4C0tQqODKDB8/7eNWFyaIRHYyuJTes= X-MC-Unique: yZG6lKdpNzqmuQ_d4ac6fQ-1 X-Mimecast-MFC-AGG-ID: yZG6lKdpNzqmuQ_d4ac6fQ_1783262179 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262178; x=1783866978; 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=517GJyNBuZi5k0iP+IHcA4L7bP/uK04jnda2MyKM78w=; b=PiplPxfngGyo9lc0JiK47eON3TsOMDZ1RymiyJKIy6PKKBts5qEQusKxAl8m1GIboq L0FKK8cfFTrXi7lLD46FWYTQd3rv6BIyo4igClqApMWtiqH/ATpfn3r3oq0u4WLzLjJG QOp3ANAJhjBdFqUAJO6WdnAU5ExcU6DbocuD/gglFcugcmLofS06b01OBFXPXsUMkIWn odhoDdW3QJJ3d/RU0J0XpLDE9g/uQKUUPX9C8GZ0wYv14UYMpxHNbSH54kWK0lCxGAMX k1ZKDvcWtO62jNOhi8CdUydGNM2xvWcgMSuOfSyY+adMP3LM+X1Vg2sB7HODQIPxUjsP R8Gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262178; x=1783866978; 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=517GJyNBuZi5k0iP+IHcA4L7bP/uK04jnda2MyKM78w=; b=JIEe1ZEcum8WgAt3c0r3e+TZWf+FMYVS01KxGyTjKDO+Grw9pcE09UHz/PeQtCDNhl g9i3Uxng5n8ASdZTbRevGbbaMagb3yAUpuRo8SLXq3hT3Fl4UCgI77op520LzZ/ZmgBp s9rJVzw4/bldYuojBxF0/Sya+zGJZFPY5y+tTYKXEteCfZTGSSRO/N4YNWp0i3Y2qSJr shfzf68941tfdfwpt1e/OywEvszZQqg6HqCz5g2x1gss7LEfL1nWvA0IgLiTGOm1e3gN zUhvsqoXwCyemZv935DGdGpQvNm8vXwmiue70wQmanLF5vk5jefIJBh3fGSW1CXj7DTO m2VA== X-Gm-Message-State: AOJu0YzazTX2qnZtpD70LcCT46Lm0bxP62A6I/Gv/p3h4Nq8zsakEy+5 1de6iNb/3+03Zt9siEFJ1paEiP+B719lZLjaPxpt/ml+ZkxG8WQqaTBgKYd+blzZiPUyD8Znkxc oUyY20o5TMApq1axU2z/5PZcpamxDwLQEKZkgh2osAjlc89LVGwhvjR2Bf4c2PjNE8rxIs/Sc1P SIXxxkvmNXd2objUus9sOZa3Bw5gcqxiFEDQ== X-Gm-Gg: AfdE7cmjLVAsDuJZvXopgeYw11EevKUJk9JxIuhiFLxniCZFYMuanrRaiirRC7hYPPT x7Z9u1VcPjPwGld8JPqjBl5dsofZ6/rJUyn74wdts2WiyZqj4bg5R7Ml0NVN9Fr2bKtQ1Uwa4xi 9U/ynX0bGTv0HT4SZuyZVxMMl/IvvrE0RCBZiXmub164TNsfSlp3vt2rZqDRcgtW517iMcXB2IK e2nsGBIrgz5Ig1aBCSUqAmayA3qh8lMTi5XUgzrjw04JBQrvbeD4xWNrF/6P7wxvqsZ6VAOVGml lK9/eDmVZsR4wmhxy0ZyfBLTNR35Uz2I4SirOwL4NwcVGLE8mmB5t71yCRDWFnQJJ6N52/mdbsY q/JgQdjUom1s8e+/s0juBdA8+inbyglL6 X-Received: by 2002:a05:600c:154b:b0:493:b6c2:cd96 with SMTP id 5b1f17b1804b1-493d11d9d42mr76068745e9.12.1783262178568; Sun, 05 Jul 2026 07:36:18 -0700 (PDT) X-Received: by 2002:a05:600c:154b:b0:493:b6c2:cd96 with SMTP id 5b1f17b1804b1-493d11d9d42mr76068315e9.12.1783262177945; Sun, 05 Jul 2026 07:36:17 -0700 (PDT) Date: Sun, 5 Jul 2026 10:36:15 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Demi Marie Obenour , Stefano Garzarella , Pierrick Bouvier Subject: [PULL 40/44] vhost-user: Guarantee that memory regions do not overlap Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262662402158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Demi Marie Obenour Otherwise there would be an ambiguity problem. Suppose that: 1. There is a region from [0x40000, 0x50000) with mmap offset 0x500000. 2. There is a region from [0x48000, 0x58000) with mmap offset 0xA00000. A request has address 0x44000. Which mmap offset should be used? This problem appears with both guest and user addresses. Signed-off-by: Demi Marie Obenour Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260522-vhost-user-dev-v1-1-b31646cf19b8@gmail.com> --- docs/interop/vhost-user.rst | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/docs/interop/vhost-user.rst b/docs/interop/vhost-user.rst index a704f3cb53..ae8c7ed995 100644 --- a/docs/interop/vhost-user.rst +++ b/docs/interop/vhost-user.rst @@ -214,6 +214,18 @@ fields at the end. =20 :domid: a 32-bit Xen hypervisor specific domain id. =20 +For all memory regions active at a given time: + +- ``[guest address, guest address + size)`` of one memory region never ove= rlaps + the ``[guest address, guest address + size)`` of another memory region. + +- ``[user address, user address + size)`` of one memory region never overl= aps + the ``[user address, user address + size)`` of another memory region. + +Violating any of these is a bug in the front-end. This ensures that a guest +address or user address always refers to at most one location in memory. +The front-end must remove a region before it can add an overlapping one. + Single memory region description ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ =20 @@ -745,6 +757,15 @@ The front-end sends a list of vhost memory regions to = the back-end using the ``VHOST_USER_SET_MEM_TABLE`` message. Each region has two base addresses: a guest address and a user address. =20 +Memory regions can be added via the ``VHOST_USER_ADD_MEM_REG`` message. T= hey +can be removed via the ``VHOST_USER_REM_MEM_REG`` message. These messages = can +only be used if the ``VHOST_USER_PROTOCOL_F_CONFIGURE_MEM_SLOTS`` protocol +feature has been successfully negotiated. + +Guest addresses are physical addresses in the guest. User addresses are +arbitrary opaque values, though they typically refer to userspace addresse= s in +the client process. + Messages contain guest addresses and/or user addresses to reference locati= ons within the shared memory. The mapping of these addresses works as follows. =20 --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262529; cv=none; d=zohomail.com; s=zohoarc; b=EtM+94YDFmpWBu81wflt5lvHAQpxbS8cYmJb3+ZorBVX2nei8PoycHvZHVk4nS97HiH9hmfmxRD0ARYLr43FnkDfw5ljlt5Fazc3hXEgNgxjoQAHeRZc5zgRCca6QrYTm2YcpKqslbmVxRQwLPVqUhvzgUNCqvvN1Cpm0BQHCbg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262529; 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=VL9SVSCLPpegZXGAsK+ObdkDF+yta4rye0Ei4JYBCYs=; b=DswENy8jkAA1WgOGfTWoCEPCoT+mIjKzfW5nRhVXJ3jVXszM79FvqJXH4WdWZZSZY+v6BTxhgxe68aweez404J1IkxGvvF9ePGGHstiTN2bo7nVZPZAcNz/CKlGEuUj6kRpZTlNX+pHydopQb7eYGo3hCDpH/hFivtCigkVj08w= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262529930875.5951068982588; Sun, 5 Jul 2026 07:42:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNy6-0001Ej-J1; Sun, 05 Jul 2026 10:37:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNxJ-0008WT-KR for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:27 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNxI-0001WN-7x for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:25 -0400 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-248-4jSWvkP9Otqv-u81YvYtfg-1; Sun, 05 Jul 2026 10:36:22 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-493ba771d1bso17680495e9.2 for ; Sun, 05 Jul 2026 07:36:22 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493cfb6f199sm182315125e9.3.2026.07.05.07.36.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:36:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262183; 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=VL9SVSCLPpegZXGAsK+ObdkDF+yta4rye0Ei4JYBCYs=; b=Gh3H1mWOzcAe5QQatuApA8BrtlSNEffCKliA/OVQdtWsF+jsHLXAVDjc1dggKxOd9PDC8Z 9XOU4m3QnfFoC33pk/0b6ziA3niwBIX/3/QS6teuLrcHfTPw7NNbPJgd1cZwaN6jpG+5jv Ph0Igy4PRSqknkPpDJ0qhEa/U7iZJJk= X-MC-Unique: 4jSWvkP9Otqv-u81YvYtfg-1 X-Mimecast-MFC-AGG-ID: 4jSWvkP9Otqv-u81YvYtfg_1783262181 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262181; x=1783866981; darn=nongnu.org; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:from:to:cc:subject :date:message-id:reply-to:content-type; bh=VL9SVSCLPpegZXGAsK+ObdkDF+yta4rye0Ei4JYBCYs=; b=kn5CRCC5UhZ0RHq9TbiwiTfWVqrPWU2MRtWy+cqS1JyQgCS0MHkYqsLJaD/b7PNsIh AZE2qF8gBCP1uYkSI4ySymuDNv3V9N1CYrXkIWonZNrCv3sPJvcPiqk4Za+Jw3ezHWPV +XfXRFAUHUFwGCyS5frJ6ss23aomvAWgnFTpnmWhepg4bBdoyz6ApBq33hIbeiGe8/kR v9WoMvfE3GqGVer9ENd+ZhRuRl+ovvY0YvasJo9xKiezBZPRu4NZr/T8WMpkYMvM/159 jr5UEyse9tHYBvsB/IneTBEBe1Oz4Cy/hhnruiY2ixAZgADxGBMrBu+cDo5P8z+za6hQ 74ow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262181; x=1783866981; h=in-reply-to:content-disposition:content-type: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 :content-type; bh=VL9SVSCLPpegZXGAsK+ObdkDF+yta4rye0Ei4JYBCYs=; b=QZcBNSjluq0fWSwtFEYQSIS+PlpVQczfk+svJ4JhYVXo+XdL8Aa03otrtCrS8T4z+m Zxiu35KPplmLZ8D1jufleKb2NTHRA+aK/tDqcYwgEVH5CCcpGKvyqgO/cSLX5HwIKDpo 8mXRC5Cy2XZTXs4+AT3XwB4MfX+SHnmuHbAmEfgY8cf2Qdv4k4azCaFgMvf8QsIObVa6 LTE5nOs/cs1wActFQajfJNVCW67xi68T/sR7L2ZHx5iJrsC29G908zESjodaABl08RN7 qJe8EM435K8/dhxcg1jcqdWPxm9kyK2CwbM73HDPJqLCNoVQfehTxCtaQ2NwisWIGOcI YbxQ== X-Gm-Message-State: AOJu0YzkOgTn+NokSKae+nd7H9UQ1IM2i5cHBKeK8TCO3pna20hSyVE0 A8wjNgGaFPozB/41G3duW5z7+IzCbTWn657+/Zw4IUQx2mMDb1mNI2KE5GRQWm5Fd3hSMct8y0X aoC0LYOHCfLubJkp2jW8+1SHLXH4d9/3h6tdQ2PgH3Y4/HAAApDCfJDJf8MP4GnvTxzv9nbvNLU FJe0j4dtfk9RzR+E3GcNg/rmRxirqxmyna9A== X-Gm-Gg: AfdE7cn45Q11XPoCNkWf5swoueQzR/Ol0CHrvgXqJPlNfgFN3IjT2dQ8Pas1pBhXXmf jx3zUg7nn+tR7aKwj7JdGuMQ7+ik3nkUVCV4OD2tNtCCsUHlf4IR7wB+Bc1Z5MkPO6MKz+MUjVL GRsdrIJwYVhr4kApzcVtY8EcczjIvn9z90DJd6tKT/tpNGM2SXg+Fxu+SCJn9x6veAO0pVK8C6p IZwTuD9yB8ctWj41k9o8afvGSmgbveNRQGA/eS5dtiDuLm8VHFX5eLHM1cho6o+ev7FNV3nkw2g 4Oz4+OoUyOPOPXe/oL8FMQde8fWmHUvpD/15V++m5YojwQavgIIy8RDEKR9lG2D/j3rjfTJDaSQ S1PKmWUFp9H76dVJpsow5ynUctYC5di+Z X-Received: by 2002:a05:600c:a00f:b0:490:e913:656a with SMTP id 5b1f17b1804b1-493d11fa971mr77581015e9.27.1783262181169; Sun, 05 Jul 2026 07:36:21 -0700 (PDT) X-Received: by 2002:a05:600c:a00f:b0:490:e913:656a with SMTP id 5b1f17b1804b1-493d11fa971mr77580615e9.27.1783262180687; Sun, 05 Jul 2026 07:36:20 -0700 (PDT) Date: Sun, 5 Jul 2026 10:36:18 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , helei , "Gonglei (Arei)" Subject: [PULL 41/44] hw/virtio-crypto: enforce max akcipher key length Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262531651158501 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: helei enforce the global max_size boundary for akcipher session creation Signed-off-by: helei Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260616123251.26446-2-lhestz@163.com> --- hw/virtio/virtio-crypto.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hw/virtio/virtio-crypto.c b/hw/virtio/virtio-crypto.c index 6fceb39681..79e2acb56c 100644 --- a/hw/virtio/virtio-crypto.c +++ b/hw/virtio/virtio-crypto.c @@ -216,6 +216,12 @@ virtio_crypto_create_asym_session(VirtIOCrypto *vcrypt= o, return -VIRTIO_CRYPTO_NOTSUPP; } =20 + if (unlikely(keylen > vcrypto->conf.max_size)) { + error_report("virtio-crypto length of akcipher key is too large: %= u", + keylen); + return -VIRTIO_CRYPTO_ERR; + } + if (keylen) { asym_info->key =3D g_malloc(keylen); if (iov_to_buf(iov, out_num, 0, asym_info->key, keylen) !=3D keyle= n) { --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262653; cv=none; d=zohomail.com; s=zohoarc; b=VdjIPx7YpA+kEkNU02s4xmpfV31j1L+F4W+R9HMT4RFWsN6px75DiCpHkb4/3QJdcoAWnurG6RIxOxW0RQSE+XMPSOHg1RkmNOHaJkHonBwgVO1/cCVN7z5PrdvzZ+sDnw/DVv4sHCuD//vZ9uLhPbUxDGnZmkbG0mik95ueaxg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262653; 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=KL2DF1MGtq5gbiVrCmWbVvM0UikmTGQObA8JzRTFGAY=; b=L00bJWk2a09vhNp8uppdkoSKuTP2hwyfOHRt7jfNWp0O/1bPgaanxkSlKbmdzSSJgk8A01DnsYaCiNrHbyd73ab9rUfZsjZX3+Q1MP4Qc0ncA/QAeENUpJAUJeG5zyjQFw3T0oZJaMAWXhOsYdtFbIMCFSrjipZct3ZobGxnLiI= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262653651168.6397299699306; Sun, 5 Jul 2026 07:44:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNxm-0000Vp-45; Sun, 05 Jul 2026 10:36:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNxN-00008u-CU for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:35 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNxK-0001Zj-MU for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:27 -0400 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-66-bwuJ-5cmPPyxkD9rX_qWsw-1; Sun, 05 Jul 2026 10:36:24 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-4740be00302so1740914f8f.2 for ; Sun, 05 Jul 2026 07:36:24 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493ccd9d620sm219513205e9.1.2026.07.05.07.36.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:36:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262186; 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=KL2DF1MGtq5gbiVrCmWbVvM0UikmTGQObA8JzRTFGAY=; b=gaP22wKojLCH3Cm6wt+hZL8F4bxo/s4bA36vSl+X8Rat/K7hdZ955GWi6mLMLlMjx51SHm w8sTwfAa8GqaCx2RW3OhJ49CVhbuxYuWT0V86XaWOelAYlUnECHn3ojOjTzcx6yUx24sF2 ++LRXokdUdI8wBJc4acc9dLgeFqPqTU= X-MC-Unique: bwuJ-5cmPPyxkD9rX_qWsw-1 X-Mimecast-MFC-AGG-ID: bwuJ-5cmPPyxkD9rX_qWsw_1783262184 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262183; x=1783866983; 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=KL2DF1MGtq5gbiVrCmWbVvM0UikmTGQObA8JzRTFGAY=; b=Pant4TPWE2JFEL6ZUu99Mq1bOOSZXuaQlZi77S7oeZYgOKYf2LRqLFPxPXBQayPwNM Jr7m0MnEPj9/dpDD2zOutHCCgPv9JQBLAVIKnn6VCtLsnTsU+zjngeyiTUVE60G9gjM7 O6X9XlatuVjlIGYKOJYEeGAOxAuhx+vAtq/S/VlUupOKXVXjDYBbyPhoSPCZUwOLduNS BBsU6BFxbKI3IM3feZktCnEA/LH/a9P5FGy/juPoinlja7R0HCqPoLnBtNzBazU24UYa KHLBnOdaXlKOM1GG6uUkdV7fShaoivPU+H6GUap+xEsaEWCi1mrSfYhF3cVnqDD/0FNP AUwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262183; x=1783866983; 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=KL2DF1MGtq5gbiVrCmWbVvM0UikmTGQObA8JzRTFGAY=; b=dcdSGeitxAsICl2M1Y3mllBJzUBSycoFJZVC/UCxaJU3PaVPg7four8/0rY/cfZPeJ ngLj2GBtIS8cva4/P6vw7J9XzmrlkJKPYEMMMEeQHp60uXt1qa+Nv5BfB+xweWQyFTl/ C4TcPj2BFCH6vuvllxh9PhMqm/8rs0gca6CWB6QmfPUTC7gkMnE2+LZ9dEe9lpyDZ4Ah ym7644bJfi3v7EFAqCihctp6mv9TsmwV0eeOKswpIi28DXwANclBvGIR4o8A8aBDLpMb bKYp/jW7G0aw4Eyox7rjnc3J7dBiE+HNIvsEo7ezOvNzvVVt/PUNXzuX+ZMje1ES0Pag uTzw== X-Gm-Message-State: AOJu0Yz8EZgDC7WUFN9kMsHTRPWD+fzkubvyipuOuFbhgKu5NE7rUKBO vLAWTr77IASQMJHLv8Bh8ISIDAc/EuCXdjP+hbLOwthB+9kPqP7ZM+BILgpZt0qqEEozyp3jHrZ Cms8JGEyNx5bdFD59VdWl9fobaEprsBAcMlFR9If5le+gJQ9vZ/vBsLWCp4+GpKmwGp1tsM54aI 3REmMOlYcaiP4ZWps4Tq4eVCXxNDaURtOGgg== X-Gm-Gg: AfdE7ck1BaolUPFfZH0p/SYkumAX43c+1p7IYZRmmPp1niv6G7dqxl2zc2gNbDcAf5O agdXAk4HkqOIqo/eBIKf5vWZ6aGfpH1ENrrpQbJhCKFPkYDX4GaVIVk1gdFEmGgsCQvQYJtfeEM 5IPJpD5tmo1LaXYpcd0aTD2MUbE2xoPazBtA1ULvI0nRIii8EnXZdyLTOb9fg8aIjm4LRc8bIb7 H10+qEcdq5Tg3wyS41pG4I/lZH59bVm8Ps23tXBsLuAnMkfOnrKHZohWnBfFrfCIS60z+aYHoAb wzXBIFxHh5/kzH0TvVnCtPRJGymIKCPoFqHQZc8lnSLiWmz4ST4zEy1+3GhuDo2xfRnxaAf0R6y GRv2H7qUU/C3rKXfTuHRDjsKHNJGjmTTx X-Received: by 2002:a05:600c:3483:b0:493:b782:10d9 with SMTP id 5b1f17b1804b1-493d11d7d6bmr80846105e9.10.1783262183386; Sun, 05 Jul 2026 07:36:23 -0700 (PDT) X-Received: by 2002:a05:600c:3483:b0:493:b782:10d9 with SMTP id 5b1f17b1804b1-493d11d7d6bmr80845645e9.10.1783262182779; Sun, 05 Jul 2026 07:36:22 -0700 (PDT) Date: Sun, 5 Jul 2026 10:36:20 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , GuoHan Zhao , Milan Zamazal , Stefano Garzarella Subject: [PULL 42/44] vhost-user-scmi: free vhost virtqueue array on cleanup Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262654780158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: GuoHan Zhao vhost-user-scmi allocates vhost_dev.vqs during realize, but the cleanup helper frees scmi->vhost_dev.vqs after vhost_dev_cleanup() has cleared struct vhost_dev. This turns the free into g_free(NULL), leaking the allocated vhost virtqueue array. Keep a copy of the vhost_dev.vqs pointer across vhost_dev_cleanup() and free that saved pointer from the common cleanup helper. Fixes: a5dab090e142 (hw/virtio: Add boilerplate for vhost-user-scmi device) Signed-off-by: GuoHan Zhao Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260630072728.3025097-1-zhaoguohan@kylinos.cn> --- hw/virtio/vhost-user-scmi.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/hw/virtio/vhost-user-scmi.c b/hw/virtio/vhost-user-scmi.c index 9470f68c1f..02dc088ea9 100644 --- a/hw/virtio/vhost-user-scmi.c +++ b/hw/virtio/vhost-user-scmi.c @@ -220,11 +220,12 @@ static void vu_scmi_event(void *opaque, QEMUChrEvent = event) } } =20 -static void do_vhost_user_cleanup(VirtIODevice *vdev, VHostUserSCMI *scmi) +static void do_vhost_user_cleanup(VirtIODevice *vdev, VHostUserSCMI *scmi, + struct vhost_virtqueue *vhost_vqs) { virtio_delete_queue(scmi->cmd_vq); virtio_delete_queue(scmi->event_vq); - g_free(scmi->vhost_dev.vqs); + g_free(vhost_vqs); virtio_cleanup(vdev); vhost_user_cleanup(&scmi->vhost_user); } @@ -233,6 +234,7 @@ static void vu_scmi_device_realize(DeviceState *dev, Er= ror **errp) { VirtIODevice *vdev =3D VIRTIO_DEVICE(dev); VHostUserSCMI *scmi =3D VHOST_USER_SCMI(dev); + struct vhost_virtqueue *vhost_vqs; int ret; =20 if (!scmi->chardev.chr) { @@ -252,13 +254,14 @@ static void vu_scmi_device_realize(DeviceState *dev, = Error **errp) scmi->event_vq =3D virtio_add_queue(vdev, 256, vu_scmi_handle_output); scmi->vhost_dev.nvqs =3D 2; scmi->vhost_dev.vqs =3D g_new0(struct vhost_virtqueue, scmi->vhost_dev= .nvqs); + vhost_vqs =3D scmi->vhost_dev.vqs; =20 ret =3D vhost_dev_init(&scmi->vhost_dev, &scmi->vhost_user, VHOST_BACKEND_TYPE_USER, 0, errp); if (ret < 0) { error_setg_errno(errp, -ret, "vhost-user-scmi: vhost_dev_init() failed"); - do_vhost_user_cleanup(vdev, scmi); + do_vhost_user_cleanup(vdev, scmi, vhost_vqs); return; } =20 @@ -270,10 +273,11 @@ static void vu_scmi_device_unrealize(DeviceState *dev) { VirtIODevice *vdev =3D VIRTIO_DEVICE(dev); VHostUserSCMI *scmi =3D VHOST_USER_SCMI(dev); + struct vhost_virtqueue *vhost_vqs =3D scmi->vhost_dev.vqs; =20 vu_scmi_set_status(vdev, 0); vhost_dev_cleanup(&scmi->vhost_dev); - do_vhost_user_cleanup(vdev, scmi); + do_vhost_user_cleanup(vdev, scmi, vhost_vqs); } =20 static const VMStateDescription vu_scmi_vmstate =3D { --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262387; cv=none; d=zohomail.com; s=zohoarc; b=TBBSMyxobDs64v+cPusdD0XOjTZq5R7WRdQSC196+ssik1Pf9TNG6zremd8i9wMrJphulgS6BvY7xDYmsRKxABtZSzIdSsN7D6VAO5t80u2xw2Bocsp8T6i40/WW5IqmcvxS1mkc2Q2qOG+wQgnrOJRylOnjjzZZJwIxllryb4s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262387; 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=Ek7GM06dWpHYxFJTmynh6J3zwTJAgY0ZExyx9NjFZSw=; b=Y/j0XeELBmXCc+IZiWYQv9dWTcHno8kIlYr2+4PaZ1zoDcwdon5E5wfm7pysFuf53X90SUraaJVQB5yR1wQB2emvQBLwn3ZpCYU3F2gkx/GP9LbUXsqoBiBXqGop1DxIpZ65Cct6XKlZ17C5dM7HSNLUhA/+3tTvsKSX/bIS6Vo= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262387346248.68857724769225; Sun, 5 Jul 2026 07:39:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNy3-0000tY-0O; Sun, 05 Jul 2026 10:37:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNxO-0000E1-OT for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:35 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNxN-0001cP-5H for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:30 -0400 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-298-DE5TqZ_CO9qACzWMd5bZEg-1; Sun, 05 Jul 2026 10:36:27 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-493ae2a6a72so17285285e9.0 for ; Sun, 05 Jul 2026 07:36:26 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493c636e9e9sm282059215e9.2.2026.07.05.07.36.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:36:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262188; 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=Ek7GM06dWpHYxFJTmynh6J3zwTJAgY0ZExyx9NjFZSw=; b=FWhSaibc4olAnev80r2FPuDXAoCfpONdL6QY1j8ZG4BZ5uUR+fiaZ3eFJqQmy3RCDkpa0R bq73K/ICnMNvnUPxyBcp1O+FBInU8oUb6bf/jJAyrWpTQNudKtXG3pDZczLY7ZrQl8PbBn 4UDIq2Lkcliz+3GhABvG71AD/z0NxRc= X-MC-Unique: DE5TqZ_CO9qACzWMd5bZEg-1 X-Mimecast-MFC-AGG-ID: DE5TqZ_CO9qACzWMd5bZEg_1783262186 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262186; x=1783866986; 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=Ek7GM06dWpHYxFJTmynh6J3zwTJAgY0ZExyx9NjFZSw=; b=ONtOCkqVVZB5Sfa35RKEHwKF5djDYZbJ11DJeDv0fk9y8IZXPuDYPGSS5WZNqxSgVC g/qgVG0YAoNXdFl88AiJPYTRsOSqGBtVCq2n/pska8zoQnENPxIiyf03ngbx9gZFZFeT QHACLgzKOVp4xtB4j0/ZwWk/E+h2aWrvP6dfbIfbQuAgD382hiscPNLh5Ta7m1FJfu6w utWQbkxirCffOM+qOQ5DQoSkDi9zwmQrsUut0WpA57e/4zbou5ALhhfaQNhxVndhNpfQ ST9ocjpD/f4Uf/h+dLhdzlSUeTexDF5uvbVBd3OgM4DcC5/hu37HR0FoHutt4yTRK0Y0 dANQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262186; x=1783866986; 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=Ek7GM06dWpHYxFJTmynh6J3zwTJAgY0ZExyx9NjFZSw=; b=Ga6E0T5fyuQuL77ng19VPhMqjH3qvNYaF7R4g27hy8gBRUlQDSLD23aheOMypHBsvt yLVh9HLyJbIVROEuw9lHBT9JQ4581I+3ClF6CXUg2MfQtkW2Q8IS16hEe6Tfwz+xnr13 gQGJImD609KUrtLx1v+SfMARpNXly2ahfLdNT1UWGORHW8jfzImpGEXKRI3tMksgH/En 9Rx06cm/0IRlq4sXFr7CgJldRW+2YFukklEBC1oA5RfzlyS+L1Q66+Qm+a73tyAOkC/1 fkD+KvE2uJO+Vt1OWJd7jh0JVE0sdv6Uwo6FuDU1yEg+YZzUka9Gm4e70VuBJ0oQHX/k 9i9w== X-Gm-Message-State: AOJu0YzN6uW0sRp9bCcP2tmvsuY61fyEaebB9MPDi/gfj69ssZ940znl 465iitQJ1Xj1pgaBEbsjWJpY7/an5nuEpTo+hLnHyU/5fZvL4zpf0YX8lXQKk1TluohhiwCFT+8 x8jpsgvlYVCZXKtK0sajZFuNS4+R1m+TtdEmr5xNwohcrD2JHDu9IA1cOcfLkik2rauVe+aWKmB Hp3sjqDvcyLSXDPhyFxf5qRxbG7Nj9AWGEjA== X-Gm-Gg: AfdE7clgoCF65dsEPfBHLqUJDKWVVgt5y3DqRCPTyLlhdq5XMBvxpzuAt3YcrtB+mKB EXW6VJN/ISeMTIXyDK5CoLuNZSn2O23H9LGUPS6tDztXBueoBfP5AUW04oHv4dY80WEIqgL82Ji FkkHWCc4Vgam9qFne+XsbXfIMrPbkFs03b4Igmcw8/e5pNxOV9LsIWFfq35p1LtMGoqxtOp/7dP EOgin2F8ojvggoCJ130ga/4Kvu5YW11GKqMmQ36WgOGvgDcHQ0JCMBEfTUbujESZwX0dwZJRKs3 dz2mcWyssJHs+BOpOtZoe2tfjwCkNJEW7Dbm0ndKYgw241ZLtlVeTTjlJ398CsRgafu9HDcJkOg UgKjBAyyyy1BmWJ9SudqpMF+b3rnbPupN X-Received: by 2002:a05:600c:3e18:b0:493:ad8a:e7fd with SMTP id 5b1f17b1804b1-493d11d7fd6mr73655755e9.14.1783262185727; Sun, 05 Jul 2026 07:36:25 -0700 (PDT) X-Received: by 2002:a05:600c:3e18:b0:493:ad8a:e7fd with SMTP id 5b1f17b1804b1-493d11d7fd6mr73655325e9.14.1783262185120; Sun, 05 Jul 2026 07:36:25 -0700 (PDT) Date: Sun, 5 Jul 2026 10:36:22 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Sergei Heifetz , Raphael Norwitz , Stefano Garzarella , Kevin Wolf , Hanna Reitz , qemu-block@nongnu.org Subject: [PULL 43/44] vhost-user-blk: add seg-max-adjust flag Message-ID: <5d4d0f552bcbe784d74c405d205749384be16822.1783261895.git.mst@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262389161158500 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Sergei Heifetz The virtio specification is not completely clear about seg_max and its relationship with queue_size. Some drivers (for example, the modern Linux kernel driver) rely on seg_max to set the maximum number of segments used in a request. If seg_max is set larger than queue_size, such a driver might overwhelm a virtqueue by trying to send more segments than it can handle. As a result, it either hangs or faults. One might argue that it is the vhost-user server's responsibility to set a valid seg_max value. However, due to the issue described in the previous paragraph, this value should generally depend on queue_size. That's why it may be necessary to control it on QEMU's side. This patch adds the seg-max-adjust flag. A flag with the same name already exists for virtio-blk (and it exists to solve the same problem, except that here we have a vhost-user server to consult). If seg-max-adjust is set, the final seg_max is the minimum of the value provided by the vhost-user server and (queue_size - 2). It is not enabled by default. Signed-off-by: Sergei Heifetz Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260401230548.136541-1-heifetz@yandex-team.com> --- include/hw/virtio/vhost-user-blk.h | 1 + hw/block/vhost-user-blk.c | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/include/hw/virtio/vhost-user-blk.h b/include/hw/virtio/vhost-u= ser-blk.h index 1e41a2bcdf..dee848cfd8 100644 --- a/include/hw/virtio/vhost-user-blk.h +++ b/include/hw/virtio/vhost-user-blk.h @@ -34,6 +34,7 @@ struct VHostUserBlk { struct virtio_blk_config blkcfg; uint16_t num_queues; uint32_t queue_size; + bool seg_max_adjust; struct vhost_dev dev; struct vhost_inflight *inflight; VhostUserState vhost_user; diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c index b2e46eb3f9..2e5b3ae1b1 100644 --- a/hw/block/vhost-user-blk.c +++ b/hw/block/vhost-user-blk.c @@ -66,6 +66,12 @@ static void vhost_user_blk_update_config(VirtIODevice *v= dev, uint8_t *config) /* Our num_queues overrides the device backend */ virtio_stw_p(vdev, &s->blkcfg.num_queues, s->num_queues); =20 + if (s->seg_max_adjust) { + uint32_t seg_max =3D MIN(s->blkcfg.seg_max, s->queue_size - 2); + + virtio_stl_p(vdev, &s->blkcfg.seg_max, seg_max); + } + memcpy(config, &s->blkcfg, vdev->config_len); } =20 @@ -489,6 +495,10 @@ static void vhost_user_blk_device_realize(DeviceState = *dev, Error **errp) error_setg(errp, "queue size must be non-zero"); return; } + if (s->queue_size < 4 && s->seg_max_adjust) { + error_setg(errp, "queue size must be >=3D 4 when seg-max-adjust is= set"); + return; + } if (s->queue_size > VIRTQUEUE_MAX_SIZE) { error_setg(errp, "queue size must not exceed %d", VIRTQUEUE_MAX_SIZE); @@ -624,6 +634,8 @@ static const Property vhost_user_blk_properties[] =3D { DEFINE_PROP_UINT16("num-queues", VHostUserBlk, num_queues, VHOST_USER_BLK_AUTO_NUM_QUEUES), DEFINE_PROP_UINT32("queue-size", VHostUserBlk, queue_size, 128), + DEFINE_PROP_BOOL("seg-max-adjust", VHostUserBlk, seg_max_adjust, + false), DEFINE_PROP_BIT64("config-wce", VHostUserBlk, parent_obj.host_features, VIRTIO_BLK_F_CONFIG_WCE, true), DEFINE_PROP_BIT64("discard", VHostUserBlk, parent_obj.host_features, --=20 MST From nobody Sun Jul 26 10:59:17 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=1783262461; cv=none; d=zohomail.com; s=zohoarc; b=T5EJN1kZOsTaIpVWIYLkThU4VzXgFZywMZcdZ6V0FUYi8XI/E/1pAVG4GSbjKyuXGikCYdFc5AkKpPmOEgCKw4p/f34qKUO+AHZTapH/8bJyFoBnJvMJQEzwnFQjd5R8U30UcFMb3ys/agCcWd83htpuwkX3CPDOUfc5AauPSnA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783262461; 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=RpMSj4rdk9L0MMYkgLlakUyWtfvCtO+WCOA+//P7Wc8=; b=iRPREFtHYd55eiI4Lmoi5p2yloVZHzZjlyCebGiXO7B8dmxTENEM0/HucCHvtPr47wDw/AdV1/9MvtrqUzZZd/3vnKSpKguQxWfVcsj4+PC0/riC28l8uGf3lVt21I9QkT5dtl9Z/alNKjZyNg7fDvZljo7zRmnc/OrOQFANWKk= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783262461906596.8853967523551; Sun, 5 Jul 2026 07:41:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wgNy5-00011F-5z; Sun, 05 Jul 2026 10:37:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNxT-0000Fa-Al for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:38 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wgNxQ-0001fV-1n for qemu-devel@nongnu.org; Sun, 05 Jul 2026 10:36:33 -0400 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-344--oASJh9EMjSSIhXS83xQSg-1; Sun, 05 Jul 2026 10:36:29 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-493b0fe95b6so11371225e9.1 for ; Sun, 05 Jul 2026 07:36:29 -0700 (PDT) Received: from redhat.com (IGLD-80-230-68-31.inter.net.il. [80.230.68.31]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493cce0a7cfsm207616445e9.9.2026.07.05.07.36.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 07:36:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783262191; 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=RpMSj4rdk9L0MMYkgLlakUyWtfvCtO+WCOA+//P7Wc8=; b=O3MbXAl9Wxv/pQi67EJd8o6oeAkBt35oJ2B9YDjBtvGZLmUMvxNcHQvVjn3qPV+RK4UMTq QQ4rV+9woWt6tBnxzIu2/cXhOOO2FSEjI7gczwiGB9uP6/4RE+zwKc0E83nQdhpTODRDCf joD/7HXbGYA0t2vn59/13sjdbiQ2fnQ= X-MC-Unique: -oASJh9EMjSSIhXS83xQSg-1 X-Mimecast-MFC-AGG-ID: -oASJh9EMjSSIhXS83xQSg_1783262188 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783262188; x=1783866988; 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=RpMSj4rdk9L0MMYkgLlakUyWtfvCtO+WCOA+//P7Wc8=; b=cr3rYsFkDTpRJ9zH9LIfb31Ittl0ZU6xp1NLCEV7tncQfQF3l0GkGF7HzoI1n3OXK7 QIRRHAgxYDSt8SNw9voYvUs90FOtW3yKY0TgwMTiJjJFK8IMOm+3RHaZX6g5/IlMMpUA 5HYD4osH7CuzOgKCWRc+1w1j8yPgcgcPi1eQOhuvZdzZiB0PW7nf46G2FS7kAEAHq//N PGT/CVKXg898C2mAfHPgKa3nJeQiuM3muZ7JXn3wmnqky80jFKrD3NM8av2/7GDgiCWV 2EQVltGqjkw6Nehebrpy6jd758OmqHQHnlnxzBts9sHp76RKbKCma0kpTZGiIC+U0i3s JcOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783262188; x=1783866988; 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=RpMSj4rdk9L0MMYkgLlakUyWtfvCtO+WCOA+//P7Wc8=; b=INDFgGQssMd0P/+7ZTGfhYqCtY/5YERU6wAGdycl6Sk2zccjzMfDFAZZEW4O/FfUp8 C6ZfAjufGtWrk968shLaTFEcxhjLPdNI4sL6ZoU6CyrEYTaYR62lmsVfW0cHbplqyW2k 9ffuO5pjgOd/Hn8V4umLuOMgFb0kLISPNH8Z2POE7+YXk6dCuDsIv/VUS+zmsnfMSLJC EV8m35T7HaPNwJRXv9m7MpeHVNj0vei0shddFS4sbZZzasnl1f20E2ErjPDW/DmMvoEX WDnrHDZGBPielaULXjqReMM6s3oDTxGdilSGQrR35ioyNdP3jbJfUlYe5YJ4Kacmvyxa r5qw== X-Gm-Message-State: AOJu0Yxz+Kh7OLQapMjXXZCx9yRxOoEeJWc1fnXgxYxyPcMJtpCNNhLK 9ip2W0NI+zwLnWIOHuki2SLZ7arnMyybl+48lkK0/2NU3KWfJtvL7bFBnUfk38rxP2iYzW+6F+v pp2UzoAft+tPme+GQnm8fOlrL3jWRmNhtwbcxENrsQRKmurcvNIbdu1U0B3c1r7zP1ECYyIsE7u 2IzZ313BGsfJz9CjzxOCiUlOkSAgRphq4A2A== X-Gm-Gg: AfdE7cnwn+XSlbI7GUxNuaQgFqRollhjf3Q8KTrvx4fOrvVpHdJU3w+ImP4fIK2hx2E iMrgzjFjnpaZft9vlgFqRmg/4nr4eiA7+4CqOZ1s+kQQANHBsfP3Vvr6Dm+eDaAJQsaqMVsj6i7 w5+t4ahsRD7V5lQHTxV1Q5e3iCv0cYGfPhvJZj4uQS3CfTMz/RrwxpRHLO4zx3I82UiIeZF4zRG hhJwZnVtqGfJAF71VKpL/KZjH6Ig56uyVe4xkDkoI42YIw0A5KPa2mOrl/Ve0icfmL8DsHrDNVs B611KFpVh+YGqCnZDZmK0+VHDdy48Ipi69j96v6phMFghglZD8INZCCWiqzH2B6oj7jywEep1Va 5UbRvtq+ZWo/JZw97yzNvLbtzVgSGNOox X-Received: by 2002:a05:600c:3507:b0:493:bed6:85e6 with SMTP id 5b1f17b1804b1-493d11db6b8mr76326575e9.15.1783262187984; Sun, 05 Jul 2026 07:36:27 -0700 (PDT) X-Received: by 2002:a05:600c:3507:b0:493:bed6:85e6 with SMTP id 5b1f17b1804b1-493d11db6b8mr76326155e9.15.1783262187421; Sun, 05 Jul 2026 07:36:27 -0700 (PDT) Date: Sun, 5 Jul 2026 10:36:25 -0400 From: "Michael S. Tsirkin" To: qemu-devel@nongnu.org Cc: Peter Maydell , Junjie Cao , qemu-stable@nongnu.org, Jason Wang Subject: [PULL 44/44] virtio-net: validate RSS indirections_len in post_load Message-ID: <32a90850e1e4222091df07b4b46d5f46a8b90d24.1783261895.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.51.2.2891.g4157995a80.dirty 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=lists1p.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: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_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: 1783262463558158500 From: Junjie Cao virtio_net_handle_rss() enforces that indirections_len is a non-zero power of two no larger than VIRTIO_NET_RSS_MAX_TABLE_LEN, but virtio_net_rss_post_load() applies none of these checks to values restored from the migration stream. A corrupted save file or crafted migration stream can set indirections_len to 0. Even if it also clears redirect, virtio_load() calls set_features_nocheck() after the device vmstate (including the RSS subsection and its post_load) has already been loaded, re-deriving redirect from the negotiated guest features. When VIRTIO_NET_F_RSS was negotiated, redirect is set back to true regardless of the migration stream value. The receive path then computes hash & (indirections_len - 1) /* wraps to 0xFFFFFFFF via int promotio= n */ and uses the result to index into indirections_table, which was not allocated by the VMState loader when the element count is zero (see vmstate_handle_alloc()), resulting in a NULL pointer dereference that crashes QEMU: #0 virtio_net_process_rss ../hw/net/virtio-net.c:1901 #1 virtio_net_receive_rcu ../hw/net/virtio-net.c:1921 #2 virtio_net_do_receive ../hw/net/virtio-net.c:2061 #3 nc_sendv_compat ../net/net.c:823 #4 qemu_deliver_packet_iov ../net/net.c:870 The RSS subsection is only loaded when rss_data.enabled is true (via virtio_net_rss_needed()), and the command path always produces indirections_len in {1, 2, 4, =E2=80=A6, 128}, so an unconditional check cannot reject a legitimate migration stream. Factor the validation into virtio_net_rss_indirections_len_valid() and call it from both virtio_net_handle_rss() and virtio_net_rss_post_load(). Fixes: e41b711485e5 ("virtio-net: add migration support for RSS and hash re= port") Cc: qemu-stable@nongnu.org Signed-off-by: Junjie Cao Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-ID: <20260324060100.1997-1-junjie.cao@intel.com> --- hw/net/virtio-net.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c index 2a5d642a64..f0e3beb290 100644 --- a/hw/net/virtio-net.c +++ b/hw/net/virtio-net.c @@ -1374,6 +1374,11 @@ static void virtio_net_unload_ebpf(VirtIONet *n) ebpf_rss_unload(&n->ebpf_rss); } =20 +static bool virtio_net_rss_indirections_len_valid(uint16_t len) +{ + return is_power_of_2(len) && len <=3D VIRTIO_NET_RSS_MAX_TABLE_LEN; +} + static uint16_t virtio_net_handle_rss(VirtIONet *n, struct iovec *iov, unsigned int iov_cnt, @@ -1411,14 +1416,9 @@ static uint16_t virtio_net_handle_rss(VirtIONet *n, if (!do_rss) { n->rss_data.indirections_len =3D 0; } - if (n->rss_data.indirections_len >=3D VIRTIO_NET_RSS_MAX_TABLE_LEN) { - err_msg =3D "Too large indirection table"; - err_value =3D n->rss_data.indirections_len; - goto error; - } n->rss_data.indirections_len++; - if (!is_power_of_2(n->rss_data.indirections_len)) { - err_msg =3D "Invalid size of indirection table"; + if (!virtio_net_rss_indirections_len_valid(n->rss_data.indirections_le= n)) { + err_msg =3D "Invalid indirection table length"; err_value =3D n->rss_data.indirections_len; goto error; } @@ -3427,6 +3427,13 @@ static int virtio_net_rss_post_load(void *opaque, in= t version_id) n->rss_data.supported_hash_types =3D VIRTIO_NET_RSS_SUPPORTED_HASH= ES; } =20 + if (!virtio_net_rss_indirections_len_valid(n->rss_data.indirections_le= n)) { + error_report("virtio-net: saved image has invalid RSS " + "indirections_len: %u", + n->rss_data.indirections_len); + return -EINVAL; + } + return 0; } =20 --=20 MST