From nobody Fri Aug 21 21:27:09 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=1787244935; cv=none; d=zohomail.com; s=zohoarc; b=jyQXNySMeRryhwkF2YdVT8IUfR8oXHkV9wtKwA9L5hQm3mDs5a00mAZTsrUIRaQHq+uKjr3+7vnQZqDvgBcWNKuEpwQA2Q2lxdRQxS7LUSXzYVUZ8yqfcI//RR97/34hApqIvjHBnzemQijCro6g2PN0Z7qk6BnkLNq9RnQT2J0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244935; h=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=6S7x7mnliwyjD2cUQSXzS+dP8lkV219BxBtpL7Cvczc=; b=kFZZhe/OuHlDIDiSEmQHh13jCiVrTb9X0N/b2rgb2NeS3pQ1A+DR+SNvu4kFOw6uBcwqFePOIehpxUdS64htQ3PGOEIYldemApqoqcRAvGV/rIg30IgBvPP9Fpy/Pj3ZC4HEl+64JC6riwK9pT7vC1h8EQw7wKG7etBDkWmJd4g= 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 1787244935273383.5095250101051; Thu, 20 Aug 2026 09:55:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5y0-0003fW-V0; Thu, 20 Aug 2026 12:50: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 1wx5xy-0003eT-Is for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:10 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx5xw-0005KR-FU for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:10 -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-215-2zrV4qa9N5mllL9uygEbZQ-1; Thu, 20 Aug 2026 12:50:04 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-47f4601af62so50344f8f.1 for ; Thu, 20 Aug 2026 09:50:04 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482b1441c78sm13877367f8f.2.2026.08.20.09.50.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:50:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244607; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6S7x7mnliwyjD2cUQSXzS+dP8lkV219BxBtpL7Cvczc=; b=crhHCG9w0vqkACpWWSJ/5MtSkX4Nll58SbZyonsva4+xQrfwij256IbwPJYrFOTzTrIJjV OzzGbZLvuDKfI/O+/fcbvD7OuJ8IJthoGt92QfDDdksPBEpvuSirWVL6+yGC2Xe6v9rCAS 6E0LC0zPpWq2qOMRU6g9NkSNQmXO8+w= X-MC-Unique: 2zrV4qa9N5mllL9uygEbZQ-1 X-Mimecast-MFC-AGG-ID: 2zrV4qa9N5mllL9uygEbZQ_1787244604 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244603; x=1787849403; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=6S7x7mnliwyjD2cUQSXzS+dP8lkV219BxBtpL7Cvczc=; b=M5T6eTRHQOVrXM7dUV3FSEPkVx+c3iK2FeaOWzjIyGTMQIpplyj1ySvdOVbDpdqiNt spWnoyLpdkZyyY/Q8beSBOQ6v4bF6lLzV4/uYW9ROpTFG7E7tGKIgETPgvvuvhw3Ji5X oI6jZyW/+FnigByh2/o5HK8Cfrw3IhBQKtu2uZQQd2MHf1NJGt3knCaIdfJjGeFj0HOO iNQZF0Zpu/3DUMHIxMayxD/iMt/Tss7XYlPB2mM/6pzZO+OzUWiZJCt4eCxfObq+/4/K wHPXAXuHTWcykx0FIf1v2NqPePtcPwb3WF8tDhNsgDpAP1jdCT/L4ZI6YzMG4EJzi9oI 0Q0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244603; x=1787849403; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=6S7x7mnliwyjD2cUQSXzS+dP8lkV219BxBtpL7Cvczc=; b=SaCQVt8NT7MUUWsOD03LwS9ZIOAHwOKjdHChjZ0WpebRch0xmxu7HRKP8hF5EkrDTo 0g3I8HW6VL5dmj1vpDdMfWsHtz0VnoS4iDNUU9NNtZx4mGhLKrvEhYXxiEHQPitGYugc qm2+I+tbtyfH1mIi7bdsiXf8iYaCkBh3Ukqi0mQryMLSfjufn3olmXMh5KPbb+tyUS0O gS3YYdk/K7oUrt6Ua9+5TlHEjx6amm4CbgW4j99WMbBUcN/kXqFwLaxeGmJZO35xq3lV Nygs6KsQjy0wrAsBW/SdKyqVsBDYazOfQ9xf1+Y2+amBxKMuVxFrH92L7fBmJMR2ElMJ 4+lw== X-Gm-Message-State: AFuF++k85mnRaGvhSK9HFL6nxu2HBG/g3rbhI7BVupuv2Nu/MglbrxHU CfrkMvy3HrAvxxF833uQtdDdqYcAjrURtQRywS0t1nDOjicvZLwEfCT2EjKtcAYFTWkQqdNLHSY t3kjTLcgBHKgerPDVOfkU7vBQVVxLC1ZyJF++JYRPGh3SoNAQ/FbjXBAc3mQQohr9dZ4Tis20tv gGDI6hBZG3Sk9qXxyyX0TTsEAKuEcU1pymSk/6DTNL X-Gm-Gg: AR+sD103JHuWG8hOBIQVAhek++XY8rxcKc9ZKn4xZ3NaQ13bE4vrA8gcGy31AwMrl/t t189rNKaNz3vUe9X1CeeGZuHKuA7SGYRTqjmz28VYvfVOtuQUxKjCQIw/SdESY1Avf1INLutciD vQMLKWFEKFnAqzN9ISYaB79WjfxGOh1FeDKj+HRApIz0Ex31hm6aQabkdhzMYCif/fJD6BXS1SK PdLntEG/u+vIDm3DWgfmqCBA6BZfaLTGEikyGl0U17vqF0oOOwaKXN/0Pn5oerMBwXHDK+d1AUC 7TwYyDYGGULmczN8ftkhsIqZMf6q/BGkZj7VNDinfjNQ9D2YvIptOswAzA0v5JoICQxQfZk0H12 k7r9eNn2i6Vfq7xJx0QQzW24PdqpjNIQFM96N/R723wVviFGga7mQ0vbHfazMz5q6havxP0FuC9 gjyu4= X-Received: by 2002:a05:6000:1449:b0:47f:8183:e9b8 with SMTP id ffacd0b85a97d-482b1feeb3dmr23105698f8f.22.1787244603515; Thu, 20 Aug 2026 09:50:03 -0700 (PDT) X-Received: by 2002:a05:6000:1449:b0:47f:8183:e9b8 with SMTP id ffacd0b85a97d-482b1feeb3dmr23105619f8f.22.1787244603057; Thu, 20 Aug 2026 09:50:03 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Simon Scherer , qemu-stable@nongnu.org Subject: [PULL 01/53] target/i386: Clear OF, SF, and AF for fcomi/fucomi Date: Thu, 20 Aug 2026 18:49:04 +0200 Message-ID: <20260820164957.1895963-2-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787244936607158500 Content-Type: text/plain; charset="utf-8" From: Simon Scherer helper_fcomi_ST0_FT0() and helper_fucomi_ST0_FT0() only cleared CC_Z, CC_P, and CC_C before merging in the comparison result, leaving CC_O, CC_S, and CC_A untouched from whatever they were set to beforehand. The Intel SDM documents FCOMI/FCOMIP/FUCOMI/FUCOMIP as setting OF, SF, and AF to 0 unconditionally. The AMD manual doesn't mention them at all. However, testing on multiple real Intel and AMD systems confirms all three are unconditionally cleared regardless of the comparison result or their prior value. Since fcomi_ccval[] only ever contains CC_C, CC_Z, 0, or CC_Z|CC_P|CC_C, and CC_O|CC_S|CC_Z|CC_A|CC_P|CC_C already covers every flag bit, CC_SRC can be assigned from fcomi_ccval[ret + 1] directly instead of ORing it into a masked cpu_cc_compute_all() result. Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/4133 Signed-off-by: Simon Scherer Link: https://lore.kernel.org/r/20260807062831.19618-1-scherer.simon89@gmai= l.com Cc: qemu-stable@nongnu.org Signed-off-by: Paolo Bonzini --- target/i386/tcg/fpu_helper.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/target/i386/tcg/fpu_helper.c b/target/i386/tcg/fpu_helper.c index 978eb1411b4..b812125efa1 100644 --- a/target/i386/tcg/fpu_helper.c +++ b/target/i386/tcg/fpu_helper.c @@ -550,12 +550,11 @@ static const int fcomi_ccval[4] =3D {CC_C, CC_Z, 0, C= C_Z | CC_P | CC_C}; void helper_fcomi_ST0_FT0(CPUX86State *env) { int old_flags =3D save_exception_flags(env); - int eflags; FloatRelation ret; =20 ret =3D floatx80_compare(ST0, FT0, &env->fp_status); - eflags =3D cpu_cc_compute_all(env) & ~(CC_Z | CC_P | CC_C); - CC_SRC =3D eflags | fcomi_ccval[ret + 1]; + /* OF, SF, and AF are unconditionally cleared to 0 */ + CC_SRC =3D fcomi_ccval[ret + 1]; CC_OP =3D CC_OP_EFLAGS; merge_exception_flags(env, old_flags); } @@ -563,12 +562,11 @@ void helper_fcomi_ST0_FT0(CPUX86State *env) void helper_fucomi_ST0_FT0(CPUX86State *env) { int old_flags =3D save_exception_flags(env); - int eflags; FloatRelation ret; =20 ret =3D floatx80_compare_quiet(ST0, FT0, &env->fp_status); - eflags =3D cpu_cc_compute_all(env) & ~(CC_Z | CC_P | CC_C); - CC_SRC =3D eflags | fcomi_ccval[ret + 1]; + /* OF, SF, and AF are unconditionally cleared to 0 */ + CC_SRC =3D fcomi_ccval[ret + 1]; CC_OP =3D CC_OP_EFLAGS; merge_exception_flags(env, old_flags); } --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244633; cv=none; d=zohomail.com; s=zohoarc; b=HCn5XNWJlSBD9zOzvOpJAZaoHR0kiXfNudjOAmqUuz6NG6OwBsJW9/yVRHp+0NL0Uwjf+zngXYBhX+p+0PR60c4du0uTa9q/JxB8XfyaW5x/XbTn8XgvJ2Ev49YyMuQEaYeCiX11SyS3xsIfOFqRyCie0FNiQfTy9QoWmYuIweU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244633; 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=20gk6XOZKesKo8nbqKHg9FBtClUl2/w6AAmH6nkDmwo=; b=ENSsefUgWrS8/9j4NdCLAb/pZAzC0mkgiiASsg+Em0qItFbmzxssEb6syjqnJil6VJDw+AQb+mkY55g4Fg4BQjwR4I0TXwCFdA7ZCpHBlSPHUNhTSU2BDKqDl1g8vFk5GpMKOQcbH6y6cRdIqrDBphz/5SqcCsKuhqCidrZoh8M= 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 1787244633971748.2487553346527; Thu, 20 Aug 2026 09:50:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5y1-0003fj-B7; Thu, 20 Aug 2026 12:50: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 1wx5xz-0003ej-VL for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:11 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx5xy-0005Kf-5a for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50: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-179-bWFtZJPpOy2LA2sGvVHqcw-1; Thu, 20 Aug 2026 12:50:07 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-4954b1c6310so382325e9.0 for ; Thu, 20 Aug 2026 09:50:07 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499aa17fc80sm166886685e9.14.2026.08.20.09.50.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:50:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244609; 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=20gk6XOZKesKo8nbqKHg9FBtClUl2/w6AAmH6nkDmwo=; b=MNFxKdpdPoqsWaSg7HceFOJm0xp9bvAFkbOzP4Qf130oa3tV8Kz/0K+aHYAHV/TnMfBL/F 8i2ZFMIQAeYgLY1oYMgd+qOrB2CH5+OBRYSwKivdtW9h5j+6hU5yYNfRSwgrLvK8wl561m afxuXTyHu4M6ut1dMF5EAFYPxhL5mu8= X-MC-Unique: bWFtZJPpOy2LA2sGvVHqcw-1 X-Mimecast-MFC-AGG-ID: bWFtZJPpOy2LA2sGvVHqcw_1787244606 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244606; x=1787849406; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=20gk6XOZKesKo8nbqKHg9FBtClUl2/w6AAmH6nkDmwo=; b=ZIXKa5a8agC6LEymZUGQeN/ZFyDzzMHSkeIRXjn/rfbjy/PLZlB1l39MtJHjFzfiZV P2STVwt8fwV96B9LpbFXqSrDX7TFU4HsfsNyztHhmORgpRV15jScj1FNsYOWOj3GPVbu vN8cD6BvErusM9erMdOS3ykjuyUBAPtmGRjzKMW1Ht6y6yh5oj8XOKyKtYqV2PB0+rMP ZQfiuRQ9OcJB1h3LbaItQT4XD88/asbV5xQ4e9jmX5G1Kr25ujISagze/yp3PFCzFbOa OabRJxIjC3THvHkN6XyB4rhTeRbYeR+VUHDxJr9gFTnsmd+czup6dKZjorjHNh+2cHCT WO6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244606; x=1787849406; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=20gk6XOZKesKo8nbqKHg9FBtClUl2/w6AAmH6nkDmwo=; b=G+c8LFHQ7Lzy3MglVwXGy4btXkc2z6SAym8edPJ+AwKukpTe3iIknUzfMWAk4/3IuG awXFqbmRcgD54yDRQZ5TkZ9MHTLXUO4cHOBfoTxQydnGu4i2gLFzNvhUF3LfPnua/hAH TBL0VCdDjKSY6q3g/fOdouhRX1bbOMmT7yTHN2r7oKmF+rY4fF5ax/JAoWhMrzC43WNm MkUawqqaJJUE7alWu7q6XZbB8/ihah2811+qImjQZ90O/kCE/W2WJQ7m5nZg3KVcDuj0 eSD+IR1TeoAOPImImDfZCYMMWHHE6Q0zyTOxO5e/uWoizu3RW4oy71DyfjkjDVf5Wl4n +ZmQ== X-Gm-Message-State: AOJu0YwPSxfGmSsmmlhtnQewmuUgDo+CoJYN3Me1TxjcMVNaxRGktZr4 HxSEHzwBvU5UqJDNtZ77WVartj/oL8xQyy8NXo7UqQ3PaahTW2tn6gMxK7BYE3aL02CCAbBAE5N mcnV4duBEx+733QLOd/nyIqh76MGC2wKCWqZJalePK47krS4rCViMkIkG8zyL03jXRossPXk/aE ipv8N+1enehAMKQfGndGwD7gww0yDE9nh/jqUayH7L X-Gm-Gg: AR+sD12jaYN6bxC9lf2ywaRFOmN1Os2hvJNrhTOVkmPCFRRdr+hTg4VZIoRdXxlWwv7 A/KDUlomSuKyU0LjIImoC5sNtX/5A7jsIZr0f9Wava0Hv8pis0Kc789LYbOk4dWVHk/dMg/nVSJ 4ol2Z9qVToojPymEFlJMy945Pd6FQxRSokVYXAuiSTq4EeXzzy8HWVPZraJ0CSLfgo98mXSWpkD ux1KJtz0nHxo+QgHV1ktvnMoHFuJY3PtyeMtdUVkBtWiEi8ewdVYyGhLRzmx0fwlko5qeH08aMI K/oINqzMW5m9NfCdK+svvNE1F7ENTscVzad6zaLiXIla1zwiWzXF8i6UuF2C4GzaQumWiD1WRYj XFwBJEiUEq5a6zSnG/uzsm7MqFWt7mRGuf2vVVhwL9mIF+qS+LIIcg5xbGCBvHoAgHBBUc0A9jW J3qYQ= X-Received: by 2002:a05:600c:46d1:b0:492:4e09:9fc1 with SMTP id 5b1f17b1804b1-499b8469f20mr2358555e9.15.1787244606519; Thu, 20 Aug 2026 09:50:06 -0700 (PDT) X-Received: by 2002:a05:600c:46d1:b0:492:4e09:9fc1 with SMTP id 5b1f17b1804b1-499b8469f20mr2357505e9.15.1787244605985; Thu, 20 Aug 2026 09:50:05 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Magnus Kulke , =?UTF-8?q?Doru=20Bl=C3=A2nzeanu?= Subject: [PULL 02/53] target/i386: Skip supervisor in xsave decompaction Date: Thu, 20 Aug 2026 18:49:05 +0200 Message-ID: <20260820164957.1895963-3-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787244635494158500 From: Magnus Kulke Supervisor state should be skipped b/c there is no slot in standard format XSAVE buffer for it. CET State is being migrated via MSRs and other supervisor state isn't currently migrated. Fixes: 8612deb3f4 Signed-off-by: Magnus Kulke Reviewed-by: Doru Bl=C3=A2nzeanu Link: https://lore.kernel.org/r/20260702124746.450228-1-magnuskulke@linux.m= icrosoft.com Signed-off-by: Paolo Bonzini --- target/i386/cpu.h | 2 ++ target/i386/xsave_helper.c | 13 ++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index e6a197602d8..fff701c6c42 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -655,9 +655,11 @@ typedef enum X86Seg { =20 #define XSTATE_DYNAMIC_MASK (XSTATE_XTILE_DATA_MASK) =20 +#define ESA_FEATURE_XSS_BIT 0 #define ESA_FEATURE_ALIGN64_BIT 1 #define ESA_FEATURE_XFD_BIT 2 =20 +#define ESA_FEATURE_XSS_MASK (1U << ESA_FEATURE_XSS_BIT) #define ESA_FEATURE_ALIGN64_MASK (1U << ESA_FEATURE_ALIGN64_BIT) #define ESA_FEATURE_XFD_MASK (1U << ESA_FEATURE_XFD_BIT) =20 diff --git a/target/i386/xsave_helper.c b/target/i386/xsave_helper.c index 625bae103ab..1fa3133b1a2 100644 --- a/target/i386/xsave_helper.c +++ b/target/i386/xsave_helper.c @@ -332,7 +332,7 @@ int decompact_xsave_area(const void *buf, size_t buflen= , CPUX86State *env) size_t i; uint32_t eax, ebx, ecx, edx; uint32_t size, dst_off; - bool align64; + bool align64, supervisor; uint64_t guest_xcr0, *xstate_bv; =20 compacted_xstate_bv =3D *(uint64_t *)(buf + XSAVE_XSTATE_BV_OFFSET); @@ -383,6 +383,7 @@ int decompact_xsave_area(const void *buf, size_t buflen= , CPUX86State *env) size =3D eax; dst_off =3D ebx; align64 =3D (ecx & (1u << 1)) !=3D 0; + supervisor =3D (ecx & ESA_FEATURE_XSS_MASK) !=3D 0; =20 /* Component is in the layout but unknown to the guest CPUID model= */ if (size =3D=3D 0) { @@ -433,8 +434,14 @@ int decompact_xsave_area(const void *buf, size_t bufle= n, CPUX86State *env) return -E2BIG; } =20 - /* Copy components marked present in XSTATE_BV to guest model */ - if (((compacted_xstate_bv >> i) & 1) !=3D 0) { + /* + * Copy components marked present in XSTATE_BV to guest model. + * + * NB: Supervisor state is skipped b/c there is no slot in the + * standard format XSAVE buffer (CET state is migrated via MSRs, + * others supervisor state isn't migrated). + */ + if (((compacted_xstate_bv >> i) & 1) !=3D 0 && !supervisor) { memcpy(env->xsave_buf + dst_off, buf + xsave_offset, size); } =20 --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244707; cv=none; d=zohomail.com; s=zohoarc; b=iu5Bs4La/6U7f5o4gY5B8rivvboc791UCcYZFTfQzl0voqk7l0IhLY/iWjDF6TkOzuOJmzjo7grsAi3yFuA/bRVTOH0qxGSuhB8uBfhXqAjF/1OFhcg1+g2bUXSBYVJXn6vkTMwDdZkiyta6NXeYMI+3e/hQcvXWhEXmEGCmEqA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244707; 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=3sev1IQ60CGvt7Ba+QHHArfkx7BZ9Sd4nGpl4k53gxI=; b=jSS1mqHn9iyNUEHkWzamsc05wSPaE7B4ovIjmZoY8ma4YuesPC132el6Zrgm0ZFp/IHIVh90vi8qVIjJnTBaG2bUVhJXnEnU2bAEvJ2Ix0n9WIcGIsYCvCG9RMfIa9yJEfDZ1PreUMJxaxxulXdWInk6YPI97Cjkff0v0K26qhc= 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 178724470722392.61331451248145; Thu, 20 Aug 2026 09:51:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5yC-0003h8-Cn; Thu, 20 Aug 2026 12:50: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 1wx5yA-0003gF-Og for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50: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 1wx5y9-0005NN-9C for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50: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-516-alxmhis-N3ma-Uap7uTtUg-1; Thu, 20 Aug 2026 12:50:13 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4996832e7b4so9048295e9.1 for ; Thu, 20 Aug 2026 09:50:13 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499aa17f202sm145494555e9.13.2026.08.20.09.50.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:50:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244620; 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=3sev1IQ60CGvt7Ba+QHHArfkx7BZ9Sd4nGpl4k53gxI=; b=Uf31TjKvsHGaM/2kk+mfdflSecAO5OHIZFfvJ+5EH9aSs+2LCyiMVvpCrzeszW5zjjwdwJ pYp9GtjFgoU139dufOK1enzK9qszgc66UdZIqlnBbLXq41IqJbJeWfI2O0PFOxsRDKRvtV D7Ix640z80DVYvrPe5BsjeqWCSPUJsE= X-MC-Unique: alxmhis-N3ma-Uap7uTtUg-1 X-Mimecast-MFC-AGG-ID: alxmhis-N3ma-Uap7uTtUg_1787244612 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244612; x=1787849412; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=3sev1IQ60CGvt7Ba+QHHArfkx7BZ9Sd4nGpl4k53gxI=; b=pLS422gKW4GXRSMbNV25jHLnSn/+TQn7a2ZNFcPM4M7b3xrgXZnFRugHFQugcOsqRQ 47jjy0teXbnUyGolLaSq3x810ap1I+dNnSWcv9qqrnv0Q65UxQgdN5YkV5wxCPgslDai wL/67qGqCdPrOs4Dldi6tsU8GwHEyDJ2DbY1pXProzfPGb84Rsku/F4OajqsafxFbcnk M3eM41td+Zj+qAwDCRhLoK16is/rOaTQPHAq2F3UyJ8Y1qOBiycwq0N9v6SyntbYeaRL 8JI4LLuBsDyMsiU2gNgXmdaQ1T/TItWhY0Svhk4OeICjj40BRMS9vCQ1/i2C1Ze8ExvA BWwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244612; x=1787849412; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=3sev1IQ60CGvt7Ba+QHHArfkx7BZ9Sd4nGpl4k53gxI=; b=mLhDDUkJf4w0c/lqzwUNraxdJce/e0x8NIdjwQP7a4sv5N6XI/DdCSaHsVP0l643Yb BfXYdkah2QBJy+hF9C4IZlXr4amR8oKql2SV+QaYS+m2eGSrSo/yqk9H00yCyAfk+2sb /21SxRmmGI6vu0o4nhmD0ibtmVG0AOclSZQav6PhjpeI7m+4W/bKYGfPf+F3nRxEU116 ouc1rZ8+uPUH9rNkTJmofOql6CDN1U2/aH7b/v/R9E7OFFViju/D1x60sTNXpQMlgRaC cbZ4eeJyuK1soMCRWeaC5GtMjM8sktJS6BgLRnU4+uGQuajEvA4AKDHHn0ZUVry9dm0g 0zMw== X-Gm-Message-State: AOJu0Yzsi55Aw5FtwhDVoIuYgqSc3Vb7m/Rzap9zlKiv4tEQq0ubboAg TobDl8zjybDCLtF6H7yeVRZ2Gu8S1UwQX6RJgh7EzyPjuxu1TqQ15jQdVelHc52m/poZOnNkafI NTLVHSu6HkmKVzkSdIiBU2PYNFAcF2wyPumrp5cgBqMoPqVclLYJ2Ct/tAFjx/F97Cuasr4hWKn jn4Q9d9pUzwSXw6iRECSUFgvExhgnUtMdYx8kDxjUT X-Gm-Gg: AR+sD11fu3r7XsRtWuzdfzfRwfFa8AU93kGWsr+v80VVeP5HhvTewCtBN2D42Up5AUj ueo3ddKvnYSc/4yh2XxdL8xcggxnjvOUVYJq1g9uweLb9TIHV7oGYJfy2mn/k0bd6u1ZxfN/Qqe FDxhYk8ujZnhW8HyfjXHJY+z0kT0YIBlLTQoZGyPAuE/chqf3KyW1AKf/7rfBOSmwij5AyRJkTY FBS+NtsDhPZutD2y3Xnabytjik+a1teXOym0Rc0txdKL/I4Ae+WDTi7mPJ8BU+WkrFz5/j6eeU8 v6dsAlEU8B+y8bU6QTWUVrgqidOBeVWvkWdiP2IfR8ezzcE2J9Y6xflCxaVvbCfrUevc0J1MJOG kVwRhrzjc7ymfb1D817tXl5Ny8lzkSbyMwyBWi47VWXS414D3mWlK4Sv3tWafRomI62zJMgUHBq 9m1Zk= X-Received: by 2002:a05:600c:674a:b0:499:5f80:83ac with SMTP id 5b1f17b1804b1-499b06cbaf2mr130148215e9.7.1787244612234; Thu, 20 Aug 2026 09:50:12 -0700 (PDT) X-Received: by 2002:a05:600c:674a:b0:499:5f80:83ac with SMTP id 5b1f17b1804b1-499b06cbaf2mr130147385e9.7.1787244611815; Thu, 20 Aug 2026 09:50:11 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 03/53] target/i386: use ESA_FEATURE_ALIGN64_MASK Date: Thu, 20 Aug 2026 18:49:06 +0200 Message-ID: <20260820164957.1895963-4-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787244707624158500 Do not hardcode bit 1. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Paolo Bonzini --- target/i386/xsave_helper.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/target/i386/xsave_helper.c b/target/i386/xsave_helper.c index 1fa3133b1a2..666a2810029 100644 --- a/target/i386/xsave_helper.c +++ b/target/i386/xsave_helper.c @@ -382,7 +382,7 @@ int decompact_xsave_area(const void *buf, size_t buflen= , CPUX86State *env) =20 size =3D eax; dst_off =3D ebx; - align64 =3D (ecx & (1u << 1)) !=3D 0; + align64 =3D (ecx & ESA_FEATURE_ALIGN64_MASK) !=3D 0; supervisor =3D (ecx & ESA_FEATURE_XSS_MASK) !=3D 0; =20 /* Component is in the layout but unknown to the guest CPUID model= */ @@ -394,7 +394,7 @@ int decompact_xsave_area(const void *buf, size_t buflen= , CPUX86State *env) */ host_cpuid(0xD, i, &eax, &ebx, &ecx, &edx); size =3D eax; - align64 =3D (ecx & (1u << 1)) !=3D 0; + align64 =3D (ecx & ESA_FEATURE_ALIGN64_MASK) !=3D 0; if (size =3D=3D 0) { error_report("xsave component %zu: size unknown to both " "guest and host CPUID", i); @@ -530,7 +530,7 @@ int compact_xsave_area(CPUX86State *env, void *buf, siz= e_t buflen) host_cpuid(0xD, i, &eax, &ebx, &ecx, &edx); size =3D eax; src_off =3D ebx; - align64 =3D (ecx >> 1) & 1; + align64 =3D (ecx & ESA_FEATURE_ALIGN64_MASK) !=3D 0; =20 if (size =3D=3D 0) { /* Component in host xcr0 but unknown - shouldn't happen */ --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244636; cv=none; d=zohomail.com; s=zohoarc; b=ALPulGE6cA1p2W8fHP06YURqu0U59EOdTH2Db8fmC3OeHzZZbA+JzmrYv6p+b9Akm7poIlgsJXd9HB/wQR7+HuCYDo4Qaetzjtqeyz3I9NbAU58IlrBkxUBR9tOzeXLjEPEgJtBAmeyegspNU6eA0iVj9T1POx21C4w1jjKOxh0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244636; h=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=jHcQ+5MsxeOy0E6QUpuQYiOF83NOeZ6t66HKr1uZkgc=; b=GCH0l8HFblMEL0jSQ1t6AZlF7vUWyqhRIxVgXbpQps3Xe3ujH4v+KAdCEGAQ7giN7cZGdQtwDtwWCVbkbKqkjABj0va2PFATPrTD2B5qODFmZ7FKwTDw+ecezOsqDw0SH0k0jQgpCbNUA/GY7fCb6L8U4rsxgl7V9+OOKAXLQtU= 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 1787244636470309.6277187277153; Thu, 20 Aug 2026 09:50:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5yB-0003ga-AM; Thu, 20 Aug 2026 12:50: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 1wx5y9-0003g6-I7 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:21 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx5y7-0005MZ-PN for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:21 -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-191-4k3p2fLYNBWtfv358Ndm0Q-1; Thu, 20 Aug 2026 12:50:15 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-499a7993a9bso265125e9.1 for ; Thu, 20 Aug 2026 09:50:14 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499aa0e473dsm145979715e9.15.2026.08.20.09.50.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:50:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244618; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=jHcQ+5MsxeOy0E6QUpuQYiOF83NOeZ6t66HKr1uZkgc=; b=FUQ6Tv3lpDeggBRydNEMbm/4lSmNyDAskpUPXcj3eBJHZ3p6RPJrru33I61YlSTdGyaCQN b+6xyToge0ubNfJoDTdArdUM0ssSOn7yLczM82G7gU6RKcovYw8HfUCvztNzLlGGJgeifs 3KzRK57wx0+w7MGGDnv55A/neZhsanQ= X-MC-Unique: 4k3p2fLYNBWtfv358Ndm0Q-1 X-Mimecast-MFC-AGG-ID: 4k3p2fLYNBWtfv358Ndm0Q_1787244614 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244614; x=1787849414; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=jHcQ+5MsxeOy0E6QUpuQYiOF83NOeZ6t66HKr1uZkgc=; b=ebmcuA032vZYudTzcs1a2YryJfXEXC69+KI+qFKOL1nFNvQcv/0yLv50TYm6Fx7dOk cad9Q9MZ/CA70hyOAOtt2aTNZSNll2wfQlkPd8EXbfTwKIbfCnbOi8hH2F1J1IpNg3DO di5IKFCQa6yCDx+zjJ6pKUOggMH/LUmHdrZipoyGegE/R6X9hjosMGhidXizuAQkCJd2 t9Bma4zNZw8C9eXWLQqf5sN3jj7NrWUS1JGm3V4jEG+UAWWzxPuqYSID+xrlVVgiadgy iud/JOhw1++4K5IyjdLSlRRoWBsFeEQ/+KMoneD3mtryz/ldu5NCiJf0tH4jpx3S1zMF WqIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244614; x=1787849414; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=jHcQ+5MsxeOy0E6QUpuQYiOF83NOeZ6t66HKr1uZkgc=; b=jDDt4pcq7c+EekkE8l0vLcaP0nQrGfR56lTXfHqw8qMNys40Cb9IY6Gs+O6RvQx/p+ y0KHyNT5PEJvqYGVpJ8lBMUhHCutp9/bO25vi3LlEvPUmu36bGVApU074U5UOrLS23oP qRb2ktSSUYHrLZqw4nsVB3/oIqY9H0yf58FEw/7tjCg+AfqtHLAmTo+674W+NkJHjms1 n7j8viMOlGg2Kqh7a3rX4/CyYlbVbQDCPHzP89CM9zOSqhuhxlCuvMQJmLIzpXoF25LE zn0n+qClbq8GUDzUtSTbd+w6eB8ja8I90WXY2Ert217jUfffjAkysWg8a9HWZbcVOwor sV4g== X-Gm-Message-State: AOJu0Yyt8ibZ+eGiTk0HT892EZ4FWpyKzoY/H0rzUJQyoHpdZCN5lXzJ /GE9sFRE3CtrcL+TPV4ulr1DmgzKGOq4yU2HVhlACRkb2ljLlkSZEFWu0y7ijbK1F9anLfUzh1Q 0dMbKB+HEqwup8f8aqmy8+aKbfE21BmmzWt2dxLIkV8AcP7uBh+ULlT7hHvNqrYTYynRCPdKTdU yPk/7JhNKM+mlFQUT4nG5oNBCfegr1Czz5ch6bzc48 X-Gm-Gg: AR+sD1082aAdyiwsSRw+SnPyajQ5zlQBMnjZ3utJNbJl+gfKIt4p18EjUiabPl5+HnJ VwxB/UIM4EXdOR7/tneEwrk+vttwmukNIwbGIjza05CT0/cb/2TCw9W2SyPwSTPHtvXjAIxsTcT nWzaLutIFHu6ks+ZeKdSI2GKtkbPRsHnsMBR31ZVLQU5bVNnF4CUtmAFmqDvGyxnkw477S0Dg8p T7pmxbZMTXx9eA8C03ZwOMHB7jStOatWpjqHnD0WaLjHJ5y1PV/oej9WJ6WkV1Y5cjvYEbwIofA n+8lWwE6ByTFtrUPdnNqcv3J3NYg6lpI2/0NJG+nzbBKjRcRkO6Ef9jIhNlf916AUxBqbS4C2aV LroSQgXkorXuNUnTEspb5Kllcp78iWVtG1o2Uc+HLSgzTvrL0wFI3i1iGUcAF1cSiEvG1qFyKsN clHOQ= X-Received: by 2002:a05:600c:5487:b0:499:79b9:e226 with SMTP id 5b1f17b1804b1-499b821831dmr7087735e9.0.1787244613926; Thu, 20 Aug 2026 09:50:13 -0700 (PDT) X-Received: by 2002:a05:600c:5487:b0:499:79b9:e226 with SMTP id 5b1f17b1804b1-499b821831dmr7086535e9.0.1787244613475; Thu, 20 Aug 2026 09:50:13 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Simon Scherer , Richard Henderson Subject: [PULL 04/53] target/i386: fix incorrect decoding of EXTRQ_i Date: Thu, 20 Aug 2026 18:49:07 +0200 Message-ID: <20260820164957.1895963-5-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787244637352158500 Content-Type: text/plain; charset="utf-8" From: Simon Scherer The decoding of the extrq instruction with an immediate operand (EXTRQ_i) is incorrect. Per the AMD manual the instruction encoding looks as follows: EXTRQ xmm1, imm8, imm8 66 0F 78 /0 ib ib The /0 indicates that the "Reg" field of the ModR/M byte must be equal to 0 and the XMM register operand is specified by the "R/M" field. However, qemu incorrectly uses the "Reg" field to extract the register oper= and. This patch instead extracts the XMM register operand from the "R/M" field. Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3611 Signed-off-by: Simon Scherer Reviewed-by: Richard Henderson Link: https://lore.kernel.org/r/20260625155613.192643-1-scherer.simon89@gma= il.com [Check for the reg field to be 0. Make decoding of REPZ+66 consistent between 0F 78 and 0F 79. - Paolo] Signed-off-by: Paolo Bonzini --- target/i386/tcg/decode-new.c.inc | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/target/i386/tcg/decode-new.c.inc b/target/i386/tcg/decode-new.= c.inc index ac181308ca4..ac5964b95de 100644 --- a/target/i386/tcg/decode-new.c.inc +++ b/target/i386/tcg/decode-new.c.inc @@ -603,23 +603,33 @@ static void decode_0F77(DisasContext *s, CPUX86State = *env, X86OpEntry *entry, ui =20 static void decode_0F78(DisasContext *s, CPUX86State *env, X86OpEntry *ent= ry, uint8_t *b) { - static const X86OpEntry opcodes_0F78[4] =3D { - {}, - X86_OP_ENTRY3(EXTRQ_i, V,x, None,None, I,w, cpuid(SSE4A)), = /* AMD extension */ - {}, - X86_OP_ENTRY3(INSERTQ_i, V,x, U,x, I,w, cpuid(SSE4A)), = /* AMD extension */ - }; - *entry =3D *decode_by_prefix(s, opcodes_0F78); + static const X86OpEntry opcodes_0F78_f2 =3D + X86_OP_ENTRY3(INSERTQ_i, V,x, U,x, I,w, cpuid(SSE4A)); = /* AMD extension */ + static const X86OpEntry opcodes_0F78_66 =3D + X86_OP_ENTRY3(EXTRQ_i, U,x, None,None, I,w, cpuid(SSE4A)); = /* AMD extension */ + + entry->gen =3D NULL; + if (s->prefix & PREFIX_REPNZ) { + *entry =3D opcodes_0F78_f2; + } else if (s->prefix & PREFIX_REPZ) { + /* undefined */ + } else if (s->prefix & PREFIX_DATA) { + int op =3D (get_modrm(s, env) >> 3) & 7; + if (op =3D=3D 0) { + *entry =3D opcodes_0F78_66; + } + } } =20 static void decode_0F79(DisasContext *s, CPUX86State *env, X86OpEntry *ent= ry, uint8_t *b) { + entry->gen =3D NULL; if (s->prefix & PREFIX_REPNZ) { entry->gen =3D gen_INSERTQ_r; /* AMD extension */ + } else if (s->prefix & PREFIX_REPZ) { + /* undefined */ } else if (s->prefix & PREFIX_DATA) { entry->gen =3D gen_EXTRQ_r; /* AMD extension */ - } else { - entry->gen =3D NULL; }; } =20 --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244737; cv=none; d=zohomail.com; s=zohoarc; b=QKCHnlmRsrWAF3kzFca3mA/3gyttF8XvdDqs5IovXGSUUfgIxx1cBiGqjd3BWGGf+3OtbFlVHvVYEFwUORbmDjHb0LuD71wDw1PGDqXygDoZkH1T0BQVZXj4VRig6CtY6AM0kyxXhxe7QIw1kD1eqbN2ciRHFN3owOlFMWSx8ok= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244737; h=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=fTmJhe/AusBDZv/xlRqegxoTU1hoDmEdKft2Fbuo4m4=; b=lxwsSE5lUfdgPIYhgBhnb/sAXH8xOEEbWeXKT+9J6o/01cHu11Kz2U8QovdTj0w1h/IOEC9yx7+vGNGn7f81mSXbkKYn6r7vyH6MEgt6w/xwx14eFhuWRkWJaP5eVmDKPcknK/5wJTOb7/WO+6WyaseCJgWEJ0Oj+S1gfyVzVGw= 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 1787244737327835.5399537648857; Thu, 20 Aug 2026 09:52:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5yC-0003hM-Q7; Thu, 20 Aug 2026 12:50: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 1wx5yB-0003gR-1v for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:23 -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 1wx5y9-0005NK-6B for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:22 -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-662-HGycR6q6OhGG22nfKRBTJg-1; Thu, 20 Aug 2026 12:50:19 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-496b6f97676so220885e9.2 for ; Thu, 20 Aug 2026 09:50:19 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499b2b35386sm45588625e9.4.2026.08.20.09.50.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:50:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244620; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fTmJhe/AusBDZv/xlRqegxoTU1hoDmEdKft2Fbuo4m4=; b=KUy27QGO5Zp5E+kAe260XCnXB1d1CUEz5a6itQzx3au60GX1oMp677dQ0cJ3vrJJGifA9r JqLijhQ31U3T/bTmRjU/KyhpU5j55cx/QqPE1UGhKteS+xbFUTz0nwGEI63anCfSJ1aMsZ bpbMKemIu44o9MGtxTqCYe+jt+O4Mcw= X-MC-Unique: HGycR6q6OhGG22nfKRBTJg-1 X-Mimecast-MFC-AGG-ID: HGycR6q6OhGG22nfKRBTJg_1787244618 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244618; x=1787849418; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=fTmJhe/AusBDZv/xlRqegxoTU1hoDmEdKft2Fbuo4m4=; b=iymXFyhzbsjDShJfRlen/buRJeDCvZP5nKtZ0mK4GSlGvjPLNqR7TKhG4QPYEamWHF CSNM4z6PITpvlRCiLQrq7WO0zekMPfwbQvI7p5VAXR17z2qS5UV70KvA2u/TIpWCgyOy 1B6zIfgogT0Hpd5yKYNDXmc2Dk7iJmp56JKe3X+0ETH7G9Gn9/u3iwh9yznSOp/J9ZW/ kWXEN5EVpVwZovkZkTPo9DkuAOwz5cOQkUomEz1bJWCMK/lQEXvAjptgWUzqWDT+FTCE 4mHER58z+e6jtIfrPAJYMN/lDcIIJe5vDJFSfUZnXAZx/X4d69SeNJJlQ+vCncelqXyB dGjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244618; x=1787849418; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=fTmJhe/AusBDZv/xlRqegxoTU1hoDmEdKft2Fbuo4m4=; b=s5ddroxLB3rgU0773k9RjVSzlXHBLgXTQ6Dz20aj7rKrnN8Wwf8vM97wtnee02NTOb AjG1US18U1r98y+v0vSdYwtvrwpf9vvr4m1gobpDkLwo+1CsvB91yW4Pp17yz1q2DrrW qwLyma90QvJ1VOvVI383j520uoTr8eS6aSkcJ6o7P7NhEQzrpHqt65xXD8gJCP9s4UyZ uXn1JjTuoYtrPaV+DVo1jJIeaSO9sbU5hnGCJxd3U7AqeVZaGGy1XL4uNMXJK3JV2gI5 ma7qIQA7WWKj9umzleFGPqOWbQsq/cgm+3g57athuvGuOPXCc/ZP/OZCeh1/zTCgjei1 eqDQ== X-Gm-Message-State: AOJu0YzVYbbxa+nRExnl48u3q8hZvDSYOO4vmqFF7hEnDW1pQZUcVorN AXEBR+jMhLZx8Ze3e2ahoRQ/ze31APhIpTDLUfTMOTA1O88UEbDvADSOtGlBsRNkym43EXe8/y5 Au26exJ+oOGAMX1Y7eKmFPedfyfxHrS5bnsldG42eLh7lW+Iy+tEAIiOQfaYaEejmh2SxR7aegS 1dhU98QkzSKcc/bMoHTH0YK0gBbDU/fij8tw+4sD8M X-Gm-Gg: AR+sD12Ul1wwgjwLIHaqTZW+KOCWqak5FvcHVJa5b8N8cwWhUuLAjEqxEo9ov8U+9iL CSkn8SziH+DfCeLGRDcH9zdH3D1yYv39DPENvn6k0lancoOcyt20EMc4aiK16DCMmS3gJUOHjMH TfchekMc/5LxPdAwVKivsFiSTVr+tUCTlIsemNOpAviyXwUmzeoX794rY94ImXB7cLHt/yGzcXW GiVonPel1pM98wvYIVSASzxhIvbPwIVVal07LDTa0utTW+eoLAWqt//YLx/k2+RwIYI8gEq0nEV 8askUhWwtxW9/lcNbOOWA8aFFI2FOmxQHLuRB0K9D1gOEHatn72Nuvu0+PAnKtUCPEcm6LUW22c TIKrDTyD+6ecngyKH8ZAHdjFHbIAhYNWpyQZdhBGIHnHVpE+6JktgrtErEWnxzxANzkIK4HRCFs btp6w= X-Received: by 2002:a05:600c:6211:b0:495:4d88:e630 with SMTP id 5b1f17b1804b1-499b8465f7dmr3057545e9.10.1787244617823; Thu, 20 Aug 2026 09:50:17 -0700 (PDT) X-Received: by 2002:a05:600c:6211:b0:495:4d88:e630 with SMTP id 5b1f17b1804b1-499b8465f7dmr3056705e9.10.1787244617361; Thu, 20 Aug 2026 09:50:17 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: "Craaijo, Jos" , Yudistira Putra Subject: [PULL 05/53] target/i386: fix long mode segment override prefix decoding Date: Thu, 20 Aug 2026 18:49:08 +0200 Message-ID: <20260820164957.1895963-6-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787244738607158500 Content-Type: text/plain; charset="utf-8" From: "Craaijo, Jos" On x86, the ES/CS/SS/DS segment override prefixes are null prefixes in long mode, and should be ignored. (AMD APM Volume 3, Section 1.2.4) This patch fixes the prefix decoding to correctly ignore the prefixes in 64-bit mode. Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3391 Signed-off-by: Jos Craaijo Tested-by: Yudistira Putra Link: https://lore.kernel.org/r/20260623-fix-x86-long-mode-segment-override= -decoding-v1-1-26d9d4b5804e@ou.nl Signed-off-by: Paolo Bonzini --- target/i386/emulate/x86_decode.c | 6 ++++++ tests/tcg/x86_64/segment-prefixes.c | 25 +++++++++++++++++++++++++ target/i386/tcg/decode-new.c.inc | 16 ++++++++++++---- tests/tcg/x86_64/Makefile.target | 1 + 4 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 tests/tcg/x86_64/segment-prefixes.c diff --git a/target/i386/emulate/x86_decode.c b/target/i386/emulate/x86_dec= ode.c index bae1dd4d6f8..34dcac155aa 100644 --- a/target/i386/emulate/x86_decode.c +++ b/target/i386/emulate/x86_decode.c @@ -1851,6 +1851,12 @@ static void decode_prefix(CPUX86State *env, struct x= 86_decode *decode) case PREFIX_SS_SEG_OVERRIDE: case PREFIX_DS_SEG_OVERRIDE: case PREFIX_ES_SEG_OVERRIDE: + if (x86_is_long_mode(env_cpu(env))) { + /* ES/CS/SS/DS segment overrides are ignored in long mode = */ + decode->rex.rex =3D 0; + break; + } + /* fall through when not in long mode */ case PREFIX_FS_SEG_OVERRIDE: case PREFIX_GS_SEG_OVERRIDE: decode->segment_override =3D byte; diff --git a/tests/tcg/x86_64/segment-prefixes.c b/tests/tcg/x86_64/segment= -prefixes.c new file mode 100644 index 00000000000..a7e6e285b2c --- /dev/null +++ b/tests/tcg/x86_64/segment-prefixes.c @@ -0,0 +1,25 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* See https://gitlab.com/qemu-project/qemu/-/work_items/3391 */ + +int main() +{ + int data =3D 0; + + /* Ensure that ignored segment override prefixes are actually ignored = */ + asm volatile ( + "wrgsbase %0\n\t" + ".byte 0x65, 0x26\n\t" /* prefixes: GS + ES */ + "movb $0, 0\n\t" + ".byte 0x65, 0x2E\n\t" /* prefixes: GS + CS */ + "movb $0, 0\n\t" + ".byte 0x65, 0x36\n\t" /* prefixes: GS + SS */ + "movb $0, 0\n\t" + ".byte 0x65, 0x3E\n\t" /* prefixes: GS + DS */ + "movb $0, 0\n\t" + : + : "r" (&data) + : "memory" + ); + + return 0; +} diff --git a/target/i386/tcg/decode-new.c.inc b/target/i386/tcg/decode-new.= c.inc index ac5964b95de..faf74b00bbd 100644 --- a/target/i386/tcg/decode-new.c.inc +++ b/target/i386/tcg/decode-new.c.inc @@ -2816,16 +2816,24 @@ static void disas_insn(DisasContext *s, CPUState *c= pu) s->prefix |=3D PREFIX_LOCK; goto next_byte; case 0x2e: - s->override =3D R_CS; + if (!CODE64(s)) { + s->override =3D R_CS; + } goto next_byte; case 0x36: - s->override =3D R_SS; + if (!CODE64(s)) { + s->override =3D R_SS; + } goto next_byte; case 0x3e: - s->override =3D R_DS; + if (!CODE64(s)) { + s->override =3D R_DS; + } goto next_byte; case 0x26: - s->override =3D R_ES; + if (!CODE64(s)) { + s->override =3D R_ES; + } goto next_byte; case 0x64: s->override =3D R_FS; diff --git a/tests/tcg/x86_64/Makefile.target b/tests/tcg/x86_64/Makefile.t= arget index be20fc64e88..c48767fef85 100644 --- a/tests/tcg/x86_64/Makefile.target +++ b/tests/tcg/x86_64/Makefile.target @@ -15,6 +15,7 @@ X86_64_TESTS +=3D vsyscall X86_64_TESTS +=3D noexec X86_64_TESTS +=3D cmpxchg X86_64_TESTS +=3D adox +X86_64_TESTS +=3D segment-prefixes X86_64_TESTS +=3D test-1648 X86_64_TESTS +=3D test-2175 X86_64_TESTS +=3D cross-modifying-code --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244670; cv=none; d=zohomail.com; s=zohoarc; b=IitbpKakeVFM6kyG2sBN6imL0Lj3Wy25OLn0K0hUX3eCM8LbQa03lnEAZu1k8vPdekNRCpGZtRgdYdEs6so5drzqMSbEhiEOVd9chEHqNIksUkhMUgtigyPHL7sGaln8SdAy7QPoZY5guOv5iJheoX9LNau/EsLCIoHVu26U5S8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244670; h=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=uuemtEsPrKb6hh5vMB01k49kpuG791S0pZzsaFMqe8Q=; b=FK1eCPRpwlWHEiTI0RJdMvu342jkBlChVQyv1q9WAd21IIpA8jvVg597x/zMl44PEGAad30uFL6ARAMz2uWa9FeiCAxg1w1j34hsdhcwTvRKw0/0DtFItpYIJqwysFpy9o4Bg3rirsczebohNUECwIaaLABL5SzLA+QE19fgvro= 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 1787244670661735.7048138298491; Thu, 20 Aug 2026 09:51:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5yG-0003kQ-6f; Thu, 20 Aug 2026 12:50:28 -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 1wx5yE-0003hn-Oz for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:26 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx5yC-0005Oe-5c for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:26 -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-505-xU_72qYgPXSauTG90TOB1A-1; Thu, 20 Aug 2026 12:50:22 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-482b88653d9so79663f8f.0 for ; Thu, 20 Aug 2026 09:50:21 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482b14514d5sm14363235f8f.10.2026.08.20.09.50.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:50:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244623; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=uuemtEsPrKb6hh5vMB01k49kpuG791S0pZzsaFMqe8Q=; b=Sez2JE7awGv01hoGBrG5tYvDoLObZxiN8iMqhUpV53iTV0I9bGN/flzov46p/m3UUA7FSE iyhm2rtT1VhYCQFp6cTnNyv59HlYQApQi9B0pPk2Wh3aDlWm/CXnFkBA6yOA7xHRyUThIQ Yk46zpwIttsszgvPBkeoqZphS80g+4s= X-MC-Unique: xU_72qYgPXSauTG90TOB1A-1 X-Mimecast-MFC-AGG-ID: xU_72qYgPXSauTG90TOB1A_1787244620 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244620; x=1787849420; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=uuemtEsPrKb6hh5vMB01k49kpuG791S0pZzsaFMqe8Q=; b=Me3Z17hv1bsXXf6AZRmEXrqjz1aYM1rAJr2sf3qmHW9yImmfzRsw9/wyYUEwaZ4Vyw APgwR5lxRwq8eNo9Dp+N/CUQx3jpNKUWF4gPvKCTzuaoxVGqKkZSa+q8h48jA966ravT hljSHEvHmtYm6KXrmTqqKKKQco8xsgG1cR+TRHsBXZqnq662DjqAaTR5LiZ8FkryS1Qs rnA9+MQwKpkf2tZk4yYIpKoKhXvlulvjW67lJY56mACR7GJiGpemJvHgAo10w9+ZpiOz eUmYQ9DapB4wp34r6L3xO6LvaTFRoPiEkZsdeqkeaVU/0Pa+Va8gI5SAd2Z/a8BKhdLW AGOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244620; x=1787849420; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=uuemtEsPrKb6hh5vMB01k49kpuG791S0pZzsaFMqe8Q=; b=nRuL5FKc7uB1NKFYfEfEz27ApepkoH4OiGY/hr2MpfcMJEl35wIMYiuuclTpXKNM5W 155UzlkOdi2R9Xr9qTmCdzagDo/PKDLShpM5ScRGTXinhVsIrjZISVPIguMQ+JQP1Zmn SqZoT6RBWVEfpCMGg8Im7oM011MPqK1nuwwUQHK2thMBwjZ9w5QswHL5HRBYHoCxypyD 2kVzM/iL3woyo3Q5Uq2Skf2EzKnT8PoREWIvzHBS9tKcQWRuJM6ZnthnLum7NPP/LjwW qLSO3eHwq2ogmcDcFhq9Xbyf0f3nVmR33K9xgoyI2HKgf0PQSWDPxioRg0ejn3ydefIV vrLw== X-Gm-Message-State: AOJu0YzU+az9ceyhfbp1u3vIkW9S78x/iNeDUuBuSq8jYuODptXHbEOl 3Nt6DV+8EgMlgpYuURKttNae+FUc8HcEs3KDYT1hS49VUW6F4a3ShlQv1y0ENSwS4trPGrFxQr3 QPb8omi5+swHPKzPVQIGmFnRt9NnuXwyvIlcW41TS/ps2B8xpuznRYEHrjH653+ilDJOPD3sb51 CR+G95Eb1QiSSRvxeUUqxm5LvEjrKbkw8BKJzq6Qv7 X-Gm-Gg: AR+sD117oUeKnDCVscz4q07qiPuK2tW8VDpK9PtJCaGI8yuQh6u2hhoUbm6uJ7IU6VW zYCc4E0O9nGBIvkBQvFR1HNzbMwEsHVHtEklqP9YoWiPg3b9IbhP5o5fYCSbTnOXgb/D48nKMQe Mf8psC7CJm9kSDc8CVILdgiElQzyLuI6ayxYqr1XBqgJ+3JK33UGFZj/Dt7VSGVjVQOSwsyJxAM EJtmqfEkJsGmr8sPoC8eu7v8n5IlX5kVMK2dpuUkqU3XM63vpwjgheuL/uE3Yj1SIURAoLgRIwU YvvBJowMeoK7osWOLkmn0uih8Gi9t2GLVOJypcHw+pYsjIPfCOUcEHs5i3/ZF0SM8g3Z6juyzoK pykTwTGFCcVc2IMwEPruHziX7WxLrNyRrknx17n7a9dQPRTbw2/jUiRe5q2Y+XgdXcdBaIdrElH gGB9k= X-Received: by 2002:a05:600c:4f0c:b0:498:1595:be7b with SMTP id 5b1f17b1804b1-499b829df7cmr6765215e9.4.1787244619987; Thu, 20 Aug 2026 09:50:19 -0700 (PDT) X-Received: by 2002:a05:600c:4f0c:b0:498:1595:be7b with SMTP id 5b1f17b1804b1-499b829df7cmr6764215e9.4.1787244619547; Thu, 20 Aug 2026 09:50:19 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Andrey Polivoda , Richard Henderson Subject: [PULL 06/53] target/i386: allow transition to virtual-8086 mode only if CPL == 0 and CPU is not in long mode Date: Thu, 20 Aug 2026 18:49:09 +0200 Message-ID: <20260820164957.1895963-7-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787244671457158500 Content-Type: text/plain; charset="utf-8" From: Andrey Polivoda According to the pseudocode for the IRET instruction in both the Intel 64 and IA-32 Architectures Software Developer's Manual and the AMD64 Architect= ure Programmer's Manual, a transition to virtual-8086 mode is allowed only if a= ll of the following conditions are met: 1. The new EFLAGS.VM bit is set to 1. 2. The Current Privilege Level (CPL) is 0. 3. The CPU is in protected mode (and not in long mode). Currently, QEMU performs only the first check. This omission allows a transition to virtual-8086 mode from long mode, and also enables the guest's userspace to trigger this switch. During a legitimate transition, the EFLAGS register is updated in a way that allows modification of sensitive fields, such as IOPL and IF (which is expe= cted, as only privileged code should be able to initiate this transition). However, due to the lack of appropriate checks, an unprivileged guest users= pace process can now force this transition and freely modify these fields. This allows the userspace to: 1. Disable interrupts, preventing other processes from running on the CPU. 2. Gain direct hardware I/O access by elevating EFLAGS.IOPL to 3. 3. Crash the guest kernel by setting CS and SS to resemble segments with RP= L =3D 0 and triggering an exception. Since the kernel is unaware that the process entered virtual-8086 mode, it will misinterpret the exception as origina= ting from kernel space. This patch fixes this bug by adding the missing CPL and long mode checks be= fore jumping to the `return_to_vm86` label. Fixes: 90a9fdae1f1a ("more ring 0 operations") Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3583 Signed-off-by: Andrey Polivoda Cc: qemu-devel@nongnu.org Cc: Paolo Bonzini Cc: Richard Henderson Link: https://lore.kernel.org/r/20260622082119.11903-1-apolivodaa433@gmail.= com Signed-off-by: Paolo Bonzini --- target/i386/tcg/seg_helper.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/target/i386/tcg/seg_helper.c b/target/i386/tcg/seg_helper.c index d5c174b7fd7..6d424349a58 100644 --- a/target/i386/tcg/seg_helper.c +++ b/target/i386/tcg/seg_helper.c @@ -2077,7 +2077,8 @@ static inline void helper_ret_protected(CPUX86State *= env, int shift, new_cs =3D popl(&sa) & 0xffff; if (is_iret) { new_eflags =3D popl(&sa); - if (new_eflags & VM_MASK) { + bool allow_vm86 =3D (cpl =3D=3D 0) && !(env->hflags & HF_L= MA_MASK); + if ((new_eflags & VM_MASK) && allow_vm86) { goto return_to_vm86; } } --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244872; cv=none; d=zohomail.com; s=zohoarc; b=ebjA9TtcaRIkuxVGWZh54IIDzazTYTmkOMFbj197wto4JJthLOJTL7NbiL2qoZAIu4l2XgB3dtFcEytBCSz/AKoIMvWd3ncd5N7jSk3EGaZ0VBq0FNmx1wC9i2lyeoBiXQp3vtAHqvKVei5w/HgVilO0EHymOMUKVicuA1dGKkA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244872; h=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=/+3VB50P9IeYwtauM/g5NERrE6CRpOAQgHkmrcSXNw8=; b=cmVqnf4dhxsZSUCI2YP8sNirs0VPgejyV14pZYmEoK0YCKVystvCNL0GacTMjvF0FttPb3w4oop+Dlm8gOysy15A4wL8P7D62VO4eKnGvjTGVw4ZkPIR6nUROlesYYlwJSWWBpPFsVnWLwru9Zhj5IUWuEw1kGDD12LC/2wj4Yo= 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 1787244872320879.5241067386523; Thu, 20 Aug 2026 09:54:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5yP-0003z8-Op; Thu, 20 Aug 2026 12:50: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 1wx5yL-0003uY-Iz for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:33 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx5yJ-0005QP-Dr for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50: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-241-06j2AidNP5ur2B_JRIC1Fw-1; Thu, 20 Aug 2026 12:50:25 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-495569acf8dso171185e9.1 for ; Thu, 20 Aug 2026 09:50:24 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499b29e19f2sm49098615e9.4.2026.08.20.09.50.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:50:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244630; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/+3VB50P9IeYwtauM/g5NERrE6CRpOAQgHkmrcSXNw8=; b=jM0HNcmCPrGrmTR0mx6H6UjPt6d1PCscNNKb2f3Nxol6gQ973kubr2BsbdlAudCslVEeZ2 YQt5SsKRefcfCbri/jsXCUsXT/TlwJ/30+6B7a0y/4M2EOdD8TR09ItOXLEgvT/iRBc2yz sYL2RG7BOL/7uwFKbAj1c01V5NLsCqY= X-MC-Unique: 06j2AidNP5ur2B_JRIC1Fw-1 X-Mimecast-MFC-AGG-ID: 06j2AidNP5ur2B_JRIC1Fw_1787244624 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244623; x=1787849423; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=/+3VB50P9IeYwtauM/g5NERrE6CRpOAQgHkmrcSXNw8=; b=cvBIx06BwvJPrYzhV8psylRK4BzPHDFgp/IOEhEEZlAVZVDkucvLAgmezGMKo1stS3 fDmBWCsRuBGFrfYVL60sBaFsdoCixfSMD8pQmoWKEafxBJMYJodBStpqQKovZF5dD34B pssrErlm3rpMZOWcjNrW7AOoI8x19Zu6tlQTfXc5DXxsNhBspBJKlLe3c1v8vqJH+Q03 9H1Taboar5G9T2EMqODh+5cYcE11XizTNLB5ta0DMtkU5Kkv2axlM47h3+Y3pn9f901a 7IA8Y40pu14J6It38/S1NvNUsjFc2hi7/DxDSnXMmXzNmOOUj7BJCqPXzxVkl+VbOzpc 0PPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244623; x=1787849423; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=/+3VB50P9IeYwtauM/g5NERrE6CRpOAQgHkmrcSXNw8=; b=VfnODmBxHfQ27Ds3oil8Ck4v/hNuxBTh7CwYF8uSoDtTlUDOgnYaAa8tjhFsheZ7vb MjCDqjsFhutkESlQWc8K0uOQPK4KDxw1vw+7r4ehbG8CtwLOF1tStvDjWCRTBO/Yov+i xcDOzNpGAHNquTp1xsaWIyV66YiXReYJk3WZbkJ6LHDwzkgTWFZqPFRKJHB+yGkYUpdf +T7z1GwcpGwbxB0RkEDriKetd+22Z9Fv2wZLLk3zJpNk2yuaLLPoMlY0YzvwVdDHUpCn 7T8to2CX/+6fs2AtqkLrOTGqKIA1/j8kQjyHm9Inkn+Kdp7at2owMT8ebNDEwuI/iJ1p 0/Cg== X-Gm-Message-State: AOJu0YxkPJJwJtc1oHniawbmCrm3kDulJPviQomuSEXR7yKGYJzwMVEP CIHOQ2cpAg7Bm45Y8rvghoLqkq7wmrQYWrvwSWShgM0VVN+sNMCFGhSZ0EXj246XordlBrOCQga eysvGsIkYa90ifCjNIMlmhHDVqQIUUlHOi2HMqpLI/z+RU94ewD+M4iyvaXQYoGPDEIQNmJ1jJJ zsK/B/9zpHqTBCF1wDBPRdAVr5F8zptktluBEWTISH X-Gm-Gg: AR+sD10/2t3gIt3dXO7H7ci2UlFU6BW7a8WNqOV02xS1Y49bzJw8JSxzOtCozEvAw2X NyCfpPa6nbiA5+5+eSmK8ZM9xfN0XM1Zh7jZeLl4+uPv9EJvDUg0kO0ooihXMXVwyf03Eh4NZhu 5e0tkxXxKtoH3cvgm/TcVTLHSSNX23WZQpnygHv2TYxvqSyBYoq4AjJcVXE7ygjmCydDvgmdK+A JlDxcCt7qm/XhCXyjdo7BN7LYmtoVAQE8e8GEBqVT0OBl3kYSBB70P/tlFmklDxnB5wseeXe04n Qxic9hThPpeANjl7TIT8qwp0xg2O+X6kKlWWq0/PF0otwl2R8lBg+7AwLdxjPZ8Hj4w6xisjBF0 wBIWAxfa5Tnva7sxDINb/MrPzLcGtdiI1eP8MLClZHFGWxWOCl9gFmEKSyiGKIEXBJLESDjQisn Wi9a4= X-Received: by 2002:a05:600c:8b25:b0:499:8807:345f with SMTP id 5b1f17b1804b1-499b84617bdmr3969685e9.13.1787244623569; Thu, 20 Aug 2026 09:50:23 -0700 (PDT) X-Received: by 2002:a05:600c:8b25:b0:499:8807:345f with SMTP id 5b1f17b1804b1-499b84617bdmr3968425e9.13.1787244623079; Thu, 20 Aug 2026 09:50:23 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Andrey Polivoda , Richard Henderson Subject: [PULL 07/53] target/i386: decode opcode extensions group 3 /1 as TEST Date: Thu, 20 Aug 2026 18:49:10 +0200 Message-ID: <20260820164957.1895963-8-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787244874348158500 Content-Type: text/plain; charset="utf-8" From: Andrey Polivoda According to Table A-6 in Volume 3 of AMD64 Architecture Programmer's Manua= l, opcodes F6 and F7 (opcode extensions group 3) with ModRM's reg field values of 0 and 1 can be used to encode a TEST instruction. Although Intel 64 and IA-32 Architectures Software Developer's Manual leaves the cell 1 of opcode extensions group 3 blank in the opcode table (Table A-6, Volume 2D), the instruction in a group 3 with reg field of ModRM byte set to 1 actually behaves like TEST instruction on Intel CPUs. Currently, QEMU decodes group 3 instruction as TEST only if reg field of Mo= dRM byte is 0. When the reg field is 1, QEMU raises a #UD exception. This behavior does not match real Intel and AMD hardware. This patch fixes this issue by duplicating the existing [0x00] and [0x08] X86_OP_ENTRYrr(AND, ...) entries into slots [0x01] and [0x09] in the opcodes_grp3 table. Fixes: d7c41a60d0c5 ("target/i386: move C0-FF opcodes to new decoder (excep= t for x87)") Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3580 Signed-off-by: Andrey Polivoda Cc: qemu-devel@nongnu.org Cc: Paolo Bonzini Cc: Richard Henderson Reviewed-by: Richard Henderson Link: https://lore.kernel.org/r/20260621032524.1138213-1-apolivodaa433@gmai= l.com Signed-off-by: Paolo Bonzini --- target/i386/tcg/decode-new.c.inc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/i386/tcg/decode-new.c.inc b/target/i386/tcg/decode-new.= c.inc index faf74b00bbd..9c429e113de 100644 --- a/target/i386/tcg/decode-new.c.inc +++ b/target/i386/tcg/decode-new.c.inc @@ -1624,6 +1624,7 @@ static void decode_group3(DisasContext *s, CPUX86Stat= e *env, X86OpEntry *entry, static const X86OpEntry opcodes_grp3[16] =3D { /* 0xf6 */ [0x00] =3D X86_OP_ENTRYrr(AND, E,b, I,b), + [0x01] =3D X86_OP_ENTRYrr(AND, E,b, I,b), [0x02] =3D X86_OP_ENTRY1(NOT, E,b, lock), [0x03] =3D X86_OP_ENTRY1(NEG, E,b, lock), [0x04] =3D X86_OP_ENTRYrr(MUL, E,b, 0,b, zextT0), @@ -1633,6 +1634,7 @@ static void decode_group3(DisasContext *s, CPUX86Stat= e *env, X86OpEntry *entry, =20 /* 0xf7 */ [0x08] =3D X86_OP_ENTRYrr(AND, E,v, I,z), + [0x09] =3D X86_OP_ENTRYrr(AND, E,v, I,z), [0x0a] =3D X86_OP_ENTRY1(NOT, E,v, lock), [0x0b] =3D X86_OP_ENTRY1(NEG, E,v, lock), [0x0c] =3D X86_OP_ENTRYrr(MUL, E,v, 0,v, zextT0), --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244647; cv=none; d=zohomail.com; s=zohoarc; b=US3RoeqwhAsVuS7m8Fwxm0WpOq86qLnHfGUCq/xv6/ltR/rONCXDeeBynii2w35oZxBfzwsEz2JVjqRHmiHMXwJbNIhfny538EWfN6hIi5SlFi0BqvQly6TjD8SZU43wkxl9BsqxPqpWLd0COiPWqkLJduMiNkQD0LHYE1EixXc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244647; 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=+4QwzswuwF0jepQXhCEoiysrwUOjMxfh0RxhCZqzITw=; b=jwp1sHhx5Y/XsrhXSBRP1V7wlM3iz+28oIH2+F2/1o9QVvFrcPMyg8W0Hk8d+iDD/b5TwnW3zPS8ijRo7hJQuC7xWDt9cJTrVhT663XmnhENJjoDOeun71OwSbryhRr2NnfE29oaFQ5G6KaJeu1bYbbleQuat6nB2C6ZCK+BO6M= 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 1787244647513100.37781208878596; Thu, 20 Aug 2026 09:50:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5yM-0003vI-5u; Thu, 20 Aug 2026 12:50:35 -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 1wx5yK-0003pk-5K for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:32 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx5yI-0005Q6-EO for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:31 -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-304-uzT5gn-tP_K3F9ZVcDyzAA-1; Thu, 20 Aug 2026 12:50:27 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-49953abe51fso224495e9.1 for ; Thu, 20 Aug 2026 09:50:26 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499a9e784a4sm151237485e9.1.2026.08.20.09.50.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:50:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244629; 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=+4QwzswuwF0jepQXhCEoiysrwUOjMxfh0RxhCZqzITw=; b=FfCEmYMON2ZNttG7OzKVy7JvAfQArT02908+7bpDGbbrH/426MzfltZtB3N947fxi/dUPg 8pZfuesYQeMETKjFoWIGuH4ffXmc4YjoqVdiaPu/jJRlT2GO4rH9Wwt2GbR5HQLkIvI1dD sp2jiH7zVlhQCuB9PiwUDbBDyx9Rswo= X-MC-Unique: uzT5gn-tP_K3F9ZVcDyzAA-1 X-Mimecast-MFC-AGG-ID: uzT5gn-tP_K3F9ZVcDyzAA_1787244626 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244626; x=1787849426; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=+4QwzswuwF0jepQXhCEoiysrwUOjMxfh0RxhCZqzITw=; b=mNf5QDEaxoCYKQceqhdJb4rbKg6qx7mfljWrm4JlQeUt+D9vo1f47R+BMhl5/zMb92 Zyl/xlF1M9vNanVYHZPPlvkqwaai+j+xcpGHuUlBV/4gyphFAdGtNyeibfDvY1R4GC/x wp7J8p1b8mXne8Ti4cG82rqBmvKQo5Zi3d2xXvBgFk0WU7ezh4tc1YtK4Ktwo8XsQuGI PKTOgoZZ07WUKETdaP0YwvEQowBUjzxWPecDJuC+9zDGFtg0LOZDSyqZhWJ5HrN7QqE1 z3b5MLmK+AWOSQaNmiRoWzThfS4zMsmDFBdJ8oxQiSteQvLEgFYDATpNs9EsbuAQsrj2 Rjzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244626; x=1787849426; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=+4QwzswuwF0jepQXhCEoiysrwUOjMxfh0RxhCZqzITw=; b=b4mpv4BAm9VL0i35iMG+HHeQtqtXW9OiIxO5xRdaYcGIAncUzjISzrkHTUn4Y74UIx KwqaMd4tVXNMVnb1QJcRwG9RULetRLrp53FGuUShveMjiPfttDLg1ZZ3kIYzvuWVUp2Y gr6HbmyTD1BxoZnv57hwBq3JmW4g8fVe8eS2JbRmGc+/tKAYI/hQWY86aqHpJHmYg2TV HRkkdxqvmehAY5e++//YaATJ/fidvm1rusNOawbkSoDBPpe/euvhU6uPSQgxYdSZqEeu d+ZorIcrqJoMNiiEtoppC6ymRXjo7QAQjdTYEnGQu1CBSPh+CA3cjBfd3KEtG7kjv/Wp w7tQ== X-Gm-Message-State: AOJu0YwMYadQFb0DasbdNucf0beOVsYC68OIIWJR8oSxeGFta7pEvQEU XfL/58gvTomw1srW71HlK9YO1pQ3+TSzbqenEXBn4DajJ6Qsu9TBF12FHBgan7/ecTajJIlk8hN Lme6VSelMu/QVdULP49ANhCmUq5pcts1x9aH6xclJRvr3udJAjssVN98K75bTvbNAG/c1WbHjcA dUdEYFQPfsLtnK9iKZajODLhIPuYexIcwyYwwnp58m X-Gm-Gg: AR+sD11iazfGHBKCt3szKlc+c0qikW/dpU9FZDM+OwYIvuAS8vRH4mAN2SthXEADeoU jw+3lv64hlSj79eZHLiPTNskFSFLl6EboDIhtBvLoW7UQFHPuklR0iNm0+rICpqOWHo/XmfNUJt Wx0l6wErAz6WmH7+Q9xtRTYT0DzRwBq1eFkkkoKzNidty1q84T6qd9rEbLu5TgEsPbs33MwW+Ei Ry5yCHaZZUmn9wW/wLTwKTUCxvHIoOVZuJGuPhrlVh93SQBBzdPAV8iFMN7XrLPSKqXh25SfHzJ mLng/7Wvu8m9yHpvuU9djPrb1Illz7g4ZUdHTeqxebeXN0UkZ+L6MnSf5vDEIOc5/xWVi9ulqgw C8Tpw/WtdtVU7JGWKJytRrl2lcBAzRWpBnGM1hIM5J8yL9NQx0YAtbI6tY+Nh7nJCZxxgvT9fka 1YIyU= X-Received: by 2002:a05:600c:a44:b0:499:49f3:77b1 with SMTP id 5b1f17b1804b1-499b82f4158mr4221125e9.3.1787244625836; Thu, 20 Aug 2026 09:50:25 -0700 (PDT) X-Received: by 2002:a05:600c:a44:b0:499:49f3:77b1 with SMTP id 5b1f17b1804b1-499b82f4158mr4220365e9.3.1787244625437; Thu, 20 Aug 2026 09:50:25 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Magnus Kulke , =?UTF-8?q?Doru=20Bl=C3=A2nzeanu?= Subject: [PULL 08/53] target/i386/mshv: disable AMX TILE features Date: Thu, 20 Aug 2026 18:49:11 +0200 Message-ID: <20260820164957.1895963-9-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787244649371158500 From: Magnus Kulke For the time being we disable AMX TILE in partition processor features and CPUID b/c AMX TILE XSAVE state (XTILE_DATA) is 8KB, which exceeds the current fixed 4KB XSAVE buffer size. For now we filter it until buffer sizing is computed dynamically from CPUID. Signed-off-by: Magnus Kulke Reviewed-by: Doru Bl=C3=A2nzeanu Link: https://lore.kernel.org/r/20260710101534.664604-2-magnuskulke@linux.m= icrosoft.com Signed-off-by: Paolo Bonzini --- accel/mshv/mshv-all.c | 8 ++++++++ target/i386/mshv/mshv-cpu.c | 16 ++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/accel/mshv/mshv-all.c b/accel/mshv/mshv-all.c index 72721d0f0de..5e8756ede22 100644 --- a/accel/mshv/mshv-all.c +++ b/accel/mshv/mshv-all.c @@ -203,6 +203,14 @@ static int create_partition(int mshv_fd, int *vm_fd) =20 /* enable all */ disabled_xsave_features.as_uint64 =3D 0; + /* + * AMX TILE XSAVE state (XTILE_DATA) is 8KB, which exceeds the + * current fixed 4KB XSAVE buffer size. + */ + disabled_xsave_features.amx_tile_support =3D 1; + disabled_xsave_features.amx_bf16_support =3D 1; + disabled_xsave_features.amx_int8_support =3D 1; + disabled_xsave_features.amx_fp16_support =3D 1; =20 /* * query host for supported processor features and disable unsupported diff --git a/target/i386/mshv/mshv-cpu.c b/target/i386/mshv/mshv-cpu.c index 1c433c408c8..8eca01a8fae 100644 --- a/target/i386/mshv/mshv-cpu.c +++ b/target/i386/mshv/mshv-cpu.c @@ -2156,6 +2156,22 @@ uint32_t mshv_get_supported_cpuid(uint32_t func, uin= t32_t idx, int reg) */ ret &=3D ~CPUID_7_0_ECX_LA57; } + if (func =3D=3D 0x07 && idx =3D=3D 0 && reg =3D=3D R_EDX) { + /* + * AMX TILE XSAVE state (XTILE_DATA) is 8KB, which exceeds the + * current fixed 4KB XSAVE buffer size. Filter until buffer + * sizing is computed dynamically from CPUID. + */ + ret &=3D ~CPUID_7_0_EDX_AMX_TILE; + ret &=3D ~CPUID_7_0_EDX_AMX_BF16; + ret &=3D ~CPUID_7_0_EDX_AMX_INT8; + } + if (func =3D=3D 0x07 && idx =3D=3D 1 && reg =3D=3D R_EAX) { + ret &=3D ~CPUID_7_1_EAX_AMX_FP16; + } + if (func =3D=3D 0x07 && idx =3D=3D 1 && reg =3D=3D R_EDX) { + ret &=3D ~CPUID_7_1_EDX_AMX_COMPLEX; + } =20 return ret; } --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244671; cv=none; d=zohomail.com; s=zohoarc; b=jF0o3iybbacgb8do4rLsq33pZkEAgVuhhtn4cMsUoa64ne2rP4no0qN3FWfsTFvYeDZPEGPQNZtgBH/C1d8+fiQzDgHZS03LFwkBwX4qHeBZB8jJGpJ3YXwsO+lRtI8zJSqsv/3xXQPJUBRNsy4c7DPaU/gFjyjYW7+TZ0MlHbk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244671; h=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=WiJl2dNtWQnuX8TF6d6ROEUtSKSgJ9L0QfU3Y8MrLVg=; b=EXgRfhvp+HydyZkg/LM2BDNhlZVt8Iw5uY1kjYPZQ10J0pfOiRTsczC6b1XPwpJAJU1vZv/1VQ4522KtqXfQ0T2p3yqOMlBVhBTcHcTGIFbX3MDY+4wZWV7SAT7to0WgjHUdJ9C+8FjwiQ4y/PoHKzOZvcX4aHRxqRwSrgYvi8Y= 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 1787244671267900.0518048419682; Thu, 20 Aug 2026 09:51:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5yQ-0003zH-6W; Thu, 20 Aug 2026 12:50: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 1wx5yO-0003xE-TZ for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:36 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx5yK-0005Qg-JD for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:34 -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-711-9GM82UjuP_Cgsqz9jGNA4A-1; Thu, 20 Aug 2026 12:50:29 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-47f83416551so82202f8f.3 for ; Thu, 20 Aug 2026 09:50:29 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482b14d055dsm14255332f8f.34.2026.08.20.09.50.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:50:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244631; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=WiJl2dNtWQnuX8TF6d6ROEUtSKSgJ9L0QfU3Y8MrLVg=; b=LOdaXGxBCs8kDATGvSeIaU3P2fIgDiKiC6Dyqo2lHtHM1MGFW3tRCZP0B8sACBW1KIMKmQ 68dBUspHIob1u9EC5ZQpCEcEPIwODTy0apsj1OGNxb+3kjMovADBdqbfx5buxVI4l0aQko EPvyvgGIZCLBAX/nJpiSiubRjNi/ooE= X-MC-Unique: 9GM82UjuP_Cgsqz9jGNA4A-1 X-Mimecast-MFC-AGG-ID: 9GM82UjuP_Cgsqz9jGNA4A_1787244628 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244628; x=1787849428; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=WiJl2dNtWQnuX8TF6d6ROEUtSKSgJ9L0QfU3Y8MrLVg=; b=ZJ++ag7IhLdaPwluwR6hNdLkjMqJY2Y1ebPYT9S7tInstCRGTgEhB+FjhfZ6K+lAQG bgd+2Mn/nWafMutpm4/7tM6Jz7SkwxGEgUcPmZSwo6aaeVhOjP9cN3GV2qKrakaUUGPw zEzFZCv3L8JRksYGnoBoKtiNbAMZwN7NgIfeE1uFBploQEBXWTSzl+USnKUIVcJM7yLR HR0UtCP1WBdhOeP6c+3e51VfNMNsyD4N8WFRpIJcBq7ZaW07c0olhACplGl7yDm2y9Ca pr0t3+6CrEwu3K9jfUeywPIP7mpD3XgJb1e517zI23rNNZplhfRIC8FLOx4SMydZdNMW SCFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244628; x=1787849428; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=WiJl2dNtWQnuX8TF6d6ROEUtSKSgJ9L0QfU3Y8MrLVg=; b=Psn6UP1mvMtmx8JnFdOmZXR+eGAB0trw0rmIW8bn6SfzjoH3xbMT02SBz4NQuh27iz xVDdiOQqYs5u0lpE2TC20cyKrM8ujkQU02uq8gCfsCaJp4PZ06apvU6F5A76drS0WVJL Y+1pQn5PAYP01ZkpMWpAjcqw4/z9IQ8eIZFj9StbwDeifSDRSADWVNpZFFD7tEupMNFp yYtMsLBfVDhYVLKg4ywR6H6OdpV1UrD2LMt325sks/RHQnw4phX868M5g3p3hgj/sDLz pqIlMaooQtqA8pIYrSVmSxYY0m04OgB39TXUxmVqQM42WDUACds2Rc+IZfdkd6ZJkO7W 2a/Q== X-Gm-Message-State: AFuF++li74/qgY4w5f9MwMWxjZLn6POe1ASrYhagexqH2ikXW4leeLUn AnZwDLAXFYDiH2EqllxlYmYuoDLSxIs/1I1tOgHyqq742DqgxCuiA2aLEVlX3KsF50ltTmTSGD3 F2AGd8NdWYsGotjPa9pcroxv4BJtcflSsbXa+8BxGt1Wfxwwa8lvzr1PTI8xJhABEIwAmDQA2NP 7nuTxX/VOA3JCtA2lEN5/rWKXvBTEXC6/m7NcXqHzG X-Gm-Gg: AR+sD11M4F4q6rPR5T0fq89j5QnGdOY9chWv43Z9SkUNgrWpDvE/ag/t1NtFCLyhQGz FvGXZx3FlpuPWAvU362tXeIVKXkQqKI546a29Ah189mfjair88nMVajYye5x7rH983f30Va5djU C/ukIPd8WO+bU0J2z7GZsKcpUtoExBMj8R83IpGZR2MWsdpdgKgDZRNVThwNugSRui1tnrFXGb/ vXPB3qJOVvIoBBfdmYdSUhOlfROrhVjhmG11q28cvdHgW8hA7G8RiDJn9Mzifl21AsrVK1Gkgdt MpgYXX8b1RvVBIIPounEA/TOl7Ag3XxZAQXaVPWomevp5iNNxRJYlf+YkhJ7toUmTkPvpvOZqeh jnHGE18ZjWWatXud7mdcPP1FdVpzUoADIGveBk5vC9TvFTxkycSXpTCfaRRZlC2talVnIqDSb80 CdqNA= X-Received: by 2002:a5d:6f18:0:b0:482:ac0f:707f with SMTP id ffacd0b85a97d-482c0b55e10mr12476f8f.1.1787244628204; Thu, 20 Aug 2026 09:50:28 -0700 (PDT) X-Received: by 2002:a5d:6f18:0:b0:482:ac0f:707f with SMTP id ffacd0b85a97d-482c0b55e10mr12352f8f.1.1787244627790; Thu, 20 Aug 2026 09:50:27 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Magnus Kulke Subject: [PULL 09/53] target/i386/mshv: toggle fpu/xsave migration Date: Thu, 20 Aug 2026 18:49:12 +0200 Message-ID: <20260820164957.1895963-10-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787244673450158500 Content-Type: text/plain; charset="utf-8" From: Magnus Kulke MSHV exposes overlapping legacy FP/SSE state through two paths: explicit Hyper-V FPU/XMM + registers and VP XSAVE state. There can be subtle inconsistencies across migrations when XSAVE is written after FPU state. Signed-off-by: Magnus Kulke Link: https://lore.kernel.org/r/20260710101534.664604-12-magnuskulke@linux.= microsoft.com Signed-off-by: Paolo Bonzini --- target/i386/mshv/mshv-cpu.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/target/i386/mshv/mshv-cpu.c b/target/i386/mshv/mshv-cpu.c index 8eca01a8fae..fa15e399cb8 100644 --- a/target/i386/mshv/mshv-cpu.c +++ b/target/i386/mshv/mshv-cpu.c @@ -950,7 +950,7 @@ int mshv_arch_load_vcpu_state(CPUState *cpu) return ret; } =20 - ret =3D get_fpu(cpu); + ret =3D get_xsave_state(cpu); if (ret < 0) { return ret; } @@ -960,7 +960,7 @@ int mshv_arch_load_vcpu_state(CPUState *cpu) return ret; } =20 - ret =3D get_xsave_state(cpu); + ret =3D get_fpu(cpu); if (ret < 0) { return ret; } @@ -1506,7 +1506,7 @@ int mshv_arch_store_vcpu_state(const CPUState *cpu) return ret; } =20 - ret =3D set_fpu(cpu); + ret =3D set_xsave_state(cpu); if (ret < 0) { return ret; } @@ -1516,7 +1516,8 @@ int mshv_arch_store_vcpu_state(const CPUState *cpu) return ret; } =20 - ret =3D set_xsave_state(cpu); + /* INVARIANT: legacy FPU state must be restored after XSAVE */ + ret =3D set_fpu(cpu); if (ret < 0) { return ret; } --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244662; cv=none; d=zohomail.com; s=zohoarc; b=Aonru5CVIYc5HME/uTc/ShagMAomHllQ33R9NII/4aEtI90I3zs9ACIWmq5tEjYx+GMrLXXp3q9i40RTAN3keNHMlp5l74K03/2gCv462XW31hbAkbYaWddcTBbz7pJ/4bIjdCNDNMZDx6kRZ0r6Try3EIndtJSUc8l4NBnLqa4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244662; 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=uM0ZoYWXf7Gdf3T4sWd5qAAdJiegNs4H/is+TXuEkmA=; b=K8Lugme4NHz2PhyytBX8i+Zf+kCyG+n8KptGcNqcIRwWeUJ/v0bWC6sjHR3FN63WXy0F5JXzTCeXWYNdqtRONncpE7qK/nNVxvNRTerl7zlLbMz/9aAO3n1vSsOPzEKbq2OWd+LoWb+9vIASGKFBt80uxnavn19X+LyV+isWCOs= 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 1787244662124723.9659160438058; Thu, 20 Aug 2026 09:51:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5yS-00040Z-Ke; Thu, 20 Aug 2026 12:50: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 1wx5yQ-0003zJ-6i for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:38 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx5yO-0005RM-BR for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:37 -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-151-6Z8eYeECPh2FINRgCag_XQ-1; Thu, 20 Aug 2026 12:50:33 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-493bfc3b84aso174755e9.0 for ; Thu, 20 Aug 2026 09:50:31 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499a9e8b700sm157579845e9.6.2026.08.20.09.50.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:50:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244634; 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=uM0ZoYWXf7Gdf3T4sWd5qAAdJiegNs4H/is+TXuEkmA=; b=Kj8yB5ZQ4XWIw5NYJrCskxbCfvCIldyZbB/f6L01ziLB9OrQ7Y3vL++DV775VjOhU7s+RH RV7+/XnXnoMtkYdlpu1bBwpNp3+GLx7UHQdmgtLRFVIi3FtprCLNr+pV0FUJSQh2hNvzVZ a6BfGCYLupUWQrqdh+LImbcoRL4Jhgs= X-MC-Unique: 6Z8eYeECPh2FINRgCag_XQ-1 X-Mimecast-MFC-AGG-ID: 6Z8eYeECPh2FINRgCag_XQ_1787244631 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244631; x=1787849431; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=uM0ZoYWXf7Gdf3T4sWd5qAAdJiegNs4H/is+TXuEkmA=; b=AicKHeDesyRm3A6P6oZkp5DnWSq1BkfD4RpNqxtXioaulwDE1laSOzYWN2gPCuLsE5 VUkDsCLqPOvVqS8Emhl6hSdvR3JsPLI6xGjA7pr0B2RDLPnoKRym2axrRyJFklNOJRa9 7kBS7O0UEjHCtWomJ17DOrxaX/apreHVghVAAw1dvPgMI5wIfAK5t8oANndAVoCHIJRZ AH/7uFegFUywQ27NGqXz07T/vpgBanEUcgeHQKZbaWqCOkGXf4tMtzvo78rwNJ1rtYMj JUeARZu6zTB6L0elkwJnXmwXzeWVIvBkg1gxBJddwVvySGQ7bE+rKwmPZeZALN4xF8oX n5Zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244631; x=1787849431; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=uM0ZoYWXf7Gdf3T4sWd5qAAdJiegNs4H/is+TXuEkmA=; b=GgJA8Um0AgSjmTT0p4oXAGW0u3VcTbgyr+HeA9PenURM+Bl5hnIONh+yOE7r3aEG1l SE4w/Dz3fqgS1qq2TSdT+6O5xoFk6CDMepq6Fk4LL+oxVC6P1X1xTYQi1yKpFJdMoqyp CU8b40l7bYr8qg+ecvT23ej+BrODljlLdzc09gt0BPcpICEx1XWKAzibaEiOUOgfR0lW e6a7tYbzs0SQK2ZrTXzC+uJHZA1InMnEkbkCnmZLDod+1rGrlifcYoQM0BRyOvKTBgsn ly30Hyz7vGSHgoO0MG8Z9Ea3ZBj6MdGya2W/LSUjGgHhIZGFzXsrwkOaX96H6C6c4WpB T4hQ== X-Gm-Message-State: AOJu0Yw+6vzANu7QpGTBbE0xiJzDgbJ7X4TmZ9R2Ny36ISYY0D9rwobl VxgiUbeGumzsAEHed46br7c+pjN3UrVSANGJxwMWQKxfanMabFeZKFhfSbYTe6UkJTl6hnLtKMw 0CQCeJ/YrA4qz9i8xANAKMCHjWWCbkICNE2iP75gI5lax4uAG55VsTcvQau+Gx+nnvHGNkaGaRf bO0Ty4oX3jHZzOEQQmHepqESFGC0Q+JiVpvA5bTUqP X-Gm-Gg: AR+sD11mpcJCI/tj/KE2HzkTqYcHhAHy2mpOIietFL7qlBvUn5xCGgRgHblSVYK39GK xyEQTpduGzUEmcWC3N/XzwXiYBmkzOLIn4tQzkmJtgmasGyk1i3ToEF7JioLbSS2WoZqzFIqdsY Jhy/NWYJSRZqGraWXe9xwevUGmxbdwzQ/gd5MAvn8JmYLa/D1MUa+6wXzRNTIoV75Rxj8nE4Dfw DfUve1ShlIH+c0T92Qoc+Il6737NGC5dbpo1F46OC/X7iM6exfSqE2XUaMUHTR7kZ4nCUzONa/Y AIdj/v6SU0KhE7X/fcNb/a7Fofm7xwAIeIQkLKc/1Gffdc8XUrIMYHMYdJE4uzZkYfkebVmGye9 wAA/46uVXies92jcDLkErpAPYNJIqElYeJ7W/79de1od1VBM4C75z136OGGB+prE/0spGpfmvxt hKJIo= X-Received: by 2002:a05:600c:1548:b0:499:841c:2016 with SMTP id 5b1f17b1804b1-499b8273456mr7304215e9.0.1787244630890; Thu, 20 Aug 2026 09:50:30 -0700 (PDT) X-Received: by 2002:a05:600c:1548:b0:499:841c:2016 with SMTP id 5b1f17b1804b1-499b8273456mr7302995e9.0.1787244630386; Thu, 20 Aug 2026 09:50:30 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Magnus Kulke , =?UTF-8?q?Doru=20Bl=C3=A2nzeanu?= Subject: [PULL 10/53] accel/mshv: introduce SaveVMHandler Date: Thu, 20 Aug 2026 18:49:13 +0200 Message-ID: <20260820164957.1895963-11-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787244663442158500 From: Magnus Kulke This mechanism is used to handle more imperative partition-wide steps that have to be taken as part of a migration routine. Currently it's just a skeleton. Signed-off-by: Magnus Kulke Reviewed-by: Doru Bl=C3=A2nzeanu Link: https://lore.kernel.org/r/20260710101534.664604-3-magnuskulke@linux.m= icrosoft.com Signed-off-by: Paolo Bonzini --- accel/mshv/mshv-all.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/accel/mshv/mshv-all.c b/accel/mshv/mshv-all.c index 5e8756ede22..b34fb34d053 100644 --- a/accel/mshv/mshv-all.c +++ b/accel/mshv/mshv-all.c @@ -39,6 +39,8 @@ #include "system/mshv.h" #include "system/mshv_int.h" #include "system/reset.h" +#include "migration/qemu-file-types.h" +#include "migration/register.h" #include "trace.h" #include #include @@ -544,6 +546,9 @@ static int mshv_init_vcpu(CPUState *cpu) return 0; } =20 +static SaveVMHandlers savevm_mshv =3D { +}; + static int mshv_init(AccelState *as, MachineState *ms) { MshvState *s; @@ -599,6 +604,8 @@ static int mshv_init(AccelState *as, MachineState *ms) 0, "mshv-memory"); memory_listener_register(&mshv_io_listener, &address_space_io); =20 + register_savevm_live("mshv", 0, 1, &savevm_mshv, s); + return 0; } =20 --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244967; cv=none; d=zohomail.com; s=zohoarc; b=hG2HBl/fP3E8IXd54iFdMW074LKRAzpxoUL0Qrx8LvO8n9POox3MbtM2u5n3Ph7cLcI6WmUGmtnQDvI6Jg0gMjXOtLWk4GjYTFW6m5fOoBAoWRf1HTxrOaulV8SGNwebnJvMSVey0gGGErOBd4sg0dny/twfKIngciMpJN8hJNg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244967; 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=52s1E0TAzXaWqv4I1VNn/GeUoyMAJxYF6VAAT+4/X/8=; b=k2c1UsROXMyG2I33bMEoivWDZTzqLJaAPVJiDQLcQU9s09PlHv/KYXQJK9zRBjORB+bp0/yy6AcSyFN+21sey+I07wQ5cR6aAtEoIqkuaq7/g1R5Xu4DkY8DWNZnT3U7JS/CEd/pH/PvyApYvZJ05VRCwPb7+5hjI3HenCCAXhA= 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 1787244967316474.92602281645327; Thu, 20 Aug 2026 09:56:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5yU-00040m-3c; Thu, 20 Aug 2026 12:50: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 1wx5yS-00040K-D5 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:40 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx5yP-0005Rj-PF for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:40 -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-491-geOGaj55P6OZiNd1zLJOSg-1; Thu, 20 Aug 2026 12:50:35 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4955e865174so135935e9.3 for ; Thu, 20 Aug 2026 09:50:35 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499aaef1665sm161257475e9.5.2026.08.20.09.50.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:50:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244637; 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=52s1E0TAzXaWqv4I1VNn/GeUoyMAJxYF6VAAT+4/X/8=; b=KvhgqyY9Zsv8caoHCCg6CLxiss4wdbvve59AFMZgPlTkzLoHU36h70O2Qv47RWMCyGTnZT xHlGvj9Ms2QLOc5XzwaWo3/ecolwIuUbkG6hd143THIRtIXaqyHVZgZEwVjHiu8q2lYEVw 7xsgWHkuSAJp0djFBzJeACusKjHgnak= X-MC-Unique: geOGaj55P6OZiNd1zLJOSg-1 X-Mimecast-MFC-AGG-ID: geOGaj55P6OZiNd1zLJOSg_1787244634 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244634; x=1787849434; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=52s1E0TAzXaWqv4I1VNn/GeUoyMAJxYF6VAAT+4/X/8=; b=duCVqVrgMVZUetSiiG7hJMFOUxIwmb456jrAKxjOmkx4RZQPngsICr93D0gRRcy3GU m5u2dF16orb0LTfxFBvLK5zZpspxO3ehNRnhATi3IEn9iwNiOYIsdsQj1Ux5MTp7/ulr 1AWe1+T6e1zvot5v17r74l+YnLQ8agmlsrefy48mIjeDIQFYOuvCKhuCJslPPbBeRwAo tyLLLgparWuKnFzscNvT7C+yLVqZA16x73cQbJy5xnREZ+sCw0lIJwBHmTYqlJCIO2XZ d14iHBrZgXikug7440VuKopzg0CYUA7KxQGtjU/9sBrw1ZD6zDKUL/guw87Z6iHEpZPj rt8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244634; x=1787849434; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=52s1E0TAzXaWqv4I1VNn/GeUoyMAJxYF6VAAT+4/X/8=; b=bPngnYsnd+nQsLdcZbZeEyFHSySb/QgmT9Lf+8Axa8mwjTMmvhubHiDCR4sFXJ962x p/gCOKFLWlWBnNHSyDoZAeABFO8YWcyKkYWYYXBHtLp+OnYMGuiT5DSOuRXw9BC3q70q QFg+NNg2mWEgzwJR/FpjJBmU4AZiWdqLB0Vm+BDlTcmYRSvO+0+aGwdwT37T1hRxTr2C tU/r4OtbIZngnoq3kDZCS3g/a+9odxPbOcCwRsQ6xMM15fRTefMFxoBkNfpk6EK4l/Gx 6Ti8ImMtQ1oQSSgxxyb5AxNN2S7oyHTtcSU/o/ZkonP3zDHf7ER211C5zx+p1IkQO8we IYIQ== X-Gm-Message-State: AOJu0YygpeGaxWYz2N/WvTfSIsDq8gUvDszuDB5dJS9p6TrMh07DRLFP Wh4mWyvWzDvIG5EKc0LgUMn8ozYkJalzLvdP9D6g7nZ5r0TKNDWlEH3iI82kmML6BJ7JFKhBICT A6j9aao/nVsUW1GsN/XsuWvQfYNHIuves/qYZj7pWQ2x3RwyZsT3aUGYMgKHye90vf3i8fiHHVZ sSiq97nPCYdp7WUJIGkag8fd8rhfEZS8VMMfagj1g+ X-Gm-Gg: AR+sD12UtvJeE5oNLoKmWIuNPtk0MJqYE9mHtFhTf8DXErTvRlYm8UgHF2CBpo48Fuq lvTKfbyZJZ+t1nTWThEm10bTEVpYiAuSK+3Ed0U0aJk7Vu1666kXfpKcHtRZ0abNs5tB5hLF3KQ GhKGOO2Z6kMnZBeAbk+UYJxV57cBHtZRBKYuCy+UVt6vu9AWTGrNIRqNgLm87A5ycG1eMCCgGE8 oZj890aF5rqd94yWDKwUr7oJhj5aQvO208j4RO9AIqx74mDmyyW5TRonnWNM7sKcYuae9MPL45A E/2+9qBs+Bz6HL+xnNsYIJhF8gw+qRCgo0obYkRQWXL/XNN2mfWBcXBUvuaYpJ413tPYmqnqkYP MqNuYy3FOCVyNUVeTToAYdCcKiNC+7zlvWYuScMzmCyJWCcd3inP8ZIqp9b/Z665s1zrgSJ5M3V Uvq5k= X-Received: by 2002:a05:600c:4f09:b0:499:ad2e:f7bc with SMTP id 5b1f17b1804b1-499b8455734mr3195175e9.10.1787244634253; Thu, 20 Aug 2026 09:50:34 -0700 (PDT) X-Received: by 2002:a05:600c:4f09:b0:499:ad2e:f7bc with SMTP id 5b1f17b1804b1-499b8455734mr3193965e9.10.1787244633776; Thu, 20 Aug 2026 09:50:33 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Magnus Kulke , =?UTF-8?q?Doru=20Bl=C3=A2nzeanu?= Subject: [PULL 11/53] hw/i386/mshv: migrate REFERENCE_TIME Date: Thu, 20 Aug 2026 18:49:14 +0200 Message-ID: <20260820164957.1895963-12-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787244968901158500 From: Magnus Kulke This is a partition-wide state for which we use a dedicated hw clock facility, similar to KVM. We have to freeze the time for a partition before we are allowed to set it. We register a state change handler for the clock device and a post-load handler for migration state. In the post-load handler we toggle a flag that will set the reference time state on next state to "running" on the partition. We can move the time freeze and reference-time ioctls/hvcalls to the clock module. Signed-off-by: Magnus Kulke Reviewed-by: Doru Bl=C3=A2nzeanu Link: https://lore.kernel.org/r/20260710101534.664604-4-magnuskulke@linux.m= icrosoft.com Signed-off-by: Paolo Bonzini --- MAINTAINERS | 1 + include/system/mshv.h | 3 + accel/mshv/mshv-all.c | 67 ++------------ hw/i386/mshv/clock.c | 189 +++++++++++++++++++++++++++++++++++++++ accel/mshv/trace-events | 1 + hw/i386/meson.build | 1 + hw/i386/mshv/meson.build | 4 + 7 files changed, 208 insertions(+), 58 deletions(-) create mode 100644 hw/i386/mshv/clock.c create mode 100644 hw/i386/mshv/meson.build diff --git a/MAINTAINERS b/MAINTAINERS index f249be744e9..937c47f4919 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -620,6 +620,7 @@ R: Wei Liu R: Doru Bl=C3=A2nzeanu S: Supported F: target/i386/mshv/ +F: hw/i386/mshv/ =20 X86 Instruction Emulator M: Roman Bolshakov diff --git a/include/system/mshv.h b/include/system/mshv.h index 46fe3fcebc2..a6f815b822a 100644 --- a/include/system/mshv.h +++ b/include/system/mshv.h @@ -55,6 +55,9 @@ DECLARE_INSTANCE_CHECKER(MshvState, MSHV_STATE, =20 extern MshvState *mshv_state; =20 +/* clock (partition reference time) */ +void mshv_clock_init(void); + /* interrupt */ int mshv_request_interrupt(MshvState *mshv_state, uint32_t interrupt_type,= uint32_t vector, uint32_t vp_index, bool logical_destination_mod= e, diff --git a/accel/mshv/mshv-all.c b/accel/mshv/mshv-all.c index b34fb34d053..7b3c13cf1ed 100644 --- a/accel/mshv/mshv-all.c +++ b/accel/mshv/mshv-all.c @@ -60,54 +60,6 @@ static int init_mshv(int *mshv_fd) return 0; } =20 -/* freeze 1 to pause, 0 to resume */ -static int set_time_freeze(int vm_fd, int freeze) -{ - int ret; - struct hv_input_set_partition_property in =3D {0}; - in.property_code =3D HV_PARTITION_PROPERTY_TIME_FREEZE; - in.property_value =3D freeze; - - struct mshv_root_hvcall args =3D {0}; - args.code =3D HVCALL_SET_PARTITION_PROPERTY; - args.in_sz =3D sizeof(in); - args.in_ptr =3D (uint64_t)∈ - - ret =3D mshv_hvcall(vm_fd, &args); - if (ret < 0) { - error_report("Failed to set time freeze"); - return -1; - } - - return 0; -} - -static int pause_vm(int vm_fd) -{ - int ret; - - ret =3D set_time_freeze(vm_fd, 1); - if (ret < 0) { - error_report("Failed to pause partition: %s", strerror(errno)); - return -1; - } - - return 0; -} - -static int resume_vm(int vm_fd) -{ - int ret; - - ret =3D set_time_freeze(vm_fd, 0); - if (ret < 0) { - error_report("Failed to resume partition: %s", strerror(errno)); - return -1; - } - - return 0; -} - static int get_host_partition_property(int mshv_fd, uint32_t property_code, uint64_t *value) { @@ -330,9 +282,6 @@ static int create_vm(int mshv_fd, int *vm_fd) return -1; } =20 - /* Always create a frozen partition */ - pause_vm(*vm_fd); - return 0; } =20 @@ -578,13 +527,6 @@ static int mshv_init(AccelState *as, MachineState *ms) return -1; } =20 - ret =3D resume_vm(vm_fd); - if (ret < 0) { - close(mshv_fd); - close(vm_fd); - return -1; - } - s->vm =3D vm_fd; s->fd =3D mshv_fd; =20 @@ -606,6 +548,8 @@ static int mshv_init(AccelState *as, MachineState *ms) =20 register_savevm_live("mshv", 0, 1, &savevm_mshv, s); =20 + mshv_clock_init(); + return 0; } =20 @@ -643,6 +587,13 @@ static int mshv_cpu_exec(CPUState *cpu) cpu->vcpu_dirty =3D false; } =20 + /* Corresponding store-release is in cpu_exit. */ + if (qatomic_load_acquire(&cpu->exit_request)) { + trace_mshv_interrupt_exit_request(cpu->cpu_index); + ret =3D EXCP_INTERRUPT; + break; + } + ret =3D mshv_run_vcpu(mshv_state->vm, cpu, &mshv_msg, &exit_reason= ); if (ret < 0) { error_report("Failed to run on vcpu %d", cpu->cpu_index); diff --git a/hw/i386/mshv/clock.c b/hw/i386/mshv/clock.c new file mode 100644 index 00000000000..02c586503a6 --- /dev/null +++ b/hw/i386/mshv/clock.c @@ -0,0 +1,189 @@ +/* + * MSHV partition reference clock + * + * Copyright Microsoft, Corp. 2026 + * + * Authors: Magnus Kulke + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qemu/error-report.h" +#include "migration/vmstate.h" +#include "system/runstate.h" +#include "hw/hyperv/hvhdk.h" +#include "hw/hyperv/hvhdk_mini.h" +#include "hw/hyperv/hvgdk.h" +#include "hw/hyperv/hvgdk_mini.h" +#include "linux/mshv.h" +#include "system/mshv.h" +#include "system/mshv_int.h" + +/* + * Partition reference clock (HV_PARTITION_PROPERTY_REFERENCE_TIME), captu= red + * when the VM is stopped and re-applied when it resumes. + * + * Mirrors hw/i386/kvm/clock.c. + */ +typedef struct MshvClockState { + uint64_t ref_time; + bool ref_time_pending; +} MshvClockState; + +static MshvClockState mshv_clock; + +static int mshv_get_reference_time(int vm_fd, uint64_t *ref_time) +{ + struct hv_input_get_partition_property in =3D { 0 }; + struct hv_output_get_partition_property out =3D { 0 }; + struct mshv_root_hvcall args =3D { 0 }; + int ret; + + in.property_code =3D HV_PARTITION_PROPERTY_REFERENCE_TIME; + + args.code =3D HVCALL_GET_PARTITION_PROPERTY; + args.in_sz =3D sizeof(in); + args.in_ptr =3D (uint64_t)∈ + args.out_sz =3D sizeof(out); + args.out_ptr =3D (uint64_t)&out; + + ret =3D mshv_hvcall(vm_fd, &args); + if (ret < 0) { + error_report("Failed to get reference time"); + return -1; + } + + *ref_time =3D out.property_value; + return 0; +} + +static int mshv_set_reference_time(int vm_fd, uint64_t ref_time) +{ + struct hv_input_set_partition_property in =3D { 0 }; + struct mshv_root_hvcall args =3D { 0 }; + int ret; + + in.property_code =3D HV_PARTITION_PROPERTY_REFERENCE_TIME; + in.property_value =3D ref_time; + + args.code =3D HVCALL_SET_PARTITION_PROPERTY; + args.in_sz =3D sizeof(in); + args.in_ptr =3D (uint64_t)∈ + + ret =3D mshv_hvcall(vm_fd, &args); + if (ret < 0) { + error_report("Failed to set reference time"); + return -1; + } + + return 0; +} + +/* + * Freeze (freeze=3D1) or unfreeze (freeze=3D0) time for a partition. This= will not + * pause/eject vCPU execution. It is assumed that the caller already has s= topped + * the partition's vCPUs. + * + * NB: a partition's reference clock can only be written while the time is + * frozen. + */ +static int mshv_set_time_freeze(int vm_fd, int freeze) +{ + struct hv_input_set_partition_property in =3D { 0 }; + struct mshv_root_hvcall args =3D { 0 }; + int ret; + + in.property_code =3D HV_PARTITION_PROPERTY_TIME_FREEZE; + in.property_value =3D freeze; + + args.code =3D HVCALL_SET_PARTITION_PROPERTY; + args.in_sz =3D sizeof(in); + args.in_ptr =3D (uint64_t)∈ + + ret =3D mshv_hvcall(vm_fd, &args); + if (ret < 0) { + error_report("Failed to set time freeze"); + return -1; + } + + return 0; +} + +static void mshv_clock_vm_state_change(void *opaque, bool running, + RunState state) +{ + MshvClockState *s =3D opaque; + int vm_fd =3D mshv_state->vm; + int ret; + + if (running) { + /* Skip if we have nothing to restore, e.g. on initial boot. */ + if (!s->ref_time_pending) { + return; + } + + ret =3D mshv_set_time_freeze(vm_fd, 1); + if (ret < 0) { + error_report("Failed to freeze partition time on resume"); + abort(); + } + + /* INVARIANT: reference time can only be written if time is frozen= . */ + ret =3D mshv_set_reference_time(vm_fd, s->ref_time); + if (ret < 0) { + error_report("Failed to restore reference time on resume"); + abort(); + } + + if (mshv_set_time_freeze(vm_fd, 0) < 0) { + error_report("Failed to unfreeze partition time on resume"); + abort(); + } + + s->ref_time_pending =3D false; + } else { + /* Skip if we already have a to-be-set ref time */ + if (s->ref_time_pending) { + return; + } + + ret =3D mshv_get_reference_time(vm_fd, &s->ref_time); + if (ret < 0) { + error_report("Failed to capture reference time on stop"); + abort(); + } + + s->ref_time_pending =3D true; + } +} + +/* + * The incoming reference time should be applied on the next resume before + * vCPUs start executing. + */ +static int mshv_clock_post_load(void *opaque, int version_id) +{ + MshvClockState *s =3D opaque; + + s->ref_time_pending =3D true; + + return 0; +} + +static const VMStateDescription vmstate_mshv_clock =3D { + .name =3D "mshv-clock", + .version_id =3D 1, + .minimum_version_id =3D 1, + .post_load =3D mshv_clock_post_load, + .fields =3D (const VMStateField[]) { + VMSTATE_UINT64(ref_time, MshvClockState), + VMSTATE_END_OF_LIST() + }, +}; + +void mshv_clock_init(void) +{ + vmstate_register(NULL, 0, &vmstate_mshv_clock, &mshv_clock); + qemu_add_vm_change_state_handler(mshv_clock_vm_state_change, &mshv_clo= ck); +} diff --git a/accel/mshv/trace-events b/accel/mshv/trace-events index a4dffeb24a3..859e8bfb0f3 100644 --- a/accel/mshv/trace-events +++ b/accel/mshv/trace-events @@ -4,6 +4,7 @@ # SPDX-License-Identifier: GPL-2.0-or-later =20 mshv_start_vcpu_thread(const char* thread, uint32_t cpu) "thread=3D%s cpu_= index=3D%d" +mshv_interrupt_exit_request(uint32_t cpu) "cpu_index=3D%d" =20 mshv_set_memory(bool add, uint64_t gpa, uint64_t size, uint64_t user_addr,= bool readonly, int ret) "add=3D%d gpa=3D0x%" PRIx64 " size=3D0x%" PRIx64 "= user=3D0x%" PRIx64 " readonly=3D%d result=3D%d" mshv_mem_ioeventfd_add(uint64_t addr, uint32_t size, uint32_t data) "addr= =3D0x%" PRIx64 " size=3D%d data=3D0x%x" diff --git a/hw/i386/meson.build b/hw/i386/meson.build index b611fbb5a7f..f4d31228633 100644 --- a/hw/i386/meson.build +++ b/hw/i386/meson.build @@ -39,6 +39,7 @@ i386_ss.add(when: 'CONFIG_TDX', if_true: files('tdvf.c', = 'tdvf-hob.c')) =20 subdir('kvm') subdir('xen') +subdir('mshv') =20 i386_ss.add_all(xenpv_ss) =20 diff --git a/hw/i386/mshv/meson.build b/hw/i386/mshv/meson.build new file mode 100644 index 00000000000..0e556851b67 --- /dev/null +++ b/hw/i386/mshv/meson.build @@ -0,0 +1,4 @@ +i386_mshv_ss =3D ss.source_set() +i386_mshv_ss.add(files('clock.c')) + +i386_ss.add_all(when: 'CONFIG_MSHV', if_true: i386_mshv_ss) --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244677; cv=none; d=zohomail.com; s=zohoarc; b=L8R8b064vihKo5WacAgonYAvLBZs0mEec526IX0OZ1Uqxgf8cBBLnetNFR+DQi38WijaB3OvHy20pO++05OcnxSsk8hArWCeXKjfvAPy1RoOTpmcoC81bQIlb/TpToC9H1nWgzC/vwzR8eW+hSpVLmLwDJQ9gXlUuZKcff0xwfs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244677; 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=f8clCq896sp1k7uHvjIuVM+wQUp6bOAXBESRx0osuPc=; b=NkRC4iEsba8xJCB1cHAY8sNH3vhAk5NUXufuhEuOjNvtKVZtDbU2YTTy5fu0aPR+/LHG4vJwqY2EghL4OgZ7xwcJzVV4s7++WYKZffWrjdZJuAIikrKpoTCxDTIm2YOGqhov7OimKIESuuJj49PWuxmjpMIvCkiTCGcQfXobmcs= 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 1787244677250504.22014256722946; Thu, 20 Aug 2026 09:51:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5yh-0004GF-SM; Thu, 20 Aug 2026 12:50: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 1wx5yb-00043R-A0 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:49 -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 1wx5yX-0005TG-Td for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:48 -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-628-jTSP7zuDNg-XsuvJv2982w-1; Thu, 20 Aug 2026 12:50:37 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-496b61bd846so170715e9.2 for ; Thu, 20 Aug 2026 09:50:37 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499a9e78496sm167648475e9.2.2026.08.20.09.50.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:50:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244644; 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=f8clCq896sp1k7uHvjIuVM+wQUp6bOAXBESRx0osuPc=; b=Hu16agZtq7TyB6JGN5b+4DsH3x+H3vK5nyrxIF7JKDvshRqNBVmi00qdx+ct0xPJzUelSN KMmkZSstsTxGBaQ595Viz8E4teJaE0W05vJhcJgQG0rp3cEFY7+m/iajG6NJdhT9ANV4tJ Q0RRX3rhWMqXpp4bsersc03VvXWr0Ko= X-MC-Unique: jTSP7zuDNg-XsuvJv2982w-1 X-Mimecast-MFC-AGG-ID: jTSP7zuDNg-XsuvJv2982w_1787244637 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244636; x=1787849436; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=f8clCq896sp1k7uHvjIuVM+wQUp6bOAXBESRx0osuPc=; b=bUCK9hqg+KwqvlrJu2RaUmSLx1lqojIMWOF3uyOgYzZYZ2w9IiAW7gZRqerlN4kq0/ YYZ1n+RRmrY0rpqzrvk89C5dMRVhl2b7S4u3k7FaYBs/vCh+ZGHHm2wdHUi1QowRA+6C QbR3iyEGYgdk3rQY2PAg+CZNB70sl7ElulNl/w1dlTmwM9xGp4fKYiuJrVQzFGRcMJRI A72eVp0sor+QqeKtCi3hRcWjzKzlWngDIaY8NqmGT/XygHqjY3mUk7L4Xo7pvE0wo/tc QuF/VcBKn9uG2CdM6PvY6WfgaefMyx965c135OjRdW2m9Pg8RaMu4YBNpbLYFYaidXbe Xurg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244636; x=1787849436; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=f8clCq896sp1k7uHvjIuVM+wQUp6bOAXBESRx0osuPc=; b=Mm9ciiRJY5O24gW25noGnnaYLmtxJg0gACab0MmtAcVxISlz1eQMeRCLEE3DJ437kD xgl4qi8l2Dm4gQVE67Xc/5huv/vB4JqSFcEazmH38i0s4fW9D4+Xl+5siqUE0vr8b/WM 22IEUz9JPHU8Xie+cLjJDiowD7MttQHZWq71bIPhpxan2yllhG+PVTbokpZnrUPlIe1i 2EPXN5as+dEbBdG2FooutTvwx4TfgQiDJEeykGwEdL5p7XBfCnsO05znzwDHEFusTvAi 0BxKBhiJaxfWmXvzSpmQ1TvgLG4oH6LDdrTuenlJjfEX4E1Dnw3CWFmun8V7WcHvt7F2 b8hg== X-Gm-Message-State: AOJu0YxccFKgwBm0JcLXgsOg2eSYy5SCEODI00TtP/10AVFlHcStyMA4 Ps5mRrGeWXABDioA0GKO2dzifdAj7GPVXV4fapTcgtaCBta9SNdB+a92sVRyHZgxRmGkA0JQLgn qrt20wENlKP/MJQUzsAwRnsiDWx+37ZQz2tYiNbuGeKtVP3pgmMCqgCmoolF+Ckqecw4kC7u6Xp S4+ai8s/yN/RTHAvRjGHhHsQR66p1pKW97OwL04wLS X-Gm-Gg: AR+sD11c6TObZzXQQ4jP3Ujio/5q6yEl8GY+A0qTjybYkgMjR7XlC1Vro0xGijK9o0t LDWeV5voPKVPoKQZ3epj298+xq661zL0mQ7kN4hCtgfj0ihEdzBUoFiwbniDtPsKsd41+wvz+hQ vyJp6cHE9/8aob5QuCU7+9zh4OlpewRpR2bDYHkILEBXn45VVPOqCtqymaPVdJZdxPvXcUmu94e YSQgJCoPpZdBn+GvbRaKPoDaXYimsE/d5QK36z7Em4s+gzGEQiQ1fDQ4jJhXGn0Jji3bio3h4BK 5TrNFPyQHHjju29eTsGcvAZQgr7xw/J1HOQ7tPRbgGVQcOD3cLE817+OZA+RfKa/MP8CEZLbT5i Df0tBmlXsG5Ij0DK9MiVyzwI53toKzdSyoHM0LQv2EPYWPUWYpJEdLZtV55GkXyG7jDcgv+wb+c kFnz8= X-Received: by 2002:a05:600c:4f09:b0:496:bffb:fb7b with SMTP id 5b1f17b1804b1-499b8457b10mr3307035e9.10.1787244636535; Thu, 20 Aug 2026 09:50:36 -0700 (PDT) X-Received: by 2002:a05:600c:4f09:b0:496:bffb:fb7b with SMTP id 5b1f17b1804b1-499b8457b10mr3305965e9.10.1787244636053; Thu, 20 Aug 2026 09:50:36 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Magnus Kulke , =?UTF-8?q?Doru=20Bl=C3=A2nzeanu?= Subject: [PULL 12/53] accel/mshv: install dummy handler for SIG_IPI Date: Thu, 20 Aug 2026 18:49:15 +0200 Message-ID: <20260820164957.1895963-13-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787244677475158500 From: Magnus Kulke This is similar to HVF's implementation. We want to interrupt the blocking vcpu run. The self-kick was effectively a no-op for mshv. Signed-off-by: Magnus Kulke Reviewed-by: Doru Bl=C3=A2nzeanu Link: https://lore.kernel.org/r/20260710101534.664604-5-magnuskulke@linux.m= icrosoft.com Signed-off-by: Paolo Bonzini --- accel/mshv/mshv-all.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/accel/mshv/mshv-all.c b/accel/mshv/mshv-all.c index 7b3c13cf1ed..f9511ca050a 100644 --- a/accel/mshv/mshv-all.c +++ b/accel/mshv/mshv-all.c @@ -621,17 +621,13 @@ static int mshv_cpu_exec(CPUState *cpu) } =20 /* - * The signal handler is triggered when QEMU's main thread receives a SIG_= IPI - * (SIGUSR1). This signal causes the current CPU thread to be kicked, forc= ing a - * VM exit on the CPU. The VM exit generates an exit reason that breaks th= e loop - * (see mshv_cpu_exec). If the exit is due to a Ctrl+A+x command, the syst= em - * will shut down. For other cases, the system will continue running. + * We need a dummy handler to make SIG_IPI a deliverable signal. The kernel + * handler will be woken up by the caught signal and instruct the hypervis= or + * to suspend execution (the concrete mechanism differs between schedulers) + * and return to userspace. */ -static void sa_ipi_handler(int sig) +static void dummy_handler(int sig) { - /* TODO: call IOCTL to set_immediate_exit, once implemented. */ - - qemu_cpu_kick_self(); } =20 static void init_signal(CPUState *cpu) @@ -641,7 +637,7 @@ static void init_signal(CPUState *cpu) sigset_t set; =20 memset(&sigact, 0, sizeof(sigact)); - sigact.sa_handler =3D sa_ipi_handler; + sigact.sa_handler =3D dummy_handler; sigaction(SIG_IPI, &sigact, NULL); =20 pthread_sigmask(SIG_BLOCK, NULL, &set); --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244690; cv=none; d=zohomail.com; s=zohoarc; b=VOPV/Uo9PKtdbADw68ruBz6z6i3TPivCIoHZ9SOZSm/BoKj8dCMncll1clYP5OgkPzOdOmoUobKcMCFcd899o/TCXf5Gv+lqICghxUY2lvjsK9kZ9juTuppxaj+Tfu1R5k71h9YKKjyiVgCgSFk22S4vjCMe7/uyZJNjOhWtP9Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244690; 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=/+0fSdxCXRD0zIillt6YuYO8fbIna/EhBj7HGBooRuw=; b=bcbvWJvuz7C4+e6MFarMuXQmcOlFnP84NmSohLOwwn9kLIrNhFL6BAK9dY4TK9U1bWPf90f+fsU3b59wWw16UGQ2Za1DmZN46jktAhE6UMuZTNa79sLRjzj7muKDmqxkg6ag1yn1bs2YmVKv1SA1DJTtxeDTQxZ+v7uRXEBSO8M= 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 1787244690397818.7313349009819; Thu, 20 Aug 2026 09:51:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5yh-00047v-0t; Thu, 20 Aug 2026 12:50: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 1wx5yZ-00042r-IE for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:49 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx5yU-0005Sf-SN for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:46 -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-617-FFrWHgPoPDKBoh7goA22nA-1; Thu, 20 Aug 2026 12:50:40 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-482bf4da3d5so77787f8f.1 for ; Thu, 20 Aug 2026 09:50:40 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482b14cf0a3sm13601682f8f.32.2026.08.20.09.50.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:50:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244642; 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=/+0fSdxCXRD0zIillt6YuYO8fbIna/EhBj7HGBooRuw=; b=EMwwhs02hZMRgAYMly6UISU76q/RAFzn1CIdiBYPRYA7iIVmf3WZwaOUD+tbOgTAcv0MwT 61gMgl3G4j7ELYBhYCW0wDMhOrkY3uQ/KOtXRJAemX62lmDNT2Bhekp6X2BQIMHUdBTlYQ 2Yt/MC98N2WJ1I2frQRJdkg1kNKP/5Y= X-MC-Unique: FFrWHgPoPDKBoh7goA22nA-1 X-Mimecast-MFC-AGG-ID: FFrWHgPoPDKBoh7goA22nA_1787244639 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244639; x=1787849439; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=/+0fSdxCXRD0zIillt6YuYO8fbIna/EhBj7HGBooRuw=; b=jd2MPPxCbqi3K3FofDk377dU+1oTtYhrpOvAnRPKd5EfJ0vRvEJsHNYOxjaWFCgyq6 B5PquiTxcC/H2JouTQPYNYapr7xltReOn5wQad2PQITOnDZbo3Di0UgDjwSnk0k0bLku v9ogKmWx6cTLVp48SzAEBXCp3P+Fgi+k+wghUPEeIO2anjAlfNBjcSt9puIDhRIywHRa YeIfv/6yfjzJ0IXBKB8Y1wWNdlDSygt2IEp7CAzyC6GnkAOPvOpsP4qSns59eLzvF1D9 n7l9V/bFQY9lwRMe23J6iF4/F4CjVgykaz0ISLjhDVYDMwKeBxwUD7DLWtzVdxFBf8Xv hFVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244639; x=1787849439; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=/+0fSdxCXRD0zIillt6YuYO8fbIna/EhBj7HGBooRuw=; b=tK+snDZuaBtzxvduE+3bSMpA9lSFohpzeHtEE155biJjBjmVduejZZzOfxVw3oginu s6OFPUuZXKeFRUo1NnEEV4ElSwk2wrhs0uJ3QX7NI1Jsly/ddzQA4eOCqykD8+bPbISZ B9qgObql+zF+TvEMGTp5yMwphCmJKG3HKSumWQLtSKUS8svmbQnCE7Uh3lbSRM4LDsEt 0CppTA83HJHRNdCcMGcAt35wiIvaTyXCEbD2ct3CwFP0yxgq3dWWnMnRZ6Z05R1fSrWT 8WtzwOY/eifdjRk+q+H2xj6aCFtr6N26ZrpUfbqSdUjO2alpp3lb5zTADyyp+f+6swrw w6Cg== X-Gm-Message-State: AFuF++lJvp4nazHbB3IUqiX68xfbGz8ElSAZAqVJ459sv4+IHN2al6gc xXuBEYwaO6VZoj+LZLiPh/eNslhH8tMjNYHIq1nhp22iYV/rk/ssFCvlXseatYxn8CJLZ+m9kKk Jc0mvniA8Z8dcJ53AH6Ho4weo86omP/CnxABzr2fAJaLPLWI6lGFg7OldaqoK2dptkM2vBwOcYl nqzBG898XXPItDanbwhjq8fjdA9cMEUJ8lfAwwyVBs X-Gm-Gg: AR+sD117SFX5il3nydhp1K1EXQfNBFOM3jJGedEcmuE4F4Zn2o2AsJIcX3D2ASVNIH8 2T9DZ5802YU4+/appOHWUgT9Xnj90Za1ebB+0c/98iIjsyB3PR0XdVInxcCjkFlwI+cUAV/W4CB rp3n0kNuRpRkykAMoHamwJsXLptv8K0dryqDf7z7F8pTkM1u6mM+ZIaPRskTK/WyZLgKCVmb1pL 10rHpBJ9AfsZOgoyay5RrPB34GysiZsTcbmEyJhwNuKEhC34acAi24lfy8iZ+Iu/TQzCcXlvlcF LvHWr5al4EqUIIvzkQDTHykp42APhq6/u92Wvq84NondRAh3OfVJxe98x98BMhLFrPSSNKmiX5q baRbXkU/+IAuBqfQZJNnqQl6y6zEVyFbJ0crJ1+oBHDI9iTmb9kovU1Zo04TjYEZf0p4PhWEXMy fdW8I= X-Received: by 2002:a5d:5886:0:b0:481:568e:11b5 with SMTP id ffacd0b85a97d-482c0b4207emr51602f8f.5.1787244638880; Thu, 20 Aug 2026 09:50:38 -0700 (PDT) X-Received: by 2002:a5d:5886:0:b0:481:568e:11b5 with SMTP id ffacd0b85a97d-482c0b4207emr51418f8f.5.1787244638240; Thu, 20 Aug 2026 09:50:38 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Magnus Kulke , =?UTF-8?q?Doru=20Bl=C3=A2nzeanu?= Subject: [PULL 13/53] target/i386/mshv: migrate LAPIC state Date: Thu, 20 Aug 2026 18:49:16 +0200 Message-ID: <20260820164957.1895963-14-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787244691633158500 From: Magnus Kulke This change implements loading and storing the hyperv lapic state as part of the load/store routines for a vcpu. The HyperV LAPIC is similar to the the split-irqchip in KVM. MSHV currently keeps PIC/IOAPIC emulation in userspace, while LAPIC interrupt injection is handled through hypercalls. We introduced dedicated apic infra in hw/i386/mshv to handle the migration and move lapic related functions from target/i386/mshv there. References have been the WHPX's whpx-apic implemenation and the mshv-ioctls crate's get_/set_lapic() impl for the mapping between MSHV/QEMU lapic state. We are mapping the lapic state that we receive from the hypervisor to fields in APICCommonState. Common fields are used where feasible, with an mshv-specific MshvAPICState object that carries mshv-specific fields. We have introduced a guard in pic_irq_request() that will early exit for the mshv accelerator, because mshv cannot take part in the userland path for legacy PIC interrupt injection. The TSC_DEADLINE MSR is also migrated as part of LAPIC migration. Signed-off-by: Magnus Kulke Reviewed-by: Doru Bl=C3=A2nzeanu Link: https://lore.kernel.org/r/20260710101534.664604-6-magnuskulke@linux.m= icrosoft.com Signed-off-by: Paolo Bonzini --- include/hw/hyperv/hvgdk_mini.h | 2 + include/hw/i386/apic-msidef.h | 1 + include/system/mshv.h | 2 + include/system/mshv_int.h | 8 +- accel/mshv/mshv-all.c | 1 + hw/i386/mshv/apic.c | 395 +++++++++++++++++++++++++++++++++ hw/i386/x86-cpu.c | 6 + target/i386/cpu-apic.c | 3 + target/i386/mshv/mshv-cpu.c | 151 ++++--------- target/i386/mshv/msr.c | 2 + hw/i386/meson.build | 2 +- hw/i386/mshv/meson.build | 1 + 12 files changed, 460 insertions(+), 114 deletions(-) create mode 100644 hw/i386/mshv/apic.c diff --git a/include/hw/hyperv/hvgdk_mini.h b/include/hw/hyperv/hvgdk_mini.h index f8838a31bbe..0602a7c6cc6 100644 --- a/include/hw/hyperv/hvgdk_mini.h +++ b/include/hw/hyperv/hvgdk_mini.h @@ -168,6 +168,7 @@ typedef enum hv_register_name { /* Available */ =20 HV_X64_REGISTER_SPEC_CTRL =3D 0x00080084, + HV_X64_REGISTER_TSC_DEADLINE =3D 0x00080095, HV_X64_REGISTER_TSC_ADJUST =3D 0x00080096, =20 /* CET / Shadow Stack */ @@ -930,6 +931,7 @@ struct hv_cpuid { #define IA32_MSR_DEBUG_CTL 0x1D9 #define IA32_MSR_SPEC_CTRL 0x00000048 #define IA32_MSR_TSC_ADJUST 0x0000003b +#define IA32_MSR_TSC_DEADLINE 0x000006e0 =20 #define IA32_MSR_MISC_ENABLE 0x000001a0 =20 diff --git a/include/hw/i386/apic-msidef.h b/include/hw/i386/apic-msidef.h index 420b41167db..6b860b58074 100644 --- a/include/hw/i386/apic-msidef.h +++ b/include/hw/i386/apic-msidef.h @@ -13,6 +13,7 @@ #define MSI_DATA_VECTOR_MASK 0x000000ff =20 #define MSI_DATA_DELIVERY_MODE_SHIFT 8 +#define MSI_DATA_DELIVERY_MODE_MASK 7 #define MSI_DATA_LEVEL_SHIFT 14 #define MSI_DATA_TRIGGER_SHIFT 15 =20 diff --git a/include/system/mshv.h b/include/system/mshv.h index a6f815b822a..f98ddff9b57 100644 --- a/include/system/mshv.h +++ b/include/system/mshv.h @@ -41,9 +41,11 @@ extern bool mshv_allowed; #define mshv_enabled() (mshv_allowed) #define mshv_msi_via_irqfd_enabled() mshv_enabled() +#define mshv_irqchip_in_kernel() mshv_enabled() #else /* CONFIG_MSHV_IS_POSSIBLE */ #define mshv_enabled() false #define mshv_msi_via_irqfd_enabled() mshv_enabled() +#define mshv_irqchip_in_kernel() mshv_enabled() #endif =20 #define TYPE_MSHV_ACCEL ACCEL_CLASS_NAME("mshv") diff --git a/include/system/mshv_int.h b/include/system/mshv_int.h index b91c4d661a3..c2f13c01947 100644 --- a/include/system/mshv_int.h +++ b/include/system/mshv_int.h @@ -105,10 +105,16 @@ void mshv_arch_amend_proc_features( void mshv_arch_disable_partition_proc_features( union hv_partition_processor_features *disabled_features); int mshv_arch_post_init_vm(int vm_fd); - +int mshv_get_vp_state(int cpu_fd, struct mshv_get_set_vp_state *state); +int mshv_set_vp_state(int cpu_fd, const struct mshv_get_set_vp_state *stat= e); typedef struct mshv_root_hvcall mshv_root_hvcall; int mshv_hvcall(int fd, const mshv_root_hvcall *args); =20 +/* apic */ +int mshv_init_lint(CPUState *cpu); +int mshv_set_lapic(const CPUState *cpu); +int mshv_get_lapic(CPUState *cpu); + /* memory */ typedef struct MshvMemoryRegion { uint64_t guest_phys_addr; diff --git a/accel/mshv/mshv-all.c b/accel/mshv/mshv-all.c index f9511ca050a..1516475f34f 100644 --- a/accel/mshv/mshv-all.c +++ b/accel/mshv/mshv-all.c @@ -813,6 +813,7 @@ static void mshv_accel_ops_class_init(ObjectClass *oc, = const void *data) ops->synchronize_state =3D mshv_cpu_synchronize; ops->synchronize_pre_loadvm =3D mshv_cpu_synchronize_pre_loadvm; ops->cpus_are_resettable =3D mshv_cpus_are_resettable; + ops->cpu_thread_is_idle =3D mshv_vcpu_thread_is_idle; ops->handle_interrupt =3D generic_handle_interrupt; } =20 diff --git a/hw/i386/mshv/apic.c b/hw/i386/mshv/apic.c new file mode 100644 index 00000000000..9188a93b2fe --- /dev/null +++ b/hw/i386/mshv/apic.c @@ -0,0 +1,395 @@ +/* + * MSHV in-kernel APIC support + * + * Copyright Microsoft, Corp. 2026 + * + * Authors: Magnus Kulke + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qemu/module.h" +#include "qemu/memalign.h" +#include "qemu/error-report.h" +#include "hw/i386/apic_internal.h" +#include "hw/i386/apic-msidef.h" +#include "hw/pci/msi.h" +#include "migration/vmstate.h" +#include "qemu/typedefs.h" +#include "system/hw_accel.h" +#include "system/mshv.h" +#include "system/mshv_int.h" + +typedef struct hv_local_interrupt_controller_state + hv_local_interrupt_controller_state; + +#define TYPE_MSHV_APIC "mshv-apic" +OBJECT_DECLARE_SIMPLE_TYPE(MshvAPICState, MSHV_APIC) + +struct MshvAPICState { + APICCommonState parent_obj; + + uint32_t apic_version; + uint32_t apic_lvt_cmci; + uint32_t apic_error_status; + uint32_t apic_counter_value; + uint32_t apic_remote_read; +}; + +static int get_lapic(int cpu_fd, + struct hv_local_interrupt_controller_state *state) +{ + int ret; + size_t size =3D 4096; + /* buffer aligned to 4k, as *state requires that */ + void *buffer =3D qemu_memalign(size, size); + struct mshv_get_set_vp_state mshv_state =3D { 0 }; + + mshv_state.buf_ptr =3D (uint64_t) buffer; + mshv_state.buf_sz =3D size; + mshv_state.type =3D MSHV_VP_STATE_LAPIC; + + ret =3D mshv_get_vp_state(cpu_fd, &mshv_state); + if (ret =3D=3D 0) { + memcpy(state, buffer, sizeof(*state)); + } + qemu_vfree(buffer); + if (ret < 0) { + error_report("failed to get lapic"); + return -1; + } + + return 0; +} + +static int set_lapic(int cpu_fd, + const struct hv_local_interrupt_controller_state *sta= te) +{ + int ret; + size_t size =3D 4096; + /* buffer aligned to 4k, as *state requires that */ + void *buffer =3D qemu_memalign(size, size); + struct mshv_get_set_vp_state mshv_state =3D { 0 }; + + if (!state) { + error_report("lapic state is NULL"); + return -1; + } + memcpy(buffer, state, sizeof(*state)); + + mshv_state.buf_ptr =3D (uint64_t) buffer; + mshv_state.buf_sz =3D size; + mshv_state.type =3D MSHV_VP_STATE_LAPIC; + + ret =3D mshv_set_vp_state(cpu_fd, &mshv_state); + qemu_vfree(buffer); + if (ret < 0) { + error_report("failed to set lapic: %s", strerror(errno)); + return -1; + } + + return 0; +} + +static void populate_apic_state(CPUState *cpu, + const hv_local_interrupt_controller_state = *hv) +{ + X86CPU *x86cpu =3D X86_CPU(cpu); + MshvAPICState *ms =3D MSHV_APIC(x86cpu->apic_state); + APICCommonState *s =3D &ms->parent_obj; + size_t i; + + /* + * x2APIC: + * - APIC ID is the full 32-bit initial_apic_id + * - LDR is read-only, architecturally derived from the ID + * - DFR does not exist in x2APIC mode + */ + if (is_x2apic_mode(s)) { + s->initial_apic_id =3D hv->apic_id; + } else { + s->id =3D hv->apic_id >> 24; + s->log_dest =3D hv->apic_ldr >> 24; + s->dest_mode =3D hv->apic_dfr >> 28; + } + ms->apic_version =3D hv->apic_version; + s->spurious_vec =3D hv->apic_spurious; + for (i =3D 0; i < 8; i++) { + s->isr[i] =3D hv->apic_isr[i]; + s->tmr[i] =3D hv->apic_tmr[i]; + s->irr[i] =3D hv->apic_irr[i]; + } + s->esr =3D hv->apic_esr; + s->icr[1] =3D hv->apic_icr_high; + s->icr[0] =3D hv->apic_icr_low; + + s->lvt[APIC_LVT_TIMER] =3D hv->apic_lvt_timer; + s->lvt[APIC_LVT_THERMAL] =3D hv->apic_lvt_thermal; + s->lvt[APIC_LVT_PERFORM] =3D hv->apic_lvt_perfmon; + s->lvt[APIC_LVT_LINT0] =3D hv->apic_lvt_lint0; + s->lvt[APIC_LVT_LINT1] =3D hv->apic_lvt_lint1; + s->lvt[APIC_LVT_ERROR] =3D hv->apic_lvt_error; + ms->apic_lvt_cmci =3D hv->apic_lvt_cmci; + + ms->apic_error_status =3D hv->apic_error_status; + s->initial_count =3D hv->apic_initial_count; + ms->apic_counter_value =3D hv->apic_counter_value; + s->divide_conf =3D hv->apic_divide_configuration; + ms->apic_remote_read =3D hv->apic_remote_read; +} + +static uint32_t set_apic_delivery_mode(uint32_t reg, uint32_t mode) +{ + return ((reg) & ~0x700) | ((mode) << 8); +} + +int mshv_init_lint(CPUState *cpu) +{ + uint32_t *lvt_lint0, *lvt_lint1; + int cpu_fd =3D mshv_vcpufd(cpu); + int ret; + struct hv_local_interrupt_controller_state lapic_state =3D { 0 }; + + ret =3D get_lapic(cpu_fd, &lapic_state); + if (ret < 0) { + return ret; + } + + lvt_lint0 =3D &lapic_state.apic_lvt_lint0; + *lvt_lint0 =3D set_apic_delivery_mode(*lvt_lint0, APIC_DM_EXTINT); + + lvt_lint1 =3D &lapic_state.apic_lvt_lint1; + *lvt_lint1 =3D set_apic_delivery_mode(*lvt_lint1, APIC_DM_NMI); + + /* TODO: should we skip setting lapic if the values are the same? */ + + ret =3D set_lapic(cpu_fd, &lapic_state); + if (ret < 0) { + return -1; + } + + populate_apic_state(cpu, &lapic_state); + + return 0; +} + +static void populate_hv_lapic_state(hv_local_interrupt_controller_state *h= v, + const CPUState *cpu) +{ + uint32_t x2apic_id; + X86CPU *x86cpu =3D X86_CPU(cpu); + MshvAPICState *ms =3D MSHV_APIC(x86cpu->apic_state); + APICCommonState *s =3D &ms->parent_obj; + size_t i; + + /* + * x2APIC: + * - APIC ID is the full 32-bit initial_apic_id + * - LDR is read-only, architecturally derived from the ID + * - DFR does not exist in x2APIC mode + */ + if (is_x2apic_mode(s)) { + x2apic_id =3D s->initial_apic_id; + + hv->apic_id =3D x2apic_id; + hv->apic_ldr =3D ((x2apic_id >> 4) << 16) | (1 << (x2apic_id & 0xf= )); + hv->apic_dfr =3D 0; + } else { + hv->apic_id =3D s->id << 24; + hv->apic_ldr =3D s->log_dest << 24; + hv->apic_dfr =3D s->dest_mode << 28 | 0x0fffffff; + } + hv->apic_version =3D ms->apic_version; + hv->apic_spurious =3D s->spurious_vec; + for (i =3D 0; i < 8; i++) { + hv->apic_isr[i] =3D s->isr[i]; + hv->apic_tmr[i] =3D s->tmr[i]; + hv->apic_irr[i] =3D s->irr[i]; + } + hv->apic_esr =3D s->esr; + hv->apic_icr_high =3D s->icr[1]; + hv->apic_icr_low =3D s->icr[0]; + + hv->apic_lvt_timer =3D s->lvt[APIC_LVT_TIMER]; + hv->apic_lvt_thermal =3D s->lvt[APIC_LVT_THERMAL]; + hv->apic_lvt_perfmon =3D s->lvt[APIC_LVT_PERFORM]; + hv->apic_lvt_lint0 =3D s->lvt[APIC_LVT_LINT0]; + hv->apic_lvt_lint1 =3D s->lvt[APIC_LVT_LINT1]; + hv->apic_lvt_error =3D s->lvt[APIC_LVT_ERROR]; + hv->apic_lvt_cmci =3D ms->apic_lvt_cmci; + + hv->apic_error_status =3D ms->apic_error_status; + hv->apic_initial_count =3D s->initial_count; + hv->apic_counter_value =3D ms->apic_counter_value; + hv->apic_divide_configuration =3D s->divide_conf; + hv->apic_remote_read =3D ms->apic_remote_read; +} + +int mshv_set_lapic(const CPUState *cpu) +{ + int cpu_fd =3D mshv_vcpufd(cpu); + struct hv_local_interrupt_controller_state lapic_state =3D { 0 }; + + populate_hv_lapic_state(&lapic_state, cpu); + + return set_lapic(cpu_fd, &lapic_state); +} + +int mshv_get_lapic(CPUState *cpu) +{ + int cpu_fd =3D mshv_vcpufd(cpu); + int ret; + struct hv_local_interrupt_controller_state lapic_state =3D { 0 }; + + ret =3D get_lapic(cpu_fd, &lapic_state); + if (ret < 0) { + return -1; + } + + populate_apic_state(cpu, &lapic_state); + + return 0; +} + +static int mshv_apic_set_base(APICCommonState *s, uint64_t val) +{ + s->apicbase =3D val; + + return 0; +} + +static void mshv_apic_set_tpr(APICCommonState *s, uint8_t val) +{ + s->tpr =3D (val & APIC_PR_SUB_CLASS) << APIC_PR_CLASS_SHIFT; +} + +static uint8_t mshv_apic_get_tpr(APICCommonState *s) +{ + return s->tpr >> APIC_PR_CLASS_SHIFT; +} + +static void mshv_apic_external_nmi(APICCommonState *s) +{ +} + +static void mshv_apic_vapic_base_update(APICCommonState *s) +{ +} + +static void mshv_send_msi(MSIMessage *msi) +{ + uint64_t addr; + uint32_t data, dest; + uint8_t vector, dest_mode, trigger_mode, delivery; + + addr =3D msi->address; + data =3D msi->data; + dest =3D (addr & MSI_ADDR_DEST_ID_MASK) >> MSI_ADDR_DEST_ID_SH= IFT | + (addr >> 32); + vector =3D (data & MSI_DATA_VECTOR_MASK) >> MSI_DATA_VECTOR_SHIF= T; + dest_mode =3D (addr >> MSI_ADDR_DEST_MODE_SHIFT) & 0x1; + trigger_mode =3D (data >> MSI_DATA_TRIGGER_SHIFT) & 0x1; + delivery =3D (data >> MSI_DATA_DELIVERY_MODE_SHIFT) & + MSI_DATA_DELIVERY_MODE_MASK; + + mshv_request_interrupt(mshv_state, delivery, vector, dest, dest_mode, + trigger_mode); +} + +static uint64_t mshv_apic_mem_read(void *opaque, hwaddr addr, + unsigned size) +{ + return UINT64_MAX; +} + +static void mshv_apic_mem_write(void *opaque, hwaddr addr, + uint64_t data, unsigned size) +{ + MSIMessage msg =3D { .address =3D addr, .data =3D data }; + + mshv_send_msi(&msg); +} + +static const MemoryRegionOps mshv_apic_io_ops =3D { + .read =3D mshv_apic_mem_read, + .write =3D mshv_apic_mem_write, + .endianness =3D DEVICE_LITTLE_ENDIAN, +}; + +static void mshv_apic_reset(APICCommonState *s) +{ + s->wait_for_sipi =3D 0; +} + +static const VMStateDescription vmstate_mshv_apic =3D { + .name =3D "mshv-apic", + .version_id =3D 1, + .minimum_version_id =3D 1, + .fields =3D (const VMStateField[]) { + VMSTATE_UINT32(apic_version, MshvAPICState), + VMSTATE_UINT32(apic_lvt_cmci, MshvAPICState), + VMSTATE_UINT32(apic_error_status, MshvAPICState), + VMSTATE_UINT32(apic_counter_value, MshvAPICState), + VMSTATE_UINT32(apic_remote_read, MshvAPICState), + VMSTATE_END_OF_LIST() + } +}; + +static void mshv_apic_realize(DeviceState *dev, Error **errp) +{ + APICCommonState *s =3D APIC_COMMON(dev); + MshvAPICState *ms =3D MSHV_APIC(dev); + + memory_region_init_io(&s->io_memory, OBJECT(s), &mshv_apic_io_ops, s, + "mshv-apic-msi", APIC_SPACE_SIZE); + + msi_nonbroken =3D true; + + /* + * We register this state explicity, rather than going via dc->vmsd. + * The auto-wiring would register the state with + * instance_id =3D=3D VMSTATE_INSTANCE_ID_ANY, which for the APIC does= n't + * work, b/c the ID carries semantic meaning for restoring the state + * on the destination (which vcpu it belongs to). + */ + vmstate_register_with_alias_id(NULL, + s->initial_apic_id, &vmstate_mshv_apic,= ms, + -1, 0, NULL); +} + +static void mshv_apic_unrealize(DeviceState *dev) +{ + MshvAPICState *ms =3D MSHV_APIC(dev); + + vmstate_unregister(NULL, &vmstate_mshv_apic, ms); +} + +static void mshv_apic_class_init(ObjectClass *klass, const void *data) +{ + APICCommonClass *k =3D APIC_COMMON_CLASS(klass); + + k->realize =3D mshv_apic_realize; + k->unrealize =3D mshv_apic_unrealize; + k->reset =3D mshv_apic_reset; + k->set_base =3D mshv_apic_set_base; + k->set_tpr =3D mshv_apic_set_tpr; + k->get_tpr =3D mshv_apic_get_tpr; + k->external_nmi =3D mshv_apic_external_nmi; + k->vapic_base_update =3D mshv_apic_vapic_base_update; + k->send_msi =3D mshv_send_msi; +} + +static const TypeInfo mshv_apic_info =3D { + .name =3D TYPE_MSHV_APIC, + .parent =3D TYPE_APIC_COMMON, + .instance_size =3D sizeof(MshvAPICState), + .class_init =3D mshv_apic_class_init, +}; + +static void mshv_apic_register_types(void) +{ + type_register_static(&mshv_apic_info); +} + +type_init(mshv_apic_register_types) diff --git a/hw/i386/x86-cpu.c b/hw/i386/x86-cpu.c index 95e08e3c2a0..fba313376c3 100644 --- a/hw/i386/x86-cpu.c +++ b/hw/i386/x86-cpu.c @@ -22,6 +22,7 @@ */ #include "qemu/osdep.h" #include "system/whpx.h" +#include "system/mshv.h" #include "system/cpu-timers.h" #include "trace.h" =20 @@ -44,6 +45,11 @@ static void pic_irq_request(void *opaque, int irq, int l= evel) X86CPU *cpu =3D X86_CPU(cs); =20 trace_x86_pic_interrupt(irq, level); + + if (mshv_irqchip_in_kernel()) { + return; + } + if (cpu_is_apic_enabled(cpu->apic_state) && !kvm_irqchip_in_kernel() && !whpx_irqchip_in_kernel()) { CPU_FOREACH(cs) { diff --git a/target/i386/cpu-apic.c b/target/i386/cpu-apic.c index 04b7257ad12..b4cf048a7c0 100644 --- a/target/i386/cpu-apic.c +++ b/target/i386/cpu-apic.c @@ -14,6 +14,7 @@ #include "system/hw_accel.h" #include "system/kvm.h" #include "system/xen.h" +#include "system/mshv.h" #include "system/address-spaces.h" #include "hw/core/qdev-properties.h" #include "hw/i386/apic_internal.h" @@ -34,6 +35,8 @@ APICCommonClass *apic_get_class(Error **errp) apic_type =3D "xen-apic"; } else if (whpx_irqchip_in_kernel()) { apic_type =3D "whpx-apic"; + } else if (mshv_enabled()) { + apic_type =3D "mshv-apic"; } =20 return APIC_COMMON_CLASS(object_class_by_name(apic_type)); diff --git a/target/i386/mshv/mshv-cpu.c b/target/i386/mshv/mshv-cpu.c index fa15e399cb8..00e948903d9 100644 --- a/target/i386/mshv/mshv-cpu.c +++ b/target/i386/mshv/mshv-cpu.c @@ -21,7 +21,6 @@ #include "hw/hyperv/hvgdk.h" #include "hw/hyperv/hvgdk_mini.h" #include "hw/hyperv/hvhdk_mini.h" -#include "hw/i386/apic_internal.h" =20 #include "cpu.h" #include "host-cpu.h" @@ -955,6 +954,11 @@ int mshv_arch_load_vcpu_state(CPUState *cpu) return ret; } =20 + ret =3D mshv_get_lapic(cpu); + if (ret < 0) { + return ret; + } + ret =3D mshv_get_msrs(cpu); if (ret < 0) { return ret; @@ -1377,116 +1381,6 @@ static int set_xc_reg(const CPUState *cpu) return 0; } =20 -static int get_vp_state(int cpu_fd, struct mshv_get_set_vp_state *state) -{ - int ret; - - ret =3D ioctl(cpu_fd, MSHV_GET_VP_STATE, state); - if (ret < 0) { - error_report("failed to get partition state: %s", strerror(errno)); - return -1; - } - - return 0; -} - -static int get_lapic(const CPUState *cpu, - struct hv_local_interrupt_controller_state *state) -{ - int ret; - size_t size =3D 4096; - /* buffer aligned to 4k, as *state requires that */ - void *buffer =3D qemu_memalign(size, size); - struct mshv_get_set_vp_state mshv_state =3D { 0 }; - int cpu_fd =3D mshv_vcpufd(cpu); - - mshv_state.buf_ptr =3D (uint64_t) buffer; - mshv_state.buf_sz =3D size; - mshv_state.type =3D MSHV_VP_STATE_LAPIC; - - ret =3D get_vp_state(cpu_fd, &mshv_state); - if (ret =3D=3D 0) { - memcpy(state, buffer, sizeof(*state)); - } - qemu_vfree(buffer); - if (ret < 0) { - error_report("failed to get lapic"); - return -1; - } - - return 0; -} - -static uint32_t set_apic_delivery_mode(uint32_t reg, uint32_t mode) -{ - return ((reg) & ~0x700) | ((mode) << 8); -} - -static int set_vp_state(int cpu_fd, const struct mshv_get_set_vp_state *st= ate) -{ - int ret; - - ret =3D ioctl(cpu_fd, MSHV_SET_VP_STATE, state); - if (ret < 0) { - error_report("failed to set partition state: %s", strerror(errno)); - return -1; - } - - return 0; -} - -static int set_lapic(const CPUState *cpu, - const struct hv_local_interrupt_controller_state *sta= te) -{ - int ret; - size_t size =3D 4096; - /* buffer aligned to 4k, as *state requires that */ - void *buffer =3D qemu_memalign(size, size); - struct mshv_get_set_vp_state mshv_state =3D { 0 }; - int cpu_fd =3D mshv_vcpufd(cpu); - - if (!state) { - error_report("lapic state is NULL"); - return -1; - } - memcpy(buffer, state, sizeof(*state)); - - mshv_state.buf_ptr =3D (uint64_t) buffer; - mshv_state.buf_sz =3D size; - mshv_state.type =3D MSHV_VP_STATE_LAPIC; - - ret =3D set_vp_state(cpu_fd, &mshv_state); - qemu_vfree(buffer); - if (ret < 0) { - error_report("failed to set lapic: %s", strerror(errno)); - return -1; - } - - return 0; -} - -static int init_lint(const CPUState *cpu) -{ - int ret; - uint32_t *lvt_lint0, *lvt_lint1; - - struct hv_local_interrupt_controller_state lapic_state =3D { 0 }; - ret =3D get_lapic(cpu, &lapic_state); - if (ret < 0) { - return ret; - } - - lvt_lint0 =3D &lapic_state.apic_lvt_lint0; - *lvt_lint0 =3D set_apic_delivery_mode(*lvt_lint0, APIC_DM_EXTINT); - - lvt_lint1 =3D &lapic_state.apic_lvt_lint1; - *lvt_lint1 =3D set_apic_delivery_mode(*lvt_lint1, APIC_DM_NMI); - - /* TODO: should we skip setting lapic if the values are the same? */ - - return set_lapic(cpu, &lapic_state); -} - int mshv_arch_store_vcpu_state(const CPUState *cpu) { int ret; @@ -1511,6 +1405,12 @@ int mshv_arch_store_vcpu_state(const CPUState *cpu) return ret; } =20 + /* INVARIANT: special regs (APIC_BASE) must be restored before LAPIC */ + ret =3D mshv_set_lapic(cpu); + if (ret < 0) { + return ret; + } + ret =3D mshv_set_msrs(cpu); if (ret < 0) { return ret; @@ -2100,7 +2000,7 @@ void mshv_arch_init_vcpu(CPUState *cpu) ret =3D mshv_init_msrs(cpu); assert(ret =3D=3D 0); =20 - ret =3D init_lint(cpu); + ret =3D mshv_init_lint(cpu); assert(ret =3D=3D 0); } =20 @@ -2247,6 +2147,33 @@ static void mshv_cpu_xsave_init(void) } } =20 +int mshv_set_vp_state(int cpu_fd, const struct mshv_get_set_vp_state *stat= e) +{ + int ret; + + ret =3D ioctl(cpu_fd, MSHV_SET_VP_STATE, state); + if (ret < 0) { + error_report("failed to set partition state: %s", strerror(errno)); + return -1; + } + + return 0; +} + + +int mshv_get_vp_state(int cpu_fd, struct mshv_get_set_vp_state *state) +{ + int ret; + + ret =3D ioctl(cpu_fd, MSHV_GET_VP_STATE, state); + if (ret < 0) { + error_report("failed to get partition state: %s", strerror(errno)); + return -1; + } + + return 0; +} + static void mshv_cpu_instance_init(CPUState *cs) { X86CPU *cpu =3D X86_CPU(cs); diff --git a/target/i386/mshv/msr.c b/target/i386/mshv/msr.c index 8c220a99423..a5f639c3ca6 100644 --- a/target/i386/mshv/msr.c +++ b/target/i386/mshv/msr.c @@ -60,6 +60,8 @@ static const MshvMsrEnvMap msr_env_map[] =3D { offsetof(CPUX86State, tsc_aux) }, { IA32_MSR_TSC_ADJUST, HV_X64_REGISTER_TSC_ADJUST, offsetof(CPUX86State, tsc_adjust) }, + { IA32_MSR_TSC_DEADLINE, HV_X64_REGISTER_TSC_DEADLINE, + offsetof(CPUX86State, tsc_deadline) }, =20 /* Hyper-V per-partition MSRs */ { HV_X64_MSR_HYPERCALL, HV_X64_REGISTER_HYPERCALL, diff --git a/hw/i386/meson.build b/hw/i386/meson.build index f4d31228633..39ac8c9edc0 100644 --- a/hw/i386/meson.build +++ b/hw/i386/meson.build @@ -38,8 +38,8 @@ i386_ss.add(when: 'CONFIG_X86_FW_OVMF', if_true: files('p= c_sysfw_ovmf.c'), i386_ss.add(when: 'CONFIG_TDX', if_true: files('tdvf.c', 'tdvf-hob.c')) =20 subdir('kvm') -subdir('xen') subdir('mshv') +subdir('xen') =20 i386_ss.add_all(xenpv_ss) =20 diff --git a/hw/i386/mshv/meson.build b/hw/i386/mshv/meson.build index 0e556851b67..c631ee13027 100644 --- a/hw/i386/mshv/meson.build +++ b/hw/i386/mshv/meson.build @@ -1,4 +1,5 @@ i386_mshv_ss =3D ss.source_set() i386_mshv_ss.add(files('clock.c')) +i386_mshv_ss.add(when: 'CONFIG_APIC', if_true: files('apic.c')) =20 i386_ss.add_all(when: 'CONFIG_MSHV', if_true: i386_mshv_ss) --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244680; cv=none; d=zohomail.com; s=zohoarc; b=Ews3t2F15shJIgVvBG2H5WsKWK9oLccEbKTX05917i5lZ+726/jkhQd05Ukloh9HMcIqYSb3CYkVfKJ3wUjbATehdSEklTD8XMj+lfqe20xGL2Ka/SYud8IDLOW81KqH3XUefL/RLNdA31Q5YRWYwPVbfo7Us3/aGEayjTR2CdE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244680; 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=esr51iSHBjd/y3UjyJmq4pMVM2wH/MerbWeavAT2qh0=; b=cIWngeDJlUtUmDot8gU0n4HDUUmWv1tTB3cPk0pyqmrwfnuQrWXZBPxHPHPOtWBAWsrYdEotg5RIgHF5mFJmEdnVFF18LAvv0I15WxjbrgCJV5P5WnBJZ30xVExb4kPn3SpvHSVq5PJCZNaI8/pKEKffB+ApnMKG/RKB6MS781A= 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 1787244680785853.5783187767705; Thu, 20 Aug 2026 09:51:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5yd-00046R-5l; Thu, 20 Aug 2026 12:50: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 1wx5yb-00043O-9s for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:49 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx5yX-0005TR-St for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:47 -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-653-LTQ7m2e6MBqPKdVXXJcRlg-1; Thu, 20 Aug 2026 12:50:42 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-47faa02f707so976826f8f.1 for ; Thu, 20 Aug 2026 09:50:42 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482b14b7d3asm13351802f8f.23.2026.08.20.09.50.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:50:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244645; 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=esr51iSHBjd/y3UjyJmq4pMVM2wH/MerbWeavAT2qh0=; b=AKja7Yqp3FyQLL0eyk982b8HmD9M9OCsFCsQEQcOrJW6Ik8Z+FBH4iHT5qS1k7byhve3Lk ooHxIFMxCFM67wkRnNdoNUFFvRgMUJIQqY6O8VoOKtcKXMbnMPqGUWhVojiGeuYMofbR+e YqosxHWPL+7U3vsaTViP2kfATHWiV4A= X-MC-Unique: LTQ7m2e6MBqPKdVXXJcRlg-1 X-Mimecast-MFC-AGG-ID: LTQ7m2e6MBqPKdVXXJcRlg_1787244641 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244641; x=1787849441; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=esr51iSHBjd/y3UjyJmq4pMVM2wH/MerbWeavAT2qh0=; b=si2l1JP6bDTw/TvdnRECLOzrM3EsDBGudV7cNe1T/6ICXzLuBiMzXfdfSMFYo4yiq+ FmVUp2ybnc5eckIrrE4JVy/eweyYBzNborTqbJrLcY6amn+X8hUA8hNN3HWIDXsKYVnx xjk58coUxv1cetDyOVtwovR9sCq9G5y4vOgwCqVMoJLES8ILGaL0hBnFfRzgmWi3jydk q4Z4k7W5Nf42PrKSxivjijLu/Z7c6sP4lc3nWrdL/kdn93UjjxgDE7ZVkttWrDx94EYJ IxDJ4PSt5PGPkQDb+bW57w0yeTUqlGyorxNmBt3BlW7Zql1gaP22ipzrcT1gtx3m+XE7 xJCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244641; x=1787849441; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=esr51iSHBjd/y3UjyJmq4pMVM2wH/MerbWeavAT2qh0=; b=sF2M+lt5rsM5UbC7+GC42Qa0XR+0WKZlBP16jupY62btCJyX7wPyKvt1IlE29if9+V O0mQNzujmaSI7X7UZMxzCxgbm88MTyDeVYLDEDnGEnqye9lmI/lXpTFBNLcqLpe6xbzX 4uLWw7yZiNR/idZPkJYAR0ShTHL+ujfKTalQKYN7TeCks1yQ2s3WqzNBN4y59pmo6Acc cy4xHGwghV6E55xrzyZD45aS22LgTrskGN7i1gjYPei+KXOr9XvvLrTo1nI2f6L4UgVK Eyh6w5lMI+X55Xq0zvxaCp8PpqUSHyv9MlrzBMPq8NsqJuT2uvE4cMjYG1R0E/yyJr1R sqAw== X-Gm-Message-State: AFuF++m5awaU2YKFYrVwGLEjKe98gnDqozMi6N6eUMxdO39ZlAPIUfmU PDk9q3WmwYMwtry8qjCdEVC5e3zwhWTb92xhbiImShft3zUaQfNDyFySR1lXXP9AmqwaoXtS31q CjHos+LBikPg56jkbl6NXlgMB/FY+2SgRwUtscMv+YQ3DybwN4lBTV8Ac7GkmMoEJpgsIm2NSGX DB9MGTV6UETuRNiUTAYXsqKR4kfC6UjabXq88CJ8Lq X-Gm-Gg: AR+sD10aW/Xj6JhIHghSK7rIgDJrAoLpdDUhTJO8chd3yN8QOMTQUb9Ufx5k868Ew+n 8NfKQYnGjbJ+vYfntW6FwmehC7lUiKFP30M8aNkwCz/CVgkJThuzXOWjDu0sHBjTYR1HYxK4oTJ /GZYLuO3eyuFxupQHRzOec/jFGcO8pA4Yui4r871t1f5XM780AzMBNBvy4QWjsYxgU9QcgXhwOu X4mkOSSLckiYv8SMpUrg4KTjzrlag0aH2PpJ6chdZP74urgehfQ0LW/LbPc65RirLZe33useeKc oalL3OZrSLyh6cfFXXjJNddEmfLO1hHHo5c6ozGHPCR2YZDi+Tac8+yMr4B1CXkZIaPcpYVE2XF o6hIekvOMrnb5/qvAzhnM7TZbj0Pdq1VfLpnBdB38IGBrKtty8NtUz4ELpUT00BUAqNrUWr3ED7 nk4ik= X-Received: by 2002:a05:6000:61e:b0:481:5a46:dbef with SMTP id ffacd0b85a97d-482b7811899mr13475347f8f.5.1787244641056; Thu, 20 Aug 2026 09:50:41 -0700 (PDT) X-Received: by 2002:a05:6000:61e:b0:481:5a46:dbef with SMTP id ffacd0b85a97d-482b7811899mr13475226f8f.5.1787244640514; Thu, 20 Aug 2026 09:50:40 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Magnus Kulke , =?UTF-8?q?Doru=20Bl=C3=A2nzeanu?= Subject: [PULL 14/53] target/i386/mshv: migrate Synic SINT MSRs Date: Thu, 20 Aug 2026 18:49:17 +0200 Message-ID: <20260820164957.1895963-15-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787244683561158500 From: Magnus Kulke Migrate HyperV SynIC SINT MSRs. We can only read/write those if SCONTROL is enabled in the guest, hence we have to split the SINT MSR out and make reading/writing them dependent on that MSR. Signed-off-by: Magnus Kulke Reviewed-by: Doru Bl=C3=A2nzeanu Link: https://lore.kernel.org/r/20260710101534.664604-7-magnuskulke@linux.m= icrosoft.com Signed-off-by: Paolo Bonzini --- target/i386/mshv/msr.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/target/i386/mshv/msr.c b/target/i386/mshv/msr.c index a5f639c3ca6..5288e32b6da 100644 --- a/target/i386/mshv/msr.c +++ b/target/i386/mshv/msr.c @@ -331,6 +331,8 @@ int mshv_get_msrs(CPUState *cpu) struct hv_register_assoc assocs[MSHV_MSR_TOTAL_COUNT]; size_t i, j; uint32_t name; + X86CPU *x86cpu =3D X86_CPU(cpu); + bool synic_enabled; =20 set_hv_name_in_assocs(assocs, n_assocs); =20 @@ -357,6 +359,27 @@ int mshv_get_msrs(CPUState *cpu) =20 store_in_env(cpu, assocs, n_assocs); =20 + /* Read SINT MSRs only if SynIC is enabled */ + synic_enabled =3D x86cpu->env.msr_hv_synic_control & 1; + if (synic_enabled) { + QEMU_BUILD_BUG_ON(MSHV_MSR_TOTAL_COUNT < HV_SINT_COUNT); + + for (i =3D 0; i < HV_SINT_COUNT; i++) { + assocs[i].name =3D HV_REGISTER_SINT0 + i; + } + + ret =3D mshv_get_generic_regs(cpu, assocs, HV_SINT_COUNT); + if (ret < 0) { + error_report("Failed to get SynIC SINT MSRs"); + return -errno; + } + + for (i =3D 0; i < HV_SINT_COUNT; i++) { + uint64_t hv_sint_value =3D assocs[i].value.reg64; + x86cpu->env.msr_hv_synic_sint[i] =3D hv_sint_value; + } + } + return 0; } =20 @@ -391,6 +414,8 @@ int mshv_set_msrs(const CPUState *cpu) struct hv_register_assoc assocs[MSHV_MSR_TOTAL_COUNT]; int ret; size_t i, j; + X86CPU *x86cpu =3D X86_CPU(cpu); + bool synic_enabled =3D x86cpu->env.msr_hv_synic_control & 1; =20 load_from_env(cpu, assocs, n_assocs); =20 @@ -423,5 +448,21 @@ int mshv_set_msrs(const CPUState *cpu) return -errno; } =20 + /* SINT MSRs can only be written if SCONTROL has been set, so we split= */ + if (synic_enabled) { + QEMU_BUILD_BUG_ON(MSHV_MSR_TOTAL_COUNT < HV_SINT_COUNT); + + for (i =3D 0; i < HV_SINT_COUNT; i++) { + assocs[i].name =3D HV_REGISTER_SINT0 + i; + assocs[i].value.reg64 =3D x86cpu->env.msr_hv_synic_sint[i]; + } + + ret =3D mshv_set_generic_regs(cpu, assocs, HV_SINT_COUNT); + if (ret < 0) { + error_report("Failed to set SynIC SINT MSRs"); + return -errno; + } + } + return 0; } --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244749; cv=none; d=zohomail.com; s=zohoarc; b=VqDz7qwwBibmnfwf6Vjd4jB8AkO3AJ1A7eM1Xz8RzZ9kKf4zcAbEN41acH/YZzzhApo9vP73UHKD9wFcOy/1sftA2WydiiSWayz0Nzbjfs/XqauNT1+DbO9NmhcU03wPrMmoN4sjvswl11gJ9AMTw8DKOCs4Vt6HnLbm/KU0P7A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244749; 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=JueMryf3s0Y3RsXpb349HwSludY1hIutej/j0MLEyJw=; b=BJSamkthC+rldTPAHmzFIrkxpzbANsAFdiU76t4wodk35CW8IXvifijaC8GCqdTrH8vKqLlhNDQMOorLOyfkuMvdMOGYD4W7frMkeZbBF560hQnoSN68Hin/Hh5zMubqsK6TCw3w78UZH+owg0h58VXtmNvcqwsQLpAjr/ZBmlk= 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 1787244749477831.9642096123707; Thu, 20 Aug 2026 09:52:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5yn-0004LY-FP; Thu, 20 Aug 2026 12:51:02 -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 1wx5yg-0004Gb-F2 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50: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 1wx5yc-0005UL-M3 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:52 -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-622-bCMORHg1MYi_ifqvKYiOFQ-1; Thu, 20 Aug 2026 12:50:47 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-496b61bd846so171405e9.2 for ; Thu, 20 Aug 2026 09:50:47 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499aa0e473dsm146006515e9.15.2026.08.20.09.50.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:50:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244650; 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=JueMryf3s0Y3RsXpb349HwSludY1hIutej/j0MLEyJw=; b=KSnQb8cGZd2PD8yFX/ahxj5HgL19HO7zgkdq1EIpNDha13fY1R1fQR/13v+qDSJXTCiXOS 6mzvJjKrprsvo+7+5tY9CsfsDGdT9I32x475Z+KJthsLIA8rE5o270sXCQm47mIOCa72kJ Jnq5bOxrYMqKx+iqnxnPOZgyAKYb/FM= X-MC-Unique: bCMORHg1MYi_ifqvKYiOFQ-1 X-Mimecast-MFC-AGG-ID: bCMORHg1MYi_ifqvKYiOFQ_1787244646 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244646; x=1787849446; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=JueMryf3s0Y3RsXpb349HwSludY1hIutej/j0MLEyJw=; b=uDdPdiwhtWwm7pSpm+36v12s+gpJMT6PUMIKQeeI1oUEhAokElC5BCh9yK/kVMOSfW vDBXAFW3jYclkM7hHMcKgWoXfsWZSQHMov96F64f9MYodXZWzkZTbyADkQ4iXlBzYpEs YDaM53qXDFU82ZeZnLFFiSCOvlrsBBqcW9VpSaFioSRsryZ7j8lrjm7n0Hikvfj093gx F7NB+/NrEqwbTG6jmpCUpPZaHt+IcUwIv7uGYYLq9oqDy1irCuOoja4j+c5kopQrniVA hquAzpNOetCXVuEEDRM6nzmS4/vGgMYgjBSYWoW5UnhQqKyRNsPhOq45s0CI6nGB7y+r esOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244646; x=1787849446; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=JueMryf3s0Y3RsXpb349HwSludY1hIutej/j0MLEyJw=; b=Q9Mr3nuwKwdJ1HfoLh4mfUPlKqZpoLvnN18eR/5fyyTHRSsaX8X4SzxZiNM+PMnYGi Ya8CB7G1JobEAWdq02M4aZBNJcZa27q5R2BkLCqUaZaBhJG2y6vvI5/SZeXCl9ZEQyqY YyzrepnvlrVRhQagudUf7bPG4IdCDxVfovSkvJ6Y9WngLF0M8+kAAryQ1agImRF5IE70 ovkZApTuj1bAnxmOR0Ti5LTcBWkFWjwgBSVeo9OPPT28p1dgAv7rB50R/XXm9QE3FrzM d+nq9sDncBp2nbRH4h7BzUh0p4ucwjfp/sF4jHyZcD7xxgoSYEGt+c6CehIBo5uC88Hx qaBA== X-Gm-Message-State: AOJu0Yz2vcGvaRG8X1Dr2u0HIzQWBf9ILJnwl7KqBRPt2OrD3m4/7T0Z h57Mdd96cJgKP5dUoBFwOvIjmbRAcTeB5Faensy7ui6KhziUcboDQinrX5VDxD1jwDT5C95OqBh vgCvMGTOdUF/HBUYUvDrXKDZK/kLpWbF5ai3Ko7M6OXHyhao0lLVjtT77XLNEbQIMSXK9ZySAUF 9UyuquAvjlRPjezeB2/MilwZIExWWofkMIK67vBu48 X-Gm-Gg: AR+sD12DK1SmuYtyYaEuuF6R4kvcFNHPNqH73SYSO1FDu1pw8bgy0k7uruDZA2+LAAh ZGpJIhBQPCjK4ufzxcZK8ccDTW748VHm2sU7tn81nutE75DIi27uTqM9xolq2MI+GuCRF096utg HKwRyRTV4YUJxZOefIpM4ERSkYaFL/c3NBnRyD7abczs8udA27p0/hkW+KSo9xFmYhtAnA9cfTD xxMti+1VZ9BuX5V4zfL2+uPqJ5mMxE4HCtmme1qVUYTncr1+dUOxJ3a83LuA5IVSq9hNGwnw7X7 pcQIN6RQmDVM8FucYpDpcB/q/HY61WcDKfS7lqWHPLKE7dOPeDpJPx8KOe6jxElYW+1zYEJVgBj NLTv7fjj8FIVc/73fNSzYts+MK4pHL+N9aMWlBVn+jS66rMHl6LgxyrnUTYg4eL2y8/n3Nnizfu Nas/o= X-Received: by 2002:a05:600c:c172:b0:495:6e68:5df2 with SMTP id 5b1f17b1804b1-499b8464e46mr3571765e9.12.1787244646290; Thu, 20 Aug 2026 09:50:46 -0700 (PDT) X-Received: by 2002:a05:600c:c172:b0:495:6e68:5df2 with SMTP id 5b1f17b1804b1-499b8464e46mr3570475e9.12.1787244645846; Thu, 20 Aug 2026 09:50:45 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Magnus Kulke , =?UTF-8?q?Doru=20Bl=C3=A2nzeanu?= Subject: [PULL 15/53] target/i386/mshv: migrate SIMP and SIEFP state Date: Thu, 20 Aug 2026 18:49:18 +0200 Message-ID: <20260820164957.1895963-16-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787244749889158500 From: Magnus Kulke This part SynIC state is retrieved from the hypervisor via aligned state pages: - Add new synic source file - Centralize the synic_enabled() check - r/w pages from the hyper via aligned pages - only handle pages when synic is enabled - add buffers for migration to VM state Signed-off-by: Magnus Kulke Reviewed-by: Doru Bl=C3=A2nzeanu Link: https://lore.kernel.org/r/20260710101534.664604-8-magnuskulke@linux.m= icrosoft.com Signed-off-by: Paolo Bonzini --- include/system/mshv_int.h | 7 ++ target/i386/cpu.h | 5 ++ target/i386/machine.c | 26 ++++++ target/i386/mshv/mshv-cpu.c | 64 +++++++++++++++ target/i386/mshv/msr.c | 7 +- target/i386/mshv/synic.c | 155 +++++++++++++++++++++++++++++++++++ target/i386/mshv/meson.build | 1 + 7 files changed, 260 insertions(+), 5 deletions(-) create mode 100644 target/i386/mshv/synic.c diff --git a/include/system/mshv_int.h b/include/system/mshv_int.h index c2f13c01947..bc023d35355 100644 --- a/include/system/mshv_int.h +++ b/include/system/mshv_int.h @@ -138,4 +138,11 @@ int mshv_init_msrs(const CPUState *cpu); int mshv_get_msrs(CPUState *cpu); int mshv_set_msrs(const CPUState *cpu); =20 +/* synic */ +int mshv_get_simp(int cpu_fd, uint8_t *page); +int mshv_set_simp(int cpu_fd, const uint8_t *page); +int mshv_get_siefp(int cpu_fd, uint8_t *page); +int mshv_set_siefp(int cpu_fd, const uint8_t *page); +bool mshv_synic_enabled(const CPUState *cpu); + #endif diff --git a/target/i386/cpu.h b/target/i386/cpu.h index fff701c6c42..fcde8956008 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -33,6 +33,7 @@ #include "qemu/cpu-float.h" #include "qemu/timer.h" #include "standard-headers/asm-x86/kvm_para.h" +#include "hw/hyperv/hvgdk_mini.h" =20 #define XEN_NR_VIRQS 24 =20 @@ -2301,6 +2302,10 @@ typedef struct CPUArchState { #if defined(CONFIG_HVF) || defined(CONFIG_MSHV) || defined(CONFIG_WHPX) void *emu_mmio_buf; #endif +#if defined(CONFIG_MSHV) + uint8_t hv_simp_page[HV_HYP_PAGE_SIZE]; + uint8_t hv_siefp_page[HV_HYP_PAGE_SIZE]; +#endif =20 uint64_t mcg_cap; uint64_t mcg_ctl; diff --git a/target/i386/machine.c b/target/i386/machine.c index df0e0c178e4..023a397ab89 100644 --- a/target/i386/machine.c +++ b/target/i386/machine.c @@ -951,6 +951,29 @@ static const VMStateDescription vmstate_msr_hyperv_ree= nlightenment =3D { } }; =20 +#ifdef CONFIG_MSHV +static bool mshv_synic_vp_state_needed(void *opaque) +{ + X86CPU *cpu =3D opaque; + CPUX86State *env =3D &cpu->env; + + /* Only migrate SIMP/SIEFP if SynIC is enabled */ + return env->msr_hv_synic_control & 1; +} + +static const VMStateDescription vmstate_mshv_synic_vp_state =3D { + .name =3D "cpu/mshv_synic_vp_state", + .version_id =3D 1, + .minimum_version_id =3D 1, + .needed =3D mshv_synic_vp_state_needed, + .fields =3D (const VMStateField[]) { + VMSTATE_BUFFER(env.hv_simp_page, X86CPU), + VMSTATE_BUFFER(env.hv_siefp_page, X86CPU), + VMSTATE_END_OF_LIST() + } +}; +#endif + static bool avx512_needed(void *opaque) { X86CPU *cpu =3D opaque; @@ -1915,6 +1938,9 @@ const VMStateDescription vmstate_x86_cpu =3D { &vmstate_cet, #ifdef TARGET_X86_64 &vmstate_apx, +#endif +#ifdef CONFIG_MSHV + &vmstate_mshv_synic_vp_state, #endif NULL } diff --git a/target/i386/mshv/mshv-cpu.c b/target/i386/mshv/mshv-cpu.c index 00e948903d9..ea6a660d054 100644 --- a/target/i386/mshv/mshv-cpu.c +++ b/target/i386/mshv/mshv-cpu.c @@ -111,6 +111,33 @@ static enum hv_register_name FPU_REGISTER_NAMES[26] = =3D { =20 static int set_special_regs(const CPUState *cpu); =20 +static int get_synic_state(CPUState *cpu) +{ + X86CPU *x86cpu =3D X86_CPU(cpu); + CPUX86State *env =3D &x86cpu->env; + int cpu_fd =3D mshv_vcpufd(cpu); + int ret; + + /* SIMP/SIEFP can only be read when SynIC is enabled */ + if (!mshv_synic_enabled(cpu)) { + return 0; + } + + ret =3D mshv_get_simp(cpu_fd, env->hv_simp_page); + if (ret < 0) { + error_report("failed to get simp state"); + return -1; + } + + ret =3D mshv_get_siefp(cpu_fd, env->hv_siefp_page); + if (ret < 0) { + error_report("failed to get siefp state"); + return -1; + } + + return 0; +} + static int get_xsave_state(CPUState *cpu) { X86CPU *x86cpu =3D X86_CPU(cpu); @@ -969,6 +996,11 @@ int mshv_arch_load_vcpu_state(CPUState *cpu) return ret; } =20 + ret =3D get_synic_state(cpu); + if (ret < 0) { + return ret; + } + ret =3D get_vcpu_events(cpu); if (ret < 0) { return ret; @@ -1381,6 +1413,33 @@ static int set_xc_reg(const CPUState *cpu) return 0; } =20 +static int set_synic_state(const CPUState *cpu) +{ + X86CPU *x86cpu =3D X86_CPU(cpu); + CPUX86State *env =3D &x86cpu->env; + int cpu_fd =3D mshv_vcpufd(cpu); + int ret; + + /* SIMP/SIEFP can only be written when SynIC is enabled */ + if (!mshv_synic_enabled(cpu)) { + return 0; + } + + ret =3D mshv_set_simp(cpu_fd, env->hv_simp_page); + if (ret < 0) { + error_report("failed to set simp state"); + return -1; + } + + ret =3D mshv_set_siefp(cpu_fd, env->hv_siefp_page); + if (ret < 0) { + error_report("failed to set siefp state"); + return -1; + } + + return 0; +} + int mshv_arch_store_vcpu_state(const CPUState *cpu) { int ret; @@ -1422,6 +1481,11 @@ int mshv_arch_store_vcpu_state(const CPUState *cpu) return ret; } =20 + ret =3D set_synic_state(cpu); + if (ret < 0) { + return ret; + } + ret =3D set_vcpu_events(cpu); if (ret < 0) { return ret; diff --git a/target/i386/mshv/msr.c b/target/i386/mshv/msr.c index 5288e32b6da..d3788d7715d 100644 --- a/target/i386/mshv/msr.c +++ b/target/i386/mshv/msr.c @@ -332,7 +332,6 @@ int mshv_get_msrs(CPUState *cpu) size_t i, j; uint32_t name; X86CPU *x86cpu =3D X86_CPU(cpu); - bool synic_enabled; =20 set_hv_name_in_assocs(assocs, n_assocs); =20 @@ -360,8 +359,7 @@ int mshv_get_msrs(CPUState *cpu) store_in_env(cpu, assocs, n_assocs); =20 /* Read SINT MSRs only if SynIC is enabled */ - synic_enabled =3D x86cpu->env.msr_hv_synic_control & 1; - if (synic_enabled) { + if (mshv_synic_enabled(cpu)) { QEMU_BUILD_BUG_ON(MSHV_MSR_TOTAL_COUNT < HV_SINT_COUNT); =20 for (i =3D 0; i < HV_SINT_COUNT; i++) { @@ -415,7 +413,6 @@ int mshv_set_msrs(const CPUState *cpu) int ret; size_t i, j; X86CPU *x86cpu =3D X86_CPU(cpu); - bool synic_enabled =3D x86cpu->env.msr_hv_synic_control & 1; =20 load_from_env(cpu, assocs, n_assocs); =20 @@ -449,7 +446,7 @@ int mshv_set_msrs(const CPUState *cpu) } =20 /* SINT MSRs can only be written if SCONTROL has been set, so we split= */ - if (synic_enabled) { + if (mshv_synic_enabled(cpu)) { QEMU_BUILD_BUG_ON(MSHV_MSR_TOTAL_COUNT < HV_SINT_COUNT); =20 for (i =3D 0; i < HV_SINT_COUNT; i++) { diff --git a/target/i386/mshv/synic.c b/target/i386/mshv/synic.c new file mode 100644 index 00000000000..8f9fee6ed7e --- /dev/null +++ b/target/i386/mshv/synic.c @@ -0,0 +1,155 @@ +/* + * QEMU MSHV SynIC support + * + * Copyright Microsoft, Corp. 2026 + * + * Authors: Magnus Kulke + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qemu/memalign.h" +#include "qemu/error-report.h" + +#include "system/mshv.h" +#include "system/mshv_int.h" + +#include "linux/mshv.h" +#include "hw/hyperv/hvgdk_mini.h" +#include "cpu.h" + +#include + +bool mshv_synic_enabled(const CPUState *cpu) +{ + X86CPU *x86cpu =3D X86_CPU(cpu); + + return x86cpu->env.msr_hv_synic_control & 1; +} + +static int get_vp_state(int cpu_fd, struct mshv_get_set_vp_state *state) +{ + int ret; + + ret =3D ioctl(cpu_fd, MSHV_GET_VP_STATE, state); + if (ret < 0) { + error_report("failed to get vp state: %s", strerror(errno)); + return -1; + } + + return 0; +} + +static int set_vp_state(int cpu_fd, const struct mshv_get_set_vp_state *st= ate) +{ + int ret; + + ret =3D ioctl(cpu_fd, MSHV_SET_VP_STATE, state); + if (ret < 0) { + error_report("failed to set vp state: %s", strerror(errno)); + return -1; + } + + return 0; +} + +int mshv_get_simp(int cpu_fd, uint8_t *page) +{ + int ret; + void *buffer; + struct mshv_get_set_vp_state args =3D {0}; + + buffer =3D qemu_memalign(HV_HYP_PAGE_SIZE, HV_HYP_PAGE_SIZE); + args.buf_ptr =3D (uint64_t)buffer; + args.buf_sz =3D HV_HYP_PAGE_SIZE; + args.type =3D MSHV_VP_STATE_SIMP; + + ret =3D get_vp_state(cpu_fd, &args); + + if (ret < 0) { + qemu_vfree(buffer); + error_report("failed to get simp"); + return -1; + } + + memcpy(page, buffer, HV_HYP_PAGE_SIZE); + qemu_vfree(buffer); + + return 0; +} + +int mshv_set_simp(int cpu_fd, const uint8_t *page) +{ + int ret; + void *buffer; + struct mshv_get_set_vp_state args =3D {0}; + + buffer =3D qemu_memalign(HV_HYP_PAGE_SIZE, HV_HYP_PAGE_SIZE); + args.buf_ptr =3D (uint64_t)buffer; + args.buf_sz =3D HV_HYP_PAGE_SIZE; + args.type =3D MSHV_VP_STATE_SIMP; + + assert(page); + memcpy(buffer, page, HV_HYP_PAGE_SIZE); + + ret =3D set_vp_state(cpu_fd, &args); + qemu_vfree(buffer); + + if (ret < 0) { + error_report("failed to set simp"); + return -1; + } + + return 0; +} + +int mshv_get_siefp(int cpu_fd, uint8_t *page) +{ + int ret; + void *buffer; + struct mshv_get_set_vp_state args =3D {0}; + + buffer =3D qemu_memalign(HV_HYP_PAGE_SIZE, HV_HYP_PAGE_SIZE); + args.buf_ptr =3D (uint64_t)buffer; + args.buf_sz =3D HV_HYP_PAGE_SIZE; + args.type =3D MSHV_VP_STATE_SIEFP, + + ret =3D get_vp_state(cpu_fd, &args); + + if (ret < 0) { + qemu_vfree(buffer); + error_report("failed to get siefp"); + return -1; + } + + memcpy(page, buffer, HV_HYP_PAGE_SIZE); + qemu_vfree(buffer); + + return 0; +} + +int mshv_set_siefp(int cpu_fd, const uint8_t *page) +{ + int ret; + void *buffer; + struct mshv_get_set_vp_state args =3D {0}; + + buffer =3D qemu_memalign(HV_HYP_PAGE_SIZE, HV_HYP_PAGE_SIZE); + args.buf_ptr =3D (uint64_t)buffer; + args.buf_sz =3D HV_HYP_PAGE_SIZE; + args.type =3D MSHV_VP_STATE_SIEFP, + + assert(page); + memcpy(buffer, page, HV_HYP_PAGE_SIZE); + + ret =3D set_vp_state(cpu_fd, &args); + qemu_vfree(buffer); + + if (ret < 0) { + error_report("failed to set simp"); + return -1; + } + + return 0; +} diff --git a/target/i386/mshv/meson.build b/target/i386/mshv/meson.build index 6091c218874..31ff4cc9950 100644 --- a/target/i386/mshv/meson.build +++ b/target/i386/mshv/meson.build @@ -3,6 +3,7 @@ i386_mshv_ss =3D ss.source_set() i386_mshv_ss.add(files( 'mshv-cpu.c', 'msr.c', + 'synic.c', )) =20 i386_system_ss.add_all(when: 'CONFIG_MSHV', if_true: i386_mshv_ss) --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244716; cv=none; d=zohomail.com; s=zohoarc; b=E9E72dIKM7qyb21q4SSgzBqt+QZG3IYf7ba4Z33HUCflLo1JPPCmZ5sM3podEC1LSlkP3oLoHgKCRTNb0snd+GR1wb8YPf32Ipohej89AzR77+MWNy8jWAFRL9UbVMGTR10gxVB6xrZoLBMWt/nV4Owb0UTskJdcTu88SFgyK0s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244716; h=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=Vc6p2d2qQruEsDFEmVNNYwOdKQZR2T0jPEMA3rc8Oew=; b=f/Cujtb+c+8J7ZP6O0hb+8+gkqGnm++QwBd0XHPwUAijIqf0OSJ3yv3cp/xF5BUFdzLxug/ywdR4Rdj/2wmRhPBq4EMkOCMghRYNmzi6B4nUZda3IRgy+TgJTbTocOxvVRiRTAo6opNO5OiXJ3WvLfOG6KDwGqT9+IIfD6sBn9Q= 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 1787244716534232.50823447133234; Thu, 20 Aug 2026 09:51:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5yy-0004mw-DW; Thu, 20 Aug 2026 12:51: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 1wx5yk-0004LE-W6 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:00 -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 1wx5yh-0005WL-W2 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:50:58 -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-498-ra5P0GmcPC-nzT1LZ4Ui2Q-1; Thu, 20 Aug 2026 12:50:49 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-490a767b782so265255e9.2 for ; Thu, 20 Aug 2026 09:50:48 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499aa0fd7a9sm199550075e9.2.2026.08.20.09.50.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:50:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244655; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Vc6p2d2qQruEsDFEmVNNYwOdKQZR2T0jPEMA3rc8Oew=; b=IdS7AxFSGic7o1rWIfxxtQVhdsxokLr6hTEND7KUz5+VhISmkJjk2vrCCyZosZOiDHZqDC efjksqaE8FTdzw+HiOaTtBtqmW/isXDtLtxt9M/SGzvnfuGQvBXyCHT6TbNHNHJ54FWhnX +zta0zq5EV6WxNkSbL+oef++3NjDZUk= X-MC-Unique: ra5P0GmcPC-nzT1LZ4Ui2Q-1 X-Mimecast-MFC-AGG-ID: ra5P0GmcPC-nzT1LZ4Ui2Q_1787244648 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244648; x=1787849448; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Vc6p2d2qQruEsDFEmVNNYwOdKQZR2T0jPEMA3rc8Oew=; b=cRGC/bHDZzRvYHJB4dhl8C6b7dFhV77MUuQuAY3cRELQdu0/7gvffCcucW5AUQZ9Tv krhyihBHdViwrSWPK5QHIdOpiQpQe06lsZ7tWkAbZRu8DIHVXRLunrpvxmq8zSjZUuzb Kxeq4domsI4rIFvVS4RihlVIMDAzKtCJfOn/Vs0oZmbWWsaAfdW/XlUu084bdtctQr6a 2QsI33rEhi6Fin13BAd3nB3Mrwnm1LMTvXaHd81gITjGwCXMNtTGT8/0qB0I5/0oPgXl ckL/J/5krf7mGxh9ooijY09NRwNXs0itl/6iFnKY4C9PwzJ2UjIunCdyAJ7xbeRm7v9Q 96/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244648; x=1787849448; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Vc6p2d2qQruEsDFEmVNNYwOdKQZR2T0jPEMA3rc8Oew=; b=WSB9ZHG0d1fNIvk9xW0zDWleWe3ofuySze4yLjDEAHgTbOvNVJIpyeoje+7+rtVGG4 0J3FxkYr8V//lVPlkLup338yzyy9yihzjRhRfzyneUDaOjHiyNpm26c7W5JPdnBXPIT7 3ClHrqK/53Y+tgJ8dSraBoKvL96l3xdj12VnGTS+HC8IrVWYKc48lNfwM2PT0PyjyWGE Jxky4XMmDMizKc+Q46fRGTquRJ6RSiCAl/y9JezCDaeFYGeR+XZSKzxKR2bPkGvJEE3K FFmTYNUZFngMDi5rsPj0Fq4rAE4cL9mWJJqAH5xM7PTGFzdB1ukHa7fzOOcW3fe72k0v 0ukw== X-Gm-Message-State: AOJu0YyezmubbeRzvGTEms0U13XOCxQlhbcqDHdqAjToOfQNTl8YY/3v JDVOPd0LgMHA89N8Lm8o1B67SAv2XM1zcidFRf9zrSch7s9uXgxiD5ABvWxlfls0Yq4OQ/mdit3 MCeBbg5BtISH96HJ/k1OuhY9XvFIvOINMKyluLYn4O4WHXRa+CXkqPO5SggmeaVX1OVuxF1Dk6l 6vg1jeHtNyOccMciW6Iz428UKNH8jdOroIes/+3J0c X-Gm-Gg: AR+sD13+J8YyLw2G7zGUSSlVWeZskVMy3gWs4NTav/YyinqFUVc8fl+d1l0jd3puevE 3YMniXAD+7Yhzh69ZSjQi8OeuoB9gVnzzb08CiB3OCYXFxJyuwgRu5X/4qD2EeFEnVrtMXGXUP+ BoXLmTgMd2dzRvCcJbf0MeckdEXjSoANulRvWnN1k9hGmfq8SSpqCiAPofncq5jqgfYj8uPyMos B/6ie1LuCiW4rJPlOe6tRIq1AsnrCFf9hZqXVPEz9BizoVb3gbXy+cnQVruq5kderqDHFw5UVEl xHlLVvwE0c4NlTpVJID5Nvy2tlL8I0A4sGSLePfpGm0pXZ/QOnK5pwseTrjs8DfzZUfB+UoKOg+ wjS3O58RLqlGxXs7OchJK2qRG9yTUPrSL3/W64/e/NNW43y1SZxlqbWPWCcMo6z/6MpkVmSSACn kprxI= X-Received: by 2002:a05:600c:4704:b0:499:9069:c2c9 with SMTP id 5b1f17b1804b1-499b84613fcmr2687515e9.11.1787244647683; Thu, 20 Aug 2026 09:50:47 -0700 (PDT) X-Received: by 2002:a05:600c:4704:b0:499:9069:c2c9 with SMTP id 5b1f17b1804b1-499b84613fcmr2686585e9.11.1787244647185; Thu, 20 Aug 2026 09:50:47 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Magnus Kulke Subject: [PULL 16/53] target/i386/mshv: migrate STIMER state Date: Thu, 20 Aug 2026 18:49:19 +0200 Message-ID: <20260820164957.1895963-17-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787244717718158500 Content-Type: text/plain; charset="utf-8" From: Magnus Kulke This part of Synic state is retrieved via a mem-aligned page. We declare the required space (size reference: rust-vmm/mshv) as a buffer on the VM state struct for inclusion in a migration. Other than other SynIC features, STIMER doesn't depend on SCONTROL being set. Signed-off-by: Magnus Kulke Link: https://lore.kernel.org/r/20260710101534.664604-9-magnuskulke@linux.m= icrosoft.com Signed-off-by: Paolo Bonzini --- include/system/mshv_int.h | 2 ++ target/i386/cpu.h | 5 ++++ target/i386/machine.c | 20 +++++++++++++++ target/i386/mshv/mshv-cpu.c | 12 +++++++++ target/i386/mshv/synic.c | 51 +++++++++++++++++++++++++++++++++++++ 5 files changed, 90 insertions(+) diff --git a/include/system/mshv_int.h b/include/system/mshv_int.h index bc023d35355..063852115eb 100644 --- a/include/system/mshv_int.h +++ b/include/system/mshv_int.h @@ -144,5 +144,7 @@ int mshv_set_simp(int cpu_fd, const uint8_t *page); int mshv_get_siefp(int cpu_fd, uint8_t *page); int mshv_set_siefp(int cpu_fd, const uint8_t *page); bool mshv_synic_enabled(const CPUState *cpu); +int mshv_get_synthetic_timers(int cpu_fd, uint8_t *state); +int mshv_set_synthetic_timers(int cpu_fd, const uint8_t *state); =20 #endif diff --git a/target/i386/cpu.h b/target/i386/cpu.h index fcde8956008..641f3ee5c2f 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -45,6 +45,10 @@ #define ELF_MACHINE_UNAME "i686" #endif =20 +#ifdef CONFIG_MSHV +#define MSHV_STIMERS_STATE_SIZE 200 +#endif + enum { R_EAX =3D 0, R_ECX =3D 1, @@ -2305,6 +2309,7 @@ typedef struct CPUArchState { #if defined(CONFIG_MSHV) uint8_t hv_simp_page[HV_HYP_PAGE_SIZE]; uint8_t hv_siefp_page[HV_HYP_PAGE_SIZE]; + uint8_t hv_synthetic_timers_state[MSHV_STIMERS_STATE_SIZE]; #endif =20 uint64_t mcg_cap; diff --git a/target/i386/machine.c b/target/i386/machine.c index 023a397ab89..8d69d7e25ef 100644 --- a/target/i386/machine.c +++ b/target/i386/machine.c @@ -10,6 +10,7 @@ #include "exec/watchpoint.h" #include "system/kvm.h" #include "system/kvm_xen.h" +#include "system/mshv.h" #include "system/tcg.h" =20 #include "qemu/error-report.h" @@ -952,6 +953,24 @@ static const VMStateDescription vmstate_msr_hyperv_ree= nlightenment =3D { }; =20 #ifdef CONFIG_MSHV + +static bool mshv_synthetic_timers_needed(void *opaque) +{ + /* Always migrate synthetic timers */ + return mshv_enabled(); +} + +static const VMStateDescription vmstate_mshv_synthetic_timers =3D { + .name =3D "cpu/mshv_synthetic_timers", + .version_id =3D 1, + .minimum_version_id =3D 1, + .needed =3D mshv_synthetic_timers_needed, + .fields =3D (const VMStateField[]) { + VMSTATE_BUFFER(env.hv_synthetic_timers_state, X86CPU), + VMSTATE_END_OF_LIST() + } +}; + static bool mshv_synic_vp_state_needed(void *opaque) { X86CPU *cpu =3D opaque; @@ -1941,6 +1960,7 @@ const VMStateDescription vmstate_x86_cpu =3D { #endif #ifdef CONFIG_MSHV &vmstate_mshv_synic_vp_state, + &vmstate_mshv_synthetic_timers, #endif NULL } diff --git a/target/i386/mshv/mshv-cpu.c b/target/i386/mshv/mshv-cpu.c index ea6a660d054..86d64c67fb2 100644 --- a/target/i386/mshv/mshv-cpu.c +++ b/target/i386/mshv/mshv-cpu.c @@ -118,6 +118,12 @@ static int get_synic_state(CPUState *cpu) int cpu_fd =3D mshv_vcpufd(cpu); int ret; =20 + ret =3D mshv_get_synthetic_timers(cpu_fd, env->hv_synthetic_timers_sta= te); + if (ret < 0) { + error_report("failed to get synthetic timers"); + return -1; + } + /* SIMP/SIEFP can only be read when SynIC is enabled */ if (!mshv_synic_enabled(cpu)) { return 0; @@ -1420,6 +1426,12 @@ static int set_synic_state(const CPUState *cpu) int cpu_fd =3D mshv_vcpufd(cpu); int ret; =20 + ret =3D mshv_set_synthetic_timers(cpu_fd, env->hv_synthetic_timers_sta= te); + if (ret < 0) { + error_report("failed to set synthetic timers state"); + return -1; + } + /* SIMP/SIEFP can only be written when SynIC is enabled */ if (!mshv_synic_enabled(cpu)) { return 0; diff --git a/target/i386/mshv/synic.c b/target/i386/mshv/synic.c index 8f9fee6ed7e..4c629adc3a0 100644 --- a/target/i386/mshv/synic.c +++ b/target/i386/mshv/synic.c @@ -54,6 +54,57 @@ static int set_vp_state(int cpu_fd, const struct mshv_ge= t_set_vp_state *state) return 0; } =20 +int mshv_get_synthetic_timers(int cpu_fd, uint8_t *state) +{ + int ret; + void *buffer; + struct mshv_get_set_vp_state args =3D {0}; + + buffer =3D qemu_memalign(HV_HYP_PAGE_SIZE, HV_HYP_PAGE_SIZE); + args.buf_ptr =3D (uint64_t)buffer; + args.buf_sz =3D HV_HYP_PAGE_SIZE; + args.type =3D MSHV_VP_STATE_SYNTHETIC_TIMERS; + + ret =3D get_vp_state(cpu_fd, &args); + + if (ret < 0) { + qemu_vfree(buffer); + error_report("failed to get synthetic timers"); + return -1; + } + + memcpy(state, buffer, MSHV_STIMERS_STATE_SIZE); + qemu_vfree(buffer); + + return 0; +} + +int mshv_set_synthetic_timers(int cpu_fd, const uint8_t *state) +{ + int ret; + void *buffer; + struct mshv_get_set_vp_state args =3D {0}; + + buffer =3D qemu_memalign(HV_HYP_PAGE_SIZE, HV_HYP_PAGE_SIZE); + memset(buffer, 0, HV_HYP_PAGE_SIZE); + args.buf_ptr =3D (uint64_t)buffer; + args.buf_sz =3D HV_HYP_PAGE_SIZE; + args.type =3D MSHV_VP_STATE_SYNTHETIC_TIMERS; + + assert(state); + memcpy(buffer, state, MSHV_STIMERS_STATE_SIZE); + + ret =3D set_vp_state(cpu_fd, &args); + qemu_vfree(buffer); + + if (ret < 0) { + error_report("failed to set synthetic timers"); + return -1; + } + + return 0; +} + int mshv_get_simp(int cpu_fd, uint8_t *page) { int ret; --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244697; cv=none; d=zohomail.com; s=zohoarc; b=ELpPmGlQfOlC95o1DeMdZA7Laa0ZFLqeR+4cnK9+mLG4EAXXLsdPpUOZVFPX5cPQxnIuNscLp1KY9mzC64KlxATU0X/kTbgDYV7kEf/bNu7sBnqaqGrV8lP8MmAX8qJmckXBEYJTiZZO0MTUr9YZOFyHd6ZuKV+vwM7FWygX9rM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244697; h=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=61P6vk3oEE4JHqQ8OG8SmOWu+7pk+rtqZm31zmMIl+c=; b=MR8P9iw0flfcxURlCEmldGsdajAG/XWTnkU8XZx8hF0WbZ64AGwWg5DDr61deefzwhIP7ovvco/B/CbxyBDrsW1m1rS0b36ngg3Thy8c4J9W8QR4ro/6W/ELS4dyre3bylW0h97umTt0yxgP6NVJyK93NipYz9AiFZGwe+B94X8= 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 1787244697727222.19338596471778; Thu, 20 Aug 2026 09:51:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5yx-0004i8-2D; Thu, 20 Aug 2026 12:51: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 1wx5yq-0004On-JM for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:06 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx5yn-0005Y8-Uq for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:04 -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-517-k1AKavqCM4GFyHGGD0VExA-1; Thu, 20 Aug 2026 12:50:52 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-493fa6e28a7so315595e9.1 for ; Thu, 20 Aug 2026 09:50:52 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499b2b0c295sm40686755e9.2.2026.08.20.09.50.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:50:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244661; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=61P6vk3oEE4JHqQ8OG8SmOWu+7pk+rtqZm31zmMIl+c=; b=LiP7mZxOQbxTOlcLDXSYuSDl06RLxwEBr8h2uHXFd7jTDA4+VP6RiJ4KZu7xB4uWhD2kal Pa+9x89ITAE873NbGMbx7X7PWjRYnQ878V2HHEwkcFHDEf1lpsn4050TERhOr266lDIgaJ tBnjtzvmRSShLAQZ2CawAO5g0e7YC5c= X-MC-Unique: k1AKavqCM4GFyHGGD0VExA-1 X-Mimecast-MFC-AGG-ID: k1AKavqCM4GFyHGGD0VExA_1787244651 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244651; x=1787849451; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=61P6vk3oEE4JHqQ8OG8SmOWu+7pk+rtqZm31zmMIl+c=; b=XIprMvAJ3JJ/X+jEfRyAdmExPi6eTntf1tADzuylq8SMlPSYp4heNp1OwgHq7q8Tkp 8kp6YTFsJISOtfj/G5w5WshQqSOcWiNvhS1KLkye/XzTNHNfqWMv4iDgLjSi1uVbAhq6 A5RCi2GLjRh/9NdGnS0MDiyLJv6SNP8GpexhsloEgEGzJ79NQjNJcgOD6voHWVAapuHs ybcmLVG3887cAlQT2f5QY5VPL+A2W/8Evtdzw+wUrCeJQpFEBU/50DcE71ck9+7usjTR RFvSsmEzxlhXhI5QmYy3lCiyXJPoglEP0Ltq57pxYt5OR4rNU31ZruW5mNvqYjY+nOZs VY2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244651; x=1787849451; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=61P6vk3oEE4JHqQ8OG8SmOWu+7pk+rtqZm31zmMIl+c=; b=ky2FZOIkrwQWz+8Aei8ZpGMUsiAy1/QNb1ZZPk5aAQ6PoRhdEq3/1lZ+pQpHoO3WyA 3B/xflOWYSagaf9Z+YdByRQ0eP22CwWEudWmfuf8A4xq84C66cs3rFfnIZRnHeq7gGqk V4xs/Ohsk5igrm9V2KmM0VdMhFpT1XgXvz9JVjmWm93NjbY9Tdl+iQowRPFyawT1XhBr W1+Bcus1HRJz0NmJLLAhBfSfNp8idNtN2k3qP6LO0kLfeo59XVhxe+EjrqYchoTWsCRn N5EhDsdeMAm87ApOKzvH38TA0nP9M5FP0BZ+1FGVr5hhUKnCJEzeIjbFsVzS7cQQl01S mIFQ== X-Gm-Message-State: AOJu0YwVMBr/kdYnKMMO5gl8B4VjAq/Sd7aCV7Tz9P3cwqjXZ9n+K93b Ye/LbKucUQm7vTxX1zMXSp3B+TYoKdo9wIAbi2HzuGlwUPCn14uZ9pDIpcK1M+Mp0AlB3QxOAHq 5rCUa2ms/TQRhLIMUt98HQHA3Srjx+KkzfiybieekNebwD57DeUFcL9qU3ooYZlB/uAeBDYsIx5 zBoZ99OMEMmNk9zoMyBkY99IbpBP+vpF28I5VG78X6 X-Gm-Gg: AR+sD13D+QLWiVnU3jLFNjvN2JpVfn1l93K81oihrvmBe08/kALCO3meG29l5g9tc6H /62q1DqDMe87/RCbvGukf6sgaahEz6jGHjQVfha+7lvqhtrjBSfbmHb7twiF9FCyI/OB6DFY9FR Jv4mtR3lsuiaINgAHqltfj5PnStkGpUhqRcUcqhTbfXSrtpvwgm1RoRJaPpr99CceHET9/SID3g 302QdPq/7K5arYAP9/LW7kgORpQDnlAvvVq0L67vS7Tj3yEcaYQJbcE1e9WJVcQaHob+bXinVY6 ERSgOAMGaQs9ose7HCtiXfbQ/kQQzWcELbP3He56rNEom2nILq08UdbS3oSG5WKZ9rYhUslHV5r kjEFUbvem3rhuYmyovPleAF+m1/IGBc0lulys7t45uxFp7R7KllYnbtDY3NK4CA/m52zCFyi9Xg /w+bw= X-Received: by 2002:a05:600c:4f12:b0:499:b682:12bb with SMTP id 5b1f17b1804b1-499b82e8cb4mr5701305e9.1.1787244651485; Thu, 20 Aug 2026 09:50:51 -0700 (PDT) X-Received: by 2002:a05:600c:4f12:b0:499:b682:12bb with SMTP id 5b1f17b1804b1-499b82e8cb4mr5700215e9.1.1787244651101; Thu, 20 Aug 2026 09:50:51 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Magnus Kulke Subject: [PULL 17/53] accel/mshv: write synthetic MSRs after migration Date: Thu, 20 Aug 2026 18:49:20 +0200 Message-ID: <20260820164957.1895963-18-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787244699613158501 Content-Type: text/plain; charset="utf-8" From: Magnus Kulke Write partition-wide synthetic MSRs. This ensures the hypercall page and SynIC facilities are set up before vCPUs attempt to use it. Signed-off-by: Magnus Kulke Link: https://lore.kernel.org/r/20260710101534.664604-10-magnuskulke@linux.= microsoft.com Signed-off-by: Paolo Bonzini --- include/hw/hyperv/hvgdk_mini.h | 3 +++ include/system/mshv_int.h | 1 + accel/mshv/mshv-all.c | 15 +++++++++++++++ target/i386/mshv/mshv-cpu.c | 15 +++++++++++++++ 4 files changed, 34 insertions(+) diff --git a/include/hw/hyperv/hvgdk_mini.h b/include/hw/hyperv/hvgdk_mini.h index 0602a7c6cc6..a5527d49cf7 100644 --- a/include/hw/hyperv/hvgdk_mini.h +++ b/include/hw/hyperv/hvgdk_mini.h @@ -23,6 +23,9 @@ #define HV_X64_MSR_APIC_FREQUENCY 0x40000023 =20 typedef enum hv_register_name { + /* VP Management Registers */ + HV_REGISTER_INTERNAL_ACTIVITY_STATE =3D 0x00000004, + /* Pending Interruption Register */ HV_REGISTER_PENDING_INTERRUPTION =3D 0x00010002, HV_REGISTER_INTERRUPT_STATE =3D 0x00010003, diff --git a/include/system/mshv_int.h b/include/system/mshv_int.h index 063852115eb..cbfcb8611b4 100644 --- a/include/system/mshv_int.h +++ b/include/system/mshv_int.h @@ -98,6 +98,7 @@ int mshv_get_generic_regs(CPUState *cpu, hv_register_asso= c *assocs, size_t n_regs); int mshv_arch_store_vcpu_state(const CPUState *cpu); int mshv_arch_load_vcpu_state(CPUState *cpu); +int mshv_arch_set_partition_msrs(const CPUState *cpu); void mshv_arch_init_vcpu(CPUState *cpu); void mshv_arch_destroy_vcpu(CPUState *cpu); void mshv_arch_amend_proc_features( diff --git a/accel/mshv/mshv-all.c b/accel/mshv/mshv-all.c index 1516475f34f..1ca1d4b54ff 100644 --- a/accel/mshv/mshv-all.c +++ b/accel/mshv/mshv-all.c @@ -60,6 +60,20 @@ static int init_mshv(int *mshv_fd) return 0; } =20 +static int mshv_load_cleanup(void *opaque) +{ + int ret; + + ret =3D mshv_arch_set_partition_msrs(first_cpu); + if (ret < 0) { + error_report("Failed to set partition MSRs: %s", strerror(-ret)); + return -1; + } + + return 0; +} + + static int get_host_partition_property(int mshv_fd, uint32_t property_code, uint64_t *value) { @@ -496,6 +510,7 @@ static int mshv_init_vcpu(CPUState *cpu) } =20 static SaveVMHandlers savevm_mshv =3D { + .load_cleanup =3D mshv_load_cleanup, }; =20 static int mshv_init(AccelState *as, MachineState *ms) diff --git a/target/i386/mshv/mshv-cpu.c b/target/i386/mshv/mshv-cpu.c index 86d64c67fb2..6bb3045752c 100644 --- a/target/i386/mshv/mshv-cpu.c +++ b/target/i386/mshv/mshv-cpu.c @@ -1506,6 +1506,21 @@ int mshv_arch_store_vcpu_state(const CPUState *cpu) return 0; } =20 +int mshv_arch_set_partition_msrs(const CPUState *cpu) +{ + CPUX86State *env =3D &X86_CPU(cpu)->env; + struct hv_register_assoc assocs[] =3D { + { .name =3D HV_REGISTER_GUEST_OS_ID, + .value.reg64 =3D env->msr_hv_guest_os_id }, + { .name =3D HV_REGISTER_REFERENCE_TSC, + .value.reg64 =3D env->msr_hv_tsc }, + { .name =3D HV_X64_REGISTER_HYPERCALL, + .value.reg64 =3D env->msr_hv_hypercall }, + }; + + return mshv_set_generic_regs(cpu, assocs, ARRAY_SIZE(assocs)); +} + void mshv_arch_amend_proc_features( union hv_partition_synthetic_processor_features *features) { --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244951; cv=none; d=zohomail.com; s=zohoarc; b=fEqDnD2j6QFHNgh3qa3Grm8ucpvICfQEFWQcyw6pEh2m8jCnwtsyLOd8o/XWc/enO/TlblIzefvgTn7zC2AHBov+PYg4f8bUE75Kdgx8WSAQiwpNHqC6iNPmIzSMyuD3bWYDTj/cDWDmjh6ZlhK2mEubyfduw6Ihcql0kZQeh3c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244951; h=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=j3j6erah531s/cskJ0a1CwLNNVwS055cGoM9/4y/fw8=; b=co+AG4h9TQpEpN8ixt+zqDL9HGrmH4gW+55rhr7vMTi/Ba2j3JYz8LBuxXjN5jM/gZo7+4f5zN8ZCgW4h8V8Nw2clFS4o5myohffYXSpiJHnVD08dLsON54OSsVbP0m3iDjNb+d7xrTyzveEBwdCR/FVXX+LFM0qjCAbaLONXQM= 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 178724495142914.141107789992475; Thu, 20 Aug 2026 09:55:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5yz-0004oM-3x; Thu, 20 Aug 2026 12:51: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 1wx5yp-0004OK-OX for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51: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 1wx5yn-0005YC-UR for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:03 -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-640-0Vypse2EMbSYb3S3e4wt9g-1; Thu, 20 Aug 2026 12:50:54 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-47f6e8b5996so87707f8f.2 for ; Thu, 20 Aug 2026 09:50:54 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482b14c33b3sm13084069f8f.27.2026.08.20.09.50.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:50:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244661; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=j3j6erah531s/cskJ0a1CwLNNVwS055cGoM9/4y/fw8=; b=TCbM6QqrwGcaFDCk/p1ImaWgd6NdLBuUhjRuDtoNrhuxBJJUR29Qhh7HuxwCmp2qnPi5ZF 1U17E+rzDorkPL9aGRlvzjJbRfvh1DgAejSVo4VwiXhrUK3IagXbxcMloU9HBayM4CffGb 0KjcEHHmPLqqVdvSlSAWRMCzsyFJA/U= X-MC-Unique: 0Vypse2EMbSYb3S3e4wt9g-1 X-Mimecast-MFC-AGG-ID: 0Vypse2EMbSYb3S3e4wt9g_1787244653 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244653; x=1787849453; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=j3j6erah531s/cskJ0a1CwLNNVwS055cGoM9/4y/fw8=; b=V8ZCdXd7SMhZaa+bGBCLnZTgyVwpK7k0mkq1YUd+pfAXonSkEssJV08d1J3S9auPT4 h+wWtUsSezLWq29jmjYES0Q0sdnpgdNIWMGBcXp4GWar/cplqOyTEpxKKieiYrZrlH2C +aC2X8P6AZ6YBs61ekdx695GKc4W/S32JLE7a4Jr+2zRrHxXWCfxDPzgw2sIW9+k2/cD /Rjb5msaQiWxScSvmjxcFplH4vMO8J4VlQlUocLQXxBkq0/9jUfQ0t9kssmkT33Offb1 Ga1JzYs7jAJxwrXWp7Bk3rnr1WISg3Y42k/iQxwLrmMk06N5hNqpAhV23OkAwM9DyhJw XYuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244653; x=1787849453; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=j3j6erah531s/cskJ0a1CwLNNVwS055cGoM9/4y/fw8=; b=DflkXN1DheAX7UISD6oJPf1O5pBPtngAvdSWtwDoU0XxJWnZ9M1jx07yN3FYih3HGy vEHSb47zvbQ7I+K98o4Hg41KuZedvZMgBBSd3Ni15E2wmH/oCmSedGLN2RVjFZzOWNBc bbltoKt+TsA5kt+lsTbvRe/yNoR5l9i4iLACm1U5YImZbKEGv617t2iYOk7U0yhZO05M LfBUgEDfCi8PENO543ffYEaYg3THArBOwZyy3hXoLEVVGZ+h44wZJNrrCb2bFoyovLUZ fcUIlTcSXTevv9sYnUu1ZL4P4sDornmb4T2ehIYU8n6KGbjDffRqNYB8r2bQsn+maeDT ddcA== X-Gm-Message-State: AFuF++kduTo3prs+AtkVVDfDkB8hNEwkyvmJTYoRCG4pX+4MxbpZCIGn esqM0jT6NEMF4oLiH+QSViOyPk8nj3XCIfL6235C09/F6W1IJdqSPoRuMXJfQ1U8N3+dyp9cAco dYQEosnl7qRFuZAN84Y/2ZRvt8bZQWi7phbn/9i4RN3Grpmh1fXX++mZDYuk8eKuCOwg0PkC5Ss hHAvnsAqZLFijHrI5UIT80c4P2FjMNmFYVw0VIxa02 X-Gm-Gg: AR+sD13rb6QUwGXif7nvflvv9/Insx9hlrQWEgYeQSXDsZexQ+A4S1wZKvMDN9fS3FT iKS3rny/ZGJdXi7cHHbDMFMS7gV3U7a+svxgqNefai7rLNIJEOAylqDo1mdx7gkFNCBWdkIPtW0 vvap2xOsIZHMgV/U45WPdbuVMpfcDpYgzMKaeSxyqibQK5S5p/xMWr0zg4wdW2e7h8+/GAEc0Mv qyBjLIPGEEzCBPVxNDSehUhrK171Ir0qURGutflSEVoZdt7BsB/NfU9lUX+X/AM+0u+48FR+A82 E+CNnlGKnP3KzBz6wUSPzAeMgtgajLJYp9uxy/g3oEIPbhMUpLYy8zShZKYitz55aViHgeu1PdV BgSIHmlivL1jEWi2lxpS6+6s6NFATu/mxg3RJPmPpjwd7ZeVr8wVcdtcNw4QcaNbsANrM49ZhGS A23cw= X-Received: by 2002:a05:6000:1acb:b0:47f:71a6:970e with SMTP id ffacd0b85a97d-482c0b55d3fmr13488f8f.2.1787244652968; Thu, 20 Aug 2026 09:50:52 -0700 (PDT) X-Received: by 2002:a05:6000:1acb:b0:47f:71a6:970e with SMTP id ffacd0b85a97d-482c0b55d3fmr13374f8f.2.1787244652515; Thu, 20 Aug 2026 09:50:52 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Magnus Kulke Subject: [PULL 18/53] target/i386/mshv: migrate MP_STATE Date: Thu, 20 Aug 2026 18:49:21 +0200 Message-ID: <20260820164957.1895963-19-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787244952715158500 Content-Type: text/plain; charset="utf-8" From: Magnus Kulke MSHV's "internal activity state" roughly maps to QEMU's env->mp_state and cpu->halted states that describe state of APs in a guest. We don't invoke set_mp_state as part of store_vcpu_state() b/c we would put all BSP + APs in a RUNNABLE (0) state immediately, breaking SMP boot Instead we store the mp state as part of the load_cleanup() routine after a migration. Signed-off-by: Magnus Kulke Link: https://lore.kernel.org/r/20260710101534.664604-11-magnuskulke@linux.= microsoft.com Signed-off-by: Paolo Bonzini --- include/system/mshv_int.h | 1 + accel/mshv/mshv-all.c | 10 +++++ target/i386/mshv/mshv-cpu.c | 80 +++++++++++++++++++++++++++++++++++++ 3 files changed, 91 insertions(+) diff --git a/include/system/mshv_int.h b/include/system/mshv_int.h index cbfcb8611b4..3dffe3c5fbf 100644 --- a/include/system/mshv_int.h +++ b/include/system/mshv_int.h @@ -99,6 +99,7 @@ int mshv_get_generic_regs(CPUState *cpu, hv_register_asso= c *assocs, int mshv_arch_store_vcpu_state(const CPUState *cpu); int mshv_arch_load_vcpu_state(CPUState *cpu); int mshv_arch_set_partition_msrs(const CPUState *cpu); +int mshv_arch_set_mp_state(const CPUState *cpu); void mshv_arch_init_vcpu(CPUState *cpu); void mshv_arch_destroy_vcpu(CPUState *cpu); void mshv_arch_amend_proc_features( diff --git a/accel/mshv/mshv-all.c b/accel/mshv/mshv-all.c index 1ca1d4b54ff..5921ce693ee 100644 --- a/accel/mshv/mshv-all.c +++ b/accel/mshv/mshv-all.c @@ -62,6 +62,7 @@ static int init_mshv(int *mshv_fd) =20 static int mshv_load_cleanup(void *opaque) { + CPUState *cpu; int ret; =20 ret =3D mshv_arch_set_partition_msrs(first_cpu); @@ -70,6 +71,15 @@ static int mshv_load_cleanup(void *opaque) return -1; } =20 + CPU_FOREACH(cpu) { + ret =3D mshv_arch_set_mp_state(cpu); + if (ret < 0) { + error_report("Failed to set mp state for vCPU %d: %s", + cpu->cpu_index, strerror(-ret)); + return -1; + } + } + return 0; } =20 diff --git a/target/i386/mshv/mshv-cpu.c b/target/i386/mshv/mshv-cpu.c index 6bb3045752c..f528dd2b9a2 100644 --- a/target/i386/mshv/mshv-cpu.c +++ b/target/i386/mshv/mshv-cpu.c @@ -35,6 +35,11 @@ =20 #include =20 +#define MSHV_MP_STATE_RUNNABLE 0 +#define MSHV_MP_STATE_UNINITIALIZED 1 +#define MSHV_MP_STATE_INIT_RECEIVED 2 +#define MSHV_MP_STATE_HALTED 3 + #define MAX_REGISTER_COUNT (MAX_CONST(ARRAY_SIZE(STANDARD_REGISTER_NAMES),= \ MAX_CONST(ARRAY_SIZE(SPECIAL_REGISTER_NAMES), \ ARRAY_SIZE(FPU_REGISTER_NAMES)))) @@ -950,6 +955,76 @@ static int set_vcpu_events(const CPUState *cpu) return 0; } =20 +static int get_mp_state(CPUState *cpu) +{ + X86CPU *x86cpu =3D X86_CPU(cpu); + CPUX86State *env =3D &x86cpu->env; + struct hv_register_assoc assoc =3D { + .name =3D HV_REGISTER_INTERNAL_ACTIVITY_STATE, + }; + union hv_internal_activity_register activity; + int ret; + + ret =3D mshv_get_generic_regs(cpu, &assoc, 1); + if (ret < 0) { + error_report("failed to get internal activity state"); + return -1; + } + + activity.as_uint64 =3D assoc.value.reg64; + + /* + * map MSHV activity state to KVM mp_state values, which are used as t= he + * shared representation in env->mp_state and serialized by vmstate_x8= 6_cpu. + */ + + if (activity.startup_suspend) { + env->mp_state =3D MSHV_MP_STATE_UNINITIALIZED; + } else if (activity.halt_suspend) { + env->mp_state =3D MSHV_MP_STATE_HALTED; + } else { + env->mp_state =3D MSHV_MP_STATE_RUNNABLE; + } + + cpu->halted =3D (env->mp_state =3D=3D MSHV_MP_STATE_HALTED); + + return 0; +} + +int mshv_arch_set_mp_state(const CPUState *cpu) +{ + X86CPU *x86cpu =3D X86_CPU(cpu); + CPUX86State *env =3D &x86cpu->env; + union hv_internal_activity_register activity =3D { 0 }; + struct hv_register_assoc assoc =3D { + .name =3D HV_REGISTER_INTERNAL_ACTIVITY_STATE, + }; + int ret; + + switch (env->mp_state) { + case MSHV_MP_STATE_HALTED: + activity.halt_suspend =3D 1; + break; + case MSHV_MP_STATE_UNINITIALIZED: + case MSHV_MP_STATE_INIT_RECEIVED: + activity.startup_suspend =3D 1; + break; + case MSHV_MP_STATE_RUNNABLE: + default: + break; + } + + assoc.value.reg64 =3D activity.as_uint64; + + ret =3D mshv_set_generic_regs(cpu, &assoc, 1); + if (ret < 0) { + error_report("failed to set internal activity state"); + return -1; + } + + return 0; +} + static int update_hflags(CPUState *cpu) { X86CPU *x86cpu =3D X86_CPU(cpu); @@ -1012,6 +1087,11 @@ int mshv_arch_load_vcpu_state(CPUState *cpu) return ret; } =20 + ret =3D get_mp_state(cpu); + if (ret < 0) { + return ret; + } + return 0; } =20 --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244716; cv=none; d=zohomail.com; s=zohoarc; b=i6zj9WIi8M/7Y4o14bKjfaBV/TBejKQx9heUBtZ55kMenWr1YDQJc6nW9uq8njrqoLC/J90NCXoIbZLmDw7LxY4lQ+gtKIRrLr68BCnR6daveCcREWUb6t0zgX5O5m4DZssH9q0P6jjeLm+Tg3yQ2CtNs82Wl8DptCzxhbfchlU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244716; h=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=c1K9klrhQHZKoPe0lHDf6bH+V/OALPdZXPiuQCqnwFY=; b=eY0f+DQGU96O8hyIYNO0eHggMrggxhYf/hmbtOBjiHkaLeoU1pEdcS+36KU7X3X5yU9dSc/hbYnBS/+fFSPtnlIuwyiRQfTLcmFVVlxZ1g1nP1mw6Mo2TvLZGP4sEUkt3fJ5cmorWGzYzlpARnhlzHsaHrO+USdMI/NCKluQQKM= 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 1787244716462394.32550723540226; Thu, 20 Aug 2026 09:51:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5yw-0004cL-5Q; Thu, 20 Aug 2026 12:51: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 1wx5ym-0004M6-U4 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:01 -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 1wx5yk-0005X4-PV for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:00 -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-462-_Vq0xYauNHua9_mk7hTDRg-1; Thu, 20 Aug 2026 12:50:56 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-490a767c7dcso219005e9.2 for ; Thu, 20 Aug 2026 09:50:56 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499aa0fda98sm235823415e9.1.2026.08.20.09.50.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:50:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244658; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=c1K9klrhQHZKoPe0lHDf6bH+V/OALPdZXPiuQCqnwFY=; b=Q1fMotDnSiQRFKW3ceOfP6Kge7JjJbZK9KN/rsh0cec3vwK/uvwSMetygAucTOfG7yFNd7 C7Ul47SW8/yeojDXcfhhcPfSUh1lo2NlnCJkhoKmyHK3VdImPvX5o23SmeeHvbNPzKpEc9 WtHH2rzksYt1ie8VxcUqP3Wa577AvMg= X-MC-Unique: _Vq0xYauNHua9_mk7hTDRg-1 X-Mimecast-MFC-AGG-ID: _Vq0xYauNHua9_mk7hTDRg_1787244655 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244655; x=1787849455; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=c1K9klrhQHZKoPe0lHDf6bH+V/OALPdZXPiuQCqnwFY=; b=j858GM7oKcLULH65WudOg4DJn0G0FasAZKemCVMAV1nuEisXChlUy8oMCJS9GGUS3P OALVgeXkHoEUSRV+sNPfLQCrMiZA/mnDDZ2tQMlNkE9NzRqK7BoH3ACiLjYHPhn28cTH 5NExnTOqEoM/R7FkRCq4hIyJo6v2ALqnQoV/lmlhxj3UL5ynrdjohW9y35uVyMTZSYjD UFvBVbjflRcDCVf2+Mx7/6ZS3F5e3LXFST6vtXqN8sKtbzpXflM2DJdZ31KujCWgHjfM 7EkjnmUcRIwbgPx26GCHpB5sYFAgOs+K4+MInHQ3PCtcjYMiQ04R/3aLhR/qM0+h2aUK w+qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244655; x=1787849455; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=c1K9klrhQHZKoPe0lHDf6bH+V/OALPdZXPiuQCqnwFY=; b=EtahQwSjSK5LlOQ+noGuOLp6IOjH3m/pYtkRGkVZIFim8BNGe4as2kCpEsEXMCrmrV Cs7YkgrvBsESphC3RzkIyerTFJy55d/ZblE/eV/UlEUb3pdqLpghr5i1rWMTpBFTgJtT 8GNsKirBlvfGLqNSangdYfkMb4rN39l0dkzOebvJ+NPjIywu+oAIsBuy7ig3qP8r7hjd 3Jr7DxzLG2TQ4RxtxuYzx1G0ZITgvbG8LtdnUerxR2tWwvXg9J5NSzCilG+Jtpv5CLos PfL88lCqheqLTmzS5qxJAxtF4E/G+7fcyLAa9pnARAVsPU98cI9oAVB5bzov5a6SqaGa ojOw== X-Gm-Message-State: AOJu0Yw+W2UthQVibuP6Df3Zl0f+/vj/o1a6HNrdHXfKufq3nnvQB2rZ kI/nfD92tge7WqtKqakov+v3imRCrnDvEgIg4WkFDzL3ASLg/uuFR2srRy9Cs3JiJpq21t19wZv m1XxOWdPuHKV3UTGYHnGAgSm5iKykiS6jJ4PqFNi5NgfM08SRu8COhsLig/ZPGZz4zHOifHcT+c 0knmEh9WiJ3Hnz/4M3sL1MN+hrGNo9hUqRLsQuHETh X-Gm-Gg: AR+sD11/BG+/Svho/wfDeWimBP4cW0ZxAUkxMRWgXDJ/coKWI9dO0IIQIDEwD2sHQqR Lm5FoF6ocRH6X2r7K4ml8WmAn07qR/ZaNg60GHf6+4QGUhwv4UqOcH7NMU1Cm7PD6gYztkBJg3h fWazh6iLjQYn+vYv22eL9FpQ049KP612KUQEzJsVHNNLTPtfmYVQ8k42fTF64TrYTk6riW0KNJK 9Z7iWaPzH/ExkfdN/fi5Ey/JEVbklG82MoDHF0E6R5pK865qUAdrrICHnRr/1qkreNaXI32okOS uRpo06rn7JiSNbeIBHlgtageQPOkdEe4r6xvzxHt+fx96r2QncxyE6ELUjXj3p79OPAepukhc2E fMeowuoxg/SXtd3Jaxuht84rPkkOylMtDKJ0EhFH63CP6RuapEP5DLS8SNIRkcvhZ62d7oVf3Zq /1zC4= X-Received: by 2002:a05:600c:4f09:b0:499:ad2e:f7bc with SMTP id 5b1f17b1804b1-499b8455734mr3238415e9.10.1787244655284; Thu, 20 Aug 2026 09:50:55 -0700 (PDT) X-Received: by 2002:a05:600c:4f09:b0:499:ad2e:f7bc with SMTP id 5b1f17b1804b1-499b8455734mr3237635e9.10.1787244654896; Thu, 20 Aug 2026 09:50:54 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Magnus Kulke Subject: [PULL 19/53] hw/i386/mshv: drop initial msi vector 0 Date: Thu, 20 Aug 2026 18:49:22 +0200 Message-ID: <20260820164957.1895963-20-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787244717654158500 Content-Type: text/plain; charset="utf-8" From: Magnus Kulke This has been a warning before that was always raised if the machine has a hpet. hpet_reset() will eventually result in mshv_send_msi called w/ vector 0, which we can safely drop. Signed-off-by: Magnus Kulke Link: https://lore.kernel.org/r/20260710101534.664604-13-magnuskulke@linux.= microsoft.com Signed-off-by: Paolo Bonzini --- hw/i386/mshv/apic.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/hw/i386/mshv/apic.c b/hw/i386/mshv/apic.c index 9188a93b2fe..ad326030bfa 100644 --- a/hw/i386/mshv/apic.c +++ b/hw/i386/mshv/apic.c @@ -293,6 +293,16 @@ static void mshv_send_msi(MSIMessage *msi) delivery =3D (data >> MSI_DATA_DELIVERY_MODE_SHIFT) & MSI_DATA_DELIVERY_MODE_MASK; =20 + /* + * Vector 0 is not a valid interrupt vector (0-15 are reserved for CPU + * exceptions). This can trigger during machine reset, if hpet_reset() + * forces the PIT to pulse GSI 2 before IOAPIC's own reset has masked = its + * redirection entries. + */ + if (vector =3D=3D 0) { + return; + } + mshv_request_interrupt(mshv_state, delivery, vector, dest, dest_mode, trigger_mode); } --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244891; cv=none; d=zohomail.com; s=zohoarc; b=LR9hKYfHY5jF+GfJ9UhXqYg4fyBCGWfnN/YJrBjIBKliwWSJWb6mgLwsvm6ALMWCEeLBjRqTp/FL9waqA4lsg8EL6dFD3I7LkJxNrTUVaLbqYoxeTTUZq7DJmzo/Uv6muYELFLit3kwGchJAKMuqUcL2CK0K5uI7G21KPfs73aA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244891; h=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=iDeGx4lsnD3gIC+ysZwu/5kmuhaNZCo/ri7XQJW4wwg=; b=kI2iSvDTWzAXG+eywOhWQzCeiHjWyUTvtWS2694Gi2ZkAHaMlDWTC/6sfOtN/xzMLhgWp9p7GvoEFWe72Iw3SZiu0A3JU+4CFMbOyWAeYzZdTdgZPGrgS/oVdgbo2tUkt1My8ZafXjLcR0Gq8e3A2U62r0hrs1sSZaWD4yUHStA= 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 1787244891512793.6279395675462; Thu, 20 Aug 2026 09:54:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5z0-0004ys-M1; Thu, 20 Aug 2026 12:51: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 1wx5yy-0004md-91 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51: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 1wx5yv-0005cR-4P for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:11 -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-140-cu1uWwVaPsCWWXcW6APkog-1; Thu, 20 Aug 2026 12:51:00 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-47f83416551so82680f8f.3 for ; Thu, 20 Aug 2026 09:51:00 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499affa25acsm94802585e9.4.2026.08.20.09.50.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:50:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244668; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=iDeGx4lsnD3gIC+ysZwu/5kmuhaNZCo/ri7XQJW4wwg=; b=J+bmFUOQW9jloBBLiyCnjHdhcqBxF8U9HbCMm9WTTe9iKXbltaAF+S8lsEQGcqqmSyWNkC 8wJOeZ9Gzk08ldHZuIcQ67l0NsVDDA27qoTsNvPk3imGUNvN2MI6svyqC+AtB03slAMS9B LfPMoVYlFi1MHALYZTH5rxljozyuGK8= X-MC-Unique: cu1uWwVaPsCWWXcW6APkog-1 X-Mimecast-MFC-AGG-ID: cu1uWwVaPsCWWXcW6APkog_1787244660 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244659; x=1787849459; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=iDeGx4lsnD3gIC+ysZwu/5kmuhaNZCo/ri7XQJW4wwg=; b=ckHj/LDn2xAe6BEhAAvIrtPNQ62V1qg/bN67dRo8xexP+JrpgdNG35qfVTa8wTH/gt oUnv+8lBN7Zjz57pHOf3FlpVkemXVTHZ2e0eOSixBiDv3bPe8mAGhAWfRUEl7rAAsU29 Z3i8qu3d7FF8cbWnXjIZLawuhLHGi2+8TglwF0nXzdu6McrlSpbEOFxZhkEKusKChJgx dQ0qpMau82eU6Kh+WvCZyJV9w7vXuqYBCgl4Dl3ENJHq5SXs5CiWy/KWoP/vTuZPQWdO AwA8mgsoGFBzwjpC7YXwUSUSgtwo8X1rinzmBl0rh5GXMNn1PM3q5bwg+U6OqCCbg6L3 ApeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244659; x=1787849459; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=iDeGx4lsnD3gIC+ysZwu/5kmuhaNZCo/ri7XQJW4wwg=; b=BE50WNhh3StqQWfg4sdEy4XHlWvb5COgGrwGiSqS7sBM/l8daoGS8KeAhtLb5I5rZs BRT36DA/MXbgdrdHL2qenF7RstPktMMVv86YckT/9kUwUCfjyS3u0t1ERG0cxMVd2g7o EQUqlWdgBvgYmvQNo+AQwJSQnpo5gdNhqn2ajxv+iRF6uMH+LRyEm26H76ZVlMJAV8lU lOtUHdHbrzaiVKvckJr5HlA8pqfU/AVRcEKW7vMnVVdOOoi7n80zGh1Vk4cdkLav2GdY Edcd6QgPDvg5Qzcc1rBbMhn8I5loqEhwMG1aHBYIonwrfaTxngKXO/o50EQooUOHaEuj k/rg== X-Gm-Message-State: AOJu0YyVhvjE1DtwJIUWd8+8eMR1UhKEbZ+JqhRTw+NTVZYUmOfc3PFH H/atQ+xfNo/+Ode/0M0P5Rw5uhbjOvH+Alkf3VAVOvIQ/b5mIiaAFkM63ZhTvX1rNa3YC3YOs4c WBxSNVkgX2uTCBX5c+z31Q+aeVhRzMa3SFP+z8MLNqFbIS9kcBsX04pEc/9VXt/oZa3QDbmBkxA oCpQAeUkibf4s3Y2WrICh85v/u2G+ww45M62WUNCej X-Gm-Gg: AR+sD10TUFN8DXLyBLBR6ZiDGrLmo1XXIQrnu8DE/l/lvYXkIoHOXAjmCd1/yTZFkIH sMGLCYfWd/RZvtdpvXfafP32gzZDCfgaaPATjSeOgd9hfA6ovX3RaHFWXF7JsGC0oojI1HzYmJ+ AgUN7Z/8oiin4YvmrAfJBkE2IDlpG6EAE8gJjDNNLaOMJ0YOatNjjuiKMR1LqdF1eyNnWStyuv8 SSZc0dPYeua74uZUWR6BJMfItgxyBihdifuqvYtPX3gfB8fM+ZSMSh5vSz38M6sv33FTzNkBW60 vHKDTlHH/Z/9E2RspAwrtuejI/cQ4BV12idkHC0p9jdIPGKJo537Fi+AkpLi2B6YQ3cElB8TWXt jWLEOcEJenTAui5Jx99y3BgS/D9IHu3ie0hMdqZlv2zW0j8zyxxWrIGyaVzbXItXVN6Vu1t2o9Y yjNjA= X-Received: by 2002:a05:600c:3556:b0:495:48d7:f178 with SMTP id 5b1f17b1804b1-499b8454819mr2870245e9.11.1787244659560; Thu, 20 Aug 2026 09:50:59 -0700 (PDT) X-Received: by 2002:a05:600c:3556:b0:495:48d7:f178 with SMTP id 5b1f17b1804b1-499b8454819mr2869265e9.11.1787244659055; Thu, 20 Aug 2026 09:50:59 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: "Naveen N Rao (AMD)" , Tom Lendacky Subject: [PULL 20/53] target/i386: SEV: Generalize handling of SVM_SEV_FEAT_SNP_ACTIVE Date: Thu, 20 Aug 2026 18:49:23 +0200 Message-ID: <20260820164957.1895963-21-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787244892492158500 Content-Type: text/plain; charset="utf-8" From: "Naveen N Rao (AMD)" Align with IGVM files providing SEV features with SVM_SEV_FEAT_SNP_ACTIVE set by setting the same when creating a sev-snp-guest object. Since KVM sets this feature itself, SVM_SEV_FEAT_SNP_ACTIVE is unset before KVM_SEV_INIT2 ioctl is invoked. Move that out of IGVM-specific section to common code. While at it, convert the existing SVM_SEV_FEAT_SNP_ACTIVE definition to use the BIT() macro for consistency with upcoming feature flags. Reviewed-by: Tom Lendacky Signed-off-by: Naveen N Rao (AMD) Link: https://lore.kernel.org/r/031de849edf2ae4eaa6e00df83b053605a3ecfea.17= 79281646.git.naveen@kernel.org Signed-off-by: Paolo Bonzini --- target/i386/sev.h | 2 +- target/i386/sev.c | 24 +++++++++++++++++------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/target/i386/sev.h b/target/i386/sev.h index 4358df40e48..b84ca3ce0b6 100644 --- a/target/i386/sev.h +++ b/target/i386/sev.h @@ -46,7 +46,7 @@ bool sev_snp_enabled(void); #define SEV_SNP_POLICY_SMT 0x10000 #define SEV_SNP_POLICY_DBG 0x80000 =20 -#define SVM_SEV_FEAT_SNP_ACTIVE 1 +#define SVM_SEV_FEAT_SNP_ACTIVE BIT(0) =20 typedef struct SevKernelLoaderContext { char *setup_data; diff --git a/target/i386/sev.c b/target/i386/sev.c index d7dcefc8ecf..7b03f534b10 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -324,6 +324,15 @@ sev_set_guest_state(SevCommonState *sev_common, SevSta= te new_state) sev_common->state =3D new_state; } =20 +static void sev_set_feature(SevCommonState *sev_common, uint64_t feature, = bool set) +{ + if (set) { + sev_common->sev_features |=3D feature; + } else { + sev_common->sev_features &=3D ~feature; + } +} + static void sev_ram_block_added(RAMBlockNotifier *n, void *host, size_t size, size_t max_size) @@ -1899,15 +1908,15 @@ static int sev_common_kvm_init(ConfidentialGuestSup= port *cgs, Error **errp) ->process(x86machine->igvm, machine, true, errp) =3D= =3D -1) { return -1; } - /* - * KVM maintains a bitmask of allowed sev_features. This does = not - * include SVM_SEV_FEAT_SNP_ACTIVE which is set accordingly by= KVM - * itself. Therefore we need to clear this flag. - */ - args.vmsa_features =3D sev_common->sev_features & - ~SVM_SEV_FEAT_SNP_ACTIVE; } =20 + /* + * KVM maintains a bitmask of allowed sev_features. This does not + * include SVM_SEV_FEAT_SNP_ACTIVE which is set accordingly by KVM + * itself. Therefore we need to clear this flag. + */ + args.vmsa_features =3D sev_common->sev_features & ~SVM_SEV_FEAT_SN= P_ACTIVE; + ret =3D sev_ioctl(sev_common->sev_fd, KVM_SEV_INIT2, &args, &fw_er= ror); break; } @@ -3211,6 +3220,7 @@ sev_snp_guest_instance_init(Object *obj) =20 /* default init/start/finish params for kvm */ sev_snp_guest->kvm_start_conf.policy =3D DEFAULT_SEV_SNP_POLICY; + sev_set_feature(SEV_COMMON(sev_snp_guest), SVM_SEV_FEAT_SNP_ACTIVE, tr= ue); } =20 static void --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244711; cv=none; d=zohomail.com; s=zohoarc; b=ARIawiS18Q9DpEQ6fjBR4D1h7izZ/kSE4FGoXvYTR+f5GL92SsgSvj+xAtvTuXFSoo33HOQJtW3gdqjrMBRibLIPvG+ckf8agD1BfVXjlL65RkuMZEgJF8tPnLNGTbHVMKK4svPL263J/N9X1RuxiLXeHfuO7ZPKMiNJOjpOskA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244711; h=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=Q7ZOH4e5SxXfRZPj4efImhABWGIHj7z2g5n4rrqx8hk=; b=HFcvnqa1lhLH2L12Rcdk7gR+JD//N6ZzazPW9cTLTXMM1w2/dACiD5LP17w/pPwMet5A+odk/E11FD2mKQ4FSG/YZ+k33hqKqXzgE8MdHpvGTfcQ8o4bpaiAC8+Xd1jjpNfbwR1AAjDQsSB0c2LH7/ZeNIiVm2X+tWRt/Wkobks= 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 1787244711549125.40679084365229; Thu, 20 Aug 2026 09:51:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5yx-0004kr-NR; Thu, 20 Aug 2026 12:51: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 1wx5ys-0004QF-RT for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51: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 1wx5yr-0005Zx-A9 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:06 -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-112-WxoNXjk-PXaHvRcQ3ZN0AA-1; Thu, 20 Aug 2026 12:51:02 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-47f2de3ba47so81410f8f.1 for ; Thu, 20 Aug 2026 09:51:02 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499b19dba34sm78779945e9.9.2026.08.20.09.50.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:50:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244664; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Q7ZOH4e5SxXfRZPj4efImhABWGIHj7z2g5n4rrqx8hk=; b=i6XL1i6jHxHc308lbwl1t1MXqJDTPlJwUoX2AvXY3mzLd+d4zCGmuxFdeHomu3AgS+2S6o mxuonR2XD1LUR9fH3PVA4W4W8jOSvFETvSPER12dsAuPjHjg03J/JOO7B0+7nMedO6dy3u u5QrH8ACMhy72cHVS2Nsa+6iTwcwItA= X-MC-Unique: WxoNXjk-PXaHvRcQ3ZN0AA-1 X-Mimecast-MFC-AGG-ID: WxoNXjk-PXaHvRcQ3ZN0AA_1787244662 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244661; x=1787849461; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Q7ZOH4e5SxXfRZPj4efImhABWGIHj7z2g5n4rrqx8hk=; b=N49doS5P9jFbA8DcZ//6bNiLpLy6UmEUJACqWo1t2A1pn78m+2HL/NYDSANjcO3wYM R2GuFCfQ9zPRbVMbIhQYwRlgB/SZ79SH/oCbBDTpxxxoqr+nlf3fkaBu7Vz2H69Ll6uE bpgbxxZAu1hSmKcXi5uSUaC2yR4UzlfPwB59fVsFFlf/nGSbexqCykWT/MYV8n9uJYa5 38QMsVIkhLn+T/ZZm4hF7qvpxsxBqOtvFFVDUyA/jGlqZuchfIw/vMC9eXRX0xWIilii 4K6fUgn2VpkqMp/VjErBPgAt6mGsG18F3tkmTN643uthFYF6zbh7ccMk5ymdF/z1Mhcm hNoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244661; x=1787849461; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Q7ZOH4e5SxXfRZPj4efImhABWGIHj7z2g5n4rrqx8hk=; b=GUis/UFWxu9NgZoKX0rmefTkl5PC56fFfotIAzK9aX0q6G0ji8SqMNkr0nDZYWWKbL 83aKXENtRsyTfBm2Aq4IABfYJpATbFSAWPLBGTKUteDF3LAbuoS4zcZVU8oAh+A6z5/Z IY0GhFhQL2EkEAJSNJgBQzBs/C/1M1kG6FoyeoG06hplJnses7nHDuUFYNdBEul4yeST JFr8l0W1RXGC9sYpE5Gav11h6obFChZu4QsyIn6qnTvd6zsz1aS06UyTrxcueE0HrC2C eqq3GhBUE/I+FVqvWrPJd4aQX8klpaXC92J97l6ZCRJSFUIuEOBNW67DYqViayM9Anpd Z5Gg== X-Gm-Message-State: AOJu0YxdCKbPYc4BYwd/iZNFawhLzw50V0cEoJZvEFaBK8jxQZep+iMQ 1GLtP6eGId9y1W4HhjiHcMIkLFBuFnJr1Nc3MWjcBG8X8hVodppaMlkfByOTVhWKjhQzIXY1pOr j6EeKPlscne2cZCE2knhL7+qS6b3lRzAPwjXyiXbcXdUvJ8bu9rMa56S5uCLhZFFUdfGqoD9eXT hpJobH9IR1SFIU1uT6tRGUXcj+7rbySxU0L+wQaLjh X-Gm-Gg: AR+sD12Gr1g5n88jteBQS+t+aVvFBQ/L7eHL6zhK3m3Uxm46D84k4EOvkFPDKcVizDM Oq4Ny7pkoGQ7WUX9KqecUUtORGcj+FIPsGoyC5SNOqlGkD8nF9YvIE/GlL5dChcZDNXfVULZ33O qHbIyb0ahDb+2CNesfEPn2o32hfbMAJrrCkivHKSScqDTXmraE4h6SD+F6GXwJ7fSX+pEmGAMJj VW3TqBIemOzkJf+eKpnFTDV6ytm+rVJfUW8AJlBpskXeXYVocZy6qTy0xnfDfurTBJzQPCt+iKc q2tQRPdxm437GLdVj4kSGxgdcAehd7tye0OgvItE9JjVsjJW3i6o93lLukx63Z2UF0ctAp5qvya Ro8ttQgbAdGlmA67qQ9tn+FnmvU/iNah55X1V+144bW620nDYLN5pH0k4UpmLbiEhidqfw5S33i BZpWA= X-Received: by 2002:a05:600c:6211:b0:495:4d88:e630 with SMTP id 5b1f17b1804b1-499b8465f7dmr3147695e9.10.1787244661411; Thu, 20 Aug 2026 09:51:01 -0700 (PDT) X-Received: by 2002:a05:600c:6211:b0:495:4d88:e630 with SMTP id 5b1f17b1804b1-499b8465f7dmr3146545e9.10.1787244660893; Thu, 20 Aug 2026 09:51:00 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: "Naveen N Rao (AMD)" , Tom Lendacky Subject: [PULL 21/53] target/i386: SEV: Ensure SEV features are only set through qemu cli or IGVM Date: Thu, 20 Aug 2026 18:49:24 +0200 Message-ID: <20260820164957.1895963-22-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787244713681158500 Content-Type: text/plain; charset="utf-8" From: "Naveen N Rao (AMD)" In preparation for qemu being able to set SEV features through the cli, add a check to ensure that SEV features are not also set if using IGVM files. Reviewed-by: Tom Lendacky Signed-off-by: Naveen N Rao (AMD) Link: https://lore.kernel.org/r/6939de99f13d7170af68b74e711eb9f03f32f682.17= 79281646.git.naveen@kernel.org Signed-off-by: Paolo Bonzini --- target/i386/sev.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/target/i386/sev.c b/target/i386/sev.c index 7b03f534b10..093d29e7613 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -1904,6 +1904,16 @@ static int sev_common_kvm_init(ConfidentialGuestSupp= ort *cgs, Error **errp) * as SEV_STATE_UNINIT. */ if (x86machine->igvm) { + /* + * Test only the user-set SEV features by masking out + * SVM_SEV_FEAT_SNP_ACTIVE which is set by default. + */ + if (sev_common->sev_features & ~SVM_SEV_FEAT_SNP_ACTIVE) { + error_setg(errp, + "%s: SEV features can't be specified when using= IGVM files", + __func__); + return -1; + } if (IGVM_CFG_GET_CLASS(x86machine->igvm) ->process(x86machine->igvm, machine, true, errp) =3D= =3D -1) { return -1; --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244690; cv=none; d=zohomail.com; s=zohoarc; b=FeCes95fDNy69/I00OYkmJdA4GgRUOWqBJ+NNf8KrO5XXKPXDE9NFeSyQfD8ZmuGdwe1eRvzU9n0PVz/d+s3b9iXwmLmWDBrDQxqm6lVTSLzE1IrGRWhn89/Y1KaZ1PdAg9NEBjPo0y3JFZuhI5bXxoxT4MBM0rLa8Par4VW+ck= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244690; h=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=johAxnEead98P7nJRpW8CC1fh54YCcvqBd2m+8U/+pY=; b=TNjn/hUeDuyFw3IEdn5pLBnqNc9+TBF+rgmCA1uXRIEawQY0stZtJnPQalh9yZKjawFpEnBnoG8sz84q30kJX4YhNQX72EvHEcubfNycGQep9+naFBOkOAb5yZri6r06IRYV+Clor1p71cW+L/legLNUhVLAUjZXPnVqDTL7dto= 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 1787244690301928.7069561765601; Thu, 20 Aug 2026 09:51:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5yy-0004o0-Us; Thu, 20 Aug 2026 12:51: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 1wx5yu-0004U4-Qd for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:08 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx5ys-0005b2-TR for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:08 -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-583-xyyZKFJ8NR2A1NGPc7aGgA-1; Thu, 20 Aug 2026 12:51:04 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-47f83999cceso96359f8f.3 for ; Thu, 20 Aug 2026 09:51:04 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482b14b7d4asm12123479f8f.21.2026.08.20.09.51.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:51:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244666; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=johAxnEead98P7nJRpW8CC1fh54YCcvqBd2m+8U/+pY=; b=X3XUm7wylQ5DwNk1dp05S//XyLvBYEoeCFZI6EkWH7lqMM+Oz5MOYoJZaVUauF2LXE/xGA peaScyalMXAHLViFa2yt1QJH56ViaHxoJfvXSy6R9qgt2wVDhEjKC+dbHx1IDjs7Gl60G5 SrRPp0d2iUcX+Jstg8BT7VJtTTP7U/0= X-MC-Unique: xyyZKFJ8NR2A1NGPc7aGgA-1 X-Mimecast-MFC-AGG-ID: xyyZKFJ8NR2A1NGPc7aGgA_1787244663 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244663; x=1787849463; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=johAxnEead98P7nJRpW8CC1fh54YCcvqBd2m+8U/+pY=; b=m/AMvgMBk4Zs2dSRPPJA/dTbpcEmSfKpzKnBKRYyteU3SxxrUli5Vmcjl9wuqJRAIf ezSwXbZ9tRgJ2xYgBdDXDCGKjd0cwnAmlqpeuiQATqVvlhpId6mHrOYV6BIuVXij+xcD Pr5Yl98RgjPLYk9weEPcLEM9HI/+WlGaXlM+k1axU07+woDRBH7hmv78k9yevzzrir4y VBtOQFjp7+mwLp8kbVj1VbwWQuQhbyC8IeAowbbUMo06qWLrFF4QyqyplIHNSJeskki6 83AxNLcK+HjYOYYmkA1qi4y/IAmkYbOeF31mvc9Uhoc8liixkqq3lAa2Et2B8ADyv+PQ WLUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244663; x=1787849463; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=johAxnEead98P7nJRpW8CC1fh54YCcvqBd2m+8U/+pY=; b=fSxSv+xidilAgRBc0iHGQzRMc3aVtpujUtszxlKV1LEQWrpckH9B4GfPjD1xuoRhf9 E+HZSlJMx40fXZDOPCoBkyO3sz7ern0Drz1Xn1ftAXuCM0IZMBFCkCfHsjRWRFWtFZhu 8cjcroRxtDA6hQ6hogGZy5uUSNKZMJQyqk4zwbjrJ2V2QZ1T0GczzfXZpFAR+AzDzp6t UGxMJUt6rB01atCjphwd3WZvipUzzdBCajeeShYRZYXzvXY8Mw/4jCm7UhdNe3CFZ2As 5pnailQpeFjSv8F0xV60XSJV0J3fRN/+ySxIOaL2tbp73yQSUauaHq7etO/ZXJbRCUrG V8sw== X-Gm-Message-State: AFuF++kLvx71Rhe0mp8Kd0ilSoE8PSOUc4CKxp48qdxDv/STp9rEdFS6 +r53l/GF8cpintdQLAH37AEosL6p9Fe3Ee/1kqf2le/pyvC7ZulJJnwiiKzOfhvj5nv1MZeDmwD dG9J3c4gpT/OMaMYS6MFGMHZ4F6CalD0ZnextN8Na1hlzGjeU0HRQJuB/6eAtAJJmNXKd+SsxyB iGScQHOKdCZL0o58kxI3+YucTnyRxFZw/tHEPaFBPQ X-Gm-Gg: AR+sD138WMaoo8vz8TP9ws1R2UIMS/z78WUm0echQE9n8CZm8yf8ux5ziR6wEiCh0+0 +n0QRqMnFfFWXQtbmGZQjCWpqgdYhLzUoPpc3zF/G7nZNEHIXdKSoMhrWT/0o01JDfeSBpcka5S 5AsU4iWqPxv3M9NAl+Nu4p50SeTlF2cMGsCetmersE0fxfGYhBwLTmkBdNU6LkSfOdacsKIoEWo 17LhatQY+wQ8K4HgPFYbbahXc3FYn06rl3i7Nw54LimUyZEdyjz1TCakwhrUd8zGShqO70Ad5Dk jQsxEX7Mf+Lip8dS/Q4IqTtF+5/Qf8Qk+KnPil/0t9xIQIH0VgCkFEhYUefbvT1b5pfpXvnvqy1 utVffPPcpzFvGBDnAfd7xpV3Pziofngkq9YfR9DepxGicU+GEd4uTSBKKzWfCyOL+wK9rfd78VW ggTxU= X-Received: by 2002:a05:6000:2209:b0:481:573d:9d29 with SMTP id ffacd0b85a97d-482b1fdb100mr25099356f8f.14.1787244663268; Thu, 20 Aug 2026 09:51:03 -0700 (PDT) X-Received: by 2002:a05:6000:2209:b0:481:573d:9d29 with SMTP id ffacd0b85a97d-482b1fdb100mr25099293f8f.14.1787244662776; Thu, 20 Aug 2026 09:51:02 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: "Naveen N Rao (AMD)" , Tom Lendacky Subject: [PULL 22/53] target/i386: SEV: Consolidate SEV feature validation to common init path Date: Thu, 20 Aug 2026 18:49:25 +0200 Message-ID: <20260820164957.1895963-23-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787244691545158500 Content-Type: text/plain; charset="utf-8" From: "Naveen N Rao (AMD)" Currently, check_sev_features() is called in multiple places when processing IGVM files: both when processing the initial VMSA SEV features from IGVM, as well as when validating the full contents of the VMSA. Move this to a single point in sev_common_kvm_init() to simplify the flow, as well as to re-use this function when VMSA SEV features are being set without using IGVM files. Reviewed-by: Tom Lendacky Signed-off-by: Naveen N Rao (AMD) Link: https://lore.kernel.org/r/35449df94eb20c29923a7cd0e2742ddba605928c.17= 79281646.git.naveen@kernel.org Signed-off-by: Paolo Bonzini --- target/i386/sev.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/target/i386/sev.c b/target/i386/sev.c index 093d29e7613..d8fb88d2b21 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -600,9 +600,6 @@ static int check_vmsa_supported(SevCommonState *sev_com= mon, hwaddr gpa, vmsa_check.x87_fcw =3D 0; vmsa_check.mxcsr =3D 0; =20 - if (check_sev_features(sev_common, vmsa_check.sev_features, errp) < 0)= { - return -1; - } vmsa_check.sev_features =3D 0; =20 if (!buffer_is_zero(&vmsa_check, sizeof(vmsa_check))) { @@ -1920,6 +1917,10 @@ static int sev_common_kvm_init(ConfidentialGuestSupp= ort *cgs, Error **errp) } } =20 + if (check_sev_features(sev_common, sev_common->sev_features, errp)= < 0) { + return -1; + } + /* * KVM maintains a bitmask of allowed sev_features. This does not * include SVM_SEV_FEAT_SNP_ACTIVE which is set accordingly by KVM @@ -2581,9 +2582,6 @@ static int cgs_set_guest_state(hwaddr gpa, uint8_t *p= tr, uint64_t len, __func__); return -1; } - if (check_sev_features(sev_common, sa->sev_features, errp) < 0= ) { - return -1; - } sev_common->sev_features =3D sa->sev_features; } return 0; --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244695; cv=none; d=zohomail.com; s=zohoarc; b=Z169lG94WVmt2/Z0LaKdyuUNNNZvQlZDCiViNnl8jhPoiJJyLyrtLVJFkjg9ff1KZ74cE29D5xujl4HpLkLLcpZXUL+bhrX+4zvateLufF7eq9us12P2rsLl38IBHM038WRcUbPycN/K03a0EmsmcqmPXvYcreSrEyTeo67saKU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244695; h=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=sxn/uzqSPQpS6n/ktNic7zpaVmCAciSa5XkWjGHf4kU=; b=L9ZSqdyYgYONDdl52Xvx/gOmk8htZC45R5XSq2f7X5G9WSb24I8QiHODQNCA43jPacPKcI5qnwgqJCV2GgKvN8GLvVazoi/75sHH4hhKEL6IHC/Np5wtEUXN8qq/euQdyYFllWEGuW0Ywzfkslk0XLCUnHUdDcfgyQxV+9d/CXQ= 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 1787244695162799.7957505526584; Thu, 20 Aug 2026 09:51:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5zF-00063f-Uh; Thu, 20 Aug 2026 12:51: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 1wx5zA-0005kT-M5 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:26 -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 1wx5z8-0005fQ-KD for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:24 -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-26-NAPIXRceNCOpNOmFQSMxeQ-1; Thu, 20 Aug 2026 12:51:10 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-496b61bd846so173705e9.2 for ; Thu, 20 Aug 2026 09:51:09 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499b20a14c6sm59749525e9.0.2026.08.20.09.51.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:51:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244681; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=sxn/uzqSPQpS6n/ktNic7zpaVmCAciSa5XkWjGHf4kU=; b=Sh8c0sn0Ttzo8rHAjrI91+7iTmPp1TUhqP7a3DUELEB8X50NvbpWqjD2MlPl0cmaRC4gzB hvXeTNrKOj//McHjxg/LMZd+2YKdZQBooykhuPDd7hjVWjP8ov/7kGZ5h40VKlBqVD0ugL +KcVQibFeMNNtKFvbAND6J+L7UAWgtk= X-MC-Unique: NAPIXRceNCOpNOmFQSMxeQ-1 X-Mimecast-MFC-AGG-ID: NAPIXRceNCOpNOmFQSMxeQ_1787244669 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244669; x=1787849469; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=sxn/uzqSPQpS6n/ktNic7zpaVmCAciSa5XkWjGHf4kU=; b=nSMgeGkn4tEeGIHckdPJlZY4ZgMhIC1117/pbTzXBTqYi0TKKua4eVBGs4pFjS6beL zMHHq/DuWjhxx4mUn4Rsva1neFlm4l0MlusNLw30yJIX6BKSVDl/J/HzJPRDmrO8Apfn rE13P8IXkFqI6xIOucWeVfqwv2MjJXoc9Cv6thbV52l92hPZygDAc0K1g14hxvopOVvh pmfA8d6OJmbSKZ6lhnoYMpqYonCvnQp04ZvBd52pydJFjdnGHMK0dKl7opPo6tjlDBej 3gaheUHxGViuCAIxj6TZEio/kAo7IVlHGtnVeqgXGyGQXuUC4kdkgogfcSsCF1IcJ549 vaAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244669; x=1787849469; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=sxn/uzqSPQpS6n/ktNic7zpaVmCAciSa5XkWjGHf4kU=; b=VqIqJvu81Wkk4YHjR/P+xqYLBa+XuFCD95eadsHfZqROrv15HiQisMSoefQV+zWsD/ WGYH2a5i7oxpcF8r1SMPgZBOIEWtKUlzaOZCuTK+38ozBpXqrJVWpakf2s2zmkoLkY5x +rhyra/qW46+LQPMEGhgrKjX5pryoXHOmfi8ZllEIT2wA0LnGK1ITE42Wq34UfKkd8dm BMV0Mh9dAuFSPpG/LVFQnMc5jwzNCwCJkQaACO1qlpjjfVWMhWASkwJt3IVqjTw/C938 F8MtK9B2N6nbbKrmbwOlB34wS6Uqs4vwl1TtHH7o/jCoAypppaIOcpBZ547UL+SQyuT0 pdTA== X-Gm-Message-State: AOJu0Yyn5DpDvUZb/K0zKytrcUj5goDCZqg8EeBN3TQZmjV79I4IfjKm HucBmDhmc+rMf+ykDD07Y3TlikWJo8BuHLyNga4jW+6Zn/c//ZA7MdSzqDMeojaQKrLOkj3bATO z3mI7yuk2OhpfAV6h/11Ro51sVchA5ArkusfBJaZ1AqzD1u1vy9LTLQgAheNRhyl6yIEDIutwO9 nKYglfsOwA8rGIyWfa/Tpc2T48Yrfh19gD9IyWSxnG X-Gm-Gg: AR+sD11xtbx8E8C6fo2gcpEQjRm0yLtcPLknv086evoDj8j4VuoLMcpYu3m0v7ARrk3 dtpRCneqMNyN+z7ms0Ilj58+s6yoA+XQENR9Z8ZOzUUdERa9AgKslznH6SxEg+FrHoxHzVNWdp6 zdKiJMe+Lkk5Dojvu4rwsSwWX4dlqcgGDPwrkMBPLA202qbelQ6LJvySYUiqMKzlX7/Z3WKtTvG TKvQQQp90RBdrPO7QhqSN3oSaFialywBSUGNPM2pupaC2G1IRo+d3nTkZMYBvkUg93EGpBlho2a fMdq8tiw4iz1AKzCPP0k6khrDMIHUVEGChCQf51n+ooR7Ida+Nee9Tw6nimjP+c96Z0Vyrawc9N BnF7zX9L1YbWVpiu6sK1XwsjZejBnzYs/wRysKQ6jXeuTZMPpd9uYy5vsqgDnsPgoJTpJlU8fo3 Lme7U= X-Received: by 2002:a05:600c:3588:b0:496:c18c:f9a3 with SMTP id 5b1f17b1804b1-499b83184eamr3693995e9.5.1787244668480; Thu, 20 Aug 2026 09:51:08 -0700 (PDT) X-Received: by 2002:a05:600c:3588:b0:496:c18c:f9a3 with SMTP id 5b1f17b1804b1-499b83184eamr3691835e9.5.1787244667458; Thu, 20 Aug 2026 09:51:07 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: "Naveen N Rao (AMD)" , Nikunj A Dadhania , Tom Lendacky Subject: [PULL 23/53] target/i386: SEV: Validate that SEV-ES is enabled when VMSA features are used Date: Thu, 20 Aug 2026 18:49:26 +0200 Message-ID: <20260820164957.1895963-24-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787244695786158500 Content-Type: text/plain; charset="utf-8" From: "Naveen N Rao (AMD)" SEV features in the VMSA are only meaningful for SEV-ES and SEV-SNP guests, as they control aspects of the encrypted guest state that are not relevant for basic SEV guests. Add a check in check_sev_features() to ensure that SEV-ES or SEV-SNP is enabled when any SEV features are specified. Reviewed-by: Nikunj A Dadhania Reviewed-by: Tom Lendacky Signed-off-by: Naveen N Rao (AMD) Link: https://lore.kernel.org/r/11e34ae3db91643e45e097404d1aa949a820aa0d.17= 79281646.git.naveen@kernel.org Signed-off-by: Paolo Bonzini --- target/i386/sev.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/target/i386/sev.c b/target/i386/sev.c index d8fb88d2b21..52379855b3e 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -523,6 +523,12 @@ static int check_sev_features(SevCommonState *sev_comm= on, uint64_t sev_features, __func__); return -1; } + if (sev_features && !sev_es_enabled()) { + error_setg(errp, + "%s: SEV features require either SEV-ES or SEV-SNP to b= e enabled", + __func__); + return -1; + } if (sev_features & ~sev_common->supported_sev_features) { error_setg(errp, "%s: VMSA contains unsupported sev_features: %lX, " --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244904; cv=none; d=zohomail.com; s=zohoarc; b=hCQ8/ZNVd5lJx3N5EYIIg/jmsOACaIx3DC8RzQf/jmG3RQPpCB7yLU9aU+n+8TWiF1/LHxgbAbLQcrdWEV0Cx3OgreClrOXgXnAMTVdrYwfrflS8wXOEkiVob63u9S2mrU/9gCuVAVOGSOXYRf+sp8o9k8ymazAB9mLHDTXFN88= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244904; h=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=OfPTh6t9zdyti56yu2qnQYYPguSgVH4/TPG5cx8jIgg=; b=EjA7sFHlOhs/iBmeEtMj+Wz0f7Ox3JhTc1uMOal/NtFd8BdWo+HD9EYjgTiY2RUs/3df/gA5ie4PM8LIwUJiauP1L5uXsZhHRcPN6cMi5lBHCYrOVgDURXcIMT/ttYsJWSil2m+3Qzxz727QRwn0qyNUbkn4BGh6LN+OnGk8VDc= 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 17872449049025.958458178184401; Thu, 20 Aug 2026 09:55:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5z5-0005Jf-7p; Thu, 20 Aug 2026 12:51: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 1wx5z1-000567-Mn for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51: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 1wx5yz-0005eD-Vl for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:15 -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-642-Lls1y7bNO2ai8PuJis38Cw-1; Thu, 20 Aug 2026 12:51:10 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4955fd77c18so154415e9.2 for ; Thu, 20 Aug 2026 09:51:10 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499aa11fd3asm144569975e9.8.2026.08.20.09.51.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:51:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244673; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=OfPTh6t9zdyti56yu2qnQYYPguSgVH4/TPG5cx8jIgg=; b=DgC3unSBcva3zOwIZ0AsxaJUJsXFcp5PKnUL4vCSX0vKM5JejZaeeRACx8+Ai1DxNeGntR GFR+hw4RUo54gsHbQUdONawvSMAEJzCMieZUmNlzLj2tRoVnEIzt1mFL9+Z/VbktrFgVl5 /Ry9ndR9VUw00T2MLJ1SmgPLXSACreQ= X-MC-Unique: Lls1y7bNO2ai8PuJis38Cw-1 X-Mimecast-MFC-AGG-ID: Lls1y7bNO2ai8PuJis38Cw_1787244669 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244669; x=1787849469; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=OfPTh6t9zdyti56yu2qnQYYPguSgVH4/TPG5cx8jIgg=; b=uDwtnAFqsd4eQd4ru166vcJQsDfD9aAvNZlCSfV4Bq1kihPO7wyvnG7kGBcCh7K8+s z7ZOEXwsVSSdx4ucl+rlHaF6Y+PP5Y2kXqevJEo4G8gKh0+hbSs4eBxB4yV5cEqOGSUg L6KeF3Gva5KeHqZtxXSAf2D7G5snAZVdQ8dC9Nx3qAbvg4oHabJOL3uNy1ZL24v2jArk Z6xgxedmfiw32U7ZN/jutXQ3HaWAYI0c3bTfyIvrrIAc3q7twPJN8GUt+Jks13MP0Zcw aLp09Be6CZ3BMUwO3caDtWa+l9NcmPTAxdAK1PePOtpsvEhkJ8NOXl/Pk+UcVq0ZmpL0 A1QQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244669; x=1787849469; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=OfPTh6t9zdyti56yu2qnQYYPguSgVH4/TPG5cx8jIgg=; b=BjgXBW/U7p2G3Q11n8Dks5H0XwZ3sSAMVZnYz/2MaKHTQDv1fbTkM4nzWcqoutFTlj QauB9w976+FUvfRs/UA1N4YMgFgGtpZ/N3YUPL0e9J7uSCVFDv904bk7qt+VATUPG3nV CqMd1B96gnQdMl3F6amhpTVBY+PUBrOhWYKhTZPpvAywpxwskZjEsNoKwHTPxMjlTtYI pq10Hi4KxG3zlGzm19CpBlBoGsiz+dTKR/YvCo7pSrr3+CoCH5o6JnS8ozBHWRs+I1pF 67SldRxmOpCNTh3ZaoPLV1GIExhLxTPO2QMWIQHKy2dsgp1OUUFVrXLjUbp7+T9zQjlw weiA== X-Gm-Message-State: AOJu0YxEcDcnM6aFX2y6P3un4nk6+sPgQ/aFIq1Q2mUH+3j3oIt5721T euytuKkEjMhUhlAHuggrnGsj/6hR72jJraduH982f/Iam5Q1XYvOMea0qjioaLZY/xLrnz0VZr6 R31VnN96OTNJ4sTEQnofu7KjBaaC6mf0YATQg6x5aVnOdcqZqMoJuuGP7PTM9d404qA3fxIC9W8 iautGND9VVO07G1pFSQS38gcknCmKXcgNNeOAGLsoQ X-Gm-Gg: AR+sD1122FF1kUv3eEyg1kqAN8UbEyjwtBaRmavxSn+0BkKqK3v3I1D06snfSkv3SGt 6HxmrByCccyxEzuFFw51Stju5GCf0xn/NjIhIX6VkUhx8yHzywvVMHfkCztdTGoYxZwjgra5b6e 8t6iGyFh6CSnqNEku5r0J/jAT0hlIiyDM68l9KScuJYelNz4prrab5hdYwEVa2YXtCkiUjbe1Jy 6hD+bfqtIpmY7s+NXGCqkkUX8a6T0QLISUTQxKurBHCrCXiW2XbqcluKYUeRv6NwFK6MuRmF2jd 8G6Qh7D8KgdinuHAszdroOafmZkvnUvEVXUltYjp9Q747hWz5B+a1CamQusUzFWVzGUeztiXS8i rfDBHGS7SuZ4Addesf9+xP829SazOYy4N4sjomVxggo76jPRyyov9fnaCogmHb5hbggisW5lidR +srNE= X-Received: by 2002:a05:600c:c168:b0:499:7024:9d4a with SMTP id 5b1f17b1804b1-499b8327af5mr4961425e9.8.1787244669505; Thu, 20 Aug 2026 09:51:09 -0700 (PDT) X-Received: by 2002:a05:600c:c168:b0:499:7024:9d4a with SMTP id 5b1f17b1804b1-499b8327af5mr4960445e9.8.1787244669120; Thu, 20 Aug 2026 09:51:09 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: "Naveen N Rao (AMD)" , Nikunj A Dadhania , Tom Lendacky Subject: [PULL 24/53] target/i386: SEV: Enable use of KVM_SEV_INIT2 for SEV-ES guests Date: Thu, 20 Aug 2026 18:49:27 +0200 Message-ID: <20260820164957.1895963-25-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787244906449158500 Content-Type: text/plain; charset="utf-8" From: "Naveen N Rao (AMD)" In preparation for allowing SEV-ES guests to enable VMSA SEV features, update sev_init2_required() to return true if any SEV features are requested. This enables qemu to use KVM_SEV_INIT2 for SEV-ES guests when necessary. Reviewed-by: Nikunj A Dadhania Reviewed-by: Tom Lendacky Signed-off-by: Naveen N Rao (AMD) Link: https://lore.kernel.org/r/f2a7778ab26b11a8de90e170ff984ccd29dc05a0.17= 79281646.git.naveen@kernel.org Signed-off-by: Paolo Bonzini --- target/i386/sev.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/target/i386/sev.c b/target/i386/sev.c index 52379855b3e..9cdccc872a3 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -1697,8 +1697,7 @@ sev_vm_state_change(void *opaque, bool running, RunSt= ate state) */ static bool sev_init2_required(SevGuestState *sev_guest) { - /* Currently no KVM_SEV_INIT2-specific options are exposed via QEMU */ - return false; + return !!SEV_COMMON(sev_guest)->sev_features; } =20 static int sev_kvm_type(X86ConfidentialGuest *cg) --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244725; cv=none; d=zohomail.com; s=zohoarc; b=kfEU+xdxWFtWayvEunTJUOQwPB5tes4+DZ4zcK6qogxto3SATTgPWpC3ZlIAfEuR2q+FHpLH9w1/EMGmWSQ+DsGz57DDn/Y9Yl29wtaH6aewLU0jKb2C8vpjz72/0KfxnYf2Xcj53Y97lNyDVunmdBzL1vazjoPNkxILfAwcEuQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244725; h=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=h7zYr8kpZYKg21q1pd5cKDA8VPO1ZSHlqsrFeP9oTww=; b=MEODPy59Izm3Cf41YaVFB2KMVI0sTjI9Z69rB19BfauH0dN+c3hKAyaSNLMuA7A26dDqTtOEg9nlM2GPwotIg56XurskON2/r2ZLA5s54F35Ql6u93lJ52KiU54npTR6lryTK9f6p3vKvviazpYieOcLZgyhowfNPWzd4I0ln94= 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 178724472515039.20313338133042; Thu, 20 Aug 2026 09:52:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5zC-0005j3-KZ; Thu, 20 Aug 2026 12:51:28 -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 1wx5z5-0005Tx-Of for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:20 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx5z3-0005ep-Ko for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:19 -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-669-xLQvaybqNJyAy4xd64IQGw-1; Thu, 20 Aug 2026 12:51:14 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-490a767b782so267875e9.2 for ; Thu, 20 Aug 2026 09:51:14 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499aa175d0fsm158711715e9.9.2026.08.20.09.51.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:51:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244676; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=h7zYr8kpZYKg21q1pd5cKDA8VPO1ZSHlqsrFeP9oTww=; b=HPQlGQ+C8a/ScQvkNZL9APFB4j5DEYkqyPmXJpaL+HfCzsDtF4Racvp8HxrrVxLX0ax3OT KUiVSsZuh3MgWJBFMAx9odTuVgzQE4G/0axfLG4VNp/a6rerKfGGoWDzroCqStO/dezgw6 T+44ZMI71kAyC4vkkydvYZbtfvGTDVc= X-MC-Unique: xLQvaybqNJyAy4xd64IQGw-1 X-Mimecast-MFC-AGG-ID: xLQvaybqNJyAy4xd64IQGw_1787244673 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244673; x=1787849473; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=h7zYr8kpZYKg21q1pd5cKDA8VPO1ZSHlqsrFeP9oTww=; b=TpCNlnZZ3zaL8Vn2mn0ThrgMuAqbJrnof/OOcQyntACOYwLvKpN6yhZ5Skl9X4gZwm eUL2Aj/t7sfqexff1i1oOfEmI3sfC05O2GWVxMVZC7CxUa9gXlV/0ksPDPDnZ6GpnGde ja+U78zj0uA/lWCcq/x5gsRJ/F2md3Rck5MpZGGyQlfaOitTh61VWVytqC0OhrM7KKVR BikbyrE2tpopkI7BY/Q0ecHiCn9yZ6flhWqaBlN0OFctplvnKVf0bKZp9z8KJaeQqdJL vDEq//EbOEexd06wpm/Yr6M43twQ7CPBv2fubL1nfZZxwYOBh3q1GX065CLh1UJOTRS3 hnFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244673; x=1787849473; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=h7zYr8kpZYKg21q1pd5cKDA8VPO1ZSHlqsrFeP9oTww=; b=UL+71jH39urWT3jtmOmpuQ6iPO1zA0DXktN7yekDjUZWc/IOiClTG+nk/OR8TC35uE p2ipeJStJK6lhPXxnkJs+zcEBj2DY9JStmB9wbkGLwQcRwsk7UvXe6q/++wamP6y1YBN BwtFlDmly9wkLPPqK+jjQJiG8+h/veTwqmQe6J4b4wF13Y7wJeFw7dfBUibDdiEbKO+k XpOffFQl8GtaEUDDrReomJ51k4+hqy+NDMZV0nxBbk3GBCFoIZ8Iy+GA8miJvisc6U30 xEFNuYLxTYUnTv6GnHZY9JTyQloDancXWx5mQGjz7EM3kCRMsX0Xp//ffKtWMuV8tsz/ 395A== X-Gm-Message-State: AOJu0YwvRQF602/oFAYk1tUwvfgJOSGTt8/toEdskeS0T4Be548ezKH8 +ePj3aVBSSOLruGLhz1wyWkqOkc7iBPY8lMi6Um+Wsj26OhHbYcoBzkYMnsVZhjT60hsR1lYwMA 8kA4vM0v3sOd/kJy21hwBiBcVhozPPvd8p6ffNaiIc964ROymqxJqAQRp2NhAneOJch+VPwfljq 3tSq9krbZb60Ny/JNX5Gq51T9E1CGV8Ggk4+o4Q0H5 X-Gm-Gg: AR+sD10EvoaEbifB9suY+0Nu0tkQ5IMTScQy0JFsuMlPAa6kWDBZNx/D9dXJga56WYs T/RKyv+lgG1u0+dZuXWQ6hHJDc6FfC7MilrvYSZGC1pKXcz45JyPBIl+v2/p1EF6Lllvpe08p// CfphIEkbAoElYPl0f5K0U0oWyKmGGAG/PpoARCLMuaqC5OLCvc0pHFUV2mLFeIn2AOktHTT1phd MXCNezoyFOASqXVGIcCY4DGqu41qGlaCisgk/C+HVMi5xyNgGIFr9kc2RR3OQu9L7VBSnb3x3xs Nz3U7Fnh6V/0GBRaA31f93o0oGFY5+sbbmIWbvfjYGxV0I1Rvvg4M/Ug5obNsPErWbXTuxT4QeR tP6KRC0n5hxIAA9ztJTQ+T9ENzyBRGHoDJaBhW/nGm1jhdMmMtJ+O8hWIwvdAYRztl+tvVyeiAX ovA4M= X-Received: by 2002:a05:600c:3492:b0:495:5890:8f6c with SMTP id 5b1f17b1804b1-499b8339418mr4078695e9.7.1787244673425; Thu, 20 Aug 2026 09:51:13 -0700 (PDT) X-Received: by 2002:a05:600c:3492:b0:495:5890:8f6c with SMTP id 5b1f17b1804b1-499b8339418mr4077625e9.7.1787244672989; Thu, 20 Aug 2026 09:51:12 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: "Naveen N Rao (AMD)" Subject: [PULL 25/53] target/i386: SEV: Add support for enabling debug-swap SEV feature Date: Thu, 20 Aug 2026 18:49:28 +0200 Message-ID: <20260820164957.1895963-26-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787244725726158500 Content-Type: text/plain; charset="utf-8" From: "Naveen N Rao (AMD)" Add support for enabling debug-swap VMSA SEV feature in SEV-ES and SEV-SNP guests through a new "debug-swap" boolean property on SEV guest objects. Though the boolean property is available for plain SEV guests, check_sev_features() has a check that rejects attempts to enable any SEV feature for a plain SEV guest. Though this SEV feature is called "Debug virtualization" in the APM, KVM calls this "debug swap" so use the same name for consistency. Sample command-line: -machine q35,confidential-guest-support=3Dsev0 \ -object sev-snp-guest,id=3Dsev0,cbitpos=3D51,reduced-phys-bits=3D1,debug-= swap=3Don Restrict debug-swap to SEV-SNP guests at this time due to a compatibility issue with SEV-ES pflash devices. Signed-off-by: Naveen N Rao (AMD) Link: https://lore.kernel.org/r/416e7b156e49f95958f8c5c8549b48a88c1995fc.17= 79281646.git.naveen@kernel.org Signed-off-by: Paolo Bonzini --- qapi/qom.json | 7 ++++++- target/i386/sev.h | 1 + target/i386/sev.c | 26 ++++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/qapi/qom.json b/qapi/qom.json index c55776af7d3..ad7e39aa756 100644 --- a/qapi/qom.json +++ b/qapi/qom.json @@ -1017,6 +1017,10 @@ # designated guest firmware page for measured boot with -kernel # (default: false) (since 6.2) # +# @debug-swap: enable virtualization of debug registers, +# only supported on SEV-ES and SEV-SNP guests +# (default: false) (since 11.1) +# # Features: # # @confidential-guest-reset: If present, the hypervisor supports @@ -1028,7 +1032,8 @@ 'data': { '*sev-device': 'str', '*cbitpos': 'uint32', 'reduced-phys-bits': 'uint32', - '*kernel-hashes': 'bool' }, + '*kernel-hashes': 'bool', + '*debug-swap': 'bool' }, 'features': ['confidential-guest-reset']} =20 ## diff --git a/target/i386/sev.h b/target/i386/sev.h index b84ca3ce0b6..d19a3966974 100644 --- a/target/i386/sev.h +++ b/target/i386/sev.h @@ -47,6 +47,7 @@ bool sev_snp_enabled(void); #define SEV_SNP_POLICY_DBG 0x80000 =20 #define SVM_SEV_FEAT_SNP_ACTIVE BIT(0) +#define SVM_SEV_FEAT_DEBUG_SWAP BIT(5) =20 typedef struct SevKernelLoaderContext { char *setup_data; diff --git a/target/i386/sev.c b/target/i386/sev.c index 9cdccc872a3..2103a121aa2 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -324,6 +324,11 @@ sev_set_guest_state(SevCommonState *sev_common, SevSta= te new_state) sev_common->state =3D new_state; } =20 +static bool is_sev_feature_set(SevCommonState *sev_common, uint64_t featur= e) +{ + return !!(sev_common->sev_features & feature); +} + static void sev_set_feature(SevCommonState *sev_common, uint64_t feature, = bool set) { if (set) { @@ -523,6 +528,12 @@ static int check_sev_features(SevCommonState *sev_comm= on, uint64_t sev_features, __func__); return -1; } + if (sev_features && sev_es_enabled() && !sev_snp_enabled()) { + error_setg(errp, + "%s: SEV features are not supported with SEV-ES at this= time", + __func__); + return -1; + } if (sev_features && !sev_es_enabled()) { error_setg(errp, "%s: SEV features require either SEV-ES or SEV-SNP to b= e enabled", @@ -2797,6 +2808,16 @@ static int cgs_set_guest_policy(ConfidentialGuestPol= icyType policy_type, return 0; } =20 +static bool sev_common_get_debug_swap(Object *obj, Error **errp) +{ + return is_sev_feature_set(SEV_COMMON(obj), SVM_SEV_FEAT_DEBUG_SWAP); +} + +static void sev_common_set_debug_swap(Object *obj, bool value, Error **err= p) +{ + sev_set_feature(SEV_COMMON(obj), SVM_SEV_FEAT_DEBUG_SWAP, value); +} + static void sev_common_class_init(ObjectClass *oc, const void *data) { @@ -2822,6 +2843,11 @@ sev_common_class_init(ObjectClass *oc, const void *d= ata) sev_common_set_kernel_hashes); object_class_property_set_description(oc, "kernel-hashes", "add kernel hashes to guest firmware for measured Linux boot"); + object_class_property_add_bool(oc, "debug-swap", + sev_common_get_debug_swap, + sev_common_set_debug_swap); + object_class_property_set_description(oc, "debug-swap", + "enable virtualization of debug registers"); } =20 static void --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244701; cv=none; d=zohomail.com; s=zohoarc; b=fBZSPF7JZr+yIfrsTDdiy+MqvoiWFK3RmhSSOkGNaAAobM04u6UKAUPiP4xTAuq1EOjZICfts40nTdMTLTKz5xNappoTDXylV/snvalqBwFmsAtdQKbQAnjFSQy2xSjslJLvoeon+nnJUrOgmjGD30cRZ3ob9hpzN1jQ/orUZeQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244701; h=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=ptLFXHmPh0mteELcKxHYZlguxqyO/4K7nY1fzdPX0UI=; b=ItECgDp2aubp/Tumwaxv8XlUFkHr6C9E3aikzAM8zmZtdeDhyLj/Bv5KgKNCPZA69L6JmMuKmVeOpYQ4Nh16G0cCCXtzfKKER2RnDCo/VOgcOJ67fDtQpy68iZZ5URhKW7c/GBHozNBRGxktoY4TqTg3GAHI8hSC3JHxt8fK4nU= 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 1787244701754363.344836677388; Thu, 20 Aug 2026 09:51:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5zF-00063J-VK; Thu, 20 Aug 2026 12:51: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 1wx5zB-0005nQ-PY for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:26 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx5z8-0005fV-Kj for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:25 -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-319-nRGnSyopPKWVXJh2hsVxkw-1; Thu, 20 Aug 2026 12:51:16 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-482b88653d9so80186f8f.0 for ; Thu, 20 Aug 2026 09:51:16 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482b14b80a5sm14620314f8f.24.2026.08.20.09.51.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:51:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244681; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ptLFXHmPh0mteELcKxHYZlguxqyO/4K7nY1fzdPX0UI=; b=Y5DZDpchuglWBAIhzMjpqFlU/xbhVi6tB9eI5tuIyvzFCa2yA7y6nJ2IRHZbQiKxMPZ1V8 KTgQLbpePaFZGVDX+/8Px+S4tvvVJLIODVfq094xyYKj2e7ZyF0VzqsZFrluCwtwMJG6AI ntgCb0umxM9O2y6edoND6yJ+iF04Frk= X-MC-Unique: nRGnSyopPKWVXJh2hsVxkw-1 X-Mimecast-MFC-AGG-ID: nRGnSyopPKWVXJh2hsVxkw_1787244675 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244675; x=1787849475; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=ptLFXHmPh0mteELcKxHYZlguxqyO/4K7nY1fzdPX0UI=; b=YLhUJthwrAAJa/o60dBtwc3pNXy8Jn1NgHM0Fw6uQke8dLm282FNU994Bdlg+s7nur hW9L75gvspfy1p7WjAsnx8jTcZbsVo3ZyopIJXcm+dZNniknpkLXz/20DXaUoejH8fue 5xHtaWvph6T1/pTTen2UAomPuW/u1Eugb0MBuJGF7EWijygQdxMgfKqWpPGPYj5vh7vi huCoJhPW+AIs/1Kv9O8uf8X+/oeHU0ftj1kY2vQ8R5fHfc9JSBjCgQNdegK+WGMTpR4V OnUgdLvYmTs1NJatNAJbRo8W47vQEigt7Du5EdpIoELREU+dlZIkygIaTSL8H7qHZhu/ zvyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244675; x=1787849475; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=ptLFXHmPh0mteELcKxHYZlguxqyO/4K7nY1fzdPX0UI=; b=FMNOqtWSgBrBJj0sInqvHr4ve8Dl3fJWhInK2xQ7YthbDT5Se1HvDXYRO8xx+hoJo3 u4FxCPBZza1KsBz3uHdiDIkWptYI19c1o7uOg/GzcB2PFd6uxOZBJFKeWr+sUqTx2ms8 8IlbJmouGbJluQTCkRuOjQzS00yh+mJJnFQP0vj595g8tu1m58K45VHXqH88bdb8BEuT TmCxJcpobguFkh2CDZtI4EgZGEWSGs9hq7BgX2xGIl5uFTbo3D0TRHRRBRvVMVpRm2Ri pPI29iLUbkt6FeRCmmD1WdZedilxaPpMO9GoHeQmsImfh7877qAdg+rAPrrM1BudbxmG NocQ== X-Gm-Message-State: AFuF++lo/iTgOfVXw+3+uGXc8hdWZasILaGYdVXQWp/zAU4RfhkE+mhS 240cbhVTbm9GUmn69Rs7q+ct/qE9lh9e2VnzF/ra+PKuPaujooJ3j8x3ikMziMCJu7tyi6JGxHe 7zcgcBjU51ubmYELEgsBod2NxSg+iZTy6LCd7hKnlV5K1E/hCN8zspkVUmPJg3zuRjmpEY3JHCm x5FvBXhUSWllO8/H53Aoovgo5uRuIlEzcqRxM1EhwC X-Gm-Gg: AR+sD12XHsaKCCB4ztp1YVk1b1sLAIZ2YnVFh5oFFWx58K5KKCu3gsk5tgSWHU15wMY FmD0tV8j6RG5laRiB0Nle7lVis86XIagSR9YfZHn8pM/0UFJjSXhVGV0pkRSvCE5SAFOJ3H2Zmn epZLy8bFYgMIMBgFj6VhjUj5JKkuA1lhB0BM3ZOQ/txw31290NsV7QRapQlT0TAnWM18mgXeVkm HFM+qWU/epBrQB9lzBO/k23AVe4jdKsN3kzJZ/TZtbQsk605IAQWeDkmAzUohnggyGbIz5a8/ze 4BmKWeoHYXaAQNQkecZ3fJf0XJ3dZD37bMl26NBtS91X+HakcpgSLYwyg97Fj8o/g1KfTc6wlW/ xpyVz7g6YEbNhIJa0x8BBoPXaP99FQ6rkAT/wG6xp0DcEuZpR79FOitCelXJLQBygQLnR/1W92u HNIjI= X-Received: by 2002:a05:6000:41dc:b0:482:aa2a:52f6 with SMTP id ffacd0b85a97d-482c0b41f95mr57984f8f.1.1787244675063; Thu, 20 Aug 2026 09:51:15 -0700 (PDT) X-Received: by 2002:a05:6000:41dc:b0:482:aa2a:52f6 with SMTP id ffacd0b85a97d-482c0b41f95mr57899f8f.1.1787244674640; Thu, 20 Aug 2026 09:51:14 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: "Naveen N Rao (AMD)" , Tom Lendacky , Ketan Chaturvedi , Nikunj A Dadhania Subject: [PULL 26/53] target/i386: SEV: Add support for enabling Secure TSC SEV feature Date: Thu, 20 Aug 2026 18:49:29 +0200 Message-ID: <20260820164957.1895963-27-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787244703614158500 Content-Type: text/plain; charset="utf-8" From: "Naveen N Rao (AMD)" Add support for enabling Secure TSC VMSA SEV feature in SEV-SNP guests through a new "secure-tsc" boolean property on SEV-SNP guest objects. By default, KVM uses the host TSC frequency for Secure TSC. Sample command-line: -machine q35,confidential-guest-support=3Dsev0 \ -object sev-snp-guest,id=3Dsev0,cbitpos=3D51,reduced-phys-bits=3D1,secure= -tsc=3Don Reviewed-by: Tom Lendacky Co-developed-by: Ketan Chaturvedi Signed-off-by: Ketan Chaturvedi Co-developed-by: Nikunj A Dadhania Signed-off-by: Nikunj A Dadhania Signed-off-by: Naveen N Rao (AMD) Link: https://lore.kernel.org/r/9f58b92a173f319b3ef725f5ed8a2a173eed55b1.17= 79281646.git.naveen@kernel.org Signed-off-by: Paolo Bonzini --- qapi/qom.json | 6 +++++- target/i386/sev.h | 1 + target/i386/sev.c | 13 +++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/qapi/qom.json b/qapi/qom.json index ad7e39aa756..4732fa89751 100644 --- a/qapi/qom.json +++ b/qapi/qom.json @@ -1113,6 +1113,9 @@ # firmware. Set this to true to disable the use of VCEK. # (default: false) (since: 9.1) # +# @secure-tsc: enable Secure TSC +# (default: false) (since 11.1) +# # Since: 9.1 ## { 'struct': 'SevSnpGuestProperties', @@ -1124,7 +1127,8 @@ '*id-auth': 'str', '*author-key-enabled': 'bool', '*host-data': 'str', - '*vcek-disabled': 'bool' } } + '*vcek-disabled': 'bool', + '*secure-tsc': 'bool' } } =20 ## # @TdxGuestProperties: diff --git a/target/i386/sev.h b/target/i386/sev.h index d19a3966974..7725f92e195 100644 --- a/target/i386/sev.h +++ b/target/i386/sev.h @@ -48,6 +48,7 @@ bool sev_snp_enabled(void); =20 #define SVM_SEV_FEAT_SNP_ACTIVE BIT(0) #define SVM_SEV_FEAT_DEBUG_SWAP BIT(5) +#define SVM_SEV_FEAT_SECURE_TSC BIT(9) =20 typedef struct SevKernelLoaderContext { char *setup_data; diff --git a/target/i386/sev.c b/target/i386/sev.c index 2103a121aa2..fdfeb604f6c 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -3212,6 +3212,16 @@ sev_snp_guest_set_host_data(Object *obj, const char = *value, Error **errp) memcpy(finish->host_data, blob, len); } =20 +static bool sev_snp_guest_get_secure_tsc(Object *obj, Error **errp) +{ + return is_sev_feature_set(SEV_COMMON(obj), SVM_SEV_FEAT_SECURE_TSC); +} + +static void sev_snp_guest_set_secure_tsc(Object *obj, bool value, Error **= errp) +{ + sev_set_feature(SEV_COMMON(obj), SVM_SEV_FEAT_SECURE_TSC, value); +} + static void sev_snp_guest_class_init(ObjectClass *oc, const void *data) { @@ -3247,6 +3257,9 @@ sev_snp_guest_class_init(ObjectClass *oc, const void = *data) object_class_property_add_str(oc, "host-data", sev_snp_guest_get_host_data, sev_snp_guest_set_host_data); + object_class_property_add_bool(oc, "secure-tsc", + sev_snp_guest_get_secure_tsc, + sev_snp_guest_set_secure_tsc); } =20 static void --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244847; cv=none; d=zohomail.com; s=zohoarc; b=ABiY4oR2KHC7fRLfls35nNbJ2IetSbW3pLpvj+xS+uVNESmlltiITooSXmVnX0LouXmvQ1hWix99l2LAKF5olFZo8Ym+8SeKWeXNlVUSZ+2C9gZRe0DnKstRCWdUz3R3Y4yCkogpWeYqnLL1016Y3zHE4ru3twBXPQCy7W/8j5U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244847; h=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=GHMjxFzNA661zOFOpV7Ud+oCkAP1toVbytmTYNQiqSY=; b=Q2a7TlthXsb1V0iGFb2mwp128nD7XLoesc3K41levEC4lHiiLS+TxfaqnBnXJXC9BM2AJzcekxWjkTUAKdnAd/5zCBsgNTG3YkHlkMvljmbX0MZeH/EAttLmTnzD/07Kxd+Q6YxOnpAxo2cJ6/gZ+oDoYK7InVFTPZo+Ko6L1QY= 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 1787244847192194.87778691246615; Thu, 20 Aug 2026 09:54:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5zG-0006Dj-Pb; Thu, 20 Aug 2026 12:51: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 1wx5zA-0005kU-ME for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:26 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx5z8-0005fZ-Ka for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51: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-135-bh_sAZZtNEWy9FdJWRUDfA-1; Thu, 20 Aug 2026 12:51:20 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-47f8398ed9fso103723f8f.0 for ; Thu, 20 Aug 2026 09:51:20 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482b145153fsm14254951f8f.12.2026.08.20.09.51.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:51:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244681; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=GHMjxFzNA661zOFOpV7Ud+oCkAP1toVbytmTYNQiqSY=; b=B4ZCGFPwThZb1QihjakoMfnbVlhyqdBefuwZGlLQWbpRIw8L/j9DgnIRUPonXfUZXmbbCf gBDtvIzK90EfTa7SaypyquplM8bFm16RNTBt3u/pjEu+VqKDC8eEVvq1WT7y9U+YvASBWE gLZKkrJegIJ2xWEWbrD70VuCTQ0eeMs= X-MC-Unique: bh_sAZZtNEWy9FdJWRUDfA-1 X-Mimecast-MFC-AGG-ID: bh_sAZZtNEWy9FdJWRUDfA_1787244679 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244679; x=1787849479; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=GHMjxFzNA661zOFOpV7Ud+oCkAP1toVbytmTYNQiqSY=; b=QIHbmJLEvuXaELf/Rq5YA2+v/+rEBJXMbIbivVYPhJtfsi7TgE/v4DCfbr4IUgruNL OicHZ5Bk1nBY6dYoWcO6g7Ayk4UO9XF7mD5AOXzyvKq5phIL5A8ok/GtZMrID7xJM0pw 3mTsoZnm9UttHBkblXf+yz+CEIIPMLQ1brMUAtW3P0v8/iAL+fUF84varyvQUq+1a0Qb uxeRClN9SXyMTTNdZkC6vaxfos0vu21iWnKcsLCjdFWi+p8VKx9PfmNkLTBrlRG/Snjh iGe7DNwpeynI85lRVsL/xDqvtSOtn4N/azDq7cj/nLbsyhfaRW/ADDd2p7Byp+97ODxb PnkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244679; x=1787849479; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=GHMjxFzNA661zOFOpV7Ud+oCkAP1toVbytmTYNQiqSY=; b=pdLFJ+OnxvyRoSotPMoWHn6PcZJs7O3xo1DhuR83p2NN+bCwkv6rNNKDB1R5Yl0aZ1 c46N8izN5C81zPdClcfIRy/XEVjQ6OVKJzuy1Hp3FDP2+KmgUZ33+o9hj37EeSG9lU+j uuPt/emQoNMh2INzgjY7cgFqm/5DMm9Rr0Svl+THEEegJ1NHkE7q+MydjlnXHygT6aku xr/meRMd7Od51Mm0cRfmLq+atE27r4iYsjlQymPneC8ZUDLy1st40PJ4FY3BoWaAy2p6 plcTYuLo4Vj9Dk8wvqpY8emEUJ+ETbdfbaZTo1BRq85dieOi8J78n/F2Q3z+LSsjqdlK XXpw== X-Gm-Message-State: AFuF++nSwlnC/bQpID3pFdaub9uGlvAR7fHme0OcOV4kLOSjBTg+U3um YKlJ3zxPcx00qU/hvM5kfOsCVI2NYY3nutWbsV6yvaywIKFEH6W5+T8ljJuNeE1kshCNh/YyyFB 7OXl/HLUcZqp8tVRuftkTdl/mXlxA5xNZCiF0SxcfyNcGCFnHJzy0VKMZOcfxivZUz6HBfmjfvG 6qcGJRVbIXAJuqikXue8X9pncy3grGi7agGI04bDFC X-Gm-Gg: AR+sD10VC6AAlTDcxjb/9R58vJYpEK4PWv6MnwUhtCS5Z4c3EbrjXnEDkQrgFzaJ1ZL utrJvju/dxb2bi93LaJCEC13LYoyKUGUsIKupYlE/c5wbAtU+S5FVysCzNxtLbuukNNc/Iw11w9 n58O70tIHrhHLJT2YTXfSVbLegmTR0Lna5kUa/FWl/xxUfdEhBpTlfVWXSVkKLau8NmCbpibdiC EOVDRFAmFbE5/Zf2PKWxy9OTjyeV8YXoQy0yBStio0IMfGtnOIccHPk8KTqvaX94n9YgvFxRQw/ enOfwm0QADFKBWzz9pprlSi1Ef57Eyo9kgL/bJ/zRH6nLCOgZh3cuNtMzWIocoeh7tQfjY1LQ+y F1jik/nmjwcclbjx2nQHjj3Ga/kmr/G/p8ojMRkw6vxGtFNZ51VaP0nY6UrlG4WQw//4YgGgcjz st7/U= X-Received: by 2002:a05:6000:41f6:b0:47d:eedb:ee62 with SMTP id ffacd0b85a97d-482b1fd3b69mr28864596f8f.14.1787244678947; Thu, 20 Aug 2026 09:51:18 -0700 (PDT) X-Received: by 2002:a05:6000:41f6:b0:47d:eedb:ee62 with SMTP id ffacd0b85a97d-482b1fd3b69mr28864484f8f.14.1787244678468; Thu, 20 Aug 2026 09:51:18 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: "Naveen N Rao (AMD)" , Ketan Chaturvedi , Nikunj A Dadhania Subject: [PULL 27/53] target/i386: SEV: Add support for setting TSC frequency for Secure TSC Date: Thu, 20 Aug 2026 18:49:30 +0200 Message-ID: <20260820164957.1895963-28-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787244848272158500 Content-Type: text/plain; charset="utf-8" From: "Naveen N Rao (AMD)" Add support for configuring the TSC frequency when Secure TSC is enabled in SEV-SNP guests through a new "tsc-frequency" property on SEV-SNP guest objects, similar to the vCPU-specific property used by regular guests and TDX. A new property is needed since SEV-SNP guests require the TSC frequency to be specified during early SNP_LAUNCH_START command before any vCPUs are created. The user-provided TSC frequency is set through KVM_SET_TSC_KHZ before issuing KVM_SEV_SNP_LAUNCH_START. Attempts to set TSC frequency on both the SEV_SNP object and the cpu object result in an error from KVM (on the vCPU ioctl), so do not add separate checks for the same. Sample command-line: -machine q35,confidential-guest-support=3Dsev0 \ -object sev-snp-guest,id=3Dsev0,cbitpos=3D51,reduced-phys-bits=3D1,secure= -tsc=3Don,tsc-frequency=3D2500000000 Co-developed-by: Ketan Chaturvedi Signed-off-by: Ketan Chaturvedi Co-developed-by: Nikunj A Dadhania Signed-off-by: Nikunj A Dadhania Signed-off-by: Naveen N Rao (AMD) Link: https://lore.kernel.org/r/af688610978f213a456a7753e1d9fe7d3a51e80a.17= 79281646.git.naveen@kernel.org Signed-off-by: Paolo Bonzini --- qapi/qom.json | 6 +++++- target/i386/sev.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/qapi/qom.json b/qapi/qom.json index 4732fa89751..4a9b7f90884 100644 --- a/qapi/qom.json +++ b/qapi/qom.json @@ -1116,6 +1116,9 @@ # @secure-tsc: enable Secure TSC # (default: false) (since 11.1) # +# @tsc-frequency: set secure TSC frequency. Only valid if Secure TSC +# is enabled (default: zero) (since 11.1) +# # Since: 9.1 ## { 'struct': 'SevSnpGuestProperties', @@ -1128,7 +1131,8 @@ '*author-key-enabled': 'bool', '*host-data': 'str', '*vcek-disabled': 'bool', - '*secure-tsc': 'bool' } } + '*secure-tsc': 'bool', + '*tsc-frequency': 'uint32' } } =20 ## # @TdxGuestProperties: diff --git a/target/i386/sev.c b/target/i386/sev.c index fdfeb604f6c..ae9c85af131 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -183,6 +183,7 @@ struct SevSnpGuestState { char *id_auth_base64; uint8_t *id_auth; char *host_data; + uint32_t tsc_khz; =20 struct kvm_sev_snp_launch_start kvm_start_conf; struct kvm_sev_snp_launch_finish kvm_finish_conf; @@ -547,6 +548,13 @@ static int check_sev_features(SevCommonState *sev_comm= on, uint64_t sev_features, __func__, sev_features, sev_common->supported_sev_featu= res); return -1; } + if (sev_snp_enabled() && SEV_SNP_GUEST(sev_common)->tsc_khz && + !(sev_features & SVM_SEV_FEAT_SECURE_TSC)) { + error_setg(errp, + "%s: TSC frequency can only be set if Secure TSC is ena= bled", + __func__); + return -1; + } return 0; } =20 @@ -1095,6 +1103,19 @@ sev_snp_launch_start(SevCommonState *sev_common) return 1; } =20 + if (is_sev_feature_set(sev_common, SVM_SEV_FEAT_SECURE_TSC) && + sev_snp_guest->tsc_khz) { + rc =3D -EINVAL; + if (kvm_check_extension(kvm_state, KVM_CAP_VM_TSC_CONTROL)) { + rc =3D kvm_vm_ioctl(kvm_state, KVM_SET_TSC_KHZ, sev_snp_guest-= >tsc_khz); + } + if (rc < 0) { + error_report("%s: Unable to set Secure TSC frequency to %u kHz= ret=3D%d", + __func__, sev_snp_guest->tsc_khz, rc); + return 1; + } + } + rc =3D sev_ioctl(sev_common->sev_fd, KVM_SEV_SNP_LAUNCH_START, start, &fw_error); if (rc < 0) { @@ -3222,6 +3243,28 @@ static void sev_snp_guest_set_secure_tsc(Object *obj= , bool value, Error **errp) sev_set_feature(SEV_COMMON(obj), SVM_SEV_FEAT_SECURE_TSC, value); } =20 +static void +sev_snp_guest_get_tsc_frequency(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + uint32_t value =3D SEV_SNP_GUEST(obj)->tsc_khz * 1000; + + visit_type_uint32(v, name, &value, errp); +} + +static void +sev_snp_guest_set_tsc_frequency(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + uint32_t value; + + if (!visit_type_uint32(v, name, &value, errp)) { + return; + } + + SEV_SNP_GUEST(obj)->tsc_khz =3D value / 1000; +} + static void sev_snp_guest_class_init(ObjectClass *oc, const void *data) { @@ -3260,6 +3303,9 @@ sev_snp_guest_class_init(ObjectClass *oc, const void = *data) object_class_property_add_bool(oc, "secure-tsc", sev_snp_guest_get_secure_tsc, sev_snp_guest_set_secure_tsc); + object_class_property_add(oc, "tsc-frequency", "uint32", + sev_snp_guest_get_tsc_frequency, + sev_snp_guest_set_tsc_frequency, NULL, NULL); } =20 static void --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244865; cv=none; d=zohomail.com; s=zohoarc; b=Gqb044cDOmDXedjM/qsbDE/8ns9YmqlxIbiaL7e0ywYACdOilCu07W0p+LorIBb+acNhEX85Yk/koQtxj/vE7+XxBgug9NycInjWvlmShfzW2nl6+9uIIAO2l2T197MbKDjkR3kHq3/jtbWvRAsQNGjTFcTyFV4+6sCOZfRWJf4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244865; h=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=V8uegqHxKQ/1NXEPewm6GGy0naItBS1eOwztkv4A8yU=; b=KGDpCL+jH5ClT3x9BnyR8ZKbDaoz5EKu8P/dMjOkLRCvagVyW1p1vKpVnY1+imybdahip8gTpvB81uujB9kTEJzFUHodz4T1TCVslAjliA3yp9/54T1wYIWE+SZbdNQksTb6dII+6Fjw5oNolELd9zg/bw9CGE9ydsu/f4yGNF4= 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 1787244865821468.8794235688749; Thu, 20 Aug 2026 09:54:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5zL-0006ns-0l; Thu, 20 Aug 2026 12:51:35 -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 1wx5zC-0005oC-L4 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:28 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx5zA-0005fi-EJ for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:26 -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-379-pZ28aLjvPgmIkM87DYdi8Q-1; Thu, 20 Aug 2026 12:51:21 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-47f835ac1aeso66888f8f.3 for ; Thu, 20 Aug 2026 09:51:21 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482bab42f8esm6390603f8f.28.2026.08.20.09.51.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:51:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244683; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=V8uegqHxKQ/1NXEPewm6GGy0naItBS1eOwztkv4A8yU=; b=HqB8plUAGXAaTBmG1NJ73rsYeMSOgtoXVu8OMWm/nrnaGzHxO9K4XUzKlIkq1QyH4Mn5bj 3yVuMdk7DaRPxXpCEIoZlAhZH3JydfZUKYWgZJxEnMk6WVhPsWATH5BgEFxJpQcUeMlJmC 32NpCV+rn/hMZc/p9L7a4N6MR8CpMMc= X-MC-Unique: pZ28aLjvPgmIkM87DYdi8Q-1 X-Mimecast-MFC-AGG-ID: pZ28aLjvPgmIkM87DYdi8Q_1787244680 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244680; x=1787849480; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=V8uegqHxKQ/1NXEPewm6GGy0naItBS1eOwztkv4A8yU=; b=Dftz57JgHdD07CHKXwNow1g9OyHUntvLt0jVfmto3Mp12gekLuNxZhiNSfEW9+0YSp tvCzHbsVyv/oL14WcTAU+WF5xbSrsuElCgHJFKV1qpDuJ3qjHgKIELYSjZFjmMF7uiQl t0cYdrW/32IkIu0Rp2FUG+kqFenIOag6dRYM90uOSrPjRcV/2+QPfu956onNS5uKJGbc miAE/F1Y3lOhHhZvsGQj0SckXZY+/7vKwbhYR/aDGKO+7wGIZSTZCvWI58ZEhdv90v4N tLqjZ22mmPEbNDBN84bYs25v3lWpcdjFa5hDP3+0XsSNcNM1dCdodkWqHlYNJSfkwtAs X9NA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244680; x=1787849480; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=V8uegqHxKQ/1NXEPewm6GGy0naItBS1eOwztkv4A8yU=; b=X+CuXcGLVsCVmK9RuKVV6wYigS6QXMvMVIi83YxJwUgL2EM0H3U58h3C3WFSEHWHA5 UyBVqThcInZxKUh8NYvQ7UZBXieZrof2e8OJ1EKXak+GR1rz8ikLVf/X/74g9iojZhfw OuLqdCu7cVU6LVwwQ3v10ZHr9AEtvhDG15re6o7yR04NfZT3/+W6JjnGCbILRhgkuT06 77c+GGxv0e6GhK6ReyAfIM3lpHsdoxqMpVO4KlMng7Cb+CphPnBN8R5NYPmlqKBqDwZP bjrHeTZPTQCFzKjcnIlALWrHrCC3m3xaQYNt12C4COpYghYe65LvgAmkJMBKI679YXIY 8oBA== X-Gm-Message-State: AFuF++nNe77xYEDFNTj+9kaNFyndBphIpSk8mR4aJiobwzPv4DfpwhF7 U3BoSN1qXKe3P9Rq2H1hbLAwwIQJYkkga557M/PavUeiw5xDieYWtQoivD3sbzKhUTfiuSd/a9g RmnA5lSL1Z5Ib7uIRgr2EgTAhZMguTZGaa9/4fCdC7gFRYZvACUSizPEjinWAAV6r+uCm3wamGH +Gndfxk7UsuFeMnRmF9yCLnitTpHvpVN6Vo4AE+ePD X-Gm-Gg: AR+sD10dQXzFA0FPE2YwOEHgWJs513RegJUi6nSMbqxRZuOacLovAR2TiaJnL1mUlMG THvAUstYJ8HPHzS9r7cae3f7q6csPuSBcBMcDW0Yz0juXG6y9HCDCLTctSl+i39YdKLdpbz5BU0 KETPBizhyOmNB0alLGMoSDGIVdquzXN+hTQnQ0Taz+37NFauK7e1sw5ALR0Gd7KRGwrdOFz+79/ nWemEoEbgF/+g10cpUQ9g7AOC+MXbqU2MAoSDBG3ISpc5zbSNJ3kbbZOFJgJE5idqzd6aTtZjl9 1LdakCUAf17WeEn06y4wT2Kw6jQxxQMn88YheAxXH4mbScw4X1//UeDHipiyFwN+iMy+0lx3TIU mjDdED/ROecnbt/1hWirsBiVQf3fpgbYS0ph7OeQFs5zWmggz0V8iO7Vi4Z+HC9Q8tLTqKBh731 X9K7Q= X-Received: by 2002:a05:6000:4b1b:b0:482:bb55:8bda with SMTP id ffacd0b85a97d-482c0b5bf64mr18882f8f.5.1787244680204; Thu, 20 Aug 2026 09:51:20 -0700 (PDT) X-Received: by 2002:a05:6000:4b1b:b0:482:bb55:8bda with SMTP id ffacd0b85a97d-482c0b5bf64mr18752f8f.5.1787244679838; Thu, 20 Aug 2026 09:51:19 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: "Naveen N Rao (AMD)" , Tom Lendacky Subject: [PULL 28/53] target/i386: SEV: Refactor check_sev_features() Date: Thu, 20 Aug 2026 18:49:31 +0200 Message-ID: <20260820164957.1895963-29-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787244866553158500 Content-Type: text/plain; charset="utf-8" From: "Naveen N Rao (AMD)" Refactor check_sev_features() to consolidate SEV-SNP checks to a single if block. This is also helpful when adding checks for future SEV features. While at it, move the comment about the checks being done outside of the function body and expand it to describe what this function does. Update error_setg() invocations to use a consistent format. No functional change intended. Suggested-by: Tom Lendacky Signed-off-by: Naveen N Rao (AMD) Link: https://lore.kernel.org/r/cae04d88adfbcdc2997e518475f3b89091adf8a9.17= 79281646.git.naveen@kernel.org Signed-off-by: Paolo Bonzini --- target/i386/sev.c | 67 +++++++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 31 deletions(-) diff --git a/target/i386/sev.c b/target/i386/sev.c index ae9c85af131..8acbb01da22 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -507,40 +507,22 @@ static void sev_apply_cpu_context(CPUState *cpu) } } =20 +/* + * Ensure SEV_FEATURES is configured for correct SEV hardware and that + * the requested features are supported. In addition, ensure feature + * dependencies are satisfied (allow tsc-frequency only if secure-tsc + * is also enabled, as an example). + */ static int check_sev_features(SevCommonState *sev_common, uint64_t sev_fea= tures, Error **errp) { - /* - * Ensure SEV_FEATURES is configured for correct SEV hardware and that - * the requested features are supported. If SEV-SNP is enabled then - * that feature must be enabled, otherwise it must be cleared. - */ - if (sev_snp_enabled() && !(sev_features & SVM_SEV_FEAT_SNP_ACTIVE)) { - error_setg( - errp, - "%s: SEV_SNP is enabled but is not enabled in VMSA sev_feature= s", - __func__); - return -1; - } else if (!sev_snp_enabled() && - (sev_features & SVM_SEV_FEAT_SNP_ACTIVE)) { - error_setg( - errp, - "%s: SEV_SNP is not enabled but is enabled in VMSA sev_feature= s", - __func__); - return -1; - } - if (sev_features && sev_es_enabled() && !sev_snp_enabled()) { - error_setg(errp, - "%s: SEV features are not supported with SEV-ES at this= time", - __func__); - return -1; - } if (sev_features && !sev_es_enabled()) { error_setg(errp, "%s: SEV features require either SEV-ES or SEV-SNP to b= e enabled", __func__); return -1; } + if (sev_features & ~sev_common->supported_sev_features) { error_setg(errp, "%s: VMSA contains unsupported sev_features: %lX, " @@ -548,13 +530,36 @@ static int check_sev_features(SevCommonState *sev_com= mon, uint64_t sev_features, __func__, sev_features, sev_common->supported_sev_featu= res); return -1; } - if (sev_snp_enabled() && SEV_SNP_GUEST(sev_common)->tsc_khz && - !(sev_features & SVM_SEV_FEAT_SECURE_TSC)) { - error_setg(errp, - "%s: TSC frequency can only be set if Secure TSC is ena= bled", - __func__); - return -1; + + if (sev_snp_enabled()) { + if (!(sev_features & SVM_SEV_FEAT_SNP_ACTIVE)) { + error_setg(errp, + "%s: SEV_SNP is enabled but is not enabled in VMSA = sev_features", + __func__); + return -1; + } + if (SEV_SNP_GUEST(sev_common)->tsc_khz && + !(sev_features & SVM_SEV_FEAT_SECURE_TSC)) { + error_setg(errp, + "%s: TSC frequency can only be set if Secure TSC is= enabled", + __func__); + return -1; + } + } else { + if (sev_features && sev_es_enabled()) { + error_setg(errp, + "%s: SEV features are not supported with SEV-ES at = this time", + __func__); + return -1; + } + if (sev_features & SVM_SEV_FEAT_SNP_ACTIVE) { + error_setg(errp, + "%s: SEV_SNP is not enabled but is enabled in VMSA = sev_features", + __func__); + return -1; + } } + return 0; } =20 --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244898; cv=none; d=zohomail.com; s=zohoarc; b=I5JoRVBMr24GIlgIjlZv//I6a05PQggvapySEPTHUc6DANwRi130OHl4C7jgUnBAjHHsjm9JxOCZcLT5csfbgzXTmaX52u5CVtJ7u7D89hObfKXgC/MMkCLe9TqZZDwnKg+zkerKRF4n9oQOhxR1FdQSA+5dFGg1m2EyTwyz7rs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244898; 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=F2guuM1wTp6iRTx0Z7TJIxxbr09Xo6dPOlmtCxIZch4=; b=CMQyCoGWc3k40fhwDmA7hKldgYixjBvW+hwc2o5woVtWf8SDXY50veeKxsktLbFaGZ6n147yjeUd8fFgMdqhV0kNmfmxRMsOCc/4LOPBrUNbsm+QQdtLx857udqd3q7IrUd+dGltTTIFS6S5qA18WkrE7v6UecYzJt3yaBUMJ/I= 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 1787244898460259.498060745046; Thu, 20 Aug 2026 09:54:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5zM-000728-PV; Thu, 20 Aug 2026 12:51: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 1wx5zJ-0006aQ-0r for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:33 -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 1wx5zF-0005gW-V6 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:32 -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-278-JjTLlr3-PFq4IoKAbIv6kA-1; Thu, 20 Aug 2026 12:51:26 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-49564d4b849so123935e9.3 for ; Thu, 20 Aug 2026 09:51:25 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499aa0fda98sm235869655e9.1.2026.08.20.09.51.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:51:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244688; 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=F2guuM1wTp6iRTx0Z7TJIxxbr09Xo6dPOlmtCxIZch4=; b=JxHDwhi9tbUwFEnlExLXOg8Ve/QglcUnAAEDzQqHT0CS7PP6QE2GiF4pn/zoQwJkP3NqAQ Xb9/AGvXo2f99YXZObgUQXrF7i7RwwhCKitsc+SxYDyqFkIHFVWYkmDvVaiVJNl7Cd1kcp Tcq6VNFkJuaIFYeYpgpvU7d5LnqXfy4= X-MC-Unique: JjTLlr3-PFq4IoKAbIv6kA-1 X-Mimecast-MFC-AGG-ID: JjTLlr3-PFq4IoKAbIv6kA_1787244685 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244685; x=1787849485; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=F2guuM1wTp6iRTx0Z7TJIxxbr09Xo6dPOlmtCxIZch4=; b=i/SwFbXUCU29XZuOIQgeeQSxhu633+94zRaJGdJ++f9MENDgcArWY9Kxhw0AFh5J12 ifDMNdqX/11HJIguhZCASV0AvJQAbAX+2+kpt3URKT+zyZf2P6K4er857iVC2cXIxeOp z4jIB9OBxzFfyb2LjCnK2CzAWn54XmXMZ29UF3YIYnz2v/k9lO44H/xh5rsSqUP27lMS /KYWsqHEXrAEtjjSCWNmlOvAMMWD1SkpSmpHZUJjLqC7o4BVMGzefey90evAZuBk+QZU U/tK+b4nCgWzCsMO5VRdl4L/WjjZt1ovU4b6lsr7cH5f4+ArsYQygVnPUC+tsudBk5aK U9rg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244685; x=1787849485; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=F2guuM1wTp6iRTx0Z7TJIxxbr09Xo6dPOlmtCxIZch4=; b=JBs+4IAGhJp7wG+zSs8pR3akOuCtpXqv7S4rKkOq73EmTYW9qnjhcUA0giJfaJ770h 9XqZlObcR43LefoZnMozuZ28U+NzS7t0kpO7a2obRiiiAgH/P0IrXca8uW5uYSZ1Xvhs pZRMFo4y2gOZpfYwMXqNpoAaZq/c+QsQtMdAdY3jwy8k4xfjFI0u5H112ftRy/o6rx0V QZXNoEsPJge5f80ugeEeGUABA0Alf8zF7l+fzvffTLZEnzbVKsMsUZYzAvEoEIvDQevF sIAjiSxZ7ccT482Z0e4kI1X/meXOXsuD9wG8CZH4kW+EgFi/0lPR4tmDscLDvpn4Bkxl wkaA== X-Gm-Message-State: AOJu0YycN37kONDfO9DutMKkKyUCXHL88LgvCspBNgxO04OeunZnIrvP EM59jNzzFGROtZH0kevsyT92OzsKtlK1qLZC6RrpooozpnKDaQNgA6oOVrKPVFJj13kk0FX1oJO LZEmVqSbJ+y/OAu+WpMKo6nU4wBrP0ll3d8R3gJFrno7OjAisJC4lL+zOSiNHsW5JL+IU+3DbBk SMQkEpe35kEAKu8Ew2K6kBpKGuqtvMwb+pYmSGNO2S X-Gm-Gg: AR+sD12YMmn7R9kWTc1aB6H73X8oKTPcfL+l/ZS6fw7ANT/aFRHpO2QhrD9KaIHq86Y DNAduuAdrIwayWcn/w+KYPi4AK0uGPKcrnD0pTbKKCgURXbjxfBCWm7NQxgQbzzj38Q8Hf/2P+j JXOkDXy9FK4Yv/q4SfKscuRvWtmuenTxNqum1+Rwzr/QL/OM8kOn0t50aBkpQhae3yFY4JKYuNX IV6sI2sTQFrJkP7e5RdJwEskcDZv1WNgLSVVAbav0uy79jh7clR0eS7VUBd0QCAfBK+Y+/hyo0G zpVlQeto5hkxcPiKlu9msHSn6VukA3uzzxTTwItdWONtwE3XQcSlbJffrUWKYuJowN+g6geLLR4 enT+juK4w/yTRT3QOtL82b0xxN0ex5V93kWxwqXSpXcPUeiRlvdVOtjhsF9NYyQDnzqxWM+vTm5 FrUPc= X-Received: by 2002:a05:600c:4f87:b0:499:5a50:b022 with SMTP id 5b1f17b1804b1-499b830d220mr3631685e9.3.1787244684581; Thu, 20 Aug 2026 09:51:24 -0700 (PDT) X-Received: by 2002:a05:600c:4f87:b0:499:5a50:b022 with SMTP id 5b1f17b1804b1-499b830d220mr3630655e9.3.1787244684047; Thu, 20 Aug 2026 09:51:24 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: "Naveen N Rao (AMD)" , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Subject: [PULL 29/53] target/i386: SEV: Remove use of __func__ Date: Thu, 20 Aug 2026 18:49:32 +0200 Message-ID: <20260820164957.1895963-30-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787244900775158500 From: "Naveen N Rao (AMD)" Remove all usages of __func__ in target/i386/sev.c to align with the general QEMU preference, and replace those with "SEV:" prefix. Suggested-by: Daniel P. Berrang=C3=A9 Signed-off-by: Naveen N Rao (AMD) Reviewed-by: Daniel P. Berrang=C3=A9 Link: https://lore.kernel.org/r/20260626070010.1955433-1-naveen@kernel.org Signed-off-by: Paolo Bonzini --- target/i386/sev.c | 155 +++++++++++++++++++++------------------------- 1 file changed, 69 insertions(+), 86 deletions(-) diff --git a/target/i386/sev.c b/target/i386/sev.c index 8acbb01da22..4d875d10ff2 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -363,8 +363,8 @@ sev_ram_block_added(RAMBlockNotifier *n, void *host, si= ze_t size, trace_kvm_memcrypt_register_region(host, max_size); r =3D kvm_vm_ioctl(kvm_state, KVM_MEMORY_ENCRYPT_REG_REGION, &range); if (r) { - error_report("%s: failed to register region (%p+%#zx) error '%s'", - __func__, host, max_size, strerror(errno)); + error_report("SEV: Failed to register region (%p+%#zx) error '%s'", + host, max_size, strerror(errno)); exit(1); } } @@ -393,8 +393,8 @@ sev_ram_block_removed(RAMBlockNotifier *n, void *host, = size_t size, trace_kvm_memcrypt_unregister_region(host, max_size); r =3D kvm_vm_ioctl(kvm_state, KVM_MEMORY_ENCRYPT_UNREG_REGION, &range); if (r) { - error_report("%s: failed to unregister region (%p+%#zx)", - __func__, host, max_size); + error_report("SEV: Failed to unregister region (%p+%#zx)", + host, max_size); } } =20 @@ -518,44 +518,39 @@ static int check_sev_features(SevCommonState *sev_com= mon, uint64_t sev_features, { if (sev_features && !sev_es_enabled()) { error_setg(errp, - "%s: SEV features require either SEV-ES or SEV-SNP to b= e enabled", - __func__); + "SEV: SEV features require either SEV-ES or SEV-SNP to = be enabled"); return -1; } =20 if (sev_features & ~sev_common->supported_sev_features) { error_setg(errp, - "%s: VMSA contains unsupported sev_features: %lX, " + "SEV: VMSA contains unsupported sev_features: %lX, " "supported features: %lX", - __func__, sev_features, sev_common->supported_sev_featu= res); + sev_features, sev_common->supported_sev_features); return -1; } =20 if (sev_snp_enabled()) { if (!(sev_features & SVM_SEV_FEAT_SNP_ACTIVE)) { error_setg(errp, - "%s: SEV_SNP is enabled but is not enabled in VMSA = sev_features", - __func__); + "SEV: SEV_SNP is enabled but is not enabled in VMSA= sev_features"); return -1; } if (SEV_SNP_GUEST(sev_common)->tsc_khz && !(sev_features & SVM_SEV_FEAT_SECURE_TSC)) { error_setg(errp, - "%s: TSC frequency can only be set if Secure TSC is= enabled", - __func__); + "SEV: TSC frequency can only be set if Secure TSC i= s enabled"); return -1; } } else { if (sev_features && sev_es_enabled()) { error_setg(errp, - "%s: SEV features are not supported with SEV-ES at = this time", - __func__); + "SEV: SEV features are not supported with SEV-ES at= this time"); return -1; } if (sev_features & SVM_SEV_FEAT_SNP_ACTIVE) { error_setg(errp, - "%s: SEV_SNP is not enabled but is enabled in VMSA = sev_features", - __func__); + "SEV: SEV_SNP is not enabled but is enabled in VMSA= sev_features"); return -1; } } @@ -578,8 +573,8 @@ static int check_vmsa_supported(SevCommonState *sev_com= mon, hwaddr gpa, */ if (gpa !=3D KVM_VMSA_GPA) { error_setg(errp, - "%s: The VMSA GPA must be %lX but is specified as %lX", - __func__, KVM_VMSA_GPA, gpa); + "SEV: The VMSA GPA must be %lX but is specified as %lX", + KVM_VMSA_GPA, gpa); return -1; } =20 @@ -634,11 +629,10 @@ static int check_vmsa_supported(SevCommonState *sev_c= ommon, hwaddr gpa, =20 if (!buffer_is_zero(&vmsa_check, sizeof(vmsa_check))) { error_setg(errp, - "%s: The VMSA contains fields that are not " + "SEV: The VMSA contains fields that are not " "synchronized with KVM. Continuing would result in " "either unpredictable guest behavior, or a " - "mismatched launch measurement.", - __func__); + "mismatched launch measurement."); return -1; } return 0; @@ -1115,8 +1109,8 @@ sev_snp_launch_start(SevCommonState *sev_common) rc =3D kvm_vm_ioctl(kvm_state, KVM_SET_TSC_KHZ, sev_snp_guest-= >tsc_khz); } if (rc < 0) { - error_report("%s: Unable to set Secure TSC frequency to %u kHz= ret=3D%d", - __func__, sev_snp_guest->tsc_khz, rc); + error_report("SEV: Unable to set Secure TSC frequency to %u kH= z ret=3D%d", + sev_snp_guest->tsc_khz, rc); return 1; } } @@ -1124,8 +1118,8 @@ sev_snp_launch_start(SevCommonState *sev_common) rc =3D sev_ioctl(sev_common->sev_fd, KVM_SEV_SNP_LAUNCH_START, start, &fw_error); if (rc < 0) { - error_report("%s: SNP_LAUNCH_START ret=3D%d fw_error=3D%d '%s'", - __func__, rc, fw_error, fw_error_to_str(fw_error)); + error_report("SEV: SNP_LAUNCH_START ret=3D%d fw_error=3D%d '%s'", + rc, fw_error, fw_error_to_str(fw_error)); return 1; } =20 @@ -1167,8 +1161,8 @@ sev_launch_start(SevCommonState *sev_common) trace_kvm_sev_launch_start(start.policy, session, dh_cert); rc =3D sev_ioctl(sev_common->sev_fd, KVM_SEV_LAUNCH_START, &start, &fw= _error); if (rc < 0) { - error_report("%s: LAUNCH_START ret=3D%d fw_error=3D%d '%s'", - __func__, ret, fw_error, fw_error_to_str(fw_error)); + error_report("SEV: LAUNCH_START ret=3D%d fw_error=3D%d '%s'", + ret, fw_error, fw_error_to_str(fw_error)); goto out; } =20 @@ -1341,7 +1335,7 @@ static int sev_launch_update_data(SevCommonState *sev= _common, hwaddr gpa, ret =3D sev_ioctl(sev_common->sev_fd, KVM_SEV_LAUNCH_UPDATE_DATA, &update, &fw_error); if (ret) { - error_setg(errp, "%s: LAUNCH_UPDATE ret=3D%d fw_error=3D%d '%s'", = __func__, + error_setg(errp, "SEV: LAUNCH_UPDATE ret=3D%d fw_error=3D%d '%s'", ret, fw_error, fw_error_to_str(fw_error)); } =20 @@ -1366,8 +1360,8 @@ sev_launch_update_vmsa(SevGuestState *sev_guest) ret =3D sev_ioctl(SEV_COMMON(sev_guest)->sev_fd, KVM_SEV_LAUNCH_UPDATE= _VMSA, NULL, &fw_error); if (ret) { - error_report("%s: LAUNCH_UPDATE_VMSA ret=3D%d fw_error=3D%d '%s'", - __func__, ret, fw_error, fw_error_to_str(fw_error)); + error_report("SEV: LAUNCH_UPDATE_VMSA ret=3D%d fw_error=3D%d '%s'", + ret, fw_error, fw_error_to_str(fw_error)); } =20 return ret; @@ -1399,8 +1393,8 @@ sev_launch_get_measure(Notifier *notifier, void *unus= ed) ret =3D sev_ioctl(sev_common->sev_fd, KVM_SEV_LAUNCH_MEASURE, &measurement, &error); if (!measurement.len) { - error_report("%s: LAUNCH_MEASURE ret=3D%d fw_error=3D%d '%s'", - __func__, ret, error, fw_error_to_str(errno)); + error_report("SEV: LAUNCH_MEASURE ret=3D%d fw_error=3D%d '%s'", + ret, error, fw_error_to_str(errno)); return; } =20 @@ -1411,8 +1405,8 @@ sev_launch_get_measure(Notifier *notifier, void *unus= ed) ret =3D sev_ioctl(sev_common->sev_fd, KVM_SEV_LAUNCH_MEASURE, &measurement, &error); if (ret) { - error_report("%s: LAUNCH_MEASURE ret=3D%d fw_error=3D%d '%s'", - __func__, ret, error, fw_error_to_str(errno)); + error_report("SEV: LAUNCH_MEASURE ret=3D%d fw_error=3D%d '%s'", + ret, error, fw_error_to_str(errno)); return; } =20 @@ -1467,8 +1461,8 @@ sev_launch_finish(SevCommonState *sev_common) ret =3D sev_ioctl(sev_common->sev_fd, KVM_SEV_LAUNCH_FINISH, 0, &error); if (ret) { - error_report("%s: LAUNCH_FINISH ret=3D%d fw_error=3D%d '%s'", - __func__, ret, error, fw_error_to_str(error)); + error_report("SEV: LAUNCH_FINISH ret=3D%d fw_error=3D%d '%s'", + ret, error, fw_error_to_str(error)); exit(1); } =20 @@ -1627,8 +1621,8 @@ snp_populate_metadata_pages(SevSnpGuestState *sev_snp, =20 hva =3D gpa2hva(&mr, desc->base, desc->len, NULL); if (!hva) { - error_report("%s: Failed to get HVA for GPA 0x%x sz 0x%x", - __func__, desc->base, desc->len); + error_report("SEV: Failed to get HVA for GPA 0x%x sz 0x%x", + desc->base, desc->len); exit(1); } =20 @@ -1644,8 +1638,8 @@ snp_populate_metadata_pages(SevSnpGuestState *sev_snp, } =20 if (ret) { - error_report("%s: Failed to add metadata page gpa 0x%x+%x type= %d", - __func__, desc->base, desc->len, desc->type); + error_report("SEV: Failed to add metadata page gpa 0x%x+%x typ= e %d", + desc->base, desc->len, desc->type); exit(1); } } @@ -1674,7 +1668,7 @@ sev_snp_launch_finish(SevCommonState *sev_common) */ metadata =3D pc_system_get_ovmf_sev_metadata_ptr(); if (metadata =3D=3D NULL) { - error_report("%s: Failed to locate SEV metadata header", __fun= c__); + error_report("SEV: SNP_LAUNCH_FINISH failed to locate SEV meta= data header"); exit(1); } =20 @@ -1812,8 +1806,7 @@ static int sev_init_supported_features(ConfidentialGu= estSupport *cgs, .addr =3D (unsigned long)&sev_common->supported_sev_features, }; if (kvm_ioctl(kvm_state, KVM_GET_DEVICE_ATTR, &attr) < 0) { - error_setg(errp, "%s: failed to query supported sev_features", - __func__); + error_setg(errp, "SEV: failed to query supported sev_features"); return -1; } if (sev_snp_enabled()) { @@ -1851,8 +1844,8 @@ static int sev_common_kvm_init(ConfidentialGuestSuppo= rt *cgs, Error **errp) * comparison against the host value accomplishes that. */ if (host_cbitpos !=3D sev_common->cbitpos) { - error_setg(errp, "%s: cbitpos check failed, host '%d' requested '%= d'", - __func__, host_cbitpos, sev_common->cbitpos); + error_setg(errp, "SEV: cbitpos check failed, host '%d' requested '= %d'", + host_cbitpos, sev_common->cbitpos); return -1; } =20 @@ -1863,9 +1856,9 @@ static int sev_common_kvm_init(ConfidentialGuestSuppo= rt *cgs, Error **errp) */ if (sev_common->reduced_phys_bits < 1 || sev_common->reduced_phys_bits > 63) { - error_setg(errp, "%s: reduced_phys_bits check failed," + error_setg(errp, "SEV: reduced_phys_bits check failed," " it should be in the range of 1 to 63, requested '%d'", - __func__, sev_common->reduced_phys_bits); + sev_common->reduced_phys_bits); return -1; } =20 @@ -1881,8 +1874,8 @@ static int sev_common_kvm_init(ConfidentialGuestSuppo= rt *cgs, Error **errp) ret =3D sev_platform_ioctl(sev_common->sev_fd, SEV_PLATFORM_STATUS, &s= tatus, &fw_error); if (ret) { - error_setg(errp, "%s: failed to get platform status ret=3D%d " - "fw_error=3D'%d: %s'", __func__, ret, fw_error, + error_setg(errp, "SEV: failed to get platform status ret=3D%d " + "fw_error=3D'%d: %s'", ret, fw_error, fw_error_to_str(fw_error)); return -1; } @@ -1892,17 +1885,15 @@ static int sev_common_kvm_init(ConfidentialGuestSup= port *cgs, Error **errp) =20 if (sev_es_enabled()) { if (!kvm_kernel_irqchip_allowed()) { - error_setg(errp, "%s: SEV-ES guests require in-kernel irqchip" - "support", __func__); + error_setg(errp, "SEV: SEV-ES guests require in-kernel irqchip= support"); return -1; } } =20 if (sev_es_enabled() && !sev_snp_enabled()) { if (!(status.flags & SEV_STATUS_FLAGS_CONFIG_ES)) { - error_setg(errp, "%s: guest policy requires SEV-ES, but " - "host SEV-ES support unavailable", - __func__); + error_setg(errp, "SEV: guest policy requires SEV-ES, but " + "host SEV-ES support unavailable"); return -1; } } @@ -1949,8 +1940,7 @@ static int sev_common_kvm_init(ConfidentialGuestSuppo= rt *cgs, Error **errp) */ if (sev_common->sev_features & ~SVM_SEV_FEAT_SNP_ACTIVE) { error_setg(errp, - "%s: SEV features can't be specified when using= IGVM files", - __func__); + "SEV: SEV features can't be specified when usin= g IGVM files"); return -1; } if (IGVM_CFG_GET_CLASS(x86machine->igvm) @@ -1974,21 +1964,20 @@ static int sev_common_kvm_init(ConfidentialGuestSup= port *cgs, Error **errp) break; } default: - error_setg(errp, "%s: host kernel does not support the requested S= EV configuration.", - __func__); + error_setg(errp, "SEV: host kernel does not support the requested = SEV configuration."); return -1; } =20 if (ret) { - error_setg(errp, "%s: failed to initialize ret=3D%d fw_error=3D%d = '%s'", - __func__, ret, fw_error, fw_error_to_str(fw_error)); + error_setg(errp, "SEV: failed to initialize ret=3D%d fw_error=3D%d= '%s'", + ret, fw_error, fw_error_to_str(fw_error)); return -1; } =20 ret =3D klass->launch_start(sev_common); =20 if (ret) { - error_setg(errp, "%s: failed to create encryption context", __func= __); + error_setg(errp, "SEV: failed to create encryption context"); return -1; } =20 @@ -2016,7 +2005,7 @@ static int sev_kvm_init(ConfidentialGuestSupport *cgs= , Error **errp) */ ret =3D ram_block_discard_disable(true); if (ret) { - error_setg(errp, "%s: cannot disable RAM discard", __func__); + error_setg(errp, "SEV: cannot disable RAM discard"); return -1; } =20 @@ -2620,8 +2609,7 @@ static int cgs_set_guest_state(hwaddr gpa, uint8_t *p= tr, uint64_t len, const struct sev_es_save_area *sa =3D (const struct sev_es_save_area *)ptr; if (len < sizeof(*sa)) { - error_setg(errp, "%s: invalid VMSA length encountered", - __func__); + error_setg(errp, "SEV: invalid VMSA length encountered"); return -1; } sev_common->sev_features =3D sa->sev_features; @@ -2630,8 +2618,8 @@ static int cgs_set_guest_state(hwaddr gpa, uint8_t *p= tr, uint64_t len, } =20 if (!sev_enabled()) { - error_setg(errp, "%s: attempt to configure guest memory, but SEV " - "is not enabled", __func__); + error_setg(errp, "SEV: attempt to configure guest memory, but SEV " + "is not enabled"); return -1; } =20 @@ -2643,9 +2631,8 @@ static int cgs_set_guest_state(hwaddr gpa, uint8_t *p= tr, uint64_t len, case CGS_PAGE_TYPE_VMSA: if (!sev_es_enabled()) { error_setg(errp, - "%s: attempt to configure initial VMSA, but SEV-ES " - "is not supported", - __func__); + "SEV: attempt to configure initial VMSA, but SEV-ES= " + "is not supported"); return -1; } if (check_vmsa_supported(sev_common, gpa, @@ -2666,9 +2653,8 @@ static int cgs_set_guest_state(hwaddr gpa, uint8_t *p= tr, uint64_t len, case CGS_PAGE_TYPE_SECRETS: if (!sev_snp_enabled()) { error_setg(errp, - "%s: attempt to configure secrets page, but SEV-SNP= " - "is not supported", - __func__); + "SEV: attempt to configure secrets page, but SEV-SN= P " + "is not supported"); return -1; } return snp_launch_update_data(gpa, ptr, len, @@ -2678,8 +2664,8 @@ static int cgs_set_guest_state(hwaddr gpa, uint8_t *p= tr, uint64_t len, if (kvm_convert_memory(gpa, len, true) < 0) { error_setg( errp, - "%s: failed to configure required memory. gpa: %lX, type: = %d", - __func__, gpa, memory_type); + "SEV: failed to configure required memory. gpa: %lX, type:= %d", + gpa, memory_type); return -1; } return 0; @@ -2687,14 +2673,13 @@ static int cgs_set_guest_state(hwaddr gpa, uint8_t = *ptr, uint64_t len, case CGS_PAGE_TYPE_CPUID: if (!sev_snp_enabled()) { error_setg(errp, - "%s: attempt to configure CPUID page, but SEV-SNP " - "is not supported", - __func__); + "SEV: attempt to configure CPUID page, but SEV-SNP " + "is not supported"); return -1; } return snp_launch_update_cpuid(gpa, ptr, len, errp); } - error_setg(errp, "%s: failed to update guest. gpa: %lX, type: %d", __f= unc__, + error_setg(errp, "SEV: failed to update guest. gpa: %lX, type: %d", gpa, memory_type); return -1; } @@ -2750,8 +2735,8 @@ static int cgs_set_guest_policy(ConfidentialGuestPoli= cyType policy_type, } =20 if (policy_type !=3D GUEST_POLICY_SEV) { - error_setg(errp, "%s: Invalid guest policy type provided for SEV: = %d", - __func__, policy_type); + error_setg(errp, "SEV: Invalid guest policy type provided for SEV:= %d", + policy_type); return -1; } /* @@ -2784,14 +2769,12 @@ static int cgs_set_guest_policy(ConfidentialGuestPo= licyType policy_type, (struct sev_snp_id_authentication *)policy_data2; =20 if (policy_data1_size !=3D KVM_SEV_SNP_ID_BLOCK_SIZE) { - error_setg(errp, "%s: Invalid SEV-SNP ID block: incorrect = size", - __func__); + error_setg(errp, "SEV: Invalid SEV-SNP ID block: incorrect= size"); return -1; } if (policy_data2_size !=3D KVM_SEV_SNP_ID_AUTH_SIZE) { error_setg(errp, - "%s: Invalid SEV-SNP ID auth block: incorrect s= ize", - __func__); + "SEV: Invalid SEV-SNP ID auth block: incorrect = size"); return -1; } assert(policy_data1 !=3D NULL); @@ -2821,8 +2804,8 @@ static int cgs_set_guest_policy(ConfidentialGuestPoli= cyType policy_type, SevGuestState *sev_guest =3D SEV_GUEST(MACHINE(qdev_get_machine())= ->cgs); /* Only the policy flags are supported for SEV and SEV-ES */ if ((policy_data1_size > 0) || (policy_data2_size > 0) || !sev_gue= st) { - error_setg(errp, "%s: An ID block/ID auth block has been provi= ded " - "but SEV-SNP is not enabled", __func__); + error_setg(errp, "SEV: An ID block/ID auth block has been prov= ided " + "but SEV-SNP is not enabled"); return -1; } =20 --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244945; cv=none; d=zohomail.com; s=zohoarc; b=klxk2VcFOvdWauNOUtMJF2liIblgcD5kx2Z9Zc/sZcddd1TEbKOKyTILJPv556MhRy2rw5GhoF6OA9yuLvWyTsGTrvm9egRzgJdxa38YM+NdEptJQfk9IDcHnL2l5vlQG3vbSBCFT+n6MW8TUfCDXQZ+T+/D/RNKPi1iausmeCs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244945; h=Content-Transfer-Encoding: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:Cc; bh=6rdHyprio2WIUkP4wRMjJtXdNaa+gjXkNn2M1xJTDrs=; b=Ma6s/crUlOrl16X3X58gvpXQ9K7fpzxjj2EpCzZS6aUneoNodmT52GbSk8s+AcJkgmSkCQUyYm1e5QBv4mWngAFIrFdxLBGf+YuWho6MQhp2wuCVP3xzemJpvUifc5e8rOBJqYfgVIl5PU10ZMusZdqsl8w9PeYs0Dlz2P/TRgA= 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 1787244945398576.6276042589348; Thu, 20 Aug 2026 09:55:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5zQ-0007B0-0a; Thu, 20 Aug 2026 12:51: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 1wx5zN-00075a-8t for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:37 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx5zL-0005hF-B1 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:37 -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-591-fXe_rogQMwesBluEnV2hMQ-1; Thu, 20 Aug 2026 12:51:27 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-47fe85684b9so94999f8f.3 for ; Thu, 20 Aug 2026 09:51:27 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482b14c45d1sm12031794f8f.30.2026.08.20.09.51.24 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:51:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244694; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6rdHyprio2WIUkP4wRMjJtXdNaa+gjXkNn2M1xJTDrs=; b=F8plh3F2txWagY1HmCbQMtDE8xWQfC9AKFJ2V1zOhJ7TZCZINFRai9eUqXZ33rXG0Rw02h IBh3Jx8L8b0DzWNieSQRKCDa6PtJOHHYhJJhbNyxqw7W/Gqsl2FUZhz2jRLSuDiMVnx3w6 XhCIy3JigYFMXPgb5p76blH+ECndgDA= X-MC-Unique: fXe_rogQMwesBluEnV2hMQ-1 X-Mimecast-MFC-AGG-ID: fXe_rogQMwesBluEnV2hMQ_1787244686 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244686; x=1787849486; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=6rdHyprio2WIUkP4wRMjJtXdNaa+gjXkNn2M1xJTDrs=; b=b6py1pHPGx5PVtVgpLXvSenaiaHFqxtBmMnEqK+rpr530+c9TUbUsh+DPik6ssHunH 3PNbwfyQ3TkrYa99xC8DCQUcA2V5ZYbRYHK8biD31K9oxrahnSg8zBihHk0/pcpwAzmd YKIsBNjhGaLhaSsaPVJIyePq7cMZ01lWovHhnqcBPN46rn16YTuthRgqqPb0MDi9aOz0 GylLXXz5MsEuTPs34122C1O2Z+Zav1RYmTJRxXGj6nsneVaC7RL+QR7F2YVsIMrSJ/B5 YScXsxGjSYQFXkeKbqPwEvU4JT3oiwaz7CdDK1sNH9o0AAXSqwDvrJfk2OoSRkQx1hGt b6TQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244686; x=1787849486; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=6rdHyprio2WIUkP4wRMjJtXdNaa+gjXkNn2M1xJTDrs=; b=fvccGXLvZ7ptCu3E2tRL8qIWhm+xo1RVUNOg7R/MmX8TwPTqW5sa4FkLcy2fybu0WK C3pt6kgItaDzBPYyLmMs/np1VUVM8pM6H1oNJoM+xbuATmV+H6IvDSm7tXmmo7SISozi Dk8Sy7t4aC2EV2wjHEa4AP43uyRog2xb2DM1D9uuvfO2A2Ybn45KCGy+5t80I/KbjnqP fTOQWofmgyvofr/1PPFOtJTDK9GighfNpKjSH4rwjL3tSMnCD10ZTX+1WechHotoFr6I ghjIBMXf9I5lhltqj11gT6s9UW9netLKj0c1kgP/dhSu9D/duk1/E52QqS/QECtHjO6l Z5Pw== X-Gm-Message-State: AFuF++nBuQnVTj0QIQcxXv8mnl3Onzv6SdUyalgNe4l2AgZPP5bXshRr ERIfadW6HukR4SU1X/Zlw5LhFIioJ8PurWnnKbxGsYn1OwTO1QL9csA+5r2+fujfBRhQLpbkIIf R61K8muqwSrKHMXrk3aPLVWRnbWbzf+bGs4M4KMhEYG9zIdVlMBNh4MgFzeWQy5xda1ON24C+Id v/AA1mK23dNz9Uf125LKUyfFdCWz1yKsB9o7ezxdQQ X-Gm-Gg: AR+sD114037fPR0jU8d4zVVt+wT2r8rqWkFU7pGHi7MMgR6pHpf0ffQFJ2AyMUJ+ggy t7FOzav4coATAve0rsi05SCD/W5PvezltSiPd8KaYnbFOUCqhN4hI1Ux+3D2wYoH7e3zQ3uxcTH E0cLdEnmnlroC6dsw3ZaUgX5NQ8uCK7/YAhjVNGvh2G3lLnUhAk1vTxLEse+Bqll4KmmGO4gmcK 2lDb3JI9BNF3RfC+gJ99Sg7u4Kt4hzUncdwV33YicwQmr0e1pVywHb1BvTgPPdmrIBp4XxHbfd8 7CCVcYKeZDbAHbOfq+zyCM+7hGy3RGupWMGJLwa9JgX6eLu7sigV4bF6VEEkRktqcFw2kpSXjVG ggm8Yk53u2wIWOioXb+DCWKMlQt6+jwZYB8gLhNRbXpxBvKXYgBuzl9fIMjoHLNKpdFqNcJA8Aj Hfrgw= X-Received: by 2002:a05:6000:22c6:b0:481:5021:33cd with SMTP id ffacd0b85a97d-482c0b5482cmr21785f8f.3.1787244686203; Thu, 20 Aug 2026 09:51:26 -0700 (PDT) X-Received: by 2002:a05:6000:22c6:b0:481:5021:33cd with SMTP id ffacd0b85a97d-482c0b5482cmr21655f8f.3.1787244685466; Thu, 20 Aug 2026 09:51:25 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 30/53] target/i386: emulate: stop torturing cc_src into carrying SF/PF Date: Thu, 20 Aug 2026 18:49:33 +0200 Message-ID: <20260820164957.1895963-31-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787244946742158500 Content-Type: text/plain; charset="utf-8" x86_flags.c encodes the flags into cc_dst and cc_src with algorithms essentially derived from Bochs; the exact details have changed but cc_dst is Bochs result and cc_src is very close to Bochs auxbits. However, using only two words is unnecessarily limiting because it splits SF/PF between the two words even though *ZF* is the real nuisance (ZF=3D1 implies SF=3DPF=3D0) and the one that commands usage of PD/SD delta bits. Within TCG, the CCMP instruction would have a similar need of efficiently encoding an arithmetic result or an EFLAGS value; it is not implemented, but there are plans (see commit message for 5dcdbd07125, "target/i386: tcg: use cout to commonize add/adc/sub/sbb cases", 2025-04-17) to use an algorithm very similar to target/i386/emulate's, but with *three* words. Then SF and PF live together in harmony, because SF can be encoded with either parity and PF does not use the high bit where SF is stored; by placing them in a third word their computation is isolated from ZF's and everything becomes simpler. In fact I'm not even sure why Bochs did it like that, and did not just give SF/PF their own home in a third word as well; the developers believe that the extra store is too expensive. I am not really sure about that, but as far as QEMU is concerned, emulation proceeds one instruction at a time so using SRC2 should actually be faster, not just easier. To convert from the output of arithmetic operations, PD and SD disappear and DST simply has to be stored in two places; to convert to RFLAGS, SF/PF are easily computed from SRC2 as if PD=3DSD=3D0; conversion to LFLAGS encodes parity in bit 0 and mixes in SF as an even-parity value with the right sign bit. Unlike TCG, there is a single meaning for all operand lengths, which corresponds to either CCMPL or CCMPQ depending on sizeof(target_ulong). So the carry-out value still needs to be split---with AF in bit 3 and CF/PO in the higher bits of the target_ulong-sized env->cc_src. This is an acceptable tradeoff for the interpreter, in order to optimize lflags_to_rflags. Signed-off-by: Paolo Bonzini --- target/i386/emulate/x86_flags.c | 65 +++++++++++++-------------------- 1 file changed, 25 insertions(+), 40 deletions(-) diff --git a/target/i386/emulate/x86_flags.c b/target/i386/emulate/x86_flag= s.c index 3c4270a14c1..c49d8bb836a 100644 --- a/target/i386/emulate/x86_flags.c +++ b/target/i386/emulate/x86_flags.c @@ -30,28 +30,24 @@ =20 =20 /* - * The algorithms here are similar to those in Bochs. After an ALU - * operation, CC_DST can be used to compute ZF, SF and PF, whereas - * CC_SRC is used to compute AF, CF and OF. In reality, SF and PF are the - * XOR of the value computed from CC_DST and the value found in bits 7 and= 2 - * of CC_SRC; this way the same logic can be used to compute the flags - * both before and after an ALU operation. + * The emulator always encodes flags in the same way as CC_OP_CCMPB + MO_T= L. + * While for arithmetic operations ZF/SF/PF are computed from the same val= ue, + * ZF=3D1 may be inconsistent with PF/SF for arbitrary RFLAGS values so CC= _SRC2 + * is used for SF and PF. CC_SRC holds a carry-out vector that is used to + * compute AF, CF and OF. * * Compared to the TCG CC_OP codes, this avoids conditionals when converti= ng * to and from the RFLAGS representation. + * + * The underlying ideas ultimately descend from Bochs, but with significant + * simplifications obtained by storing flags in three words rather than tw= o. */ =20 #define LF_SIGN_BIT (TARGET_LONG_BITS - 1) =20 -#define LF_BIT_PD (2) /* lazy Parity Delta, same bit as PF */ -#define LF_BIT_AF (3) /* lazy Adjust flag */ -#define LF_BIT_SD (7) /* lazy Sign Flag Delta, same bit as S= F */ #define LF_BIT_CF (TARGET_LONG_BITS - 1) /* lazy Carry Flag */ #define LF_BIT_PO (TARGET_LONG_BITS - 2) /* lazy Partial Overflow =3D= CF ^ OF */ =20 -#define LF_MASK_PD ((target_ulong)0x01 << LF_BIT_PD) -#define LF_MASK_AF ((target_ulong)0x01 << LF_BIT_AF) -#define LF_MASK_SD ((target_ulong)0x01 << LF_BIT_SD) #define LF_MASK_CF ((target_ulong)0x01 << LF_BIT_CF) #define LF_MASK_PO ((target_ulong)0x01 << LF_BIT_PO) =20 @@ -59,19 +55,15 @@ /* OSZAPC */ /* ******************* */ =20 -/* use carries to fill in AF, PO and CF, while ensuring PD and SD are clea= r. - * for full-word operations just clear PD and SD; for smaller operand - * sizes only keep AF in the low byte and shift the carries left to - * place PO and CF in the top two bits. +/* + * For arithmetic operations ZF/SF/PF are consistent so DST =3D=3D SRC2. + * For operations that are not full-word, keep AF in the low byte and shift + * the carries left to place PO and CF in the top two bits. */ #define SET_FLAGS_OSZAPC_SIZE(size, lf_carries, lf_result) { \ - env->cc_dst =3D (target_ulong)(int##size##_t)(lf_result); \ - target_ulong temp =3D (lf_carries); \ - if ((size) =3D=3D TARGET_LONG_BITS) { \ - temp =3D temp & ~(LF_MASK_PD | LF_MASK_SD); \ - } else { \ - temp =3D (temp & LF_MASK_AF) | (temp << (TARGET_LONG_BITS - (size)= )); \ - } \ + env->cc_dst =3D env->cc_src2 =3D (target_ulong)(int##size##_t)(lf_resu= lt); \ + target_ulong temp =3D (lf_carries) & MAKE_64BIT_MASK(0, size); \ + temp |=3D temp << (TARGET_LONG_BITS - (size)); \ env->cc_src =3D temp; \ } =20 @@ -93,13 +85,9 @@ /* same as setting OSZAPC, but preserve CF and flip PO if the old value of= CF * did not match the high bit of lf_carries. */ #define SET_FLAGS_OSZAP_SIZE(size, lf_carries, lf_result) { \ - env->cc_dst =3D (target_ulong)(int##size##_t)(lf_result); \ - target_ulong temp =3D (lf_carries); \ - if ((size) =3D=3D TARGET_LONG_BITS) { \ - temp =3D (temp & ~(LF_MASK_PD | LF_MASK_SD)); \ - } else { \ - temp =3D (temp & LF_MASK_AF) | (temp << (TARGET_LONG_BITS - (size)= )); \ - } \ + env->cc_dst =3D env->cc_src2 =3D (target_ulong)(int##size##_t)(lf_resu= lt); \ + target_ulong temp =3D (lf_carries) & MAKE_64BIT_MASK(0, size); \ + temp |=3D temp << (TARGET_LONG_BITS - (size)); \ target_ulong cf_changed =3D ((target_long)(env->cc_src ^ temp)) < 0; \ env->cc_src =3D temp ^ (cf_changed * (LF_MASK_PO | LF_MASK_CF)); \ } @@ -255,7 +243,7 @@ void SET_FLAGS_OSZAPC_LOGIC8(CPUX86State *env, uint8_t = v1, uint8_t v2, =20 static inline uint32_t get_PF(CPUX86State *env) { - return ((parity8(env->cc_dst) - 1) ^ env->cc_src) & CC_P; + return (parity8(env->cc_src2) - 1) & CC_P; } =20 static inline uint32_t get_OF(CPUX86State *env) @@ -283,8 +271,7 @@ static inline uint32_t get_ZF(CPUX86State *env) =20 static inline uint32_t get_SF(CPUX86State *env) { - return ((env->cc_dst >> (LF_SIGN_BIT - LF_BIT_SD)) ^ - env->cc_src) & CC_S; + return (target_long)env->cc_src2 < 0 ? CC_S : 0; } =20 void lflags_to_rflags(CPUX86State *env) @@ -304,16 +291,14 @@ void rflags_to_lflags(CPUX86State *env) { target_ulong cf_af, cf_xor_of; =20 - /* Leave the low byte zero so that parity is always even... */ - env->cc_dst =3D !(env->eflags & CC_Z) << 8; - - /* ... and therefore cc_src always uses opposite polarity. */ - env->cc_src =3D CC_P; - env->cc_src ^=3D env->eflags & (CC_S | CC_P); + /* compute DST and SRC2 that reconstruct ZF/SF/PF. */ + env->cc_dst =3D ~env->eflags & CC_Z; /* DST =3D 0 if ZF=3D1 */ + env->cc_src2 =3D ~env->eflags & CC_P; /* odd parity if PF=3D0 */ + env->cc_src2 ^=3D -!!(env->eflags & CC_S); =20 /* rotate right by one to move CF and AF into the carry-out positions = */ cf_af =3D env->eflags & (CC_C | CC_A); - env->cc_src |=3D ((cf_af >> 1) | (cf_af << (TARGET_LONG_BITS - 1))); + env->cc_src =3D ((cf_af >> 1) | (cf_af << (TARGET_LONG_BITS - 1))); =20 cf_xor_of =3D ((env->eflags & (CC_C | CC_O)) + (CC_O - CC_C)) & CC_O; env->cc_src |=3D -cf_xor_of & LF_MASK_PO; --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244961; cv=none; d=zohomail.com; s=zohoarc; b=lKXYnsUhvn9EuG0VaXmfiSnrLoHqRhKp9EmZ0DCU8UYpGrftAzPEnrw5lIubBScRp86I1BuhKYCT621u+3jQJQwwXDYHKwbPqjSQq+uR0m+kBz9dcHS/syMjJJFmt9DYqVb5G6X9/8PP4WiVCJ2D6Xar6/TIZ0llZN5GG2UP3MQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244961; h=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=kqq9Qg28PeFYQDhF8/CvyMcQOpgjlUe2VXm7wKnJLUs=; b=YmnRUs39U4xEbj7JRouPUUKOmi/4pZVkxxuGmHQHmkc+whnN8OMr1IoOCjYbPELPnCYMtbiY9cexhhcvDgeL0klZWaoEQVjc7Z4lCKvj2LesSbjW4RwdRsHhRnymjTvqnkcHToVCLWYHuC2Fd+hnY8SHzFDVKVFhdwQkgqqHJps= 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 1787244961566962.0459679969197; Thu, 20 Aug 2026 09:56:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5zZ-000807-CE; Thu, 20 Aug 2026 12:51: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 1wx5zW-0007lO-GK for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:46 -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 1wx5zU-0005iQ-R6 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:46 -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-516-klW7BiZ1Pu2uRmZxIuK8EQ-1; Thu, 20 Aug 2026 12:51:30 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-47f83416551so83037f8f.3 for ; Thu, 20 Aug 2026 09:51:30 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499b70bddf3sm3960275e9.1.2026.08.20.09.51.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:51:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244704; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=kqq9Qg28PeFYQDhF8/CvyMcQOpgjlUe2VXm7wKnJLUs=; b=FvoNxA59xBKncOJAPe4yypkwdC4IJF74PWhT2egvTz0pIsnysSg7Brh4lf2BnlRQaDFEJk bSR+lNP4Ca4ov4rxaFzv+/rQeaHLAB6hksjUO1CxLEHKTKDSX20kTdzb9nXOEPWF53gGBl vJR6IdnNsVWgQsLrGHSwSyiQhx4X4ZI= X-MC-Unique: klW7BiZ1Pu2uRmZxIuK8EQ-1 X-Mimecast-MFC-AGG-ID: klW7BiZ1Pu2uRmZxIuK8EQ_1787244689 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244689; x=1787849489; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=kqq9Qg28PeFYQDhF8/CvyMcQOpgjlUe2VXm7wKnJLUs=; b=hSYqyljfRiHnZm6p0c/m4nC8m4LaLotnvebtRs24x6NUyMCCmtv9G8TnxQivirf2V7 Alces08WOHvKzhjOOZJD9qQxIuqeJlxw9+vBP4u+A1I9h6OCYiWLU8dbc13hTeK0B2do GHnQualOqOsc+d3eKgnRtj93gQdmwkLSsTfGuH7QVs/kzKqsdZRUBfp8/GA4uFk0gjVL 2thOA63pF61u9roLATg0r5Fr6P9DDh5dVi7X2qcZLIT0yLM7h+cNk+i07C6cQWi3BVjX jpgSpPCqE/Z//91RIN0dnEqV43jropdyvbNjYwRgvydTYYQEjZwrSU5QpKIiarHONDLz tYUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244689; x=1787849489; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=kqq9Qg28PeFYQDhF8/CvyMcQOpgjlUe2VXm7wKnJLUs=; b=Qmjps/9tzJe3Hg57CUsuOTJmA+wd0Xc+/S9f6UUb/+QmvjcZ5bGlzKqgYW189Pqqow LruZkkQi65CpgyvoRvn/zIcq9CaQV6U3OZ13s7KXWpKPTl0edT4bwalHZ+9gxHgWfZuy q9T2Us62RMdHT2morNxEl5ViZlwc0LJKQvAHQP5D+h+iTT7/QnZjq0RrdDvbmGRgDv+Z kFQMqdKrIiWkPgtkTuXc6Yqd/IGxPvaVf6QwPzKbhB77BfKMLc4N5QChpjOvn5EFt3k/ tzA0AE64m4yj7rtes+V7I7pWzmr2218Zgkavx4PH/fFkNMdTT/cWwcr6TnKPBcV/wSU3 qOyA== X-Gm-Message-State: AOJu0YwbGDemHPDGZ/WcaPK6OhKi7WN67S9bsCkm3V9tA7qvZKTGtyJy j68MiECsZSRBlG8YFP2xSUiCATCzhowxUsEST6e9NLwOY0QfneafABMeukJTfo/w895Bb5sSvee pQcMAIT4g1KCK3s5XVgDZIYXJsqwV+RoJHOlR8oqMv2hNOIHFausIm4eL9NpgM8fDYqEjVlgNn6 i7JArDnzTgiIV5nW/MmfEOYouVzMXn6C7jpT1RkWtg X-Gm-Gg: AR+sD10OIa6CUpbMcsOvDIfZ4oZYo3iENcWFoy6a8sMJMMeJflRrjFZ1A/T/JFSPdOl pRqHVX0excW1ouzd3XevzzwUR6dR5MVL5SaFp6NRwwNwz8sV1pyWd9Efixwy4UjpwwRYiH3aof5 f1Ezhmz58ORyHTge9TI9rKX0EXEdgrXqHGn9jTFhE9/W5smu4bzEsjmNjNYy5JXh0tC9BYBGPHv qA2/UrdOTdkFS5Nkj4y+15AOtBhEUN9P0pO4v7TDBHAv1Cwt3Z8SG10S2dDEPf5LBIpU6pf+jzg xahjo4euqfLxXUcQdJThpCDPD29hIIpXTpFgMKd6/MzWU5zpG30p1VprF9iNo9Ca3GDTqcqTmaj xmpiabaUjfAYqvvawTAF4tFmgewS/geytyPoYG66a9AZckEauWGpnOr0QhGSTzSzPuiUY1ZC83w omMzM= X-Received: by 2002:a05:600c:3556:b0:495:48d7:f178 with SMTP id 5b1f17b1804b1-499b8454819mr2932305e9.11.1787244689380; Thu, 20 Aug 2026 09:51:29 -0700 (PDT) X-Received: by 2002:a05:600c:3556:b0:495:48d7:f178 with SMTP id 5b1f17b1804b1-499b8454819mr2931435e9.11.1787244688914; Thu, 20 Aug 2026 09:51:28 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Mohamed Mediouni Subject: [PULL 31/53] whpx: i386: fix xsaves enablement in legacy probing path Date: Thu, 20 Aug 2026 18:49:34 +0200 Message-ID: <20260820164957.1895963-32-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787244962888158500 Content-Type: text/plain; charset="utf-8" From: Mohamed Mediouni Without this, Linux will crash in a configuration where xsaves is expected. Signed-off-by: Mohamed Mediouni Link: https://lore.kernel.org/r/20260812082814.27217-2-mohamed@unpredictabl= e.fr Signed-off-by: Paolo Bonzini --- target/i386/whpx/whpx-cpu-legacy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/i386/whpx/whpx-cpu-legacy.c b/target/i386/whpx/whpx-cpu= -legacy.c index d341e6f4fd1..3fb5ed79e39 100644 --- a/target/i386/whpx/whpx-cpu-legacy.c +++ b/target/i386/whpx/whpx-cpu-legacy.c @@ -113,7 +113,7 @@ uint32_t whpx_get_supported_cpuid_legacy(uint32_t func,= uint32_t idx, if (idx =3D=3D 0) { eax =3D supported_xcr0; } else if (idx =3D=3D 1) { - eax &=3D CPUID_XSAVE_XSAVEOPT | CPUID_XSAVE_XGETBV1; + eax &=3D CPUID_XSAVE_XSAVEOPT | CPUID_XSAVE_XGETBV1 | CPUID_XS= AVE_XSAVES; if (!whpx_has_xsaves()) { eax &=3D ~CPUID_XSAVE_XSAVES; } --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244967; cv=none; d=zohomail.com; s=zohoarc; b=Fc9ORFKaXo/cwvnQaqTzTJeMQ9FPCU82PfaNXjcwLUarmqUg1CmRzXJGpdoIzGqFan7OeP+sJ9YMP4yyDHKbJ9ZZH78FI4PskdBBiEMxeO90MGPZqrT/ttGM1KhmNWx0Pmhnl5zkt8AuoX6CjRfok734cz4RcsaupvuTQwAZbCQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244967; h=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=nmec4Eqd7RVxYyh0QcRMr93BghItkMQNi2fRiGihobY=; b=MMZj1mOydCCMiMjbJN1M9PIpQYV2fymQIe/s234kAz3JTDSHYAynHOJDcBCwU+sZVur6j2Bdjw71YkonFKmrkJVZ75tgnx9RRTMPM4prGbqmUGm+HgCQuTeet89vwNJDZjGGw7zKoWNB4cbz3miEhHAuBQI/CDiyhXcXeYD6A3k= 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 1787244967410528.7998248987361; Thu, 20 Aug 2026 09:56:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5zU-0007Qc-Cx; Thu, 20 Aug 2026 12:51:44 -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 1wx5zR-0007JE-Lq for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:41 -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 1wx5zP-0005ha-TE for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:41 -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-526-b-dXpq78PICSfKYfN5BYcw-1; Thu, 20 Aug 2026 12:51:32 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-47f4bff865cso77165f8f.0 for ; Thu, 20 Aug 2026 09:51:31 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482b1441b0fsm13690961f8f.4.2026.08.20.09.51.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:51:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244698; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=nmec4Eqd7RVxYyh0QcRMr93BghItkMQNi2fRiGihobY=; b=XvU2N0UKxN0X8CWKc0QGSaV3O2XwRIQQPnIbVaBXrT7DZRxGAbJEQ0UuHOYT0YzMwbNWyn ioJXRJfWzkwfgwjp8/LC4cwK4XCI6vFw47FIdHhbBKwjeT34xsTdu1m5WSDHAn0CahpyE5 Rmu/d3HyYR0xgq+RSe6YuFiiP5XM3Rs= X-MC-Unique: b-dXpq78PICSfKYfN5BYcw-1 X-Mimecast-MFC-AGG-ID: b-dXpq78PICSfKYfN5BYcw_1787244691 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244691; x=1787849491; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=nmec4Eqd7RVxYyh0QcRMr93BghItkMQNi2fRiGihobY=; b=afKgrKJ08kSH1uZpDmF5upYyfzWB5mCPqcZP97EHTGfMPm7eS12Rn+0eOeIcbRX71g g3Q50w4FF/FQuIW7rnLnTahHzVfy7gerTqQh83dGgP2vRvSQlFsVzgz+4tN9DrNMmPmr aCiL4v9ZXmKn1VhxQ2jejxYZRpz4iaBihOGmx8CeB2XmAM3ZnHeXeEtEhO8CQdAc3YhV xTxQfZaRiiHzLsi7bRTCN5eNACbB6to2tx6gowrt4pMDrbL3bhbXpm8Y0kgDwn0tugkx HVt3wC4owDFMEP1jg7bn4F6JyMxTKCxzFFiOAg0lxiu0ZK2TIlGtB/nV39diGTyMs6s4 xX2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244691; x=1787849491; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=nmec4Eqd7RVxYyh0QcRMr93BghItkMQNi2fRiGihobY=; b=RR9opYZ7+/QzXrUTKKhYG5SIUr4YlEcy9iqrcSDxsqBWGScedpjazND38/gbMTXBK/ R0y654mBvoTxGVzt3HI7gIKKtVsKlNmQySgA8wMo7PIXVFGs00lgP1GDtKiqz/uOlYXD ryEf+F+YQracT4N7XT0g35Wgmov/QbQx95nPXmV0My03sqJX53moEy1z/XDYAjJ0wTJB 8pAuAHVkgBJRvQVyUqH5wA4JNtkZZwDFAK6UbMonvc3MvQ70gl84PdgdwR/465BmVJxB dAzgQenec+eyG1Jq1akXOv9WKGnOD/LC5T7VCsL3C2tCKSCi1yv41AaHhHXscaRECHqK nLMw== X-Gm-Message-State: AFuF++nmwQvB72Y9BkjjAElCeK+bYqsFhYrukPtfTztFKZBC5Fb/ugFt 1hMKS2vP2eeJwfDKVg1I4XngndgexqZtBpxA89ydPbTT3sPYlpA0/ik9J8xqAhFAwKqRsTzCCPf DJhAZjPC7dshpcRrtKvv028pmDeY5sWJ0AGwKb9YAklSlPwUGyV9B61Pb9+Cn2Att2BQ4Wvbbp1 78P42f5dm2DYTqD8Br9SbKGhhI/5IDxOgWN+0PKYhg X-Gm-Gg: AR+sD13ABv8lIK+T7E5o55bGeZXN4jKoa+RBahf3hXtwI/0veYMKmuv6TRzcJ106H3P Vg7a39IPCz53h1rB+btLH2nG5Iq+83t8mXbv56lNh8ie0eDpht86WNZkeX66NSDVnqpy4j9G4Ff JZJcFNlVYkX6PA+QuVQBqvbDrP1KJmk/6hauUCg7SwSjRzMxBTLW+4YWRPXJ8DIJG6L2kdrrtvH bqoTzhLUPs9Pk7DLH8PNy1aS2pXauvVSpxZqC5hj0sYKHHY95c7tOm2ttQqOvonGy1zLj3/+xkl ieLuTJLOiZkyF3UPUEotbHKBF5IjZQ5cIJEl+8IL5DA4UcdeXvNizg9i0Ltn/MKcV1nJ6mOK9Al 9ZVZDsi6y/bi6NvkBxhF6jqh1eN0vk1NRkwInYM6HTRVuj1llO0yqzFIrR6JXu5CLujPSWGcfo9 P/PaY= X-Received: by 2002:a05:6000:1acb:b0:47f:90a4:ff42 with SMTP id ffacd0b85a97d-482c0b5488dmr23695f8f.5.1787244690763; Thu, 20 Aug 2026 09:51:30 -0700 (PDT) X-Received: by 2002:a05:6000:1acb:b0:47f:90a4:ff42 with SMTP id ffacd0b85a97d-482c0b5488dmr23615f8f.5.1787244690367; Thu, 20 Aug 2026 09:51:30 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Mohamed Mediouni Subject: [PULL 32/53] hw/i386: fw_cfg: do not set VMX feature control on WHPX Date: Thu, 20 Aug 2026 18:49:35 +0200 Message-ID: <20260820164957.1895963-33-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787244969077158500 Content-Type: text/plain; charset="utf-8" From: Mohamed Mediouni Hyper-V doesn't allow setting this bit on build 26100. Signed-off-by: Mohamed Mediouni Link: https://lore.kernel.org/r/20260812082814.27217-3-mohamed@unpredictabl= e.fr Signed-off-by: Paolo Bonzini --- hw/i386/fw_cfg.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/hw/i386/fw_cfg.c b/hw/i386/fw_cfg.c index d422302c1c9..5903994a7cb 100644 --- a/hw/i386/fw_cfg.c +++ b/hw/i386/fw_cfg.c @@ -13,6 +13,8 @@ */ =20 #include "qemu/osdep.h" +#include "system/mshv.h" +#include "system/whpx.h" #include "system/numa.h" #include "hw/acpi/acpi.h" #include "hw/acpi/aml-build.h" @@ -182,8 +184,15 @@ void fw_cfg_build_feature_control(MachineState *ms, FW= CfgState *fw_cfg) uint64_t *val; =20 cpu_x86_cpuid(env, 1, 0, &unused, &unused, &ecx, &edx); - if (ecx & CPUID_EXT_VMX) { - feature_control_bits |=3D FEATURE_CONTROL_VMXON_ENABLED_OUTSIDE_SM= X; + + /* + * Hyper-V in 26100 disallows this bit to be set. + * Otherwise a #GP gets raised. + */ + if (!(whpx_enabled())) { + if (ecx & CPUID_EXT_VMX) { + feature_control_bits |=3D FEATURE_CONTROL_VMXON_ENABLED_OUTSID= E_SMX; + } } =20 if ((edx & (CPUID_EXT2_MCE | CPUID_EXT2_MCA)) =3D=3D --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244914; cv=none; d=zohomail.com; s=zohoarc; b=Yii3+g+eUiEO0HJWoH8Mo2Bo0rkAeQ/ZRKkpRv48EJSjokEsaG0JjFjyBNbvJZ+xVWl3ka264GC7ONc5jtXkfN8sLdclVRAYEptzBYGCCx2VZGIelN0TuTo0tVOWjs4BJPVNPf/Iv8JlB8snJHBNb1mkBPwOwJ/aEOjGVm7LSQI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244914; h=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=FzW4yeXeyJWx/8eO0YqfluhDmSC3o0/nya4t2vrCTKI=; b=bwnSNtAB1955q4feuhpe2l5921tE3MKuPNEJpFBx+wL9drn1Pvj18mnSMXytcwJPWWAIjEs6cM/MWZ4cGf2WSvB0m0Bi/3TVbD1HNPAvvwSV2xckL4TMZ/+qV4jtjPJPuhOLxeCYK4EPRoGZy3YpNl0rfnu+bhZReUCMNAnaj2I= 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 1787244914055491.756549814463; Thu, 20 Aug 2026 09:55:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5zR-0007Ij-Jt; Thu, 20 Aug 2026 12:51:41 -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 1wx5zO-0007CD-L5 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:39 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx5zN-0005hM-0f for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:38 -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-563-VPDs-nk2OgGwTnVdGUw7iQ-1; Thu, 20 Aug 2026 12:51:34 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-495474a5fbcso284495e9.1 for ; Thu, 20 Aug 2026 09:51:33 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482b14d05a6sm15330689f8f.35.2026.08.20.09.51.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:51:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244696; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=FzW4yeXeyJWx/8eO0YqfluhDmSC3o0/nya4t2vrCTKI=; b=NS2d4hYU0pkvy1yVQ0QmG86yiLtYec2uO/O8flSeisB9uzEZSQbe7k+1OltarzaEIPktGJ vTE68upQyJ55S/Y0t0eEkNsKc+JtDjEOdO343QRmihEVWBwDQI+2CUa2azu/j0hED6FjxF adG1zvUAXpeuMDCYF6zx2k4/JtbXl70= X-MC-Unique: VPDs-nk2OgGwTnVdGUw7iQ-1 X-Mimecast-MFC-AGG-ID: VPDs-nk2OgGwTnVdGUw7iQ_1787244692 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244692; x=1787849492; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=FzW4yeXeyJWx/8eO0YqfluhDmSC3o0/nya4t2vrCTKI=; b=ixavg+lkty01n6VmY2IxiLG1Cp3INM85OMxZclLnlQ7x9QV4PP9s6eB6s14zI2FUXh 55XTNUFc4Q441/VyzgH7pYau8OFySKUHOyj+Ny6i/PqaV34k7ysy8f+jRr0ihR6NUsix SFJRFHpn2DAeXleBDR6HlSuZ5FTow9DIZ7gMcYbVOrEvRWurI1lPehrUPcVQBT4qKkSl FWVBNcaxUZCk+aDqsdLc2CuFux6Ee8nkhRRn7xb3thHfZy7YB6OZsfSOncfjJ8S/Gzs8 LH0N3OHDj125vpw1kyrsdmzpJK6TXKwpy8xPDBcwiRzl6GJLl/0ebyixjz0kLyUM40ZN hUlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244692; x=1787849492; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=FzW4yeXeyJWx/8eO0YqfluhDmSC3o0/nya4t2vrCTKI=; b=LGmXZFdUNaXYw6AspFgPWep3P/6GijKEKbNiQtQ3LCOCQVJSPPpJ3kqMs8KEC/qha5 H3ri9uSXjZepnY2rUb6w/K4hVjIOZRZxqVbI4bPDu3gpTS5NHB11VVRQhPr7uZlo/R1/ kSMPz0c5W7evBINtC01Un0BFswtwagUHPh4yUZQY9335PWrjrLhQwREexiEQSmmKKav+ +OprYXp9Vn2ut4MCChPWum1MM2J6mBMAPdszod+t3yDjmZL3eVeWHof02C4WcZVgaG+k PqOB4Wq/lozp3rqVUCR7P+uxI3y4Ynt00FkNHhCXAFGRsHXR/Pr7kHUIM2z+98PK9Pdv Rjow== X-Gm-Message-State: AOJu0YxHBm90P0zhYBq2tI6R3+MyYHw5ZnVzZb6mL4bJNr9ur7Yfn0Dl HSU+k8LIU0O02U8LidI+ONKsIH0dbLimDm+pYIN5w1aT/q/PEvLim/Z0kN3HZZPPARa2+5hDlnM SOxYjTE0wnoye+HUQlF7KGp4e8wjPq4uyJNeTMQG46sLKbxAogyAnBWqZ/e8WbFyZDHGHfuQ/+r 02qGjhLJqpb3iKdRT0CGkG3iGWG3AC9p6FFGQkL0sb X-Gm-Gg: AR+sD10TFQU2vXs0Do18J3v18/TRkZL+6+xi0uwnluMbLiU7+SDhD89BaGRjt+ceTWm mY/GUl1tomL8z4T99PISrIycJsM8ETFcizH4d5yMdz1Rklep0vNiyY0H4m3Ga2fqXch17xr+OZ8 vVduo256IWjYMZ8Vxlddv08oDWyJ+cBm1LIOIwGyosXhMHfEBtKp5udBQE7OzrObYHWheXu9L2n Ie8YC5jXnVFe8RsIGsELJexeXydLy4l9JxOiHTdo3WwVpF6ai/i2eoM9JSw2232XXAoHBO/TqjE xYmx5ZvwlkpbtlWDDTIHxtjUBbQpxFfZDRS8sTa2DIZhN2Hc/OtV/Hc+GFGjTH6wKguEVka9L1m wDV1k+7SRMbrEKlM+bgDhXCRiMriVPDEsfuupE5FhiAZKZX+Er/AC2feLMUyCixQZSjXgktkL9q ADCxM= X-Received: by 2002:a05:600c:8508:b0:495:4572:21af with SMTP id 5b1f17b1804b1-499b84660ffmr3423605e9.9.1787244692546; Thu, 20 Aug 2026 09:51:32 -0700 (PDT) X-Received: by 2002:a05:600c:8508:b0:495:4572:21af with SMTP id 5b1f17b1804b1-499b84660ffmr3422555e9.9.1787244692091; Thu, 20 Aug 2026 09:51:32 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Mohamed Mediouni Subject: [PULL 33/53] whpx: i386: enable fast hypercall output Date: Thu, 20 Aug 2026 18:49:36 +0200 Message-ID: <20260820164957.1895963-34-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787244914779158500 Content-Type: text/plain; charset="utf-8" From: Mohamed Mediouni Already enabled on Arm so extending it to x86. Signed-off-by: Mohamed Mediouni Link: https://lore.kernel.org/r/20260812082814.27217-4-mohamed@unpredictabl= e.fr Signed-off-by: Paolo Bonzini --- target/i386/whpx/whpx-all.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index 634d5428219..1800ba8eb19 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -3247,6 +3247,7 @@ int whpx_accel_init(AccelState *as, MachineState *ms) =20 synthetic_features.Bank0.HypervisorPresent =3D 1; synthetic_features.Bank0.Hv1 =3D 1; + synthetic_features.Bank0.FastHypercallOutput =3D 1; synthetic_features.Bank0.AccessVpRunTimeReg =3D 1; synthetic_features.Bank0.AccessPartitionReferenceCounter =3D 1; synthetic_features.Bank0.AccessPartitionReferenceTsc =3D 1; --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244981; cv=none; d=zohomail.com; s=zohoarc; b=iozvPL9TWs382r4WhQidLlj3E6L2/L1ia4rLMKg8CO5IUi6NHxLCBbY27yrPYpTtc8XJtkjAjvku1h9HtutHGqfPmPw4UlHY1nqVwAqdVAw/SriugXbjr+1iqCKgq6hygtJ4v/6Pian1d5+CI9WA9q5+BwE4HZcqu7s1z2d8Xh0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244981; 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=9fJlPytlgaiUE+eQaKMwRmE6INF6QyKWPU9Lu5/h3MM=; b=nvobLRGvTOooMygVvL8d1CiJJn6CB1I2tvRH04sRf0t3XkVCqHSijD+8CUYOmI9RS948KFp/xrpMujPFxZcK7RlSsjmfl/NY6DsxL8pjqALjdE+Pu99PEWLQWraNcZNnshlK8U7SvSKsz2xm6lukd2ypzbk/dtXMHrmKKTIO28E= 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 1787244981601642.9879677006041; Thu, 20 Aug 2026 09:56:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5zU-0007Vu-SJ; Thu, 20 Aug 2026 12:51:44 -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 1wx5zS-0007Jr-1O for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51: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 1wx5zQ-0005hf-A1 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:41 -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-672-FjVnfsHXMbarAXgfL0PFKw-1; Thu, 20 Aug 2026 12:51:38 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-47f83450a8eso92732f8f.0 for ; Thu, 20 Aug 2026 09:51:38 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482b14b7d23sm14711535f8f.22.2026.08.20.09.51.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:51:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244699; 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=9fJlPytlgaiUE+eQaKMwRmE6INF6QyKWPU9Lu5/h3MM=; b=fk6yRcdV8UZbKYRKUO37P/LSo/AJm6pn+UdxSNZoyR38vgHcmIYmry5pxF0J7qnPm6ChvO OuETBnNIOXHe2+jg7srv2cOEqPnMGoxSY9WTtcocR93knCLJTuFn4DK/9q+Gs9wWEDIpkc 6FQNBZJBFZeSMA9fTQyQ+p4UYz6aPdM= X-MC-Unique: FjVnfsHXMbarAXgfL0PFKw-1 X-Mimecast-MFC-AGG-ID: FjVnfsHXMbarAXgfL0PFKw_1787244697 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244697; x=1787849497; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=9fJlPytlgaiUE+eQaKMwRmE6INF6QyKWPU9Lu5/h3MM=; b=suNPHJBZrZeAVVwjmd3V+eaeW0HreKdTv2hjQmT3/Jr5erl55R9ltVCfFM1mxIh2/P a8z2maZk0l5EuTR4yMyEW2KK78NNkKnMHxqXKojcx4jmf0L2dUG/VZ+03rat4irGAMoC 8IsHaSoxGVnse7QXwnlta+7mEShEaUXYvShX0DbVUt1ttd51YR8xgsw1qUwly/rpOw/Q Cm3KZZuIT/wQxm/AirjGlbPQ67Fl+H+y56+WQ6peA1pE+mst/ABz8d64jDalR7E9+whS AXbeLGxVnsKPGgRj17SvGmJI1PINm8eVXOPmPVrjIaxTivy5d8aJTr1+809MBdkqegDO NHfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244697; x=1787849497; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=9fJlPytlgaiUE+eQaKMwRmE6INF6QyKWPU9Lu5/h3MM=; b=Mus/xNOV/L85LiZQ5GK1pi0tNiyCYbTfiAjwgA0R+O4yzS5+P5QvmNbvaFHhLkiZC0 VfCCkE4ywAutSC8XrGCAJxXT+GYu+YQcBvbbQ+zWtsUzZVQ69kE/kgMdy9Be7NjYU477 gaU585NeHGiG5i/J5pYos2lymgH2lwi+2s2fN4tAcwUV2NETl8FdA0tC/pYVGxweOz1T VyNYj3m4xTfoXDXLGBdsAK+MlRWVba83rm8jqtNRrPXb+dg3X9tZQaw055b1JkENt4M/ GUiBqZrSdbYTzw8xwjZxF5z51NeMFB+usZVtuY/GLDXctxMLAG3TO8oPXWYQQv/KFYsD AUsQ== X-Gm-Message-State: AFuF++lDedVSzA26ct3s2W6qIOwj3QPJp54LtZbOl8u9eQHThdnsMGFG 8AgFgILL6ZXfFHYXmfmyH9MRw3HWU6wtC3Ih2p2Fygg/aOhRH2HAt0qQHERiuyjCdSai5zKreGL rQ6f1uiH0TkL4LIpajzOVkiTsRMsIkHMMKlqXXMPd1m5/BR+fG1YGcv4c0pCT6xwC9Uh+pvsUkb +g9ftBvp2/+5R7dUsyQUnmFFAAncJqPHXTpc2Dimt9 X-Gm-Gg: AR+sD110NgWEcPsTGf812HcCnoOrW0WiYJhULGaqf1CSqdPiQF4Zo8lvYo9FPrwWa6j QobkcPTLCjeipS8rz4j8LwdtOcUS1wd/clXvcWVO5rivl9v/DTBVZqWNVejwR05wk9b1NYRx2ml nYYYxyiviPKRb73fXjg609tY7docegos/nakSuPoAqEwXcLjYF6PqGAQwEWPGVLmBD3aEy7qJ0x 46PefKM5k2Yh/EJwaiOhXDf6yur0FYo8Ng4REY1sKPfnXjll1bYTeDi0j/avtpkGK5gRG9CVbWq 4dVuGVlHWn5ZwsH2zYkMYmYflu+VGew/rLiHoDlNJnrxRfTdIJzrHD25xrjxAS7GKeCGQ96pJUY MJXdB5GAaYvS0U/riE0mwLroz2KX9BahG4ImyCCuhY+/Er2oZ+1ba2q5yt9MpsqZVGcEEczOyDZ N1uMc= X-Received: by 2002:a05:6000:4811:b0:47f:6f9e:1e82 with SMTP id ffacd0b85a97d-482c0b4ef34mr35997f8f.9.1787244696975; Thu, 20 Aug 2026 09:51:36 -0700 (PDT) X-Received: by 2002:a05:6000:4811:b0:47f:6f9e:1e82 with SMTP id ffacd0b85a97d-482c0b4ef34mr35898f8f.9.1787244696518; Thu, 20 Aug 2026 09:51:36 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Mohamed Mediouni , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 34/53] whpx: i386: synchronise PAT too Date: Thu, 20 Aug 2026 18:49:37 +0200 Message-ID: <20260820164957.1895963-35-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787244982825158500 From: Mohamed Mediouni https://github.com/cmspam/winq-emu hints that this might be wanted for some use-cases and it's a step towards full state sync: > Linux uses PAT to mark virtio-gpu / Venus shared memory as > Write-Combining. Previously the partition's PAT was not > synchronised with the guest, so the guest's MTRR/PAT cache-type > computation could fall back to UC for memory that should be WC. Signed-off-by: Mohamed Mediouni Reviewed-by: Philippe Mathieu-Daud=C3=A9 Link: https://lore.kernel.org/r/20260812082814.27217-5-mohamed@unpredictabl= e.fr Signed-off-by: Paolo Bonzini --- target/i386/whpx/whpx-all.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index 1800ba8eb19..2739a80da36 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -115,7 +115,7 @@ static const WHV_REGISTER_NAME whpx_register_names[] = =3D { #ifdef TARGET_X86_64 WHvX64RegisterKernelGsBase, #endif - /* WHvX64RegisterPat, */ + WHvX64RegisterPat, WHvX64RegisterSysenterCs, WHvX64RegisterSysenterEip, WHvX64RegisterSysenterEsp, @@ -624,9 +624,8 @@ void whpx_set_registers(CPUState *cpu, WHPXStateLevel l= evel) assert(whpx_register_names[idx] =3D=3D WHvX64RegisterKernelGsBase); vcxt.values[idx++].Reg64 =3D env->kernelgsbase; #endif - - /* WHvX64RegisterPat - Skipped */ - + assert(whpx_register_names[idx] =3D=3D WHvX64RegisterPat); + vcxt.values[idx++].Reg64 =3D env->pat; assert(whpx_register_names[idx] =3D=3D WHvX64RegisterSysenterCs); vcxt.values[idx++].Reg64 =3D env->sysenter_cs; assert(whpx_register_names[idx] =3D=3D WHvX64RegisterSysenterEip); @@ -962,9 +961,8 @@ void whpx_get_registers(CPUState *cpu, WHPXStateLevel l= evel) assert(whpx_register_names[idx] =3D=3D WHvX64RegisterKernelGsBase); env->kernelgsbase =3D vcxt.values[idx++].Reg64; #endif - - /* WHvX64RegisterPat - Skipped */ - + assert(whpx_register_names[idx] =3D=3D WHvX64RegisterPat); + env->pat =3D vcxt.values[idx++].Reg64; assert(whpx_register_names[idx] =3D=3D WHvX64RegisterSysenterCs); env->sysenter_cs =3D vcxt.values[idx++].Reg64; assert(whpx_register_names[idx] =3D=3D WHvX64RegisterSysenterEip); --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787245002; cv=none; d=zohomail.com; s=zohoarc; b=l4XV3gKPHMmlE1MIgDJrivzzrHxzVcUCMQMIhCubLX2u6kK112DRFqBmgv5be6zM/4D+XmEZ9kf5I+ZLEqoBSSgghiqkmyQdBY4Dhta1W2Xb367eHx1MfRf7mcp/xJla0ODd1ysD7C+6Wao+PNnNCROE5V/sXvn6lR65wWprdy8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787245002; h=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=kRmNfr+tTC2oSlLCEoCwUUUkAa8qH6TzJ+zFQ3zw/Ug=; b=nRLgxpYZcSjBPKnsH9DPFNaytclmWrk3c/uP/KVbwiTMnViYk1JZWkKUM0+xm3HDjiaLfTUAzu8nMIXIjb4Ua/t4xEUnNRLTXQroD970LS0XeT5yi9tCfJxdGO6mkBcfGgks6lFXexODGrACpB4HvxgIw8/M9lEnFmKj8eefJz4= 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 1787245002301722.2572022210205; Thu, 20 Aug 2026 09:56:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5zX-0007tg-LK; Thu, 20 Aug 2026 12:51: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 1wx5zU-0007Wi-R2 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:44 -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 1wx5zT-0005iC-0J for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:44 -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-538-HaYghHiVPrqAPvpLwXTD6w-1; Thu, 20 Aug 2026 12:51:41 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-47d81cf0c4cso61362f8f.2 for ; Thu, 20 Aug 2026 09:51:39 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482b14d055dsm14262276f8f.34.2026.08.20.09.51.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:51:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244702; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=kRmNfr+tTC2oSlLCEoCwUUUkAa8qH6TzJ+zFQ3zw/Ug=; b=hIGrjnhnMggjoCWJz8d0pBsi/hY66hB3wN0KxywA9zkfxzbi6qVGx7Dj84oMjSXM0pACsp oeW0/BuCzZzQOF4SFzvBvc81LOCjL0LuywYU0ywaLhas9gGA3dHddh88gYnPp8gGmdjFh/ J3YXQw/K6RerYEhcmRPpd/EbJpNezE0= X-MC-Unique: HaYghHiVPrqAPvpLwXTD6w-1 X-Mimecast-MFC-AGG-ID: HaYghHiVPrqAPvpLwXTD6w_1787244699 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244699; x=1787849499; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=kRmNfr+tTC2oSlLCEoCwUUUkAa8qH6TzJ+zFQ3zw/Ug=; b=CKh46tJluC8jtEYX41HvkK5Tg/+T2CZD/mWQ5/jl+i8AaSyUBq9Vtw+n7O4LLwtZTm qNguT+RG6mN/KdmyCk35ChU4Vk9XIfJYSUY/f4EMmuHJtRBQ/41T1IH01w1B0Tkjhxjc oMTauz91SoShRgTpqCsa/sMENCMNj4i/oTTmPtXjRZtQaAYi1yL/bpNs8PUPjcUBDffV rs809DCaXUAd9nbHObmWsKgoUZykmeLAbKH8ZaThgZJKgQzfPO5brcHO/OLzOJTYd77N Omq6tX7oIRPUwoIAiKVDrJqsZT7qSL9gxGoV0EAIdFjBla2zXWnkrheMHEbij67paQRH +8Jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244699; x=1787849499; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=kRmNfr+tTC2oSlLCEoCwUUUkAa8qH6TzJ+zFQ3zw/Ug=; b=DjY7F4o9GK0s/tq+lMmGXBhFTGjegAqSvrBn4s2Bs6dfgtlE2mHKRdN1+jswZj16tE 0xMpY5Nxe+izAzLnjamFl6yY7SG+Xa8C5qdcyex7ywpaNPxsGLHKBhhBn40kDOZY7gsX DcreFE2zu5VYMh9H8TgPxBmj2xh8Bhftd6VS/rGyua4c3T8mUiuTCMoF9p5GAmKvN69i YLdzIWJwUOYs/40VoNFjK7m2f3bAU5yh3FL5eforGi7zX9FvnxKxXj67/6Z6MO+hLPkN JAQy9k7Gs9l89Fxk7Ps0L6Qsa8fBz5/gzWDfL5zMQXGhKUxPVO0LxN83g39LYiG2NfIo rolw== X-Gm-Message-State: AFuF++mMWtCE/U5CnY7aQQyacKIb2T4silDyetsLZn0Wsg4+PuznX4rQ 1fp6YtYj9Sav/UTduefi5+jO6hmT+127g8u6b6Bm1ZfSENzO8//AxQb1m2eQPRkXGq7NQWBJX7i HLCMHY8kRW9AAyywzAK0/IaJifA+EmOBqYjd4dMb3JUpcuO/Dbm0HHPn98D9gV6Q8tpbPniwQJ/ 4g97rf7VWck8vYXSrtl1Ya8DxmNeEo49qfZlfJEVfj X-Gm-Gg: AR+sD125JbnpO2glfs8GKp6/vz5uos4UGy9g7StkuEGpguxxy+f41CiEf7ncj/P4jg/ 3GBwtJP2BlbYUJvFD0NXDpvFTupVgYYaEjZZlhmohr3v0mNPRrZ7aMxwl8XMGy61tSYLtS8i4Ll QM/TEQja/t5epSVWwTBGv/SqvZoCUChrZDjrOUnUCa8ZmromzDZ5XpUEo5yOVLOYtt98PlmVwLM R7PrRhLIwxrmJLxMiFcm1/+9YghcyvQa+1Hs/oMC7bEWCPmgL8/zsNuHM39LXztahtT4fBVyIcg 82sE3IPtKa/h0Y3h1OwBLxQ5Fx6hKkOZ2LdN2WEyUSbXIHZJJh23x582y+562LtuNx5F3/Gi4k1 DSGMjBfNRndMf66y6q9W1TIgXr9cSvU7Wb9fNy3fMPs05/zRaOcZYPA+3AnlezN2sYqDle8co16 pOHro= X-Received: by 2002:a05:6000:2309:b0:47f:9447:62bf with SMTP id ffacd0b85a97d-482c0b54855mr25932f8f.2.1787244698720; Thu, 20 Aug 2026 09:51:38 -0700 (PDT) X-Received: by 2002:a05:6000:2309:b0:47f:9447:62bf with SMTP id ffacd0b85a97d-482c0b54855mr25867f8f.2.1787244698296; Thu, 20 Aug 2026 09:51:38 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Mohamed Mediouni Subject: [PULL 35/53] whpx: i386: work around Hyper-V FP state oddities Date: Thu, 20 Aug 2026 18:49:38 +0200 Message-ID: <20260820164957.1895963-36-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787245002939158500 Content-Type: text/plain; charset="utf-8" From: Mohamed Mediouni On Hyper-V looks like we need to fetch both the legacy and new state instead of being able to rely on xsave. Signed-off-by: Mohamed Mediouni Link: https://lore.kernel.org/r/20260812082814.27217-6-mohamed@unpredictabl= e.fr Signed-off-by: Paolo Bonzini --- target/i386/whpx/whpx-all.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index 2739a80da36..56a8b167497 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -614,9 +614,9 @@ void whpx_set_registers(CPUState *cpu, WHPXStateLevel l= evel) =20 if (whpx_is_xsave_enabled(cpu)) { whpx_set_xsave_state(cpu); - } else { - whpx_set_legacy_fp_registers(cpu, level); } + whpx_set_legacy_fp_registers(cpu, level); + /* MSRs */ assert(whpx_register_names[idx] =3D=3D WHvX64RegisterEfer); vcxt.values[idx++].Reg64 =3D env->efer; @@ -950,9 +950,8 @@ void whpx_get_registers(CPUState *cpu, WHPXStateLevel l= evel) =20 if (whpx_is_xsave_enabled(cpu)) { whpx_get_xsave_state(cpu); - } else { - whpx_get_legacy_fp_registers(cpu, level); } + whpx_get_legacy_fp_registers(cpu, level); =20 /* MSRs */ assert(whpx_register_names[idx] =3D=3D WHvX64RegisterEfer); --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787245014; cv=none; d=zohomail.com; s=zohoarc; b=bqs2kTDTxA0vV8ru0Wk1hanaTSZma+s7gjfqinHMcznQ8dtRAefk5MB+7J2c+zpjVacoQeUw79FYalMuQod1JM6DfSAGrU8C5yWFLzVswnvPTv2f7mXl0N/6RLE1sovYhLHNwre1Ce6tF+SdhRO0V8M+LHgFvwv0PeMi9r5H95w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787245014; h=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=BRCNT+/JQDCjOh4l0Hq+K+wQMPbvvsIBEH35dnWfir4=; b=i9udqvQZRMQFL6L5gLhuP1wGVvn+TT2PPrNfNDOeptWz+vLejUNJ5y/xpUpq5g4Deb0yAfjmwzovtbYLZeRRjIgbNY2k05IF74NvcdcvKyTdJXcvzNOosT0UHsOygid6vz9JiTtPIK2WKxGtBkJSy/3/ZST8fHy+rznYOtBzjQE= 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 1787245014074274.3511466524619; Thu, 20 Aug 2026 09:56:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5za-00089o-Kr; Thu, 20 Aug 2026 12:51:50 -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 1wx5zX-0007wY-QP for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:47 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx5zV-0005if-Id for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:47 -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-495-7LmZIGgkNEm4vVxJ0e77qw-1; Thu, 20 Aug 2026 12:51:43 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-49953abe51fso230115e9.1 for ; Thu, 20 Aug 2026 09:51:43 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499affa25acsm94871775e9.4.2026.08.20.09.51.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:51:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244704; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=BRCNT+/JQDCjOh4l0Hq+K+wQMPbvvsIBEH35dnWfir4=; b=hiqMWSLUEHFPpp/fPWDEWGJUGP2H4WXEGT122bjtbhGeFxm5Vn+0p0EjcGU2mO0H4yCHSq fquGFRDJzE9Wrjqr3FijPiT+yOEIln9EJGenKubUjuNpwKF7hwU2xfVno6TxrtgEYRHkwR NoFD9fL+S3hvpnSGqJA2hdFgTLVe5O4= X-MC-Unique: 7LmZIGgkNEm4vVxJ0e77qw-1 X-Mimecast-MFC-AGG-ID: 7LmZIGgkNEm4vVxJ0e77qw_1787244702 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244702; x=1787849502; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=BRCNT+/JQDCjOh4l0Hq+K+wQMPbvvsIBEH35dnWfir4=; b=D0vrOeEcIixrUyl1l6OfK4vmp5mwhqoo/MMlQcxrfLRXshz5vf7Zjg1KYXUdlaJyPb iWA5k3Gu9gx6yL9KqbS1BjJHDTJU03bOdgNFfcSdPm49grYgqg4jnp3XIW8Y2PqoxGDL 9VaGBJGF6i7EMk/GXt2o/K7fcL03dHoREXh+PSsB9dQDalgFjGlKlmUqiopccwjXWS3K S86Bd6HWWv/vbJEJypu7FkNivjkincNPdo78lXcnHQP4x6Z4Y6CJGTg05pK11nuvyHE/ qeKDs+e74Q3dSgqlF189Z4YALMWzgMWUvKdaQFTxLK5v4h9RMPtHev7icKWaOLu3DGQ6 NJbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244702; x=1787849502; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=BRCNT+/JQDCjOh4l0Hq+K+wQMPbvvsIBEH35dnWfir4=; b=hqO2UZ0iXoVDdtPFTagaaWNHg0+seRRH0D2pxIteVgIwpa3aiomrqbfd6fYjVu2a/p BDcGUSdUl5cxg5Bo4HB7JedY0JIXm2w8OQc4wEBL9YFJH8+YG4yv/yTbQeymQvI5+8Mf J2plItRtYPD+2kB9rZjUMKpE/JY93j4HhlxiIIl9oatpSxTQTedQZQJz1Av1dvYf+vGf yRx2MknP3aUSJpZE03hyHfVfnH91E8exu0+HIao/mttN3By2+rcL6gvJnm+kIkizM6ii z6b+alHp8l67D6KlbcQXoiXELwsqFMjV4SzlbgkD/G/6n3HtRjKCkhpqvAQkIOMk94of QW4w== X-Gm-Message-State: AOJu0YwP+JPWlGFvwm6AsI0FDDvQRX2kHmIZ7shtwU7zyimYWaB8tvok 88e0FP/FKIxZujs1n5CmDxQlpOCuLmIa+r8fTN2PDQWffU2pjHEZYOVuu1oMw9hviQzkNxrtNQk q9kOnlmE/iQsRWyWhYT7TgBobdn+ag6ju0Dd78MhfY9s2hCyxf1aTzvm4LZSEJ2eD3Ik2y4r41N fzOp6z+8hFtIjJ5U3IOtaaip0zaUFLxwcFts7kaChp X-Gm-Gg: AR+sD10YHEniP7caALiytMODgMO7Nb18uvinpKiBdXC1WVvdhGff0hHjGvnreTyt+a7 Ddr49Ctu45jXbADKaf2tX/lCZO8lEu5jjQyMq4zK0pGvICr5OfJm2wOeHQ+WcLNAUnxpL46CamJ wgLf6qmQUvDBukFMeh1ol6R0pZedeNAlvxBwzRfH0X6gdPlEMwtMdCI6lNbBVeHkQb3aRq5XOPe gfQRdTzqIScipWyzR7Lh66Pj2+45sA9S5EGVaGXWUDbYjR8hGUqVj6V4endPYwwIEQU2hvgcKw4 8hJ0VeSunpJu88uIilOz86Es29W/2aXoiW0NL08T0fkWx1lIVA2CyaoD+SjyYjgZx4iex4kXuxt eHQrOS2oGMyaQsZSeawCJYWgU4od0tbfYfDL8gpDBpXkLojPuucras9sw9Txfhnst3FhI4lvsES 5Lt5s= X-Received: by 2002:a05:600c:a44:b0:499:49f3:77b1 with SMTP id 5b1f17b1804b1-499b82f4158mr4354345e9.3.1787244702080; Thu, 20 Aug 2026 09:51:42 -0700 (PDT) X-Received: by 2002:a05:600c:a44:b0:499:49f3:77b1 with SMTP id 5b1f17b1804b1-499b82f4158mr4353775e9.3.1787244701652; Thu, 20 Aug 2026 09:51:41 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Mohamed Mediouni Subject: [PULL 36/53] whpx: i386: inject back db Date: Thu, 20 Aug 2026 18:49:39 +0200 Message-ID: <20260820164957.1895963-37-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787245014947158500 Content-Type: text/plain; charset="utf-8" From: Mohamed Mediouni When we get a debug exception other than int1, inject it back to the guest. Signed-off-by: Mohamed Mediouni Link: https://lore.kernel.org/r/20260812082814.27217-7-mohamed@unpredictabl= e.fr Signed-off-by: Paolo Bonzini --- target/i386/whpx/whpx-all.c | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index 56a8b167497..113f79afb9a 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -1079,6 +1079,31 @@ static void whpx_inject_back_gpf(CPUState *cpu) whpx_set_reg(cpu, WHvRegisterPendingEvent, reg); } =20 +static void whpx_inject_back_db(CPUState *cpu) +{ + WHV_VP_EXCEPTION_CONTEXT *ctx =3D &cpu->accel->exit_ctx.VpException; + WHV_REGISTER_VALUE reg =3D {}; + + if (ctx->ExceptionInfo.SoftwareException) { + /* TODO */ + warn_report("Was asked to inject software exception."); + return; + } + + if (ctx->ExceptionType !=3D EXCP01_DB) { + warn_report("Was asked to inject exception other than debug."); + return; + } + + reg.ExceptionEvent.EventPending =3D 1; + reg.ExceptionEvent.EventType =3D WHvX64PendingEventException; + reg.ExceptionEvent.DeliverErrorCode =3D ctx->ExceptionInfo.ErrorCodeVa= lid; + reg.ExceptionEvent.Vector =3D ctx->ExceptionType; + reg.ExceptionEvent.ErrorCode =3D ctx->ErrorCode; + reg.ExceptionEvent.ExceptionParameter =3D ctx->ExceptionParameter; + whpx_set_reg(cpu, WHvRegisterPendingEvent, reg); +} + static void handle_io(CPUState *env, uint16_t port, void *buffer, int direction, int size, int count) { @@ -2646,11 +2671,7 @@ int whpx_vcpu_run(CPUState *cpu) } else if ((vcpu->exit_ctx.VpException.ExceptionType =3D=3D WHvX64ExceptionTypeDebugTrapOrFault) && !cpu_single_stepping(cpu)) { - /* - * Just finished stepping over a breakpoint, but the - * gdb does not expect us to do single-stepping. - * Don't do anything special. - */ + whpx_inject_back_db(cpu); cpu->exception_index =3D EXCP_INTERRUPT; } else { /* Another exception or debug event. Report it to GDB. */ --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244915; cv=none; d=zohomail.com; s=zohoarc; b=MdDC+q4FINlwQO5SwUPzVQPIKaOOx0OuKPTiX04kpmI9LbqKYhxZ0btt57MhShKlN1UZ+KuDTcDy9+GPg5CQVE/VBJN+FxM42nOa2/zTO8Cae5KQMX3SRNlHjAf3ibjNg2W2Tp2o9C6eCRygyL0htoUEcFvRJzcuH9/JakX2ALA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244915; 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=80v1QcfBEPNNdkHRB8tf/eG9Xs79pj54gkTWeLWtnks=; b=OI3p86KFlW/h2OR7d/UKkk622kJgyqxyC+8LJ7JSJkPkkyOJIqi9be6NNLj7sAcDTSiZn7oqQP9UklK7X4VQc+A16AFtdlrwUlGrjYPfXhzuRQKcA9SwVTlM0WDWY6xGiOrD1gezLINyyv6CJBV3o6JoIecm01Bw2LEwbAIP3co= 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 1787244915910180.65643290446928; Thu, 20 Aug 2026 09:55:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5zb-0008FH-EF; Thu, 20 Aug 2026 12:51: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 1wx5zZ-00085f-On for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:49 -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 1wx5zY-0005k0-3h for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:49 -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-438-UPmqEKcLNfSjLWyPmCUEcw-1; Thu, 20 Aug 2026 12:51:45 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-47fe23b5acdso98396f8f.0 for ; Thu, 20 Aug 2026 09:51:44 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499aa11f832sm148644575e9.7.2026.08.20.09.51.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:51:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244707; 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=80v1QcfBEPNNdkHRB8tf/eG9Xs79pj54gkTWeLWtnks=; b=ZeNvntZmTwEnyp9H236lrAj+i0H0Xv3jqgQM9YCYT6Orj/IfhYzdfVJSYb3XMRwomOWm4E U5WVrV2t5Iexi3Fu+DWvHiaIohi5WRuJaVmY1Sfz2BTywplQH6ntJAdmOKxx424//3clxn yEUe1hLBosqBaZ32EuNL46f/gw1NhR4= X-MC-Unique: UPmqEKcLNfSjLWyPmCUEcw-1 X-Mimecast-MFC-AGG-ID: UPmqEKcLNfSjLWyPmCUEcw_1787244704 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244704; x=1787849504; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=80v1QcfBEPNNdkHRB8tf/eG9Xs79pj54gkTWeLWtnks=; b=rBSe3JViBoqPOPpD29D+NQ3w0E+8ekI3358AGrDZzGl5jfUVGrqErT4TnvKfSgkf6I f2PMI5XytN8nr4C305Km27RNg4mYJS+twvgkJXJF+wlqTp099QdwZsnFsqylWmxllAfB zaEglbXnHckzOGNKdkuR5xToTBbyQ5c8cJ+Fw1JIK5XdUbu/Bv/8N9/7uKGV9H69EloF 2FOjhLjou19KkF9DgXNt1TF6T07wyupep69F6AzzgtBMAG+Qx4IORbnf9cDKSHqzX5Jy E/oNB+fRXav79CizZo1Oc+0x97AMtX+6Bl2999c1VhpKhRS5yg4HJQZa+6QF3z4AiAoy YDOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244704; x=1787849504; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=80v1QcfBEPNNdkHRB8tf/eG9Xs79pj54gkTWeLWtnks=; b=dEtR2YkssUmfEBUW85ef0cbeBD3iZ09FJzcFW+XEPwzDGR4/3PuIc0sgHrVyoiFEMv xiZfR5Y35phJD88Xon8yLnm+OSzn1sggctidI6JWy9NMS2BDndui6+5G2TYB5WiihntA KhshG0nlwD2QqdPZu7TUSJKR/nMH7xXpFdBGpblcvs4iaRJ5/17YGODQQ0Uxc/mOddgv c/J9DTX9XMEmOEOJNztZ8w9XlRM+KoitJjBU2ekKheRKynZJJ+C6W1aSm4nJh0eUoVJV 4zUBUuzjUf7233TmSluN2aj40RAutLi4bw29NOiHCqT/tNw06GOVRBppBxq7j87gy9Pk vgPg== X-Gm-Message-State: AOJu0YxEnUd+7J+Ed65u4GpV3xCH3nWH9IewX+ldckGosKHBcU0HY/MM 47k114RZQEUgaqgYS7zVHwfaFig/oc0JLD3YdVVSfPdMQZCA/kZ9Menqsq4T08F178dxxF8iNcf xy28XmdUogPCQAbK/OZ3tMiUvRQ9C8h+jgBhvE6DKKYvjD5TX3Mia4Zo9uzX1ZC0lbdaLwurzHv O7lF9cVhsLRVAFGaTNRfQ7tZdi/5b2VPCX7NZSe5/2 X-Gm-Gg: AR+sD10sxE7yS3YL0sSuflh4WcPyFdBfV1Ez1xN+VHZA8lsqBu6Kaw8GaQB1D/TjiTX ybTGKMakvqJ4E9I1W4aWG+uXyW0tLzbD8YQ/kKBjsjljwspyFt7D/BrD2H0lB8T5lVAADllrJUc zyz4xWLkhBAglv8W1qJZqAsiLrw5+w9SWHy3EzKHHlbEosuIIw1GLuS/pdpMhiYuFj6R4151bYm tE1A8Efp81LIr/fb4138KMluD2AlEu7zX2rtqXLG9vceGp6hYE3nToA1n4MBAS03Pry0NGochW5 rnXb0ZowXAInnYwYQw5xXRbT7MpYGxAOoyIptzKiALu4QD3ikTIRQ2WvXHPYrhMm842RNhMlzPT 9tef1OOpRhejCiL0gaOGVVIIRZNJLbeCHf/PyVq/0oxp3AFSrNzlIyaXXEyCA4d0SpOK/ZfyoGP ll/2Y= X-Received: by 2002:a05:600c:4e47:b0:499:60bf:c6f7 with SMTP id 5b1f17b1804b1-499b8464503mr3532485e9.13.1787244703862; Thu, 20 Aug 2026 09:51:43 -0700 (PDT) X-Received: by 2002:a05:600c:4e47:b0:499:60bf:c6f7 with SMTP id 5b1f17b1804b1-499b8464503mr3531525e9.13.1787244703464; Thu, 20 Aug 2026 09:51:43 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 37/53] serial: clear transmit retry callback on unrealize Date: Thu, 20 Aug 2026 18:49:40 +0200 Message-ID: <20260820164957.1895963-38-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787244916490158500 The GSource is removed when resetting but remains active (and can cause use-after-free) on hot-unplug. Remove it before the character device is disconnected. Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/4125 Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Paolo Bonzini --- hw/char/serial.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/char/serial.c b/hw/char/serial.c index 0729cd2ce9d..4339562ab00 100644 --- a/hw/char/serial.c +++ b/hw/char/serial.c @@ -936,6 +936,7 @@ static void serial_unrealize(DeviceState *dev) { SerialState *s =3D SERIAL(dev); =20 + g_clear_handle_id(&s->watch_tag, g_source_remove); qemu_chr_fe_deinit(&s->chr, false); =20 timer_free(s->modem_status_poll); --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244924; cv=none; d=zohomail.com; s=zohoarc; b=mUb35/xGLLZ/VArrSbKKi4vtlCQGVW3nat3SxHPTGpcvoCxDLrqB8cxvWl6NRr2hknMSqUeV7aM5119FTU3a97LPzSUiXLrxSyZSRdaeTcqQjQO2Qm26uQ68wsPAElt0RGXDerm1Sn5fLzPtDUpblQcg+2Avmm5SRGD5psBFg3Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244924; 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=kRs9ooiaAGbBPTn+lYObem+X3XzELNql2asth0V7gOg=; b=jcOOK6/Nmgn1WVqP+nqFZ2bP26ThCHpAxRmN4aIIBQiL5BWSTStW0TVZ8+N6GzKP1grzux4L1esPOCODorqsiKaStAKNGA+QvhMedKeEu5cZwCnoRkPI19/JxR4vJdQOGhaeFMqBpkDfevdW7pWDrjaNiSpZI2hWIHcvBIS0JTo= 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 1787244924844877.0404287253624; Thu, 20 Aug 2026 09:55:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5ze-0000Ey-7n; Thu, 20 Aug 2026 12:51: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 1wx5zd-00007k-37 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:53 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx5zb-0005kP-KV for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:52 -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-395--y-0xkTaP4yERsmV3Vy7DA-1; Thu, 20 Aug 2026 12:51:49 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-47f835ac1aeso67121f8f.3 for ; Thu, 20 Aug 2026 09:51:49 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482b1450e54sm15497331f8f.11.2026.08.20.09.51.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:51:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244710; 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=kRs9ooiaAGbBPTn+lYObem+X3XzELNql2asth0V7gOg=; b=e3wPWaW+sNLhaH+12iXT7eNT112LDZJEFARlCeykIvsl9jSPoEa2RJYZC9y9ODmhAR2Lj8 LImlc1yPN7wsI9kzgQSz3n1dwAK0vFcubY2zqSEgDV2Q7bMRhz1i8OrZj8OhSJcYHY+f28 ByOzVN8K/l0cXQ7Rx2AP1sDiyuJ9h7k= X-MC-Unique: -y-0xkTaP4yERsmV3Vy7DA-1 X-Mimecast-MFC-AGG-ID: -y-0xkTaP4yERsmV3Vy7DA_1787244708 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244708; x=1787849508; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=kRs9ooiaAGbBPTn+lYObem+X3XzELNql2asth0V7gOg=; b=AI8s7kS9z72OhGLqbca4SmqOGQ1rXkcH0c0Kp+IjGNGLF4ajRVgPgJKDTlSTyzJHfS byH/cbaxkdfAAjWK4n2GssRFt/zrODC/IaijKiH7ddodPd8uchT8qqXviwHuBLK+q0Sd ejsFRcI7xU3bdrL2trly13BQNQ00T2dfkDXWVXoXpjl7MiLzju0gO1lLuw582f0OToMm tQiX2HitBc/2F2oZxQS2FIwcpYyhflca7HwDP/XqviAm5d6Vf4cfulLL8UKIbjN1koCO HERfQNhdsI70NQ80o5lB+GUjv3S2vQv1K9bylsWk+SGnyzE4VXdZ9s2MLAvLzXkUGg6k Ezyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244708; x=1787849508; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=kRs9ooiaAGbBPTn+lYObem+X3XzELNql2asth0V7gOg=; b=i8CnsynpPN+XlE1lspYDQouK5NK7Xk9abNIKdrLhxC07SO34RpA+jpU4dPxCUBAF6I Qp4lfSANVPRr51uhIifJ/6+8SeAV7PvXfa9jzT/rbNVfE0QDQBA5ebh3F2/muRwnx818 R/HX6ukL34v0MlMWT0qa36yDvOUaEGR8uQEwPZw+9Qr69lSY9j9h2QpCBqMpfS8LAvZP +EflnIeZXfc6xhIAFKO+eqaNIFeExWU5SoBoP4FN1Rs1GSJMB3yrOjYjC2uhrBS+vVCy ij6p/urAM8dBaSYapTmMvOxzGEWjYVlxJqQJ0IjzsqoWbVxwL4IdiQDokBtCHdG8AlQS 5RFw== X-Gm-Message-State: AFuF++mZWp1kFnGz7s8WaB2+xosG6O1XwWUmxfggXTWsy4fhQquUtYJr 42MT3CUys5IzLFNVN155xTLONBBMW2WNbyUCyrkQ4vd+YTaxKGAtIzcldYMIb+FQHrNGnfT8YQN 3OiDP7iJWOhL7cbHMKh/wKXZL/2a5V6UqU5LI2Ey56XZhxviV6L4MARcQ495qNv7jyoRNjkCkes kcTCTDpNvEbgR/ipjHG7a3qVzaCyPJGeCkrmNr9dwo X-Gm-Gg: AR+sD11eVEJCbaEg/xLr4r+4X5IoLJBrRDiyZbzEcgzrCIp/G76RWZNbM2XZbJ4G5w1 D5w35CmGn2V/N+tJaO8oIFAYjNc1T0jRo7dQNtISnSkO9GsueLwL79SckTEsJWs2Qgfl5cahncK 6JpxBcytcL21nVFStMMSj7gjFjpFPDUlurM69qkok37jRM53fe1w3uDkuqWGrE41euWCECMEFeA pG1gpn2Q8IUGz1eE/rpO0qTA5iZkuLLo4fyuS8iFUErpPO2eOsJD8YGDanIRhpMFFdjsxiyR1ew A4KS980sCSFhlCizSEEmw5Lqwg9TvdZMoJZUVkan4D57uY1JcOLRy9Ld0ySn+McZCs6zrTCMUCe 5XyPMYg1cYlZ65pXjJ2qSqdMrzziBnA5mVSIxfuknnHglu2bTHfox0Qap5XbWZTg1tR/oasRmQR RJhsk= X-Received: by 2002:a05:6000:25f3:b0:481:4810:d701 with SMTP id ffacd0b85a97d-482b1feb276mr29084462f8f.19.1787244708167; Thu, 20 Aug 2026 09:51:48 -0700 (PDT) X-Received: by 2002:a05:6000:25f3:b0:481:4810:d701 with SMTP id ffacd0b85a97d-482b1feb276mr29084324f8f.19.1787244707662; Thu, 20 Aug 2026 09:51:47 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: qemu-stable@nongnu.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 38/53] meson: make linker warnings non-fatal on Linux Date: Thu, 20 Aug 2026 18:49:41 +0200 Message-ID: <20260820164957.1895963-39-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787244926554158500 These cause a werror=3Dtrue build to fail with Meson 1.12.0, as it now makes linker warnings fatal as well. Cc: qemu-stable@nongnu.org Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Paolo Bonzini --- meson.build | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meson.build b/meson.build index 49a5baf5b52..40e3f4ec44c 100644 --- a/meson.build +++ b/meson.build @@ -602,6 +602,11 @@ if host_os =3D=3D 'windows' qemu_ldflags +=3D cc.get_supported_link_arguments('-Wl,--no-seh', '-Wl,-= -nxcompat') qemu_ldflags +=3D cc.get_supported_link_arguments('-Wl,--dynamicbase', '= -Wl,--high-entropy-va') endif +if host_os =3D=3D 'linux' and get_option('werror') and get_option('prefer_= static') + # On glibc systems, glib causes warnings about getpwuid, getpwuid_r + # and getpwnam_r not being supported with static linking + qemu_ldflags +=3D cc.get_supported_link_arguments('-Wl,--no-fatal-warnin= gs') +endif =20 if get_option('fuzzing') # Specify a filter to only instrument code that is directly related to --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244996; cv=none; d=zohomail.com; s=zohoarc; b=KZfa2JkcYpPlGSbm0s8RhkJ947HwQJ8AHmDKbZNzpqNZEbG0owTrdhLXu2F93Y81XnQcwRIy4xee+VVLAE3OOz93TDmGiu0WXpC+JCrayIlAPaShDeaGFdGd42lGjjn36X7P5jDljVuKF8xb72Bifd2axO9KwQMo8WSsQHHBQSo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244996; 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=AekDmTCsqKE/7Em+fp4v05CEB3akDFAXUbS1t0WA4sE=; b=OGKkZJFFhZw9D4+i+rKEfN+Q3w/xA1eDiWUykvsrDtJ9a/kQacTxdmsZtFNTZgxkwLLkxvT0dQnbSuDNZ2zpp6q/sSdCOIKXCK899nKFrKkw1TuS2ASX69avdajTaVrN5BjmmqySX12PVCU9bKkpbBeALEsuI/DY3cci5RbjADA= 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 1787244996733377.14979552330135; Thu, 20 Aug 2026 09:56:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5zm-0000rf-Tt; Thu, 20 Aug 2026 12:52:02 -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 1wx5zl-0000n4-Sw for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52:01 -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 1wx5zj-0005m3-HL for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52:01 -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-142-IcNNSURlOCG1SzOUw6tFnQ-1; Thu, 20 Aug 2026 12:51:51 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-482a2d55c4eso67511f8f.3 for ; Thu, 20 Aug 2026 09:51:51 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482b14d05a6sm15332584f8f.35.2026.08.20.09.51.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:51:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244718; 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=AekDmTCsqKE/7Em+fp4v05CEB3akDFAXUbS1t0WA4sE=; b=LrT4YERlMvdYHVw0R4uiarr0BwNC2qhUZ6sGd9+oj1CJJrN8P1bbqgQTFy5opylqM9V2cm oaZ+yfsxWx7hecy1+zM2EZgnDUzlarz2XSve1Dn+diGbAx8MorQBWQRPQbcoCQa9SJv7Dl k5cdEg/04IbGiT/rKdFhLdIGp2hk+IE= X-MC-Unique: IcNNSURlOCG1SzOUw6tFnQ-1 X-Mimecast-MFC-AGG-ID: IcNNSURlOCG1SzOUw6tFnQ_1787244710 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244710; x=1787849510; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=AekDmTCsqKE/7Em+fp4v05CEB3akDFAXUbS1t0WA4sE=; b=tOLQWc2B+hxcDtifIQpW9sEs/zQWfYlKOLHu9bcZhU1WH0vo9BDyg6z14y1V70oLCh MabLOfeUHGI/3jdCmhfjWZDJ6gBdYytkyfJwDX1+ct2bAXYf2gBvS+Vi93cPKmek502B hgDsx8DQMr1q9CBxlu1VbRKn2s5NTaDK7P2eyjIEkV/4tPNXVOae26vNEHAq8S2pJ+6p UHtxP9Mog8IXV1/KvVji4AAPdb145UoPI9Gu7M+Nh3rGk+PanCK6yLibGfgansE4DM/X QVHMQ1MnfUCLxzA5EuvWJNlI1XPpSSNVMhdw16ciRVrHlgYPfYR9LTWLwSAF696mGMSx hUkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244710; x=1787849510; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=AekDmTCsqKE/7Em+fp4v05CEB3akDFAXUbS1t0WA4sE=; b=GFFNm3c5AQbC78h5eFFd9WlBcw94vezL/uf5yR7OPrw2CoAmOmTkE5egxwUyf2PFpr FPVNDmvZHhuGXIuxmyfmbA6D6poTD2PV0egEm/rrnGJ2L62437AFf/Y8z5HkLBdTJa8K /tekWAMnxvnTz42jPM16KI9R/clEoumWhvsiWfeAnYrnTBdtd4/idtFeiZb7lTfEhf+X J+38O6n6xAhrK8/ZBiKt9a6nQ2aubOSgsFWQGuie0LZ1uStPcQiFdaHf9qPW40D27xf9 GNPbckXE/cKRvPRAF2jophT6P4yVYCkH9tx7mlXFAXC+S35FYK36xfCsIoOA6EWqhwz7 Lojw== X-Gm-Message-State: AFuF++lRPvQVOCY8ivhz6SnOcqcLJjpRie/IZU8E9Mya3gtXYaOJ7i6C ClSTByT59NfniXEd7TilEX7uN73h20JmU7H3aTFZzYGsRH7i0C1mtvH4HD9KS/3wzXm4lliS+wA jbFPktqfWsjdrxfY0XWh3xoeTDoETqpSnpz77ByLOTekisZZRfh4zdN8sqV6r1HSwQF+MLQFFvy YgdK7A1PiViq/P48RoafIGr43IRYpCfGIQvo0CsH8m X-Gm-Gg: AR+sD12J8c97fMLx3egKU2K8GRI4WArdstBG65lN1G2zjW2FrUk2CYX0Pd+No6WP5OB 2nJAA1fhk4pYtbDJwnjcE0JD1DmAAvxkqNl1c/OzU6GfkTap2QtL/xAJA7ArsVylqbgVOYwVQ39 xa+gyJAVHEn7NP/7CJBecrIM/L2kutI8FB6fG313JLxOWBu4MHPW+8vi3MOuSEJCb5r2ANZ/DZR 3SOgVTA5A6PTQ0wHkKBncpiWZS1BjABSkfM7oS4bykHqcw5empS7KpsK4J03oQjqjlpLH7xNKB/ ObSSLr3jNIgiOJ1anNcLE3doZFZV6wyXQnLwjgR4OzgODWlEPjqvIT+qhR69rHApaE4FVivAzoO ISvTib2ZmZi5+CGd3H8IUbifWyXbg7h5YvfIxSr8BG+LTiVziEUvE40zL3VIMdrSfPGJvDpMiV/ 5D1A8= X-Received: by 2002:a5d:64e6:0:b0:474:530:9d with SMTP id ffacd0b85a97d-482b1fd894bmr24784304f8f.13.1787244709838; Thu, 20 Aug 2026 09:51:49 -0700 (PDT) X-Received: by 2002:a5d:64e6:0:b0:474:530:9d with SMTP id ffacd0b85a97d-482b1fd894bmr24784190f8f.13.1787244709315; Thu, 20 Aug 2026 09:51:49 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 39/53] dockerfiles: remove packages required by Avocado Date: Thu, 20 Aug 2026 18:49:42 +0200 Message-ID: <20260820164957.1895963-40-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787244998954158500 Make our CI containers smaller, by removing a handful of packages that were only included as dependencies of Avocado. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Paolo Bonzini --- tests/docker/dockerfiles/alpine.docker | 3 --- tests/docker/dockerfiles/centos9.docker | 3 --- tests/docker/dockerfiles/debian-amd64-cross.docker | 4 ---- tests/docker/dockerfiles/debian-arm64-cross.docker | 4 ---- tests/docker/dockerfiles/debian-armhf-cross.docker | 4 ---- tests/docker/dockerfiles/debian-i686-cross.docker | 4 ---- tests/docker/dockerfiles/debian-ppc64el-cross.docker | 4 ---- tests/docker/dockerfiles/debian-riscv64-cross.docker | 4 ---- tests/docker/dockerfiles/debian-s390x-cross.docker | 4 ---- tests/docker/dockerfiles/debian.docker | 4 ---- tests/docker/dockerfiles/fedora-rust-nightly.docker | 4 ---- tests/docker/dockerfiles/fedora-win64-cross.docker | 4 ---- tests/docker/dockerfiles/fedora.docker | 4 ---- tests/docker/dockerfiles/opensuse-leap.docker | 4 ---- tests/docker/dockerfiles/ubuntu2404.docker | 4 ---- .gitlab-ci.d/macos-14.vars | 2 +- scripts/ci/setup/debian/debian-13-ppc64le.yaml | 4 ---- scripts/ci/setup/ubuntu/ubuntu-2404-aarch64.yaml | 4 ---- scripts/ci/setup/ubuntu/ubuntu-2404-s390x.yaml | 4 ---- tests/lcitool/projects/qemu.yml | 4 ---- tests/vm/generated/freebsd.json | 4 ---- 21 files changed, 1 insertion(+), 79 deletions(-) diff --git a/tests/docker/dockerfiles/alpine.docker b/tests/docker/dockerfi= les/alpine.docker index 118c6e8eeaf..8a5a355e89a 100644 --- a/tests/docker/dockerfiles/alpine.docker +++ b/tests/docker/dockerfiles/alpine.docker @@ -83,14 +83,11 @@ RUN apk update && \ pixman-dev \ pkgconf \ pulseaudio-dev \ - py3-numpy \ - py3-pillow \ py3-pip \ py3-setuptools \ py3-sphinx \ py3-sphinx_rtd_theme \ py3-wheel \ - py3-yaml \ python3 \ rpm2cpio \ rust \ diff --git a/tests/docker/dockerfiles/centos9.docker b/tests/docker/dockerf= iles/centos9.docker index 0d5b5fa7f59..e38cd692db9 100644 --- a/tests/docker/dockerfiles/centos9.docker +++ b/tests/docker/dockerfiles/centos9.docker @@ -96,9 +96,6 @@ RUN dnf --quiet distro-sync -y && \ pkgconfig \ pulseaudio-libs-devel \ python3 \ - python3-PyYAML \ - python3-numpy \ - python3-pillow \ python3-pip \ python3-setuptools \ python3-sphinx \ diff --git a/tests/docker/dockerfiles/debian-amd64-cross.docker b/tests/doc= ker/dockerfiles/debian-amd64-cross.docker index 061cd8e9b82..823606dc52a 100644 --- a/tests/docker/dockerfiles/debian-amd64-cross.docker +++ b/tests/docker/dockerfiles/debian-amd64-cross.docker @@ -41,9 +41,6 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ openssh-client \ pkgconf \ python3 \ - python3-numpy \ - python3-opencv \ - python3-pillow \ python3-pip \ python3-setuptools \ python3-sphinx \ @@ -51,7 +48,6 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ python3-tomli \ python3-venv \ python3-wheel \ - python3-yaml \ rpm2cpio \ rustc \ sed \ diff --git a/tests/docker/dockerfiles/debian-arm64-cross.docker b/tests/doc= ker/dockerfiles/debian-arm64-cross.docker index 3dfa60fdfd7..ed58e089ec0 100644 --- a/tests/docker/dockerfiles/debian-arm64-cross.docker +++ b/tests/docker/dockerfiles/debian-arm64-cross.docker @@ -41,9 +41,6 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ openssh-client \ pkgconf \ python3 \ - python3-numpy \ - python3-opencv \ - python3-pillow \ python3-pip \ python3-setuptools \ python3-sphinx \ @@ -51,7 +48,6 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ python3-tomli \ python3-venv \ python3-wheel \ - python3-yaml \ rpm2cpio \ rustc \ sed \ diff --git a/tests/docker/dockerfiles/debian-armhf-cross.docker b/tests/doc= ker/dockerfiles/debian-armhf-cross.docker index 401c64269c1..0843f7428a9 100644 --- a/tests/docker/dockerfiles/debian-armhf-cross.docker +++ b/tests/docker/dockerfiles/debian-armhf-cross.docker @@ -41,9 +41,6 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ openssh-client \ pkgconf \ python3 \ - python3-numpy \ - python3-opencv \ - python3-pillow \ python3-pip \ python3-setuptools \ python3-sphinx \ @@ -51,7 +48,6 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ python3-tomli \ python3-venv \ python3-wheel \ - python3-yaml \ rpm2cpio \ rustc \ sed \ diff --git a/tests/docker/dockerfiles/debian-i686-cross.docker b/tests/dock= er/dockerfiles/debian-i686-cross.docker index 8b60c7b085f..caba08f842e 100644 --- a/tests/docker/dockerfiles/debian-i686-cross.docker +++ b/tests/docker/dockerfiles/debian-i686-cross.docker @@ -41,9 +41,6 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ openssh-client \ pkgconf \ python3 \ - python3-numpy \ - python3-opencv \ - python3-pillow \ python3-pip \ python3-setuptools \ python3-sphinx \ @@ -51,7 +48,6 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ python3-tomli \ python3-venv \ python3-wheel \ - python3-yaml \ rpm2cpio \ rustc \ sed \ diff --git a/tests/docker/dockerfiles/debian-ppc64el-cross.docker b/tests/d= ocker/dockerfiles/debian-ppc64el-cross.docker index 2a7e8cba056..17018c0dab7 100644 --- a/tests/docker/dockerfiles/debian-ppc64el-cross.docker +++ b/tests/docker/dockerfiles/debian-ppc64el-cross.docker @@ -41,9 +41,6 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ openssh-client \ pkgconf \ python3 \ - python3-numpy \ - python3-opencv \ - python3-pillow \ python3-pip \ python3-setuptools \ python3-sphinx \ @@ -51,7 +48,6 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ python3-tomli \ python3-venv \ python3-wheel \ - python3-yaml \ rpm2cpio \ rustc \ sed \ diff --git a/tests/docker/dockerfiles/debian-riscv64-cross.docker b/tests/d= ocker/dockerfiles/debian-riscv64-cross.docker index 349de3a0bbb..2408d453c20 100644 --- a/tests/docker/dockerfiles/debian-riscv64-cross.docker +++ b/tests/docker/dockerfiles/debian-riscv64-cross.docker @@ -41,9 +41,6 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ openssh-client \ pkgconf \ python3 \ - python3-numpy \ - python3-opencv \ - python3-pillow \ python3-pip \ python3-setuptools \ python3-sphinx \ @@ -51,7 +48,6 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ python3-tomli \ python3-venv \ python3-wheel \ - python3-yaml \ rpm2cpio \ rustc \ sed \ diff --git a/tests/docker/dockerfiles/debian-s390x-cross.docker b/tests/doc= ker/dockerfiles/debian-s390x-cross.docker index 8bc42b1e00b..2b0a344c2c5 100644 --- a/tests/docker/dockerfiles/debian-s390x-cross.docker +++ b/tests/docker/dockerfiles/debian-s390x-cross.docker @@ -41,9 +41,6 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ openssh-client \ pkgconf \ python3 \ - python3-numpy \ - python3-opencv \ - python3-pillow \ python3-pip \ python3-setuptools \ python3-sphinx \ @@ -51,7 +48,6 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ python3-tomli \ python3-venv \ python3-wheel \ - python3-yaml \ rpm2cpio \ rustc \ sed \ diff --git a/tests/docker/dockerfiles/debian.docker b/tests/docker/dockerfi= les/debian.docker index 413986d3f07..064b2ad1f12 100644 --- a/tests/docker/dockerfiles/debian.docker +++ b/tests/docker/dockerfiles/debian.docker @@ -113,9 +113,6 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ openssh-client \ pkgconf \ python3 \ - python3-numpy \ - python3-opencv \ - python3-pillow \ python3-pip \ python3-setuptools \ python3-sphinx \ @@ -123,7 +120,6 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ python3-tomli \ python3-venv \ python3-wheel \ - python3-yaml \ rpm2cpio \ rustc \ sed \ diff --git a/tests/docker/dockerfiles/fedora-rust-nightly.docker b/tests/do= cker/dockerfiles/fedora-rust-nightly.docker index 4f84b803798..dcad3af2a7f 100644 --- a/tests/docker/dockerfiles/fedora-rust-nightly.docker +++ b/tests/docker/dockerfiles/fedora-rust-nightly.docker @@ -104,10 +104,6 @@ exec "$@"\n' > /usr/bin/nosync && \ pkgconfig \ pulseaudio-libs-devel \ python3 \ - python3-PyYAML \ - python3-numpy \ - python3-opencv \ - python3-pillow \ python3-pip \ python3-setuptools \ python3-sphinx \ diff --git a/tests/docker/dockerfiles/fedora-win64-cross.docker b/tests/doc= ker/dockerfiles/fedora-win64-cross.docker index c1e63feb46f..bce350dfd8d 100644 --- a/tests/docker/dockerfiles/fedora-win64-cross.docker +++ b/tests/docker/dockerfiles/fedora-win64-cross.docker @@ -44,10 +44,6 @@ exec "$@"\n' > /usr/bin/nosync && \ ninja-build \ openssh-clients \ python3 \ - python3-PyYAML \ - python3-numpy \ - python3-opencv \ - python3-pillow \ python3-pip \ python3-setuptools \ python3-sphinx \ diff --git a/tests/docker/dockerfiles/fedora.docker b/tests/docker/dockerfi= les/fedora.docker index a6996917c4b..c541f5d5b18 100644 --- a/tests/docker/dockerfiles/fedora.docker +++ b/tests/docker/dockerfiles/fedora.docker @@ -104,10 +104,6 @@ exec "$@"\n' > /usr/bin/nosync && \ pkgconfig \ pulseaudio-libs-devel \ python3 \ - python3-PyYAML \ - python3-numpy \ - python3-opencv \ - python3-pillow \ python3-pip \ python3-setuptools \ python3-sphinx \ diff --git a/tests/docker/dockerfiles/opensuse-leap.docker b/tests/docker/d= ockerfiles/opensuse-leap.docker index fc363c647cd..8d8631bbcf0 100644 --- a/tests/docker/dockerfiles/opensuse-leap.docker +++ b/tests/docker/dockerfiles/opensuse-leap.docker @@ -93,12 +93,8 @@ RUN zypper update -y && \ pcre2-devel-static \ pipewire-devel \ pkgconfig \ - python3-Pillow \ - python3-PyYAML \ python3-Sphinx \ python3-base \ - python3-numpy \ - python3-opencv \ python3-pip \ python3-setuptools \ python3-sphinx_rtd_theme \ diff --git a/tests/docker/dockerfiles/ubuntu2404.docker b/tests/docker/dock= erfiles/ubuntu2404.docker index 27992e34fd9..f027eef022e 100644 --- a/tests/docker/dockerfiles/ubuntu2404.docker +++ b/tests/docker/dockerfiles/ubuntu2404.docker @@ -113,9 +113,6 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ openssh-client \ pkgconf \ python3 \ - python3-numpy \ - python3-opencv \ - python3-pillow \ python3-pip \ python3-setuptools \ python3-sphinx \ @@ -123,7 +120,6 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ python3-tomli \ python3-venv \ python3-wheel \ - python3-yaml \ rpm2cpio \ rustc-1.83 \ sed \ diff --git a/.gitlab-ci.d/macos-14.vars b/.gitlab-ci.d/macos-14.vars index def77cfdea5..0c187624dd0 100644 --- a/.gitlab-ci.d/macos-14.vars +++ b/.gitlab-ci.d/macos-14.vars @@ -12,5 +12,5 @@ NINJA=3D'/opt/homebrew/bin/ninja' PACKAGING_COMMAND=3D'brew' PIP3=3D'/opt/homebrew/bin/pip3' PKGS=3D'bash bc bindgen bison bzip2 capstone ccache cmocka coreutils ctags= curl dbus diffutils dtc flex gcovr gettext git glib gnu-sed gnutls gtk+3 g= tk-vnc jemalloc jpeg-turbo json-c libcbor libepoxy libffi libgcrypt libiscs= i libnfs libpng libslirp libssh libtasn1 libusb llvm lzo make meson mtools = ncurses nettle ninja pixman pkg-config python-setuptools python3 rpm2cpio r= ust sdl2 sdl2_image snappy socat sparse spice-protocol swtpm tesseract usbr= edir vde vte3 vulkan-tools xorriso zlib zstd' -PYPI_PKGS=3D'PyYAML numpy pillow sphinx sphinx-rtd-theme tomli' +PYPI_PKGS=3D'sphinx sphinx-rtd-theme tomli' PYTHON=3D'/opt/homebrew/bin/python3' diff --git a/scripts/ci/setup/debian/debian-13-ppc64le.yaml b/scripts/ci/se= tup/debian/debian-13-ppc64le.yaml index e64321357da..9acd99a7433 100644 --- a/scripts/ci/setup/debian/debian-13-ppc64le.yaml +++ b/scripts/ci/setup/debian/debian-13-ppc64le.yaml @@ -105,9 +105,6 @@ packages: - openssh-client - pkgconf - python3 - - python3-numpy - - python3-opencv - - python3-pillow - python3-pip - python3-setuptools - python3-sphinx @@ -115,7 +112,6 @@ packages: - python3-tomli - python3-venv - python3-wheel - - python3-yaml - rpm2cpio - rustc - sed diff --git a/scripts/ci/setup/ubuntu/ubuntu-2404-aarch64.yaml b/scripts/ci/= setup/ubuntu/ubuntu-2404-aarch64.yaml index 12b0e38a220..5c948109df8 100644 --- a/scripts/ci/setup/ubuntu/ubuntu-2404-aarch64.yaml +++ b/scripts/ci/setup/ubuntu/ubuntu-2404-aarch64.yaml @@ -106,9 +106,6 @@ packages: - openssh-client - pkgconf - python3 - - python3-numpy - - python3-opencv - - python3-pillow - python3-pip - python3-setuptools - python3-sphinx @@ -116,7 +113,6 @@ packages: - python3-tomli - python3-venv - python3-wheel - - python3-yaml - rpm2cpio - rustc-1.83 - sed diff --git a/scripts/ci/setup/ubuntu/ubuntu-2404-s390x.yaml b/scripts/ci/se= tup/ubuntu/ubuntu-2404-s390x.yaml index 56299f4cc2b..010b7f86aab 100644 --- a/scripts/ci/setup/ubuntu/ubuntu-2404-s390x.yaml +++ b/scripts/ci/setup/ubuntu/ubuntu-2404-s390x.yaml @@ -104,9 +104,6 @@ packages: - openssh-client - pkgconf - python3 - - python3-numpy - - python3-opencv - - python3-pillow - python3-pip - python3-setuptools - python3-sphinx @@ -114,7 +111,6 @@ packages: - python3-tomli - python3-venv - python3-wheel - - python3-yaml - rpm2cpio - rustc-1.83 - sed diff --git a/tests/lcitool/projects/qemu.yml b/tests/lcitool/projects/qemu.= yml index 7d185cda3cc..b3c99936723 100644 --- a/tests/lcitool/projects/qemu.yml +++ b/tests/lcitool/projects/qemu.yml @@ -91,11 +91,7 @@ packages: - pkg-config - pulseaudio - python3 - - python3-numpy - - python3-opencv - - python3-pillow - python3-pip - - python3-PyYAML - python3-setuptools - python3-sphinx - python3-sphinx-rtd-theme diff --git a/tests/vm/generated/freebsd.json b/tests/vm/generated/freebsd.j= son index 08b6eb61553..dfa8b41a524 100644 --- a/tests/vm/generated/freebsd.json +++ b/tests/vm/generated/freebsd.json @@ -49,14 +49,10 @@ "ncurses", "nettle", "ninja", - "opencv", "pixman", "pkgconf", "png", - "py311-numpy", - "py311-pillow", "py311-pip", - "py311-pyyaml", "py311-setuptools", "py311-sphinx", "py311-sphinx_rtd_theme", --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244997; cv=none; d=zohomail.com; s=zohoarc; b=JYHLVyRLqBdVWNl/1LTDVHdee8tWSmKGUNmSdQhXLZDHr35eiXs4HRpZO+M/CTDfv78B8raiMAT4th3WEjicWmMN0kDHtn+idjvkajvcRhDQzA0BMqnVPZPpqmMgQF1eZEV8RTY2Wmt70gPu7U/LXn7OQUeVqQtYmC8X6YNotSY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244997; h=Content-Transfer-Encoding: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:Cc; bh=8oXsNt/zDv/071YYoOtmJBMr5fEJodxY4IzsRLOYpZ8=; b=V2WiZbJJ1rJjpMXsqR1knbxcwFTRrl8IgsFl+vBlifXDaNc49zE2snF9g63c6gK0D+dqrLNPy0EVxo5vsek5m9FGF8+Xygn7JFDQMSQRoRfvYa5gTLgk9ufqzR44X+0nywop96MG9XjagUVBgZ1sQ3lRP8U+0jNyRtyACQsqZb0= 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 1787244997636638.2309445328289; Thu, 20 Aug 2026 09:56:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5zj-0000fS-8X; Thu, 20 Aug 2026 12:51:59 -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 1wx5zh-0000e1-Sl for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:57 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx5zf-0005lJ-M9 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:57 -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-237-VCb5z3VIOTWVBFdfHrXUNw-1; Thu, 20 Aug 2026 12:51:53 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-499574e98a1so164875e9.3 for ; Thu, 20 Aug 2026 09:51:53 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499b642865dsm17017045e9.10.2026.08.20.09.51.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:51:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244715; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=8oXsNt/zDv/071YYoOtmJBMr5fEJodxY4IzsRLOYpZ8=; b=Z7CmOJsTCRVTA5EG1rZSeLGrbkGMWlseKEc4s0rpENmXtIoJrpVBd54K3sP4KmTkfwamoB B9qq4GTNBvh8qzMdA8ZmyFpQasAZ1XpXZGVMyCuZya5kGyCyKZArNI8kqQ5qEQJW+BBGxe qRlR+ePUTkdZvawixy9tX9/nR0kXEhw= X-MC-Unique: VCb5z3VIOTWVBFdfHrXUNw-1 X-Mimecast-MFC-AGG-ID: VCb5z3VIOTWVBFdfHrXUNw_1787244712 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244712; x=1787849512; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=8oXsNt/zDv/071YYoOtmJBMr5fEJodxY4IzsRLOYpZ8=; b=avP84xT9RFARPInqeyvde3v5WNtUcWCobrBmiMprx4XxHEBhAIIfugy2vOGoCUXg3b 4JVo/ALPmD/CXbg3PdHh+6hrlxcZGSYpHc9mKM1sV4e5GkF7YVlbiARtVozUInJPcG1m kVYQuYn6uojiIDT0vfR/3v0/UshKKTXcmhD+4mSIVwzmYtztJ6bRBv4tM4HfsO2LoohC JwsjJdld6MRnhIpDvJMUckOs8EWDRkHlh0dZ3gnkZhVwiB40D2VAMcjaAgg8paQMGb9+ 7Jxni3n/QnB9Tr/X189S+SrQxl1Yv4mPLqVoPiDAZUvPAU6JrgdINWkyYa+krhXpZObr 3CCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244712; x=1787849512; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=8oXsNt/zDv/071YYoOtmJBMr5fEJodxY4IzsRLOYpZ8=; b=N8RuqzVnYWB72nIufTcv7Zq0Uu3QUG9rUDhBscV0SJfPFv/OYKXrlxMtBrAm4PKWT5 Hmcm/2y7aSsaLkK/pRrwSfG51PYqicjWLni4+xZU3qX+Ejfy9l2wQlBx4fGzooiVGKQy lq87Mu19tTKAzYksVGrYrYFTLIbH7MfeZo+uMZG9913PoA3slHGOmqf784/siy127fgn 86FC4cqgxXXX7BoHyTp7EZ/yKtl49setSNlXT6Kar21hPYPUdOMtfw02Erdaeyt1xVFy eTTUy5pX/uU4pMzOxg+VYbxV56MdpV/U6GJunMRIAMPemtmV7915sV6UUNmlItna7wNw 2Eqg== X-Gm-Message-State: AOJu0YwdTv3Q640OuETl7nu9nZlB6eOz8ITLz58yW6eRareQljZ2UOl6 P9U1lotuQfx63V6t4mswYI+6xfx1mWIZyFCOY6nITilGkY0HttxYmblnN44yPWfWTcRFSaHyXqT z0dvJekIdYNjWMmZkMFR/X+uY0wQvxVYKsC/KYN6H+2GlHqLGKX/KK/xOy5Pu6CHGhbd+mvpm/p B8wwu9RcYVbEdGWuLiBrBGJozg0wu/tUILFKlwpkRn X-Gm-Gg: AR+sD11wxLrafBZcGVxiVwH22WDIO2fuJdZG5iX5lzY42b5BNZsJluu8I7W0KowKVPj ZJTzo8zkp5cwwLqNla3QxqlU219ZNYATc7cw0YvxLycwR48mQbCxDtmbsF8+ZzrtQGgZwwrACXC k4jSn5JOLOQ1eOI83CkeDI4GyUuVjaXTU+oIYp1WrrZxudtsl9CJP5fAZohxYg0vIGaROuu5SH2 YzPkse3K/dYrIAay+cr+XsHMGqLcmG3l3smbFZIudiq72kVa4mPfFac2BB3MaFCKJNFwYdXBZoc nSYJ3WMjEnbZCamkRwzwIzHQVJbs6WjVI7PdkRdqujvFCwvL+J6OFXC+4AhDNaTiG9OTG2JHfLT OawxrDK6vPV6s8NrcD5xsNI64DQwkGU9A9NqGPrSmyHcV/WKlpfKM3Ejg37pJSvH7YM5NsmER2j vq2yU= X-Received: by 2002:a05:600c:45c3:b0:499:4e47:eaf2 with SMTP id 5b1f17b1804b1-499b8325c3fmr3928725e9.6.1787244712160; Thu, 20 Aug 2026 09:51:52 -0700 (PDT) X-Received: by 2002:a05:600c:45c3:b0:499:4e47:eaf2 with SMTP id 5b1f17b1804b1-499b8325c3fmr3927695e9.6.1787244711639; Thu, 20 Aug 2026 09:51:51 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 40/53] dockerfiles: update CentOS Stream 9 to Python 3.11, Meson to 1.12 Date: Thu, 20 Aug 2026 18:49:43 +0200 Message-ID: <20260820164957.1895963-41-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787244998978158500 Content-Type: text/plain; charset="utf-8" Python 3.10, which is a requirement for Meson 1.12.0, was never packaged for CentOS Stream 9 so update directly to 3.11. CentOS 9 does not install meson from PyPI because configure will install it from the bundled wheel; this way CI covers that path as well. This is guaranteed because, when using a non-default Python, basically nothing is installed. The opensuse-leap-15.yml file was not in use anymore, so delete it while touching tests/lcitool/targets/. Signed-off-by: Paolo Bonzini --- tests/docker/dockerfiles/centos9.docker | 16 +++++++----- .../dockerfiles/debian-all-test-cross.docker | 2 +- .../dockerfiles/debian-amd64-cross.docker | 2 +- .../dockerfiles/debian-arm64-cross.docker | 2 +- .../dockerfiles/debian-armhf-cross.docker | 2 +- .../dockerfiles/debian-i686-cross.docker | 2 +- .../dockerfiles/debian-ppc64el-cross.docker | 2 +- .../dockerfiles/debian-riscv64-cross.docker | 2 +- .../dockerfiles/debian-s390x-cross.docker | 2 +- tests/docker/dockerfiles/debian.docker | 2 +- .../dockerfiles/fedora-rust-nightly.docker | 2 +- .../dockerfiles/fedora-win64-cross.docker | 2 +- tests/docker/dockerfiles/fedora.docker | 2 +- tests/docker/dockerfiles/ubuntu2404.docker | 2 +- tests/lcitool/mappings.yml | 26 ++++++++++++++++++- ...ensuse-leap-15.yml =3D> centos-stream-9.yml} | 0 16 files changed, 47 insertions(+), 21 deletions(-) rename tests/lcitool/targets/{opensuse-leap-15.yml =3D> centos-stream-9.ym= l} (100%) diff --git a/tests/docker/dockerfiles/centos9.docker b/tests/docker/dockerf= iles/centos9.docker index e38cd692db9..8101370a2db 100644 --- a/tests/docker/dockerfiles/centos9.docker +++ b/tests/docker/dockerfiles/centos9.docker @@ -95,13 +95,11 @@ RUN dnf --quiet distro-sync -y && \ pixman-devel \ pkgconfig \ pulseaudio-libs-devel \ - python3 \ - python3-pip \ - python3-setuptools \ - python3-sphinx \ - python3-sphinx_rtd_theme \ python3-tomli \ - python3-wheel \ + python3.11 \ + python3.11-pip \ + python3.11-setuptools \ + python3.11-wheel \ rdma-core-devel \ rust \ rust-std-static \ @@ -131,11 +129,15 @@ RUN dnf --quiet distro-sync -y && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc =20 +RUN /usr/bin/pip3.11 install \ + sphinx \ + sphinx-rtd-theme + ENV CCACHE_WRAPPERSDIR=3D"/usr/libexec/ccache-wrappers" ENV LANG=3D"en_US.UTF-8" ENV MAKE=3D"/usr/bin/make" ENV NINJA=3D"/usr/bin/ninja" -ENV PYTHON=3D"/usr/bin/python3" +ENV PYTHON=3D"/usr/bin/python3.11" # As a final step configure the user (if env is defined) ARG USER ARG UID diff --git a/tests/docker/dockerfiles/debian-all-test-cross.docker b/tests/= docker/dockerfiles/debian-all-test-cross.docker index 2dc580552e3..833185f6072 100644 --- a/tests/docker/dockerfiles/debian-all-test-cross.docker +++ b/tests/docker/dockerfiles/debian-all-test-cross.docker @@ -47,7 +47,7 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc =20 -RUN /usr/bin/pip3 install meson=3D=3D1.8.1 +RUN /usr/bin/pip3 install meson=3D=3D1.12.0 =20 ENV CCACHE_WRAPPERSDIR=3D"/usr/libexec/ccache-wrappers" ENV LANG=3D"en_US.UTF-8" diff --git a/tests/docker/dockerfiles/debian-amd64-cross.docker b/tests/doc= ker/dockerfiles/debian-amd64-cross.docker index 823606dc52a..9e30457ca79 100644 --- a/tests/docker/dockerfiles/debian-amd64-cross.docker +++ b/tests/docker/dockerfiles/debian-amd64-cross.docker @@ -66,7 +66,7 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ dpkg-reconfigure locales && \ rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED =20 -RUN /usr/bin/pip3 install meson=3D=3D1.8.1 +RUN /usr/bin/pip3 install meson=3D=3D1.12.0 =20 ENV CCACHE_WRAPPERSDIR=3D"/usr/libexec/ccache-wrappers" ENV LANG=3D"en_US.UTF-8" diff --git a/tests/docker/dockerfiles/debian-arm64-cross.docker b/tests/doc= ker/dockerfiles/debian-arm64-cross.docker index ed58e089ec0..b9b94e5e6fa 100644 --- a/tests/docker/dockerfiles/debian-arm64-cross.docker +++ b/tests/docker/dockerfiles/debian-arm64-cross.docker @@ -66,7 +66,7 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ dpkg-reconfigure locales && \ rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED =20 -RUN /usr/bin/pip3 install meson=3D=3D1.8.1 +RUN /usr/bin/pip3 install meson=3D=3D1.12.0 =20 ENV CCACHE_WRAPPERSDIR=3D"/usr/libexec/ccache-wrappers" ENV LANG=3D"en_US.UTF-8" diff --git a/tests/docker/dockerfiles/debian-armhf-cross.docker b/tests/doc= ker/dockerfiles/debian-armhf-cross.docker index 0843f7428a9..aa412ff66f5 100644 --- a/tests/docker/dockerfiles/debian-armhf-cross.docker +++ b/tests/docker/dockerfiles/debian-armhf-cross.docker @@ -66,7 +66,7 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ dpkg-reconfigure locales && \ rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED =20 -RUN /usr/bin/pip3 install meson=3D=3D1.8.1 +RUN /usr/bin/pip3 install meson=3D=3D1.12.0 =20 ENV CCACHE_WRAPPERSDIR=3D"/usr/libexec/ccache-wrappers" ENV LANG=3D"en_US.UTF-8" diff --git a/tests/docker/dockerfiles/debian-i686-cross.docker b/tests/dock= er/dockerfiles/debian-i686-cross.docker index caba08f842e..d07eac84fe8 100644 --- a/tests/docker/dockerfiles/debian-i686-cross.docker +++ b/tests/docker/dockerfiles/debian-i686-cross.docker @@ -66,7 +66,7 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ dpkg-reconfigure locales && \ rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED =20 -RUN /usr/bin/pip3 install meson=3D=3D1.8.1 +RUN /usr/bin/pip3 install meson=3D=3D1.12.0 =20 ENV CCACHE_WRAPPERSDIR=3D"/usr/libexec/ccache-wrappers" ENV LANG=3D"en_US.UTF-8" diff --git a/tests/docker/dockerfiles/debian-ppc64el-cross.docker b/tests/d= ocker/dockerfiles/debian-ppc64el-cross.docker index 17018c0dab7..7302c8236e4 100644 --- a/tests/docker/dockerfiles/debian-ppc64el-cross.docker +++ b/tests/docker/dockerfiles/debian-ppc64el-cross.docker @@ -66,7 +66,7 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ dpkg-reconfigure locales && \ rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED =20 -RUN /usr/bin/pip3 install meson=3D=3D1.8.1 +RUN /usr/bin/pip3 install meson=3D=3D1.12.0 =20 ENV CCACHE_WRAPPERSDIR=3D"/usr/libexec/ccache-wrappers" ENV LANG=3D"en_US.UTF-8" diff --git a/tests/docker/dockerfiles/debian-riscv64-cross.docker b/tests/d= ocker/dockerfiles/debian-riscv64-cross.docker index 2408d453c20..aa5a881cab2 100644 --- a/tests/docker/dockerfiles/debian-riscv64-cross.docker +++ b/tests/docker/dockerfiles/debian-riscv64-cross.docker @@ -66,7 +66,7 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ dpkg-reconfigure locales && \ rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED =20 -RUN /usr/bin/pip3 install meson=3D=3D1.8.1 +RUN /usr/bin/pip3 install meson=3D=3D1.12.0 =20 ENV CCACHE_WRAPPERSDIR=3D"/usr/libexec/ccache-wrappers" ENV LANG=3D"en_US.UTF-8" diff --git a/tests/docker/dockerfiles/debian-s390x-cross.docker b/tests/doc= ker/dockerfiles/debian-s390x-cross.docker index 2b0a344c2c5..82eae4fc2c2 100644 --- a/tests/docker/dockerfiles/debian-s390x-cross.docker +++ b/tests/docker/dockerfiles/debian-s390x-cross.docker @@ -66,7 +66,7 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ dpkg-reconfigure locales && \ rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED =20 -RUN /usr/bin/pip3 install meson=3D=3D1.8.1 +RUN /usr/bin/pip3 install meson=3D=3D1.12.0 =20 ENV CCACHE_WRAPPERSDIR=3D"/usr/libexec/ccache-wrappers" ENV LANG=3D"en_US.UTF-8" diff --git a/tests/docker/dockerfiles/debian.docker b/tests/docker/dockerfi= les/debian.docker index 064b2ad1f12..3a4f208ccf6 100644 --- a/tests/docker/dockerfiles/debian.docker +++ b/tests/docker/dockerfiles/debian.docker @@ -145,7 +145,7 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc =20 -RUN /usr/bin/pip3 install meson=3D=3D1.8.1 +RUN /usr/bin/pip3 install meson=3D=3D1.12.0 =20 ENV CCACHE_WRAPPERSDIR=3D"/usr/libexec/ccache-wrappers" ENV LANG=3D"en_US.UTF-8" diff --git a/tests/docker/dockerfiles/fedora-rust-nightly.docker b/tests/do= cker/dockerfiles/fedora-rust-nightly.docker index dcad3af2a7f..0f3dc370a4f 100644 --- a/tests/docker/dockerfiles/fedora-rust-nightly.docker +++ b/tests/docker/dockerfiles/fedora-rust-nightly.docker @@ -145,7 +145,7 @@ exec "$@"\n' > /usr/bin/nosync && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc =20 -RUN /usr/bin/pip3 install meson=3D=3D1.8.1 +RUN /usr/bin/pip3 install meson=3D=3D1.12.0 =20 ENV CCACHE_WRAPPERSDIR=3D"/usr/libexec/ccache-wrappers" ENV LANG=3D"en_US.UTF-8" diff --git a/tests/docker/dockerfiles/fedora-win64-cross.docker b/tests/doc= ker/dockerfiles/fedora-win64-cross.docker index bce350dfd8d..6f972f61738 100644 --- a/tests/docker/dockerfiles/fedora-win64-cross.docker +++ b/tests/docker/dockerfiles/fedora-win64-cross.docker @@ -66,7 +66,7 @@ exec "$@"\n' > /usr/bin/nosync && \ nosync dnf --quiet clean all -y && \ rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED =20 -RUN /usr/bin/pip3 install meson=3D=3D1.8.1 +RUN /usr/bin/pip3 install meson=3D=3D1.12.0 =20 ENV CCACHE_WRAPPERSDIR=3D"/usr/libexec/ccache-wrappers" ENV LANG=3D"en_US.UTF-8" diff --git a/tests/docker/dockerfiles/fedora.docker b/tests/docker/dockerfi= les/fedora.docker index c541f5d5b18..99bb38a3665 100644 --- a/tests/docker/dockerfiles/fedora.docker +++ b/tests/docker/dockerfiles/fedora.docker @@ -145,7 +145,7 @@ exec "$@"\n' > /usr/bin/nosync && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc =20 -RUN /usr/bin/pip3 install meson=3D=3D1.8.1 +RUN /usr/bin/pip3 install meson=3D=3D1.12.0 =20 ENV CCACHE_WRAPPERSDIR=3D"/usr/libexec/ccache-wrappers" ENV LANG=3D"en_US.UTF-8" diff --git a/tests/docker/dockerfiles/ubuntu2404.docker b/tests/docker/dock= erfiles/ubuntu2404.docker index f027eef022e..a5c22231f98 100644 --- a/tests/docker/dockerfiles/ubuntu2404.docker +++ b/tests/docker/dockerfiles/ubuntu2404.docker @@ -145,7 +145,7 @@ RUN export DEBIAN_FRONTEND=3Dnoninteractive && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc =20 -RUN /usr/bin/pip3 install meson=3D=3D1.8.1 +RUN /usr/bin/pip3 install meson=3D=3D1.12.0 =20 ENV CCACHE_WRAPPERSDIR=3D"/usr/libexec/ccache-wrappers" ENV LANG=3D"en_US.UTF-8" diff --git a/tests/lcitool/mappings.yml b/tests/lcitool/mappings.yml index 62fe60d047f..1816556dde4 100644 --- a/tests/lcitool/mappings.yml +++ b/tests/lcitool/mappings.yml @@ -3,6 +3,30 @@ mappings: bindgen: Ubuntu2204: =20 + python3: + CentOSStream9: python3.11 + + python3-devel: + CentOSStream9: python3.11-devel + + python3-pip: + CentOSStream9: python3.11-pip + + python3-setuptools: + CentOSStream9: python3.11-setuptools + + python3-sphinx: + CentOSStream9: + + python3-sphinx-rtd-theme: + CentOSStream9: + + python3-venv: + CentOSStream9: python3.11 + + python3-wheel: + CentOSStream9: python3.11-wheel + meson: # Use Meson from PyPI wherever Rust is enabled Debian: @@ -23,7 +47,7 @@ mappings: pypi_mappings: # Request more recent version meson: - default: meson=3D=3D1.8.1 + default: meson=3D=3D1.12.0 =20 # Drop packages that need devel headers python3-tomli: diff --git a/tests/lcitool/targets/opensuse-leap-15.yml b/tests/lcitool/tar= gets/centos-stream-9.yml similarity index 100% rename from tests/lcitool/targets/opensuse-leap-15.yml rename to tests/lcitool/targets/centos-stream-9.yml --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244994; cv=none; d=zohomail.com; s=zohoarc; b=Q+6rWBX4R9iNOCrsFgiUopiQptmJ4WS5FCBF358M1qG+aHCS1Wm48saM0qON/QryGsJ/wNpUl8/P5LN3vok48PdhKkjuBeBcNYLXKnRw+M4i0wRfsPtVZE7zo5OcbptmQ+MeTOXiSXd5Ib03GIcB8o0rL7FDGhAzCwUUwNrsefw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244994; 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=r0ygABJTpsHOhl9gB0pPnn5YiHCVRoF4PezK5Ys2JEE=; b=cn2XpOtu8gfMQn5zKQ9obPK8YJZ3ns6d4J7FUiBvnln1yo8k8iBhwLKHJ7n1PRszwtzDqIbU71HQ/lwTdPQS60zKEibQkXFzYOHGM1c4l0ILdroo6FGofUFLY6xUa0wu8ciRpoSrVoqoPJnnOJpT5kMjnh32VZpJh1kQZndBXqc= 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 1787244994105394.52234161663614; Thu, 20 Aug 2026 09:56:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5zj-0000fZ-N5; Thu, 20 Aug 2026 12:51:59 -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 1wx5zi-0000fE-PA for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51: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 1wx5zh-0005lc-6H for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:51:58 -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-518-mN7u_u8wNrW0DpuSrE_c5g-1; Thu, 20 Aug 2026 12:51:55 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-47f8398ed9fso104185f8f.0 for ; Thu, 20 Aug 2026 09:51:55 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482b14b8038sm12739589f8f.20.2026.08.20.09.51.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:51:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244716; 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=r0ygABJTpsHOhl9gB0pPnn5YiHCVRoF4PezK5Ys2JEE=; b=IdI2vwY2VCDk7Gz66rfi41QKdP2BlVDSsDwYsahheGkMRgcHkbOYTRNCptAEM3BpvchGqg 9Ju+YcoEKImwepJcPJMrPveA/D3kOJUjy/IdPUUPz5audjp77OxLVhsin7rqMaqqOWr52L hZkZJyW0Os5Pl2LCZIhL/mSJjApAfi4= X-MC-Unique: mN7u_u8wNrW0DpuSrE_c5g-1 X-Mimecast-MFC-AGG-ID: mN7u_u8wNrW0DpuSrE_c5g_1787244714 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244714; x=1787849514; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=r0ygABJTpsHOhl9gB0pPnn5YiHCVRoF4PezK5Ys2JEE=; b=Bl+mw3fFrxzABySUfgssNtYRXfkwsG4145j4H1X7974wAf9KEsLMYUVt2YhxJa5h8q F5iaBRfQCZrMpDVov0LrBYw/m5IkZy/MPmb4Cwig0kn0nblFvF73mAc8Ek73eEJ4ZAC5 yCu+Mro1C6LWIYW/5SsW2yxW0UwJY+gk/eNfwGXCl0lSJ/508OECH2NxPWTMzJMEVKCG f6bdv6Op511BooOcGd7DGYxdyWVSDXI6c2OX84WepumUKaOf4FGwXgUK2OkPGucIpToO DUposR4ioDTJIjSB83ypXify9OrKelPhGw0xnoFv1jCxiIE2SofoT01p9/y4BvGF1qDE kWtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244714; x=1787849514; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=r0ygABJTpsHOhl9gB0pPnn5YiHCVRoF4PezK5Ys2JEE=; b=kCjxz4mXprjzUxJdtZDleiZN5PIDHPR63zA8lnKGACnVIgEtrUaQYDCC3yeZDXhkG8 N094nvTUQnOCFy0Kc06wAGtFNgiGJkXeMX90jZQuNVlIUetGrUTGZWcKGRO0EZSAXRqe if9tB0SwAPVOKQLNrAMWr3kvD7tiMRTcIfC1qdG/763YUxbEpLHS9fHxdPqYZkChu8p2 DDix7AXiMg8XQzthH0F+6GEWqThF++6IYNWoUOEzTnysuVI33spJC5Dj4R26ORpedQhu UlJprChHsjX9+WP9OJq/CFvd5vu2w86bIW4Bxc5n4Q3djaDCybgwRE7TcEze3wo64dIm HPrg== X-Gm-Message-State: AFuF++ltlTkRWJuXRXAijam0ddlwgfGZVQsf7QVDYsfiXzPS+ICkmTIY TECgEPf5tmwuS9fhi9krxZsNnNDP4cksbRMR0DobcT+t4ElKf+0DODymHe1DLgjnGtQE0PcJ9F4 MM9SfwC9xcjJTeVWea/1NIlYkY554v6BaRCY8rBCcOzf2ERn1yJt39x/00XLViXq97VZi5My499 zPNAjfGDtJp2Yg14p4PeqYfl3hhta3shZvLDnPbY0S X-Gm-Gg: AR+sD10DGpaXlgMKm/PKpbglcKu5wsBhQLrtJFqvSn8w5kJxX89oIAKg6oBd91BHCTT p7WSUSPnwSxUxndBwPYWusDzdVWKRbzf2FN+FKzHxta0vtbirtrk8RDtSR3q2G6mBORrmxiVVaa V+JczInShfnwZBvFB2k3Q4pXOzzwfIgAYzzeVWHBIVNyEgL4StwMhnTdp+7Xlfp8ALhLuBuXhcO KunW0QQFq3P1otmCxO3v7b4+FUXvhoPa0OMLq11r8E3012SBK+LMHEiICM7/DLtoiEb+q/OoKVt E6du3l57uGvT6+AqxMYsr/sH9qis9Udkqn+rNGvxhoZO6RDsQ0S3Ean4c5ew0YNp0WFNKGWCYRm Zmo0Nkr3F4FHQ37DmfPWIt+i5V69D5LRHNQzDk19S80PW77lo9g81sglzsGycumoryGfEpMOO6G uxlII= X-Received: by 2002:a05:6000:1445:b0:482:aa2a:52f7 with SMTP id ffacd0b85a97d-482c0b62085mr12676f8f.6.1787244714066; Thu, 20 Aug 2026 09:51:54 -0700 (PDT) X-Received: by 2002:a05:6000:1445:b0:482:aa2a:52f7 with SMTP id ffacd0b85a97d-482c0b62085mr12573f8f.6.1787244713570; Thu, 20 Aug 2026 09:51:53 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 41/53] python, meson: update meson required for Rust to 1.12.0 Date: Thu, 20 Aug 2026 18:49:44 +0200 Message-ID: <20260820164957.1895963-42-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787244994851158500 Meson 1.11.0 brings support for parsing Cargo.toml inside QEMU's source tree, and Meson 1.12.0 brings support for cross-compilation of Cargo subprojects. Together, these two features allow QEMU to remove hundreds of lines of manual compilation scripts. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Paolo Bonzini --- configure | 4 ++-- python/scripts/vendor.py | 4 ++-- python/wheels/meson-1.11.1-py3-none-any.whl | Bin 1078534 -> 0 bytes python/wheels/meson-1.12.0-py3-none-any.whl | Bin 0 -> 1106208 bytes pythondeps.toml | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) delete mode 100644 python/wheels/meson-1.11.1-py3-none-any.whl create mode 100644 python/wheels/meson-1.12.0-py3-none-any.whl diff --git a/configure b/configure index 6ddfe4b5342..7f637c018c3 100755 --- a/configure +++ b/configure @@ -1166,12 +1166,12 @@ fi # detect rust triple =20 meson_version=3D$($meson --version) -if test "$rust" !=3D disabled && ! version_ge "$meson_version" 1.10.0; then +if test "$rust" !=3D disabled && ! version_ge "$meson_version" 1.12.0; then if test "$rust" =3D enabled; then $mkvenv ensuregroup --dir "${source_path}/python/wheels" \ ${source_path}/pythondeps.toml meson-rust || exit 1 else - echo "Rust needs Meson 1.10.0, disabling" 2>&1 + echo "Rust needs Meson 1.12.0, disabling" 2>&1 rust=3Ddisabled fi fi diff --git a/python/scripts/vendor.py b/python/scripts/vendor.py index 1bb59d863af..9b4c763f9ec 100755 --- a/python/scripts/vendor.py +++ b/python/scripts/vendor.py @@ -41,8 +41,8 @@ def main() -> int: parser.parse_args() =20 packages =3D { - "meson=3D=3D1.11.1": - "9b3a023657e393dbc5335b95c561337d49b7a458f5541e47ec44f2cc566e0d80", + "meson=3D=3D1.12.0": + "71f133147fa0fcfe8f4df49fa1045771064947834538409e5d97b3613aac8b4e", "qemu.qmp=3D=3D0.0.6": "5d7c5af0e9de427696e3bf72e333965c3a697929f77f6b7ddc30c989fc7b539b", "pycotap=3D=3D1.3.1": diff --git a/pythondeps.toml b/pythondeps.toml index bef88d49a6e..061f0cff0c4 100644 --- a/pythondeps.toml +++ b/pythondeps.toml @@ -19,12 +19,12 @@ =20 [meson] # The install key should match the version in python/wheels/ -meson =3D { accepted =3D ">=3D1.5.0", installed =3D "1.11.1", canary =3D "= meson" } +meson =3D { accepted =3D ">=3D1.5.0", installed =3D "1.12.0", canary =3D "= meson" } pycotap =3D { accepted =3D ">=3D1.1.0", installed =3D "1.3.1" } =20 [meson-rust] # The install key should match the version in python/wheels/ -meson =3D { accepted =3D ">=3D1.11.0", installed =3D "1.11.1", canary =3D = "meson" } +meson =3D { accepted =3D ">=3D1.12.0", installed =3D "1.12.0", canary =3D = "meson" } =20 [docs] # Please keep the installed versions in sync with docs/requirements.txt --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244911; cv=none; d=zohomail.com; s=zohoarc; b=OLBkTIgeMrHjBTbNndpHJhXQZ5WWil9jXeTTS+7LnBD89favW1JLbjR3sqkmJoV93WX/GJ9ZxqBGLBw3av4kFgqhrwmGEiz5x/E35O273bTkPFRhDjlR1XmFKlJJcb3xtwvXbTdlK3X2L9nMsflIiMc0rP8+5K1bqwEnt3ZW0Ek= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244911; h=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=grbbqIO9jjVpbq7Q90v8npzwn7LTzv2DIl2/Aovo9vo=; b=EcSyT2O35Be1hCQQCnCsNbhzE6THbNs4JAMoV/7PVEIBooA8VtC3GIHOe1PlR1hoR7/uNuQZWZHyM+BZxb3PMAhCwvWLcs9nSkw29Mnmacext/N5JSXSm+sg3x0Jdvfm/hTCX3jPUzqJ5CeSWNBgVNqq8DRLx9dlw0EmvsSmPsQ= 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 17872449116111.8977701951257586; Thu, 20 Aug 2026 09:55:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5zn-0000tN-Ep; Thu, 20 Aug 2026 12:52:03 -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 1wx5zl-0000kH-75 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52:01 -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 1wx5zj-0005m5-HM for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52:00 -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-554-gzMeCXPNPkyW_qwQJCcZeQ-1; Thu, 20 Aug 2026 12:51:57 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-496c06ba017so8343575e9.0 for ; Thu, 20 Aug 2026 09:51:57 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499affa25acsm94903345e9.4.2026.08.20.09.51.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:51:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244719; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=grbbqIO9jjVpbq7Q90v8npzwn7LTzv2DIl2/Aovo9vo=; b=gb6KhF2+sRlNIhpoeeIWDLedSzuahV8Qy2OOU5z6TvSEcKxFBFiG917lNqaTPc9tFnlwtX aIXLgiL6XJ2eF/CV8XqDQx0TqLHj71jY4Qtw/ZQaSzFBVin69beNZP4KmWBml2oX2T15NY KY7PVSPtjOLHQE1jINsWZ21SHYSvJLo= X-MC-Unique: gzMeCXPNPkyW_qwQJCcZeQ-1 X-Mimecast-MFC-AGG-ID: gzMeCXPNPkyW_qwQJCcZeQ_1787244716 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244716; x=1787849516; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=grbbqIO9jjVpbq7Q90v8npzwn7LTzv2DIl2/Aovo9vo=; b=hdBjLeazDJ1aT9QKkrKLvnqKe6bWaG0Yj3vcPygPTUlvNqsaNk0g1/Kpmk0x8tjXGN 0VnjgDx9/s682uEtHw7r0I3LjU2sq5PrJ/YaT6JsPMPXySYzD8kDAjjQ0MKIUW7NAHaQ blBP6RrvVSfPwVkMwT89Wsf7VNpM8Kgcwm5jG6RbVttr2fEUVh0Xdi5gQMbq/IzIcatQ vVPy1mEPiTpEtVHJ8ueKC6iR+xqeYXM2x2OG+pSP/qOf07+L7lkmETKYjwf7oHIgB1Gj ZKxDrHssQDrFodPdwGd5Aeer+8uibr0/SrK7kfwQhD0F41QuSFQSMy6wbkzyOwH44uxA 3hwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244716; x=1787849516; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=grbbqIO9jjVpbq7Q90v8npzwn7LTzv2DIl2/Aovo9vo=; b=OGYK9oP6nLuK/2chZvEb87+oZLWg6U25kcxfSyxYJXJbGdzCr5p4CfSsiin69OLgQf yyGyUg1O1Qv6LBXuxT8pEWoW1wPRPFEQ18mLirMbMtqqga1fTNiv3RG7qEpWBhv/s1uC kSUuqpP/olewcjUsT69C0Hz7YGSXo57hLnelsvV5HL1mTQEUYFtqKB86RVZcNE/bkSee uZh9+MAOhF2xS8h7qYFrlHj0JEhvM4Y9ZRwBNCuiOMoYQLlCtw4lVXmWcMFtDF2aVpxe +TM/Q038JuKQLQ5tPGkeenqMdjDdpbblJ2FIjwTTYqYuOAWS2SrWhga9y/9jk7R3TJXx zSIA== X-Gm-Message-State: AOJu0YzgZuvizEM8/M4XGxstkfsKy+x120MwaUbzCqwv4iAwxxVOHmVL QJGsGY/nIw+++Nflhq/8VtIFFsledX+cScP2tZ4iKjb2q9VWaodEvdKgHClkDDKzfIUni3VbT/V yDsAQ4JWPh9zPhjjj8CRaTXq6iKG2JJZRsUiL3SYdZ3jAUMA+XV9j1bPXf7lLmUL40FfPzFedhw meUo6HAZ5BHg18vRQkRj7+UOx9BBz++71eyMYF8TJj X-Gm-Gg: AR+sD12eyOXyCPD0Am+EDCFHeHW3DiHwE1fTcU8CAZMBuxfSVFXL6I9Gbk1g4LBE4wn JbEyc7//NQmB/J8azCMwE6pXnAl5CwUQCFA+7LUiS7GfcLb2eXBRfN6WDJyHkizuv5WZx5UIEgc XZ2bm4EWbHLKQryqs3xwzp/2asDS6HGAtzFZSMdDqx/n0o031DwWLj/cgLRSwQl20vHpygx3k0o /+lnS2tUBFdGskrvfl2B66PTfjW3Jf+mlTsZP5tEZsij13illFW6WDGwiCxgDXn+/VXvwYj3olL W1N9sLDTjzhOi0Ftgub9pjbBBmSPNFlZY21pxyq1GAMU7gbVUOoIrXrY/y6TT+Uhzv3rZBbC94A 9SCZI2G/5GBJLYxMuvtIBUwgR7u3laV7+igeqwajD6Ttdvaxiodlu1ZPa311nUck0SDwHXgGtqG kHmeM= X-Received: by 2002:a05:600c:c4b8:b0:499:a5cb:b7c0 with SMTP id 5b1f17b1804b1-499b06adfaamr41341215e9.3.1787244716144; Thu, 20 Aug 2026 09:51:56 -0700 (PDT) X-Received: by 2002:a05:600c:c4b8:b0:499:a5cb:b7c0 with SMTP id 5b1f17b1804b1-499b06adfaamr41340675e9.3.1787244715780; Thu, 20 Aug 2026 09:51:55 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Nguyen Dinh Phi Subject: [PULL 42/53] rust/bits: Align SubAssign behavior with Sub Date: Thu, 20 Aug 2026 18:49:45 +0200 Message-ID: <20260820164957.1895963-43-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787244912487158500 Content-Type: text/plain; charset="utf-8" From: Nguyen Dinh Phi Update SubAssign to perform a bit-clear operation instead of arithmetic subtraction, matching the behavior of Sub. Signed-off-by: Nguyen Dinh Phi Link: https://lore.kernel.org/r/20260802170346.3493821-2-phind.uet@gmail.com Signed-off-by: Paolo Bonzini --- rust/bits/src/lib.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/rust/bits/src/lib.rs b/rust/bits/src/lib.rs index d1141f7c882..60b63f969dc 100644 --- a/rust/bits/src/lib.rs +++ b/rust/bits/src/lib.rs @@ -320,7 +320,7 @@ fn sub(self, rhs: $struct_name) -> Self::Output { =20 impl ::std::ops::SubAssign<$struct_name> for $struct_name { fn sub_assign(&mut self, rhs: $struct_name) { - self.0 =3D self.0 - rhs.0 + self.0 &=3D !rhs.0 } } =20 @@ -443,4 +443,11 @@ pub fn test_xor() { InterruptMask::OE | InterruptMask::PE | InterruptMask::FE ); } + + #[test] + pub fn test_sub_assign() { + let mut op1 =3D InterruptMask::E; + op1 -=3D InterruptMask::RI; + assert_eq!(op1, InterruptMask::E - InterruptMask::RI); + } } --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244770; cv=none; d=zohomail.com; s=zohoarc; b=YBkOZ1oHNXRiUHZy1SvDZLDV+UbNY7Yr8F/hvsUEan8knV/NHCLGhHJ7dZC1Aingk9pQ7BgqqflFrhJ0vYxv1CfWqmaiS0cFktrJvHC4Yl5Cd2WReXbIQSTZOnGzRzJIIfEOmkTify187p93QHP23qJWWS62CRdiJABbxPy6sgY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244770; h=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=RxNRiJVA7E+GGf/dhgdT99BwGl1cbWrRLb+kygYE3XU=; b=d3unCOgVQpAK2d9Vta94ZQ//0m5k2pQvFnJ1TxfZZEE1o6T1/0Bf33uQAWlBjNnC/fOkXNPCRnlkQuffySwhBRk3d007OeTtfPzECfsDaYQ1PAp+Ut+URaCJzQNUKswvAdI8JnzgDuBadTuFL07rH2QKxqGZy0ygI9pK9rZMMXQ= 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 1787244770781346.0730668587303; Thu, 20 Aug 2026 09:52:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5zo-0000wU-Jr; Thu, 20 Aug 2026 12:52: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 1wx5zn-0000uZ-SW for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52:03 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx5zm-0005mJ-5T for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52:03 -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-91-C78f55TIMV6qmRCZAlacaA-1; Thu, 20 Aug 2026 12:52:00 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-499574e98a1so165975e9.3 for ; Thu, 20 Aug 2026 09:51:59 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499a9e78496sm167740515e9.2.2026.08.20.09.51.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:51:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244721; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=RxNRiJVA7E+GGf/dhgdT99BwGl1cbWrRLb+kygYE3XU=; b=P+aVaGyZ4VF6p35l5DQm7XFW8k8kCjzJJ1rw+ARjNNCmCQqTiWEJFMxY9PvhO4OAyOCxVp FWrGx3twMwA+eKra18B8yyCwZ5+1Pjv/g+h+JMzKHQ1jYe4eFFduUzMltdIckYMcdfWG7U ydOP5WgjKFgWNVzQAWImv/tsIDEfwFQ= X-MC-Unique: C78f55TIMV6qmRCZAlacaA-1 X-Mimecast-MFC-AGG-ID: C78f55TIMV6qmRCZAlacaA_1787244718 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244718; x=1787849518; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=RxNRiJVA7E+GGf/dhgdT99BwGl1cbWrRLb+kygYE3XU=; b=QmPy2mcG0SL5yN9Odr9x02Ol0pbvm/duG2IA4PMuP3/vu+q6g6ZhD+XYjzVceeVJ6j IAu8uzMy+owLlIxTavjYNDP0vbkZutiQHv96HAz+CjyQudfWGSZ6TatwhyJAy4T8P3Q8 CS8eqQ2y2SWymVF9+4lPYIRGDE1/e40awfDY9TddtBnFdbbPgEvKCzxXKtgNcmnxp9lC PuRzzN0czBXZF8TkJ6XCiDrex9sZ0QYpcnFF8fLrd67eaLN5ofbdrZWSJFvJdzdgCdY/ N365HR8TRSmNCvqp9IuXJrR1fv35oll0QJ7GzuZdRlANgNSBipXfHhbr3JH8TPqhbtBA bYjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244718; x=1787849518; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=RxNRiJVA7E+GGf/dhgdT99BwGl1cbWrRLb+kygYE3XU=; b=LjW9nYFuF8VAUaqqRyBlyaZwfusghB9Ew75w52uCqV81YWROFsywPCZIpFq64KKHjB LIT35C7NTQ3xLV59bHGjx7ObTC92zZhJKeFGEJDBg8W9e8wh/ezmW8VC8lbk1kBgwypD KcZHtRAyH07n6yDOj342oemjTPByde3jZOrbpGNqf9XXV7tpTfdRrd8yh4wcX+H1Fxdo CmgyxketkLQWy1sALh9A1EJCjijLMlB4Mr7VRnjFuoZn875DjlYxjKHB/17AOichG50h sS67+ydOB54o8QjyvOn0+lUAhGfx0yBw4bKbLbIQRYdIbSY1RSIXQKm0UqTMl/p9uy2x 74Gw== X-Gm-Message-State: AOJu0Yzg4+uMnz8mLDqiQ1Cn33O+kNmSnduT6gvHJjiVNV9TqufphKjM VwKDWo+Q0wdsUBcNMTmr5DLLOx9Hix7AwOp0PMUG/g6t9+tqodn9pIKZNi2spH78Rq6PqAk1DJE kfXQgIX3pMMNEgufNgaoaLl6KquiJobplyeR+QKWEmm76TIVq2WHsYXjWdvjvdJL3Qix2O4Z1D0 dXM6ipnMO4t8PI05BfVD2/BuHIn+++kql7ZJWLKA12 X-Gm-Gg: AR+sD10Fj+pvPUOvBJ+lZeSBx6gbxJvLBIV5AK6bflMF2ck577uxsL6TXDBgFpvPrlN cGVqesNy2aEXWOLgbbdUAy/aCiJJ1dCAEfI4lz5/q6OvcCv0kLV+3+xx5JBLXOsFbtyfigKt5Sl fC5gk8VTW7kvMVc/Kbax+PoC8WHSk4Yw/pVbXyeyxQEyBPb2Oixso1rc+kWotlNvyPACibbIedZ C2IjGrft1EXWcguDFK29d1SV9wxBQQMwcOdFKeV/jleJUp0CjRvRFQ3Ws6gG0UWy7AvtW+R9PZ7 KqMEZNBWHcAPi/Gs/h8F7F6nZCxMNuKrl6EiuPCLge6vUM8plluOZldiNhlFMUdd3UT936Oz3lP C7KmsgCBRRQHLfOvGOqYuCezI5vz6/Iu4s+8KoG1ZbMIISqI6bsfo+FLL5M38vbFXvnVxECjx+e MzXiU= X-Received: by 2002:a05:600c:19cc:b0:499:9240:9a1c with SMTP id 5b1f17b1804b1-499b847725emr3358705e9.15.1787244718001; Thu, 20 Aug 2026 09:51:58 -0700 (PDT) X-Received: by 2002:a05:600c:19cc:b0:499:9240:9a1c with SMTP id 5b1f17b1804b1-499b847725emr3357635e9.15.1787244717536; Thu, 20 Aug 2026 09:51:57 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Nguyen Dinh Phi Subject: [PULL 43/53] rust/bits: Use checked_ilog2() in Binary::format to avoid panic Date: Thu, 20 Aug 2026 18:49:46 +0200 Message-ID: <20260820164957.1895963-44-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787244771896158500 Content-Type: text/plain; charset="utf-8" From: Nguyen Dinh Phi ilog2() panics when VALID__ is 0 on empty bits. Switch to checked_ilog2() to handle zero safely. Signed-off-by: Nguyen Dinh Phi Link: https://lore.kernel.org/r/20260802170346.3493821-3-phind.uet@gmail.com Signed-off-by: Paolo Bonzini --- rust/bits/src/lib.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/rust/bits/src/lib.rs b/rust/bits/src/lib.rs index 60b63f969dc..5769bc761ac 100644 --- a/rust/bits/src/lib.rs +++ b/rust/bits/src/lib.rs @@ -215,7 +215,9 @@ pub const fn invert(self) -> Self { impl ::std::fmt::Binary for $struct_name { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt= ::Result { // If no width, use the highest valid bit - let width =3D f.width().unwrap_or((Self::VALID__.ilog2() += 1) as usize); + let width =3D f + .width() + .unwrap_or(Self::VALID__.checked_ilog2().map_or(1, |bi= t| (bit + 1) as usize)); write!(f, "{:0>width$.precision$b}", self.0, width =3D width, precision =3D f.precision().unwrap_or(width)) @@ -412,6 +414,12 @@ pub struct InterruptMask(u32) { } } =20 + bits! { + pub struct EmptyMask(u32) { + NONE =3D 0, + } + } + #[test] pub fn test_not() { assert_eq!( @@ -450,4 +458,9 @@ pub fn test_sub_assign() { op1 -=3D InterruptMask::RI; assert_eq!(op1, InterruptMask::E - InterruptMask::RI); } + + #[test] + pub fn test_bit_display_empty() { + assert_eq!(format!("{:b}", EmptyMask::NONE), "0"); + } } --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244934; cv=none; d=zohomail.com; s=zohoarc; b=J45xtuGNdHKWapet4YogdvS3lj7UuHGyQGehcBzR/PM+n0Vbr3GqRXuSvpH1BCoQoWfLDfns6F++JSnpKEdEEhcfcGI2qSzzcMdAK7hpVPhF+oRd0oXFHda1Hg622PIXr6Bo9wO7Bq4IALVXqqgAU0niG3vGwmm9VZaocCkVIDI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244934; 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=f2pZ3TNdmbGWedDLlhzGSJjXY8HLIJb58UA/0+I2Zf0=; b=lmG94jUQFqRXtxO+Equfvaqsg02ZdR9tKQwkm8JnYcSl9561AOsl5wGRhgAYRl+0siE/k6lF48RAkbX2Rjjhtb571k/0TUyUIfHr4oxMUhd2MZqxCKD4maElcX+tBwtpMwQb8hd6Z575gZbRISxoXbZM0u4KT21PjdgFFMhh3RQ= 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 1787244934333767.5918651503108; Thu, 20 Aug 2026 09:55:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx5zt-0001K8-TL; Thu, 20 Aug 2026 12:52: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 1wx5zq-00011T-0l for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52: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 1wx5zo-0005mk-C0 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52:05 -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-632-7Xzvb9NxNJ6ka9Umcrhs5g-1; Thu, 20 Aug 2026 12:52:01 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-47f835ac1aeso67226f8f.3 for ; Thu, 20 Aug 2026 09:52:01 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482b1441c78sm13886905f8f.2.2026.08.20.09.51.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:51:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244723; 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=f2pZ3TNdmbGWedDLlhzGSJjXY8HLIJb58UA/0+I2Zf0=; b=jTCqa+uBFjgOnIg853D2tZ7thPWI9k3OgSsi3X/yumoump2pgIBpDq/VQUKhUv46deMT2N r2/7ClqgHc5/k72li3yRf4jpa636WWYj6i74mUCSBEDXeH0OMuZqD8mlEWaiIk7R4rzT9B xq2t2l/G8i4267ycXj2sBKfhaKvHju4= X-MC-Unique: 7Xzvb9NxNJ6ka9Umcrhs5g-1 X-Mimecast-MFC-AGG-ID: 7Xzvb9NxNJ6ka9Umcrhs5g_1787244721 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244720; x=1787849520; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=f2pZ3TNdmbGWedDLlhzGSJjXY8HLIJb58UA/0+I2Zf0=; b=mmDFd6ofulLsSV6nAZ3AHFCs9dMJvbhwpgEI2BxwZdHrMqm/sXrF/QL56szWppRi7Y NFvn7XAaCF11Avx7H/+7TySgl9QAknWy6ZM+xTxwUm5JK7RuBAJeRFtpKs23kQ1x1jw2 JOo7G4dQYgSWiBCy2rhZ09FJYe1elhnwBI038wi1FrVsPjJYFgTKMJE6Zv80BSxEa5N3 VxcF3ynZSqjnBEk39GF/OQdswhz/N3jojxI3OKkEhg4Uc4chh0o5V43PWuOHpUX8GzuZ bUbedtoqIo3xPaIqms3iXNWz4K0kacUb20+L+Vo9ZTOb4YGR+utrls94XZFRjpyFVAVG 2YAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244720; x=1787849520; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=f2pZ3TNdmbGWedDLlhzGSJjXY8HLIJb58UA/0+I2Zf0=; b=Qf3cZtVEZRGqyjWiZMujk9Ohy5IPkbUKcNl5NTUvLkbglm06ey5MXhCxctHaM+CLpj sgi3CTFvOHl9xHOjbKL98OLQjphBc1aTlumGgomvo5PgvNXOvizXZCXI4rje4XWZHlkF ToHljM8tGEXj2YO4Hn+pysgA6cbEYLrxDDt/v42kl8Ca6JbyD1M/g16NddXEOOaMTjgN BcP1RP4tXAH+bW0Tckp5Nu8gjUWQG5+EjmER+kzz+NtiLZYzEzUdZOuoBsxhb1ib5KdZ dRzi8X/le5MkTqs3eGyJLpH/4iO3INU9f6DAAn4uqiiZe7Z6D6pDMLTAGF3xTwNy1JQE pLYQ== X-Gm-Message-State: AFuF++mmTkQYxiYyAEgFYMbi51vs25LyF1GcN3LlNwpMCwzqUCBulHMR 2vVqCqSs++872/KSUZIu98nY32A7E5WgnOxZW7DF59l1bJZ/KMx3DjoWJrwf+opdbQ2tzm8VIzd imRNggTYOKR6JfPuHxkn6CtWT+o0FsTL/QqLF0fFT8E+pJThenad16+LN8qvf7TXM3EFIx/v9KF 8tCUQPP7xyaOEOkhH+Eu9xN45+B/lLQWpgTIQVCcvO X-Gm-Gg: AR+sD138lje5YYQStltyLGkyfkXGct9KBCtrty1yzW89hEM4kzavpReOHTpsBzJ5xI7 /s898tUhXshBFWjoO75aC+vBlGEYZy/nDkQnDDrGqfcCxDf66IQKMjNCKZnGitMvBmP+Ms7pmWG ua3dTLu7ILR2RQ0zjDflqO2JOASgsF3ohdt5myaeEeLPbi1alUXce/3TaehTWVxdz12F0xJczdG jW1SuXJmAg7Fp/w6HjSQbsmCiVWte04ebYFumCrdFrBuPxLreXjMH16sjdl8IizXaJy5VCieeL0 fgGuX07ne+ZemQV5rizY01DbOtD5EUzKaFaDJyU1iBg8Dn7h83fWMGKMfJH7dJJCJRzPv+es8Ui 3wcj9SdnuTPLG7Tb5sSVTojmHsiI/enNSvihC5y16hgTrw/ZTb0j/3vx/yIJsb9sFds/HQSVg/i oHfho= X-Received: by 2002:adf:e184:0:b0:482:a9c4:bfd6 with SMTP id ffacd0b85a97d-482c0b67a8cmr6399f8f.7.1787244720646; Thu, 20 Aug 2026 09:52:00 -0700 (PDT) X-Received: by 2002:adf:e184:0:b0:482:a9c4:bfd6 with SMTP id ffacd0b85a97d-482c0b67a8cmr6318f8f.7.1787244720288; Thu, 20 Aug 2026 09:52:00 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 44/53] rust: update Cargo.lock Date: Thu, 20 Aug 2026 18:49:47 +0200 Message-ID: <20260820164957.1895963-45-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787244934575158500 Apply change corresponding to bff64138882 ("rust: fix incorrect dependency in Cargo.toml", 2026-06-17). Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Paolo Bonzini --- rust/Cargo.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/Cargo.lock b/rust/Cargo.lock index cbb3ca15f77..c94c2386d94 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -184,7 +184,6 @@ dependencies =3D [ "glib-sys", "migration-sys", "qom-sys", - "system-sys", "util-sys", ] =20 @@ -431,6 +430,7 @@ version =3D "0.1.0" dependencies =3D [ "common", "glib-sys", + "hwcore-sys", "migration-sys", "qom-sys", "util-sys", --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244970; cv=none; d=zohomail.com; s=zohoarc; b=XVjd5TUeKq5LGKViDfORZ1mynsnwQGvEUR5uMR1Pnxp5uQBWG4kYNllCOHH6kvkStJGtMyq4pw67JV5tS6+Hnd0leIS/bK8AYd9dRVeDPnKYO0RVfBkfv8rgE8OZj2pVN4ym4NUp4J0OgzURST4B2G8tVksBYo58eC02jeozkt0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244970; 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=QSsgD2Y9i4WPQ2JqLpzZ2kgelaCPueWV8L/J1yXMePc=; b=TgMtz3atH5/LjbABx2QRa9P6RC/EH5Evq8MX3uMxMntIaGEnuz+DOgWHzFZnZ9NFFsnDga/kEykRBAOCfY3pUAd6IAPVLQjZD7yo3B5VVndJ3qZumVfcQsRMa6uubCnVIwzt/Qsbhr27Ctgt21VwrLnLkzlx0s+dZUCIUqFEg3M= 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 1787244970262430.38496105020045; Thu, 20 Aug 2026 09:56:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx60E-0001zi-JM; Thu, 20 Aug 2026 12:52: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 1wx603-0001UW-4N for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52:21 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx5zy-0005nL-Rp for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52:18 -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-675-bqLBtWXGMtSEiEk0XL1vaQ-1; Thu, 20 Aug 2026 12:52:07 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-49554715277so277765e9.1 for ; Thu, 20 Aug 2026 09:52:07 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499b29e19f2sm49162645e9.4.2026.08.20.09.52.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:52:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244734; 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=QSsgD2Y9i4WPQ2JqLpzZ2kgelaCPueWV8L/J1yXMePc=; b=KGvihxVuWT1zkyYVrS3OQ+Fbh6IoCaQEB8PFVUa4ALixbi+1XvdIPVC1JreqfYqa5V4Hvn m0CbzqNJ0T35NTntcNQ+pQGABYlHIkiBKV17IR723lPVxmUlKjIvx6zdhwYFAaiiKJR8VH JRRCzYfw+yeTMjU4/NQaAzoV+xyyV/U= X-MC-Unique: bqLBtWXGMtSEiEk0XL1vaQ-1 X-Mimecast-MFC-AGG-ID: bqLBtWXGMtSEiEk0XL1vaQ_1787244726 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244726; x=1787849526; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=QSsgD2Y9i4WPQ2JqLpzZ2kgelaCPueWV8L/J1yXMePc=; b=RqcRCeS2ijqoCzrDCdYR/T2vNBZmCGCzBMgB1ySarvpJoTbDUtf2ItuQybkHpGwUcQ OlM6QLGLX68WMKVIkdFVfU0GgGPhTuVc21YuYWQ/f0aDpM5WsQ2VmWztaxANwzn+7jdo 1dpbtZnU5i0NVE+dwJXPYhbNdNpdPfi7IJNRXRayp4FOCUpdxGBvciM5WxktXN3hUI0a gpnhIsz6iUgihp8+CvpNKtASSy+AcNUtFpc1VNFomjoSEeFe9h93YgHwRxL5Mpgf1NDd /5s03+6JLsXIX6YIh0DeS5198DWpf335nvM1AzFCZCxkAOymexNqzRKmKu/P1OedYnxB OW1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244726; x=1787849526; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=QSsgD2Y9i4WPQ2JqLpzZ2kgelaCPueWV8L/J1yXMePc=; b=Mb4y08HG2WYlyXlWxe5PCuZro0A1Ix5tXY94q/rnP+wCZLRGPC8TJTDA7Y5asQKgRE i4v6y0ftydn1Z50fFpxtmyzxU8W6Xit9ucczG01sGBJBAJ0+a/wgS5C5m40lDw1ESuGb j3m9V6Uss11snX0YM5llz7gpDAH4lIRK/GNqwvL4FH6HVDkMtccqUDpOX8CA/TH+7Jy7 elM2/ARGaeyu4/4PPzThfOY4HSsNGy43nutEUeQ13Q0Wvgt8FXZ0qgtDWn3cPcm28PZw a7VfPRvBXToTlzY/0RhfBNP3gnpNyOWOVw+wJHgB0a3Ne6A6kqqrxQxTURDKk9JfA8p3 4p3g== X-Gm-Message-State: AOJu0YzV6s2ri1+pGtD2Zxt7nlAUdvlQf4MLnymaQdmT7BP1k8IH8z0E /Zre7IsD8uOGPXQuc1U3n4MJSDhJ7GwMzZGmlasD3mfyT7bbPK+MA7fEgbiVZeYsiYXewHig12g XjhSlOSpcg4Q2yzmed7w7appeD2vpX2rtiX9AAJf1UzfrTLno32il8yt6VVDOWVGBl+2yO1faEU RSabmbLW2jNj8si6nFLtvQJFiVtHJ941ZDd78x/wsO X-Gm-Gg: AR+sD11Wu2I9yKwGDT3AUYkXMfjx1/y7sa9tnbf9JQnraAs+8YYtWo+pPOCxK0leAhI yfZJ084d+l2gZIYtmBTXF/eLZS9mltYw60pXl4TeaubFoIcPXEIOWpmx3tnHluLY+SNTWu53lyv 1FC1GyQlkXgIjvfWrkZSpV+FwRb927mdfKPEuGrijSwW1MJpJdp2Arh72+1khGvtNZXmKCWKTjn AnhDp31n7y4IIPAYlM+7NEV3526bAhJpHgoaMsInn/dw9TQSydhComk0XhmUuNlS5pBqWHvPp5Y 6NYVZkfPoo7lY8v9dPDaFPBAjpH6yggmZZJLljdLstlNssPhKOODfymf7bcaybmAHuBflRuCI31 4VzO8mpar05sIDvC019Ffdb10nW2bieH85/L33iCyVUDQXrHBeYTW3EkWs88DWHfY7FivpeZipU RMzzc= X-Received: by 2002:a05:600c:3485:b0:499:83f1:398 with SMTP id 5b1f17b1804b1-499b8343de0mr4227325e9.9.1787244725793; Thu, 20 Aug 2026 09:52:05 -0700 (PDT) X-Received: by 2002:a05:600c:3485:b0:499:83f1:398 with SMTP id 5b1f17b1804b1-499b8343de0mr4225595e9.9.1787244724868; Thu, 20 Aug 2026 09:52:04 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 45/53] rust: switch to cargo subprojects Date: Thu, 20 Aug 2026 18:49:48 +0200 Message-ID: <20260820164957.1895963-46-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787244972855158500 Let Meson parse Cargo.lock and Cargo.toml and figure out the set of Rust build dependencies. For now, the only change is that subprojects are retrieved with "cargo_ws.subproject('NAME')" instead of "subproject('NAME-API-rs')". However, just calling "import('rust').workspace()" enables extra functionality that operates by parsing Cargo.toml; it will be introduced a step at a time in subsequent commits. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Paolo Bonzini --- docs/devel/rust.rst | 8 ++--- meson.build | 3 +- .gitlab-ci.d/static_checks.yml | 4 +-- rust/Cargo.lock =3D> Cargo.lock | 0 rust/Cargo.toml =3D> Cargo.toml | 6 ++-- rust/meson.build | 37 +++++++-------------- subprojects/anyhow-1-rs.wrap | 2 +- subprojects/arbitrary-int-1-rs.wrap | 2 +- subprojects/attrs-0.2-rs.wrap | 2 +- subprojects/bilge-0.2-rs.wrap | 2 +- subprojects/bilge-impl-0.2-rs.wrap | 2 +- subprojects/either-1-rs.wrap | 2 +- subprojects/foreign-0.3-rs.wrap | 2 +- subprojects/glib-sys-0.21-rs.wrap | 2 +- subprojects/itertools-0.11-rs.wrap | 2 +- subprojects/libc-0.2-rs.wrap | 2 +- subprojects/probe-0.5-rs.wrap | 2 +- subprojects/proc-macro-error-1-rs.wrap | 2 +- subprojects/proc-macro-error-attr-1-rs.wrap | 2 +- subprojects/proc-macro2-1-rs.wrap | 2 +- subprojects/quote-1-rs.wrap | 2 +- subprojects/syn-2-rs.wrap | 2 +- subprojects/unicode-ident-1-rs.wrap | 2 +- 23 files changed, 40 insertions(+), 52 deletions(-) rename rust/Cargo.lock =3D> Cargo.lock (100%) rename rust/Cargo.toml =3D> Cargo.toml (97%) diff --git a/docs/devel/rust.rst b/docs/devel/rust.rst index 67ea84539a2..af142c4a694 100644 --- a/docs/devel/rust.rst +++ b/docs/devel/rust.rst @@ -26,14 +26,14 @@ are accustomed to the more "normal" Cargo-based develop= ment workflow. In particular: =20 * the set of warnings and lints that are used to build QEMU always - comes from the ``rust/Cargo.toml`` workspace file + comes from the ``Cargo.toml`` workspace file =20 * it is also possible to use ``cargo`` for common Rust-specific coding tasks, in particular to invoke ``clippy``, ``rustfmt`` and ``rustdoc``. =20 To this end, QEMU includes a ``build.rs`` build script that picks up generated sources from QEMU's build directory and puts it in Cargo's -output directory (typically ``rust/target/``). A vanilla invocation +output directory (typically ``target/``). A vanilla invocation of Cargo will complain that it cannot find the generated sources, which can be fixed in different ways: =20 @@ -475,8 +475,8 @@ files, it is still highly experimental and is therefore= not used. =20 Therefore, external crates must be added as subprojects for Meson to learn how to build them, as well as to the relevant ``Cargo.toml`` files. -The versions specified in ``rust/Cargo.lock`` must be the same as the -subprojects; note that the ``rust/`` directory forms a Cargo `workspace`__, +The versions specified in ``Cargo.lock`` must be the same as the +subprojects; note that the QEMU source tree forms a Cargo `workspace`__, and therefore there is a single lock file for the whole build. =20 __ https://doc.rust-lang.org/cargo/reference/workspaces.html#virtual-works= pace diff --git a/meson.build b/meson.build index 40e3f4ec44c..2a289960ee8 100644 --- a/meson.build +++ b/meson.build @@ -130,7 +130,8 @@ endif if have_rust rustc_args =3D [find_program('scripts/rust/rustc_args.py'), '--rustc-version', rustc.version(), - '--workspace', meson.project_source_root() / 'rust'] + '--workspace', meson.project_source_root()] + rustfmt =3D find_program('rustfmt', required: false) =20 rustc_lint_args =3D run_command(rustc_args, '--lints', diff --git a/.gitlab-ci.d/static_checks.yml b/.gitlab-ci.d/static_checks.yml index 61fe2fa39ab..568e56e1204 100644 --- a/.gitlab-ci.d/static_checks.yml +++ b/.gitlab-ci.d/static_checks.yml @@ -55,7 +55,7 @@ check-rust-tools-nightly: - source scripts/ci/gitlab-ci-section - section_start test "Running Rust code checks" - cd build - - pyvenv/bin/meson devenv -w ../rust ${CARGO-cargo} fmt --check + - pyvenv/bin/meson devenv -w ../ ${CARGO-cargo} fmt --check - make clippy - make rustdoc - section_end test @@ -69,7 +69,7 @@ check-rust-tools-nightly: when: on_success expire_in: 2 days paths: - - rust/target/doc + - target/doc =20 check-build-units: extends: .base_job_template diff --git a/rust/Cargo.lock b/Cargo.lock similarity index 100% rename from rust/Cargo.lock rename to Cargo.lock diff --git a/rust/Cargo.toml b/Cargo.toml similarity index 97% rename from rust/Cargo.toml rename to Cargo.toml index 0d24eb84e1c..0566850ecef 100644 --- a/rust/Cargo.toml +++ b/Cargo.toml @@ -1,9 +1,9 @@ [workspace] resolver =3D "2" members =3D [ - "hw/char/pl011", - "hw/timer/hpet", - "tests", + "rust/hw/char/pl011", + "rust/hw/timer/hpet", + "rust/tests", ] =20 [workspace.package] diff --git a/rust/meson.build b/rust/meson.build index b6711fe77dd..1622a50a978 100644 --- a/rust/meson.build +++ b/rust/meson.build @@ -4,31 +4,18 @@ else message('Rust enabled but it is only used by system emulators.') endif =20 -subproject('anyhow-1-rs', required: true) -subproject('bilge-0.2-rs', required: true) -subproject('bilge-impl-0.2-rs', required: true) -subproject('foreign-0.3-rs', required: true) -subproject('glib-sys-0.21-rs', required: true) -subproject('libc-0.2-rs', required: true) -subproject('probe-0.5-rs', required: true) - -anyhow_rs =3D dependency('anyhow-1-rs') -bilge_rs =3D dependency('bilge-0.2-rs') -bilge_impl_rs =3D dependency('bilge-impl-0.2-rs') -foreign_rs =3D dependency('foreign-0.3-rs') -glib_sys_rs =3D dependency('glib-sys-0.21-rs') -libc_rs =3D dependency('libc-0.2-rs') -probe_rs =3D dependency('probe-0.5-rs') - -subproject('proc-macro2-1-rs', required: true) -subproject('quote-1-rs', required: true) -subproject('syn-2-rs', required: true) -subproject('attrs-0.2-rs', required: true) - -quote_rs_native =3D dependency('quote-1-rs', native: true) -syn_rs_native =3D dependency('syn-2-rs', native: true) -proc_macro2_rs_native =3D dependency('proc-macro2-1-rs', native: true) -attrs_rs_native =3D dependency('attrs-0.2-rs', native: true) +cargo_ws =3D import('rust').workspace() +anyhow_rs =3D cargo_ws.subproject('anyhow').dependency() +bilge_rs =3D cargo_ws.subproject('bilge').dependency() +bilge_impl_rs =3D cargo_ws.subproject('bilge-impl').dependency() +foreign_rs =3D cargo_ws.subproject('foreign').dependency() +glib_sys_rs =3D cargo_ws.subproject('glib-sys').dependency() +libc_rs =3D cargo_ws.subproject('libc').dependency() +probe_rs =3D cargo_ws.subproject('probe').dependency() +quote_rs_native =3D cargo_ws.subproject('quote').dependency() +syn_rs_native =3D cargo_ws.subproject('syn').dependency() +proc_macro2_rs_native =3D cargo_ws.subproject('proc-macro2').dependency() +attrs_rs_native =3D cargo_ws.subproject('attrs').dependency() =20 genrs =3D [] =20 diff --git a/subprojects/anyhow-1-rs.wrap b/subprojects/anyhow-1-rs.wrap index a69a3645b49..fb4603e74c8 100644 --- a/subprojects/anyhow-1-rs.wrap +++ b/subprojects/anyhow-1-rs.wrap @@ -3,5 +3,5 @@ directory =3D anyhow-1.0.98 source_url =3D https://crates.io/api/v1/crates/anyhow/1.0.98/download source_filename =3D anyhow-1.0.98.tar.gz source_hash =3D e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969b= dcd487 -#method =3D cargo +method =3D cargo patch_directory =3D anyhow-1-rs diff --git a/subprojects/arbitrary-int-1-rs.wrap b/subprojects/arbitrary-in= t-1-rs.wrap index a1838b20b0f..f8d7c68da64 100644 --- a/subprojects/arbitrary-int-1-rs.wrap +++ b/subprojects/arbitrary-int-1-rs.wrap @@ -3,7 +3,7 @@ directory =3D arbitrary-int-1.2.7 source_url =3D https://crates.io/api/v1/crates/arbitrary-int/1.2.7/download source_filename =3D arbitrary-int-1.2.7.tar.gz source_hash =3D c84fc003e338a6f69fbd4f7fe9f92b535ff13e9af8997f3b14b6ddff8b= 1df46d -#method =3D cargo +method =3D cargo patch_directory =3D arbitrary-int-1-rs =20 # bump this version number on every change to meson.build or the patches: diff --git a/subprojects/attrs-0.2-rs.wrap b/subprojects/attrs-0.2-rs.wrap index cd43c91d63e..4ff4c424e6b 100644 --- a/subprojects/attrs-0.2-rs.wrap +++ b/subprojects/attrs-0.2-rs.wrap @@ -3,5 +3,5 @@ directory =3D attrs-0.2.9 source_url =3D https://crates.io/api/v1/crates/attrs/0.2.9/download source_filename =3D attrs-0.2.9.tar.gz source_hash =3D 2a207d40f43de65285f3de0509bb6cb16bc46098864fce957122bbacce= 327e5f -#method =3D cargo +method =3D cargo patch_directory =3D attrs-0.2-rs diff --git a/subprojects/bilge-0.2-rs.wrap b/subprojects/bilge-0.2-rs.wrap index 900bb1497b9..cb202cfd9fe 100644 --- a/subprojects/bilge-0.2-rs.wrap +++ b/subprojects/bilge-0.2-rs.wrap @@ -3,7 +3,7 @@ directory =3D bilge-0.2.0 source_url =3D https://crates.io/api/v1/crates/bilge/0.2.0/download source_filename =3D bilge-0.2.0.tar.gz source_hash =3D dc707ed8ebf81de5cd6c7f48f54b4c8621760926cdf35a57000747c512= e67b57 -#method =3D cargo +method =3D cargo patch_directory =3D bilge-0.2-rs =20 # bump this version number on every change to meson.build or the patches: diff --git a/subprojects/bilge-impl-0.2-rs.wrap b/subprojects/bilge-impl-0.= 2-rs.wrap index 4f84eca1ccd..b3dbfafb265 100644 --- a/subprojects/bilge-impl-0.2-rs.wrap +++ b/subprojects/bilge-impl-0.2-rs.wrap @@ -3,7 +3,7 @@ directory =3D bilge-impl-0.2.0 source_url =3D https://crates.io/api/v1/crates/bilge-impl/0.2.0/download source_filename =3D bilge-impl-0.2.0.tar.gz source_hash =3D feb11e002038ad243af39c2068c8a72bcf147acf05025dcdb916fcc000= adb2d8 -#method =3D cargo +method =3D cargo patch_directory =3D bilge-impl-0.2-rs =20 # bump this version number on every change to meson.build or the patches: diff --git a/subprojects/either-1-rs.wrap b/subprojects/either-1-rs.wrap index 352e11cfee6..1c74a95645f 100644 --- a/subprojects/either-1-rs.wrap +++ b/subprojects/either-1-rs.wrap @@ -3,7 +3,7 @@ directory =3D either-1.12.0 source_url =3D https://crates.io/api/v1/crates/either/1.12.0/download source_filename =3D either-1.12.0.tar.gz source_hash =3D 3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb233= 85b58b -#method =3D cargo +method =3D cargo patch_directory =3D either-1-rs =20 # bump this version number on every change to meson.build or the patches: diff --git a/subprojects/foreign-0.3-rs.wrap b/subprojects/foreign-0.3-rs.w= rap index 0d218ec2c25..a5fec6c09df 100644 --- a/subprojects/foreign-0.3-rs.wrap +++ b/subprojects/foreign-0.3-rs.wrap @@ -3,5 +3,5 @@ directory =3D foreign-0.3.1 source_url =3D https://crates.io/api/v1/crates/foreign/0.3.1/download source_filename =3D foreign-0.3.1.tar.gz source_hash =3D 17ca1b5be8c9d320daf386f1809c7acc0cb09accbae795c2001953fa50= 585846 -#method =3D cargo +method =3D cargo patch_directory =3D foreign-0.3-rs diff --git a/subprojects/glib-sys-0.21-rs.wrap b/subprojects/glib-sys-0.21-= rs.wrap index 313ced731ac..f4e1514af57 100644 --- a/subprojects/glib-sys-0.21-rs.wrap +++ b/subprojects/glib-sys-0.21-rs.wrap @@ -3,5 +3,5 @@ directory =3D glib-sys-0.21.2 source_url =3D https://crates.io/api/v1/crates/glib-sys/0.21.2/download source_filename =3D glib-sys-0.21.2.tar.gz source_hash =3D d09d3d0fddf7239521674e57b0465dfbd844632fec54f059f7f56112e3= f927e1 -#method =3D cargo +method =3D cargo patch_directory =3D glib-sys-0.21-rs diff --git a/subprojects/itertools-0.11-rs.wrap b/subprojects/itertools-0.1= 1-rs.wrap index ee12d0053bc..6fe89d17caa 100644 --- a/subprojects/itertools-0.11-rs.wrap +++ b/subprojects/itertools-0.11-rs.wrap @@ -3,7 +3,7 @@ directory =3D itertools-0.11.0 source_url =3D https://crates.io/api/v1/crates/itertools/0.11.0/download source_filename =3D itertools-0.11.0.tar.gz source_hash =3D b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418= c3fe57 -#method =3D cargo +method =3D cargo patch_directory =3D itertools-0.11-rs =20 # bump this version number on every change to meson.build or the patches: diff --git a/subprojects/libc-0.2-rs.wrap b/subprojects/libc-0.2-rs.wrap index bbe08f87883..488330178ed 100644 --- a/subprojects/libc-0.2-rs.wrap +++ b/subprojects/libc-0.2-rs.wrap @@ -3,5 +3,5 @@ directory =3D libc-0.2.162 source_url =3D https://crates.io/api/v1/crates/libc/0.2.162/download source_filename =3D libc-0.2.162.tar.gz source_hash =3D 18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01= 506398 -#method =3D cargo +method =3D cargo patch_directory =3D libc-0.2-rs diff --git a/subprojects/probe-0.5-rs.wrap b/subprojects/probe-0.5-rs.wrap index 73229ee1c29..d3c6b187244 100644 --- a/subprojects/probe-0.5-rs.wrap +++ b/subprojects/probe-0.5-rs.wrap @@ -3,5 +3,5 @@ directory =3D probe-0.5.2 source_url =3D https://crates.io/api/v1/crates/probe/0.5.2/download source_filename =3D probe-0.5.2.tar.gz source_hash =3D 136558b6e1ebaecc92755d0ffaf9421f519531bed30cc2ad23b22cb009= 65cc5e -#method =3D cargo +method =3D cargo patch_directory =3D probe-0.5-rs diff --git a/subprojects/proc-macro-error-1-rs.wrap b/subprojects/proc-macr= o-error-1-rs.wrap index 59f892f7825..4f300c3ac41 100644 --- a/subprojects/proc-macro-error-1-rs.wrap +++ b/subprojects/proc-macro-error-1-rs.wrap @@ -3,7 +3,7 @@ directory =3D proc-macro-error-1.0.4 source_url =3D https://crates.io/api/v1/crates/proc-macro-error/1.0.4/down= load source_filename =3D proc-macro-error-1.0.4.tar.gz source_hash =3D da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a= 5ce38c -#method =3D cargo +method =3D cargo patch_directory =3D proc-macro-error-1-rs =20 # bump this version number on every change to meson.build or the patches: diff --git a/subprojects/proc-macro-error-attr-1-rs.wrap b/subprojects/proc= -macro-error-attr-1-rs.wrap index 5aeb224a103..739e451c37b 100644 --- a/subprojects/proc-macro-error-attr-1-rs.wrap +++ b/subprojects/proc-macro-error-attr-1-rs.wrap @@ -3,7 +3,7 @@ directory =3D proc-macro-error-attr-1.0.4 source_url =3D https://crates.io/api/v1/crates/proc-macro-error-attr/1.0.4= /download source_filename =3D proc-macro-error-attr-1.0.4.tar.gz source_hash =3D a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b= 35f869 -#method =3D cargo +method =3D cargo patch_directory =3D proc-macro-error-attr-1-rs =20 # bump this version number on every change to meson.build or the patches: diff --git a/subprojects/proc-macro2-1-rs.wrap b/subprojects/proc-macro2-1-= rs.wrap index 0f06cd8e111..3600f4eb191 100644 --- a/subprojects/proc-macro2-1-rs.wrap +++ b/subprojects/proc-macro2-1-rs.wrap @@ -3,7 +3,7 @@ directory =3D proc-macro2-1.0.95 source_url =3D https://crates.io/api/v1/crates/proc-macro2/1.0.95/download source_filename =3D proc-macro2-1.0.95.0.tar.gz source_hash =3D 02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76= e7f778 -#method =3D cargo +method =3D cargo patch_directory =3D proc-macro2-1-rs =20 # bump this version number on every change to meson.build or the patches: diff --git a/subprojects/quote-1-rs.wrap b/subprojects/quote-1-rs.wrap index 8b721dfa00b..10626be6521 100644 --- a/subprojects/quote-1-rs.wrap +++ b/subprojects/quote-1-rs.wrap @@ -3,7 +3,7 @@ directory =3D quote-1.0.36 source_url =3D https://crates.io/api/v1/crates/quote/1.0.36/download source_filename =3D quote-1.0.36.0.tar.gz source_hash =3D 0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208= acaca7 -#method =3D cargo +method =3D cargo patch_directory =3D quote-1-rs =20 # bump this version number on every change to meson.build or the patches: diff --git a/subprojects/syn-2-rs.wrap b/subprojects/syn-2-rs.wrap index 1e5e9d9fb6e..db6576f5812 100644 --- a/subprojects/syn-2-rs.wrap +++ b/subprojects/syn-2-rs.wrap @@ -3,7 +3,7 @@ directory =3D syn-2.0.104 source_url =3D https://crates.io/api/v1/crates/syn/2.0.104/download source_filename =3D syn-2.0.104.0.tar.gz source_hash =3D 17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b= 435a40 -#method =3D cargo +method =3D cargo patch_directory =3D syn-2-rs =20 # bump this version number on every change to meson.build or the patches: diff --git a/subprojects/unicode-ident-1-rs.wrap b/subprojects/unicode-iden= t-1-rs.wrap index 50988f612e2..b420ebfe1f4 100644 --- a/subprojects/unicode-ident-1-rs.wrap +++ b/subprojects/unicode-ident-1-rs.wrap @@ -3,7 +3,7 @@ directory =3D unicode-ident-1.0.12 source_url =3D https://crates.io/api/v1/crates/unicode-ident/1.0.12/downlo= ad source_filename =3D unicode-ident-1.0.12.tar.gz source_hash =3D 3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec= 0fee4b -#method =3D cargo +method =3D cargo patch_directory =3D unicode-ident-1-rs =20 # bump this version number on every change to meson.build or the patches: --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244918; cv=none; d=zohomail.com; s=zohoarc; b=BQ48xdxeynDKg3Uuqk2P+fbXz2DMmaRvdIJZxxBufmFxv088x4eT44rND2e7miqtHgw/vmixbJStUrQsDZaZ7S8uOABbxBE28ChvkgzQJmYX18yOge9TP2MT4hLb5/LLkziEZXp+m5pfpY+ip5sGPuJH1iDVZC838PH039NeSV4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244918; 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=HVioBH5QCJwrJt+MZmLrqmPfuXJxmj4/iSlks8B/NvY=; b=R2O2ydq7UBPSuwCCDzuu//H2BHV9KnbZNY0omFdFE1vYyDzHIz+gouw5KDqqg/aI5mz8+Xx85jr4tAzLOtiET+jQvloU3mBfeX7LtUrlOa5pB5QBf9O1dV6jRO/HzfPgH2St+l0u5JJ7I2gwTFM+pCkvmn99Wl3B+FnZuVZ2+FA= 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 17872449182211008.2333281634361; Thu, 20 Aug 2026 09:55:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx60F-0002BJ-U8; Thu, 20 Aug 2026 12:52: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 1wx605-0001V7-E2 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52: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 1wx600-0005nc-NQ for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52:21 -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-452-zTFjLz4_PeWQ4NnJBS9znQ-1; Thu, 20 Aug 2026 12:52:09 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4994cf6cdb9so167145e9.3 for ; Thu, 20 Aug 2026 09:52:09 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499aa0dd620sm142821855e9.13.2026.08.20.09.52.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:52:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244736; 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=HVioBH5QCJwrJt+MZmLrqmPfuXJxmj4/iSlks8B/NvY=; b=PmLBpCFPXZF+e9DdWhsc4IFd5fO/68kt2JVhZaHUXj28Jm+6/Dw2ufUyaqs/IWh+uNCaeb icV3j6YYGY13GGVlSS2GP3kS7Ieef4Fdg6JTJ5fkNdlSVHkDgEzI48SFo9lhQpuZUpJN3J xwYqNZ3Ui9CoxhsK/DJ2d+Tw7vv6yMQ= X-MC-Unique: zTFjLz4_PeWQ4NnJBS9znQ-1 X-Mimecast-MFC-AGG-ID: zTFjLz4_PeWQ4NnJBS9znQ_1787244728 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244728; x=1787849528; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=HVioBH5QCJwrJt+MZmLrqmPfuXJxmj4/iSlks8B/NvY=; b=CGy8B68ZHTM9bc6LBdxZTpRoujbOU9ujcSvnr5n443/PyzKpPqKZXbzBYa3G9gac4N 9dMzOyBwbYkcSPFDn/I/83AX5QqaGjA7exnuPbn8ERsybRJpkCTDo6n4BnFsi0YUFYP+ 7VcnQ+tkN2EfaUwiBQ9SZf4Fr0o1cEz6qhxKzXsJDcIQVuC0KXaq6NBN+Y1qjU9VgwOU NIcRLzPYX12A6U3W4qi/iO5lH9MNev0y1oNlgzwT/ELBxnGDeF0Z763QqWi5FYjh/A1R mtJB/Sp+RscR6teu+skl6By2my2mCVviX8DQartMKInHo6hhLCabLBVSj40qN2qXUNgq XlNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244728; x=1787849528; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=HVioBH5QCJwrJt+MZmLrqmPfuXJxmj4/iSlks8B/NvY=; b=DgXtCcg2uN243nbyQBmYTUhSj2yRV5qUTjhF4kIvL1UrdbsaLgGU/r4qKbaz/usnHK WMVcTGnB3wUA0xjNx6WF+dC/UwCnxcVLQGft7vOoVb/znxLtiEGokACFMZphxhyU56hh jjun8GcxfMGNcut6CMSub8qcGmJ3LttM0YGdiaES7xuA0ckaoV9T60NIHYkx7LB7bEz+ uXv+c9r/L1xs8Emwl5NIzQNzYpwUykeI6bWsN8aT87ge9z6CH2gIEmSzuor99nWXzw3z I+1RNoVrzpahARtiiKGcgJehgjOPOe7MJMkCprlarH29bZdZGsTfyOLuO4JWHdZfqJNR Ed8g== X-Gm-Message-State: AOJu0YxZoYQ2ivw6mndFCx/Nsh170q1xAZl1ALbhNYQVfCLFFceoIT5O wU6OtKGzmegh4NldvlctiFwmY6YgFOzBKVcKiezrH+gUoyYCHfhDHQf1MWt1oCf2XSkAXPzuWOM eiB1wWf/ovWy+KBJaND6qqOO8km2QgIWNzC9XUjyTWJQsNsdZR3zgv93AKs1sy3zXl3Fs2K4+LP WGbQ4RF5LH/BfyUFXSEMctCYWt73mpIYVX4ePv5VO7 X-Gm-Gg: AR+sD13Jv5SaL6k5x0cJiM6QPzkZdtcgUwQ6QD338sZ/w1KwlKgZeYWb2KzWxNn9jo2 g8lPoKzSJAmHLwrKKDoedf4RUXkKoN/L4BxTsY2hEwdFxLlNcz+34d1LJ1dR/eoCgY1rcLPs+G3 dNXNxlDo1GHOks9JFQ0xeBF86YryzH77XXCFQnuRfg3bc+JDS741DUc1pOwuTLYl+iqWETiSea/ GVuRBvkFml4Tv8lN/F9CPEknpMvHNxTZr/NTNV3uxVu3KaG5SBrxUnLGN3pB0chS7AS+hTS1uW3 lAnmeQVg5meX1/5YsIo4Z79BRpPud2loDKvZNpvOxmxnIZEcVxERuNzEXZZV/hAgsN5vp/JGq5O SJT27J4h6Y4VnrdH3xNxDKl6+sxvZFcXekrv+kzpeUm5K+DHzJehTBKeLWpJJ+/nd9DULTzLuUV LAVM8= X-Received: by 2002:a05:600c:1d1a:b0:499:7219:122f with SMTP id 5b1f17b1804b1-499b8303b86mr4275275e9.4.1787244727825; Thu, 20 Aug 2026 09:52:07 -0700 (PDT) X-Received: by 2002:a05:600c:1d1a:b0:499:7219:122f with SMTP id 5b1f17b1804b1-499b8303b86mr4273335e9.4.1787244726935; Thu, 20 Aug 2026 09:52:06 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 46/53] rust: switch to autogenerated meson rules Date: Thu, 20 Aug 2026 18:49:49 +0200 Message-ID: <20260820164957.1895963-47-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787244918648158500 Meson can automatically generate most of the build rules for subprojects, based on the contents of their Cargo.toml. Handwritten snippets can be placed in meson/meson.build to replace build.rs. Disable Meson's use of the nightly-only option "--env-set". It is buggy and anyway it should not be there in future version. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Paolo Bonzini --- meson.build | 3 +- scripts/get-wraps-from-cargo-registry.py | 6 --- subprojects/anyhow-1-rs.wrap | 3 ++ subprojects/arbitrary-int-1-rs.wrap | 1 - subprojects/attrs-0.2-rs.wrap | 1 - subprojects/bilge-0.2-rs.wrap | 1 - subprojects/bilge-impl-0.2-rs.wrap | 1 - subprojects/either-1-rs.wrap | 1 - subprojects/foreign-0.3-rs.wrap | 1 - subprojects/glib-sys-0.21-rs.wrap | 1 - subprojects/itertools-0.11-rs.wrap | 1 - subprojects/libc-0.2-rs.wrap | 3 ++ .../packagefiles/anyhow-1-rs/meson.build | 33 -------------- .../anyhow-1-rs/meson/meson.build | 9 ++++ .../arbitrary-int-1-rs/meson.build | 21 --------- .../packagefiles/attrs-0.2-rs/meson.build | 33 -------------- .../packagefiles/bilge-0.2-rs/meson.build | 31 ------------- .../bilge-impl-0.2-rs/meson.build | 44 ------------------- .../packagefiles/either-1-rs/meson.build | 26 ----------- .../packagefiles/foreign-0.3-rs/meson.build | 26 ----------- .../packagefiles/glib-sys-0.21-rs/meson.build | 33 -------------- .../itertools-0.11-rs/meson.build | 32 -------------- .../packagefiles/libc-0.2-rs/meson.build | 37 ---------------- .../libc-0.2-rs/meson/meson.build | 16 +++++++ .../packagefiles/probe-0.5-rs/meson.build | 22 ---------- .../proc-macro-error-1-rs/meson.build | 41 ----------------- .../proc-macro-error-1-rs/meson/meson.build | 3 ++ .../proc-macro-error-attr-1-rs/meson.build | 31 ------------- .../packagefiles/proc-macro2-1-rs/meson.build | 35 --------------- .../proc-macro2-1-rs/meson/meson.build | 6 +++ .../packagefiles/quote-1-rs/meson.build | 31 ------------- subprojects/packagefiles/syn-2-rs/meson.build | 43 ------------------ .../unicode-ident-1-rs/meson.build | 22 ---------- subprojects/probe-0.5-rs.wrap | 1 - subprojects/proc-macro-error-1-rs.wrap | 2 +- subprojects/proc-macro-error-attr-1-rs.wrap | 1 - subprojects/proc-macro2-1-rs.wrap | 2 +- subprojects/quote-1-rs.wrap | 1 - subprojects/syn-2-rs.wrap | 1 - subprojects/unicode-ident-1-rs.wrap | 1 - 40 files changed, 44 insertions(+), 563 deletions(-) delete mode 100644 subprojects/packagefiles/anyhow-1-rs/meson.build create mode 100644 subprojects/packagefiles/anyhow-1-rs/meson/meson.build delete mode 100644 subprojects/packagefiles/arbitrary-int-1-rs/meson.build delete mode 100644 subprojects/packagefiles/attrs-0.2-rs/meson.build delete mode 100644 subprojects/packagefiles/bilge-0.2-rs/meson.build delete mode 100644 subprojects/packagefiles/bilge-impl-0.2-rs/meson.build delete mode 100644 subprojects/packagefiles/either-1-rs/meson.build delete mode 100644 subprojects/packagefiles/foreign-0.3-rs/meson.build delete mode 100644 subprojects/packagefiles/glib-sys-0.21-rs/meson.build delete mode 100644 subprojects/packagefiles/itertools-0.11-rs/meson.build delete mode 100644 subprojects/packagefiles/libc-0.2-rs/meson.build create mode 100644 subprojects/packagefiles/libc-0.2-rs/meson/meson.build delete mode 100644 subprojects/packagefiles/probe-0.5-rs/meson.build delete mode 100644 subprojects/packagefiles/proc-macro-error-1-rs/meson.bu= ild create mode 100644 subprojects/packagefiles/proc-macro-error-1-rs/meson/me= son.build delete mode 100644 subprojects/packagefiles/proc-macro-error-attr-1-rs/mes= on.build delete mode 100644 subprojects/packagefiles/proc-macro2-1-rs/meson.build create mode 100644 subprojects/packagefiles/proc-macro2-1-rs/meson/meson.b= uild delete mode 100644 subprojects/packagefiles/quote-1-rs/meson.build delete mode 100644 subprojects/packagefiles/syn-2-rs/meson.build delete mode 100644 subprojects/packagefiles/unicode-ident-1-rs/meson.build diff --git a/meson.build b/meson.build index 2a289960ee8..2139dfc7ce8 100644 --- a/meson.build +++ b/meson.build @@ -4,7 +4,8 @@ project('qemu', ['c'], meson_version: '>=3D1.5.0', =20 # build.rust_std breaks with older meson, but Ru= st does not # support old meson anyway - (meson.version().version_compare('>=3D 1.9') ? [= 'rust_std=3D2021', 'build.rust_std=3D2021'] : []), + (meson.version().version_compare('>=3D 1.9') ? [= 'rust_std=3D2021', 'build.rust_std=3D2021', + 'r= ust_nightly=3Ddisabled'] : []), =20 version: files('VERSION')) =20 diff --git a/scripts/get-wraps-from-cargo-registry.py b/scripts/get-wraps-f= rom-cargo-registry.py index 31eed5c2dd4..78b6f1f7ae2 100755 --- a/scripts/get-wraps-from-cargo-registry.py +++ b/scripts/get-wraps-from-cargo-registry.py @@ -116,12 +116,6 @@ def update_subproject(self, wrap_file: str, registry_n= amever: str) -> None: patch_dir =3D config["wrap-file"]["patch_directory"] patch_dir =3D os.path.join("packagefiles", patch_dir) _, ver =3D registry_namever.rsplit("-", 1) - subprocess.run( - ["meson", "rewrite", "kwargs", "set", "project", "/", "ver= sion", ver], - cwd=3Dpatch_dir, - env=3Denv, - check=3DTrue, - ) =20 subprocess.run( ["meson", "subprojects", "download", wrap_name], diff --git a/subprojects/anyhow-1-rs.wrap b/subprojects/anyhow-1-rs.wrap index fb4603e74c8..dbb28f4133b 100644 --- a/subprojects/anyhow-1-rs.wrap +++ b/subprojects/anyhow-1-rs.wrap @@ -5,3 +5,6 @@ source_filename =3D anyhow-1.0.98.tar.gz source_hash =3D e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969b= dcd487 method =3D cargo patch_directory =3D anyhow-1-rs + +# bump this version number on every change to meson.build or the patches: +# v1 diff --git a/subprojects/arbitrary-int-1-rs.wrap b/subprojects/arbitrary-in= t-1-rs.wrap index f8d7c68da64..5cf4b11e4a3 100644 --- a/subprojects/arbitrary-int-1-rs.wrap +++ b/subprojects/arbitrary-int-1-rs.wrap @@ -4,7 +4,6 @@ source_url =3D https://crates.io/api/v1/crates/arbitrary-in= t/1.2.7/download source_filename =3D arbitrary-int-1.2.7.tar.gz source_hash =3D c84fc003e338a6f69fbd4f7fe9f92b535ff13e9af8997f3b14b6ddff8b= 1df46d method =3D cargo -patch_directory =3D arbitrary-int-1-rs =20 # bump this version number on every change to meson.build or the patches: # v2 diff --git a/subprojects/attrs-0.2-rs.wrap b/subprojects/attrs-0.2-rs.wrap index 4ff4c424e6b..fef89ea9368 100644 --- a/subprojects/attrs-0.2-rs.wrap +++ b/subprojects/attrs-0.2-rs.wrap @@ -4,4 +4,3 @@ source_url =3D https://crates.io/api/v1/crates/attrs/0.2.9/= download source_filename =3D attrs-0.2.9.tar.gz source_hash =3D 2a207d40f43de65285f3de0509bb6cb16bc46098864fce957122bbacce= 327e5f method =3D cargo -patch_directory =3D attrs-0.2-rs diff --git a/subprojects/bilge-0.2-rs.wrap b/subprojects/bilge-0.2-rs.wrap index cb202cfd9fe..cff10f6710d 100644 --- a/subprojects/bilge-0.2-rs.wrap +++ b/subprojects/bilge-0.2-rs.wrap @@ -4,7 +4,6 @@ source_url =3D https://crates.io/api/v1/crates/bilge/0.2.0/= download source_filename =3D bilge-0.2.0.tar.gz source_hash =3D dc707ed8ebf81de5cd6c7f48f54b4c8621760926cdf35a57000747c512= e67b57 method =3D cargo -patch_directory =3D bilge-0.2-rs =20 # bump this version number on every change to meson.build or the patches: # v2 diff --git a/subprojects/bilge-impl-0.2-rs.wrap b/subprojects/bilge-impl-0.= 2-rs.wrap index b3dbfafb265..f8963eba73f 100644 --- a/subprojects/bilge-impl-0.2-rs.wrap +++ b/subprojects/bilge-impl-0.2-rs.wrap @@ -4,7 +4,6 @@ source_url =3D https://crates.io/api/v1/crates/bilge-impl/0= .2.0/download source_filename =3D bilge-impl-0.2.0.tar.gz source_hash =3D feb11e002038ad243af39c2068c8a72bcf147acf05025dcdb916fcc000= adb2d8 method =3D cargo -patch_directory =3D bilge-impl-0.2-rs =20 # bump this version number on every change to meson.build or the patches: # v2 diff --git a/subprojects/either-1-rs.wrap b/subprojects/either-1-rs.wrap index 1c74a95645f..51c97df1531 100644 --- a/subprojects/either-1-rs.wrap +++ b/subprojects/either-1-rs.wrap @@ -4,7 +4,6 @@ source_url =3D https://crates.io/api/v1/crates/either/1.12.= 0/download source_filename =3D either-1.12.0.tar.gz source_hash =3D 3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb233= 85b58b method =3D cargo -patch_directory =3D either-1-rs =20 # bump this version number on every change to meson.build or the patches: # v2 diff --git a/subprojects/foreign-0.3-rs.wrap b/subprojects/foreign-0.3-rs.w= rap index a5fec6c09df..95d450397ee 100644 --- a/subprojects/foreign-0.3-rs.wrap +++ b/subprojects/foreign-0.3-rs.wrap @@ -4,4 +4,3 @@ source_url =3D https://crates.io/api/v1/crates/foreign/0.3.= 1/download source_filename =3D foreign-0.3.1.tar.gz source_hash =3D 17ca1b5be8c9d320daf386f1809c7acc0cb09accbae795c2001953fa50= 585846 method =3D cargo -patch_directory =3D foreign-0.3-rs diff --git a/subprojects/glib-sys-0.21-rs.wrap b/subprojects/glib-sys-0.21-= rs.wrap index f4e1514af57..ea4d5f66a58 100644 --- a/subprojects/glib-sys-0.21-rs.wrap +++ b/subprojects/glib-sys-0.21-rs.wrap @@ -4,4 +4,3 @@ source_url =3D https://crates.io/api/v1/crates/glib-sys/0.2= 1.2/download source_filename =3D glib-sys-0.21.2.tar.gz source_hash =3D d09d3d0fddf7239521674e57b0465dfbd844632fec54f059f7f56112e3= f927e1 method =3D cargo -patch_directory =3D glib-sys-0.21-rs diff --git a/subprojects/itertools-0.11-rs.wrap b/subprojects/itertools-0.1= 1-rs.wrap index 6fe89d17caa..e123ab389a2 100644 --- a/subprojects/itertools-0.11-rs.wrap +++ b/subprojects/itertools-0.11-rs.wrap @@ -4,7 +4,6 @@ source_url =3D https://crates.io/api/v1/crates/itertools/0.= 11.0/download source_filename =3D itertools-0.11.0.tar.gz source_hash =3D b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418= c3fe57 method =3D cargo -patch_directory =3D itertools-0.11-rs =20 # bump this version number on every change to meson.build or the patches: # v2 diff --git a/subprojects/libc-0.2-rs.wrap b/subprojects/libc-0.2-rs.wrap index 488330178ed..6e225579795 100644 --- a/subprojects/libc-0.2-rs.wrap +++ b/subprojects/libc-0.2-rs.wrap @@ -5,3 +5,6 @@ source_filename =3D libc-0.2.162.tar.gz source_hash =3D 18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01= 506398 method =3D cargo patch_directory =3D libc-0.2-rs + +# bump this version number on every change to meson.build or the patches: +# v1 diff --git a/subprojects/packagefiles/anyhow-1-rs/meson.build b/subprojects= /packagefiles/anyhow-1-rs/meson.build deleted file mode 100644 index 348bab98b9f..00000000000 --- a/subprojects/packagefiles/anyhow-1-rs/meson.build +++ /dev/null @@ -1,33 +0,0 @@ -project('anyhow-1-rs', 'rust', - meson_version: '>=3D1.5.0', - version: '1.0.98', - license: 'MIT OR Apache-2.0', - default_options: []) - -rustc =3D meson.get_compiler('rust') - -rust_args =3D ['--cap-lints', 'allow'] -rust_args +=3D ['--cfg', 'feature=3D"std"'] -if rustc.version().version_compare('<1.65.0') - error('rustc version ' + rustc.version() + ' is unsupported. Please upgr= ade to at least 1.65.0') -endif -rust_args +=3D [ '--cfg', 'std_backtrace' ] # >=3D 1.65.0 -if rustc.version().version_compare('<1.81.0') - rust_args +=3D [ '--cfg', 'anyhow_no_core_error' ] -endif - -_anyhow_rs =3D static_library( - 'anyhow', - files('src/lib.rs'), - gnu_symbol_visibility: 'hidden', - override_options: ['rust_std=3D2018', 'build.rust_std=3D2018'], - rust_abi: 'rust', - rust_args: rust_args, - dependencies: [], -) - -anyhow_dep =3D declare_dependency( - link_with: _anyhow_rs, -) - -meson.override_dependency('anyhow-1-rs', anyhow_dep) diff --git a/subprojects/packagefiles/anyhow-1-rs/meson/meson.build b/subpr= ojects/packagefiles/anyhow-1-rs/meson/meson.build new file mode 100644 index 00000000000..91c46539c31 --- /dev/null +++ b/subprojects/packagefiles/anyhow-1-rs/meson/meson.build @@ -0,0 +1,9 @@ +rustc =3D meson.get_compiler('rust') + +if rustc.version().version_compare('<1.65.0') + error('rustc version ' + rustc.version() + ' is unsupported. Please upgr= ade to at least 1.65.0') +endif +extra_args +=3D [ '--cfg', 'std_backtrace' ] # >=3D 1.65.0 +if rustc.version().version_compare('<1.81.0') + extra_args +=3D [ '--cfg', 'anyhow_no_core_error' ] +endif diff --git a/subprojects/packagefiles/arbitrary-int-1-rs/meson.build b/subp= rojects/packagefiles/arbitrary-int-1-rs/meson.build deleted file mode 100644 index 00733d1faab..00000000000 --- a/subprojects/packagefiles/arbitrary-int-1-rs/meson.build +++ /dev/null @@ -1,21 +0,0 @@ -project('arbitrary-int-1-rs', 'rust', - meson_version: '>=3D1.5.0', - version: '1.2.7', - license: 'MIT', - default_options: []) - -_arbitrary_int_rs =3D static_library( - 'arbitrary_int', - files('src/lib.rs'), - gnu_symbol_visibility: 'hidden', - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_args: ['--cap-lints', 'allow'], - rust_abi: 'rust', - dependencies: [], -) - -arbitrary_int_dep =3D declare_dependency( - link_with: _arbitrary_int_rs, -) - -meson.override_dependency('arbitrary-int-1-rs', arbitrary_int_dep) diff --git a/subprojects/packagefiles/attrs-0.2-rs/meson.build b/subproject= s/packagefiles/attrs-0.2-rs/meson.build deleted file mode 100644 index ee575476cb2..00000000000 --- a/subprojects/packagefiles/attrs-0.2-rs/meson.build +++ /dev/null @@ -1,33 +0,0 @@ -project('attrs-0.2-rs', 'rust', - meson_version: '>=3D1.5.0', - version: '0.2.9', - license: 'MIT OR Apache-2.0', - default_options: []) - -subproject('proc-macro2-1-rs', required: true) -subproject('syn-2-rs', required: true) - -proc_macro2_dep =3D dependency('proc-macro2-1-rs', native: true) -syn_dep =3D dependency('syn-2-rs', native: true) - -_attrs_rs =3D static_library( - 'attrs', - files('src/lib.rs'), - gnu_symbol_visibility: 'hidden', - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', - rust_args: [ - '--cap-lints', 'allow', - ], - dependencies: [ - proc_macro2_dep, - syn_dep, - ], - native: true, -) - -attrs_dep =3D declare_dependency( - link_with: _attrs_rs, -) - -meson.override_dependency('attrs-0.2-rs', attrs_dep, native: true) diff --git a/subprojects/packagefiles/bilge-0.2-rs/meson.build b/subproject= s/packagefiles/bilge-0.2-rs/meson.build deleted file mode 100644 index ce13d0fe80f..00000000000 --- a/subprojects/packagefiles/bilge-0.2-rs/meson.build +++ /dev/null @@ -1,31 +0,0 @@ -project( - 'bilge-0.2-rs', - 'rust', - meson_version: '>=3D1.5.0', - version : '0.2.0', - license : 'MIT or Apache-2.0', -) - -subproject('arbitrary-int-1-rs', required: true) -subproject('bilge-impl-0.2-rs', required: true) - -arbitrary_int_dep =3D dependency('arbitrary-int-1-rs') -bilge_impl_dep =3D dependency('bilge-impl-0.2-rs') - -lib =3D static_library( - 'bilge', - 'src/lib.rs', - override_options : ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi : 'rust', - rust_args: ['--cap-lints', 'allow'], - dependencies: [ - arbitrary_int_dep, - bilge_impl_dep, - ], -) - -bilge_dep =3D declare_dependency( - link_with : [lib], -) - -meson.override_dependency('bilge-0.2-rs', bilge_dep) diff --git a/subprojects/packagefiles/bilge-impl-0.2-rs/meson.build b/subpr= ojects/packagefiles/bilge-impl-0.2-rs/meson.build deleted file mode 100644 index 04617b875c5..00000000000 --- a/subprojects/packagefiles/bilge-impl-0.2-rs/meson.build +++ /dev/null @@ -1,44 +0,0 @@ -project('bilge-impl-0.2-rs', 'rust', - meson_version: '>=3D1.5.0', - version: '0.2.0', - license: 'MIT OR Apache-2.0', - default_options: []) - -subproject('itertools-0.11-rs', required: true) -subproject('proc-macro-error-attr-1-rs', required: true) -subproject('proc-macro-error-1-rs', required: true) -subproject('quote-1-rs', required: true) -subproject('syn-2-rs', required: true) -subproject('proc-macro2-1-rs', required: true) - -itertools_dep =3D dependency('itertools-0.11-rs', native: true) -proc_macro_error_attr_dep =3D dependency('proc-macro-error-attr-1-rs', nat= ive: true) -proc_macro_error_dep =3D dependency('proc-macro-error-1-rs', native: true) -quote_dep =3D dependency('quote-1-rs', native: true) -syn_dep =3D dependency('syn-2-rs', native: true) -proc_macro2_dep =3D dependency('proc-macro2-1-rs', native: true) - -rust =3D import('rust') - -_bilge_impl_rs =3D rust.proc_macro( - 'bilge_impl', - files('src/lib.rs'), - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_args: [ - '--cap-lints', 'allow', - ], - dependencies: [ - itertools_dep, - proc_macro_error_attr_dep, - proc_macro_error_dep, - quote_dep, - syn_dep, - proc_macro2_dep, - ], -) - -bilge_impl_dep =3D declare_dependency( - link_with: _bilge_impl_rs, -) - -meson.override_dependency('bilge-impl-0.2-rs', bilge_impl_dep) diff --git a/subprojects/packagefiles/either-1-rs/meson.build b/subprojects= /packagefiles/either-1-rs/meson.build deleted file mode 100644 index 04c96cc5fb3..00000000000 --- a/subprojects/packagefiles/either-1-rs/meson.build +++ /dev/null @@ -1,26 +0,0 @@ -project('either-1-rs', 'rust', - meson_version: '>=3D1.5.0', - version: '1.12.0', - license: 'MIT OR Apache-2.0', - default_options: []) - -_either_rs =3D static_library( - 'either', - files('src/lib.rs'), - gnu_symbol_visibility: 'hidden', - override_options: ['rust_std=3D2018', 'build.rust_std=3D2018'], - rust_abi: 'rust', - rust_args: [ - '--cap-lints', 'allow', - '--cfg', 'feature=3D"use_std"', - '--cfg', 'feature=3D"use_alloc"', - ], - dependencies: [], - native: true, -) - -either_dep =3D declare_dependency( - link_with: _either_rs, -) - -meson.override_dependency('either-1-rs', either_dep, native: true) diff --git a/subprojects/packagefiles/foreign-0.3-rs/meson.build b/subproje= cts/packagefiles/foreign-0.3-rs/meson.build deleted file mode 100644 index 0901c02c527..00000000000 --- a/subprojects/packagefiles/foreign-0.3-rs/meson.build +++ /dev/null @@ -1,26 +0,0 @@ -project('foreign-0.3-rs', 'rust', - meson_version: '>=3D1.5.0', - version: '0.2.0', - license: 'MIT OR Apache-2.0', - default_options: []) - -subproject('libc-0.2-rs', required: true) -libc_rs =3D dependency('libc-0.2-rs') - -_foreign_rs =3D static_library( - 'foreign', - files('src/lib.rs'), - gnu_symbol_visibility: 'hidden', - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', - rust_args: [ - '--cap-lints', 'allow', - ], - dependencies: [libc_rs], -) - -foreign_dep =3D declare_dependency( - link_with: _foreign_rs, -) - -meson.override_dependency('foreign-0.3-rs', foreign_dep) diff --git a/subprojects/packagefiles/glib-sys-0.21-rs/meson.build b/subpro= jects/packagefiles/glib-sys-0.21-rs/meson.build deleted file mode 100644 index 8c5483311ed..00000000000 --- a/subprojects/packagefiles/glib-sys-0.21-rs/meson.build +++ /dev/null @@ -1,33 +0,0 @@ -project('glib-sys-0.21-rs', 'rust', - meson_version: '>=3D1.5.0', - version: '0.21.2', - license: 'MIT', - default_options: []) - -subproject('libc-0.2-rs', required: true) -libc_rs =3D dependency('libc-0.2-rs') - -_glib_sys_rs =3D static_library( - 'glib_sys', - files('src/lib.rs'), - gnu_symbol_visibility: 'hidden', - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', - rust_args: [ - '--cap-lints', 'allow', - '--cfg', 'feature=3D"v2_66"', - '--cfg', 'feature=3D"v2_64"', - '--cfg', 'feature=3D"v2_62"', - '--cfg', 'feature=3D"v2_60"', - '--cfg', 'feature=3D"v2_58"', - ], - # should also link with glib; don't bother doing it here since all - # QEMU targets have it - dependencies: [libc_rs], -) - -glib_sys_dep =3D declare_dependency( - link_with: _glib_sys_rs, -) - -meson.override_dependency('glib-sys-0.21-rs', glib_sys_dep) diff --git a/subprojects/packagefiles/itertools-0.11-rs/meson.build b/subpr= ojects/packagefiles/itertools-0.11-rs/meson.build deleted file mode 100644 index 2a3fbe9ee5a..00000000000 --- a/subprojects/packagefiles/itertools-0.11-rs/meson.build +++ /dev/null @@ -1,32 +0,0 @@ -project('itertools-0.11-rs', 'rust', - meson_version: '>=3D1.5.0', - version: '0.11.0', - license: 'MIT OR Apache-2.0', - default_options: []) - -subproject('either-1-rs', required: true) - -either_dep =3D dependency('either-1-rs', native: true) - -_itertools_rs =3D static_library( - 'itertools', - files('src/lib.rs'), - gnu_symbol_visibility: 'hidden', - override_options: ['rust_std=3D2018', 'build.rust_std=3D2018'], - rust_abi: 'rust', - rust_args: [ - '--cap-lints', 'allow', - '--cfg', 'feature=3D"use_std"', - '--cfg', 'feature=3D"use_alloc"', - ], - dependencies: [ - either_dep, - ], - native: true, -) - -itertools_dep =3D declare_dependency( - link_with: _itertools_rs, -) - -meson.override_dependency('itertools-0.11-rs', itertools_dep, native: true) diff --git a/subprojects/packagefiles/libc-0.2-rs/meson.build b/subprojects= /packagefiles/libc-0.2-rs/meson.build deleted file mode 100644 index ac4f80dba98..00000000000 --- a/subprojects/packagefiles/libc-0.2-rs/meson.build +++ /dev/null @@ -1,37 +0,0 @@ -project('libc-0.2-rs', 'rust', - meson_version: '>=3D1.5.0', - version: '0.2.162', - license: 'MIT OR Apache-2.0', - default_options: []) - -_libc_rs =3D static_library( - 'libc', - files('src/lib.rs'), - gnu_symbol_visibility: 'hidden', - override_options: ['rust_std=3D2015', 'build.rust_std=3D2015'], - rust_abi: 'rust', - rust_args: [ - '--cap-lints', 'allow', - '--cfg', 'freebsd11', - '--cfg', 'libc_priv_mod_use', - '--cfg', 'libc_union', - '--cfg', 'libc_const_size_of', - '--cfg', 'libc_align', - '--cfg', 'libc_int128', - '--cfg', 'libc_core_cvoid', - '--cfg', 'libc_packedN', - '--cfg', 'libc_cfg_target_vendor', - '--cfg', 'libc_non_exhaustive', - '--cfg', 'libc_long_array', - '--cfg', 'libc_ptr_addr_of', - '--cfg', 'libc_underscore_const_names', - '--cfg', 'libc_const_extern_fn', - ], - dependencies: [], -) - -libc_dep =3D declare_dependency( - link_with: _libc_rs, -) - -meson.override_dependency('libc-0.2-rs', libc_dep) diff --git a/subprojects/packagefiles/libc-0.2-rs/meson/meson.build b/subpr= ojects/packagefiles/libc-0.2-rs/meson/meson.build new file mode 100644 index 00000000000..db9480ada1c --- /dev/null +++ b/subprojects/packagefiles/libc-0.2-rs/meson/meson.build @@ -0,0 +1,16 @@ +extra_args +=3D [ + '--cfg', 'freebsd11', + '--cfg', 'libc_priv_mod_use', + '--cfg', 'libc_union', + '--cfg', 'libc_const_size_of', + '--cfg', 'libc_align', + '--cfg', 'libc_int128', + '--cfg', 'libc_core_cvoid', + '--cfg', 'libc_packedN', + '--cfg', 'libc_cfg_target_vendor', + '--cfg', 'libc_non_exhaustive', + '--cfg', 'libc_long_array', + '--cfg', 'libc_ptr_addr_of', + '--cfg', 'libc_underscore_const_names', + '--cfg', 'libc_const_extern_fn', +] diff --git a/subprojects/packagefiles/probe-0.5-rs/meson.build b/subproject= s/packagefiles/probe-0.5-rs/meson.build deleted file mode 100644 index e6ea69533b7..00000000000 --- a/subprojects/packagefiles/probe-0.5-rs/meson.build +++ /dev/null @@ -1,22 +0,0 @@ -project('probe-0.5-rs', 'rust', - meson_version: '>=3D1.5.0', - version: '0.5.2', - license: 'Apache-2.0 OR MIT', - default_options: []) - -_probe_rs =3D static_library( - 'probe', - files('src/lib.rs'), - gnu_symbol_visibility: 'hidden', - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', - rust_args: [ - '--cap-lints', 'allow', - ], -) - -probe_deps =3D declare_dependency( - link_with: _probe_rs, -) - -meson.override_dependency('probe-0.5-rs', probe_deps) diff --git a/subprojects/packagefiles/proc-macro-error-1-rs/meson.build b/s= ubprojects/packagefiles/proc-macro-error-1-rs/meson.build deleted file mode 100644 index 8ba558e1330..00000000000 --- a/subprojects/packagefiles/proc-macro-error-1-rs/meson.build +++ /dev/null @@ -1,41 +0,0 @@ -project('proc-macro-error-1-rs', 'rust', - meson_version: '>=3D1.5.0', - version: '1.0.4', - license: 'MIT OR Apache-2.0', - default_options: []) - -subproject('proc-macro-error-attr-1-rs', required: true) -subproject('quote-1-rs', required: true) -subproject('syn-2-rs', required: true) -subproject('proc-macro2-1-rs', required: true) - -proc_macro_error_attr_dep =3D dependency('proc-macro-error-attr-1-rs', nat= ive: true) -proc_macro2_dep =3D dependency('proc-macro2-1-rs', native: true) -quote_dep =3D dependency('quote-1-rs', native: true) -syn_dep =3D dependency('syn-2-rs', native: true) - -_proc_macro_error_rs =3D static_library( - 'proc_macro_error', - files('src/lib.rs'), - override_options: ['rust_std=3D2018', 'build.rust_std=3D2018'], - rust_abi: 'rust', - rust_args: [ - '--cap-lints', 'allow', - '--cfg', 'use_fallback', - '--cfg', 'feature=3D"syn-error"', - '-A', 'non_fmt_panics' - ], - dependencies: [ - proc_macro_error_attr_dep, - proc_macro2_dep, - quote_dep, - syn_dep, - ], - native: true, -) - -proc_macro_error_dep =3D declare_dependency( - link_with: _proc_macro_error_rs, -) - -meson.override_dependency('proc-macro-error-1-rs', proc_macro_error_dep, n= ative: true) diff --git a/subprojects/packagefiles/proc-macro-error-1-rs/meson/meson.bui= ld b/subprojects/packagefiles/proc-macro-error-1-rs/meson/meson.build new file mode 100644 index 00000000000..52a244d2b16 --- /dev/null +++ b/subprojects/packagefiles/proc-macro-error-1-rs/meson/meson.build @@ -0,0 +1,3 @@ +extra_args =3D [ + '--cfg', 'use_fallback', +] diff --git a/subprojects/packagefiles/proc-macro-error-attr-1-rs/meson.buil= d b/subprojects/packagefiles/proc-macro-error-attr-1-rs/meson.build deleted file mode 100644 index a85d7c07143..00000000000 --- a/subprojects/packagefiles/proc-macro-error-attr-1-rs/meson.build +++ /dev/null @@ -1,31 +0,0 @@ -project('proc-macro-error-attr-1-rs', 'rust', - meson_version: '>=3D1.5.0', - version: '1.12.0', - license: 'MIT OR Apache-2.0', - default_options: []) - -subproject('proc-macro2-1-rs', required: true) -subproject('quote-1-rs', required: true) - -proc_macro2_dep =3D dependency('proc-macro2-1-rs', native: true) -quote_dep =3D dependency('quote-1-rs', native: true) - -rust =3D import('rust') -_proc_macro_error_attr_rs =3D rust.proc_macro( - 'proc_macro_error_attr', - files('src/lib.rs'), - override_options: ['rust_std=3D2018', 'build.rust_std=3D2018'], - rust_args: [ - '--cap-lints', 'allow', - ], - dependencies: [ - proc_macro2_dep, - quote_dep, - ], -) - -proc_macro_error_attr_dep =3D declare_dependency( - link_with: _proc_macro_error_attr_rs, -) - -meson.override_dependency('proc-macro-error-attr-1-rs', proc_macro_error_a= ttr_dep, native: true) diff --git a/subprojects/packagefiles/proc-macro2-1-rs/meson.build b/subpro= jects/packagefiles/proc-macro2-1-rs/meson.build deleted file mode 100644 index ba7de070292..00000000000 --- a/subprojects/packagefiles/proc-macro2-1-rs/meson.build +++ /dev/null @@ -1,35 +0,0 @@ -project('proc-macro2-1-rs', 'rust', - meson_version: '>=3D1.5.0', - version: '1.0.95', - license: 'MIT OR Apache-2.0', - default_options: []) - -subproject('unicode-ident-1-rs', required: true) - -unicode_ident_dep =3D dependency('unicode-ident-1-rs', native: true) - -_proc_macro2_rs =3D static_library( - 'proc_macro2', - files('src/lib.rs'), - gnu_symbol_visibility: 'hidden', - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', - rust_args: [ - '--cap-lints', 'allow', - '--cfg', 'feature=3D"proc-macro"', - '--cfg', 'no_literal_byte_character', - '--cfg', 'no_literal_c_string', - '--cfg', 'no_source_text', - '--cfg', 'wrap_proc_macro', - ], - dependencies: [ - unicode_ident_dep, - ], - native: true, -) - -proc_macro2_dep =3D declare_dependency( - link_with: _proc_macro2_rs, -) - -meson.override_dependency('proc-macro2-1-rs', proc_macro2_dep, native: tru= e) diff --git a/subprojects/packagefiles/proc-macro2-1-rs/meson/meson.build b/= subprojects/packagefiles/proc-macro2-1-rs/meson/meson.build new file mode 100644 index 00000000000..09712bb0b0e --- /dev/null +++ b/subprojects/packagefiles/proc-macro2-1-rs/meson/meson.build @@ -0,0 +1,6 @@ +extra_args =3D [ + '--cfg', 'no_literal_byte_character', + '--cfg', 'no_literal_c_string', + '--cfg', 'no_source_text', + '--cfg', 'wrap_proc_macro', +] diff --git a/subprojects/packagefiles/quote-1-rs/meson.build b/subprojects/= packagefiles/quote-1-rs/meson.build deleted file mode 100644 index bf41fad99bb..00000000000 --- a/subprojects/packagefiles/quote-1-rs/meson.build +++ /dev/null @@ -1,31 +0,0 @@ -project('quote-1-rs', 'rust', - meson_version: '>=3D1.5.0', - version: '1.12.0', - license: 'MIT OR Apache-2.0', - default_options: []) - -subproject('proc-macro2-1-rs', required: true) - -proc_macro2_dep =3D dependency('proc-macro2-1-rs', native: true) - -_quote_rs =3D static_library( - 'quote', - files('src/lib.rs'), - gnu_symbol_visibility: 'hidden', - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', - rust_args: [ - '--cap-lints', 'allow', - '--cfg', 'feature=3D"proc-macro"', - ], - dependencies: [ - proc_macro2_dep, - ], - native: true, -) - -quote_dep =3D declare_dependency( - link_with: _quote_rs, -) - -meson.override_dependency('quote-1-rs', quote_dep, native: true) diff --git a/subprojects/packagefiles/syn-2-rs/meson.build b/subprojects/pa= ckagefiles/syn-2-rs/meson.build deleted file mode 100644 index 3e6dc318a9c..00000000000 --- a/subprojects/packagefiles/syn-2-rs/meson.build +++ /dev/null @@ -1,43 +0,0 @@ -project('syn-2-rs', 'rust', - meson_version: '>=3D1.5.0', - version: '2.0.104', - license: 'MIT OR Apache-2.0', - default_options: []) - -subproject('proc-macro2-1-rs', required: true) -subproject('quote-1-rs', required: true) -subproject('unicode-ident-1-rs', required: true) - -proc_macro2_dep =3D dependency('proc-macro2-1-rs', native: true) -quote_dep =3D dependency('quote-1-rs', native: true) -unicode_ident_dep =3D dependency('unicode-ident-1-rs', native: true) - -_syn_rs =3D static_library( - 'syn', - files('src/lib.rs'), - gnu_symbol_visibility: 'hidden', - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', - rust_args: [ - '--cap-lints', 'allow', - '--cfg', 'feature=3D"full"', - '--cfg', 'feature=3D"derive"', - '--cfg', 'feature=3D"parsing"', - '--cfg', 'feature=3D"printing"', - '--cfg', 'feature=3D"clone-impls"', - '--cfg', 'feature=3D"proc-macro"', - '--cfg', 'feature=3D"extra-traits"', - ], - dependencies: [ - quote_dep, - proc_macro2_dep, - unicode_ident_dep, - ], - native: true, -) - -syn_dep =3D declare_dependency( - link_with: _syn_rs, -) - -meson.override_dependency('syn-2-rs', syn_dep, native: true) diff --git a/subprojects/packagefiles/unicode-ident-1-rs/meson.build b/subp= rojects/packagefiles/unicode-ident-1-rs/meson.build deleted file mode 100644 index 11a5dab97df..00000000000 --- a/subprojects/packagefiles/unicode-ident-1-rs/meson.build +++ /dev/null @@ -1,22 +0,0 @@ -project('unicode-ident-1-rs', 'rust', - meson_version: '>=3D1.5.0', - version: '1.0.12', - license: '(MIT OR Apache-2.0) AND Unicode-DFS-2016', - default_options: []) - -_unicode_ident_rs =3D static_library( - 'unicode_ident', - files('src/lib.rs'), - gnu_symbol_visibility: 'hidden', - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', - rust_args: ['--cap-lints', 'allow'], - dependencies: [], - native: true, -) - -unicode_ident_dep =3D declare_dependency( - link_with: _unicode_ident_rs, -) - -meson.override_dependency('unicode-ident-1-rs', unicode_ident_dep, native:= true) diff --git a/subprojects/probe-0.5-rs.wrap b/subprojects/probe-0.5-rs.wrap index d3c6b187244..72e771ec787 100644 --- a/subprojects/probe-0.5-rs.wrap +++ b/subprojects/probe-0.5-rs.wrap @@ -4,4 +4,3 @@ source_url =3D https://crates.io/api/v1/crates/probe/0.5.2/= download source_filename =3D probe-0.5.2.tar.gz source_hash =3D 136558b6e1ebaecc92755d0ffaf9421f519531bed30cc2ad23b22cb009= 65cc5e method =3D cargo -patch_directory =3D probe-0.5-rs diff --git a/subprojects/proc-macro-error-1-rs.wrap b/subprojects/proc-macr= o-error-1-rs.wrap index 4f300c3ac41..e57921bfadc 100644 --- a/subprojects/proc-macro-error-1-rs.wrap +++ b/subprojects/proc-macro-error-1-rs.wrap @@ -7,4 +7,4 @@ method =3D cargo patch_directory =3D proc-macro-error-1-rs =20 # bump this version number on every change to meson.build or the patches: -# v2 +# v3 diff --git a/subprojects/proc-macro-error-attr-1-rs.wrap b/subprojects/proc= -macro-error-attr-1-rs.wrap index 739e451c37b..456d2c2b6d4 100644 --- a/subprojects/proc-macro-error-attr-1-rs.wrap +++ b/subprojects/proc-macro-error-attr-1-rs.wrap @@ -4,7 +4,6 @@ source_url =3D https://crates.io/api/v1/crates/proc-macro-e= rror-attr/1.0.4/downloa source_filename =3D proc-macro-error-attr-1.0.4.tar.gz source_hash =3D a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b= 35f869 method =3D cargo -patch_directory =3D proc-macro-error-attr-1-rs =20 # bump this version number on every change to meson.build or the patches: # v2 diff --git a/subprojects/proc-macro2-1-rs.wrap b/subprojects/proc-macro2-1-= rs.wrap index 3600f4eb191..676d1a3a8ca 100644 --- a/subprojects/proc-macro2-1-rs.wrap +++ b/subprojects/proc-macro2-1-rs.wrap @@ -7,4 +7,4 @@ method =3D cargo patch_directory =3D proc-macro2-1-rs =20 # bump this version number on every change to meson.build or the patches: -# v2 +# v3 diff --git a/subprojects/quote-1-rs.wrap b/subprojects/quote-1-rs.wrap index 10626be6521..5f38f56499e 100644 --- a/subprojects/quote-1-rs.wrap +++ b/subprojects/quote-1-rs.wrap @@ -4,7 +4,6 @@ source_url =3D https://crates.io/api/v1/crates/quote/1.0.36= /download source_filename =3D quote-1.0.36.0.tar.gz source_hash =3D 0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208= acaca7 method =3D cargo -patch_directory =3D quote-1-rs =20 # bump this version number on every change to meson.build or the patches: # v2 diff --git a/subprojects/syn-2-rs.wrap b/subprojects/syn-2-rs.wrap index db6576f5812..4b97bed258f 100644 --- a/subprojects/syn-2-rs.wrap +++ b/subprojects/syn-2-rs.wrap @@ -4,7 +4,6 @@ source_url =3D https://crates.io/api/v1/crates/syn/2.0.104/= download source_filename =3D syn-2.0.104.0.tar.gz source_hash =3D 17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b= 435a40 method =3D cargo -patch_directory =3D syn-2-rs =20 # bump this version number on every change to meson.build or the patches: # v2 diff --git a/subprojects/unicode-ident-1-rs.wrap b/subprojects/unicode-iden= t-1-rs.wrap index b420ebfe1f4..90aae02ba0a 100644 --- a/subprojects/unicode-ident-1-rs.wrap +++ b/subprojects/unicode-ident-1-rs.wrap @@ -4,7 +4,6 @@ source_url =3D https://crates.io/api/v1/crates/unicode-iden= t/1.0.12/download source_filename =3D unicode-ident-1.0.12.tar.gz source_hash =3D 3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec= 0fee4b method =3D cargo -patch_directory =3D unicode-ident-1-rs =20 # bump this version number on every change to meson.build or the patches: # v2 --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244936; cv=none; d=zohomail.com; s=zohoarc; b=XbEyFmVdetioSBPUaJVTVRo+Hlt8AFHMry1Vtrv5k11ezRMB7VT3sQO7HHKiYXgoKDsDfCk7MEZrBZpvX/0KgCWYn7HTipAww3jmjsxUP+gaboWHo5BC/91xuFRMj1k4Y+VQQ9ylK7EuDYiChm79nPof1T4+DkimXaHXrO6p0Pw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244936; 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=FNM9WY3GDs9NFIUbF6VOCyMHiscyOHLyp4b12lS9z/8=; b=fCsGKeGRQPnSqpZAMUKqLCViXnIN/WZ/jUoPY3UtqcUBRkuJiJQuJw1Eni2m5Ox4/5AtHlt74XRWWL4Un8JTaij7cP0EqmOkugikhrtvQMfRlVF79tbSJHewCyF0BWnPs1O8HI++ICutoF0GAPrfDI/D0W2KUEJd2UykCDg8Qms= 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 1787244936520311.21435213512325; Thu, 20 Aug 2026 09:55:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx60A-0001WH-QU; Thu, 20 Aug 2026 12:52: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 1wx5zx-0001MR-GV for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52:15 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx5zw-0005mz-4W for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52:13 -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-299-mh51oqVlORigBfNEmMp-dw-1; Thu, 20 Aug 2026 12:52:10 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-49808ea1b64so12545675e9.1 for ; Thu, 20 Aug 2026 09:52:09 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499aa11f832sm148671175e9.7.2026.08.20.09.52.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:52:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244731; 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=FNM9WY3GDs9NFIUbF6VOCyMHiscyOHLyp4b12lS9z/8=; b=NKepYMs+R/vLm4tOf3/A69W2oFvzxvfP4CcwX69cvYpOOR5Hqnh7b6cAEja58wZiWmi75Y gkgt4Nz6x82dYmEynW4+uWQGTOGPWPU1/FBJugtsnlTcdpKJ7npJ4W+nMfrLzngdu+J4Zu mas+42+s5fOfAvmriRNFyVnYBn5Tc18= X-MC-Unique: mh51oqVlORigBfNEmMp-dw-1 X-Mimecast-MFC-AGG-ID: mh51oqVlORigBfNEmMp-dw_1787244729 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244729; x=1787849529; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=FNM9WY3GDs9NFIUbF6VOCyMHiscyOHLyp4b12lS9z/8=; b=OoSH08sLZhExaxao6bg1FY7ku1vpBSLhgkk9aSsFQ/ifrii3uTIB/Xt3wzeFn74Yhx AUHi8RQ9r/dcGlAGDJaVo/q1U0s/gsfY0I/WhxMHisKJL5A7ql22SNR2xUVyHRE+e454 9JvxcRNbcq8p4vfFcZwHocuxXHFV1OKvefODjI6+73yabN+rAyjwGLxvQ8FmNsbBoya2 WP7I5Ht+TmYs31jBeNyHNke9JzzQHVXZxxg4t8vswOYSxZBSFAk1mFNcULZB4U4jXcwY f0rfqJkQcmOXdAW63D88vBDqLczESwAyV9kIkjz/Jqt24NPADH5WeiSyvD5Y4j6+bUp+ Z70A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244729; x=1787849529; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=FNM9WY3GDs9NFIUbF6VOCyMHiscyOHLyp4b12lS9z/8=; b=ehVuKq5WQeRvr2nRC7oE8j6ZfqSKrxzaiGUvdmzZErqMt7Cd81tFJbWXgXXaNC70+9 Id3X3/woCix0yj/b08DT/a/tNl8tydQWtqYFP/290OS9n5rN6lsmo+atBDuFhPGjCZqh 5Gy8uzzjpsCm0gx4yHzijjW439HWbZ+dS0fLbX57Ou9wn1/ZkAOVj2gq8xN405TJT5Bo 6XoMZLyBT3wGUxRpPfXauvbGYKDQZYpLqIyCtfFNlCMPXmr3Tg2MpzGTP6Ljf+5sPQgC POU0y4VBa1ShQtJAksfZOcjIFxReA2CZmXtHhGWkVYNLVlLLfgfniam8rGFi7Z6+xGqg lYzg== X-Gm-Message-State: AOJu0YzAOYeE20vJ7D6fgSA6JBqxB4LDr0Ls8319hWuBln74WKvjwr2F NjMV1kRSO3ciHBAw+C/QWcILDocp7opjLCHkhsHiENon9/nSZXBY0noniNzd6YyBeI1XTKuaQ/f otZyaVsLdKsgmzapxHjso0QeViKKI4UdFGGcc+aSrhoEBV7QcMGL8UjCEtTApfMA8e1tVXWozPZ n1ThS2i0KmLZNNUiN1AYbmNaS5v9kUkF/6D3nqRQs7 X-Gm-Gg: AR+sD12jq8CbGGG+OOFoIDp3UIkUgOgijzXGkyRfTYM+/X9HTlJuLfCWWTT7A1m4/4g uErxOK9kmjU8SS2wgNoxy7l0UABeeiGEU+3hRiw4r6KhqpK4jstD+BVpQFyI1XA354o5Wfb1hj8 3fIa6PmS54K5AQPg0nzipjuMGPRrBF5V6b9VNAqFhNjroEnjEXpjob6chj1R6VJvm2m/DiL1fm6 PvUGndKzPOluU/Empm8Cip2Xh5xUrMowEkyx0uNOctn+lt1gLXIeVn7JIogtwaH/cQA6mz1BKfa I1YJ4HiZrg5sG63cvjnneMeWlsVlrbRWESmHCXK0WyydvZz1TxZK4u2xbUihOLrX51bRvcKmHqM /JeSeFljiXLbqxpjxAQ/GBvpOFyvdgSw43oFCKpwY1tFAiX3kUxc3oxUQbNtoMvdzFM4gfDKvZJ P92AU= X-Received: by 2002:a05:600c:674a:b0:499:5f80:83ac with SMTP id 5b1f17b1804b1-499b06cbaf2mr130356515e9.7.1787244728768; Thu, 20 Aug 2026 09:52:08 -0700 (PDT) X-Received: by 2002:a05:600c:674a:b0:499:5f80:83ac with SMTP id 5b1f17b1804b1-499b06cbaf2mr130355195e9.7.1787244728137; Thu, 20 Aug 2026 09:52:08 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 47/53] meson: use compiler_target() to get rustc target Date: Thu, 20 Aug 2026 18:49:50 +0200 Message-ID: <20260820164957.1895963-48-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787244938623158500 The new method in Meson 1.11.x removes the need to pass the triple via config-host.mak. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Paolo Bonzini --- configure | 3 --- meson.build | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/configure b/configure index 7f637c018c3..56158cd95f7 100755 --- a/configure +++ b/configure @@ -1740,9 +1740,6 @@ if test "$container_command" !=3D ""; then echo "CONTAINER_COMMAND=3D$container_command" >> $config_host_mak fi echo "SUBDIRS=3D$subdirs" >> $config_host_mak -if test "$rust" !=3D disabled; then - echo "RUST_TARGET_TRIPLE=3D$rust_target_triple" >> $config_host_mak -fi echo "PYTHON=3D$python" >> $config_host_mak echo "MKVENV_ENSUREGROUP=3D$mkvenv ensuregroup $mkvenv_online_flag" >> $co= nfig_host_mak echo "GENISOIMAGE=3D$genisoimage" >> $config_host_mak diff --git a/meson.build b/meson.build index 2139dfc7ce8..2593eb97624 100644 --- a/meson.build +++ b/meson.build @@ -4747,7 +4747,7 @@ else endif summary_info +=3D {'Rust support': have_rust} if have_rust - summary_info +=3D {'Rust target': config_host['RUST_TARGET_TRIPLE']} + summary_info +=3D {'Rust target': rust.compiler_target(native: false= )} summary_info +=3D {'rustc': ' '.join(rustc.cmd_array())} summary_info +=3D {'rustc version': rustc.version()} summary_info +=3D {'rustdoc': rustdoc} --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244835; cv=none; d=zohomail.com; s=zohoarc; b=RR3B/12fqPy1VRQUr+u1/dz1rulv15v6lH6++feg9yGV5cZ3dmtlu20i3Wb/y/LcHpYJaxz7IqooHzn1ea3s7Bm/YPxvilxg+9xPG6qMPk0BT0pw/+s1jQSTwXoigG59/i+8zWfb9GkNpvZWpShwbHFg/1dnAyBfo28rmI9c0eg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244835; 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=qHiM1S2EXQ3M222ecsEes9FwYijeCATVWmTAE4yfgFE=; b=Zv/woXn2hSAlU7XGt+QKs/OKtvPkg3L/9Gs+f+dsUQ2wQ8ECTI1QOmyT8Kmibd0sddkKYf+xC6xK81yoHuCLH+S+cvjxFwxF2A82tQveFHqfVQjW2Mu/u95qBShCp8MYmVTrMh9K++U2BOV2OCFRY90PJ+WQMHuLHLtJHWWo/Zg= 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 1787244835116511.1512345688433; Thu, 20 Aug 2026 09:53:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx60B-0001eL-EH; Thu, 20 Aug 2026 12:52: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 1wx603-0001UX-UE for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52: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 1wx600-0005ne-Og for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52:19 -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-378-u4jKQEV0MHG5RXJjdP7E5Q-1; Thu, 20 Aug 2026 12:52:14 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-490a767c7dcso228055e9.2 for ; Thu, 20 Aug 2026 09:52:14 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499aa11f832sm148672115e9.7.2026.08.20.09.52.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:52:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244736; 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=qHiM1S2EXQ3M222ecsEes9FwYijeCATVWmTAE4yfgFE=; b=GP1YPVgv/CDDq1fJvmU2IjjHeq0/EMse9C/LsJ2wGz2GLCr9akKkXTOfz+l1btGQ8PYNsT EkroimUzSW1gHYl1oiHHHVjCTCFatj7pyPy1PMGGPyFZQ0uamipNMw0Sv48KYLAMa36vY1 4Kh/tjB4bPwNUQIojx97ZiVOtoAQoSs= X-MC-Unique: u4jKQEV0MHG5RXJjdP7E5Q-1 X-Mimecast-MFC-AGG-ID: u4jKQEV0MHG5RXJjdP7E5Q_1787244733 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244733; x=1787849533; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=qHiM1S2EXQ3M222ecsEes9FwYijeCATVWmTAE4yfgFE=; b=BP3Jqim358yGzDSL85A3pqPc+O8u/LNOUMNYTLa2wjBwWSKICSiPrXcrAa6ueI+nFo G9ChrOgUyZadt3EH0Is5nsa2nT5MylSSrhBM8Ak9baKqo9APBOobpTnjymcXCyC1EMMF FB65XGMbYH2xaxsYylQANT213DqUdyXmirkoIj91LSFCp5PTb9FRPK7IWy2+edixr2gs MIwUh+0swfvVBtr9UtVR+9lXoambQDjR9Y8qjzunQyFlaUjJATctTrwVI0dWnbM14LJS 0mDe9eCe8jXOzL27peIiaB9aqb9f20DaFi7/FqGb9kZHHZiq7B+cmb+Em2tDNdmpi3hD SiJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244733; x=1787849533; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=qHiM1S2EXQ3M222ecsEes9FwYijeCATVWmTAE4yfgFE=; b=SsPSQVQ4qOtsSbZRhAOvOefxVcyS6BhgEBQdEqFo6v4p00FpHnSzvY0CgjKso9/9PJ aQ+YY0/aVJCtrkqoKMSFCSy0v0eFfBt9tgmAUU24FyBG/jA8Y74Y7zAnAGZ9EOu3eFMK vAh5TgCTmKmYAOJazooYaGj7Dku6FT2O0I1Sy9C1fqpZOi7ktssayOacq+pfVtEPWl4b bWou8+S5m8b8GJWKQpuS5HtIws1981RlL6lA62Vf75KSW+Ebl7u4POLnKQUrqHnebAUn 9DsP2AMauU332bwKXVszKEkrDC7jZwQFDQQ12ivH7t4fHxHSPYkTjz2BC6nbtJSeS0Ew 92gw== X-Gm-Message-State: AOJu0YwR+zh+aXlhsC7CH1sPPFxJXKYhCx5Anp3CF1If78O8kj0ozVhv 4NWAIRQFKvPUoOXU4PXfCxXYb3+30Yj/PdB6sly733CXhsUjKaqZ4RquZhi8DRskqvKDH+jtJSn KYMkLf03QCTpwHUsu/qIf4hP9F766GLij4EbkR18EdhZcwl3v2sW8pYww/itkIm5p9r2p+hkUL4 kIJO8Tg3qJ5pUmBvuyCiF4h5vB5f2PxoXt/jKC3IJf X-Gm-Gg: AR+sD118QbY7ghOrkC8Sy2iozfhHLK0Za5HtnQwgo+3IspU3VXBob8PP0v8K2igRBCf QnwGhd3zWE4zeO/aqOxOdfEc8Z5nV499MRfVC0VWFWWzlgwBjiq7iHU2qj55GAv9smPfNxK/Gej P8ZOenWPk4WzSXRJqmOBbM5URjWEPvtJqfmuEAX8OHRuM/stRGpRKvuB5naeOpL3+ipqeyfI3p9 xYn0rXK3xjazOFwml+KWLW3+1YwHLDdLXi6NcGsoDW/nJN+TC4dNnBP0FlHMhDPemTp7bdbLdOo l5lYIJ8YBcWgSW1V1JEPUg/zv7Kh0JdGttG3XZWljngr4Ag0wu/hAmAv2/WWVmt5audOurPaRnl 3qQ0yEioZtU+y1tflW3Dwmgjm3uwQwzSe8y3yMD25LN8OggXW2otM/MMD36w7WNz+Vddpc5pWx6 ycrR4= X-Received: by 2002:a05:600c:46d1:b0:499:4892:d022 with SMTP id 5b1f17b1804b1-499b8326b72mr3863535e9.8.1787244733050; Thu, 20 Aug 2026 09:52:13 -0700 (PDT) X-Received: by 2002:a05:600c:46d1:b0:499:4892:d022 with SMTP id 5b1f17b1804b1-499b8326b72mr3862555e9.8.1787244732521; Thu, 20 Aug 2026 09:52:12 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 48/53] rust: use meson automatic parsing of Cargo.toml Date: Thu, 20 Aug 2026 18:49:51 +0200 Message-ID: <20260820164957.1895963-49-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787244836341158500 Finally, automatic parsing of Cargo.toml is also possible for QEMU's own crates, not just for subprojects. This removes the need to list the dependencies and language editions in both Cargo.toml and meson.build files. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Paolo Bonzini --- meson.build | 7 +------ rust/bindings/chardev-sys/meson.build | 11 ++++------- rust/bindings/hwcore-sys/meson.build | 11 ++++------- rust/bindings/migration-sys/meson.build | 11 ++++------- rust/bindings/qom-sys/meson.build | 11 ++++------- rust/bindings/system-sys/meson.build | 11 ++++------- rust/bindings/util-sys/meson.build | 11 ++++------- rust/bits/meson.build | 7 ++----- rust/bql/meson.build | 13 +++---------- rust/chardev/meson.build | 8 ++------ rust/common/meson.build | 10 +++------- rust/hw/char/pl011/meson.build | 22 +--------------------- rust/hw/core/meson.build | 10 ++-------- rust/hw/timer/hpet/meson.build | 17 +---------------- rust/meson.build | 11 ----------- rust/migration/meson.build | 8 ++------ rust/qemu-macros/meson.build | 12 ++---------- rust/qom/meson.build | 8 ++------ rust/system/meson.build | 8 ++------ rust/trace/meson.build | 9 +++------ rust/util/meson.build | 7 ++----- 21 files changed, 52 insertions(+), 171 deletions(-) diff --git a/meson.build b/meson.build index 2593eb97624..3c6a82ab440 100644 --- a/meson.build +++ b/meson.build @@ -135,12 +135,7 @@ if have_rust =20 rustfmt =3D find_program('rustfmt', required: false) =20 - rustc_lint_args =3D run_command(rustc_args, '--lints', - capture: true, check: true).stdout().strip().splitlines() - if get_option('strict_rust_lints') - rustc_lint_args +=3D ['-Dwarnings', '-Funknown_lints'] - endif - + rustc_lint_args =3D get_option('strict_rust_lints') ? ['-Dwarnings', '-= Funknown_lints'] : [] add_project_arguments(rustc_lint_args + ['--cfg', 'MESON'], native: false, language: 'rust') add_project_arguments(rustc_lint_args + ['--cfg', 'MESON'], diff --git a/rust/bindings/chardev-sys/meson.build b/rust/bindings/chardev-= sys/meson.build index 458075b8060..7af5d74dd51 100644 --- a/rust/bindings/chardev-sys/meson.build +++ b/rust/bindings/chardev-sys/meson.build @@ -1,12 +1,9 @@ _bindgen_chardev_rs =3D rust.bindgen( args: bindgen_args_common + bindgen_args_data['chardev-sys'].split(), kwargs: bindgen_kwargs) -_chardev_sys_rs =3D static_library( - 'chardev_sys', - structured_sources(['lib.rs', _bindgen_chardev_rs]), - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', - dependencies: [glib_sys_rs, common_rs, qom_sys_rs, util_sys_rs], -) + +_chardev_sys_rs =3D cargo_ws.package('chardev-sys').library( + structured_sources(['lib.rs', _bindgen_chardev_rs])) +cargo_ws.package('chardev-sys').override_dependency(declare_dependency(lin= k_with: _chardev_sys_rs)) =20 chardev_sys_rs =3D declare_dependency(link_with: [_chardev_sys_rs]) diff --git a/rust/bindings/hwcore-sys/meson.build b/rust/bindings/hwcore-sy= s/meson.build index 3d51947b4a4..6b8d218f691 100644 --- a/rust/bindings/hwcore-sys/meson.build +++ b/rust/bindings/hwcore-sys/meson.build @@ -1,12 +1,9 @@ _bindgen_hwcore_rs =3D rust.bindgen( args: bindgen_args_common + bindgen_args_data['hwcore-sys'].split(), kwargs: bindgen_kwargs) -_hwcore_sys_rs =3D static_library( - 'hwcore_sys', - structured_sources(['lib.rs', _bindgen_hwcore_rs]), - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', - dependencies: [common_rs, glib_sys_rs, qom_sys_rs, util_sys_rs, migratio= n_sys_rs, chardev_sys_rs], -) + +_hwcore_sys_rs =3D cargo_ws.package('hwcore-sys').library( + structured_sources(['lib.rs', _bindgen_hwcore_rs])) +cargo_ws.package('hwcore-sys').override_dependency(declare_dependency(link= _with: _hwcore_sys_rs)) =20 hwcore_sys_rs =3D declare_dependency(link_with: [_hwcore_sys_rs]) diff --git a/rust/bindings/migration-sys/meson.build b/rust/bindings/migrat= ion-sys/meson.build index 9243acba300..91f2967c9b3 100644 --- a/rust/bindings/migration-sys/meson.build +++ b/rust/bindings/migration-sys/meson.build @@ -1,12 +1,9 @@ _bindgen_migration_rs =3D rust.bindgen( args: bindgen_args_common + bindgen_args_data['migration-sys'].split(), kwargs: bindgen_kwargs) -_migration_sys_rs =3D static_library( - 'migration_sys', - structured_sources(['lib.rs', _bindgen_migration_rs]), - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', - dependencies: [glib_sys_rs, common_rs, util_sys_rs], -) + +_migration_sys_rs =3D cargo_ws.package('migration-sys').library( + structured_sources(['lib.rs', _bindgen_migration_rs])) +cargo_ws.package('migration-sys').override_dependency(declare_dependency(l= ink_with: _migration_sys_rs)) =20 migration_sys_rs =3D declare_dependency(link_with: [_migration_sys_rs]) diff --git a/rust/bindings/qom-sys/meson.build b/rust/bindings/qom-sys/meso= n.build index 8f8ae7d1bc8..540e55eea88 100644 --- a/rust/bindings/qom-sys/meson.build +++ b/rust/bindings/qom-sys/meson.build @@ -1,12 +1,9 @@ _bindgen_qom_rs =3D rust.bindgen( args: bindgen_args_common + bindgen_args_data['qom-sys'].split(), kwargs: bindgen_kwargs) -_qom_sys_rs =3D static_library( - 'qom_sys', - structured_sources(['lib.rs', _bindgen_qom_rs]), - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', - dependencies: [glib_sys_rs, util_sys_rs], -) + +_qom_sys_rs =3D cargo_ws.package('qom-sys').library( + structured_sources(['lib.rs', _bindgen_qom_rs])) +cargo_ws.package('qom-sys').override_dependency(declare_dependency(link_wi= th: _qom_sys_rs)) =20 qom_sys_rs =3D declare_dependency(link_with: [_qom_sys_rs]) diff --git a/rust/bindings/system-sys/meson.build b/rust/bindings/system-sy= s/meson.build index aa5e8801149..b1f4770499c 100644 --- a/rust/bindings/system-sys/meson.build +++ b/rust/bindings/system-sys/meson.build @@ -1,12 +1,9 @@ _bindgen_system_rs =3D rust.bindgen( args: bindgen_args_common + bindgen_args_data['system-sys'].split(), kwargs: bindgen_kwargs) -_system_sys_rs =3D static_library( - 'system_sys', - structured_sources(['lib.rs', _bindgen_system_rs]), - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', - dependencies: [common_rs, glib_sys_rs, hwcore_sys_rs, migration_sys_rs, = qom_sys_rs, util_sys_rs], -) + +_system_sys_rs =3D cargo_ws.package('system-sys').library( + structured_sources(['lib.rs', _bindgen_system_rs])) +cargo_ws.package('system-sys').override_dependency(declare_dependency(link= _with: _system_sys_rs)) =20 system_sys_rs =3D declare_dependency(link_with: [_system_sys_rs]) diff --git a/rust/bindings/util-sys/meson.build b/rust/bindings/util-sys/me= son.build index c37f50a94bd..5a9db6152e1 100644 --- a/rust/bindings/util-sys/meson.build +++ b/rust/bindings/util-sys/meson.build @@ -1,12 +1,9 @@ _bindgen_util_rs =3D rust.bindgen( args: bindgen_args_common + bindgen_args_data['util-sys'].split(), kwargs: bindgen_kwargs) -_util_sys_rs =3D static_library( - 'util_sys', - structured_sources(['lib.rs', _bindgen_util_rs]), - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', - dependencies: [glib_sys_rs], -) + +_util_sys_rs =3D cargo_ws.package('util-sys').library( + structured_sources(['lib.rs', _bindgen_util_rs])) +cargo_ws.package('util-sys').override_dependency(declare_dependency(link_w= ith: _util_sys_rs)) =20 util_sys_rs =3D declare_dependency(link_with: [_util_sys_rs]) diff --git a/rust/bits/meson.build b/rust/bits/meson.build index c0094ffcf38..c64a17ba154 100644 --- a/rust/bits/meson.build +++ b/rust/bits/meson.build @@ -1,8 +1,5 @@ -_bits_rs =3D static_library( - 'bits', - 'src/lib.rs', - dependencies: [qemu_macros], -) +_bits_rs =3D cargo_ws.package('bits').library() +cargo_ws.package('bits').override_dependency(declare_dependency(link_with:= _bits_rs)) =20 bits_rs =3D declare_dependency(link_with: _bits_rs) =20 diff --git a/rust/bql/meson.build b/rust/bql/meson.build index de295d2983e..8bdc9b53a2c 100644 --- a/rust/bql/meson.build +++ b/rust/bql/meson.build @@ -1,17 +1,10 @@ -_bql_cfg =3D run_command(rustc_args, - '--config-headers', config_host_h, '--features', files('Cargo.toml'), - capture: true, check: true).stdout().strip().splitlines() - +_bql_cfg =3D [] if get_option('debug_mutex') _bql_cfg +=3D ['--cfg', 'feature=3D"debug_cell"'] endif =20 -_bql_rs =3D static_library( - 'bql', - 'src/lib.rs', - rust_args: _bql_cfg, - dependencies: [glib_sys_rs, util_sys_rs], -) +_bql_rs =3D cargo_ws.package('bql').library(rust_args: _bql_cfg) +cargo_ws.package('bql').override_dependency(declare_dependency(link_with: = _bql_rs)) =20 bql_rs =3D declare_dependency(link_with: [_bql_rs], dependencies: [qemuutil]) diff --git a/rust/chardev/meson.build b/rust/chardev/meson.build index 7b267fd23ae..f3462e9209e 100644 --- a/rust/chardev/meson.build +++ b/rust/chardev/meson.build @@ -1,8 +1,4 @@ -_chardev_rs =3D static_library( - 'chardev', - 'src/lib.rs', - link_with: [_bql_rs, _migration_rs, _qom_rs, _util_rs], - dependencies: [glib_sys_rs, common_rs, qemu_macros, chardev_sys_rs], -) +_chardev_rs =3D cargo_ws.package('chardev').library() +cargo_ws.package('chardev').override_dependency(declare_dependency(link_wi= th: _chardev_rs)) =20 chardev_rs =3D declare_dependency(link_with: [_chardev_rs], dependencies: = [chardev, qemuutil]) diff --git a/rust/common/meson.build b/rust/common/meson.build index 57091b18fc4..43afe417dcd 100644 --- a/rust/common/meson.build +++ b/rust/common/meson.build @@ -1,13 +1,9 @@ _common_cfg =3D run_command(rustc_args, - '--config-headers', config_host_h, '--features', files('Cargo.toml'), + '--config-headers', config_host_h, files('Cargo.toml'), capture: true, check: true).stdout().strip().splitlines() =20 -_common_rs =3D static_library( - 'common', - 'src/lib.rs', - rust_args: _common_cfg, - dependencies: [libc_rs, qemu_macros], -) +_common_rs =3D cargo_ws.package('common').library(rust_args: _common_cfg) +cargo_ws.package('common').override_dependency(declare_dependency(link_wit= h: _common_rs)) =20 common_rs =3D declare_dependency(link_with: [_common_rs]) =20 diff --git a/rust/hw/char/pl011/meson.build b/rust/hw/char/pl011/meson.build index 1a1a09e5083..92b7d375f75 100644 --- a/rust/hw/char/pl011/meson.build +++ b/rust/hw/char/pl011/meson.build @@ -8,8 +8,7 @@ _libpl011_bindings_inc_rs =3D rust.bindgen( kwargs: bindgen_kwargs, ) =20 -_libpl011_rs =3D static_library( - 'pl011', +_libpl011_rs =3D cargo_ws.package('pl011').library( structured_sources( [ 'src/lib.rs', @@ -19,25 +18,6 @@ _libpl011_rs =3D static_library( ], {'.' : _libpl011_bindings_inc_rs}, ), - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', - link_with: [ - _util_rs, - _migration_rs, - _bql_rs, - _qom_rs, - _chardev_rs, - _system_rs, - _hwcore_rs, - _trace_rs - ], - dependencies: [ - bilge_rs, - bilge_impl_rs, - bits_rs, - common_rs, - glib_sys_rs, - ], ) =20 rust_devices_ss.add(when: 'CONFIG_X_PL011_RUST', if_true: [declare_depende= ncy( diff --git a/rust/hw/core/meson.build b/rust/hw/core/meson.build index 6d1bfd4d204..da0f13d3149 100644 --- a/rust/hw/core/meson.build +++ b/rust/hw/core/meson.build @@ -1,11 +1,5 @@ -_hwcore_rs =3D static_library( - 'hwcore', - 'src/lib.rs', - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', - link_with: [_bql_rs, _chardev_rs, _migration_rs, _qom_rs, _util_rs], - dependencies: [glib_sys_rs, qemu_macros, common_rs, hwcore_sys_rs], -) +_hwcore_rs =3D cargo_ws.package('hwcore').library() +cargo_ws.package('hwcore').override_dependency(declare_dependency(link_wit= h: _hwcore_rs)) =20 hwcore_rs =3D declare_dependency(link_with: [_hwcore_rs], dependencies: [qom_rs, hwcore]) diff --git a/rust/hw/timer/hpet/meson.build b/rust/hw/timer/hpet/meson.build index 3bb7ce2a6ca..419e8f40b70 100644 --- a/rust/hw/timer/hpet/meson.build +++ b/rust/hw/timer/hpet/meson.build @@ -1,19 +1,4 @@ -_libhpet_rs =3D static_library( - 'hpet', - files('src/lib.rs'), - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', - link_with: [ - _util_rs, - _migration_rs, - _bql_rs, - _qom_rs, - _system_rs, - _hwcore_rs, - _trace_rs, - ], - dependencies: [common_rs], -) +_libhpet_rs =3D cargo_ws.package('hpet').library() =20 rust_devices_ss.add(when: 'CONFIG_X_HPET_RUST', if_true: [declare_dependen= cy( link_whole: [_libhpet_rs], diff --git a/rust/meson.build b/rust/meson.build index 1622a50a978..c0c4e52c1b0 100644 --- a/rust/meson.build +++ b/rust/meson.build @@ -5,17 +5,6 @@ else endif =20 cargo_ws =3D import('rust').workspace() -anyhow_rs =3D cargo_ws.subproject('anyhow').dependency() -bilge_rs =3D cargo_ws.subproject('bilge').dependency() -bilge_impl_rs =3D cargo_ws.subproject('bilge-impl').dependency() -foreign_rs =3D cargo_ws.subproject('foreign').dependency() -glib_sys_rs =3D cargo_ws.subproject('glib-sys').dependency() -libc_rs =3D cargo_ws.subproject('libc').dependency() -probe_rs =3D cargo_ws.subproject('probe').dependency() -quote_rs_native =3D cargo_ws.subproject('quote').dependency() -syn_rs_native =3D cargo_ws.subproject('syn').dependency() -proc_macro2_rs_native =3D cargo_ws.subproject('proc-macro2').dependency() -attrs_rs_native =3D cargo_ws.subproject('attrs').dependency() =20 genrs =3D [] =20 diff --git a/rust/migration/meson.build b/rust/migration/meson.build index 96266897770..b9ba82989e3 100644 --- a/rust/migration/meson.build +++ b/rust/migration/meson.build @@ -1,9 +1,5 @@ -_migration_rs =3D static_library( - 'migration', - 'src/lib.rs', - link_with: [_util_rs, _bql_rs], - dependencies: [common_rs, glib_sys_rs, qemu_macros, migration_sys_rs], -) +_migration_rs =3D cargo_ws.package('migration').library() +cargo_ws.package('migration').override_dependency(declare_dependency(link_= with: _migration_rs)) =20 migration_rs =3D declare_dependency(link_with: [_migration_rs], dependencies: [bql_rs, migration, qemuutil]) diff --git a/rust/qemu-macros/meson.build b/rust/qemu-macros/meson.build index cdea5bf439e..7b25ccefe35 100644 --- a/rust/qemu-macros/meson.build +++ b/rust/qemu-macros/meson.build @@ -1,13 +1,5 @@ -_qemu_macros_rs =3D rust.proc_macro( - 'qemu_macros', - files('src/lib.rs'), - dependencies: [ - attrs_rs_native, - proc_macro2_rs_native, - quote_rs_native, - syn_rs_native, - ], -) +_qemu_macros_rs =3D cargo_ws.package('qemu_macros').proc_macro() +cargo_ws.package('qemu_macros').override_dependency(declare_dependency(lin= k_with: _qemu_macros_rs)) =20 qemu_macros =3D declare_dependency( link_with: _qemu_macros_rs, diff --git a/rust/qom/meson.build b/rust/qom/meson.build index 9865da280cf..6736cfb24c2 100644 --- a/rust/qom/meson.build +++ b/rust/qom/meson.build @@ -1,9 +1,5 @@ -_qom_rs =3D static_library( - 'qom', - 'src/lib.rs', - link_with: [_bql_rs, _migration_rs], - dependencies: [common_rs, glib_sys_rs, qemu_macros, qom_sys_rs], -) +_qom_rs =3D cargo_ws.package('qom').library() +cargo_ws.package('qom').override_dependency(declare_dependency(link_with: = _qom_rs)) =20 qom_rs =3D declare_dependency(link_with: [_qom_rs], dependencies: [qemu_ma= cros, qom, qemuutil]) =20 diff --git a/rust/system/meson.build b/rust/system/meson.build index 89c1f2b84d1..b1edcd6bbe7 100644 --- a/rust/system/meson.build +++ b/rust/system/meson.build @@ -1,9 +1,5 @@ -_system_rs =3D static_library( - 'system', - 'src/lib.rs', - link_with: [_bql_rs, _hwcore_rs, _migration_rs, _qom_rs, _util_rs], - dependencies: [glib_sys_rs, common_rs, qemu_macros, system_sys_rs], -) +_system_rs =3D cargo_ws.package('system').library() +cargo_ws.package('system').override_dependency(declare_dependency(link_wit= h: _system_rs)) =20 system_rs =3D declare_dependency(link_with: [_system_rs], dependencies: [hwcore]) diff --git a/rust/trace/meson.build b/rust/trace/meson.build index 0071a49cf72..b049f73b542 100644 --- a/rust/trace/meson.build +++ b/rust/trace/meson.build @@ -7,11 +7,8 @@ lib_rs =3D configure_file( 'MESON_BUILD_ROOT': meson.project_build_root(), }) =20 -_trace_rs =3D static_library( - 'trace', # Library name, - lib_rs, - trace_rs_targets, # List of generated `.rs` custom targets - dependencies: [libc_rs, probe_rs], -) +_trace_rs =3D cargo_ws.package('trace').library( + structured_sources([lib_rs, trace_rs_targets])) +cargo_ws.package('trace').override_dependency(declare_dependency(link_with= : _trace_rs)) =20 trace_rs =3D declare_dependency(link_with: _trace_rs) diff --git a/rust/util/meson.build b/rust/util/meson.build index 6d175ae0b0f..704501b573f 100644 --- a/rust/util/meson.build +++ b/rust/util/meson.build @@ -1,8 +1,5 @@ -_util_rs =3D static_library( - 'util', - 'src/lib.rs', - dependencies: [anyhow_rs, libc_rs, foreign_rs, glib_sys_rs, common_rs, u= til_sys_rs], -) +_util_rs =3D cargo_ws.package('util').library() +cargo_ws.package('util').override_dependency(declare_dependency(link_with:= _util_rs)) =20 util_rs =3D declare_dependency(link_with: [_util_rs], dependencies: [qemuu= til, qom]) =20 --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244979; cv=none; d=zohomail.com; s=zohoarc; b=OvFE2yQlvs0Ki+NQmCfB3L2v+io5gIlgtdBHI0NwBdyvHfGufxcdz2VUs6HK8g/EOFMEE5bmTPRh7+Zb6nj/hj9gLqjZmLvWOKVj3/eSFJjwDR901lRQZEYBs0txm++ww/H+Fg2DpQnf+4O6KV7EG8hV2yXGDO0zDac5rTUyop0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244979; 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=FXJV6GBNTPt4N5v8vOHDfcbznd+tYVvsXWykfga//54=; b=Wi2rm6mfwhkNWb5bxltU49uS+FdTwokg3TIHQ3SJw856zUs+SO9bbA6XMkSXJBlzsQ5e89JUdmZ95UBqJ5lPiTJEmYrBFo2HjGNboGMWrqFNYCjZY+jZhUEAjN+LQ1qA0W46ZPktrAUv/MhyiPyVLIK74b8owfN+1xBPoMEC6xM= 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 1787244979572459.30404088471766; Thu, 20 Aug 2026 09:56:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx60C-0001oi-E2; Thu, 20 Aug 2026 12:52:28 -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 1wx609-0001XS-05 for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52:26 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx607-0005oJ-1R for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52:24 -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-27-5_7fhoddM1m5IhK5WCE4zA-1; Thu, 20 Aug 2026 12:52:19 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-48000d75326so66105f8f.2 for ; Thu, 20 Aug 2026 09:52:19 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499affa25acsm94943355e9.4.2026.08.20.09.52.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:52:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244742; 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=FXJV6GBNTPt4N5v8vOHDfcbznd+tYVvsXWykfga//54=; b=aN4+12cvQlXIVb3HVFXVyvC1Awgze34oAfxRXXiTfQ/Dkb1Z6RSijyfrr4eRN3SyVd/qj7 ysfESnBqYEy3yHm/lLr1fIj8jl/C5qN2060blmrNg0X03nRqSsnlgmMo26cXmXKYS7wUTv h3yucwhVV6s/fOcpiBlyOkFVBbjKzCc= X-MC-Unique: 5_7fhoddM1m5IhK5WCE4zA-1 X-Mimecast-MFC-AGG-ID: 5_7fhoddM1m5IhK5WCE4zA_1787244739 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244738; x=1787849538; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=FXJV6GBNTPt4N5v8vOHDfcbznd+tYVvsXWykfga//54=; b=RwvCPsha8czqY00JFYy9+txBSiI89oeAwEjnIl7dW+LwWla4+CLnQ979zZ+QSitqie KWFt6gYwHA31ne6wrI76BpehqtYJvl/6m7B1vsjne+YmFRQvZBDiVluQDGBo9z3spbnH u0gqZB14DBWtnrorcwSPFcIB0UwXVs/FU8poo9v1KYubGLn6rSEKuSatIpc+EVhSprHJ FcRbPSuBlVNyFYfi/uHR1t7Rafzsv12ExvyqwfnJVFIqs/rgi8Z+ooyDeQBSEaNKFQ2l z2HKN2/tI7+I/4UvGihg4xJ0zrLWAa6LjHgrH2jKB6gNevG5tv8QIlZQfShXABtucAzo Jpqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244738; x=1787849538; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=FXJV6GBNTPt4N5v8vOHDfcbznd+tYVvsXWykfga//54=; b=V5a/q8ck8lk7yrvOyR15BXl/SWjJShqBg6VRRy5UL6fdNXcZsRp3M8a1Z3rWPizHkw hFIhPDa8y6atzzEBsPcgnFiP8shoC9+fq1PqqsX9XC1WvKpNODyekyF+87/fjOSrt2xk 2+14TlUqyvyMM7UIbeeheP8WLbtD63ozL2ll6kzf4kYtDOfF8NVMxj/KVlY8bx38PzN3 nXBqWHZ5oJ9COxekSlmCf5zwtdStTVoNihYDHQJw1PprEbi91mfkAcHxMyu7oFnVjRfQ GLBDWvmFKZYmRA/0y+cDBBgupeNbbOwxuz2S1V6w2TAjFRwp0T5lf1hp/pGsE7ojXphU K+EA== X-Gm-Message-State: AOJu0Yy5giT5Vx+MeMNW2oYkQfar3puFt5Xtg9Y3s1tWN9BBnIPyra4l pOyfgNw33afJoYQRxACgZXP7EIR7d5F6HsRRwkC8EiUpQ1FFKBq/QUNWfMw0JqrHCr+ptHpVuXP ijVrXW1CqXJsWdYJeWcdWRPWgzAR9/tLxjSVg8BMnaqhf2auR42n5V90xKdrHnpkuss5Q3YifLJ hcOFuL09wI3HY8LBdkCsA+qroRhzgReNPshOqSBiNA X-Gm-Gg: AR+sD10E5WFgyAWZSOEfVl+InRD+duel5+lZabTJr1UuRrjLsOeykNJQV17jg361wkY mu0SFuIQBIiQFNZMBzbT74Zd8zUqIzQx/PcFClpVevPUV/BB46sypMqUBiPbMR1vlq9q94ZjA5M c36IKldsmg9P+lHf/bD6i4WU4DcKwEyihWT0jhs24fiPsJOz0Vboqt1ttsuhgPBs9T/I/q1abxC clQrlAaYW/Iiop8siGkyjRDJ1QcV3p42JUUBa1+QKPN7z6L5qdUFv1KuCKh4t5chRl/arjRrzmX siueqd3ejxYa8We1C12iX9mdSxziY3jSt3b9Z0uoT3fcBkrdoq3l92AJw+sJNJJpXDvyTj8i+Vy FaYxJfFKnC17lJVTlAZi0ixv7U8yJ6bsk0Gak9F6xLZEOd7CywR75ev6oOTl8VjC73+Rq4rI7ii mWCbw= X-Received: by 2002:a05:600c:4fc5:b0:499:b000:b828 with SMTP id 5b1f17b1804b1-499b830db9fmr4390995e9.4.1787244738591; Thu, 20 Aug 2026 09:52:18 -0700 (PDT) X-Received: by 2002:a05:600c:4fc5:b0:499:b000:b828 with SMTP id 5b1f17b1804b1-499b830db9fmr4390025e9.4.1787244738134; Thu, 20 Aug 2026 09:52:18 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 49/53] docs: rust: update for new-style build rules Date: Thu, 20 Aug 2026 18:49:52 +0200 Message-ID: <20260820164957.1895963-50-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787244980897158500 Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Paolo Bonzini --- docs/devel/rust.rst | 83 +++++++++++++++------------------------------ 1 file changed, 27 insertions(+), 56 deletions(-) diff --git a/docs/devel/rust.rst b/docs/devel/rust.rst index af142c4a694..94c550b39b3 100644 --- a/docs/devel/rust.rst +++ b/docs/devel/rust.rst @@ -21,15 +21,11 @@ invokes rustc directly, building static libraries that = are then linked together with the C code. This is completely automatic when you run ``make`` or ``ninja``. =20 -However, QEMU's build system also tries to be easy to use for people who -are accustomed to the more "normal" Cargo-based development workflow. -In particular: - -* the set of warnings and lints that are used to build QEMU always - comes from the ``Cargo.toml`` workspace file - -* it is also possible to use ``cargo`` for common Rust-specific coding - tasks, in particular to invoke ``clippy``, ``rustfmt`` and ``rustdoc``. +However, Meson is able to consume ``Cargo.toml`` files and tries +to be easy to use for people who are accustomed to the more "normal" +Cargo-based development workflow. In the case of QEMU, in addition, +it is possible to use ``cargo`` for common Rust-specific coding +tasks, in particular to invoke ``clippy``, ``rustfmt`` and ``rustdoc``. =20 To this end, QEMU includes a ``build.rs`` build script that picks up generated sources from QEMU's build directory and puts it in Cargo's @@ -466,63 +462,38 @@ Adding dependencies Generally, the set of dependent crates is kept small. Think twice before adding a new external crate, especially if it comes with a large set of dependencies itself. Sometimes QEMU only needs a small subset of the -functionality; see for example QEMU's ``assertions`` module. +functionality; see for example QEMU's ``assertions`` module. Also, +choose a version of the crate that works with QEMU's minimum supported +Rust version (|msrv|). =20 On top of this recommendation, adding external crates to QEMU is a slightly complicated process, mostly due to the need to teach Meson how -to build them. While Meson has initial support for parsing ``Cargo.lock`` -files, it is still highly experimental and is therefore not used. +to download them. While QEMU uses Meson's support for parsing ``Cargo.tom= l`` +files, it ships ``.wrap`` files instead of using ``Cargo.lock``; this way, +distros can adjust the set of dependencies to the exact versions they use. +The versions specified in QEMU's ``Cargo.lock`` must be the same as the +one in the wrap file. =20 -Therefore, external crates must be added as subprojects for Meson to -learn how to build them, as well as to the relevant ``Cargo.toml`` files. -The versions specified in ``Cargo.lock`` must be the same as the -subprojects; note that the QEMU source tree forms a Cargo `workspace`__, -and therefore there is a single lock file for the whole build. - -__ https://doc.rust-lang.org/cargo/reference/workspaces.html#virtual-works= pace - -Choose a version of the crate that works with QEMU's minimum supported -Rust version (|msrv|). - -Second, a new ``wrap`` file must be added to teach Meson how to download t= he -crate. The wrap file must be named ``NAME-SEMVER-rs.wrap``, where ``NAME`` +The wrap file must be named ``NAME-SEMVER-rs.wrap``, where ``NAME`` is the name of the crate and ``SEMVER`` is the version up to and including= the first non-zero number. For example, a crate with version ``0.2.3`` will u= se ``0.2`` for its ``SEMVER``, while a crate with version ``1.0.84`` will use= ``1``. =20 -Third, the Meson rules to build the crate must be added at -``subprojects/NAME-SEMVER-rs/meson.build``. Generally this includes: +Usually, Meson is able to figure out how to build the crate, and also hand= les +cross compilation correctly. For crates that have a ``build.rs`` file, +equivalent rules must be added to +``subprojects/packagefiles/NAME-SEMVER-rs/meson/meson.build``. +The file can modify the ``extra_args`` and ``extra_deps`` variables, +which contain respectively the compiler arguments and external dependencies +for the crate. =20 -* ``subproject`` and ``dependency`` lines for all dependent crates +After every change to the ``meson/meson.build`` file you have to update the +patched version with ``meson subprojects update --reset ``NAME-SEMVER-rs``. +This might be automated in the future. =20 -* a ``static_library`` or ``rust.proc_macro`` line to perform the actual b= uild - -* ``declare_dependency`` and a ``meson.override_dependency`` lines to expo= se - the result to QEMU and to other subprojects - -Remember to add ``native: true`` to ``dependency``, ``static_library`` and -``meson.override_dependency`` for dependencies of procedural macros. -If a crate is needed in both procedural macros and QEMU binaries, everythi= ng -apart from ``subproject`` must be duplicated to build both native and -non-native versions of the crate. - -It's important to specify the right compiler options. These include: - -* the language edition (which can be found in the ``Cargo.toml`` file) - -* the ``--cfg`` (which have to be "reverse engineered" from the ``build.rs= `` - file of the crate). - -* usually, a ``--cap-lints allow`` argument to hide warnings from rustc - or clippy. - -After every change to the ``meson.build`` file you have to update the patc= hed -version with ``meson subprojects update --reset ``NAME-SEMVER-rs``. This = might -be automated in the future. - -Also, after every change to the ``meson.build`` file it is strongly sugges= ted to -do a dummy change to the ``.wrap`` file (for example adding a comment like -``# version 2``), which will help Meson notice that the subproject is out = of date. +Also, after every change to the file it is strongly suggested to do a dummy +change to the ``.wrap`` file (for example adding a comment like ``# versio= n 2``), +which will help Meson notice that the subproject is out of date. =20 As a last step, add the new subproject to ``scripts/archive-source.sh``, ``scripts/make-release`` and ``subprojects/.gitignore``. --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244957; cv=none; d=zohomail.com; s=zohoarc; b=mP+XzYZVClzgtWt6HoT4hhYr23shWrPW4wPuOF4lEvTTMt0S+eSiNqCxIBBmjmxELoob1YbnlyBcj+QAw6NnLbIBTkmJ7it85L+GR+VKXyBw8WtHONhwHXbLxprD8vtP8t59/V1zBU6rTjqAAKkRrmuUpwAJgPLaJnD/ikmq5GA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244957; 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=XtsaqgiyMjWc11nXZ/58/F9qHxa9T6D5V0veqe5qfXY=; b=gmxeK3QdJAHkYdtI0kpMBwXD5Z+6nNOCjr1HVFR0CFZHpKFSQAno1HXgZ5+pYaE1GWXj6Z/65ifE55REqwWDtECzYUpfkH4VxRx6G3I9FTaffjR3j6iV984DITDSJ/7pwfS9XnD+5TCZXAe9UNGjNi2BdgT0Iz/TbWDWdWKuL7A= 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 1787244957644784.0025440619778; Thu, 20 Aug 2026 09:55:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx60H-0002Od-Fy; Thu, 20 Aug 2026 12:52:33 -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 1wx60F-0002As-5b for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52:31 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx60D-0005oo-Dg for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52:30 -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-101-DAzygxfWMFiNkUNhXx8dLQ-1; Thu, 20 Aug 2026 12:52:21 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-47f83416551so83669f8f.3 for ; Thu, 20 Aug 2026 09:52:21 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499a9e78496sm167766805e9.2.2026.08.20.09.52.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:52:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244748; 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=XtsaqgiyMjWc11nXZ/58/F9qHxa9T6D5V0veqe5qfXY=; b=DQYyLKsF+eoln3IUUdNBgO6UWowm0e5TN5rbJl4D2xmF4sqhMEGIDTpveVgU7F5Lbsm/cu oAbXiGCNqx/HlSpNZkby3MDYusoX8uljnAaZfK+cUzDWtED18x7Tt6fZ50cvXka/UYRzo6 SQwlgXUZI8lvs0dc/LJlRGFBhzVNN2U= X-MC-Unique: DAzygxfWMFiNkUNhXx8dLQ-1 X-Mimecast-MFC-AGG-ID: DAzygxfWMFiNkUNhXx8dLQ_1787244740 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244740; x=1787849540; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=XtsaqgiyMjWc11nXZ/58/F9qHxa9T6D5V0veqe5qfXY=; b=r/+qk0pBhL+Zjqc3vypnWIP9uC/kCSprsz40dFfTVT92faan+DkIDMMvW7jB0m7kCw FuFyH0fTy/5E6MgOT2B+2A+XjNp/RgGKorUffKU3hsgkEgK/eo0AfpQETgteyPsY86tq IIMREW2uOu97KT/16XbwwMfg29xcz4WJkck84zy0a4WSaLGUVfG5xeW9F1AulopYMdCx fYN54esA6RcuoxGHLXb6FkX+EIb6LZ9K4sygonXLRv7CPBDkjSd/11IoSREsLc0h6ocF NYLvKeTwXSIY63JQbnykXLJo+9mC8dNlIzmpBWRC97uhavSt9YIyc/vMAvERN6vUkaey +/YA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244740; x=1787849540; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=XtsaqgiyMjWc11nXZ/58/F9qHxa9T6D5V0veqe5qfXY=; b=netTT9jc+9LMeGazY8+ZN/vA7WeSdQReSwimuSDT4++R1bbuZGCcLbw84huHs1wbCt OCrYTYqeukaVJViZOL/2BFYnBg7QQNmFkGC5ENd0AgVKCe/1XZ0zXwa7oTY6vdwSNlSC TH1KpF95haNcP7Ud0RJrl6/HfqLZ2E7AEVdebQPvBgCKhnfdWHYa00Cerdw/sP159zW4 lBvUqygw2dS6ZAIk5bFwEXLzlHkLwRCn7p7LztyPc64KrG+hjwQcsL+RJezLTxU0Tm9i tatSZMuUxLTKETbbnV9RoegL+pfmajp+7KUhB+sLplanF73GvfeXv5w9kre/8yjjtof7 KNww== X-Gm-Message-State: AOJu0Yx1BvL0eb0/rbn5UlQj1s5k1g+MyHsLHCQTmfxXLuZDw56SKoa2 GnL0+nVhC37Fo7LoxFeyqRFDpMCz1dl2YBI2hQ0gXuVQFFzKkdhfy1qoBKKICg3OmyUK3whmA8n qQXpdgoa8bansFnxY2xe8FmwMNftGWbmA+Zkv1cf2Hb0WUi3PvFPqa3YTIzr+FYIiTmbPBxIuLQ DKlTV56hJQqZAUG4DMV0sCbSqRMQgLUMXDm6JFrp76 X-Gm-Gg: AR+sD11vaIlyQEfRZJPAfFCpjc8kQLcI1dCDHUMjYKJm5mNCLwwxZRrByZVwpyCU1oo Fta6tbiZXur0XQhFq6m7Qeah3CChG/oiPELzs/r9sHVhXoD8K1CG+mKhFCgdctDWAOpTaVoAfvM 8EdAF2tIdpgADRQS69rpUYDXM9+hAa3xN2EPFPXRjXBnH3Ii/WbCdnkhl4uwxoH5hC/M8LskLKu hJex4cDX1Yw/7nupQdsGdV6lD8K3IZdO6dspNvBH5wVHyRGzUR7QOnnW15AijX6RSb8g4KEzxGZ TIeYpLYL8Bmk00vwvuxfpCq/yqwpG2Zo/p1c5yZqMOgpuUJWuJjmXMisQT7Rs8ZsbfbK8ul/bsB p/dmqh+WA9UIqOKJIA3jL4oMRVveoO+lmdPZnmYzktRbHHZQ0+dCbeLX+rE8nYzyYV1DiPFz5W0 U6SGY= X-Received: by 2002:a05:600c:34c6:b0:495:779a:ed33 with SMTP id 5b1f17b1804b1-499b8325a6dmr4613775e9.7.1787244740368; Thu, 20 Aug 2026 09:52:20 -0700 (PDT) X-Received: by 2002:a05:600c:34c6:b0:495:779a:ed33 with SMTP id 5b1f17b1804b1-499b8325a6dmr4612655e9.7.1787244739865; Thu, 20 Aug 2026 09:52:19 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 50/53] scripts: remove now dead parts of rustc_args.py Date: Thu, 20 Aug 2026 18:49:53 +0200 Message-ID: <20260820164957.1895963-51-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1787244958794158500 The logic to parse the [lints] section has been integrated into Meson and can be removed. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Paolo Bonzini --- meson.build | 1 - scripts/rust/rustc_args.py | 80 +------------------------------------- 2 files changed, 1 insertion(+), 80 deletions(-) diff --git a/meson.build b/meson.build index 3c6a82ab440..6dcfdceb507 100644 --- a/meson.build +++ b/meson.build @@ -130,7 +130,6 @@ endif =20 if have_rust rustc_args =3D [find_program('scripts/rust/rustc_args.py'), - '--rustc-version', rustc.version(), '--workspace', meson.project_source_root()] =20 rustfmt =3D find_program('rustfmt', required: false) diff --git a/scripts/rust/rustc_args.py b/scripts/rust/rustc_args.py index 8098053720a..107b944c161 100644 --- a/scripts/rust/rustc_args.py +++ b/scripts/rust/rustc_args.py @@ -25,10 +25,9 @@ """ =20 import argparse -from dataclasses import dataclass import logging from pathlib import Path -from typing import Any, Iterable, List, Mapping, Optional, Set +from typing import Any, Iterable, Mapping, Optional, Set =20 try: import tomllib @@ -74,40 +73,6 @@ def get_table(self, key: str, can_be_workspace: bool =3D= False) -> Mapping[Any, An return table =20 =20 -@dataclass -class LintFlag: - flags: List[str] - priority: int - - -def generate_lint_flags(cargo_toml: CargoTOML) -> Iterable[str]: - """Converts Cargo.toml lints to rustc -A/-D/-F/-W flags.""" - - toml_lints =3D cargo_toml.lints - - lint_list =3D [] - for k, v in toml_lints.items(): - prefix =3D "" if k =3D=3D "rust" else k + "::" - for lint, data in v.items(): - level =3D data if isinstance(data, str) else data["level"] - priority =3D 0 if isinstance(data, str) else data.get("priorit= y", 0) - if level =3D=3D "deny": - flag =3D "-D" - elif level =3D=3D "allow": - flag =3D "-A" - elif level =3D=3D "warn": - flag =3D "-W" - elif level =3D=3D "forbid": - flag =3D "-F" - else: - raise Exception(f"invalid level {level} for {prefix}{lint}= ") - lint_list.append(LintFlag(flags=3D[flag, prefix + lint], prior= ity=3Dpriority)) - - lint_list.sort(key=3Dlambda x: x.priority) - for lint in lint_list: - yield from lint.flags - - def generate_cfg_flags(header: str, cargo_toml: CargoTOML) -> Iterable[str= ]: """Converts defines from config[..].h headers to rustc --cfg flags.""" =20 @@ -154,60 +119,17 @@ def main() -> None: required=3DFalse, default=3DNone, ) - parser.add_argument( - "--features", - action=3D"store_true", - dest=3D"features", - help=3D"generate --check-cfg arguments for features", - required=3DFalse, - default=3DNone, - ) - parser.add_argument( - "--lints", - action=3D"store_true", - dest=3D"lints", - help=3D"generate arguments from [lints] table", - required=3DFalse, - default=3DNone, - ) - parser.add_argument( - "--rustc-version", - metavar=3D"VERSION", - dest=3D"rustc_version", - action=3D"store", - help=3D"version of rustc", - required=3DFalse, - default=3D"1.0.0", - ) args =3D parser.parse_args() if args.verbose: logging.basicConfig(level=3Dlogging.DEBUG) logging.debug("args: %s", args) =20 - rustc_version =3D tuple((int(x) for x in args.rustc_version.split('.')= [0:2])) if args.workspace: workspace_cargo_toml =3D Path(args.workspace, "Cargo.toml").resolv= e() cargo_toml =3D CargoTOML(args.cargo_toml, str(workspace_cargo_toml= )) else: cargo_toml =3D CargoTOML(args.cargo_toml, None) =20 - if args.lints: - for tok in generate_lint_flags(cargo_toml): - print(tok) - - if rustc_version >=3D (1, 80): - if args.lints: - print("--check-cfg") - print("cfg(test)") - for cfg in sorted(cargo_toml.check_cfg): - print("--check-cfg") - print(cfg) - if args.features: - for feature in cargo_toml.get_table("features"): - if feature !=3D "default": - print("--check-cfg") - print(f'cfg(feature,values("{feature}"))') - for header in args.config_headers: for tok in generate_cfg_flags(header, cargo_toml): print(tok) --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244900; cv=none; d=zohomail.com; s=zohoarc; b=F9qjhM+Jlwo/fIk/gHjvWqTjJPtWQqD82ZslaCMb+LT59a2PJUu/DZd+0WdSu07sGSQ01PCxpJS/EyyMKWoMJPIJZxl92jkOsWn0sUeWFbH3xNDz5VzSsdF9wjtphQ3ZaDF8W3BSZ5kgzrQbqux1lBCi1J562+zJaxoxlpTJs90= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244900; 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=cIAqd6a63BrQ3nMEKcWvDHjF/pUKTwSYOcy4U14TrKE=; b=Nm4Dx8rCKMery7+5dqHFmKCOEzUeB0dpVwScU0T2rIsr3eVaAQYoOKS8Ei/y614gebtuP/iS8knPOfwvQuumAHRGJJWSBzPJ7jw0GP0YeyTfH5eT5jyHEPg1FdbM5ulBOi1tuIv3Irff2imuShauDcSdepvqgO8yGGwv+dtEZEs= 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 1787244900505115.12497904592317; Thu, 20 Aug 2026 09:55:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx60J-0002Za-1r; Thu, 20 Aug 2026 12:52:35 -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 1wx60G-0002I5-Jj for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52:32 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx60E-0005ot-EL for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52:32 -0400 Received: from mail-ed1-f70.google.com (mail-ed1-f70.google.com [209.85.208.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-418-WoESTNjwPVGqltFkWEYDDA-1; Thu, 20 Aug 2026 12:52:28 -0400 Received: by mail-ed1-f70.google.com with SMTP id 4fb4d7f45d1cf-6a18e266026so105075a12.3 for ; Thu, 20 Aug 2026 09:52:27 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6a3ff0d362dsm2629448a12.12.2026.08.20.09.52.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:52:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244749; 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=cIAqd6a63BrQ3nMEKcWvDHjF/pUKTwSYOcy4U14TrKE=; b=YJ3gisBRREBS8Ys9LOuLo9rWF5TSSev4HBoAVeUoeDj2hQ/lnqSgAYpGjGQaBs6w9FEuNb M1fVq9EP4viwF9Fq981UhOVk1XUTqH7wg9DIamTvODqhXojVjchh312R34C3RYE38fd2M9 cBZDWQGZdnyu50Arv4YrD0Vb2OrWEIU= X-MC-Unique: WoESTNjwPVGqltFkWEYDDA-1 X-Mimecast-MFC-AGG-ID: WoESTNjwPVGqltFkWEYDDA_1787244746 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244746; x=1787849546; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=cIAqd6a63BrQ3nMEKcWvDHjF/pUKTwSYOcy4U14TrKE=; b=aYW1oULFUK4GFMfJNI3V7qsxpsId/1gNaZkaIzJA9h0COtb0+bWdtNWVtGlSaHVaj0 7EpTX0lF+2J/0+SDVw92FvSypKoqm6MQd+EtOVi/huROzNiPSya+8dEzzghsLEAoyIac vTObm9Nv6teFoOv4MYKvQQFFyb0sGI7RMvNfyuRfKE0EXR5r20tZqZvg2eDHKfbLXnMT vlwmkTqmu5faYL1DK4rNWsOth+3rinjavcujRGfJMLqQm1wIDIb4VARwiihu2gQHlWYM EFl2Hd6mpiz2I3jPaZCMbCnQkPvn3vifmrLXceTusgoiFU58v6kpBYw1g/E7wzhYHjhP 6CAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244746; x=1787849546; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=cIAqd6a63BrQ3nMEKcWvDHjF/pUKTwSYOcy4U14TrKE=; b=BHvdnB6hM+VXXYJlapMh2bDbBc2mn3b4SnkwEBvk4tZkbEJBr+CGwYcxD3h6hj5dW6 Moj238skJ6REasXHhnzpbIXRQD963k9Db5CPxEvfLlsPZ++VAEm1lALD/Q0gp3DXMWGd v4Xp/TdP3OXGw6yPM1xJyuZ4syd+o9mVZzosHbzcN40O9jFq5Qnj//eb5RBMUq+Dt6Ly E0nLlB1/dGkYYNKOPraoltto5X3F97VAv6uYydoLBcSfxHA8XtpKxA9IOHJYXV8X6WkC HeaTzMRPJBTdQd6WOizZc2YhXWmDb22YwDmcgtuitUylCDizJHjm+xPaAFxlwSnxX6+w ouZQ== X-Gm-Message-State: AFuF++kUsr+oj6n1iddpnPGJ/UcPduIELcP9LcGATaBc53sXkrBj0Ejg lEdx4nCg+EeLDCUqh4GmKZLyP8VVqQmRDSzdGbPYMJkwfouUtHBFqTcJCAjPzQErmeZjNDNwCzi yc2A604WgzZx+PSN283l3gryNwP3xcf5LA39F2jZzQSZB8Vf5v0XbeAaJtDvynqw8g5yJML1aGU uSPHPwiNsxBjtl+s0kaI1SNfXnH2O/p9IlaeOgw4KZ X-Gm-Gg: AR+sD11TbP7EtfKzvOuUwtJPLvNd0l5zWNBrm26iyu+ANv19kP3hgiLSndZ+FXGtVus 4L5EKXNWTfJFOZdhsjJMjJ3gK2GdG3PmgatGpJ6jqfU9Z8YZP/KN/o/Xqn1S/EEswiTmkZwV4RC p9hGWC3i6Qm5qDDNqqdPUklarn7c1NT5uPjsOASzX8Yr78YEyw66UfsmYtpmgAg5a2mwFBhqn+r jF+nbgP6w0FIw6VdumxSo9kyEy82U9P6vK93ojcxkcbJ75ime1rAoKXOTjnDU1dvZmqu+vGtZEX gI/Bt4DmsuYVxYneaagCdrbX2PO0JbfS4kMVF1SZb5VnDz5WlGFZRm+UEiQNWMnCxNl3D01loTL xwWAA3k3DE+uGjKZKtyKieE//nNADePFgRCUEBpCz/1EeIYByfCDmWOoT39Jd2aMAqlGByULb7i 9OFZ8= X-Received: by 2002:a05:6402:2186:b0:6a1:2400:baea with SMTP id 4fb4d7f45d1cf-6a42f18a70cmr112196a12.10.1787244746048; Thu, 20 Aug 2026 09:52:26 -0700 (PDT) X-Received: by 2002:a05:6402:2186:b0:6a1:2400:baea with SMTP id 4fb4d7f45d1cf-6a42f18a70cmr112164a12.10.1787244745568; Thu, 20 Aug 2026 09:52:25 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 51/53] rust: update Cargo dependencies Date: Thu, 20 Aug 2026 18:49:54 +0200 Message-ID: <20260820164957.1895963-52-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787244902427158500 Update dependencies that are not used by meson, only by Cargo. Several packages have now reached v1 and therefore updates may be less intrusive in the future. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Paolo Bonzini --- Cargo.lock | 85 +++++++++++++++++++++++------------------------------- 1 file changed, 36 insertions(+), 49 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c94c2386d94..66f684098d3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -136,9 +136,9 @@ dependencies =3D [ =20 [[package]] name =3D "hashbrown" -version =3D "0.16.0" +version =3D "0.17.1" source =3D "registry+https://github.com/rust-lang/crates.io-index" -checksum =3D "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482= 748d" +checksum =3D "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9= b84a" =20 [[package]] name =3D "heck" @@ -189,9 +189,9 @@ dependencies =3D [ =20 [[package]] name =3D "indexmap" -version =3D "2.11.4" +version =3D "2.14.0" source =3D "registry+https://github.com/rust-lang/crates.io-index" -checksum =3D "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b= 88e5" +checksum =3D "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf9= 49d9" dependencies =3D [ "equivalent", "hashbrown", @@ -212,12 +212,6 @@ version =3D "0.2.162" source =3D "registry+https://github.com/rust-lang/crates.io-index" checksum =3D "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef0150= 6398" =20 -[[package]] -name =3D "memchr" -version =3D "2.7.6" -source =3D "registry+https://github.com/rust-lang/crates.io-index" -checksum =3D "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4c= c273" - [[package]] name =3D "migration" version =3D "0.1.0" @@ -342,29 +336,20 @@ dependencies =3D [ "proc-macro2", ] =20 -[[package]] -name =3D "serde" -version =3D "1.0.226" -source =3D "registry+https://github.com/rust-lang/crates.io-index" -checksum =3D "0dca6411025b24b60bfa7ec1fe1f8e710ac09782dca409ee8237ba74b512= 95fd" -dependencies =3D [ - "serde_core", -] - [[package]] name =3D "serde_core" -version =3D "1.0.226" +version =3D "1.0.228" source =3D "registry+https://github.com/rust-lang/crates.io-index" -checksum =3D "ba2ba63999edb9dac981fb34b3e5c0d111a69b0924e253ed29d83f7c99e9= 66a4" +checksum =3D "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b= 67ad" dependencies =3D [ "serde_derive", ] =20 [[package]] name =3D "serde_derive" -version =3D "1.0.226" +version =3D "1.0.228" source =3D "registry+https://github.com/rust-lang/crates.io-index" -checksum =3D "8db53ae22f34573731bafa1db20f04027b2d25e02d8205921b569171699c= db33" +checksum =3D "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda9= 1d79" dependencies =3D [ "proc-macro2", "quote", @@ -373,18 +358,18 @@ dependencies =3D [ =20 [[package]] name =3D "serde_spanned" -version =3D "0.6.9" +version =3D "1.1.1" source =3D "registry+https://github.com/rust-lang/crates.io-index" -checksum =3D "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee= 75a3" +checksum =3D "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee299= 5f26" dependencies =3D [ - "serde", + "serde_core", ] =20 [[package]] name =3D "smallvec" -version =3D "1.15.1" +version =3D "1.15.2" source =3D "registry+https://github.com/rust-lang/crates.io-index" -checksum =3D "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6f= bd03" +checksum =3D "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa= 7c90" =20 [[package]] name =3D "syn" @@ -413,9 +398,9 @@ dependencies =3D [ =20 [[package]] name =3D "system-deps" -version =3D "7.0.5" +version =3D "7.0.8" source =3D "registry+https://github.com/rust-lang/crates.io-index" -checksum =3D "e4be53aa0cba896d2dc615bd42bbc130acdcffa239e0a2d965ea5b3b2a86= ffdb" +checksum =3D "396a35feb67335377e0251fcbc1092fc85c484bd4e3a7a54319399da1277= 96e7" dependencies =3D [ "cfg-expr", "heck", @@ -458,38 +443,43 @@ dependencies =3D [ =20 [[package]] name =3D "toml" -version =3D "0.8.23" +version =3D "1.1.3+spec-1.1.0" source =3D "registry+https://github.com/rust-lang/crates.io-index" -checksum =3D "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ce= d362" +checksum =3D "53c96ecdfa941c8fc4fcaed14f99ada8ebed502eef533015095a07e3301d= 4c3c" dependencies =3D [ - "serde", + "indexmap", + "serde_core", "serde_spanned", "toml_datetime", - "toml_edit", + "toml_parser", + "toml_writer", + "winnow", ] =20 [[package]] name =3D "toml_datetime" -version =3D "0.6.11" +version =3D "1.1.1+spec-1.1.0" source =3D "registry+https://github.com/rust-lang/crates.io-index" -checksum =3D "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8= f11c" +checksum =3D "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd410376715= 9ad7" dependencies =3D [ - "serde", + "serde_core", ] =20 [[package]] -name =3D "toml_edit" -version =3D "0.22.27" +name =3D "toml_parser" +version =3D "1.1.2+spec-1.1.0" source =3D "registry+https://github.com/rust-lang/crates.io-index" -checksum =3D "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f= 819a" +checksum =3D "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb= 7526" dependencies =3D [ - "indexmap", - "serde", - "serde_spanned", - "toml_datetime", "winnow", ] =20 +[[package]] +name =3D "toml_writer" +version =3D "1.1.2+spec-1.1.0" +source =3D "registry+https://github.com/rust-lang/crates.io-index" +checksum =3D "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe= 66d2" + [[package]] name =3D "trace" version =3D "0.1.0" @@ -537,9 +527,6 @@ checksum =3D "49874b5167b65d7193b8aba1567f5c7d93d001caf= c34600cee003eda787e483f" =20 [[package]] name =3D "winnow" -version =3D "0.7.13" +version =3D "1.0.4" source =3D "registry+https://github.com/rust-lang/crates.io-index" -checksum =3D "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc90393= 39cf" -dependencies =3D [ - "memchr", -] +checksum =3D "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eec= df81" --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787245009; cv=none; d=zohomail.com; s=zohoarc; b=joPhZfBr3i1dchUKt5kmS9vtQGD0rlMTGcTJCuj17voXhTBsVXzDL7NAf1ZUX0uofV/42qNATVNPZeLvHVejZxs6r2AvYg3sRAP4xYruwOJBOGPlKW6KlTNVdCTH/5BRPToSn41rl+bgbfSf4UutWNdASQlrJXLHv5M9KErEapo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787245009; 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=JMSgXJuuPOqCzd6zANJaFmZthfUPr9EnVE81272P73w=; b=BMCsU/+X2BIbOolL1yi5yY5oVlsa6DJUOFKA0YymDpjF3jBAnRD4lYNLWkWFceHXPSG5LS/suIHymzhJvJB14n0D8gT9rSpVZe6MN4WBqqkSatmPk+ateXMjnGnmma8rHrJohKVopwy9m9G+jEWD94WN5OPMbjBAML/I6ra53YM= 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 1787245009354589.9345189959331; Thu, 20 Aug 2026 09:56:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx60K-0002oT-LB; Thu, 20 Aug 2026 12:52:36 -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 1wx60I-0002YJ-Oo for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52:34 -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 1wx60F-0005pC-Ou for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52:34 -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-9HmNva5tP7udjz4hAOyNPg-1; Thu, 20 Aug 2026 12:52:29 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-496b6f97676so237585e9.2 for ; Thu, 20 Aug 2026 09:52:29 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499aa0e473dsm146103905e9.15.2026.08.20.09.52.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:52:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244751; 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=JMSgXJuuPOqCzd6zANJaFmZthfUPr9EnVE81272P73w=; b=PvpYSfRSPaI5HgYMpF3M2qvM2qFOchnTumVK71LqEPDCPoFfyiRt8VWGOZf1H9Eg7HQaW2 HvwqUxHOwQQ9P6ud5SRoEXcre1023T4W6neBoVnqLS1Mvy8OzDw4PYyv/ZMjKwpZQ9gb+H O8ypR8m0MY85NssrHXUbm1HyWIW/C4M= X-MC-Unique: 9HmNva5tP7udjz4hAOyNPg-1 X-Mimecast-MFC-AGG-ID: 9HmNva5tP7udjz4hAOyNPg_1787244748 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244748; x=1787849548; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=JMSgXJuuPOqCzd6zANJaFmZthfUPr9EnVE81272P73w=; b=G26NmIqbjWfAK6qGkTQ+LyJ7GtMuuwuNr+Foka3rp5M/+j5Kmk+MhMPECigmIwwOIY nFLtZ41xkKndQYVZlKUSVYvZKzdMyTzpv9zDhCncg/8m3Qe4Ng/6AAs/hCHaytVGoHmM pnd4RokpYDED4dqMVUWs/BAR6OVsKaxyyJftjbrZDTrwqBYmHij909jQbarPoXtIm/1B k6Y8ndap1oQjOlblVsfCW8z5NYL1Kk6QurEk2xTyEwJQBki6wN9PP6UR4zgPNn9miQHu XLmfO1WT0wfmfoDPw+3jiJNy2HuaHLDYqYDXpgM45X7dLIQAfrearQjciHqf9RuIZbRW MSEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244748; x=1787849548; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=JMSgXJuuPOqCzd6zANJaFmZthfUPr9EnVE81272P73w=; b=UF+rSkOngpSU91Ns3TUdK3KtOVGa1f9GXMnphtNMS+UXL/u8qjExSaQ+wSe1stPEYI fqVahXH1DJeLBx/re2jT9wu8iBBUzLdbbppwdsMI44oraxN1XYrmV+OIXmLilBvDVNzs jlejPJ5Fkn4KNrUvOkbXHq470ONOk6P70nwDXMba0rs+4OpySBjUAVS9ZYh4P2+1YpXx VsetbjDpcif1PJqVt0ROY8IK0Tpt9EtmfVJhEcLULA3wxZ033BZu38hPSJJL7H0zWS9t +xRnJIRufNMogjnIp6WxOR6QQ1OBMjnztRu13UrKBT4C9NZhxTLjd1h1S5Rtx07w/pV2 fi1Q== X-Gm-Message-State: AOJu0YzkyS13wBaIwQweFilTiZm25MtpkeegvPR5M/8s4btrmp0MVA5x zq8V62QBQCvNmwytdxEMf+FRAKP/+pxHjauywNamhPJvO0ffvJ4UPiCDp+muF8c9CaOBpSL/ov/ 9qaQZO3ekC4o/uSSIJ9nF/sQJ//rpJMNuToNP9ApPMx+pJOBcNKjhh/MbveC2HzAaB7Y2D+sm9G 80wgIKScst+P3rFvXDv0KKuGDNVcJ+YqsBkVdD0pld X-Gm-Gg: AR+sD11wDTLAGcE8Lr31znabDU/TOrRUABFhJhp0cGjZVOrrA6L21bldU2Tge77VP0/ p64V6gjNEBUrwZx0oBDalFLXdaR48q8Ec8GbLDUqOE7G0FvLPNJA34/eeMxOMFtTv74nz6WQa81 3/wv571F9xTtgYscFgyDOp9cw/9uswwC9UbSH9GwS0MbysGel6BY8Rs13qgTQnTwB527tlBsKq5 Bzr3U/o4tggRlB52yTeblzxLC4VuAl/aozuOf4J9b8oo/rTbuQ8nl/+1/rkkWVcmGPyFekwIoYr VXafYklUCBSx29TJ4Imag5cQhOQWcvhhP7WsyPSL1DOqhHFuUonffBQXrD6IOj+chUztGHdu6mZ Ui5Qex1RCTwWHeUbZXK7iI2+zmI1yV50PNtZcEjh9jgIcI9PqmM40HYvPdFXj+xMbDgEZFzE1Fh pTHh8= X-Received: by 2002:a05:600c:8508:b0:495:4572:21af with SMTP id 5b1f17b1804b1-499b84660ffmr3550155e9.9.1787244748030; Thu, 20 Aug 2026 09:52:28 -0700 (PDT) X-Received: by 2002:a05:600c:8508:b0:495:4572:21af with SMTP id 5b1f17b1804b1-499b84660ffmr3548805e9.9.1787244747395; Thu, 20 Aug 2026 09:52:27 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 52/53] rust: pl011: switch from bilge to bitfield-struct Date: Thu, 20 Aug 2026 18:49:55 +0200 Message-ID: <20260820164957.1895963-53-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787245011023158500 The bilge crate is heavily reliant on traits and, because trait functions are never const, bilge and const mix about as well as water and oil. In addition, it has support for the zerocopy crate that only works for an older version, and is hard to update because the implementation doesn't like that zerocopy::FromBits and bilge::FromBits are the same name. zerocopy is definitely something that QEMU could use in the future. The bitfield-struct crate, instead, is built from the ground up to support const. Its use is pretty much the same (device code does not change at all, only register declarations do), with some things being more verbose and others being simpler. The code for the crate itself is much smaller, too. It does have two disadvantages: it does not let you annotate enums as bitfields, and it does not integrate with arbitrary-int. Thus, it requires manual size annotations for anything that is not a bool, iNN or uNN. Lack of support for arbitrary-int is a very small deal, while enums are a bit more annoying because they require some repetition and an implementation of two functions from_bits() and into_bits(). However, the latter is already provided by the "bits!" and "#[derive(common::TryInto)]" utilities, and thus is not manual in QEMU's case. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Paolo Bonzini --- Cargo.lock | 14 ++- Cargo.toml | 1 + rust/hw/char/pl011/Cargo.toml | 3 +- rust/hw/char/pl011/src/registers.rs | 108 +++++++++++------------ scripts/archive-source.sh | 1 + scripts/make-release | 1 + subprojects/.gitignore | 1 + subprojects/bitfield-struct-0.13-rs.wrap | 6 ++ 8 files changed, 75 insertions(+), 60 deletions(-) create mode 100644 subprojects/bitfield-struct-0.13-rs.wrap diff --git a/Cargo.lock b/Cargo.lock index 66f684098d3..6f683e8bb1e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -24,6 +24,17 @@ dependencies =3D [ "syn", ] =20 +[[package]] +name =3D "bitfield-struct" +version =3D "0.13.0" +source =3D "registry+https://github.com/rust-lang/crates.io-index" +checksum =3D "3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864f4= 4ed5" +dependencies =3D [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name =3D "bilge" version =3D "0.2.0" @@ -243,8 +254,7 @@ checksum =3D "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5= e9a1ec5929a24fded1b904c" name =3D "pl011" version =3D "0.1.0" dependencies =3D [ - "bilge", - "bilge-impl", + "bitfield-struct", "bits", "bql", "chardev", diff --git a/Cargo.toml b/Cargo.toml index 0566850ecef..b35704faabe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -101,5 +101,6 @@ used_underscore_binding =3D "deny" #wildcard_imports =3D "deny" # still have many bindings::* imports =20 # these may have false positives +enum_variant_names =3D "allow" #option_if_let_else =3D "deny" cognitive_complexity =3D "deny" diff --git a/rust/hw/char/pl011/Cargo.toml b/rust/hw/char/pl011/Cargo.toml index 5b319455ee3..d303c241e4f 100644 --- a/rust/hw/char/pl011/Cargo.toml +++ b/rust/hw/char/pl011/Cargo.toml @@ -14,8 +14,7 @@ rust-version.workspace =3D true =20 [dependencies] glib-sys.workspace =3D true -bilge =3D { version =3D "0.2.0" } -bilge-impl =3D { version =3D "0.2.0" } +bitfield-struct =3D { version =3D "0.13" } bits =3D { path =3D "../../../bits" } common =3D { path =3D "../../../common" } util =3D { path =3D "../../../util" } diff --git a/rust/hw/char/pl011/src/registers.rs b/rust/hw/char/pl011/src/r= egisters.rs index fa572811b29..a8ab8ad93dc 100644 --- a/rust/hw/char/pl011/src/registers.rs +++ b/rust/hw/char/pl011/src/registers.rs @@ -5,12 +5,16 @@ //! Device registers exposed as typed structs which are backed by arbitrary //! integer bitmaps. [`Data`], [`Control`], [`LineControl`], etc. =20 +// rustc prefers "constant-like" enums to use upper case names, but that +// is inconsistent in its own way. +#![allow(non_upper_case_globals)] + // For more detail see the PL011 Technical Reference Manual DDI0183: // https://developer.arm.com/documentation/ddi0183/latest/ =20 -use bilge::prelude::*; +use bitfield_struct::bitfield; use bits::bits; -use migration::{impl_vmstate_bitsized, impl_vmstate_forward}; +use migration::impl_vmstate_forward; =20 /// Offset of each register from the base memory address of the device. #[doc(alias =3D "offset")] @@ -78,14 +82,18 @@ pub enum RegisterOffset { /// The `UARTRSR` register is updated only when a read occurs /// from the `UARTDR` register with the same status information /// that can also be obtained by reading the `UARTDR` register -#[bitsize(8)] -#[derive(Clone, Copy, Default, DebugBits, FromBits)] +#[bitfield(u8)] pub struct Errors { pub framing_error: bool, pub parity_error: bool, pub break_error: bool, pub overrun_error: bool, - _reserved_unpredictable: u4, + #[bits(4)] + _reserved_unpredictable: u8, +} + +impl Errors { + pub const BREAK: Self =3D Errors::new().with_break_error(true); } =20 /// Data Register, `UARTDR` @@ -93,19 +101,18 @@ pub struct Errors { /// The `UARTDR` register is the data register; write for TX and /// read for RX. It is a 12-bit register, where bits 7..0 are the /// character and bits 11..8 are error bits. -#[bitsize(32)] -#[derive(Clone, Copy, Default, DebugBits, FromBits)] +#[bitfield(u32)] #[doc(alias =3D "UARTDR")] pub struct Data { pub data: u8, + #[bits(8)] pub errors: Errors, _reserved: u16, } -impl_vmstate_bitsized!(Data); +impl_vmstate_forward!(Data); =20 impl Data { - // bilge is not very const-friendly, unfortunately - pub const BREAK: Self =3D Self { value: 1 << 10 }; + pub const BREAK: Self =3D Self::new().with_errors(Errors::BREAK); } =20 /// Receive Status Register / Error Clear Register, `UARTRSR/UARTECR` @@ -119,13 +126,14 @@ impl Data { /// and UARTECR for writes, but really it's a single error status /// register where writing anything to the register clears the error /// bits. -#[bitsize(32)] -#[derive(Clone, Copy, DebugBits, FromBits)] +#[bitfield(u32)] pub struct ReceiveStatusErrorClear { + #[bits(8)] pub errors: Errors, - _reserved_unpredictable: u24, + #[bits(24)] + _reserved_unpredictable: u32, } -impl_vmstate_bitsized!(ReceiveStatusErrorClear); +impl_vmstate_forward!(ReceiveStatusErrorClear); =20 impl ReceiveStatusErrorClear { pub fn set_from_data(&mut self, data: Data) { @@ -138,14 +146,7 @@ pub fn reset(&mut self) { } } =20 -impl Default for ReceiveStatusErrorClear { - fn default() -> Self { - 0.into() - } -} - -#[bitsize(32)] -#[derive(Clone, Copy, DebugBits, FromBits)] +#[bitfield(u32, default =3D false)] /// Flag Register, `UARTFR` /// /// This has the usual inbound RS232 modem-control signals, plus flags @@ -171,9 +172,10 @@ pub struct Flags { pub transmit_fifo_empty: bool, /// RI: Ring indicator pub ring_indicator: bool, - _reserved_zero_no_modify: u23, + #[bits(23)] + _reserved_zero_no_modify: u32, } -impl_vmstate_bitsized!(Flags); +impl_vmstate_forward!(Flags); =20 impl Flags { pub fn reset(&mut self) { @@ -183,16 +185,14 @@ pub fn reset(&mut self) { =20 impl Default for Flags { fn default() -> Self { - let mut ret: Self =3D 0.into(); // After reset TXFF, RXFF, and BUSY are 0, and TXFE and RXFE are 1 - ret.set_receive_fifo_empty(true); - ret.set_transmit_fifo_empty(true); - ret + Self::from(0) + .with_receive_fifo_empty(true) + .with_transmit_fifo_empty(true) } } =20 -#[bitsize(32)] -#[derive(Clone, Copy, DebugBits, FromBits)] +#[bitfield(u32)] /// Line Control Register, `UARTLCR_H` #[doc(alias =3D "UARTLCR_H")] pub struct LineControl { @@ -201,48 +201,46 @@ pub struct LineControl { /// PEN: Parity enable pub parity_enabled: bool, /// EPS: Even parity select + #[bits(1)] pub parity: Parity, /// STP2: Two stop bits select pub two_stops_bits: bool, /// FEN: Enable FIFOs + #[bits(1)] pub fifos_enabled: Mode, /// WLEN: Word length in bits /// b11 =3D 8 bits /// b10 =3D 7 bits /// b01 =3D 6 bits /// b00 =3D 5 bits. + #[bits(2)] pub word_length: WordLength, /// SPS Stick parity select pub sticky_parity: bool, /// 31:8 - Reserved, do not modify, read as zero. - _reserved_zero_no_modify: u24, + #[bits(24)] + _reserved_zero_no_modify: u32, } -impl_vmstate_bitsized!(LineControl); +impl_vmstate_forward!(LineControl); =20 impl LineControl { pub fn reset(&mut self) { // All the bits are cleared to 0 when reset. - *self =3D 0.into(); + *self =3D Self::default(); } } =20 -impl Default for LineControl { - fn default() -> Self { - 0.into() - } -} - -#[bitsize(1)] -#[derive(Clone, Copy, Debug, Eq, FromBits, PartialEq)] /// `EPS` "Even parity select", field of [Line Control /// register](LineControl). +#[repr(u8)] +#[derive(Clone, Copy, Debug, Eq, PartialEq, common::TryInto)] pub enum Parity { Odd =3D 0, Even =3D 1, } =20 -#[bitsize(1)] -#[derive(Clone, Copy, Debug, Eq, FromBits, PartialEq)] +#[repr(u8)] +#[derive(Clone, Copy, Debug, Eq, PartialEq, common::TryInto)] /// `FEN` "Enable FIFOs" or Device mode, field of [Line Control /// register](LineControl). pub enum Mode { @@ -253,8 +251,8 @@ pub enum Mode { FIFO =3D 1, } =20 -#[bitsize(2)] -#[derive(Clone, Copy, Debug, Eq, FromBits, PartialEq)] +#[repr(u8)] +#[derive(Clone, Copy, Debug, Eq, PartialEq, common::TryInto)] #[allow(clippy::enum_variant_names)] /// `WLEN` Word length, field of [Line Control register](LineControl). /// @@ -276,9 +274,8 @@ pub enum WordLength { /// The `UARTCR` register is the control register. It contains various /// enable bits, and the bits to write to set the usual outbound RS232 /// modem control signals. All bits reset to 0 except TXE and RXE. -#[bitsize(32)] +#[bitfield(u32, default =3D false)] #[doc(alias =3D "UARTCR")] -#[derive(Clone, Copy, DebugBits, FromBits)] pub struct Control { /// `UARTEN` UART enable: 0 =3D UART is disabled. pub enable_uart: bool, @@ -286,9 +283,10 @@ pub struct Control { /// QEMU does not model this. pub enable_sir: bool, /// `SIRLP` SIR low-power IrDA mode. QEMU does not model this. - pub sir_lowpower_irda_mode: u1, + pub sir_lowpower_irda_mode: bool, /// Reserved, do not modify, read as zero. - _reserved_zero_no_modify: u4, + #[bits(4)] + _reserved_zero_no_modify: u8, /// `LBE` Loopback enable: feed UART output back to the input pub enable_loopback: bool, /// `TXE` Transmit enable @@ -310,21 +308,19 @@ pub struct Control { /// 31:16 - Reserved, do not modify, read as zero. _reserved_zero_no_modify2: u16, } -impl_vmstate_bitsized!(Control); +impl_vmstate_forward!(Control); =20 impl Control { pub fn reset(&mut self) { - *self =3D 0.into(); - self.set_enable_receive(true); - self.set_enable_transmit(true); + *self =3D Self::default(); } } =20 impl Default for Control { fn default() -> Self { - let mut ret: Self =3D 0.into(); - ret.reset(); - ret + Self::from(0) + .with_enable_receive(true) + .with_enable_transmit(true) } } =20 diff --git a/scripts/archive-source.sh b/scripts/archive-source.sh index a37acab524e..5d52644df9c 100755 --- a/scripts/archive-source.sh +++ b/scripts/archive-source.sh @@ -34,6 +34,7 @@ subprojects=3D( berkeley-testfloat-3 bilge-0.2-rs bilge-impl-0.2-rs + bitfield-0.9-rs either-1-rs foreign-0.3-rs glib-sys-0.21-rs diff --git a/scripts/make-release b/scripts/make-release index 5f54b0e7939..fc0dc4bceb8 100755 --- a/scripts/make-release +++ b/scripts/make-release @@ -42,6 +42,7 @@ fi SUBPROJECTS=3D"libvfio-user keycodemapdb berkeley-softfloat-3 berkeley-testfloat-3 anyhow-1-rs arbitrary-int-1-rs attrs-0.2-rs bilge-0= .2-rs bilge-impl-0.2-rs either-1-rs foreign-0.3-rs itertools-0.11-rs + bilge-impl-0.2-rs bitfield-0.9-rs either-1-rs foreign-0.3-rs itertools-0= .11-rs libc-0.2-rs probe-0.5-rs proc-macro2-1-rs proc-macro-error-1-rs proc-macro-error-attr-1-rs quote-1-rs syn-2-rs unicode-ident-1-rs" diff --git a/subprojects/.gitignore b/subprojects/.gitignore index 011ce4dc3b7..984f5865dc8 100644 --- a/subprojects/.gitignore +++ b/subprojects/.gitignore @@ -11,6 +11,7 @@ /attrs-* /bilge-* /bilge-impl-* +/bitfield-struct-* /either-* /foreign-* /glib-sys-* diff --git a/subprojects/bitfield-struct-0.13-rs.wrap b/subprojects/bitfiel= d-struct-0.13-rs.wrap new file mode 100644 index 00000000000..dcffe0abd83 --- /dev/null +++ b/subprojects/bitfield-struct-0.13-rs.wrap @@ -0,0 +1,6 @@ +[wrap-file] +directory =3D bitfield-struct-0.13.0 +source_url =3D https://crates.io/api/v1/crates/bitfield-struct/0.13.0/down= load +source_filename =3D bitfield-struct-0.13.0.tar.gz +source_hash =3D 3ca6739863c590881f038d033a146c51ddae239186a4327014839fd864= f44ed5 +method =3D cargo --=20 2.55.0 From nobody Fri Aug 21 21:27:09 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=1787244913; cv=none; d=zohomail.com; s=zohoarc; b=hZjaDhYzyWHj3H+VJ6i873VtQHkVXTew7QGm1Iw3b84HMW7HMIgTWo+bQY12SedCeLdNVOqh9mVDMSqaTBManC/qtz516Q3vO4cY3vF12sDv2AYTu19bWFrvVgK+4sJzb4sdlAv0q0Gu/2JGOmAgCry3XUROzypVUM2yUglVdqQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244913; 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=aCHctzzDs3xln2aqmgC4aBI2BJIXOrhX3C8pfOImeTs=; b=GEdBKw/Fmq9Ges39Drwb4Rracb9qLyJk69M21i0VqiFbMghy230e3f0DkzUBcDEOUjjDeYQjuMxRB15aAyL/Pam2418OVgwuBF2Bak5arkVSNZuYhEVESx9MWxBMSJBivjH+D4o920yCB+EYiZEYeI0zQb+XKQhr7sqzxgwMXdA= 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 1787244913114716.7644598015395; Thu, 20 Aug 2026 09:55:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wx60M-00037q-Hc; Thu, 20 Aug 2026 12:52: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 1wx60K-0002o0-FH for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52:36 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wx60H-0005pc-KH for qemu-devel@nongnu.org; Thu, 20 Aug 2026 12:52:36 -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-22-PeQ6FLkEOZqBsZ3yzudr2Q-1; Thu, 20 Aug 2026 12:52:31 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-49554715277so280675e9.1 for ; Thu, 20 Aug 2026 09:52:30 -0700 (PDT) Received: from [192.168.10.48] ([151.95.34.92]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499aa0dd3c9sm159273115e9.12.2026.08.20.09.52.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:52:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1787244753; 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=aCHctzzDs3xln2aqmgC4aBI2BJIXOrhX3C8pfOImeTs=; b=I4OWX/N4SlNg01h6yqFMJvFPclSUs5pxRiTmUyK5y77a8N2fh2f+YNh73a0ovGXvWLddmJ vtDAniqMz3ytPyPOPlKf2x+YcMh0MioHwqk0kjkruRvFQB3ohL2LnMt66iD1E5L9FbZAn6 u1GGfyhT/G4aPR//Ll+ojm/Im/BLdoI= X-MC-Unique: PeQ6FLkEOZqBsZ3yzudr2Q-1 X-Mimecast-MFC-AGG-ID: PeQ6FLkEOZqBsZ3yzudr2Q_1787244750 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1787244750; x=1787849550; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=aCHctzzDs3xln2aqmgC4aBI2BJIXOrhX3C8pfOImeTs=; b=koaHMGXbbcTYdXv8FNcm4dehuklWE42bX0k71D4ftyZnArdFoJl0AmKsjAkI6tnyc5 vfteptYZAU16zPkkp/Wv9gUVDXoZtSI5aMXFvJDKvDlDDOYsCyADjf+Ga3su12jg8x43 KWziqDeb3QVE8Apm8i68wwCZD750mDBInx/BZi8rPhDxz2cwQ4+Bme3um0U7XWEttN/S U5tinSfJhrl2JKW7Mof/nTwdPESYuYXAuf0pUrxvbzjSRji4vq85Hox0NE3UzGnVFral 0+aZcDBT8PBGXj7TUpzhSn1yJbpvEhH/hUvhVEYhYMd4aUi0qTlOQBHgci5g+uKoBs1n OYdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787244750; x=1787849550; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=aCHctzzDs3xln2aqmgC4aBI2BJIXOrhX3C8pfOImeTs=; b=I6P4MNXQXj86dZGs4BNwduM3XXBnc0I0j0b07QBp4bwEUjDhlhq5DsqEaCqOKh6Dhn q5taXDO4OMkSNtcV3Fr2nR540hbUjoy08riQHrAZvGAZ3g1KdH0l4XW51S/zjDklGEZa QfdutqEQfQCF8klTcl8yV37Xd0uSseVCRP8mSKjTY3SvqqLFAf4ASOPMNE7k0s9Garff +K9Ui8B9lYgRKb7mqDpTpnM6Ay5eDdR/JouSlpF8j1i/169pxYOhCdr+Y4mllHCZo0/l bhsOyhbjkGMyGhDf1DW9vZBRp94nB/uP7UnKv+0IRg4b1KoQFb7Yvf5oTBfLwvUXTk4r RMPQ== X-Gm-Message-State: AOJu0Yw7TBhCHcXkeJmUtorqtnx1dE491MBMfY1GTKZtKZh5pw72caa3 ndrvDu2H3L7TDFToBflZtbfqC2MwTUAk//UUtNDstMhQK9TC0zKhDt+bjZO34hLcNn89RYNYYrA 3CwqjLH5R8czWmRJ1f7/U/hXiQbKzAA9DVrFdPHBQRhiZhcxyK31D4j1gu3uuVe20WzZpODxaJD TudpRNc/MoLz6JdRUAXDq21wFU3KCC12VMz1rXylno X-Gm-Gg: AR+sD12R9P66MAIMv4Kuy1yAIYTL0XSwI7RGHs/jjsbMmT27z2bHhWGsm+dLR9pc/zI Taf6oIFWWr/2zk+oopsxh11fq8Rfm5h/Hopb8TD0ArPfN375ANXsi7OdTNWRTc0kDKcLamhTXNn hABW1T6bQS70mA/cGnnVGglt2bO4qCvwW8X/nTzCqo8bTl3rXzoxnHIja8OyQM0JRsKVLp71Gwg JtfgEWh+F5Wvf05sJuYEOvhEAErezcXgSa8A92gZrncoZZm3YQv8oltJuhGaV/ao949X94k6FHJ S22XpgZtarbZSuF0ka0LltKhlNrqh/diu6ogMvnGa+MuuOT0eQBZCD1g5zKs0JITPqOqMLyao20 l8k2z9vOwpxHtPmCD4wRMbDfiOybVSCoQ2zKvOFe4Y3wZZfGZLx9rFdiJMaMOAiK/n8JrjmKKmD It6j4= X-Received: by 2002:a05:600c:4e91:b0:499:7a15:fcec with SMTP id 5b1f17b1804b1-499b83547e9mr2951385e9.13.1787244749683; Thu, 20 Aug 2026 09:52:29 -0700 (PDT) X-Received: by 2002:a05:600c:4e91:b0:499:7a15:fcec with SMTP id 5b1f17b1804b1-499b83547e9mr2950295e9.13.1787244749095; Thu, 20 Aug 2026 09:52:29 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 53/53] rust: remove bilge crate Date: Thu, 20 Aug 2026 18:49:56 +0200 Message-ID: <20260820164957.1895963-54-pbonzini@redhat.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260820164957.1895963-1-pbonzini@redhat.com> References: <20260820164957.1895963-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.346, 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_H3=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: 1787244914724158500 It has just been replaced with bitfield-struct. Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Paolo Bonzini --- Cargo.lock | 73 ------------------- rust/migration/src/vmstate.rs | 45 +----------- scripts/archive-source.sh | 6 -- scripts/make-release | 5 +- subprojects/.gitignore | 7 -- subprojects/arbitrary-int-1-rs.wrap | 9 --- subprojects/bilge-0.2-rs.wrap | 9 --- subprojects/bilge-impl-0.2-rs.wrap | 9 --- subprojects/either-1-rs.wrap | 9 --- subprojects/itertools-0.11-rs.wrap | 9 --- .../proc-macro-error-1-rs/meson/meson.build | 3 - subprojects/proc-macro-error-1-rs.wrap | 10 --- subprojects/proc-macro-error-attr-1-rs.wrap | 9 --- 13 files changed, 5 insertions(+), 198 deletions(-) delete mode 100644 subprojects/arbitrary-int-1-rs.wrap delete mode 100644 subprojects/bilge-0.2-rs.wrap delete mode 100644 subprojects/bilge-impl-0.2-rs.wrap delete mode 100644 subprojects/either-1-rs.wrap delete mode 100644 subprojects/itertools-0.11-rs.wrap delete mode 100644 subprojects/packagefiles/proc-macro-error-1-rs/meson/me= son.build delete mode 100644 subprojects/proc-macro-error-1-rs.wrap delete mode 100644 subprojects/proc-macro-error-attr-1-rs.wrap diff --git a/Cargo.lock b/Cargo.lock index 6f683e8bb1e..ad664a812d2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,12 +8,6 @@ version =3D "1.0.98" source =3D "registry+https://github.com/rust-lang/crates.io-index" checksum =3D "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdc= d487" =20 -[[package]] -name =3D "arbitrary-int" -version =3D "1.2.7" -source =3D "registry+https://github.com/rust-lang/crates.io-index" -checksum =3D "c84fc003e338a6f69fbd4f7fe9f92b535ff13e9af8997f3b14b6ddff8b1d= f46d" - [[package]] name =3D "attrs" version =3D "0.2.9" @@ -35,29 +29,6 @@ dependencies =3D [ "syn", ] =20 -[[package]] -name =3D "bilge" -version =3D "0.2.0" -source =3D "registry+https://github.com/rust-lang/crates.io-index" -checksum =3D "dc707ed8ebf81de5cd6c7f48f54b4c8621760926cdf35a57000747c512e6= 7b57" -dependencies =3D [ - "arbitrary-int", - "bilge-impl", -] - -[[package]] -name =3D "bilge-impl" -version =3D "0.2.0" -source =3D "registry+https://github.com/rust-lang/crates.io-index" -checksum =3D "feb11e002038ad243af39c2068c8a72bcf147acf05025dcdb916fcc000ad= b2d8" -dependencies =3D [ - "itertools", - "proc-macro-error", - "proc-macro2", - "quote", - "syn", -] - [[package]] name =3D "bits" version =3D "0.1.0" @@ -114,12 +85,6 @@ dependencies =3D [ "qemu_macros", ] =20 -[[package]] -name =3D "either" -version =3D "1.12.0" -source =3D "registry+https://github.com/rust-lang/crates.io-index" -checksum =3D "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385= b58b" - [[package]] name =3D "equivalent" version =3D "1.0.2" @@ -208,15 +173,6 @@ dependencies =3D [ "hashbrown", ] =20 -[[package]] -name =3D "itertools" -version =3D "0.11.0" -source =3D "registry+https://github.com/rust-lang/crates.io-index" -checksum =3D "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3= fe57" -dependencies =3D [ - "either", -] - [[package]] name =3D "libc" version =3D "0.2.162" @@ -274,29 +230,6 @@ version =3D "0.5.2" source =3D "registry+https://github.com/rust-lang/crates.io-index" checksum =3D "136558b6e1ebaecc92755d0ffaf9421f519531bed30cc2ad23b22cb00965= cc5e" =20 -[[package]] -name =3D "proc-macro-error" -version =3D "1.0.4" -source =3D "registry+https://github.com/rust-lang/crates.io-index" -checksum =3D "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5c= e38c" -dependencies =3D [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name =3D "proc-macro-error-attr" -version =3D "1.0.4" -source =3D "registry+https://github.com/rust-lang/crates.io-index" -checksum =3D "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35= f869" -dependencies =3D [ - "proc-macro2", - "quote", - "version_check", -] - [[package]] name =3D "proc-macro2" version =3D "1.0.95" @@ -529,12 +462,6 @@ version =3D "0.2.0" source =3D "registry+https://github.com/rust-lang/crates.io-index" checksum =3D "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411= c98b" =20 -[[package]] -name =3D "version_check" -version =3D "0.9.4" -source =3D "registry+https://github.com/rust-lang/crates.io-index" -checksum =3D "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e= 483f" - [[package]] name =3D "winnow" version =3D "1.0.4" diff --git a/rust/migration/src/vmstate.rs b/rust/migration/src/vmstate.rs index 63d78b4f275..7409b592a2c 100644 --- a/rust/migration/src/vmstate.rs +++ b/rust/migration/src/vmstate.rs @@ -11,8 +11,7 @@ //! migration format for a struct. This is based on the [`VMState`] tra= it, //! which is defined by all migratable types. //! -//! * [`impl_vmstate_forward`](crate::impl_vmstate_forward), -//! [`impl_vmstate_bitsized`](crate::impl_vmstate_bitsized), and +//! * [`impl_vmstate_forward`](crate::impl_vmstate_forward) and //! [`impl_vmstate_struct`](crate::impl_vmstate_struct), which help with= the //! definition of the [`VMState`] trait (respectively for transparent st= ructs, //! nested structs and `bilge`-defined types) @@ -90,7 +89,7 @@ const fn phantom__(_: &T) -> ::core::marker::PhantomDa= ta { ::core::marker: /// The contents of this trait go straight into structs that are parsed by= C /// code and used to introspect into other structs. Generally, you don't = need /// to implement it except via macros that do it for you, such as -/// `impl_vmstate_bitsized!`. +/// `impl_vmstate_forward!`. pub unsafe trait VMState { /// The base contents of a `VMStateField` (minus the name and offset) = for /// the type that is implementing the trait. @@ -133,9 +132,8 @@ pub const fn vmstate_varray_flag(_: Phantom= Data) -> VMStateFlags /// * an array of any of the above /// /// In order to support other types, the trait `VMState` must be implement= ed -/// for them. The macros [`impl_vmstate_forward`](crate::impl_vmstate_for= ward), -/// [`impl_vmstate_bitsized`](crate::impl_vmstate_bitsized), and -/// [`impl_vmstate_struct`](crate::impl_vmstate_struct) help with this. +/// for them. The macros [`impl_vmstate_forward`](crate::impl_vmstate_for= ward) +/// and [`impl_vmstate_struct`](crate::impl_vmstate_struct) help with this. /// /// [`BqlCell`]: ../../bql/cell/struct.BqlCell.html /// [`BqlRefCell`]: ../../bql/cell/struct.BqlRefCell.html @@ -211,41 +209,6 @@ unsafe impl<$base> $crate::vmstate::VMState for $type = where $base: $crate::vmsta impl_vmstate_transparent!(common::Opaque where T: VMState); impl_vmstate_transparent!(std::mem::ManuallyDrop where T: VMState); =20 -#[macro_export] -macro_rules! impl_vmstate_bitsized { - ($type:ty) =3D> { - unsafe impl $crate::vmstate::VMState for $type { - const BASE: $crate::bindings::VMStateField =3D - <<<$type as ::bilge::prelude::Bits= ized>::ArbitraryInt - as ::bilge::prelude::Number>::Un= derlyingType - as $crate::vmstate::VMState>::BAS= E; - const VARRAY_FLAG: $crate::bindings::VMStateFlags =3D - <<<$type as ::bilge::prelude::Bits= ized>::ArbitraryInt - as ::bilge::prelude::Number>::Un= derlyingType - as $crate::vmstate::VMState>::VAR= RAY_FLAG; - } - - impl $crate::migratable::ToMigrationState for $type { - type Migrated =3D <<$type as ::bilge::prelude::Bitsized>::Arbi= traryInt - as ::bilge::prelude::Number>::Un= derlyingType; - - fn snapshot_migration_state(&self, target: &mut Self::Migrated= ) -> Result<(), $crate::InvalidError> { - *target =3D Self::Migrated::from(*self); - Ok(()) - } - - fn restore_migrated_state_mut( - &mut self, - source: Self::Migrated, - version_id: u8, - ) -> Result<(), $crate::InvalidError> { - *self =3D Self::from(source); - Ok(()) - } - } - }; -} - // Scalar types using predefined VMStateInfos =20 macro_rules! impl_vmstate_scalar { diff --git a/scripts/archive-source.sh b/scripts/archive-source.sh index 5d52644df9c..399b2d99e83 100755 --- a/scripts/archive-source.sh +++ b/scripts/archive-source.sh @@ -32,19 +32,13 @@ subprojects=3D( attrs-0.2-rs berkeley-softfloat-3 berkeley-testfloat-3 - bilge-0.2-rs - bilge-impl-0.2-rs bitfield-0.9-rs - either-1-rs foreign-0.3-rs glib-sys-0.21-rs - itertools-0.11-rs keycodemapdb libc-0.2-rs libvfio-user probe-0.5-rs - proc-macro-error-1-rs - proc-macro-error-attr-1-rs proc-macro2-1-rs quote-1-rs syn-2-rs diff --git a/scripts/make-release b/scripts/make-release index fc0dc4bceb8..b5944d39286 100755 --- a/scripts/make-release +++ b/scripts/make-release @@ -41,10 +41,7 @@ fi # Only include wraps that are invoked with subproject() SUBPROJECTS=3D"libvfio-user keycodemapdb berkeley-softfloat-3 berkeley-testfloat-3 anyhow-1-rs arbitrary-int-1-rs attrs-0.2-rs bilge-0= .2-rs - bilge-impl-0.2-rs either-1-rs foreign-0.3-rs itertools-0.11-rs - bilge-impl-0.2-rs bitfield-0.9-rs either-1-rs foreign-0.3-rs itertools-0= .11-rs - libc-0.2-rs probe-0.5-rs proc-macro2-1-rs - proc-macro-error-1-rs proc-macro-error-attr-1-rs quote-1-rs + bitfield-0.9-rs foreign-0.3-rs libc-0.2-rs probe-0.5-rs proc-macro2-1-rs= quote-1-rs syn-2-rs unicode-ident-1-rs" =20 src=3D"$1" diff --git a/subprojects/.gitignore b/subprojects/.gitignore index 984f5865dc8..3559b2c758f 100644 --- a/subprojects/.gitignore +++ b/subprojects/.gitignore @@ -7,19 +7,12 @@ /libvfio-user /slirp /anyhow-* -/arbitrary-int-* /attrs-* -/bilge-* -/bilge-impl-* /bitfield-struct-* -/either-* /foreign-* /glib-sys-* -/itertools-* /libc-* /probe-* -/proc-macro-error-* -/proc-macro-error-attr-* /proc-macro* /quote-* /syn-* diff --git a/subprojects/arbitrary-int-1-rs.wrap b/subprojects/arbitrary-in= t-1-rs.wrap deleted file mode 100644 index 5cf4b11e4a3..00000000000 --- a/subprojects/arbitrary-int-1-rs.wrap +++ /dev/null @@ -1,9 +0,0 @@ -[wrap-file] -directory =3D arbitrary-int-1.2.7 -source_url =3D https://crates.io/api/v1/crates/arbitrary-int/1.2.7/download -source_filename =3D arbitrary-int-1.2.7.tar.gz -source_hash =3D c84fc003e338a6f69fbd4f7fe9f92b535ff13e9af8997f3b14b6ddff8b= 1df46d -method =3D cargo - -# bump this version number on every change to meson.build or the patches: -# v2 diff --git a/subprojects/bilge-0.2-rs.wrap b/subprojects/bilge-0.2-rs.wrap deleted file mode 100644 index cff10f6710d..00000000000 --- a/subprojects/bilge-0.2-rs.wrap +++ /dev/null @@ -1,9 +0,0 @@ -[wrap-file] -directory =3D bilge-0.2.0 -source_url =3D https://crates.io/api/v1/crates/bilge/0.2.0/download -source_filename =3D bilge-0.2.0.tar.gz -source_hash =3D dc707ed8ebf81de5cd6c7f48f54b4c8621760926cdf35a57000747c512= e67b57 -method =3D cargo - -# bump this version number on every change to meson.build or the patches: -# v2 diff --git a/subprojects/bilge-impl-0.2-rs.wrap b/subprojects/bilge-impl-0.= 2-rs.wrap deleted file mode 100644 index f8963eba73f..00000000000 --- a/subprojects/bilge-impl-0.2-rs.wrap +++ /dev/null @@ -1,9 +0,0 @@ -[wrap-file] -directory =3D bilge-impl-0.2.0 -source_url =3D https://crates.io/api/v1/crates/bilge-impl/0.2.0/download -source_filename =3D bilge-impl-0.2.0.tar.gz -source_hash =3D feb11e002038ad243af39c2068c8a72bcf147acf05025dcdb916fcc000= adb2d8 -method =3D cargo - -# bump this version number on every change to meson.build or the patches: -# v2 diff --git a/subprojects/either-1-rs.wrap b/subprojects/either-1-rs.wrap deleted file mode 100644 index 51c97df1531..00000000000 --- a/subprojects/either-1-rs.wrap +++ /dev/null @@ -1,9 +0,0 @@ -[wrap-file] -directory =3D either-1.12.0 -source_url =3D https://crates.io/api/v1/crates/either/1.12.0/download -source_filename =3D either-1.12.0.tar.gz -source_hash =3D 3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb233= 85b58b -method =3D cargo - -# bump this version number on every change to meson.build or the patches: -# v2 diff --git a/subprojects/itertools-0.11-rs.wrap b/subprojects/itertools-0.1= 1-rs.wrap deleted file mode 100644 index e123ab389a2..00000000000 --- a/subprojects/itertools-0.11-rs.wrap +++ /dev/null @@ -1,9 +0,0 @@ -[wrap-file] -directory =3D itertools-0.11.0 -source_url =3D https://crates.io/api/v1/crates/itertools/0.11.0/download -source_filename =3D itertools-0.11.0.tar.gz -source_hash =3D b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418= c3fe57 -method =3D cargo - -# bump this version number on every change to meson.build or the patches: -# v2 diff --git a/subprojects/packagefiles/proc-macro-error-1-rs/meson/meson.bui= ld b/subprojects/packagefiles/proc-macro-error-1-rs/meson/meson.build deleted file mode 100644 index 52a244d2b16..00000000000 --- a/subprojects/packagefiles/proc-macro-error-1-rs/meson/meson.build +++ /dev/null @@ -1,3 +0,0 @@ -extra_args =3D [ - '--cfg', 'use_fallback', -] diff --git a/subprojects/proc-macro-error-1-rs.wrap b/subprojects/proc-macr= o-error-1-rs.wrap deleted file mode 100644 index e57921bfadc..00000000000 --- a/subprojects/proc-macro-error-1-rs.wrap +++ /dev/null @@ -1,10 +0,0 @@ -[wrap-file] -directory =3D proc-macro-error-1.0.4 -source_url =3D https://crates.io/api/v1/crates/proc-macro-error/1.0.4/down= load -source_filename =3D proc-macro-error-1.0.4.tar.gz -source_hash =3D da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a= 5ce38c -method =3D cargo -patch_directory =3D proc-macro-error-1-rs - -# bump this version number on every change to meson.build or the patches: -# v3 diff --git a/subprojects/proc-macro-error-attr-1-rs.wrap b/subprojects/proc= -macro-error-attr-1-rs.wrap deleted file mode 100644 index 456d2c2b6d4..00000000000 --- a/subprojects/proc-macro-error-attr-1-rs.wrap +++ /dev/null @@ -1,9 +0,0 @@ -[wrap-file] -directory =3D proc-macro-error-attr-1.0.4 -source_url =3D https://crates.io/api/v1/crates/proc-macro-error-attr/1.0.4= /download -source_filename =3D proc-macro-error-attr-1.0.4.tar.gz -source_hash =3D a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b= 35f869 -method =3D cargo - -# bump this version number on every change to meson.build or the patches: -# v2 --=20 2.55.0