From nobody Wed Jan 7 09:26:48 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=1766827158; cv=none; d=zohomail.com; s=zohoarc; b=fra5ZodGrgVjb70Lvp555SO7p3sR1mYHcNv3imu928wpP9FXZ/olWWbzdQL4EX7A0+Ab7V39tLUbRrZKoTSySE18kW7CDpq1SWZglUGKXdM6ypGI7AIELRMbbgC4nJkqU5CPjX56dUjjQnS7nOXl+a87IyyoBCH8ThEZuZBgZqk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827158; 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=6li7w8a6Pitmdewj/jqAZ8JOtWEBQW+HXmh8L4sX9Wk=; b=SvHkGHAK+WtlwfV3BebknaKRVO9ngHkm2r2zf5uxiRyXJKU+OFTnrVxrGFPfMgWQWX1hiue4kLs7gLn8V4bMZ76YAtQ8RxCkeYYNjhC5li3XwCSRP+uB7ulySTTNhuZYD81vUSros5vf5lEEyLhtLV+eJJO9Ep/FaT6Di7fqGbM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827158487553.6262348478072; Sat, 27 Dec 2025 01:19:18 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQPa-0002JG-GO; Sat, 27 Dec 2025 04:16:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPY-0002Iy-VH for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:33 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPX-0002Hv-CV for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:32 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-393-NwEtvJYXOJisUmRe25p5-Q-1; Sat, 27 Dec 2025 04:16:28 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-477c49f273fso99529895e9.3 for ; Sat, 27 Dec 2025 01:16:28 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be3a7c609sm200881415e9.5.2025.12.27.01.16.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:16:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766826989; 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=6li7w8a6Pitmdewj/jqAZ8JOtWEBQW+HXmh8L4sX9Wk=; b=Yy1CezOpi39sJ6i6yRytK1x1IR3ch8Ayr92E319mvjyyyvk039HPMgMb1r9yzO0rtmSX3C tY4fk5NSw3NwEu9OjFDiMNwHjwdrjuPEO9J3VJLi2euNb+MNYYtrVkAuhQQnZpFHipCNh7 Q3xQTzqM3pUHpZnTh6jvetO80htSBdU= X-MC-Unique: NwEtvJYXOJisUmRe25p5-Q-1 X-Mimecast-MFC-AGG-ID: NwEtvJYXOJisUmRe25p5-Q_1766826987 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766826986; x=1767431786; 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; bh=6li7w8a6Pitmdewj/jqAZ8JOtWEBQW+HXmh8L4sX9Wk=; b=ZZS71WJJirUbyVfCFxGWdpiq0bwTfieGrolyZndAqC3BixGB8mdqxCfnzSGg6Unad1 gtCQtGSeuRwErsACi0KIZLywK2jRA3QqqQU078LPQLFtBlqfWwX+Y1pE//4xqbNuxPHZ fd5b+OZlDssFeZeJlFurHLyilqQGyLWQvwoS+CavZpRiZDPU9/ZS6rNTuSj4noufTeAu m+iOtVh/W7sbs0RzSfiefcO0JOdi75vmMaEbvhYbYoaIRAF3x1LoY1nEUBWpRLLqnfgS YQnDY+NKU3MxMJ+kdlkTqBtbk2QlRsOKN3EOA9rM6b3ZZUojgloTCITjiF0YNzdYWaEe PyIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766826986; x=1767431786; 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; bh=6li7w8a6Pitmdewj/jqAZ8JOtWEBQW+HXmh8L4sX9Wk=; b=vvUbb4cvDhrL9jfHDAzCV6uzs7BUgD9WDN3PFP0OEcv6+5Lhf23NE0fLfs1obkxfyN 9BB+EUEr+2fWPA8+ZTw3OhjXEGGpjqqpJuhXsdKgxQqTeJotU1q7RRevmh3zZN0lHrX/ lZDxSgOlj6jtp+ogH3kumnyLpAnTUrHA4SoIWc6orA8VmjdIQBUZlyIv1gY8h71jHeeV mx2JumPojdEVnG6tggrnQUmcriKOlwesYsn2ZcFLPCcTeZtuanJXUhUq1PnJVSZLzD5H z5knTQzqY0iUYKx8h+cwH/hbou7v7F3wtL/q/SIkqIbZkgzNsnx+CcBvWzs32FwoIoJM lkow== X-Gm-Message-State: AOJu0YwGbxULVKuUOUR2KdLRnmBZv9W8hNnZ/d5F0oPHmOF8ZTCVkRta Ap+SX5I1LvWQLJUabH9dMTW5CqmWQoYjm4RH55Qc9Qr4DE93ALKl54K5FyXCda6je2g/fJwicyo /CnVNWE7Jn4NYNuuQQshIN1THrYeWQ6y2rWzxbSZG34WRVc/zMSAqDeIuJL+r+7E4WUfopy9adf ZbQo+Px54u7+wXbVMKS/JH9sePeMWFZwIVFnbiE4oq X-Gm-Gg: AY/fxX5iGHE18ARDBA0SMUHPVSCAbtD0LmiLunAzBwmlc9Sg0FvC9/oqSSAhXWfmK9z Okp9OwPv9h9/AW4n2SKuEONq2sKnIMcBZ6mw9Kz4tENrAWuOABAhsppJ/AthE08S4gCS+u4RjHC oN2599J8z/FybmAGqJ71eglUQChmaltX8Md2QIXIxC+EZbj/yEPNxhePYs34BWfesyaQgOJbDGp 7BCDlQvfDlaD16dzs8dueZlbl5ciUtjW5SLZmzr7gIZitwqtwrTNFSrA454cFkTSsOgdPUrL2Ts bDCmFjo8PJMHM9c5R/cfTJJHo2WRb7axamTuTEnOonrDeS4Tg3hmUKko8AY1YYKh1AVuU2sWLDv 77S9OvPCU6937u9YtP+lZZqqMv61KPGiADdHzkX3+lgtBn37GBEBbuesgtK77ujUW6/27Hc5k2y TjXatetpC82nXEllQ= X-Received: by 2002:a05:600c:4711:b0:477:9caa:1a26 with SMTP id 5b1f17b1804b1-47d1959fadbmr274504005e9.29.1766826986307; Sat, 27 Dec 2025 01:16:26 -0800 (PST) X-Google-Smtp-Source: AGHT+IHyizsLRdbfRzlQf+wRMT6D2DEexzkzFAUwowxiiOduuHWvo9gGN1/jXtaLMyrsJ1Axkhta6w== X-Received: by 2002:a05:600c:4711:b0:477:9caa:1a26 with SMTP id 5b1f17b1804b1-47d1959fadbmr274503805e9.29.1766826985893; Sat, 27 Dec 2025 01:16:25 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Fabiano Rosas , Akihiko Odaki Subject: [PULL 001/153] tests/qtest: Do not use versioned pc-q35-5.0 machine anymore Date: Sat, 27 Dec 2025 10:13:48 +0100 Message-ID: <20251227091622.20725-2-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827159944158500 From: Philippe Mathieu-Daud=C3=A9 As of QEMU v10.2.0, the v5.0.0 machines are not usable anymore. Use the latest x86 q35 machine instead, otherwise we get: $ qemu-system-x86_64 -M pc-q35-5.0 qemu-system-x86_64: unsupported machine type: "pc-q35-5.0" Use -machine help to list supported machines See commit a35f8577a07 ("include/hw: add macros for deprecation & removal of versioned machines") and f59ee044067 ("include/hw/boards: cope with dev/rc versions in deprecation checks") for explanation on automatically removed versioned machines. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Fabiano Rosas Reviewed-by: Akihiko Odaki Link: https://lore.kernel.org/qemu-devel/20251224085714.83169-1-philmd@lina= ro.org Signed-off-by: Fabiano Rosas --- tests/qtest/fuzz-e1000e-test.c | 2 +- tests/qtest/lpc-ich9-test.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/qtest/fuzz-e1000e-test.c b/tests/qtest/fuzz-e1000e-test.c index 5052883fb6a..b66a2e2313b 100644 --- a/tests/qtest/fuzz-e1000e-test.c +++ b/tests/qtest/fuzz-e1000e-test.c @@ -17,7 +17,7 @@ static void test_lp1879531_eth_get_rss_ex_dst_addr(void) { QTestState *s; =20 - s =3D qtest_init("-nographic -monitor none -serial none -M pc-q35-5.0"= ); + s =3D qtest_init("-nographic -monitor none -serial none -M q35"); =20 qtest_outl(s, 0xcf8, 0x80001010); qtest_outl(s, 0xcfc, 0xe1020000); diff --git a/tests/qtest/lpc-ich9-test.c b/tests/qtest/lpc-ich9-test.c index 8ac95b89f72..460d459c701 100644 --- a/tests/qtest/lpc-ich9-test.c +++ b/tests/qtest/lpc-ich9-test.c @@ -15,7 +15,7 @@ static void test_lp1878642_pci_bus_get_irq_level_assert(v= oid) { QTestState *s; =20 - s =3D qtest_init("-M pc-q35-5.0 " + s =3D qtest_init("-M q35 " "-nographic -monitor none -serial none"); =20 qtest_outl(s, 0xcf8, 0x8000f840); /* PMBASE */ --=20 2.52.0 From nobody Wed Jan 7 09:26:48 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=1766827045; cv=none; d=zohomail.com; s=zohoarc; b=UvgKrx7NEQzMGlFKXxiTDinnq+HoglATK1JnZnJkcMDghGnPcC9ozZKEVk+ucxdvVLpPA7bQjG4QsqpNxHQLzNo61AROQg7CG2o9IsWLBhr16GjMjCELX+slxqPyzDVoEPkXapsswFzeeot3baGR2AWnEj+VbCn2CT4RKlQ9k+0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827045; 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=rWbbnYTTjYaE7oaeT2bvkDD7Zb8/wuty6WaSfbSwib0=; b=Aj9dSkvhZIpG+JPVz8aACETErKy0hJzLoo8ZHP9T58wqso9e/C3jsSakcVu51elWZENuTl3+jIBDqN+f7MpEKX27M3ROcH0M50UWexjymwsf5JFdhg5PUa3m8kOUI74n0m+ixJJ15g9VM2pxaKYHYOdm661Ph8NAbvIDxACWKAI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827045538667.349784327907; Sat, 27 Dec 2025 01:17:25 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQPf-0002KZ-PG; Sat, 27 Dec 2025 04:16:39 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPa-0002Jd-Uj for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:35 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPZ-0002IA-JE for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:34 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-512-uxWenCpoMeWxFFbkpBxk8w-1; Sat, 27 Dec 2025 04:16:30 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-431054c09e3so4767722f8f.0 for ; Sat, 27 Dec 2025 01:16:30 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eab2721sm49377062f8f.39.2025.12.27.01.16.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:16:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766826992; 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=rWbbnYTTjYaE7oaeT2bvkDD7Zb8/wuty6WaSfbSwib0=; b=Ep99BFbAbL+/0WeBxHDtz2Kpso2hNhBuArsL6tqJiMwXjYcod796BC8qWRT3fKc+z1TlLs EH0ZpHZcmw71Ux5HnWtZdbvEvS6iM4iY4AvQBcRGk3w2AdBLBmuvElmGvkwQ5ruOxQXOZc BlVS4Ja2lERU5CMBhFHbEHnYMQzN+E8= X-MC-Unique: uxWenCpoMeWxFFbkpBxk8w-1 X-Mimecast-MFC-AGG-ID: uxWenCpoMeWxFFbkpBxk8w_1766826989 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766826988; x=1767431788; 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; bh=rWbbnYTTjYaE7oaeT2bvkDD7Zb8/wuty6WaSfbSwib0=; b=k8CqdKWpvxf8bzj/ysI5cHAV7/5VpLXBbDGEJziH5WyCkep8Vppzi7uWSHNNGRNYtb C1ELiSYLoBRh0t7sliTZy6mRA2X4zLEJElIzG1wgFO9/pWtR7NXjneB7PYKi2I7k+ANd fM1dgwZsbIi+/DalPTQg9lci7pafwaB1cXAp8bnZx+jWFhl+zW2OqZ94gZ5a8qYC0qtC eVgKYpCs9KPSMqtlj9jUlQGKb89QCwgSEjqKFHiTJqGADPHhd0otzEYYZ6E3DFQdWHfl fIn/wXrzzpFrKRAB0P4QwgCLQH32hZZYCEY7DQ209di+4jvtkI6Y4KjdF3EhDMNjOd5R P8qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766826988; x=1767431788; 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; bh=rWbbnYTTjYaE7oaeT2bvkDD7Zb8/wuty6WaSfbSwib0=; b=af4MxllOl8XxeUWg1SSRGP3oCmHdKpQXpeTL+IX2TvaaFBAcfixeSSNzCKbNELv82z XxTMuDMJFxVz6xivufbEOxuCznOWwyWErezA7p2J8sS4ZHZDO3Pm+d2mLrE7ORNg95jh rs8znAnonbwSwV3pEk57+bEtg3SS/vGBGkxvBo3vtx2A+r9PGnpp3jUa9jYn8Vl32RSx hsHfpd2N/6Hi2zbyCpPaJT8f++ENr1tvqHjAjMca+8DxvKnMO/ayxnpKxYaxocU6OSgq LTZcoVTrKM0Gen7FQc8GEJRUQVwUTSmclXLJ7hfIvcYc1ndB1wyN775mi7F+GcXzVF/8 OOcA== X-Gm-Message-State: AOJu0YxqdDgKnjjCbVLMBsClU8f+Ue4JDpFr8RG707ry6w3jQA1NOwZH 9rYlNDGM/HIRMKzEXT04YtYQiq6s3RwTW1QQioOW8FEwW5Z0XBF1/Bmqv3oboKwJZ/2dbPQAV8N +SkeOZ/U7waLSSJNNg4dPymHpugYyaQgkVD42yOJr38j9dzFRlGYJ8WP88HnaHK9qxFKKkCAExc ygJOVbKUi1MPwPo/VJ3V9y4s52QbhfyZOU/1rPx6hh X-Gm-Gg: AY/fxX6KIbYtPRxA3NtcY8YhhL1XW8WJmB5RV1ND/wkZTeqxqFEOJu+jUqvgTRg2R9w Xul15BKSx1aYcKTHsTXWAHmBs3qp26LW7s01EyUTfI08BKA3zl/1WSckajv8QoaRBx4oZjXqoD3 pTZ7aWgowfZ7HKyHz4O3P9fNDCAf7wFo2FUJ5N1h+vCX0ssmEjIdhKI/8b8SFvNnKn7KVDq0rE4 vNiP6RbYDbINsu3QmIpZS4Je/QERXdBYehtWa+aJUFONJCXlyR64oCuKT4TdVW8M7iijrE4eI8/ maZAxizUFt2gUhi77O+ZlS96hm6HAZLCBJTybtC2tQYWxZWOUNnIsAbASr7Nz3FbblHvPOWXraz HjuYt1+YyBGfdTYr/Rx09B0EI1+VHpYYWRrCmjirce4NXj3R4pztGZbp49+0P0PyMM+U2JQCkxM fOzMbdkZ/gMw7KqZo= X-Received: by 2002:a05:6000:2383:b0:432:86a3:ef2e with SMTP id ffacd0b85a97d-43286a3ef72mr2956043f8f.21.1766826988660; Sat, 27 Dec 2025 01:16:28 -0800 (PST) X-Google-Smtp-Source: AGHT+IHDZmIcSN/JGI5cZ0gtKrkVt3KOMnF80Cv+fvXZRAJlBiL8DBXoldiZzDsIbsKqSD6KWBn1Sg== X-Received: by 2002:a05:6000:2383:b0:432:86a3:ef2e with SMTP id ffacd0b85a97d-43286a3ef72mr2956022f8f.21.1766826988248; Sat, 27 Dec 2025 01:16:28 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Nicholas Mosier , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 002/153] i386/tcg/svm: fix comma operator typo Date: Sat, 27 Dec 2025 10:13:49 +0100 Message-ID: <20251227091622.20725-3-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827047519158500 From: Nicholas Mosier A comma operator inappropriately terminates an expression in svm_helper.c. Replace it with a semicolon. Signed-off-by: Nicholas Mosier Reviewed-by: Philippe Mathieu-Daud=C3=A9 Link: https://lore.kernel.org/r/20251111-i386-svm-vmexit-typo-fix-v1-1-49f0= 414472cd@stanford.edu Signed-off-by: Paolo Bonzini --- target/i386/tcg/system/svm_helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/i386/tcg/system/svm_helper.c b/target/i386/tcg/system/s= vm_helper.c index 4b86796518f..524b3620d56 100644 --- a/target/i386/tcg/system/svm_helper.c +++ b/target/i386/tcg/system/svm_helper.c @@ -742,7 +742,7 @@ void cpu_vmexit(CPUX86State *env, uint64_t exit_code, u= int64_t exit_info_1, exit_code); =20 x86_stq_phys(cs, env->vm_vmcb + offsetof(struct vmcb, - control.exit_info_1), exit_in= fo_1), + control.exit_info_1), exit_in= fo_1); =20 /* remove any pending exception */ env->old_exception =3D -1; --=20 2.52.0 From nobody Wed Jan 7 09:26:48 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=1766827182; cv=none; d=zohomail.com; s=zohoarc; b=ZcQc+4zhZlTd+r68ztol6Rbroe2mFaVcR6X/kwtAPPR9f6KYflY2P6AH5Q52VXD9hpjXR17X21I5YUNOqTj4qXA9zgTjs2jtuoRwj0sdQ94DgHeyzb6U0cTU+kJhAcIjzLw0uAE/E9XF7hcA/FOIEiKof4lXLggxg9z7CqRF+Tk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827182; 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=5fbsu02M+KufXqyko1QhTUiaf/7nZFbEc0uUHDwr8p0=; b=PS1TF5Dy1UPYQ8iWT1Umo3iRqJN/fnq+SEdqp2W7GtYsJljbOOHv7hNq/bUaTJ9aU22dSmsLjuBxWvqQ+FmLUAZnLNM8uWu6hb21zXIvUX+l+TqqCUvEFYhDvp8o6CsjA8X3vkvAdrj+Hno7tX8hsrrJm6q2sAMJk75vTqyOHms= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827182399357.5993543277575; Sat, 27 Dec 2025 01:19:42 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQPj-0002LA-Ls; Sat, 27 Dec 2025 04:16:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPc-0002K0-V4 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:37 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPb-0002Ik-M9 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:36 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-550-HSM8JZE8NI6FJcQHYbX1_w-1; Sat, 27 Dec 2025 04:16:33 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-43284f60a8aso423820f8f.3 for ; Sat, 27 Dec 2025 01:16:32 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea830f3sm48613448f8f.22.2025.12.27.01.16.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:16:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766826995; 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=5fbsu02M+KufXqyko1QhTUiaf/7nZFbEc0uUHDwr8p0=; b=LGtbdlQlHCl2D/xuYdj9SvJKje9vqqVXEfAK8cmws1S86NtH3gmGLJoton8HXUPBe/aKu4 YGA+uXbLvSHyJ1AIXwm1ASn9uGG8X0JyyADcvpen/TfRwsgSRFI7S44nT9HSWNHfcmAlwz L4/J+A1IXuNGTdbTfJxr9+obMTuISc0= X-MC-Unique: HSM8JZE8NI6FJcQHYbX1_w-1 X-Mimecast-MFC-AGG-ID: HSM8JZE8NI6FJcQHYbX1_w_1766826992 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766826991; x=1767431791; 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; bh=5fbsu02M+KufXqyko1QhTUiaf/7nZFbEc0uUHDwr8p0=; b=QJIr3ScHtOzBPX/t1Mrh4C2sy7yubnRBctgkbGZy1xn0O0uvH0a1HlpbhrvAbdK5eY 4nCRy6cHMcwTot3SnhIVu6Jd12lJOBwGP0FAffSmmD7LfwdlntEhzw55BYrOLH0JX0ls ZZfHp7SYVoK9r8mNum/hZZ33KVXDQc6kqAK8pNgDWV0ICmFWCEip6QpO6J5eKvegKFep z5n7NNAczkVGOlAmulA0+cF85/iiJgBhB+puyFworhKpFMEqJxRmHb2EUQq0MTElhRNg 8iwOcvy2s0YCilpE2ZJ0edMmbLz4MrXjE3r3cIYSZYFq3pYxSS75W0pG/j0FJGOEzyp8 vejg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766826991; x=1767431791; 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; bh=5fbsu02M+KufXqyko1QhTUiaf/7nZFbEc0uUHDwr8p0=; b=QR/Ft+qgzFY5Kv3Ad0uKpTT/kRueJ/AeHsDZzs8euqGmyhp3WnuBHv4Is0fGQGMXxU BuSfuDItOr2lxeks0JftdpOxUL5Hl8rH29IeQyuUtMdmMzHVT/IWBmKGPmcFzI2FW01t /1UBpahLfwWHdzZiaaKgkfegrpHbIU45M1UUqJhA5raYr/bhR9UqvjtGxSLWx5twzi2A 05RG0UJY0pbf/yDRcQDuUT7nYGx0c2OHD3gHmcXyZCwoOu/bXDFoaYgHLtei38Bh4wuB sLixTZ+M1xrl8wj2gOW5ExPKtQxFL5BvAPZvcn+q3KEyPlb9G43COJ/WEFrpeK8cw8UG 1BSg== X-Gm-Message-State: AOJu0YzLwU2wOj8m1Li4HsqsH+3TVqrxEZZ9TiKfM0v1fJq0IS1A/H/F bPAVh4H9izYyurFeI/DPgwrhDJoe5tcgyXzN+DVJWpjXbpcxB48xx9Cfxnd0bR0nNp+tn2aQXq0 0w1SOR1HHMA6QpFANo8eAmib4SB45mu+lrmUyNHO+yek6QuG9KakxlIAE6oWUubOM6mgQEdkVKq 21X07frwPlgddfSDiHq6ghCtcck1A6RXC8W2P2Xtq6 X-Gm-Gg: AY/fxX75IqGlyvJfNH6BzjudtwuWmkGLqwQ8UqbtgKgfk+kJ6mF0Lj+UVE2gNxmxM0P EaKcWn4LfazLRx/45bvwvoLDjKQ9uKp+tJ0hGJiwQnV+L3jIOfoSkiDr9Otr5hvd8UupR2reVkm NGBRqbs+VdujorG70RFJ0jEmxlsKN2bqfT3g6CpIVSpgvwO1xBeIOMAo7VkD5OfvFiXuvOdzBmD z4A58RB5XxqI8BTQj/DkeoS+d8pPFglh9hvexVXes4fRvikrZ8+V83Me8g2Gx2sg0Vf5XXR30HT Oqa4gULIX14y8EMFYiDj1uhMMSH6ZpolJmvGCiSNlxbBsf2cvRxUVpYnIzZtk2vmdapX2hw4jvt jSOnuG+Yfcm1ZA4sH6sIJ6lh7Lhr81G76PrzyrI++ZNTRRnT4kdjwio+VSXZymb9IOjvh3SRGss cHtzD7tzv72lcyEu0= X-Received: by 2002:a5d:584d:0:b0:431:8f8:7f17 with SMTP id ffacd0b85a97d-4324e4bf5bamr30368017f8f.10.1766826991074; Sat, 27 Dec 2025 01:16:31 -0800 (PST) X-Google-Smtp-Source: AGHT+IEVUOat7hhtevo/pzHyk0leMBs23WoNNKPiTHhwYAp7DjCg51ktqn7VJJWhMF/IRs4cS8L5OQ== X-Received: by 2002:a5d:584d:0:b0:431:8f8:7f17 with SMTP id ffacd0b85a97d-4324e4bf5bamr30367998f8f.10.1766826990638; Sat, 27 Dec 2025 01:16:30 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 003/153] include: name the MemReentrancyGuard struct Date: Sat, 27 Dec 2025 10:13:50 +0100 Message-ID: <20251227091622.20725-4-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827183572158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/qdev-core.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h index 2caa0cbd26f..5cf2db7ee11 100644 --- a/include/hw/qdev-core.h +++ b/include/hw/qdev-core.h @@ -208,7 +208,7 @@ struct NamedClockList { QLIST_ENTRY(NamedClockList) node; }; =20 -typedef struct { +typedef struct MemReentrancyGuard { bool engaged_in_io; } MemReentrancyGuard; =20 --=20 2.52.0 From nobody Wed Jan 7 09:26:48 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=1766827548; cv=none; d=zohomail.com; s=zohoarc; b=SXnKH1q/ytJlbZlZ4MDFLNZEO9ColLnapnPHe5Qqjjo0cYapxQKXV7ASPiKltll7q8LD+egQOKwNz0MwjlZU+DvEjQx//JT/BP1nUG6wTpcTF2zdKIZbCrggh4hLJBBwVNM97FvQK1GjT7JgUM61T/yfFQVJoY7Q1cMSta2T2lg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827548; 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=yHi0OhiUBJaRSmRmnVJ4fshCFpycq4d1vaapmTx7gfE=; b=Zwby78X6MAOLTQMD09B7LeZwWk3hv/e0MabhdxzFVt0b3DsHeOT+Do1lmiga1FeJIHorBklDTtFZPrBzuIiZ2iFw+BRxHxn9gp1NiGuzwR+rXzztaN8Zsoh/AF3cew0XxkX3FsGvt4y3u4jcGuSebi2pzRV9orsnkqabJtAQwc4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827548631116.28533412660795; Sat, 27 Dec 2025 01:25:48 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQPr-0002Nr-Fq; Sat, 27 Dec 2025 04:16:51 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPf-0002Ke-IQ for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:39 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPe-0002J3-4K for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:39 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-556-DWE2GoqqNt2nsQJ2MFoJ5A-1; Sat, 27 Dec 2025 04:16:35 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-430fc153d50so6248280f8f.1 for ; Sat, 27 Dec 2025 01:16:34 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea1b1bdsm49077492f8f.8.2025.12.27.01.16.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:16:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766826997; 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=yHi0OhiUBJaRSmRmnVJ4fshCFpycq4d1vaapmTx7gfE=; b=asuZ9iX9utP1X9451u/e2pO74AYNvKMho6h+EwFd1iYjuRkpeYomx9+reXSgbMaMGXfuCW sDeMKf1XErcqbrEiQsnGDu/9UMWEQdvZ8RulGtAeIueKIaJV41E7DZyPOLtjSE/3lM9M+R 3TeAPRQMUYATZ5+xQxCXA6JDRNeFwV4= X-MC-Unique: DWE2GoqqNt2nsQJ2MFoJ5A-1 X-Mimecast-MFC-AGG-ID: DWE2GoqqNt2nsQJ2MFoJ5A_1766826994 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766826993; x=1767431793; 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; bh=yHi0OhiUBJaRSmRmnVJ4fshCFpycq4d1vaapmTx7gfE=; b=C0sDESaLtA+THW4rgJnkXeDq1gSDbypDYZ43nkjtk9GrNsEfdY8NFWrUsMzSt5Hn0T ChSX/V0Jg2g+CZTjheEdww/OHgp/qUrhAMD7moJGgna3t57ncvMjN2n9Y03yLcR4Nl46 BdZl27yH/3N9+PJk9AlKn+UDAfqyAI2uFkEgJPfaNBt6WmBAUwkkDTDNElDb61o9+bdD mzZfdOf8+AlY0PPWUbWkBkDCfsptMtBQErekXPTYK5oGQXvbbIdeOXk+dmRsqWZ/HKf1 KFZTR6YezxBSlNR/m4Zv9zWIWuervGqvrkPdVCCZGL73uvEN0D4kidw6W77dF4cHwWgl EbKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766826993; x=1767431793; 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; bh=yHi0OhiUBJaRSmRmnVJ4fshCFpycq4d1vaapmTx7gfE=; b=PrM0z+uQm3RIAm7ARoHkDKIP7MkuL/IUuHDYCPTY3tMouI+DTcqAuy4EQF6vxyUsMS azW2e5WAp1e9LHxrSsTxj+07zT49ctPyeWqiENeqJEd0wtjmYs5shRTLJ9G+1s6Uv4PN aRHyJM8aehNDmMrHcbHcuHX0Nm7FJrbfEaYHBwsyjHER36j2ljwATU/uWFmw5dh19Toa +kO91ndc2fHl+0vpgqKAFRGdzPm86s0cVC9mPlDxxFzk+DRRexo3Ble17evzLDDVLTKG 3K/z90HMOuUhFcU6AQzZ6j9pR0ZXRbEu7sCwQ5t5BkQiXtsIP0kggsaWzXooOT1qcsOF w1kw== X-Gm-Message-State: AOJu0YzrzrMfSACYTZree+I/gJOhO1ODdWHkICUN/2V1/Izq9+Mlmyqa 5D9kzN9YPKZYEJhjnzQTq1xrDtzjTkRoWp0d3FFgjtFJomEFXhGwBid9G5GNBTbF6cpFLdQer3I 9QLrF+9AQueF+kuwXf9ZKUcFRnhMEEqWdTowZCoNZf8ecSeMdAaIWfMzeVv7hU9Ksu47y6roivM CqdDg72fQX/0QvAF+GHiHY5jCpDez6X0VyTYlE3Jpq X-Gm-Gg: AY/fxX5wAJWUY+shhad96mAYYh09zw9EL05a4zFjEybxm6kwyvKO2exKLknU6yy/anO ZvC0krD1s2DTotHupoVCTpCAp1/na6/hVg5E0++bNtdMHlqxYXtgOeXaHeeRRMHmXIe9BW+fIDV Mkcg1XVZQqW+YfmHWP4xqKU/5qfFXRJl4i5mMirmAo+qqGDsGBDpuGRBNtCmL7+T5jwQ7OUDL0t 0Tt0zH4rElOq/RB8knq2Oex9Jp9V4WUUXMCw96AVcas3k+bNF36IeBxedtarMoBF+5jhiWT+YU2 dkOnwO8W5HDEPUMG0ctKKIbQmZ/HpJH0LjRTPQhn1Xl3RfrRZ02uH2byq0cTahd5ekhFkwcrt9s fAiHyxPagp2RJG21QNvtBM3TriJRZDxPc5dl4OuPJpl2qyG+MBzSrbXJM584LapajMHp1cSiIZC u87MJC6Q8WAZpwy50= X-Received: by 2002:a05:6000:2586:b0:430:fcda:452d with SMTP id ffacd0b85a97d-4324e4cbd79mr31571175f8f.22.1766826993133; Sat, 27 Dec 2025 01:16:33 -0800 (PST) X-Google-Smtp-Source: AGHT+IGRnlY9U6HFAYkfBTwMQvspwksuT27hclGnpMo5umHHfmzqJfaOO+TXLW2PBybXoCnFNzBgGA== X-Received: by 2002:a05:6000:2586:b0:430:fcda:452d with SMTP id ffacd0b85a97d-4324e4cbd79mr31571146f8f.22.1766826992622; Sat, 27 Dec 2025 01:16:32 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 004/153] include: move memory_ldst* to include/system Date: Sat, 27 Dec 2025 10:13:51 +0100 Message-ID: <20251227091622.20725-5-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827550854158500 Content-Type: text/plain; charset="utf-8" These partial headers are only included via system/memory.h, so keep them in the same directory. Signed-off-by: Paolo Bonzini --- include/system/memory.h | 14 +++++++------- include/{exec =3D> system}/memory_ldst.h.inc | 0 include/{exec =3D> system}/memory_ldst_cached.h.inc | 0 include/{exec =3D> system}/memory_ldst_phys.h.inc | 0 4 files changed, 7 insertions(+), 7 deletions(-) rename include/{exec =3D> system}/memory_ldst.h.inc (100%) rename include/{exec =3D> system}/memory_ldst_cached.h.inc (100%) rename include/{exec =3D> system}/memory_ldst_phys.h.inc (100%) diff --git a/include/system/memory.h b/include/system/memory.h index 3bd5ffa5e0d..1cacc117cc6 100644 --- a/include/system/memory.h +++ b/include/system/memory.h @@ -2848,7 +2848,7 @@ MemTxResult address_space_write_rom(AddressSpace *as,= hwaddr addr, #define SUFFIX #define ARG1 as #define ARG1_DECL AddressSpace *as -#include "exec/memory_ldst.h.inc" +#include "system/memory_ldst.h.inc" =20 static inline void stl_phys_notdirty(AddressSpace *as, hwaddr addr, uint32= _t val) { @@ -2859,7 +2859,7 @@ static inline void stl_phys_notdirty(AddressSpace *as= , hwaddr addr, uint32_t val #define SUFFIX #define ARG1 as #define ARG1_DECL AddressSpace *as -#include "exec/memory_ldst_phys.h.inc" +#include "system/memory_ldst_phys.h.inc" =20 struct MemoryRegionCache { uint8_t *ptr; @@ -2897,7 +2897,7 @@ struct MemoryRegionCache { #define SUFFIX _cached_slow #define ARG1 cache #define ARG1_DECL MemoryRegionCache *cache -#include "exec/memory_ldst.h.inc" +#include "system/memory_ldst.h.inc" =20 /* Inline fast path for direct RAM access. */ static inline uint8_t address_space_ldub_cached(MemoryRegionCache *cache, @@ -2923,18 +2923,18 @@ static inline void address_space_stb_cached(MemoryR= egionCache *cache, } =20 #define ENDIANNESS -#include "exec/memory_ldst_cached.h.inc" +#include "system/memory_ldst_cached.h.inc" =20 #define ENDIANNESS _le -#include "exec/memory_ldst_cached.h.inc" +#include "system/memory_ldst_cached.h.inc" =20 #define ENDIANNESS _be -#include "exec/memory_ldst_cached.h.inc" +#include "system/memory_ldst_cached.h.inc" =20 #define SUFFIX _cached #define ARG1 cache #define ARG1_DECL MemoryRegionCache *cache -#include "exec/memory_ldst_phys.h.inc" +#include "system/memory_ldst_phys.h.inc" =20 /* address_space_cache_init: prepare for repeated access to a physical * memory region diff --git a/include/exec/memory_ldst.h.inc b/include/system/memory_ldst.h.= inc similarity index 100% rename from include/exec/memory_ldst.h.inc rename to include/system/memory_ldst.h.inc diff --git a/include/exec/memory_ldst_cached.h.inc b/include/system/memory_= ldst_cached.h.inc similarity index 100% rename from include/exec/memory_ldst_cached.h.inc rename to include/system/memory_ldst_cached.h.inc diff --git a/include/exec/memory_ldst_phys.h.inc b/include/system/memory_ld= st_phys.h.inc similarity index 100% rename from include/exec/memory_ldst_phys.h.inc rename to include/system/memory_ldst_phys.h.inc --=20 2.52.0 From nobody Wed Jan 7 09:26:48 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=1766827481; cv=none; d=zohomail.com; s=zohoarc; b=T5IwptsKyUpXpx0W9UoUfZdEPKAwfU2LO0uHum/PYSwqi/j6GUzU29svrRQKOwBKiPaXkmCtK5pT4wPy1yKuHmC8x5+Euou++kXbDiqdI7uHXuMWbOp4o6ea8HamW5OrshzFT9iJBO7seoKCKeuf3isvDycjMYtKe9NOzSzZcHE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827481; 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=1+vlyWLoQiKm/kSRGWshczE1HompBlg/4CXMUL70oT8=; b=cicNmz+4t02AW6vNCfObIZFvo1BOe+ppBAfbbxEHpchWeAeBUrvtSbKzoZ9Hxv4ppCjuy82gVkl9A7LIP+jCSMzwgTgCXPv3B4GmE5zSuDTdHkr0YJ6l0TV+PSj1NiZaF0sKME3BhXn3cS1AFk9aImtv0bTFXPVLbBmdSiBBUGs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827481111203.1467534433059; Sat, 27 Dec 2025 01:24:41 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQPn-0002Ln-AL; Sat, 27 Dec 2025 04:16:47 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPi-0002L9-0T for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:43 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPf-0002JD-DQ for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:41 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-480-nlQccyPHNiSY7qhMpGwgtA-1; Sat, 27 Dec 2025 04:16:37 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-430f5dcd4cdso3879786f8f.2 for ; Sat, 27 Dec 2025 01:16:36 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea1aef7sm50065078f8f.7.2025.12.27.01.16.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:16:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766826998; 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=1+vlyWLoQiKm/kSRGWshczE1HompBlg/4CXMUL70oT8=; b=CbKAqDT39+LoFHNGbkqT5btcBPLo1nyjvKSlGJMcQimfYZwauXvbMyv7zCvXPgdwWixyQg kk4JCi0hrL3DcDZ3q6XxHpQ/Za4nVuGdTmZSRVurYYhX2RqhRQ4kbnVRnc4AulHxES4ED8 Bv8eF0WlU6lSNnvNguBtcgrjtbYn9N8= X-MC-Unique: nlQccyPHNiSY7qhMpGwgtA-1 X-Mimecast-MFC-AGG-ID: nlQccyPHNiSY7qhMpGwgtA_1766826996 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766826995; x=1767431795; 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; bh=1+vlyWLoQiKm/kSRGWshczE1HompBlg/4CXMUL70oT8=; b=iWR18y/DEvqNADa2zk5Vi8D2LchBb448zj736qD0n69uDYyq3GiiptG/Cv7PAnX2rN 6ShnGHfP9/HEOIUmMxKcPQG9N3LQssnENQP5GEaOFj3lsTmX7onfHZ0HmTu3w6xUFeel LdRQ40pU98GapRe/ASZ4jrz2sT11ckvHYvSGPuC4+xQ64YMImqoUpEUTpmzcRD+Ufa9q UmLHYBbp5UYuMSrX0ZV+jr4M+MhOBhgjZkHs5OeFKu8qT5qCTGuFwHLPLp0ms3xZJnHD O9O5JpkHL9MMz9pn33O+i6nmuoWqcDCSm+g+e9hJW+BfDpfJ5ebqHBlVKzdXz1g9xcMd PLdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766826995; x=1767431795; 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; bh=1+vlyWLoQiKm/kSRGWshczE1HompBlg/4CXMUL70oT8=; b=tolOCn5Rc6mpvLmhfj5r1V+eOdDUqXVP5YquwiCfn7qCuCqLrAqL2XW5Pkee3tG8wY QPSFWa7wSsF19e8XKbuSGuyCJMK5t0dJ8RTzT8wvETTJzS9QFT+um2Y/EhuM6Hh8duz0 /ClcYAzRDmciHoDycq75uTbm2gbyISjJRO8yhqWsHGR0/nCUaSP190hh650LXK1ObGAb ykQXZ8tKztjkA7DsTwTB510aQdTqCLMc2q+DAb8uWon7gdqIz0KhZqE0OXTym+feAE7r vE+woGSmitITQYfpOIU5NgTj3JrGZKqmLcDdtCyT87DyFS72z8fmEzrOAV0xVBr3pwmY xEHg== X-Gm-Message-State: AOJu0Yx32UcSeVkKldfaVVkjCBoS4NQo8qAg1tba+uZHxXHY4ACEqcAF Uitj4gx0MMETBnEWzETPz4FfGRIEuDTec5jWpHzqcv2tUCPi8NUY5q+2VcmwOfA8eeWux+5oOlc HtOqONIspbVpKlkrsqW3dQLtdq5k8ALSU33wrVmDScWfxN9Kms8oL9eHad5RM5GaHG7y/BhD7sF HjE+lhyb26GHdpyCrvyrk5wu5PUJM/XqYsKWxnr/gb X-Gm-Gg: AY/fxX7x/Xv8mnzKD02kbMp2+IM4dp8aNXagQNa1wS1TXX82L8v6zyGiB+psu1FRf8X FrHzT2axdhOxEn8D6ahwbITa0/kUQTolPDPgF079WOp9Z+58RRqmXblXPY3AAFqgpjOM785aWQa U6U/RVoBNhtl3c4gbaAXIDixkD7QBJJ6mErnTvQpv0AiAQBLic4UE5t6phxAMqGqdet3fgAGCf8 G+ABJRrWsTQ4Q/mZvfHRQfRHmeFXG1i3284qecPKEXCbkMEV+//teImuMYSTNJb79bR6mt/Xu/2 856o1lGY8Z0ek01tls4J8LndQRx2j0cKlCNgZ22A0YWNU+OtXchUmPhqB3R3D2yhXZfM+hHbtF6 0qqRH6K+xiX4Io4vWuZPf1AFawLgs4g2Ut+aEQZ9icycmYCHw6dCLxBEhmu39mumOQpbheHRIXc cd92Pl5XBabPvVeuE= X-Received: by 2002:a05:6000:22c4:b0:431:9f1:e4c7 with SMTP id ffacd0b85a97d-4324e4c9d76mr30240835f8f.21.1766826994639; Sat, 27 Dec 2025 01:16:34 -0800 (PST) X-Google-Smtp-Source: AGHT+IFjmzZvuaAKuvLGewDHkOf++jQvt8ITxUFQAdSfVjNSg12B+x7k7LxZ1HnfLBGCQZPBdfOcMw== X-Received: by 2002:a05:6000:22c4:b0:431:9f1:e4c7 with SMTP id ffacd0b85a97d-4324e4c9d76mr30240808f8f.21.1766826993789; Sat, 27 Dec 2025 01:16:33 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 005/153] include: move hw/usb.h to hw/usb/ Date: Sat, 27 Dec 2025 10:13:52 +0100 Message-ID: <20251227091622.20725-6-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827482739158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- MAINTAINERS | 2 +- hw/usb/hcd-dwc2.h | 2 +- hw/usb/hcd-ehci.h | 2 +- hw/usb/hcd-ohci.h | 2 +- hw/usb/hcd-uhci.h | 2 +- hw/usb/hcd-xhci-pci.h | 2 +- hw/usb/hcd-xhci-sysbus.h | 2 +- hw/usb/hcd-xhci.h | 2 +- include/hw/usb/msd.h | 2 +- include/hw/{ =3D> usb}/usb.h | 0 chardev/baum.c | 2 +- hw/arm/sbsa-ref.c | 2 +- hw/hppa/machine.c | 2 +- hw/i386/pc.c | 2 +- hw/i386/pc_piix.c | 2 +- hw/i386/pc_q35.c | 2 +- hw/mips/loongson3_virt.c | 2 +- hw/ppc/mac_newworld.c | 2 +- hw/ppc/spapr.c | 2 +- hw/sh4/r2d.c | 2 +- hw/usb/bus-stub.c | 2 +- hw/usb/bus.c | 2 +- hw/usb/canokey.c | 2 +- hw/usb/combined-packet.c | 2 +- hw/usb/core.c | 2 +- hw/usb/desc-msos.c | 2 +- hw/usb/desc.c | 2 +- hw/usb/dev-audio.c | 2 +- hw/usb/dev-hid.c | 2 +- hw/usb/dev-hub.c | 2 +- hw/usb/dev-mtp.c | 2 +- hw/usb/dev-network.c | 2 +- hw/usb/dev-serial.c | 2 +- hw/usb/dev-smartcard-reader.c | 2 +- hw/usb/dev-storage-bot.c | 2 +- hw/usb/dev-storage-classic.c | 2 +- hw/usb/dev-storage.c | 2 +- hw/usb/dev-uas.c | 2 +- hw/usb/dev-wacom.c | 2 +- hw/usb/hcd-ohci-pci.c | 2 +- hw/usb/hcd-ohci-sysbus.c | 2 +- hw/usb/hcd-ohci.c | 2 +- hw/usb/hcd-uhci.c | 2 +- hw/usb/hcd-xhci-nec.c | 2 +- hw/usb/host-libusb.c | 2 +- hw/usb/libhw.c | 2 +- hw/usb/pcap.c | 2 +- hw/usb/quirks.c | 2 +- hw/usb/redirect.c | 2 +- hw/usb/u2f-emulated.c | 2 +- hw/usb/u2f-passthru.c | 2 +- hw/usb/u2f.c | 2 +- hw/usb/xen-usb.c | 2 +- hw/vmapple/vmapple.c | 2 +- system/vl.c | 2 +- 55 files changed, 54 insertions(+), 54 deletions(-) rename include/hw/{ =3D> usb}/usb.h (100%) diff --git a/MAINTAINERS b/MAINTAINERS index 63e9ba521bc..71286729341 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2285,7 +2285,7 @@ S: Orphan F: hw/usb/* F: tests/qtest/usb-*-test.c F: docs/system/devices/usb.rst -F: include/hw/usb.h +F: include/hw/usb/usb.h F: include/hw/usb/ =20 USB (serial adapter) diff --git a/hw/usb/hcd-dwc2.h b/hw/usb/hcd-dwc2.h index 2d5a5690fc2..0c02392ade0 100644 --- a/hw/usb/hcd-dwc2.h +++ b/hw/usb/hcd-dwc2.h @@ -22,7 +22,7 @@ #include "qemu/timer.h" #include "hw/irq.h" #include "hw/sysbus.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "system/dma.h" #include "qom/object.h" =20 diff --git a/hw/usb/hcd-ehci.h b/hw/usb/hcd-ehci.h index ffd6c5108eb..c16717294d3 100644 --- a/hw/usb/hcd-ehci.h +++ b/hw/usb/hcd-ehci.h @@ -19,7 +19,7 @@ #define HW_USB_HCD_EHCI_H =20 #include "qemu/timer.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "system/dma.h" #include "hw/pci/pci_device.h" #include "hw/sysbus.h" diff --git a/hw/usb/hcd-ohci.h b/hw/usb/hcd-ohci.h index 3cc35a5cdc5..75e266de90b 100644 --- a/hw/usb/hcd-ohci.h +++ b/hw/usb/hcd-ohci.h @@ -23,7 +23,7 @@ =20 #include "hw/sysbus.h" #include "system/dma.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "qom/object.h" =20 /* Number of Downstream Ports on the root hub: */ diff --git a/hw/usb/hcd-uhci.h b/hw/usb/hcd-uhci.h index e0a6525505c..3154837f1d1 100644 --- a/hw/usb/hcd-uhci.h +++ b/hw/usb/hcd-uhci.h @@ -31,7 +31,7 @@ #include "system/memory.h" #include "qemu/timer.h" #include "hw/pci/pci_device.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" =20 typedef struct UHCIQueue UHCIQueue; =20 diff --git a/hw/usb/hcd-xhci-pci.h b/hw/usb/hcd-xhci-pci.h index 5b61ae84555..c9359f1bd90 100644 --- a/hw/usb/hcd-xhci-pci.h +++ b/hw/usb/hcd-xhci-pci.h @@ -25,7 +25,7 @@ #define HW_USB_HCD_XHCI_PCI_H =20 #include "hw/pci/pci_device.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "hcd-xhci.h" =20 #define TYPE_XHCI_PCI "pci-xhci" diff --git a/hw/usb/hcd-xhci-sysbus.h b/hw/usb/hcd-xhci-sysbus.h index fdfcbbee3bf..f8175470bab 100644 --- a/hw/usb/hcd-xhci-sysbus.h +++ b/hw/usb/hcd-xhci-sysbus.h @@ -11,7 +11,7 @@ #ifndef HW_USB_HCD_XHCI_SYSBUS_H #define HW_USB_HCD_XHCI_SYSBUS_H =20 -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "hcd-xhci.h" #include "hw/sysbus.h" =20 diff --git a/hw/usb/hcd-xhci.h b/hw/usb/hcd-xhci.h index 9c3974f1489..5cb9e06d1d6 100644 --- a/hw/usb/hcd-xhci.h +++ b/hw/usb/hcd-xhci.h @@ -23,7 +23,7 @@ #define HW_USB_HCD_XHCI_H #include "qom/object.h" =20 -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "hw/usb/xhci.h" #include "system/dma.h" =20 diff --git a/include/hw/usb/msd.h b/include/hw/usb/msd.h index f9fd862b529..125d2c218f6 100644 --- a/include/hw/usb/msd.h +++ b/include/hw/usb/msd.h @@ -7,7 +7,7 @@ * This code is licensed under the LGPL. */ =20 -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "hw/scsi/scsi.h" =20 enum USBMSDMode { diff --git a/include/hw/usb.h b/include/hw/usb/usb.h similarity index 100% rename from include/hw/usb.h rename to include/hw/usb/usb.h diff --git a/chardev/baum.c b/chardev/baum.c index ad683215041..157f8b95195 100644 --- a/chardev/baum.c +++ b/chardev/baum.c @@ -28,7 +28,7 @@ #include "qemu/main-loop.h" #include "qemu/module.h" #include "qemu/timer.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "ui/console.h" #include #include diff --git a/hw/arm/sbsa-ref.c b/hw/arm/sbsa-ref.c index 2205500a8da..3ba69d37d79 100644 --- a/hw/arm/sbsa-ref.c +++ b/hw/arm/sbsa-ref.c @@ -45,7 +45,7 @@ #include "hw/loader.h" #include "hw/pci-host/gpex.h" #include "hw/qdev-properties.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "hw/usb/xhci.h" #include "hw/char/pl011.h" #include "hw/watchdog/sbsa_gwdt.h" diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c index 8c66eed5a26..acd1c3f005b 100644 --- a/hw/hppa/machine.c +++ b/hw/hppa/machine.c @@ -24,7 +24,7 @@ #include "hw/input/lasips2.h" #include "hw/net/lasi_82596.h" #include "hw/nmi.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "hw/pci/pci.h" #include "hw/pci/pci_device.h" #include "hw/pci-host/astro.h" diff --git a/hw/i386/pc.c b/hw/i386/pc.c index f8b919cb6c4..0f2a5889022 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -52,7 +52,7 @@ #include "acpi-build.h" #include "hw/mem/nvdimm.h" #include "hw/cxl/cxl_host.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "hw/i386/intel_iommu.h" #include "hw/net/ne2000-isa.h" #include "hw/virtio/virtio-iommu.h" diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index 7b3611e973c..f6b9a1bc406 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -35,7 +35,7 @@ #include "hw/display/ramfb.h" #include "hw/pci/pci.h" #include "hw/pci/pci_ids.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "net/net.h" #include "hw/ide/pci.h" #include "hw/irq.h" diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index 6015e639d7b..02de7453baa 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -52,7 +52,7 @@ #include "hw/ide/ahci-pci.h" #include "hw/intc/ioapic.h" #include "hw/southbridge/ich9.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "hw/usb/hcd-uhci.h" #include "qapi/error.h" #include "qemu/error-report.h" diff --git a/hw/mips/loongson3_virt.c b/hw/mips/loongson3_virt.c index 77dc895648f..4df6cf13b36 100644 --- a/hw/mips/loongson3_virt.c +++ b/hw/mips/loongson3_virt.c @@ -43,7 +43,7 @@ #include "hw/pci/pci.h" #include "hw/pci/pci_host.h" #include "hw/pci-host/gpex.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "net/net.h" #include "system/kvm.h" #include "system/qtest.h" diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c index 951de4bae4b..739f1af3e18 100644 --- a/hw/ppc/mac_newworld.c +++ b/hw/ppc/mac_newworld.c @@ -72,7 +72,7 @@ #include "system/kvm.h" #include "system/reset.h" #include "kvm_ppc.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "hw/sysbus.h" #include "trace.h" =20 diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 99b843ba2fa..6f2d10330d6 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -78,7 +78,7 @@ #include "hw/virtio/vhost-scsi-common.h" =20 #include "system/confidential-guest-support.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "qemu/config-file.h" #include "qemu/error-report.h" #include "trace.h" diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c index 010be6d5394..c29ee690690 100644 --- a/hw/sh4/r2d.c +++ b/hw/sh4/r2d.c @@ -41,7 +41,7 @@ #include "hw/ide/mmio.h" #include "hw/irq.h" #include "hw/loader.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "hw/block/flash.h" #include "exec/tswap.h" =20 diff --git a/hw/usb/bus-stub.c b/hw/usb/bus-stub.c index cd0c317b718..a7c3909e967 100644 --- a/hw/usb/bus-stub.c +++ b/hw/usb/bus-stub.c @@ -12,7 +12,7 @@ #include "qapi/qapi-commands-machine.h" #include "system/system.h" #include "monitor/monitor.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" =20 USBDevice *usbdevice_create(const char *driver) { diff --git a/hw/usb/bus.c b/hw/usb/bus.c index 714e33989f4..c1dd1429658 100644 --- a/hw/usb/bus.c +++ b/hw/usb/bus.c @@ -1,6 +1,6 @@ #include "qemu/osdep.h" #include "hw/qdev-properties.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "qapi/error.h" #include "qapi/qapi-commands-machine.h" #include "qapi/type-helpers.h" diff --git a/hw/usb/canokey.c b/hw/usb/canokey.c index cbefbb5daf8..acd4ea30d98 100644 --- a/hw/usb/canokey.c +++ b/hw/usb/canokey.c @@ -12,7 +12,7 @@ =20 #include "qemu/module.h" #include "qapi/error.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "hw/qdev-properties.h" #include "trace.h" #include "desc.h" diff --git a/hw/usb/combined-packet.c b/hw/usb/combined-packet.c index e56802f89a3..f18e53b7885 100644 --- a/hw/usb/combined-packet.c +++ b/hw/usb/combined-packet.c @@ -21,7 +21,7 @@ */ #include "qemu/osdep.h" #include "qemu/units.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "qemu/iov.h" #include "trace.h" =20 diff --git a/hw/usb/core.c b/hw/usb/core.c index 975f76250a1..b3f811c513b 100644 --- a/hw/usb/core.c +++ b/hw/usb/core.c @@ -24,7 +24,7 @@ * THE SOFTWARE. */ #include "qemu/osdep.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "qemu/iov.h" #include "trace.h" =20 diff --git a/hw/usb/desc-msos.c b/hw/usb/desc-msos.c index c72c65b650c..3f53d4943d2 100644 --- a/hw/usb/desc-msos.c +++ b/hw/usb/desc-msos.c @@ -1,5 +1,5 @@ #include "qemu/osdep.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "desc.h" =20 /* diff --git a/hw/usb/desc.c b/hw/usb/desc.c index f2bdc05a953..268eaf06994 100644 --- a/hw/usb/desc.c +++ b/hw/usb/desc.c @@ -1,6 +1,6 @@ #include "qemu/osdep.h" =20 -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "desc.h" #include "trace.h" =20 diff --git a/hw/usb/dev-audio.c b/hw/usb/dev-audio.c index 8dd9d265996..988824ea750 100644 --- a/hw/usb/dev-audio.c +++ b/hw/usb/dev-audio.c @@ -32,7 +32,7 @@ #include "qemu/osdep.h" #include "qemu/module.h" #include "hw/qdev-properties.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "migration/vmstate.h" #include "desc.h" #include "qemu/audio.h" diff --git a/hw/usb/dev-hid.c b/hw/usb/dev-hid.c index 96623aa3223..296e9d0d856 100644 --- a/hw/usb/dev-hid.c +++ b/hw/usb/dev-hid.c @@ -25,7 +25,7 @@ =20 #include "qemu/osdep.h" #include "ui/console.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "migration/vmstate.h" #include "desc.h" #include "qapi/error.h" diff --git a/hw/usb/dev-hub.c b/hw/usb/dev-hub.c index a19350d9c42..f418da14094 100644 --- a/hw/usb/dev-hub.c +++ b/hw/usb/dev-hub.c @@ -27,7 +27,7 @@ #include "qemu/timer.h" #include "trace.h" #include "hw/qdev-properties.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "migration/vmstate.h" #include "desc.h" #include "qemu/error-report.h" diff --git a/hw/usb/dev-mtp.c b/hw/usb/dev-mtp.c index afd7944b737..04e8eedbf61 100644 --- a/hw/usb/dev-mtp.c +++ b/hw/usb/dev-mtp.c @@ -23,7 +23,7 @@ #include "qemu/filemonitor.h" #include "trace.h" #include "hw/qdev-properties.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "migration/vmstate.h" #include "desc.h" #include "qemu/units.h" diff --git a/hw/usb/dev-network.c b/hw/usb/dev-network.c index 1df24541814..34cd906d6cc 100644 --- a/hw/usb/dev-network.c +++ b/hw/usb/dev-network.c @@ -26,7 +26,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/qdev-properties.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "migration/vmstate.h" #include "desc.h" #include "net/net.h" diff --git a/hw/usb/dev-serial.c b/hw/usb/dev-serial.c index 2eb52b2e01e..17bdff9e820 100644 --- a/hw/usb/dev-serial.c +++ b/hw/usb/dev-serial.c @@ -15,7 +15,7 @@ #include "qemu/module.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "migration/vmstate.h" #include "desc.h" #include "chardev/char-serial.h" diff --git a/hw/usb/dev-smartcard-reader.c b/hw/usb/dev-smartcard-reader.c index 6ce7154feed..a1081e545aa 100644 --- a/hw/usb/dev-smartcard-reader.c +++ b/hw/usb/dev-smartcard-reader.c @@ -41,7 +41,7 @@ #include "qemu/error-report.h" #include "qemu/module.h" #include "hw/qdev-properties.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "migration/vmstate.h" #include "desc.h" =20 diff --git a/hw/usb/dev-storage-bot.c b/hw/usb/dev-storage-bot.c index df6ab7f656b..a7f8d80c17a 100644 --- a/hw/usb/dev-storage-bot.c +++ b/hw/usb/dev-storage-bot.c @@ -9,7 +9,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "hw/usb/desc.h" #include "hw/usb/msd.h" =20 diff --git a/hw/usb/dev-storage-classic.c b/hw/usb/dev-storage-classic.c index dabe1563593..977151c4a08 100644 --- a/hw/usb/dev-storage-classic.c +++ b/hw/usb/dev-storage-classic.c @@ -10,7 +10,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qapi/visitor.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "hw/usb/desc.h" #include "hw/usb/msd.h" #include "system/system.h" diff --git a/hw/usb/dev-storage.c b/hw/usb/dev-storage.c index b13fe345c45..bbd97406f00 100644 --- a/hw/usb/dev-storage.c +++ b/hw/usb/dev-storage.c @@ -13,7 +13,7 @@ #include "qemu/module.h" #include "qemu/option.h" #include "qemu/config-file.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "hw/usb/msd.h" #include "desc.h" #include "hw/qdev-properties.h" diff --git a/hw/usb/dev-uas.c b/hw/usb/dev-uas.c index 18ebe15d0c4..75f01c74038 100644 --- a/hw/usb/dev-uas.c +++ b/hw/usb/dev-uas.c @@ -18,7 +18,7 @@ #include "qemu/module.h" #include "qemu/log.h" =20 -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "migration/vmstate.h" #include "desc.h" #include "hw/qdev-properties.h" diff --git a/hw/usb/dev-wacom.c b/hw/usb/dev-wacom.c index f4b71a21472..14d07e81281 100644 --- a/hw/usb/dev-wacom.c +++ b/hw/usb/dev-wacom.c @@ -28,7 +28,7 @@ =20 #include "qemu/osdep.h" #include "ui/console.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "hw/usb/hid.h" #include "migration/vmstate.h" #include "qemu/module.h" diff --git a/hw/usb/hcd-ohci-pci.c b/hw/usb/hcd-ohci-pci.c index 94d1077eb9e..e180e96b5f1 100644 --- a/hw/usb/hcd-ohci-pci.c +++ b/hw/usb/hcd-ohci-pci.c @@ -21,7 +21,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qemu/timer.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "migration/vmstate.h" #include "hw/pci/pci_device.h" #include "hw/sysbus.h" diff --git a/hw/usb/hcd-ohci-sysbus.c b/hw/usb/hcd-ohci-sysbus.c index 3fc6cce44b0..2d3c770b117 100644 --- a/hw/usb/hcd-ohci-sysbus.c +++ b/hw/usb/hcd-ohci-sysbus.c @@ -23,7 +23,7 @@ #include "qapi/error.h" #include "qemu/module.h" #include "qemu/timer.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "migration/vmstate.h" #include "hw/sysbus.h" #include "hw/qdev-dma.h" diff --git a/hw/usb/hcd-ohci.c b/hw/usb/hcd-ohci.c index 72a9f9f4749..c48f07f7e39 100644 --- a/hw/usb/hcd-ohci.c +++ b/hw/usb/hcd-ohci.c @@ -30,7 +30,7 @@ #include "qapi/error.h" #include "qemu/module.h" #include "qemu/timer.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "migration/vmstate.h" #include "hw/sysbus.h" #include "hw/qdev-dma.h" diff --git a/hw/usb/hcd-uhci.c b/hw/usb/hcd-uhci.c index e207d0587a1..124ac4faec0 100644 --- a/hw/usb/hcd-uhci.c +++ b/hw/usb/hcd-uhci.c @@ -27,7 +27,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "hw/usb/uhci-regs.h" #include "migration/vmstate.h" #include "hw/pci/pci.h" diff --git a/hw/usb/hcd-xhci-nec.c b/hw/usb/hcd-xhci-nec.c index 9e0fea26f40..5fc853eb330 100644 --- a/hw/usb/hcd-xhci-nec.c +++ b/hw/usb/hcd-xhci-nec.c @@ -20,7 +20,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "qemu/module.h" #include "hw/pci/pci.h" #include "hw/qdev-properties.h" diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c index b74670ae256..38893b5e680 100644 --- a/hw/usb/host-libusb.c +++ b/hw/usb/host-libusb.c @@ -56,7 +56,7 @@ #include "trace.h" =20 #include "hw/qdev-properties.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" =20 /* -----------------------------------------------------------------------= - */ =20 diff --git a/hw/usb/libhw.c b/hw/usb/libhw.c index 4f03ef4ba9a..e108be054c9 100644 --- a/hw/usb/libhw.c +++ b/hw/usb/libhw.c @@ -20,7 +20,7 @@ * THE SOFTWARE. */ #include "qemu/osdep.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "system/dma.h" =20 int usb_packet_map(USBPacket *p, QEMUSGList *sgl) diff --git a/hw/usb/pcap.c b/hw/usb/pcap.c index dbff00be252..bb74d046a59 100644 --- a/hw/usb/pcap.c +++ b/hw/usb/pcap.c @@ -8,7 +8,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" =20 #define PCAP_MAGIC 0xa1b2c3d4 #define PCAP_MAJOR 2 diff --git a/hw/usb/quirks.c b/hw/usb/quirks.c index 23ea7a23ea1..44007f8de7a 100644 --- a/hw/usb/quirks.c +++ b/hw/usb/quirks.c @@ -14,7 +14,7 @@ =20 #include "qemu/osdep.h" #include "quirks.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" =20 static bool usb_id_match(const struct usb_device_id *ids, uint16_t vendor_id, uint16_t product_id, diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c index d603a4a6f96..1a73db68f26 100644 --- a/hw/usb/redirect.c +++ b/hw/usb/redirect.c @@ -43,7 +43,7 @@ =20 #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "migration/qemu-file-types.h" #include "migration/vmstate.h" #include "qom/object.h" diff --git a/hw/usb/u2f-emulated.c b/hw/usb/u2f-emulated.c index ace5eceadd9..783e7f1af0b 100644 --- a/hw/usb/u2f-emulated.c +++ b/hw/usb/u2f-emulated.c @@ -28,7 +28,7 @@ #include "qemu/thread.h" #include "qemu/main-loop.h" #include "qapi/error.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "hw/qdev-properties.h" =20 #include diff --git a/hw/usb/u2f-passthru.c b/hw/usb/u2f-passthru.c index fa8d9cdda89..b3206fb7fe4 100644 --- a/hw/usb/u2f-passthru.c +++ b/hw/usb/u2f-passthru.c @@ -29,7 +29,7 @@ #include "qemu/error-report.h" #include "qapi/error.h" #include "hw/qdev-properties.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "migration/vmstate.h" =20 #include "u2f.h" diff --git a/hw/usb/u2f.c b/hw/usb/u2f.c index b051a999d3a..d6291852f63 100644 --- a/hw/usb/u2f.c +++ b/hw/usb/u2f.c @@ -26,7 +26,7 @@ #include "qemu/osdep.h" #include "qemu/module.h" #include "qapi/error.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "hw/usb/hid.h" #include "migration/vmstate.h" #include "desc.h" diff --git a/hw/usb/xen-usb.c b/hw/usb/xen-usb.c index fa46a7da01c..caf9efbb77c 100644 --- a/hw/usb/xen-usb.c +++ b/hw/usb/xen-usb.c @@ -26,7 +26,7 @@ #include "qemu/config-file.h" #include "qemu/main-loop.h" #include "qemu/option.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "hw/xen/xen-legacy-backend.h" #include "monitor/qdev.h" #include "qapi/error.h" diff --git a/hw/vmapple/vmapple.c b/hw/vmapple/vmapple.c index f3cff329244..62d33525bab 100644 --- a/hw/vmapple/vmapple.c +++ b/hw/vmapple/vmapple.c @@ -30,7 +30,7 @@ #include "hw/loader.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "hw/arm/boot.h" #include "hw/arm/primecell.h" #include "hw/char/pl011.h" diff --git a/system/vl.c b/system/vl.c index 5091fe52d92..cdf32c119b2 100644 --- a/system/vl.c +++ b/system/vl.c @@ -54,7 +54,7 @@ #include "qemu/accel.h" #include "qemu/async-teardown.h" #include "qemu/exit-with-parent.h" -#include "hw/usb.h" +#include "hw/usb/usb.h" #include "hw/isa/isa.h" #include "hw/scsi/scsi.h" #include "hw/sd/sd.h" --=20 2.52.0 From nobody Wed Jan 7 09:26:48 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=1766827068; cv=none; d=zohomail.com; s=zohoarc; b=TvATVBNgp6mIMUlqnajWySaVoHKRsondeSxulnZtmkvSlS3oFGeBM2syPfuqExN7lA5y3qNYPOnfxyOrnMFhM3+CPXdDaITyjaVF/azlvuNVrJ3yBmA0u3Oiju5tv0yF3+tSIA4LoKIDxauq5OXcrh/6f5Goztnr6mk3rcjYyVU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827068; 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=2jzLlmOLAyvM46Wv/AhHJV+DPPbjDlZqZQxOaODao0E=; b=cLurMC8ZWyVaWOJ6d5Mng30HUkiZxeS6vliBSrWLZ5PDv9cSwGN7U72SWf3ExcBnwmmlhrTfki8CLAl/zY0cBCd823kRr/2hLal1IcTUgH1fjCFAWOa1PYUdXWIKqA4JsubU29fziRbKQwMO/D/5K6NulPlnp7vVIgCaJo0vjG0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17668270686521009.6338945594799; Sat, 27 Dec 2025 01:17:48 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQPt-0002Os-7p; Sat, 27 Dec 2025 04:16:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPp-0002NU-PC for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:50 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPl-0002Je-BE for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:49 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-279-GMpz1czjNtypz_N1OK_6rQ-1; Sat, 27 Dec 2025 04:16:40 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-477cf2230c8so77987825e9.0 for ; Sat, 27 Dec 2025 01:16:40 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa4749sm50629502f8f.37.2025.12.27.01.16.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:16:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827004; 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=2jzLlmOLAyvM46Wv/AhHJV+DPPbjDlZqZQxOaODao0E=; b=Zv9ofmhQo6wZIFO8sqNunMUUhLNQVtV6/QV+43MJKnmhq0T+tLrPFo0DLrhVItfS56GGQb waRZTbOSKuVyCwEAdPYbMUAtsHzSZbzAy3AkMDKgV7cRQf6i/d4azIrDJW710A/NfTUnIU BNYmmBt8zCW1C2CvksJzkUIIC2x7ZkU= X-MC-Unique: GMpz1czjNtypz_N1OK_6rQ-1 X-Mimecast-MFC-AGG-ID: GMpz1czjNtypz_N1OK_6rQ_1766826999 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766826999; x=1767431799; 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; bh=2jzLlmOLAyvM46Wv/AhHJV+DPPbjDlZqZQxOaODao0E=; b=KyN5f7cMUqHTxXXKvXaR3aBKH9qvPiy0rS694vLu//xqp1Gigl+IVpg0SaUiI73D5F 6GcR2U1TJyCVB6I9nmZZjomD0rJnuzuQkWq38BJFeXVlZBcHvFpdsQmWJJbeX//QZDVQ lffDTOFxPu3+/86VxEiUXDMBDRDxYqbMTd8yI7P9VRCYwEf24w+ZkjVeYD3XKc47QaFH UL6KjvbDjCfa8UjvEUpvRrfSMIF783D4eanKr92IChX0KNHf0o7N7XLaFk/PpMJfK5Gc WEVTv+9LWCsv/QgKArPuDGX5iaC/lUXNHctTFKBmJANnX7SvqXl8Sds6N25ner6YOcPw ysbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766826999; x=1767431799; 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; bh=2jzLlmOLAyvM46Wv/AhHJV+DPPbjDlZqZQxOaODao0E=; b=vhmZuQY36PbsjtD6ZNnpc+XV7AHwe+cEcLcXZxMOEdh/uUU5KNamjfrFDOTEkxu4OA ELnDp68Ogf6ePgNljjQnuKdD+CyvPyy3MX68aKRZsPJwwspZjqZhqpC/pR68Gm23m/Ep OaxmDWNV/f0e6pMiBuXx6BcwGCliuaHO/yHrmfudCLPvLuLkiQmSSh/5w36NkWF2VDsC Wd38dfE9oZd0nKEcCUiyHCpx3r7TPKTllR9hhxkPfHcihgXozSyfkM6nbprIMX26PJ8m ZMs1MOC1/9+Vb9Rdy6XBw8wxfsBLotaH/mAthOxhn5ZAbu9zRMX528tTNZKv95w7mww7 YWvw== X-Gm-Message-State: AOJu0YwrZ2aKepzjd3t28orLW8yBl0rZyaeQlJQg0IQE+A0eBHEVtS3/ CrnwgWV7+gfEkglsXd/cjAy4PuczecYJZLP5qSGKIQefDbCpy9Hi/LwC2yqBT4BeevfcRrnlC8t oz+yE+4f8R57eGwQJKC82JnuH7cIJ/uujfIdnMfn8k+LXWojN3zJvwLX+bJx9Ws2ZgnJJYQXkn8 HElNFx78Ysi1W7u8tjhrmR09tIi7W31tL8KpG2YTol X-Gm-Gg: AY/fxX6JVBXzJMYvDLdORK2XBR5DhTaUryfrFJOpO+BsDem3j6hmJMkdAB97xnhm+ZF R84IjgbyFNmtpzKmDHCOCkQttTa1PTFMzNncZn8WahTYESxm7JlYUCs27aLkQNrs+6wlSMUNePX 9dRqp2Z4TD5s3ItEfUIK4WMkjwzuQEMua2tnS0KWszi3qkxxWTRcGYcRMBQQFSrAHI8M+1xfrjw ltp5tO+DIzMoq86V8+fXhUEc/YVXU/NS5e134kZcgqq64zs0BtDlP5xYgibwvUzWoGvGBi/qBZz FPYuQ0PJp3pH9Ml/8Wx3C7d0KxHbV/Wr+O4EUl2N8WUjIE5Q6+DRhcVGusn7wnBdOPgdYQkZY2Y gacQBC1ukztzDVtIRJsrFVtRA2S+PFmcEDbGJuyhtGmcEymZgoyLHabXJjnie4NNu2ac+dXayof iwjqZXXD/ziaa7KXs= X-Received: by 2002:a5d:51cb:0:b0:432:7068:17d with SMTP id ffacd0b85a97d-432706801f3mr10899423f8f.20.1766826997285; Sat, 27 Dec 2025 01:16:37 -0800 (PST) X-Google-Smtp-Source: AGHT+IEqDb84rfqZdNBBxQNXEBy7bvEklGRb+m2w2cU1VIAbUJkg8UOovDtTJX2xWXa0SA/Autu8Bg== X-Received: by 2002:a5d:51cb:0:b0:432:7068:17d with SMTP id ffacd0b85a97d-432706801f3mr10899356f8f.20.1766826995580; Sat, 27 Dec 2025 01:16:35 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 006/153] include: move hw/boards.h to hw/core/ Date: Sat, 27 Dec 2025 10:13:53 +0100 Message-ID: <20251227091622.20725-7-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827081199158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- MAINTAINERS | 2 +- docs/conf.py | 2 +- hw/alpha/alpha_sys.h | 2 +- hw/avr/boot.h | 2 +- hw/i386/acpi-common.h | 2 +- hw/i386/fw_cfg.h | 2 +- hw/loongarch/fw_cfg.h | 2 +- hw/mips/fw_cfg.h | 2 +- hw/ppc/e500.h | 2 +- include/hw/acpi/cpu.h | 2 +- include/hw/arm/aspeed.h | 2 +- include/hw/arm/machines-qom.h | 2 +- include/hw/arm/npcm7xx.h | 2 +- include/hw/arm/raspi_platform.h | 2 +- include/hw/arm/virt.h | 2 +- include/hw/{ =3D> core}/boards.h | 0 include/hw/cxl/cxl_host.h | 2 +- include/hw/i386/microvm.h | 2 +- include/hw/i386/pc.h | 2 +- include/hw/i386/x86.h | 2 +- include/hw/loongarch/virt.h | 2 +- include/hw/m68k/q800.h | 2 +- include/hw/misc/lasi.h | 2 +- include/hw/openrisc/boot.h | 2 +- include/hw/ppc/pnv.h | 2 +- include/hw/ppc/spapr.h | 2 +- include/hw/ppc/spapr_numa.h | 2 +- include/hw/remote/machine.h | 2 +- include/hw/riscv/microchip_pfsoc.h | 2 +- include/hw/riscv/numa.h | 2 +- include/hw/riscv/opentitan.h | 2 +- include/hw/riscv/shakti_c.h | 2 +- include/hw/riscv/sifive_e.h | 2 +- include/hw/riscv/sifive_u.h | 2 +- include/hw/riscv/spike.h | 2 +- include/hw/riscv/virt.h | 2 +- include/hw/riscv/xiangshan_kmh.h | 2 +- include/hw/s390x/cpu-topology.h | 2 +- include/hw/s390x/s390-virtio-ccw.h | 2 +- include/hw/tricore/triboard.h | 2 +- include/hw/xen/xen-pvh-common.h | 2 +- include/system/kvm_int.h | 2 +- accel/accel-system.c | 2 +- accel/hvf/hvf-all.c | 2 +- accel/kvm/kvm-all.c | 2 +- accel/mshv/mshv-all.c | 2 +- accel/tcg/tcg-accel-ops-mttcg.c | 2 +- accel/tcg/tcg-all.c | 2 +- accel/xen/xen-all.c | 2 +- backends/hostmem.c | 2 +- block/monitor/block-hmp-cmds.c | 2 +- gdbstub/gdbstub.c | 2 +- gdbstub/system.c | 2 +- hw/acpi/aml-build.c | 2 +- hw/acpi/memory_hotplug.c | 2 +- hw/acpi/pci.c | 2 +- hw/arm/allwinner-a10.c | 2 +- hw/arm/allwinner-r40.c | 2 +- hw/arm/aspeed_ast27x0-fc.c | 2 +- hw/arm/b-l475e-iot01a.c | 2 +- hw/arm/bananapi_m2u.c | 2 +- hw/arm/boot.c | 2 +- hw/arm/collie.c | 2 +- hw/arm/cubieboard.c | 2 +- hw/arm/digic_boards.c | 2 +- hw/arm/exynos4_boards.c | 2 +- hw/arm/fby35.c | 2 +- hw/arm/fsl-imx6.c | 2 +- hw/arm/fsl-imx6ul.c | 2 +- hw/arm/fsl-imx7.c | 2 +- hw/arm/fsl-imx8mp.c | 2 +- hw/arm/highbank.c | 2 +- hw/arm/imx25_pdk.c | 2 +- hw/arm/imx8mp-evk.c | 2 +- hw/arm/integratorcp.c | 2 +- hw/arm/kzm.c | 2 +- hw/arm/max78000fthr.c | 2 +- hw/arm/mcimx6ul-evk.c | 2 +- hw/arm/mcimx7d-sabre.c | 2 +- hw/arm/microbit.c | 2 +- hw/arm/mps2-tz.c | 2 +- hw/arm/mps2.c | 2 +- hw/arm/mps3r.c | 2 +- hw/arm/msf2-som.c | 2 +- hw/arm/musca.c | 2 +- hw/arm/musicpal.c | 2 +- hw/arm/netduino2.c | 2 +- hw/arm/netduinoplus2.c | 2 +- hw/arm/npcm8xx.c | 2 +- hw/arm/npcm8xx_boards.c | 2 +- hw/arm/olimex-stm32-h405.c | 2 +- hw/arm/omap_sx1.c | 2 +- hw/arm/orangepi.c | 2 +- hw/arm/raspi.c | 2 +- hw/arm/raspi4b.c | 2 +- hw/arm/realview.c | 2 +- hw/arm/sabrelite.c | 2 +- hw/arm/sbsa-ref.c | 2 +- hw/arm/stellaris.c | 2 +- hw/arm/stm32vldiscovery.c | 2 +- hw/arm/versatilepb.c | 2 +- hw/arm/vexpress.c | 2 +- hw/arm/xen-pvh.c | 2 +- hw/arm/xilinx_zynq.c | 2 +- hw/arm/xlnx-versal-virt.c | 2 +- hw/arm/xlnx-zcu102.c | 2 +- hw/arm/xlnx-zynqmp.c | 2 +- hw/core/cpu-common.c | 2 +- hw/core/generic-loader.c | 2 +- hw/core/guest-loader.c | 2 +- hw/core/loader.c | 2 +- hw/core/machine-hmp-cmds.c | 2 +- hw/core/machine-qmp-cmds.c | 2 +- hw/core/machine-smp.c | 2 +- hw/core/machine.c | 2 +- hw/core/null-machine.c | 2 +- hw/core/numa.c | 2 +- hw/core/qdev-hotplug.c | 2 +- hw/core/qdev.c | 2 +- hw/cpu/core.c | 2 +- hw/cxl/cxl-host.c | 2 +- hw/hyperv/hv-balloon.c | 2 +- hw/i2c/pm_smbus.c | 2 +- hw/i2c/smbus_eeprom.c | 2 +- hw/i386/vapic.c | 2 +- hw/i386/vmport.c | 2 +- hw/i386/xen/xen-pvh.c | 2 +- hw/intc/apic_common.c | 2 +- hw/intc/loongarch_ipi.c | 2 +- hw/intc/loongarch_pic_kvm.c | 2 +- hw/intc/riscv_aplic.c | 2 +- hw/intc/riscv_imsic.c | 2 +- hw/loongarch/virt.c | 2 +- hw/m68k/an5206.c | 2 +- hw/m68k/mcf5206.c | 2 +- hw/m68k/mcf5208.c | 2 +- hw/m68k/next-cube.c | 2 +- hw/m68k/q800-glue.c | 2 +- hw/m68k/q800.c | 2 +- hw/m68k/virt.c | 2 +- hw/mem/memory-device.c | 2 +- hw/mem/pc-dimm.c | 2 +- hw/microblaze/boot.c | 2 +- hw/microblaze/petalogix_ml605_mmu.c | 2 +- hw/microblaze/petalogix_s3adsp1800_mmu.c | 2 +- hw/microblaze/xlnx-zynqmp-pmu.c | 2 +- hw/mips/boston.c | 2 +- hw/mips/fuloong2e.c | 2 +- hw/mips/jazz.c | 2 +- hw/mips/malta.c | 2 +- hw/nvram/fw_cfg.c | 2 +- hw/openrisc/openrisc_sim.c | 2 +- hw/openrisc/virt.c | 2 +- hw/pci-bridge/pci_expander_bridge.c | 2 +- hw/pci/pci.c | 2 +- hw/ppc/amigaone.c | 2 +- hw/ppc/mac_newworld.c | 2 +- hw/ppc/mac_oldworld.c | 2 +- hw/ppc/pegasos.c | 2 +- hw/ppc/ppc440_bamboo.c | 2 +- hw/ppc/ppe42_machine.c | 2 +- hw/ppc/prep.c | 2 +- hw/ppc/sam460ex.c | 2 +- hw/ppc/virtex_ml507.c | 2 +- hw/remote/vfio-user-obj.c | 2 +- hw/riscv/boot.c | 2 +- hw/riscv/microblaze-v-generic.c | 2 +- hw/riscv/microchip_pfsoc.c | 2 +- hw/riscv/numa.c | 2 +- hw/riscv/opentitan.c | 2 +- hw/riscv/shakti_c.c | 2 +- hw/riscv/sifive_e.c | 2 +- hw/riscv/sifive_u.c | 2 +- hw/riscv/spike.c | 2 +- hw/riscv/virt.c | 2 +- hw/riscv/xiangshan_kmh.c | 2 +- hw/rx/rx-gdbsim.c | 2 +- hw/s390x/cpu-topology.c | 2 +- hw/s390x/ipl.c | 2 +- hw/s390x/s390-pci-bus.c | 2 +- hw/s390x/s390-pci-inst.c | 2 +- hw/s390x/s390-virtio-ccw.c | 2 +- hw/s390x/sclp.c | 2 +- hw/sh4/r2d.c | 2 +- hw/smbios/smbios.c | 2 +- hw/sparc/leon3.c | 2 +- hw/sparc/sun4m.c | 2 +- hw/sparc64/niagara.c | 2 +- hw/sparc64/sparc64.c | 2 +- hw/sparc64/sun4u.c | 2 +- hw/tricore/tricore_testboard.c | 2 +- hw/uefi/ovmf-log.c | 2 +- hw/vfio/igd.c | 2 +- hw/virtio/virtio-balloon.c | 2 +- hw/virtio/virtio-iommu-pci.c | 2 +- hw/virtio/virtio-mem.c | 2 +- hw/virtio/virtio-pci.c | 2 +- hw/vmapple/vmapple.c | 2 +- hw/xen/xen-hvm-common.c | 2 +- hw/xen/xen-legacy-backend.c | 2 +- hw/xen/xen-pvh-common.c | 2 +- hw/xenpv/xen_machine_pv.c | 2 +- hw/xtensa/sim.c | 2 +- hw/xtensa/virt.c | 2 +- hw/xtensa/xtfpga.c | 2 +- migration/migration.c | 2 +- migration/postcopy-ram.c | 2 +- migration/ram.c | 2 +- migration/savevm.c | 2 +- monitor/qemu-config-qmp.c | 2 +- plugins/api-system.c | 2 +- plugins/system.c | 2 +- semihosting/arm-compat-semi.c | 2 +- system/bootdevice.c | 2 +- system/cpus.c | 2 +- system/device_tree.c | 2 +- system/dirtylimit.c | 2 +- system/memory.c | 2 +- system/physmem.c | 2 +- system/qdev-monitor.c | 2 +- system/runstate.c | 2 +- target-info-stub.c | 2 +- target/arm/arm-qmp-cmds.c | 2 +- target/arm/cpu.c | 2 +- target/arm/hvf/hvf.c | 2 +- target/arm/kvm.c | 2 +- target/arm/tcg/cpu32.c | 2 +- target/i386/cpu.c | 2 +- target/i386/hvf/hvf-cpu.c | 2 +- target/i386/kvm/kvm-cpu.c | 2 +- target/i386/kvm/vmsr_energy.c | 2 +- target/i386/whpx/whpx-all.c | 2 +- target/loongarch/kvm/kvm.c | 2 +- target/m68k/m68k-semi.c | 2 +- target/mips/kvm.c | 2 +- target/openrisc/sys_helper.c | 2 +- target/ppc/cpu_init.c | 2 +- target/riscv/kvm/kvm-cpu.c | 2 +- target/riscv/tcg/tcg-cpu.c | 2 +- target/s390x/cpu-system.c | 2 +- target/s390x/mmu_helper.c | 2 +- target/s390x/sigp.c | 2 +- target/s390x/tcg/excp_helper.c | 2 +- target/s390x/tcg/mem_helper.c | 2 +- target/s390x/tcg/misc_helper.c | 2 +- tests/qtest/fuzz/generic_fuzz.c | 2 +- tests/unit/test-smp-parse.c | 2 +- scripts/compare-machine-types.py | 2 +- 248 files changed, 247 insertions(+), 247 deletions(-) rename include/hw/{ =3D> core}/boards.h (100%) diff --git a/MAINTAINERS b/MAINTAINERS index 71286729341..9e9cb839899 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1994,7 +1994,7 @@ F: hw/core/numa.c F: hw/cpu/cluster.c F: qapi/machine.json F: qapi/machine-common.json -F: include/hw/boards.h +F: include/hw/core/boards.h F: include/hw/core/cpu.h F: include/hw/cpu/cluster.h F: include/system/numa.h diff --git a/docs/conf.py b/docs/conf.py index 0c9ec74097f..bc4e9622dc8 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -136,7 +136,7 @@ =20 # These thresholds must match the constants # MACHINE_VER_DELETION_MAJOR & MACHINE_VER_DEPRECATION_MAJOR -# defined in include/hw/boards.h and the introductory text in +# defined in include/hw/core/boards.h and the introductory text in # docs/about/deprecated.rst ver_machine_deprecation_version =3D "%d.%d.0" % (major - 3, minor) ver_machine_deletion_version =3D "%d.%d.0" % (major - 6, minor) diff --git a/hw/alpha/alpha_sys.h b/hw/alpha/alpha_sys.h index a303c584383..6e6691d116a 100644 --- a/hw/alpha/alpha_sys.h +++ b/hw/alpha/alpha_sys.h @@ -5,7 +5,7 @@ =20 #include "target/alpha/cpu-qom.h" #include "hw/pci/pci.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/intc/i8259.h" =20 =20 diff --git a/hw/avr/boot.h b/hw/avr/boot.h index 684d553322b..9eed2055591 100644 --- a/hw/avr/boot.h +++ b/hw/avr/boot.h @@ -11,7 +11,7 @@ #ifndef HW_AVR_BOOT_H #define HW_AVR_BOOT_H =20 -#include "hw/boards.h" +#include "hw/core/boards.h" #include "cpu.h" =20 /** diff --git a/hw/i386/acpi-common.h b/hw/i386/acpi-common.h index e305aaac158..57ef024cd37 100644 --- a/hw/i386/acpi-common.h +++ b/hw/i386/acpi-common.h @@ -1,7 +1,7 @@ #ifndef HW_I386_ACPI_COMMON_H #define HW_I386_ACPI_COMMON_H =20 -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/acpi/bios-linker-loader.h" #include "hw/i386/x86.h" =20 diff --git a/hw/i386/fw_cfg.h b/hw/i386/fw_cfg.h index e560fd7be82..e7e70ff2373 100644 --- a/hw/i386/fw_cfg.h +++ b/hw/i386/fw_cfg.h @@ -9,7 +9,7 @@ #ifndef HW_I386_FW_CFG_H #define HW_I386_FW_CFG_H =20 -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/i386/pc.h" #include "hw/nvram/fw_cfg.h" =20 diff --git a/hw/loongarch/fw_cfg.h b/hw/loongarch/fw_cfg.h index 27ee68286ed..809b06c545e 100644 --- a/hw/loongarch/fw_cfg.h +++ b/hw/loongarch/fw_cfg.h @@ -8,7 +8,7 @@ #ifndef HW_LOONGARCH_FW_CFG_H #define HW_LOONGARCH_FW_CFG_H =20 -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/nvram/fw_cfg.h" =20 FWCfgState *virt_fw_cfg_init(ram_addr_t ram_size, MachineState *ms); diff --git a/hw/mips/fw_cfg.h b/hw/mips/fw_cfg.h index e317d5b9a3e..8a42d98cdf5 100644 --- a/hw/mips/fw_cfg.h +++ b/hw/mips/fw_cfg.h @@ -9,7 +9,7 @@ #ifndef HW_MIPS_FW_CFG_H #define HW_MIPS_FW_CFG_H =20 -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/nvram/fw_cfg.h" =20 /* Data for BIOS to identify machine */ diff --git a/hw/ppc/e500.h b/hw/ppc/e500.h index 00f490519c2..cda539bda18 100644 --- a/hw/ppc/e500.h +++ b/hw/ppc/e500.h @@ -1,7 +1,7 @@ #ifndef PPCE500_H #define PPCE500_H =20 -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/platform-bus.h" #include "qom/object.h" =20 diff --git a/include/hw/acpi/cpu.h b/include/hw/acpi/cpu.h index 32654dc274f..95dc58b5adb 100644 --- a/include/hw/acpi/cpu.h +++ b/include/hw/acpi/cpu.h @@ -16,7 +16,7 @@ #include "hw/qdev-core.h" #include "hw/acpi/acpi.h" #include "hw/acpi/aml-build.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/hotplug.h" =20 #define ACPI_CPU_HOTPLUG_REG_LEN 12 diff --git a/include/hw/arm/aspeed.h b/include/hw/arm/aspeed.h index 714bbd326c4..a00238ed74a 100644 --- a/include/hw/arm/aspeed.h +++ b/include/hw/arm/aspeed.h @@ -9,7 +9,7 @@ #ifndef ARM_ASPEED_H #define ARM_ASPEED_H =20 -#include "hw/boards.h" +#include "hw/core/boards.h" #include "qom/object.h" #include "hw/arm/aspeed_soc.h" =20 diff --git a/include/hw/arm/machines-qom.h b/include/hw/arm/machines-qom.h index 3f64d5eb024..3ed39384e59 100644 --- a/include/hw/arm/machines-qom.h +++ b/include/hw/arm/machines-qom.h @@ -9,7 +9,7 @@ #ifndef HW_ARM_MACHINES_QOM_H #define HW_ARM_MACHINES_QOM_H =20 -#include "hw/boards.h" +#include "hw/core/boards.h" =20 #define TYPE_TARGET_ARM_MACHINE \ "target-info-arm-machine" diff --git a/include/hw/arm/npcm7xx.h b/include/hw/arm/npcm7xx.h index 56536565b74..eef7cc5332b 100644 --- a/include/hw/arm/npcm7xx.h +++ b/include/hw/arm/npcm7xx.h @@ -16,7 +16,7 @@ #ifndef NPCM7XX_H #define NPCM7XX_H =20 -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/adc/npcm7xx_adc.h" #include "hw/core/split-irq.h" #include "hw/cpu/a9mpcore.h" diff --git a/include/hw/arm/raspi_platform.h b/include/hw/arm/raspi_platfor= m.h index 7bc4807fa51..c52b9e298d5 100644 --- a/include/hw/arm/raspi_platform.h +++ b/include/hw/arm/raspi_platform.h @@ -28,7 +28,7 @@ #ifndef HW_ARM_RASPI_PLATFORM_H #define HW_ARM_RASPI_PLATFORM_H =20 -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/arm/boot.h" =20 /* Registered machine type (matches RPi Foundation bootloader and U-Boot) = */ diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h index c77a33f6df2..8694aaa4e2a 100644 --- a/include/hw/arm/virt.h +++ b/include/hw/arm/virt.h @@ -32,7 +32,7 @@ =20 #include "exec/hwaddr.h" #include "qemu/notify.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/acpi/ghes.h" #include "hw/arm/boot.h" #include "hw/arm/bsa.h" diff --git a/include/hw/boards.h b/include/hw/core/boards.h similarity index 100% rename from include/hw/boards.h rename to include/hw/core/boards.h diff --git a/include/hw/cxl/cxl_host.h b/include/hw/cxl/cxl_host.h index cd3c368c86a..21619bb748a 100644 --- a/include/hw/cxl/cxl_host.h +++ b/include/hw/cxl/cxl_host.h @@ -8,7 +8,7 @@ */ =20 #include "hw/cxl/cxl.h" -#include "hw/boards.h" +#include "hw/core/boards.h" =20 #ifndef CXL_HOST_H #define CXL_HOST_H diff --git a/include/hw/i386/microvm.h b/include/hw/i386/microvm.h index e73d1e65de8..6b9a5065272 100644 --- a/include/hw/i386/microvm.h +++ b/include/hw/i386/microvm.h @@ -21,7 +21,7 @@ #include "exec/hwaddr.h" #include "qemu/notify.h" =20 -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/i386/x86.h" #include "hw/acpi/acpi_dev_interface.h" #include "hw/pci-host/gpex.h" diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index e83157ab358..ade2da92bad 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -4,7 +4,7 @@ #include "qemu/notify.h" #include "qapi/qapi-types-common.h" #include "qemu/uuid.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/block/fdc.h" #include "hw/block/flash.h" #include "hw/i386/x86.h" diff --git a/include/hw/i386/x86.h b/include/hw/i386/x86.h index 8755cad50a3..0dffba95f9a 100644 --- a/include/hw/i386/x86.h +++ b/include/hw/i386/x86.h @@ -20,7 +20,7 @@ #include "exec/hwaddr.h" #include "system/memory.h" =20 -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/i386/topology.h" #include "hw/intc/ioapic.h" #include "hw/isa/isa.h" diff --git a/include/hw/loongarch/virt.h b/include/hw/loongarch/virt.h index 27b17558020..8a04dd83146 100644 --- a/include/hw/loongarch/virt.h +++ b/include/hw/loongarch/virt.h @@ -8,7 +8,7 @@ #ifndef HW_LOONGARCH_H #define HW_LOONGARCH_H =20 -#include "hw/boards.h" +#include "hw/core/boards.h" #include "qemu/queue.h" #include "hw/block/flash.h" #include "hw/loongarch/boot.h" diff --git a/include/hw/m68k/q800.h b/include/hw/m68k/q800.h index 9caaed9692b..c92da2e2ac7 100644 --- a/include/hw/m68k/q800.h +++ b/include/hw/m68k/q800.h @@ -23,7 +23,7 @@ #ifndef HW_Q800_H #define HW_Q800_H =20 -#include "hw/boards.h" +#include "hw/core/boards.h" #include "qom/object.h" #include "target/m68k/cpu-qom.h" #include "system/memory.h" diff --git a/include/hw/misc/lasi.h b/include/hw/misc/lasi.h index 0e95be1c32a..5e40c6aebdf 100644 --- a/include/hw/misc/lasi.h +++ b/include/hw/misc/lasi.h @@ -13,7 +13,7 @@ #define LASI_H =20 #include "system/address-spaces.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/sysbus.h" =20 #define TYPE_LASI_CHIP "lasi-chip" diff --git a/include/hw/openrisc/boot.h b/include/hw/openrisc/boot.h index 9b4d88072c4..3c481bdea68 100644 --- a/include/hw/openrisc/boot.h +++ b/include/hw/openrisc/boot.h @@ -20,7 +20,7 @@ #define OPENRISC_BOOT_H =20 #include "exec/cpu-defs.h" -#include "hw/boards.h" +#include "hw/core/boards.h" =20 hwaddr openrisc_load_kernel(ram_addr_t ram_size, const char *kernel_filename, diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h index cbdddfc73cd..a8c1968f281 100644 --- a/include/hw/ppc/pnv.h +++ b/include/hw/ppc/pnv.h @@ -21,7 +21,7 @@ #define PPC_PNV_H =20 #include "cpu.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/sysbus.h" #include "hw/ipmi/ipmi.h" #include "hw/ppc/pnv_pnor.h" diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h index 28cf2723d84..5476ac7ce7b 100644 --- a/include/hw/ppc/spapr.h +++ b/include/hw/ppc/spapr.h @@ -3,7 +3,7 @@ =20 #include "qemu/units.h" #include "system/dma.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/ppc/spapr_drc.h" #include "hw/mem/pc-dimm.h" #include "hw/ppc/spapr_ovec.h" diff --git a/include/hw/ppc/spapr_numa.h b/include/hw/ppc/spapr_numa.h index 7cb33674006..e07edf2ee67 100644 --- a/include/hw/ppc/spapr_numa.h +++ b/include/hw/ppc/spapr_numa.h @@ -13,7 +13,7 @@ #ifndef HW_SPAPR_NUMA_H #define HW_SPAPR_NUMA_H =20 -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/ppc/spapr.h" =20 /* diff --git a/include/hw/remote/machine.h b/include/hw/remote/machine.h index ac32fda3875..748b69c6fc7 100644 --- a/include/hw/remote/machine.h +++ b/include/hw/remote/machine.h @@ -12,7 +12,7 @@ #define REMOTE_MACHINE_H =20 #include "qom/object.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/pci-host/remote.h" #include "io/channel.h" #include "hw/remote/iohub.h" diff --git a/include/hw/riscv/microchip_pfsoc.h b/include/hw/riscv/microchi= p_pfsoc.h index 7ca9b976c10..a30b944afa9 100644 --- a/include/hw/riscv/microchip_pfsoc.h +++ b/include/hw/riscv/microchip_pfsoc.h @@ -22,7 +22,7 @@ #ifndef HW_MICROCHIP_PFSOC_H #define HW_MICROCHIP_PFSOC_H =20 -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/char/mchp_pfsoc_mmuart.h" #include "hw/cpu/cluster.h" #include "hw/dma/sifive_pdma.h" diff --git a/include/hw/riscv/numa.h b/include/hw/riscv/numa.h index 147f01619b9..2d9c41ba818 100644 --- a/include/hw/riscv/numa.h +++ b/include/hw/riscv/numa.h @@ -19,7 +19,7 @@ #ifndef RISCV_NUMA_H #define RISCV_NUMA_H =20 -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/sysbus.h" #include "system/numa.h" =20 diff --git a/include/hw/riscv/opentitan.h b/include/hw/riscv/opentitan.h index 609473d07b4..5b9016e1d89 100644 --- a/include/hw/riscv/opentitan.h +++ b/include/hw/riscv/opentitan.h @@ -24,7 +24,7 @@ #include "hw/char/ibex_uart.h" #include "hw/timer/ibex_timer.h" #include "hw/ssi/ibex_spi_host.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "qom/object.h" =20 #define TYPE_RISCV_IBEX_SOC "riscv.lowrisc.ibex.soc" diff --git a/include/hw/riscv/shakti_c.h b/include/hw/riscv/shakti_c.h index 539fe1156de..f90a3bca8df 100644 --- a/include/hw/riscv/shakti_c.h +++ b/include/hw/riscv/shakti_c.h @@ -20,7 +20,7 @@ #define HW_SHAKTI_C_H =20 #include "hw/riscv/riscv_hart.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/char/shakti_uart.h" =20 #define TYPE_RISCV_SHAKTI_SOC "riscv.shakti.cclass.soc" diff --git a/include/hw/riscv/sifive_e.h b/include/hw/riscv/sifive_e.h index 31180a680e6..4cf902ebc0d 100644 --- a/include/hw/riscv/sifive_e.h +++ b/include/hw/riscv/sifive_e.h @@ -23,7 +23,7 @@ #include "hw/riscv/sifive_cpu.h" #include "hw/gpio/sifive_gpio.h" #include "hw/misc/sifive_e_aon.h" -#include "hw/boards.h" +#include "hw/core/boards.h" =20 #define TYPE_RISCV_E_SOC "riscv.sifive.e.soc" #define RISCV_E_SOC(obj) \ diff --git a/include/hw/riscv/sifive_u.h b/include/hw/riscv/sifive_u.h index 0696f859427..e4c9860d501 100644 --- a/include/hw/riscv/sifive_u.h +++ b/include/hw/riscv/sifive_u.h @@ -19,7 +19,7 @@ #ifndef HW_SIFIVE_U_H #define HW_SIFIVE_U_H =20 -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/cpu/cluster.h" #include "hw/dma/sifive_pdma.h" #include "hw/net/cadence_gem.h" diff --git a/include/hw/riscv/spike.h b/include/hw/riscv/spike.h index 0c2a2237630..acd41e90583 100644 --- a/include/hw/riscv/spike.h +++ b/include/hw/riscv/spike.h @@ -19,7 +19,7 @@ #ifndef HW_RISCV_SPIKE_H #define HW_RISCV_SPIKE_H =20 -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/riscv/riscv_hart.h" #include "hw/sysbus.h" =20 diff --git a/include/hw/riscv/virt.h b/include/hw/riscv/virt.h index 7b4c2c8b7de..806b78cc639 100644 --- a/include/hw/riscv/virt.h +++ b/include/hw/riscv/virt.h @@ -19,7 +19,7 @@ #ifndef HW_RISCV_VIRT_H #define HW_RISCV_VIRT_H =20 -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/riscv/riscv_hart.h" #include "hw/sysbus.h" #include "hw/block/flash.h" diff --git a/include/hw/riscv/xiangshan_kmh.h b/include/hw/riscv/xiangshan_= kmh.h index c5dc6b1a9a7..5a5af93dffd 100644 --- a/include/hw/riscv/xiangshan_kmh.h +++ b/include/hw/riscv/xiangshan_kmh.h @@ -10,7 +10,7 @@ #ifndef HW_XIANGSHAN_KMH_H #define HW_XIANGSHAN_KMH_H =20 -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/riscv/riscv_hart.h" =20 #define XIANGSHAN_KMH_MAX_CPUS 16 diff --git a/include/hw/s390x/cpu-topology.h b/include/hw/s390x/cpu-topolog= y.h index d5e9aa43f8f..2d5a5fa3646 100644 --- a/include/hw/s390x/cpu-topology.h +++ b/include/hw/s390x/cpu-topology.h @@ -12,7 +12,7 @@ #ifndef CONFIG_USER_ONLY =20 #include "qemu/queue.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "qapi/qapi-types-machine-s390x.h" =20 #define S390_TOPOLOGY_CPU_IFL 0x03 diff --git a/include/hw/s390x/s390-virtio-ccw.h b/include/hw/s390x/s390-vir= tio-ccw.h index 526078a4e2b..f1f06119d6d 100644 --- a/include/hw/s390x/s390-virtio-ccw.h +++ b/include/hw/s390x/s390-virtio-ccw.h @@ -11,7 +11,7 @@ #ifndef HW_S390X_S390_VIRTIO_CCW_H #define HW_S390X_S390_VIRTIO_CCW_H =20 -#include "hw/boards.h" +#include "hw/core/boards.h" #include "qom/object.h" #include "hw/s390x/sclp.h" =20 diff --git a/include/hw/tricore/triboard.h b/include/hw/tricore/triboard.h index ca49a0c7520..c6be4dc3f34 100644 --- a/include/hw/tricore/triboard.h +++ b/include/hw/tricore/triboard.h @@ -19,7 +19,7 @@ */ =20 #include "qapi/error.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/system.h" #include "system/address-spaces.h" #include "qom/object.h" diff --git a/include/hw/xen/xen-pvh-common.h b/include/hw/xen/xen-pvh-commo= n.h index 5db83d88ecc..0ed07c56947 100644 --- a/include/hw/xen/xen-pvh-common.h +++ b/include/hw/xen/xen-pvh-common.h @@ -11,7 +11,7 @@ =20 #include "system/memory.h" #include "qom/object.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/pci-host/gpex.h" #include "hw/xen/xen-hvm-common.h" =20 diff --git a/include/system/kvm_int.h b/include/system/kvm_int.h index 9247493b029..baeb166d393 100644 --- a/include/system/kvm_int.h +++ b/include/system/kvm_int.h @@ -15,7 +15,7 @@ #include "qemu/queue.h" #include "system/kvm.h" #include "accel/accel-ops.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/i386/topology.h" #include "io/channel-socket.h" =20 diff --git a/accel/accel-system.c b/accel/accel-system.c index 1e97c64fdca..150af05bf5b 100644 --- a/accel/accel-system.c +++ b/accel/accel-system.c @@ -27,7 +27,7 @@ #include "qemu/accel.h" #include "qapi/qapi-commands-accelerator.h" #include "monitor/monitor.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/core/cpu.h" #include "accel/accel-ops.h" #include "accel/accel-cpu-ops.h" diff --git a/accel/hvf/hvf-all.c b/accel/hvf/hvf-all.c index 0a4b498e836..77f4e4e4f30 100644 --- a/accel/hvf/hvf-all.c +++ b/accel/hvf/hvf-all.c @@ -16,7 +16,7 @@ #include "system/hvf.h" #include "system/hvf_int.h" #include "hw/core/cpu.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "trace.h" =20 bool hvf_allowed; diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 28006d73c51..02b78717b1f 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -53,7 +53,7 @@ #include "system/dirtylimit.h" #include "qemu/range.h" =20 -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/stats.h" =20 /* This check must be after config-host.h is included */ diff --git a/accel/mshv/mshv-all.c b/accel/mshv/mshv-all.c index 80428d130d5..47c67ef8cc9 100644 --- a/accel/mshv/mshv-all.c +++ b/accel/mshv/mshv-all.c @@ -19,7 +19,7 @@ #include "qemu/event_notifier.h" #include "qemu/module.h" #include "qemu/main-loop.h" -#include "hw/boards.h" +#include "hw/core/boards.h" =20 #include "hw/hyperv/hvhdk.h" #include "hw/hyperv/hvhdk_mini.h" diff --git a/accel/tcg/tcg-accel-ops-mttcg.c b/accel/tcg/tcg-accel-ops-mttc= g.c index cf1ee7ac258..89299829c3a 100644 --- a/accel/tcg/tcg-accel-ops-mttcg.c +++ b/accel/tcg/tcg-accel-ops-mttcg.c @@ -30,7 +30,7 @@ #include "qemu/main-loop.h" #include "qemu/notify.h" #include "qemu/guest-random.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "tcg/startup.h" #include "tcg-accel-ops.h" #include "tcg-accel-ops-mttcg.h" diff --git a/accel/tcg/tcg-all.c b/accel/tcg/tcg-all.c index 18ea0c58b0b..8eb4a6b89e8 100644 --- a/accel/tcg/tcg-all.c +++ b/accel/tcg/tcg-all.c @@ -37,7 +37,7 @@ #include "qemu/units.h" #include "qemu/target-info.h" #ifndef CONFIG_USER_ONLY -#include "hw/boards.h" +#include "hw/core/boards.h" #include "exec/tb-flush.h" #include "system/runstate.h" #endif diff --git a/accel/xen/xen-all.c b/accel/xen/xen-all.c index 97377d67d1c..bb2d02cb221 100644 --- a/accel/xen/xen-all.c +++ b/accel/xen/xen-all.c @@ -26,7 +26,7 @@ #include "system/runstate.h" #include "migration/misc.h" #include "migration/global_state.h" -#include "hw/boards.h" +#include "hw/core/boards.h" =20 bool xen_allowed; =20 diff --git a/backends/hostmem.c b/backends/hostmem.c index 35734d6f4d1..d5834916648 100644 --- a/backends/hostmem.c +++ b/backends/hostmem.c @@ -12,7 +12,7 @@ =20 #include "qemu/osdep.h" #include "system/hostmem.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "qapi/error.h" #include "qapi/qapi-builtin-visit.h" #include "qapi/visitor.h" diff --git a/block/monitor/block-hmp-cmds.c b/block/monitor/block-hmp-cmds.c index 3640d1f3dce..3391cee4d21 100644 --- a/block/monitor/block-hmp-cmds.c +++ b/block/monitor/block-hmp-cmds.c @@ -36,7 +36,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/block-backend.h" #include "system/blockdev.h" #include "qapi/qapi-commands-block.h" diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c index 5b2fc06e58d..1f8cd118924 100644 --- a/gdbstub/gdbstub.c +++ b/gdbstub/gdbstub.c @@ -38,7 +38,7 @@ #include "gdbstub/user.h" #else #include "hw/cpu/cluster.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #endif #include "hw/core/cpu.h" =20 diff --git a/gdbstub/system.c b/gdbstub/system.c index e2220c1ae48..79f80256e3a 100644 --- a/gdbstub/system.c +++ b/gdbstub/system.c @@ -25,7 +25,7 @@ #include "system/replay.h" #include "hw/core/cpu.h" #include "hw/cpu/cluster.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "chardev/char.h" #include "chardev/char-fe.h" #include "monitor/monitor.h" diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c index 2d5826a8f13..dad4cfcc7d8 100644 --- a/hw/acpi/aml-build.c +++ b/hw/acpi/aml-build.c @@ -25,7 +25,7 @@ #include "qemu/bswap.h" #include "qemu/bitops.h" #include "system/numa.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/acpi/tpm.h" #include "hw/pci/pci_host.h" #include "hw/pci/pci_bus.h" diff --git a/hw/acpi/memory_hotplug.c b/hw/acpi/memory_hotplug.c index 9b974b7274a..2f17d45907d 100644 --- a/hw/acpi/memory_hotplug.c +++ b/hw/acpi/memory_hotplug.c @@ -1,7 +1,7 @@ #include "qemu/osdep.h" #include "hw/acpi/memory_hotplug.h" #include "hw/mem/pc-dimm.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/qdev-core.h" #include "migration/vmstate.h" #include "trace.h" diff --git a/hw/acpi/pci.c b/hw/acpi/pci.c index 2228f1245e2..8c7ed104796 100644 --- a/hw/acpi/pci.c +++ b/hw/acpi/pci.c @@ -27,7 +27,7 @@ #include "qemu/error-report.h" #include "qom/object_interfaces.h" #include "qapi/error.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/acpi/aml-build.h" #include "hw/acpi/pci.h" #include "hw/pci/pci_bridge.h" diff --git a/hw/arm/allwinner-a10.c b/hw/arm/allwinner-a10.c index dc910d4177b..1886df03839 100644 --- a/hw/arm/allwinner-a10.c +++ b/hw/arm/allwinner-a10.c @@ -24,7 +24,7 @@ #include "hw/arm/allwinner-a10.h" #include "hw/misc/unimp.h" #include "system/system.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/usb/hcd-ohci.h" #include "hw/loader.h" #include "target/arm/cpu-qom.h" diff --git a/hw/arm/allwinner-r40.c b/hw/arm/allwinner-r40.c index c8eda39957c..313bd21fad8 100644 --- a/hw/arm/allwinner-r40.c +++ b/hw/arm/allwinner-r40.c @@ -22,7 +22,7 @@ #include "qemu/error-report.h" #include "qemu/module.h" #include "qemu/units.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/qdev-core.h" #include "hw/sysbus.h" #include "hw/char/serial-mm.h" diff --git a/hw/arm/aspeed_ast27x0-fc.c b/hw/arm/aspeed_ast27x0-fc.c index b96ef3f97ab..a0cbe50d78d 100644 --- a/hw/arm/aspeed_ast27x0-fc.c +++ b/hw/arm/aspeed_ast27x0-fc.c @@ -15,7 +15,7 @@ #include "system/block-backend.h" #include "system/system.h" #include "hw/arm/aspeed.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/qdev-clock.h" #include "hw/arm/aspeed_soc.h" #include "hw/loader.h" diff --git a/hw/arm/b-l475e-iot01a.c b/hw/arm/b-l475e-iot01a.c index f1fbc774e52..a724b5fdb20 100644 --- a/hw/arm/b-l475e-iot01a.c +++ b/hw/arm/b-l475e-iot01a.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/qdev-properties.h" #include "qemu/error-report.h" #include "hw/arm/boot.h" diff --git a/hw/arm/bananapi_m2u.c b/hw/arm/bananapi_m2u.c index 0f6d98684b9..fd347e18d26 100644 --- a/hw/arm/bananapi_m2u.c +++ b/hw/arm/bananapi_m2u.c @@ -22,7 +22,7 @@ #include "system/address-spaces.h" #include "qapi/error.h" #include "qemu/error-report.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/i2c/i2c.h" #include "hw/qdev-properties.h" #include "hw/arm/allwinner-r40.h" diff --git a/hw/arm/boot.c b/hw/arm/boot.c index b91660208f5..9b6eaf642e9 100644 --- a/hw/arm/boot.c +++ b/hw/arm/boot.c @@ -22,7 +22,7 @@ #include "system/system.h" #include "system/memory.h" #include "system/numa.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/reset.h" #include "hw/loader.h" #include "hw/mem/memory-device.h" diff --git a/hw/arm/collie.c b/hw/arm/collie.c index 5a80b7a2238..73c40bc57da 100644 --- a/hw/arm/collie.c +++ b/hw/arm/collie.c @@ -12,7 +12,7 @@ #include "qemu/units.h" #include "qemu/cutils.h" #include "hw/sysbus.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "strongarm.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" diff --git a/hw/arm/cubieboard.c b/hw/arm/cubieboard.c index aa51c0a7034..9fe282342ab 100644 --- a/hw/arm/cubieboard.c +++ b/hw/arm/cubieboard.c @@ -18,7 +18,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qemu/error-report.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/qdev-properties.h" #include "hw/arm/allwinner-a10.h" #include "hw/arm/boot.h" diff --git a/hw/arm/digic_boards.c b/hw/arm/digic_boards.c index 23b596d0c81..d986e8f7a24 100644 --- a/hw/arm/digic_boards.c +++ b/hw/arm/digic_boards.c @@ -26,7 +26,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qemu/datadir.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "qemu/error-report.h" #include "hw/arm/digic.h" #include "hw/arm/machines-qom.h" diff --git a/hw/arm/exynos4_boards.c b/hw/arm/exynos4_boards.c index 89f0e944632..66af0e2376d 100644 --- a/hw/arm/exynos4_boards.c +++ b/hw/arm/exynos4_boards.c @@ -33,7 +33,7 @@ #include "hw/arm/exynos4210.h" #include "hw/net/lan9118.h" #include "hw/qdev-properties.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/irq.h" #include "target/arm/cpu-qom.h" =20 diff --git a/hw/arm/fby35.c b/hw/arm/fby35.c index e61a6438fef..3e036cfd2ba 100644 --- a/hw/arm/fby35.c +++ b/hw/arm/fby35.c @@ -10,7 +10,7 @@ #include "qapi/error.h" #include "system/system.h" #include "system/block-backend.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/qdev-clock.h" #include "hw/arm/aspeed_soc.h" #include "hw/arm/boot.h" diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c index f3a60022d84..50b34139fa2 100644 --- a/hw/arm/fsl-imx6.c +++ b/hw/arm/fsl-imx6.c @@ -24,7 +24,7 @@ #include "hw/arm/fsl-imx6.h" #include "hw/misc/unimp.h" #include "hw/usb/imx-usb-phy.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/qdev-properties.h" #include "system/system.h" #include "chardev/char.h" diff --git a/hw/arm/fsl-imx6ul.c b/hw/arm/fsl-imx6ul.c index 883c7fc534f..225e1791263 100644 --- a/hw/arm/fsl-imx6ul.c +++ b/hw/arm/fsl-imx6ul.c @@ -21,7 +21,7 @@ #include "hw/arm/fsl-imx6ul.h" #include "hw/misc/unimp.h" #include "hw/usb/imx-usb-phy.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/system.h" #include "qemu/error-report.h" #include "qemu/module.h" diff --git a/hw/arm/fsl-imx7.c b/hw/arm/fsl-imx7.c index 02f7602077f..9a230d222fd 100644 --- a/hw/arm/fsl-imx7.c +++ b/hw/arm/fsl-imx7.c @@ -22,7 +22,7 @@ #include "qapi/error.h" #include "hw/arm/fsl-imx7.h" #include "hw/misc/unimp.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/system.h" #include "qemu/error-report.h" #include "qemu/module.h" diff --git a/hw/arm/fsl-imx8mp.c b/hw/arm/fsl-imx8mp.c index ee6f3e42d23..79f91427772 100644 --- a/hw/arm/fsl-imx8mp.c +++ b/hw/arm/fsl-imx8mp.c @@ -13,7 +13,7 @@ #include "hw/arm/bsa.h" #include "hw/arm/fsl-imx8mp.h" #include "hw/misc/unimp.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/kvm.h" #include "system/system.h" #include "target/arm/cpu.h" diff --git a/hw/arm/highbank.c b/hw/arm/highbank.c index bd60ab26898..82fa9647119 100644 --- a/hw/arm/highbank.c +++ b/hw/arm/highbank.c @@ -28,7 +28,7 @@ #include "net/net.h" #include "system/runstate.h" #include "system/system.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "qemu/error-report.h" #include "hw/char/pl011.h" #include "hw/ide/ahci-sysbus.h" diff --git a/hw/arm/imx25_pdk.c b/hw/arm/imx25_pdk.c index 71a46062032..21860ed14d3 100644 --- a/hw/arm/imx25_pdk.c +++ b/hw/arm/imx25_pdk.c @@ -29,7 +29,7 @@ #include "hw/arm/fsl-imx25.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "qemu/error-report.h" #include "system/qtest.h" #include "hw/i2c/i2c.h" diff --git a/hw/arm/imx8mp-evk.c b/hw/arm/imx8mp-evk.c index 44e06019670..ed8c52e1bd2 100644 --- a/hw/arm/imx8mp-evk.c +++ b/hw/arm/imx8mp-evk.c @@ -11,7 +11,7 @@ #include "hw/arm/boot.h" #include "hw/arm/fsl-imx8mp.h" #include "hw/arm/machines-qom.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/qdev-properties.h" #include "system/kvm.h" #include "system/qtest.h" diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c index b030710b29d..436fcdd5101 100644 --- a/hw/arm/integratorcp.c +++ b/hw/arm/integratorcp.c @@ -11,7 +11,7 @@ #include "qapi/error.h" #include "hw/sysbus.h" #include "migration/vmstate.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" #include "hw/misc/arm_integrator_debug.h" diff --git a/hw/arm/kzm.c b/hw/arm/kzm.c index b446dc15470..168ecf35d09 100644 --- a/hw/arm/kzm.c +++ b/hw/arm/kzm.c @@ -18,7 +18,7 @@ #include "hw/arm/fsl-imx31.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "qemu/error-report.h" #include "system/address-spaces.h" #include "net/net.h" diff --git a/hw/arm/max78000fthr.c b/hw/arm/max78000fthr.c index c4f6b5b1b04..e4ceb7efcd5 100644 --- a/hw/arm/max78000fthr.c +++ b/hw/arm/max78000fthr.c @@ -8,7 +8,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/qdev-properties.h" #include "hw/qdev-clock.h" #include "qemu/error-report.h" diff --git a/hw/arm/mcimx6ul-evk.c b/hw/arm/mcimx6ul-evk.c index f47a265650e..5fe6526ba0a 100644 --- a/hw/arm/mcimx6ul-evk.c +++ b/hw/arm/mcimx6ul-evk.c @@ -15,7 +15,7 @@ #include "hw/arm/fsl-imx6ul.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/qdev-properties.h" #include "qemu/error-report.h" #include "system/qtest.h" diff --git a/hw/arm/mcimx7d-sabre.c b/hw/arm/mcimx7d-sabre.c index fc8f35c5810..b1b56b920d4 100644 --- a/hw/arm/mcimx7d-sabre.c +++ b/hw/arm/mcimx7d-sabre.c @@ -17,7 +17,7 @@ #include "hw/arm/fsl-imx7.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/qdev-properties.h" #include "qemu/error-report.h" #include "system/qtest.h" diff --git a/hw/arm/microbit.c b/hw/arm/microbit.c index 0f3161fd931..cd035fffc76 100644 --- a/hw/arm/microbit.c +++ b/hw/arm/microbit.c @@ -10,7 +10,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" #include "system/system.h" diff --git a/hw/arm/mps2-tz.c b/hw/arm/mps2-tz.c index 55dd68c57e1..3188caf2228 100644 --- a/hw/arm/mps2-tz.c +++ b/hw/arm/mps2-tz.c @@ -54,7 +54,7 @@ #include "hw/arm/armv7m.h" #include "hw/arm/machines-qom.h" #include "hw/or-irq.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/address-spaces.h" #include "system/system.h" #include "system/reset.h" diff --git a/hw/arm/mps2.c b/hw/arm/mps2.c index fa4b200577f..bf5e07019ff 100644 --- a/hw/arm/mps2.c +++ b/hw/arm/mps2.c @@ -33,7 +33,7 @@ #include "hw/arm/armv7m.h" #include "hw/arm/machines-qom.h" #include "hw/or-irq.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/address-spaces.h" #include "system/system.h" #include "hw/qdev-properties.h" diff --git a/hw/arm/mps3r.c b/hw/arm/mps3r.c index fcb8777cafd..b63002f4835 100644 --- a/hw/arm/mps3r.c +++ b/hw/arm/mps3r.c @@ -31,7 +31,7 @@ #include "system/address-spaces.h" #include "cpu.h" #include "system/system.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/or-irq.h" #include "hw/qdev-clock.h" #include "hw/qdev-properties.h" diff --git a/hw/arm/msf2-som.c b/hw/arm/msf2-som.c index c26feccb15b..78d98c4a407 100644 --- a/hw/arm/msf2-som.c +++ b/hw/arm/msf2-som.c @@ -29,7 +29,7 @@ #include "qemu/units.h" #include "qapi/error.h" #include "qemu/error-report.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/qdev-properties.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" diff --git a/hw/arm/musca.c b/hw/arm/musca.c index a3494c96bf4..7b30d9bd446 100644 --- a/hw/arm/musca.c +++ b/hw/arm/musca.c @@ -27,7 +27,7 @@ #include "hw/arm/boot.h" #include "hw/arm/armsse.h" #include "hw/arm/machines-qom.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/char/pl011.h" #include "hw/core/split-irq.h" #include "hw/misc/tz-mpc.h" diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c index 675707691c0..3e624540960 100644 --- a/hw/arm/musicpal.c +++ b/hw/arm/musicpal.c @@ -18,7 +18,7 @@ #include "hw/arm/machines-qom.h" #include "net/net.h" #include "system/system.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/char/serial-mm.h" #include "qemu/timer.h" #include "hw/ptimer.h" diff --git a/hw/arm/netduino2.c b/hw/arm/netduino2.c index bce0d6f87a9..1657612fe77 100644 --- a/hw/arm/netduino2.c +++ b/hw/arm/netduino2.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/qdev-properties.h" #include "hw/qdev-clock.h" #include "qemu/error-report.h" diff --git a/hw/arm/netduinoplus2.c b/hw/arm/netduinoplus2.c index 8594081fe47..746a3deef8e 100644 --- a/hw/arm/netduinoplus2.c +++ b/hw/arm/netduinoplus2.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/qdev-properties.h" #include "hw/qdev-clock.h" #include "qemu/error-report.h" diff --git a/hw/arm/npcm8xx.c b/hw/arm/npcm8xx.c index a276fea6985..3ad7643b4bd 100644 --- a/hw/arm/npcm8xx.c +++ b/hw/arm/npcm8xx.c @@ -16,7 +16,7 @@ =20 #include "qemu/osdep.h" =20 -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/arm/boot.h" #include "hw/arm/bsa.h" #include "hw/arm/npcm8xx.h" diff --git a/hw/arm/npcm8xx_boards.c b/hw/arm/npcm8xx_boards.c index b179eadef53..f775b324027 100644 --- a/hw/arm/npcm8xx_boards.c +++ b/hw/arm/npcm8xx_boards.c @@ -17,7 +17,7 @@ #include "qemu/osdep.h" =20 #include "chardev/char.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/arm/npcm8xx.h" #include "hw/arm/machines-qom.h" #include "hw/core/cpu.h" diff --git a/hw/arm/olimex-stm32-h405.c b/hw/arm/olimex-stm32-h405.c index c5f60383335..d15545ff07a 100644 --- a/hw/arm/olimex-stm32-h405.c +++ b/hw/arm/olimex-stm32-h405.c @@ -25,7 +25,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/qdev-properties.h" #include "hw/qdev-clock.h" #include "qemu/error-report.h" diff --git a/hw/arm/omap_sx1.c b/hw/arm/omap_sx1.c index 730525be2dc..d858dab3253 100644 --- a/hw/arm/omap_sx1.c +++ b/hw/arm/omap_sx1.c @@ -30,7 +30,7 @@ #include "qapi/error.h" #include "ui/console.h" #include "hw/arm/omap.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" #include "hw/block/flash.h" diff --git a/hw/arm/orangepi.c b/hw/arm/orangepi.c index 3e237e78fa1..c0dd32f13ce 100644 --- a/hw/arm/orangepi.c +++ b/hw/arm/orangepi.c @@ -22,7 +22,7 @@ #include "system/address-spaces.h" #include "qapi/error.h" #include "qemu/error-report.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/qdev-properties.h" #include "hw/arm/allwinner-h3.h" #include "hw/arm/boot.h" diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c index 81d2fa1b67d..910c18213a5 100644 --- a/hw/arm/raspi.c +++ b/hw/arm/raspi.c @@ -22,7 +22,7 @@ #include "hw/arm/raspi_platform.h" #include "hw/registerfields.h" #include "qemu/error-report.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/loader.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" diff --git a/hw/arm/raspi4b.c b/hw/arm/raspi4b.c index 0422ae0f00b..058df2c4c96 100644 --- a/hw/arm/raspi4b.c +++ b/hw/arm/raspi4b.c @@ -17,7 +17,7 @@ #include "hw/registerfields.h" #include "qemu/error-report.h" #include "system/device_tree.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/loader.h" #include "hw/arm/boot.h" #include "qom/object.h" diff --git a/hw/arm/realview.c b/hw/arm/realview.c index d8327a50d23..97008490f6a 100644 --- a/hw/arm/realview.c +++ b/hw/arm/realview.c @@ -21,7 +21,7 @@ #include "hw/qdev-core.h" #include "net/net.h" #include "system/system.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/i2c/i2c.h" #include "qemu/error-report.h" #include "hw/char/pl011.h" diff --git a/hw/arm/sabrelite.c b/hw/arm/sabrelite.c index 5b4ab7d77a5..99cbd5e2fea 100644 --- a/hw/arm/sabrelite.c +++ b/hw/arm/sabrelite.c @@ -15,7 +15,7 @@ #include "hw/arm/fsl-imx6.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/qdev-properties.h" #include "qemu/error-report.h" #include "system/qtest.h" diff --git a/hw/arm/sbsa-ref.c b/hw/arm/sbsa-ref.c index 3ba69d37d79..32d4c52bf50 100644 --- a/hw/arm/sbsa-ref.c +++ b/hw/arm/sbsa-ref.c @@ -37,7 +37,7 @@ #include "hw/arm/smmuv3.h" #include "hw/arm/machines-qom.h" #include "hw/block/flash.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/ide/ide-bus.h" #include "hw/ide/ahci-sysbus.h" #include "hw/intc/arm_gicv3_common.h" diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c index 8113bbd5d8b..d1cbf43777e 100644 --- a/hw/arm/stellaris.c +++ b/hw/arm/stellaris.c @@ -19,7 +19,7 @@ #include "qemu/timer.h" #include "hw/i2c/i2c.h" #include "net/net.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "qemu/log.h" #include "system/address-spaces.h" #include "system/system.h" diff --git a/hw/arm/stm32vldiscovery.c b/hw/arm/stm32vldiscovery.c index c11029f8bd4..4843c5565b6 100644 --- a/hw/arm/stm32vldiscovery.c +++ b/hw/arm/stm32vldiscovery.c @@ -25,7 +25,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/qdev-properties.h" #include "hw/qdev-clock.h" #include "qemu/error-report.h" diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c index c3c99a2da68..dd1047f6c62 100644 --- a/hw/arm/versatilepb.c +++ b/hw/arm/versatilepb.c @@ -20,7 +20,7 @@ #include "hw/i2c/i2c.h" #include "hw/i2c/arm_sbcon_i2c.h" #include "hw/irq.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/block/flash.h" #include "qemu/error-report.h" #include "hw/char/pl011.h" diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c index 3492e03a656..2f61ad0dd62 100644 --- a/hw/arm/vexpress.c +++ b/hw/arm/vexpress.c @@ -32,7 +32,7 @@ #include "hw/i2c/i2c.h" #include "net/net.h" #include "system/system.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/loader.h" #include "hw/block/flash.h" #include "system/device_tree.h" diff --git a/hw/arm/xen-pvh.c b/hw/arm/xen-pvh.c index 86a02966161..10cac28a910 100644 --- a/hw/arm/xen-pvh.c +++ b/hw/arm/xen-pvh.c @@ -7,7 +7,7 @@ #include "qemu/osdep.h" #include "qemu/error-report.h" #include "qapi/qapi-commands-migration.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/system.h" #include "hw/xen/xen-pvh-common.h" #include "hw/arm/machines-qom.h" diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c index c82edd3bed1..a6dc644d0bd 100644 --- a/hw/arm/xilinx_zynq.c +++ b/hw/arm/xilinx_zynq.c @@ -23,7 +23,7 @@ #include "hw/arm/machines-qom.h" #include "net/net.h" #include "system/system.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/block/flash.h" #include "hw/loader.h" #include "hw/adc/zynq-xadc.h" diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 5e05521a572..e82ac8e3538 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -16,7 +16,7 @@ #include "system/device_tree.h" #include "system/address-spaces.h" #include "hw/block/flash.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/sysbus.h" #include "hw/arm/fdt.h" #include "hw/arm/xlnx-versal.h" diff --git a/hw/arm/xlnx-zcu102.c b/hw/arm/xlnx-zcu102.c index 06a3d7dfe7f..3ba2736bab3 100644 --- a/hw/arm/xlnx-zcu102.c +++ b/hw/arm/xlnx-zcu102.c @@ -20,7 +20,7 @@ #include "hw/arm/xlnx-zynqmp.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "qemu/error-report.h" #include "qemu/log.h" #include "system/device_tree.h" diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c index ffed6e5126e..5f0e34ccecf 100644 --- a/hw/arm/xlnx-zynqmp.c +++ b/hw/arm/xlnx-zynqmp.c @@ -21,7 +21,7 @@ #include "hw/arm/xlnx-zynqmp.h" #include "hw/intc/arm_gic_common.h" #include "hw/misc/unimp.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/system.h" #include "target/arm/cpu-qom.h" #include "target/arm/gtimer.h" diff --git a/hw/core/cpu-common.c b/hw/core/cpu-common.c index 8c306c89e45..fb8421184d5 100644 --- a/hw/core/cpu-common.c +++ b/hw/core/cpu-common.c @@ -31,7 +31,7 @@ #include "exec/log.h" #include "exec/gdbstub.h" #include "system/tcg.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/qdev-properties.h" #include "trace.h" #ifdef CONFIG_PLUGIN diff --git a/hw/core/generic-loader.c b/hw/core/generic-loader.c index 433efb73872..be4fe867e4d 100644 --- a/hw/core/generic-loader.c +++ b/hw/core/generic-loader.c @@ -33,7 +33,7 @@ #include "qemu/osdep.h" #include "system/dma.h" #include "system/reset.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/loader.h" #include "hw/qdev-properties.h" #include "qapi/error.h" diff --git a/hw/core/guest-loader.c b/hw/core/guest-loader.c index 618455e5566..07c36464047 100644 --- a/hw/core/guest-loader.c +++ b/hw/core/guest-loader.c @@ -33,7 +33,7 @@ #include "qemu/module.h" #include "guest-loader.h" #include "system/device_tree.h" -#include "hw/boards.h" +#include "hw/core/boards.h" =20 /* * Insert some FDT nodes for the loaded blob. diff --git a/hw/core/loader.c b/hw/core/loader.c index 590c5b02aa1..385730e8ef5 100644 --- a/hw/core/loader.c +++ b/hw/core/loader.c @@ -61,7 +61,7 @@ #include "hw/loader.h" #include "hw/nvram/fw_cfg.h" #include "system/memory.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "qemu/cutils.h" #include "system/runstate.h" #include "tcg/debuginfo.h" diff --git a/hw/core/machine-hmp-cmds.c b/hw/core/machine-hmp-cmds.c index 74a56600be8..46846f741a2 100644 --- a/hw/core/machine-hmp-cmds.c +++ b/hw/core/machine-hmp-cmds.c @@ -24,7 +24,7 @@ #include "qapi/string-output-visitor.h" #include "qemu/error-report.h" #include "system/numa.h" -#include "hw/boards.h" +#include "hw/core/boards.h" =20 void hmp_info_cpus(Monitor *mon, const QDict *qdict) { diff --git a/hw/core/machine-qmp-cmds.c b/hw/core/machine-qmp-cmds.c index 28dfd3e15bd..d23466177d8 100644 --- a/hw/core/machine-qmp-cmds.c +++ b/hw/core/machine-qmp-cmds.c @@ -9,7 +9,7 @@ =20 #include "qemu/osdep.h" #include "hw/acpi/vmgenid.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/intc/intc.h" #include "hw/mem/memory-device.h" #include "qapi/error.h" diff --git a/hw/core/machine-smp.c b/hw/core/machine-smp.c index 0be0ac044c2..189c70015fd 100644 --- a/hw/core/machine-smp.c +++ b/hw/core/machine-smp.c @@ -18,7 +18,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "qapi/error.h" #include "qemu/error-report.h" =20 diff --git a/hw/core/machine.c b/hw/core/machine.c index 27372bb01ef..1106f86bf5b 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -14,7 +14,7 @@ #include "qemu/units.h" #include "qemu/accel.h" #include "system/replay.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/loader.h" #include "qemu/error-report.h" #include "qapi/error.h" diff --git a/hw/core/null-machine.c b/hw/core/null-machine.c index 67b769bd3e0..c52b022d3aa 100644 --- a/hw/core/null-machine.c +++ b/hw/core/null-machine.c @@ -13,7 +13,7 @@ =20 #include "qemu/osdep.h" #include "qemu/error-report.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/address-spaces.h" #include "hw/core/cpu.h" #include "hw/arm/machines-qom.h" diff --git a/hw/core/numa.c b/hw/core/numa.c index 218576f7455..fa78dacb6be 100644 --- a/hw/core/numa.c +++ b/hw/core/numa.c @@ -35,7 +35,7 @@ #include "system/qtest.h" #include "hw/core/cpu.h" #include "hw/mem/pc-dimm.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/mem/memory-device.h" #include "qemu/option.h" #include "qemu/config-file.h" diff --git a/hw/core/qdev-hotplug.c b/hw/core/qdev-hotplug.c index ff176dc1bb3..d2c39806c53 100644 --- a/hw/core/qdev-hotplug.c +++ b/hw/core/qdev-hotplug.c @@ -11,7 +11,7 @@ =20 #include "qemu/osdep.h" #include "hw/qdev-core.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "qapi/error.h" =20 HotplugHandler *qdev_get_machine_hotplug_handler(DeviceState *dev) diff --git a/hw/core/qdev.c b/hw/core/qdev.c index fab42a72705..423a3a1d660 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -34,7 +34,7 @@ #include "qemu/option.h" #include "hw/irq.h" #include "hw/qdev-properties.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/sysbus.h" #include "hw/qdev-clock.h" #include "migration/vmstate.h" diff --git a/hw/cpu/core.c b/hw/cpu/core.c index 5cb2e9a7f54..26e488f3d8e 100644 --- a/hw/cpu/core.c +++ b/hw/cpu/core.c @@ -9,7 +9,7 @@ =20 #include "qemu/osdep.h" =20 -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/cpu/core.h" #include "qapi/error.h" #include "qapi/visitor.h" diff --git a/hw/cxl/cxl-host.c b/hw/cxl/cxl-host.c index 0d891c651df..f3479b19914 100644 --- a/hw/cxl/cxl-host.c +++ b/hw/cxl/cxl-host.c @@ -11,7 +11,7 @@ #include "qemu/error-report.h" #include "qapi/error.h" #include "system/qtest.h" -#include "hw/boards.h" +#include "hw/core/boards.h" =20 #include "qapi/qapi-visit-machine.h" #include "hw/cxl/cxl.h" diff --git a/hw/hyperv/hv-balloon.c b/hw/hyperv/hv-balloon.c index 2d6d7db4ee0..ac024accfcd 100644 --- a/hw/hyperv/hv-balloon.c +++ b/hw/hyperv/hv-balloon.c @@ -13,7 +13,7 @@ #include "system/address-spaces.h" #include "exec/cpu-common.h" #include "system/ramblock.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/hyperv/dynmem-proto.h" #include "hw/hyperv/hv-balloon.h" #include "hw/hyperv/vmbus.h" diff --git a/hw/i2c/pm_smbus.c b/hw/i2c/pm_smbus.c index 4e685fd26e7..ead53d2724d 100644 --- a/hw/i2c/pm_smbus.c +++ b/hw/i2c/pm_smbus.c @@ -19,7 +19,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/i2c/pm_smbus.h" #include "hw/i2c/smbus_master.h" #include "migration/vmstate.h" diff --git a/hw/i2c/smbus_eeprom.c b/hw/i2c/smbus_eeprom.c index 26e211b31ad..ce3723e1483 100644 --- a/hw/i2c/smbus_eeprom.c +++ b/hw/i2c/smbus_eeprom.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "qemu/units.h" #include "qapi/error.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/i2c/i2c.h" #include "hw/i2c/smbus_slave.h" #include "hw/qdev-properties.h" diff --git a/hw/i386/vapic.c b/hw/i386/vapic.c index f1089f0a7c8..3a4254638b2 100644 --- a/hw/i386/vapic.c +++ b/hw/i386/vapic.c @@ -20,7 +20,7 @@ #include "system/address-spaces.h" #include "hw/i386/apic_internal.h" #include "hw/sysbus.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "migration/vmstate.h" #include "qom/object.h" =20 diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c index 6d93457c526..32e02e1eeb0 100644 --- a/hw/i386/vmport.c +++ b/hw/i386/vmport.c @@ -32,7 +32,7 @@ #include "hw/isa/isa.h" #include "hw/i386/vmport.h" #include "hw/qdev-properties.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/system.h" #include "system/hw_accel.h" #include "system/qtest.h" diff --git a/hw/i386/xen/xen-pvh.c b/hw/i386/xen/xen-pvh.c index 067f73e9773..ab90c83a830 100644 --- a/hw/i386/xen/xen-pvh.c +++ b/hw/i386/xen/xen-pvh.c @@ -9,7 +9,7 @@ =20 #include "qemu/osdep.h" #include "qemu/error-report.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/system.h" #include "hw/xen/arch_hvm.h" #include diff --git a/hw/intc/apic_common.c b/hw/intc/apic_common.c index ec9e978b0b4..83e1bc2d759 100644 --- a/hw/intc/apic_common.c +++ b/hw/intc/apic_common.c @@ -27,7 +27,7 @@ #include "hw/i386/apic_internal.h" #include "hw/intc/kvm_irqcount.h" #include "trace.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/kvm.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" diff --git a/hw/intc/loongarch_ipi.c b/hw/intc/loongarch_ipi.c index fc8005c9444..2a4557a8baa 100644 --- a/hw/intc/loongarch_ipi.c +++ b/hw/intc/loongarch_ipi.c @@ -7,7 +7,7 @@ =20 #include "qemu/osdep.h" #include "qemu/error-report.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "qapi/error.h" #include "hw/intc/loongarch_ipi.h" #include "hw/qdev-properties.h" diff --git a/hw/intc/loongarch_pic_kvm.c b/hw/intc/loongarch_pic_kvm.c index 6cfddf45206..7a8b4e7b666 100644 --- a/hw/intc/loongarch_pic_kvm.c +++ b/hw/intc/loongarch_pic_kvm.c @@ -7,7 +7,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/intc/loongarch_pch_pic.h" #include "hw/loongarch/virt.h" #include "system/kvm.h" diff --git a/hw/intc/riscv_aplic.c b/hw/intc/riscv_aplic.c index a2041e70224..a559664c40b 100644 --- a/hw/intc/riscv_aplic.c +++ b/hw/intc/riscv_aplic.c @@ -25,7 +25,7 @@ #include "system/address-spaces.h" #include "hw/sysbus.h" #include "hw/pci/msi.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/qdev-properties.h" #include "hw/intc/riscv_aplic.h" #include "hw/irq.h" diff --git a/hw/intc/riscv_imsic.c b/hw/intc/riscv_imsic.c index 6174e1a05d4..513e38d9c12 100644 --- a/hw/intc/riscv_imsic.c +++ b/hw/intc/riscv_imsic.c @@ -25,7 +25,7 @@ #include "system/address-spaces.h" #include "hw/sysbus.h" #include "hw/pci/msi.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/qdev-properties.h" #include "hw/intc/riscv_imsic.h" #include "hw/irq.h" diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c index 49434ad1828..a78a9bc03d8 100644 --- a/hw/loongarch/virt.c +++ b/hw/loongarch/virt.c @@ -9,7 +9,7 @@ #include "qemu/datadir.h" #include "qapi/error.h" #include "exec/target_page.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/char/serial-mm.h" #include "system/kvm.h" #include "system/tcg.h" diff --git a/hw/m68k/an5206.c b/hw/m68k/an5206.c index ff21d7779e1..f67611ba0b2 100644 --- a/hw/m68k/an5206.c +++ b/hw/m68k/an5206.c @@ -10,7 +10,7 @@ #include "qapi/error.h" #include "cpu.h" #include "hw/m68k/mcf.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/loader.h" #include "elf.h" #include "qemu/error-report.h" diff --git a/hw/m68k/mcf5206.c b/hw/m68k/mcf5206.c index a25e782403f..6359aa81d0e 100644 --- a/hw/m68k/mcf5206.c +++ b/hw/m68k/mcf5206.c @@ -11,7 +11,7 @@ #include "qemu/log.h" #include "cpu.h" #include "hw/qdev-properties.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/irq.h" #include "hw/m68k/mcf.h" #include "qemu/timer.h" diff --git a/hw/m68k/mcf5208.c b/hw/m68k/mcf5208.c index 4a585b231db..c1067435bf8 100644 --- a/hw/m68k/mcf5208.c +++ b/hw/m68k/mcf5208.c @@ -29,7 +29,7 @@ #include "system/system.h" #include "system/qtest.h" #include "net/net.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/loader.h" #include "hw/sysbus.h" #include "elf.h" diff --git a/hw/m68k/next-cube.c b/hw/m68k/next-cube.c index cfb2b319e5e..d7c460bcd4b 100644 --- a/hw/m68k/next-cube.c +++ b/hw/m68k/next-cube.c @@ -17,7 +17,7 @@ #include "system/qtest.h" #include "hw/irq.h" #include "hw/m68k/next-cube.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/loader.h" #include "hw/scsi/esp.h" #include "hw/sysbus.h" diff --git a/hw/m68k/q800-glue.c b/hw/m68k/q800-glue.c index 36de67c328e..d663d124fce 100644 --- a/hw/m68k/q800-glue.c +++ b/hw/m68k/q800-glue.c @@ -23,7 +23,7 @@ #include "qemu/osdep.h" #include "cpu.h" #include "hw/m68k/q800-glue.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/irq.h" #include "hw/nmi.h" #include "hw/qdev-properties.h" diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c index b8676feb418..1aaaada3465 100644 --- a/hw/m68k/q800.c +++ b/hw/m68k/q800.c @@ -27,7 +27,7 @@ #include "exec/target_page.h" #include "system/system.h" #include "cpu.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/or-irq.h" #include "elf.h" #include "hw/loader.h" diff --git a/hw/m68k/virt.c b/hw/m68k/virt.c index 3f65d915561..6f2b7bb5a08 100644 --- a/hw/m68k/virt.c +++ b/hw/m68k/virt.c @@ -13,7 +13,7 @@ #include "exec/target_page.h" #include "system/system.h" #include "cpu.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/qdev-properties.h" #include "elf.h" #include "hw/loader.h" diff --git a/hw/mem/memory-device.c b/hw/mem/memory-device.c index 1a432e9bd22..9cf82b84cf4 100644 --- a/hw/mem/memory-device.c +++ b/hw/mem/memory-device.c @@ -13,7 +13,7 @@ #include "qemu/error-report.h" #include "hw/mem/memory-device.h" #include "qapi/error.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "qemu/range.h" #include "hw/virtio/vhost.h" #include "system/kvm.h" diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c index f701d5b5f9b..33e5a376ffa 100644 --- a/hw/mem/pc-dimm.c +++ b/hw/mem/pc-dimm.c @@ -19,7 +19,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/mem/pc-dimm.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" diff --git a/hw/microblaze/boot.c b/hw/microblaze/boot.c index ec38107f503..39eb2386e8f 100644 --- a/hw/microblaze/boot.c +++ b/hw/microblaze/boot.c @@ -33,7 +33,7 @@ #include "qemu/guest-random.h" #include "system/device_tree.h" #include "system/reset.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/loader.h" #include "elf.h" #include "qemu/cutils.h" diff --git a/hw/microblaze/petalogix_ml605_mmu.c b/hw/microblaze/petalogix_= ml605_mmu.c index 6e923c49cfc..f5b9b2e8904 100644 --- a/hw/microblaze/petalogix_ml605_mmu.c +++ b/hw/microblaze/petalogix_ml605_mmu.c @@ -33,7 +33,7 @@ #include "net/net.h" #include "hw/block/flash.h" #include "system/system.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/char/serial-mm.h" #include "hw/qdev-properties.h" #include "system/address-spaces.h" diff --git a/hw/microblaze/petalogix_s3adsp1800_mmu.c b/hw/microblaze/petal= ogix_s3adsp1800_mmu.c index e8d0ddfdf86..266ecf9e8ab 100644 --- a/hw/microblaze/petalogix_s3adsp1800_mmu.c +++ b/hw/microblaze/petalogix_s3adsp1800_mmu.c @@ -31,7 +31,7 @@ #include "net/net.h" #include "hw/block/flash.h" #include "system/system.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/misc/unimp.h" #include "system/address-spaces.h" #include "hw/char/xilinx_uartlite.h" diff --git a/hw/microblaze/xlnx-zynqmp-pmu.c b/hw/microblaze/xlnx-zynqmp-pm= u.c index e909802bb74..f4c55589b7f 100644 --- a/hw/microblaze/xlnx-zynqmp-pmu.c +++ b/hw/microblaze/xlnx-zynqmp-pmu.c @@ -18,7 +18,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "system/address-spaces.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "cpu.h" #include "boot.h" =20 diff --git a/hw/mips/boston.c b/hw/mips/boston.c index 6a4fcdd9ca7..dc9da0b0401 100644 --- a/hw/mips/boston.c +++ b/hw/mips/boston.c @@ -21,7 +21,7 @@ #include "qemu/units.h" =20 #include "elf.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/char/serial-mm.h" #include "hw/ide/pci.h" #include "hw/ide/ahci-pci.h" diff --git a/hw/mips/fuloong2e.c b/hw/mips/fuloong2e.c index 5fe40eee65a..e777863703d 100644 --- a/hw/mips/fuloong2e.c +++ b/hw/mips/fuloong2e.c @@ -25,7 +25,7 @@ #include "cpu.h" #include "hw/clock.h" #include "net/net.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/i2c/smbus_eeprom.h" #include "hw/block/flash.h" #include "hw/mips/mips.h" diff --git a/hw/mips/jazz.c b/hw/mips/jazz.c index 1d6bdc00917..1708cec3f8c 100644 --- a/hw/mips/jazz.c +++ b/hw/mips/jazz.c @@ -33,7 +33,7 @@ #include "hw/isa/isa.h" #include "hw/block/fdc.h" #include "system/system.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "net/net.h" #include "hw/scsi/esp.h" #include "hw/loader.h" diff --git a/hw/mips/malta.c b/hw/mips/malta.c index a4e2ea98ade..f39e56d2798 100644 --- a/hw/mips/malta.c +++ b/hw/mips/malta.c @@ -34,7 +34,7 @@ #include "hw/isa/superio.h" #include "hw/char/serial-mm.h" #include "net/net.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/i2c/smbus_eeprom.h" #include "hw/block/flash.h" #include "hw/mips/mips.h" diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c index aa240504935..b696bf39e12 100644 --- a/hw/nvram/fw_cfg.c +++ b/hw/nvram/fw_cfg.c @@ -28,7 +28,7 @@ #include "system/dma.h" #include "system/reset.h" #include "system/address-spaces.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/nvram/fw_cfg.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" diff --git a/hw/openrisc/openrisc_sim.c b/hw/openrisc/openrisc_sim.c index b7d9cdd9007..769107e835e 100644 --- a/hw/openrisc/openrisc_sim.c +++ b/hw/openrisc/openrisc_sim.c @@ -23,7 +23,7 @@ #include "qapi/error.h" #include "cpu.h" #include "hw/irq.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/char/serial-mm.h" #include "net/net.h" #include "hw/openrisc/boot.h" diff --git a/hw/openrisc/virt.c b/hw/openrisc/virt.c index a98071c9365..3cfd1c0b5ce 100644 --- a/hw/openrisc/virt.c +++ b/hw/openrisc/virt.c @@ -13,7 +13,7 @@ #include "cpu.h" #include "system/address-spaces.h" #include "hw/irq.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/char/serial-mm.h" #include "hw/core/split-irq.h" #include "hw/openrisc/boot.h" diff --git a/hw/pci-bridge/pci_expander_bridge.c b/hw/pci-bridge/pci_expand= er_bridge.c index 1bcceddbc4d..b3a5f16e22a 100644 --- a/hw/pci-bridge/pci_expander_bridge.c +++ b/hw/pci-bridge/pci_expander_bridge.c @@ -24,7 +24,7 @@ #include "qemu/error-report.h" #include "qemu/module.h" #include "system/numa.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "qom/object.h" =20 enum BusType { PCI, PCIE, CXL }; diff --git a/hw/pci/pci.c b/hw/pci/pci.c index b1eba348e06..e03953813c2 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -46,7 +46,7 @@ #include "hw/pci/msi.h" #include "hw/pci/msix.h" #include "hw/hotplug.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/nvram/fw_cfg.h" #include "qapi/error.h" #include "qemu/cutils.h" diff --git a/hw/ppc/amigaone.c b/hw/ppc/amigaone.c index 74a1fa3b635..3df4724a72b 100644 --- a/hw/ppc/amigaone.c +++ b/hw/ppc/amigaone.c @@ -14,7 +14,7 @@ #include "qemu/error-report.h" #include "qapi/error.h" #include "hw/ppc/ppc.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/loader.h" #include "hw/pci-host/articia.h" #include "hw/isa/vt82c686.h" diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c index 739f1af3e18..bdc6c7ed7fe 100644 --- a/hw/ppc/mac_newworld.c +++ b/hw/ppc/mac_newworld.c @@ -54,7 +54,7 @@ #include "hw/ppc/ppc.h" #include "hw/qdev-properties.h" #include "hw/nvram/mac_nvram.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/pci-host/uninorth.h" #include "hw/input/adb.h" #include "hw/ppc/mac_dbdma.h" diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c index cd2bb46442f..8d35080b9d1 100644 --- a/hw/ppc/mac_oldworld.c +++ b/hw/ppc/mac_oldworld.c @@ -31,7 +31,7 @@ #include "exec/target_page.h" #include "hw/ppc/ppc.h" #include "hw/qdev-properties.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/input/adb.h" #include "system/system.h" #include "net/net.h" diff --git a/hw/ppc/pegasos.c b/hw/ppc/pegasos.c index 8ce185de3ea..3b48a54e7a0 100644 --- a/hw/ppc/pegasos.c +++ b/hw/ppc/pegasos.c @@ -24,7 +24,7 @@ #include "system/reset.h" #include "system/runstate.h" #include "system/qtest.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/loader.h" #include "hw/fw-path-provider.h" #include "elf.h" diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c index 7e739a21147..824dd91ed5e 100644 --- a/hw/ppc/ppc440_bamboo.c +++ b/hw/ppc/ppc440_bamboo.c @@ -18,7 +18,7 @@ #include "exec/page-protection.h" #include "net/net.h" #include "hw/pci/pci.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/kvm.h" #include "system/device_tree.h" #include "hw/loader.h" diff --git a/hw/ppc/ppe42_machine.c b/hw/ppc/ppe42_machine.c index f14a91b4e4d..6c9bc89e2d6 100644 --- a/hw/ppc/ppe42_machine.c +++ b/hw/ppc/ppe42_machine.c @@ -10,7 +10,7 @@ #include "qemu/units.h" #include "qemu/error-report.h" #include "system/address-spaces.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/ppc/ppc.h" #include "system/system.h" #include "system/reset.h" diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c index 5654a60c595..0d5e1f604e6 100644 --- a/hw/ppc/prep.c +++ b/hw/ppc/prep.c @@ -31,7 +31,7 @@ #include "hw/pci/pci.h" #include "hw/pci/pci_host.h" #include "hw/ppc/ppc.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "qapi/error.h" #include "qemu/error-report.h" #include "qemu/log.h" diff --git a/hw/ppc/sam460ex.c b/hw/ppc/sam460ex.c index 038b98d0b81..992bfe39a36 100644 --- a/hw/ppc/sam460ex.c +++ b/hw/ppc/sam460ex.c @@ -16,7 +16,7 @@ #include "qemu/datadir.h" #include "qemu/error-report.h" #include "qapi/error.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/kvm.h" #include "kvm_ppc.h" #include "system/device_tree.h" diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c index 43a6d505a84..8221a01639d 100644 --- a/hw/ppc/virtex_ml507.c +++ b/hw/ppc/virtex_ml507.c @@ -32,7 +32,7 @@ #include "hw/block/flash.h" #include "system/system.h" #include "system/reset.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/device_tree.h" #include "hw/loader.h" #include "elf.h" diff --git a/hw/remote/vfio-user-obj.c b/hw/remote/vfio-user-obj.c index 216b4876e24..13cda2f4813 100644 --- a/hw/remote/vfio-user-obj.c +++ b/hw/remote/vfio-user-obj.c @@ -44,7 +44,7 @@ #include "qemu/error-report.h" #include "trace.h" #include "system/runstate.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/remote/machine.h" #include "qapi/error.h" #include "qapi/qapi-visit-sockets.h" diff --git a/hw/riscv/boot.c b/hw/riscv/boot.c index 75f34287ff1..4f207dee287 100644 --- a/hw/riscv/boot.c +++ b/hw/riscv/boot.c @@ -22,7 +22,7 @@ #include "qemu/units.h" #include "qemu/error-report.h" #include "exec/cpu-defs.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/loader.h" #include "hw/riscv/boot.h" #include "hw/riscv/boot_opensbi.h" diff --git a/hw/riscv/microblaze-v-generic.c b/hw/riscv/microblaze-v-generi= c.c index e863c50cbc9..8a461a0dd56 100644 --- a/hw/riscv/microblaze-v-generic.c +++ b/hw/riscv/microblaze-v-generic.c @@ -20,7 +20,7 @@ #include "hw/sysbus.h" #include "system/system.h" #include "net/net.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/char/serial-mm.h" #include "system/address-spaces.h" #include "hw/char/xilinx_uartlite.h" diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c index a17f62cd082..4398f7b1825 100644 --- a/hw/riscv/microchip_pfsoc.c +++ b/hw/riscv/microchip_pfsoc.c @@ -40,7 +40,7 @@ #include "qemu/cutils.h" #include "qapi/error.h" #include "qapi/visitor.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/loader.h" #include "hw/sysbus.h" #include "chardev/char.h" diff --git a/hw/riscv/numa.c b/hw/riscv/numa.c index 7a7b0120077..726df2daf1f 100644 --- a/hw/riscv/numa.c +++ b/hw/riscv/numa.c @@ -20,7 +20,7 @@ #include "qemu/units.h" #include "qemu/error-report.h" #include "qapi/error.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/qdev-properties.h" #include "hw/riscv/numa.h" #include "system/device_tree.h" diff --git a/hw/riscv/opentitan.c b/hw/riscv/opentitan.c index d369a8a7dcd..309125e854b 100644 --- a/hw/riscv/opentitan.c +++ b/hw/riscv/opentitan.c @@ -23,7 +23,7 @@ #include "hw/riscv/opentitan.h" #include "qapi/error.h" #include "qemu/error-report.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/misc/unimp.h" #include "hw/riscv/boot.h" #include "qemu/units.h" diff --git a/hw/riscv/shakti_c.c b/hw/riscv/shakti_c.c index 3e7f4411727..d309ea2e39e 100644 --- a/hw/riscv/shakti_c.c +++ b/hw/riscv/shakti_c.c @@ -17,7 +17,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/riscv/shakti_c.h" #include "qapi/error.h" #include "qemu/error-report.h" diff --git a/hw/riscv/sifive_e.c b/hw/riscv/sifive_e.c index 7baed1958e0..abe411e305e 100644 --- a/hw/riscv/sifive_e.c +++ b/hw/riscv/sifive_e.c @@ -32,7 +32,7 @@ #include "qemu/cutils.h" #include "qemu/error-report.h" #include "qapi/error.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/loader.h" #include "hw/sysbus.h" #include "hw/misc/unimp.h" diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c index a7492aa27a4..6839a2635e8 100644 --- a/hw/riscv/sifive_u.c +++ b/hw/riscv/sifive_u.c @@ -39,7 +39,7 @@ #include "qemu/error-report.h" #include "qapi/error.h" #include "qapi/visitor.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/irq.h" #include "hw/loader.h" #include "hw/sysbus.h" diff --git a/hw/riscv/spike.c b/hw/riscv/spike.c index b0bab3fe008..6aa688acf30 100644 --- a/hw/riscv/spike.c +++ b/hw/riscv/spike.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "qemu/error-report.h" #include "qapi/error.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/loader.h" #include "hw/sysbus.h" #include "target/riscv/cpu.h" diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index 17909206c7e..45a845318e7 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -23,7 +23,7 @@ #include "qemu/error-report.h" #include "qemu/guest-random.h" #include "qapi/error.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/loader.h" #include "hw/sysbus.h" #include "hw/qdev-properties.h" diff --git a/hw/riscv/xiangshan_kmh.c b/hw/riscv/xiangshan_kmh.c index a95fd6174fd..e831954cb36 100644 --- a/hw/riscv/xiangshan_kmh.c +++ b/hw/riscv/xiangshan_kmh.c @@ -32,7 +32,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "system/address-spaces.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/char/serial-mm.h" #include "hw/intc/riscv_aclint.h" #include "hw/intc/riscv_aplic.h" diff --git a/hw/rx/rx-gdbsim.c b/hw/rx/rx-gdbsim.c index ed91c631788..1a33082857c 100644 --- a/hw/rx/rx-gdbsim.c +++ b/hw/rx/rx-gdbsim.c @@ -27,7 +27,7 @@ #include "system/qtest.h" #include "system/device_tree.h" #include "system/reset.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "qom/object.h" =20 /* Same address of GDB integrated simulator */ diff --git a/hw/s390x/cpu-topology.c b/hw/s390x/cpu-topology.c index b513f8936e4..9182ddb628d 100644 --- a/hw/s390x/cpu-topology.c +++ b/hw/s390x/cpu-topology.c @@ -19,7 +19,7 @@ #include "qapi/error.h" #include "qemu/error-report.h" #include "hw/qdev-properties.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "target/s390x/cpu.h" #include "hw/s390x/s390-virtio-ccw.h" #include "hw/s390x/cpu-topology.h" diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c index 3843d2a8505..f1c2af15f75 100644 --- a/hw/s390x/ipl.c +++ b/hw/s390x/ipl.c @@ -21,7 +21,7 @@ #include "elf.h" #include "hw/loader.h" #include "hw/qdev-properties.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/s390x/virtio-ccw.h" #include "hw/s390x/vfio-ccw.h" #include "hw/s390x/css.h" diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index 52820894fa1..3eea2f0c9d9 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -20,7 +20,7 @@ #include "hw/s390x/s390-pci-kvm.h" #include "hw/s390x/s390-pci-vfio.h" #include "hw/s390x/s390-virtio-ccw.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/pci/pci_bus.h" #include "hw/qdev-properties.h" #include "hw/pci/pci_bridge.h" diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c index 5841dfc4fec..6b67c3c109f 100644 --- a/hw/s390x/s390-pci-inst.c +++ b/hw/s390x/s390-pci-inst.c @@ -18,7 +18,7 @@ #include "qemu/error-report.h" #include "qemu/bswap.h" #include "system/hw_accel.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/pci/pci_device.h" #include "hw/s390x/s390-pci-inst.h" #include "hw/s390x/s390-pci-bus.h" diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index 64b81345f1e..29d95be2c64 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -14,7 +14,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "system/confidential-guest-support.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/s390x/sclp.h" #include "hw/s390x/s390_flic.h" #include "virtio-ccw.h" diff --git a/hw/s390x/sclp.c b/hw/s390x/sclp.c index c9a9c4bb375..b9c3983df19 100644 --- a/hw/s390x/sclp.c +++ b/hw/s390x/sclp.c @@ -15,7 +15,7 @@ #include "qemu/osdep.h" #include "qemu/units.h" #include "qapi/error.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/memory.h" #include "hw/s390x/sclp.h" #include "hw/s390x/event-facility.h" diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c index c29ee690690..bccd40f5712 100644 --- a/hw/sh4/r2d.c +++ b/hw/sh4/r2d.c @@ -33,7 +33,7 @@ #include "system/reset.h" #include "system/runstate.h" #include "system/system.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/pci/pci.h" #include "hw/qdev-properties.h" #include "net/net.h" diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c index 7558b2ad839..071c3b5e629 100644 --- a/hw/smbios/smbios.c +++ b/hw/smbios/smbios.c @@ -26,7 +26,7 @@ #include "qemu/uuid.h" #include "hw/firmware/smbios.h" #include "hw/loader.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/pci/pci_bus.h" #include "hw/pci/pci_device.h" #include "smbios_build.h" diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c index 631c6113b5c..367beecf192 100644 --- a/hw/sparc/leon3.c +++ b/hw/sparc/leon3.c @@ -37,7 +37,7 @@ #include "system/system.h" #include "system/qtest.h" #include "system/reset.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/loader.h" #include "elf.h" #include "trace.h" diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index 53d7ae08ae9..b0d2d6f8bc8 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -40,7 +40,7 @@ #include "system/runstate.h" #include "system/system.h" #include "net/net.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/scsi/esp.h" #include "hw/nvram/sun_nvram.h" #include "hw/qdev-properties.h" diff --git a/hw/sparc64/niagara.c b/hw/sparc64/niagara.c index 1ffe92060ad..334bec14ba3 100644 --- a/hw/sparc64/niagara.c +++ b/hw/sparc64/niagara.c @@ -26,7 +26,7 @@ #include "block/block_int-common.h" #include "qemu/units.h" #include "cpu.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/char/serial-mm.h" #include "hw/misc/unimp.h" #include "hw/loader.h" diff --git a/hw/sparc64/sparc64.c b/hw/sparc64/sparc64.c index 9cffc92aa3b..ce7eded143b 100644 --- a/hw/sparc64/sparc64.c +++ b/hw/sparc64/sparc64.c @@ -26,7 +26,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "cpu.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/sparc/sparc64.h" #include "qemu/timer.h" #include "system/reset.h" diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c index 82c3e7c855b..961d599f48d 100644 --- a/hw/sparc64/sun4u.c +++ b/hw/sparc64/sun4u.c @@ -46,7 +46,7 @@ #include "qemu/timer.h" #include "system/runstate.h" #include "system/system.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/nvram/sun_nvram.h" #include "hw/nvram/chrp_nvram.h" #include "hw/sparc/sparc64.h" diff --git a/hw/tricore/tricore_testboard.c b/hw/tricore/tricore_testboard.c index 3facfdfd611..21b119712c5 100644 --- a/hw/tricore/tricore_testboard.c +++ b/hw/tricore/tricore_testboard.c @@ -23,7 +23,7 @@ #include "qapi/error.h" #include "cpu.h" #include "net/net.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/loader.h" #include "elf.h" #include "hw/tricore/tricore.h" diff --git a/hw/uefi/ovmf-log.c b/hw/uefi/ovmf-log.c index 850ef21f885..3a24afd9417 100644 --- a/hw/uefi/ovmf-log.c +++ b/hw/uefi/ovmf-log.c @@ -9,7 +9,7 @@ #include "qemu/osdep.h" #include "qemu/units.h" #include "qemu/target-info-qapi.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/i386/x86.h" #include "hw/arm/virt.h" #include "system/dma.h" diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index 4bfa2e0fcd2..cff413c16f5 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -15,7 +15,7 @@ #include "qemu/error-report.h" #include "qapi/error.h" #include "qapi/qmp/qerror.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/hw.h" #include "hw/nvram/fw_cfg.h" #include "pci.h" diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c index 02cdd807d77..bcf6ab64432 100644 --- a/hw/virtio/virtio-balloon.c +++ b/hw/virtio/virtio-balloon.c @@ -21,7 +21,7 @@ #include "hw/virtio/virtio.h" #include "hw/mem/pc-dimm.h" #include "hw/qdev-properties.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/balloon.h" #include "system/ramblock.h" #include "hw/virtio/virtio-balloon.h" diff --git a/hw/virtio/virtio-iommu-pci.c b/hw/virtio/virtio-iommu-pci.c index 8123c6f83a3..dd4100033f1 100644 --- a/hw/virtio/virtio-iommu-pci.c +++ b/hw/virtio/virtio-iommu-pci.c @@ -16,7 +16,7 @@ #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "qapi/error.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/pci/pci_bus.h" #include "qom/object.h" =20 diff --git a/hw/virtio/virtio-mem.c b/hw/virtio/virtio-mem.c index ae7c13e33cf..5d1d90edc52 100644 --- a/hw/virtio/virtio-mem.c +++ b/hw/virtio/virtio-mem.c @@ -27,7 +27,7 @@ #include "qapi/error.h" #include "qapi/visitor.h" #include "migration/misc.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/qdev-properties.h" #include "hw/acpi/acpi.h" #include "trace.h" diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index 99cb30fe595..263e112a5cb 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -20,7 +20,7 @@ #include "exec/memop.h" #include "standard-headers/linux/virtio_pci.h" #include "standard-headers/linux/virtio_ids.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/virtio/virtio.h" #include "migration/qemu-file-types.h" #include "hw/pci/pci.h" diff --git a/hw/vmapple/vmapple.c b/hw/vmapple/vmapple.c index 62d33525bab..5da28cf72b2 100644 --- a/hw/vmapple/vmapple.c +++ b/hw/vmapple/vmapple.c @@ -25,7 +25,7 @@ #include "qemu/option.h" #include "qemu/units.h" #include "monitor/qdev.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/irq.h" #include "hw/loader.h" #include "hw/qdev-properties.h" diff --git a/hw/xen/xen-hvm-common.c b/hw/xen/xen-hvm-common.c index b40ae0b3af0..5d11b50db9c 100644 --- a/hw/xen/xen-hvm-common.c +++ b/hw/xen/xen-hvm-common.c @@ -11,7 +11,7 @@ #include "hw/pci/pci_host.h" #include "hw/xen/xen-hvm-common.h" #include "hw/xen/xen-bus.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/xen/arch_hvm.h" #include "system/memory.h" #include "system/runstate.h" diff --git a/hw/xen/xen-legacy-backend.c b/hw/xen/xen-legacy-backend.c index 5ed53f8943e..da9a8e5213a 100644 --- a/hw/xen/xen-legacy-backend.c +++ b/hw/xen/xen-legacy-backend.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" =20 #include "hw/sysbus.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/qdev-properties.h" #include "qemu/main-loop.h" #include "qapi/error.h" diff --git a/hw/xen/xen-pvh-common.c b/hw/xen/xen-pvh-common.c index b93ff80c859..c3fc501fe6e 100644 --- a/hw/xen/xen-pvh-common.c +++ b/hw/xen/xen-pvh-common.c @@ -10,7 +10,7 @@ #include "qemu/error-report.h" #include "qemu/units.h" #include "qapi/visitor.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/irq.h" #include "system/tpm.h" #include "system/tpm_backend.h" diff --git a/hw/xenpv/xen_machine_pv.c b/hw/xenpv/xen_machine_pv.c index 99c02492ef9..c406821c34c 100644 --- a/hw/xenpv/xen_machine_pv.c +++ b/hw/xenpv/xen_machine_pv.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "qemu/error-report.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/xen/xen-legacy-backend.h" #include "hw/xen/xen-bus.h" #include "system/block-backend.h" diff --git a/hw/xtensa/sim.c b/hw/xtensa/sim.c index 49d17e7bb29..37acc562d21 100644 --- a/hw/xtensa/sim.c +++ b/hw/xtensa/sim.c @@ -29,7 +29,7 @@ #include "qapi/error.h" #include "system/reset.h" #include "system/system.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/loader.h" #include "elf.h" #include "system/memory.h" diff --git a/hw/xtensa/virt.c b/hw/xtensa/virt.c index b10866ccd85..b9e324c2850 100644 --- a/hw/xtensa/virt.c +++ b/hw/xtensa/virt.c @@ -28,7 +28,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "system/reset.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/loader.h" #include "hw/pci-host/gpex.h" #include "net/net.h" diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c index db3b0155495..694456aa0a1 100644 --- a/hw/xtensa/xtfpga.c +++ b/hw/xtensa/xtfpga.c @@ -30,7 +30,7 @@ #include "qapi/error.h" #include "cpu.h" #include "system/system.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/loader.h" #include "hw/qdev-properties.h" #include "elf.h" diff --git a/migration/migration.c b/migration/migration.c index b316ee01ab2..697f460c4aa 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -54,7 +54,7 @@ #include "io/channel-buffer.h" #include "io/channel-tls.h" #include "migration/colo.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "monitor/monitor.h" #include "net/announce.h" #include "qemu/queue.h" diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index 715ef021a91..15997f71519 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -30,7 +30,7 @@ #include "system/system.h" #include "qemu/error-report.h" #include "trace.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/ramblock.h" #include "socket.h" #include "yank_functions.h" diff --git a/migration/ram.c b/migration/ram.c index 29f016cb258..6b469238ad2 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -64,7 +64,7 @@ #include "system/dirtylimit.h" #include "system/kvm.h" =20 -#include "hw/boards.h" /* for machine_dump_guest_core() */ +#include "hw/core/boards.h" /* for machine_dump_guest_core() */ =20 #if defined(__linux__) #include "qemu/userfaultfd.h" diff --git a/migration/savevm.c b/migration/savevm.c index 62cc2ce25cb..73e185caf59 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -27,7 +27,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "net/net.h" #include "migration.h" #include "migration/snapshot.h" diff --git a/monitor/qemu-config-qmp.c b/monitor/qemu-config-qmp.c index 8bd28fc2328..29801023564 100644 --- a/monitor/qemu-config-qmp.c +++ b/monitor/qemu-config-qmp.c @@ -6,7 +6,7 @@ #include "qobject/qlist.h" #include "qemu/option.h" #include "qemu/config-file.h" -#include "hw/boards.h" +#include "hw/core/boards.h" =20 static CommandLineParameterInfoList *query_option_descs(const QemuOptDesc = *desc) { diff --git a/plugins/api-system.c b/plugins/api-system.c index cc190b167ea..9a70b9caa6c 100644 --- a/plugins/api-system.c +++ b/plugins/api-system.c @@ -14,7 +14,7 @@ #include "qemu/main-loop.h" #include "qapi/error.h" #include "migration/blocker.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "qemu/plugin-memory.h" #include "qemu/plugin.h" =20 diff --git a/plugins/system.c b/plugins/system.c index b3ecc33ba52..88ff60ee2b3 100644 --- a/plugins/system.c +++ b/plugins/system.c @@ -11,7 +11,7 @@ =20 #include "qemu/osdep.h" #include "qemu/plugin.h" -#include "hw/boards.h" +#include "hw/core/boards.h" =20 #include "plugin.h" =20 diff --git a/semihosting/arm-compat-semi.c b/semihosting/arm-compat-semi.c index c5a07cb947b..2e9fa5842f6 100644 --- a/semihosting/arm-compat-semi.c +++ b/semihosting/arm-compat-semi.c @@ -48,7 +48,7 @@ #else #include "qemu/cutils.h" #include "hw/loader.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #endif =20 #define TARGET_SYS_OPEN 0x01 diff --git a/system/bootdevice.c b/system/bootdevice.c index 1845be4507e..8acdbfb0a57 100644 --- a/system/bootdevice.c +++ b/system/bootdevice.c @@ -29,7 +29,7 @@ #include "qemu/error-report.h" #include "system/reset.h" #include "hw/qdev-core.h" -#include "hw/boards.h" +#include "hw/core/boards.h" =20 typedef struct FWBootEntry FWBootEntry; =20 diff --git a/system/cpus.c b/system/cpus.c index ef2d2f241fa..0b1eabd3c4b 100644 --- a/system/cpus.c +++ b/system/cpus.c @@ -44,7 +44,7 @@ #include "system/runstate.h" #include "system/cpu-timers.h" #include "system/whpx.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/hw.h" #include "trace.h" =20 diff --git a/system/device_tree.c b/system/device_tree.c index 7850b90fa72..3ccdf33374c 100644 --- a/system/device_tree.c +++ b/system/device_tree.c @@ -25,7 +25,7 @@ #include "qemu/guest-random.h" #include "system/device_tree.h" #include "hw/loader.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "qemu/config-file.h" #include "qapi/qapi-commands-machine.h" #include "qobject/qdict.h" diff --git a/system/dirtylimit.c b/system/dirtylimit.c index b48c0d4b3da..a0c327533c3 100644 --- a/system/dirtylimit.c +++ b/system/dirtylimit.c @@ -21,7 +21,7 @@ #include "monitor/monitor.h" #include "system/memory.h" #include "exec/target_page.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/kvm.h" #include "trace.h" #include "migration/misc.h" diff --git a/system/memory.c b/system/memory.c index 8b84661ae36..b65219c2e49 100644 --- a/system/memory.c +++ b/system/memory.c @@ -32,7 +32,7 @@ #include "system/tcg.h" #include "qemu/accel.h" #include "accel/accel-ops.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "migration/vmstate.h" #include "system/address-spaces.h" =20 diff --git a/system/physmem.c b/system/physmem.c index c9869e4049f..edc384f4fa1 100644 --- a/system/physmem.c +++ b/system/physmem.c @@ -38,7 +38,7 @@ #include "exec/translation-block.h" #include "hw/qdev-core.h" #include "hw/qdev-properties.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/xen.h" #include "system/kvm.h" #include "system/tcg.h" diff --git a/system/qdev-monitor.c b/system/qdev-monitor.c index f2aa400a775..3babf81e330 100644 --- a/system/qdev-monitor.c +++ b/system/qdev-monitor.c @@ -42,7 +42,7 @@ #include "qemu/cutils.h" #include "hw/qdev-properties.h" #include "hw/clock.h" -#include "hw/boards.h" +#include "hw/core/boards.h" =20 /* * Aliases were a bad idea from the start. Let's keep them diff --git a/system/runstate.c b/system/runstate.c index e3ec16ab74d..89bbfe7fbf9 100644 --- a/system/runstate.c +++ b/system/runstate.c @@ -31,7 +31,7 @@ #include "crypto/init.h" #include "exec/cpu-common.h" #include "gdbstub/syscalls.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/resettable.h" #include "migration/misc.h" #include "migration/postcopy-ram.h" diff --git a/target-info-stub.c b/target-info-stub.c index d96d8249c1d..8392d81e8f8 100644 --- a/target-info-stub.c +++ b/target-info-stub.c @@ -9,7 +9,7 @@ #include "qemu/osdep.h" #include "qemu/target-info.h" #include "qemu/target-info-impl.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "cpu.h" =20 /* Validate correct placement of CPUArchState. */ diff --git a/target/arm/arm-qmp-cmds.c b/target/arm/arm-qmp-cmds.c index d292c974c44..45df15de782 100644 --- a/target/arm/arm-qmp-cmds.c +++ b/target/arm/arm-qmp-cmds.c @@ -22,7 +22,7 @@ =20 #include "qemu/osdep.h" #include "qemu/target-info.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "kvm_arm.h" #include "qapi/error.h" #include "qapi/visitor.h" diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 39292fb9bc1..7720d27a3c0 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -37,7 +37,7 @@ #include "hw/qdev-properties.h" #if !defined(CONFIG_USER_ONLY) #include "hw/loader.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #ifdef CONFIG_TCG #include "hw/intc/armv7m_nvic.h" #endif /* CONFIG_TCG */ diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 8288b605299..7c48f21543f 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -25,7 +25,7 @@ =20 #include "system/address-spaces.h" #include "system/memory.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/irq.h" #include "qemu/main-loop.h" #include "system/cpus.h" diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 0d57081e69f..c7ea6fc2f62 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -33,7 +33,7 @@ #include "exec/memattrs.h" #include "system/address-spaces.h" #include "gdbstub/enums.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/irq.h" #include "qapi/visitor.h" #include "qemu/log.h" diff --git a/target/arm/tcg/cpu32.c b/target/arm/tcg/cpu32.c index f0761410ad0..0b0bc96bac2 100644 --- a/target/arm/tcg/cpu32.c +++ b/target/arm/tcg/cpu32.c @@ -14,7 +14,7 @@ #include "internals.h" #include "target/arm/idau.h" #if !defined(CONFIG_USER_ONLY) -#include "hw/boards.h" +#include "hw/core/boards.h" #endif #include "cpregs.h" =20 diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 64177757863..4216ca9ec1d 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -42,7 +42,7 @@ #include "system/reset.h" #include "qapi/qapi-commands-machine.h" #include "system/address-spaces.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/i386/sgx-epc.h" #endif #include "system/qtest.h" diff --git a/target/i386/hvf/hvf-cpu.c b/target/i386/hvf/hvf-cpu.c index 94ee096ecf7..316c1b0ba07 100644 --- a/target/i386/hvf/hvf-cpu.c +++ b/target/i386/hvf/hvf-cpu.c @@ -12,7 +12,7 @@ #include "host-cpu.h" #include "qapi/error.h" #include "system/system.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/hvf.h" #include "accel/accel-cpu-target.h" #include "hvf-i386.h" diff --git a/target/i386/kvm/kvm-cpu.c b/target/i386/kvm/kvm-cpu.c index 9c25b558395..33a8c26bc27 100644 --- a/target/i386/kvm/kvm-cpu.c +++ b/target/i386/kvm/kvm-cpu.c @@ -12,7 +12,7 @@ #include "host-cpu.h" #include "qapi/error.h" #include "system/system.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/i386/x86.h" =20 #include "kvm_i386.h" diff --git a/target/i386/kvm/vmsr_energy.c b/target/i386/kvm/vmsr_energy.c index 890322ae372..d24e827a214 100644 --- a/target/i386/kvm/vmsr_energy.c +++ b/target/i386/kvm/vmsr_energy.c @@ -16,7 +16,7 @@ #include "vmsr_energy.h" #include "io/channel.h" #include "io/channel-socket.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "cpu.h" #include "host-cpu.h" =20 diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index 6bf8d5f4bbb..db184e1b0d0 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -19,7 +19,7 @@ #include "system/cpus.h" #include "system/runstate.h" #include "qemu/main-loop.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/intc/ioapic.h" #include "hw/i386/apic_internal.h" #include "qemu/error-report.h" diff --git a/target/loongarch/kvm/kvm.c b/target/loongarch/kvm/kvm.c index 26e40c9bdc0..6412584e1bd 100644 --- a/target/loongarch/kvm/kvm.c +++ b/target/loongarch/kvm/kvm.c @@ -19,7 +19,7 @@ #include "hw/pci/pci.h" #include "exec/memattrs.h" #include "system/address-spaces.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/irq.h" #include "hw/loongarch/virt.h" #include "qemu/log.h" diff --git a/target/m68k/m68k-semi.c b/target/m68k/m68k-semi.c index 6fbbd140f32..578a08dfee8 100644 --- a/target/m68k/m68k-semi.c +++ b/target/m68k/m68k-semi.c @@ -28,7 +28,7 @@ #include "gdbstub/helpers.h" #include "semihosting/syscalls.h" #include "semihosting/uaccess.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "qemu/log.h" =20 #define HOSTED_EXIT 0 diff --git a/target/mips/kvm.c b/target/mips/kvm.c index 912cd5dfa0e..a85e162409c 100644 --- a/target/mips/kvm.c +++ b/target/mips/kvm.c @@ -22,7 +22,7 @@ #include "system/kvm_int.h" #include "system/runstate.h" #include "kvm_mips.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "fpu_helper.h" =20 #define DEBUG_KVM 0 diff --git a/target/openrisc/sys_helper.c b/target/openrisc/sys_helper.c index 7ad908b6322..ca627bd7194 100644 --- a/target/openrisc/sys_helper.c +++ b/target/openrisc/sys_helper.c @@ -25,7 +25,7 @@ #include "exec/helper-proto.h" #include "exception.h" #ifndef CONFIG_USER_ONLY -#include "hw/boards.h" +#include "hw/core/boards.h" #endif #include "tcg/insn-start-words.h" =20 diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c index 86ead740eec..a3b14cceada 100644 --- a/target/ppc/cpu_init.c +++ b/target/ppc/cpu_init.c @@ -46,7 +46,7 @@ #include "spr_common.h" #include "power8-pmu.h" #ifndef CONFIG_USER_ONLY -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/intc/intc.h" #include "kvm_ppc.h" #endif diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c index 47e672c7aac..301d8de67fd 100644 --- a/target/riscv/kvm/kvm-cpu.c +++ b/target/riscv/kvm/kvm-cpu.c @@ -37,7 +37,7 @@ #include "exec/memattrs.h" #include "system/address-spaces.h" #include "system/memory.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/irq.h" #include "hw/intc/riscv_imsic.h" #include "qemu/log.h" diff --git a/target/riscv/tcg/tcg-cpu.c b/target/riscv/tcg/tcg-cpu.c index d3968251fad..bb03f8dc0ca 100644 --- a/target/riscv/tcg/tcg-cpu.c +++ b/target/riscv/tcg/tcg-cpu.c @@ -34,7 +34,7 @@ #include "accel/tcg/cpu-ops.h" #include "tcg/tcg.h" #ifndef CONFIG_USER_ONLY -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/tcg.h" #include "exec/icount.h" #endif diff --git a/target/s390x/cpu-system.c b/target/s390x/cpu-system.c index f3a9ffb2a27..c7a6fd7e751 100644 --- a/target/s390x/cpu-system.c +++ b/target/s390x/cpu-system.c @@ -34,7 +34,7 @@ #include "system/hw_accel.h" =20 #include "target/s390x/kvm/pv.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/system.h" #include "system/tcg.h" #include "hw/core/sysemu-cpu-ops.h" diff --git a/target/s390x/mmu_helper.c b/target/s390x/mmu_helper.c index 3b1e75f7833..7a7b3810590 100644 --- a/target/s390x/mmu_helper.c +++ b/target/s390x/mmu_helper.c @@ -28,7 +28,7 @@ #include "exec/target_page.h" #include "hw/hw.h" #include "hw/s390x/storage-keys.h" -#include "hw/boards.h" +#include "hw/core/boards.h" =20 /* Fetch/store bits in the translation exception code: */ #define FS_READ 0x800 diff --git a/target/s390x/sigp.c b/target/s390x/sigp.c index f5d7bc0fa22..b6d44c5c31b 100644 --- a/target/s390x/sigp.c +++ b/target/s390x/sigp.c @@ -11,7 +11,7 @@ #include "qemu/osdep.h" #include "cpu.h" #include "s390x-internal.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "system/hw_accel.h" #include "system/memory.h" #include "system/runstate.h" diff --git a/target/s390x/tcg/excp_helper.c b/target/s390x/tcg/excp_helper.c index c6641280bc6..54f051ae9e1 100644 --- a/target/s390x/tcg/excp_helper.c +++ b/target/s390x/tcg/excp_helper.c @@ -33,7 +33,7 @@ #include "system/memory.h" #include "hw/s390x/ioinst.h" #include "hw/s390x/s390_flic.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #endif #include "qemu/plugin.h" =20 diff --git a/target/s390x/tcg/mem_helper.c b/target/s390x/tcg/mem_helper.c index 24675fc818d..9e5bd3ed07f 100644 --- a/target/s390x/tcg/mem_helper.c +++ b/target/s390x/tcg/mem_helper.c @@ -40,7 +40,7 @@ #include "user/page-protection.h" #else #include "hw/s390x/storage-keys.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #endif =20 #ifdef CONFIG_USER_ONLY diff --git a/target/s390x/tcg/misc_helper.c b/target/s390x/tcg/misc_helper.c index 215b5b9d933..1fd900fbbf0 100644 --- a/target/s390x/tcg/misc_helper.c +++ b/target/s390x/tcg/misc_helper.c @@ -42,7 +42,7 @@ #include "hw/s390x/s390_flic.h" #include "hw/s390x/ioinst.h" #include "hw/s390x/s390-pci-inst.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "hw/s390x/tod.h" #include CONFIG_DEVICES #endif diff --git a/tests/qtest/fuzz/generic_fuzz.c b/tests/qtest/fuzz/generic_fuz= z.c index f12080eda49..c848eec3b93 100644 --- a/tests/qtest/fuzz/generic_fuzz.c +++ b/tests/qtest/fuzz/generic_fuzz.c @@ -25,7 +25,7 @@ #include "hw/qdev-core.h" #include "hw/pci/pci.h" #include "hw/pci/pci_device.h" -#include "hw/boards.h" +#include "hw/core/boards.h" #include "generic_fuzz_configs.h" #include "hw/mem/sparse-mem.h" =20 diff --git a/tests/unit/test-smp-parse.c b/tests/unit/test-smp-parse.c index 326045ecbb3..28ea9158e7a 100644 --- a/tests/unit/test-smp-parse.c +++ b/tests/unit/test-smp-parse.c @@ -15,7 +15,7 @@ #include "qemu/module.h" #include "qapi/error.h" =20 -#include "hw/boards.h" +#include "hw/core/boards.h" =20 #define T true #define F false diff --git a/scripts/compare-machine-types.py b/scripts/compare-machine-typ= es.py index 2af3995eb82..b4f899082a7 100755 --- a/scripts/compare-machine-types.py +++ b/scripts/compare-machine-types.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 # -# Script to compare machine type compatible properties (include/hw/boards.= h). +# Script to compare machine type compatible properties (include/hw/core/bo= ards.h). # compat_props are applied to the driver during initialization to change # default values, for instance, to maintain compatibility. # This script constructs table with machines and values of their compat_pr= ops --=20 2.52.0 From nobody Wed Jan 7 09:26:48 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=1766827454; cv=none; d=zohomail.com; s=zohoarc; b=XBJHAEQqdm/3LEvg/fVZMDlh0IyM332qr7X5PwP7XInCjfjLSUyqzPg2kzC/Qu1oxnPXI8Gd81cpzCyq6crsAXVc69/dnUUWwnj8Y6Jooir8X9UVBtPcfrd7L/gk4u32PR5YP77VItOrmvvnxhbLObqmp743OtABcxTbeJRoXXA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827454; 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=H4m2Kfc+neZWS1ddwDOnhhirnwKf3CooFwdTe57fsjA=; b=bexAo1xDak4kAsJxNH+f4Qkjz3duSAu3mEetX8OX8C20hH7xVd0X/nyZsmuN+7xyiIj5L2+mkDS1gBM5tLlS9onED0hj4lVaoa0yZnn4LCrMLfMdc448ERdVNABy1gBOjktj3D/ragnKYU9m/ka7fmV1z7g4ba4l2c+roD8xOms= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827454403460.5897480050078; Sat, 27 Dec 2025 01:24:14 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQPq-0002NT-Su; Sat, 27 Dec 2025 04:16:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPl-0002Lb-Kp for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:47 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPj-0002JW-DN for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:45 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-237-ho_GZzafOg2Hbkhj4BKfww-1; Sat, 27 Dec 2025 04:16:39 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-47d3c4468d8so15090795e9.2 for ; Sat, 27 Dec 2025 01:16:39 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be27b749esm488578285e9.14.2025.12.27.01.16.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:16:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827002; 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=H4m2Kfc+neZWS1ddwDOnhhirnwKf3CooFwdTe57fsjA=; b=fOXhqc8gUy5eonb6MjoJpQEfZqgnUr0Qd7BnrcPBw1JWIFnQyrYm4sYzkSCr1ki8la2OXo 2C02Mnt2mR/5EHBA4K4wTBBiUMm9WOwMU3/f1TWlX+QvXrpVM2CAwmMVYoi87XPU+KyvUM 7M8Engq10YpjxM6XXVXQB1VxfqlPKYo= X-MC-Unique: ho_GZzafOg2Hbkhj4BKfww-1 X-Mimecast-MFC-AGG-ID: ho_GZzafOg2Hbkhj4BKfww_1766826998 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766826998; x=1767431798; 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; bh=H4m2Kfc+neZWS1ddwDOnhhirnwKf3CooFwdTe57fsjA=; b=fZZnkQ4k/K3O2hs7GeCOzrKK7N3NIJ7ei42394L0xBmsSqRBB0uE+SCfeBmcLhK2CN q2MsUNAaY2asLibT45GoF/k1AyEPtzWXKXjcGaFHqvZ4Ep+jhjXUvS6rbEgtBfwUTx09 Dig5v+jlad6yPLVrpTJG8miOzhnT7au7LhnInmtPLKfTb23Mc9Ik2vdzfUcEwdlVXCoO Ivq+uZ6A8ShKfa39JBXJbcEEwLJTXEjYPljEdISGZmbUvD2whO5fjWGz0iMALmNgCp9o SbukKxp2ZCtcddGf4Op/UktbXjvXTyffmRLtbijWN+EupI/dGG06eRUhBceizNPnuDka bSTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766826998; x=1767431798; 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; bh=H4m2Kfc+neZWS1ddwDOnhhirnwKf3CooFwdTe57fsjA=; b=DZ2GUaSLNt2Xu/s/AkLTzaoHBJovdEmAObINywF82v/1vQIGKuBv2qtrkPUBXwGoxG Opd8NWjXFNs/15jC6IxYC+Ti4H0wWhd8I3tT/ilK7RN7PQx7/1gDX0qYKkYi1FnIvq58 GRzUwLdQju+0hm05OmlfLbI0CYLEzPVFiXqaDd4Y+f7v+9QsdlwNBpouEdkaKGyMOWPb ZJ3pB+RyVFswnFBtfsY9ofC/Fvn7ClgOcn8ibxmDpX0DvFsrs7/rXLyGm/Jgcl47qi/X k2FHbvGjlwPpXhvLZoys+59pKBEyZH9/Ewuacb1fUAQRCbVv75d1aei/W5PCqzEayR4y VM2g== X-Gm-Message-State: AOJu0YyQKOMPgQ1yrbZMifN0hnN9tHW+h90tY3BS6nqsUrkVu8PLEo9O G7lUE6Bq0kTalNVzGqjJpjjP1jLnQ4gmOEohaOVabhn9pF+Lyq/Q7r5FMj4jkheKMVjyAQpzIco Y0IdLGLIcHFBmFoo+KJeCoeXexZawbHBRVRShGVTC3r7o7Z/CWwt/E3Wr62SUsm3JJjmACc/sZ1 3qD1qUDYGaGlvf5ZRMqukS+Vk3FpTOda6ojeBImyZF X-Gm-Gg: AY/fxX4paTgGh5xuFYG4e1S/BrZh8mlBibOuY70MCao6zBkOtHmpj/H1KXKFPDHyZDe M9i8ima3wFXSmxRjknGLgWO0UgUY98y9zVLnDvfRLs3MNZBOEhfzjUbTdee/jIWw2yfGqFwII/c 6ipQkc2W2nV1iz++7c5VGlA/QWRgnSZdvEnUyraEFk+u78NGJjljsHE1MtcTw6W11p9tTYQXlI7 CI7I685WaWbbBXAu+F2py/MsYf++06kgGKGei7Ue3JZJMv1MdKbM5H4maXiHb+APSm2VhmHFxJj O6MnxISa01Ud+X0dMzDbMRLD916w78dYtqgGYqfqmN1voBQBZxvBQtc6Rv3gIJB2QQ3Ra2WsU9Q S0Oy9xC2vsw8+/8l0EVyXxEg/RFQE2cuR14vrPWPFWxg2piEuhQ0mHZ+MaPQE1S5MpD4M8rgX1I ZOICXO95F0Ige8QXM= X-Received: by 2002:a05:600c:c494:b0:479:35e7:a0e3 with SMTP id 5b1f17b1804b1-47d19582aacmr283162415e9.30.1766826997794; Sat, 27 Dec 2025 01:16:37 -0800 (PST) X-Google-Smtp-Source: AGHT+IGBeS0PPMG5S49fNkpyMc12du2XUICM3wqQoYCxp+cK+QZkfvUToELE8Yj+2l+NYOveStd/Dg== X-Received: by 2002:a05:600c:c494:b0:479:35e7:a0e3 with SMTP id 5b1f17b1804b1-47d19582aacmr283162075e9.30.1766826997026; Sat, 27 Dec 2025 01:16:37 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 007/153] include: move hw/clock.h to hw/core/ Date: Sat, 27 Dec 2025 10:13:54 +0100 Message-ID: <20251227091622.20725-8-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827456698158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- MAINTAINERS | 2 +- docs/devel/clocks.rst | 2 +- include/hw/adc/npcm7xx_adc.h | 2 +- include/hw/arm/armsse.h | 2 +- include/hw/arm/armv7m.h | 2 +- include/hw/arm/msf2-soc.h | 2 +- include/hw/arm/nrf51_soc.h | 2 +- include/hw/arm/stm32f100_soc.h | 2 +- include/hw/arm/stm32f205_soc.h | 2 +- include/hw/{ =3D> core}/clock.h | 0 include/hw/mips/cps.h | 2 +- include/hw/misc/npcm7xx_mft.h | 2 +- include/hw/misc/npcm7xx_pwm.h | 2 +- include/hw/misc/npcm_clk.h | 2 +- include/hw/qdev-clock.h | 2 +- include/hw/timer/armv7m_systick.h | 2 +- include/hw/timer/cmsdk-apb-dualtimer.h | 2 +- include/hw/timer/cmsdk-apb-timer.h | 2 +- include/hw/timer/stellaris-gptm.h | 2 +- include/hw/watchdog/cmsdk-apb-watchdog.h | 2 +- rust/hw/core/wrapper.h | 2 +- target/mips/cpu.h | 2 +- target/xtensa/cpu.h | 2 +- hw/char/stm32l4x5_usart.c | 2 +- hw/core/clock-vmstate.c | 2 +- hw/core/clock.c | 2 +- hw/core/ptimer.c | 2 +- hw/gpio/stm32l4x5_gpio.c | 2 +- hw/mips/fuloong2e.c | 2 +- hw/mips/jazz.c | 2 +- hw/mips/malta.c | 2 +- hw/misc/stm32l4x5_rcc.c | 2 +- hw/misc/stm32l4x5_syscfg.c | 2 +- hw/timer/sse-counter.c | 2 +- hw/timer/sse-timer.c | 2 +- system/qdev-monitor.c | 2 +- 36 files changed, 35 insertions(+), 35 deletions(-) rename include/hw/{ =3D> core}/clock.h (100%) diff --git a/MAINTAINERS b/MAINTAINERS index 9e9cb839899..f44259b305f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3951,7 +3951,7 @@ Clock framework M: Luc Michel R: Damien Hedde S: Maintained -F: include/hw/clock.h +F: include/hw/core/clock.h F: include/hw/qdev-clock.h F: hw/core/clock.c F: hw/core/clock-vmstate.c diff --git a/docs/devel/clocks.rst b/docs/devel/clocks.rst index 3f744f2be1e..2dbdc668606 100644 --- a/docs/devel/clocks.rst +++ b/docs/devel/clocks.rst @@ -46,7 +46,7 @@ Here is an example of clocks:: | +-------+ | +--------------+ =20 -Clocks are defined in the ``include/hw/clock.h`` header and device +Clocks are defined in the ``include/hw/core/clock.h`` header and device related functions are defined in the ``include/hw/qdev-clock.h`` header. =20 diff --git a/include/hw/adc/npcm7xx_adc.h b/include/hw/adc/npcm7xx_adc.h index 93330a408d2..a0c56d42365 100644 --- a/include/hw/adc/npcm7xx_adc.h +++ b/include/hw/adc/npcm7xx_adc.h @@ -16,7 +16,7 @@ #ifndef NPCM7XX_ADC_H #define NPCM7XX_ADC_H =20 -#include "hw/clock.h" +#include "hw/core/clock.h" #include "hw/irq.h" #include "hw/sysbus.h" #include "qemu/timer.h" diff --git a/include/hw/arm/armsse.h b/include/hw/arm/armsse.h index 88b3b759c5a..04755ed1ec3 100644 --- a/include/hw/arm/armsse.h +++ b/include/hw/arm/armsse.h @@ -110,7 +110,7 @@ #include "hw/misc/armsse-cpu-pwrctrl.h" #include "hw/misc/unimp.h" #include "hw/or-irq.h" -#include "hw/clock.h" +#include "hw/core/clock.h" #include "hw/core/split-irq.h" #include "hw/cpu/cluster.h" #include "qom/object.h" diff --git a/include/hw/arm/armv7m.h b/include/hw/arm/armv7m.h index 5c057ab2ec9..e31888cc8cd 100644 --- a/include/hw/arm/armv7m.h +++ b/include/hw/arm/armv7m.h @@ -15,7 +15,7 @@ #include "hw/misc/armv7m_ras.h" #include "target/arm/idau.h" #include "qom/object.h" -#include "hw/clock.h" +#include "hw/core/clock.h" =20 #define TYPE_BITBAND "ARM-bitband-memory" OBJECT_DECLARE_SIMPLE_TYPE(BitBandState, BITBAND) diff --git a/include/hw/arm/msf2-soc.h b/include/hw/arm/msf2-soc.h index 9300664e8ea..510a91cd771 100644 --- a/include/hw/arm/msf2-soc.h +++ b/include/hw/arm/msf2-soc.h @@ -30,7 +30,7 @@ #include "hw/misc/msf2-sysreg.h" #include "hw/ssi/mss-spi.h" #include "hw/net/msf2-emac.h" -#include "hw/clock.h" +#include "hw/core/clock.h" #include "qom/object.h" =20 #define TYPE_MSF2_SOC "msf2-soc" diff --git a/include/hw/arm/nrf51_soc.h b/include/hw/arm/nrf51_soc.h index f88ab1b7d3e..94d7fc62ac4 100644 --- a/include/hw/arm/nrf51_soc.h +++ b/include/hw/arm/nrf51_soc.h @@ -17,7 +17,7 @@ #include "hw/gpio/nrf51_gpio.h" #include "hw/nvram/nrf51_nvm.h" #include "hw/timer/nrf51_timer.h" -#include "hw/clock.h" +#include "hw/core/clock.h" #include "qom/object.h" =20 #define TYPE_NRF51_SOC "nrf51-soc" diff --git a/include/hw/arm/stm32f100_soc.h b/include/hw/arm/stm32f100_soc.h index a74d7b369c1..4c113d67748 100644 --- a/include/hw/arm/stm32f100_soc.h +++ b/include/hw/arm/stm32f100_soc.h @@ -29,7 +29,7 @@ #include "hw/ssi/stm32f2xx_spi.h" #include "hw/arm/armv7m.h" #include "qom/object.h" -#include "hw/clock.h" +#include "hw/core/clock.h" =20 #define TYPE_STM32F100_SOC "stm32f100-soc" OBJECT_DECLARE_SIMPLE_TYPE(STM32F100State, STM32F100_SOC) diff --git a/include/hw/arm/stm32f205_soc.h b/include/hw/arm/stm32f205_soc.h index 46eda3403a9..d3de6b94dab 100644 --- a/include/hw/arm/stm32f205_soc.h +++ b/include/hw/arm/stm32f205_soc.h @@ -32,7 +32,7 @@ #include "hw/or-irq.h" #include "hw/ssi/stm32f2xx_spi.h" #include "hw/arm/armv7m.h" -#include "hw/clock.h" +#include "hw/core/clock.h" #include "qom/object.h" =20 #define TYPE_STM32F205_SOC "stm32f205-soc" diff --git a/include/hw/clock.h b/include/hw/core/clock.h similarity index 100% rename from include/hw/clock.h rename to include/hw/core/clock.h diff --git a/include/hw/mips/cps.h b/include/hw/mips/cps.h index 05ef9f76b74..e7309841d08 100644 --- a/include/hw/mips/cps.h +++ b/include/hw/mips/cps.h @@ -21,7 +21,7 @@ #define MIPS_CPS_H =20 #include "hw/sysbus.h" -#include "hw/clock.h" +#include "hw/core/clock.h" #include "hw/misc/mips_cmgcr.h" #include "hw/intc/mips_gic.h" #include "hw/misc/mips_cpc.h" diff --git a/include/hw/misc/npcm7xx_mft.h b/include/hw/misc/npcm7xx_mft.h index e4b997a6ad3..54a2c2a82e6 100644 --- a/include/hw/misc/npcm7xx_mft.h +++ b/include/hw/misc/npcm7xx_mft.h @@ -17,7 +17,7 @@ #define NPCM7XX_MFT_H =20 #include "system/memory.h" -#include "hw/clock.h" +#include "hw/core/clock.h" #include "hw/irq.h" #include "hw/sysbus.h" #include "qom/object.h" diff --git a/include/hw/misc/npcm7xx_pwm.h b/include/hw/misc/npcm7xx_pwm.h index df927266209..f697a77cdca 100644 --- a/include/hw/misc/npcm7xx_pwm.h +++ b/include/hw/misc/npcm7xx_pwm.h @@ -16,7 +16,7 @@ #ifndef NPCM7XX_PWM_H #define NPCM7XX_PWM_H =20 -#include "hw/clock.h" +#include "hw/core/clock.h" #include "hw/sysbus.h" #include "hw/irq.h" =20 diff --git a/include/hw/misc/npcm_clk.h b/include/hw/misc/npcm_clk.h index 52e972f4604..50b93a0094d 100644 --- a/include/hw/misc/npcm_clk.h +++ b/include/hw/misc/npcm_clk.h @@ -17,7 +17,7 @@ #define NPCM_CLK_H =20 #include "system/memory.h" -#include "hw/clock.h" +#include "hw/core/clock.h" #include "hw/sysbus.h" =20 #define NPCM7XX_CLK_NR_REGS (0x70 / sizeof(uint32_t)) diff --git a/include/hw/qdev-clock.h b/include/hw/qdev-clock.h index ffa0f7ba09e..af0d8499a67 100644 --- a/include/hw/qdev-clock.h +++ b/include/hw/qdev-clock.h @@ -14,7 +14,7 @@ #ifndef QDEV_CLOCK_H #define QDEV_CLOCK_H =20 -#include "hw/clock.h" +#include "hw/core/clock.h" =20 /** * qdev_init_clock_in: diff --git a/include/hw/timer/armv7m_systick.h b/include/hw/timer/armv7m_sy= stick.h index ee09b138810..ac7de0a43ef 100644 --- a/include/hw/timer/armv7m_systick.h +++ b/include/hw/timer/armv7m_systick.h @@ -15,7 +15,7 @@ #include "hw/sysbus.h" #include "qom/object.h" #include "hw/ptimer.h" -#include "hw/clock.h" +#include "hw/core/clock.h" =20 #define TYPE_SYSTICK "armv7m_systick" =20 diff --git a/include/hw/timer/cmsdk-apb-dualtimer.h b/include/hw/timer/cmsd= k-apb-dualtimer.h index f3ec86c00b5..f098128a588 100644 --- a/include/hw/timer/cmsdk-apb-dualtimer.h +++ b/include/hw/timer/cmsdk-apb-dualtimer.h @@ -28,7 +28,7 @@ =20 #include "hw/sysbus.h" #include "hw/ptimer.h" -#include "hw/clock.h" +#include "hw/core/clock.h" #include "qom/object.h" =20 #define TYPE_CMSDK_APB_DUALTIMER "cmsdk-apb-dualtimer" diff --git a/include/hw/timer/cmsdk-apb-timer.h b/include/hw/timer/cmsdk-ap= b-timer.h index 2dd615d1be9..74eaf611aeb 100644 --- a/include/hw/timer/cmsdk-apb-timer.h +++ b/include/hw/timer/cmsdk-apb-timer.h @@ -14,7 +14,7 @@ =20 #include "hw/sysbus.h" #include "hw/ptimer.h" -#include "hw/clock.h" +#include "hw/core/clock.h" #include "qom/object.h" =20 #define TYPE_CMSDK_APB_TIMER "cmsdk-apb-timer" diff --git a/include/hw/timer/stellaris-gptm.h b/include/hw/timer/stellaris= -gptm.h index fde1fc6f0c7..c705508b829 100644 --- a/include/hw/timer/stellaris-gptm.h +++ b/include/hw/timer/stellaris-gptm.h @@ -13,7 +13,7 @@ #include "qom/object.h" #include "hw/sysbus.h" #include "hw/irq.h" -#include "hw/clock.h" +#include "hw/core/clock.h" =20 #define TYPE_STELLARIS_GPTM "stellaris-gptm" OBJECT_DECLARE_SIMPLE_TYPE(gptm_state, STELLARIS_GPTM) diff --git a/include/hw/watchdog/cmsdk-apb-watchdog.h b/include/hw/watchdog= /cmsdk-apb-watchdog.h index c6b3e78731e..5bbf4979c9f 100644 --- a/include/hw/watchdog/cmsdk-apb-watchdog.h +++ b/include/hw/watchdog/cmsdk-apb-watchdog.h @@ -33,7 +33,7 @@ =20 #include "hw/sysbus.h" #include "hw/ptimer.h" -#include "hw/clock.h" +#include "hw/core/clock.h" #include "qom/object.h" =20 #define TYPE_CMSDK_APB_WATCHDOG "cmsdk-apb-watchdog" diff --git a/rust/hw/core/wrapper.h b/rust/hw/core/wrapper.h index 3bdbd1249e4..77b541f83f9 100644 --- a/rust/hw/core/wrapper.h +++ b/rust/hw/core/wrapper.h @@ -25,7 +25,7 @@ typedef enum memory_order { #include "qemu/osdep.h" =20 #include "hw/sysbus.h" -#include "hw/clock.h" +#include "hw/core/clock.h" #include "hw/qdev-clock.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" diff --git a/target/mips/cpu.h b/target/mips/cpu.h index 5cd4c6c818d..ed662135cb0 100644 --- a/target/mips/cpu.h +++ b/target/mips/cpu.h @@ -9,7 +9,7 @@ #include "system/memory.h" #endif #include "fpu/softfloat-types.h" -#include "hw/clock.h" +#include "hw/core/clock.h" #include "mips-defs.h" =20 typedef struct CPUMIPSTLBContext CPUMIPSTLBContext; diff --git a/target/xtensa/cpu.h b/target/xtensa/cpu.h index 74122ebe15c..22192924841 100644 --- a/target/xtensa/cpu.h +++ b/target/xtensa/cpu.h @@ -33,7 +33,7 @@ #include "exec/cpu-common.h" #include "exec/cpu-defs.h" #include "exec/cpu-interrupt.h" -#include "hw/clock.h" +#include "hw/core/clock.h" #include "xtensa-isa.h" =20 enum { diff --git a/hw/char/stm32l4x5_usart.c b/hw/char/stm32l4x5_usart.c index afbe4bab29d..60d8ab5a0e5 100644 --- a/hw/char/stm32l4x5_usart.c +++ b/hw/char/stm32l4x5_usart.c @@ -23,7 +23,7 @@ #include "chardev/char-serial.h" #include "migration/vmstate.h" #include "hw/char/stm32l4x5_usart.h" -#include "hw/clock.h" +#include "hw/core/clock.h" #include "hw/irq.h" #include "hw/qdev-clock.h" #include "hw/qdev-properties.h" diff --git a/hw/core/clock-vmstate.c b/hw/core/clock-vmstate.c index e831fc596f8..9566d04cc64 100644 --- a/hw/core/clock-vmstate.c +++ b/hw/core/clock-vmstate.c @@ -12,7 +12,7 @@ =20 #include "qemu/osdep.h" #include "migration/vmstate.h" -#include "hw/clock.h" +#include "hw/core/clock.h" =20 static bool muldiv_needed(void *opaque) { diff --git a/hw/core/clock.c b/hw/core/clock.c index 9c906761e19..3fc98a0c65d 100644 --- a/hw/core/clock.c +++ b/hw/core/clock.c @@ -15,7 +15,7 @@ #include "qemu/cutils.h" #include "qapi/visitor.h" #include "system/qtest.h" -#include "hw/clock.h" +#include "hw/core/clock.h" #include "trace.h" =20 #define CLOCK_PATH(_clk) (_clk->canonical_path) diff --git a/hw/core/ptimer.c b/hw/core/ptimer.c index 0aeb10fb53e..a7337f02b8d 100644 --- a/hw/core/ptimer.c +++ b/hw/core/ptimer.c @@ -14,7 +14,7 @@ #include "exec/icount.h" #include "system/qtest.h" #include "block/aio.h" -#include "hw/clock.h" +#include "hw/core/clock.h" =20 #define DELTA_ADJUST 1 #define DELTA_NO_ADJUST -1 diff --git a/hw/gpio/stm32l4x5_gpio.c b/hw/gpio/stm32l4x5_gpio.c index 414ce830390..42fe984c493 100644 --- a/hw/gpio/stm32l4x5_gpio.c +++ b/hw/gpio/stm32l4x5_gpio.c @@ -20,7 +20,7 @@ #include "qemu/log.h" #include "hw/gpio/stm32l4x5_gpio.h" #include "hw/irq.h" -#include "hw/clock.h" +#include "hw/core/clock.h" #include "hw/qdev-clock.h" #include "hw/qdev-properties.h" #include "qapi/visitor.h" diff --git a/hw/mips/fuloong2e.c b/hw/mips/fuloong2e.c index e777863703d..fa252c4b285 100644 --- a/hw/mips/fuloong2e.c +++ b/hw/mips/fuloong2e.c @@ -23,7 +23,7 @@ #include "qemu/units.h" #include "qapi/error.h" #include "cpu.h" -#include "hw/clock.h" +#include "hw/core/clock.h" #include "net/net.h" #include "hw/core/boards.h" #include "hw/i2c/smbus_eeprom.h" diff --git a/hw/mips/jazz.c b/hw/mips/jazz.c index 1708cec3f8c..fdcae4ce90e 100644 --- a/hw/mips/jazz.c +++ b/hw/mips/jazz.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "qemu/datadir.h" -#include "hw/clock.h" +#include "hw/core/clock.h" #include "hw/mips/mips.h" #include "hw/intc/i8259.h" #include "hw/dma/i8257.h" diff --git a/hw/mips/malta.c b/hw/mips/malta.c index f39e56d2798..44ae8bc6c72 100644 --- a/hw/mips/malta.c +++ b/hw/mips/malta.c @@ -29,7 +29,7 @@ #include "qemu/cutils.h" #include "qemu/guest-random.h" #include "exec/tswap.h" -#include "hw/clock.h" +#include "hw/core/clock.h" #include "hw/southbridge/piix.h" #include "hw/isa/superio.h" #include "hw/char/serial-mm.h" diff --git a/hw/misc/stm32l4x5_rcc.c b/hw/misc/stm32l4x5_rcc.c index 0e1f27fbdda..514159777a0 100644 --- a/hw/misc/stm32l4x5_rcc.c +++ b/hw/misc/stm32l4x5_rcc.c @@ -23,7 +23,7 @@ #include "migration/vmstate.h" #include "hw/misc/stm32l4x5_rcc.h" #include "hw/misc/stm32l4x5_rcc_internals.h" -#include "hw/clock.h" +#include "hw/core/clock.h" #include "hw/irq.h" #include "hw/qdev-clock.h" #include "hw/qdev-properties.h" diff --git a/hw/misc/stm32l4x5_syscfg.c b/hw/misc/stm32l4x5_syscfg.c index 4e21756e0b4..85be226d2f4 100644 --- a/hw/misc/stm32l4x5_syscfg.c +++ b/hw/misc/stm32l4x5_syscfg.c @@ -26,7 +26,7 @@ #include "trace.h" #include "hw/irq.h" #include "migration/vmstate.h" -#include "hw/clock.h" +#include "hw/core/clock.h" #include "hw/qdev-clock.h" #include "qapi/error.h" #include "hw/misc/stm32l4x5_syscfg.h" diff --git a/hw/timer/sse-counter.c b/hw/timer/sse-counter.c index 31f77acf61e..bb364e815be 100644 --- a/hw/timer/sse-counter.c +++ b/hw/timer/sse-counter.c @@ -34,7 +34,7 @@ #include "hw/timer/sse-counter.h" #include "hw/sysbus.h" #include "hw/registerfields.h" -#include "hw/clock.h" +#include "hw/core/clock.h" #include "hw/qdev-clock.h" #include "migration/vmstate.h" =20 diff --git a/hw/timer/sse-timer.c b/hw/timer/sse-timer.c index 866d5eef8af..c5fd038162b 100644 --- a/hw/timer/sse-timer.c +++ b/hw/timer/sse-timer.c @@ -43,7 +43,7 @@ #include "hw/sysbus.h" #include "hw/irq.h" #include "hw/registerfields.h" -#include "hw/clock.h" +#include "hw/core/clock.h" #include "hw/qdev-clock.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" diff --git a/system/qdev-monitor.c b/system/qdev-monitor.c index 3babf81e330..c8773d864d9 100644 --- a/system/qdev-monitor.c +++ b/system/qdev-monitor.c @@ -41,7 +41,7 @@ #include "migration/misc.h" #include "qemu/cutils.h" #include "hw/qdev-properties.h" -#include "hw/clock.h" +#include "hw/core/clock.h" #include "hw/core/boards.h" =20 /* --=20 2.52.0 From nobody Wed Jan 7 09:26:48 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=1766827529; cv=none; d=zohomail.com; s=zohoarc; b=BqftfxH8akgq7pncrcu60Cce6AZgX6n4a0mKoZyRibs66rDQe5lGib0u0cLwP7kP1jfWoVwlj8w0BxdsF4KDjA/WFH7dG68TNscWnW2S7GOmXEw18VEJBIXizBmrxzmDvHqdjov+6OMPCPEPWmAHpi4bKgDmWoeqv7CFS8xoO3g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827529; 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=NH4AbEhMDNj1w9MP13tf9nDpr24WI1sJGsuQBiB53Bs=; b=GdnPkH64clN/ObknQofwnByJ0kJfiGXAvlfaeJ2PZfyVb/1Ba79+U4hmN7pxcybUe1fG8XtRI+zdhNPOAfJN8PO+IbFMtWc+u9Uu99ZI5G0gK+N2SzEwI5xck76hZUQ/aqbgCIcrcicrUaLdL6+fQpa7KxYKJASPITZiJ4aKfKc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827529395834.9458869593545; Sat, 27 Dec 2025 01:25:29 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQPr-0002Nw-VO; Sat, 27 Dec 2025 04:16:51 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPn-0002Lq-41 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:47 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPl-0002Jd-BK for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:46 -0500 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-281-dZQApyp_PS2Kflfla_lieA-1; Sat, 27 Dec 2025 04:16:41 -0500 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-432488a0ce8so6220230f8f.2 for ; Sat, 27 Dec 2025 01:16:40 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea82f6asm51476575f8f.27.2025.12.27.01.16.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:16:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827004; 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=NH4AbEhMDNj1w9MP13tf9nDpr24WI1sJGsuQBiB53Bs=; b=Hsft2Gop2V3xSHoiMraO9GF5cY/neiYAH2nwhC17LXRpMI2ajSi7rMQAxBf1KdRgmEfLun ultMZyNEvfsWnbIAAgvuknpPmH5rRJ9bMIKKHpqrCTulr85PAQgIzNscjaXa/AGri5+8DQ isduprz5zx8fDc5dHIghM86j9IkI5Wk= X-MC-Unique: dZQApyp_PS2Kflfla_lieA-1 X-Mimecast-MFC-AGG-ID: dZQApyp_PS2Kflfla_lieA_1766827000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766826999; x=1767431799; 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; bh=NH4AbEhMDNj1w9MP13tf9nDpr24WI1sJGsuQBiB53Bs=; b=afLmjkIPwa3y1gDHYiHE72g19ywFZRb5U+vV4UiMSuo0K2vqHAel9+5ZL2h8x7EeD3 uXNKVNv6FI09RzxS8fxNDlnmaFO4b1XaHfWFD7KOlGkfjuAd+9DpgaJR9qi7X2jMkGv9 62zuIcquylL3vbN9XKHjGZ9+Z8jS12jpcojxdBSkgf4BH8MulNHf6C9xesY9KHgvpDJL OOBZHuskxWS9fUltoN+kbiARDKw9U2cvtEp75a7KoMZtSwPKjaf1dXToAUs/N4JJKktg NU76z6tYD/NRf35gVvptYLkhWk7wfks6C9J5+O0cblvJX3yucr8t449Z7MXSB0Dx80C2 xEvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766826999; x=1767431799; 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; bh=NH4AbEhMDNj1w9MP13tf9nDpr24WI1sJGsuQBiB53Bs=; b=bInKZmyi4D4bo6Pde90FoiuYLcrPHX13l6cIz/2XocNH6RamB50hck0jNe6VeFsHhG jHcPrpnv9Tx/inYUBiTv93XWnsJ1hwG+CuSwfelXVBPcUklMzivciEzWvcsAIJGDftml XWQe9nTREIAWTK7xArgWhSt+qCw4fh4xpiU1csHQMKY4rUrMeQD1eDrF9J/W7CJEW3y8 PZNp/qumBwSbK7dIaGf8MsyevQn8qEHh/oLtOTydhT15jlOTcvpwI9hbkbBBVgtStHCE SOiaQAw3scmun7QApJ7asgXz3kEkLEG7Hes7Au4TifBTmRrp9/lZhKJq+UHBkuCJgYZO l6LQ== X-Gm-Message-State: AOJu0Yx46wo9ASgrREpQmMi6/yv8GQKYS/Az+wNWUrsJbL2KOL6/4ycK FxwCoURdehjyu+W6qxHtMBwgrzs4cTa/c88VXIgbR/8PYXOOfVLkPbtZ3OiAxRqdRwUBdBZdEH3 wQsnqkPvfghDKn9dnKDpinJBfBXxVirBMeEGodyvmXRcOYAqe94gft/kQbTr2VAP540K1QsYFUv QXxxPYvUQrKj/Z+RIZFN4trWIPYg3vQ0TibgSeYQmT X-Gm-Gg: AY/fxX43IVHxTQFZktyLXFaf6JucbrB8dvKUQ0QQxmJMKh5aHLkU7YBlcOPl7DqSaTg lS2BnHIbK8FtBdNTNuoPnq3YzGTkvL4F6Ka0ZckgZG8nK2kPJtNQdgv310SOiP2O6QBHRwYrisF KC2mH2O34IxVm8UAtrggWVO9hlo5sEN+2gfpyRlIdT0Qk3z1UduyzH2U3sMRqMXTTbvs2lROYHU DCF4+OB1kvjFbvQiPCDj7QQuQ9nBEPBHsTNgH4W7jyqacuwKRT+mShNfi8WIqaAHKJb/95NqCLX 2VI2k29DdGODpNHeR6joVHHDJkO45BSEbkYbD7CM41UdrXcU91Cy8bOhTwZyp5TwVBzwE27/4h3 YJ+62xko45KnPUvzLHOnGkX21rvCCRlg4XCIYnDhSpMBuoSVfAcgf+MXQ+ygGK6wgM7JE7aBRev i9RGcGBi+17NnwWXs= X-Received: by 2002:a05:6000:25c3:b0:430:f879:a0fc with SMTP id ffacd0b85a97d-4324e4cb9f4mr30676223f8f.21.1766826998856; Sat, 27 Dec 2025 01:16:38 -0800 (PST) X-Google-Smtp-Source: AGHT+IG1l6pc8IqaFFNHn7fd+wFNxuZsFSW3se8DJYc6r1tMmA76PAdpWlGGJgqCY2cRjmSSkCoOaA== X-Received: by 2002:a05:6000:25c3:b0:430:f879:a0fc with SMTP id ffacd0b85a97d-4324e4cb9f4mr30676193f8f.21.1766826998206; Sat, 27 Dec 2025 01:16:38 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 008/153] include: move hw/fw-path-provider.h to hw/core/ Date: Sat, 27 Dec 2025 10:13:55 +0100 Message-ID: <20251227091622.20725-9-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827530872158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- include/hw/{ =3D> core}/fw-path-provider.h | 0 include/hw/virtio/vhost-scsi-common.h | 2 +- hw/core/fw-path-provider.c | 2 +- hw/core/qdev-fw.c | 2 +- hw/ppc/mac_newworld.c | 2 +- hw/ppc/mac_oldworld.c | 2 +- hw/ppc/pegasos.c | 2 +- hw/ppc/spapr.c | 2 +- hw/scsi/vhost-scsi-common.c | 2 +- hw/scsi/vhost-scsi.c | 2 +- hw/scsi/vhost-user-scsi.c | 2 +- hw/sparc64/sun4u.c | 2 +- 12 files changed, 11 insertions(+), 11 deletions(-) rename include/hw/{ =3D> core}/fw-path-provider.h (100%) diff --git a/include/hw/fw-path-provider.h b/include/hw/core/fw-path-provid= er.h similarity index 100% rename from include/hw/fw-path-provider.h rename to include/hw/core/fw-path-provider.h diff --git a/include/hw/virtio/vhost-scsi-common.h b/include/hw/virtio/vhos= t-scsi-common.h index d54d9c916f2..7f34c7cb4fe 100644 --- a/include/hw/virtio/vhost-scsi-common.h +++ b/include/hw/virtio/vhost-scsi-common.h @@ -16,7 +16,7 @@ =20 #include "hw/virtio/virtio-scsi.h" #include "hw/virtio/vhost.h" -#include "hw/fw-path-provider.h" +#include "hw/core/fw-path-provider.h" #include "qom/object.h" =20 #define TYPE_VHOST_SCSI_COMMON "vhost-scsi-common" diff --git a/hw/core/fw-path-provider.c b/hw/core/fw-path-provider.c index 4840faefd1a..2a9da1aa4a2 100644 --- a/hw/core/fw-path-provider.c +++ b/hw/core/fw-path-provider.c @@ -16,7 +16,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/fw-path-provider.h" +#include "hw/core/fw-path-provider.h" #include "qemu/module.h" =20 char *fw_path_provider_get_dev_path(FWPathProvider *p, BusState *bus, diff --git a/hw/core/qdev-fw.c b/hw/core/qdev-fw.c index a31958355ff..a587d2ddf90 100644 --- a/hw/core/qdev-fw.c +++ b/hw/core/qdev-fw.c @@ -16,7 +16,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/fw-path-provider.h" +#include "hw/core/fw-path-provider.h" #include "hw/qdev-core.h" =20 const char *qdev_fw_name(DeviceState *dev) diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c index bdc6c7ed7fe..3a6e47eb8b7 100644 --- a/hw/ppc/mac_newworld.c +++ b/hw/ppc/mac_newworld.c @@ -66,7 +66,7 @@ #include "hw/misc/macio/macio.h" #include "hw/ppc/openpic.h" #include "hw/loader.h" -#include "hw/fw-path-provider.h" +#include "hw/core/fw-path-provider.h" #include "elf.h" #include "qemu/error-report.h" #include "system/kvm.h" diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c index 8d35080b9d1..8f9ce68b8b0 100644 --- a/hw/ppc/mac_oldworld.c +++ b/hw/ppc/mac_oldworld.c @@ -43,7 +43,7 @@ #include "hw/char/escc.h" #include "hw/misc/macio/macio.h" #include "hw/loader.h" -#include "hw/fw-path-provider.h" +#include "hw/core/fw-path-provider.h" #include "elf.h" #include "qemu/error-report.h" #include "system/kvm.h" diff --git a/hw/ppc/pegasos.c b/hw/ppc/pegasos.c index 3b48a54e7a0..e7396a729f3 100644 --- a/hw/ppc/pegasos.c +++ b/hw/ppc/pegasos.c @@ -26,7 +26,7 @@ #include "system/qtest.h" #include "hw/core/boards.h" #include "hw/loader.h" -#include "hw/fw-path-provider.h" +#include "hw/core/fw-path-provider.h" #include "elf.h" #include "qemu/log.h" #include "qemu/error-report.h" diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 6f2d10330d6..7c695ac4ecc 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -43,7 +43,7 @@ #include "system/reset.h" #include "system/runstate.h" #include "qemu/log.h" -#include "hw/fw-path-provider.h" +#include "hw/core/fw-path-provider.h" #include "elf.h" #include "net/net.h" #include "system/device_tree.h" diff --git a/hw/scsi/vhost-scsi-common.c b/hw/scsi/vhost-scsi-common.c index 43525ba46d3..0bb4305de61 100644 --- a/hw/scsi/vhost-scsi-common.c +++ b/hw/scsi/vhost-scsi-common.c @@ -24,7 +24,7 @@ #include "hw/virtio/virtio-scsi.h" #include "hw/virtio/virtio-bus.h" #include "hw/virtio/virtio-access.h" -#include "hw/fw-path-provider.h" +#include "hw/core/fw-path-provider.h" =20 int vhost_scsi_common_start(VHostSCSICommon *vsc, Error **errp) { diff --git a/hw/scsi/vhost-scsi.c b/hw/scsi/vhost-scsi.c index 239138c9316..573a44b2b3e 100644 --- a/hw/scsi/vhost-scsi.c +++ b/hw/scsi/vhost-scsi.c @@ -26,7 +26,7 @@ #include "hw/virtio/vhost.h" #include "hw/virtio/virtio-scsi.h" #include "hw/virtio/virtio-bus.h" -#include "hw/fw-path-provider.h" +#include "hw/core/fw-path-provider.h" #include "hw/qdev-properties.h" #include "qemu/cutils.h" #include "system/system.h" diff --git a/hw/scsi/vhost-user-scsi.c b/hw/scsi/vhost-user-scsi.c index 25f2d894e7c..0d7bbb52aba 100644 --- a/hw/scsi/vhost-user-scsi.c +++ b/hw/scsi/vhost-user-scsi.c @@ -18,7 +18,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qemu/error-report.h" -#include "hw/fw-path-provider.h" +#include "hw/core/fw-path-provider.h" #include "hw/qdev-core.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c index 961d599f48d..62ceb7eef4d 100644 --- a/hw/sparc64/sun4u.c +++ b/hw/sparc64/sun4u.c @@ -54,7 +54,7 @@ #include "hw/sysbus.h" #include "hw/ide/pci.h" #include "hw/loader.h" -#include "hw/fw-path-provider.h" +#include "hw/core/fw-path-provider.h" #include "elf.h" #include "trace.h" #include "qom/object.h" --=20 2.52.0 From nobody Wed Jan 7 09:26:48 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=1766827547; cv=none; d=zohomail.com; s=zohoarc; b=B7uDKzTJrGvQEe18xhfEXbqItc667Z9zx2CETkT1ZWWLJGfuEYfUH3oPAWddkT1qX2nkMtzc9qMzRp5BUFgInkQQzZ9ASHs39nTgNbq+ML2ssdDWPgn9+PNFDbP7zyqG57VHx/RbXGreDxdxt9I6YviusQs9zE4/vXqOu8KJGYE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827547; 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=ucdcdFeJmX6L6i+MMoj2gMbrmBI1FDIesQW4dBIATYA=; b=c9CQlRqvJnpu5zvVYiQV1UXXbJmtJjdPFXx4/NjLfKGtGQlP0CVgu3fFZwZ1S1TtGFgT+BkWms8XwCvV05PTw9/WACmDSbkDoudjmCOxuUcovrLDdMXLPdh1K9zLmTNVoOUSPwHYKBEJyVt/FpVNf5WykDVgXLSZkhtBjOzfp9A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827547255467.4576560552016; Sat, 27 Dec 2025 01:25:47 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQPo-0002NE-Ot; Sat, 27 Dec 2025 04:16:48 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPn-0002Lp-3y for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:47 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPl-0002Jg-BS for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:46 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-313-OlErE0vDO0qKRrEjGzfpKw-1; Sat, 27 Dec 2025 04:16:42 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-4779b3749a8so54864775e9.1 for ; Sat, 27 Dec 2025 01:16:42 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43277b0efefsm16766436f8f.25.2025.12.27.01.16.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:16:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827004; 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=ucdcdFeJmX6L6i+MMoj2gMbrmBI1FDIesQW4dBIATYA=; b=QVBhPfLg1OGRBvOc0blmRX7KN1680IyYm9pOcTRO6sRabSIRiYpoIgT3klxXQ0PFafzy8W ufYbOaQGdyKsfjUSz/dS9k2oJSwpLgc3YpvvbwpfiZWeeo7nlf/QbOGcSUrJGx/AkSA9Yz 5mQnZdnwEmGhv3QIdcbfBqaXf5s+Y84= X-MC-Unique: OlErE0vDO0qKRrEjGzfpKw-1 X-Mimecast-MFC-AGG-ID: OlErE0vDO0qKRrEjGzfpKw_1766827001 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827000; x=1767431800; 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; bh=ucdcdFeJmX6L6i+MMoj2gMbrmBI1FDIesQW4dBIATYA=; b=t0cWNM9oa2GTz/o3dAINpuqTAHct0+zlNKpH2r7OOhzCM7H1aamMd0hkblbn81oxqK ZnZQrDlT1ktcJeO/KXJBPM6FjJbzgoSdY/bQNWnAmwHQYLPdOhoZ6jN82K99xyCpEscF rP6L3/ykwFQBnmwf0A+x+a02p/J8sInuseVQnVrdguwliX/aSzJ2o8sHhDOoUKYRq12y QrGBAX8/Ffhfb+F9ibStA8BDeytr6rFqdmN+Pcgbyzlp/aps7bNQ3KWHmpFStHALm/0l mFFRgOU7Z/zLs8tmrz1ViQkePJW/qU8x8uWNp2pWMw+EVu23W+Q1dogMoio0aTLglIkq iAqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827000; x=1767431800; 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; bh=ucdcdFeJmX6L6i+MMoj2gMbrmBI1FDIesQW4dBIATYA=; b=J3O5VGoQ7lVwwNN30IRnymffukwRkR3fOrh6KqBG8u69hOD6+M8vfz3JpqyL1TyU4o 4Q7MdCgvxtlKF3U5hXG3p4JWbJy7wr1qOrec8+5CQEqmb92z5WO75Ocof/0gJheVRd+U cEwv3yQQ+AxrxbnaLuoaTVqExGmwl9uheXdRY0DOIJP1QxOYOOiSIZbRpSNUJ8R7sS3d YenllOxknuSTKChZMFzjebvKrNAv04cJE4gA60VM34JxGh+glC7QDPFF1i52paIGoV1N Y1IdqyGiKUfqaV7HjVjKOghDxhi+DQW2mJ/aRZaO8x7y3GahcksTrMOQ2R4XNgOA8XxM PwUA== X-Gm-Message-State: AOJu0YxvxY+TJoR1YMNFZKo5SLofKC0UhdcHjGpoR6USfH/sbJMisrRb ENZ/BSv4tmT+Fq1IWP3a2GM74k4Ok1uGzx1/5FLctSZtmQAbZWmRE8SVqWMRvM2Bt5Sw8sh5EL1 TXJwU/8cKNMGB6m6P/nUUYs0kU/ESSOZcUJbc91ISH4JvuwCi19NM3LvkcNzMBVic5xjAT3azZO /z04TIPuzUgvBuaZa8i9eH+RkXQNkD2BAI++2iMkhC X-Gm-Gg: AY/fxX6e5oHZLSE5M1OxIru4evadIBXzOyIR4RjiVuhr+2tyQLa6P6XtqiaTXUN98G+ EyBQXxMC/hM3qPwnF98GprUkASLh9QNMtoeoXZLvl25LCMS/6/r4lBvg6c7YBdkMmjLB1WowMc7 kmJYrsnv1htAfMFeIv1YRRa7DLSUilgxpDY4jafRSNm2pNSl1DvT9gAqTrc8utpEgv/m7nk4Qli IHFGk97bMbGRXfHXZ2Q9BQqlQfsg1404X80BmI36SBhwUMBF64WY78V7nz1YSXyz6DciIW0yooP 9xORdlfJ3xCgcV83HjZ2nn+ZlluhxfR1Z5qsvDnUVDKHLECPDaX5hcfQ2sBLVG6qTb7xKlg6pj5 YSGoKkIg5F9eZMOkiCIJ80gpKMFow1tfn8c+YD9juOp3MdkhMTaNKT9Tm3Zq238GKBa/9DZTOga ucyu6anm7CArPNOzw= X-Received: by 2002:a05:600c:4e0d:b0:47b:df60:8a14 with SMTP id 5b1f17b1804b1-47d195495d4mr276571765e9.9.1766826999959; Sat, 27 Dec 2025 01:16:39 -0800 (PST) X-Google-Smtp-Source: AGHT+IGRtmw0zR5TU5EN6c0439SLtVdCVyqkLe3YWwR8f8OZoBqMmyOA6nd/T400DydwXDFf4jxJpw== X-Received: by 2002:a05:600c:4e0d:b0:47b:df60:8a14 with SMTP id 5b1f17b1804b1-47d195495d4mr276571505e9.9.1766826999369; Sat, 27 Dec 2025 01:16:39 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 009/153] include: move hw/hotplug.h to hw/core/ Date: Sat, 27 Dec 2025 10:13:56 +0100 Message-ID: <20251227091622.20725-10-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827548925158501 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- include/hw/acpi/cpu.h | 2 +- include/hw/acpi/cpu_hotplug.h | 2 +- include/hw/acpi/pcihp.h | 2 +- include/hw/{ =3D> core}/hotplug.h | 0 include/hw/i386/pc.h | 2 +- include/hw/pci/pcie.h | 2 +- include/hw/pci/shpc.h | 2 +- include/hw/qdev-core.h | 2 +- hw/acpi/acpi-nvdimm-stub.c | 2 +- hw/acpi/piix4.c | 2 +- hw/core/hotplug.c | 2 +- hw/pci-bridge/pci_bridge_dev.c | 2 +- hw/pci/pci.c | 2 +- hw/pci/pcie_port.c | 2 +- hw/s390x/css-bridge.c | 2 +- 15 files changed, 14 insertions(+), 14 deletions(-) rename include/hw/{ =3D> core}/hotplug.h (100%) diff --git a/include/hw/acpi/cpu.h b/include/hw/acpi/cpu.h index 95dc58b5adb..a64d19445cc 100644 --- a/include/hw/acpi/cpu.h +++ b/include/hw/acpi/cpu.h @@ -17,7 +17,7 @@ #include "hw/acpi/acpi.h" #include "hw/acpi/aml-build.h" #include "hw/core/boards.h" -#include "hw/hotplug.h" +#include "hw/core/hotplug.h" =20 #define ACPI_CPU_HOTPLUG_REG_LEN 12 =20 diff --git a/include/hw/acpi/cpu_hotplug.h b/include/hw/acpi/cpu_hotplug.h index 3b932abbbbe..5b670b04eb6 100644 --- a/include/hw/acpi/cpu_hotplug.h +++ b/include/hw/acpi/cpu_hotplug.h @@ -16,7 +16,7 @@ #include "hw/acpi/acpi.h" #include "hw/acpi/pc-hotplug.h" #include "hw/acpi/aml-build.h" -#include "hw/hotplug.h" +#include "hw/core/hotplug.h" #include "hw/acpi/cpu.h" =20 typedef struct AcpiCpuHotplug { diff --git a/include/hw/acpi/pcihp.h b/include/hw/acpi/pcihp.h index ca6a2588258..efce5fd2e10 100644 --- a/include/hw/acpi/pcihp.h +++ b/include/hw/acpi/pcihp.h @@ -29,7 +29,7 @@ =20 #include "hw/acpi/acpi.h" #include "hw/acpi/aml-build.h" -#include "hw/hotplug.h" +#include "hw/core/hotplug.h" =20 #define ACPI_PCIHP_IO_BASE_PROP "acpi-pcihp-io-base" #define ACPI_PCIHP_IO_LEN_PROP "acpi-pcihp-io-len" diff --git a/include/hw/hotplug.h b/include/hw/core/hotplug.h similarity index 100% rename from include/hw/hotplug.h rename to include/hw/core/hotplug.h diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index ade2da92bad..b3a45ab71a8 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -9,7 +9,7 @@ #include "hw/block/flash.h" #include "hw/i386/x86.h" =20 -#include "hw/hotplug.h" +#include "hw/core/hotplug.h" #include "qom/object.h" #include "hw/i386/sgx-epc.h" #include "hw/cxl/cxl.h" diff --git a/include/hw/pci/pcie.h b/include/hw/pci/pcie.h index 42cebcd0338..c880ae1e04b 100644 --- a/include/hw/pci/pcie.h +++ b/include/hw/pci/pcie.h @@ -25,7 +25,7 @@ #include "hw/pci/pcie_regs.h" #include "hw/pci/pcie_aer.h" #include "hw/pci/pcie_sriov.h" -#include "hw/hotplug.h" +#include "hw/core/hotplug.h" =20 typedef struct PCIEPort PCIEPort; typedef struct PCIESlot PCIESlot; diff --git a/include/hw/pci/shpc.h b/include/hw/pci/shpc.h index ad1089567a0..fce5bdd3bc7 100644 --- a/include/hw/pci/shpc.h +++ b/include/hw/pci/shpc.h @@ -2,7 +2,7 @@ #define SHPC_H =20 #include "system/memory.h" -#include "hw/hotplug.h" +#include "hw/core/hotplug.h" #include "hw/pci/pci_device.h" #include "migration/vmstate.h" =20 diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h index 5cf2db7ee11..f0ef2dc3aa8 100644 --- a/include/hw/qdev-core.h +++ b/include/hw/qdev-core.h @@ -7,7 +7,7 @@ #include "qemu/rcu.h" #include "qemu/rcu_queue.h" #include "qom/object.h" -#include "hw/hotplug.h" +#include "hw/core/hotplug.h" #include "hw/resettable.h" =20 /** diff --git a/hw/acpi/acpi-nvdimm-stub.c b/hw/acpi/acpi-nvdimm-stub.c index 65f491d6535..22ba17f5118 100644 --- a/hw/acpi/acpi-nvdimm-stub.c +++ b/hw/acpi/acpi-nvdimm-stub.c @@ -1,6 +1,6 @@ #include "qemu/osdep.h" #include "hw/mem/nvdimm.h" -#include "hw/hotplug.h" +#include "hw/core/hotplug.h" =20 void nvdimm_acpi_plug_cb(HotplugHandler *hotplug_dev, DeviceState *dev) { diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c index 7a18f18dda2..9e0892a51f8 100644 --- a/hw/acpi/piix4.c +++ b/hw/acpi/piix4.c @@ -35,7 +35,7 @@ #include "qemu/range.h" #include "hw/acpi/cpu_hotplug.h" #include "hw/acpi/cpu.h" -#include "hw/hotplug.h" +#include "hw/core/hotplug.h" #include "hw/mem/pc-dimm.h" #include "hw/mem/nvdimm.h" #include "hw/acpi/memory_hotplug.h" diff --git a/hw/core/hotplug.c b/hw/core/hotplug.c index 17ac9866859..68aabad8ae0 100644 --- a/hw/core/hotplug.c +++ b/hw/core/hotplug.c @@ -10,7 +10,7 @@ * See the COPYING file in the top-level directory. */ #include "qemu/osdep.h" -#include "hw/hotplug.h" +#include "hw/core/hotplug.h" #include "qemu/module.h" =20 void hotplug_handler_pre_plug(HotplugHandler *plug_handler, diff --git a/hw/pci-bridge/pci_bridge_dev.c b/hw/pci-bridge/pci_bridge_dev.c index b328e50ab31..cb4809f38b1 100644 --- a/hw/pci-bridge/pci_bridge_dev.c +++ b/hw/pci-bridge/pci_bridge_dev.c @@ -30,7 +30,7 @@ #include "hw/qdev-properties.h" #include "system/memory.h" #include "hw/pci/pci_bus.h" -#include "hw/hotplug.h" +#include "hw/core/hotplug.h" #include "qom/object.h" =20 #define TYPE_PCI_BRIDGE_DEV "pci-bridge" diff --git a/hw/pci/pci.c b/hw/pci/pci.c index e03953813c2..02a59f355b6 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -45,7 +45,7 @@ #include "trace.h" #include "hw/pci/msi.h" #include "hw/pci/msix.h" -#include "hw/hotplug.h" +#include "hw/core/hotplug.h" #include "hw/core/boards.h" #include "hw/nvram/fw_cfg.h" #include "qapi/error.h" diff --git a/hw/pci/pcie_port.c b/hw/pci/pcie_port.c index f3841a26568..20b5e4cfb51 100644 --- a/hw/pci/pcie_port.c +++ b/hw/pci/pcie_port.c @@ -22,7 +22,7 @@ #include "hw/pci/pcie_port.h" #include "hw/qdev-properties.h" #include "qemu/module.h" -#include "hw/hotplug.h" +#include "hw/core/hotplug.h" =20 void pcie_port_init_reg(PCIDevice *d) { diff --git a/hw/s390x/css-bridge.c b/hw/s390x/css-bridge.c index 0f87b8c5c44..f3b6ef56300 100644 --- a/hw/s390x/css-bridge.c +++ b/hw/s390x/css-bridge.c @@ -12,7 +12,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/hotplug.h" +#include "hw/core/hotplug.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" #include "qemu/bitops.h" --=20 2.52.0 From nobody Wed Jan 7 09:26:48 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=1766827176; cv=none; d=zohomail.com; s=zohoarc; b=KFuLDe2JiymnTmzYaYEQ104yt/TyWm6KyGfn+MSuaSbWNSoIVNO/PcyN03+Q3TggbMWCK4wZQQXaPJN9/Bicj8Us6MI8BTShPrJkUzrLUumsjxoY3kf7KmaVxbKmc6hRJymPW4a6GkWSNP+9+pqWaRDvUgZhTsiOhLLzdp1PmaU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827176; 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=V9p8M5soIuwCYBPh2PaYJIwblakvweKhz5g5jhZ6F+U=; b=f/AJGVsxAW/NJ9cNtwE8ikLosr1ZW2YOlpV54MTwn09yI83ttt9YANRsKrqkBClU3TiBaM4Vwx5yDapeQwrzSEhNRJhcfK+kpxhOBRxSjgVL1Esm2g3OZsLRlJHdHLlF8IyXnb2Bt2z5YcERicA5gBTog/IwQeHomM+Jn6uJ1iA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827176350438.6955548478578; Sat, 27 Dec 2025 01:19:36 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQPz-0002Ri-C4; Sat, 27 Dec 2025 04:16:59 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPy-0002RL-3r for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:58 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPt-0002LJ-O2 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:57 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-518-VYrxw2LlNGG4ghax39gT2w-1; Sat, 27 Dec 2025 04:16:49 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-47775585257so54464115e9.1 for ; Sat, 27 Dec 2025 01:16:48 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d19352306sm426274925e9.5.2025.12.27.01.16.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:16:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827013; 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=V9p8M5soIuwCYBPh2PaYJIwblakvweKhz5g5jhZ6F+U=; b=eOkp9/rRqxvtEKQJiKwzM+jdZrVtFa02Zc0UDAdq51PpJwiGb/Qihs7hS0qZopiqFGUVp1 tEGRxNWTSxG10p8sWTRa2OUJ/4rAWBsVZWHn00K681U8fwtvDNArTRpKhkVHjXeaBHmV48 gmffHRQmz9OSJGbjCFtYjVb1zHnTNZU= X-MC-Unique: VYrxw2LlNGG4ghax39gT2w-1 X-Mimecast-MFC-AGG-ID: VYrxw2LlNGG4ghax39gT2w_1766827008 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827007; x=1767431807; 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; bh=V9p8M5soIuwCYBPh2PaYJIwblakvweKhz5g5jhZ6F+U=; b=CJEkpgRNhgDWSurcqpfav0IrI7qZOnAFQ52RyQgHEd6dlVYQVMJvuROMvA6TVOJd0R hdI5DAmbQEPw/XO2M6GmeIp4ImgXKVaS66cv3rHok595QsH8CS5WzUG5OJjLhFSlF1up /8jx7IJPB0kpluAsDNHx3ufDZAJHxkFVv0ewtyeb9r6Yq42louRp8pr3jncsn+Kyrb0+ T6mQ0pXZcRIBjNLzkh1PwwZxOctChEhYU7xJP22VZ/OCwNyz/FPxMUgiAE7Tf8hlHN6W 9mIppAetyWCYe0aGZCbH2eiQ3meWEs+nqrBjunX3eXSVa/U8EfnPV4cXjRJfgedR9lKI SnMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827007; x=1767431807; 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; bh=V9p8M5soIuwCYBPh2PaYJIwblakvweKhz5g5jhZ6F+U=; b=eIO5cXtbO2HyH2co7CEHdqQ4PYJs4Q49A4oPnjr1xq4+lU+uWUivU9Pshyb8+ASags CEv6IWhfuUC5wzNKpHr04yssXBVdp3/v6e+pBqTQRfEco9BicDZ1K7fActC90p4nyf9F 2063Cut/WZJJf+IcJI+AcLnae3Ukxqc98yAMbuJ0AZXjkvNGemhybc1AbO86PK4/lBCY x3p091sZC7t0/thaWVmMdKP5/CeCifYNZll4wIbOk+PtoAUeAUW/Ug14SmoVDD0vh6/A V+eGQTZiFfvjo/U/l8qVQrOC/OAheosFzSEKZ+QNlCmJ3uCttPc4EwK0pCO3Pr2PZXd1 LgCg== X-Gm-Message-State: AOJu0Yxhx2/5SXNTIc/qSkst4uXXe/bQDXJzNsYx064GiGW5DNeC+xbc +JCZMwCVJfq2dcUOssLaVoR1yrB80msr7MXJwh47jOXJCAQvkY4SHZKQJIdDaDNZbrq+VjO1Xci 1SZ1gFwW9YW4MnCTNahCx/+fUcYAuOqu4kh1CS1O+0uvXk5axx9xpZ2JxmfmzagZWe3jAZHTjD3 HluPltxYJE771vys5ajZjc0/Tj3Bqh0ajVkeJTG7di X-Gm-Gg: AY/fxX70Piu9G78tVmvb9Xy6bNU4qcWa5Pggu3NRu2WqqjileCILDg3qWCNiYAxV1TF V0AS9609H3RSrZzJ4b7DaYgs3uaN/R0ssP5oZMzoZa8DB4ztfO2kg4MJFlzUNjKxN/CxtALIeFb wFx47hXZ4ftSy/BFAxtYerwVkUl1JD7tLyc1RoE7nWETl50LeeOco5xPw48Pwl1z72COtaa1gWn BAJhnRmFKM09wdiS8N1YxgEoub+kcP3Lr5cC0Qs/bw5M7UIL2KFRfLeMDC0Mm0kwSPa5++LXSqh qznXQGwtInLRT0g6yM4OCz3ucvoADzg6lUslQ0c1xCGueNSp7No3xj/iVwuckx1MASCAAHYGyB1 naEaMHDaThG70p4NaQQgMqNMWRB2m/T0FrjOw+29zIc1+UnDqDdiP6ltUoGyROkgKkYZQEJI/Pr y1QcuC1YhulDPwJP8= X-Received: by 2002:a05:600c:45d3:b0:47d:4044:4ada with SMTP id 5b1f17b1804b1-47d40444b44mr115171985e9.13.1766827005381; Sat, 27 Dec 2025 01:16:45 -0800 (PST) X-Google-Smtp-Source: AGHT+IFihHyz+nwyIPQcyCl4LUKIrp6Ht8SmeLl4nlEwBJAGaStZtC7XfKBrd4NZjZvdg2y8MOUwjQ== X-Received: by 2002:a05:600c:45d3:b0:47d:4044:4ada with SMTP id 5b1f17b1804b1-47d40444b44mr115170925e9.13.1766827003029; Sat, 27 Dec 2025 01:16:43 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 010/153] include: move hw/irq.h to hw/core/ Date: Sat, 27 Dec 2025 10:13:57 +0100 Message-ID: <20251227091622.20725-11-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827177591158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- hw/net/pcnet.h | 2 +- hw/scsi/ncr53c710.h | 2 +- hw/usb/hcd-dwc2.h | 2 +- include/hw/adc/npcm7xx_adc.h | 2 +- include/hw/char/parallel.h | 2 +- include/hw/{ =3D> core}/irq.h | 0 include/hw/display/macfb.h | 2 +- include/hw/i2c/npcm7xx_smbus.h | 2 +- include/hw/ide/ahci-pci.h | 2 +- include/hw/input/pl050.h | 2 +- include/hw/ipack/ipack.h | 2 +- include/hw/misc/bcm2835_mphi.h | 2 +- include/hw/misc/npcm7xx_mft.h | 2 +- include/hw/misc/npcm7xx_pwm.h | 2 +- include/hw/misc/xlnx-versal-trng.h | 2 +- include/hw/net/imx_fec.h | 2 +- include/hw/net/npcm7xx_emc.h | 2 +- include/hw/net/npcm_gmac.h | 2 +- include/hw/nvram/xlnx-bbram.h | 2 +- include/hw/nvram/xlnx-versal-efuse.h | 2 +- include/hw/nvram/xlnx-zynqmp-efuse.h | 2 +- include/hw/ppc/spapr_vio.h | 2 +- include/hw/timer/bcm2835_systmr.h | 2 +- include/hw/timer/stellaris-gptm.h | 2 +- include/hw/watchdog/sbsa_gwdt.h | 2 +- include/hw/watchdog/wdt_imx2.h | 2 +- rust/hw/core/wrapper.h | 2 +- accel/kvm/kvm-all.c | 2 +- hw/acpi/core.c | 2 +- hw/acpi/generic_event_device.c | 2 +- hw/acpi/piix4.c | 2 +- hw/adc/aspeed_adc.c | 2 +- hw/adc/zynq-xadc.c | 2 +- hw/alpha/typhoon.c | 2 +- hw/arm/armsse.c | 2 +- hw/arm/exynos4210.c | 2 +- hw/arm/exynos4_boards.c | 2 +- hw/arm/integratorcp.c | 2 +- hw/arm/mps2-tz.c | 2 +- hw/arm/musicpal.c | 2 +- hw/arm/omap1.c | 2 +- hw/arm/realview.c | 2 +- hw/arm/smmuv3.c | 2 +- hw/arm/stellaris.c | 2 +- hw/arm/strongarm.c | 2 +- hw/arm/versatilepb.c | 2 +- hw/arm/virt.c | 2 +- hw/audio/asc.c | 2 +- hw/audio/cs4231a.c | 2 +- hw/audio/gus.c | 2 +- hw/audio/marvell_88w8618.c | 2 +- hw/audio/pl041.c | 2 +- hw/audio/sb16.c | 2 +- hw/block/fdc-isa.c | 2 +- hw/block/fdc.c | 2 +- hw/char/avr_usart.c | 2 +- hw/char/bcm2835_aux.c | 2 +- hw/char/cadence_uart.c | 2 +- hw/char/cmsdk-apb-uart.c | 2 +- hw/char/diva-gsp.c | 2 +- hw/char/escc.c | 2 +- hw/char/exynos4210_uart.c | 2 +- hw/char/goldfish_tty.c | 2 +- hw/char/grlib_apbuart.c | 2 +- hw/char/ibex_uart.c | 2 +- hw/char/imx_serial.c | 2 +- hw/char/ipoctal232.c | 2 +- hw/char/max78000_uart.c | 2 +- hw/char/mcf_uart.c | 2 +- hw/char/nrf51_uart.c | 2 +- hw/char/pl011.c | 2 +- hw/char/renesas_sci.c | 2 +- hw/char/serial-pci-multi.c | 2 +- hw/char/serial-pci.c | 2 +- hw/char/serial.c | 2 +- hw/char/sh_serial.c | 2 +- hw/char/sifive_uart.c | 2 +- hw/char/stm32f2xx_usart.c | 2 +- hw/char/stm32l4x5_usart.c | 2 +- hw/char/xilinx_uartlite.c | 2 +- hw/core/gpio.c | 2 +- hw/core/irq.c | 2 +- hw/core/or-irq.c | 2 +- hw/core/qdev.c | 2 +- hw/core/split-irq.c | 2 +- hw/cpu/a15mpcore.c | 2 +- hw/cpu/a9mpcore.c | 2 +- hw/cpu/arm11mpcore.c | 2 +- hw/cpu/realview_mpcore.c | 2 +- hw/display/bcm2835_fb.c | 2 +- hw/display/cg3.c | 2 +- hw/display/dm163.c | 2 +- hw/display/exynos4210_fimd.c | 2 +- hw/display/g364fb.c | 2 +- hw/display/omap_lcdc.c | 2 +- hw/display/pl110.c | 2 +- hw/display/xlnx_dp.c | 2 +- hw/dma/bcm2835_dma.c | 2 +- hw/dma/omap_dma.c | 2 +- hw/dma/pl080.c | 2 +- hw/dma/pl330.c | 2 +- hw/dma/rc4030.c | 2 +- hw/dma/sifive_pdma.c | 2 +- hw/dma/sparc32_dma.c | 2 +- hw/dma/xilinx_axidma.c | 2 +- hw/dma/xlnx-zdma.c | 2 +- hw/dma/xlnx-zynq-devcfg.c | 2 +- hw/dma/xlnx_csu_dma.c | 2 +- hw/dma/xlnx_dpdma.c | 2 +- hw/gpio/aspeed_gpio.c | 2 +- hw/gpio/bcm2835_gpio.c | 2 +- hw/gpio/bcm2838_gpio.c | 2 +- hw/gpio/gpio_key.c | 2 +- hw/gpio/imx_gpio.c | 2 +- hw/gpio/mpc8xxx.c | 2 +- hw/gpio/npcm7xx_gpio.c | 2 +- hw/gpio/nrf51_gpio.c | 2 +- hw/gpio/omap_gpio.c | 2 +- hw/gpio/pca9552.c | 2 +- hw/gpio/pca9554.c | 2 +- hw/gpio/pcf8574.c | 2 +- hw/gpio/pl061.c | 2 +- hw/gpio/sifive_gpio.c | 2 +- hw/gpio/stm32l4x5_gpio.c | 2 +- hw/gpio/zaurus.c | 2 +- hw/i2c/allwinner-i2c.c | 2 +- hw/i2c/aspeed_i2c.c | 2 +- hw/i2c/bcm2835_i2c.c | 2 +- hw/i2c/bitbang_i2c.c | 2 +- hw/i2c/exynos4210_i2c.c | 2 +- hw/i2c/imx_i2c.c | 2 +- hw/i2c/mpc_i2c.c | 2 +- hw/i2c/omap_i2c.c | 2 +- hw/i2c/ppc4xx_i2c.c | 2 +- hw/i386/kvm/i8259.c | 2 +- hw/i386/kvm/xen_evtchn.c | 2 +- hw/i386/microvm.c | 2 +- hw/i386/pc_piix.c | 2 +- hw/i386/port92.c | 2 +- hw/i386/x86-common.c | 2 +- hw/i386/x86-cpu.c | 2 +- hw/i386/xen/xen-hvm.c | 2 +- hw/ide/ahci.c | 2 +- hw/ide/core.c | 2 +- hw/ide/macio.c | 2 +- hw/ide/pci.c | 2 +- hw/ide/via.c | 2 +- hw/input/lasips2.c | 2 +- hw/input/pckbd.c | 2 +- hw/input/pl050.c | 2 +- hw/input/ps2.c | 2 +- hw/input/stellaris_gamepad.c | 2 +- hw/intc/allwinner-a10-pic.c | 2 +- hw/intc/arm_gic.c | 2 +- hw/intc/arm_gicv2m.c | 2 +- hw/intc/arm_gicv3_cpuif.c | 2 +- hw/intc/armv7m_nvic.c | 2 +- hw/intc/aspeed_intc.c | 2 +- hw/intc/aspeed_vic.c | 2 +- hw/intc/bcm2835_ic.c | 2 +- hw/intc/bcm2836_control.c | 2 +- hw/intc/exynos4210_combiner.c | 2 +- hw/intc/exynos4210_gic.c | 2 +- hw/intc/goldfish_pic.c | 2 +- hw/intc/grlib_irqmp.c | 2 +- hw/intc/heathrow_pic.c | 2 +- hw/intc/i8259.c | 2 +- hw/intc/imx_avic.c | 2 +- hw/intc/loongarch_dintc.c | 2 +- hw/intc/loongarch_extioi.c | 2 +- hw/intc/loongarch_pch_msi.c | 2 +- hw/intc/loongarch_pch_pic.c | 2 +- hw/intc/loongson_ipi_common.c | 2 +- hw/intc/loongson_liointc.c | 2 +- hw/intc/mips_gic.c | 2 +- hw/intc/omap_intc.c | 2 +- hw/intc/ompic.c | 2 +- hw/intc/openpic.c | 2 +- hw/intc/pl190.c | 2 +- hw/intc/ppc-uic.c | 2 +- hw/intc/realview_gic.c | 2 +- hw/intc/riscv_aclint.c | 2 +- hw/intc/riscv_aplic.c | 2 +- hw/intc/riscv_imsic.c | 2 +- hw/intc/rx_icu.c | 2 +- hw/intc/sh_intc.c | 2 +- hw/intc/sifive_plic.c | 2 +- hw/intc/slavio_intctl.c | 2 +- hw/intc/xics.c | 2 +- hw/intc/xilinx_intc.c | 2 +- hw/intc/xive.c | 2 +- hw/intc/xlnx-pmu-iomod-intc.c | 2 +- hw/intc/xlnx-zynqmp-ipi.c | 2 +- hw/ipack/ipack.c | 2 +- hw/ipack/tpci200.c | 2 +- hw/ipmi/isa_ipmi_bt.c | 2 +- hw/ipmi/isa_ipmi_kcs.c | 2 +- hw/isa/i82378.c | 2 +- hw/isa/lpc_ich9.c | 2 +- hw/isa/piix.c | 2 +- hw/isa/vt82c686.c | 2 +- hw/loongarch/virt.c | 2 +- hw/m68k/mcf5206.c | 2 +- hw/m68k/mcf5208.c | 2 +- hw/m68k/mcf_intc.c | 2 +- hw/m68k/next-cube.c | 2 +- hw/m68k/q800-glue.c | 2 +- hw/mips/malta.c | 2 +- hw/mips/mips_int.c | 2 +- hw/misc/arm_sysctl.c | 2 +- hw/misc/armsse-mhu.c | 2 +- hw/misc/aspeed_hace.c | 2 +- hw/misc/aspeed_lpc.c | 2 +- hw/misc/aspeed_peci.c | 2 +- hw/misc/aspeed_xdma.c | 2 +- hw/misc/avr_power.c | 2 +- hw/misc/bcm2835_mbox.c | 2 +- hw/misc/bcm2835_property.c | 2 +- hw/misc/eccmemctl.c | 2 +- hw/misc/imx_rngc.c | 2 +- hw/misc/iotkit-secctl.c | 2 +- hw/misc/ivshmem-flat.c | 2 +- hw/misc/lasi.c | 2 +- hw/misc/mac_via.c | 2 +- hw/misc/macio/cuda.c | 2 +- hw/misc/macio/gpio.c | 2 +- hw/misc/macio/mac_dbdma.c | 2 +- hw/misc/macio/pmu.c | 2 +- hw/misc/max78000_aes.c | 2 +- hw/misc/max78000_gcr.c | 2 +- hw/misc/max78000_icc.c | 2 +- hw/misc/max78000_trng.c | 2 +- hw/misc/mchp_pfsoc_ioscb.c | 2 +- hw/misc/mchp_pfsoc_sysreg.c | 2 +- hw/misc/mos6522.c | 2 +- hw/misc/mps2-scc.c | 2 +- hw/misc/npcm7xx_mft.c | 2 +- hw/misc/npcm7xx_pwm.c | 2 +- hw/misc/nrf51_rng.c | 2 +- hw/misc/omap_clk.c | 2 +- hw/misc/pc-testdev.c | 2 +- hw/misc/sifive_e_aon.c | 2 +- hw/misc/slavio_misc.c | 2 +- hw/misc/stm32_rcc.c | 2 +- hw/misc/stm32f4xx_exti.c | 2 +- hw/misc/stm32f4xx_syscfg.c | 2 +- hw/misc/stm32l4x5_exti.c | 2 +- hw/misc/stm32l4x5_rcc.c | 2 +- hw/misc/stm32l4x5_syscfg.c | 2 +- hw/misc/tz-mpc.c | 2 +- hw/misc/tz-msc.c | 2 +- hw/misc/tz-ppc.c | 2 +- hw/misc/xlnx-versal-cframe-reg.c | 2 +- hw/misc/xlnx-versal-cfu.c | 2 +- hw/misc/xlnx-versal-crl.c | 2 +- hw/misc/xlnx-versal-pmc-iou-slcr.c | 2 +- hw/misc/xlnx-versal-xramc.c | 2 +- hw/misc/xlnx-zynqmp-apu-ctrl.c | 2 +- hw/misc/xlnx-zynqmp-crf.c | 2 +- hw/net/allwinner-sun8i-emac.c | 2 +- hw/net/allwinner_emac.c | 2 +- hw/net/cadence_gem.c | 2 +- hw/net/can/can_kvaser_pci.c | 2 +- hw/net/can/can_mioe3680_pci.c | 2 +- hw/net/can/can_pcm3680_pci.c | 2 +- hw/net/can/can_sja1000.c | 2 +- hw/net/can/ctucan_core.c | 2 +- hw/net/can/ctucan_pci.c | 2 +- hw/net/can/xlnx-versal-canfd.c | 2 +- hw/net/can/xlnx-zynqmp-can.c | 2 +- hw/net/dp8393x.c | 2 +- hw/net/fsl_etsec/etsec.c | 2 +- hw/net/ftgmac100.c | 2 +- hw/net/i82596.c | 2 +- hw/net/imx_fec.c | 2 +- hw/net/lan9118.c | 2 +- hw/net/lan9118_phy.c | 2 +- hw/net/mcf_fec.c | 2 +- hw/net/msf2-emac.c | 2 +- hw/net/mv88w8618_eth.c | 2 +- hw/net/ne2000-pci.c | 2 +- hw/net/ne2000.c | 2 +- hw/net/npcm7xx_emc.c | 2 +- hw/net/opencores_eth.c | 2 +- hw/net/pcnet-pci.c | 2 +- hw/net/pcnet.c | 2 +- hw/net/smc91c111.c | 2 +- hw/net/stellaris_enet.c | 2 +- hw/net/tulip.c | 2 +- hw/net/xgmac.c | 2 +- hw/net/xilinx_axienet.c | 2 +- hw/net/xilinx_ethlite.c | 2 +- hw/nubus/nubus-device.c | 2 +- hw/openrisc/openrisc_sim.c | 2 +- hw/openrisc/virt.c | 2 +- hw/pci-host/articia.c | 2 +- hw/pci-host/aspeed_pcie.c | 2 +- hw/pci-host/astro.c | 2 +- hw/pci-host/bonito.c | 2 +- hw/pci-host/designware.c | 2 +- hw/pci-host/dino.c | 2 +- hw/pci-host/gpex.c | 2 +- hw/pci-host/grackle.c | 2 +- hw/pci-host/gt64120.c | 2 +- hw/pci-host/mv64361.c | 2 +- hw/pci-host/pnv_phb3.c | 2 +- hw/pci-host/pnv_phb3_msi.c | 2 +- hw/pci-host/pnv_phb4.c | 2 +- hw/pci-host/ppc440_pcix.c | 2 +- hw/pci-host/ppc4xx_pci.c | 2 +- hw/pci-host/ppce500.c | 2 +- hw/pci-host/raven.c | 2 +- hw/pci-host/sabre.c | 2 +- hw/pci-host/sh_pci.c | 2 +- hw/pci-host/uninorth.c | 2 +- hw/pci-host/versatile.c | 2 +- hw/pci-host/xilinx-pcie.c | 2 +- hw/pci/pci.c | 2 +- hw/ppc/e500.c | 2 +- hw/ppc/pegasos.c | 2 +- hw/ppc/pnv_chiptod.c | 2 +- hw/ppc/pnv_i2c.c | 2 +- hw/ppc/pnv_lpc.c | 2 +- hw/ppc/pnv_occ.c | 2 +- hw/ppc/pnv_psi.c | 2 +- hw/ppc/pnv_sbe.c | 2 +- hw/ppc/ppc.c | 2 +- hw/ppc/ppc440_uc.c | 2 +- hw/ppc/ppc4xx_sdram.c | 2 +- hw/ppc/prep_systemio.c | 2 +- hw/ppc/spapr_events.c | 2 +- hw/ppc/spapr_irq.c | 2 +- hw/ppc/spapr_pci.c | 2 +- hw/riscv/riscv-iommu-sys.c | 2 +- hw/riscv/sifive_u.c | 2 +- hw/rtc/exynos4210_rtc.c | 2 +- hw/rtc/goldfish_rtc.c | 2 +- hw/rtc/ls7a_rtc.c | 2 +- hw/rtc/m48t59.c | 2 +- hw/rtc/mc146818rtc.c | 2 +- hw/rtc/pl031.c | 2 +- hw/rtc/xlnx-zynqmp-rtc.c | 2 +- hw/scsi/esp-pci.c | 2 +- hw/scsi/esp.c | 2 +- hw/scsi/lsi53c895a.c | 2 +- hw/scsi/ncr53c710.c | 2 +- hw/sd/allwinner-sdhost.c | 2 +- hw/sd/aspeed_sdhci.c | 2 +- hw/sd/bcm2835_sdhost.c | 2 +- hw/sd/omap_mmc.c | 2 +- hw/sd/pl181.c | 2 +- hw/sd/sd.c | 2 +- hw/sd/sdhci-pci.c | 2 +- hw/sd/sdhci.c | 2 +- hw/sensor/adm1266.c | 2 +- hw/sensor/adm1272.c | 2 +- hw/sensor/max31785.c | 2 +- hw/sensor/max34451.c | 2 +- hw/sensor/tmp105.c | 2 +- hw/sh4/r2d.c | 2 +- hw/sh4/sh7750.c | 2 +- hw/sparc/leon3.c | 2 +- hw/sparc/sun4m.c | 2 +- hw/sparc/sun4m_iommu.c | 2 +- hw/sparc64/sun4u.c | 2 +- hw/ssi/allwinner-a10-spi.c | 2 +- hw/ssi/aspeed_smc.c | 2 +- hw/ssi/bcm2835_spi.c | 2 +- hw/ssi/ibex_spi_host.c | 2 +- hw/ssi/imx_spi.c | 2 +- hw/ssi/mss-spi.c | 2 +- hw/ssi/npcm7xx_fiu.c | 2 +- hw/ssi/npcm_pspi.c | 2 +- hw/ssi/pl022.c | 2 +- hw/ssi/pnv_spi.c | 2 +- hw/ssi/sifive_spi.c | 2 +- hw/ssi/xilinx_spi.c | 2 +- hw/ssi/xilinx_spips.c | 2 +- hw/ssi/xlnx-versal-ospi.c | 2 +- hw/timer/a9gtimer.c | 2 +- hw/timer/allwinner-a10-pit.c | 2 +- hw/timer/arm_mptimer.c | 2 +- hw/timer/arm_timer.c | 2 +- hw/timer/armv7m_systick.c | 2 +- hw/timer/aspeed_timer.c | 2 +- hw/timer/avr_timer16.c | 2 +- hw/timer/cadence_ttc.c | 2 +- hw/timer/cmsdk-apb-dualtimer.c | 2 +- hw/timer/cmsdk-apb-timer.c | 2 +- hw/timer/exynos4210_mct.c | 2 +- hw/timer/exynos4210_pwm.c | 2 +- hw/timer/grlib_gptimer.c | 2 +- hw/timer/hpet.c | 2 +- hw/timer/i8254.c | 2 +- hw/timer/ibex_timer.c | 2 +- hw/timer/imx_epit.c | 2 +- hw/timer/imx_gpt.c | 2 +- hw/timer/mss-timer.c | 2 +- hw/timer/npcm7xx_timer.c | 2 +- hw/timer/nrf51_timer.c | 2 +- hw/timer/pxa2xx_timer.c | 2 +- hw/timer/renesas_cmt.c | 2 +- hw/timer/renesas_tmr.c | 2 +- hw/timer/sh_timer.c | 2 +- hw/timer/sifive_pwm.c | 2 +- hw/timer/slavio_timer.c | 2 +- hw/timer/sse-timer.c | 2 +- hw/timer/stm32f2xx_timer.c | 2 +- hw/timer/xilinx_timer.c | 2 +- hw/tpm/tpm_tis_common.c | 2 +- hw/ufs/ufs.c | 2 +- hw/usb/hcd-ehci.c | 2 +- hw/usb/hcd-ohci-sysbus.c | 2 +- hw/usb/hcd-ohci.c | 2 +- hw/usb/hcd-uhci.c | 2 +- hw/usb/hcd-xhci-sysbus.c | 2 +- hw/usb/vt82c686-uhci-pci.c | 2 +- hw/usb/xlnx-versal-usb2-ctrl-regs.c | 2 +- hw/virtio/virtio-mmio.c | 2 +- hw/vmapple/aes.c | 2 +- hw/vmapple/vmapple.c | 2 +- hw/watchdog/cmsdk-apb-watchdog.c | 2 +- hw/xen/xen-pvh-common.c | 2 +- hw/xtensa/mx_pic.c | 2 +- hw/xtensa/pic_cpu.c | 2 +- system/qtest.c | 2 +- target/arm/cpregs-gcs.c | 2 +- target/arm/cpregs-pmu.c | 2 +- target/arm/helper.c | 2 +- target/arm/hvf/hvf.c | 2 +- target/arm/kvm.c | 2 +- target/i386/tcg/system/fpu_helper.c | 2 +- target/loongarch/kvm/kvm.c | 2 +- target/loongarch/tcg/csr_helper.c | 2 +- target/mips/system/cp0_timer.c | 2 +- target/riscv/kvm/kvm-cpu.c | 2 +- target/rx/helper.c | 2 +- hw/display/apple-gfx-mmio.m | 2 +- 438 files changed, 437 insertions(+), 437 deletions(-) rename include/hw/{ =3D> core}/irq.h (100%) diff --git a/hw/net/pcnet.h b/hw/net/pcnet.h index a94356ec30b..d12e7cbf9e2 100644 --- a/hw/net/pcnet.h +++ b/hw/net/pcnet.h @@ -8,7 +8,7 @@ #define PCNET_LOOPTEST_NOCRC 2 =20 #include "system/memory.h" -#include "hw/irq.h" +#include "hw/core/irq.h" =20 /* BUS CONFIGURATION REGISTERS */ #define BCR_MSRDA 0 diff --git a/hw/scsi/ncr53c710.h b/hw/scsi/ncr53c710.h index 6d30f9b6632..9ae64a182d5 100644 --- a/hw/scsi/ncr53c710.h +++ b/hw/scsi/ncr53c710.h @@ -21,7 +21,7 @@ #include "qemu/fifo8.h" #include "qom/object.h" #include "system/memory.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qemu/timer.h" =20 #define TYPE_NCR710_SCSI "ncr710-scsi" diff --git a/hw/usb/hcd-dwc2.h b/hw/usb/hcd-dwc2.h index 0c02392ade0..a99409a654b 100644 --- a/hw/usb/hcd-dwc2.h +++ b/hw/usb/hcd-dwc2.h @@ -20,7 +20,7 @@ #define HW_USB_HCD_DWC2_H =20 #include "qemu/timer.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "hw/usb/usb.h" #include "system/dma.h" diff --git a/include/hw/adc/npcm7xx_adc.h b/include/hw/adc/npcm7xx_adc.h index a0c56d42365..02dc1902fce 100644 --- a/include/hw/adc/npcm7xx_adc.h +++ b/include/hw/adc/npcm7xx_adc.h @@ -17,7 +17,7 @@ #define NPCM7XX_ADC_H =20 #include "hw/core/clock.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "qemu/timer.h" =20 diff --git a/include/hw/char/parallel.h b/include/hw/char/parallel.h index 3f8d9b59a76..f2c92eb5bc0 100644 --- a/include/hw/char/parallel.h +++ b/include/hw/char/parallel.h @@ -3,7 +3,7 @@ =20 #include "system/memory.h" #include "hw/isa/isa.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "chardev/char-fe.h" #include "chardev/char.h" =20 diff --git a/include/hw/irq.h b/include/hw/core/irq.h similarity index 100% rename from include/hw/irq.h rename to include/hw/core/irq.h diff --git a/include/hw/display/macfb.h b/include/hw/display/macfb.h index 0fae1f33a65..356a03ce31a 100644 --- a/include/hw/display/macfb.h +++ b/include/hw/display/macfb.h @@ -14,7 +14,7 @@ #define MACFB_H =20 #include "system/memory.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/nubus/nubus.h" #include "hw/sysbus.h" #include "ui/console.h" diff --git a/include/hw/i2c/npcm7xx_smbus.h b/include/hw/i2c/npcm7xx_smbus.h index 9c544c561b7..f5adb69c672 100644 --- a/include/hw/i2c/npcm7xx_smbus.h +++ b/include/hw/i2c/npcm7xx_smbus.h @@ -18,7 +18,7 @@ =20 #include "system/memory.h" #include "hw/i2c/i2c.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" =20 /* diff --git a/include/hw/ide/ahci-pci.h b/include/hw/ide/ahci-pci.h index face1a9a4a4..85cd899abe5 100644 --- a/include/hw/ide/ahci-pci.h +++ b/include/hw/ide/ahci-pci.h @@ -9,7 +9,7 @@ #include "qom/object.h" #include "hw/ide/ahci.h" #include "hw/pci/pci_device.h" -#include "hw/irq.h" +#include "hw/core/irq.h" =20 #define TYPE_ICH9_AHCI "ich9-ahci" OBJECT_DECLARE_SIMPLE_TYPE(AHCIPCIState, ICH9_AHCI) diff --git a/include/hw/input/pl050.h b/include/hw/input/pl050.h index 4cb8985f31a..db662654c58 100644 --- a/include/hw/input/pl050.h +++ b/include/hw/input/pl050.h @@ -13,7 +13,7 @@ #include "hw/sysbus.h" #include "migration/vmstate.h" #include "hw/input/ps2.h" -#include "hw/irq.h" +#include "hw/core/irq.h" =20 struct PL050DeviceClass { SysBusDeviceClass parent_class; diff --git a/include/hw/ipack/ipack.h b/include/hw/ipack/ipack.h index 00f397fd020..d86ef84233c 100644 --- a/include/hw/ipack/ipack.h +++ b/include/hw/ipack/ipack.h @@ -12,7 +12,7 @@ #define QEMU_IPACK_H =20 #include "hw/qdev-core.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qom/object.h" =20 =20 diff --git a/include/hw/misc/bcm2835_mphi.h b/include/hw/misc/bcm2835_mphi.h index 3f1997e5f24..1a451685e8e 100644 --- a/include/hw/misc/bcm2835_mphi.h +++ b/include/hw/misc/bcm2835_mphi.h @@ -17,7 +17,7 @@ #ifndef HW_MISC_BCM2835_MPHI_H #define HW_MISC_BCM2835_MPHI_H =20 -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "qom/object.h" =20 diff --git a/include/hw/misc/npcm7xx_mft.h b/include/hw/misc/npcm7xx_mft.h index 54a2c2a82e6..79855b6f25d 100644 --- a/include/hw/misc/npcm7xx_mft.h +++ b/include/hw/misc/npcm7xx_mft.h @@ -18,7 +18,7 @@ =20 #include "system/memory.h" #include "hw/core/clock.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "qom/object.h" =20 diff --git a/include/hw/misc/npcm7xx_pwm.h b/include/hw/misc/npcm7xx_pwm.h index f697a77cdca..6a54b40005d 100644 --- a/include/hw/misc/npcm7xx_pwm.h +++ b/include/hw/misc/npcm7xx_pwm.h @@ -18,7 +18,7 @@ =20 #include "hw/core/clock.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" =20 /* Each PWM module holds 4 PWM channels. */ #define NPCM7XX_PWM_PER_MODULE 4 diff --git a/include/hw/misc/xlnx-versal-trng.h b/include/hw/misc/xlnx-vers= al-trng.h index d96f8f9eff3..4e516216dbe 100644 --- a/include/hw/misc/xlnx-versal-trng.h +++ b/include/hw/misc/xlnx-versal-trng.h @@ -26,7 +26,7 @@ #ifndef XLNX_VERSAL_TRNG_H #define XLNX_VERSAL_TRNG_H =20 -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "hw/register.h" =20 diff --git a/include/hw/net/imx_fec.h b/include/hw/net/imx_fec.h index 83b21637eeb..99fc285402c 100644 --- a/include/hw/net/imx_fec.h +++ b/include/hw/net/imx_fec.h @@ -32,7 +32,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(IMXFECState, IMX_FEC) =20 #include "hw/sysbus.h" #include "hw/net/lan9118_phy.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "net/net.h" =20 #define ENET_EIR 1 diff --git a/include/hw/net/npcm7xx_emc.h b/include/hw/net/npcm7xx_emc.h index b789007160a..03c9941d82d 100644 --- a/include/hw/net/npcm7xx_emc.h +++ b/include/hw/net/npcm7xx_emc.h @@ -17,7 +17,7 @@ #ifndef NPCM7XX_EMC_H #define NPCM7XX_EMC_H =20 -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "net/net.h" =20 diff --git a/include/hw/net/npcm_gmac.h b/include/hw/net/npcm_gmac.h index 6340ffe92ca..44ee7b1bcba 100644 --- a/include/hw/net/npcm_gmac.h +++ b/include/hw/net/npcm_gmac.h @@ -20,7 +20,7 @@ #ifndef NPCM_GMAC_H #define NPCM_GMAC_H =20 -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "net/net.h" =20 diff --git a/include/hw/nvram/xlnx-bbram.h b/include/hw/nvram/xlnx-bbram.h index af90900bfc6..ad2e4a250f5 100644 --- a/include/hw/nvram/xlnx-bbram.h +++ b/include/hw/nvram/xlnx-bbram.h @@ -28,7 +28,7 @@ =20 #include "system/block-backend.h" #include "hw/qdev-core.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "hw/register.h" =20 diff --git a/include/hw/nvram/xlnx-versal-efuse.h b/include/hw/nvram/xlnx-v= ersal-efuse.h index afa4f4f9960..37d09da4809 100644 --- a/include/hw/nvram/xlnx-versal-efuse.h +++ b/include/hw/nvram/xlnx-versal-efuse.h @@ -22,7 +22,7 @@ #ifndef XLNX_VERSAL_EFUSE_H #define XLNX_VERSAL_EFUSE_H =20 -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "hw/register.h" #include "hw/nvram/xlnx-efuse.h" diff --git a/include/hw/nvram/xlnx-zynqmp-efuse.h b/include/hw/nvram/xlnx-z= ynqmp-efuse.h index 7fb12df3fbb..6eb3fea8fa2 100644 --- a/include/hw/nvram/xlnx-zynqmp-efuse.h +++ b/include/hw/nvram/xlnx-zynqmp-efuse.h @@ -22,7 +22,7 @@ #ifndef XLNX_ZYNQMP_EFUSE_H #define XLNX_ZYNQMP_EFUSE_H =20 -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "hw/register.h" #include "hw/nvram/xlnx-efuse.h" diff --git a/include/hw/ppc/spapr_vio.h b/include/hw/ppc/spapr_vio.h index b8de4b06fb1..0ea0dbae8b1 100644 --- a/include/hw/ppc/spapr_vio.h +++ b/include/hw/ppc/spapr_vio.h @@ -24,7 +24,7 @@ =20 #include "hw/ppc/spapr.h" #include "system/dma.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qom/object.h" =20 #define TYPE_VIO_SPAPR_DEVICE "vio-spapr-device" diff --git a/include/hw/timer/bcm2835_systmr.h b/include/hw/timer/bcm2835_s= ystmr.h index a8f605beeb6..93cb3415a68 100644 --- a/include/hw/timer/bcm2835_systmr.h +++ b/include/hw/timer/bcm2835_systmr.h @@ -10,7 +10,7 @@ #define BCM2835_SYSTMR_H =20 #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qemu/timer.h" #include "qom/object.h" =20 diff --git a/include/hw/timer/stellaris-gptm.h b/include/hw/timer/stellaris= -gptm.h index c705508b829..9d663b58dfa 100644 --- a/include/hw/timer/stellaris-gptm.h +++ b/include/hw/timer/stellaris-gptm.h @@ -12,7 +12,7 @@ =20 #include "qom/object.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/core/clock.h" =20 #define TYPE_STELLARIS_GPTM "stellaris-gptm" diff --git a/include/hw/watchdog/sbsa_gwdt.h b/include/hw/watchdog/sbsa_gwd= t.h index 4bdc6c6fdb6..ace8fe04c87 100644 --- a/include/hw/watchdog/sbsa_gwdt.h +++ b/include/hw/watchdog/sbsa_gwdt.h @@ -14,7 +14,7 @@ =20 #include "qemu/bitops.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" =20 #define TYPE_WDT_SBSA "sbsa_gwdt" #define SBSA_GWDT(obj) \ diff --git a/include/hw/watchdog/wdt_imx2.h b/include/hw/watchdog/wdt_imx2.h index 600a552d2e2..ddc49aaea4f 100644 --- a/include/hw/watchdog/wdt_imx2.h +++ b/include/hw/watchdog/wdt_imx2.h @@ -14,7 +14,7 @@ =20 #include "qemu/bitops.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/ptimer.h" #include "qom/object.h" =20 diff --git a/rust/hw/core/wrapper.h b/rust/hw/core/wrapper.h index 77b541f83f9..e5c7e0518a5 100644 --- a/rust/hw/core/wrapper.h +++ b/rust/hw/core/wrapper.h @@ -29,4 +29,4 @@ typedef enum memory_order { #include "hw/qdev-clock.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" -#include "hw/irq.h" +#include "hw/core/irq.h" diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 02b78717b1f..f85eb42d78b 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -42,7 +42,7 @@ #include "qemu/event_notifier.h" #include "qemu/main-loop.h" #include "trace.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qapi/visitor.h" #include "qapi/qapi-types-common.h" #include "qapi/qapi-visit-common.h" diff --git a/hw/acpi/core.c b/hw/acpi/core.c index ff165828033..2b74bed8823 100644 --- a/hw/acpi/core.c +++ b/hw/acpi/core.c @@ -20,7 +20,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/acpi/acpi.h" #include "hw/nvram/fw_cfg.h" #include "qemu/config-file.h" diff --git a/hw/acpi/generic_event_device.c b/hw/acpi/generic_event_device.c index e7b773d84d5..675ec43d094 100644 --- a/hw/acpi/generic_event_device.c +++ b/hw/acpi/generic_event_device.c @@ -15,7 +15,7 @@ #include "hw/acpi/pcihp.h" #include "hw/acpi/generic_event_device.h" #include "hw/pci/pci.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/mem/pc-dimm.h" #include "hw/mem/nvdimm.h" #include "hw/pci/pci_device.h" diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c index 9e0892a51f8..1e3c6345411 100644 --- a/hw/acpi/piix4.c +++ b/hw/acpi/piix4.c @@ -20,7 +20,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/isa/apm.h" #include "hw/i2c/pm_smbus.h" #include "hw/pci/pci.h" diff --git a/hw/adc/aspeed_adc.c b/hw/adc/aspeed_adc.c index 3e820cae1e3..564979f24dd 100644 --- a/hw/adc/aspeed_adc.c +++ b/hw/adc/aspeed_adc.c @@ -11,7 +11,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qemu/log.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" #include "hw/adc/aspeed_adc.h" diff --git a/hw/adc/zynq-xadc.c b/hw/adc/zynq-xadc.c index 748a51ba78b..1934ef0b1a9 100644 --- a/hw/adc/zynq-xadc.c +++ b/hw/adc/zynq-xadc.c @@ -14,7 +14,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/adc/zynq-xadc.h" #include "migration/vmstate.h" #include "qemu/timer.h" diff --git a/hw/alpha/typhoon.c b/hw/alpha/typhoon.c index 4c56f981d71..01fda4b1c8a 100644 --- a/hw/alpha/typhoon.c +++ b/hw/alpha/typhoon.c @@ -13,7 +13,7 @@ #include "qapi/error.h" #include "hw/pci/pci_host.h" #include "cpu.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "alpha_sys.h" =20 =20 diff --git a/hw/arm/armsse.c b/hw/arm/armsse.c index 50ab7f48105..c0d99182bf9 100644 --- a/hw/arm/armsse.c +++ b/hw/arm/armsse.c @@ -22,7 +22,7 @@ #include "hw/arm/armsse.h" #include "hw/arm/armsse-version.h" #include "hw/arm/boot.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-clock.h" =20 /* diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c index 76001ff0dfc..2d8e257ca2a 100644 --- a/hw/arm/exynos4210.c +++ b/hw/arm/exynos4210.c @@ -26,7 +26,7 @@ #include "exec/tswap.h" #include "cpu.h" #include "hw/cpu/a9mpcore.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "system/blockdev.h" #include "system/system.h" #include "hw/sysbus.h" diff --git a/hw/arm/exynos4_boards.c b/hw/arm/exynos4_boards.c index 66af0e2376d..f07dd452fcb 100644 --- a/hw/arm/exynos4_boards.c +++ b/hw/arm/exynos4_boards.c @@ -34,7 +34,7 @@ #include "hw/net/lan9118.h" #include "hw/qdev-properties.h" #include "hw/core/boards.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "target/arm/cpu-qom.h" =20 #define SMDK_LAN9118_BASE_ADDR 0x05000000 diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c index 436fcdd5101..b24df11db92 100644 --- a/hw/arm/integratorcp.c +++ b/hw/arm/integratorcp.c @@ -24,7 +24,7 @@ #include "qemu/error-report.h" #include "hw/char/pl011.h" #include "hw/hw.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sd/sd.h" #include "qom/object.h" #include "qemu/audio.h" diff --git a/hw/arm/mps2-tz.c b/hw/arm/mps2-tz.c index 3188caf2228..a0d917f9a9e 100644 --- a/hw/arm/mps2-tz.c +++ b/hw/arm/mps2-tz.c @@ -75,7 +75,7 @@ #include "hw/core/split-irq.h" #include "hw/qdev-clock.h" #include "qom/object.h" -#include "hw/irq.h" +#include "hw/core/irq.h" =20 #define MPS2TZ_NUMIRQ_MAX 96 #define MPS2TZ_RAM_MAX 5 diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c index 3e624540960..9852e8f7648 100644 --- a/hw/arm/musicpal.c +++ b/hw/arm/musicpal.c @@ -27,7 +27,7 @@ #include "ui/console.h" #include "hw/i2c/i2c.h" #include "hw/i2c/bitbang_i2c.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/or-irq.h" #include "hw/audio/wm8750.h" #include "system/block-backend.h" diff --git a/hw/arm/omap1.c b/hw/arm/omap1.c index 74458fb7c69..994e5a919e1 100644 --- a/hw/arm/omap1.c +++ b/hw/arm/omap1.c @@ -25,7 +25,7 @@ #include "cpu.h" #include "system/address-spaces.h" #include "hw/hw.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/arm/boot.h" #include "hw/arm/omap.h" diff --git a/hw/arm/realview.c b/hw/arm/realview.c index 97008490f6a..65506768e41 100644 --- a/hw/arm/realview.c +++ b/hw/arm/realview.c @@ -27,7 +27,7 @@ #include "hw/char/pl011.h" #include "hw/cpu/a9mpcore.h" #include "hw/intc/realview_gic.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/i2c/arm_sbcon_i2c.h" #include "hw/sd/sd.h" #include "qemu/audio.h" diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index bcf8af8dc73..ae4fba15991 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -18,7 +18,7 @@ =20 #include "qemu/osdep.h" #include "qemu/bitops.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "hw/qdev-properties.h" diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c index d1cbf43777e..34cbcbe32c2 100644 --- a/hw/arm/stellaris.c +++ b/hw/arm/stellaris.c @@ -26,7 +26,7 @@ #include "hw/arm/armv7m.h" #include "hw/char/pl011.h" #include "hw/input/stellaris_gamepad.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/watchdog/cmsdk-apb-watchdog.h" #include "migration/vmstate.h" #include "hw/misc/unimp.h" diff --git a/hw/arm/strongarm.c b/hw/arm/strongarm.c index 059b07907d8..95dda078522 100644 --- a/hw/arm/strongarm.c +++ b/hw/arm/strongarm.c @@ -28,7 +28,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/sysbus.h" diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c index dd1047f6c62..94661b83d00 100644 --- a/hw/arm/versatilepb.c +++ b/hw/arm/versatilepb.c @@ -19,7 +19,7 @@ #include "hw/pci/pci.h" #include "hw/i2c/i2c.h" #include "hw/i2c/arm_sbcon_i2c.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/core/boards.h" #include "hw/block/flash.h" #include "qemu/error-report.h" diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 25fb2bab568..6155db2b093 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -68,7 +68,7 @@ #include "hw/intc/arm_gic.h" #include "hw/intc/arm_gicv3_common.h" #include "hw/intc/arm_gicv3_its_common.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "kvm_arm.h" #include "hvf_arm.h" #include "hw/firmware/smbios.h" diff --git a/hw/audio/asc.c b/hw/audio/asc.c index 0abb106979b..b6f42045003 100644 --- a/hw/audio/asc.c +++ b/hw/audio/asc.c @@ -14,7 +14,7 @@ #include "qemu/timer.h" #include "qapi/error.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qemu/audio.h" #include "hw/audio/asc.h" #include "hw/qdev-properties.h" diff --git a/hw/audio/cs4231a.c b/hw/audio/cs4231a.c index 98fdbc5b725..8368172f401 100644 --- a/hw/audio/cs4231a.c +++ b/hw/audio/cs4231a.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "hw/audio/model.h" #include "qemu/audio.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/isa/isa.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" diff --git a/hw/audio/gus.c b/hw/audio/gus.c index 68f89e994c2..6c41b25486e 100644 --- a/hw/audio/gus.c +++ b/hw/audio/gus.c @@ -27,7 +27,7 @@ #include "qemu/module.h" #include "hw/audio/model.h" #include "qemu/audio.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/isa/isa.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" diff --git a/hw/audio/marvell_88w8618.c b/hw/audio/marvell_88w8618.c index a483f4e70d1..ba9bd6befd7 100644 --- a/hw/audio/marvell_88w8618.c +++ b/hw/audio/marvell_88w8618.c @@ -13,7 +13,7 @@ #include "qemu/osdep.h" #include "hw/sysbus.h" #include "migration/vmstate.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/audio/wm8750.h" #include "qemu/audio.h" diff --git a/hw/audio/pl041.c b/hw/audio/pl041.c index fd3d09611fa..7bb2c81afcd 100644 --- a/hw/audio/pl041.c +++ b/hw/audio/pl041.c @@ -21,7 +21,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" #include "qemu/log.h" diff --git a/hw/audio/sb16.c b/hw/audio/sb16.c index 1e3c4caf5ef..6ca31a0e649 100644 --- a/hw/audio/sb16.c +++ b/hw/audio/sb16.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "hw/audio/model.h" #include "qemu/audio.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/isa/isa.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" diff --git a/hw/block/fdc-isa.c b/hw/block/fdc-isa.c index 6d1790e0e61..0034c3594ae 100644 --- a/hw/block/fdc-isa.c +++ b/hw/block/fdc-isa.c @@ -33,7 +33,7 @@ #include "qemu/error-report.h" #include "qemu/timer.h" #include "hw/acpi/acpi_aml_interface.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/isa/isa.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" diff --git a/hw/block/fdc.c b/hw/block/fdc.c index d0f08c7be54..e0e53ba0382 100644 --- a/hw/block/fdc.c +++ b/hw/block/fdc.c @@ -33,7 +33,7 @@ #include "qemu/error-report.h" #include "qemu/timer.h" #include "qemu/memalign.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/isa/isa.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" diff --git a/hw/char/avr_usart.c b/hw/char/avr_usart.c index fae15217e9f..e98ad53e447 100644 --- a/hw/char/avr_usart.c +++ b/hw/char/avr_usart.c @@ -22,7 +22,7 @@ #include "qemu/osdep.h" #include "hw/char/avr_usart.h" #include "qemu/log.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" =20 diff --git a/hw/char/bcm2835_aux.c b/hw/char/bcm2835_aux.c index 2b397f2ff39..03428efeea8 100644 --- a/hw/char/bcm2835_aux.c +++ b/hw/char/bcm2835_aux.c @@ -22,7 +22,7 @@ =20 #include "qemu/osdep.h" #include "hw/char/bcm2835_aux.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/vmstate.h" diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c index 0dfa356b6d0..738ba3114b9 100644 --- a/hw/char/cadence_uart.c +++ b/hw/char/cadence_uart.c @@ -30,7 +30,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "hw/char/cadence_uart.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-clock.h" #include "hw/qdev-properties-system.h" #include "trace.h" diff --git a/hw/char/cmsdk-apb-uart.c b/hw/char/cmsdk-apb-uart.c index 32090f3516f..a5ec61a0044 100644 --- a/hw/char/cmsdk-apb-uart.c +++ b/hw/char/cmsdk-apb-uart.c @@ -26,7 +26,7 @@ #include "chardev/char-fe.h" #include "chardev/char-serial.h" #include "hw/char/cmsdk-apb-uart.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties-system.h" =20 REG32(DATA, 0) diff --git a/hw/char/diva-gsp.c b/hw/char/diva-gsp.c index e1f0713cb79..835594e5cb6 100644 --- a/hw/char/diva-gsp.c +++ b/hw/char/diva-gsp.c @@ -18,7 +18,7 @@ #include "qemu/osdep.h" #include "qemu/units.h" #include "hw/char/serial.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci/pci_device.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" diff --git a/hw/char/escc.c b/hw/char/escc.c index afe4ca483e7..27269dca643 100644 --- a/hw/char/escc.c +++ b/hw/char/escc.c @@ -23,7 +23,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/sysbus.h" diff --git a/hw/char/exynos4210_uart.c b/hw/char/exynos4210_uart.c index 9e45d819904..8ba310fd7ac 100644 --- a/hw/char/exynos4210_uart.c +++ b/hw/char/exynos4210_uart.c @@ -30,7 +30,7 @@ #include "chardev/char-serial.h" =20 #include "hw/arm/exynos4210.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" =20 diff --git a/hw/char/goldfish_tty.c b/hw/char/goldfish_tty.c index a37408adae5..821b3218502 100644 --- a/hw/char/goldfish_tty.c +++ b/hw/char/goldfish_tty.c @@ -8,7 +8,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties-system.h" #include "hw/sysbus.h" #include "migration/vmstate.h" diff --git a/hw/char/grlib_apbuart.c b/hw/char/grlib_apbuart.c index b2d5a40bb4d..15925eb2e63 100644 --- a/hw/char/grlib_apbuart.c +++ b/hw/char/grlib_apbuart.c @@ -25,7 +25,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/char/grlib_uart.h" diff --git a/hw/char/ibex_uart.c b/hw/char/ibex_uart.c index d6f0d18c777..db852511091 100644 --- a/hw/char/ibex_uart.c +++ b/hw/char/ibex_uart.c @@ -27,7 +27,7 @@ =20 #include "qemu/osdep.h" #include "hw/char/ibex_uart.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-clock.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" diff --git a/hw/char/imx_serial.c b/hw/char/imx_serial.c index 509b0141d05..9f13236f29c 100644 --- a/hw/char/imx_serial.c +++ b/hw/char/imx_serial.c @@ -20,7 +20,7 @@ =20 #include "qemu/osdep.h" #include "hw/char/imx_serial.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/vmstate.h" diff --git a/hw/char/ipoctal232.c b/hw/char/ipoctal232.c index 25d7fc9574a..6e38916150c 100644 --- a/hw/char/ipoctal232.c +++ b/hw/char/ipoctal232.c @@ -10,7 +10,7 @@ =20 #include "qemu/osdep.h" #include "hw/ipack/ipack.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/vmstate.h" diff --git a/hw/char/max78000_uart.c b/hw/char/max78000_uart.c index c76c0e759b6..5fc933123e9 100644 --- a/hw/char/max78000_uart.c +++ b/hw/char/max78000_uart.c @@ -8,7 +8,7 @@ =20 #include "qemu/osdep.h" #include "hw/char/max78000_uart.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "qemu/log.h" diff --git a/hw/char/mcf_uart.c b/hw/char/mcf_uart.c index f14de59530c..d9d551924b3 100644 --- a/hw/char/mcf_uart.c +++ b/hw/char/mcf_uart.c @@ -7,7 +7,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "qemu/module.h" #include "qapi/error.h" diff --git a/hw/char/nrf51_uart.c b/hw/char/nrf51_uart.c index 41d423446f3..39d144538d1 100644 --- a/hw/char/nrf51_uart.c +++ b/hw/char/nrf51_uart.c @@ -16,7 +16,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "hw/char/nrf51_uart.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/vmstate.h" diff --git a/hw/char/pl011.c b/hw/char/pl011.c index 01335d9437d..75fdb8158e4 100644 --- a/hw/char/pl011.c +++ b/hw/char/pl011.c @@ -21,7 +21,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/char/pl011.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "hw/qdev-clock.h" #include "hw/qdev-properties.h" diff --git a/hw/char/renesas_sci.c b/hw/char/renesas_sci.c index b9d0ed1c89b..b32e41d5b8a 100644 --- a/hw/char/renesas_sci.c +++ b/hw/char/renesas_sci.c @@ -23,7 +23,7 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/registerfields.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" diff --git a/hw/char/serial-pci-multi.c b/hw/char/serial-pci-multi.c index 34f30fb70b8..34608569988 100644 --- a/hw/char/serial-pci-multi.c +++ b/hw/char/serial-pci-multi.c @@ -30,7 +30,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/char/serial.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci/pci_device.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" diff --git a/hw/char/serial-pci.c b/hw/char/serial-pci.c index 46efabc4cbe..d05d0898998 100644 --- a/hw/char/serial-pci.c +++ b/hw/char/serial-pci.c @@ -29,7 +29,7 @@ #include "qapi/error.h" #include "qemu/module.h" #include "hw/char/serial.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci/pci_device.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" diff --git a/hw/char/serial.c b/hw/char/serial.c index 03fec3fe75b..11685b397b7 100644 --- a/hw/char/serial.c +++ b/hw/char/serial.c @@ -26,7 +26,7 @@ #include "qemu/osdep.h" #include "qemu/bitops.h" #include "hw/char/serial.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "chardev/char-serial.h" #include "qapi/error.h" diff --git a/hw/char/sh_serial.c b/hw/char/sh_serial.c index 83227a84a60..ee430dd3d26 100644 --- a/hw/char/sh_serial.c +++ b/hw/char/sh_serial.c @@ -27,7 +27,7 @@ =20 #include "qemu/osdep.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-core.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" diff --git a/hw/char/sifive_uart.c b/hw/char/sifive_uart.c index e7357d585a1..473374d3de1 100644 --- a/hw/char/sifive_uart.c +++ b/hw/char/sifive_uart.c @@ -22,7 +22,7 @@ #include "migration/vmstate.h" #include "chardev/char.h" #include "chardev/char-fe.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/char/sifive_uart.h" #include "hw/qdev-properties-system.h" =20 diff --git a/hw/char/stm32f2xx_usart.c b/hw/char/stm32f2xx_usart.c index 45c30643a74..49bbda03b87 100644 --- a/hw/char/stm32f2xx_usart.c +++ b/hw/char/stm32f2xx_usart.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/char/stm32f2xx_usart.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "qemu/log.h" diff --git a/hw/char/stm32l4x5_usart.c b/hw/char/stm32l4x5_usart.c index 60d8ab5a0e5..ce4a35da8f4 100644 --- a/hw/char/stm32l4x5_usart.c +++ b/hw/char/stm32l4x5_usart.c @@ -24,7 +24,7 @@ #include "migration/vmstate.h" #include "hw/char/stm32l4x5_usart.h" #include "hw/core/clock.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-clock.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" diff --git a/hw/char/xilinx_uartlite.c b/hw/char/xilinx_uartlite.c index 8feb58a898e..da1ecd249c7 100644 --- a/hw/char/xilinx_uartlite.c +++ b/hw/char/xilinx_uartlite.c @@ -26,7 +26,7 @@ #include "qemu/log.h" #include "qapi/error.h" #include "hw/char/xilinx_uartlite.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/sysbus.h" diff --git a/hw/core/gpio.c b/hw/core/gpio.c index c7c2936fc55..11f26a2f2dd 100644 --- a/hw/core/gpio.c +++ b/hw/core/gpio.c @@ -19,7 +19,7 @@ =20 #include "qemu/osdep.h" #include "hw/qdev-core.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qapi/error.h" =20 static NamedGPIOList *qdev_get_named_gpio_list(DeviceState *dev, diff --git a/hw/core/irq.c b/hw/core/irq.c index 0c768f7704e..106805e2417 100644 --- a/hw/core/irq.c +++ b/hw/core/irq.c @@ -23,7 +23,7 @@ */ #include "qemu/osdep.h" #include "qemu/main-loop.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qom/object.h" =20 void qemu_set_irq(qemu_irq irq, int level) diff --git a/hw/core/or-irq.c b/hw/core/or-irq.c index 3942c709939..61006672ad6 100644 --- a/hw/core/or-irq.c +++ b/hw/core/or-irq.c @@ -23,7 +23,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/or-irq.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" diff --git a/hw/core/qdev.c b/hw/core/qdev.c index 423a3a1d660..f9f56c66aec 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -32,7 +32,7 @@ #include "qapi/visitor.h" #include "qemu/error-report.h" #include "qemu/option.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/core/boards.h" #include "hw/sysbus.h" diff --git a/hw/core/split-irq.c b/hw/core/split-irq.c index f8b48750c5b..d0aaa108eb9 100644 --- a/hw/core/split-irq.c +++ b/hw/core/split-irq.c @@ -25,7 +25,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/split-irq.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "qapi/error.h" #include "qemu/module.h" diff --git a/hw/cpu/a15mpcore.c b/hw/cpu/a15mpcore.c index bd36dd94d4a..1a6fb914f3b 100644 --- a/hw/cpu/a15mpcore.c +++ b/hw/cpu/a15mpcore.c @@ -22,7 +22,7 @@ #include "qapi/error.h" #include "qemu/module.h" #include "hw/cpu/a15mpcore.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "system/kvm.h" #include "kvm_arm.h" diff --git a/hw/cpu/a9mpcore.c b/hw/cpu/a9mpcore.c index 64bebbd19cb..9f8e0f70c49 100644 --- a/hw/cpu/a9mpcore.c +++ b/hw/cpu/a9mpcore.c @@ -12,7 +12,7 @@ #include "qapi/error.h" #include "qemu/module.h" #include "hw/cpu/a9mpcore.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/core/cpu.h" #include "target/arm/cpu-qom.h" diff --git a/hw/cpu/arm11mpcore.c b/hw/cpu/arm11mpcore.c index 01772e7f77b..1953d12f61b 100644 --- a/hw/cpu/arm11mpcore.c +++ b/hw/cpu/arm11mpcore.c @@ -12,7 +12,7 @@ #include "qemu/module.h" #include "hw/cpu/arm11mpcore.h" #include "hw/intc/realview_gic.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" =20 #define ARM11MPCORE_NUM_GIC_PRIORITY_BITS 4 diff --git a/hw/cpu/realview_mpcore.c b/hw/cpu/realview_mpcore.c index 099b71a9ef2..525f03e9e54 100644 --- a/hw/cpu/realview_mpcore.c +++ b/hw/cpu/realview_mpcore.c @@ -13,7 +13,7 @@ #include "qemu/module.h" #include "hw/cpu/arm11mpcore.h" #include "hw/intc/realview_gic.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qom/object.h" =20 #define TYPE_REALVIEW_MPCORE_RIRQ "realview_mpcore" diff --git a/hw/display/bcm2835_fb.c b/hw/display/bcm2835_fb.c index 1bb2ee45a01..f8f13b55cb4 100644 --- a/hw/display/bcm2835_fb.c +++ b/hw/display/bcm2835_fb.c @@ -26,7 +26,7 @@ #include "qapi/error.h" #include "hw/display/bcm2835_fb.h" #include "hw/hw.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "ui/console.h" #include "framebuffer.h" #include "ui/pixel_ops.h" diff --git a/hw/display/cg3.c b/hw/display/cg3.c index daeef152174..8191237124e 100644 --- a/hw/display/cg3.c +++ b/hw/display/cg3.c @@ -30,7 +30,7 @@ #include "ui/console.h" #include "hw/sysbus.h" #include "migration/vmstate.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/loader.h" #include "hw/qdev-properties.h" #include "qemu/log.h" diff --git a/hw/display/dm163.c b/hw/display/dm163.c index f8340d8275e..e78804693cd 100644 --- a/hw/display/dm163.c +++ b/hw/display/dm163.c @@ -17,7 +17,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "migration/vmstate.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/display/dm163.h" #include "ui/console.h" diff --git a/hw/display/exynos4210_fimd.c b/hw/display/exynos4210_fimd.c index 49c180fec0c..8d8062f427c 100644 --- a/hw/display/exynos4210_fimd.c +++ b/hw/display/exynos4210_fimd.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "hw/qdev-properties.h" #include "hw/hw.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "ui/console.h" diff --git a/hw/display/g364fb.c b/hw/display/g364fb.c index a6ddc21d3e4..10686cd6763 100644 --- a/hw/display/g364fb.c +++ b/hw/display/g364fb.c @@ -20,7 +20,7 @@ #include "qemu/osdep.h" #include "qemu/units.h" #include "hw/hw.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "qapi/error.h" #include "qemu/error-report.h" diff --git a/hw/display/omap_lcdc.c b/hw/display/omap_lcdc.c index 3532a801be2..90a97314541 100644 --- a/hw/display/omap_lcdc.c +++ b/hw/display/omap_lcdc.c @@ -18,7 +18,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "ui/console.h" #include "hw/arm/omap.h" #include "framebuffer.h" diff --git a/hw/display/pl110.c b/hw/display/pl110.c index 09c3c59e0ed..e78a55184e9 100644 --- a/hw/display/pl110.c +++ b/hw/display/pl110.c @@ -8,7 +8,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" diff --git a/hw/display/xlnx_dp.c b/hw/display/xlnx_dp.c index a248b943a5a..a24e95f0a73 100644 --- a/hw/display/xlnx_dp.c +++ b/hw/display/xlnx_dp.c @@ -28,7 +28,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "hw/display/xlnx_dp.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" =20 #ifndef DEBUG_DP diff --git a/hw/dma/bcm2835_dma.c b/hw/dma/bcm2835_dma.c index a2771ddcb52..d07459de2d0 100644 --- a/hw/dma/bcm2835_dma.c +++ b/hw/dma/bcm2835_dma.c @@ -8,7 +8,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/dma/bcm2835_dma.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/dma/omap_dma.c b/hw/dma/omap_dma.c index 101f91f4a33..2bf9ebad565 100644 --- a/hw/dma/omap_dma.c +++ b/hw/dma/omap_dma.c @@ -21,7 +21,7 @@ #include "qemu/log.h" #include "qemu/timer.h" #include "hw/arm/omap.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/arm/soc_dma.h" =20 struct omap_dma_channel_s { diff --git a/hw/dma/pl080.c b/hw/dma/pl080.c index 277d9343223..28f79371646 100644 --- a/hw/dma/pl080.c +++ b/hw/dma/pl080.c @@ -14,7 +14,7 @@ #include "qemu/module.h" #include "hw/dma/pl080.h" #include "hw/hw.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "qapi/error.h" =20 diff --git a/hw/dma/pl330.c b/hw/dma/pl330.c index f9c91f924bb..a9e6d2746f0 100644 --- a/hw/dma/pl330.c +++ b/hw/dma/pl330.c @@ -16,7 +16,7 @@ =20 #include "qemu/osdep.h" #include "qemu/cutils.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" #include "migration/vmstate.h" diff --git a/hw/dma/rc4030.c b/hw/dma/rc4030.c index b6ed1d46433..8ce74257b62 100644 --- a/hw/dma/rc4030.c +++ b/hw/dma/rc4030.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "qemu/units.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/mips/mips.h" #include "hw/sysbus.h" #include "migration/vmstate.h" diff --git a/hw/dma/sifive_pdma.c b/hw/dma/sifive_pdma.c index 48de3a24785..bae77544b23 100644 --- a/hw/dma/sifive_pdma.c +++ b/hw/dma/sifive_pdma.c @@ -24,7 +24,7 @@ #include "qemu/bitops.h" #include "qemu/log.h" #include "qapi/error.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" #include "migration/vmstate.h" diff --git a/hw/dma/sparc32_dma.c b/hw/dma/sparc32_dma.c index 60c23b69e5c..9f56faf9a53 100644 --- a/hw/dma/sparc32_dma.c +++ b/hw/dma/sparc32_dma.c @@ -26,7 +26,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/sparc/sparc32_dma.h" #include "hw/sparc/sun4m_iommu.h" diff --git a/hw/dma/xilinx_axidma.c b/hw/dma/xilinx_axidma.c index 2020399fd59..9b05080ae59 100644 --- a/hw/dma/xilinx_axidma.c +++ b/hw/dma/xilinx_axidma.c @@ -27,7 +27,7 @@ #include "qapi/error.h" #include "qemu/timer.h" #include "hw/hw.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/ptimer.h" #include "hw/qdev-properties.h" #include "qemu/log.h" diff --git a/hw/dma/xlnx-zdma.c b/hw/dma/xlnx-zdma.c index 0c075e7d0d1..660fc21b6d1 100644 --- a/hw/dma/xlnx-zdma.c +++ b/hw/dma/xlnx-zdma.c @@ -28,7 +28,7 @@ =20 #include "qemu/osdep.h" #include "hw/dma/xlnx-zdma.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" #include "qemu/bitops.h" diff --git a/hw/dma/xlnx-zynq-devcfg.c b/hw/dma/xlnx-zynq-devcfg.c index 8141d460338..cf00aa863d5 100644 --- a/hw/dma/xlnx-zynq-devcfg.c +++ b/hw/dma/xlnx-zynq-devcfg.c @@ -26,7 +26,7 @@ =20 #include "qemu/osdep.h" #include "hw/dma/xlnx-zynq-devcfg.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "qemu/bitops.h" #include "system/dma.h" diff --git a/hw/dma/xlnx_csu_dma.c b/hw/dma/xlnx_csu_dma.c index d8c7da1a501..0b1185325ba 100644 --- a/hw/dma/xlnx_csu_dma.c +++ b/hw/dma/xlnx_csu_dma.c @@ -21,7 +21,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "qapi/error.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" #include "migration/vmstate.h" diff --git a/hw/dma/xlnx_dpdma.c b/hw/dma/xlnx_dpdma.c index 3d88ccc8da9..32f56036a4c 100644 --- a/hw/dma/xlnx_dpdma.c +++ b/hw/dma/xlnx_dpdma.c @@ -27,7 +27,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "hw/dma/xlnx_dpdma.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" =20 #ifndef DEBUG_DPDMA diff --git a/hw/gpio/aspeed_gpio.c b/hw/gpio/aspeed_gpio.c index 2d78bf9515c..85a5acd7087 100644 --- a/hw/gpio/aspeed_gpio.c +++ b/hw/gpio/aspeed_gpio.c @@ -13,7 +13,7 @@ #include "hw/misc/aspeed_scu.h" #include "qapi/error.h" #include "qapi/visitor.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "trace.h" #include "hw/registerfields.h" diff --git a/hw/gpio/bcm2835_gpio.c b/hw/gpio/bcm2835_gpio.c index dfb5d5cb578..bd9170b8932 100644 --- a/hw/gpio/bcm2835_gpio.c +++ b/hw/gpio/bcm2835_gpio.c @@ -20,7 +20,7 @@ #include "migration/vmstate.h" #include "hw/sd/sd.h" #include "hw/gpio/bcm2835_gpio.h" -#include "hw/irq.h" +#include "hw/core/irq.h" =20 #define GPFSEL0 0x00 #define GPFSEL1 0x04 diff --git a/hw/gpio/bcm2838_gpio.c b/hw/gpio/bcm2838_gpio.c index 1069e7811bb..dab50faf285 100644 --- a/hw/gpio/bcm2838_gpio.c +++ b/hw/gpio/bcm2838_gpio.c @@ -19,7 +19,7 @@ #include "migration/vmstate.h" #include "hw/sd/sd.h" #include "hw/gpio/bcm2838_gpio.h" -#include "hw/irq.h" +#include "hw/core/irq.h" =20 #define GPFSEL0 0x00 #define GPFSEL1 0x04 diff --git a/hw/gpio/gpio_key.c b/hw/gpio/gpio_key.c index 40c028bed9e..f8cf4da239a 100644 --- a/hw/gpio/gpio_key.c +++ b/hw/gpio/gpio_key.c @@ -23,7 +23,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "qemu/module.h" diff --git a/hw/gpio/imx_gpio.c b/hw/gpio/imx_gpio.c index 450ece45482..842c997a2a6 100644 --- a/hw/gpio/imx_gpio.c +++ b/hw/gpio/imx_gpio.c @@ -19,7 +19,7 @@ =20 #include "qemu/osdep.h" #include "hw/gpio/imx_gpio.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" #include "qemu/log.h" diff --git a/hw/gpio/mpc8xxx.c b/hw/gpio/mpc8xxx.c index 257497af584..377832e9d24 100644 --- a/hw/gpio/mpc8xxx.c +++ b/hw/gpio/mpc8xxx.c @@ -20,7 +20,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "qom/object.h" diff --git a/hw/gpio/npcm7xx_gpio.c b/hw/gpio/npcm7xx_gpio.c index 66f8256a7a7..59b95d232bf 100644 --- a/hw/gpio/npcm7xx_gpio.c +++ b/hw/gpio/npcm7xx_gpio.c @@ -16,7 +16,7 @@ #include "qemu/osdep.h" =20 #include "hw/gpio/npcm7xx_gpio.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" #include "qapi/error.h" diff --git a/hw/gpio/nrf51_gpio.c b/hw/gpio/nrf51_gpio.c index d94c0c47da2..567eb1fe7da 100644 --- a/hw/gpio/nrf51_gpio.c +++ b/hw/gpio/nrf51_gpio.c @@ -14,7 +14,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "hw/gpio/nrf51_gpio.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "trace.h" =20 diff --git a/hw/gpio/omap_gpio.c b/hw/gpio/omap_gpio.c index f27806b774a..547f0a15a27 100644 --- a/hw/gpio/omap_gpio.c +++ b/hw/gpio/omap_gpio.c @@ -20,7 +20,7 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/arm/omap.h" #include "hw/sysbus.h" diff --git a/hw/gpio/pca9552.c b/hw/gpio/pca9552.c index 1e10238b2e0..fe1d8dbffa2 100644 --- a/hw/gpio/pca9552.c +++ b/hw/gpio/pca9552.c @@ -17,7 +17,7 @@ #include "hw/qdev-properties.h" #include "hw/gpio/pca9552.h" #include "hw/gpio/pca9552_regs.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qapi/visitor.h" diff --git a/hw/gpio/pca9554.c b/hw/gpio/pca9554.c index eac0d23be34..c6cdd27b3ff 100644 --- a/hw/gpio/pca9554.c +++ b/hw/gpio/pca9554.c @@ -13,7 +13,7 @@ #include "hw/qdev-properties.h" #include "hw/gpio/pca9554.h" #include "hw/gpio/pca9554_regs.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qapi/visitor.h" diff --git a/hw/gpio/pcf8574.c b/hw/gpio/pcf8574.c index 274b44bb616..f871f1e7880 100644 --- a/hw/gpio/pcf8574.c +++ b/hw/gpio/pcf8574.c @@ -9,7 +9,7 @@ #include "qemu/osdep.h" #include "hw/i2c/i2c.h" #include "hw/gpio/pcf8574.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/gpio/pl061.c b/hw/gpio/pl061.c index a3ac038c2f7..09b32247127 100644 --- a/hw/gpio/pl061.c +++ b/hw/gpio/pl061.c @@ -30,7 +30,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" diff --git a/hw/gpio/sifive_gpio.c b/hw/gpio/sifive_gpio.c index 5831647b4d0..63ca721fadd 100644 --- a/hw/gpio/sifive_gpio.c +++ b/hw/gpio/sifive_gpio.c @@ -13,7 +13,7 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/gpio/sifive_gpio.h" #include "migration/vmstate.h" diff --git a/hw/gpio/stm32l4x5_gpio.c b/hw/gpio/stm32l4x5_gpio.c index 42fe984c493..a5a38da6384 100644 --- a/hw/gpio/stm32l4x5_gpio.c +++ b/hw/gpio/stm32l4x5_gpio.c @@ -19,7 +19,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "hw/gpio/stm32l4x5_gpio.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/core/clock.h" #include "hw/qdev-clock.h" #include "hw/qdev-properties.h" diff --git a/hw/gpio/zaurus.c b/hw/gpio/zaurus.c index 590ffde89d1..0a9f76e7743 100644 --- a/hw/gpio/zaurus.c +++ b/hw/gpio/zaurus.c @@ -17,7 +17,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "qemu/module.h" diff --git a/hw/i2c/allwinner-i2c.c b/hw/i2c/allwinner-i2c.c index fe887e1c6a9..c879e5009df 100644 --- a/hw/i2c/allwinner-i2c.c +++ b/hw/i2c/allwinner-i2c.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/i2c/allwinner-i2c.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "hw/i2c/i2c.h" #include "qemu/log.h" diff --git a/hw/i2c/aspeed_i2c.c b/hw/i2c/aspeed_i2c.c index 83fb906bdc7..3d66dd863a1 100644 --- a/hw/i2c/aspeed_i2c.c +++ b/hw/i2c/aspeed_i2c.c @@ -27,7 +27,7 @@ #include "qemu/error-report.h" #include "qapi/error.h" #include "hw/i2c/aspeed_i2c.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/registerfields.h" #include "trace.h" diff --git a/hw/i2c/bcm2835_i2c.c b/hw/i2c/bcm2835_i2c.c index be11cca2a93..34de1f36e5b 100644 --- a/hw/i2c/bcm2835_i2c.c +++ b/hw/i2c/bcm2835_i2c.c @@ -27,7 +27,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "hw/i2c/bcm2835_i2c.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" =20 static void bcm2835_i2c_update_interrupt(BCM2835I2CState *s) diff --git a/hw/i2c/bitbang_i2c.c b/hw/i2c/bitbang_i2c.c index e020f314e2a..d379cfd7751 100644 --- a/hw/i2c/bitbang_i2c.c +++ b/hw/i2c/bitbang_i2c.c @@ -11,7 +11,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/i2c/bitbang_i2c.h" #include "hw/sysbus.h" #include "qemu/module.h" diff --git a/hw/i2c/exynos4210_i2c.c b/hw/i2c/exynos4210_i2c.c index 9d0c1cdaa8a..dd72dda4fd0 100644 --- a/hw/i2c/exynos4210_i2c.c +++ b/hw/i2c/exynos4210_i2c.c @@ -26,7 +26,7 @@ #include "hw/sysbus.h" #include "migration/vmstate.h" #include "hw/i2c/i2c.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qom/object.h" =20 #ifndef EXYNOS4_I2C_DEBUG diff --git a/hw/i2c/imx_i2c.c b/hw/i2c/imx_i2c.c index d26177c85df..88269653e2c 100644 --- a/hw/i2c/imx_i2c.c +++ b/hw/i2c/imx_i2c.c @@ -20,7 +20,7 @@ =20 #include "qemu/osdep.h" #include "hw/i2c/imx_i2c.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "hw/i2c/i2c.h" #include "qemu/log.h" diff --git a/hw/i2c/mpc_i2c.c b/hw/i2c/mpc_i2c.c index 25f91b7bc82..e2097f819ce 100644 --- a/hw/i2c/mpc_i2c.c +++ b/hw/i2c/mpc_i2c.c @@ -19,7 +19,7 @@ =20 #include "qemu/osdep.h" #include "hw/i2c/i2c.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "qom/object.h" diff --git a/hw/i2c/omap_i2c.c b/hw/i2c/omap_i2c.c index 751bf748fd9..6ac151d8515 100644 --- a/hw/i2c/omap_i2c.c +++ b/hw/i2c/omap_i2c.c @@ -21,7 +21,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "hw/i2c/i2c.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/arm/omap.h" #include "hw/sysbus.h" diff --git a/hw/i2c/ppc4xx_i2c.c b/hw/i2c/ppc4xx_i2c.c index 09d4c49d657..d38efd72883 100644 --- a/hw/i2c/ppc4xx_i2c.c +++ b/hw/i2c/ppc4xx_i2c.c @@ -30,7 +30,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "hw/i2c/ppc4xx_i2c.h" -#include "hw/irq.h" +#include "hw/core/irq.h" =20 #define PPC4xx_I2C_MEM_SIZE 18 =20 diff --git a/hw/i386/kvm/i8259.c b/hw/i386/kvm/i8259.c index 8a72d6e4dd3..66f37e13039 100644 --- a/hw/i386/kvm/i8259.c +++ b/hw/i386/kvm/i8259.c @@ -15,7 +15,7 @@ #include "hw/intc/i8259.h" #include "qemu/module.h" #include "hw/intc/kvm_irqcount.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "system/kvm.h" #include "qom/object.h" =20 diff --git a/hw/i386/kvm/xen_evtchn.c b/hw/i386/kvm/xen_evtchn.c index dd566c49679..a510ab871de 100644 --- a/hw/i386/kvm/xen_evtchn.c +++ b/hw/i386/kvm/xen_evtchn.c @@ -34,7 +34,7 @@ #include "hw/pci/pci.h" #include "hw/pci/msi.h" #include "hw/pci/msix.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/xen/xen_backend_ops.h" =20 #include "xen_evtchn.h" diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index 94d22a232ac..e3bafb83af9 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -31,7 +31,7 @@ #include "microvm-dt.h" =20 #include "hw/loader.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/i386/kvm/clock.h" #include "hw/i386/microvm.h" #include "hw/i386/x86.h" diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index f6b9a1bc406..3f8fd078318 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -38,7 +38,7 @@ #include "hw/usb/usb.h" #include "net/net.h" #include "hw/ide/pci.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "system/kvm.h" #include "hw/i386/kvm/clock.h" #include "hw/sysbus.h" diff --git a/hw/i386/port92.c b/hw/i386/port92.c index 39b6f3178fe..48a174316fd 100644 --- a/hw/i386/port92.c +++ b/hw/i386/port92.c @@ -9,7 +9,7 @@ #include "qemu/osdep.h" #include "system/runstate.h" #include "migration/vmstate.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/isa/isa.h" #include "hw/i386/pc.h" #include "trace.h" diff --git a/hw/i386/x86-common.c b/hw/i386/x86-common.c index f77e2e63046..397e856b37e 100644 --- a/hw/i386/x86-common.c +++ b/hw/i386/x86-common.c @@ -37,7 +37,7 @@ #include "target/i386/sev.h" =20 #include "hw/acpi/cpu_hotplug.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/loader.h" #include "multiboot.h" #include "elf.h" diff --git a/hw/i386/x86-cpu.c b/hw/i386/x86-cpu.c index 1a86a853d5f..276f2b0cdf8 100644 --- a/hw/i386/x86-cpu.c +++ b/hw/i386/x86-cpu.c @@ -28,7 +28,7 @@ #include "hw/i386/x86.h" #include "target/i386/cpu.h" #include "hw/intc/i8259.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "system/kvm.h" =20 /* TSC handling */ diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c index ceb2242aa71..591da26d453 100644 --- a/hw/i386/xen/xen-hvm.c +++ b/hw/i386/xen/xen-hvm.c @@ -17,7 +17,7 @@ =20 #include "hw/hw.h" #include "hw/i386/pc.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/i386/apic-msidef.h" #include "hw/xen/xen-x86.h" #include "qemu/range.h" diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c index 14bc66fb7fa..08f51c8e361 100644 --- a/hw/ide/ahci.c +++ b/hw/ide/ahci.c @@ -22,7 +22,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" =20 #include "qemu/error-report.h" diff --git a/hw/ide/core.c b/hw/ide/core.c index 8c380abf7c1..b45abf067b2 100644 --- a/hw/ide/core.c +++ b/hw/ide/core.c @@ -24,7 +24,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/isa/isa.h" #include "migration/vmstate.h" #include "qemu/error-report.h" diff --git a/hw/ide/macio.c b/hw/ide/macio.c index c23bf32d2b1..07db7dc34aa 100644 --- a/hw/ide/macio.c +++ b/hw/ide/macio.c @@ -24,7 +24,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/ppc/mac_dbdma.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" diff --git a/hw/ide/pci.c b/hw/ide/pci.c index 1e50bb9e483..7ce1ae67ab2 100644 --- a/hw/ide/pci.c +++ b/hw/ide/pci.c @@ -24,7 +24,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci/pci.h" #include "migration/vmstate.h" #include "system/dma.h" diff --git a/hw/ide/via.c b/hw/ide/via.c index dedc2674c00..3a77d744caf 100644 --- a/hw/ide/via.c +++ b/hw/ide/via.c @@ -32,7 +32,7 @@ #include "system/dma.h" #include "hw/isa/vt82c686.h" #include "hw/ide/pci.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "ide-internal.h" #include "trace.h" =20 diff --git a/hw/input/lasips2.c b/hw/input/lasips2.c index de625723c78..70a179907ca 100644 --- a/hw/input/lasips2.c +++ b/hw/input/lasips2.c @@ -31,7 +31,7 @@ #include "trace.h" #include "system/address-spaces.h" #include "migration/vmstate.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qapi/error.h" =20 =20 diff --git a/hw/input/pckbd.c b/hw/input/pckbd.c index 71f5f976e9c..48b457cac76 100644 --- a/hw/input/pckbd.c +++ b/hw/input/pckbd.c @@ -31,7 +31,7 @@ #include "migration/vmstate.h" #include "hw/acpi/acpi_aml_interface.h" #include "hw/input/ps2.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/input/i8042.h" #include "hw/qdev-properties.h" #include "system/reset.h" diff --git a/hw/input/pl050.c b/hw/input/pl050.c index c5f4a3fa843..cb8efc74f77 100644 --- a/hw/input/pl050.c +++ b/hw/input/pl050.c @@ -20,7 +20,7 @@ #include "migration/vmstate.h" #include "hw/input/ps2.h" #include "hw/input/pl050.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qemu/log.h" #include "qemu/module.h" #include "qom/object.h" diff --git a/hw/input/ps2.c b/hw/input/ps2.c index 7f7b1fce2e5..96850124a7b 100644 --- a/hw/input/ps2.c +++ b/hw/input/ps2.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "hw/input/ps2.h" #include "migration/vmstate.h" diff --git a/hw/input/stellaris_gamepad.c b/hw/input/stellaris_gamepad.c index fec1161c9c1..bd80db6fac5 100644 --- a/hw/input/stellaris_gamepad.c +++ b/hw/input/stellaris_gamepad.c @@ -10,7 +10,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/input/stellaris_gamepad.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" #include "ui/console.h" diff --git a/hw/intc/allwinner-a10-pic.c b/hw/intc/allwinner-a10-pic.c index 04097341557..0e1ec521e42 100644 --- a/hw/intc/allwinner-a10-pic.c +++ b/hw/intc/allwinner-a10-pic.c @@ -19,7 +19,7 @@ #include "hw/sysbus.h" #include "migration/vmstate.h" #include "hw/intc/allwinner-a10-pic.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qemu/log.h" #include "qemu/module.h" =20 diff --git a/hw/intc/arm_gic.c b/hw/intc/arm_gic.c index 899f1333633..e27bb20bf8c 100644 --- a/hw/intc/arm_gic.c +++ b/hw/intc/arm_gic.c @@ -19,7 +19,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "gic_internal.h" #include "qapi/error.h" diff --git a/hw/intc/arm_gicv2m.c b/hw/intc/arm_gicv2m.c index cef06882216..e823fcc97fc 100644 --- a/hw/intc/arm_gicv2m.c +++ b/hw/intc/arm_gicv2m.c @@ -28,7 +28,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci/msi.h" #include "hw/qdev-properties.h" #include "system/kvm.h" diff --git a/hw/intc/arm_gicv3_cpuif.c b/hw/intc/arm_gicv3_cpuif.c index 2e6c1f778a9..eaf1e512ede 100644 --- a/hw/intc/arm_gicv3_cpuif.c +++ b/hw/intc/arm_gicv3_cpuif.c @@ -18,7 +18,7 @@ #include "qemu/main-loop.h" #include "trace.h" #include "gicv3_internal.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "cpu.h" #include "target/arm/cpregs.h" #include "target/arm/cpu-features.h" diff --git a/hw/intc/armv7m_nvic.c b/hw/intc/armv7m_nvic.c index 7c78961040e..bb39a690a59 100644 --- a/hw/intc/armv7m_nvic.c +++ b/hw/intc/armv7m_nvic.c @@ -16,7 +16,7 @@ #include "migration/vmstate.h" #include "qemu/timer.h" #include "hw/intc/armv7m_nvic.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "system/tcg.h" #include "system/runstate.h" diff --git a/hw/intc/aspeed_intc.c b/hw/intc/aspeed_intc.c index 5cd786dee6c..d92305b9ca1 100644 --- a/hw/intc/aspeed_intc.c +++ b/hw/intc/aspeed_intc.c @@ -8,7 +8,7 @@ =20 #include "qemu/osdep.h" #include "hw/intc/aspeed_intc.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qemu/log.h" #include "trace.h" #include "hw/registerfields.h" diff --git a/hw/intc/aspeed_vic.c b/hw/intc/aspeed_vic.c index 7120088454c..b0a9a397055 100644 --- a/hw/intc/aspeed_vic.c +++ b/hw/intc/aspeed_vic.c @@ -29,7 +29,7 @@ =20 #include "qemu/osdep.h" #include "hw/intc/aspeed_vic.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "qemu/bitops.h" #include "qemu/log.h" diff --git a/hw/intc/bcm2835_ic.c b/hw/intc/bcm2835_ic.c index 55e0a5a503b..71bf671761b 100644 --- a/hw/intc/bcm2835_ic.c +++ b/hw/intc/bcm2835_ic.c @@ -14,7 +14,7 @@ =20 #include "qemu/osdep.h" #include "hw/intc/bcm2835_ic.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/intc/bcm2836_control.c b/hw/intc/bcm2836_control.c index 1c028536696..f1deafaf7a2 100644 --- a/hw/intc/bcm2836_control.c +++ b/hw/intc/bcm2836_control.c @@ -19,7 +19,7 @@ =20 #include "qemu/osdep.h" #include "hw/intc/bcm2836_control.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/intc/exynos4210_combiner.c b/hw/intc/exynos4210_combiner.c index ebbe23436f4..b9e74d19c37 100644 --- a/hw/intc/exynos4210_combiner.c +++ b/hw/intc/exynos4210_combiner.c @@ -34,7 +34,7 @@ #include "hw/intc/exynos4210_combiner.h" #include "hw/arm/exynos4210.h" #include "hw/hw.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "qom/object.h" =20 diff --git a/hw/intc/exynos4210_gic.c b/hw/intc/exynos4210_gic.c index 7e2d79d00cd..5b156f7ef5a 100644 --- a/hw/intc/exynos4210_gic.c +++ b/hw/intc/exynos4210_gic.c @@ -25,7 +25,7 @@ #include "migration/vmstate.h" #include "qapi/error.h" #include "qemu/module.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/intc/exynos4210_gic.h" #include "hw/arm/exynos4210.h" diff --git a/hw/intc/goldfish_pic.c b/hw/intc/goldfish_pic.c index 2359861785d..7aaccba75ae 100644 --- a/hw/intc/goldfish_pic.c +++ b/hw/intc/goldfish_pic.c @@ -8,7 +8,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" #include "migration/vmstate.h" diff --git a/hw/intc/grlib_irqmp.c b/hw/intc/grlib_irqmp.c index e0f26466ba3..bb2ee5f8015 100644 --- a/hw/intc/grlib_irqmp.c +++ b/hw/intc/grlib_irqmp.c @@ -27,7 +27,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" =20 #include "hw/qdev-properties.h" diff --git a/hw/intc/heathrow_pic.c b/hw/intc/heathrow_pic.c index 447e8c25d8d..b65ec04e475 100644 --- a/hw/intc/heathrow_pic.c +++ b/hw/intc/heathrow_pic.c @@ -27,7 +27,7 @@ #include "migration/vmstate.h" #include "qemu/module.h" #include "hw/intc/heathrow_pic.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "trace.h" =20 static inline int heathrow_check_irq(HeathrowPICState *pic) diff --git a/hw/intc/i8259.c b/hw/intc/i8259.c index b6f96bf208c..8f2aa1f0fb1 100644 --- a/hw/intc/i8259.c +++ b/hw/intc/i8259.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/intc/i8259.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/isa/isa.h" #include "qemu/timer.h" #include "qemu/log.h" diff --git a/hw/intc/imx_avic.c b/hw/intc/imx_avic.c index 09c3bfac0b6..a3d71aba8ef 100644 --- a/hw/intc/imx_avic.c +++ b/hw/intc/imx_avic.c @@ -17,7 +17,7 @@ =20 #include "qemu/osdep.h" #include "hw/intc/imx_avic.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/intc/loongarch_dintc.c b/hw/intc/loongarch_dintc.c index 32bdd171c58..082755d28bb 100644 --- a/hw/intc/loongarch_dintc.c +++ b/hw/intc/loongarch_dintc.c @@ -7,7 +7,7 @@ =20 #include "qemu/osdep.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/intc/loongarch_pch_msi.h" #include "hw/intc/loongarch_pch_pic.h" #include "hw/intc/loongarch_dintc.h" diff --git a/hw/intc/loongarch_extioi.c b/hw/intc/loongarch_extioi.c index 3e9c88d1d9c..29997402694 100644 --- a/hw/intc/loongarch_extioi.c +++ b/hw/intc/loongarch_extioi.c @@ -9,7 +9,7 @@ #include "qemu/module.h" #include "qemu/log.h" #include "qapi/error.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/loongarch/virt.h" #include "system/address-spaces.h" #include "system/kvm.h" diff --git a/hw/intc/loongarch_pch_msi.c b/hw/intc/loongarch_pch_msi.c index f6d163158da..63090b27261 100644 --- a/hw/intc/loongarch_pch_msi.c +++ b/hw/intc/loongarch_pch_msi.c @@ -7,7 +7,7 @@ =20 #include "qemu/osdep.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/intc/loongarch_pch_msi.h" #include "hw/intc/loongarch_pch_pic.h" #include "hw/pci/msi.h" diff --git a/hw/intc/loongarch_pch_pic.c b/hw/intc/loongarch_pch_pic.c index 32f01aabf0e..82e16be3918 100644 --- a/hw/intc/loongarch_pch_pic.c +++ b/hw/intc/loongarch_pch_pic.c @@ -8,7 +8,7 @@ #include "qemu/osdep.h" #include "qemu/bitops.h" #include "qemu/log.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/intc/loongarch_pch_pic.h" #include "system/kvm.h" #include "trace.h" diff --git a/hw/intc/loongson_ipi_common.c b/hw/intc/loongson_ipi_common.c index 8cd78d48589..b3d8e781ca1 100644 --- a/hw/intc/loongson_ipi_common.c +++ b/hw/intc/loongson_ipi_common.c @@ -8,7 +8,7 @@ #include "qemu/osdep.h" #include "hw/sysbus.h" #include "hw/intc/loongson_ipi_common.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qemu/log.h" #include "migration/vmstate.h" #include "system/kvm.h" diff --git a/hw/intc/loongson_liointc.c b/hw/intc/loongson_liointc.c index c10fb97a063..4c24f330ed7 100644 --- a/hw/intc/loongson_liointc.c +++ b/hw/intc/loongson_liointc.c @@ -22,7 +22,7 @@ #include "qemu/osdep.h" #include "qemu/module.h" #include "qemu/log.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/intc/loongson_liointc.h" =20 diff --git a/hw/intc/mips_gic.c b/hw/intc/mips_gic.c index 0c50ba41f62..08925fe1e41 100644 --- a/hw/intc/mips_gic.c +++ b/hw/intc/mips_gic.c @@ -19,7 +19,7 @@ #include "system/reset.h" #include "kvm_mips.h" #include "hw/intc/mips_gic.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" =20 static void mips_gic_set_vp_irq(MIPSGICState *gic, int vp, int pin) diff --git a/hw/intc/omap_intc.c b/hw/intc/omap_intc.c index c61158bddd3..7b23b6d2cec 100644 --- a/hw/intc/omap_intc.c +++ b/hw/intc/omap_intc.c @@ -19,7 +19,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/arm/omap.h" #include "hw/sysbus.h" diff --git a/hw/intc/ompic.c b/hw/intc/ompic.c index 047c367478d..5a630bd51cb 100644 --- a/hw/intc/ompic.c +++ b/hw/intc/ompic.c @@ -9,7 +9,7 @@ #include "qemu/osdep.h" #include "qemu/module.h" #include "qapi/error.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" #include "migration/vmstate.h" diff --git a/hw/intc/openpic.c b/hw/intc/openpic.c index 87733eb7c30..edac46227f5 100644 --- a/hw/intc/openpic.c +++ b/hw/intc/openpic.c @@ -31,7 +31,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci/pci.h" #include "hw/ppc/openpic.h" #include "hw/ppc/ppc_e500.h" diff --git a/hw/intc/pl190.c b/hw/intc/pl190.c index 838c21c4a02..f1e4959e9ae 100644 --- a/hw/intc/pl190.c +++ b/hw/intc/pl190.c @@ -8,7 +8,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "qemu/log.h" diff --git a/hw/intc/ppc-uic.c b/hw/intc/ppc-uic.c index bc4dc90ade1..bfc4a4fbceb 100644 --- a/hw/intc/ppc-uic.c +++ b/hw/intc/ppc-uic.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/intc/ppc-uic.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" =20 diff --git a/hw/intc/realview_gic.c b/hw/intc/realview_gic.c index 63e25c2a781..ecaf8201fd6 100644 --- a/hw/intc/realview_gic.c +++ b/hw/intc/realview_gic.c @@ -11,7 +11,7 @@ #include "qapi/error.h" #include "qemu/module.h" #include "hw/intc/realview_gic.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" =20 static void realview_gic_set_irq(void *opaque, int irq, int level) diff --git a/hw/intc/riscv_aclint.c b/hw/intc/riscv_aclint.c index c6f13f647ec..f3e37df47d1 100644 --- a/hw/intc/riscv_aclint.c +++ b/hw/intc/riscv_aclint.c @@ -32,7 +32,7 @@ #include "hw/qdev-properties.h" #include "hw/intc/riscv_aclint.h" #include "qemu/timer.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" =20 typedef struct riscv_aclint_mtimer_callback { diff --git a/hw/intc/riscv_aplic.c b/hw/intc/riscv_aplic.c index a559664c40b..580622d1712 100644 --- a/hw/intc/riscv_aplic.c +++ b/hw/intc/riscv_aplic.c @@ -28,7 +28,7 @@ #include "hw/core/boards.h" #include "hw/qdev-properties.h" #include "hw/intc/riscv_aplic.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "target/riscv/cpu.h" #include "system/system.h" #include "system/kvm.h" diff --git a/hw/intc/riscv_imsic.c b/hw/intc/riscv_imsic.c index 513e38d9c12..54e72b81e78 100644 --- a/hw/intc/riscv_imsic.c +++ b/hw/intc/riscv_imsic.c @@ -28,7 +28,7 @@ #include "hw/core/boards.h" #include "hw/qdev-properties.h" #include "hw/intc/riscv_imsic.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "target/riscv/cpu.h" #include "target/riscv/cpu_bits.h" #include "system/system.h" diff --git a/hw/intc/rx_icu.c b/hw/intc/rx_icu.c index f8615527b75..84712e2e4d0 100644 --- a/hw/intc/rx_icu.c +++ b/hw/intc/rx_icu.c @@ -26,7 +26,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "qemu/error-report.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/registerfields.h" #include "hw/qdev-properties.h" #include "hw/intc/rx_icu.h" diff --git a/hw/intc/sh_intc.c b/hw/intc/sh_intc.c index c9b0b0c1ecc..16e4b619d6d 100644 --- a/hw/intc/sh_intc.c +++ b/hw/intc/sh_intc.c @@ -12,7 +12,7 @@ #include "qemu/log.h" #include "cpu.h" #include "hw/sh4/sh_intc.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sh4/sh.h" #include "trace.h" =20 diff --git a/hw/intc/sifive_plic.c b/hw/intc/sifive_plic.c index 3160b216fdc..c578b6e36d2 100644 --- a/hw/intc/sifive_plic.c +++ b/hw/intc/sifive_plic.c @@ -29,7 +29,7 @@ #include "hw/intc/sifive_plic.h" #include "target/riscv/cpu.h" #include "migration/vmstate.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "system/kvm.h" =20 static bool addr_between(uint32_t addr, uint32_t base, uint32_t num) diff --git a/hw/intc/slavio_intctl.c b/hw/intc/slavio_intctl.c index 00b80bb177c..b12c8cbd69f 100644 --- a/hw/intc/slavio_intctl.c +++ b/hw/intc/slavio_intctl.c @@ -27,7 +27,7 @@ #include "qemu/module.h" #include "hw/sysbus.h" #include "hw/intc/intc.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "trace.h" #include "qom/object.h" =20 diff --git a/hw/intc/xics.c b/hw/intc/xics.c index 200710eb6ca..e87c0ad2bcd 100644 --- a/hw/intc/xics.c +++ b/hw/intc/xics.c @@ -36,7 +36,7 @@ #include "qapi/visitor.h" #include "migration/vmstate.h" #include "hw/intc/intc.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "system/kvm.h" #include "system/reset.h" #include "target/ppc/cpu.h" diff --git a/hw/intc/xilinx_intc.c b/hw/intc/xilinx_intc.c index 5257ad54b17..f5a59d89830 100644 --- a/hw/intc/xilinx_intc.c +++ b/hw/intc/xilinx_intc.c @@ -29,7 +29,7 @@ #include "qapi/error.h" #include "hw/sysbus.h" #include "qemu/module.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "qom/object.h" diff --git a/hw/intc/xive.c b/hw/intc/xive.c index e0ffcf89ebf..6f9babf601c 100644 --- a/hw/intc/xive.c +++ b/hw/intc/xive.c @@ -16,7 +16,7 @@ #include "system/reset.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/ppc/xive.h" #include "hw/ppc/xive2.h" #include "hw/ppc/xive_regs.h" diff --git a/hw/intc/xlnx-pmu-iomod-intc.c b/hw/intc/xlnx-pmu-iomod-intc.c index 9200585e325..098c1f327cd 100644 --- a/hw/intc/xlnx-pmu-iomod-intc.c +++ b/hw/intc/xlnx-pmu-iomod-intc.c @@ -32,7 +32,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "hw/intc/xlnx-pmu-iomod-intc.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" =20 #ifndef XLNX_PMU_IO_INTC_ERR_DEBUG diff --git a/hw/intc/xlnx-zynqmp-ipi.c b/hw/intc/xlnx-zynqmp-ipi.c index 610cd0e3164..99566bc2e20 100644 --- a/hw/intc/xlnx-zynqmp-ipi.c +++ b/hw/intc/xlnx-zynqmp-ipi.c @@ -33,7 +33,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "hw/intc/xlnx-zynqmp-ipi.h" -#include "hw/irq.h" +#include "hw/core/irq.h" =20 #ifndef XLNX_ZYNQMP_IPI_ERR_DEBUG #define XLNX_ZYNQMP_IPI_ERR_DEBUG 0 diff --git a/hw/ipack/ipack.c b/hw/ipack/ipack.c index ab602bff734..4a710eb1876 100644 --- a/hw/ipack/ipack.c +++ b/hw/ipack/ipack.c @@ -12,7 +12,7 @@ #include "qapi/error.h" #include "qemu/module.h" #include "hw/ipack/ipack.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" =20 diff --git a/hw/ipack/tpci200.c b/hw/ipack/tpci200.c index 40b30517c75..b074b8727dc 100644 --- a/hw/ipack/tpci200.c +++ b/hw/ipack/tpci200.c @@ -11,7 +11,7 @@ #include "qemu/osdep.h" #include "qemu/units.h" #include "hw/ipack/ipack.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci/pci_device.h" #include "migration/vmstate.h" #include "qemu/bitops.h" diff --git a/hw/ipmi/isa_ipmi_bt.c b/hw/ipmi/isa_ipmi_bt.c index 0ad91ccf689..2b26f9c9f0f 100644 --- a/hw/ipmi/isa_ipmi_bt.c +++ b/hw/ipmi/isa_ipmi_bt.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "qemu/module.h" #include "qapi/error.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/ipmi/ipmi_bt.h" #include "hw/isa/isa.h" #include "hw/qdev-properties.h" diff --git a/hw/ipmi/isa_ipmi_kcs.c b/hw/ipmi/isa_ipmi_kcs.c index 418d234e0f1..14e85e6e9fd 100644 --- a/hw/ipmi/isa_ipmi_kcs.c +++ b/hw/ipmi/isa_ipmi_kcs.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "qemu/module.h" #include "qapi/error.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/ipmi/ipmi_kcs.h" #include "hw/isa/isa.h" #include "hw/qdev-properties.h" diff --git a/hw/isa/i82378.c b/hw/isa/i82378.c index 06e8f0ce3e0..dfa8a3775cf 100644 --- a/hw/isa/i82378.c +++ b/hw/isa/i82378.c @@ -19,7 +19,7 @@ =20 #include "qemu/osdep.h" #include "hw/pci/pci_device.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/intc/i8259.h" #include "hw/timer/i8254.h" #include "migration/vmstate.h" diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c index c9cb8f77799..6e772eca573 100644 --- a/hw/isa/lpc_ich9.c +++ b/hw/isa/lpc_ich9.c @@ -37,7 +37,7 @@ #include "hw/dma/i8257.h" #include "hw/isa/isa.h" #include "migration/vmstate.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/isa/apm.h" #include "hw/pci/pci.h" #include "hw/southbridge/ich9.h" diff --git a/hw/isa/piix.c b/hw/isa/piix.c index 52c14d3cd5b..bf1c79a3e63 100644 --- a/hw/isa/piix.c +++ b/hw/isa/piix.c @@ -29,7 +29,7 @@ #include "hw/dma/i8257.h" #include "hw/southbridge/piix.h" #include "hw/timer/i8254.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/ide/piix.h" #include "hw/intc/i8259.h" diff --git a/hw/isa/vt82c686.c b/hw/isa/vt82c686.c index 337958617a4..1362a1f4042 100644 --- a/hw/isa/vt82c686.c +++ b/hw/isa/vt82c686.c @@ -24,7 +24,7 @@ #include "hw/isa/isa.h" #include "hw/isa/superio.h" #include "hw/intc/i8259.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/dma/i8257.h" #include "hw/usb/hcd-uhci.h" #include "hw/timer/i8254.h" diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c index a78a9bc03d8..0e11eb340f0 100644 --- a/hw/loongarch/virt.c +++ b/hw/loongarch/virt.c @@ -20,7 +20,7 @@ #include "system/rtc.h" #include "hw/loongarch/virt.h" #include "system/address-spaces.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "net/net.h" #include "hw/loader.h" #include "elf.h" diff --git a/hw/m68k/mcf5206.c b/hw/m68k/mcf5206.c index 6359aa81d0e..4cf86d510b3 100644 --- a/hw/m68k/mcf5206.c +++ b/hw/m68k/mcf5206.c @@ -12,7 +12,7 @@ #include "cpu.h" #include "hw/qdev-properties.h" #include "hw/core/boards.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/m68k/mcf.h" #include "qemu/timer.h" #include "hw/ptimer.h" diff --git a/hw/m68k/mcf5208.c b/hw/m68k/mcf5208.c index c1067435bf8..b2b02f25ff1 100644 --- a/hw/m68k/mcf5208.c +++ b/hw/m68k/mcf5208.c @@ -21,7 +21,7 @@ #include "qapi/error.h" #include "qemu/datadir.h" #include "cpu.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/m68k/mcf.h" #include "hw/m68k/mcf_fec.h" #include "qemu/timer.h" diff --git a/hw/m68k/mcf_intc.c b/hw/m68k/mcf_intc.c index e3055b841e8..efac6802a97 100644 --- a/hw/m68k/mcf_intc.c +++ b/hw/m68k/mcf_intc.c @@ -11,7 +11,7 @@ #include "qemu/module.h" #include "qemu/log.h" #include "cpu.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "hw/m68k/mcf.h" #include "hw/qdev-properties.h" diff --git a/hw/m68k/next-cube.c b/hw/m68k/next-cube.c index d7c460bcd4b..1411436a463 100644 --- a/hw/m68k/next-cube.c +++ b/hw/m68k/next-cube.c @@ -15,7 +15,7 @@ #include "exec/cpu-interrupt.h" #include "system/system.h" #include "system/qtest.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/m68k/next-cube.h" #include "hw/core/boards.h" #include "hw/loader.h" diff --git a/hw/m68k/q800-glue.c b/hw/m68k/q800-glue.c index d663d124fce..94f47175ae5 100644 --- a/hw/m68k/q800-glue.c +++ b/hw/m68k/q800-glue.c @@ -24,7 +24,7 @@ #include "cpu.h" #include "hw/m68k/q800-glue.h" #include "hw/core/boards.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/nmi.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" diff --git a/hw/mips/malta.c b/hw/mips/malta.c index 44ae8bc6c72..c63d77d4cca 100644 --- a/hw/mips/malta.c +++ b/hw/mips/malta.c @@ -43,7 +43,7 @@ #include "hw/pci/pci_bus.h" #include "qemu/log.h" #include "hw/ide/pci.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/loader.h" #include "elf.h" #include "qom/object.h" diff --git a/hw/mips/mips_int.c b/hw/mips/mips_int.c index 26fdb934f50..2b740afc4d8 100644 --- a/hw/mips/mips_int.c +++ b/hw/mips/mips_int.c @@ -22,7 +22,7 @@ =20 #include "qemu/osdep.h" #include "qemu/main-loop.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "system/kvm.h" #include "kvm_mips.h" =20 diff --git a/hw/misc/arm_sysctl.c b/hw/misc/arm_sysctl.c index 0f4e37cd474..8995eaeec36 100644 --- a/hw/misc/arm_sysctl.c +++ b/hw/misc/arm_sysctl.c @@ -8,7 +8,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "qemu/timer.h" #include "system/runstate.h" diff --git a/hw/misc/armsse-mhu.c b/hw/misc/armsse-mhu.c index d5d307a186c..2673c2de3ef 100644 --- a/hw/misc/armsse-mhu.c +++ b/hw/misc/armsse-mhu.c @@ -23,7 +23,7 @@ #include "hw/sysbus.h" #include "migration/vmstate.h" #include "hw/registerfields.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/misc/armsse-mhu.h" =20 REG32(CPU0INTR_STAT, 0x0) diff --git a/hw/misc/aspeed_hace.c b/hw/misc/aspeed_hace.c index 726368fbbc2..51c73ca2a52 100644 --- a/hw/misc/aspeed_hace.c +++ b/hw/misc/aspeed_hace.c @@ -19,7 +19,7 @@ #include "migration/vmstate.h" #include "crypto/hash.h" #include "hw/qdev-properties.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "trace.h" =20 #define R_CRYPT_CMD (0x10 / 4) diff --git a/hw/misc/aspeed_lpc.c b/hw/misc/aspeed_lpc.c index 78406dae248..829955e6f16 100644 --- a/hw/misc/aspeed_lpc.c +++ b/hw/misc/aspeed_lpc.c @@ -13,7 +13,7 @@ #include "hw/misc/aspeed_lpc.h" #include "qapi/error.h" #include "qapi/visitor.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" =20 diff --git a/hw/misc/aspeed_peci.c b/hw/misc/aspeed_peci.c index a7a449a9236..cf902a8ab8c 100644 --- a/hw/misc/aspeed_peci.c +++ b/hw/misc/aspeed_peci.c @@ -9,7 +9,7 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/misc/aspeed_peci.h" #include "hw/registerfields.h" #include "trace.h" diff --git a/hw/misc/aspeed_xdma.c b/hw/misc/aspeed_xdma.c index c448ad32ff2..3e2beafcedf 100644 --- a/hw/misc/aspeed_xdma.c +++ b/hw/misc/aspeed_xdma.c @@ -9,7 +9,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "qemu/error-report.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/misc/aspeed_xdma.h" #include "migration/vmstate.h" #include "qapi/error.h" diff --git a/hw/misc/avr_power.c b/hw/misc/avr_power.c index 411f016c997..947304ed3b6 100644 --- a/hw/misc/avr_power.c +++ b/hw/misc/avr_power.c @@ -26,7 +26,7 @@ #include "hw/misc/avr_power.h" #include "qemu/log.h" #include "hw/qdev-properties.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "trace.h" =20 static void avr_mask_reset(DeviceState *dev) diff --git a/hw/misc/bcm2835_mbox.c b/hw/misc/bcm2835_mbox.c index 603eaaa710d..ac37fe99571 100644 --- a/hw/misc/bcm2835_mbox.c +++ b/hw/misc/bcm2835_mbox.c @@ -12,7 +12,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/misc/bcm2835_mbox.h" #include "migration/vmstate.h" #include "qemu/log.h" diff --git a/hw/misc/bcm2835_property.c b/hw/misc/bcm2835_property.c index a21c6a541c0..2026294ce12 100644 --- a/hw/misc/bcm2835_property.c +++ b/hw/misc/bcm2835_property.c @@ -10,7 +10,7 @@ #include "hw/misc/bcm2835_property.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/misc/bcm2835_mbox_defs.h" #include "hw/arm/raspberrypi-fw-defs.h" #include "system/dma.h" diff --git a/hw/misc/eccmemctl.c b/hw/misc/eccmemctl.c index 81fc536131c..71243ba5bad 100644 --- a/hw/misc/eccmemctl.c +++ b/hw/misc/eccmemctl.c @@ -23,7 +23,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" #include "migration/vmstate.h" diff --git a/hw/misc/imx_rngc.c b/hw/misc/imx_rngc.c index 630f6cb54b5..9f49bbcc2e7 100644 --- a/hw/misc/imx_rngc.c +++ b/hw/misc/imx_rngc.c @@ -15,7 +15,7 @@ #include "qemu/main-loop.h" #include "qemu/module.h" #include "qemu/guest-random.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/misc/imx_rngc.h" #include "migration/vmstate.h" =20 diff --git a/hw/misc/iotkit-secctl.c b/hw/misc/iotkit-secctl.c index afd9ab48df7..f8a2946191d 100644 --- a/hw/misc/iotkit-secctl.c +++ b/hw/misc/iotkit-secctl.c @@ -17,7 +17,7 @@ #include "hw/sysbus.h" #include "migration/vmstate.h" #include "hw/registerfields.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/misc/iotkit-secctl.h" #include "hw/arm/armsse-version.h" #include "hw/qdev-properties.h" diff --git a/hw/misc/ivshmem-flat.c b/hw/misc/ivshmem-flat.c index 27ee8c92183..790500d34de 100644 --- a/hw/misc/ivshmem-flat.c +++ b/hw/misc/ivshmem-flat.c @@ -13,7 +13,7 @@ #include "qemu/error-report.h" #include "qemu/module.h" #include "qapi/error.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties-system.h" #include "hw/sysbus.h" #include "chardev/char-fe.h" diff --git a/hw/misc/lasi.c b/hw/misc/lasi.c index 6684f16fd75..e8e1578b751 100644 --- a/hw/misc/lasi.c +++ b/hw/misc/lasi.c @@ -14,7 +14,7 @@ #include "qemu/log.h" #include "qapi/error.h" #include "trace.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "system/system.h" #include "system/runstate.h" #include "migration/vmstate.h" diff --git a/hw/misc/mac_via.c b/hw/misc/mac_via.c index bc37e2a2cb7..13ccd3023fb 100644 --- a/hw/misc/mac_via.c +++ b/hw/misc/mac_via.c @@ -19,7 +19,7 @@ #include "system/address-spaces.h" #include "migration/vmstate.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qemu/timer.h" #include "hw/misc/mac_via.h" #include "hw/misc/mos6522.h" diff --git a/hw/misc/macio/cuda.c b/hw/misc/macio/cuda.c index bcd00c9bb1b..3b8dd462f56 100644 --- a/hw/misc/macio/cuda.c +++ b/hw/misc/macio/cuda.c @@ -24,7 +24,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" #include "hw/misc/macio/cuda.h" diff --git a/hw/misc/macio/gpio.c b/hw/misc/macio/gpio.c index 990551f91f4..9fed4265676 100644 --- a/hw/misc/macio/gpio.c +++ b/hw/misc/macio/gpio.c @@ -28,7 +28,7 @@ #include "migration/vmstate.h" #include "hw/misc/macio/macio.h" #include "hw/misc/macio/gpio.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/nmi.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/misc/macio/mac_dbdma.c b/hw/misc/macio/mac_dbdma.c index b2b42dd5622..a55c9c99824 100644 --- a/hw/misc/macio/mac_dbdma.c +++ b/hw/misc/macio/mac_dbdma.c @@ -38,7 +38,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/ppc/mac_dbdma.h" #include "migration/vmstate.h" #include "qemu/main-loop.h" diff --git a/hw/misc/macio/pmu.c b/hw/misc/macio/pmu.c index 37349139948..73e64306b86 100644 --- a/hw/misc/macio/pmu.c +++ b/hw/misc/macio/pmu.c @@ -31,7 +31,7 @@ #include "qemu/osdep.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/misc/macio/pmu.h" #include "qemu/timer.h" #include "system/runstate.h" diff --git a/hw/misc/max78000_aes.c b/hw/misc/max78000_aes.c index d883ddd2b61..65846757332 100644 --- a/hw/misc/max78000_aes.c +++ b/hw/misc/max78000_aes.c @@ -9,7 +9,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "trace.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "hw/misc/max78000_aes.h" #include "crypto/aes.h" diff --git a/hw/misc/max78000_gcr.c b/hw/misc/max78000_gcr.c index fbbc92cca32..6d2e2bd6176 100644 --- a/hw/misc/max78000_gcr.c +++ b/hw/misc/max78000_gcr.c @@ -9,7 +9,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "trace.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "system/runstate.h" #include "migration/vmstate.h" #include "hw/qdev-properties.h" diff --git a/hw/misc/max78000_icc.c b/hw/misc/max78000_icc.c index 6f7d2b20bf5..622baa5719d 100644 --- a/hw/misc/max78000_icc.c +++ b/hw/misc/max78000_icc.c @@ -9,7 +9,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "trace.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "hw/misc/max78000_icc.h" =20 diff --git a/hw/misc/max78000_trng.c b/hw/misc/max78000_trng.c index ecdaef53b6c..1435138344d 100644 --- a/hw/misc/max78000_trng.c +++ b/hw/misc/max78000_trng.c @@ -9,7 +9,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "trace.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "hw/misc/max78000_trng.h" #include "qemu/guest-random.h" diff --git a/hw/misc/mchp_pfsoc_ioscb.c b/hw/misc/mchp_pfsoc_ioscb.c index 10fc7ea2a95..84e957244e5 100644 --- a/hw/misc/mchp_pfsoc_ioscb.c +++ b/hw/misc/mchp_pfsoc_ioscb.c @@ -24,7 +24,7 @@ #include "qemu/bitops.h" #include "qemu/log.h" #include "qapi/error.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "hw/misc/mchp_pfsoc_ioscb.h" =20 diff --git a/hw/misc/mchp_pfsoc_sysreg.c b/hw/misc/mchp_pfsoc_sysreg.c index f47c835f80d..2a415151037 100644 --- a/hw/misc/mchp_pfsoc_sysreg.c +++ b/hw/misc/mchp_pfsoc_sysreg.c @@ -24,7 +24,7 @@ #include "qemu/bitops.h" #include "qemu/log.h" #include "qapi/error.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "hw/misc/mchp_pfsoc_sysreg.h" #include "system/runstate.h" diff --git a/hw/misc/mos6522.c b/hw/misc/mos6522.c index 8dd6b82ac5f..728931883d8 100644 --- a/hw/misc/mos6522.c +++ b/hw/misc/mos6522.c @@ -25,7 +25,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/misc/mos6522.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" diff --git a/hw/misc/mps2-scc.c b/hw/misc/mps2-scc.c index a9a5d4a535b..ea9cad85dc2 100644 --- a/hw/misc/mps2-scc.c +++ b/hw/misc/mps2-scc.c @@ -23,7 +23,7 @@ #include "qemu/bitops.h" #include "trace.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "hw/registerfields.h" #include "hw/misc/mps2-scc.h" diff --git a/hw/misc/npcm7xx_mft.c b/hw/misc/npcm7xx_mft.c index b35e971fe53..514d29f2015 100644 --- a/hw/misc/npcm7xx_mft.c +++ b/hw/misc/npcm7xx_mft.c @@ -15,7 +15,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-clock.h" #include "hw/qdev-properties.h" #include "hw/misc/npcm7xx_mft.h" diff --git a/hw/misc/npcm7xx_pwm.c b/hw/misc/npcm7xx_pwm.c index 2de18d09b82..2e72d1c7d4f 100644 --- a/hw/misc/npcm7xx_pwm.c +++ b/hw/misc/npcm7xx_pwm.c @@ -15,7 +15,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-clock.h" #include "hw/qdev-properties.h" #include "hw/misc/npcm7xx_pwm.h" diff --git a/hw/misc/nrf51_rng.c b/hw/misc/nrf51_rng.c index 8cd7ffe3f55..0254fb377a6 100644 --- a/hw/misc/nrf51_rng.c +++ b/hw/misc/nrf51_rng.c @@ -14,7 +14,7 @@ #include "qemu/module.h" #include "qapi/error.h" #include "hw/arm/nrf51.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/misc/nrf51_rng.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" diff --git a/hw/misc/omap_clk.c b/hw/misc/omap_clk.c index da95c4ace58..37afef09903 100644 --- a/hw/misc/omap_clk.c +++ b/hw/misc/omap_clk.c @@ -21,7 +21,7 @@ =20 #include "qemu/osdep.h" #include "hw/hw.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/arm/omap.h" =20 struct clk { diff --git a/hw/misc/pc-testdev.c b/hw/misc/pc-testdev.c index 67c486f347c..4093cb3c99c 100644 --- a/hw/misc/pc-testdev.c +++ b/hw/misc/pc-testdev.c @@ -37,7 +37,7 @@ =20 #include "qemu/osdep.h" #include "qemu/module.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/isa/isa.h" #include "qom/object.h" =20 diff --git a/hw/misc/sifive_e_aon.c b/hw/misc/sifive_e_aon.c index 6eef38d622a..9b1e7baf95e 100644 --- a/hw/misc/sifive_e_aon.c +++ b/hw/misc/sifive_e_aon.c @@ -19,7 +19,7 @@ #include "qemu/osdep.h" #include "qemu/timer.h" #include "qemu/log.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/registerfields.h" #include "hw/misc/sifive_e_aon.h" #include "qapi/visitor.h" diff --git a/hw/misc/slavio_misc.c b/hw/misc/slavio_misc.c index a034df3592f..43ce5d0bc97 100644 --- a/hw/misc/slavio_misc.c +++ b/hw/misc/slavio_misc.c @@ -23,7 +23,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "qemu/module.h" diff --git a/hw/misc/stm32_rcc.c b/hw/misc/stm32_rcc.c index 5815b3efa54..74ea29b1560 100644 --- a/hw/misc/stm32_rcc.c +++ b/hw/misc/stm32_rcc.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "trace.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "hw/misc/stm32_rcc.h" =20 diff --git a/hw/misc/stm32f4xx_exti.c b/hw/misc/stm32f4xx_exti.c index 0688e6e73ec..a9d396c5dcf 100644 --- a/hw/misc/stm32f4xx_exti.c +++ b/hw/misc/stm32f4xx_exti.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "trace.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "hw/misc/stm32f4xx_exti.h" =20 diff --git a/hw/misc/stm32f4xx_syscfg.c b/hw/misc/stm32f4xx_syscfg.c index addfb031e88..57e89a13aaa 100644 --- a/hw/misc/stm32f4xx_syscfg.c +++ b/hw/misc/stm32f4xx_syscfg.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "trace.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "hw/misc/stm32f4xx_syscfg.h" =20 diff --git a/hw/misc/stm32l4x5_exti.c b/hw/misc/stm32l4x5_exti.c index 9c002164c82..8de4568de70 100644 --- a/hw/misc/stm32l4x5_exti.c +++ b/hw/misc/stm32l4x5_exti.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "trace.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "hw/misc/stm32l4x5_exti.h" =20 diff --git a/hw/misc/stm32l4x5_rcc.c b/hw/misc/stm32l4x5_rcc.c index 514159777a0..d4af2cd6963 100644 --- a/hw/misc/stm32l4x5_rcc.c +++ b/hw/misc/stm32l4x5_rcc.c @@ -24,7 +24,7 @@ #include "hw/misc/stm32l4x5_rcc.h" #include "hw/misc/stm32l4x5_rcc_internals.h" #include "hw/core/clock.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-clock.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" diff --git a/hw/misc/stm32l4x5_syscfg.c b/hw/misc/stm32l4x5_syscfg.c index 85be226d2f4..de488a46780 100644 --- a/hw/misc/stm32l4x5_syscfg.c +++ b/hw/misc/stm32l4x5_syscfg.c @@ -24,7 +24,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "trace.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "hw/core/clock.h" #include "hw/qdev-clock.h" diff --git a/hw/misc/tz-mpc.c b/hw/misc/tz-mpc.c index a158d4a2944..d922639da17 100644 --- a/hw/misc/tz-mpc.c +++ b/hw/misc/tz-mpc.c @@ -17,7 +17,7 @@ #include "hw/sysbus.h" #include "migration/vmstate.h" #include "hw/registerfields.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/misc/tz-mpc.h" #include "hw/qdev-properties.h" =20 diff --git a/hw/misc/tz-msc.c b/hw/misc/tz-msc.c index af0cc5d4718..74c31f6d7d2 100644 --- a/hw/misc/tz-msc.c +++ b/hw/misc/tz-msc.c @@ -17,7 +17,7 @@ #include "hw/sysbus.h" #include "migration/vmstate.h" #include "hw/registerfields.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/misc/tz-msc.h" #include "hw/qdev-properties.h" =20 diff --git a/hw/misc/tz-ppc.c b/hw/misc/tz-ppc.c index e4235a846d4..2ab03fa9730 100644 --- a/hw/misc/tz-ppc.c +++ b/hw/misc/tz-ppc.c @@ -17,7 +17,7 @@ #include "hw/sysbus.h" #include "migration/vmstate.h" #include "hw/registerfields.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/misc/tz-ppc.h" #include "hw/qdev-properties.h" =20 diff --git a/hw/misc/xlnx-versal-cframe-reg.c b/hw/misc/xlnx-versal-cframe-= reg.c index 95e167b9213..616c0ecf837 100644 --- a/hw/misc/xlnx-versal-cframe-reg.c +++ b/hw/misc/xlnx-versal-cframe-reg.c @@ -18,7 +18,7 @@ #include "qapi/error.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/misc/xlnx-versal-cframe-reg.h" =20 #ifndef XLNX_VERSAL_CFRAME_REG_ERR_DEBUG diff --git a/hw/misc/xlnx-versal-cfu.c b/hw/misc/xlnx-versal-cfu.c index b920fc77c3f..ce58404eb2c 100644 --- a/hw/misc/xlnx-versal-cfu.c +++ b/hw/misc/xlnx-versal-cfu.c @@ -13,7 +13,7 @@ #include "qemu/osdep.h" #include "hw/sysbus.h" #include "hw/register.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qemu/bitops.h" #include "qemu/log.h" #include "qemu/units.h" diff --git a/hw/misc/xlnx-versal-crl.c b/hw/misc/xlnx-versal-crl.c index 5987f32c716..8f9a40d941d 100644 --- a/hw/misc/xlnx-versal-crl.c +++ b/hw/misc/xlnx-versal-crl.c @@ -11,7 +11,7 @@ #include "migration/vmstate.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/register.h" #include "hw/resettable.h" =20 diff --git a/hw/misc/xlnx-versal-pmc-iou-slcr.c b/hw/misc/xlnx-versal-pmc-i= ou-slcr.c index d76df468d49..c75800c1b3c 100644 --- a/hw/misc/xlnx-versal-pmc-iou-slcr.c +++ b/hw/misc/xlnx-versal-pmc-iou-slcr.c @@ -26,7 +26,7 @@ #include "qemu/osdep.h" #include "hw/sysbus.h" #include "hw/register.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qemu/bitops.h" #include "qemu/log.h" #include "migration/vmstate.h" diff --git a/hw/misc/xlnx-versal-xramc.c b/hw/misc/xlnx-versal-xramc.c index d90f3e87c74..af58bc761f3 100644 --- a/hw/misc/xlnx-versal-xramc.c +++ b/hw/misc/xlnx-versal-xramc.c @@ -13,7 +13,7 @@ #include "hw/sysbus.h" #include "hw/register.h" #include "hw/qdev-properties.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/misc/xlnx-versal-xramc.h" =20 #ifndef XLNX_XRAM_CTRL_ERR_DEBUG diff --git a/hw/misc/xlnx-zynqmp-apu-ctrl.c b/hw/misc/xlnx-zynqmp-apu-ctrl.c index 08777496d56..196e2452ae3 100644 --- a/hw/misc/xlnx-zynqmp-apu-ctrl.c +++ b/hw/misc/xlnx-zynqmp-apu-ctrl.c @@ -14,7 +14,7 @@ #include "migration/vmstate.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/register.h" =20 #include "qemu/bitops.h" diff --git a/hw/misc/xlnx-zynqmp-crf.c b/hw/misc/xlnx-zynqmp-crf.c index d9c1bd50e4f..841bce2231c 100644 --- a/hw/misc/xlnx-zynqmp-crf.c +++ b/hw/misc/xlnx-zynqmp-crf.c @@ -12,7 +12,7 @@ #include "qemu/bitops.h" #include "qemu/log.h" #include "migration/vmstate.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/misc/xlnx-zynqmp-crf.h" #include "target/arm/arm-powerctl.h" =20 diff --git a/hw/net/allwinner-sun8i-emac.c b/hw/net/allwinner-sun8i-emac.c index 30a81576b4c..a4824d61bda 100644 --- a/hw/net/allwinner-sun8i-emac.c +++ b/hw/net/allwinner-sun8i-emac.c @@ -23,7 +23,7 @@ #include "hw/sysbus.h" #include "migration/vmstate.h" #include "net/net.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "qemu/log.h" #include "trace.h" diff --git a/hw/net/allwinner_emac.c b/hw/net/allwinner_emac.c index 77d089d9887..9158c77cb4f 100644 --- a/hw/net/allwinner_emac.c +++ b/hw/net/allwinner_emac.c @@ -22,7 +22,7 @@ #include "migration/vmstate.h" #include "net/net.h" #include "qemu/fifo8.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/net/allwinner_emac.h" #include "hw/qdev-properties.h" #include "qemu/log.h" diff --git a/hw/net/cadence_gem.c b/hw/net/cadence_gem.c index 44896f1801b..ef72821f8d7 100644 --- a/hw/net/cadence_gem.c +++ b/hw/net/cadence_gem.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include /* for crc32 */ =20 -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/net/cadence_gem.h" #include "hw/qdev-properties.h" #include "hw/registerfields.h" diff --git a/hw/net/can/can_kvaser_pci.c b/hw/net/can/can_kvaser_pci.c index be16769de29..52584c5d6fa 100644 --- a/hw/net/can/can_kvaser_pci.c +++ b/hw/net/can/can_kvaser_pci.c @@ -32,7 +32,7 @@ #include "qemu/osdep.h" #include "qemu/module.h" #include "qapi/error.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci/pci_device.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" diff --git a/hw/net/can/can_mioe3680_pci.c b/hw/net/can/can_mioe3680_pci.c index 44f3ba370dc..2e9e09741b2 100644 --- a/hw/net/can/can_mioe3680_pci.c +++ b/hw/net/can/can_mioe3680_pci.c @@ -28,7 +28,7 @@ #include "qemu/osdep.h" #include "qemu/module.h" #include "qapi/error.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci/pci_device.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" diff --git a/hw/net/can/can_pcm3680_pci.c b/hw/net/can/can_pcm3680_pci.c index 7296d63be79..7dd23c905e5 100644 --- a/hw/net/can/can_pcm3680_pci.c +++ b/hw/net/can/can_pcm3680_pci.c @@ -28,7 +28,7 @@ #include "qemu/osdep.h" #include "qemu/module.h" #include "qapi/error.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci/pci_device.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" diff --git a/hw/net/can/can_sja1000.c b/hw/net/can/can_sja1000.c index 6b08e977a1d..922431effbc 100644 --- a/hw/net/can/can_sja1000.c +++ b/hw/net/can/can_sja1000.c @@ -28,7 +28,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "qemu/bitops.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "net/can_emu.h" =20 diff --git a/hw/net/can/ctucan_core.c b/hw/net/can/ctucan_core.c index 6bd99c477b2..b6ad7cdb400 100644 --- a/hw/net/can/ctucan_core.c +++ b/hw/net/can/ctucan_core.c @@ -29,7 +29,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "qemu/bitops.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "net/can_emu.h" =20 diff --git a/hw/net/can/ctucan_pci.c b/hw/net/can/ctucan_pci.c index bed6785433e..ad2b1e60cb4 100644 --- a/hw/net/can/ctucan_pci.c +++ b/hw/net/can/ctucan_pci.c @@ -29,7 +29,7 @@ #include "qemu/osdep.h" #include "qemu/module.h" #include "qapi/error.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci/pci_device.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" diff --git a/hw/net/can/xlnx-versal-canfd.c b/hw/net/can/xlnx-versal-canfd.c index 5735639b85a..07342795575 100644 --- a/hw/net/can/xlnx-versal-canfd.c +++ b/hw/net/can/xlnx-versal-canfd.c @@ -32,7 +32,7 @@ =20 #include "qemu/osdep.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/register.h" #include "qapi/error.h" #include "qemu/log.h" diff --git a/hw/net/can/xlnx-zynqmp-can.c b/hw/net/can/xlnx-zynqmp-can.c index ca9edd4a5b8..a98b208169f 100644 --- a/hw/net/can/xlnx-zynqmp-can.c +++ b/hw/net/can/xlnx-zynqmp-can.c @@ -32,7 +32,7 @@ #include "qemu/osdep.h" #include "hw/sysbus.h" #include "hw/register.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qapi/error.h" #include "qemu/bitops.h" #include "qemu/log.h" diff --git a/hw/net/dp8393x.c b/hw/net/dp8393x.c index d49032059bb..68062481c59 100644 --- a/hw/net/dp8393x.c +++ b/hw/net/dp8393x.c @@ -18,7 +18,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/net/dp8393x.h" #include "hw/sysbus.h" diff --git a/hw/net/fsl_etsec/etsec.c b/hw/net/fsl_etsec/etsec.c index 846f6cbc5d9..6ae8a1e1a3c 100644 --- a/hw/net/fsl_etsec/etsec.c +++ b/hw/net/fsl_etsec/etsec.c @@ -28,7 +28,7 @@ =20 #include "qemu/osdep.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/net/mii.h" #include "hw/ptimer.h" #include "hw/qdev-properties.h" diff --git a/hw/net/ftgmac100.c b/hw/net/ftgmac100.c index c41ce889cf1..d5590391b7f 100644 --- a/hw/net/ftgmac100.c +++ b/hw/net/ftgmac100.c @@ -12,7 +12,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/net/ftgmac100.h" #include "system/dma.h" #include "qapi/error.h" diff --git a/hw/net/i82596.c b/hw/net/i82596.c index af1abd49960..a94cfa2d6df 100644 --- a/hw/net/i82596.c +++ b/hw/net/i82596.c @@ -40,7 +40,7 @@ #include "qemu/timer.h" #include "net/net.h" #include "net/eth.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" #include "system/address-spaces.h" diff --git a/hw/net/imx_fec.c b/hw/net/imx_fec.c index e5e34dd1a47..386d24421cb 100644 --- a/hw/net/imx_fec.c +++ b/hw/net/imx_fec.c @@ -22,7 +22,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/net/imx_fec.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" diff --git a/hw/net/lan9118.c b/hw/net/lan9118.c index 3017e129710..1c9bb4807d2 100644 --- a/hw/net/lan9118.c +++ b/hw/net/lan9118.c @@ -15,7 +15,7 @@ #include "migration/vmstate.h" #include "net/net.h" #include "net/eth.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/net/lan9118_phy.h" #include "hw/net/lan9118.h" #include "hw/ptimer.h" diff --git a/hw/net/lan9118_phy.c b/hw/net/lan9118_phy.c index 4c4e03df115..f0f6e55d807 100644 --- a/hw/net/lan9118_phy.c +++ b/hw/net/lan9118_phy.c @@ -15,7 +15,7 @@ #include "qemu/osdep.h" #include "hw/net/lan9118_phy.h" #include "hw/net/mii.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/resettable.h" #include "migration/vmstate.h" #include "qemu/log.h" diff --git a/hw/net/mcf_fec.c b/hw/net/mcf_fec.c index ae128fa3114..9cd94369859 100644 --- a/hw/net/mcf_fec.c +++ b/hw/net/mcf_fec.c @@ -8,7 +8,7 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "net/net.h" #include "qemu/module.h" #include "hw/m68k/mcf.h" diff --git a/hw/net/msf2-emac.c b/hw/net/msf2-emac.c index 59045973ab9..3e279209628 100644 --- a/hw/net/msf2-emac.c +++ b/hw/net/msf2-emac.c @@ -34,7 +34,7 @@ #include "hw/registerfields.h" #include "hw/net/msf2-emac.h" #include "hw/net/mii.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" =20 diff --git a/hw/net/mv88w8618_eth.c b/hw/net/mv88w8618_eth.c index 6f08846c81c..68fda839660 100644 --- a/hw/net/mv88w8618_eth.c +++ b/hw/net/mv88w8618_eth.c @@ -9,7 +9,7 @@ #include "qapi/error.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/net/mv88w8618_eth.h" #include "migration/vmstate.h" #include "system/dma.h" diff --git a/hw/net/ne2000-pci.c b/hw/net/ne2000-pci.c index ce937e1b618..7b215eb1f2e 100644 --- a/hw/net/ne2000-pci.c +++ b/hw/net/ne2000-pci.c @@ -23,7 +23,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci/pci_device.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" diff --git a/hw/net/ne2000.c b/hw/net/ne2000.c index b1923c8c3e1..fea21627f0f 100644 --- a/hw/net/ne2000.c +++ b/hw/net/ne2000.c @@ -26,7 +26,7 @@ #include "net/eth.h" #include "qemu/module.h" #include "system/memory.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "ne2000.h" #include "trace.h" diff --git a/hw/net/npcm7xx_emc.c b/hw/net/npcm7xx_emc.c index 9ba35e2c819..9eb39a6b846 100644 --- a/hw/net/npcm7xx_emc.c +++ b/hw/net/npcm7xx_emc.c @@ -31,7 +31,7 @@ =20 #include /* for crc32 */ =20 -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-clock.h" #include "hw/qdev-properties.h" #include "hw/net/npcm7xx_emc.h" diff --git a/hw/net/opencores_eth.c b/hw/net/opencores_eth.c index 7e955c01322..85419321d94 100644 --- a/hw/net/opencores_eth.c +++ b/hw/net/opencores_eth.c @@ -32,7 +32,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/net/mii.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" diff --git a/hw/net/pcnet-pci.c b/hw/net/pcnet-pci.c index 0ca5bc21938..dad5d2ab06d 100644 --- a/hw/net/pcnet-pci.c +++ b/hw/net/pcnet-pci.c @@ -28,7 +28,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci/pci_device.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" diff --git a/hw/net/pcnet.c b/hw/net/pcnet.c index ad675ab29d4..fc2ce5eeb2d 100644 --- a/hw/net/pcnet.c +++ b/hw/net/pcnet.c @@ -37,7 +37,7 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" #include "net/net.h" diff --git a/hw/net/smc91c111.c b/hw/net/smc91c111.c index 5cd78e334b6..b1c675be6fc 100644 --- a/hw/net/smc91c111.c +++ b/hw/net/smc91c111.c @@ -11,7 +11,7 @@ #include "hw/sysbus.h" #include "migration/vmstate.h" #include "net/net.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/net/smc91c111.h" #include "hw/registerfields.h" #include "hw/qdev-properties.h" diff --git a/hw/net/stellaris_enet.c b/hw/net/stellaris_enet.c index 2fc51e1e16d..a05aa8a024c 100644 --- a/hw/net/stellaris_enet.c +++ b/hw/net/stellaris_enet.c @@ -8,7 +8,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" #include "migration/vmstate.h" diff --git a/hw/net/tulip.c b/hw/net/tulip.c index 319af906c8d..5f9df76a74e 100644 --- a/hw/net/tulip.c +++ b/hw/net/tulip.c @@ -8,7 +8,7 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci/pci_device.h" #include "hw/qdev-properties.h" #include "hw/nvram/eeprom93xx.h" diff --git a/hw/net/xgmac.c b/hw/net/xgmac.c index d45f8724673..25768644f58 100644 --- a/hw/net/xgmac.c +++ b/hw/net/xgmac.c @@ -25,7 +25,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" #include "migration/vmstate.h" diff --git a/hw/net/xilinx_axienet.c b/hw/net/xilinx_axienet.c index 1f5c7480476..c7cb257e62d 100644 --- a/hw/net/xilinx_axienet.c +++ b/hw/net/xilinx_axienet.c @@ -31,7 +31,7 @@ #include "net/net.h" #include "net/checksum.h" =20 -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/stream.h" #include "qom/object.h" diff --git a/hw/net/xilinx_ethlite.c b/hw/net/xilinx_ethlite.c index 42b19d07c76..0d00e3cc0d9 100644 --- a/hw/net/xilinx_ethlite.c +++ b/hw/net/xilinx_ethlite.c @@ -32,7 +32,7 @@ #include "qom/object.h" #include "qapi/error.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/misc/unimp.h" diff --git a/hw/nubus/nubus-device.c b/hw/nubus/nubus-device.c index 0d4d6c0d875..1abd9489044 100644 --- a/hw/nubus/nubus-device.c +++ b/hw/nubus/nubus-device.c @@ -11,7 +11,7 @@ #include "qemu/osdep.h" #include "qemu/datadir.h" #include "exec/target_page.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/loader.h" #include "hw/nubus/nubus.h" #include "qapi/error.h" diff --git a/hw/openrisc/openrisc_sim.c b/hw/openrisc/openrisc_sim.c index 769107e835e..a42e7b5e271 100644 --- a/hw/openrisc/openrisc_sim.c +++ b/hw/openrisc/openrisc_sim.c @@ -22,7 +22,7 @@ #include "qemu/error-report.h" #include "qapi/error.h" #include "cpu.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/core/boards.h" #include "hw/char/serial-mm.h" #include "net/net.h" diff --git a/hw/openrisc/virt.c b/hw/openrisc/virt.c index 3cfd1c0b5ce..bc5d27dbdd8 100644 --- a/hw/openrisc/virt.c +++ b/hw/openrisc/virt.c @@ -12,7 +12,7 @@ #include "qapi/error.h" #include "cpu.h" #include "system/address-spaces.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/core/boards.h" #include "hw/char/serial-mm.h" #include "hw/core/split-irq.h" diff --git a/hw/pci-host/articia.c b/hw/pci-host/articia.c index cc65aac2a87..1881e03d586 100644 --- a/hw/pci-host/articia.c +++ b/hw/pci-host/articia.c @@ -12,7 +12,7 @@ #include "qapi/error.h" #include "hw/pci/pci_device.h" #include "hw/pci/pci_host.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/i2c/bitbang_i2c.h" #include "hw/intc/i8259.h" #include "hw/pci-host/articia.h" diff --git a/hw/pci-host/aspeed_pcie.c b/hw/pci-host/aspeed_pcie.c index 1fc2c617727..5d837f638c2 100644 --- a/hw/pci-host/aspeed_pcie.c +++ b/hw/pci-host/aspeed_pcie.c @@ -19,7 +19,7 @@ #include "qapi/error.h" #include "hw/qdev-properties.h" #include "hw/registerfields.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci/pci_host.h" #include "hw/pci/pcie_port.h" #include "hw/pci-host/aspeed_pcie.h" diff --git a/hw/pci-host/astro.c b/hw/pci-host/astro.c index 1024ede7b68..b54f6ef2d53 100644 --- a/hw/pci-host/astro.c +++ b/hw/pci-host/astro.c @@ -25,7 +25,7 @@ #include "qemu/module.h" #include "qemu/units.h" #include "qapi/error.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci/pci_device.h" #include "hw/pci/pci_bus.h" #include "hw/qdev-properties.h" diff --git a/hw/pci-host/bonito.c b/hw/pci-host/bonito.c index cbda068ef7d..90040045c1f 100644 --- a/hw/pci-host/bonito.c +++ b/hw/pci-host/bonito.c @@ -43,7 +43,7 @@ #include "qapi/error.h" #include "qemu/error-report.h" #include "hw/pci/pci_device.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/mips/mips.h" #include "hw/pci-host/bonito.h" #include "hw/pci/pci_host.h" diff --git a/hw/pci-host/designware.c b/hw/pci-host/designware.c index f6e49ce9b8d..5a80502abb7 100644 --- a/hw/pci-host/designware.c +++ b/hw/pci-host/designware.c @@ -28,7 +28,7 @@ #include "hw/pci/pcie_port.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci-host/designware.h" =20 #define DESIGNWARE_PCIE_PORT_LINK_CONTROL 0x710 diff --git a/hw/pci-host/dino.c b/hw/pci-host/dino.c index 924053499c1..e6fdb927f5e 100644 --- a/hw/pci-host/dino.c +++ b/hw/pci-host/dino.c @@ -14,7 +14,7 @@ #include "qemu/module.h" #include "qemu/units.h" #include "qapi/error.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci/pci_device.h" #include "hw/pci/pci_bus.h" #include "hw/qdev-properties.h" diff --git a/hw/pci-host/gpex.c b/hw/pci-host/gpex.c index b806a2286f7..3db4c8c9f05 100644 --- a/hw/pci-host/gpex.c +++ b/hw/pci-host/gpex.c @@ -31,7 +31,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci/pci_bus.h" #include "hw/pci-host/gpex.h" #include "hw/qdev-properties.h" diff --git a/hw/pci-host/grackle.c b/hw/pci-host/grackle.c index f9da5a908c1..85a4b83228a 100644 --- a/hw/pci-host/grackle.c +++ b/hw/pci-host/grackle.c @@ -26,7 +26,7 @@ #include "qemu/osdep.h" #include "hw/qdev-properties.h" #include "hw/pci/pci_device.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qapi/error.h" #include "qemu/module.h" #include "trace.h" diff --git a/hw/pci-host/gt64120.c b/hw/pci-host/gt64120.c index b1d96f62fe9..3e497b5da5b 100644 --- a/hw/pci-host/gt64120.c +++ b/hw/pci-host/gt64120.c @@ -36,7 +36,7 @@ #include "hw/misc/empty_slot.h" #include "migration/vmstate.h" #include "hw/intc/i8259.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "trace.h" #include "qom/object.h" =20 diff --git a/hw/pci-host/mv64361.c b/hw/pci-host/mv64361.c index e05b6770102..9f080e4825a 100644 --- a/hw/pci-host/mv64361.c +++ b/hw/pci-host/mv64361.c @@ -14,7 +14,7 @@ #include "hw/sysbus.h" #include "hw/pci/pci_device.h" #include "hw/pci/pci_host.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/intc/i8259.h" #include "hw/qdev-properties.h" #include "system/address-spaces.h" diff --git a/hw/pci-host/pnv_phb3.c b/hw/pci-host/pnv_phb3.c index 5d8383fac30..9808d575509 100644 --- a/hw/pci-host/pnv_phb3.c +++ b/hw/pci-host/pnv_phb3.c @@ -18,7 +18,7 @@ #include "hw/pci/pcie_port.h" #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_chip.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "qom/object.h" #include "system/system.h" diff --git a/hw/pci-host/pnv_phb3_msi.c b/hw/pci-host/pnv_phb3_msi.c index 3a83311faff..f6bf4e323a9 100644 --- a/hw/pci-host/pnv_phb3_msi.c +++ b/hw/pci-host/pnv_phb3_msi.c @@ -13,7 +13,7 @@ #include "hw/pci-host/pnv_phb3.h" #include "hw/ppc/pnv.h" #include "hw/pci/msi.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "system/reset.h" =20 diff --git a/hw/pci-host/pnv_phb4.c b/hw/pci-host/pnv_phb4.c index 18992054e83..9f17fc1bb41 100644 --- a/hw/pci-host/pnv_phb4.c +++ b/hw/pci-host/pnv_phb4.c @@ -18,7 +18,7 @@ #include "hw/pci/pcie_port.h" #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_xscom.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "qom/object.h" #include "trace.h" diff --git a/hw/pci-host/ppc440_pcix.c b/hw/pci-host/ppc440_pcix.c index 744b85e49cc..3bd15b8c32b 100644 --- a/hw/pci-host/ppc440_pcix.c +++ b/hw/pci-host/ppc440_pcix.c @@ -24,7 +24,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "qemu/units.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci-host/ppc4xx.h" #include "hw/pci/pci_device.h" #include "hw/pci/pci_host.h" diff --git a/hw/pci-host/ppc4xx_pci.c b/hw/pci-host/ppc4xx_pci.c index 25478176881..b9a00f51930 100644 --- a/hw/pci-host/ppc4xx_pci.c +++ b/hw/pci-host/ppc4xx_pci.c @@ -23,7 +23,7 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci-host/ppc4xx.h" #include "migration/vmstate.h" #include "qemu/module.h" diff --git a/hw/pci-host/ppce500.c b/hw/pci-host/ppce500.c index 975d191ccb8..a8e172136eb 100644 --- a/hw/pci-host/ppce500.c +++ b/hw/pci-host/ppce500.c @@ -15,7 +15,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" #include "hw/pci/pci_device.h" diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index 22ad244eb6e..3032e0d6854 100644 --- a/hw/pci-host/raven.c +++ b/hw/pci-host/raven.c @@ -32,7 +32,7 @@ #include "hw/pci/pci_host.h" #include "hw/qdev-properties.h" #include "hw/intc/i8259.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/or-irq.h" #include "qom/object.h" =20 diff --git a/hw/pci-host/sabre.c b/hw/pci-host/sabre.c index 538624c5079..c2f99b76f80 100644 --- a/hw/pci-host/sabre.c +++ b/hw/pci-host/sabre.c @@ -31,7 +31,7 @@ #include "hw/qdev-properties.h" #include "hw/pci/pci_bridge.h" #include "hw/pci/pci_bus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci-bridge/simba.h" #include "hw/pci-host/sabre.h" #include "qapi/error.h" diff --git a/hw/pci-host/sh_pci.c b/hw/pci-host/sh_pci.c index 62fb945075f..87a71c889e4 100644 --- a/hw/pci-host/sh_pci.c +++ b/hw/pci-host/sh_pci.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "hw/sysbus.h" #include "hw/sh4/sh.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci/pci_device.h" #include "hw/pci/pci_host.h" #include "qemu/module.h" diff --git a/hw/pci-host/uninorth.c b/hw/pci-host/uninorth.c index 194037d6e75..7a25f3f39f5 100644 --- a/hw/pci-host/uninorth.c +++ b/hw/pci-host/uninorth.c @@ -23,7 +23,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "qemu/module.h" #include "hw/pci/pci_device.h" diff --git a/hw/pci-host/versatile.c b/hw/pci-host/versatile.c index 8ea26e3ff00..40dce72e674 100644 --- a/hw/pci-host/versatile.c +++ b/hw/pci-host/versatile.c @@ -11,7 +11,7 @@ #include "qemu/units.h" #include "hw/sysbus.h" #include "migration/vmstate.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci/pci_device.h" #include "hw/pci/pci_bus.h" #include "hw/pci/pci_host.h" diff --git a/hw/pci-host/xilinx-pcie.c b/hw/pci-host/xilinx-pcie.c index c71492de9e7..ac6e61c83b0 100644 --- a/hw/pci-host/xilinx-pcie.c +++ b/hw/pci-host/xilinx-pcie.c @@ -23,7 +23,7 @@ #include "qapi/error.h" #include "hw/pci/pci_bridge.h" #include "hw/qdev-properties.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci-host/xilinx-pcie.h" =20 enum root_cfg_reg { diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 02a59f355b6..ffeb3fbf7cf 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "qemu/datadir.h" #include "qemu/units.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci/pci.h" #include "hw/pci/pci_bridge.h" #include "hw/pci/pci_bus.h" diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c index 8842f7f6b88..eeca31dabb9 100644 --- a/hw/ppc/e500.c +++ b/hw/ppc/e500.c @@ -49,7 +49,7 @@ #include "hw/platform-bus.h" #include "hw/net/fsl_etsec/etsec.h" #include "hw/i2c/i2c.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sd/sdhci.h" #include "hw/misc/unimp.h" =20 diff --git a/hw/ppc/pegasos.c b/hw/ppc/pegasos.c index e7396a729f3..8b5958e7498 100644 --- a/hw/ppc/pegasos.c +++ b/hw/ppc/pegasos.c @@ -13,7 +13,7 @@ #include "hw/ppc/ppc.h" #include "hw/sysbus.h" #include "hw/pci/pci_host.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/or-irq.h" #include "hw/pci-host/articia.h" #include "hw/pci-host/mv64361.h" diff --git a/hw/ppc/pnv_chiptod.c b/hw/ppc/pnv_chiptod.c index f887a18cde8..540d5e365f4 100644 --- a/hw/ppc/pnv_chiptod.c +++ b/hw/ppc/pnv_chiptod.c @@ -28,7 +28,7 @@ #include "qapi/error.h" #include "qemu/log.h" #include "qemu/module.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/ppc/fdt.h" #include "hw/ppc/ppc.h" diff --git a/hw/ppc/pnv_i2c.c b/hw/ppc/pnv_i2c.c index 60de4794917..213e58b455c 100644 --- a/hw/ppc/pnv_i2c.c +++ b/hw/ppc/pnv_i2c.c @@ -11,7 +11,7 @@ #include "qemu/log.h" #include "system/reset.h" =20 -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" =20 #include "hw/ppc/pnv.h" diff --git a/hw/ppc/pnv_lpc.c b/hw/ppc/pnv_lpc.c index f6beba0917d..538681bdb32 100644 --- a/hw/ppc/pnv_lpc.c +++ b/hw/ppc/pnv_lpc.c @@ -22,7 +22,7 @@ #include "qapi/error.h" #include "qemu/log.h" #include "qemu/module.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/isa/isa.h" #include "hw/qdev-properties.h" #include "hw/ppc/pnv.h" diff --git a/hw/ppc/pnv_occ.c b/hw/ppc/pnv_occ.c index 24b789c191c..7e93e6a6b11 100644 --- a/hw/ppc/pnv_occ.c +++ b/hw/ppc/pnv_occ.c @@ -21,7 +21,7 @@ #include "qapi/error.h" #include "qemu/log.h" #include "qemu/module.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_chip.h" diff --git a/hw/ppc/pnv_psi.c b/hw/ppc/pnv_psi.c index 5d947d8b520..1cea9375c0e 100644 --- a/hw/ppc/pnv_psi.c +++ b/hw/ppc/pnv_psi.c @@ -19,7 +19,7 @@ =20 #include "qemu/osdep.h" #include "system/address-spaces.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "target/ppc/cpu.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/ppc/pnv_sbe.c b/hw/ppc/pnv_sbe.c index 34dc013d47b..4798e129983 100644 --- a/hw/ppc/pnv_sbe.c +++ b/hw/ppc/pnv_sbe.c @@ -21,7 +21,7 @@ #include "qapi/error.h" #include "qemu/log.h" #include "qemu/module.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_xscom.h" diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c index 3e436c70413..a512d4fa647 100644 --- a/hw/ppc/ppc.c +++ b/hw/ppc/ppc.c @@ -23,7 +23,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/ppc/ppc.h" #include "hw/ppc/ppc_e500.h" #include "qemu/timer.h" diff --git a/hw/ppc/ppc440_uc.c b/hw/ppc/ppc440_uc.c index 89e3fae08d7..fd9203d7e2a 100644 --- a/hw/ppc/ppc440_uc.c +++ b/hw/ppc/ppc440_uc.c @@ -12,7 +12,7 @@ #include "qemu/units.h" #include "qapi/error.h" #include "qemu/log.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/ppc/ppc4xx.h" #include "hw/pci-host/ppc4xx.h" #include "hw/qdev-properties.h" diff --git a/hw/ppc/ppc4xx_sdram.c b/hw/ppc/ppc4xx_sdram.c index 592769826bd..6cc2a82ac5c 100644 --- a/hw/ppc/ppc4xx_sdram.c +++ b/hw/ppc/ppc4xx_sdram.c @@ -35,7 +35,7 @@ #include "qemu/log.h" #include "qemu/error-report.h" #include "system/address-spaces.h" /* get_system_memory() */ -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/ppc/ppc4xx.h" #include "trace.h" diff --git a/hw/ppc/prep_systemio.c b/hw/ppc/prep_systemio.c index 41cd923b94a..d0e42e8731a 100644 --- a/hw/ppc/prep_systemio.c +++ b/hw/ppc/prep_systemio.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/isa/isa.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c index 892ddc7f8f7..b1774e88f2b 100644 --- a/hw/ppc/spapr_events.c +++ b/hw/ppc/spapr_events.c @@ -34,7 +34,7 @@ #include "hw/ppc/spapr.h" #include "hw/ppc/spapr_vio.h" #include "hw/pci/pci.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci-host/spapr.h" #include "hw/ppc/spapr_drc.h" #include "qemu/help_option.h" diff --git a/hw/ppc/spapr_irq.c b/hw/ppc/spapr_irq.c index fc45a5d5d61..32a2edbe5cc 100644 --- a/hw/ppc/spapr_irq.c +++ b/hw/ppc/spapr_irq.c @@ -11,7 +11,7 @@ #include "qemu/log.h" #include "qemu/error-report.h" #include "qapi/error.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/ppc/spapr.h" #include "hw/ppc/spapr_cpu_core.h" #include "hw/ppc/spapr_xive.h" diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index d596a9e38e3..523edaa7b6c 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -25,7 +25,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "hw/pci/pci.h" diff --git a/hw/riscv/riscv-iommu-sys.c b/hw/riscv/riscv-iommu-sys.c index e34d00aef64..7d8c6f1c7c6 100644 --- a/hw/riscv/riscv-iommu-sys.c +++ b/hw/riscv/riscv-iommu-sys.c @@ -17,7 +17,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci/pci_bus.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c index 6839a2635e8..00438d2e596 100644 --- a/hw/riscv/sifive_u.c +++ b/hw/riscv/sifive_u.c @@ -40,7 +40,7 @@ #include "qapi/error.h" #include "qapi/visitor.h" #include "hw/core/boards.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/loader.h" #include "hw/sysbus.h" #include "hw/cpu/cluster.h" diff --git a/hw/rtc/exynos4210_rtc.c b/hw/rtc/exynos4210_rtc.c index 624b4f61a85..a7e17031ca8 100644 --- a/hw/rtc/exynos4210_rtc.c +++ b/hw/rtc/exynos4210_rtc.c @@ -34,7 +34,7 @@ #include "qemu/bcd.h" #include "hw/ptimer.h" =20 -#include "hw/irq.h" +#include "hw/core/irq.h" =20 #include "hw/arm/exynos4210.h" #include "qom/object.h" diff --git a/hw/rtc/goldfish_rtc.c b/hw/rtc/goldfish_rtc.c index 78df031cf29..67f9eacb22a 100644 --- a/hw/rtc/goldfish_rtc.c +++ b/hw/rtc/goldfish_rtc.c @@ -22,7 +22,7 @@ #include "qemu/osdep.h" #include "hw/rtc/goldfish_rtc.h" #include "migration/vmstate.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" #include "qemu/bitops.h" diff --git a/hw/rtc/ls7a_rtc.c b/hw/rtc/ls7a_rtc.c index 10097b2db75..234a7e97698 100644 --- a/hw/rtc/ls7a_rtc.c +++ b/hw/rtc/ls7a_rtc.c @@ -7,7 +7,7 @@ =20 #include "qemu/osdep.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/register.h" #include "qemu/timer.h" #include "system/system.h" diff --git a/hw/rtc/m48t59.c b/hw/rtc/m48t59.c index 68be2dad6f3..0be17b3e798 100644 --- a/hw/rtc/m48t59.c +++ b/hw/rtc/m48t59.c @@ -24,7 +24,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/rtc/m48t59.h" #include "qemu/timer.h" diff --git a/hw/rtc/mc146818rtc.c b/hw/rtc/mc146818rtc.c index 8631386b9f0..4c4c1c84219 100644 --- a/hw/rtc/mc146818rtc.c +++ b/hw/rtc/mc146818rtc.c @@ -28,7 +28,7 @@ #include "qemu/bcd.h" #include "hw/acpi/acpi_aml_interface.h" #include "hw/intc/kvm_irqcount.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "qemu/timer.h" diff --git a/hw/rtc/pl031.c b/hw/rtc/pl031.c index e545b9dfd64..2ec8ac8add6 100644 --- a/hw/rtc/pl031.c +++ b/hw/rtc/pl031.c @@ -14,7 +14,7 @@ #include "qemu/osdep.h" #include "hw/rtc/pl031.h" #include "migration/vmstate.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" #include "qemu/timer.h" diff --git a/hw/rtc/xlnx-zynqmp-rtc.c b/hw/rtc/xlnx-zynqmp-rtc.c index 500982a8011..18849340d62 100644 --- a/hw/rtc/xlnx-zynqmp-rtc.c +++ b/hw/rtc/xlnx-zynqmp-rtc.c @@ -30,7 +30,7 @@ #include "qemu/bitops.h" #include "qemu/log.h" #include "qemu/module.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qemu/cutils.h" #include "system/system.h" #include "system/rtc.h" diff --git a/hw/scsi/esp-pci.c b/hw/scsi/esp-pci.c index 12c86eb7aaa..b31ccdbeccb 100644 --- a/hw/scsi/esp-pci.c +++ b/hw/scsi/esp-pci.c @@ -25,7 +25,7 @@ =20 #include "qemu/osdep.h" #include "hw/pci/pci_device.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/nvram/eeprom93xx.h" #include "hw/scsi/esp.h" #include "migration/vmstate.h" diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c index 2809fcdee09..9da6119be26 100644 --- a/hw/scsi/esp.c +++ b/hw/scsi/esp.c @@ -27,7 +27,7 @@ #include "qemu/osdep.h" #include "hw/sysbus.h" #include "migration/vmstate.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/scsi/esp.h" #include "trace.h" #include "qemu/log.h" diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c index 9ea4aa0a853..6f43e500b3c 100644 --- a/hw/scsi/lsi53c895a.c +++ b/hw/scsi/lsi53c895a.c @@ -15,7 +15,7 @@ =20 #include "qemu/osdep.h" =20 -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci/pci_device.h" #include "hw/scsi/scsi.h" #include "migration/vmstate.h" diff --git a/hw/scsi/ncr53c710.c b/hw/scsi/ncr53c710.c index 47a69834912..9931fd4dc7d 100644 --- a/hw/scsi/ncr53c710.c +++ b/hw/scsi/ncr53c710.c @@ -28,7 +28,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qemu/timer.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "hw/scsi/scsi.h" #include "hw/scsi/ncr53c710.h" diff --git a/hw/sd/allwinner-sdhost.c b/hw/sd/allwinner-sdhost.c index 9d61b372e70..4c039b9520e 100644 --- a/hw/sd/allwinner-sdhost.c +++ b/hw/sd/allwinner-sdhost.c @@ -25,7 +25,7 @@ #include "system/blockdev.h" #include "system/dma.h" #include "hw/qdev-properties.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sd/allwinner-sdhost.h" #include "migration/vmstate.h" #include "trace.h" diff --git a/hw/sd/aspeed_sdhci.c b/hw/sd/aspeed_sdhci.c index f5c0c4956aa..330e6a19c9a 100644 --- a/hw/sd/aspeed_sdhci.c +++ b/hw/sd/aspeed_sdhci.c @@ -11,7 +11,7 @@ #include "qemu/error-report.h" #include "hw/sd/aspeed_sdhci.h" #include "qapi/error.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "hw/qdev-properties.h" #include "trace.h" diff --git a/hw/sd/bcm2835_sdhost.c b/hw/sd/bcm2835_sdhost.c index f7cef7bb1cd..2736aa14d43 100644 --- a/hw/sd/bcm2835_sdhost.c +++ b/hw/sd/bcm2835_sdhost.c @@ -15,7 +15,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "system/blockdev.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sd/bcm2835_sdhost.h" #include "migration/vmstate.h" #include "trace.h" diff --git a/hw/sd/omap_mmc.c b/hw/sd/omap_mmc.c index 5a1d25defaa..267b723e3c5 100644 --- a/hw/sd/omap_mmc.c +++ b/hw/sd/omap_mmc.c @@ -22,7 +22,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "qapi/error.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "hw/arm/omap.h" #include "hw/sd/sd.h" diff --git a/hw/sd/pl181.c b/hw/sd/pl181.c index 5d56ead4d91..761b262d7ba 100644 --- a/hw/sd/pl181.c +++ b/hw/sd/pl181.c @@ -11,7 +11,7 @@ #include "system/blockdev.h" #include "hw/sysbus.h" #include "migration/vmstate.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sd/sd.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 40a75a43ffb..ff45c8e70ca 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -35,7 +35,7 @@ #include "qemu/osdep.h" #include "qemu/units.h" #include "qemu/cutils.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/registerfields.h" #include "system/block-backend.h" #include "hw/sd/sd.h" diff --git a/hw/sd/sdhci-pci.c b/hw/sd/sdhci-pci.c index c18b91fe63c..0e38bed49a9 100644 --- a/hw/sd/sdhci-pci.c +++ b/hw/sd/sdhci-pci.c @@ -18,7 +18,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qemu/module.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/sd/sdhci.h" #include "sdhci-internal.h" diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 89b595ce4a5..39185f0a987 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -28,7 +28,7 @@ #include "qemu/units.h" #include "qemu/error-report.h" #include "qapi/error.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "system/dma.h" #include "qemu/timer.h" diff --git a/hw/sensor/adm1266.c b/hw/sensor/adm1266.c index 9017ce6116c..37d1cffd57a 100644 --- a/hw/sensor/adm1266.c +++ b/hw/sensor/adm1266.c @@ -11,7 +11,7 @@ =20 #include "qemu/osdep.h" #include "hw/i2c/pmbus_device.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qapi/visitor.h" diff --git a/hw/sensor/adm1272.c b/hw/sensor/adm1272.c index 0c739aa0d85..0aa2a865568 100644 --- a/hw/sensor/adm1272.c +++ b/hw/sensor/adm1272.c @@ -9,7 +9,7 @@ =20 #include "qemu/osdep.h" #include "hw/i2c/pmbus_device.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qapi/visitor.h" diff --git a/hw/sensor/max31785.c b/hw/sensor/max31785.c index c75581455a2..468858a60e4 100644 --- a/hw/sensor/max31785.c +++ b/hw/sensor/max31785.c @@ -10,7 +10,7 @@ =20 #include "qemu/osdep.h" #include "hw/i2c/pmbus_device.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qapi/visitor.h" diff --git a/hw/sensor/max34451.c b/hw/sensor/max34451.c index a369d2b5319..4d64434f3af 100644 --- a/hw/sensor/max34451.c +++ b/hw/sensor/max34451.c @@ -8,7 +8,7 @@ =20 #include "qemu/osdep.h" #include "hw/i2c/pmbus_device.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qapi/visitor.h" diff --git a/hw/sensor/tmp105.c b/hw/sensor/tmp105.c index f5b61109e36..4e5c968bcc7 100644 --- a/hw/sensor/tmp105.c +++ b/hw/sensor/tmp105.c @@ -20,7 +20,7 @@ =20 #include "qemu/osdep.h" #include "hw/i2c/i2c.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" #include "hw/sensor/tmp105.h" #include "qapi/error.h" diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c index bccd40f5712..5352f23ae82 100644 --- a/hw/sh4/r2d.c +++ b/hw/sh4/r2d.c @@ -39,7 +39,7 @@ #include "net/net.h" #include "sh7750_regs.h" #include "hw/ide/mmio.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/loader.h" #include "hw/usb/usb.h" #include "hw/block/flash.h" diff --git a/hw/sh4/sh7750.c b/hw/sh4/sh7750.c index 300eabc595d..6cb42e34412 100644 --- a/hw/sh4/sh7750.c +++ b/hw/sh4/sh7750.c @@ -26,7 +26,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sh4/sh.h" #include "system/system.h" #include "target/sh4/cpu.h" diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c index 367beecf192..500b63bc9b7 100644 --- a/hw/sparc/leon3.c +++ b/hw/sparc/leon3.c @@ -30,7 +30,7 @@ #include "qapi/error.h" #include "qemu/datadir.h" #include "cpu.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qemu/timer.h" #include "hw/ptimer.h" #include "hw/qdev-properties.h" diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index b0d2d6f8bc8..fa5592f26cb 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -49,7 +49,7 @@ #include "hw/char/escc.h" #include "hw/misc/empty_slot.h" #include "hw/misc/unimp.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/or-irq.h" #include "hw/loader.h" #include "elf.h" diff --git a/hw/sparc/sun4m_iommu.c b/hw/sparc/sun4m_iommu.c index a7ff36ee78c..9ce2e3b7fc8 100644 --- a/hw/sparc/sun4m_iommu.c +++ b/hw/sparc/sun4m_iommu.c @@ -23,7 +23,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/sparc/sun4m_iommu.h" #include "hw/sysbus.h" diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c index 62ceb7eef4d..5b25ba81cc8 100644 --- a/hw/sparc64/sun4u.c +++ b/hw/sparc64/sun4u.c @@ -29,7 +29,7 @@ #include "qemu/datadir.h" #include "cpu.h" #include "exec/target_page.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/pci/pci.h" #include "hw/pci/pci_bridge.h" #include "hw/pci/pci_host.h" diff --git a/hw/ssi/allwinner-a10-spi.c b/hw/ssi/allwinner-a10-spi.c index 6b7cca8d32a..69920b935af 100644 --- a/hw/ssi/allwinner-a10-spi.c +++ b/hw/ssi/allwinner-a10-spi.c @@ -20,7 +20,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/ssi/allwinner-a10-spi.h" #include "migration/vmstate.h" #include "qemu/log.h" diff --git a/hw/ssi/aspeed_smc.c b/hw/ssi/aspeed_smc.c index e33496f5029..9819904a4ad 100644 --- a/hw/ssi/aspeed_smc.c +++ b/hw/ssi/aspeed_smc.c @@ -33,7 +33,7 @@ #include "qemu/units.h" #include "trace.h" =20 -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/ssi/aspeed_smc.h" =20 diff --git a/hw/ssi/bcm2835_spi.c b/hw/ssi/bcm2835_spi.c index bf8ba35e04c..01763c458c1 100644 --- a/hw/ssi/bcm2835_spi.c +++ b/hw/ssi/bcm2835_spi.c @@ -26,7 +26,7 @@ #include "qemu/log.h" #include "qemu/fifo8.h" #include "hw/ssi/bcm2835_spi.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "migration/vmstate.h" =20 static void bcm2835_spi_update_int(BCM2835SPIState *s) diff --git a/hw/ssi/ibex_spi_host.c b/hw/ssi/ibex_spi_host.c index f05be687483..63f4cce5129 100644 --- a/hw/ssi/ibex_spi_host.c +++ b/hw/ssi/ibex_spi_host.c @@ -28,7 +28,7 @@ #include "qemu/module.h" #include "hw/registerfields.h" #include "hw/ssi/ibex_spi_host.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/vmstate.h" diff --git a/hw/ssi/imx_spi.c b/hw/ssi/imx_spi.c index 1312f588d2e..8e014b7a7bb 100644 --- a/hw/ssi/imx_spi.c +++ b/hw/ssi/imx_spi.c @@ -9,7 +9,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/ssi/imx_spi.h" #include "migration/vmstate.h" #include "qemu/log.h" diff --git a/hw/ssi/mss-spi.c b/hw/ssi/mss-spi.c index fd7ba7eeb04..3c118fc0f8c 100644 --- a/hw/ssi/mss-spi.c +++ b/hw/ssi/mss-spi.c @@ -24,7 +24,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/ssi/mss-spi.h" #include "migration/vmstate.h" #include "qemu/log.h" diff --git a/hw/ssi/npcm7xx_fiu.c b/hw/ssi/npcm7xx_fiu.c index 056ce13394f..bc5e4e20ccd 100644 --- a/hw/ssi/npcm7xx_fiu.c +++ b/hw/ssi/npcm7xx_fiu.c @@ -16,7 +16,7 @@ =20 #include "qemu/osdep.h" =20 -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/ssi/npcm7xx_fiu.h" #include "migration/vmstate.h" diff --git a/hw/ssi/npcm_pspi.c b/hw/ssi/npcm_pspi.c index a31dcc050e8..1f11e1f8a46 100644 --- a/hw/ssi/npcm_pspi.c +++ b/hw/ssi/npcm_pspi.c @@ -16,7 +16,7 @@ =20 #include "qemu/osdep.h" =20 -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/registerfields.h" #include "hw/ssi/npcm_pspi.h" #include "migration/vmstate.h" diff --git a/hw/ssi/pl022.c b/hw/ssi/pl022.c index 1dc0bcbcc04..1851118d55f 100644 --- a/hw/ssi/pl022.c +++ b/hw/ssi/pl022.c @@ -10,7 +10,7 @@ #include "qemu/osdep.h" #include "hw/sysbus.h" #include "migration/vmstate.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/ssi/pl022.h" #include "hw/ssi/ssi.h" #include "qemu/log.h" diff --git a/hw/ssi/pnv_spi.c b/hw/ssi/pnv_spi.c index f40e8836b9c..e59386712b4 100644 --- a/hw/ssi/pnv_spi.c +++ b/hw/ssi/pnv_spi.c @@ -14,7 +14,7 @@ #include "hw/ssi/pnv_spi_regs.h" #include "hw/ssi/ssi.h" #include -#include "hw/irq.h" +#include "hw/core/irq.h" #include "trace.h" =20 #define PNV_SPI_OPCODE_LO_NIBBLE(x) (x & 0x0F) diff --git a/hw/ssi/sifive_spi.c b/hw/ssi/sifive_spi.c index 3e01fef61cd..c66fae80a9c 100644 --- a/hw/ssi/sifive_spi.c +++ b/hw/ssi/sifive_spi.c @@ -20,7 +20,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" #include "hw/ssi/ssi.h" diff --git a/hw/ssi/xilinx_spi.c b/hw/ssi/xilinx_spi.c index 4144c8a6270..9e8656b5560 100644 --- a/hw/ssi/xilinx_spi.c +++ b/hw/ssi/xilinx_spi.c @@ -31,7 +31,7 @@ #include "qemu/module.h" #include "qemu/fifo8.h" =20 -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/ssi/ssi.h" diff --git a/hw/ssi/xilinx_spips.c b/hw/ssi/xilinx_spips.c index a79f3b8e494..b2f66275182 100644 --- a/hw/ssi/xilinx_spips.c +++ b/hw/ssi/xilinx_spips.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/ptimer.h" #include "hw/qdev-properties.h" #include "qemu/log.h" diff --git a/hw/ssi/xlnx-versal-ospi.c b/hw/ssi/xlnx-versal-ospi.c index 56d51ce0e30..88fafb5a2ed 100644 --- a/hw/ssi/xlnx-versal-ospi.c +++ b/hw/ssi/xlnx-versal-ospi.c @@ -28,7 +28,7 @@ #include "hw/qdev-properties.h" #include "qemu/bitops.h" #include "qemu/log.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/ssi/xlnx-versal-ospi.h" =20 #ifndef XILINX_VERSAL_OSPI_ERR_DEBUG diff --git a/hw/timer/a9gtimer.c b/hw/timer/a9gtimer.c index 690140f5a6c..a0b73fb7311 100644 --- a/hw/timer/a9gtimer.c +++ b/hw/timer/a9gtimer.c @@ -22,7 +22,7 @@ =20 #include "qemu/osdep.h" #include "hw/hw.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/timer/a9gtimer.h" #include "migration/vmstate.h" diff --git a/hw/timer/allwinner-a10-pit.c b/hw/timer/allwinner-a10-pit.c index e4c353273a1..6c0d3b556a2 100644 --- a/hw/timer/allwinner-a10-pit.c +++ b/hw/timer/allwinner-a10-pit.c @@ -16,7 +16,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" #include "hw/timer/allwinner-a10-pit.h" diff --git a/hw/timer/arm_mptimer.c b/hw/timer/arm_mptimer.c index 7cc5915e9ec..ac6313039a8 100644 --- a/hw/timer/arm_mptimer.c +++ b/hw/timer/arm_mptimer.c @@ -21,7 +21,7 @@ =20 #include "qemu/osdep.h" #include "hw/hw.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/ptimer.h" #include "hw/qdev-properties.h" #include "hw/timer/arm_mptimer.h" diff --git a/hw/timer/arm_timer.c b/hw/timer/arm_timer.c index 56638ff5cdc..e5ef28de6f7 100644 --- a/hw/timer/arm_timer.c +++ b/hw/timer/arm_timer.c @@ -11,7 +11,7 @@ #include "hw/sysbus.h" #include "migration/vmstate.h" #include "qemu/timer.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/ptimer.h" #include "hw/qdev-properties.h" #include "qemu/module.h" diff --git a/hw/timer/armv7m_systick.c b/hw/timer/armv7m_systick.c index 7e4ddcd4058..c9e0f4c2e17 100644 --- a/hw/timer/armv7m_systick.c +++ b/hw/timer/armv7m_systick.c @@ -12,7 +12,7 @@ #include "qemu/osdep.h" #include "hw/timer/armv7m_systick.h" #include "migration/vmstate.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "hw/qdev-clock.h" #include "qemu/timer.h" diff --git a/hw/timer/aspeed_timer.c b/hw/timer/aspeed_timer.c index 57db03512f4..b08a737bc97 100644 --- a/hw/timer/aspeed_timer.c +++ b/hw/timer/aspeed_timer.c @@ -11,7 +11,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "hw/timer/aspeed_timer.h" #include "migration/vmstate.h" diff --git a/hw/timer/avr_timer16.c b/hw/timer/avr_timer16.c index 012d8290018..0f1fda4218f 100644 --- a/hw/timer/avr_timer16.c +++ b/hw/timer/avr_timer16.c @@ -34,7 +34,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qemu/log.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/timer/avr_timer16.h" #include "trace.h" diff --git a/hw/timer/cadence_ttc.c b/hw/timer/cadence_ttc.c index 9c7ba168768..6f02c6a02d9 100644 --- a/hw/timer/cadence_ttc.c +++ b/hw/timer/cadence_ttc.c @@ -17,7 +17,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "qemu/module.h" diff --git a/hw/timer/cmsdk-apb-dualtimer.c b/hw/timer/cmsdk-apb-dualtimer.c index 34c550a3f98..57fea11a855 100644 --- a/hw/timer/cmsdk-apb-dualtimer.c +++ b/hw/timer/cmsdk-apb-dualtimer.c @@ -22,7 +22,7 @@ #include "qapi/error.h" #include "qemu/module.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/registerfields.h" #include "hw/qdev-clock.h" diff --git a/hw/timer/cmsdk-apb-timer.c b/hw/timer/cmsdk-apb-timer.c index 4095267b4aa..8b7595731cc 100644 --- a/hw/timer/cmsdk-apb-timer.c +++ b/hw/timer/cmsdk-apb-timer.c @@ -33,7 +33,7 @@ #include "qapi/error.h" #include "trace.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/registerfields.h" #include "hw/qdev-clock.h" #include "hw/timer/cmsdk-apb-timer.h" diff --git a/hw/timer/exynos4210_mct.c b/hw/timer/exynos4210_mct.c index bb0f9c8b9a6..06524efca27 100644 --- a/hw/timer/exynos4210_mct.c +++ b/hw/timer/exynos4210_mct.c @@ -61,7 +61,7 @@ #include "hw/ptimer.h" =20 #include "hw/arm/exynos4210.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qom/object.h" =20 //#define DEBUG_MCT diff --git a/hw/timer/exynos4210_pwm.c b/hw/timer/exynos4210_pwm.c index 69f737a8e6f..dc76932fdfb 100644 --- a/hw/timer/exynos4210_pwm.c +++ b/hw/timer/exynos4210_pwm.c @@ -29,7 +29,7 @@ #include "hw/ptimer.h" =20 #include "hw/arm/exynos4210.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qom/object.h" =20 //#define DEBUG_PWM diff --git a/hw/timer/grlib_gptimer.c b/hw/timer/grlib_gptimer.c index 0e06fa09e99..6218c255d2c 100644 --- a/hw/timer/grlib_gptimer.c +++ b/hw/timer/grlib_gptimer.c @@ -28,7 +28,7 @@ #include "hw/timer/grlib_gptimer.h" #include "hw/sysbus.h" #include "qemu/timer.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/ptimer.h" #include "hw/qdev-properties.h" #include "qemu/module.h" diff --git a/hw/timer/hpet.c b/hw/timer/hpet.c index 1acba4fa9db..1387c417ae1 100644 --- a/hw/timer/hpet.c +++ b/hw/timer/hpet.c @@ -25,7 +25,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qapi/error.h" #include "qemu/error-report.h" #include "qemu/timer.h" diff --git a/hw/timer/i8254.c b/hw/timer/i8254.c index 7033ebf50da..1a8b6bf9abe 100644 --- a/hw/timer/i8254.c +++ b/hw/timer/i8254.c @@ -23,7 +23,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qemu/module.h" #include "qemu/timer.h" #include "hw/timer/i8254.h" diff --git a/hw/timer/ibex_timer.c b/hw/timer/ibex_timer.c index c7320ef30fa..d2c4f86e038 100644 --- a/hw/timer/ibex_timer.c +++ b/hw/timer/ibex_timer.c @@ -29,7 +29,7 @@ #include "qemu/log.h" #include "qemu/timer.h" #include "hw/timer/ibex_timer.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "target/riscv/cpu.h" #include "migration/vmstate.h" diff --git a/hw/timer/imx_epit.c b/hw/timer/imx_epit.c index 6123321c352..c67a39f10cc 100644 --- a/hw/timer/imx_epit.c +++ b/hw/timer/imx_epit.c @@ -16,7 +16,7 @@ #include "qemu/osdep.h" #include "hw/timer/imx_epit.h" #include "migration/vmstate.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/misc/imx_ccm.h" #include "qemu/module.h" #include "qemu/log.h" diff --git a/hw/timer/imx_gpt.c b/hw/timer/imx_gpt.c index 8c7cbfdeac3..168cadcb3f9 100644 --- a/hw/timer/imx_gpt.c +++ b/hw/timer/imx_gpt.c @@ -13,7 +13,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/timer/imx_gpt.h" #include "migration/vmstate.h" #include "qemu/module.h" diff --git a/hw/timer/mss-timer.c b/hw/timer/mss-timer.c index 2ce821178b6..946e87c99a6 100644 --- a/hw/timer/mss-timer.c +++ b/hw/timer/mss-timer.c @@ -26,7 +26,7 @@ #include "qemu/osdep.h" #include "qemu/module.h" #include "qemu/log.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/timer/mss-timer.h" #include "migration/vmstate.h" diff --git a/hw/timer/npcm7xx_timer.c b/hw/timer/npcm7xx_timer.c index 6a116ad54b7..e09e4ee03ad 100644 --- a/hw/timer/npcm7xx_timer.c +++ b/hw/timer/npcm7xx_timer.c @@ -16,7 +16,7 @@ =20 #include "qemu/osdep.h" =20 -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-clock.h" #include "hw/qdev-properties.h" #include "hw/timer/npcm7xx_timer.h" diff --git a/hw/timer/nrf51_timer.c b/hw/timer/nrf51_timer.c index e228fdebc34..0688f49eefb 100644 --- a/hw/timer/nrf51_timer.c +++ b/hw/timer/nrf51_timer.c @@ -15,7 +15,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "hw/arm/nrf51.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/timer/nrf51_timer.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" diff --git a/hw/timer/pxa2xx_timer.c b/hw/timer/pxa2xx_timer.c index 6d4ac31574e..d18d98b2337 100644 --- a/hw/timer/pxa2xx_timer.c +++ b/hw/timer/pxa2xx_timer.c @@ -8,7 +8,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "qemu/timer.h" #include "system/runstate.h" diff --git a/hw/timer/renesas_cmt.c b/hw/timer/renesas_cmt.c index cdff7f47f16..c62dad690ff 100644 --- a/hw/timer/renesas_cmt.c +++ b/hw/timer/renesas_cmt.c @@ -23,7 +23,7 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/registerfields.h" #include "hw/qdev-properties.h" #include "hw/timer/renesas_cmt.h" diff --git a/hw/timer/renesas_tmr.c b/hw/timer/renesas_tmr.c index 95707f2b8c5..1fc539e9497 100644 --- a/hw/timer/renesas_tmr.c +++ b/hw/timer/renesas_tmr.c @@ -23,7 +23,7 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/registerfields.h" #include "hw/qdev-properties.h" #include "hw/timer/renesas_tmr.h" diff --git a/hw/timer/sh_timer.c b/hw/timer/sh_timer.c index d4fa32c9d65..adc05715528 100644 --- a/hw/timer/sh_timer.c +++ b/hw/timer/sh_timer.c @@ -11,7 +11,7 @@ #include "qemu/osdep.h" #include "system/memory.h" #include "qemu/log.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sh4/sh.h" #include "hw/timer/tmu012.h" #include "hw/ptimer.h" diff --git a/hw/timer/sifive_pwm.c b/hw/timer/sifive_pwm.c index e85e389f7a5..f1882ae6bc1 100644 --- a/hw/timer/sifive_pwm.c +++ b/hw/timer/sifive_pwm.c @@ -26,7 +26,7 @@ =20 #include "qemu/osdep.h" #include "trace.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/timer/sifive_pwm.h" #include "hw/qdev-properties.h" #include "hw/registerfields.h" diff --git a/hw/timer/slavio_timer.c b/hw/timer/slavio_timer.c index 3e071fbdb4c..5bf94157ca4 100644 --- a/hw/timer/slavio_timer.c +++ b/hw/timer/slavio_timer.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "qemu/timer.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/ptimer.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" diff --git a/hw/timer/sse-timer.c b/hw/timer/sse-timer.c index c5fd038162b..fc48179d25d 100644 --- a/hw/timer/sse-timer.c +++ b/hw/timer/sse-timer.c @@ -41,7 +41,7 @@ #include "hw/timer/sse-timer.h" #include "hw/timer/sse-counter.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/registerfields.h" #include "hw/core/clock.h" #include "hw/qdev-clock.h" diff --git a/hw/timer/stm32f2xx_timer.c b/hw/timer/stm32f2xx_timer.c index be844e7f5a3..979b6ad5bae 100644 --- a/hw/timer/stm32f2xx_timer.c +++ b/hw/timer/stm32f2xx_timer.c @@ -23,7 +23,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/timer/stm32f2xx_timer.h" #include "migration/vmstate.h" diff --git a/hw/timer/xilinx_timer.c b/hw/timer/xilinx_timer.c index ff4a224d08f..c1b6d2bdf2d 100644 --- a/hw/timer/xilinx_timer.c +++ b/hw/timer/xilinx_timer.c @@ -28,7 +28,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/ptimer.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" diff --git a/hw/tpm/tpm_tis_common.c b/hw/tpm/tpm_tis_common.c index cdd0df11374..1615be29339 100644 --- a/hw/tpm/tpm_tis_common.c +++ b/hw/tpm/tpm_tis_common.c @@ -23,7 +23,7 @@ * TPM Profile (PTP) Specification, Family 2.0, Revision 00.43 */ #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/isa/isa.h" #include "qapi/error.h" #include "qemu/bswap.h" diff --git a/hw/ufs/ufs.c b/hw/ufs/ufs.c index 0577747f469..cab42ae7b65 100644 --- a/hw/ufs/ufs.c +++ b/hw/ufs/ufs.c @@ -25,7 +25,7 @@ #include "qapi/error.h" #include "migration/vmstate.h" #include "scsi/constants.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "trace.h" #include "ufs.h" =20 diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c index b090f253656..57f930b0998 100644 --- a/hw/usb/hcd-ehci.c +++ b/hw/usb/hcd-ehci.c @@ -28,7 +28,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/usb/ehci-regs.h" #include "hw/usb/hcd-ehci.h" #include "migration/vmstate.h" diff --git a/hw/usb/hcd-ohci-sysbus.c b/hw/usb/hcd-ohci-sysbus.c index 2d3c770b117..5c3434153db 100644 --- a/hw/usb/hcd-ohci-sysbus.c +++ b/hw/usb/hcd-ohci-sysbus.c @@ -19,7 +19,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qapi/error.h" #include "qemu/module.h" #include "qemu/timer.h" diff --git a/hw/usb/hcd-ohci.c b/hw/usb/hcd-ohci.c index c48f07f7e39..ea3d5d2bd14 100644 --- a/hw/usb/hcd-ohci.c +++ b/hw/usb/hcd-ohci.c @@ -26,7 +26,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qapi/error.h" #include "qemu/module.h" #include "qemu/timer.h" diff --git a/hw/usb/hcd-uhci.c b/hw/usb/hcd-uhci.c index 124ac4faec0..c243a4f42cc 100644 --- a/hw/usb/hcd-uhci.c +++ b/hw/usb/hcd-uhci.c @@ -31,7 +31,7 @@ #include "hw/usb/uhci-regs.h" #include "migration/vmstate.h" #include "hw/pci/pci.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "qapi/error.h" #include "qemu/timer.h" diff --git a/hw/usb/hcd-xhci-sysbus.c b/hw/usb/hcd-xhci-sysbus.c index 244698e5f2b..862673054a0 100644 --- a/hw/usb/hcd-xhci-sysbus.c +++ b/hw/usb/hcd-xhci-sysbus.c @@ -14,7 +14,7 @@ #include "qapi/error.h" #include "hcd-xhci-sysbus.h" #include "hw/acpi/aml-build.h" -#include "hw/irq.h" +#include "hw/core/irq.h" =20 static bool xhci_sysbus_intr_raise(XHCIState *xhci, int n, bool level) { diff --git a/hw/usb/vt82c686-uhci-pci.c b/hw/usb/vt82c686-uhci-pci.c index 61628061722..97c09a51cfc 100644 --- a/hw/usb/vt82c686-uhci-pci.c +++ b/hw/usb/vt82c686-uhci-pci.c @@ -1,5 +1,5 @@ #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/isa/vt82c686.h" #include "hcd-uhci.h" =20 diff --git a/hw/usb/xlnx-versal-usb2-ctrl-regs.c b/hw/usb/xlnx-versal-usb2-= ctrl-regs.c index 4114672d4f4..eb946b5dbd9 100644 --- a/hw/usb/xlnx-versal-usb2-ctrl-regs.c +++ b/hw/usb/xlnx-versal-usb2-ctrl-regs.c @@ -29,7 +29,7 @@ =20 #include "qemu/osdep.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/register.h" #include "qemu/bitops.h" #include "qom/object.h" diff --git a/hw/virtio/virtio-mmio.c b/hw/virtio/virtio-mmio.c index c05c00bcd4a..d54d70b4fb8 100644 --- a/hw/virtio/virtio-mmio.c +++ b/hw/virtio/virtio-mmio.c @@ -21,7 +21,7 @@ =20 #include "qemu/osdep.h" #include "standard-headers/linux/virtio_mmio.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" #include "hw/virtio/virtio.h" diff --git a/hw/vmapple/aes.c b/hw/vmapple/aes.c index a4853a98f8c..a6e94610b85 100644 --- a/hw/vmapple/aes.c +++ b/hw/vmapple/aes.c @@ -14,7 +14,7 @@ #include "crypto/hash.h" #include "crypto/aes.h" #include "crypto/cipher.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/sysbus.h" #include "hw/vmapple/vmapple.h" #include "migration/vmstate.h" diff --git a/hw/vmapple/vmapple.c b/hw/vmapple/vmapple.c index 5da28cf72b2..9154a4c2576 100644 --- a/hw/vmapple/vmapple.c +++ b/hw/vmapple/vmapple.c @@ -26,7 +26,7 @@ #include "qemu/units.h" #include "monitor/qdev.h" #include "hw/core/boards.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/loader.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" diff --git a/hw/watchdog/cmsdk-apb-watchdog.c b/hw/watchdog/cmsdk-apb-watch= dog.c index 6a8d07ca569..e1a2a33d73e 100644 --- a/hw/watchdog/cmsdk-apb-watchdog.c +++ b/hw/watchdog/cmsdk-apb-watchdog.c @@ -27,7 +27,7 @@ #include "qemu/module.h" #include "system/watchdog.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/registerfields.h" #include "hw/qdev-clock.h" diff --git a/hw/xen/xen-pvh-common.c b/hw/xen/xen-pvh-common.c index c3fc501fe6e..f365222019a 100644 --- a/hw/xen/xen-pvh-common.c +++ b/hw/xen/xen-pvh-common.c @@ -11,7 +11,7 @@ #include "qemu/units.h" #include "qapi/visitor.h" #include "hw/core/boards.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "system/tpm.h" #include "system/tpm_backend.h" #include "system/runstate.h" diff --git a/hw/xtensa/mx_pic.c b/hw/xtensa/mx_pic.c index 8211c993eb7..07c3731aef0 100644 --- a/hw/xtensa/mx_pic.c +++ b/hw/xtensa/mx_pic.c @@ -26,7 +26,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/xtensa/mx_pic.h" #include "qemu/log.h" =20 diff --git a/hw/xtensa/pic_cpu.c b/hw/xtensa/pic_cpu.c index e3885316106..c00167859a2 100644 --- a/hw/xtensa/pic_cpu.c +++ b/hw/xtensa/pic_cpu.c @@ -28,7 +28,7 @@ #include "qemu/osdep.h" #include "cpu.h" #include "exec/cpu-interrupt.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qemu/log.h" #include "qemu/timer.h" #include "qemu/atomic.h" diff --git a/system/qtest.c b/system/qtest.c index 67e2385f4b0..b0bb9bf9d44 100644 --- a/system/qtest.c +++ b/system/qtest.c @@ -20,7 +20,7 @@ #include "system/memory.h" #include "exec/tswap.h" #include "hw/qdev-core.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/core/cpu.h" #include "qemu/accel.h" #include "system/cpu-timers.h" diff --git a/target/arm/cpregs-gcs.c b/target/arm/cpregs-gcs.c index 1ed52a211a6..e31827342d9 100644 --- a/target/arm/cpregs-gcs.c +++ b/target/arm/cpregs-gcs.c @@ -6,7 +6,7 @@ #include "qemu/osdep.h" #include "qemu/timer.h" #include "exec/icount.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "cpu.h" #include "cpu-features.h" #include "cpregs.h" diff --git a/target/arm/cpregs-pmu.c b/target/arm/cpregs-pmu.c index 31c01eddc87..47e1e4652b1 100644 --- a/target/arm/cpregs-pmu.c +++ b/target/arm/cpregs-pmu.c @@ -6,7 +6,7 @@ #include "qemu/osdep.h" #include "qemu/timer.h" #include "exec/icount.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "cpu.h" #include "cpu-features.h" #include "cpregs.h" diff --git a/target/arm/helper.c b/target/arm/helper.c index 27ebc6f29b8..263ca29d92b 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -20,7 +20,7 @@ #include "qemu/qemu-print.h" #include "exec/cputlb.h" #include "exec/translation-block.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "system/cpu-timers.h" #include "exec/icount.h" #include "system/kvm.h" diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 7c48f21543f..fa26f63a61a 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -26,7 +26,7 @@ #include "system/address-spaces.h" #include "system/memory.h" #include "hw/core/boards.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qemu/main-loop.h" #include "system/cpus.h" #include "arm-powerctl.h" diff --git a/target/arm/kvm.c b/target/arm/kvm.c index c7ea6fc2f62..12a63602b11 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -34,7 +34,7 @@ #include "system/address-spaces.h" #include "gdbstub/enums.h" #include "hw/core/boards.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qapi/visitor.h" #include "qemu/log.h" #include "hw/acpi/acpi.h" diff --git a/target/i386/tcg/system/fpu_helper.c b/target/i386/tcg/system/f= pu_helper.c index 0b4fa187dfb..26b24d40356 100644 --- a/target/i386/tcg/system/fpu_helper.c +++ b/target/i386/tcg/system/fpu_helper.c @@ -20,7 +20,7 @@ #include "qemu/osdep.h" #include "qemu/main-loop.h" #include "cpu.h" -#include "hw/irq.h" +#include "hw/core/irq.h" =20 static qemu_irq ferr_irq; =20 diff --git a/target/loongarch/kvm/kvm.c b/target/loongarch/kvm/kvm.c index 6412584e1bd..8ed62acf84d 100644 --- a/target/loongarch/kvm/kvm.c +++ b/target/loongarch/kvm/kvm.c @@ -20,7 +20,7 @@ #include "exec/memattrs.h" #include "system/address-spaces.h" #include "hw/core/boards.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/loongarch/virt.h" #include "qemu/log.h" #include "hw/loader.h" diff --git a/target/loongarch/tcg/csr_helper.c b/target/loongarch/tcg/csr_h= elper.c index c1a8ba3089c..cd35ca93c7a 100644 --- a/target/loongarch/tcg/csr_helper.c +++ b/target/loongarch/tcg/csr_helper.c @@ -14,7 +14,7 @@ #include "exec/helper-proto.h" #include "exec/cputlb.h" #include "accel/tcg/cpu-ldst.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "cpu-csr.h" #include "cpu-mmu.h" =20 diff --git a/target/mips/system/cp0_timer.c b/target/mips/system/cp0_timer.c index ca16945cee1..afa163c3196 100644 --- a/target/mips/system/cp0_timer.c +++ b/target/mips/system/cp0_timer.c @@ -21,7 +21,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qemu/timer.h" #include "system/kvm.h" #include "internal.h" diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c index 301d8de67fd..1d99e5f4908 100644 --- a/target/riscv/kvm/kvm-cpu.c +++ b/target/riscv/kvm/kvm-cpu.c @@ -38,7 +38,7 @@ #include "system/address-spaces.h" #include "system/memory.h" #include "hw/core/boards.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "hw/intc/riscv_imsic.h" #include "qemu/log.h" #include "hw/loader.h" diff --git a/target/rx/helper.c b/target/rx/helper.c index e9a7aaf610d..9a78f1457f5 100644 --- a/target/rx/helper.c +++ b/target/rx/helper.c @@ -21,7 +21,7 @@ #include "cpu.h" #include "exec/log.h" #include "accel/tcg/cpu-ldst.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "qemu/plugin.h" =20 void rx_cpu_unpack_psw(CPURXState *env, uint32_t psw, int rte) diff --git a/hw/display/apple-gfx-mmio.m b/hw/display/apple-gfx-mmio.m index b0b6e2993eb..b83f5f4fe62 100644 --- a/hw/display/apple-gfx-mmio.m +++ b/hw/display/apple-gfx-mmio.m @@ -16,7 +16,7 @@ #include "qemu/log.h" #include "block/aio-wait.h" #include "hw/sysbus.h" -#include "hw/irq.h" +#include "hw/core/irq.h" #include "apple-gfx.h" #include "trace.h" =20 --=20 2.52.0 From nobody Wed Jan 7 09:26:48 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=1766827437; cv=none; d=zohomail.com; s=zohoarc; b=e9fGgfJ+WRVzVKSb2AZQ3XxDW892BV8ZyPoQ52svzpUw3RlsDSN2nonSgj2SCA/GmiSs3yyqp9CeBcPlNJjMpqNuz2nu5CqFxB007yMlEt2oytpXisTIBeoQJbGD8GwB46EG7B4OTo6oxeJu4mCxSVUd6Jf1kIzmE284GYTAw4w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827437; 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=JbS0JQUdWC7+PPlxoYwxell0gjNOurJnHZcxaYE2tbA=; b=ZhOpH3EIpkqZbM/oFHhp0QvRMHds2HCnx3Iwi6LSmaw+uwBLcIi0mJrgt/rEzAVhHULCaB0od5HfTusakfmrlo42pLphlIZssOxWGWZvmKkDeWLjhrjHqeoac//2bJsS2lV6omcFRc4cS2OT80j9h4WcYRbTlPSIm/RIiGGFzM4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827437733528.3855764172832; Sat, 27 Dec 2025 01:23:57 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQPs-0002Ok-Q3; Sat, 27 Dec 2025 04:16:52 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPr-0002Nd-8u for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:51 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPp-0002Km-Lo for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:50 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-592-zgTtyXwDODasiJrGCHkVhA-1; Sat, 27 Dec 2025 04:16:46 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-4775d110fabso65459535e9.1 for ; Sat, 27 Dec 2025 01:16:46 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be272e46fsm474988815e9.4.2025.12.27.01.16.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:16:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827009; 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=JbS0JQUdWC7+PPlxoYwxell0gjNOurJnHZcxaYE2tbA=; b=JPeVLoyW1KKOophZ/AL6NVx7vuj0+vKW4OGKnO69/YqxjjK4S9l8RgzWth1+45oscXrSMt NVn6+nGU3HPA+lFyfIQcOzxwSBavdljSameTbPvP4VTbQTKZix2aBcSbjoHhDSR43e2zbS INU5fXRtgQz3MkuCxT9fHs6b0Xqu7JU= X-MC-Unique: zgTtyXwDODasiJrGCHkVhA-1 X-Mimecast-MFC-AGG-ID: zgTtyXwDODasiJrGCHkVhA_1766827005 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827005; x=1767431805; 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; bh=JbS0JQUdWC7+PPlxoYwxell0gjNOurJnHZcxaYE2tbA=; b=oZ4WOVzNjFN8Ixsbwi43zlWAVcy6IOqKvJ6nBQZFdPt7Fb9FsR8CTmDnrByhPmdjA5 oa88eirF0h7zq9YeVE04+1ebSoXDc9yWlTj7dhDbRl19vP8hRbJx9q2zTtG6BLg8CIfv 8UjC5qbdr09K94BSoaNdb7oMHVPTHvf4bjo+EqD95fqDapdW5sqzWoXjZ4Q30KL26eoV jvjC0CLikS+aGJgjwtf7PKstNA0brXgVOd/kEt/rnCZYq1IvYiPiNqDaaalVSRBQ8sgE +Fb8B2v33HK2Jz+ydpZdNIQV3wAxPKd82/JLeBSWmGVxz5/NCeRu2MwC6K831rTc6SzP l4mQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827005; x=1767431805; 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; bh=JbS0JQUdWC7+PPlxoYwxell0gjNOurJnHZcxaYE2tbA=; b=hUI9RdaeqaPW77oEErvwxi0hvZOohlgowhIMy2Wc4TwPI7UnF0Sx/T1rfARcGNho5h UP00U5qqK1LcXy4UoRi8EJ4fOeFB4VUcZgLVe725bLDVt9Nirj7wj12go6/hFlGxJMkN ymMjm3sNYTWba9IbRRMEhpginitvwpivXJuAoqv5IzeX0+jfV9SS03W8L2HQuN7qIxYi xv+C/XQCnomtsRcKP4dh0gcUiOnQhN4Al1ZpniwUUL2e/0ZpSEXF9vH0wf9rFYm/E0zc 0uQ48yWqu7IyyhGYGaZufeLWcpGLJ85NcaEsPNiOF1Yl+HVsi4JiKmTjpnVqpz957gdy tRfQ== X-Gm-Message-State: AOJu0YxtuUfid2XFbra5w5ghpdODnkNVg/bc1VNv2tVRO+uVj8EILWmH j6aqBtzO6CGAg+SAVe9nbSOGFv0qD0L2sfS3bw1wY8yrBC4w7Icn6fXODIDVHkIDxKu2Qm1ICPh 2kJ5Pq6Lms6h3HhLl/bJKYUbY15JW1Uf0B5Q0mFbk9w/LhUVbMEPFedtAE/EgiK4NKFKHNcbMRI 8StG0MNsKrSeurnPymla42R0lIOfTs+1bFRsdmTi8V X-Gm-Gg: AY/fxX6p27/PO/mGnb7hCdr5ERjszFOGgE4G673Z+dYdDcs5kFn29Ba0M61agHfMKoC eE2iN474hwznCrn98Q4KAtlbiZqnT6BJD9cwRHAdDn+6rl+ceknGEc9PcHpihM4RfQxDL5EKzdb iAnCxnZytjLssFnUXj//kHSO8ibKfU9xSNlohHsAm+FMMmMob45Zwm6IVqMOvbdDCOaxtSaPmSx 0RhmxZAtxs3VDJJItoM/Kxr7O6+jwaoOgh0UbtcYTsDkCSS5Rd3JJOaeQF57EizIl185lYrDN5x qmtRFgNGaBxdht4W3lBgsTlZMmV8YVVOV0jrLp/BXXribM7NmhNf9HB9zh2Qu7WkfRMWbLhMGKM yigOqH7DJms7l0IpfDS8hjmyp9u+THIM8fx3C4VnxHUGId8JnhgEPp5lVFO6a0PXvj+VZKoeJKF /evLWV2n09CtkiHT8= X-Received: by 2002:a05:600c:310c:b0:476:4efc:8ed4 with SMTP id 5b1f17b1804b1-47d19549f9bmr249828845e9.11.1766827004836; Sat, 27 Dec 2025 01:16:44 -0800 (PST) X-Google-Smtp-Source: AGHT+IElye+KDDcmz75SxE9KLbG2whH13Z4GRpGLMzCXlNAuq6kqY6dqTYFNWthQ6Wo8DEVzULgPSA== X-Received: by 2002:a05:600c:310c:b0:476:4efc:8ed4 with SMTP id 5b1f17b1804b1-47d19549f9bmr249828665e9.11.1766827004427; Sat, 27 Dec 2025 01:16:44 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 011/153] include: move hw/loader-fit.h to hw/core/ Date: Sat, 27 Dec 2025 10:13:58 +0100 Message-ID: <20251227091622.20725-12-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827438560158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- include/hw/{ =3D> core}/loader-fit.h | 0 hw/core/loader-fit.c | 2 +- hw/mips/boston.c | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename include/hw/{ =3D> core}/loader-fit.h (100%) diff --git a/include/hw/loader-fit.h b/include/hw/core/loader-fit.h similarity index 100% rename from include/hw/loader-fit.h rename to include/hw/core/loader-fit.h diff --git a/hw/core/loader-fit.c b/hw/core/loader-fit.c index 2dea485ae06..59a625ea57d 100644 --- a/hw/core/loader-fit.c +++ b/hw/core/loader-fit.c @@ -22,7 +22,7 @@ #include "qemu/units.h" #include "system/memory.h" #include "hw/loader.h" -#include "hw/loader-fit.h" +#include "hw/core/loader-fit.h" #include "qemu/cutils.h" #include "qemu/error-report.h" #include "system/device_tree.h" diff --git a/hw/mips/boston.c b/hw/mips/boston.c index dc9da0b0401..633b2a90523 100644 --- a/hw/mips/boston.c +++ b/hw/mips/boston.c @@ -26,7 +26,7 @@ #include "hw/ide/pci.h" #include "hw/ide/ahci-pci.h" #include "hw/loader.h" -#include "hw/loader-fit.h" +#include "hw/core/loader-fit.h" #include "hw/mips/bootloader.h" #include "hw/mips/cps.h" #include "hw/pci-host/xilinx-pcie.h" --=20 2.52.0 From nobody Wed Jan 7 09:26:48 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=1766827220; cv=none; d=zohomail.com; s=zohoarc; b=R66dWOcZLfo/W5lMwuTC26jHDjeoFwirB2Ytx03Ib01SFjFAHms4AK1ZnyTzBz6vRiB6hVKjVJgGngxylfa31nvLNMt3sSULgSN2BrNbIEGKsOGqef0mGHL3zEIWTa+ImGartR9tp32fK0/zsci1XeeFCj/puPF1oIGGxddMsXo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827220; 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=NgFPUc2+uNAbM92R/1CzOmVmI5mAaFxqFqqhQF1l8es=; b=IDqmMbxah/mli5roboXHeIAJPaZOSvFiVW6fnqJ8n8BOT7tdcyjyIoO2tn2YxKvVnUSc2RH5Rq/74YrIyVxN4OA59lWK3XZfbFV8TS0dB/QFguCHXM8P66WofZVlQi90KC1XJskDa5cNwyuVHqQP3/R5NEhbwhPpT1LcqG0i4AI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827220060764.5115532589871; Sat, 27 Dec 2025 01:20:20 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQPz-0002S5-Nv; Sat, 27 Dec 2025 04:16:59 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPy-0002RT-Hn for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:58 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPu-0002LR-86 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:58 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-520-X4NW4986PgCgPVA9riFbqQ-1; Sat, 27 Dec 2025 04:16:50 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-47a97b785bdso55578085e9.3 for ; Sat, 27 Dec 2025 01:16:49 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d19346e48sm423129985e9.2.2025.12.27.01.16.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:16:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827013; 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=NgFPUc2+uNAbM92R/1CzOmVmI5mAaFxqFqqhQF1l8es=; b=IGXCwBJWf0Mijk8TpNI9I22/4I/arptiLP96gQ5/u0m4u94KVCkuqmDz2NhL4354JO9lM1 AStqr1IOEZsHjw/s+tXn6ZXsvSnRgT0+uBiDTo/wZ7XW5PcMTE7tLFkjozWD/Rf8Sb1dVs w1L8QCBo9HG3QiJzmrcpvZUF5Te5w1g= X-MC-Unique: X4NW4986PgCgPVA9riFbqQ-1 X-Mimecast-MFC-AGG-ID: X4NW4986PgCgPVA9riFbqQ_1766827009 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827008; x=1767431808; 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; bh=NgFPUc2+uNAbM92R/1CzOmVmI5mAaFxqFqqhQF1l8es=; b=cddYZKnPu4lrHqObQ+Xa1pGqnIwPZPKIUZCUrERouUI0jCQOTkCWY8EStt9Xrd4eny VTtYOEf7TCk3lzIr1qqfHjfGXy6cxceuo0gQ7Ch5359VHhuYPq6FUdvWB7HsdZZz6xKt MFu28s7DVhF2SrM3neb8MiXhhlY+Je9nGFoadyOf80jYh5nmCt2svEpGnpdlsWSY9kwz iVsRDMlY20vFL+ok7tIeS8taCgwql+ZsPt6TWslaLewog6lA3bjP+xDtUv//tptGMFfK WQ6zTq7v0/biIwWNEUpSTodaZCawThDPAeDd7pL7cbY6VcJ2ke3wSPyn2Mb36Nf7jbwH pjgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827008; x=1767431808; 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; bh=NgFPUc2+uNAbM92R/1CzOmVmI5mAaFxqFqqhQF1l8es=; b=msd5PJlHs+Uv1xTpkXDHLjfs3XDs+g/odHFJlGDFcRNcROFgIOSsIQd4vgVNfBvYag 0oE+r4/cx6/0mV54z3dwdJblMIisTYc5BBL+cUzQPcd6WYHr0PTuAhAVZgvD88tNAkVL W9HfVBzjlgIEB/+cma36plprKrdWIYDfITZVAe/cgOAGJOci8DSUX8cRncE5Bw1VJfoY BEOtpoykX91N3ooXzGaUVXv3NTdYImvIPCMVo7A/13kF71sRDady4RE+5vpDj2p5ZOxn Lgv3Rhx/oyzkjAjraqbFemufp7fcLWzF7nFBOy0PlmoNBdMdyZRb8gSkLmXCzZZ+FuOg eygQ== X-Gm-Message-State: AOJu0Yymv/UL6VPiKQ6InpjR7odGO11JQFM93NCUbZdS4EgtDTB6Q1AJ Il9u0WBiTiC+VQzFCaNPsrWCoAnlM6pHntVAVeeGpM8eV+a1J8ZBRT6r+CKZvDIiS6Wx11QzTkU PMoFcUmw1GzuRb6x8WimOsqn+DFfijGgamWbSOzqNjW6lSscXaM60X2m7cxrQ3fBVe9HUIs5kB9 +3RBqqgzxh1/zEZktQJfd48kqjMRCdPIcHjQhmPFxa X-Gm-Gg: AY/fxX7aTZZkp0zMmZQzuzy760pwsfDUm5cx/hY2tI3o2MdeObkpZlkdcpb3TbRMakD gPg9nbW8gxdBcGcfu+aGaptLni8/JrpY6d6WC5Xvbadd94sc6c+KFXiP72YUD/WxRAnxsV2EAdj YLvcYGoGT/QWRS/i4qBK5lx4/on3WmYu8QM57Mbr2ExlWm1QVIfY98h/j/MVkyRGjyyIQhtqHah 3hAV/x6sY1gQq4lPtWxd4cRO27O4IT5I5ugXXQopcKxltbDfBCJcmjh6OEzisrAsn9BJXXFXQLP VCFb50BOF6vN+Xd5KPLLoL2aES24jkA13s61DrAjzYQ1WxH2izGY5ChkrjaXilMoncB6LjnYJVy 8NSMm+9Z7wQuKI5yHYCn+WkHi+W0eqUx7THkstI0Zl19zpS4GP6hfVqdCGZnG2BmQdiU1PraFnE RCvVjEcfL/BZjq9Jg= X-Received: by 2002:a05:600c:4e0d:b0:46e:48fd:a1a9 with SMTP id 5b1f17b1804b1-47d1959d2b4mr257820605e9.33.1766827007598; Sat, 27 Dec 2025 01:16:47 -0800 (PST) X-Google-Smtp-Source: AGHT+IGBqocugKfBfmdx1xwarradH0fho0wEGinlnV3SgCyFentP8018gtagTPJlpyj0vzSGNHn/UA== X-Received: by 2002:a05:600c:4e0d:b0:46e:48fd:a1a9 with SMTP id 5b1f17b1804b1-47d1959d2b4mr257819945e9.33.1766827006078; Sat, 27 Dec 2025 01:16:46 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 012/153] include: move hw/loader.h to hw/core/ Date: Sat, 27 Dec 2025 10:13:59 +0100 Message-ID: <20251227091622.20725-13-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827221830158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- include/hw/{ =3D> core}/loader.h | 0 include/hw/riscv/boot.h | 2 +- hw/acpi/utils.c | 2 +- hw/alpha/dp264.c | 2 +- hw/arm/allwinner-a10.c | 2 +- hw/arm/allwinner-h3.c | 2 +- hw/arm/allwinner-r40.c | 2 +- hw/arm/armv7m.c | 2 +- hw/arm/aspeed_ast27x0-fc.c | 2 +- hw/arm/aspeed_soc_common.c | 2 +- hw/arm/boot.c | 2 +- hw/arm/digic_boards.c | 2 +- hw/arm/exynos4210.c | 2 +- hw/arm/highbank.c | 2 +- hw/arm/npcm7xx.c | 2 +- hw/arm/npcm7xx_boards.c | 2 +- hw/arm/npcm8xx.c | 2 +- hw/arm/npcm8xx_boards.c | 2 +- hw/arm/raspi.c | 2 +- hw/arm/raspi4b.c | 2 +- hw/arm/sbsa-ref.c | 2 +- hw/arm/vexpress.c | 2 +- hw/arm/virt.c | 2 +- hw/arm/xilinx_zynq.c | 2 +- hw/avr/boot.c | 2 +- hw/core/generic-loader.c | 2 +- hw/core/guest-loader.c | 2 +- hw/core/loader-fit.c | 2 +- hw/core/loader.c | 2 +- hw/core/machine.c | 2 +- hw/display/artist.c | 2 +- hw/display/cg3.c | 2 +- hw/display/cirrus_vga_isa.c | 2 +- hw/display/next-fb.c | 2 +- hw/display/ramfb-standalone.c | 2 +- hw/display/ramfb.c | 2 +- hw/display/tcx.c | 2 +- hw/display/vga-isa.c | 2 +- hw/display/vga-pci.c | 2 +- hw/display/vmware_vga.c | 2 +- hw/hppa/machine.c | 2 +- hw/hyperv/syndbg.c | 2 +- hw/i386/microvm.c | 2 +- hw/i386/multiboot.c | 2 +- hw/i386/pc.c | 2 +- hw/i386/pc_q35.c | 2 +- hw/i386/pc_sysfw.c | 2 +- hw/i386/x86-common.c | 2 +- hw/ipmi/ipmi_bmc_sim.c | 2 +- hw/loongarch/boot.c | 2 +- hw/loongarch/virt-fdt-build.c | 2 +- hw/loongarch/virt.c | 2 +- hw/m68k/an5206.c | 2 +- hw/m68k/mcf5208.c | 2 +- hw/m68k/next-cube.c | 2 +- hw/m68k/q800.c | 2 +- hw/m68k/virt.c | 2 +- hw/microblaze/boot.c | 2 +- hw/mips/boston.c | 2 +- hw/mips/fuloong2e.c | 2 +- hw/mips/jazz.c | 2 +- hw/mips/loongson3_virt.c | 2 +- hw/mips/malta.c | 2 +- hw/nubus/nubus-device.c | 2 +- hw/nvram/fw_cfg.c | 2 +- hw/openrisc/boot.c | 2 +- hw/pci/pci.c | 2 +- hw/ppc/amigaone.c | 2 +- hw/ppc/e500.c | 2 +- hw/ppc/mac_newworld.c | 2 +- hw/ppc/mac_oldworld.c | 2 +- hw/ppc/pegasos.c | 2 +- hw/ppc/pnv.c | 2 +- hw/ppc/pnv_pnor.c | 2 +- hw/ppc/ppc440_bamboo.c | 2 +- hw/ppc/ppc_booke.c | 2 +- hw/ppc/prep.c | 2 +- hw/ppc/sam460ex.c | 2 +- hw/ppc/spapr.c | 2 +- hw/ppc/spapr_vio.c | 2 +- hw/ppc/virtex_ml507.c | 2 +- hw/riscv/boot.c | 2 +- hw/riscv/microchip_pfsoc.c | 2 +- hw/riscv/sifive_e.c | 2 +- hw/riscv/sifive_u.c | 2 +- hw/riscv/spike.c | 2 +- hw/riscv/virt.c | 2 +- hw/rx/rx-gdbsim.c | 2 +- hw/rx/rx62n.c | 2 +- hw/s390x/ipl.c | 2 +- hw/sh4/r2d.c | 2 +- hw/smbios/smbios.c | 2 +- hw/sparc/leon3.c | 2 +- hw/sparc/sun4m.c | 2 +- hw/sparc64/niagara.c | 2 +- hw/sparc64/sun4u.c | 2 +- hw/tricore/tc27x_soc.c | 2 +- hw/tricore/triboard.c | 2 +- hw/tricore/tricore_testboard.c | 2 +- hw/virtio/vhost-user-scsi-pci.c | 2 +- hw/virtio/virtio-pci.c | 2 +- hw/vmapple/vmapple.c | 2 +- hw/xen/xen_pt_load_rom.c | 2 +- hw/xtensa/sim.c | 2 +- hw/xtensa/virt.c | 2 +- hw/xtensa/xtfpga.c | 2 +- semihosting/arm-compat-semi.c | 2 +- system/device_tree.c | 2 +- system/globals.c | 2 +- system/vl.c | 2 +- target/arm/cpu.c | 2 +- target/loongarch/kvm/kvm.c | 2 +- target/openrisc/interrupt.c | 2 +- target/openrisc/mmu.c | 2 +- target/riscv/kvm/kvm-cpu.c | 2 +- target/rx/cpu.c | 2 +- 116 files changed, 115 insertions(+), 115 deletions(-) rename include/hw/{ =3D> core}/loader.h (100%) diff --git a/include/hw/loader.h b/include/hw/core/loader.h similarity index 100% rename from include/hw/loader.h rename to include/hw/core/loader.h diff --git a/include/hw/riscv/boot.h b/include/hw/riscv/boot.h index 51b0e13bd3e..35964bf8318 100644 --- a/include/hw/riscv/boot.h +++ b/include/hw/riscv/boot.h @@ -21,7 +21,7 @@ #define RISCV_BOOT_H =20 #include "exec/cpu-defs.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/riscv/riscv_hart.h" =20 #define RISCV32_BIOS_BIN "opensbi-riscv32-generic-fw_dynamic.bin" diff --git a/hw/acpi/utils.c b/hw/acpi/utils.c index 0c486ea29fa..b7cab6f5ca1 100644 --- a/hw/acpi/utils.c +++ b/hw/acpi/utils.c @@ -24,7 +24,7 @@ #include "qemu/osdep.h" #include "hw/acpi/aml-build.h" #include "hw/acpi/utils.h" -#include "hw/loader.h" +#include "hw/core/loader.h" =20 MemoryRegion *acpi_add_rom_blob(FWCfgCallback update, void *opaque, GArray *blob, const char *name) diff --git a/hw/alpha/dp264.c b/hw/alpha/dp264.c index b6155646ef7..cddd94fec82 100644 --- a/hw/alpha/dp264.c +++ b/hw/alpha/dp264.c @@ -10,7 +10,7 @@ #include "cpu.h" #include "exec/target_page.h" #include "elf.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "alpha_sys.h" #include "qemu/error-report.h" #include "hw/rtc/mc146818rtc.h" diff --git a/hw/arm/allwinner-a10.c b/hw/arm/allwinner-a10.c index 1886df03839..d7508ee0ecd 100644 --- a/hw/arm/allwinner-a10.c +++ b/hw/arm/allwinner-a10.c @@ -26,7 +26,7 @@ #include "system/system.h" #include "hw/core/boards.h" #include "hw/usb/hcd-ohci.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "target/arm/cpu-qom.h" =20 #define AW_A10_SRAM_A_BASE 0x00000000 diff --git a/hw/arm/allwinner-h3.c b/hw/arm/allwinner-h3.c index edffc21dd88..6c4c369e991 100644 --- a/hw/arm/allwinner-h3.c +++ b/hw/arm/allwinner-h3.c @@ -27,7 +27,7 @@ #include "hw/char/serial-mm.h" #include "hw/misc/unimp.h" #include "hw/usb/hcd-ehci.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "system/system.h" #include "hw/arm/allwinner-h3.h" #include "target/arm/cpu-qom.h" diff --git a/hw/arm/allwinner-r40.c b/hw/arm/allwinner-r40.c index 313bd21fad8..f6d4117a068 100644 --- a/hw/arm/allwinner-r40.c +++ b/hw/arm/allwinner-r40.c @@ -28,7 +28,7 @@ #include "hw/char/serial-mm.h" #include "hw/misc/unimp.h" #include "hw/usb/hcd-ehci.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "system/system.h" #include "hw/arm/allwinner-r40.h" #include "hw/misc/allwinner-r40-dramc.h" diff --git a/hw/arm/armv7m.c b/hw/arm/armv7m.c index 7fa1b37630e..8198a83d15c 100644 --- a/hw/arm/armv7m.c +++ b/hw/arm/armv7m.c @@ -12,7 +12,7 @@ #include "qapi/error.h" #include "hw/sysbus.h" #include "hw/arm/boot.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/qdev-properties.h" #include "hw/qdev-clock.h" #include "elf.h" diff --git a/hw/arm/aspeed_ast27x0-fc.c b/hw/arm/aspeed_ast27x0-fc.c index a0cbe50d78d..1678cce416b 100644 --- a/hw/arm/aspeed_ast27x0-fc.c +++ b/hw/arm/aspeed_ast27x0-fc.c @@ -18,7 +18,7 @@ #include "hw/core/boards.h" #include "hw/qdev-clock.h" #include "hw/arm/aspeed_soc.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/arm/boot.h" #include "hw/block/flash.h" #include "hw/arm/aspeed_coprocessor.h" diff --git a/hw/arm/aspeed_soc_common.c b/hw/arm/aspeed_soc_common.c index 78b6ae18f87..84e6458e80a 100644 --- a/hw/arm/aspeed_soc_common.c +++ b/hw/arm/aspeed_soc_common.c @@ -18,7 +18,7 @@ #include "hw/char/serial-mm.h" #include "system/blockdev.h" #include "system/block-backend.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "qemu/datadir.h" =20 =20 diff --git a/hw/arm/boot.c b/hw/arm/boot.c index 9b6eaf642e9..d87bcb5b88a 100644 --- a/hw/arm/boot.c +++ b/hw/arm/boot.c @@ -24,7 +24,7 @@ #include "system/numa.h" #include "hw/core/boards.h" #include "system/reset.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/mem/memory-device.h" #include "elf.h" #include "system/device_tree.h" diff --git a/hw/arm/digic_boards.c b/hw/arm/digic_boards.c index d986e8f7a24..ed12f542001 100644 --- a/hw/arm/digic_boards.c +++ b/hw/arm/digic_boards.c @@ -31,7 +31,7 @@ #include "hw/arm/digic.h" #include "hw/arm/machines-qom.h" #include "hw/block/flash.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "system/qtest.h" #include "qemu/units.h" #include "qemu/cutils.h" diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c index 2d8e257ca2a..992edd3ba89 100644 --- a/hw/arm/exynos4210.c +++ b/hw/arm/exynos4210.c @@ -31,7 +31,7 @@ #include "system/system.h" #include "hw/sysbus.h" #include "hw/arm/boot.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/qdev-properties.h" #include "hw/arm/exynos4210.h" #include "hw/sd/sdhci.h" diff --git a/hw/arm/highbank.c b/hw/arm/highbank.c index 82fa9647119..b8c1256328d 100644 --- a/hw/arm/highbank.c +++ b/hw/arm/highbank.c @@ -24,7 +24,7 @@ #include "migration/vmstate.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "net/net.h" #include "system/runstate.h" #include "system/system.h" diff --git a/hw/arm/npcm7xx.c b/hw/arm/npcm7xx.c index ecfae328a96..6d6f6744869 100644 --- a/hw/arm/npcm7xx.c +++ b/hw/arm/npcm7xx.c @@ -19,7 +19,7 @@ #include "hw/arm/boot.h" #include "hw/arm/npcm7xx.h" #include "hw/char/serial-mm.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/misc/unimp.h" #include "hw/qdev-clock.h" #include "hw/qdev-properties.h" diff --git a/hw/arm/npcm7xx_boards.c b/hw/arm/npcm7xx_boards.c index c1e100b1e48..fda375eb4c3 100644 --- a/hw/arm/npcm7xx_boards.c +++ b/hw/arm/npcm7xx_boards.c @@ -21,7 +21,7 @@ #include "hw/core/cpu.h" #include "hw/i2c/i2c_mux_pca954x.h" #include "hw/i2c/smbus_eeprom.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/nvram/eeprom_at24c.h" #include "hw/qdev-core.h" #include "hw/qdev-properties.h" diff --git a/hw/arm/npcm8xx.c b/hw/arm/npcm8xx.c index 3ad7643b4bd..2bf5e132bb5 100644 --- a/hw/arm/npcm8xx.c +++ b/hw/arm/npcm8xx.c @@ -22,7 +22,7 @@ #include "hw/arm/npcm8xx.h" #include "hw/char/serial-mm.h" #include "hw/intc/arm_gic.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/misc/unimp.h" #include "hw/qdev-clock.h" #include "hw/qdev-properties.h" diff --git a/hw/arm/npcm8xx_boards.c b/hw/arm/npcm8xx_boards.c index f775b324027..292f44d807c 100644 --- a/hw/arm/npcm8xx_boards.c +++ b/hw/arm/npcm8xx_boards.c @@ -21,7 +21,7 @@ #include "hw/arm/npcm8xx.h" #include "hw/arm/machines-qom.h" #include "hw/core/cpu.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/qdev-core.h" #include "hw/qdev-properties.h" #include "qapi/error.h" diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c index 910c18213a5..637525a7e3f 100644 --- a/hw/arm/raspi.c +++ b/hw/arm/raspi.c @@ -23,7 +23,7 @@ #include "hw/registerfields.h" #include "qemu/error-report.h" #include "hw/core/boards.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" #include "qom/object.h" diff --git a/hw/arm/raspi4b.c b/hw/arm/raspi4b.c index 058df2c4c96..ead28500c73 100644 --- a/hw/arm/raspi4b.c +++ b/hw/arm/raspi4b.c @@ -18,7 +18,7 @@ #include "qemu/error-report.h" #include "system/device_tree.h" #include "hw/core/boards.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/arm/boot.h" #include "qom/object.h" #include "hw/arm/bcm2838.h" diff --git a/hw/arm/sbsa-ref.c b/hw/arm/sbsa-ref.c index 32d4c52bf50..5f0fb16a54c 100644 --- a/hw/arm/sbsa-ref.c +++ b/hw/arm/sbsa-ref.c @@ -42,7 +42,7 @@ #include "hw/ide/ahci-sysbus.h" #include "hw/intc/arm_gicv3_common.h" #include "hw/intc/arm_gicv3_its_common.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/pci-host/gpex.h" #include "hw/qdev-properties.h" #include "hw/usb/usb.h" diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c index 2f61ad0dd62..75cb77da828 100644 --- a/hw/arm/vexpress.c +++ b/hw/arm/vexpress.c @@ -33,7 +33,7 @@ #include "net/net.h" #include "system/system.h" #include "hw/core/boards.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/block/flash.h" #include "system/device_tree.h" #include "qemu/error-report.h" diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 6155db2b093..c005eb914cb 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -51,7 +51,7 @@ #include "system/hvf.h" #include "system/qtest.h" #include "system/system.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "qapi/error.h" #include "qemu/bitops.h" #include "qemu/cutils.h" diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c index a6dc644d0bd..e127b232d75 100644 --- a/hw/arm/xilinx_zynq.c +++ b/hw/arm/xilinx_zynq.c @@ -25,7 +25,7 @@ #include "system/system.h" #include "hw/core/boards.h" #include "hw/block/flash.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/adc/zynq-xadc.h" #include "hw/ssi/ssi.h" #include "hw/usb/chipidea.h" diff --git a/hw/avr/boot.c b/hw/avr/boot.c index e5a29c7218e..838378fb252 100644 --- a/hw/avr/boot.c +++ b/hw/avr/boot.c @@ -10,7 +10,7 @@ =20 #include "qemu/osdep.h" #include "qemu/datadir.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "elf.h" #include "boot.h" #include "qemu/error-report.h" diff --git a/hw/core/generic-loader.c b/hw/core/generic-loader.c index be4fe867e4d..590c6a8131a 100644 --- a/hw/core/generic-loader.c +++ b/hw/core/generic-loader.c @@ -34,7 +34,7 @@ #include "system/dma.h" #include "system/reset.h" #include "hw/core/boards.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/qdev-properties.h" #include "qapi/error.h" #include "qemu/module.h" diff --git a/hw/core/guest-loader.c b/hw/core/guest-loader.c index 07c36464047..e46897c4974 100644 --- a/hw/core/guest-loader.c +++ b/hw/core/guest-loader.c @@ -27,7 +27,7 @@ #include "qemu/osdep.h" #include "hw/core/cpu.h" #include "system/dma.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/qdev-properties.h" #include "qapi/error.h" #include "qemu/module.h" diff --git a/hw/core/loader-fit.c b/hw/core/loader-fit.c index 59a625ea57d..233a7f78c24 100644 --- a/hw/core/loader-fit.c +++ b/hw/core/loader-fit.c @@ -21,7 +21,7 @@ #include "qapi/error.h" #include "qemu/units.h" #include "system/memory.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/core/loader-fit.h" #include "qemu/cutils.h" #include "qemu/error-report.h" diff --git a/hw/core/loader.c b/hw/core/loader.c index 385730e8ef5..40cb187a113 100644 --- a/hw/core/loader.c +++ b/hw/core/loader.c @@ -58,7 +58,7 @@ #include "system/reset.h" #include "system/system.h" #include "uboot_image.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/nvram/fw_cfg.h" #include "system/memory.h" #include "hw/core/boards.h" diff --git a/hw/core/machine.c b/hw/core/machine.c index 1106f86bf5b..51c28468ff9 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -15,7 +15,7 @@ #include "qemu/accel.h" #include "system/replay.h" #include "hw/core/boards.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "qemu/error-report.h" #include "qapi/error.h" #include "qapi/qapi-visit-machine.h" diff --git a/hw/display/artist.c b/hw/display/artist.c index 3c884c92437..5efa9e45ffd 100644 --- a/hw/display/artist.c +++ b/hw/display/artist.c @@ -15,7 +15,7 @@ #include "qemu/bswap.h" #include "qapi/error.h" #include "hw/sysbus.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/qdev-core.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" diff --git a/hw/display/cg3.c b/hw/display/cg3.c index 8191237124e..5ec09b63247 100644 --- a/hw/display/cg3.c +++ b/hw/display/cg3.c @@ -31,7 +31,7 @@ #include "hw/sysbus.h" #include "migration/vmstate.h" #include "hw/core/irq.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/qdev-properties.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/display/cirrus_vga_isa.c b/hw/display/cirrus_vga_isa.c index 4b55c48eff8..5cacf4fc127 100644 --- a/hw/display/cirrus_vga_isa.c +++ b/hw/display/cirrus_vga_isa.c @@ -26,7 +26,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qemu/module.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/qdev-properties.h" #include "hw/isa/isa.h" #include "cirrus_vga_internal.h" diff --git a/hw/display/next-fb.c b/hw/display/next-fb.c index ec81b766a7e..3d97702fce5 100644 --- a/hw/display/next-fb.c +++ b/hw/display/next-fb.c @@ -24,7 +24,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "ui/console.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "framebuffer.h" #include "ui/pixel_ops.h" #include "hw/m68k/next-cube.h" diff --git a/hw/display/ramfb-standalone.c b/hw/display/ramfb-standalone.c index 72b2071aed0..130f4e01df0 100644 --- a/hw/display/ramfb-standalone.c +++ b/hw/display/ramfb-standalone.c @@ -2,7 +2,7 @@ #include "migration/vmstate.h" #include "qapi/error.h" #include "qemu/module.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/qdev-properties.h" #include "hw/display/ramfb.h" #include "ui/console.h" diff --git a/hw/display/ramfb.c b/hw/display/ramfb.c index 9a17d97d076..ad12fb1782e 100644 --- a/hw/display/ramfb.c +++ b/hw/display/ramfb.c @@ -13,7 +13,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/display/ramfb.h" #include "hw/display/bochs-vbe.h" /* for limits */ #include "ui/console.h" diff --git a/hw/display/tcx.c b/hw/display/tcx.c index 4853c5e1424..dfe234e3354 100644 --- a/hw/display/tcx.c +++ b/hw/display/tcx.c @@ -27,7 +27,7 @@ #include "qapi/error.h" #include "ui/console.h" #include "ui/pixel_ops.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" #include "migration/vmstate.h" diff --git a/hw/display/vga-isa.c b/hw/display/vga-isa.c index 3618913b3b7..d2213b0f3e6 100644 --- a/hw/display/vga-isa.c +++ b/hw/display/vga-isa.c @@ -30,7 +30,7 @@ #include "ui/pixel_ops.h" #include "qemu/module.h" #include "qemu/timer.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/qdev-properties.h" #include "ui/console.h" #include "qom/object.h" diff --git a/hw/display/vga-pci.c b/hw/display/vga-pci.c index b81f7fd2d0f..7a39bb9b213 100644 --- a/hw/display/vga-pci.c +++ b/hw/display/vga-pci.c @@ -33,7 +33,7 @@ #include "ui/console.h" #include "qemu/module.h" #include "qemu/timer.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/display/edid.h" #include "qom/object.h" #include "hw/acpi/acpi_aml_interface.h" diff --git a/hw/display/vmware_vga.c b/hw/display/vmware_vga.c index bc1a8ed4665..7ca5a551426 100644 --- a/hw/display/vmware_vga.c +++ b/hw/display/vmware_vga.c @@ -27,7 +27,7 @@ #include "qemu/units.h" #include "qapi/error.h" #include "qemu/log.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "trace.h" #include "hw/pci/pci_device.h" #include "hw/qdev-properties.h" diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c index acd1c3f005b..e877e6c4018 100644 --- a/hw/hppa/machine.c +++ b/hw/hppa/machine.c @@ -9,7 +9,7 @@ #include "qemu/datadir.h" #include "cpu.h" #include "elf.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "qemu/error-report.h" #include "exec/target_page.h" #include "system/reset.h" diff --git a/hw/hyperv/syndbg.c b/hw/hyperv/syndbg.c index bcdfdf6af75..29908e886b4 100644 --- a/hw/hyperv/syndbg.c +++ b/hw/hyperv/syndbg.c @@ -14,7 +14,7 @@ #include "qapi/error.h" #include "migration/vmstate.h" #include "hw/qdev-properties.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "exec/target_page.h" #include "hw/hyperv/hyperv.h" #include "hw/hyperv/vmbus-bridge.h" diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index e3bafb83af9..8cf99ad6623 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -30,7 +30,7 @@ #include "acpi-microvm.h" #include "microvm-dt.h" =20 -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/core/irq.h" #include "hw/i386/kvm/clock.h" #include "hw/i386/microvm.h" diff --git a/hw/i386/multiboot.c b/hw/i386/multiboot.c index 78690781b74..8b6acfee9ba 100644 --- a/hw/i386/multiboot.c +++ b/hw/i386/multiboot.c @@ -27,7 +27,7 @@ #include "cpu.h" #include "hw/nvram/fw_cfg.h" #include "multiboot.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "elf.h" #include "exec/target_page.h" #include "system/system.h" diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 0f2a5889022..1478a26f11b 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -34,7 +34,7 @@ #include "system/cpus.h" #include "hw/ide/ide-bus.h" #include "hw/timer/hpet.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/rtc/mc146818rtc.h" #include "hw/intc/i8259.h" #include "hw/timer/i8254.h" diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index 02de7453baa..5fd2f9d1e0c 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -32,7 +32,7 @@ #include "qemu/units.h" #include "hw/acpi/acpi.h" #include "hw/char/parallel-isa.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/i2c/smbus_eeprom.h" #include "hw/rtc/mc146818rtc.h" #include "system/tcg.h" diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c index 1a12b635ad9..4d64aa15550 100644 --- a/hw/i386/pc_sysfw.c +++ b/hw/i386/pc_sysfw.c @@ -32,7 +32,7 @@ #include "hw/sysbus.h" #include "hw/i386/x86.h" #include "hw/i386/pc.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/qdev-properties.h" #include "hw/block/flash.h" #include "system/kvm.h" diff --git a/hw/i386/x86-common.c b/hw/i386/x86-common.c index 397e856b37e..c1c92240392 100644 --- a/hw/i386/x86-common.c +++ b/hw/i386/x86-common.c @@ -38,7 +38,7 @@ =20 #include "hw/acpi/cpu_hotplug.h" #include "hw/core/irq.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "multiboot.h" #include "elf.h" #include "standard-headers/asm-x86/bootparam.h" diff --git a/hw/ipmi/ipmi_bmc_sim.c b/hw/ipmi/ipmi_bmc_sim.c index 4604d632b1e..9b3e3a4b7e7 100644 --- a/hw/ipmi/ipmi_bmc_sim.c +++ b/hw/ipmi/ipmi_bmc_sim.c @@ -28,7 +28,7 @@ #include "hw/ipmi/ipmi.h" #include "qemu/error-report.h" #include "qemu/module.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/vmstate.h" diff --git a/hw/loongarch/boot.c b/hw/loongarch/boot.c index 8857a049980..711d5ffbbc0 100644 --- a/hw/loongarch/boot.c +++ b/hw/loongarch/boot.c @@ -9,7 +9,7 @@ #include "qemu/units.h" #include "target/loongarch/cpu.h" #include "hw/loongarch/virt.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "elf.h" #include "qemu/error-report.h" #include "system/reset.h" diff --git a/hw/loongarch/virt-fdt-build.c b/hw/loongarch/virt-fdt-build.c index 1f0ba01f711..115080d80e2 100644 --- a/hw/loongarch/virt-fdt-build.c +++ b/hw/loongarch/virt-fdt-build.c @@ -9,7 +9,7 @@ #include "hw/acpi/generic_event_device.h" #include "hw/core/sysbus-fdt.h" #include "hw/intc/loongarch_extioi.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/loongarch/virt.h" #include "hw/pci-host/gpex.h" #include "system/device_tree.h" diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c index 0e11eb340f0..ea53941aeb9 100644 --- a/hw/loongarch/virt.c +++ b/hw/loongarch/virt.c @@ -22,7 +22,7 @@ #include "system/address-spaces.h" #include "hw/core/irq.h" #include "net/net.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "elf.h" #include "hw/intc/loongarch_ipi.h" #include "hw/intc/loongarch_extioi.h" diff --git a/hw/m68k/an5206.c b/hw/m68k/an5206.c index f67611ba0b2..f92a5d6a339 100644 --- a/hw/m68k/an5206.c +++ b/hw/m68k/an5206.c @@ -11,7 +11,7 @@ #include "cpu.h" #include "hw/m68k/mcf.h" #include "hw/core/boards.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "elf.h" #include "qemu/error-report.h" #include "system/qtest.h" diff --git a/hw/m68k/mcf5208.c b/hw/m68k/mcf5208.c index b2b02f25ff1..b81305ae6e4 100644 --- a/hw/m68k/mcf5208.c +++ b/hw/m68k/mcf5208.c @@ -30,7 +30,7 @@ #include "system/qtest.h" #include "net/net.h" #include "hw/core/boards.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/sysbus.h" #include "elf.h" =20 diff --git a/hw/m68k/next-cube.c b/hw/m68k/next-cube.c index 1411436a463..e7217cbaeac 100644 --- a/hw/m68k/next-cube.c +++ b/hw/m68k/next-cube.c @@ -18,7 +18,7 @@ #include "hw/core/irq.h" #include "hw/m68k/next-cube.h" #include "hw/core/boards.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/scsi/esp.h" #include "hw/sysbus.h" #include "qom/object.h" diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c index 1aaaada3465..4c03455d6bd 100644 --- a/hw/m68k/q800.c +++ b/hw/m68k/q800.c @@ -30,7 +30,7 @@ #include "hw/core/boards.h" #include "hw/or-irq.h" #include "elf.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "ui/console.h" #include "hw/char/escc.h" #include "hw/sysbus.h" diff --git a/hw/m68k/virt.c b/hw/m68k/virt.c index 6f2b7bb5a08..7007d4e4e9f 100644 --- a/hw/m68k/virt.c +++ b/hw/m68k/virt.c @@ -16,7 +16,7 @@ #include "hw/core/boards.h" #include "hw/qdev-properties.h" #include "elf.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "ui/console.h" #include "hw/sysbus.h" #include "standard-headers/asm-m68k/bootinfo.h" diff --git a/hw/microblaze/boot.c b/hw/microblaze/boot.c index 39eb2386e8f..8ff99b3339d 100644 --- a/hw/microblaze/boot.c +++ b/hw/microblaze/boot.c @@ -34,7 +34,7 @@ #include "system/device_tree.h" #include "system/reset.h" #include "hw/core/boards.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "elf.h" #include "qemu/cutils.h" =20 diff --git a/hw/mips/boston.c b/hw/mips/boston.c index 633b2a90523..b4b4a86a5fa 100644 --- a/hw/mips/boston.c +++ b/hw/mips/boston.c @@ -25,7 +25,7 @@ #include "hw/char/serial-mm.h" #include "hw/ide/pci.h" #include "hw/ide/ahci-pci.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/core/loader-fit.h" #include "hw/mips/bootloader.h" #include "hw/mips/cps.h" diff --git a/hw/mips/fuloong2e.c b/hw/mips/fuloong2e.c index fa252c4b285..d4c100b69a0 100644 --- a/hw/mips/fuloong2e.c +++ b/hw/mips/fuloong2e.c @@ -31,7 +31,7 @@ #include "hw/mips/mips.h" #include "hw/mips/bootloader.h" #include "hw/pci/pci.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/ide/pci.h" #include "hw/qdev-properties.h" #include "elf.h" diff --git a/hw/mips/jazz.c b/hw/mips/jazz.c index fdcae4ce90e..fb01af8ece3 100644 --- a/hw/mips/jazz.c +++ b/hw/mips/jazz.c @@ -36,7 +36,7 @@ #include "hw/core/boards.h" #include "net/net.h" #include "hw/scsi/esp.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/rtc/mc146818rtc.h" #include "hw/timer/i8254.h" #include "hw/display/vga.h" diff --git a/hw/mips/loongson3_virt.c b/hw/mips/loongson3_virt.c index 4df6cf13b36..fe51fb66f6f 100644 --- a/hw/mips/loongson3_virt.c +++ b/hw/mips/loongson3_virt.c @@ -37,7 +37,7 @@ #include "hw/misc/unimp.h" #include "hw/intc/i8259.h" #include "hw/intc/loongson_ipi.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/isa/superio.h" #include "hw/pci/msi.h" #include "hw/pci/pci.h" diff --git a/hw/mips/malta.c b/hw/mips/malta.c index c63d77d4cca..2b0eb8c478e 100644 --- a/hw/mips/malta.c +++ b/hw/mips/malta.c @@ -44,7 +44,7 @@ #include "qemu/log.h" #include "hw/ide/pci.h" #include "hw/core/irq.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "elf.h" #include "qom/object.h" #include "hw/sysbus.h" /* SysBusDevice */ diff --git a/hw/nubus/nubus-device.c b/hw/nubus/nubus-device.c index 1abd9489044..5c5894c9c55 100644 --- a/hw/nubus/nubus-device.c +++ b/hw/nubus/nubus-device.c @@ -12,7 +12,7 @@ #include "qemu/datadir.h" #include "exec/target_page.h" #include "hw/core/irq.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/nubus/nubus.h" #include "qapi/error.h" #include "qemu/error-report.h" diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c index b696bf39e12..df07424e553 100644 --- a/hw/nvram/fw_cfg.c +++ b/hw/nvram/fw_cfg.c @@ -41,7 +41,7 @@ #include "qemu/cutils.h" #include "qapi/error.h" #include "hw/acpi/aml-build.h" -#include "hw/loader.h" +#include "hw/core/loader.h" =20 #define FW_CFG_FILE_SLOTS_DFLT 0x20 =20 diff --git a/hw/openrisc/boot.c b/hw/openrisc/boot.c index db6fea071e8..6256babc42a 100644 --- a/hw/openrisc/boot.c +++ b/hw/openrisc/boot.c @@ -11,7 +11,7 @@ #include "exec/cpu-defs.h" #include "exec/target_page.h" #include "elf.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/openrisc/boot.h" #include "system/device_tree.h" #include "system/qtest.h" diff --git a/hw/pci/pci.c b/hw/pci/pci.c index ffeb3fbf7cf..a3118ac6d0d 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -39,7 +39,7 @@ #include "system/numa.h" #include "system/runstate.h" #include "system/system.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "qemu/error-report.h" #include "qemu/range.h" #include "trace.h" diff --git a/hw/ppc/amigaone.c b/hw/ppc/amigaone.c index 3df4724a72b..4b858443806 100644 --- a/hw/ppc/amigaone.c +++ b/hw/ppc/amigaone.c @@ -15,7 +15,7 @@ #include "qapi/error.h" #include "hw/ppc/ppc.h" #include "hw/core/boards.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/pci-host/articia.h" #include "hw/isa/vt82c686.h" #include "hw/ide/pci.h" diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c index eeca31dabb9..769f18023d5 100644 --- a/hw/ppc/e500.c +++ b/hw/ppc/e500.c @@ -39,7 +39,7 @@ #include "hw/ppc/openpic_kvm.h" #include "hw/ppc/ppc.h" #include "hw/qdev-properties.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "elf.h" #include "hw/sysbus.h" #include "qemu/host-utils.h" diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c index 3a6e47eb8b7..909a4fe257d 100644 --- a/hw/ppc/mac_newworld.c +++ b/hw/ppc/mac_newworld.c @@ -65,7 +65,7 @@ #include "hw/char/escc.h" #include "hw/misc/macio/macio.h" #include "hw/ppc/openpic.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/core/fw-path-provider.h" #include "elf.h" #include "qemu/error-report.h" diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c index 8f9ce68b8b0..8400db6c352 100644 --- a/hw/ppc/mac_oldworld.c +++ b/hw/ppc/mac_oldworld.c @@ -42,7 +42,7 @@ #include "hw/nvram/fw_cfg.h" #include "hw/char/escc.h" #include "hw/misc/macio/macio.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/core/fw-path-provider.h" #include "elf.h" #include "qemu/error-report.h" diff --git a/hw/ppc/pegasos.c b/hw/ppc/pegasos.c index 8b5958e7498..11bf406ef77 100644 --- a/hw/ppc/pegasos.c +++ b/hw/ppc/pegasos.c @@ -25,7 +25,7 @@ #include "system/runstate.h" #include "system/qtest.h" #include "hw/core/boards.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/core/fw-path-provider.h" #include "elf.h" #include "qemu/log.h" diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 895132da91b..eb3197da9b1 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -38,7 +38,7 @@ #include "hw/ppc/ppc.h" #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_core.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/nmi.h" #include "qapi/visitor.h" #include "hw/intc/intc.h" diff --git a/hw/ppc/pnv_pnor.c b/hw/ppc/pnv_pnor.c index af7cfd028ba..c7cbc525b33 100644 --- a/hw/ppc/pnv_pnor.c +++ b/hw/ppc/pnv_pnor.c @@ -13,7 +13,7 @@ #include "qemu/units.h" #include "system/block-backend.h" #include "system/blockdev.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/ppc/pnv_pnor.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c index 824dd91ed5e..9e71037d84c 100644 --- a/hw/ppc/ppc440_bamboo.c +++ b/hw/ppc/ppc440_bamboo.c @@ -21,7 +21,7 @@ #include "hw/core/boards.h" #include "system/kvm.h" #include "system/device_tree.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "elf.h" #include "hw/char/serial-mm.h" #include "hw/ppc/ppc.h" diff --git a/hw/ppc/ppc_booke.c b/hw/ppc/ppc_booke.c index 13403a56b1a..7c6e5df9fde 100644 --- a/hw/ppc/ppc_booke.c +++ b/hw/ppc/ppc_booke.c @@ -29,7 +29,7 @@ #include "qemu/timer.h" #include "system/reset.h" #include "system/runstate.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "kvm_ppc.h" =20 void booke_set_tlb(ppcemb_tlb_t *tlb, target_ulong va, hwaddr pa, diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c index 0d5e1f604e6..90164face16 100644 --- a/hw/ppc/prep.c +++ b/hw/ppc/prep.c @@ -36,7 +36,7 @@ #include "qemu/error-report.h" #include "qemu/log.h" #include "qemu/datadir.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/rtc/mc146818rtc.h" #include "hw/isa/pc87312.h" #include "hw/qdev-properties.h" diff --git a/hw/ppc/sam460ex.c b/hw/ppc/sam460ex.c index 992bfe39a36..550aaa21fa2 100644 --- a/hw/ppc/sam460ex.c +++ b/hw/ppc/sam460ex.c @@ -22,7 +22,7 @@ #include "system/device_tree.h" #include "system/block-backend.h" #include "exec/page-protection.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "elf.h" #include "system/memory.h" #include "ppc440.h" diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 7c695ac4ecc..bad6918e6eb 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -61,7 +61,7 @@ #include "hw/core/cpu.h" =20 #include "hw/ppc/ppc.h" -#include "hw/loader.h" +#include "hw/core/loader.h" =20 #include "hw/ppc/fdt.h" #include "hw/ppc/spapr.h" diff --git a/hw/ppc/spapr_vio.c b/hw/ppc/spapr_vio.c index c21a2a3274e..875c17f4784 100644 --- a/hw/ppc/spapr_vio.c +++ b/hw/ppc/spapr_vio.c @@ -24,7 +24,7 @@ #include "qapi/error.h" #include "qapi/visitor.h" #include "qemu/log.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "elf.h" #include "hw/sysbus.h" #include "system/kvm.h" diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c index 8221a01639d..8b5f4eb57a0 100644 --- a/hw/ppc/virtex_ml507.c +++ b/hw/ppc/virtex_ml507.c @@ -34,7 +34,7 @@ #include "system/reset.h" #include "hw/core/boards.h" #include "system/device_tree.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "elf.h" #include "qapi/error.h" #include "qemu/error-report.h" diff --git a/hw/riscv/boot.c b/hw/riscv/boot.c index 4f207dee287..df1f3abd171 100644 --- a/hw/riscv/boot.c +++ b/hw/riscv/boot.c @@ -23,7 +23,7 @@ #include "qemu/error-report.h" #include "exec/cpu-defs.h" #include "hw/core/boards.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/riscv/boot.h" #include "hw/riscv/boot_opensbi.h" #include "elf.h" diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c index 4398f7b1825..9de6456c141 100644 --- a/hw/riscv/microchip_pfsoc.c +++ b/hw/riscv/microchip_pfsoc.c @@ -41,7 +41,7 @@ #include "qapi/error.h" #include "qapi/visitor.h" #include "hw/core/boards.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/sysbus.h" #include "chardev/char.h" #include "hw/cpu/cluster.h" diff --git a/hw/riscv/sifive_e.c b/hw/riscv/sifive_e.c index abe411e305e..c2032176c43 100644 --- a/hw/riscv/sifive_e.c +++ b/hw/riscv/sifive_e.c @@ -33,7 +33,7 @@ #include "qemu/error-report.h" #include "qapi/error.h" #include "hw/core/boards.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/sysbus.h" #include "hw/misc/unimp.h" #include "target/riscv/cpu.h" diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c index 00438d2e596..3e081ddf37e 100644 --- a/hw/riscv/sifive_u.c +++ b/hw/riscv/sifive_u.c @@ -41,7 +41,7 @@ #include "qapi/visitor.h" #include "hw/core/boards.h" #include "hw/core/irq.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/sysbus.h" #include "hw/cpu/cluster.h" #include "hw/misc/unimp.h" diff --git a/hw/riscv/spike.c b/hw/riscv/spike.c index 6aa688acf30..c9451d7e3b3 100644 --- a/hw/riscv/spike.c +++ b/hw/riscv/spike.c @@ -26,7 +26,7 @@ #include "qemu/error-report.h" #include "qapi/error.h" #include "hw/core/boards.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/sysbus.h" #include "target/riscv/cpu.h" #include "hw/riscv/riscv_hart.h" diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index 45a845318e7..0505bffa44a 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -24,7 +24,7 @@ #include "qemu/guest-random.h" #include "qapi/error.h" #include "hw/core/boards.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/sysbus.h" #include "hw/qdev-properties.h" #include "hw/char/serial-mm.h" diff --git a/hw/rx/rx-gdbsim.c b/hw/rx/rx-gdbsim.c index 1a33082857c..0a0ad85a35a 100644 --- a/hw/rx/rx-gdbsim.c +++ b/hw/rx/rx-gdbsim.c @@ -22,7 +22,7 @@ #include "qemu/guest-random.h" #include "qemu/units.h" #include "qapi/error.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/rx/rx62n.h" #include "system/qtest.h" #include "system/device_tree.h" diff --git a/hw/rx/rx62n.c b/hw/rx/rx62n.c index a2a243afa41..3fe9a4a518c 100644 --- a/hw/rx/rx62n.c +++ b/hw/rx/rx62n.c @@ -25,7 +25,7 @@ #include "qemu/error-report.h" #include "qemu/units.h" #include "hw/rx/rx62n.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/sysbus.h" #include "hw/qdev-properties.h" #include "system/system.h" diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c index f1c2af15f75..e0a04ab1a22 100644 --- a/hw/s390x/ipl.c +++ b/hw/s390x/ipl.c @@ -19,7 +19,7 @@ #include "system/runstate.h" #include "system/tcg.h" #include "elf.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/qdev-properties.h" #include "hw/core/boards.h" #include "hw/s390x/virtio-ccw.h" diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c index 5352f23ae82..9e8c2fa8d12 100644 --- a/hw/sh4/r2d.c +++ b/hw/sh4/r2d.c @@ -40,7 +40,7 @@ #include "sh7750_regs.h" #include "hw/ide/mmio.h" #include "hw/core/irq.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/usb/usb.h" #include "hw/block/flash.h" #include "exec/tswap.h" diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c index 071c3b5e629..be97a5effcc 100644 --- a/hw/smbios/smbios.c +++ b/hw/smbios/smbios.c @@ -25,7 +25,7 @@ #include "system/system.h" #include "qemu/uuid.h" #include "hw/firmware/smbios.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/core/boards.h" #include "hw/pci/pci_bus.h" #include "hw/pci/pci_device.h" diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c index 500b63bc9b7..cd1a03a5584 100644 --- a/hw/sparc/leon3.c +++ b/hw/sparc/leon3.c @@ -38,7 +38,7 @@ #include "system/qtest.h" #include "system/reset.h" #include "hw/core/boards.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "elf.h" #include "trace.h" =20 diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index fa5592f26cb..b6256864582 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -51,7 +51,7 @@ #include "hw/misc/unimp.h" #include "hw/core/irq.h" #include "hw/or-irq.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "elf.h" #include "trace.h" #include "qom/object.h" diff --git a/hw/sparc64/niagara.c b/hw/sparc64/niagara.c index 334bec14ba3..209be380473 100644 --- a/hw/sparc64/niagara.c +++ b/hw/sparc64/niagara.c @@ -29,7 +29,7 @@ #include "hw/core/boards.h" #include "hw/char/serial-mm.h" #include "hw/misc/unimp.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/sparc/sparc64.h" #include "hw/rtc/sun4v-rtc.h" #include "system/block-backend.h" diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c index 5b25ba81cc8..c0fb421d2ba 100644 --- a/hw/sparc64/sun4u.c +++ b/hw/sparc64/sun4u.c @@ -53,7 +53,7 @@ #include "hw/nvram/fw_cfg.h" #include "hw/sysbus.h" #include "hw/ide/pci.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/core/fw-path-provider.h" #include "elf.h" #include "trace.h" diff --git a/hw/tricore/tc27x_soc.c b/hw/tricore/tc27x_soc.c index f3b84980e52..e1a97a43874 100644 --- a/hw/tricore/tc27x_soc.c +++ b/hw/tricore/tc27x_soc.c @@ -21,7 +21,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/sysbus.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "qemu/units.h" #include "hw/misc/unimp.h" =20 diff --git a/hw/tricore/triboard.c b/hw/tricore/triboard.c index cb45b01d2d2..db6f2b765ac 100644 --- a/hw/tricore/triboard.c +++ b/hw/tricore/triboard.c @@ -23,7 +23,7 @@ #include "qapi/error.h" #include "hw/qdev-properties.h" #include "net/net.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "elf.h" #include "hw/tricore/tricore.h" #include "qemu/error-report.h" diff --git a/hw/tricore/tricore_testboard.c b/hw/tricore/tricore_testboard.c index 21b119712c5..60772d4f1d7 100644 --- a/hw/tricore/tricore_testboard.c +++ b/hw/tricore/tricore_testboard.c @@ -24,7 +24,7 @@ #include "cpu.h" #include "net/net.h" #include "hw/core/boards.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "elf.h" #include "hw/tricore/tricore.h" #include "hw/tricore/tricore_testdevice.h" diff --git a/hw/virtio/vhost-user-scsi-pci.c b/hw/virtio/vhost-user-scsi-pc= i.c index 994e51a37bb..367b8f27da5 100644 --- a/hw/virtio/vhost-user-scsi-pci.c +++ b/hw/virtio/vhost-user-scsi-pci.c @@ -28,7 +28,7 @@ #include "qemu/module.h" #include "hw/pci/msi.h" #include "hw/pci/msix.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "system/kvm.h" #include "hw/virtio/virtio-pci.h" #include "qom/object.h" diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index 263e112a5cb..7382e7db6fa 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -33,7 +33,7 @@ #include "qemu/bswap.h" #include "hw/pci/msi.h" #include "hw/pci/msix.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "system/accel-irq.h" #include "system/kvm.h" #include "hw/virtio/virtio-pci.h" diff --git a/hw/vmapple/vmapple.c b/hw/vmapple/vmapple.c index 9154a4c2576..ad513d4cbc1 100644 --- a/hw/vmapple/vmapple.c +++ b/hw/vmapple/vmapple.c @@ -27,7 +27,7 @@ #include "monitor/qdev.h" #include "hw/core/boards.h" #include "hw/core/irq.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" #include "hw/usb/usb.h" diff --git a/hw/xen/xen_pt_load_rom.c b/hw/xen/xen_pt_load_rom.c index 6bc64acd335..319efcad6ef 100644 --- a/hw/xen/xen_pt_load_rom.c +++ b/hw/xen/xen_pt_load_rom.c @@ -4,7 +4,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qemu/error-report.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/pci/pci.h" #include "xen_pt.h" =20 diff --git a/hw/xtensa/sim.c b/hw/xtensa/sim.c index 37acc562d21..994460d0414 100644 --- a/hw/xtensa/sim.c +++ b/hw/xtensa/sim.c @@ -30,7 +30,7 @@ #include "system/reset.h" #include "system/system.h" #include "hw/core/boards.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "elf.h" #include "system/memory.h" #include "qemu/error-report.h" diff --git a/hw/xtensa/virt.c b/hw/xtensa/virt.c index b9e324c2850..271f06e0953 100644 --- a/hw/xtensa/virt.c +++ b/hw/xtensa/virt.c @@ -29,7 +29,7 @@ #include "qapi/error.h" #include "system/reset.h" #include "hw/core/boards.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/pci-host/gpex.h" #include "net/net.h" #include "elf.h" diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c index 694456aa0a1..a96abcd4bdd 100644 --- a/hw/xtensa/xtfpga.c +++ b/hw/xtensa/xtfpga.c @@ -31,7 +31,7 @@ #include "cpu.h" #include "system/system.h" #include "hw/core/boards.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/qdev-properties.h" #include "elf.h" #include "system/memory.h" diff --git a/semihosting/arm-compat-semi.c b/semihosting/arm-compat-semi.c index 2e9fa5842f6..5e5f181b908 100644 --- a/semihosting/arm-compat-semi.c +++ b/semihosting/arm-compat-semi.c @@ -47,7 +47,7 @@ #define COMMON_SEMI_HEAP_SIZE (128 * 1024 * 1024) #else #include "qemu/cutils.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/core/boards.h" #endif =20 diff --git a/system/device_tree.c b/system/device_tree.c index 3ccdf33374c..1ea19629841 100644 --- a/system/device_tree.c +++ b/system/device_tree.c @@ -24,7 +24,7 @@ #include "qemu/cutils.h" #include "qemu/guest-random.h" #include "system/device_tree.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/core/boards.h" #include "qemu/config-file.h" #include "qapi/qapi-commands-machine.h" diff --git a/system/globals.c b/system/globals.c index 98f9876d5d4..c33f6ed3902 100644 --- a/system/globals.c +++ b/system/globals.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "exec/cpu-common.h" #include "hw/display/vga.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/xen/xen.h" #include "net/net.h" #include "system/cpus.h" diff --git a/system/vl.c b/system/vl.c index cdf32c119b2..659c6506fc7 100644 --- a/system/vl.c +++ b/system/vl.c @@ -62,7 +62,7 @@ #include "hw/firmware/smbios.h" #include "hw/acpi/acpi.h" #include "hw/xen/xen.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "monitor/qdev.h" #include "net/net.h" #include "net/slirp.h" diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 7720d27a3c0..09e89272edc 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -36,7 +36,7 @@ #include "exec/target_page.h" #include "hw/qdev-properties.h" #if !defined(CONFIG_USER_ONLY) -#include "hw/loader.h" +#include "hw/core/loader.h" #include "hw/core/boards.h" #ifdef CONFIG_TCG #include "hw/intc/armv7m_nvic.h" diff --git a/target/loongarch/kvm/kvm.c b/target/loongarch/kvm/kvm.c index 8ed62acf84d..ef3359ced92 100644 --- a/target/loongarch/kvm/kvm.c +++ b/target/loongarch/kvm/kvm.c @@ -23,7 +23,7 @@ #include "hw/core/irq.h" #include "hw/loongarch/virt.h" #include "qemu/log.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "system/runstate.h" #include "cpu-csr.h" #include "kvm_loongarch.h" diff --git a/target/openrisc/interrupt.c b/target/openrisc/interrupt.c index d357aaa7da1..5528b80e7b8 100644 --- a/target/openrisc/interrupt.c +++ b/target/openrisc/interrupt.c @@ -23,7 +23,7 @@ #include "gdbstub/helpers.h" #include "qemu/host-utils.h" #ifndef CONFIG_USER_ONLY -#include "hw/loader.h" +#include "hw/core/loader.h" #endif #include "qemu/plugin.h" =20 diff --git a/target/openrisc/mmu.c b/target/openrisc/mmu.c index ffb732e0d1f..b2b2b3c4a98 100644 --- a/target/openrisc/mmu.c +++ b/target/openrisc/mmu.c @@ -26,7 +26,7 @@ #include "exec/target_page.h" #include "gdbstub/helpers.h" #include "qemu/host-utils.h" -#include "hw/loader.h" +#include "hw/core/loader.h" =20 static void get_phys_nommu(hwaddr *phys_addr, int *prot, vaddr address) { diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c index 1d99e5f4908..5d792563b91 100644 --- a/target/riscv/kvm/kvm-cpu.c +++ b/target/riscv/kvm/kvm-cpu.c @@ -41,7 +41,7 @@ #include "hw/core/irq.h" #include "hw/intc/riscv_imsic.h" #include "qemu/log.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "kvm_riscv.h" #include "sbi_ecall_interface.h" #include "chardev/char-fe.h" diff --git a/target/rx/cpu.c b/target/rx/cpu.c index da02ae7bf88..f5f4f3ba4ab 100644 --- a/target/rx/cpu.c +++ b/target/rx/cpu.c @@ -25,7 +25,7 @@ #include "exec/page-protection.h" #include "exec/translation-block.h" #include "exec/target_page.h" -#include "hw/loader.h" +#include "hw/core/loader.h" #include "fpu/softfloat.h" #include "tcg/debug-assert.h" #include "accel/tcg/cpu-ops.h" --=20 2.52.0 From nobody Wed Jan 7 09:26:48 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=1766827295; cv=none; d=zohomail.com; s=zohoarc; b=QRGd+867e3mGxaSDvxKRujsXAgZl2maIUKLUYzfQcXPPE5AjPVzGECi2CUhMJWUL3Be4hxZdS5If9cB8CBELFOhUfIg5RpMB/J2Uegr28Gjq/qIP8YKSfz0yobhLbwiF1jP/XCJOlt9zqtItpx40pdmKkzwf7+rZC5HXTkoDNoA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827295; 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=X6DgzKFCdB6q//TDsUK3aGBtKyBMMRnX/Ll7zdlPuRw=; b=IK6bzqM0Swu0GqsRX7/5s1BXYxHZ9N0y4j0JvxAR1oYpELmRJiQ5PDHmvNMQDFIZjye6tkXL6+ygUTT1jyonnb9hd5634M/DSkVZnSjM0Blxo4M94lEfMUDG9fambmpeaa83XkpFwKq8Jj1rJwvtQqQ/WNUN3R7DSr6CIeYiVm0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176682729502214.77257125625772; Sat, 27 Dec 2025 01:21:35 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQPv-0002Q5-9R; Sat, 27 Dec 2025 04:16:55 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPt-0002Ou-G7 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:53 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPr-0002L8-Sh for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:53 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-690-PjYfIaLTM_6mFW-9_jHwxA-1; Sat, 27 Dec 2025 04:16:49 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-47d17fff653so26705965e9.0 for ; Sat, 27 Dec 2025 01:16:49 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-432613f7e6esm38722375f8f.21.2025.12.27.01.16.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:16:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827011; 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=X6DgzKFCdB6q//TDsUK3aGBtKyBMMRnX/Ll7zdlPuRw=; b=hBBnOlaC0l3FP4A+7PRl/xDGSpAqJXcwhvDUegydvMVcWHlcrK8y0u2cot3ltwN1CNq8zC mYyEpDBXjQAchO8QhlXANE+ALF+eu0qYAvlNtGEsRtzZwkuD+bGswFrJvHsOr/5BfpJoHg k8NCycJRII9IJOMjMfnFv0J5VVVwtVw= X-MC-Unique: PjYfIaLTM_6mFW-9_jHwxA-1 X-Mimecast-MFC-AGG-ID: PjYfIaLTM_6mFW-9_jHwxA_1766827008 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827008; x=1767431808; 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; bh=X6DgzKFCdB6q//TDsUK3aGBtKyBMMRnX/Ll7zdlPuRw=; b=ijphTIMq9geVnHlFcnq66F1mRW531HUJgz3WFRuWTGgi+4QlKe0+4QrZkmu2nBT/99 8F2iVxAQTFPdOpN6EWCh7nTw8W5hE7JZ2ffMHco9u9rj5poYA0wz+wNFxHez+NRK+pzP QkWpCzr770rQbJpAiR/X4QStx1nhSmeyH3XvsvOys8OM/QP1z7gfF0ki3VK0a5HPK3xS opUPw0z6Yx57iQDFmySxHbH+6la7S08Zq0+ec1jwkDBzNpzX5sNmL+nxwEG+c8j8bdSY irEYc/Zc16C8CkuclzZU9l7y2d2ad6+PyPARPnX0QmxnqX5VLmBdrgrRoectv0fBo2UL C5zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827008; x=1767431808; 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; bh=X6DgzKFCdB6q//TDsUK3aGBtKyBMMRnX/Ll7zdlPuRw=; b=C/YnxXDpz/Ac+F4lMLCIJ7GGqw334A871/0mQqU6Cczy6st/Tzwr2REWPQtXH9+xlO PQW2Od0MZ/0jC5B5HjBUqSK8lc39CKHtCFBi/l1vtg53UnawHPkOhGMwiWG0NcGcE5Vq QjHylwysod28VvO9aeKC3gt3B34szcWLTvmmhWcR/xh7ybgz1bZlXzhWP0luWpbD4J+x xStoRBwkG4wxdi3zHOdPBM0UYu5jUbbncnuNPGFN769CxLfo/+3cw1lK8LFQ2H6/02Ac zy1HnSbKgap6ad60+E2RXD18TZYsy1Uwp0/q9kLkFQfxiZ+33JuLbgTe0DTUUdH2lLt+ tKHQ== X-Gm-Message-State: AOJu0Yw6+etNoX+SRv5FwD5q0mzLcKSIPxaqIZ3nsCnLzYhUTs6stEd8 ZQql7dx1NJgar+QZqPZIg68a2ZxjhGKBZbJXceLkJlwNgJ3vPTCPEQ8pqDAvYpFlr3jTWcWhuOW patsDjIBA5tVfVkT/BMD/IGo2eo4lnGwAQQsJouXz8kfDFFFq2K3MZ11W1Z0rx6vCo2XCMQ4RXi 8g37jUX4kC2+8LnnFDKC5FdkKTtwD+Gg4/89V3IvtS X-Gm-Gg: AY/fxX55cGboV9ZEIb9VU2fGEvYRtKlBG/wk0YcmC5gbuieIXbE4P+0BGvj1r2icA8q /zHKelc2gxSS1pM/od4IPxlrd59VIsYNWQEPNiEp2SbzgYgzyQ/Hdh7SkHHrXC+AcoKlxu+kqEr 9MtBDX5+XwyuopFwrmbXbd/W5MHGVD7PtcSWKhw8U/rmJVW2YVrwjYfo/rt2hHlpkPCFyRdqG6e jbXnlnuYohunnOPk4/FlXs53GiTTzgG9apbq70XhYIxY5qEd/UPM0rF/dHVjMX+JBwFI+Pk4Cvk 5t1BbyiTgMEAKJAzYETqTmayGkgRfcdPCcbae8Nl0SXyrmogztaSJE7M7ETeWK2H0dhTKMoggdT Ft64+NZtHweWui7IdB3gd/n+NYIujgT5pgGFUq00SN/n6GC7Ltn6+7yWTRdzaYRZqctW7/P5HYV +LSER4MXGt+r2GQJ0= X-Received: by 2002:a05:600c:3e0b:b0:477:2f7c:314f with SMTP id 5b1f17b1804b1-47d19555af8mr277089645e9.10.1766827007896; Sat, 27 Dec 2025 01:16:47 -0800 (PST) X-Google-Smtp-Source: AGHT+IElvbRjBJG8Wp+YFCtzTv7bUZRGOcEp4H//h0C8ZY6e0LbMrh9fgI8bmFC9jVvL8Y0qnFmoxA== X-Received: by 2002:a05:600c:3e0b:b0:477:2f7c:314f with SMTP id 5b1f17b1804b1-47d19555af8mr277089395e9.10.1766827007402; Sat, 27 Dec 2025 01:16:47 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 013/153] include: move hw/nmi.h to hw/core/ Date: Sat, 27 Dec 2025 10:14:00 +0100 Message-ID: <20251227091622.20725-14-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827296163158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/{ =3D> core}/nmi.h | 0 hw/core/nmi.c | 2 +- hw/hppa/machine.c | 2 +- hw/i386/x86.c | 2 +- hw/intc/m68k_irqc.c | 2 +- hw/ipmi/ipmi.c | 2 +- hw/m68k/q800-glue.c | 2 +- hw/misc/macio/gpio.c | 2 +- hw/ppc/pnv.c | 2 +- hw/ppc/spapr.c | 2 +- hw/s390x/s390-virtio-ccw.c | 2 +- hw/watchdog/watchdog.c | 2 +- system/cpus.c | 2 +- 13 files changed, 12 insertions(+), 12 deletions(-) rename include/hw/{ =3D> core}/nmi.h (100%) diff --git a/include/hw/nmi.h b/include/hw/core/nmi.h similarity index 100% rename from include/hw/nmi.h rename to include/hw/core/nmi.h diff --git a/hw/core/nmi.c b/hw/core/nmi.c index a7bce8a04a1..4b447e126ba 100644 --- a/hw/core/nmi.c +++ b/hw/core/nmi.c @@ -20,7 +20,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/nmi.h" +#include "hw/core/nmi.h" #include "qapi/error.h" #include "qemu/module.h" #include "monitor/monitor.h" diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c index e877e6c4018..960aefc9e26 100644 --- a/hw/hppa/machine.c +++ b/hw/hppa/machine.c @@ -23,7 +23,7 @@ #include "hw/intc/i8259.h" #include "hw/input/lasips2.h" #include "hw/net/lasi_82596.h" -#include "hw/nmi.h" +#include "hw/core/nmi.h" #include "hw/usb/usb.h" #include "hw/pci/pci.h" #include "hw/pci/pci_device.h" diff --git a/hw/i386/x86.c b/hw/i386/x86.c index f80533df1c5..c29856c810a 100644 --- a/hw/i386/x86.c +++ b/hw/i386/x86.c @@ -35,7 +35,7 @@ #include "hw/i386/x86.h" #include "hw/i386/topology.h" =20 -#include "hw/nmi.h" +#include "hw/core/nmi.h" #include "kvm/kvm_i386.h" =20 =20 diff --git a/hw/intc/m68k_irqc.c b/hw/intc/m68k_irqc.c index 2532322618a..67cb9acb418 100644 --- a/hw/intc/m68k_irqc.c +++ b/hw/intc/m68k_irqc.c @@ -11,7 +11,7 @@ #include "cpu.h" #include "migration/vmstate.h" #include "hw/qdev-properties.h" -#include "hw/nmi.h" +#include "hw/core/nmi.h" #include "hw/intc/intc.h" #include "hw/intc/m68k_irqc.h" =20 diff --git a/hw/ipmi/ipmi.c b/hw/ipmi/ipmi.c index b91e487e1b8..2a7bc667ec3 100644 --- a/hw/ipmi/ipmi.c +++ b/hw/ipmi/ipmi.c @@ -29,7 +29,7 @@ #include "system/runstate.h" #include "qapi/error.h" #include "qemu/module.h" -#include "hw/nmi.h" +#include "hw/core/nmi.h" =20 static uint32_t ipmi_current_uuid =3D 1; =20 diff --git a/hw/m68k/q800-glue.c b/hw/m68k/q800-glue.c index 94f47175ae5..84dd01459cd 100644 --- a/hw/m68k/q800-glue.c +++ b/hw/m68k/q800-glue.c @@ -25,7 +25,7 @@ #include "hw/m68k/q800-glue.h" #include "hw/core/boards.h" #include "hw/core/irq.h" -#include "hw/nmi.h" +#include "hw/core/nmi.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" =20 diff --git a/hw/misc/macio/gpio.c b/hw/misc/macio/gpio.c index 9fed4265676..77658cb6d02 100644 --- a/hw/misc/macio/gpio.c +++ b/hw/misc/macio/gpio.c @@ -29,7 +29,7 @@ #include "hw/misc/macio/macio.h" #include "hw/misc/macio/gpio.h" #include "hw/core/irq.h" -#include "hw/nmi.h" +#include "hw/core/nmi.h" #include "qemu/log.h" #include "qemu/module.h" #include "trace.h" diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index eb3197da9b1..8a50e9f0d85 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -39,7 +39,7 @@ #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_core.h" #include "hw/core/loader.h" -#include "hw/nmi.h" +#include "hw/core/nmi.h" #include "qapi/visitor.h" #include "hw/intc/intc.h" #include "hw/ipmi/ipmi.h" diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index bad6918e6eb..7363e533e15 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -82,7 +82,7 @@ #include "qemu/config-file.h" #include "qemu/error-report.h" #include "trace.h" -#include "hw/nmi.h" +#include "hw/core/nmi.h" #include "hw/intc/intc.h" =20 #include "hw/ppc/spapr_cpu_core.h" diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index 29d95be2c64..c5e0691a26d 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -35,7 +35,7 @@ #include "hw/s390x/ap-bridge.h" #include "migration/register.h" #include "target/s390x/cpu_models.h" -#include "hw/nmi.h" +#include "hw/core/nmi.h" #include "hw/qdev-properties.h" #include "hw/s390x/tod.h" #include "system/system.h" diff --git a/hw/watchdog/watchdog.c b/hw/watchdog/watchdog.c index 07213739488..0842fe373ae 100644 --- a/hw/watchdog/watchdog.c +++ b/hw/watchdog/watchdog.c @@ -28,7 +28,7 @@ #include "qapi/qapi-events-run-state.h" #include "system/runstate.h" #include "system/watchdog.h" -#include "hw/nmi.h" +#include "hw/core/nmi.h" #include "qemu/help_option.h" #include "trace.h" =20 diff --git a/system/cpus.c b/system/cpus.c index 0b1eabd3c4b..a0e1debfea8 100644 --- a/system/cpus.c +++ b/system/cpus.c @@ -39,7 +39,7 @@ #include "qemu/plugin.h" #include "system/cpus.h" #include "qemu/guest-random.h" -#include "hw/nmi.h" +#include "hw/core/nmi.h" #include "system/replay.h" #include "system/runstate.h" #include "system/cpu-timers.h" --=20 2.52.0 From nobody Wed Jan 7 09:26:48 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=1766827192; cv=none; d=zohomail.com; s=zohoarc; b=VCo+SI8hOXrjsnJhiEEjtOj0J4tum4eBKZ2SQ6+ENJkWompCm1GohHXGLmNua5IB8uEmYX/g1GQ4GQaujTssgid4LS7DreBR8pSSNHCJlsd/BqJ/2OX33a0UBY6LCFW3FeLUr+Abp4TeL5TQP10x7zW+aiwd/AZ3nQOfYE3AngU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827192; 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=lf1KMiLCtOj6IyyKYDltZnw6RPiVBMyOh5Y5hndcmd4=; b=MDshSdcN9Yz6gGRr/N27MB9oCdIPlPzaL2V43dmJlzgaxnlaiitKn5nXGigNJqEebQFI3o90RIvNLYbnNstKdI0RtDohQlOOZpN7MydNUYN3q0ck+4t9K0AKK32jv0KZQhRfqta+CqJpmSnpZEZ4teqqXxrNOQ3BsAK3VOLjpoo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827192763938.388782371098; Sat, 27 Dec 2025 01:19:52 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQ1-0002TG-6F; Sat, 27 Dec 2025 04:17:01 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPz-0002S7-Pr for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:59 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPv-0002LX-Kw for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:59 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-106-Ez5JyTx4M7u4OG7kVMf_xg-1; Sat, 27 Dec 2025 04:16:52 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-47904cdb9bbso70683505e9.1 for ; Sat, 27 Dec 2025 01:16:52 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be2723b2bsm487157775e9.3.2025.12.27.01.16.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:16:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827015; 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=lf1KMiLCtOj6IyyKYDltZnw6RPiVBMyOh5Y5hndcmd4=; b=dXqLiGHFEI5eYp5NdhzLuKbxhbX23Ni6PN82s57PuzBxpde7vhfWL2SwXj7ekyMXsXLafb rFMWi6WBEea6vCMCRmD08cD+wPmFOCayfwOuaOFXv/TBvjA6uwelP9Au614PsPxzDuo0LA F9RPNn4PeZ+8Bmy9VjKFC50ImbRevrM= X-MC-Unique: Ez5JyTx4M7u4OG7kVMf_xg-1 X-Mimecast-MFC-AGG-ID: Ez5JyTx4M7u4OG7kVMf_xg_1766827011 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827011; x=1767431811; 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; bh=lf1KMiLCtOj6IyyKYDltZnw6RPiVBMyOh5Y5hndcmd4=; b=ew/sYYOZnv0478oMcXCCEMt3fe4efZVxWIhAHMi3Fp+CLKsnme1ZtPQCDAYHgqCPi4 wLh9pRjzVvqOMDF67iOc5ckvKR5WFLU7AYoi4rO0vn3EC+mhdAYJ+Drl5FkioY41sDNh dxKt+FpFo8EYAXZ5KeRtcqDg1XDOvLxnCtyuAAnoKwXO+u7BND1cyphbGy+kKw5uSFrx p+4RR7eLuroqqPI13YRcyAssQZXkOOS8bahlTTIfGzw9s2QW2HxeqptqzuTSjHC9k+J3 Kf6CZD3oIkZje9LcqnZQOTcqrqDW3rS0fX+y1qOSj6SaX7rJhzDZm+4q+lmMOTi5U7aR QYPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827011; x=1767431811; 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; bh=lf1KMiLCtOj6IyyKYDltZnw6RPiVBMyOh5Y5hndcmd4=; b=KIJvav7rVNgHHafT768NKujiIwJXOlXX3yOqKJVHMgsHSPyJ+56BLa0N1MhnR4b5G3 23CG6CsZVPnbn5LH1Z2leXXmZ6RBWLhlFdk1saOQiHmGimWt+gzhq6JMFCcblQa/VtRg JdhZSqwaCOxDqYaunB3eCND2g1lpm6oJnOxEvLkPkrwEr95KZBW2qM66E0mDn+r7nJR4 yOlAPer7bZukuJEd2zF85ajTPXypZHdnLIslE1RgQYmEGepBJWq5rOUqJIt2xRirGIJG IwrV9KGUXKw6c7NIY5O62OTH5HkYR1qJk18L2q+CS+krlJjh97ueMf1zCperFDpdQ84W gwug== X-Gm-Message-State: AOJu0YzwGIafwVDnnARyLEvQFqbB9ybFYY6gmUwoJvY5cfa9cJZO2bVS bi1JxHSrYRrdj38aaWSBspYOFsNMOPwTIKYc6pCSiGJRIu19Wi9ItOLafOMjeL5AAWzMkoXyenb IrLDichWUBva77eoVp8WZLfk91p+r9Afkl28f3lDfsGMZ6lVNO4Ocm20SEuvpVSvMEgGsAh2dMc 7V6g6WpK24pU1Z/Lk+OASmJFydSuWpUk67pOP4/V6x X-Gm-Gg: AY/fxX5C3znqgoEDVQx70E3RiZkc3qck8uV++JbdBiR9muZ0bG73AOig6aVyC6R90hA vZlyMHdHipuLouKR6IKzaOGk0dRBU+1U1e62XQB5ICFeOvWqKvu388ByNaPawqhoPq6Fuc7gjxN x9W2kmJRHfUmLP0JudF3ItiYIfIhHYQhXNxgX4IEooPy+VsEFY1gspvselISW8jn0y5j3oR25x4 5+ErKH8eSlCEW+nnTLCK11TCE6tuCCD0hVDiy35o6xXK3out/1Had25cfDuE2x1raOm2Eqmax8i QZfa71y6soEVEDZixvNY8wUNAFcH+Htnzn5TG5LWLfxuaC+jjZplrcdVrDGwQOFFXUJI0ECbBAd gJmmVmF4lpXnoi9dRGMy/zYHmh1o9laCg6eHid8EQfrIDOGt8FRH4FONuUXavcYLK+lTt2knIWh cWcoANXW9wDPdHGlk= X-Received: by 2002:a05:600c:4f08:b0:475:d9de:952e with SMTP id 5b1f17b1804b1-47d18b83218mr273739045e9.1.1766827010785; Sat, 27 Dec 2025 01:16:50 -0800 (PST) X-Google-Smtp-Source: AGHT+IHzzNI2gUtWLrAJchMNGrbsBhwNZc7fW6/i2j08lJfp+Zp2IXIrYH+SLZ1mY5YbWtUgCDOfoQ== X-Received: by 2002:a05:600c:4f08:b0:475:d9de:952e with SMTP id 5b1f17b1804b1-47d18b83218mr273738795e9.1.1766827010088; Sat, 27 Dec 2025 01:16:50 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 014/153] include: move hw/or-irq.h to hw/core/ Date: Sat, 27 Dec 2025 10:14:01 +0100 Message-ID: <20251227091622.20725-15-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827193691158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- include/hw/arm/armsse.h | 2 +- include/hw/arm/bcm2835_peripherals.h | 2 +- include/hw/arm/exynos4210.h | 2 +- include/hw/arm/fsl-imx6.h | 2 +- include/hw/arm/fsl-imx7.h | 2 +- include/hw/arm/fsl-imx8mp.h | 2 +- include/hw/arm/max78000_soc.h | 2 +- include/hw/arm/stm32f205_soc.h | 2 +- include/hw/arm/stm32f405_soc.h | 2 +- include/hw/arm/stm32l4x5_soc.h | 2 +- include/hw/arm/xlnx-zynqmp.h | 2 +- include/hw/{ =3D> core}/or-irq.h | 0 include/hw/intc/aspeed_intc.h | 2 +- include/hw/m68k/q800.h | 2 +- hw/arm/mps2-tz.c | 2 +- hw/arm/mps2.c | 2 +- hw/arm/mps3r.c | 2 +- hw/arm/musicpal.c | 2 +- hw/arm/stm32l4x5_soc.c | 2 +- hw/arm/xlnx-versal.c | 2 +- hw/core/or-irq.c | 2 +- hw/m68k/q800.c | 2 +- hw/pci-host/raven.c | 2 +- hw/ppc/pegasos.c | 2 +- hw/sparc/sun4m.c | 2 +- 25 files changed, 24 insertions(+), 24 deletions(-) rename include/hw/{ =3D> core}/or-irq.h (100%) diff --git a/include/hw/arm/armsse.h b/include/hw/arm/armsse.h index 04755ed1ec3..414e553600d 100644 --- a/include/hw/arm/armsse.h +++ b/include/hw/arm/armsse.h @@ -109,7 +109,7 @@ #include "hw/misc/armsse-mhu.h" #include "hw/misc/armsse-cpu-pwrctrl.h" #include "hw/misc/unimp.h" -#include "hw/or-irq.h" +#include "hw/core/or-irq.h" #include "hw/core/clock.h" #include "hw/core/split-irq.h" #include "hw/cpu/cluster.h" diff --git a/include/hw/arm/bcm2835_peripherals.h b/include/hw/arm/bcm2835_= peripherals.h index 1eeaeec9e0e..d46d892956d 100644 --- a/include/hw/arm/bcm2835_peripherals.h +++ b/include/hw/arm/bcm2835_peripherals.h @@ -17,7 +17,7 @@ #include "hw/char/bcm2835_aux.h" #include "hw/display/bcm2835_fb.h" #include "hw/dma/bcm2835_dma.h" -#include "hw/or-irq.h" +#include "hw/core/or-irq.h" #include "hw/intc/bcm2835_ic.h" #include "hw/misc/bcm2835_property.h" #include "hw/misc/bcm2835_rng.h" diff --git a/include/hw/arm/exynos4210.h b/include/hw/arm/exynos4210.h index d33fe385865..fbe4370219d 100644 --- a/include/hw/arm/exynos4210.h +++ b/include/hw/arm/exynos4210.h @@ -24,7 +24,7 @@ #ifndef EXYNOS4210_H #define EXYNOS4210_H =20 -#include "hw/or-irq.h" +#include "hw/core/or-irq.h" #include "hw/sysbus.h" #include "hw/cpu/a9mpcore.h" #include "hw/intc/exynos4210_gic.h" diff --git a/include/hw/arm/fsl-imx6.h b/include/hw/arm/fsl-imx6.h index 124bbd478fd..5520473ba0b 100644 --- a/include/hw/arm/fsl-imx6.h +++ b/include/hw/arm/fsl-imx6.h @@ -33,7 +33,7 @@ #include "hw/usb/chipidea.h" #include "hw/usb/imx-usb-phy.h" #include "hw/pci-host/designware.h" -#include "hw/or-irq.h" +#include "hw/core/or-irq.h" #include "system/memory.h" #include "cpu.h" #include "qom/object.h" diff --git a/include/hw/arm/fsl-imx7.h b/include/hw/arm/fsl-imx7.h index aa7818c4999..710831c8bf5 100644 --- a/include/hw/arm/fsl-imx7.h +++ b/include/hw/arm/fsl-imx7.h @@ -36,7 +36,7 @@ #include "hw/net/imx_fec.h" #include "hw/pci-host/designware.h" #include "hw/usb/chipidea.h" -#include "hw/or-irq.h" +#include "hw/core/or-irq.h" #include "cpu.h" #include "qom/object.h" #include "qemu/units.h" diff --git a/include/hw/arm/fsl-imx8mp.h b/include/hw/arm/fsl-imx8mp.h index d016f7d3371..1275df22f19 100644 --- a/include/hw/arm/fsl-imx8mp.h +++ b/include/hw/arm/fsl-imx8mp.h @@ -18,7 +18,7 @@ #include "hw/misc/imx8mp_analog.h" #include "hw/misc/imx8mp_ccm.h" #include "hw/net/imx_fec.h" -#include "hw/or-irq.h" +#include "hw/core/or-irq.h" #include "hw/pci-host/designware.h" #include "hw/pci-host/fsl_imx8m_phy.h" #include "hw/sd/sdhci.h" diff --git a/include/hw/arm/max78000_soc.h b/include/hw/arm/max78000_soc.h index a203079ee9a..1a6cdb39495 100644 --- a/include/hw/arm/max78000_soc.h +++ b/include/hw/arm/max78000_soc.h @@ -9,7 +9,7 @@ #ifndef HW_ARM_MAX78000_SOC_H #define HW_ARM_MAX78000_SOC_H =20 -#include "hw/or-irq.h" +#include "hw/core/or-irq.h" #include "hw/arm/armv7m.h" #include "hw/misc/max78000_aes.h" #include "hw/misc/max78000_gcr.h" diff --git a/include/hw/arm/stm32f205_soc.h b/include/hw/arm/stm32f205_soc.h index d3de6b94dab..745433b56c2 100644 --- a/include/hw/arm/stm32f205_soc.h +++ b/include/hw/arm/stm32f205_soc.h @@ -29,7 +29,7 @@ #include "hw/timer/stm32f2xx_timer.h" #include "hw/char/stm32f2xx_usart.h" #include "hw/adc/stm32f2xx_adc.h" -#include "hw/or-irq.h" +#include "hw/core/or-irq.h" #include "hw/ssi/stm32f2xx_spi.h" #include "hw/arm/armv7m.h" #include "hw/core/clock.h" diff --git a/include/hw/arm/stm32f405_soc.h b/include/hw/arm/stm32f405_soc.h index 2eeada64ded..9fe40da9680 100644 --- a/include/hw/arm/stm32f405_soc.h +++ b/include/hw/arm/stm32f405_soc.h @@ -31,7 +31,7 @@ #include "hw/char/stm32f2xx_usart.h" #include "hw/adc/stm32f2xx_adc.h" #include "hw/misc/stm32f4xx_exti.h" -#include "hw/or-irq.h" +#include "hw/core/or-irq.h" #include "hw/ssi/stm32f2xx_spi.h" #include "hw/arm/armv7m.h" #include "qom/object.h" diff --git a/include/hw/arm/stm32l4x5_soc.h b/include/hw/arm/stm32l4x5_soc.h index c2fae6e23fe..9c3d662bca9 100644 --- a/include/hw/arm/stm32l4x5_soc.h +++ b/include/hw/arm/stm32l4x5_soc.h @@ -26,7 +26,7 @@ =20 #include "system/memory.h" #include "hw/arm/armv7m.h" -#include "hw/or-irq.h" +#include "hw/core/or-irq.h" #include "hw/misc/stm32l4x5_syscfg.h" #include "hw/misc/stm32l4x5_exti.h" #include "hw/misc/stm32l4x5_rcc.h" diff --git a/include/hw/arm/xlnx-zynqmp.h b/include/hw/arm/xlnx-zynqmp.h index a3117bd6c50..620b20d0e2a 100644 --- a/include/hw/arm/xlnx-zynqmp.h +++ b/include/hw/arm/xlnx-zynqmp.h @@ -37,7 +37,7 @@ #include "hw/dma/xlnx_csu_dma.h" #include "hw/nvram/xlnx-bbram.h" #include "hw/nvram/xlnx-zynqmp-efuse.h" -#include "hw/or-irq.h" +#include "hw/core/or-irq.h" #include "hw/misc/xlnx-zynqmp-apu-ctrl.h" #include "hw/misc/xlnx-zynqmp-crf.h" #include "hw/timer/cadence_ttc.h" diff --git a/include/hw/or-irq.h b/include/hw/core/or-irq.h similarity index 100% rename from include/hw/or-irq.h rename to include/hw/core/or-irq.h diff --git a/include/hw/intc/aspeed_intc.h b/include/hw/intc/aspeed_intc.h index 51288384a56..6dd8effcd89 100644 --- a/include/hw/intc/aspeed_intc.h +++ b/include/hw/intc/aspeed_intc.h @@ -10,7 +10,7 @@ =20 #include "hw/sysbus.h" #include "qom/object.h" -#include "hw/or-irq.h" +#include "hw/core/or-irq.h" =20 #define TYPE_ASPEED_INTC "aspeed.intc" #define TYPE_ASPEED_2700_INTC TYPE_ASPEED_INTC "-ast2700" diff --git a/include/hw/m68k/q800.h b/include/hw/m68k/q800.h index c92da2e2ac7..77551b9592e 100644 --- a/include/hw/m68k/q800.h +++ b/include/hw/m68k/q800.h @@ -31,7 +31,7 @@ #include "hw/misc/mac_via.h" #include "hw/net/dp8393x.h" #include "hw/char/escc.h" -#include "hw/or-irq.h" +#include "hw/core/or-irq.h" #include "hw/scsi/esp.h" #include "hw/block/swim.h" #include "hw/nubus/mac-nubus-bridge.h" diff --git a/hw/arm/mps2-tz.c b/hw/arm/mps2-tz.c index a0d917f9a9e..c262a9c6795 100644 --- a/hw/arm/mps2-tz.c +++ b/hw/arm/mps2-tz.c @@ -53,7 +53,7 @@ #include "hw/arm/boot.h" #include "hw/arm/armv7m.h" #include "hw/arm/machines-qom.h" -#include "hw/or-irq.h" +#include "hw/core/or-irq.h" #include "hw/core/boards.h" #include "system/address-spaces.h" #include "system/system.h" diff --git a/hw/arm/mps2.c b/hw/arm/mps2.c index bf5e07019ff..af3b0124891 100644 --- a/hw/arm/mps2.c +++ b/hw/arm/mps2.c @@ -32,7 +32,7 @@ #include "hw/arm/boot.h" #include "hw/arm/armv7m.h" #include "hw/arm/machines-qom.h" -#include "hw/or-irq.h" +#include "hw/core/or-irq.h" #include "hw/core/boards.h" #include "system/address-spaces.h" #include "system/system.h" diff --git a/hw/arm/mps3r.c b/hw/arm/mps3r.c index b63002f4835..c64e103f599 100644 --- a/hw/arm/mps3r.c +++ b/hw/arm/mps3r.c @@ -32,7 +32,7 @@ #include "cpu.h" #include "system/system.h" #include "hw/core/boards.h" -#include "hw/or-irq.h" +#include "hw/core/or-irq.h" #include "hw/qdev-clock.h" #include "hw/qdev-properties.h" #include "hw/arm/boot.h" diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c index 9852e8f7648..100a9f59b3f 100644 --- a/hw/arm/musicpal.c +++ b/hw/arm/musicpal.c @@ -28,7 +28,7 @@ #include "hw/i2c/i2c.h" #include "hw/i2c/bitbang_i2c.h" #include "hw/core/irq.h" -#include "hw/or-irq.h" +#include "hw/core/or-irq.h" #include "hw/audio/wm8750.h" #include "system/block-backend.h" #include "system/runstate.h" diff --git a/hw/arm/stm32l4x5_soc.c b/hw/arm/stm32l4x5_soc.c index 64da5559c07..c28ce15e6bb 100644 --- a/hw/arm/stm32l4x5_soc.c +++ b/hw/arm/stm32l4x5_soc.c @@ -26,7 +26,7 @@ #include "qapi/error.h" #include "system/address-spaces.h" #include "system/system.h" -#include "hw/or-irq.h" +#include "hw/core/or-irq.h" #include "hw/arm/stm32l4x5_soc.h" #include "hw/char/stm32l4x5_usart.h" #include "hw/gpio/stm32l4x5_gpio.h" diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 81cb6294cfa..a0b2f18b551 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -40,7 +40,7 @@ #include "hw/rtc/xlnx-zynqmp-rtc.h" #include "hw/misc/xlnx-versal-cfu.h" #include "hw/misc/xlnx-versal-cframe-reg.h" -#include "hw/or-irq.h" +#include "hw/core/or-irq.h" #include "hw/misc/xlnx-versal-crl.h" #include "hw/intc/arm_gicv3_common.h" #include "hw/intc/arm_gicv3_its_common.h" diff --git a/hw/core/or-irq.c b/hw/core/or-irq.c index 61006672ad6..bcc7ad1e444 100644 --- a/hw/core/or-irq.c +++ b/hw/core/or-irq.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/or-irq.h" +#include "hw/core/or-irq.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" #include "qemu/module.h" diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c index 4c03455d6bd..6fe030e8c5d 100644 --- a/hw/m68k/q800.c +++ b/hw/m68k/q800.c @@ -28,7 +28,7 @@ #include "system/system.h" #include "cpu.h" #include "hw/core/boards.h" -#include "hw/or-irq.h" +#include "hw/core/or-irq.h" #include "elf.h" #include "hw/core/loader.h" #include "ui/console.h" diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index 3032e0d6854..a587f16131b 100644 --- a/hw/pci-host/raven.c +++ b/hw/pci-host/raven.c @@ -33,7 +33,7 @@ #include "hw/qdev-properties.h" #include "hw/intc/i8259.h" #include "hw/core/irq.h" -#include "hw/or-irq.h" +#include "hw/core/or-irq.h" #include "qom/object.h" =20 #define TYPE_RAVEN_PCI_DEVICE "raven" diff --git a/hw/ppc/pegasos.c b/hw/ppc/pegasos.c index 11bf406ef77..2de80a5fae9 100644 --- a/hw/ppc/pegasos.c +++ b/hw/ppc/pegasos.c @@ -14,7 +14,7 @@ #include "hw/sysbus.h" #include "hw/pci/pci_host.h" #include "hw/core/irq.h" -#include "hw/or-irq.h" +#include "hw/core/or-irq.h" #include "hw/pci-host/articia.h" #include "hw/pci-host/mv64361.h" #include "hw/isa/vt82c686.h" diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index b6256864582..fa524513036 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -50,7 +50,7 @@ #include "hw/misc/empty_slot.h" #include "hw/misc/unimp.h" #include "hw/core/irq.h" -#include "hw/or-irq.h" +#include "hw/core/or-irq.h" #include "hw/core/loader.h" #include "elf.h" #include "trace.h" --=20 2.52.0 From nobody Wed Jan 7 09:26:48 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=1766827068; cv=none; d=zohomail.com; s=zohoarc; b=eMMS9WyQLfgeEZuNC03eyNtYy0H3JkZstDMgMJ3Ig+Ui29dC25jJGtVD+Xi/7VZRopZS5IUYzuAsA1vaufUmo+zSGh8Ud1TNuGSVeI5D1aA1cfKvel7qqCrFZ1Ftd/q+tqs3JGVaLVbxdkdZn7scUM2eCM7rFh6/aWslm8l/3Dk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827068; 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=IRRc12ujGhS7SLR8p9U60qM+708r0Z/dh85biQeypj4=; b=QmJmSXFIHznrVO/MImvN3LRhWkK/n6fo6KLoNFWNOxIlRRXcVDJKui0gqlkqpvvK1WLWtkMZzXlbNgRpkpIsaimh/AZwUL1j2f088kvSkHsuEPouXLFOTAoQFaCV7cjJYVD9EWIQDnvF1Tu9PRz5NMwqPpCQ1CtGiDn6Rr2OHLU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827068768992.6951281165933; Sat, 27 Dec 2025 01:17:48 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQ0-0002T9-Qb; Sat, 27 Dec 2025 04:17:00 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPz-0002Rj-El for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:59 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPw-0002Lb-K3 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:16:59 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-651-v42QMHwuMNyS5-EaexzVig-1; Sat, 27 Dec 2025 04:16:54 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-47a83800743so43348535e9.0 for ; Sat, 27 Dec 2025 01:16:53 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa0908sm49530377f8f.31.2025.12.27.01.16.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:16:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827016; 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=IRRc12ujGhS7SLR8p9U60qM+708r0Z/dh85biQeypj4=; b=f4/Hyhgmt+dpJXzD8Ypzv1vtUiuJIbaDbxXVqSva1TeFmhWn3JUyEj+Bfaz2XafuWzPBoh 79mkeXxrBTZCwvmpcryVMkPLqz1mpQ7Q9ZYUoM4U1Ihy10jCddi61i42ZQIj43bpBHy8Ca 7QtL7fYN8ZxN/PBWiRdVpc2c7Qx3R5U= X-MC-Unique: v42QMHwuMNyS5-EaexzVig-1 X-Mimecast-MFC-AGG-ID: v42QMHwuMNyS5-EaexzVig_1766827013 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827012; x=1767431812; 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; bh=IRRc12ujGhS7SLR8p9U60qM+708r0Z/dh85biQeypj4=; b=oVTuHUhwUNWcPvJMm4NTtYYrxX/Das93pXThhgG8a+QUEjG2xVaFZvrbRQQkh0wL14 cR9TVf4JipmnpGt2dbjAIL/ZCAN+VSwn+UmfX/toQKkSQTrJ0xkTgSEYmfn9qC2AfVZm tNmhSjYI+JykdMV/6odBvI7gw9+hjqBQW+1F/zPouIHOEXyhpA1p4YZswfKGXLeAMLRy fb+hhioloN98m7Tk8U0KHtbpHIxKAX7H0kbSxa63iGkCITmh5CGb+uQncnfDvtDopJ/m Tq66DXWeG0Y3xNpsZ2nRKD8iUdEfZHkUwuRDcbKj3JXGhLXdnaLzFmM9oDqZcNiEmEbS +jtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827012; x=1767431812; 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; bh=IRRc12ujGhS7SLR8p9U60qM+708r0Z/dh85biQeypj4=; b=vul9h7gbraT0WFJoqDQ+2+r8V3iGQMWsZCV8ThHnoachsP/YhuePDFTPA5oFXiyxm7 A4afImUwqq/W7kokxBEjNqsJGHbdSH9MWULpo4TuKEU+ytyA1NA1c5nUnZb2XGKwXFxv Iuv72nGuGAfjbYwtEqMFa9j/KdJHSQZnXwiuSofsRlmiAGWKDjytzkk0p5s1QgK2HoLa N4Uih5eART4cU3uvQuGEsNjzJlWTb8BJfirVIDjfHTW/19GYbMDyJpbsziUYUXgR0juh UiUPdgyZIcSkzSH3JKTY5UUStMwBLNh3S8w94gFWbBG2Fx9dsELn/QiuEDlQT5utI7pY GEfg== X-Gm-Message-State: AOJu0YybupTAMlB3j3GyKmu/51g4AVd66OBnl8I0Hg3T3eoysM2zudGs 5rrTDkY02YFzL+TnslGHghhVhNNnBpo5bZibmvTaYSBbJyroto4X9ys5k0cWT7y0igEvdAv37YF x3VdFGbNBBKtTE4mRFrF6TjovVUrbwJZK4PIYFV9kP4VVMU2xyDw1JkZBlnO/lwat0HdVK/llnP xgE9ACLZcUwCCpzBXh+iVQrJzRLp9DD0R1CwMFn91m X-Gm-Gg: AY/fxX7Lir0L8CRuTbAcQTieRG1FxiZJAcGUI68g9dUg2EgRy6LdNXgi20zPXkuULdi uoH0aFzA2BvImV3ZkDwlvHBEeYGjlwveA8FHMl45Cv5MfP9WELwk2lE1G+zT6OsjadFkIuDdVye EX6QezEvkksSnC6GwoCOqZF2AdmfwUXQ4vhtr6QHw/DruGk1INB2zbgrPy7Z52B34F+dqg5HkZv RzZtPe6SLkJO+UqsTYz7tgchj5ivtq7pFrvpgkvekB5sFQo2L6+0C1AyH3RYM1NBFaAAlDFKsRv E8Jk6U7LHYVhBCM0GNOyha5v94BAP/YHHKe/De11Yuj56ZTFeTfVfqx9SVQdQ5mUnxOkZ0yUzfw BPrV5o+orqWtm5AR96WDd3vqFCFUJ0WHc28m+aCUw8FEODu6+A2QuFSrLB9zWOkKeQKMQW75TVr hiYbM+6u8V2iZuDA4= X-Received: by 2002:a05:600c:4f08:b0:475:d9de:952e with SMTP id 5b1f17b1804b1-47d18b83218mr273739435e9.1.1766827011919; Sat, 27 Dec 2025 01:16:51 -0800 (PST) X-Google-Smtp-Source: AGHT+IEdZs1cRiybMYAtfEi1ECw1M8v9XOWcvO0CsW0ke+JT4Ni5VdddC1R50GImcMG3AyWJfKXa7w== X-Received: by 2002:a05:600c:4f08:b0:475:d9de:952e with SMTP id 5b1f17b1804b1-47d18b83218mr273739255e9.1.1766827011378; Sat, 27 Dec 2025 01:16:51 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 015/153] include: move hw/platform-bus.h to hw/core/ Date: Sat, 27 Dec 2025 10:14:02 +0100 Message-ID: <20251227091622.20725-16-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827069390158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- hw/ppc/e500.h | 2 +- include/hw/{ =3D> core}/platform-bus.h | 0 hw/arm/virt-acpi-build.c | 2 +- hw/arm/virt.c | 2 +- hw/core/platform-bus.c | 2 +- hw/core/sysbus-fdt.c | 2 +- hw/loongarch/virt-acpi-build.c | 2 +- hw/loongarch/virt.c | 2 +- hw/ppc/e500.c | 2 +- hw/riscv/virt.c | 2 +- 10 files changed, 9 insertions(+), 9 deletions(-) rename include/hw/{ =3D> core}/platform-bus.h (100%) diff --git a/hw/ppc/e500.h b/hw/ppc/e500.h index cda539bda18..11f8ae53177 100644 --- a/hw/ppc/e500.h +++ b/hw/ppc/e500.h @@ -2,7 +2,7 @@ #define PPCE500_H =20 #include "hw/core/boards.h" -#include "hw/platform-bus.h" +#include "hw/core/platform-bus.h" #include "qom/object.h" =20 #define PLATFORM_CLK_FREQ_HZ (400 * 1000 * 1000) diff --git a/include/hw/platform-bus.h b/include/hw/core/platform-bus.h similarity index 100% rename from include/hw/platform-bus.h rename to include/hw/core/platform-bus.h diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index 200e2a1da70..03b43425746 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -54,7 +54,7 @@ #include "hw/arm/virt.h" #include "hw/intc/arm_gicv3_its_common.h" #include "hw/mem/nvdimm.h" -#include "hw/platform-bus.h" +#include "hw/core/platform-bus.h" #include "system/numa.h" #include "system/reset.h" #include "system/tpm.h" diff --git a/hw/arm/virt.c b/hw/arm/virt.c index c005eb914cb..0d2652e6dbc 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -62,7 +62,7 @@ #include "hw/pci-bridge/pci_expander_bridge.h" #include "hw/virtio/virtio-pci.h" #include "hw/core/sysbus-fdt.h" -#include "hw/platform-bus.h" +#include "hw/core/platform-bus.h" #include "hw/qdev-properties.h" #include "hw/arm/fdt.h" #include "hw/intc/arm_gic.h" diff --git a/hw/core/platform-bus.c b/hw/core/platform-bus.c index 6950063de4f..4b6cc5f6498 100644 --- a/hw/core/platform-bus.c +++ b/hw/core/platform-bus.c @@ -20,7 +20,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/platform-bus.h" +#include "hw/core/platform-bus.h" #include "hw/qdev-properties.h" #include "qapi/error.h" #include "qemu/error-report.h" diff --git a/hw/core/sysbus-fdt.c b/hw/core/sysbus-fdt.c index 59f1d17de11..89d0c464454 100644 --- a/hw/core/sysbus-fdt.c +++ b/hw/core/sysbus-fdt.c @@ -32,7 +32,7 @@ #include "system/device_tree.h" #include "system/tpm.h" #include "hw/arm/smmuv3.h" -#include "hw/platform-bus.h" +#include "hw/core/platform-bus.h" #include "hw/display/ramfb.h" #include "hw/uefi/var-service-api.h" #include "hw/arm/fdt.h" diff --git a/hw/loongarch/virt-acpi-build.c b/hw/loongarch/virt-acpi-build.c index 3694c9827f0..8ff9ebdcd9e 100644 --- a/hw/loongarch/virt-acpi-build.c +++ b/hw/loongarch/virt-acpi-build.c @@ -32,7 +32,7 @@ #include "hw/pci-host/gpex.h" #include "system/system.h" #include "system/tpm.h" -#include "hw/platform-bus.h" +#include "hw/core/platform-bus.h" #include "hw/acpi/aml-build.h" #include "hw/acpi/hmat.h" =20 diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c index ea53941aeb9..6efa15da473 100644 --- a/hw/loongarch/virt.c +++ b/hw/loongarch/virt.c @@ -37,7 +37,7 @@ #include "qapi/qapi-visit-common.h" #include "hw/acpi/generic_event_device.h" #include "hw/mem/nvdimm.h" -#include "hw/platform-bus.h" +#include "hw/core/platform-bus.h" #include "hw/display/ramfb.h" #include "hw/uefi/var-service-api.h" #include "hw/mem/pc-dimm.h" diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c index 769f18023d5..7c65757e215 100644 --- a/hw/ppc/e500.c +++ b/hw/ppc/e500.c @@ -46,7 +46,7 @@ #include "qemu/option.h" #include "hw/pci-host/ppce500.h" #include "qemu/error-report.h" -#include "hw/platform-bus.h" +#include "hw/core/platform-bus.h" #include "hw/net/fsl_etsec/etsec.h" #include "hw/i2c/i2c.h" #include "hw/core/irq.h" diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index 0505bffa44a..9cb4f16432e 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -43,7 +43,7 @@ #include "hw/intc/riscv_aplic.h" #include "hw/intc/sifive_plic.h" #include "hw/misc/sifive_test.h" -#include "hw/platform-bus.h" +#include "hw/core/platform-bus.h" #include "chardev/char.h" #include "system/device_tree.h" #include "system/system.h" --=20 2.52.0 From nobody Wed Jan 7 09:26:48 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=1766827474; cv=none; d=zohomail.com; s=zohoarc; b=R4RkVYX1SRngPe2P8SzFAQ6L0Nv2ZInpmNB5nYDk/RVL+vbboIcfDaMwWQKQcm7pxWLYs0yiGGD27cD40XG/MkTl4SKfzomVxeiwpfP+8DOJzlsWo6jzzIDOxiIzV406nadCPKqz4voXGsnrU/9ZF9vIP7ZwQznjWGX0q5MqpIk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827474; 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=qyFzvwWwzZP1cmLWJexrLce9Jt9k/RT/l754HFIGcZ8=; b=GerQrkz6EMqc5+KEiTVPYFEQ37sTuYBJXfMLgDMpxgsld7ft2nG6FCqsj0L94oQ/y6inLVpxNqwLXVl+klq1xhrc/m/kVGgmXGht6d4x0uUnLry5lkWlkzEGFU6CUWSsB5vkg4D0MrLR6/F2CTuJIwvm9MUvTrZ0na1/OT8zzJ0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176682747481255.58675225462605; Sat, 27 Dec 2025 01:24:34 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQ3-0002UT-FY; Sat, 27 Dec 2025 04:17:03 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQ1-0002To-MV for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:01 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQPz-0002Lu-AP for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:01 -0500 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-661-nxeeyZ0bMPKtz2NbJdYyeA-1; Sat, 27 Dec 2025 04:16:56 -0500 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-43101a351c7so6156922f8f.2 for ; Sat, 27 Dec 2025 01:16:56 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea8311fsm50393044f8f.28.2025.12.27.01.16.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:16:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827018; 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=qyFzvwWwzZP1cmLWJexrLce9Jt9k/RT/l754HFIGcZ8=; b=d4qOTyMGlBwM2xVJBVttnY+t2D7lNERV3IF8GQhFBvhDdgwoaKA9TCyhVHcp+AMBxvwdCF /ZFwJPd+dapZjhHSGqJOs3YUX/hF5IhDpLGy+ed5zQoztszfC1Sei9n8Tlb4nW4lF1qHT/ QT4uKYVYj5E889LQnShyno2eeQlnqow= X-MC-Unique: nxeeyZ0bMPKtz2NbJdYyeA-1 X-Mimecast-MFC-AGG-ID: nxeeyZ0bMPKtz2NbJdYyeA_1766827016 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827015; x=1767431815; 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; bh=qyFzvwWwzZP1cmLWJexrLce9Jt9k/RT/l754HFIGcZ8=; b=HqAQAuX6iXBqvVxxBrQMLZVnTfOssRwnxt0fG+SgvJp3rVO4CzkTvc7CFU8rqeXlCU /cZVlopAJIg/VA2MZA6R4b1Z0M7zZw/8y/6e++aYVgdiXQiSJNzGFBnuRm7LEnB9HtdJ pq/9tv2FGstTPmn8KE1cXoOO/42iVfCUP8mpLvn18u/j8+dA1y3sKL6o8uZ1v3cJXbeT w4YMHEllPuzZuLOO35mBRdJYHiPPzKLwGpRgKhln4Jr8B5yNgKJisXBikQ2Bz5DB9pAe ny6wW9BI8o9gfhUU6q0TE5LtWPtuYsi1coA4ZkxfTrmUyIl4PVnHyRa+pDtLmwX5ex1O S+VQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827015; x=1767431815; 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; bh=qyFzvwWwzZP1cmLWJexrLce9Jt9k/RT/l754HFIGcZ8=; b=YF1uoIDnlyDmwmKSL83FGnnGlwUmclPB94sDe/FiB1I2JJMLAyOgK3du7fO4wLt24z nG5KY7u9hgkO/aPlidGVDJ3SnAh5ULj3jbzt8oSj89QPPDJtG4fFeLv4Gs4C8gEIoqGK YudmY5/MjkpbHUUIpZfuntdFcmyUjEQFkSCq2a0nngdbmFZ5LGnHu+2mQTsxXAQq24em KBCIvBG/ki9j5mQS60s2l8GZwSMt0VOQ2PWTCVTQYK6kU8y4/dKx9tJRLNNA6f5/h2S9 bIq0JtpYkhB3sN4FvG/JHC3qYRuHA5D1+LdZedRXp0LqzfLkJDvEctCSh2lI+uQodpBr el6A== X-Gm-Message-State: AOJu0YwU2+h3m1ryrX+tculOlSTdKCHklsBo7WcNOuTkPn44FUZjlTuf mHTUd1kgxakRW6nohhLO9umfhg0D4CWpDQz+uAWveSSjgOCa6oTf9jx8b9rErILtOcWbPvv6NwS 5exD1Xey1AFxBU6c+d91FUvv9hZ5W4JHxQ+2B8SUpmdaNWCzJGllPJh4v4wbof/3oDnoFerDWz9 pZXQxE60MkO3JgI563eeSKU6EW8e/hxr6aNmL6BZk1 X-Gm-Gg: AY/fxX7ZyLPkW2XqAsvfI8pUAUX2NfEceAxIt4onfTW8g9SytqqG4nTt9eYBBuTVM3I KgvGFGBCoDye9zmtPPocjiZa1re5un7JyQrqVaoa8TA39dnPg+R+IIPU+Se3JQsVEbf/TSI7UwB gMTObdY5Mz2fWyDrKSuloDI5MnBLgS7qdmckWuJ9hIpvCgFAbNBlXa1dpTZexBV2SHHWXnhKOd4 1xLZM/yBZrlJ4NXA3IQJWh1MpBgijmbMfOSDf+8aaWFeMxxr8uN+H2a7ilUb++VzONU09g6VNVH MuWxGhChaZhQG3Brf5p4KmRfkq2SdhQ05HZpzz69eoUPTmByupqS52MKk4eTdeeYXKflk/86LWN +XwtsSeR7GKd0Bo1+y5Bm1dLEukK4GEnVj4oOe61gspHcRH9sunDIMKOrA6ZVWmZWgLtIOSRgXb Pna7HCsHKnvX6ByGw= X-Received: by 2002:a05:6000:200f:b0:430:f879:a0ee with SMTP id ffacd0b85a97d-4324e4c1259mr32288262f8f.5.1766827014523; Sat, 27 Dec 2025 01:16:54 -0800 (PST) X-Google-Smtp-Source: AGHT+IFP35zIqqUpm7CC+vVW5D4R27gd39sZVUljQ01LeOYOb2RKnripisqV74f3m6FbcfMQEVQTuQ== X-Received: by 2002:a05:6000:200f:b0:430:f879:a0ee with SMTP id ffacd0b85a97d-4324e4c1259mr32288222f8f.5.1766827013769; Sat, 27 Dec 2025 01:16:53 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 016/153] include: move hw/ptimer.h to hw/core/ Date: Sat, 27 Dec 2025 10:14:03 +0100 Message-ID: <20251227091622.20725-17-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827476798158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- hw/net/fsl_etsec/etsec.h | 2 +- include/hw/{ =3D> core}/ptimer.h | 0 include/hw/display/xlnx_dp.h | 2 +- include/hw/dma/xlnx_csu_dma.h | 2 +- include/hw/net/xlnx-versal-canfd.h | 2 +- include/hw/net/xlnx-zynqmp-can.h | 2 +- include/hw/timer/allwinner-a10-pit.h | 2 +- include/hw/timer/armv7m_systick.h | 2 +- include/hw/timer/cmsdk-apb-dualtimer.h | 2 +- include/hw/timer/cmsdk-apb-timer.h | 2 +- include/hw/timer/digic-timer.h | 2 +- include/hw/timer/imx_epit.h | 2 +- include/hw/timer/imx_gpt.h | 2 +- include/hw/timer/mss-timer.h | 2 +- include/hw/watchdog/allwinner-wdt.h | 2 +- include/hw/watchdog/cmsdk-apb-watchdog.h | 2 +- include/hw/watchdog/wdt_imx2.h | 2 +- hw/arm/musicpal.c | 2 +- hw/core/ptimer.c | 2 +- hw/dma/xilinx_axidma.c | 2 +- hw/dma/xlnx_csu_dma.c | 2 +- hw/m68k/mcf5206.c | 2 +- hw/m68k/mcf5208.c | 2 +- hw/net/fsl_etsec/etsec.c | 2 +- hw/net/lan9118.c | 2 +- hw/rtc/exynos4210_rtc.c | 2 +- hw/sparc/leon3.c | 2 +- hw/ssi/xilinx_spips.c | 2 +- hw/timer/arm_mptimer.c | 2 +- hw/timer/arm_timer.c | 2 +- hw/timer/digic-timer.c | 2 +- hw/timer/exynos4210_mct.c | 2 +- hw/timer/exynos4210_pwm.c | 2 +- hw/timer/grlib_gptimer.c | 2 +- hw/timer/sh_timer.c | 2 +- hw/timer/slavio_timer.c | 2 +- hw/timer/xilinx_timer.c | 2 +- tests/unit/ptimer-test.c | 2 +- 38 files changed, 37 insertions(+), 37 deletions(-) rename include/hw/{ =3D> core}/ptimer.h (100%) diff --git a/hw/net/fsl_etsec/etsec.h b/hw/net/fsl_etsec/etsec.h index bd2de3f99c7..ca8ad5638a3 100644 --- a/hw/net/fsl_etsec/etsec.h +++ b/hw/net/fsl_etsec/etsec.h @@ -27,7 +27,7 @@ =20 #include "hw/sysbus.h" #include "net/net.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "qom/object.h" =20 /* Buffer Descriptors */ diff --git a/include/hw/ptimer.h b/include/hw/core/ptimer.h similarity index 100% rename from include/hw/ptimer.h rename to include/hw/core/ptimer.h diff --git a/include/hw/display/xlnx_dp.h b/include/hw/display/xlnx_dp.h index af859e477da..9ec5a90c342 100644 --- a/include/hw/display/xlnx_dp.h +++ b/include/hw/display/xlnx_dp.h @@ -35,7 +35,7 @@ #include "hw/dma/xlnx_dpdma.h" #include "qemu/audio.h" #include "qom/object.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" =20 #define AUD_CHBUF_MAX_DEPTH (32 * KiB) #define MAX_QEMU_BUFFER_SIZE (4 * KiB) diff --git a/include/hw/dma/xlnx_csu_dma.h b/include/hw/dma/xlnx_csu_dma.h index 922ab80eb61..85b6b64e0e3 100644 --- a/include/hw/dma/xlnx_csu_dma.h +++ b/include/hw/dma/xlnx_csu_dma.h @@ -23,7 +23,7 @@ =20 #include "hw/sysbus.h" #include "hw/register.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "hw/stream.h" =20 #define TYPE_XLNX_CSU_DMA "xlnx.csu_dma" diff --git a/include/hw/net/xlnx-versal-canfd.h b/include/hw/net/xlnx-versa= l-canfd.h index 396f90d6dc1..d2e582918fb 100644 --- a/include/hw/net/xlnx-versal-canfd.h +++ b/include/hw/net/xlnx-versal-canfd.h @@ -29,7 +29,7 @@ #define HW_CANFD_XILINX_H =20 #include "hw/register.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "net/can_emu.h" #include "hw/qdev-clock.h" =20 diff --git a/include/hw/net/xlnx-zynqmp-can.h b/include/hw/net/xlnx-zynqmp-= can.h index fd2aa777603..8262f11d33d 100644 --- a/include/hw/net/xlnx-zynqmp-can.h +++ b/include/hw/net/xlnx-zynqmp-can.h @@ -35,7 +35,7 @@ #include "net/can_emu.h" #include "net/can_host.h" #include "qemu/fifo32.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "hw/qdev-clock.h" =20 #define TYPE_XLNX_ZYNQMP_CAN "xlnx.zynqmp-can" diff --git a/include/hw/timer/allwinner-a10-pit.h b/include/hw/timer/allwin= ner-a10-pit.h index 8435758ad68..623a1fec219 100644 --- a/include/hw/timer/allwinner-a10-pit.h +++ b/include/hw/timer/allwinner-a10-pit.h @@ -1,7 +1,7 @@ #ifndef ALLWINNER_A10_PIT_H #define ALLWINNER_A10_PIT_H =20 -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "hw/sysbus.h" #include "qom/object.h" =20 diff --git a/include/hw/timer/armv7m_systick.h b/include/hw/timer/armv7m_sy= stick.h index ac7de0a43ef..fb73f78a7b8 100644 --- a/include/hw/timer/armv7m_systick.h +++ b/include/hw/timer/armv7m_systick.h @@ -14,7 +14,7 @@ =20 #include "hw/sysbus.h" #include "qom/object.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "hw/core/clock.h" =20 #define TYPE_SYSTICK "armv7m_systick" diff --git a/include/hw/timer/cmsdk-apb-dualtimer.h b/include/hw/timer/cmsd= k-apb-dualtimer.h index f098128a588..103ac228815 100644 --- a/include/hw/timer/cmsdk-apb-dualtimer.h +++ b/include/hw/timer/cmsdk-apb-dualtimer.h @@ -27,7 +27,7 @@ #define CMSDK_APB_DUALTIMER_H =20 #include "hw/sysbus.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "hw/core/clock.h" #include "qom/object.h" =20 diff --git a/include/hw/timer/cmsdk-apb-timer.h b/include/hw/timer/cmsdk-ap= b-timer.h index 74eaf611aeb..f8c8fb8ce55 100644 --- a/include/hw/timer/cmsdk-apb-timer.h +++ b/include/hw/timer/cmsdk-apb-timer.h @@ -13,7 +13,7 @@ #define CMSDK_APB_TIMER_H =20 #include "hw/sysbus.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "hw/core/clock.h" #include "qom/object.h" =20 diff --git a/include/hw/timer/digic-timer.h b/include/hw/timer/digic-timer.h index da82fb46637..f62242eaad3 100644 --- a/include/hw/timer/digic-timer.h +++ b/include/hw/timer/digic-timer.h @@ -19,7 +19,7 @@ #define HW_TIMER_DIGIC_TIMER_H =20 #include "hw/sysbus.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "qom/object.h" =20 #define TYPE_DIGIC_TIMER "digic-timer" diff --git a/include/hw/timer/imx_epit.h b/include/hw/timer/imx_epit.h index 79aff0cec20..2947fad1069 100644 --- a/include/hw/timer/imx_epit.h +++ b/include/hw/timer/imx_epit.h @@ -30,7 +30,7 @@ #define IMX_EPIT_H =20 #include "hw/sysbus.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "hw/misc/imx_ccm.h" #include "qom/object.h" =20 diff --git a/include/hw/timer/imx_gpt.h b/include/hw/timer/imx_gpt.h index 5488f7e4df5..5c12f686e1b 100644 --- a/include/hw/timer/imx_gpt.h +++ b/include/hw/timer/imx_gpt.h @@ -30,7 +30,7 @@ #define IMX_GPT_H =20 #include "hw/sysbus.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "hw/misc/imx_ccm.h" #include "qom/object.h" =20 diff --git a/include/hw/timer/mss-timer.h b/include/hw/timer/mss-timer.h index da38512904e..0cc376f945f 100644 --- a/include/hw/timer/mss-timer.h +++ b/include/hw/timer/mss-timer.h @@ -26,7 +26,7 @@ #define HW_MSS_TIMER_H =20 #include "hw/sysbus.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "qom/object.h" =20 #define TYPE_MSS_TIMER "mss-timer" diff --git a/include/hw/watchdog/allwinner-wdt.h b/include/hw/watchdog/allw= inner-wdt.h index 7fe41e20f2e..6f84dbd1a72 100644 --- a/include/hw/watchdog/allwinner-wdt.h +++ b/include/hw/watchdog/allwinner-wdt.h @@ -24,7 +24,7 @@ #define HW_WATCHDOG_ALLWINNER_WDT_H =20 #include "qom/object.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "hw/sysbus.h" =20 /* diff --git a/include/hw/watchdog/cmsdk-apb-watchdog.h b/include/hw/watchdog= /cmsdk-apb-watchdog.h index 5bbf4979c9f..9bf95ba06d5 100644 --- a/include/hw/watchdog/cmsdk-apb-watchdog.h +++ b/include/hw/watchdog/cmsdk-apb-watchdog.h @@ -32,7 +32,7 @@ #define CMSDK_APB_WATCHDOG_H =20 #include "hw/sysbus.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "hw/core/clock.h" #include "qom/object.h" =20 diff --git a/include/hw/watchdog/wdt_imx2.h b/include/hw/watchdog/wdt_imx2.h index ddc49aaea4f..53a8360e906 100644 --- a/include/hw/watchdog/wdt_imx2.h +++ b/include/hw/watchdog/wdt_imx2.h @@ -15,7 +15,7 @@ #include "qemu/bitops.h" #include "hw/sysbus.h" #include "hw/core/irq.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "qom/object.h" =20 #define TYPE_IMX2_WDT "imx2.wdt" diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c index 100a9f59b3f..a4ddc0d08f9 100644 --- a/hw/arm/musicpal.c +++ b/hw/arm/musicpal.c @@ -21,7 +21,7 @@ #include "hw/core/boards.h" #include "hw/char/serial-mm.h" #include "qemu/timer.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "hw/qdev-properties.h" #include "hw/block/flash.h" #include "ui/console.h" diff --git a/hw/core/ptimer.c b/hw/core/ptimer.c index a7337f02b8d..e42e06fa4de 100644 --- a/hw/core/ptimer.c +++ b/hw/core/ptimer.c @@ -7,7 +7,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "migration/vmstate.h" #include "qemu/host-utils.h" #include "exec/replay-core.h" diff --git a/hw/dma/xilinx_axidma.c b/hw/dma/xilinx_axidma.c index 9b05080ae59..15da3fcbc2c 100644 --- a/hw/dma/xilinx_axidma.c +++ b/hw/dma/xilinx_axidma.c @@ -28,7 +28,7 @@ #include "qemu/timer.h" #include "hw/hw.h" #include "hw/core/irq.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "hw/qdev-properties.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/dma/xlnx_csu_dma.c b/hw/dma/xlnx_csu_dma.c index 0b1185325ba..92f445034e8 100644 --- a/hw/dma/xlnx_csu_dma.c +++ b/hw/dma/xlnx_csu_dma.c @@ -26,7 +26,7 @@ #include "hw/sysbus.h" #include "migration/vmstate.h" #include "system/dma.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "hw/stream.h" #include "hw/register.h" #include "hw/dma/xlnx_csu_dma.h" diff --git a/hw/m68k/mcf5206.c b/hw/m68k/mcf5206.c index 4cf86d510b3..e17da4fd209 100644 --- a/hw/m68k/mcf5206.c +++ b/hw/m68k/mcf5206.c @@ -15,7 +15,7 @@ #include "hw/core/irq.h" #include "hw/m68k/mcf.h" #include "qemu/timer.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "system/system.h" #include "hw/sysbus.h" =20 diff --git a/hw/m68k/mcf5208.c b/hw/m68k/mcf5208.c index b81305ae6e4..3a87e1f282c 100644 --- a/hw/m68k/mcf5208.c +++ b/hw/m68k/mcf5208.c @@ -25,7 +25,7 @@ #include "hw/m68k/mcf.h" #include "hw/m68k/mcf_fec.h" #include "qemu/timer.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "system/system.h" #include "system/qtest.h" #include "net/net.h" diff --git a/hw/net/fsl_etsec/etsec.c b/hw/net/fsl_etsec/etsec.c index 6ae8a1e1a3c..e6a29d9ec6d 100644 --- a/hw/net/fsl_etsec/etsec.c +++ b/hw/net/fsl_etsec/etsec.c @@ -30,7 +30,7 @@ #include "hw/sysbus.h" #include "hw/core/irq.h" #include "hw/net/mii.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "hw/qdev-properties.h" #include "etsec.h" #include "registers.h" diff --git a/hw/net/lan9118.c b/hw/net/lan9118.c index 1c9bb4807d2..191fd8b421b 100644 --- a/hw/net/lan9118.c +++ b/hw/net/lan9118.c @@ -18,7 +18,7 @@ #include "hw/core/irq.h" #include "hw/net/lan9118_phy.h" #include "hw/net/lan9118.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "hw/qdev-properties.h" #include "qapi/error.h" #include "qemu/bswap.h" diff --git a/hw/rtc/exynos4210_rtc.c b/hw/rtc/exynos4210_rtc.c index a7e17031ca8..a15b5274bd3 100644 --- a/hw/rtc/exynos4210_rtc.c +++ b/hw/rtc/exynos4210_rtc.c @@ -32,7 +32,7 @@ #include "migration/vmstate.h" #include "qemu/timer.h" #include "qemu/bcd.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" =20 #include "hw/core/irq.h" =20 diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c index cd1a03a5584..50f1cf91706 100644 --- a/hw/sparc/leon3.c +++ b/hw/sparc/leon3.c @@ -32,7 +32,7 @@ #include "cpu.h" #include "hw/core/irq.h" #include "qemu/timer.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "hw/qdev-properties.h" #include "system/system.h" #include "system/qtest.h" diff --git a/hw/ssi/xilinx_spips.c b/hw/ssi/xilinx_spips.c index b2f66275182..5fa9bf965ff 100644 --- a/hw/ssi/xilinx_spips.c +++ b/hw/ssi/xilinx_spips.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "hw/sysbus.h" #include "hw/core/irq.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "hw/qdev-properties.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/timer/arm_mptimer.c b/hw/timer/arm_mptimer.c index ac6313039a8..adec87cc8d2 100644 --- a/hw/timer/arm_mptimer.c +++ b/hw/timer/arm_mptimer.c @@ -22,7 +22,7 @@ #include "qemu/osdep.h" #include "hw/hw.h" #include "hw/core/irq.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "hw/qdev-properties.h" #include "hw/timer/arm_mptimer.h" #include "migration/vmstate.h" diff --git a/hw/timer/arm_timer.c b/hw/timer/arm_timer.c index e5ef28de6f7..8d8b250698c 100644 --- a/hw/timer/arm_timer.c +++ b/hw/timer/arm_timer.c @@ -12,7 +12,7 @@ #include "migration/vmstate.h" #include "qemu/timer.h" #include "hw/core/irq.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "hw/qdev-properties.h" #include "qemu/module.h" #include "qemu/log.h" diff --git a/hw/timer/digic-timer.c b/hw/timer/digic-timer.c index 355138d3547..12b79914df0 100644 --- a/hw/timer/digic-timer.c +++ b/hw/timer/digic-timer.c @@ -28,7 +28,7 @@ =20 #include "qemu/osdep.h" #include "hw/sysbus.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "qemu/module.h" #include "qemu/log.h" =20 diff --git a/hw/timer/exynos4210_mct.c b/hw/timer/exynos4210_mct.c index 06524efca27..f6527a451b6 100644 --- a/hw/timer/exynos4210_mct.c +++ b/hw/timer/exynos4210_mct.c @@ -58,7 +58,7 @@ #include "migration/vmstate.h" #include "qemu/timer.h" #include "qemu/module.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" =20 #include "hw/arm/exynos4210.h" #include "hw/core/irq.h" diff --git a/hw/timer/exynos4210_pwm.c b/hw/timer/exynos4210_pwm.c index dc76932fdfb..1643fa39418 100644 --- a/hw/timer/exynos4210_pwm.c +++ b/hw/timer/exynos4210_pwm.c @@ -26,7 +26,7 @@ #include "migration/vmstate.h" #include "qemu/timer.h" #include "qemu/module.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" =20 #include "hw/arm/exynos4210.h" #include "hw/core/irq.h" diff --git a/hw/timer/grlib_gptimer.c b/hw/timer/grlib_gptimer.c index 6218c255d2c..82d0d9d7622 100644 --- a/hw/timer/grlib_gptimer.c +++ b/hw/timer/grlib_gptimer.c @@ -29,7 +29,7 @@ #include "hw/sysbus.h" #include "qemu/timer.h" #include "hw/core/irq.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "hw/qdev-properties.h" #include "qemu/module.h" =20 diff --git a/hw/timer/sh_timer.c b/hw/timer/sh_timer.c index adc05715528..41ece9c6136 100644 --- a/hw/timer/sh_timer.c +++ b/hw/timer/sh_timer.c @@ -14,7 +14,7 @@ #include "hw/core/irq.h" #include "hw/sh4/sh.h" #include "hw/timer/tmu012.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "trace.h" =20 #define TIMER_TCR_TPSC (7 << 0) diff --git a/hw/timer/slavio_timer.c b/hw/timer/slavio_timer.c index 5bf94157ca4..f66b3aaa433 100644 --- a/hw/timer/slavio_timer.c +++ b/hw/timer/slavio_timer.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "qemu/timer.h" #include "hw/core/irq.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" #include "migration/vmstate.h" diff --git a/hw/timer/xilinx_timer.c b/hw/timer/xilinx_timer.c index c1b6d2bdf2d..fbc10015916 100644 --- a/hw/timer/xilinx_timer.c +++ b/hw/timer/xilinx_timer.c @@ -29,7 +29,7 @@ #include "qapi/error.h" #include "hw/sysbus.h" #include "hw/core/irq.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "qemu/log.h" diff --git a/tests/unit/ptimer-test.c b/tests/unit/ptimer-test.c index 08240594bbd..6de658812b1 100644 --- a/tests/unit/ptimer-test.c +++ b/tests/unit/ptimer-test.c @@ -12,7 +12,7 @@ #include =20 #include "qemu/main-loop.h" -#include "hw/ptimer.h" +#include "hw/core/ptimer.h" =20 #include "ptimer-test.h" =20 --=20 2.52.0 From nobody Wed Jan 7 09:26:48 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=1766827537; cv=none; d=zohomail.com; s=zohoarc; b=PTd9gNMlv0IUa8WWL4ry2VKX2FFDtBxfAvTvk/gqQi+ibmlvejnC8CuOxuKGPU/FUv+MSyw3HwkOXQbSpgG291uiEVudytiTmTqZFkZTE3AaIDwL7avOZ09xJm4L+o2OXOcvPgO7M7YlGlgYj94lYmJDoApVZ5C8Ehj+AUxwMKw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827537; 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=tdxJKYOKUz5JL+KO3PUJskny+oYGwFFxlHWI6yYx3Bs=; b=G4ZuH2k6PmzIJROWVqfEtYM1MCAItQa9rO8+1RUFdodjka1KuiGU4PAiiBqPNXheol5MKqt89U5Gdq/HmQfqlOh9G33xStg6AV7i+8Vf1Be8Ddg27dWSkH5mwri4F+MeXQwwcexLvnyk2cW3BbrTZK3i89YCmEQAG2NM/vCTbdc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827537199473.11196834198574; Sat, 27 Dec 2025 01:25:37 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQ7-0002WB-F1; Sat, 27 Dec 2025 04:17:07 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQ5-0002Vd-Pg for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:05 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQ2-0002Mg-Mx for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:05 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-674-Te4oH0QaPjCfRtiQZvtr_g-1; Sat, 27 Dec 2025 04:16:58 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-47777158a85so88666715e9.3 for ; Sat, 27 Dec 2025 01:16:58 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d1936d220sm472858465e9.8.2025.12.27.01.16.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:16:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827022; 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=tdxJKYOKUz5JL+KO3PUJskny+oYGwFFxlHWI6yYx3Bs=; b=D7TzPG7DLw4oFkN65L8WGzyhXLcalfbu9Lw1zo9eB0l9hRgKDVx2oqRr6Jlxiva/p36dld PPDzFrnHKB4Te0jO3CsQLWY3Xj12YIOAAuGjVONfM4VRoRVv9eQu2RR23hL72elt0jmwWb 3Oee8iYZYJQx8FTsFmJtGH04IGdxtSY= X-MC-Unique: Te4oH0QaPjCfRtiQZvtr_g-1 X-Mimecast-MFC-AGG-ID: Te4oH0QaPjCfRtiQZvtr_g_1766827017 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827016; x=1767431816; 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; bh=tdxJKYOKUz5JL+KO3PUJskny+oYGwFFxlHWI6yYx3Bs=; b=hviU9MZ3zW/l6bjeIrsuUUqiukQcJA1jP1qrkpHUgFOwm888GXPUnGCZ/comDe4V/5 2gx+PWRJ3ZNuN4sSzbvcLApdFR3CUcTCZs5U6+wXFH39uR4vYxHBX2y3R35ZW19fWk+U Ep+TKsC5ac8h7mYMrSC9yyKYa7GZelDudUlw0Cy3u9gx9d3a/NgmwAcahPs4MWbE73UY 28hFZF/b8oZ51WSd43zsEy45oZHe2kFcjoVpgViA9R+UrYxJerObTdo4BDhZdaRo6hyk n/DnjcQO3LVsjyiOCUx0mUtFt3sTz+/LWjkB0OhcTtMWYNcI5GUIYAWTMRstD5iiqeMJ i9cw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827016; x=1767431816; 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; bh=tdxJKYOKUz5JL+KO3PUJskny+oYGwFFxlHWI6yYx3Bs=; b=ppFZMPoiWpferacx0LIyCU8vk7NJYZBsHRNQOnLhWZB/caH4bYUncr+GzrAg4Gdccx yoHcV3dSkcMw3L1X+nFcc9x7HfVsZDlbHvuhNk7UNbpBeVGYHy65BpmmBDdR5/gQx4/k vR5Pz+SerOWtWNj34U1vYJOUMd4Uokd9R6LCbGvOLfn3Dp7PyubaUn3uLDrfHyFrqHbs uy1NIEcjMUB42TyGD7bdsi41jS0MsSsH0wE5lt9XgYILmR4HZyOIuV5LVdOXp95rUKt1 GDAZ14KXAg67YCk1TRHFiEJGBvaPtKCB+G2ijWumTaaxIZcwr8qFUTvJEpkFlAUYL+AQ u0qw== X-Gm-Message-State: AOJu0YwvRTpbm/II5TLKYybbKUogdwBMueEfpHHuOQrHscXTjlItkBpO XjkB+r7TYrOtEQxIqFQMUQWRU6chR6EEcmf7Z4U61z0O4RGQ/5EhLKut4OBAyAnuvB8D09xZFTD AKaPtNXiY67qULQ/+VAooJCBXZqUWqpLEeuSWpfi8FSrhYI+QEP6r45SGkF9xR3Yc3oDoLA9Rzn brYRDaflyX2+EwheaegDSOoOfr2p4ZHnYObKjyuPQi X-Gm-Gg: AY/fxX50zpNMgiwSOgB73F37Xks/vZ2Bcihtc5saaEtPl4FqPHmbnztyTY6om0FLxii Y7Z4KGsxW70oeNyWK+95y0/X8RCXQVfRBgQzFB92rfeQKJCQciVEt/mRnNIBFqecpmEF/FOlEA6 DA8jIXkDAivjfj/xN2B/MnjNUEY79YgJAatN+mNCmp63EIq+IaYOSFwx/U2alO9ghBw3UzEKV1s H6mFf9VYNL3PwvLYcXuPz4DzqrCvc+MGK5IuU6b9FYBYDRgLgiRYlrE4yTJe/1rhuzdQCKszCDx d6Sr9VObdNbPc8TZ1tzce13X2n+Qn0jEYIHRsE8rdOWMoTC6n15lhtb7O7tEMjzLgHqgfip83y1 JAJgMtT/3vxl8nLDQfhfrYVTMjuOVOXivyQkccrOsG19YoN+/8DlwWGVE0tpA1YVN0T9u/rdFJn Jfa78dFcAzyInWhSE= X-Received: by 2002:a05:600c:1394:b0:47d:3ead:7440 with SMTP id 5b1f17b1804b1-47d3ed097f8mr125711325e9.32.1766827016230; Sat, 27 Dec 2025 01:16:56 -0800 (PST) X-Google-Smtp-Source: AGHT+IFe3VYBUA8adx4bfOOC5CKfwmL5L/+XMt72ihDKStB4ooeW5oMl+6F6z5im4uYmYHw+Xv6m6g== X-Received: by 2002:a05:600c:1394:b0:47d:3ead:7440 with SMTP id 5b1f17b1804b1-47d3ed097f8mr125710865e9.32.1766827015412; Sat, 27 Dec 2025 01:16:55 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 017/153] include: move hw/qdev-clock.h to hw/core/ Date: Sat, 27 Dec 2025 10:14:04 +0100 Message-ID: <20251227091622.20725-18-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827538980158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- MAINTAINERS | 2 +- docs/devel/clocks.rst | 4 ++-- include/hw/{ =3D> core}/qdev-clock.h | 0 include/hw/misc/bcm2835_cprman.h | 2 +- include/hw/net/xlnx-versal-canfd.h | 2 +- include/hw/net/xlnx-zynqmp-can.h | 2 +- rust/hw/core/wrapper.h | 2 +- hw/adc/npcm7xx_adc.c | 2 +- hw/arm/armsse.c | 2 +- hw/arm/armv7m.c | 2 +- hw/arm/aspeed.c | 2 +- hw/arm/aspeed_ast10x0.c | 2 +- hw/arm/aspeed_ast10x0_evb.c | 2 +- hw/arm/aspeed_ast27x0-fc.c | 2 +- hw/arm/aspeed_ast27x0-ssp.c | 2 +- hw/arm/aspeed_ast27x0-tsp.c | 2 +- hw/arm/fby35.c | 2 +- hw/arm/max78000_soc.c | 2 +- hw/arm/max78000fthr.c | 2 +- hw/arm/mps2-tz.c | 2 +- hw/arm/mps2.c | 2 +- hw/arm/mps3r.c | 2 +- hw/arm/msf2-soc.c | 2 +- hw/arm/msf2-som.c | 2 +- hw/arm/musca.c | 2 +- hw/arm/netduino2.c | 2 +- hw/arm/netduinoplus2.c | 2 +- hw/arm/npcm7xx.c | 2 +- hw/arm/npcm8xx.c | 2 +- hw/arm/nrf51_soc.c | 2 +- hw/arm/olimex-stm32-h405.c | 2 +- hw/arm/stellaris.c | 2 +- hw/arm/stm32f100_soc.c | 2 +- hw/arm/stm32f205_soc.c | 2 +- hw/arm/stm32f405_soc.c | 2 +- hw/arm/stm32l4x5_soc.c | 2 +- hw/arm/stm32vldiscovery.c | 2 +- hw/arm/xilinx_zynq.c | 2 +- hw/char/cadence_uart.c | 2 +- hw/char/ibex_uart.c | 2 +- hw/char/pl011.c | 2 +- hw/char/stm32l4x5_usart.c | 2 +- hw/core/qdev-clock.c | 2 +- hw/core/qdev.c | 2 +- hw/gpio/stm32l4x5_gpio.c | 2 +- hw/mips/boston.c | 2 +- hw/mips/cps.c | 2 +- hw/mips/malta.c | 2 +- hw/misc/npcm7xx_mft.c | 2 +- hw/misc/npcm7xx_pwm.c | 2 +- hw/misc/npcm_clk.c | 2 +- hw/misc/stm32l4x5_rcc.c | 2 +- hw/misc/stm32l4x5_syscfg.c | 2 +- hw/misc/zynq_slcr.c | 2 +- hw/net/npcm7xx_emc.c | 2 +- hw/timer/armv7m_systick.c | 2 +- hw/timer/cmsdk-apb-dualtimer.c | 2 +- hw/timer/cmsdk-apb-timer.c | 2 +- hw/timer/npcm7xx_timer.c | 2 +- hw/timer/sse-counter.c | 2 +- hw/timer/sse-timer.c | 2 +- hw/timer/stellaris-gptm.c | 2 +- hw/watchdog/cmsdk-apb-watchdog.c | 2 +- target/mips/cpu.c | 2 +- target/xtensa/cpu.c | 2 +- 65 files changed, 65 insertions(+), 65 deletions(-) rename include/hw/{ =3D> core}/qdev-clock.h (100%) diff --git a/MAINTAINERS b/MAINTAINERS index f44259b305f..41b536c3a2a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3952,7 +3952,7 @@ M: Luc Michel R: Damien Hedde S: Maintained F: include/hw/core/clock.h -F: include/hw/qdev-clock.h +F: include/hw/core/qdev-clock.h F: hw/core/clock.c F: hw/core/clock-vmstate.c F: hw/core/qdev-clock.c diff --git a/docs/devel/clocks.rst b/docs/devel/clocks.rst index 2dbdc668606..16de32147b9 100644 --- a/docs/devel/clocks.rst +++ b/docs/devel/clocks.rst @@ -47,7 +47,7 @@ Here is an example of clocks:: +--------------+ =20 Clocks are defined in the ``include/hw/core/clock.h`` header and device -related functions are defined in the ``include/hw/qdev-clock.h`` +related functions are defined in the ``include/hw/core/qdev-clock.h`` header. =20 The clock state @@ -97,7 +97,7 @@ Note that it is possible to create a static array describ= ing clock inputs and outputs. The function ``qdev_init_clocks()`` must be called with the array= as parameter to initialize the clocks: it has the same behaviour as calling t= he ``qdev_init_clock_in/out()`` for each clock in the array. To ease the array -construction, some macros are defined in ``include/hw/qdev-clock.h``. +construction, some macros are defined in ``include/hw/core/qdev-clock.h``. As an example, the following creates 2 clocks to a device: one input and o= ne output. =20 diff --git a/include/hw/qdev-clock.h b/include/hw/core/qdev-clock.h similarity index 100% rename from include/hw/qdev-clock.h rename to include/hw/core/qdev-clock.h diff --git a/include/hw/misc/bcm2835_cprman.h b/include/hw/misc/bcm2835_cpr= man.h index 0d380367280..7b2c0a54642 100644 --- a/include/hw/misc/bcm2835_cprman.h +++ b/include/hw/misc/bcm2835_cprman.h @@ -10,7 +10,7 @@ #define HW_MISC_BCM2835_CPRMAN_H =20 #include "hw/sysbus.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" =20 #define TYPE_BCM2835_CPRMAN "bcm2835-cprman" =20 diff --git a/include/hw/net/xlnx-versal-canfd.h b/include/hw/net/xlnx-versa= l-canfd.h index d2e582918fb..45cf0001c6b 100644 --- a/include/hw/net/xlnx-versal-canfd.h +++ b/include/hw/net/xlnx-versal-canfd.h @@ -31,7 +31,7 @@ #include "hw/register.h" #include "hw/core/ptimer.h" #include "net/can_emu.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" =20 #define TYPE_XILINX_CANFD "xlnx.versal-canfd" =20 diff --git a/include/hw/net/xlnx-zynqmp-can.h b/include/hw/net/xlnx-zynqmp-= can.h index 8262f11d33d..d272f40ea80 100644 --- a/include/hw/net/xlnx-zynqmp-can.h +++ b/include/hw/net/xlnx-zynqmp-can.h @@ -36,7 +36,7 @@ #include "net/can_host.h" #include "qemu/fifo32.h" #include "hw/core/ptimer.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" =20 #define TYPE_XLNX_ZYNQMP_CAN "xlnx.zynqmp-can" =20 diff --git a/rust/hw/core/wrapper.h b/rust/hw/core/wrapper.h index e5c7e0518a5..44f8583bff9 100644 --- a/rust/hw/core/wrapper.h +++ b/rust/hw/core/wrapper.h @@ -26,7 +26,7 @@ typedef enum memory_order { =20 #include "hw/sysbus.h" #include "hw/core/clock.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/core/irq.h" diff --git a/hw/adc/npcm7xx_adc.c b/hw/adc/npcm7xx_adc.c index ddb219d4562..4494d5558f0 100644 --- a/hw/adc/npcm7xx_adc.c +++ b/hw/adc/npcm7xx_adc.c @@ -16,7 +16,7 @@ =20 #include "qemu/osdep.h" #include "hw/adc/npcm7xx_adc.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/qdev-properties.h" #include "hw/registerfields.h" #include "migration/vmstate.h" diff --git a/hw/arm/armsse.c b/hw/arm/armsse.c index c0d99182bf9..42ceb097ae8 100644 --- a/hw/arm/armsse.c +++ b/hw/arm/armsse.c @@ -23,7 +23,7 @@ #include "hw/arm/armsse-version.h" #include "hw/arm/boot.h" #include "hw/core/irq.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" =20 /* * The SSE-300 puts some devices in different places to the diff --git a/hw/arm/armv7m.c b/hw/arm/armv7m.c index 8198a83d15c..d9c7bcbcd71 100644 --- a/hw/arm/armv7m.c +++ b/hw/arm/armv7m.c @@ -14,7 +14,7 @@ #include "hw/arm/boot.h" #include "hw/core/loader.h" #include "hw/qdev-properties.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "elf.h" #include "system/reset.h" #include "qemu/error-report.h" diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c index 3a5071a3841..6199d2d2d7c 100644 --- a/hw/arm/aspeed.c +++ b/hw/arm/aspeed.c @@ -21,7 +21,7 @@ #include "system/block-backend.h" #include "qemu/error-report.h" #include "qemu/units.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "system/system.h" =20 static struct arm_boot_info aspeed_board_binfo =3D { diff --git a/hw/arm/aspeed_ast10x0.c b/hw/arm/aspeed_ast10x0.c index ca487774aee..f923b9505b7 100644 --- a/hw/arm/aspeed_ast10x0.c +++ b/hw/arm/aspeed_ast10x0.c @@ -13,7 +13,7 @@ #include "qapi/error.h" #include "system/address-spaces.h" #include "system/system.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/misc/unimp.h" #include "hw/arm/aspeed_soc.h" =20 diff --git a/hw/arm/aspeed_ast10x0_evb.c b/hw/arm/aspeed_ast10x0_evb.c index 7af2a77865e..329578a542c 100644 --- a/hw/arm/aspeed_ast10x0_evb.c +++ b/hw/arm/aspeed_ast10x0_evb.c @@ -12,7 +12,7 @@ #include "hw/arm/machines-qom.h" #include "hw/arm/aspeed.h" #include "hw/arm/aspeed_soc.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "system/system.h" #include "hw/i2c/smbus_eeprom.h" =20 diff --git a/hw/arm/aspeed_ast27x0-fc.c b/hw/arm/aspeed_ast27x0-fc.c index 1678cce416b..0502a137f3d 100644 --- a/hw/arm/aspeed_ast27x0-fc.c +++ b/hw/arm/aspeed_ast27x0-fc.c @@ -16,7 +16,7 @@ #include "system/system.h" #include "hw/arm/aspeed.h" #include "hw/core/boards.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/arm/aspeed_soc.h" #include "hw/core/loader.h" #include "hw/arm/boot.h" diff --git a/hw/arm/aspeed_ast27x0-ssp.c b/hw/arm/aspeed_ast27x0-ssp.c index d12a9b8459c..04d37056596 100644 --- a/hw/arm/aspeed_ast27x0-ssp.c +++ b/hw/arm/aspeed_ast27x0-ssp.c @@ -11,7 +11,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/misc/unimp.h" #include "hw/arm/aspeed_soc.h" #include "hw/arm/aspeed_coprocessor.h" diff --git a/hw/arm/aspeed_ast27x0-tsp.c b/hw/arm/aspeed_ast27x0-tsp.c index 5b75e142063..f40c70fea54 100644 --- a/hw/arm/aspeed_ast27x0-tsp.c +++ b/hw/arm/aspeed_ast27x0-tsp.c @@ -11,7 +11,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/misc/unimp.h" #include "hw/arm/aspeed_soc.h" #include "hw/arm/aspeed_coprocessor.h" diff --git a/hw/arm/fby35.c b/hw/arm/fby35.c index 3e036cfd2ba..d3bfd2c7d26 100644 --- a/hw/arm/fby35.c +++ b/hw/arm/fby35.c @@ -11,7 +11,7 @@ #include "system/system.h" #include "system/block-backend.h" #include "hw/core/boards.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/arm/aspeed_soc.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" diff --git a/hw/arm/max78000_soc.c b/hw/arm/max78000_soc.c index 7f1856f5ba1..321e63723e3 100644 --- a/hw/arm/max78000_soc.c +++ b/hw/arm/max78000_soc.c @@ -14,7 +14,7 @@ #include "system/address-spaces.h" #include "system/system.h" #include "hw/arm/max78000_soc.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/misc/unimp.h" =20 static const uint32_t max78000_icc_addr[] =3D {0x4002a000, 0x4002a800}; diff --git a/hw/arm/max78000fthr.c b/hw/arm/max78000fthr.c index e4ceb7efcd5..4b6e76e46bb 100644 --- a/hw/arm/max78000fthr.c +++ b/hw/arm/max78000fthr.c @@ -10,7 +10,7 @@ #include "qapi/error.h" #include "hw/core/boards.h" #include "hw/qdev-properties.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "qemu/error-report.h" #include "hw/arm/max78000_soc.h" #include "hw/arm/boot.h" diff --git a/hw/arm/mps2-tz.c b/hw/arm/mps2-tz.c index c262a9c6795..f101c1b7c3b 100644 --- a/hw/arm/mps2-tz.c +++ b/hw/arm/mps2-tz.c @@ -73,7 +73,7 @@ #include "hw/net/lan9118.h" #include "net/net.h" #include "hw/core/split-irq.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "qom/object.h" #include "hw/core/irq.h" =20 diff --git a/hw/arm/mps2.c b/hw/arm/mps2.c index af3b0124891..7d2efc703bd 100644 --- a/hw/arm/mps2.c +++ b/hw/arm/mps2.c @@ -48,7 +48,7 @@ #include "hw/net/lan9118.h" #include "net/net.h" #include "hw/watchdog/cmsdk-apb-watchdog.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "qobject/qlist.h" #include "qom/object.h" =20 diff --git a/hw/arm/mps3r.c b/hw/arm/mps3r.c index c64e103f599..77a0c0b7aff 100644 --- a/hw/arm/mps3r.c +++ b/hw/arm/mps3r.c @@ -33,7 +33,7 @@ #include "system/system.h" #include "hw/core/boards.h" #include "hw/core/or-irq.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/qdev-properties.h" #include "hw/arm/boot.h" #include "hw/arm/bsa.h" diff --git a/hw/arm/msf2-soc.c b/hw/arm/msf2-soc.c index c5e9c7175a4..27d77af9dcd 100644 --- a/hw/arm/msf2-soc.c +++ b/hw/arm/msf2-soc.c @@ -29,7 +29,7 @@ #include "hw/char/serial-mm.h" #include "hw/arm/msf2-soc.h" #include "hw/misc/unimp.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "system/system.h" =20 #define MSF2_TIMER_BASE 0x40004000 diff --git a/hw/arm/msf2-som.c b/hw/arm/msf2-som.c index 78d98c4a407..10382f0d3b2 100644 --- a/hw/arm/msf2-som.c +++ b/hw/arm/msf2-som.c @@ -33,7 +33,7 @@ #include "hw/qdev-properties.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "system/address-spaces.h" #include "hw/arm/msf2-soc.h" =20 diff --git a/hw/arm/musca.c b/hw/arm/musca.c index 7b30d9bd446..75d82eebcac 100644 --- a/hw/arm/musca.c +++ b/hw/arm/musca.c @@ -34,7 +34,7 @@ #include "hw/misc/tz-ppc.h" #include "hw/misc/unimp.h" #include "hw/rtc/pl031.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "qom/object.h" =20 #define MUSCA_NUMIRQ_MAX 96 diff --git a/hw/arm/netduino2.c b/hw/arm/netduino2.c index 1657612fe77..c9281059365 100644 --- a/hw/arm/netduino2.c +++ b/hw/arm/netduino2.c @@ -26,7 +26,7 @@ #include "qapi/error.h" #include "hw/core/boards.h" #include "hw/qdev-properties.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "qemu/error-report.h" #include "hw/arm/stm32f205_soc.h" #include "hw/arm/boot.h" diff --git a/hw/arm/netduinoplus2.c b/hw/arm/netduinoplus2.c index 746a3deef8e..d64d2aefe46 100644 --- a/hw/arm/netduinoplus2.c +++ b/hw/arm/netduinoplus2.c @@ -26,7 +26,7 @@ #include "qapi/error.h" #include "hw/core/boards.h" #include "hw/qdev-properties.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "qemu/error-report.h" #include "hw/arm/stm32f405_soc.h" #include "hw/arm/boot.h" diff --git a/hw/arm/npcm7xx.c b/hw/arm/npcm7xx.c index 6d6f6744869..6905e1d8a7d 100644 --- a/hw/arm/npcm7xx.c +++ b/hw/arm/npcm7xx.c @@ -21,7 +21,7 @@ #include "hw/char/serial-mm.h" #include "hw/core/loader.h" #include "hw/misc/unimp.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/qdev-properties.h" #include "qapi/error.h" #include "exec/tswap.h" diff --git a/hw/arm/npcm8xx.c b/hw/arm/npcm8xx.c index 2bf5e132bb5..71e47dac2e1 100644 --- a/hw/arm/npcm8xx.c +++ b/hw/arm/npcm8xx.c @@ -24,7 +24,7 @@ #include "hw/intc/arm_gic.h" #include "hw/core/loader.h" #include "hw/misc/unimp.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/qdev-properties.h" #include "qapi/error.h" #include "qemu/units.h" diff --git a/hw/arm/nrf51_soc.c b/hw/arm/nrf51_soc.c index d8cc3214ed6..a4ccfa373a6 100644 --- a/hw/arm/nrf51_soc.c +++ b/hw/arm/nrf51_soc.c @@ -12,7 +12,7 @@ #include "qapi/error.h" #include "hw/arm/boot.h" #include "hw/sysbus.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/misc/unimp.h" #include "qemu/log.h" =20 diff --git a/hw/arm/olimex-stm32-h405.c b/hw/arm/olimex-stm32-h405.c index d15545ff07a..1a08d742155 100644 --- a/hw/arm/olimex-stm32-h405.c +++ b/hw/arm/olimex-stm32-h405.c @@ -27,7 +27,7 @@ #include "qapi/error.h" #include "hw/core/boards.h" #include "hw/qdev-properties.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "qemu/error-report.h" #include "hw/arm/stm32f405_soc.h" #include "hw/arm/boot.h" diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c index 34cbcbe32c2..f3e8e15de81 100644 --- a/hw/arm/stellaris.c +++ b/hw/arm/stellaris.c @@ -31,7 +31,7 @@ #include "migration/vmstate.h" #include "hw/misc/unimp.h" #include "hw/timer/stellaris-gptm.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "qom/object.h" #include "qobject/qlist.h" #include "ui/input.h" diff --git a/hw/arm/stm32f100_soc.c b/hw/arm/stm32f100_soc.c index 0702d51cc3e..8d61be72c48 100644 --- a/hw/arm/stm32f100_soc.c +++ b/hw/arm/stm32f100_soc.c @@ -30,7 +30,7 @@ #include "system/address-spaces.h" #include "hw/arm/stm32f100_soc.h" #include "hw/qdev-properties.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/misc/unimp.h" #include "system/system.h" =20 diff --git a/hw/arm/stm32f205_soc.c b/hw/arm/stm32f205_soc.c index e3c7203c6e7..406f614f1d5 100644 --- a/hw/arm/stm32f205_soc.c +++ b/hw/arm/stm32f205_soc.c @@ -29,7 +29,7 @@ #include "system/address-spaces.h" #include "hw/arm/stm32f205_soc.h" #include "hw/qdev-properties.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "system/system.h" =20 /* At the moment only Timer 2 to 5 are modelled */ diff --git a/hw/arm/stm32f405_soc.c b/hw/arm/stm32f405_soc.c index c8684e2b4c5..c2bc460603f 100644 --- a/hw/arm/stm32f405_soc.c +++ b/hw/arm/stm32f405_soc.c @@ -27,7 +27,7 @@ #include "system/address-spaces.h" #include "system/system.h" #include "hw/arm/stm32f405_soc.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/misc/unimp.h" =20 #define RCC_ADDR 0x40023800 diff --git a/hw/arm/stm32l4x5_soc.c b/hw/arm/stm32l4x5_soc.c index c28ce15e6bb..39b8cdf97dc 100644 --- a/hw/arm/stm32l4x5_soc.c +++ b/hw/arm/stm32l4x5_soc.c @@ -30,7 +30,7 @@ #include "hw/arm/stm32l4x5_soc.h" #include "hw/char/stm32l4x5_usart.h" #include "hw/gpio/stm32l4x5_gpio.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/misc/unimp.h" =20 #define FLASH_BASE_ADDRESS 0x08000000 diff --git a/hw/arm/stm32vldiscovery.c b/hw/arm/stm32vldiscovery.c index 4843c5565b6..e7e1b8200e1 100644 --- a/hw/arm/stm32vldiscovery.c +++ b/hw/arm/stm32vldiscovery.c @@ -27,7 +27,7 @@ #include "qapi/error.h" #include "hw/core/boards.h" #include "hw/qdev-properties.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "qemu/error-report.h" #include "hw/arm/stm32f100_soc.h" #include "hw/arm/boot.h" diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c index e127b232d75..0d9c01e4b78 100644 --- a/hw/arm/xilinx_zynq.c +++ b/hw/arm/xilinx_zynq.c @@ -34,7 +34,7 @@ #include "hw/char/cadence_uart.h" #include "hw/net/cadence_gem.h" #include "hw/cpu/a9mpcore.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/misc/unimp.h" #include "system/reset.h" #include "qom/object.h" diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c index 738ba3114b9..58c4c95fded 100644 --- a/hw/char/cadence_uart.c +++ b/hw/char/cadence_uart.c @@ -31,7 +31,7 @@ #include "qemu/module.h" #include "hw/char/cadence_uart.h" #include "hw/core/irq.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/qdev-properties-system.h" #include "trace.h" =20 diff --git a/hw/char/ibex_uart.c b/hw/char/ibex_uart.c index db852511091..23abeacb1b5 100644 --- a/hw/char/ibex_uart.c +++ b/hw/char/ibex_uart.c @@ -28,7 +28,7 @@ #include "qemu/osdep.h" #include "hw/char/ibex_uart.h" #include "hw/core/irq.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/registerfields.h" diff --git a/hw/char/pl011.c b/hw/char/pl011.c index 75fdb8158e4..030d6a2e8b4 100644 --- a/hw/char/pl011.c +++ b/hw/char/pl011.c @@ -23,7 +23,7 @@ #include "hw/char/pl011.h" #include "hw/core/irq.h" #include "hw/sysbus.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/vmstate.h" diff --git a/hw/char/stm32l4x5_usart.c b/hw/char/stm32l4x5_usart.c index ce4a35da8f4..4533cbc93be 100644 --- a/hw/char/stm32l4x5_usart.c +++ b/hw/char/stm32l4x5_usart.c @@ -25,7 +25,7 @@ #include "hw/char/stm32l4x5_usart.h" #include "hw/core/clock.h" #include "hw/core/irq.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/registerfields.h" diff --git a/hw/core/qdev-clock.c b/hw/core/qdev-clock.c index dacafa4e036..b96525951cd 100644 --- a/hw/core/qdev-clock.c +++ b/hw/core/qdev-clock.c @@ -13,7 +13,7 @@ =20 #include "qemu/osdep.h" #include "qemu/error-report.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/qdev-core.h" #include "qapi/error.h" =20 diff --git a/hw/core/qdev.c b/hw/core/qdev.c index f9f56c66aec..fae9ffc7595 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -36,7 +36,7 @@ #include "hw/qdev-properties.h" #include "hw/core/boards.h" #include "hw/sysbus.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "migration/vmstate.h" #include "trace.h" =20 diff --git a/hw/gpio/stm32l4x5_gpio.c b/hw/gpio/stm32l4x5_gpio.c index a5a38da6384..5686bd53c23 100644 --- a/hw/gpio/stm32l4x5_gpio.c +++ b/hw/gpio/stm32l4x5_gpio.c @@ -21,7 +21,7 @@ #include "hw/gpio/stm32l4x5_gpio.h" #include "hw/core/irq.h" #include "hw/core/clock.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/qdev-properties.h" #include "qapi/visitor.h" #include "qapi/error.h" diff --git a/hw/mips/boston.c b/hw/mips/boston.c index b4b4a86a5fa..b63b27d03fa 100644 --- a/hw/mips/boston.c +++ b/hw/mips/boston.c @@ -30,7 +30,7 @@ #include "hw/mips/bootloader.h" #include "hw/mips/cps.h" #include "hw/pci-host/xilinx-pcie.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/qdev-properties.h" #include "qapi/error.h" #include "qemu/error-report.h" diff --git a/hw/mips/cps.c b/hw/mips/cps.c index e47695e2b0a..13f048ef9c9 100644 --- a/hw/mips/cps.c +++ b/hw/mips/cps.c @@ -22,7 +22,7 @@ #include "qemu/module.h" #include "hw/mips/cps.h" #include "hw/mips/mips.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/qdev-properties.h" #include "system/tcg.h" #include "system/reset.h" diff --git a/hw/mips/malta.c b/hw/mips/malta.c index 2b0eb8c478e..e5ed0b56923 100644 --- a/hw/mips/malta.c +++ b/hw/mips/malta.c @@ -58,7 +58,7 @@ #include "system/kvm.h" #include "semihosting/semihost.h" #include "hw/mips/cps.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "target/mips/internal.h" #include "trace.h" #include "cpu.h" diff --git a/hw/misc/npcm7xx_mft.c b/hw/misc/npcm7xx_mft.c index 514d29f2015..0bbae111cf9 100644 --- a/hw/misc/npcm7xx_mft.c +++ b/hw/misc/npcm7xx_mft.c @@ -16,7 +16,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/qdev-properties.h" #include "hw/misc/npcm7xx_mft.h" #include "hw/misc/npcm7xx_pwm.h" diff --git a/hw/misc/npcm7xx_pwm.c b/hw/misc/npcm7xx_pwm.c index 2e72d1c7d4f..39ac0dbe2a5 100644 --- a/hw/misc/npcm7xx_pwm.c +++ b/hw/misc/npcm7xx_pwm.c @@ -16,7 +16,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/qdev-properties.h" #include "hw/misc/npcm7xx_pwm.h" #include "hw/registerfields.h" diff --git a/hw/misc/npcm_clk.c b/hw/misc/npcm_clk.c index e202a8a2998..bc9ee975de7 100644 --- a/hw/misc/npcm_clk.c +++ b/hw/misc/npcm_clk.c @@ -18,7 +18,7 @@ =20 #include "hw/misc/npcm_clk.h" #include "hw/timer/npcm7xx_timer.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "migration/vmstate.h" #include "qemu/error-report.h" #include "qemu/log.h" diff --git a/hw/misc/stm32l4x5_rcc.c b/hw/misc/stm32l4x5_rcc.c index d4af2cd6963..1b012d1cc1e 100644 --- a/hw/misc/stm32l4x5_rcc.c +++ b/hw/misc/stm32l4x5_rcc.c @@ -25,7 +25,7 @@ #include "hw/misc/stm32l4x5_rcc_internals.h" #include "hw/core/clock.h" #include "hw/core/irq.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/registerfields.h" diff --git a/hw/misc/stm32l4x5_syscfg.c b/hw/misc/stm32l4x5_syscfg.c index de488a46780..52495610d1b 100644 --- a/hw/misc/stm32l4x5_syscfg.c +++ b/hw/misc/stm32l4x5_syscfg.c @@ -27,7 +27,7 @@ #include "hw/core/irq.h" #include "migration/vmstate.h" #include "hw/core/clock.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "qapi/error.h" #include "hw/misc/stm32l4x5_syscfg.h" #include "hw/gpio/stm32l4x5_gpio.h" diff --git a/hw/misc/zynq_slcr.c b/hw/misc/zynq_slcr.c index 010387beec4..cc18b21b22b 100644 --- a/hw/misc/zynq_slcr.c +++ b/hw/misc/zynq_slcr.c @@ -22,7 +22,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "hw/registerfields.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "qom/object.h" #include "hw/qdev-properties.h" #include "qapi/error.h" diff --git a/hw/net/npcm7xx_emc.c b/hw/net/npcm7xx_emc.c index 9eb39a6b846..704f4387684 100644 --- a/hw/net/npcm7xx_emc.c +++ b/hw/net/npcm7xx_emc.c @@ -32,7 +32,7 @@ #include /* for crc32 */ =20 #include "hw/core/irq.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/qdev-properties.h" #include "hw/net/npcm7xx_emc.h" #include "net/eth.h" diff --git a/hw/timer/armv7m_systick.c b/hw/timer/armv7m_systick.c index c9e0f4c2e17..baba0817b8f 100644 --- a/hw/timer/armv7m_systick.c +++ b/hw/timer/armv7m_systick.c @@ -14,7 +14,7 @@ #include "migration/vmstate.h" #include "hw/core/irq.h" #include "hw/sysbus.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "qemu/timer.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/timer/cmsdk-apb-dualtimer.c b/hw/timer/cmsdk-apb-dualtimer.c index 57fea11a855..5f4848ef618 100644 --- a/hw/timer/cmsdk-apb-dualtimer.c +++ b/hw/timer/cmsdk-apb-dualtimer.c @@ -25,7 +25,7 @@ #include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/registerfields.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/timer/cmsdk-apb-dualtimer.h" #include "migration/vmstate.h" =20 diff --git a/hw/timer/cmsdk-apb-timer.c b/hw/timer/cmsdk-apb-timer.c index 8b7595731cc..d80bf1f96d0 100644 --- a/hw/timer/cmsdk-apb-timer.c +++ b/hw/timer/cmsdk-apb-timer.c @@ -35,7 +35,7 @@ #include "hw/sysbus.h" #include "hw/core/irq.h" #include "hw/registerfields.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/timer/cmsdk-apb-timer.h" #include "migration/vmstate.h" =20 diff --git a/hw/timer/npcm7xx_timer.c b/hw/timer/npcm7xx_timer.c index e09e4ee03ad..0e62add74d3 100644 --- a/hw/timer/npcm7xx_timer.c +++ b/hw/timer/npcm7xx_timer.c @@ -17,7 +17,7 @@ #include "qemu/osdep.h" =20 #include "hw/core/irq.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/qdev-properties.h" #include "hw/timer/npcm7xx_timer.h" #include "migration/vmstate.h" diff --git a/hw/timer/sse-counter.c b/hw/timer/sse-counter.c index bb364e815be..de9d354483b 100644 --- a/hw/timer/sse-counter.c +++ b/hw/timer/sse-counter.c @@ -35,7 +35,7 @@ #include "hw/sysbus.h" #include "hw/registerfields.h" #include "hw/core/clock.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "migration/vmstate.h" =20 /* Registers in the control frame */ diff --git a/hw/timer/sse-timer.c b/hw/timer/sse-timer.c index fc48179d25d..1de882f3eb3 100644 --- a/hw/timer/sse-timer.c +++ b/hw/timer/sse-timer.c @@ -44,7 +44,7 @@ #include "hw/core/irq.h" #include "hw/registerfields.h" #include "hw/core/clock.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" =20 diff --git a/hw/timer/stellaris-gptm.c b/hw/timer/stellaris-gptm.c index d97b2f8309c..37cd760318e 100644 --- a/hw/timer/stellaris-gptm.c +++ b/hw/timer/stellaris-gptm.c @@ -12,7 +12,7 @@ #include "qemu/timer.h" #include "qapi/error.h" #include "migration/vmstate.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/timer/stellaris-gptm.h" =20 static void gptm_update_irq(gptm_state *s) diff --git a/hw/watchdog/cmsdk-apb-watchdog.c b/hw/watchdog/cmsdk-apb-watch= dog.c index e1a2a33d73e..f1dd7d66eee 100644 --- a/hw/watchdog/cmsdk-apb-watchdog.c +++ b/hw/watchdog/cmsdk-apb-watchdog.c @@ -30,7 +30,7 @@ #include "hw/core/irq.h" #include "hw/qdev-properties.h" #include "hw/registerfields.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "hw/watchdog/cmsdk-apb-watchdog.h" #include "migration/vmstate.h" =20 diff --git a/target/mips/cpu.c b/target/mips/cpu.c index 5989c3ba177..894799c02c7 100644 --- a/target/mips/cpu.c +++ b/target/mips/cpu.c @@ -30,7 +30,7 @@ #include "system/kvm.h" #include "system/qtest.h" #include "hw/qdev-properties.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "fpu_helper.h" #ifndef CONFIG_USER_ONLY #include "semihosting/semihost.h" diff --git a/target/xtensa/cpu.c b/target/xtensa/cpu.c index 1eeed44e336..ecc5e093a40 100644 --- a/target/xtensa/cpu.c +++ b/target/xtensa/cpu.c @@ -34,7 +34,7 @@ #include "fpu/softfloat.h" #include "qemu/module.h" #include "migration/vmstate.h" -#include "hw/qdev-clock.h" +#include "hw/core/qdev-clock.h" #include "accel/tcg/cpu-ops.h" #ifndef CONFIG_USER_ONLY #include "system/memory.h" --=20 2.52.0 From nobody Wed Jan 7 09:26:48 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=1766827052; cv=none; d=zohomail.com; s=zohoarc; b=fWdMiEv2N1xg+9Dxx2mVsYqIn/w1GGfxsmWAuvPhwg4KAaxiumi7FYogXBKFYK+nu1hxXrvTbmWf2G3I8O0Lkt+noXuT16/Vdc1olOoxthB/s4KPxbJKBV2YUK3sM1uD8DxzDBZaUjwwDRkBxhlirPbgTQra2Ct/k7qjns+5bvE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827052; 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=nkNcZChxCNVhnx07vlndOjgunc70WYrZ7QweEA4Spw4=; b=Y3ZLbeLjSV8lNF7ecUnaxfCMTIJs/RvrpiLPlnuePcvHpMKevwqiFqEbJrhgzwVANTxRR+9p/cc6QlQ8+MtMaavqNs3GdJdNfD5tbQleDJwrmBAiy42FK+ZDOuzLXJKngNsvHU1BGNzDI4SeeyWyIFhwuvb71Afz6VSlDUEVZD4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827052424194.28807139063156; Sat, 27 Dec 2025 01:17:32 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQB-0002Wh-Af; Sat, 27 Dec 2025 04:17:11 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQA-0002WZ-5x for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:10 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQ6-0002N1-14 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:09 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-38-jjEon_TdNr2ZBMuHq-bAzA-1; Sat, 27 Dec 2025 04:17:01 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-47a97b785bdso55578525e9.3 for ; Sat, 27 Dec 2025 01:17:01 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d19346dfcsm520566045e9.1.2025.12.27.01.16.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:16:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827025; 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=nkNcZChxCNVhnx07vlndOjgunc70WYrZ7QweEA4Spw4=; b=h2fBaECZ3Gtg8ddSEcUDhzUPqwuO5dLs+C2ydltNnNF9ZCSoLNCXFw1puEJPtzcC/ZXFu6 S7QhK3xNLjN6reFeXYX2CPu3LO8q8frMTfVEN4PDodRQISksF06aUE3v3gKyOEcW+x0CSI CcNbaE0WJ5vlkBham7FZYSJUX83XbKM= X-MC-Unique: jjEon_TdNr2ZBMuHq-bAzA-1 X-Mimecast-MFC-AGG-ID: jjEon_TdNr2ZBMuHq-bAzA_1766827020 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827019; x=1767431819; 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; bh=nkNcZChxCNVhnx07vlndOjgunc70WYrZ7QweEA4Spw4=; b=lW6c5IHiwjFM68yWdRYWFgMEXw4R1FxIiPTJZnySj+I/rrZb7oXhIbReOMoTJlMdES xfbnvaQBOQB5k3x7HfVcTFZAxV0l+352MsEuluf2ZmSlCvlwXXFbS+FB7zP+htLPflIa H79YRj95HpA6V7F+FJiEOrX8tKM2rYrVbfl37NYyYBdND7pazd1B8eGR2dXtVAkffiLA pMs2jCGT8j9wKLjdMdQy3BA2lzyqx/djXSgUQ2Av0tF772u/dh0CNIzPb1cgBJktKfbI 9A/Mn8kBjf2FfGuwNKHPNCR3OqrKva+2e4IMt93u6edlNzczNRFVsdg9WFtK0ipZc/Mp fyTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827019; x=1767431819; 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; bh=nkNcZChxCNVhnx07vlndOjgunc70WYrZ7QweEA4Spw4=; b=R/L6yPZd0Yn1pAJYKTWkdFDCJk/QbnQU/eq7vAbMNu43f0PH3yPpQH8GpUCmJHvIE8 vLsCIGIB7UgaiKxDcK/Gsq03JcXTrKgabBSYErduUdSAiueFpTu43C7uYx/vTJtgOlFm Dtxv8kf3+5xCk8JaQUP11ZdSsAW6RiESPUjpncy0ETW7I36sTJJPValqp+pkF3snCv26 1wr/dQidqr3yGQJsT8h3FoyHyseGx0iOlTHRkWbOV+XNF1DkL5TimesDRM1VATMjtQwa X6/Tguq1GqhTM3vtfH9dz1WCTbJ0wTXnspya1kulH4dCyM8oRzkydHsr34B+iOPZXtvn tj7g== X-Gm-Message-State: AOJu0YwWWH4x7ckLt+aoANsybXd09pfF//VHnVDZ7mduJZFkIDTK4sqp t6YbWicptKoxNh2cmtXe9krrls4qpmup1bXXJJ7jzIkh4mctpfDY61+Jg1V1yDeomrY6BldMBSB fmA1MdU+P5pe90AF2LsDHyTFEDWCgDF3FtaeoeRFpijREmQCm2N3JyX+qh7LIDViYA4xfBxolOI JxGpJClvpC+K3VI4xC2DCFNK4eAuxcfZHi7xWmVgy+ X-Gm-Gg: AY/fxX5okVQaNvfmERLCgy9hgXxjm1vk73cE8bMqSONxshFie31wusxm/cnhuwe1BIZ zxrvKV6ILAiWhybLVuKPRCodhOLeSFYRhDFb+3nlpCWWmmWftepmOifzUZ+t0bbix8o6yMeb5Jj xliA4ITjZSLBgNvSJPQZLoJQ0FLoUENzErQLMeq0dJAMKCFAzRXUyYCDTOm/orv7BG1VURoYCp3 yuHJLivb7eH1cycHo220qxIeETa6yDcrnNF4Wd0kGuh8/3oufrU0+PCWkL1Il2g6sBnGRZuwyAq q0T/F3Y+uzFQn8PCizIMxQYIBuaeyoPpltCxUsY8WHKJ6zZFJLKg3PydEmF+f9/P26YuJ8zi3XP IEBRKwxZ0kcDUyADkx5Ntj6ts7hL143czmxWb8x4liL1XiATrVUXsQH/hTXC8E2SKr5EV8HGSE/ K4COzoUWEK3EVRYdU= X-Received: by 2002:a05:600c:4ecd:b0:477:1bb6:17e5 with SMTP id 5b1f17b1804b1-47d19593e32mr295722545e9.30.1766827018388; Sat, 27 Dec 2025 01:16:58 -0800 (PST) X-Google-Smtp-Source: AGHT+IF1s3C7D0rD3pkZTHfLeCFBuaCKopJ6vxkjnCPmc72FgGbOuNZkSVrBqL2BG4G40Bpuk29X3Q== X-Received: by 2002:a05:600c:4ecd:b0:477:1bb6:17e5 with SMTP id 5b1f17b1804b1-47d19593e32mr295721755e9.30.1766827017009; Sat, 27 Dec 2025 01:16:57 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 018/153] include: move hw/qdev-core.h to hw/core/, rename Date: Sat, 27 Dec 2025 10:14:05 +0100 Message-ID: <20251227091622.20725-19-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827053324158500 Content-Type: text/plain; charset="utf-8" Call it hw/core/qdev.h to avoid the duplication in the name. Signed-off-by: Paolo Bonzini --- docs/devel/qdev-api.rst | 2 +- hw/audio/intel-hda.h | 2 +- hw/core/guest-loader.h | 2 +- hw/s390x/ccw-device.h | 2 +- hw/s390x/ipl.h | 2 +- hw/usb/canokey.h | 2 +- hw/usb/ccid.h | 2 +- hw/usb/u2f.h | 2 +- include/block/aio.h | 2 +- include/hw/acpi/acpi_aml_interface.h | 2 +- include/hw/acpi/acpi_dev_interface.h | 2 +- include/hw/acpi/cpu.h | 2 +- include/hw/acpi/memory_hotplug.h | 2 +- include/hw/acpi/vmclock.h | 2 +- include/hw/acpi/vmgenid.h | 2 +- include/hw/core/cpu.h | 2 +- include/hw/core/generic-loader.h | 2 +- include/hw/{qdev-core.h =3D> core/qdev.h} | 0 include/hw/cpu/cluster.h | 2 +- include/hw/cpu/core.h | 2 +- include/hw/display/dm163.h | 2 +- include/hw/fsi/fsi-master.h | 2 +- include/hw/fsi/fsi.h | 2 +- include/hw/fsi/lbus.h | 2 +- include/hw/hyperv/vmbus.h | 2 +- include/hw/i2c/i2c.h | 2 +- include/hw/i386/sgx-epc.h | 2 +- include/hw/input/adb.h | 2 +- include/hw/ipack/ipack.h | 2 +- include/hw/ipmi/ipmi.h | 2 +- include/hw/isa/isa.h | 2 +- include/hw/mem/memory-device.h | 2 +- include/hw/mem/pc-dimm.h | 2 +- include/hw/misc/auxbus.h | 2 +- include/hw/misc/led.h | 2 +- include/hw/misc/vmcoreinfo.h | 2 +- include/hw/nvram/xlnx-bbram.h | 2 +- include/hw/nvram/xlnx-efuse.h | 2 +- include/hw/ppc/pnv_adu.h | 2 +- include/hw/ppc/pnv_lpc.h | 2 +- include/hw/ppc/pnv_occ.h | 2 +- include/hw/ppc/pnv_psi.h | 2 +- include/hw/ppc/pnv_sbe.h | 2 +- include/hw/ppc/spapr_cpu_core.h | 2 +- include/hw/ppc/spapr_drc.h | 2 +- include/hw/ppc/spapr_tpm_proxy.h | 2 +- include/hw/ppc/xics.h | 2 +- include/hw/qdev-properties.h | 2 +- include/hw/register.h | 2 +- include/hw/s390x/ap-device.h | 2 +- include/hw/s390x/event-facility.h | 2 +- include/hw/s390x/storage-attributes.h | 2 +- include/hw/s390x/storage-keys.h | 2 +- include/hw/s390x/tod.h | 2 +- include/hw/scsi/scsi.h | 2 +- include/hw/sd/sd.h | 2 +- include/hw/ssi/ssi.h | 2 +- include/hw/sysbus.h | 2 +- include/hw/usb/usb.h | 2 +- include/hw/virtio/virtio-bus.h | 2 +- include/hw/virtio/virtio.h | 2 +- include/hw/watchdog/wdt_diag288.h | 2 +- include/hw/xen/xen-bus.h | 2 +- include/monitor/qdev.h | 2 +- migration/migration.h | 2 +- backends/hostmem.c | 2 +- block/block-backend.c | 2 +- hw/acpi/erst.c | 2 +- hw/acpi/memory_hotplug.c | 2 +- hw/arm/allwinner-h3.c | 2 +- hw/arm/allwinner-r40.c | 2 +- hw/arm/npcm7xx_boards.c | 2 +- hw/arm/npcm8xx_boards.c | 2 +- hw/arm/realview.c | 2 +- hw/arm/smmuv3.c | 2 +- hw/audio/model.c | 2 +- hw/block/vhost-user-blk.c | 2 +- hw/char/sh_serial.c | 2 +- hw/core/cpu-system.c | 2 +- hw/core/cpu-user.c | 2 +- hw/core/gpio.c | 2 +- hw/core/qdev-clock.c | 2 +- hw/core/qdev-fw.c | 2 +- hw/core/qdev-hotplug.c | 2 +- hw/core/qdev-user.c | 2 +- hw/core/vm-change-state-handler.c | 2 +- hw/display/artist.c | 2 +- hw/fsi/aspeed_apb2opb.c | 2 +- hw/hyperv/hv-balloon.c | 2 +- hw/i2c/i2c_mux_pca954x.c | 2 +- hw/ppc/pnv_homer.c | 2 +- hw/remote/machine.c | 2 +- hw/remote/remote-obj.c | 2 +- hw/remote/vfio-user-obj.c | 2 +- hw/scsi/vhost-user-scsi.c | 2 +- hw/sd/core.c | 2 +- hw/tpm/tpm_ppi.c | 2 +- hw/vfio/iommufd.c | 2 +- hw/virtio/vdpa-dev.c | 2 +- hw/xen/xen_pvdev.c | 2 +- monitor/hmp.c | 2 +- qom/object.c | 2 +- qom/qom-hmp-cmds.c | 2 +- qom/qom-qmp-cmds.c | 2 +- stubs/hotplug-stubs.c | 2 +- stubs/sysbus.c | 2 +- system/bootdevice.c | 2 +- system/physmem.c | 2 +- system/qtest.c | 2 +- tests/qtest/fuzz/generic_fuzz.c | 2 +- ui/console.c | 2 +- ui/vdagent.c | 2 +- ui/vnc.c | 2 +- 113 files changed, 112 insertions(+), 112 deletions(-) rename include/hw/{qdev-core.h =3D> core/qdev.h} (100%) diff --git a/docs/devel/qdev-api.rst b/docs/devel/qdev-api.rst index 3f35eea025a..27b534ba127 100644 --- a/docs/devel/qdev-api.rst +++ b/docs/devel/qdev-api.rst @@ -4,4 +4,4 @@ QEMU Device (qdev) API Reference =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D =20 -.. kernel-doc:: include/hw/qdev-core.h +.. kernel-doc:: include/hw/core/qdev.h diff --git a/hw/audio/intel-hda.h b/hw/audio/intel-hda.h index 8d710eee5d6..174cf694f49 100644 --- a/hw/audio/intel-hda.h +++ b/hw/audio/intel-hda.h @@ -1,7 +1,7 @@ #ifndef HW_INTEL_HDA_H #define HW_INTEL_HDA_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qom/object.h" =20 /* --------------------------------------------------------------------- */ diff --git a/hw/core/guest-loader.h b/hw/core/guest-loader.h index 07f4b4884b8..214ccf1ba5d 100644 --- a/hw/core/guest-loader.h +++ b/hw/core/guest-loader.h @@ -14,7 +14,7 @@ #ifndef GUEST_LOADER_H #define GUEST_LOADER_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qom/object.h" =20 struct GuestLoaderState { diff --git a/hw/s390x/ccw-device.h b/hw/s390x/ccw-device.h index 4439feb1403..15f64cfb636 100644 --- a/hw/s390x/ccw-device.h +++ b/hw/s390x/ccw-device.h @@ -12,7 +12,7 @@ #ifndef HW_S390X_CCW_DEVICE_H #define HW_S390X_CCW_DEVICE_H #include "qom/object.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/s390x/css.h" #include "hw/s390x/css-bridge.h" =20 diff --git a/hw/s390x/ipl.h b/hw/s390x/ipl.h index 505cded490c..086e57681c2 100644 --- a/hw/s390x/ipl.h +++ b/hw/s390x/ipl.h @@ -17,7 +17,7 @@ #include "exec/target_page.h" #include "system/address-spaces.h" #include "system/memory.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/s390x/ipl/qipl.h" #include "qom/object.h" #include "target/s390x/kvm/pv.h" diff --git a/hw/usb/canokey.h b/hw/usb/canokey.h index 1b60d734850..3d489a36ce7 100644 --- a/hw/usb/canokey.h +++ b/hw/usb/canokey.h @@ -10,7 +10,7 @@ #ifndef CANOKEY_H #define CANOKEY_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" =20 #define TYPE_CANOKEY "canokey" #define CANOKEY(obj) \ diff --git a/hw/usb/ccid.h b/hw/usb/ccid.h index 6b82a55bd4c..4959f7ea0c1 100644 --- a/hw/usb/ccid.h +++ b/hw/usb/ccid.h @@ -10,7 +10,7 @@ #ifndef CCID_H #define CCID_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qom/object.h" =20 typedef struct CCIDCardInfo CCIDCardInfo; diff --git a/hw/usb/u2f.h b/hw/usb/u2f.h index 8bff13141af..85ff7d0ffab 100644 --- a/hw/usb/u2f.h +++ b/hw/usb/u2f.h @@ -26,7 +26,7 @@ #ifndef U2F_H #define U2F_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" =20 #define U2FHID_PACKET_SIZE 64 #define U2FHID_PENDING_IN_NUM 32 diff --git a/include/block/aio.h b/include/block/aio.h index 6049e6a0f4c..cc3d5f25a24 100644 --- a/include/block/aio.h +++ b/include/block/aio.h @@ -24,7 +24,7 @@ #include "qemu/thread.h" #include "qemu/timer.h" #include "block/graph-lock.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" =20 =20 typedef struct BlockAIOCB BlockAIOCB; diff --git a/include/hw/acpi/acpi_aml_interface.h b/include/hw/acpi/acpi_am= l_interface.h index 11748a88664..4be1b4acda6 100644 --- a/include/hw/acpi/acpi_aml_interface.h +++ b/include/hw/acpi/acpi_aml_interface.h @@ -3,7 +3,7 @@ =20 #include "qom/object.h" #include "hw/acpi/aml-build.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" =20 #define TYPE_ACPI_DEV_AML_IF "acpi-dev-aml-interface" typedef struct AcpiDevAmlIfClass AcpiDevAmlIfClass; diff --git a/include/hw/acpi/acpi_dev_interface.h b/include/hw/acpi/acpi_de= v_interface.h index 8294f8f0ccc..5927e40eaff 100644 --- a/include/hw/acpi/acpi_dev_interface.h +++ b/include/hw/acpi/acpi_dev_interface.h @@ -3,7 +3,7 @@ =20 #include "qapi/qapi-types-acpi.h" #include "qom/object.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" =20 /* These values are part of guest ABI, and can not be changed */ typedef enum { diff --git a/include/hw/acpi/cpu.h b/include/hw/acpi/cpu.h index a64d19445cc..557219d2c63 100644 --- a/include/hw/acpi/cpu.h +++ b/include/hw/acpi/cpu.h @@ -13,7 +13,7 @@ #define ACPI_CPU_H =20 #include "qapi/qapi-types-acpi.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/acpi/acpi.h" #include "hw/acpi/aml-build.h" #include "hw/core/boards.h" diff --git a/include/hw/acpi/memory_hotplug.h b/include/hw/acpi/memory_hotp= lug.h index 38841d7b065..eb7f460afec 100644 --- a/include/hw/acpi/memory_hotplug.h +++ b/include/hw/acpi/memory_hotplug.h @@ -2,7 +2,7 @@ #define QEMU_HW_ACPI_MEMORY_HOTPLUG_H =20 #include "qapi/qapi-types-acpi.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/acpi/acpi.h" #include "hw/acpi/aml-build.h" =20 diff --git a/include/hw/acpi/vmclock.h b/include/hw/acpi/vmclock.h index 5605605812c..d88176d1951 100644 --- a/include/hw/acpi/vmclock.h +++ b/include/hw/acpi/vmclock.h @@ -2,7 +2,7 @@ #define ACPI_VMCLOCK_H =20 #include "hw/acpi/bios-linker-loader.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qemu/uuid.h" #include "qom/object.h" =20 diff --git a/include/hw/acpi/vmgenid.h b/include/hw/acpi/vmgenid.h index fb135d5bcbe..10985412726 100644 --- a/include/hw/acpi/vmgenid.h +++ b/include/hw/acpi/vmgenid.h @@ -2,7 +2,7 @@ #define ACPI_VMGENID_H =20 #include "hw/acpi/bios-linker-loader.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qemu/uuid.h" #include "qom/object.h" =20 diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h index 9615051774d..f6f17df9e64 100644 --- a/include/hw/core/cpu.h +++ b/include/hw/core/cpu.h @@ -20,7 +20,7 @@ #ifndef QEMU_CPU_H #define QEMU_CPU_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "disas/dis-asm.h" #include "exec/breakpoint.h" #include "exec/hwaddr.h" diff --git a/include/hw/core/generic-loader.h b/include/hw/core/generic-loa= der.h index 19d87b39c8b..ed6d3ba9309 100644 --- a/include/hw/core/generic-loader.h +++ b/include/hw/core/generic-loader.h @@ -19,7 +19,7 @@ #define GENERIC_LOADER_H =20 #include "elf.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qom/object.h" =20 struct GenericLoaderState { diff --git a/include/hw/qdev-core.h b/include/hw/core/qdev.h similarity index 100% rename from include/hw/qdev-core.h rename to include/hw/core/qdev.h diff --git a/include/hw/cpu/cluster.h b/include/hw/cpu/cluster.h index 53fbf36af54..b79de065ad1 100644 --- a/include/hw/cpu/cluster.h +++ b/include/hw/cpu/cluster.h @@ -20,7 +20,7 @@ #ifndef HW_CPU_CLUSTER_H #define HW_CPU_CLUSTER_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qom/object.h" =20 /* diff --git a/include/hw/cpu/core.h b/include/hw/cpu/core.h index 98ab91647eb..22c53ff288a 100644 --- a/include/hw/cpu/core.h +++ b/include/hw/cpu/core.h @@ -9,7 +9,7 @@ #ifndef HW_CPU_CORE_H #define HW_CPU_CORE_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qom/object.h" =20 #define TYPE_CPU_CORE "cpu-core" diff --git a/include/hw/display/dm163.h b/include/hw/display/dm163.h index 4377f77bb75..e1d2e05abc0 100644 --- a/include/hw/display/dm163.h +++ b/include/hw/display/dm163.h @@ -13,7 +13,7 @@ #define HW_DISPLAY_DM163_H =20 #include "qom/object.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" =20 #define TYPE_DM163 "dm163" OBJECT_DECLARE_SIMPLE_TYPE(DM163State, DM163); diff --git a/include/hw/fsi/fsi-master.h b/include/hw/fsi/fsi-master.h index b634ecd3938..60ddaa994f7 100644 --- a/include/hw/fsi/fsi-master.h +++ b/include/hw/fsi/fsi-master.h @@ -8,7 +8,7 @@ #define FSI_FSI_MASTER_H =20 #include "system/memory.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/fsi/fsi.h" #include "hw/fsi/cfam.h" =20 diff --git a/include/hw/fsi/fsi.h b/include/hw/fsi/fsi.h index f34765ed80b..26d7e89c228 100644 --- a/include/hw/fsi/fsi.h +++ b/include/hw/fsi/fsi.h @@ -8,7 +8,7 @@ #define FSI_FSI_H =20 #include "system/memory.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/fsi/lbus.h" #include "qemu/bitops.h" =20 diff --git a/include/hw/fsi/lbus.h b/include/hw/fsi/lbus.h index 12519073cd3..1b894509fe4 100644 --- a/include/hw/fsi/lbus.h +++ b/include/hw/fsi/lbus.h @@ -7,7 +7,7 @@ #ifndef FSI_LBUS_H #define FSI_LBUS_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qemu/units.h" #include "system/memory.h" =20 diff --git a/include/hw/hyperv/vmbus.h b/include/hw/hyperv/vmbus.h index 06b948bbb08..e0ef2f2c02e 100644 --- a/include/hw/hyperv/vmbus.h +++ b/include/hw/hyperv/vmbus.h @@ -12,7 +12,7 @@ =20 #include "system/system.h" #include "system/dma.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "migration/vmstate.h" #include "hw/hyperv/vmbus-proto.h" #include "qemu/uuid.h" diff --git a/include/hw/i2c/i2c.h b/include/hw/i2c/i2c.h index 2a3abacd1ba..dd5930f4b5e 100644 --- a/include/hw/i2c/i2c.h +++ b/include/hw/i2c/i2c.h @@ -1,7 +1,7 @@ #ifndef QEMU_I2C_H #define QEMU_I2C_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qom/object.h" =20 /* The QEMU I2C implementation only supports simple transfers that complete diff --git a/include/hw/i386/sgx-epc.h b/include/hw/i386/sgx-epc.h index 41d55da4799..ba976611628 100644 --- a/include/hw/i386/sgx-epc.h +++ b/include/hw/i386/sgx-epc.h @@ -12,7 +12,7 @@ #ifndef QEMU_SGX_EPC_H #define QEMU_SGX_EPC_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/i386/hostmem-epc.h" =20 #define TYPE_SGX_EPC "sgx-epc" diff --git a/include/hw/input/adb.h b/include/hw/input/adb.h index 20fced15f70..10791958302 100644 --- a/include/hw/input/adb.h +++ b/include/hw/input/adb.h @@ -26,7 +26,7 @@ #ifndef ADB_H #define ADB_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qom/object.h" =20 #define MAX_ADB_DEVICES 16 diff --git a/include/hw/ipack/ipack.h b/include/hw/ipack/ipack.h index d86ef84233c..fdd6c069c5a 100644 --- a/include/hw/ipack/ipack.h +++ b/include/hw/ipack/ipack.h @@ -11,7 +11,7 @@ #ifndef QEMU_IPACK_H #define QEMU_IPACK_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/core/irq.h" #include "qom/object.h" =20 diff --git a/include/hw/ipmi/ipmi.h b/include/hw/ipmi/ipmi.h index cd581aa1342..dabbb9ec5d8 100644 --- a/include/hw/ipmi/ipmi.h +++ b/include/hw/ipmi/ipmi.h @@ -26,7 +26,7 @@ #define HW_IPMI_H =20 #include "system/memory.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qom/object.h" =20 #define MAX_IPMI_MSG_SIZE 300 diff --git a/include/hw/isa/isa.h b/include/hw/isa/isa.h index a82c5f1004f..94bff33fcc7 100644 --- a/include/hw/isa/isa.h +++ b/include/hw/isa/isa.h @@ -5,7 +5,7 @@ =20 #include "system/memory.h" #include "system/ioport.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qom/object.h" =20 #define ISA_NUM_IRQS 16 diff --git a/include/hw/mem/memory-device.h b/include/hw/mem/memory-device.h index c0a58087ccc..10adcd3b8c0 100644 --- a/include/hw/mem/memory-device.h +++ b/include/hw/mem/memory-device.h @@ -13,7 +13,7 @@ #ifndef MEMORY_DEVICE_H #define MEMORY_DEVICE_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qapi/qapi-types-machine.h" #include "qom/object.h" =20 diff --git a/include/hw/mem/pc-dimm.h b/include/hw/mem/pc-dimm.h index e0dbdd43dca..f2df951bafd 100644 --- a/include/hw/mem/pc-dimm.h +++ b/include/hw/mem/pc-dimm.h @@ -17,7 +17,7 @@ #define QEMU_PC_DIMM_H =20 #include "system/memory.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qom/object.h" =20 #define TYPE_PC_DIMM "pc-dimm" diff --git a/include/hw/misc/auxbus.h b/include/hw/misc/auxbus.h index 0051e039471..5bfdd05e152 100644 --- a/include/hw/misc/auxbus.h +++ b/include/hw/misc/auxbus.h @@ -26,7 +26,7 @@ #define HW_MISC_AUXBUS_H =20 #include "system/memory.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qom/object.h" =20 typedef enum AUXCommand AUXCommand; diff --git a/include/hw/misc/led.h b/include/hw/misc/led.h index 29c08795708..4d077a7c43e 100644 --- a/include/hw/misc/led.h +++ b/include/hw/misc/led.h @@ -9,7 +9,7 @@ #define HW_MISC_LED_H =20 #include "qom/object.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" =20 #define TYPE_LED "led" =20 diff --git a/include/hw/misc/vmcoreinfo.h b/include/hw/misc/vmcoreinfo.h index 1aa44771632..3cafc7d42e1 100644 --- a/include/hw/misc/vmcoreinfo.h +++ b/include/hw/misc/vmcoreinfo.h @@ -12,7 +12,7 @@ #ifndef VMCOREINFO_H #define VMCOREINFO_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "standard-headers/linux/qemu_fw_cfg.h" #include "qom/object.h" =20 diff --git a/include/hw/nvram/xlnx-bbram.h b/include/hw/nvram/xlnx-bbram.h index ad2e4a250f5..63558dbc329 100644 --- a/include/hw/nvram/xlnx-bbram.h +++ b/include/hw/nvram/xlnx-bbram.h @@ -27,7 +27,7 @@ #define XLNX_BBRAM_H =20 #include "system/block-backend.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/core/irq.h" #include "hw/sysbus.h" #include "hw/register.h" diff --git a/include/hw/nvram/xlnx-efuse.h b/include/hw/nvram/xlnx-efuse.h index ef14fb0528a..08a9ce790d7 100644 --- a/include/hw/nvram/xlnx-efuse.h +++ b/include/hw/nvram/xlnx-efuse.h @@ -28,7 +28,7 @@ #define XLNX_EFUSE_H =20 #include "system/block-backend.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" =20 #define TYPE_XLNX_EFUSE "xlnx-efuse" OBJECT_DECLARE_SIMPLE_TYPE(XlnxEFuse, XLNX_EFUSE); diff --git a/include/hw/ppc/pnv_adu.h b/include/hw/ppc/pnv_adu.h index f9dbd8c8b37..d3a935a46d6 100644 --- a/include/hw/ppc/pnv_adu.h +++ b/include/hw/ppc/pnv_adu.h @@ -11,7 +11,7 @@ =20 #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_lpc.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" =20 #define TYPE_PNV_ADU "pnv-adu" =20 diff --git a/include/hw/ppc/pnv_lpc.h b/include/hw/ppc/pnv_lpc.h index 266d56214f8..c219f87b169 100644 --- a/include/hw/ppc/pnv_lpc.h +++ b/include/hw/ppc/pnv_lpc.h @@ -22,7 +22,7 @@ =20 #include "system/memory.h" #include "hw/ppc/pnv.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/isa/isa.h" /* For ISA_NUM_IRQS */ =20 #define TYPE_PNV_LPC "pnv-lpc" diff --git a/include/hw/ppc/pnv_occ.h b/include/hw/ppc/pnv_occ.h index 013ea2e53e3..84bdf5004da 100644 --- a/include/hw/ppc/pnv_occ.h +++ b/include/hw/ppc/pnv_occ.h @@ -21,7 +21,7 @@ #define PPC_PNV_OCC_H =20 #include "system/memory.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" =20 #define TYPE_PNV_OCC "pnv-occ" OBJECT_DECLARE_TYPE(PnvOCC, PnvOCCClass, diff --git a/include/hw/ppc/pnv_psi.h b/include/hw/ppc/pnv_psi.h index cf7f95a6b1f..8a04860aa8b 100644 --- a/include/hw/ppc/pnv_psi.h +++ b/include/hw/ppc/pnv_psi.h @@ -23,7 +23,7 @@ #include "hw/sysbus.h" #include "hw/ppc/xics.h" #include "hw/ppc/xive.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" =20 #define TYPE_PNV_PSI "pnv-psi" OBJECT_DECLARE_TYPE(PnvPsi, PnvPsiClass, diff --git a/include/hw/ppc/pnv_sbe.h b/include/hw/ppc/pnv_sbe.h index 48a8b86a80b..d5d76a4de16 100644 --- a/include/hw/ppc/pnv_sbe.h +++ b/include/hw/ppc/pnv_sbe.h @@ -21,7 +21,7 @@ #define PPC_PNV_SBE_H =20 #include "system/memory.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" =20 #define TYPE_PNV_SBE "pnv-sbe" OBJECT_DECLARE_TYPE(PnvSBE, PnvSBEClass, PNV_SBE) diff --git a/include/hw/ppc/spapr_cpu_core.h b/include/hw/ppc/spapr_cpu_cor= e.h index 68f70834832..273bb332020 100644 --- a/include/hw/ppc/spapr_cpu_core.h +++ b/include/hw/ppc/spapr_cpu_core.h @@ -10,7 +10,7 @@ #define HW_SPAPR_CPU_CORE_H =20 #include "hw/cpu/core.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "target/ppc/cpu-qom.h" #include "target/ppc/cpu.h" #include "qom/object.h" diff --git a/include/hw/ppc/spapr_drc.h b/include/hw/ppc/spapr_drc.h index 9ff42909c93..bb80f95d91e 100644 --- a/include/hw/ppc/spapr_drc.h +++ b/include/hw/ppc/spapr_drc.h @@ -16,7 +16,7 @@ #include #include "qom/object.h" #include "system/runstate.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qapi/error.h" =20 #define TYPE_SPAPR_DR_CONNECTOR "spapr-dr-connector" diff --git a/include/hw/ppc/spapr_tpm_proxy.h b/include/hw/ppc/spapr_tpm_pr= oxy.h index 96d2a9697e5..831d36a02ff 100644 --- a/include/hw/ppc/spapr_tpm_proxy.h +++ b/include/hw/ppc/spapr_tpm_proxy.h @@ -14,7 +14,7 @@ #define HW_SPAPR_TPM_PROXY_H =20 #include "qom/object.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" =20 #define TYPE_SPAPR_TPM_PROXY "spapr-tpm-proxy" OBJECT_DECLARE_SIMPLE_TYPE(SpaprTpmProxy, SPAPR_TPM_PROXY) diff --git a/include/hw/ppc/xics.h b/include/hw/ppc/xics.h index 097fcdf00f9..3f78e371221 100644 --- a/include/hw/ppc/xics.h +++ b/include/hw/ppc/xics.h @@ -29,7 +29,7 @@ #define XICS_H =20 #include "system/memory.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qom/object.h" =20 #define XICS_IPI 0x2 diff --git a/include/hw/qdev-properties.h b/include/hw/qdev-properties.h index 60b81330097..d8745d4c65f 100644 --- a/include/hw/qdev-properties.h +++ b/include/hw/qdev-properties.h @@ -1,7 +1,7 @@ #ifndef QEMU_QDEV_PROPERTIES_H #define QEMU_QDEV_PROPERTIES_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" =20 /** * Property: diff --git a/include/hw/register.h b/include/hw/register.h index 7b0f4c8b7a6..b3d20fee7d3 100644 --- a/include/hw/register.h +++ b/include/hw/register.h @@ -11,7 +11,7 @@ #ifndef REGISTER_H #define REGISTER_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "system/memory.h" #include "hw/registerfields.h" #include "qom/object.h" diff --git a/include/hw/s390x/ap-device.h b/include/hw/s390x/ap-device.h index e502745de5e..f746addb428 100644 --- a/include/hw/s390x/ap-device.h +++ b/include/hw/s390x/ap-device.h @@ -11,7 +11,7 @@ #ifndef HW_S390X_AP_DEVICE_H #define HW_S390X_AP_DEVICE_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qom/object.h" =20 #define TYPE_AP_DEVICE "ap-device" diff --git a/include/hw/s390x/event-facility.h b/include/hw/s390x/event-fac= ility.h index eac7a511003..5c556f2b4d8 100644 --- a/include/hw/s390x/event-facility.h +++ b/include/hw/s390x/event-facility.h @@ -16,7 +16,7 @@ #define HW_S390_SCLP_EVENT_FACILITY_H =20 #include "qemu/thread.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/s390x/sclp.h" #include "qom/object.h" =20 diff --git a/include/hw/s390x/storage-attributes.h b/include/hw/s390x/stora= ge-attributes.h index b5c6d8fa552..66716a97c05 100644 --- a/include/hw/s390x/storage-attributes.h +++ b/include/hw/s390x/storage-attributes.h @@ -12,7 +12,7 @@ #ifndef S390_STORAGE_ATTRIBUTES_H #define S390_STORAGE_ATTRIBUTES_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "monitor/monitor.h" #include "qom/object.h" =20 diff --git a/include/hw/s390x/storage-keys.h b/include/hw/s390x/storage-key= s.h index ac303001f57..2d02936c31c 100644 --- a/include/hw/s390x/storage-keys.h +++ b/include/hw/s390x/storage-keys.h @@ -12,7 +12,7 @@ #ifndef S390_STORAGE_KEYS_H #define S390_STORAGE_KEYS_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "monitor/monitor.h" #include "qom/object.h" =20 diff --git a/include/hw/s390x/tod.h b/include/hw/s390x/tod.h index 0935e850891..bcb20994c87 100644 --- a/include/hw/s390x/tod.h +++ b/include/hw/s390x/tod.h @@ -11,7 +11,7 @@ #ifndef HW_S390_TOD_H #define HW_S390_TOD_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "tcg/s390-tod.h" #include "qom/object.h" =20 diff --git a/include/hw/scsi/scsi.h b/include/hw/scsi/scsi.h index 044bd048b49..83782339d4b 100644 --- a/include/hw/scsi/scsi.h +++ b/include/hw/scsi/scsi.h @@ -3,7 +3,7 @@ =20 #include "block/aio.h" #include "hw/block/block.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "scsi/utils.h" #include "qemu/notify.h" #include "qom/object.h" diff --git a/include/hw/sd/sd.h b/include/hw/sd/sd.h index 91b5c40a5f8..d12f24955a5 100644 --- a/include/hw/sd/sd.h +++ b/include/hw/sd/sd.h @@ -30,7 +30,7 @@ #ifndef HW_SD_H #define HW_SD_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qom/object.h" =20 #define OUT_OF_RANGE (1 << 31) diff --git a/include/hw/ssi/ssi.h b/include/hw/ssi/ssi.h index 2ad8033d8f5..6d6d8ccb3d4 100644 --- a/include/hw/ssi/ssi.h +++ b/include/hw/ssi/ssi.h @@ -13,7 +13,7 @@ #ifndef QEMU_SSI_H #define QEMU_SSI_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qom/object.h" =20 typedef enum SSICSMode SSICSMode; diff --git a/include/hw/sysbus.h b/include/hw/sysbus.h index 69eb62e29c8..c0d18d9e00b 100644 --- a/include/hw/sysbus.h +++ b/include/hw/sysbus.h @@ -3,7 +3,7 @@ =20 /* Devices attached directly to the main system bus. */ =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "system/memory.h" #include "qom/object.h" =20 diff --git a/include/hw/usb/usb.h b/include/hw/usb/usb.h index 26a9f3ecdee..78e2ceedd7f 100644 --- a/include/hw/usb/usb.h +++ b/include/hw/usb/usb.h @@ -26,7 +26,7 @@ */ =20 #include "system/memory.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qemu/iov.h" #include "qemu/queue.h" #include "qom/object.h" diff --git a/include/hw/virtio/virtio-bus.h b/include/hw/virtio/virtio-bus.h index 7ab8c9dab05..1a2d3961565 100644 --- a/include/hw/virtio/virtio-bus.h +++ b/include/hw/virtio/virtio-bus.h @@ -25,7 +25,7 @@ #ifndef VIRTIO_BUS_H #define VIRTIO_BUS_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/virtio/virtio.h" #include "qom/object.h" =20 diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h index d97529c3f1e..91ff2fa21a5 100644 --- a/include/hw/virtio/virtio.h +++ b/include/hw/virtio/virtio.h @@ -15,7 +15,7 @@ #define QEMU_VIRTIO_H =20 #include "system/memory.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/virtio/virtio-features.h" #include "net/net.h" #include "migration/vmstate.h" diff --git a/include/hw/watchdog/wdt_diag288.h b/include/hw/watchdog/wdt_di= ag288.h index f72c1d3318d..c76f7e5d36b 100644 --- a/include/hw/watchdog/wdt_diag288.h +++ b/include/hw/watchdog/wdt_diag288.h @@ -1,7 +1,7 @@ #ifndef WDT_DIAG288_H #define WDT_DIAG288_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qom/object.h" =20 #define TYPE_WDT_DIAG288 "diag288" diff --git a/include/hw/xen/xen-bus.h b/include/hw/xen/xen-bus.h index bdbf1ed6fd0..4416123f1f9 100644 --- a/include/hw/xen/xen-bus.h +++ b/include/hw/xen/xen-bus.h @@ -8,7 +8,7 @@ #ifndef HW_XEN_BUS_H #define HW_XEN_BUS_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/xen/xen_backend_ops.h" #include "qemu/notify.h" #include "qemu/queue.h" diff --git a/include/monitor/qdev.h b/include/monitor/qdev.h index de33637869b..f85f25738d5 100644 --- a/include/monitor/qdev.h +++ b/include/monitor/qdev.h @@ -1,7 +1,7 @@ #ifndef MONITOR_QDEV_H #define MONITOR_QDEV_H =20 -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" =20 /*** monitor commands ***/ =20 diff --git a/migration/migration.h b/migration/migration.h index 213b33fe6e5..fbe02d5bb1a 100644 --- a/migration/migration.h +++ b/migration/migration.h @@ -15,7 +15,7 @@ #define QEMU_MIGRATION_H =20 #include "exec/cpu-common.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qapi/qapi-types-migration.h" #include "qobject/json-writer.h" #include "qemu/thread.h" diff --git a/backends/hostmem.c b/backends/hostmem.c index d5834916648..67827c42b87 100644 --- a/backends/hostmem.c +++ b/backends/hostmem.c @@ -21,7 +21,7 @@ #include "qemu/mmap-alloc.h" #include "qemu/madvise.h" #include "qemu/cutils.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" =20 #ifdef CONFIG_NUMA #include diff --git a/block/block-backend.c b/block/block-backend.c index 98315d44707..99446571201 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -16,7 +16,7 @@ #include "block/blockjob.h" #include "block/coroutines.h" #include "block/throttle-groups.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "system/blockdev.h" #include "system/runstate.h" #include "system/replay.h" diff --git a/hw/acpi/erst.c b/hw/acpi/erst.c index 099cabb7ab7..10bbe37c170 100644 --- a/hw/acpi/erst.c +++ b/hw/acpi/erst.c @@ -11,7 +11,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "system/memory.h" #include "qom/object.h" #include "hw/pci/pci_device.h" diff --git a/hw/acpi/memory_hotplug.c b/hw/acpi/memory_hotplug.c index 2f17d45907d..1ddfdd17b75 100644 --- a/hw/acpi/memory_hotplug.c +++ b/hw/acpi/memory_hotplug.c @@ -2,7 +2,7 @@ #include "hw/acpi/memory_hotplug.h" #include "hw/mem/pc-dimm.h" #include "hw/core/boards.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "migration/vmstate.h" #include "trace.h" #include "qapi/error.h" diff --git a/hw/arm/allwinner-h3.c b/hw/arm/allwinner-h3.c index 6c4c369e991..757c89ef39f 100644 --- a/hw/arm/allwinner-h3.c +++ b/hw/arm/allwinner-h3.c @@ -22,7 +22,7 @@ #include "qemu/error-report.h" #include "qemu/module.h" #include "qemu/units.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/sysbus.h" #include "hw/char/serial-mm.h" #include "hw/misc/unimp.h" diff --git a/hw/arm/allwinner-r40.c b/hw/arm/allwinner-r40.c index f6d4117a068..396e886af47 100644 --- a/hw/arm/allwinner-r40.c +++ b/hw/arm/allwinner-r40.c @@ -23,7 +23,7 @@ #include "qemu/module.h" #include "qemu/units.h" #include "hw/core/boards.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/sysbus.h" #include "hw/char/serial-mm.h" #include "hw/misc/unimp.h" diff --git a/hw/arm/npcm7xx_boards.c b/hw/arm/npcm7xx_boards.c index fda375eb4c3..729306b33c5 100644 --- a/hw/arm/npcm7xx_boards.c +++ b/hw/arm/npcm7xx_boards.c @@ -23,7 +23,7 @@ #include "hw/i2c/smbus_eeprom.h" #include "hw/core/loader.h" #include "hw/nvram/eeprom_at24c.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/qdev-properties.h" #include "qapi/error.h" #include "qemu/datadir.h" diff --git a/hw/arm/npcm8xx_boards.c b/hw/arm/npcm8xx_boards.c index 292f44d807c..7252edf3dcb 100644 --- a/hw/arm/npcm8xx_boards.c +++ b/hw/arm/npcm8xx_boards.c @@ -22,7 +22,7 @@ #include "hw/arm/machines-qom.h" #include "hw/core/cpu.h" #include "hw/core/loader.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/qdev-properties.h" #include "qapi/error.h" #include "qemu/error-report.h" diff --git a/hw/arm/realview.c b/hw/arm/realview.c index 65506768e41..d7f96b9d3e4 100644 --- a/hw/arm/realview.c +++ b/hw/arm/realview.c @@ -18,7 +18,7 @@ #include "hw/net/lan9118.h" #include "hw/net/smc91c111.h" #include "hw/pci/pci.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "net/net.h" #include "system/system.h" #include "hw/core/boards.h" diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index ae4fba15991..e391842dc33 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -22,7 +22,7 @@ #include "hw/sysbus.h" #include "migration/vmstate.h" #include "hw/qdev-properties.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/pci/pci.h" #include "cpu.h" #include "exec/target_page.h" diff --git a/hw/audio/model.c b/hw/audio/model.c index 40929c6e77a..ff4e4b24528 100644 --- a/hw/audio/model.c +++ b/hw/audio/model.c @@ -22,7 +22,7 @@ * THE SOFTWARE. */ #include "qemu/osdep.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "monitor/qdev.h" #include "qemu/error-report.h" #include "qapi/error.h" diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c index c0cc5f69428..b399eab51a1 100644 --- a/hw/block/vhost-user-blk.c +++ b/hw/block/vhost-user-blk.c @@ -20,7 +20,7 @@ #include "qapi/error.h" #include "qemu/error-report.h" #include "qemu/cutils.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/virtio/virtio-blk-common.h" diff --git a/hw/char/sh_serial.c b/hw/char/sh_serial.c index ee430dd3d26..008a2ea2f04 100644 --- a/hw/char/sh_serial.c +++ b/hw/char/sh_serial.c @@ -28,7 +28,7 @@ #include "qemu/osdep.h" #include "hw/sysbus.h" #include "hw/core/irq.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/sh4/sh.h" diff --git a/hw/core/cpu-system.c b/hw/core/cpu-system.c index f601a083d14..5d5a4357399 100644 --- a/hw/core/cpu-system.c +++ b/hw/core/cpu-system.c @@ -24,7 +24,7 @@ #include "exec/cputlb.h" #include "system/memory.h" #include "qemu/target-info.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/qdev-properties.h" #include "hw/core/sysemu-cpu-ops.h" #include "migration/vmstate.h" diff --git a/hw/core/cpu-user.c b/hw/core/cpu-user.c index 7176791851b..270afe5b9f6 100644 --- a/hw/core/cpu-user.c +++ b/hw/core/cpu-user.c @@ -7,7 +7,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/qdev-properties.h" #include "hw/core/cpu.h" #include "migration/vmstate.h" diff --git a/hw/core/gpio.c b/hw/core/gpio.c index 11f26a2f2dd..37cda5ce4d3 100644 --- a/hw/core/gpio.c +++ b/hw/core/gpio.c @@ -18,7 +18,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/core/irq.h" #include "qapi/error.h" =20 diff --git a/hw/core/qdev-clock.c b/hw/core/qdev-clock.c index b96525951cd..6e2967e433e 100644 --- a/hw/core/qdev-clock.c +++ b/hw/core/qdev-clock.c @@ -14,7 +14,7 @@ #include "qemu/osdep.h" #include "qemu/error-report.h" #include "hw/core/qdev-clock.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qapi/error.h" =20 /* diff --git a/hw/core/qdev-fw.c b/hw/core/qdev-fw.c index a587d2ddf90..f1489c02dfc 100644 --- a/hw/core/qdev-fw.c +++ b/hw/core/qdev-fw.c @@ -17,7 +17,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/fw-path-provider.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" =20 const char *qdev_fw_name(DeviceState *dev) { diff --git a/hw/core/qdev-hotplug.c b/hw/core/qdev-hotplug.c index d2c39806c53..1d547e0dbdf 100644 --- a/hw/core/qdev-hotplug.c +++ b/hw/core/qdev-hotplug.c @@ -10,7 +10,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/core/boards.h" #include "qapi/error.h" =20 diff --git a/hw/core/qdev-user.c b/hw/core/qdev-user.c index 3d421d8f4e5..051f8fbd02d 100644 --- a/hw/core/qdev-user.c +++ b/hw/core/qdev-user.c @@ -7,7 +7,7 @@ */ #include "qemu/osdep.h" #include "qom/object.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" =20 void qdev_create_fake_machine(void) { diff --git a/hw/core/vm-change-state-handler.c b/hw/core/vm-change-state-ha= ndler.c index 99c642b5587..2c111350298 100644 --- a/hw/core/vm-change-state-handler.c +++ b/hw/core/vm-change-state-handler.c @@ -16,7 +16,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "system/runstate.h" =20 static int qdev_get_dev_tree_depth(DeviceState *dev) diff --git a/hw/display/artist.c b/hw/display/artist.c index 5efa9e45ffd..e6fed03786e 100644 --- a/hw/display/artist.c +++ b/hw/display/artist.c @@ -16,7 +16,7 @@ #include "qapi/error.h" #include "hw/sysbus.h" #include "hw/core/loader.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/qdev-properties.h" #include "migration/vmstate.h" #include "ui/console.h" diff --git a/hw/fsi/aspeed_apb2opb.c b/hw/fsi/aspeed_apb2opb.c index 172ba16b0c0..b9d72f3ecf6 100644 --- a/hw/fsi/aspeed_apb2opb.c +++ b/hw/fsi/aspeed_apb2opb.c @@ -13,7 +13,7 @@ #include "trace.h" =20 #include "hw/fsi/aspeed_apb2opb.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" =20 #define TO_REG(x) (x >> 2) =20 diff --git a/hw/hyperv/hv-balloon.c b/hw/hyperv/hv-balloon.c index ac024accfcd..deb20d7b6a3 100644 --- a/hw/hyperv/hv-balloon.c +++ b/hw/hyperv/hv-balloon.c @@ -19,7 +19,7 @@ #include "hw/hyperv/vmbus.h" #include "hw/mem/memory-device.h" #include "hw/mem/pc-dimm.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/qdev-properties.h" #include "monitor/qdev.h" #include "qapi/error.h" diff --git a/hw/i2c/i2c_mux_pca954x.c b/hw/i2c/i2c_mux_pca954x.c index a8ef640cd25..fd317f56701 100644 --- a/hw/i2c/i2c_mux_pca954x.c +++ b/hw/i2c/i2c_mux_pca954x.c @@ -19,7 +19,7 @@ #include "hw/i2c/i2c.h" #include "hw/i2c/i2c_mux_pca954x.h" #include "hw/i2c/smbus_slave.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" #include "qemu/log.h" diff --git a/hw/ppc/pnv_homer.c b/hw/ppc/pnv_homer.c index 2208ffe632c..fb394cc6e09 100644 --- a/hw/ppc/pnv_homer.c +++ b/hw/ppc/pnv_homer.c @@ -22,7 +22,7 @@ #include "exec/hwaddr.h" #include "system/memory.h" #include "system/cpus.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/qdev-properties.h" #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_chip.h" diff --git a/hw/remote/machine.c b/hw/remote/machine.c index e4b47838bad..ced782f6a9c 100644 --- a/hw/remote/machine.c +++ b/hw/remote/machine.c @@ -21,7 +21,7 @@ #include "hw/pci/pci_host.h" #include "hw/remote/iohub.h" #include "hw/remote/iommu.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/remote/vfio-user-obj.h" #include "hw/pci/msi.h" =20 diff --git a/hw/remote/remote-obj.c b/hw/remote/remote-obj.c index 3402068ab9e..86192dc8dad 100644 --- a/hw/remote/remote-obj.c +++ b/hw/remote/remote-obj.c @@ -13,7 +13,7 @@ #include "qemu/notify.h" #include "qom/object_interfaces.h" #include "io/channel.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/remote/machine.h" #include "io/channel-util.h" #include "qapi/error.h" diff --git a/hw/remote/vfio-user-obj.c b/hw/remote/vfio-user-obj.c index 13cda2f4813..4eb036a5469 100644 --- a/hw/remote/vfio-user-obj.c +++ b/hw/remote/vfio-user-obj.c @@ -54,7 +54,7 @@ #include "qemu/main-loop.h" #include "system/system.h" #include "libvfio-user.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/pci/pci.h" #include "qemu/timer.h" #include "system/memory.h" diff --git a/hw/scsi/vhost-user-scsi.c b/hw/scsi/vhost-user-scsi.c index 0d7bbb52aba..2c79522b09a 100644 --- a/hw/scsi/vhost-user-scsi.c +++ b/hw/scsi/vhost-user-scsi.c @@ -19,7 +19,7 @@ #include "qapi/error.h" #include "qemu/error-report.h" #include "hw/core/fw-path-provider.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/virtio/vhost.h" diff --git a/hw/sd/core.c b/hw/sd/core.c index d3c9017445e..3568a81e809 100644 --- a/hw/sd/core.c +++ b/hw/sd/core.c @@ -20,7 +20,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/sd/sd.h" #include "qemu/module.h" #include "qapi/error.h" diff --git a/hw/tpm/tpm_ppi.c b/hw/tpm/tpm_ppi.c index 984d3d10808..f0c34291dc9 100644 --- a/hw/tpm/tpm_ppi.c +++ b/hw/tpm/tpm_ppi.c @@ -16,7 +16,7 @@ #include "qapi/error.h" #include "system/memory_mapping.h" #include "migration/vmstate.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/acpi/tpm.h" #include "tpm_ppi.h" #include "trace.h" diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c index bb5775aa711..32e8615ad3b 100644 --- a/hw/vfio/iommufd.c +++ b/hw/vfio/iommufd.c @@ -20,7 +20,7 @@ #include "trace.h" #include "qapi/error.h" #include "system/iommufd.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/vfio/vfio-cpr.h" #include "system/reset.h" #include "qemu/cutils.h" diff --git a/hw/virtio/vdpa-dev.c b/hw/virtio/vdpa-dev.c index 4a7b9709761..57739385a96 100644 --- a/hw/virtio/vdpa-dev.c +++ b/hw/virtio/vdpa-dev.c @@ -19,7 +19,7 @@ #include "qapi/error.h" #include "qemu/error-report.h" #include "qemu/cutils.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/virtio/vhost.h" diff --git a/hw/xen/xen_pvdev.c b/hw/xen/xen_pvdev.c index fe95b62d133..e36370e2ee9 100644 --- a/hw/xen/xen_pvdev.c +++ b/hw/xen/xen_pvdev.c @@ -20,7 +20,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "qemu/main-loop.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/xen/xen-legacy-backend.h" #include "hw/xen/xen-bus-helper.h" #include "hw/xen/xen_pvdev.h" diff --git a/monitor/hmp.c b/monitor/hmp.c index a3ee02e52cd..4caafbc7146 100644 --- a/monitor/hmp.c +++ b/monitor/hmp.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "monitor-internal.h" #include "monitor/hmp.h" #include "qobject/qdict.h" diff --git a/qom/object.c b/qom/object.c index 4f32c1aba7d..ff8ede8a328 100644 --- a/qom/object.c +++ b/qom/object.c @@ -11,7 +11,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qapi/error.h" #include "qom/object.h" #include "qom/object_interfaces.h" diff --git a/qom/qom-hmp-cmds.c b/qom/qom-hmp-cmds.c index a00a564b1e2..32e40630c96 100644 --- a/qom/qom-hmp-cmds.c +++ b/qom/qom-hmp-cmds.c @@ -6,7 +6,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "monitor/hmp.h" #include "monitor/monitor.h" #include "qapi/error.h" diff --git a/qom/qom-qmp-cmds.c b/qom/qom-qmp-cmds.c index 57f1898cf61..48b38d2b7f7 100644 --- a/qom/qom-qmp-cmds.c +++ b/qom/qom-qmp-cmds.c @@ -15,7 +15,7 @@ =20 #include "qemu/osdep.h" #include "block/qdict.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qapi/error.h" #include "qapi/qapi-commands-qdev.h" #include "qapi/qapi-commands-qom.h" diff --git a/stubs/hotplug-stubs.c b/stubs/hotplug-stubs.c index 7aadaa29bd5..23a1678dbbc 100644 --- a/stubs/hotplug-stubs.c +++ b/stubs/hotplug-stubs.c @@ -12,7 +12,7 @@ * See the COPYING file in the top-level directory. */ #include "qemu/osdep.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" =20 HotplugHandler *qdev_get_hotplug_handler(DeviceState *dev) { diff --git a/stubs/sysbus.c b/stubs/sysbus.c index d8da90caae5..68b771226fa 100644 --- a/stubs/sysbus.c +++ b/stubs/sysbus.c @@ -1,5 +1,5 @@ #include "qemu/osdep.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" =20 BusState *sysbus_get_default(void) { diff --git a/system/bootdevice.c b/system/bootdevice.c index 8acdbfb0a57..9538b08983f 100644 --- a/system/bootdevice.c +++ b/system/bootdevice.c @@ -28,7 +28,7 @@ #include "qapi/visitor.h" #include "qemu/error-report.h" #include "system/reset.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/core/boards.h" =20 typedef struct FWBootEntry FWBootEntry; diff --git a/system/physmem.c b/system/physmem.c index edc384f4fa1..ba69be2d082 100644 --- a/system/physmem.c +++ b/system/physmem.c @@ -36,7 +36,7 @@ #include "exec/page-protection.h" #include "exec/target_page.h" #include "exec/translation-block.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/qdev-properties.h" #include "hw/core/boards.h" #include "system/xen.h" diff --git a/system/qtest.c b/system/qtest.c index b0bb9bf9d44..e42b83ce671 100644 --- a/system/qtest.c +++ b/system/qtest.c @@ -19,7 +19,7 @@ #include "system/ioport.h" #include "system/memory.h" #include "exec/tswap.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/core/irq.h" #include "hw/core/cpu.h" #include "qemu/accel.h" diff --git a/tests/qtest/fuzz/generic_fuzz.c b/tests/qtest/fuzz/generic_fuz= z.c index c848eec3b93..e8bb7bb0d56 100644 --- a/tests/qtest/fuzz/generic_fuzz.c +++ b/tests/qtest/fuzz/generic_fuzz.c @@ -22,7 +22,7 @@ #include "string.h" #include "system/memory.h" #include "system/ramblock.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "hw/pci/pci.h" #include "hw/pci/pci_device.h" #include "hw/core/boards.h" diff --git a/ui/console.c b/ui/console.c index 2d00828c538..f445db11389 100644 --- a/ui/console.c +++ b/ui/console.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "ui/console.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "qapi/error.h" #include "qapi/qapi-commands-ui.h" #include "qapi/visitor.h" diff --git a/ui/vdagent.c b/ui/vdagent.c index 660686c9c0b..142a3691ac9 100644 --- a/ui/vdagent.c +++ b/ui/vdagent.c @@ -5,7 +5,7 @@ #include "qemu/error-report.h" #include "qemu/option.h" #include "qemu/units.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "ui/clipboard.h" #include "ui/console.h" #include "ui/input.h" diff --git a/ui/vnc.c b/ui/vnc.c index e6bcf0e1cfd..a61a4f937d6 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -28,7 +28,7 @@ #include "vnc.h" #include "vnc-jobs.h" #include "trace.h" -#include "hw/qdev-core.h" +#include "hw/core/qdev.h" #include "system/system.h" #include "system/runstate.h" #include "qemu/error-report.h" --=20 2.52.0 From nobody Wed Jan 7 09:26:48 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=1766827490; cv=none; d=zohomail.com; s=zohoarc; b=Bxd0F3yzHqxapfkCQpRFWJqcO4cBzfV+bjILWqfS8vIv6INK3WprWflJAfafyp3vggmR/5+m4RGB4uE3mErLBToBwOIzV5YcVMOjlA6jwLtdOJ/rMYQPJasvrJRV/xfrkVt87D9kv+WMOcsAjw051DgMBc+MVKfiR156zzrsD8w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827490; 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=03LjKavoBUjIfBjE/BXbpgOkNcgb3xBq2RtXn1ZaDnM=; b=oLjoKQA4Gjeh6PYxFUWouf5Z6ZHNHvGvcKE1qczfoLUyFg3JM3FFCAOGoP+De9qCH0UhuO21w9qXtN4ulMVpoxFJutiQFuwljiEXTaLoynWs9uqBM40mVD7bRbZs6xgSbZUEGJ/UfV2Koks0gYiuFkSq1xLBmQroiFO8yhqui3A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827490797590.310861996024; Sat, 27 Dec 2025 01:24:50 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQ7-0002W0-43; Sat, 27 Dec 2025 04:17:07 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQ5-0002Vc-NH for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:05 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQ3-0002Mn-68 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:05 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-397-2zYGjfa1PEmPOEHN4yfAjg-1; Sat, 27 Dec 2025 04:17:00 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-4779b3749a8so54865555e9.1 for ; Sat, 27 Dec 2025 01:17:00 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be27c2260sm474493165e9.15.2025.12.27.01.16.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:16:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827022; 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=03LjKavoBUjIfBjE/BXbpgOkNcgb3xBq2RtXn1ZaDnM=; b=BO53h8k9PpL6/JhjPrZ8CjB9Bau8seSBVke5RdnneyGAXPXpI9WSOPiaKrVd37dIEyVRP/ 7bbZyomlQHXQQWICuzwhgxR34e0hBT/+OQ4+Wsh4ZV8XhiNOSIDDFCr3+10aCTd+g32fee 8fGtZjgjCjYdXIB4tfRB56Bxer2frdQ= X-MC-Unique: 2zYGjfa1PEmPOEHN4yfAjg-1 X-Mimecast-MFC-AGG-ID: 2zYGjfa1PEmPOEHN4yfAjg_1766827019 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827019; x=1767431819; 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; bh=03LjKavoBUjIfBjE/BXbpgOkNcgb3xBq2RtXn1ZaDnM=; b=KAvWS53BQzvmnxNhyj20MciK9j3U86QzvJVg4Tr12Ig2H0sZrmWsSebVRk3v2f60oa nJRFMseQgAj93h1Eim/a06vB+hITbHrftYuHv4nCCSlkgRwE9obEFZh8p8WVoNQdo0Gg mSfuCNRyUsdaYpaATqtlsjU0tgtLga87N/UhnIXPkK1jczwvWISR6jpMbOSnOJl90yfX WQyzxl9dd6X04oP+GiwPYanvxKL44tiaPRjiRX7fm34K2sxBqMQZDdQqPh9buhRL79df EofOfzPWsqFbNy7rFle8IRMZyoAz16VJRv1hUSkES+OorqJmOZzRNq4hBAoEW8F1B9p+ 2PUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827019; x=1767431819; 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; bh=03LjKavoBUjIfBjE/BXbpgOkNcgb3xBq2RtXn1ZaDnM=; b=rm14E+6GZyrupiSF8QmnrB/iPS9B4LaxP3klpRJQA+pepsKnFN7ay5VXV4WHBoZ5Se U++/jdnMy0QB8FRbM+9O0K/znSfeRLkmZdoRH7Uqj7pMnoU7nSJgOninwk3H8/LmIKmy tY3JcLHjdjE48GmIj2h2E0KepTSeXlCMEn5qWlSOaaNZBhtyAJ4KvUhTAUlviADii6lc FzC855F1mcoexKaOxi3Y6YIu2qKGuvjWDvEjd60u6jqkXAkl/GfNaPd/hkXD4LpSlj3j xMCke0rJaPtOkXzoKSgYOMIrgMnWjAtNvRsBKhhZAQ+eCRDieeK2ylSRE2C0ApBGmdgB QbEQ== X-Gm-Message-State: AOJu0Yww8WtiDz/IH/a8NUCO1Xbl4Q2o/WGKF2S4Fxv7X8bDhlk7YGg7 Ii0dVM1RpTcsEv95RCWni8jE3xFZGGmEVyimIbZjmulzqxK3Y9vvVLzGmucs81/AkR6GqKcscOB I4sLaTbGhkFmuOfUrgzGGqL9H45qWZE3A0Cbv6ljsV3YJj5TOD2zbUxsVyCVPnuAPTwDbe1+Ggp 8VOJ9LQXWZhnoJAUkY0+5MTIwkMg88n8rwqLzSSGbR X-Gm-Gg: AY/fxX59cRQgIrGP6CTAar/ScwqYXlbCSA4eMMGJK6Gvf+mwq+3f9Ozmch6hjA7fZ27 qk78TpbefCCcDVFjCVBgcrVwiua9340nSa1yp0ZNGuPARVqJEEj9QjnYtbSyMcaG/Em9HDfFt5g OozQfzt11BxDqVBAhNJElWbVcIfXsVdJIiX0pTAAWAjv+C81T29wseDqZYdTcqO5LUkPy7ZtVr0 jQsjOZTJ+AcmWWy6IStftnO57Ev5x+wIiLuS8irCC7HSZjJ4zO6I0PpjuI5j2MH9xg6PYy+iPK5 0GydEraPCu/T3SDIuyqYeI+aI6WZhyhzHQ5GZswxQTJaKm3dtpov+41eJaG2DqNMDZT9KLO8KU9 2HhknfxZydF5oGOfZWqSq7MkgcwG852MiHPcgg75DhGsAbYyCjuwXdf5/BUASTja/1kdB49b5l6 S7OBH/j2XX9I+Br3M= X-Received: by 2002:a05:600c:3508:b0:477:1bb6:17de with SMTP id 5b1f17b1804b1-47d19590bbemr281604955e9.30.1766827018712; Sat, 27 Dec 2025 01:16:58 -0800 (PST) X-Google-Smtp-Source: AGHT+IESVdqQyUcEecQmt6CU17+78/iPVUZiAae4Cl57sMP+5mW5LRgK5vawlpr9SMJHNZtac+uYCA== X-Received: by 2002:a05:600c:3508:b0:477:1bb6:17de with SMTP id 5b1f17b1804b1-47d19590bbemr281604715e9.30.1766827018174; Sat, 27 Dec 2025 01:16:58 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 019/153] include: move hw/qdev-dma.h to hw/core/ Date: Sat, 27 Dec 2025 10:14:06 +0100 Message-ID: <20251227091622.20725-20-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827492622158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- include/hw/{ =3D> core}/qdev-dma.h | 0 hw/usb/hcd-ohci-pci.c | 2 +- hw/usb/hcd-ohci-sysbus.c | 2 +- hw/usb/hcd-ohci.c | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) rename include/hw/{ =3D> core}/qdev-dma.h (100%) diff --git a/include/hw/qdev-dma.h b/include/hw/core/qdev-dma.h similarity index 100% rename from include/hw/qdev-dma.h rename to include/hw/core/qdev-dma.h diff --git a/hw/usb/hcd-ohci-pci.c b/hw/usb/hcd-ohci-pci.c index e180e96b5f1..25c400698ee 100644 --- a/hw/usb/hcd-ohci-pci.c +++ b/hw/usb/hcd-ohci-pci.c @@ -25,7 +25,7 @@ #include "migration/vmstate.h" #include "hw/pci/pci_device.h" #include "hw/sysbus.h" -#include "hw/qdev-dma.h" +#include "hw/core/qdev-dma.h" #include "hw/qdev-properties.h" #include "trace.h" #include "hcd-ohci.h" diff --git a/hw/usb/hcd-ohci-sysbus.c b/hw/usb/hcd-ohci-sysbus.c index 5c3434153db..8224fb88628 100644 --- a/hw/usb/hcd-ohci-sysbus.c +++ b/hw/usb/hcd-ohci-sysbus.c @@ -26,7 +26,7 @@ #include "hw/usb/usb.h" #include "migration/vmstate.h" #include "hw/sysbus.h" -#include "hw/qdev-dma.h" +#include "hw/core/qdev-dma.h" #include "hw/qdev-properties.h" #include "trace.h" #include "hcd-ohci.h" diff --git a/hw/usb/hcd-ohci.c b/hw/usb/hcd-ohci.c index ea3d5d2bd14..588cecef14d 100644 --- a/hw/usb/hcd-ohci.c +++ b/hw/usb/hcd-ohci.c @@ -33,7 +33,7 @@ #include "hw/usb/usb.h" #include "migration/vmstate.h" #include "hw/sysbus.h" -#include "hw/qdev-dma.h" +#include "hw/core/qdev-dma.h" #include "hw/qdev-properties.h" #include "trace.h" #include "hcd-ohci.h" --=20 2.52.0 From nobody Wed Jan 7 09:26:48 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=1766827068; cv=none; d=zohomail.com; s=zohoarc; b=G+QHV9fGJKFcZwsUByZE8VQh6JtJLVT2STe5rEu8HtCBt0x3WZsKJ3bCfjHGLOBZWrNgVJ4Ug9erI9zHsVo+OB+Oic2bnvV5MTrdoaRjPY7hIw6YLHNu+Mo2bKF78Ztdw3pdbBXM/rnmz8geHb+2yklLaSim1Yivf5A1iw2PzY4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827068; 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=EaugastYvQzt1CE3pIMi8pnxghScv2xyQVw89l2vjDk=; b=nXRr70CCNQzue3pLwinlBm4tKRhgHTGYxZ2YZGBpH/oxm2tKZbEyh2i9J+/8PmfeD7cVsR7smEOtMfURaVk3LacKzIAkqtXNciouMTn1xjmaYctTrSWZSALyKHwcUIay8NMRF1bba6PX+CHgBPeye3+eoSdixTjWUbqXRSlnKgc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827068647182.47145744353452; Sat, 27 Dec 2025 01:17:48 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQJ-0002Zd-Oo; Sat, 27 Dec 2025 04:17:19 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQI-0002ZF-At for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:18 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQD-0002Sm-K7 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:18 -0500 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-669-5dDOC27YMmqAFVVQbDySxw-1; Sat, 27 Dec 2025 04:17:07 -0500 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-430fcf10287so5454867f8f.0 for ; Sat, 27 Dec 2025 01:17:07 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa64cesm50607643f8f.35.2025.12.27.01.16.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:16:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827033; 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=EaugastYvQzt1CE3pIMi8pnxghScv2xyQVw89l2vjDk=; b=HhafeiaiAh94H4TaWgsLZ8vauWz3fMAylbmA28cVZ4xJZP0j3nwZwm3tvLoD8d2fr4GxSU iAsE3UkMEl2+FRXX2A3jOO7fK91nQqwZmKr6/z/tnPb1bQt5GPHIb38BLHp7zde8Ree784 Thy2MuQyUIi97tOzvmr+x3zCEP/fFRs= X-MC-Unique: 5dDOC27YMmqAFVVQbDySxw-1 X-Mimecast-MFC-AGG-ID: 5dDOC27YMmqAFVVQbDySxw_1766827026 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827025; x=1767431825; 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; bh=EaugastYvQzt1CE3pIMi8pnxghScv2xyQVw89l2vjDk=; b=hCq+wgF4JzBwJQJnorpqDEMF19w1r9cdg0GWafWv6upL5YmBLvSeBpubo1lMJHHJog +/FbE3sxtHjYyOzVppdlJsWLOLhN27cXIPkCqB00lk8FSA2hvGOAr+iqeB6csoINNW+I SZt+XPk06tkG9DXAN7yCXcnqMwu4U4O/0g+RjBS61EKfD9fC+4x89qfQ8uSG7vjA5DJi Bt7hCQTkwWXXgIfitrvw/c6+cJ15dJakg4pC/9fQe3bKcDjz8CWvi3LEa/00H7ewjSuZ TQDXSfvIiu0idvX1gg+jrqvVVWeOokWDCzwi42Vk1FxoDEXd+Ucowh2CXN7EcBvLKXBo eSjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827025; x=1767431825; 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; bh=EaugastYvQzt1CE3pIMi8pnxghScv2xyQVw89l2vjDk=; b=oIX6zf0aKn9uwH1T+RxLbFUFyQ39302GsZAdE4B24Jgre0MdOGg72OcG09aieEHnFe XMpOamzaJRQ/L8qIMqtgoJsAjlWqF8JAJdOOdKIEP0h4FNWolbUji0BVVMLI+C1Kxkyt ZDOvYZpedW43GjNtsiDXwSWRoMxi0KUCR1vLt6vCxYZWOIOo8VoricCobz2/yKM+6hmZ hVOYGkqcPXocGNOnABzwTrzLuICkcMZLa6FH4vcFUg5G1XL5GFC0d0KlfrdKhQD//5qJ No4w4EEtJXojDu2S5JdynNrKsjhty3Js5cnRIl4UsQ/tjCdlH+MIfJncAdeHp1qDMoj4 pRlg== X-Gm-Message-State: AOJu0YwItfvlgrZwatX2TxK2mCmGKVyj82dKu2AHhLLxZmu55tRGFDPm 5USblnO3CqJ29v39NK1LFrW5U/UbtAy5x7XbmaS5DM6Dl4Scoh4qwsfkWjTRiFNBF/AHfnNXI9i Fojj/Z+6Mk9gVjprohngZ6Unsj7+sVpzWwhcOPkglWBW/08CpBUVhRop3Qc6aCNYNOYHoxLykeh z0H0zbEULst+nBEhKjQDtca0WMm4fdcWOrGPcfm7eO X-Gm-Gg: AY/fxX6t8opZaB+eZXP4c1mR9H7WLJo/UkwQXD/GABZINd40/nxiDOWe/T0A+qR3kAS rfOMS2mKahcn6EfLWz54qEuZFxIWqBpUaaOHzoFNWGQga5n4P1O6fqlyrJ/VBjZ/bIw9NPSW+ya jo9bijkuG4jd2Zd/5SSyWDYTuCPyEcQvCD2hvoqQJ2JDnekU1HfzAwpjSXFQRDZDFujBh6DqfWe aLf/Ib0ARaTcCId0WIW6K190TzJOWtBXLRc1PJzCFm1Jo/slkxOYRfazakxmdNjml9t3VhciBcC PuPqMUv6FJXPuPjkGRUvB0jVDArsHjauV4aZ3nn3O7kVVOmm/0yWjWM2AYOg7UP/zspLOX1xnIo JtT1ogeGQJyIJqi726vLbSc9gZm904qTDOzAVYje1elPmRXDGrRKsDr0+HbcOmeyP9IaA9ef7Wx 8Nc+X8wrWJEAdadkM= X-Received: by 2002:a05:6000:604:b0:430:7d4c:3dbc with SMTP id ffacd0b85a97d-4324e50b175mr32885445f8f.53.1766827023530; Sat, 27 Dec 2025 01:17:03 -0800 (PST) X-Google-Smtp-Source: AGHT+IGB4pzaXer8DfEdc8KMFvnQENcFGmC7QFlk3ShFH3B38Z5OY0ZUYW1OzV3uWAo47sDwgkWAeg== X-Received: by 2002:a05:6000:604:b0:430:7d4c:3dbc with SMTP id ffacd0b85a97d-4324e50b175mr32885361f8f.53.1766827021609; Sat, 27 Dec 2025 01:17:01 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 020/153] include: move hw/qdev-properties.h to hw/core/ Date: Sat, 27 Dec 2025 10:14:07 +0100 Message-ID: <20251227091622.20725-21-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827069688158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- docs/devel/migration/compatibility.rst | 2 +- hw/display/apple-gfx.h | 2 +- hw/riscv/riscv-iommu.h | 2 +- hw/tpm/tpm_prop.h | 2 +- include/hw/char/cadence_uart.h | 2 +- include/hw/char/sifive_uart.h | 2 +- include/hw/{ =3D> core}/qdev-properties.h | 0 include/hw/ide/ide-dev.h | 2 +- include/hw/misc/unimp.h | 2 +- include/hw/net/ne2000-isa.h | 2 +- include/hw/nubus/nubus.h | 2 +- include/hw/qdev-properties-system.h | 2 +- include/hw/timer/i8254.h | 2 +- migration/options.h | 2 +- rust/hw/core/wrapper.h | 2 +- target/riscv/cpu.h | 2 +- backends/spdm-socket.c | 2 +- backends/tpm/tpm_util.c | 2 +- hw/9pfs/virtio-9p-device.c | 2 +- hw/acpi/erst.c | 2 +- hw/acpi/generic_event_device.c | 2 +- hw/acpi/piix4.c | 2 +- hw/acpi/vmclock.c | 2 +- hw/acpi/vmgenid.c | 2 +- hw/adc/aspeed_adc.c | 2 +- hw/adc/npcm7xx_adc.c | 2 +- hw/arm/armv7m.c | 2 +- hw/arm/aspeed_coprocessor_common.c | 2 +- hw/arm/aspeed_soc_common.c | 2 +- hw/arm/b-l475e-iot01a.c | 2 +- hw/arm/bananapi_m2u.c | 2 +- hw/arm/cubieboard.c | 2 +- hw/arm/digic.c | 2 +- hw/arm/exynos4210.c | 2 +- hw/arm/exynos4_boards.c | 2 +- hw/arm/fsl-imx25.c | 2 +- hw/arm/fsl-imx31.c | 2 +- hw/arm/fsl-imx6.c | 2 +- hw/arm/imx25_pdk.c | 2 +- hw/arm/imx8mp-evk.c | 2 +- hw/arm/max78000fthr.c | 2 +- hw/arm/mcimx6ul-evk.c | 2 +- hw/arm/mcimx7d-sabre.c | 2 +- hw/arm/microbit.c | 2 +- hw/arm/mps2.c | 2 +- hw/arm/mps3r.c | 2 +- hw/arm/msf2-som.c | 2 +- hw/arm/musicpal.c | 2 +- hw/arm/netduino2.c | 2 +- hw/arm/netduinoplus2.c | 2 +- hw/arm/npcm7xx.c | 2 +- hw/arm/npcm7xx_boards.c | 2 +- hw/arm/npcm8xx.c | 2 +- hw/arm/npcm8xx_boards.c | 2 +- hw/arm/olimex-stm32-h405.c | 2 +- hw/arm/omap1.c | 2 +- hw/arm/orangepi.c | 2 +- hw/arm/sabrelite.c | 2 +- hw/arm/sbsa-ref.c | 2 +- hw/arm/smmu-common.c | 2 +- hw/arm/smmuv3.c | 2 +- hw/arm/stm32f100_soc.c | 2 +- hw/arm/stm32f205_soc.c | 2 +- hw/arm/stm32vldiscovery.c | 2 +- hw/arm/strongarm.c | 2 +- hw/arm/virt.c | 2 +- hw/audio/ac97.c | 2 +- hw/audio/adlib.c | 2 +- hw/audio/asc.c | 2 +- hw/audio/cs4231a.c | 2 +- hw/audio/gus.c | 2 +- hw/audio/hda-codec.c | 2 +- hw/audio/intel-hda.c | 2 +- hw/audio/marvell_88w8618.c | 2 +- hw/audio/model.c | 2 +- hw/audio/pl041.c | 2 +- hw/audio/sb16.c | 2 +- hw/avr/atmega.c | 2 +- hw/block/fdc-isa.c | 2 +- hw/block/fdc.c | 2 +- hw/block/m25p80.c | 2 +- hw/block/pflash_cfi01.c | 2 +- hw/block/pflash_cfi02.c | 2 +- hw/block/swim.c | 2 +- hw/block/vhost-user-blk.c | 2 +- hw/block/virtio-blk.c | 2 +- hw/block/xen-block.c | 2 +- hw/char/avr_usart.c | 2 +- hw/char/bcm2835_aux.c | 2 +- hw/char/debugcon.c | 2 +- hw/char/digic-uart.c | 2 +- hw/char/diva-gsp.c | 2 +- hw/char/escc.c | 2 +- hw/char/exynos4210_uart.c | 2 +- hw/char/grlib_apbuart.c | 2 +- hw/char/ibex_uart.c | 2 +- hw/char/imx_serial.c | 2 +- hw/char/ipoctal232.c | 2 +- hw/char/max78000_uart.c | 2 +- hw/char/mcf_uart.c | 2 +- hw/char/mchp_pfsoc_mmuart.c | 2 +- hw/char/nrf51_uart.c | 2 +- hw/char/parallel-isa.c | 2 +- hw/char/parallel.c | 2 +- hw/char/pl011.c | 2 +- hw/char/renesas_sci.c | 2 +- hw/char/sclpconsole-lm.c | 2 +- hw/char/sclpconsole.c | 2 +- hw/char/serial-isa.c | 2 +- hw/char/serial-mm.c | 2 +- hw/char/serial-pci-multi.c | 2 +- hw/char/serial-pci.c | 2 +- hw/char/serial.c | 2 +- hw/char/sh_serial.c | 2 +- hw/char/shakti_uart.c | 2 +- hw/char/spapr_vty.c | 2 +- hw/char/stm32f2xx_usart.c | 2 +- hw/char/stm32l4x5_usart.c | 2 +- hw/char/terminal3270.c | 2 +- hw/char/virtio-console.c | 2 +- hw/char/virtio-serial-bus.c | 2 +- hw/char/xen_console.c | 2 +- hw/char/xilinx_uartlite.c | 2 +- hw/core/bus.c | 2 +- hw/core/cpu-common.c | 2 +- hw/core/cpu-system.c | 2 +- hw/core/cpu-user.c | 2 +- hw/core/generic-loader.c | 2 +- hw/core/guest-loader.c | 2 +- hw/core/or-irq.c | 2 +- hw/core/platform-bus.c | 2 +- hw/core/qdev-properties-system.c | 2 +- hw/core/qdev-properties.c | 2 +- hw/core/qdev.c | 2 +- hw/core/split-irq.c | 2 +- hw/cpu/a15mpcore.c | 2 +- hw/cpu/a9mpcore.c | 2 +- hw/cpu/arm11mpcore.c | 2 +- hw/cpu/cluster.c | 2 +- hw/cxl/switch-mailbox-cci.c | 2 +- hw/display/artist.c | 2 +- hw/display/ati.c | 2 +- hw/display/bcm2835_fb.c | 2 +- hw/display/bochs-display.c | 2 +- hw/display/cg3.c | 2 +- hw/display/cirrus_vga.c | 2 +- hw/display/cirrus_vga_isa.c | 2 +- hw/display/dm163.c | 2 +- hw/display/exynos4210_fimd.c | 2 +- hw/display/g364fb.c | 2 +- hw/display/i2c-ddc.c | 2 +- hw/display/macfb.c | 2 +- hw/display/pl110.c | 2 +- hw/display/qxl.c | 2 +- hw/display/ramfb-standalone.c | 2 +- hw/display/sm501.c | 2 +- hw/display/tcx.c | 2 +- hw/display/vga-isa.c | 2 +- hw/display/vga-mmio.c | 2 +- hw/display/vga-pci.c | 2 +- hw/display/vhost-user-gpu.c | 2 +- hw/display/virtio-gpu-gl.c | 2 +- hw/display/virtio-gpu-pci-gl.c | 2 +- hw/display/virtio-gpu-pci-rutabaga.c | 2 +- hw/display/virtio-gpu-pci.c | 2 +- hw/display/virtio-gpu.c | 2 +- hw/display/virtio-vga-gl.c | 2 +- hw/display/virtio-vga-rutabaga.c | 2 +- hw/display/virtio-vga.c | 2 +- hw/display/vmware_vga.c | 2 +- hw/dma/i82374.c | 2 +- hw/dma/i8257.c | 2 +- hw/dma/pl080.c | 2 +- hw/dma/pl330.c | 2 +- hw/dma/sifive_pdma.c | 2 +- hw/dma/sparc32_dma.c | 2 +- hw/dma/xilinx_axidma.c | 2 +- hw/dma/xlnx-zdma.c | 2 +- hw/dma/xlnx_csu_dma.c | 2 +- hw/fsi/cfam.c | 2 +- hw/fsi/lbus.c | 2 +- hw/gpio/imx_gpio.c | 2 +- hw/gpio/npcm7xx_gpio.c | 2 +- hw/gpio/omap_gpio.c | 2 +- hw/gpio/pca9552.c | 2 +- hw/gpio/pca9554.c | 2 +- hw/gpio/pl061.c | 2 +- hw/gpio/sifive_gpio.c | 2 +- hw/gpio/stm32l4x5_gpio.c | 2 +- hw/hyperv/hv-balloon.c | 2 +- hw/hyperv/syndbg.c | 2 +- hw/hyperv/vmbus.c | 2 +- hw/i2c/aspeed_i2c.c | 2 +- hw/i2c/core.c | 2 +- hw/i2c/i2c_mux_pca954x.c | 2 +- hw/i2c/omap_i2c.c | 2 +- hw/i2c/smbus_eeprom.c | 2 +- hw/i386/amd_iommu.c | 2 +- hw/i386/intel_iommu.c | 2 +- hw/i386/kvm/clock.c | 2 +- hw/i386/kvm/ioapic.c | 2 +- hw/i386/pc_q35.c | 2 +- hw/i386/pc_sysfw.c | 2 +- hw/i386/sgx-epc.c | 2 +- hw/i386/vmmouse.c | 2 +- hw/i386/vmport.c | 2 +- hw/i386/x86-iommu.c | 2 +- hw/i386/xen/xen_pvdevice.c | 2 +- hw/ide/ahci-sysbus.c | 2 +- hw/ide/cmd646.c | 2 +- hw/ide/isa.c | 2 +- hw/ide/macio.c | 2 +- hw/ide/mmio.c | 2 +- hw/input/adb.c | 2 +- hw/input/lasips2.c | 2 +- hw/input/pckbd.c | 2 +- hw/input/stellaris_gamepad.c | 2 +- hw/input/virtio-input-hid.c | 2 +- hw/input/virtio-input-host.c | 2 +- hw/input/virtio-input.c | 2 +- hw/intc/apic_common.c | 2 +- hw/intc/arm_gic_common.c | 2 +- hw/intc/arm_gicv2m.c | 2 +- hw/intc/arm_gicv3_common.c | 2 +- hw/intc/arm_gicv3_its.c | 2 +- hw/intc/arm_gicv3_its_kvm.c | 2 +- hw/intc/armv7m_nvic.c | 2 +- hw/intc/exynos4210_combiner.c | 2 +- hw/intc/exynos4210_gic.c | 2 +- hw/intc/goldfish_pic.c | 2 +- hw/intc/grlib_irqmp.c | 2 +- hw/intc/i8259_common.c | 2 +- hw/intc/ioapic.c | 2 +- hw/intc/loongarch_dintc.c | 2 +- hw/intc/loongarch_extioi_common.c | 2 +- hw/intc/loongarch_ipi.c | 2 +- hw/intc/loongarch_pic_common.c | 2 +- hw/intc/loongson_ipi.c | 2 +- hw/intc/loongson_liointc.c | 2 +- hw/intc/m68k_irqc.c | 2 +- hw/intc/mips_gic.c | 2 +- hw/intc/omap_intc.c | 2 +- hw/intc/ompic.c | 2 +- hw/intc/openpic.c | 2 +- hw/intc/openpic_kvm.c | 2 +- hw/intc/pnv_xive.c | 2 +- hw/intc/pnv_xive2.c | 2 +- hw/intc/ppc-uic.c | 2 +- hw/intc/realview_gic.c | 2 +- hw/intc/riscv_aclint.c | 2 +- hw/intc/riscv_aplic.c | 2 +- hw/intc/riscv_imsic.c | 2 +- hw/intc/rx_icu.c | 2 +- hw/intc/s390_flic.c | 2 +- hw/intc/sifive_plic.c | 2 +- hw/intc/spapr_xive.c | 2 +- hw/intc/xics.c | 2 +- hw/intc/xilinx_intc.c | 2 +- hw/intc/xive.c | 2 +- hw/intc/xive2.c | 2 +- hw/intc/xlnx-pmu-iomod-intc.c | 2 +- hw/ipack/ipack.c | 2 +- hw/ipmi/ipmi.c | 2 +- hw/ipmi/ipmi_bmc_extern.c | 2 +- hw/ipmi/ipmi_bmc_sim.c | 2 +- hw/ipmi/isa_ipmi_bt.c | 2 +- hw/ipmi/isa_ipmi_kcs.c | 2 +- hw/isa/isa-superio.c | 2 +- hw/isa/lpc_ich9.c | 2 +- hw/isa/pc87312.c | 2 +- hw/isa/piix.c | 2 +- hw/isa/vt82c686.c | 2 +- hw/m68k/mcf5206.c | 2 +- hw/m68k/mcf_intc.c | 2 +- hw/m68k/next-cube.c | 2 +- hw/m68k/q800-glue.c | 2 +- hw/m68k/virt.c | 2 +- hw/mem/cxl_type3.c | 2 +- hw/mem/nvdimm.c | 2 +- hw/mem/pc-dimm.c | 2 +- hw/mem/sparse-mem.c | 2 +- hw/microblaze/petalogix_ml605_mmu.c | 2 +- hw/mips/boston.c | 2 +- hw/mips/cps.c | 2 +- hw/mips/fuloong2e.c | 2 +- hw/misc/a9scu.c | 2 +- hw/misc/allwinner-h3-dramc.c | 2 +- hw/misc/allwinner-r40-dramc.c | 2 +- hw/misc/allwinner-sid.c | 2 +- hw/misc/allwinner-sramc.c | 2 +- hw/misc/applesmc.c | 2 +- hw/misc/arm11scu.c | 2 +- hw/misc/arm_l2x0.c | 2 +- hw/misc/arm_sysctl.c | 2 +- hw/misc/armsse-cpuid.c | 2 +- hw/misc/aspeed_hace.c | 2 +- hw/misc/aspeed_i3c.c | 2 +- hw/misc/aspeed_lpc.c | 2 +- hw/misc/aspeed_sbc.c | 2 +- hw/misc/aspeed_scu.c | 2 +- hw/misc/aspeed_sdmc.c | 2 +- hw/misc/aspeed_sli.c | 2 +- hw/misc/avr_power.c | 2 +- hw/misc/bcm2835_cprman.c | 2 +- hw/misc/bcm2835_property.c | 2 +- hw/misc/debugexit.c | 2 +- hw/misc/djmemc.c | 2 +- hw/misc/eccmemctl.c | 2 +- hw/misc/empty_slot.c | 2 +- hw/misc/iotkit-secctl.c | 2 +- hw/misc/iotkit-sysctl.c | 2 +- hw/misc/iotkit-sysinfo.c | 2 +- hw/misc/ivshmem-pci.c | 2 +- hw/misc/led.c | 2 +- hw/misc/mac_via.c | 2 +- hw/misc/macio/cuda.c | 2 +- hw/misc/macio/gpio.c | 2 +- hw/misc/macio/macio.c | 2 +- hw/misc/macio/pmu.c | 2 +- hw/misc/max78000_gcr.c | 2 +- hw/misc/mips_cmgcr.c | 2 +- hw/misc/mips_cpc.c | 2 +- hw/misc/mips_itu.c | 2 +- hw/misc/mos6522.c | 2 +- hw/misc/mps2-fpgaio.c | 2 +- hw/misc/mps2-scc.c | 2 +- hw/misc/msf2-sysreg.c | 2 +- hw/misc/npcm7xx_mft.c | 2 +- hw/misc/npcm7xx_pwm.c | 2 +- hw/misc/npcm_gcr.c | 2 +- hw/misc/nrf51_rng.c | 2 +- hw/misc/pci-testdev.c | 2 +- hw/misc/pvpanic-isa.c | 2 +- hw/misc/pvpanic-mmio.c | 2 +- hw/misc/pvpanic-pci.c | 2 +- hw/misc/pvpanic.c | 2 +- hw/misc/sifive_e_aon.c | 2 +- hw/misc/sifive_u_otp.c | 2 +- hw/misc/stm32l4x5_rcc.c | 2 +- hw/misc/tz-mpc.c | 2 +- hw/misc/tz-msc.c | 2 +- hw/misc/tz-ppc.c | 2 +- hw/misc/virt_ctrl.c | 2 +- hw/misc/xlnx-versal-cframe-reg.c | 2 +- hw/misc/xlnx-versal-cfu.c | 2 +- hw/misc/xlnx-versal-crl.c | 2 +- hw/misc/xlnx-versal-pmc-iou-slcr.c | 2 +- hw/misc/xlnx-versal-trng.c | 2 +- hw/misc/xlnx-versal-xramc.c | 2 +- hw/misc/xlnx-zynqmp-apu-ctrl.c | 2 +- hw/misc/zynq_slcr.c | 2 +- hw/net/allwinner-sun8i-emac.c | 2 +- hw/net/allwinner_emac.c | 2 +- hw/net/cadence_gem.c | 2 +- hw/net/can/can_kvaser_pci.c | 2 +- hw/net/can/can_mioe3680_pci.c | 2 +- hw/net/can/can_pcm3680_pci.c | 2 +- hw/net/can/ctucan_pci.c | 2 +- hw/net/can/xlnx-versal-canfd.c | 2 +- hw/net/can/xlnx-zynqmp-can.c | 2 +- hw/net/dp8393x.c | 2 +- hw/net/e1000.c | 2 +- hw/net/e1000e.c | 2 +- hw/net/eepro100.c | 2 +- hw/net/fsl_etsec/etsec.c | 2 +- hw/net/ftgmac100.c | 2 +- hw/net/i82596.c | 2 +- hw/net/igb.c | 2 +- hw/net/imx_fec.c | 2 +- hw/net/lan9118.c | 2 +- hw/net/lance.c | 2 +- hw/net/lasi_i82596.c | 2 +- hw/net/mcf_fec.c | 2 +- hw/net/msf2-emac.c | 2 +- hw/net/mv88w8618_eth.c | 2 +- hw/net/ne2000-pci.c | 2 +- hw/net/npcm7xx_emc.c | 2 +- hw/net/opencores_eth.c | 2 +- hw/net/pcnet-pci.c | 2 +- hw/net/pcnet.c | 2 +- hw/net/rocker/rocker.c | 2 +- hw/net/rtl8139.c | 2 +- hw/net/smc91c111.c | 2 +- hw/net/spapr_llan.c | 2 +- hw/net/stellaris_enet.c | 2 +- hw/net/sungem.c | 2 +- hw/net/sunhme.c | 2 +- hw/net/tulip.c | 2 +- hw/net/virtio-net.c | 2 +- hw/net/vmxnet3.c | 2 +- hw/net/xen_nic.c | 2 +- hw/net/xgmac.c | 2 +- hw/net/xilinx_axienet.c | 2 +- hw/net/xilinx_ethlite.c | 2 +- hw/nvram/aspeed_otp.c | 2 +- hw/nvram/ds1225y.c | 2 +- hw/nvram/eeprom_at24c.c | 2 +- hw/nvram/fw_cfg.c | 2 +- hw/nvram/mac_nvram.c | 2 +- hw/nvram/nrf51_nvm.c | 2 +- hw/nvram/spapr_nvram.c | 2 +- hw/nvram/xlnx-bbram.c | 2 +- hw/nvram/xlnx-efuse.c | 2 +- hw/nvram/xlnx-versal-efuse-cache.c | 2 +- hw/nvram/xlnx-versal-efuse-ctrl.c | 2 +- hw/nvram/xlnx-zynqmp-efuse.c | 2 +- hw/openrisc/openrisc_sim.c | 2 +- hw/openrisc/virt.c | 2 +- hw/pci-bridge/cxl_downstream.c | 2 +- hw/pci-bridge/cxl_root_port.c | 2 +- hw/pci-bridge/cxl_upstream.c | 2 +- hw/pci-bridge/gen_pcie_root_port.c | 2 +- hw/pci-bridge/pci_bridge_dev.c | 2 +- hw/pci-bridge/pci_expander_bridge.c | 2 +- hw/pci-bridge/pcie_pci_bridge.c | 2 +- hw/pci-bridge/pcie_root_port.c | 2 +- hw/pci-bridge/xio3130_downstream.c | 2 +- hw/pci-host/aspeed_pcie.c | 2 +- hw/pci-host/astro.c | 2 +- hw/pci-host/designware.c | 2 +- hw/pci-host/dino.c | 2 +- hw/pci-host/gpex.c | 2 +- hw/pci-host/grackle.c | 2 +- hw/pci-host/gt64120.c | 2 +- hw/pci-host/i440fx.c | 2 +- hw/pci-host/mv64361.c | 2 +- hw/pci-host/pnv_phb.c | 2 +- hw/pci-host/pnv_phb3.c | 2 +- hw/pci-host/pnv_phb3_msi.c | 2 +- hw/pci-host/pnv_phb4.c | 2 +- hw/pci-host/pnv_phb4_pec.c | 2 +- hw/pci-host/ppce500.c | 2 +- hw/pci-host/q35.c | 2 +- hw/pci-host/raven.c | 2 +- hw/pci-host/remote.c | 2 +- hw/pci-host/sabre.c | 2 +- hw/pci-host/uninorth.c | 2 +- hw/pci-host/versatile.c | 2 +- hw/pci-host/xilinx-pcie.c | 2 +- hw/pci/pci.c | 2 +- hw/pci/pci_bridge.c | 2 +- hw/pci/pci_host.c | 2 +- hw/pci/pcie_port.c | 2 +- hw/pci/pcie_sriov.c | 2 +- hw/ppc/e500.c | 2 +- hw/ppc/mac_newworld.c | 2 +- hw/ppc/mac_oldworld.c | 2 +- hw/ppc/pegasos.c | 2 +- hw/ppc/pnv.c | 2 +- hw/ppc/pnv_adu.c | 2 +- hw/ppc/pnv_chiptod.c | 2 +- hw/ppc/pnv_core.c | 2 +- hw/ppc/pnv_homer.c | 2 +- hw/ppc/pnv_i2c.c | 2 +- hw/ppc/pnv_lpc.c | 2 +- hw/ppc/pnv_n1_chiplet.c | 2 +- hw/ppc/pnv_nest_pervasive.c | 2 +- hw/ppc/pnv_occ.c | 2 +- hw/ppc/pnv_pnor.c | 2 +- hw/ppc/pnv_psi.c | 2 +- hw/ppc/pnv_sbe.c | 2 +- hw/ppc/ppc440_bamboo.c | 2 +- hw/ppc/ppc440_uc.c | 2 +- hw/ppc/ppc4xx_devs.c | 2 +- hw/ppc/ppc4xx_sdram.c | 2 +- hw/ppc/prep.c | 2 +- hw/ppc/prep_systemio.c | 2 +- hw/ppc/rs6000_mc.c | 2 +- hw/ppc/sam460ex.c | 2 +- hw/ppc/spapr.c | 2 +- hw/ppc/spapr_cpu_core.c | 2 +- hw/ppc/spapr_irq.c | 2 +- hw/ppc/spapr_nvdimm.c | 2 +- hw/ppc/spapr_pci.c | 2 +- hw/ppc/spapr_rng.c | 2 +- hw/ppc/spapr_tpm_proxy.c | 2 +- hw/ppc/virtex_ml507.c | 2 +- hw/remote/proxy.c | 2 +- hw/riscv/numa.c | 2 +- hw/riscv/riscv-iommu-pci.c | 2 +- hw/riscv/riscv-iommu-sys.c | 2 +- hw/riscv/riscv-iommu.c | 2 +- hw/riscv/riscv_hart.c | 2 +- hw/riscv/shakti_c.c | 2 +- hw/riscv/virt.c | 2 +- hw/riscv/xiangshan_kmh.c | 2 +- hw/rtc/allwinner-rtc.c | 2 +- hw/rtc/goldfish_rtc.c | 2 +- hw/rtc/m48t59-isa.c | 2 +- hw/rtc/m48t59.c | 2 +- hw/rtc/mc146818rtc.c | 2 +- hw/rtc/pl031.c | 2 +- hw/rtc/rs5c372.c | 2 +- hw/rx/rx62n.c | 2 +- hw/s390x/3270-ccw.c | 2 +- hw/s390x/ccw-device.c | 2 +- hw/s390x/cpu-topology.c | 2 +- hw/s390x/css-bridge.c | 2 +- hw/s390x/css.c | 2 +- hw/s390x/ipl.c | 2 +- hw/s390x/s390-pci-bus.c | 2 +- hw/s390x/s390-skeys.c | 2 +- hw/s390x/s390-stattrib.c | 2 +- hw/s390x/s390-virtio-ccw.c | 2 +- hw/s390x/vhost-scsi-ccw.c | 2 +- hw/s390x/vhost-user-fs-ccw.c | 2 +- hw/s390x/vhost-vsock-ccw.c | 2 +- hw/s390x/virtio-ccw-9p.c | 2 +- hw/s390x/virtio-ccw-balloon.c | 2 +- hw/s390x/virtio-ccw-blk.c | 2 +- hw/s390x/virtio-ccw-crypto.c | 2 +- hw/s390x/virtio-ccw-gpu.c | 2 +- hw/s390x/virtio-ccw-input.c | 2 +- hw/s390x/virtio-ccw-mem.c | 2 +- hw/s390x/virtio-ccw-net.c | 2 +- hw/s390x/virtio-ccw-rng.c | 2 +- hw/s390x/virtio-ccw-scsi.c | 2 +- hw/s390x/virtio-ccw-serial.c | 2 +- hw/scsi/megasas.c | 2 +- hw/scsi/mptsas.c | 2 +- hw/scsi/scsi-bus.c | 2 +- hw/scsi/scsi-disk.c | 2 +- hw/scsi/scsi-generic.c | 2 +- hw/scsi/spapr_vscsi.c | 2 +- hw/scsi/vhost-scsi.c | 2 +- hw/scsi/vhost-user-scsi.c | 2 +- hw/scsi/virtio-scsi.c | 2 +- hw/scsi/vmw_pvscsi.c | 2 +- hw/sd/allwinner-sdhost.c | 2 +- hw/sd/aspeed_sdhci.c | 2 +- hw/sd/sd.c | 2 +- hw/sd/sdhci-pci.c | 2 +- hw/sd/sdhci.c | 2 +- hw/sd/ssi-sd.c | 2 +- hw/sensor/isl_pmbus_vr.c | 2 +- hw/sh4/r2d.c | 2 +- hw/sh4/sh7750.c | 2 +- hw/sparc/leon3.c | 2 +- hw/sparc/sun4m.c | 2 +- hw/sparc/sun4m_iommu.c | 2 +- hw/sparc64/sun4u.c | 2 +- hw/ssi/aspeed_smc.c | 2 +- hw/ssi/ibex_spi_host.c | 2 +- hw/ssi/npcm7xx_fiu.c | 2 +- hw/ssi/pnv_spi.c | 2 +- hw/ssi/sifive_spi.c | 2 +- hw/ssi/ssi.c | 2 +- hw/ssi/xilinx_spi.c | 2 +- hw/ssi/xilinx_spips.c | 2 +- hw/ssi/xlnx-versal-ospi.c | 2 +- hw/timer/a9gtimer.c | 2 +- hw/timer/allwinner-a10-pit.c | 2 +- hw/timer/arm_mptimer.c | 2 +- hw/timer/arm_timer.c | 2 +- hw/timer/aspeed_timer.c | 2 +- hw/timer/avr_timer16.c | 2 +- hw/timer/cmsdk-apb-dualtimer.c | 2 +- hw/timer/grlib_gptimer.c | 2 +- hw/timer/hpet.c | 2 +- hw/timer/ibex_timer.c | 2 +- hw/timer/mss-timer.c | 2 +- hw/timer/npcm7xx_timer.c | 2 +- hw/timer/nrf51_timer.c | 2 +- hw/timer/pxa2xx_timer.c | 2 +- hw/timer/renesas_cmt.c | 2 +- hw/timer/renesas_tmr.c | 2 +- hw/timer/sifive_pwm.c | 2 +- hw/timer/slavio_timer.c | 2 +- hw/timer/sse-timer.c | 2 +- hw/timer/stm32f2xx_timer.c | 2 +- hw/timer/xilinx_timer.c | 2 +- hw/tpm/tpm_crb.c | 2 +- hw/tpm/tpm_spapr.c | 2 +- hw/tpm/tpm_tis_common.c | 2 +- hw/tpm/tpm_tis_isa.c | 2 +- hw/tpm/tpm_tis_sysbus.c | 2 +- hw/tricore/triboard.c | 2 +- hw/tricore/tricore_testdevice.c | 2 +- hw/uefi/var-service-sysbus.c | 2 +- hw/usb/bus.c | 2 +- hw/usb/canokey.c | 2 +- hw/usb/ccid-card-emulated.c | 2 +- hw/usb/ccid-card-passthru.c | 2 +- hw/usb/dev-audio.c | 2 +- hw/usb/dev-hid.c | 2 +- hw/usb/dev-hub.c | 2 +- hw/usb/dev-mtp.c | 2 +- hw/usb/dev-network.c | 2 +- hw/usb/dev-serial.c | 2 +- hw/usb/dev-smartcard-reader.c | 2 +- hw/usb/dev-storage.c | 2 +- hw/usb/dev-uas.c | 2 +- hw/usb/hcd-dwc2.c | 2 +- hw/usb/hcd-dwc3.c | 2 +- hw/usb/hcd-ehci-pci.c | 2 +- hw/usb/hcd-ehci-sysbus.c | 2 +- hw/usb/hcd-ohci-pci.c | 2 +- hw/usb/hcd-ohci-sysbus.c | 2 +- hw/usb/hcd-ohci.c | 2 +- hw/usb/hcd-uhci.c | 2 +- hw/usb/hcd-xhci-nec.c | 2 +- hw/usb/hcd-xhci-pci.c | 2 +- hw/usb/hcd-xhci-sysbus.c | 2 +- hw/usb/hcd-xhci.c | 2 +- hw/usb/host-libusb.c | 2 +- hw/usb/redirect.c | 2 +- hw/usb/u2f-emulated.c | 2 +- hw/usb/u2f-passthru.c | 2 +- hw/usb/xlnx-usb-subsystem.c | 2 +- hw/vfio-user/pci.c | 2 +- hw/vfio/ap.c | 2 +- hw/vfio/ccw.c | 2 +- hw/vfio/pci-quirks.c | 2 +- hw/vfio/pci.c | 2 +- hw/virtio/vdpa-dev-pci.c | 2 +- hw/virtio/vdpa-dev.c | 2 +- hw/virtio/vhost-scsi-pci.c | 2 +- hw/virtio/vhost-user-base.c | 2 +- hw/virtio/vhost-user-blk-pci.c | 2 +- hw/virtio/vhost-user-fs-pci.c | 2 +- hw/virtio/vhost-user-fs.c | 2 +- hw/virtio/vhost-user-gpio-pci.c | 2 +- hw/virtio/vhost-user-gpio.c | 2 +- hw/virtio/vhost-user-i2c-pci.c | 2 +- hw/virtio/vhost-user-i2c.c | 2 +- hw/virtio/vhost-user-rng-pci.c | 2 +- hw/virtio/vhost-user-rng.c | 2 +- hw/virtio/vhost-user-scmi-pci.c | 2 +- hw/virtio/vhost-user-scsi-pci.c | 2 +- hw/virtio/vhost-user-snd-pci.c | 2 +- hw/virtio/vhost-user-snd.c | 2 +- hw/virtio/vhost-user-test-device-pci.c | 2 +- hw/virtio/vhost-user-test-device.c | 2 +- hw/virtio/vhost-user-vsock-pci.c | 2 +- hw/virtio/vhost-user-vsock.c | 2 +- hw/virtio/vhost-vsock-common.c | 2 +- hw/virtio/vhost-vsock-pci.c | 2 +- hw/virtio/vhost-vsock.c | 2 +- hw/virtio/virtio-9p-pci.c | 2 +- hw/virtio/virtio-balloon-pci.c | 2 +- hw/virtio/virtio-balloon.c | 2 +- hw/virtio/virtio-blk-pci.c | 2 +- hw/virtio/virtio-crypto-pci.c | 2 +- hw/virtio/virtio-crypto.c | 2 +- hw/virtio/virtio-input-pci.c | 2 +- hw/virtio/virtio-iommu-pci.c | 2 +- hw/virtio/virtio-iommu.c | 2 +- hw/virtio/virtio-mem.c | 2 +- hw/virtio/virtio-mmio.c | 2 +- hw/virtio/virtio-net-pci.c | 2 +- hw/virtio/virtio-nsm-pci.c | 2 +- hw/virtio/virtio-pci.c | 2 +- hw/virtio/virtio-pmem.c | 2 +- hw/virtio/virtio-rng-pci.c | 2 +- hw/virtio/virtio-rng.c | 2 +- hw/virtio/virtio-scsi-pci.c | 2 +- hw/virtio/virtio-serial-pci.c | 2 +- hw/virtio/virtio.c | 2 +- hw/vmapple/vmapple.c | 2 +- hw/watchdog/cmsdk-apb-watchdog.c | 2 +- hw/watchdog/sbsa_gwdt.c | 2 +- hw/watchdog/wdt_aspeed.c | 2 +- hw/watchdog/wdt_imx2.c | 2 +- hw/xen/xen-bus.c | 2 +- hw/xen/xen-legacy-backend.c | 2 +- hw/xen/xen_pt.c | 2 +- hw/xtensa/xtfpga.c | 2 +- net/net.c | 2 +- system/physmem.c | 2 +- system/qdev-monitor.c | 2 +- system/vl.c | 2 +- target/arm/cpu.c | 2 +- target/arm/cpu64.c | 2 +- target/arm/tcg/cpu64.c | 2 +- target/avr/cpu.c | 2 +- target/hexagon/cpu.c | 2 +- target/i386/cpu-apic.c | 2 +- target/i386/cpu.c | 2 +- target/loongarch/cpu.c | 2 +- target/microblaze/cpu.c | 2 +- target/mips/cpu.c | 2 +- target/ppc/cpu_init.c | 2 +- target/riscv/cpu.c | 2 +- target/s390x/cpu.c | 2 +- target/sparc/cpu.c | 2 +- tests/unit/test-qdev-global-props.c | 2 +- 686 files changed, 685 insertions(+), 685 deletions(-) rename include/hw/{ =3D> core}/qdev-properties.h (100%) diff --git a/docs/devel/migration/compatibility.rst b/docs/devel/migration/= compatibility.rst index ecb887e3184..ce3a1100deb 100644 --- a/docs/devel/migration/compatibility.rst +++ b/docs/devel/migration/compatibility.rst @@ -111,7 +111,7 @@ that array to see what value it needs to get for that f= eature. And what are we going to put in that array, the value of a property. =20 To create a property for a device, we need to use one of the -DEFINE_PROP_*() macros. See include/hw/qdev-properties.h to find the +DEFINE_PROP_*() macros. See include/hw/core/qdev-properties.h to find the macros that exist. With it, we set the default value for that property, and that is what it is going to get in the latest released version. But if we want a different value for a previous version, we diff --git a/hw/display/apple-gfx.h b/hw/display/apple-gfx.h index a8b1d1efc09..3197bd853da 100644 --- a/hw/display/apple-gfx.h +++ b/hw/display/apple-gfx.h @@ -10,7 +10,7 @@ =20 #include "qemu/queue.h" #include "system/memory.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "ui/surface.h" =20 #define TYPE_APPLE_GFX_MMIO "apple-gfx-mmio" diff --git a/hw/riscv/riscv-iommu.h b/hw/riscv/riscv-iommu.h index a31aa62144f..2dabd86941b 100644 --- a/hw/riscv/riscv-iommu.h +++ b/hw/riscv/riscv-iommu.h @@ -20,7 +20,7 @@ #define HW_RISCV_IOMMU_STATE_H =20 #include "qom/object.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/dma.h" #include "hw/riscv/iommu.h" #include "hw/riscv/riscv-iommu-bits.h" diff --git a/hw/tpm/tpm_prop.h b/hw/tpm/tpm_prop.h index c4df74805a7..876f5c80fcd 100644 --- a/hw/tpm/tpm_prop.h +++ b/hw/tpm/tpm_prop.h @@ -23,7 +23,7 @@ #define HW_TPM_PROP_H =20 #include "system/tpm_backend.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 extern const PropertyInfo qdev_prop_tpm; =20 diff --git a/include/hw/char/cadence_uart.h b/include/hw/char/cadence_uart.h index c87c327357f..ad09fbdf32c 100644 --- a/include/hw/char/cadence_uart.h +++ b/include/hw/char/cadence_uart.h @@ -19,7 +19,7 @@ #ifndef CADENCE_UART_H #define CADENCE_UART_H =20 -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "chardev/char-fe.h" #include "qapi/error.h" diff --git a/include/hw/char/sifive_uart.h b/include/hw/char/sifive_uart.h index 6486c3f4a5d..dea6055f872 100644 --- a/include/hw/char/sifive_uart.h +++ b/include/hw/char/sifive_uart.h @@ -21,7 +21,7 @@ #define HW_SIFIVE_UART_H =20 #include "chardev/char-fe.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "qom/object.h" #include "qemu/fifo8.h" diff --git a/include/hw/qdev-properties.h b/include/hw/core/qdev-properties= .h similarity index 100% rename from include/hw/qdev-properties.h rename to include/hw/core/qdev-properties.h diff --git a/include/hw/ide/ide-dev.h b/include/hw/ide/ide-dev.h index 92e88687800..617e8159c77 100644 --- a/include/hw/ide/ide-dev.h +++ b/include/hw/ide/ide-dev.h @@ -21,7 +21,7 @@ #define IDE_DEV_H =20 #include "system/dma.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/block/block.h" =20 typedef struct IDEDevice IDEDevice; diff --git a/include/hw/misc/unimp.h b/include/hw/misc/unimp.h index 518d627dc5d..904f502fab1 100644 --- a/include/hw/misc/unimp.h +++ b/include/hw/misc/unimp.h @@ -8,7 +8,7 @@ #ifndef HW_MISC_UNIMP_H #define HW_MISC_UNIMP_H =20 -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "qapi/error.h" #include "qom/object.h" diff --git a/include/hw/net/ne2000-isa.h b/include/hw/net/ne2000-isa.h index 73bae10ad1a..1e14d1afc0b 100644 --- a/include/hw/net/ne2000-isa.h +++ b/include/hw/net/ne2000-isa.h @@ -11,7 +11,7 @@ #define HW_NET_NE2000_ISA_H =20 #include "hw/isa/isa.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "net/net.h" #include "qapi/error.h" =20 diff --git a/include/hw/nubus/nubus.h b/include/hw/nubus/nubus.h index 7825840dcac..105ddddd0d8 100644 --- a/include/hw/nubus/nubus.h +++ b/include/hw/nubus/nubus.h @@ -9,7 +9,7 @@ #ifndef HW_NUBUS_NUBUS_H #define HW_NUBUS_NUBUS_H =20 -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "system/address-spaces.h" #include "qom/object.h" diff --git a/include/hw/qdev-properties-system.h b/include/hw/qdev-properti= es-system.h index 45687be005f..ec39ef3bd6e 100644 --- a/include/hw/qdev-properties-system.h +++ b/include/hw/qdev-properties-system.h @@ -1,7 +1,7 @@ #ifndef HW_QDEV_PROPERTIES_SYSTEM_H #define HW_QDEV_PROPERTIES_SYSTEM_H =20 -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 bool qdev_prop_sanitize_s390x_loadparm(uint8_t *loadparm, const char *str, Error **errp); diff --git a/include/hw/timer/i8254.h b/include/hw/timer/i8254.h index f7148d92865..65775b789df 100644 --- a/include/hw/timer/i8254.h +++ b/include/hw/timer/i8254.h @@ -25,7 +25,7 @@ #ifndef HW_I8254_H #define HW_I8254_H =20 -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/isa/isa.h" #include "qapi/error.h" #include "qom/object.h" diff --git a/migration/options.h b/migration/options.h index a7b3262d1ed..d6f1742e5b9 100644 --- a/migration/options.h +++ b/migration/options.h @@ -14,7 +14,7 @@ #ifndef QEMU_MIGRATION_OPTIONS_H #define QEMU_MIGRATION_OPTIONS_H =20 -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/client-options.h" =20 diff --git a/rust/hw/core/wrapper.h b/rust/hw/core/wrapper.h index 44f8583bff9..8fda78924d8 100644 --- a/rust/hw/core/wrapper.h +++ b/rust/hw/core/wrapper.h @@ -27,6 +27,6 @@ typedef enum memory_order { #include "hw/sysbus.h" #include "hw/core/clock.h" #include "hw/core/qdev-clock.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/core/irq.h" diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 36e7f100374..b54cd78f8f7 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -22,7 +22,7 @@ =20 #include "hw/core/cpu.h" #include "hw/registerfields.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "exec/cpu-common.h" #include "exec/cpu-defs.h" #include "exec/cpu-interrupt.h" diff --git a/backends/spdm-socket.c b/backends/spdm-socket.c index 6d8f02d3b92..07aea375165 100644 --- a/backends/spdm-socket.c +++ b/backends/spdm-socket.c @@ -13,7 +13,7 @@ #include "qemu/osdep.h" #include "system/spdm-socket.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/core/qdev-prop-internal.h" =20 diff --git a/backends/tpm/tpm_util.c b/backends/tpm/tpm_util.c index f2d1739e336..a64e156f45f 100644 --- a/backends/tpm/tpm_util.c +++ b/backends/tpm/tpm_util.c @@ -26,7 +26,7 @@ #include "qapi/visitor.h" #include "tpm_int.h" #include "system/memory.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/tpm_backend.h" #include "system/tpm_util.h" #include "trace.h" diff --git a/hw/9pfs/virtio-9p-device.c b/hw/9pfs/virtio-9p-device.c index 81b91e47c63..9f70e2338cd 100644 --- a/hw/9pfs/virtio-9p-device.c +++ b/hw/9pfs/virtio-9p-device.c @@ -22,7 +22,7 @@ #include "virtio-9p.h" #include "fsdev/qemu-fsdev.h" #include "coth.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio-access.h" #include "qemu/iov.h" #include "qemu/module.h" diff --git a/hw/acpi/erst.c b/hw/acpi/erst.c index 10bbe37c170..b6c1942e308 100644 --- a/hw/acpi/erst.c +++ b/hw/acpi/erst.c @@ -18,7 +18,7 @@ #include "qom/object_interfaces.h" #include "qemu/error-report.h" #include "migration/vmstate.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/acpi/acpi.h" #include "hw/acpi/acpi-defs.h" #include "hw/acpi/aml-build.h" diff --git a/hw/acpi/generic_event_device.c b/hw/acpi/generic_event_device.c index 675ec43d094..6741f46723c 100644 --- a/hw/acpi/generic_event_device.c +++ b/hw/acpi/generic_event_device.c @@ -19,7 +19,7 @@ #include "hw/mem/pc-dimm.h" #include "hw/mem/nvdimm.h" #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qemu/error-report.h" #include "system/runstate.h" diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c index 1e3c6345411..19d4d4be932 100644 --- a/hw/acpi/piix4.c +++ b/hw/acpi/piix4.c @@ -24,7 +24,7 @@ #include "hw/isa/apm.h" #include "hw/i2c/pm_smbus.h" #include "hw/pci/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/acpi/acpi.h" #include "hw/acpi/pcihp.h" #include "hw/acpi/piix4.h" diff --git a/hw/acpi/vmclock.c b/hw/acpi/vmclock.c index c582c0c1f83..55c9f950662 100644 --- a/hw/acpi/vmclock.c +++ b/hw/acpi/vmclock.c @@ -17,7 +17,7 @@ #include "hw/acpi/aml-build.h" #include "hw/acpi/vmclock.h" #include "hw/nvram/fw_cfg.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/vmstate.h" #include "system/reset.h" diff --git a/hw/acpi/vmgenid.c b/hw/acpi/vmgenid.c index 33c35c85dd4..fcf9a94daf1 100644 --- a/hw/acpi/vmgenid.c +++ b/hw/acpi/vmgenid.c @@ -17,7 +17,7 @@ #include "hw/acpi/aml-build.h" #include "hw/acpi/vmgenid.h" #include "hw/nvram/fw_cfg.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/vmstate.h" #include "system/reset.h" diff --git a/hw/adc/aspeed_adc.c b/hw/adc/aspeed_adc.c index 564979f24dd..fd3af308296 100644 --- a/hw/adc/aspeed_adc.c +++ b/hw/adc/aspeed_adc.c @@ -12,7 +12,7 @@ #include "qapi/error.h" #include "qemu/log.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "hw/adc/aspeed_adc.h" #include "trace.h" diff --git a/hw/adc/npcm7xx_adc.c b/hw/adc/npcm7xx_adc.c index 4494d5558f0..44079791cbd 100644 --- a/hw/adc/npcm7xx_adc.c +++ b/hw/adc/npcm7xx_adc.c @@ -17,7 +17,7 @@ #include "qemu/osdep.h" #include "hw/adc/npcm7xx_adc.h" #include "hw/core/qdev-clock.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/registerfields.h" #include "migration/vmstate.h" #include "qemu/log.h" diff --git a/hw/arm/armv7m.c b/hw/arm/armv7m.c index d9c7bcbcd71..844d620286c 100644 --- a/hw/arm/armv7m.c +++ b/hw/arm/armv7m.c @@ -13,7 +13,7 @@ #include "hw/sysbus.h" #include "hw/arm/boot.h" #include "hw/core/loader.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/qdev-clock.h" #include "elf.h" #include "system/reset.h" diff --git a/hw/arm/aspeed_coprocessor_common.c b/hw/arm/aspeed_coprocessor= _common.c index f037d5b573f..a0a4c73d08d 100644 --- a/hw/arm/aspeed_coprocessor_common.c +++ b/hw/arm/aspeed_coprocessor_common.c @@ -9,7 +9,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "system/memory.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/arm/aspeed_coprocessor.h" =20 static void aspeed_coprocessor_realize(DeviceState *dev, Error **errp) diff --git a/hw/arm/aspeed_soc_common.c b/hw/arm/aspeed_soc_common.c index 84e6458e80a..fd08793575a 100644 --- a/hw/arm/aspeed_soc_common.c +++ b/hw/arm/aspeed_soc_common.c @@ -12,7 +12,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/misc/unimp.h" #include "hw/arm/aspeed_soc.h" #include "hw/char/serial-mm.h" diff --git a/hw/arm/b-l475e-iot01a.c b/hw/arm/b-l475e-iot01a.c index a724b5fdb20..ee789c8df94 100644 --- a/hw/arm/b-l475e-iot01a.c +++ b/hw/arm/b-l475e-iot01a.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/core/boards.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/error-report.h" #include "hw/arm/boot.h" #include "hw/core/split-irq.h" diff --git a/hw/arm/bananapi_m2u.c b/hw/arm/bananapi_m2u.c index fd347e18d26..9b468cd8ac8 100644 --- a/hw/arm/bananapi_m2u.c +++ b/hw/arm/bananapi_m2u.c @@ -24,7 +24,7 @@ #include "qemu/error-report.h" #include "hw/core/boards.h" #include "hw/i2c/i2c.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/arm/allwinner-r40.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" diff --git a/hw/arm/cubieboard.c b/hw/arm/cubieboard.c index 9fe282342ab..a643ae4e27d 100644 --- a/hw/arm/cubieboard.c +++ b/hw/arm/cubieboard.c @@ -19,7 +19,7 @@ #include "qapi/error.h" #include "qemu/error-report.h" #include "hw/core/boards.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/arm/allwinner-a10.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" diff --git a/hw/arm/digic.c b/hw/arm/digic.c index d831bc974d2..5dfa5839a61 100644 --- a/hw/arm/digic.c +++ b/hw/arm/digic.c @@ -24,7 +24,7 @@ #include "qapi/error.h" #include "qemu/module.h" #include "hw/arm/digic.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/system.h" =20 #define DIGIC4_TIMER_BASE(n) (0xc0210000 + (n) * 0x100) diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c index 992edd3ba89..5d68579cd6b 100644 --- a/hw/arm/exynos4210.c +++ b/hw/arm/exynos4210.c @@ -32,7 +32,7 @@ #include "hw/sysbus.h" #include "hw/arm/boot.h" #include "hw/core/loader.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/arm/exynos4210.h" #include "hw/sd/sdhci.h" #include "hw/usb/hcd-ehci.h" diff --git a/hw/arm/exynos4_boards.c b/hw/arm/exynos4_boards.c index f07dd452fcb..e8c171f40a8 100644 --- a/hw/arm/exynos4_boards.c +++ b/hw/arm/exynos4_boards.c @@ -32,7 +32,7 @@ #include "system/address-spaces.h" #include "hw/arm/exynos4210.h" #include "hw/net/lan9118.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/boards.h" #include "hw/core/irq.h" #include "target/arm/cpu-qom.h" diff --git a/hw/arm/fsl-imx25.c b/hw/arm/fsl-imx25.c index 7aad6359ea8..dd670827ff7 100644 --- a/hw/arm/fsl-imx25.c +++ b/hw/arm/fsl-imx25.c @@ -26,7 +26,7 @@ #include "qapi/error.h" #include "hw/arm/fsl-imx25.h" #include "system/system.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "chardev/char.h" #include "target/arm/cpu-qom.h" =20 diff --git a/hw/arm/fsl-imx31.c b/hw/arm/fsl-imx31.c index e9f70ad94b8..190f863355d 100644 --- a/hw/arm/fsl-imx31.c +++ b/hw/arm/fsl-imx31.c @@ -24,7 +24,7 @@ #include "hw/arm/fsl-imx31.h" #include "system/system.h" #include "system/address-spaces.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "chardev/char.h" #include "target/arm/cpu-qom.h" =20 diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c index 50b34139fa2..f3aa1d81501 100644 --- a/hw/arm/fsl-imx6.c +++ b/hw/arm/fsl-imx6.c @@ -25,7 +25,7 @@ #include "hw/misc/unimp.h" #include "hw/usb/imx-usb-phy.h" #include "hw/core/boards.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/system.h" #include "chardev/char.h" #include "qemu/error-report.h" diff --git a/hw/arm/imx25_pdk.c b/hw/arm/imx25_pdk.c index 21860ed14d3..7ebd6c8eb9c 100644 --- a/hw/arm/imx25_pdk.c +++ b/hw/arm/imx25_pdk.c @@ -25,7 +25,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/arm/fsl-imx25.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" diff --git a/hw/arm/imx8mp-evk.c b/hw/arm/imx8mp-evk.c index ed8c52e1bd2..0af5aad5835 100644 --- a/hw/arm/imx8mp-evk.c +++ b/hw/arm/imx8mp-evk.c @@ -12,7 +12,7 @@ #include "hw/arm/fsl-imx8mp.h" #include "hw/arm/machines-qom.h" #include "hw/core/boards.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/kvm.h" #include "system/qtest.h" #include "qemu/error-report.h" diff --git a/hw/arm/max78000fthr.c b/hw/arm/max78000fthr.c index 4b6e76e46bb..ed50bb91979 100644 --- a/hw/arm/max78000fthr.c +++ b/hw/arm/max78000fthr.c @@ -9,7 +9,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/core/boards.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/qdev-clock.h" #include "qemu/error-report.h" #include "hw/arm/max78000_soc.h" diff --git a/hw/arm/mcimx6ul-evk.c b/hw/arm/mcimx6ul-evk.c index 5fe6526ba0a..6e9d92b1f1d 100644 --- a/hw/arm/mcimx6ul-evk.c +++ b/hw/arm/mcimx6ul-evk.c @@ -16,7 +16,7 @@ #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" #include "hw/core/boards.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/error-report.h" #include "system/qtest.h" =20 diff --git a/hw/arm/mcimx7d-sabre.c b/hw/arm/mcimx7d-sabre.c index b1b56b920d4..a0ac647c3df 100644 --- a/hw/arm/mcimx7d-sabre.c +++ b/hw/arm/mcimx7d-sabre.c @@ -18,7 +18,7 @@ #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" #include "hw/core/boards.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/error-report.h" #include "system/qtest.h" =20 diff --git a/hw/arm/microbit.c b/hw/arm/microbit.c index cd035fffc76..9d5c4898469 100644 --- a/hw/arm/microbit.c +++ b/hw/arm/microbit.c @@ -18,7 +18,7 @@ =20 #include "hw/arm/nrf51_soc.h" #include "hw/i2c/microbit_i2c.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qom/object.h" =20 struct MicrobitMachineState { diff --git a/hw/arm/mps2.c b/hw/arm/mps2.c index 7d2efc703bd..ac9366d8447 100644 --- a/hw/arm/mps2.c +++ b/hw/arm/mps2.c @@ -36,7 +36,7 @@ #include "hw/core/boards.h" #include "system/address-spaces.h" #include "system/system.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/misc/unimp.h" #include "hw/char/cmsdk-apb-uart.h" #include "hw/timer/cmsdk-apb-timer.h" diff --git a/hw/arm/mps3r.c b/hw/arm/mps3r.c index 77a0c0b7aff..2d64a198c42 100644 --- a/hw/arm/mps3r.c +++ b/hw/arm/mps3r.c @@ -34,7 +34,7 @@ #include "hw/core/boards.h" #include "hw/core/or-irq.h" #include "hw/core/qdev-clock.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/arm/boot.h" #include "hw/arm/bsa.h" #include "hw/arm/machines-qom.h" diff --git a/hw/arm/msf2-som.c b/hw/arm/msf2-som.c index 10382f0d3b2..caf6e7e1ad7 100644 --- a/hw/arm/msf2-som.c +++ b/hw/arm/msf2-som.c @@ -30,7 +30,7 @@ #include "qapi/error.h" #include "qemu/error-report.h" #include "hw/core/boards.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" #include "hw/core/qdev-clock.h" diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c index a4ddc0d08f9..39e8f69cae0 100644 --- a/hw/arm/musicpal.c +++ b/hw/arm/musicpal.c @@ -22,7 +22,7 @@ #include "hw/char/serial-mm.h" #include "qemu/timer.h" #include "hw/core/ptimer.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/block/flash.h" #include "ui/console.h" #include "hw/i2c/i2c.h" diff --git a/hw/arm/netduino2.c b/hw/arm/netduino2.c index c9281059365..c32deaf43ba 100644 --- a/hw/arm/netduino2.c +++ b/hw/arm/netduino2.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/core/boards.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/qdev-clock.h" #include "qemu/error-report.h" #include "hw/arm/stm32f205_soc.h" diff --git a/hw/arm/netduinoplus2.c b/hw/arm/netduinoplus2.c index d64d2aefe46..a90dcbe8c26 100644 --- a/hw/arm/netduinoplus2.c +++ b/hw/arm/netduinoplus2.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/core/boards.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/qdev-clock.h" #include "qemu/error-report.h" #include "hw/arm/stm32f405_soc.h" diff --git a/hw/arm/npcm7xx.c b/hw/arm/npcm7xx.c index 6905e1d8a7d..c2bbcd89dbc 100644 --- a/hw/arm/npcm7xx.c +++ b/hw/arm/npcm7xx.c @@ -22,7 +22,7 @@ #include "hw/core/loader.h" #include "hw/misc/unimp.h" #include "hw/core/qdev-clock.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "exec/tswap.h" #include "qemu/units.h" diff --git a/hw/arm/npcm7xx_boards.c b/hw/arm/npcm7xx_boards.c index 729306b33c5..57a8d3186e6 100644 --- a/hw/arm/npcm7xx_boards.c +++ b/hw/arm/npcm7xx_boards.c @@ -24,7 +24,7 @@ #include "hw/core/loader.h" #include "hw/nvram/eeprom_at24c.h" #include "hw/core/qdev.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qemu/datadir.h" #include "qemu/units.h" diff --git a/hw/arm/npcm8xx.c b/hw/arm/npcm8xx.c index 71e47dac2e1..9ce6ea52d97 100644 --- a/hw/arm/npcm8xx.c +++ b/hw/arm/npcm8xx.c @@ -25,7 +25,7 @@ #include "hw/core/loader.h" #include "hw/misc/unimp.h" #include "hw/core/qdev-clock.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qemu/units.h" #include "system/system.h" diff --git a/hw/arm/npcm8xx_boards.c b/hw/arm/npcm8xx_boards.c index 7252edf3dcb..042a928857c 100644 --- a/hw/arm/npcm8xx_boards.c +++ b/hw/arm/npcm8xx_boards.c @@ -23,7 +23,7 @@ #include "hw/core/cpu.h" #include "hw/core/loader.h" #include "hw/core/qdev.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qemu/error-report.h" #include "qemu/datadir.h" diff --git a/hw/arm/olimex-stm32-h405.c b/hw/arm/olimex-stm32-h405.c index 1a08d742155..e801e4308ed 100644 --- a/hw/arm/olimex-stm32-h405.c +++ b/hw/arm/olimex-stm32-h405.c @@ -26,7 +26,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/core/boards.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/qdev-clock.h" #include "qemu/error-report.h" #include "hw/arm/stm32f405_soc.h" diff --git a/hw/arm/omap1.c b/hw/arm/omap1.c index 994e5a919e1..fcba6eb52d5 100644 --- a/hw/arm/omap1.c +++ b/hw/arm/omap1.c @@ -26,7 +26,7 @@ #include "system/address-spaces.h" #include "hw/hw.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/arm/boot.h" #include "hw/arm/omap.h" #include "hw/sd/sd.h" diff --git a/hw/arm/orangepi.c b/hw/arm/orangepi.c index c0dd32f13ce..d84443bb7b3 100644 --- a/hw/arm/orangepi.c +++ b/hw/arm/orangepi.c @@ -23,7 +23,7 @@ #include "qapi/error.h" #include "qemu/error-report.h" #include "hw/core/boards.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/arm/allwinner-h3.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" diff --git a/hw/arm/sabrelite.c b/hw/arm/sabrelite.c index 99cbd5e2fea..db5669c5c24 100644 --- a/hw/arm/sabrelite.c +++ b/hw/arm/sabrelite.c @@ -16,7 +16,7 @@ #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" #include "hw/core/boards.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/error-report.h" #include "system/qtest.h" =20 diff --git a/hw/arm/sbsa-ref.c b/hw/arm/sbsa-ref.c index 5f0fb16a54c..d86b4706869 100644 --- a/hw/arm/sbsa-ref.c +++ b/hw/arm/sbsa-ref.c @@ -44,7 +44,7 @@ #include "hw/intc/arm_gicv3_its_common.h" #include "hw/core/loader.h" #include "hw/pci-host/gpex.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/usb/usb.h" #include "hw/usb/xhci.h" #include "hw/char/pl011.h" diff --git a/hw/arm/smmu-common.c b/hw/arm/smmu-common.c index 62a76121841..e1b77cc55fc 100644 --- a/hw/arm/smmu-common.c +++ b/hw/arm/smmu-common.c @@ -21,7 +21,7 @@ #include "exec/target_page.h" #include "hw/core/cpu.h" #include "hw/pci/pci_bridge.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qemu/jhash.h" #include "qemu/module.h" diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index e391842dc33..e12a64a20fb 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -21,7 +21,7 @@ #include "hw/core/irq.h" #include "hw/sysbus.h" #include "migration/vmstate.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/qdev.h" #include "hw/pci/pci.h" #include "cpu.h" diff --git a/hw/arm/stm32f100_soc.c b/hw/arm/stm32f100_soc.c index 8d61be72c48..2358368dbab 100644 --- a/hw/arm/stm32f100_soc.c +++ b/hw/arm/stm32f100_soc.c @@ -29,7 +29,7 @@ #include "hw/arm/boot.h" #include "system/address-spaces.h" #include "hw/arm/stm32f100_soc.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/qdev-clock.h" #include "hw/misc/unimp.h" #include "system/system.h" diff --git a/hw/arm/stm32f205_soc.c b/hw/arm/stm32f205_soc.c index 406f614f1d5..a03c6b40025 100644 --- a/hw/arm/stm32f205_soc.c +++ b/hw/arm/stm32f205_soc.c @@ -28,7 +28,7 @@ #include "hw/arm/boot.h" #include "system/address-spaces.h" #include "hw/arm/stm32f205_soc.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/qdev-clock.h" #include "system/system.h" =20 diff --git a/hw/arm/stm32vldiscovery.c b/hw/arm/stm32vldiscovery.c index e7e1b8200e1..8f93c0036a3 100644 --- a/hw/arm/stm32vldiscovery.c +++ b/hw/arm/stm32vldiscovery.c @@ -26,7 +26,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/core/boards.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/qdev-clock.h" #include "qemu/error-report.h" #include "hw/arm/stm32f100_soc.h" diff --git a/hw/arm/strongarm.c b/hw/arm/strongarm.c index 95dda078522..3ee73ee4594 100644 --- a/hw/arm/strongarm.c +++ b/hw/arm/strongarm.c @@ -29,7 +29,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/sysbus.h" #include "migration/vmstate.h" diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 0d2652e6dbc..d8773cb541f 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -63,7 +63,7 @@ #include "hw/virtio/virtio-pci.h" #include "hw/core/sysbus-fdt.h" #include "hw/core/platform-bus.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/arm/fdt.h" #include "hw/intc/arm_gic.h" #include "hw/intc/arm_gicv3_common.h" diff --git a/hw/audio/ac97.c b/hw/audio/ac97.c index 60daa62ea33..0694f0adf9c 100644 --- a/hw/audio/ac97.c +++ b/hw/audio/ac97.c @@ -21,7 +21,7 @@ #include "hw/audio/model.h" #include "qemu/audio.h" #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qemu/module.h" #include "system/dma.h" diff --git a/hw/audio/adlib.c b/hw/audio/adlib.c index 19d3a5f1280..8b9fe53e17b 100644 --- a/hw/audio/adlib.c +++ b/hw/audio/adlib.c @@ -28,7 +28,7 @@ #include "hw/audio/model.h" #include "qemu/audio.h" #include "hw/isa/isa.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/error-report.h" #include "qom/object.h" =20 diff --git a/hw/audio/asc.c b/hw/audio/asc.c index b6f42045003..77a5cc1092d 100644 --- a/hw/audio/asc.c +++ b/hw/audio/asc.c @@ -17,7 +17,7 @@ #include "hw/core/irq.h" #include "qemu/audio.h" #include "hw/audio/asc.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "trace.h" =20 diff --git a/hw/audio/cs4231a.c b/hw/audio/cs4231a.c index 8368172f401..7489cf42b7d 100644 --- a/hw/audio/cs4231a.c +++ b/hw/audio/cs4231a.c @@ -27,7 +27,7 @@ #include "qemu/audio.h" #include "hw/core/irq.h" #include "hw/isa/isa.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qemu/module.h" #include "qemu/error-report.h" diff --git a/hw/audio/gus.c b/hw/audio/gus.c index 6c41b25486e..69ddc419191 100644 --- a/hw/audio/gus.c +++ b/hw/audio/gus.c @@ -29,7 +29,7 @@ #include "qemu/audio.h" #include "hw/core/irq.h" #include "hw/isa/isa.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "gusemu.h" #include "qemu/error-report.h" diff --git a/hw/audio/hda-codec.c b/hw/audio/hda-codec.c index e90c9de046e..6445d227594 100644 --- a/hw/audio/hda-codec.c +++ b/hw/audio/hda-codec.c @@ -19,7 +19,7 @@ =20 #include "qemu/osdep.h" #include "hw/pci/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "intel-hda.h" #include "migration/vmstate.h" #include "qemu/host-utils.h" diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c index 758e130c938..d7c2c3c2fd4 100644 --- a/hw/audio/intel-hda.c +++ b/hw/audio/intel-hda.c @@ -19,7 +19,7 @@ =20 #include "qemu/osdep.h" #include "hw/pci/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/pci/msi.h" #include "monitor/qdev.h" #include "qemu/timer.h" diff --git a/hw/audio/marvell_88w8618.c b/hw/audio/marvell_88w8618.c index ba9bd6befd7..39f4b4514dc 100644 --- a/hw/audio/marvell_88w8618.c +++ b/hw/audio/marvell_88w8618.c @@ -14,7 +14,7 @@ #include "hw/sysbus.h" #include "migration/vmstate.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/audio/wm8750.h" #include "qemu/audio.h" #include "qapi/error.h" diff --git a/hw/audio/model.c b/hw/audio/model.c index ff4e4b24528..86a5419b09e 100644 --- a/hw/audio/model.c +++ b/hw/audio/model.c @@ -26,7 +26,7 @@ #include "monitor/qdev.h" #include "qemu/error-report.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/audio/model.h" =20 struct audio_model { diff --git a/hw/audio/pl041.c b/hw/audio/pl041.c index 7bb2c81afcd..117b6b0ae65 100644 --- a/hw/audio/pl041.c +++ b/hw/audio/pl041.c @@ -22,7 +22,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/audio/sb16.c b/hw/audio/sb16.c index 6ca31a0e649..3c5beb9dfa3 100644 --- a/hw/audio/sb16.c +++ b/hw/audio/sb16.c @@ -27,7 +27,7 @@ #include "qemu/audio.h" #include "hw/core/irq.h" #include "hw/isa/isa.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qemu/timer.h" #include "qemu/error-report.h" diff --git a/hw/avr/atmega.c b/hw/avr/atmega.c index 95b6da5e343..b185295d551 100644 --- a/hw/avr/atmega.c +++ b/hw/avr/atmega.c @@ -16,7 +16,7 @@ #include "system/memory.h" #include "system/address-spaces.h" #include "system/system.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "qom/object.h" #include "hw/misc/unimp.h" diff --git a/hw/block/fdc-isa.c b/hw/block/fdc-isa.c index 0034c3594ae..ebb3d2f7cd8 100644 --- a/hw/block/fdc-isa.c +++ b/hw/block/fdc-isa.c @@ -35,7 +35,7 @@ #include "hw/acpi/acpi_aml_interface.h" #include "hw/core/irq.h" #include "hw/isa/isa.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/vmstate.h" #include "hw/block/block.h" diff --git a/hw/block/fdc.c b/hw/block/fdc.c index e0e53ba0382..1747f6506fd 100644 --- a/hw/block/fdc.c +++ b/hw/block/fdc.c @@ -35,7 +35,7 @@ #include "qemu/memalign.h" #include "hw/core/irq.h" #include "hw/isa/isa.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/vmstate.h" #include "hw/block/block.h" diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index a5336d92ff9..648e6bdc008 100644 --- a/hw/block/m25p80.c +++ b/hw/block/m25p80.c @@ -26,7 +26,7 @@ #include "system/block-backend.h" #include "hw/block/block.h" #include "hw/block/flash.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/ssi/ssi.h" #include "migration/vmstate.h" diff --git a/hw/block/pflash_cfi01.c b/hw/block/pflash_cfi01.c index 168101d8dfe..f93b812c024 100644 --- a/hw/block/pflash_cfi01.c +++ b/hw/block/pflash_cfi01.c @@ -39,7 +39,7 @@ #include "qemu/osdep.h" #include "hw/block/block.h" #include "hw/block/flash.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "system/block-backend.h" #include "qapi/error.h" diff --git a/hw/block/pflash_cfi02.c b/hw/block/pflash_cfi02.c index 3244b699b98..6a74bcb7a1b 100644 --- a/hw/block/pflash_cfi02.c +++ b/hw/block/pflash_cfi02.c @@ -35,7 +35,7 @@ #include "qemu/osdep.h" #include "hw/block/block.h" #include "hw/block/flash.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "qapi/error.h" #include "qemu/error-report.h" diff --git a/hw/block/swim.c b/hw/block/swim.c index ad047362f88..53ba7fa59cf 100644 --- a/hw/block/swim.c +++ b/hw/block/swim.c @@ -18,7 +18,7 @@ #include "migration/vmstate.h" #include "hw/block/block.h" #include "hw/block/swim.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "trace.h" =20 =20 diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c index b399eab51a1..62295f187ca 100644 --- a/hw/block/vhost-user-blk.c +++ b/hw/block/vhost-user-blk.c @@ -21,7 +21,7 @@ #include "qemu/error-report.h" #include "qemu/cutils.h" #include "hw/core/qdev.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/virtio/virtio-blk-common.h" #include "hw/virtio/vhost.h" diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c index 64efce48462..ddf0e9ee53e 100644 --- a/hw/block/virtio-blk.c +++ b/hw/block/virtio-blk.c @@ -21,7 +21,7 @@ #include "block/block_int.h" #include "trace.h" #include "hw/block/block.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/blockdev.h" #include "system/block-ram-registrar.h" #include "system/system.h" diff --git a/hw/block/xen-block.c b/hw/block/xen-block.c index 74de897c798..5dc4ba9d076 100644 --- a/hw/block/xen-block.c +++ b/hw/block/xen-block.c @@ -20,7 +20,7 @@ #include "qobject/qstring.h" #include "qom/object_interfaces.h" #include "hw/block/xen_blkif.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/xen/xen-block.h" #include "hw/xen/xen-backend.h" #include "system/blockdev.h" diff --git a/hw/char/avr_usart.c b/hw/char/avr_usart.c index e98ad53e447..c3515b6f7d0 100644 --- a/hw/char/avr_usart.c +++ b/hw/char/avr_usart.c @@ -23,7 +23,7 @@ #include "hw/char/avr_usart.h" #include "qemu/log.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" =20 static int avr_usart_can_receive(void *opaque) diff --git a/hw/char/bcm2835_aux.c b/hw/char/bcm2835_aux.c index 03428efeea8..47e24c5bba1 100644 --- a/hw/char/bcm2835_aux.c +++ b/hw/char/bcm2835_aux.c @@ -23,7 +23,7 @@ #include "qemu/osdep.h" #include "hw/char/bcm2835_aux.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/vmstate.h" #include "qemu/log.h" diff --git a/hw/char/debugcon.c b/hw/char/debugcon.c index bb323adda55..36607d0c1c7 100644 --- a/hw/char/debugcon.c +++ b/hw/char/debugcon.c @@ -29,7 +29,7 @@ #include "qemu/module.h" #include "chardev/char-fe.h" #include "hw/isa/isa.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "qom/object.h" =20 diff --git a/hw/char/digic-uart.c b/hw/char/digic-uart.c index 0f6af51bb7b..04dec0df8a6 100644 --- a/hw/char/digic-uart.c +++ b/hw/char/digic-uart.c @@ -34,7 +34,7 @@ #include "qemu/module.h" =20 #include "hw/char/digic-uart.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" =20 enum { diff --git a/hw/char/diva-gsp.c b/hw/char/diva-gsp.c index 835594e5cb6..1dafc1e80c3 100644 --- a/hw/char/diva-gsp.c +++ b/hw/char/diva-gsp.c @@ -20,7 +20,7 @@ #include "hw/char/serial.h" #include "hw/core/irq.h" #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/vmstate.h" =20 diff --git a/hw/char/escc.c b/hw/char/escc.c index 27269dca643..496bbc56dea 100644 --- a/hw/char/escc.c +++ b/hw/char/escc.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/sysbus.h" #include "migration/vmstate.h" diff --git a/hw/char/exynos4210_uart.c b/hw/char/exynos4210_uart.c index 8ba310fd7ac..387156d5e34 100644 --- a/hw/char/exynos4210_uart.c +++ b/hw/char/exynos4210_uart.c @@ -31,7 +31,7 @@ =20 #include "hw/arm/exynos4210.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" =20 #include "trace.h" diff --git a/hw/char/grlib_apbuart.c b/hw/char/grlib_apbuart.c index 15925eb2e63..9731e664c1b 100644 --- a/hw/char/grlib_apbuart.c +++ b/hw/char/grlib_apbuart.c @@ -26,7 +26,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/char/grlib_uart.h" #include "hw/sysbus.h" diff --git a/hw/char/ibex_uart.c b/hw/char/ibex_uart.c index 23abeacb1b5..ac4a43af84e 100644 --- a/hw/char/ibex_uart.c +++ b/hw/char/ibex_uart.c @@ -29,7 +29,7 @@ #include "hw/char/ibex_uart.h" #include "hw/core/irq.h" #include "hw/core/qdev-clock.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/registerfields.h" #include "migration/vmstate.h" diff --git a/hw/char/imx_serial.c b/hw/char/imx_serial.c index 9f13236f29c..78d2c25f86f 100644 --- a/hw/char/imx_serial.c +++ b/hw/char/imx_serial.c @@ -21,7 +21,7 @@ #include "qemu/osdep.h" #include "hw/char/imx_serial.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/vmstate.h" #include "qemu/log.h" diff --git a/hw/char/ipoctal232.c b/hw/char/ipoctal232.c index 6e38916150c..19f312b9d30 100644 --- a/hw/char/ipoctal232.c +++ b/hw/char/ipoctal232.c @@ -11,7 +11,7 @@ #include "qemu/osdep.h" #include "hw/ipack/ipack.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/vmstate.h" #include "qemu/bitops.h" diff --git a/hw/char/max78000_uart.c b/hw/char/max78000_uart.c index 5fc933123e9..59ec24a15e8 100644 --- a/hw/char/max78000_uart.c +++ b/hw/char/max78000_uart.c @@ -9,7 +9,7 @@ #include "qemu/osdep.h" #include "hw/char/max78000_uart.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/char/mcf_uart.c b/hw/char/mcf_uart.c index d9d551924b3..391674dbcc6 100644 --- a/hw/char/mcf_uart.c +++ b/hw/char/mcf_uart.c @@ -12,7 +12,7 @@ #include "qemu/module.h" #include "qapi/error.h" #include "hw/m68k/mcf.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "chardev/char-fe.h" #include "qom/object.h" diff --git a/hw/char/mchp_pfsoc_mmuart.c b/hw/char/mchp_pfsoc_mmuart.c index 6149f9d2047..6673721454c 100644 --- a/hw/char/mchp_pfsoc_mmuart.c +++ b/hw/char/mchp_pfsoc_mmuart.c @@ -25,7 +25,7 @@ #include "qapi/error.h" #include "migration/vmstate.h" #include "hw/char/mchp_pfsoc_mmuart.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 #define REGS_OFFSET 0x20 =20 diff --git a/hw/char/nrf51_uart.c b/hw/char/nrf51_uart.c index 39d144538d1..6087cabeb3c 100644 --- a/hw/char/nrf51_uart.c +++ b/hw/char/nrf51_uart.c @@ -17,7 +17,7 @@ #include "qemu/module.h" #include "hw/char/nrf51_uart.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/vmstate.h" #include "trace.h" diff --git a/hw/char/parallel-isa.c b/hw/char/parallel-isa.c index b6dfb6cc31a..92e94138f4a 100644 --- a/hw/char/parallel-isa.c +++ b/hw/char/parallel-isa.c @@ -12,7 +12,7 @@ #include "qemu/osdep.h" #include "system/system.h" #include "hw/isa/isa.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/char/parallel-isa.h" #include "hw/char/parallel.h" #include "qapi/error.h" diff --git a/hw/char/parallel.c b/hw/char/parallel.c index 8732e4e9f96..6708d7658bd 100644 --- a/hw/char/parallel.c +++ b/hw/char/parallel.c @@ -28,7 +28,7 @@ #include "qemu/module.h" #include "chardev/char-parallel.h" #include "hw/acpi/acpi_aml_interface.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/vmstate.h" #include "hw/char/parallel-isa.h" diff --git a/hw/char/pl011.c b/hw/char/pl011.c index 030d6a2e8b4..f37ffd349f6 100644 --- a/hw/char/pl011.c +++ b/hw/char/pl011.c @@ -24,7 +24,7 @@ #include "hw/core/irq.h" #include "hw/sysbus.h" #include "hw/core/qdev-clock.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/vmstate.h" #include "chardev/char-fe.h" diff --git a/hw/char/renesas_sci.c b/hw/char/renesas_sci.c index b32e41d5b8a..3c1cc43954b 100644 --- a/hw/char/renesas_sci.c +++ b/hw/char/renesas_sci.c @@ -25,7 +25,7 @@ #include "qemu/log.h" #include "hw/core/irq.h" #include "hw/registerfields.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/char/renesas_sci.h" #include "migration/vmstate.h" diff --git a/hw/char/sclpconsole-lm.c b/hw/char/sclpconsole-lm.c index c51308f9c5c..ed08cf42da2 100644 --- a/hw/char/sclpconsole-lm.c +++ b/hw/char/sclpconsole-lm.c @@ -22,7 +22,7 @@ #include "hw/s390x/sclp.h" #include "migration/vmstate.h" #include "hw/s390x/event-facility.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/s390x/ebcdic.h" #include "qom/object.h" diff --git a/hw/char/sclpconsole.c b/hw/char/sclpconsole.c index 2abf861dbcf..ab444fe1fa4 100644 --- a/hw/char/sclpconsole.c +++ b/hw/char/sclpconsole.c @@ -19,7 +19,7 @@ =20 #include "hw/s390x/sclp.h" #include "migration/vmstate.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/s390x/event-facility.h" #include "chardev/char-fe.h" diff --git a/hw/char/serial-isa.c b/hw/char/serial-isa.c index 0ea59a3d5c2..a4be0492c59 100644 --- a/hw/char/serial-isa.c +++ b/hw/char/serial-isa.c @@ -31,7 +31,7 @@ #include "hw/char/serial.h" #include "hw/char/serial-isa.h" #include "hw/isa/isa.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qom/object.h" =20 diff --git a/hw/char/serial-mm.c b/hw/char/serial-mm.c index 13aba780ec5..6e963e581f9 100644 --- a/hw/char/serial-mm.c +++ b/hw/char/serial-mm.c @@ -28,7 +28,7 @@ #include "exec/cpu-common.h" #include "migration/vmstate.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 static uint64_t serial_mm_read(void *opaque, hwaddr addr, unsigned size) { diff --git a/hw/char/serial-pci-multi.c b/hw/char/serial-pci-multi.c index 34608569988..f0af12c14f9 100644 --- a/hw/char/serial-pci-multi.c +++ b/hw/char/serial-pci-multi.c @@ -32,7 +32,7 @@ #include "hw/char/serial.h" #include "hw/core/irq.h" #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/vmstate.h" =20 diff --git a/hw/char/serial-pci.c b/hw/char/serial-pci.c index d05d0898998..d8cacc90859 100644 --- a/hw/char/serial-pci.c +++ b/hw/char/serial-pci.c @@ -31,7 +31,7 @@ #include "hw/char/serial.h" #include "hw/core/irq.h" #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qom/object.h" =20 diff --git a/hw/char/serial.c b/hw/char/serial.c index 11685b397b7..cbff68a7111 100644 --- a/hw/char/serial.c +++ b/hw/char/serial.c @@ -35,7 +35,7 @@ #include "system/runstate.h" #include "qemu/error-report.h" #include "trace.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" =20 #define UART_LCR_DLAB 0x80 /* Divisor latch access bit */ diff --git a/hw/char/sh_serial.c b/hw/char/sh_serial.c index 008a2ea2f04..9cd79fce334 100644 --- a/hw/char/sh_serial.c +++ b/hw/char/sh_serial.c @@ -29,7 +29,7 @@ #include "hw/sysbus.h" #include "hw/core/irq.h" #include "hw/core/qdev.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/sh4/sh.h" #include "chardev/char-fe.h" diff --git a/hw/char/shakti_uart.c b/hw/char/shakti_uart.c index 6e216edb0fc..51e45351d95 100644 --- a/hw/char/shakti_uart.c +++ b/hw/char/shakti_uart.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/char/shakti_uart.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "qemu/log.h" =20 diff --git a/hw/char/spapr_vty.c b/hw/char/spapr_vty.c index 766b2bfcac0..17a17c47c36 100644 --- a/hw/char/spapr_vty.c +++ b/hw/char/spapr_vty.c @@ -6,7 +6,7 @@ #include "chardev/char-fe.h" #include "hw/ppc/spapr.h" #include "hw/ppc/spapr_vio.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "qom/object.h" =20 diff --git a/hw/char/stm32f2xx_usart.c b/hw/char/stm32f2xx_usart.c index 49bbda03b87..2c19ec69cc8 100644 --- a/hw/char/stm32f2xx_usart.c +++ b/hw/char/stm32f2xx_usart.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "hw/char/stm32f2xx_usart.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/char/stm32l4x5_usart.c b/hw/char/stm32l4x5_usart.c index 4533cbc93be..8b208ba9b6a 100644 --- a/hw/char/stm32l4x5_usart.c +++ b/hw/char/stm32l4x5_usart.c @@ -26,7 +26,7 @@ #include "hw/core/clock.h" #include "hw/core/irq.h" #include "hw/core/qdev-clock.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/registerfields.h" #include "trace.h" diff --git a/hw/char/terminal3270.c b/hw/char/terminal3270.c index c993f67b42a..821a75c37a2 100644 --- a/hw/char/terminal3270.c +++ b/hw/char/terminal3270.c @@ -15,7 +15,7 @@ #include "qapi/error.h" #include "qemu/module.h" #include "chardev/char-fe.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/s390x/3270-ccw.h" #include "qom/object.h" diff --git a/hw/char/virtio-console.c b/hw/char/virtio-console.c index 1b669c9be83..8c2a6a9d1d3 100644 --- a/hw/char/virtio-console.c +++ b/hw/char/virtio-console.c @@ -15,7 +15,7 @@ #include "qemu/error-report.h" #include "qemu/module.h" #include "trace.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/virtio/virtio-serial.h" #include "qapi/error.h" diff --git a/hw/char/virtio-serial-bus.c b/hw/char/virtio-serial-bus.c index 673c50f0be0..5ec5f5313b2 100644 --- a/hw/char/virtio-serial-bus.c +++ b/hw/char/virtio-serial-bus.c @@ -27,7 +27,7 @@ #include "monitor/monitor.h" #include "qemu/error-report.h" #include "qemu/queue.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "trace.h" #include "hw/virtio/virtio-serial.h" #include "hw/virtio/virtio-access.h" diff --git a/hw/char/xen_console.c b/hw/char/xen_console.c index a639fb0b114..a0d142582ee 100644 --- a/hw/char/xen_console.c +++ b/hw/char/xen_console.c @@ -29,7 +29,7 @@ #include "chardev/char-fe.h" #include "hw/xen/xen-backend.h" #include "hw/xen/xen-bus-helper.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/xen/interface/io/console.h" #include "hw/xen/interface/io/xs_wire.h" diff --git a/hw/char/xilinx_uartlite.c b/hw/char/xilinx_uartlite.c index da1ecd249c7..9d81cd904c6 100644 --- a/hw/char/xilinx_uartlite.c +++ b/hw/char/xilinx_uartlite.c @@ -27,7 +27,7 @@ #include "qapi/error.h" #include "hw/char/xilinx_uartlite.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/sysbus.h" #include "qemu/module.h" diff --git a/hw/core/bus.c b/hw/core/bus.c index bddfc22d388..53f392fdda8 100644 --- a/hw/core/bus.c +++ b/hw/core/bus.c @@ -18,7 +18,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/ctype.h" #include "qemu/module.h" #include "qapi/error.h" diff --git a/hw/core/cpu-common.c b/hw/core/cpu-common.c index fb8421184d5..2e925880afa 100644 --- a/hw/core/cpu-common.c +++ b/hw/core/cpu-common.c @@ -32,7 +32,7 @@ #include "exec/gdbstub.h" #include "system/tcg.h" #include "hw/core/boards.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "trace.h" #ifdef CONFIG_PLUGIN #include "qemu/plugin.h" diff --git a/hw/core/cpu-system.c b/hw/core/cpu-system.c index 5d5a4357399..48c8ddf4b15 100644 --- a/hw/core/cpu-system.c +++ b/hw/core/cpu-system.c @@ -25,7 +25,7 @@ #include "system/memory.h" #include "qemu/target-info.h" #include "hw/core/qdev.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/sysemu-cpu-ops.h" #include "migration/vmstate.h" #include "system/tcg.h" diff --git a/hw/core/cpu-user.c b/hw/core/cpu-user.c index 270afe5b9f6..25aa25ad240 100644 --- a/hw/core/cpu-user.c +++ b/hw/core/cpu-user.c @@ -8,7 +8,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/qdev.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/cpu.h" #include "migration/vmstate.h" =20 diff --git a/hw/core/generic-loader.c b/hw/core/generic-loader.c index 590c6a8131a..24f3908b1cc 100644 --- a/hw/core/generic-loader.c +++ b/hw/core/generic-loader.c @@ -35,7 +35,7 @@ #include "system/reset.h" #include "hw/core/boards.h" #include "hw/core/loader.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qemu/module.h" #include "hw/core/generic-loader.h" diff --git a/hw/core/guest-loader.c b/hw/core/guest-loader.c index e46897c4974..38cb9f992cb 100644 --- a/hw/core/guest-loader.c +++ b/hw/core/guest-loader.c @@ -28,7 +28,7 @@ #include "hw/core/cpu.h" #include "system/dma.h" #include "hw/core/loader.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qemu/module.h" #include "guest-loader.h" diff --git a/hw/core/or-irq.c b/hw/core/or-irq.c index bcc7ad1e444..3dc008ea4f3 100644 --- a/hw/core/or-irq.c +++ b/hw/core/or-irq.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "hw/core/irq.h" #include "hw/core/or-irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qemu/module.h" =20 diff --git a/hw/core/platform-bus.c b/hw/core/platform-bus.c index 4b6cc5f6498..a2217a2deec 100644 --- a/hw/core/platform-bus.c +++ b/hw/core/platform-bus.c @@ -21,7 +21,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/platform-bus.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qemu/error-report.h" #include "qemu/module.h" diff --git a/hw/core/qdev-properties-system.c b/hw/core/qdev-properties-sys= tem.c index 7aa5cbb5103..d0a66358b5a 100644 --- a/hw/core/qdev-properties-system.c +++ b/hw/core/qdev-properties-system.c @@ -11,7 +11,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "qapi/error.h" #include "qapi/visitor.h" diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c index 0930d64252d..05489c8fbbf 100644 --- a/hw/core/qdev-properties.c +++ b/hw/core/qdev-properties.c @@ -1,5 +1,5 @@ #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qapi/qapi-types-misc.h" #include "qapi/qapi-visit-common.h" diff --git a/hw/core/qdev.c b/hw/core/qdev.c index fae9ffc7595..a3b41286ea0 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -33,7 +33,7 @@ #include "qemu/error-report.h" #include "qemu/option.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/boards.h" #include "hw/sysbus.h" #include "hw/core/qdev-clock.h" diff --git a/hw/core/split-irq.c b/hw/core/split-irq.c index d0aaa108eb9..7491d74791e 100644 --- a/hw/core/split-irq.c +++ b/hw/core/split-irq.c @@ -26,7 +26,7 @@ #include "qemu/osdep.h" #include "hw/core/split-irq.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qemu/module.h" =20 diff --git a/hw/cpu/a15mpcore.c b/hw/cpu/a15mpcore.c index 1a6fb914f3b..28cc4b3a4bd 100644 --- a/hw/cpu/a15mpcore.c +++ b/hw/cpu/a15mpcore.c @@ -23,7 +23,7 @@ #include "qemu/module.h" #include "hw/cpu/a15mpcore.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/kvm.h" #include "kvm_arm.h" #include "target/arm/gtimer.h" diff --git a/hw/cpu/a9mpcore.c b/hw/cpu/a9mpcore.c index 9f8e0f70c49..2127f955789 100644 --- a/hw/cpu/a9mpcore.c +++ b/hw/cpu/a9mpcore.c @@ -13,7 +13,7 @@ #include "qemu/module.h" #include "hw/cpu/a9mpcore.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/cpu.h" #include "target/arm/cpu-qom.h" =20 diff --git a/hw/cpu/arm11mpcore.c b/hw/cpu/arm11mpcore.c index 1953d12f61b..f3a5174c1f9 100644 --- a/hw/cpu/arm11mpcore.c +++ b/hw/cpu/arm11mpcore.c @@ -13,7 +13,7 @@ #include "hw/cpu/arm11mpcore.h" #include "hw/intc/realview_gic.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 #define ARM11MPCORE_NUM_GIC_PRIORITY_BITS 4 =20 diff --git a/hw/cpu/cluster.c b/hw/cpu/cluster.c index ef3b3d1e940..628fe333673 100644 --- a/hw/cpu/cluster.c +++ b/hw/cpu/cluster.c @@ -22,7 +22,7 @@ =20 #include "hw/core/cpu.h" #include "hw/cpu/cluster.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" =20 static const Property cpu_cluster_properties[] =3D { diff --git a/hw/cxl/switch-mailbox-cci.c b/hw/cxl/switch-mailbox-cci.c index 223f2204331..5ba587b4e55 100644 --- a/hw/cxl/switch-mailbox-cci.c +++ b/hw/cxl/switch-mailbox-cci.c @@ -14,7 +14,7 @@ #include "qapi/error.h" #include "qemu/log.h" #include "qemu/module.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/cxl/cxl.h" =20 #define CXL_SWCCI_MSIX_MBOX 3 diff --git a/hw/display/artist.c b/hw/display/artist.c index e6fed03786e..22524d9c5fe 100644 --- a/hw/display/artist.c +++ b/hw/display/artist.c @@ -17,7 +17,7 @@ #include "hw/sysbus.h" #include "hw/core/loader.h" #include "hw/core/qdev.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "ui/console.h" #include "trace.h" diff --git a/hw/display/ati.c b/hw/display/ati.c index f7c0006a879..e9c3ad2cd15 100644 --- a/hw/display/ati.c +++ b/hw/display/ati.c @@ -20,7 +20,7 @@ #include "ati_int.h" #include "ati_regs.h" #include "vga-access.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "vga_regs.h" #include "qemu/bswap.h" #include "qemu/log.h" diff --git a/hw/display/bcm2835_fb.c b/hw/display/bcm2835_fb.c index f8f13b55cb4..8eec0dc600b 100644 --- a/hw/display/bcm2835_fb.c +++ b/hw/display/bcm2835_fb.c @@ -31,7 +31,7 @@ #include "framebuffer.h" #include "ui/pixel_ops.h" #include "hw/misc/bcm2835_mbox_defs.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/display/bochs-display.c b/hw/display/bochs-display.c index ad2821c9745..5fb6b733cb5 100644 --- a/hw/display/bochs-display.c +++ b/hw/display/bochs-display.c @@ -9,7 +9,7 @@ #include "qemu/module.h" #include "qemu/units.h" #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "hw/display/bochs-vbe.h" #include "hw/display/edid.h" diff --git a/hw/display/cg3.c b/hw/display/cg3.c index 5ec09b63247..f4067d7825a 100644 --- a/hw/display/cg3.c +++ b/hw/display/cg3.c @@ -32,7 +32,7 @@ #include "migration/vmstate.h" #include "hw/core/irq.h" #include "hw/core/loader.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/log.h" #include "qemu/module.h" #include "trace.h" diff --git a/hw/display/cirrus_vga.c b/hw/display/cirrus_vga.c index ef08694626d..37228ff1345 100644 --- a/hw/display/cirrus_vga.c +++ b/hw/display/cirrus_vga.c @@ -40,7 +40,7 @@ #include "qapi/error.h" #include "trace.h" #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "ui/pixel_ops.h" #include "vga_regs.h" diff --git a/hw/display/cirrus_vga_isa.c b/hw/display/cirrus_vga_isa.c index 5cacf4fc127..bad9ec7599c 100644 --- a/hw/display/cirrus_vga_isa.c +++ b/hw/display/cirrus_vga_isa.c @@ -27,7 +27,7 @@ #include "qapi/error.h" #include "qemu/module.h" #include "hw/core/loader.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/isa/isa.h" #include "cirrus_vga_internal.h" #include "qom/object.h" diff --git a/hw/display/dm163.c b/hw/display/dm163.c index e78804693cd..4feae912945 100644 --- a/hw/display/dm163.c +++ b/hw/display/dm163.c @@ -18,7 +18,7 @@ #include "qapi/error.h" #include "migration/vmstate.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/display/dm163.h" #include "ui/console.h" #include "trace.h" diff --git a/hw/display/exynos4210_fimd.c b/hw/display/exynos4210_fimd.c index 8d8062f427c..8e3a61ed0e8 100644 --- a/hw/display/exynos4210_fimd.c +++ b/hw/display/exynos4210_fimd.c @@ -23,7 +23,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/hw.h" #include "hw/core/irq.h" #include "hw/sysbus.h" diff --git a/hw/display/g364fb.c b/hw/display/g364fb.c index 10686cd6763..8ed3e6ecc37 100644 --- a/hw/display/g364fb.c +++ b/hw/display/g364fb.c @@ -21,7 +21,7 @@ #include "qemu/units.h" #include "hw/hw.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qemu/error-report.h" #include "qemu/module.h" diff --git a/hw/display/i2c-ddc.c b/hw/display/i2c-ddc.c index 2adfc1a1472..1fddc5807a0 100644 --- a/hw/display/i2c-ddc.c +++ b/hw/display/i2c-ddc.c @@ -20,7 +20,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "hw/i2c/i2c.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "hw/display/i2c-ddc.h" =20 diff --git a/hw/display/macfb.c b/hw/display/macfb.c index 574d667173c..fa3572ead34 100644 --- a/hw/display/macfb.c +++ b/hw/display/macfb.c @@ -18,7 +18,7 @@ #include "hw/nubus/nubus.h" #include "hw/display/macfb.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "trace.h" =20 diff --git a/hw/display/pl110.c b/hw/display/pl110.c index e78a55184e9..2537c264625 100644 --- a/hw/display/pl110.c +++ b/hw/display/pl110.c @@ -10,7 +10,7 @@ #include "qemu/osdep.h" #include "hw/core/irq.h" #include "hw/sysbus.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "ui/console.h" #include "framebuffer.h" diff --git a/hw/display/qxl.c b/hw/display/qxl.c index 18f482ca7f7..f29b736722c 100644 --- a/hw/display/qxl.c +++ b/hw/display/qxl.c @@ -28,7 +28,7 @@ #include "qemu/atomic.h" #include "qemu/main-loop.h" #include "qemu/module.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/runstate.h" #include "migration/cpr.h" #include "migration/vmstate.h" diff --git a/hw/display/ramfb-standalone.c b/hw/display/ramfb-standalone.c index 130f4e01df0..f1958be32ad 100644 --- a/hw/display/ramfb-standalone.c +++ b/hw/display/ramfb-standalone.c @@ -3,7 +3,7 @@ #include "qapi/error.h" #include "qemu/module.h" #include "hw/core/loader.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/display/ramfb.h" #include "ui/console.h" #include "qom/object.h" diff --git a/hw/display/sm501.c b/hw/display/sm501.c index bc091b3c9fb..6ccec03fe72 100644 --- a/hw/display/sm501.c +++ b/hw/display/sm501.c @@ -35,7 +35,7 @@ #include "hw/sysbus.h" #include "migration/vmstate.h" #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/i2c/i2c.h" #include "hw/display/i2c-ddc.h" #include "qemu/range.h" diff --git a/hw/display/tcx.c b/hw/display/tcx.c index dfe234e3354..b208923523a 100644 --- a/hw/display/tcx.c +++ b/hw/display/tcx.c @@ -28,7 +28,7 @@ #include "ui/console.h" #include "ui/pixel_ops.h" #include "hw/core/loader.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "qemu/error-report.h" diff --git a/hw/display/vga-isa.c b/hw/display/vga-isa.c index d2213b0f3e6..95d85ff69a5 100644 --- a/hw/display/vga-isa.c +++ b/hw/display/vga-isa.c @@ -31,7 +31,7 @@ #include "qemu/module.h" #include "qemu/timer.h" #include "hw/core/loader.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "ui/console.h" #include "qom/object.h" =20 diff --git a/hw/display/vga-mmio.c b/hw/display/vga-mmio.c index 33263856b76..4c497b70f41 100644 --- a/hw/display/vga-mmio.c +++ b/hw/display/vga-mmio.c @@ -26,7 +26,7 @@ #include "qapi/error.h" #include "hw/sysbus.h" #include "hw/display/vga.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "ui/console.h" #include "vga_int.h" =20 diff --git a/hw/display/vga-pci.c b/hw/display/vga-pci.c index 7a39bb9b213..d0f9de1ab35 100644 --- a/hw/display/vga-pci.c +++ b/hw/display/vga-pci.c @@ -26,7 +26,7 @@ =20 #include "qemu/osdep.h" #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "vga_int.h" #include "ui/pixel_ops.h" diff --git a/hw/display/vhost-user-gpu.c b/hw/display/vhost-user-gpu.c index 9fc6bbcd2ce..3f6fb7a8033 100644 --- a/hw/display/vhost-user-gpu.c +++ b/hw/display/vhost-user-gpu.c @@ -13,7 +13,7 @@ #include "qemu/osdep.h" #include "qemu/error-report.h" #include "qemu/sockets.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio-gpu.h" #include "chardev/char-fe.h" #include "qapi/error.h" diff --git a/hw/display/virtio-gpu-gl.c b/hw/display/virtio-gpu-gl.c index c06a078fb36..b98ef2ef987 100644 --- a/hw/display/virtio-gpu-gl.c +++ b/hw/display/virtio-gpu-gl.c @@ -21,7 +21,7 @@ #include "hw/virtio/virtio-gpu.h" #include "hw/virtio/virtio-gpu-bswap.h" #include "hw/virtio/virtio-gpu-pixman.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 #include =20 diff --git a/hw/display/virtio-gpu-pci-gl.c b/hw/display/virtio-gpu-pci-gl.c index a2819e1ca93..c8923795dfa 100644 --- a/hw/display/virtio-gpu-pci-gl.c +++ b/hw/display/virtio-gpu-pci-gl.c @@ -15,7 +15,7 @@ #include "qapi/error.h" #include "qemu/module.h" #include "hw/pci/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio.h" #include "hw/virtio/virtio-bus.h" #include "hw/virtio/virtio-gpu-pci.h" diff --git a/hw/display/virtio-gpu-pci-rutabaga.c b/hw/display/virtio-gpu-p= ci-rutabaga.c index 5fdff37f2c1..4db77cb868d 100644 --- a/hw/display/virtio-gpu-pci-rutabaga.c +++ b/hw/display/virtio-gpu-pci-rutabaga.c @@ -4,7 +4,7 @@ #include "qapi/error.h" #include "qemu/module.h" #include "hw/pci/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio.h" #include "hw/virtio/virtio-bus.h" #include "hw/virtio/virtio-gpu-pci.h" diff --git a/hw/display/virtio-gpu-pci.c b/hw/display/virtio-gpu-pci.c index c0d71b6254c..22659ca196b 100644 --- a/hw/display/virtio-gpu-pci.c +++ b/hw/display/virtio-gpu-pci.c @@ -15,7 +15,7 @@ #include "qapi/error.h" #include "qemu/module.h" #include "hw/pci/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio.h" #include "hw/virtio/virtio-bus.h" #include "hw/virtio/virtio-gpu-pci.h" diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index 43e88a4daff..f23eec6862a 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -26,7 +26,7 @@ #include "hw/virtio/virtio-gpu-bswap.h" #include "hw/virtio/virtio-gpu-pixman.h" #include "hw/virtio/virtio-bus.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/log.h" #include "qemu/memfd.h" #include "qemu/module.h" diff --git a/hw/display/virtio-vga-gl.c b/hw/display/virtio-vga-gl.c index 984faa6b39a..178e4c71725 100644 --- a/hw/display/virtio-vga-gl.c +++ b/hw/display/virtio-vga-gl.c @@ -1,6 +1,6 @@ #include "qemu/osdep.h" #include "hw/pci/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio-gpu.h" #include "hw/display/vga.h" #include "qapi/error.h" diff --git a/hw/display/virtio-vga-rutabaga.c b/hw/display/virtio-vga-rutab= aga.c index a7bef6da248..1e07ee0b0d3 100644 --- a/hw/display/virtio-vga-rutabaga.c +++ b/hw/display/virtio-vga-rutabaga.c @@ -2,7 +2,7 @@ =20 #include "qemu/osdep.h" #include "hw/pci/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio-gpu.h" #include "hw/display/vga.h" #include "qapi/error.h" diff --git a/hw/display/virtio-vga.c b/hw/display/virtio-vga.c index 40e60f70fcd..5e087169f2f 100644 --- a/hw/display/virtio-vga.c +++ b/hw/display/virtio-vga.c @@ -1,6 +1,6 @@ #include "qemu/osdep.h" #include "hw/pci/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio-gpu.h" #include "qapi/error.h" #include "qemu/module.h" diff --git a/hw/display/vmware_vga.c b/hw/display/vmware_vga.c index 7ca5a551426..ea7a9fca04e 100644 --- a/hw/display/vmware_vga.c +++ b/hw/display/vmware_vga.c @@ -30,7 +30,7 @@ #include "hw/core/loader.h" #include "trace.h" #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qom/object.h" #include "ui/console.h" diff --git a/hw/dma/i82374.c b/hw/dma/i82374.c index e226eda6d15..c909cf46401 100644 --- a/hw/dma/i82374.c +++ b/hw/dma/i82374.c @@ -26,7 +26,7 @@ #include "qapi/error.h" #include "qemu/module.h" #include "hw/isa/isa.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "hw/dma/i8257.h" #include "qom/object.h" diff --git a/hw/dma/i8257.c b/hw/dma/i8257.c index 2463952ada2..d909d6c8fc2 100644 --- a/hw/dma/i8257.c +++ b/hw/dma/i8257.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/isa/isa.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "hw/dma/i8257.h" #include "qapi/error.h" diff --git a/hw/dma/pl080.c b/hw/dma/pl080.c index 28f79371646..bd61d8ed488 100644 --- a/hw/dma/pl080.c +++ b/hw/dma/pl080.c @@ -15,7 +15,7 @@ #include "hw/dma/pl080.h" #include "hw/hw.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" =20 #define PL080_CONF_E 0x1 diff --git a/hw/dma/pl330.c b/hw/dma/pl330.c index a9e6d2746f0..4f00092f856 100644 --- a/hw/dma/pl330.c +++ b/hw/dma/pl330.c @@ -17,7 +17,7 @@ #include "qemu/osdep.h" #include "qemu/cutils.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "qapi/error.h" diff --git a/hw/dma/sifive_pdma.c b/hw/dma/sifive_pdma.c index bae77544b23..2fbc37ffd14 100644 --- a/hw/dma/sifive_pdma.c +++ b/hw/dma/sifive_pdma.c @@ -25,7 +25,7 @@ #include "qemu/log.h" #include "qapi/error.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "system/dma.h" diff --git a/hw/dma/sparc32_dma.c b/hw/dma/sparc32_dma.c index 9f56faf9a53..5601d221ec2 100644 --- a/hw/dma/sparc32_dma.c +++ b/hw/dma/sparc32_dma.c @@ -27,7 +27,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sparc/sparc32_dma.h" #include "hw/sparc/sun4m_iommu.h" #include "hw/sysbus.h" diff --git a/hw/dma/xilinx_axidma.c b/hw/dma/xilinx_axidma.c index 15da3fcbc2c..7cdd76330f3 100644 --- a/hw/dma/xilinx_axidma.c +++ b/hw/dma/xilinx_axidma.c @@ -29,7 +29,7 @@ #include "hw/hw.h" #include "hw/core/irq.h" #include "hw/core/ptimer.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/log.h" #include "qemu/module.h" =20 diff --git a/hw/dma/xlnx-zdma.c b/hw/dma/xlnx-zdma.c index 660fc21b6d1..306c56c3ef5 100644 --- a/hw/dma/xlnx-zdma.c +++ b/hw/dma/xlnx-zdma.c @@ -29,7 +29,7 @@ #include "qemu/osdep.h" #include "hw/dma/xlnx-zdma.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qemu/bitops.h" #include "qemu/log.h" diff --git a/hw/dma/xlnx_csu_dma.c b/hw/dma/xlnx_csu_dma.c index 92f445034e8..650401614ed 100644 --- a/hw/dma/xlnx_csu_dma.c +++ b/hw/dma/xlnx_csu_dma.c @@ -22,7 +22,7 @@ #include "qemu/log.h" #include "qapi/error.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "system/dma.h" diff --git a/hw/fsi/cfam.c b/hw/fsi/cfam.c index e2145c5934b..54c0b05769d 100644 --- a/hw/fsi/cfam.c +++ b/hw/fsi/cfam.c @@ -14,7 +14,7 @@ #include "hw/fsi/cfam.h" #include "hw/fsi/fsi.h" =20 -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 #define ENGINE_CONFIG_NEXT BIT(31) #define ENGINE_CONFIG_TYPE_PEEK (0x02 << 4) diff --git a/hw/fsi/lbus.c b/hw/fsi/lbus.c index 8ec7f5fd780..cae29e0658b 100644 --- a/hw/fsi/lbus.c +++ b/hw/fsi/lbus.c @@ -8,7 +8,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/fsi/lbus.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/log.h" #include "trace.h" =20 diff --git a/hw/gpio/imx_gpio.c b/hw/gpio/imx_gpio.c index 842c997a2a6..5abf208df47 100644 --- a/hw/gpio/imx_gpio.c +++ b/hw/gpio/imx_gpio.c @@ -20,7 +20,7 @@ #include "qemu/osdep.h" #include "hw/gpio/imx_gpio.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/gpio/npcm7xx_gpio.c b/hw/gpio/npcm7xx_gpio.c index 59b95d232bf..ad19b9fd427 100644 --- a/hw/gpio/npcm7xx_gpio.c +++ b/hw/gpio/npcm7xx_gpio.c @@ -17,7 +17,7 @@ =20 #include "hw/gpio/npcm7xx_gpio.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qemu/log.h" diff --git a/hw/gpio/omap_gpio.c b/hw/gpio/omap_gpio.c index 547f0a15a27..0c2a0f9aa6c 100644 --- a/hw/gpio/omap_gpio.c +++ b/hw/gpio/omap_gpio.c @@ -21,7 +21,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/arm/omap.h" #include "hw/sysbus.h" #include "qemu/error-report.h" diff --git a/hw/gpio/pca9552.c b/hw/gpio/pca9552.c index fe1d8dbffa2..dd3c795e49a 100644 --- a/hw/gpio/pca9552.c +++ b/hw/gpio/pca9552.c @@ -14,7 +14,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "qemu/bitops.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/gpio/pca9552.h" #include "hw/gpio/pca9552_regs.h" #include "hw/core/irq.h" diff --git a/hw/gpio/pca9554.c b/hw/gpio/pca9554.c index c6cdd27b3ff..8427e01e9b2 100644 --- a/hw/gpio/pca9554.c +++ b/hw/gpio/pca9554.c @@ -10,7 +10,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "qemu/bitops.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/gpio/pca9554.h" #include "hw/gpio/pca9554_regs.h" #include "hw/core/irq.h" diff --git a/hw/gpio/pl061.c b/hw/gpio/pl061.c index 09b32247127..55f51b6cf20 100644 --- a/hw/gpio/pl061.c +++ b/hw/gpio/pl061.c @@ -32,7 +32,7 @@ #include "qemu/osdep.h" #include "hw/core/irq.h" #include "hw/sysbus.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qemu/log.h" diff --git a/hw/gpio/sifive_gpio.c b/hw/gpio/sifive_gpio.c index 63ca721fadd..b7a56935c05 100644 --- a/hw/gpio/sifive_gpio.c +++ b/hw/gpio/sifive_gpio.c @@ -14,7 +14,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/gpio/sifive_gpio.h" #include "migration/vmstate.h" #include "trace.h" diff --git a/hw/gpio/stm32l4x5_gpio.c b/hw/gpio/stm32l4x5_gpio.c index 5686bd53c23..92fa397fbaf 100644 --- a/hw/gpio/stm32l4x5_gpio.c +++ b/hw/gpio/stm32l4x5_gpio.c @@ -22,7 +22,7 @@ #include "hw/core/irq.h" #include "hw/core/clock.h" #include "hw/core/qdev-clock.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/visitor.h" #include "qapi/error.h" #include "migration/vmstate.h" diff --git a/hw/hyperv/hv-balloon.c b/hw/hyperv/hv-balloon.c index deb20d7b6a3..9dd759f11e8 100644 --- a/hw/hyperv/hv-balloon.c +++ b/hw/hyperv/hv-balloon.c @@ -20,7 +20,7 @@ #include "hw/mem/memory-device.h" #include "hw/mem/pc-dimm.h" #include "hw/core/qdev.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "monitor/qdev.h" #include "qapi/error.h" #include "qapi/qapi-commands-machine.h" diff --git a/hw/hyperv/syndbg.c b/hw/hyperv/syndbg.c index 29908e886b4..dc6cc84b503 100644 --- a/hw/hyperv/syndbg.c +++ b/hw/hyperv/syndbg.c @@ -13,7 +13,7 @@ #include "qemu/units.h" #include "qapi/error.h" #include "migration/vmstate.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/loader.h" #include "exec/target_page.h" #include "hw/hyperv/hyperv.h" diff --git a/hw/hyperv/vmbus.c b/hw/hyperv/vmbus.c index 961406cdd6a..639d932b094 100644 --- a/hw/hyperv/vmbus.c +++ b/hw/hyperv/vmbus.c @@ -13,7 +13,7 @@ #include "exec/target_page.h" #include "qapi/error.h" #include "migration/vmstate.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/hyperv/hyperv.h" #include "hw/hyperv/vmbus.h" diff --git a/hw/i2c/aspeed_i2c.c b/hw/i2c/aspeed_i2c.c index 3d66dd863a1..e3ca77865bd 100644 --- a/hw/i2c/aspeed_i2c.c +++ b/hw/i2c/aspeed_i2c.c @@ -28,7 +28,7 @@ #include "qapi/error.h" #include "hw/i2c/aspeed_i2c.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/registerfields.h" #include "trace.h" =20 diff --git a/hw/i2c/core.c b/hw/i2c/core.c index 4b6345b5889..54f6bdca882 100644 --- a/hw/i2c/core.c +++ b/hw/i2c/core.c @@ -9,7 +9,7 @@ =20 #include "qemu/osdep.h" #include "hw/i2c/i2c.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qemu/module.h" diff --git a/hw/i2c/i2c_mux_pca954x.c b/hw/i2c/i2c_mux_pca954x.c index fd317f56701..7802c68452f 100644 --- a/hw/i2c/i2c_mux_pca954x.c +++ b/hw/i2c/i2c_mux_pca954x.c @@ -20,7 +20,7 @@ #include "hw/i2c/i2c_mux_pca954x.h" #include "hw/i2c/smbus_slave.h" #include "hw/core/qdev.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/i2c/omap_i2c.c b/hw/i2c/omap_i2c.c index 6ac151d8515..c768f99e384 100644 --- a/hw/i2c/omap_i2c.c +++ b/hw/i2c/omap_i2c.c @@ -22,7 +22,7 @@ #include "qemu/module.h" #include "hw/i2c/i2c.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/arm/omap.h" #include "hw/sysbus.h" #include "qemu/error-report.h" diff --git a/hw/i2c/smbus_eeprom.c b/hw/i2c/smbus_eeprom.c index ce3723e1483..d9ac556a0ab 100644 --- a/hw/i2c/smbus_eeprom.c +++ b/hw/i2c/smbus_eeprom.c @@ -28,7 +28,7 @@ #include "hw/core/boards.h" #include "hw/i2c/i2c.h" #include "hw/i2c/smbus_slave.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "hw/i2c/smbus_eeprom.h" #include "qom/object.h" diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index d689a06eca4..789e09d6f2b 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -31,7 +31,7 @@ #include "hw/i386/apic_internal.h" #include "trace.h" #include "hw/i386/apic-msidef.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "kvm/kvm_i386.h" #include "qemu/iova-tree.h" =20 diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 78b142cceab..f744be9f70f 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -27,7 +27,7 @@ #include "intel_iommu_internal.h" #include "hw/pci/pci.h" #include "hw/pci/pci_bus.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/i386/pc.h" #include "hw/i386/apic-msidef.h" #include "hw/i386/x86-iommu.h" diff --git a/hw/i386/kvm/clock.c b/hw/i386/kvm/clock.c index f56382717f7..310b9a8eb5a 100644 --- a/hw/i386/kvm/clock.c +++ b/hw/i386/kvm/clock.c @@ -23,7 +23,7 @@ #include "migration/vmstate.h" #include "hw/sysbus.h" #include "hw/i386/kvm/clock.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" =20 #include diff --git a/hw/i386/kvm/ioapic.c b/hw/i386/kvm/ioapic.c index 693ee978a12..ba7888e3d1e 100644 --- a/hw/i386/kvm/ioapic.c +++ b/hw/i386/kvm/ioapic.c @@ -12,7 +12,7 @@ =20 #include "qemu/osdep.h" #include "monitor/monitor.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/intc/ioapic_internal.h" #include "hw/intc/kvm_irqcount.h" #include "system/kvm.h" diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index 5fd2f9d1e0c..18158ad15e4 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -40,7 +40,7 @@ #include "hw/i386/kvm/clock.h" #include "hw/pci-host/q35.h" #include "hw/pci/pcie_port.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/i386/x86.h" #include "hw/i386/pc.h" #include "hw/i386/amd_iommu.h" diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c index 4d64aa15550..906df5e7886 100644 --- a/hw/i386/pc_sysfw.c +++ b/hw/i386/pc_sysfw.c @@ -33,7 +33,7 @@ #include "hw/i386/x86.h" #include "hw/i386/pc.h" #include "hw/core/loader.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/block/flash.h" #include "system/kvm.h" #include "target/i386/sev.h" diff --git a/hw/i386/sgx-epc.c b/hw/i386/sgx-epc.c index 2b3b2823b5f..d3fe10028c5 100644 --- a/hw/i386/sgx-epc.c +++ b/hw/i386/sgx-epc.c @@ -13,7 +13,7 @@ #include "hw/i386/pc.h" #include "hw/i386/sgx-epc.h" #include "hw/mem/memory-device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qapi/visitor.h" #include "target/i386/cpu.h" diff --git a/hw/i386/vmmouse.c b/hw/i386/vmmouse.c index 3896159b055..2ae7f3a242e 100644 --- a/hw/i386/vmmouse.c +++ b/hw/i386/vmmouse.c @@ -27,7 +27,7 @@ #include "ui/console.h" #include "hw/i386/vmport.h" #include "hw/input/i8042.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "cpu.h" #include "qom/object.h" diff --git a/hw/i386/vmport.c b/hw/i386/vmport.c index 32e02e1eeb0..865e0e70db6 100644 --- a/hw/i386/vmport.c +++ b/hw/i386/vmport.c @@ -31,7 +31,7 @@ #include "qemu/osdep.h" #include "hw/isa/isa.h" #include "hw/i386/vmport.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/boards.h" #include "system/system.h" #include "system/hw_accel.h" diff --git a/hw/i386/x86-iommu.c b/hw/i386/x86-iommu.c index c127a44bb4b..21e0d40e114 100644 --- a/hw/i386/x86-iommu.c +++ b/hw/i386/x86-iommu.c @@ -20,7 +20,7 @@ #include "qemu/osdep.h" #include "hw/sysbus.h" #include "hw/i386/x86-iommu.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/i386/pc.h" #include "qapi/error.h" #include "qemu/error-report.h" diff --git a/hw/i386/xen/xen_pvdevice.c b/hw/i386/xen/xen_pvdevice.c index 87a974ae5a0..fab26a06af1 100644 --- a/hw/i386/xen/xen_pvdevice.c +++ b/hw/i386/xen/xen_pvdevice.c @@ -33,7 +33,7 @@ #include "qapi/error.h" #include "qemu/module.h" #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "trace.h" #include "qom/object.h" diff --git a/hw/ide/ahci-sysbus.c b/hw/ide/ahci-sysbus.c index 210818d0479..c722e91be1c 100644 --- a/hw/ide/ahci-sysbus.c +++ b/hw/ide/ahci-sysbus.c @@ -23,7 +23,7 @@ =20 #include "qemu/osdep.h" #include "system/address-spaces.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" =20 #include "hw/ide/ahci-sysbus.h" diff --git a/hw/ide/cmd646.c b/hw/ide/cmd646.c index 2a59516a9dd..d44a90a1622 100644 --- a/hw/ide/cmd646.c +++ b/hw/ide/cmd646.c @@ -25,7 +25,7 @@ =20 #include "qemu/osdep.h" #include "hw/pci/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qemu/module.h" #include "hw/isa/isa.h" diff --git a/hw/ide/isa.c b/hw/ide/isa.c index 5f418413c18..c97b7a1ff4d 100644 --- a/hw/ide/isa.c +++ b/hw/ide/isa.c @@ -25,7 +25,7 @@ =20 #include "qemu/osdep.h" #include "hw/isa/isa.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qemu/module.h" diff --git a/hw/ide/macio.c b/hw/ide/macio.c index 07db7dc34aa..a7ed41fa265 100644 --- a/hw/ide/macio.c +++ b/hw/ide/macio.c @@ -26,7 +26,7 @@ #include "qemu/osdep.h" #include "hw/core/irq.h" #include "hw/ppc/mac_dbdma.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qemu/module.h" #include "hw/misc/macio/macio.h" diff --git a/hw/ide/mmio.c b/hw/ide/mmio.c index 699874db785..04b56ac5d86 100644 --- a/hw/ide/mmio.c +++ b/hw/ide/mmio.c @@ -30,7 +30,7 @@ #include "system/dma.h" =20 #include "hw/ide/mmio.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "ide-internal.h" =20 /***********************************************************/ diff --git a/hw/input/adb.c b/hw/input/adb.c index bcb11edca35..29c09c75596 100644 --- a/hw/input/adb.c +++ b/hw/input/adb.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/input/adb.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qemu/module.h" #include "qemu/timer.h" diff --git a/hw/input/lasips2.c b/hw/input/lasips2.c index 70a179907ca..e34e9cb5c02 100644 --- a/hw/input/lasips2.c +++ b/hw/input/lasips2.c @@ -23,7 +23,7 @@ */ #include "qemu/osdep.h" #include "qemu/log.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "hw/input/ps2.h" #include "hw/input/lasips2.h" diff --git a/hw/input/pckbd.c b/hw/input/pckbd.c index 48b457cac76..b09c3bce933 100644 --- a/hw/input/pckbd.c +++ b/hw/input/pckbd.c @@ -33,7 +33,7 @@ #include "hw/input/ps2.h" #include "hw/core/irq.h" #include "hw/input/i8042.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/reset.h" #include "system/runstate.h" =20 diff --git a/hw/input/stellaris_gamepad.c b/hw/input/stellaris_gamepad.c index bd80db6fac5..f64f5ea9ce3 100644 --- a/hw/input/stellaris_gamepad.c +++ b/hw/input/stellaris_gamepad.c @@ -11,7 +11,7 @@ #include "qapi/error.h" #include "hw/input/stellaris_gamepad.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "ui/console.h" =20 diff --git a/hw/input/virtio-input-hid.c b/hw/input/virtio-input-hid.c index d986c3c16e3..bcbfef0b905 100644 --- a/hw/input/virtio-input-hid.c +++ b/hw/input/virtio-input-hid.c @@ -9,7 +9,7 @@ #include "qemu/module.h" =20 #include "hw/virtio/virtio.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio-input.h" =20 #include "ui/console.h" diff --git a/hw/input/virtio-input-host.c b/hw/input/virtio-input-host.c index 9f62532559d..633547cc4f7 100644 --- a/hw/input/virtio-input-host.c +++ b/hw/input/virtio-input-host.c @@ -10,7 +10,7 @@ #include "qemu/sockets.h" =20 #include "hw/virtio/virtio.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio-input.h" =20 #include diff --git a/hw/input/virtio-input.c b/hw/input/virtio-input.c index a3f554f2110..6494cfbbe82 100644 --- a/hw/input/virtio-input.c +++ b/hw/input/virtio-input.c @@ -11,7 +11,7 @@ #include "trace.h" =20 #include "hw/virtio/virtio.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio-input.h" =20 #include "standard-headers/linux/input.h" diff --git a/hw/intc/apic_common.c b/hw/intc/apic_common.c index 83e1bc2d759..afac20440f8 100644 --- a/hw/intc/apic_common.c +++ b/hw/intc/apic_common.c @@ -29,7 +29,7 @@ #include "trace.h" #include "hw/core/boards.h" #include "system/kvm.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "migration/vmstate.h" =20 diff --git a/hw/intc/arm_gic_common.c b/hw/intc/arm_gic_common.c index ed5be056452..304d89cf562 100644 --- a/hw/intc/arm_gic_common.c +++ b/hw/intc/arm_gic_common.c @@ -24,7 +24,7 @@ #include "qemu/error-report.h" #include "gic_internal.h" #include "hw/arm/linux-boot-if.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "system/kvm.h" =20 diff --git a/hw/intc/arm_gicv2m.c b/hw/intc/arm_gicv2m.c index e823fcc97fc..c39d31b1870 100644 --- a/hw/intc/arm_gicv2m.c +++ b/hw/intc/arm_gicv2m.c @@ -30,7 +30,7 @@ #include "hw/sysbus.h" #include "hw/core/irq.h" #include "hw/pci/msi.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/kvm.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/intc/arm_gicv3_common.c b/hw/intc/arm_gicv3_common.c index 2d0df6da86c..0a2e5a3e2fc 100644 --- a/hw/intc/arm_gicv3_common.c +++ b/hw/intc/arm_gicv3_common.c @@ -27,7 +27,7 @@ #include "qemu/error-report.h" #include "hw/core/cpu.h" #include "hw/intc/arm_gicv3_common.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "gicv3_internal.h" #include "hw/arm/linux-boot-if.h" diff --git a/hw/intc/arm_gicv3_its.c b/hw/intc/arm_gicv3_its.c index 577b4454057..cce3486d74c 100644 --- a/hw/intc/arm_gicv3_its.c +++ b/hw/intc/arm_gicv3_its.c @@ -14,7 +14,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "trace.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/intc/arm_gicv3_its_common.h" #include "gicv3_internal.h" #include "qom/object.h" diff --git a/hw/intc/arm_gicv3_its_kvm.c b/hw/intc/arm_gicv3_its_kvm.c index 9812d508597..ae12d41eee1 100644 --- a/hw/intc/arm_gicv3_its_kvm.c +++ b/hw/intc/arm_gicv3_its_kvm.c @@ -23,7 +23,7 @@ #include "qemu/module.h" #include "qemu/error-report.h" #include "hw/intc/arm_gicv3_its_common.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/runstate.h" #include "system/kvm.h" #include "kvm_arm.h" diff --git a/hw/intc/armv7m_nvic.c b/hw/intc/armv7m_nvic.c index bb39a690a59..5fa210c6335 100644 --- a/hw/intc/armv7m_nvic.c +++ b/hw/intc/armv7m_nvic.c @@ -17,7 +17,7 @@ #include "qemu/timer.h" #include "hw/intc/armv7m_nvic.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/tcg.h" #include "system/runstate.h" #include "target/arm/cpu.h" diff --git a/hw/intc/exynos4210_combiner.c b/hw/intc/exynos4210_combiner.c index b9e74d19c37..8bea69d91b7 100644 --- a/hw/intc/exynos4210_combiner.c +++ b/hw/intc/exynos4210_combiner.c @@ -35,7 +35,7 @@ #include "hw/arm/exynos4210.h" #include "hw/hw.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qom/object.h" =20 //#define DEBUG_COMBINER diff --git a/hw/intc/exynos4210_gic.c b/hw/intc/exynos4210_gic.c index 5b156f7ef5a..a65c9c6d28b 100644 --- a/hw/intc/exynos4210_gic.c +++ b/hw/intc/exynos4210_gic.c @@ -26,7 +26,7 @@ #include "qapi/error.h" #include "qemu/module.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/intc/exynos4210_gic.h" #include "hw/arm/exynos4210.h" #include "qom/object.h" diff --git a/hw/intc/goldfish_pic.c b/hw/intc/goldfish_pic.c index 7aaccba75ae..96e7d5c225f 100644 --- a/hw/intc/goldfish_pic.c +++ b/hw/intc/goldfish_pic.c @@ -9,7 +9,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "qemu/log.h" diff --git a/hw/intc/grlib_irqmp.c b/hw/intc/grlib_irqmp.c index bb2ee5f8015..ce7cbc98c17 100644 --- a/hw/intc/grlib_irqmp.c +++ b/hw/intc/grlib_irqmp.c @@ -30,7 +30,7 @@ #include "hw/core/irq.h" #include "hw/sysbus.h" =20 -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/intc/grlib_irqmp.h" =20 #include "trace.h" diff --git a/hw/intc/i8259_common.c b/hw/intc/i8259_common.c index 602e44c8eaf..8ceb5841b9b 100644 --- a/hw/intc/i8259_common.c +++ b/hw/intc/i8259_common.c @@ -26,7 +26,7 @@ #include "qemu/osdep.h" #include "hw/intc/i8259.h" #include "hw/isa/i8259_internal.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qapi/error.h" =20 diff --git a/hw/intc/ioapic.c b/hw/intc/ioapic.c index 38e43846486..98de6ca8108 100644 --- a/hw/intc/ioapic.c +++ b/hw/intc/ioapic.c @@ -29,7 +29,7 @@ #include "hw/intc/ioapic.h" #include "hw/intc/ioapic_internal.h" #include "hw/pci/msi.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/accel-irq.h" #include "system/kvm.h" #include "system/system.h" diff --git a/hw/intc/loongarch_dintc.c b/hw/intc/loongarch_dintc.c index 082755d28bb..574e4a0d277 100644 --- a/hw/intc/loongarch_dintc.c +++ b/hw/intc/loongarch_dintc.c @@ -15,7 +15,7 @@ #include "hw/misc/unimp.h" #include "migration/vmstate.h" #include "trace.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "target/loongarch/cpu.h" #include "qemu/error-report.h" #include "system/hw_accel.h" diff --git a/hw/intc/loongarch_extioi_common.c b/hw/intc/loongarch_extioi_c= ommon.c index ba03383ed19..5cb0d396c65 100644 --- a/hw/intc/loongarch_extioi_common.c +++ b/hw/intc/loongarch_extioi_common.c @@ -7,7 +7,7 @@ #include "qemu/error-report.h" #include "qemu/module.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/intc/loongarch_extioi_common.h" #include "migration/vmstate.h" #include "target/loongarch/cpu.h" diff --git a/hw/intc/loongarch_ipi.c b/hw/intc/loongarch_ipi.c index 2a4557a8baa..5d8b8c96df7 100644 --- a/hw/intc/loongarch_ipi.c +++ b/hw/intc/loongarch_ipi.c @@ -10,7 +10,7 @@ #include "hw/core/boards.h" #include "qapi/error.h" #include "hw/intc/loongarch_ipi.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/kvm.h" #include "target/loongarch/cpu.h" =20 diff --git a/hw/intc/loongarch_pic_common.c b/hw/intc/loongarch_pic_common.c index de170501cf2..309182b2fb1 100644 --- a/hw/intc/loongarch_pic_common.c +++ b/hw/intc/loongarch_pic_common.c @@ -7,7 +7,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/intc/loongarch_pic_common.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" =20 static int loongarch_pic_pre_save(void *opaque) diff --git a/hw/intc/loongson_ipi.c b/hw/intc/loongson_ipi.c index fbc73e8b001..88d22afa6ac 100644 --- a/hw/intc/loongson_ipi.c +++ b/hw/intc/loongson_ipi.c @@ -7,7 +7,7 @@ =20 #include "qemu/osdep.h" #include "hw/intc/loongson_ipi.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "target/mips/cpu.h" =20 diff --git a/hw/intc/loongson_liointc.c b/hw/intc/loongson_liointc.c index 4c24f330ed7..053d9898f8c 100644 --- a/hw/intc/loongson_liointc.c +++ b/hw/intc/loongson_liointc.c @@ -23,7 +23,7 @@ #include "qemu/module.h" #include "qemu/log.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/intc/loongson_liointc.h" =20 #define NUM_IRQS 32 diff --git a/hw/intc/m68k_irqc.c b/hw/intc/m68k_irqc.c index 67cb9acb418..c652bf143f0 100644 --- a/hw/intc/m68k_irqc.c +++ b/hw/intc/m68k_irqc.c @@ -10,7 +10,7 @@ #include "qemu/osdep.h" #include "cpu.h" #include "migration/vmstate.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/nmi.h" #include "hw/intc/intc.h" #include "hw/intc/m68k_irqc.h" diff --git a/hw/intc/mips_gic.c b/hw/intc/mips_gic.c index 08925fe1e41..e983f3a2b58 100644 --- a/hw/intc/mips_gic.c +++ b/hw/intc/mips_gic.c @@ -20,7 +20,7 @@ #include "kvm_mips.h" #include "hw/intc/mips_gic.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 static void mips_gic_set_vp_irq(MIPSGICState *gic, int vp, int pin) { diff --git a/hw/intc/omap_intc.c b/hw/intc/omap_intc.c index 7b23b6d2cec..deb21f9dc19 100644 --- a/hw/intc/omap_intc.c +++ b/hw/intc/omap_intc.c @@ -20,7 +20,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/arm/omap.h" #include "hw/sysbus.h" #include "qemu/error-report.h" diff --git a/hw/intc/ompic.c b/hw/intc/ompic.c index 5a630bd51cb..05f0ef82549 100644 --- a/hw/intc/ompic.c +++ b/hw/intc/ompic.c @@ -10,7 +10,7 @@ #include "qemu/module.h" #include "qapi/error.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "system/memory.h" diff --git a/hw/intc/openpic.c b/hw/intc/openpic.c index edac46227f5..4cc5068ffc8 100644 --- a/hw/intc/openpic.c +++ b/hw/intc/openpic.c @@ -35,7 +35,7 @@ #include "hw/pci/pci.h" #include "hw/ppc/openpic.h" #include "hw/ppc/ppc_e500.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "hw/pci/msi.h" diff --git a/hw/intc/openpic_kvm.c b/hw/intc/openpic_kvm.c index 673ea9ca055..6558135baa1 100644 --- a/hw/intc/openpic_kvm.c +++ b/hw/intc/openpic_kvm.c @@ -28,7 +28,7 @@ #include "hw/ppc/openpic.h" #include "hw/ppc/openpic_kvm.h" #include "hw/pci/msi.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "system/kvm.h" #include "qemu/log.h" diff --git a/hw/intc/pnv_xive.c b/hw/intc/pnv_xive.c index c2ca40b8be8..13ac2c6ccbf 100644 --- a/hw/intc/pnv_xive.c +++ b/hw/intc/pnv_xive.c @@ -21,7 +21,7 @@ #include "hw/ppc/pnv_xscom.h" #include "hw/ppc/pnv_xive.h" #include "hw/ppc/xive_regs.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/ppc/ppc.h" #include "trace.h" =20 diff --git a/hw/intc/pnv_xive2.c b/hw/intc/pnv_xive2.c index 0663baab544..ae424d01c42 100644 --- a/hw/intc/pnv_xive2.c +++ b/hw/intc/pnv_xive2.c @@ -22,7 +22,7 @@ #include "hw/ppc/xive_regs.h" #include "hw/ppc/xive2_regs.h" #include "hw/ppc/ppc.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/reset.h" #include "system/qtest.h" =20 diff --git a/hw/intc/ppc-uic.c b/hw/intc/ppc-uic.c index bfc4a4fbceb..5090101f077 100644 --- a/hw/intc/ppc-uic.c +++ b/hw/intc/ppc-uic.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "hw/intc/ppc-uic.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" =20 enum { diff --git a/hw/intc/realview_gic.c b/hw/intc/realview_gic.c index ecaf8201fd6..56ece334a5e 100644 --- a/hw/intc/realview_gic.c +++ b/hw/intc/realview_gic.c @@ -12,7 +12,7 @@ #include "qemu/module.h" #include "hw/intc/realview_gic.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 static void realview_gic_set_irq(void *opaque, int irq, int level) { diff --git a/hw/intc/riscv_aclint.c b/hw/intc/riscv_aclint.c index f3e37df47d1..83968ad7cca 100644 --- a/hw/intc/riscv_aclint.c +++ b/hw/intc/riscv_aclint.c @@ -29,7 +29,7 @@ #include "hw/sysbus.h" #include "target/riscv/cpu.h" #include "target/riscv/time_helper.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/intc/riscv_aclint.h" #include "qemu/timer.h" #include "hw/core/irq.h" diff --git a/hw/intc/riscv_aplic.c b/hw/intc/riscv_aplic.c index 580622d1712..cc5f30b5588 100644 --- a/hw/intc/riscv_aplic.c +++ b/hw/intc/riscv_aplic.c @@ -26,7 +26,7 @@ #include "hw/sysbus.h" #include "hw/pci/msi.h" #include "hw/core/boards.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/intc/riscv_aplic.h" #include "hw/core/irq.h" #include "target/riscv/cpu.h" diff --git a/hw/intc/riscv_imsic.c b/hw/intc/riscv_imsic.c index 54e72b81e78..bc580c000ef 100644 --- a/hw/intc/riscv_imsic.c +++ b/hw/intc/riscv_imsic.c @@ -26,7 +26,7 @@ #include "hw/sysbus.h" #include "hw/pci/msi.h" #include "hw/core/boards.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/intc/riscv_imsic.h" #include "hw/core/irq.h" #include "target/riscv/cpu.h" diff --git a/hw/intc/rx_icu.c b/hw/intc/rx_icu.c index 84712e2e4d0..788afe6b1a0 100644 --- a/hw/intc/rx_icu.c +++ b/hw/intc/rx_icu.c @@ -28,7 +28,7 @@ #include "qemu/error-report.h" #include "hw/core/irq.h" #include "hw/registerfields.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/intc/rx_icu.h" #include "migration/vmstate.h" =20 diff --git a/hw/intc/s390_flic.c b/hw/intc/s390_flic.c index 1eed5125d17..508b58382ed 100644 --- a/hw/intc/s390_flic.c +++ b/hw/intc/s390_flic.c @@ -17,7 +17,7 @@ #include "hw/sysbus.h" #include "hw/s390x/ioinst.h" #include "hw/s390x/s390_flic.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/s390x/css.h" #include "trace.h" #include "qapi/error.h" diff --git a/hw/intc/sifive_plic.c b/hw/intc/sifive_plic.c index c578b6e36d2..5df578822f9 100644 --- a/hw/intc/sifive_plic.c +++ b/hw/intc/sifive_plic.c @@ -25,7 +25,7 @@ #include "qemu/error-report.h" #include "hw/sysbus.h" #include "hw/pci/msi.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/intc/sifive_plic.h" #include "target/riscv/cpu.h" #include "migration/vmstate.h" diff --git a/hw/intc/spapr_xive.c b/hw/intc/spapr_xive.c index e393f5dcdcc..76ab476f59a 100644 --- a/hw/intc/spapr_xive.c +++ b/hw/intc/spapr_xive.c @@ -21,7 +21,7 @@ #include "hw/ppc/spapr_xive.h" #include "hw/ppc/xive.h" #include "hw/ppc/xive_regs.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "trace.h" =20 /* diff --git a/hw/intc/xics.c b/hw/intc/xics.c index e87c0ad2bcd..1d40c4386d1 100644 --- a/hw/intc/xics.c +++ b/hw/intc/xics.c @@ -30,7 +30,7 @@ #include "trace.h" #include "qemu/timer.h" #include "hw/ppc/xics.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/error-report.h" #include "qemu/module.h" #include "qapi/visitor.h" diff --git a/hw/intc/xilinx_intc.c b/hw/intc/xilinx_intc.c index f5a59d89830..465df1c3af2 100644 --- a/hw/intc/xilinx_intc.c +++ b/hw/intc/xilinx_intc.c @@ -30,7 +30,7 @@ #include "hw/sysbus.h" #include "qemu/module.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "qom/object.h" =20 diff --git a/hw/intc/xive.c b/hw/intc/xive.c index 6f9babf601c..d702b58bd0a 100644 --- a/hw/intc/xive.c +++ b/hw/intc/xive.c @@ -14,7 +14,7 @@ #include "system/cpus.h" #include "system/dma.h" #include "system/reset.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "hw/core/irq.h" #include "hw/ppc/xive.h" diff --git a/hw/intc/xive2.c b/hw/intc/xive2.c index fbb3b7975e5..495925196a8 100644 --- a/hw/intc/xive2.c +++ b/hw/intc/xive2.c @@ -13,7 +13,7 @@ #include "target/ppc/cpu.h" #include "system/cpus.h" #include "system/dma.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/ppc/xive.h" #include "hw/ppc/xive2.h" #include "hw/ppc/xive2_regs.h" diff --git a/hw/intc/xlnx-pmu-iomod-intc.c b/hw/intc/xlnx-pmu-iomod-intc.c index 098c1f327cd..f3509efa0ab 100644 --- a/hw/intc/xlnx-pmu-iomod-intc.c +++ b/hw/intc/xlnx-pmu-iomod-intc.c @@ -33,7 +33,7 @@ #include "qemu/module.h" #include "hw/intc/xlnx-pmu-iomod-intc.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 #ifndef XLNX_PMU_IO_INTC_ERR_DEBUG #define XLNX_PMU_IO_INTC_ERR_DEBUG 0 diff --git a/hw/ipack/ipack.c b/hw/ipack/ipack.c index 4a710eb1876..f2e5524fa8b 100644 --- a/hw/ipack/ipack.c +++ b/hw/ipack/ipack.c @@ -13,7 +13,7 @@ #include "qemu/module.h" #include "hw/ipack/ipack.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" =20 IPackDevice *ipack_device_find(IPackBus *bus, int32_t slot) diff --git a/hw/ipmi/ipmi.c b/hw/ipmi/ipmi.c index 2a7bc667ec3..b49affaccec 100644 --- a/hw/ipmi/ipmi.c +++ b/hw/ipmi/ipmi.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/ipmi/ipmi.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qom/object_interfaces.h" #include "system/runstate.h" #include "qapi/error.h" diff --git a/hw/ipmi/ipmi_bmc_extern.c b/hw/ipmi/ipmi_bmc_extern.c index 2c6c5155792..fb90a7d7c30 100644 --- a/hw/ipmi/ipmi_bmc_extern.c +++ b/hw/ipmi/ipmi_bmc_extern.c @@ -34,7 +34,7 @@ #include "qemu/timer.h" #include "chardev/char-fe.h" #include "hw/ipmi/ipmi.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/vmstate.h" #include "qom/object.h" diff --git a/hw/ipmi/ipmi_bmc_sim.c b/hw/ipmi/ipmi_bmc_sim.c index 9b3e3a4b7e7..b86943c3245 100644 --- a/hw/ipmi/ipmi_bmc_sim.c +++ b/hw/ipmi/ipmi_bmc_sim.c @@ -29,7 +29,7 @@ #include "qemu/error-report.h" #include "qemu/module.h" #include "hw/core/loader.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/vmstate.h" =20 diff --git a/hw/ipmi/isa_ipmi_bt.c b/hw/ipmi/isa_ipmi_bt.c index 2b26f9c9f0f..911e16afbe7 100644 --- a/hw/ipmi/isa_ipmi_bt.c +++ b/hw/ipmi/isa_ipmi_bt.c @@ -28,7 +28,7 @@ #include "hw/core/irq.h" #include "hw/ipmi/ipmi_bt.h" #include "hw/isa/isa.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qom/object.h" #include "hw/acpi/ipmi.h" diff --git a/hw/ipmi/isa_ipmi_kcs.c b/hw/ipmi/isa_ipmi_kcs.c index 14e85e6e9fd..927f6b7a561 100644 --- a/hw/ipmi/isa_ipmi_kcs.c +++ b/hw/ipmi/isa_ipmi_kcs.c @@ -28,7 +28,7 @@ #include "hw/core/irq.h" #include "hw/ipmi/ipmi_kcs.h" #include "hw/isa/isa.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qom/object.h" #include "hw/acpi/ipmi.h" diff --git a/hw/isa/isa-superio.c b/hw/isa/isa-superio.c index 941b0f91d75..dc6ae3cb104 100644 --- a/hw/isa/isa-superio.c +++ b/hw/isa/isa-superio.c @@ -20,7 +20,7 @@ #include "hw/char/parallel.h" #include "hw/block/fdc.h" #include "hw/isa/superio.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/input/i8042.h" #include "hw/char/parallel-isa.h" #include "hw/char/serial-isa.h" diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c index 6e772eca573..51dc680029d 100644 --- a/hw/isa/lpc_ich9.c +++ b/hw/isa/lpc_ich9.c @@ -45,7 +45,7 @@ #include "hw/acpi/ich9.h" #include "hw/acpi/ich9_timer.h" #include "hw/pci/pci_bus.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/runstate.h" #include "system/system.h" #include "hw/core/cpu.h" diff --git a/hw/isa/pc87312.c b/hw/isa/pc87312.c index 388da8f5900..2a2c3e7b66a 100644 --- a/hw/isa/pc87312.c +++ b/hw/isa/pc87312.c @@ -25,7 +25,7 @@ =20 #include "qemu/osdep.h" #include "hw/isa/pc87312.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qemu/error-report.h" diff --git a/hw/isa/piix.c b/hw/isa/piix.c index bf1c79a3e63..04b2be2cc39 100644 --- a/hw/isa/piix.c +++ b/hw/isa/piix.c @@ -30,7 +30,7 @@ #include "hw/southbridge/piix.h" #include "hw/timer/i8254.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/ide/piix.h" #include "hw/intc/i8259.h" #include "hw/isa/isa.h" diff --git a/hw/isa/vt82c686.c b/hw/isa/vt82c686.c index 1362a1f4042..99be41d0adf 100644 --- a/hw/isa/vt82c686.c +++ b/hw/isa/vt82c686.c @@ -19,7 +19,7 @@ #include "hw/char/parallel-isa.h" #include "hw/char/serial-isa.h" #include "hw/pci/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/ide/pci.h" #include "hw/isa/isa.h" #include "hw/isa/superio.h" diff --git a/hw/m68k/mcf5206.c b/hw/m68k/mcf5206.c index e17da4fd209..4bc7b1d189e 100644 --- a/hw/m68k/mcf5206.c +++ b/hw/m68k/mcf5206.c @@ -10,7 +10,7 @@ #include "qemu/error-report.h" #include "qemu/log.h" #include "cpu.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/boards.h" #include "hw/core/irq.h" #include "hw/m68k/mcf.h" diff --git a/hw/m68k/mcf_intc.c b/hw/m68k/mcf_intc.c index efac6802a97..b8770e3a53f 100644 --- a/hw/m68k/mcf_intc.c +++ b/hw/m68k/mcf_intc.c @@ -14,7 +14,7 @@ #include "hw/core/irq.h" #include "hw/sysbus.h" #include "hw/m68k/mcf.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qom/object.h" =20 #define TYPE_MCF_INTC "mcf-intc" diff --git a/hw/m68k/next-cube.c b/hw/m68k/next-cube.c index e7217cbaeac..75ae66c311a 100644 --- a/hw/m68k/next-cube.c +++ b/hw/m68k/next-cube.c @@ -25,7 +25,7 @@ #include "hw/char/escc.h" /* ZILOG 8530 Serial Emulation */ #include "hw/block/fdc.h" #include "hw/misc/empty_slot.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qemu/error-report.h" #include "ui/console.h" diff --git a/hw/m68k/q800-glue.c b/hw/m68k/q800-glue.c index 84dd01459cd..24fccab9666 100644 --- a/hw/m68k/q800-glue.c +++ b/hw/m68k/q800-glue.c @@ -26,7 +26,7 @@ #include "hw/core/boards.h" #include "hw/core/irq.h" #include "hw/core/nmi.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" =20 /* diff --git a/hw/m68k/virt.c b/hw/m68k/virt.c index 7007d4e4e9f..2d83919fa86 100644 --- a/hw/m68k/virt.c +++ b/hw/m68k/virt.c @@ -14,7 +14,7 @@ #include "system/system.h" #include "cpu.h" #include "hw/core/boards.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "elf.h" #include "hw/core/loader.h" #include "ui/console.h" diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c index 4f3688a71b6..26baa1c3d6c 100644 --- a/hw/mem/cxl_type3.c +++ b/hw/mem/cxl_type3.c @@ -17,7 +17,7 @@ #include "hw/mem/memory-device.h" #include "hw/mem/pc-dimm.h" #include "hw/pci/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "qapi/error.h" #include "qemu/log.h" diff --git a/hw/mem/nvdimm.c b/hw/mem/nvdimm.c index 23ab143ef8e..b7032525271 100644 --- a/hw/mem/nvdimm.c +++ b/hw/mem/nvdimm.c @@ -28,7 +28,7 @@ #include "qapi/error.h" #include "qapi/visitor.h" #include "hw/mem/nvdimm.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/mem/memory-device.h" #include "system/hostmem.h" =20 diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c index 33e5a376ffa..3efe47f499a 100644 --- a/hw/mem/pc-dimm.c +++ b/hw/mem/pc-dimm.c @@ -21,7 +21,7 @@ #include "qemu/osdep.h" #include "hw/core/boards.h" #include "hw/mem/pc-dimm.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "hw/mem/nvdimm.h" #include "hw/mem/memory-device.h" diff --git a/hw/mem/sparse-mem.c b/hw/mem/sparse-mem.c index d7b00e563ae..9186da6b1a9 100644 --- a/hw/mem/sparse-mem.c +++ b/hw/mem/sparse-mem.c @@ -13,7 +13,7 @@ #include "qemu/osdep.h" #include "qemu/error-report.h" =20 -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "qapi/error.h" #include "qemu/units.h" diff --git a/hw/microblaze/petalogix_ml605_mmu.c b/hw/microblaze/petalogix_= ml605_mmu.c index f5b9b2e8904..9c2b0ff0b37 100644 --- a/hw/microblaze/petalogix_ml605_mmu.c +++ b/hw/microblaze/petalogix_ml605_mmu.c @@ -35,7 +35,7 @@ #include "system/system.h" #include "hw/core/boards.h" #include "hw/char/serial-mm.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/address-spaces.h" #include "hw/ssi/ssi.h" =20 diff --git a/hw/mips/boston.c b/hw/mips/boston.c index b63b27d03fa..4579df23eb7 100644 --- a/hw/mips/boston.c +++ b/hw/mips/boston.c @@ -31,7 +31,7 @@ #include "hw/mips/cps.h" #include "hw/pci-host/xilinx-pcie.h" #include "hw/core/qdev-clock.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qemu/error-report.h" #include "qemu/guest-random.h" diff --git a/hw/mips/cps.c b/hw/mips/cps.c index 13f048ef9c9..620ee972f8f 100644 --- a/hw/mips/cps.c +++ b/hw/mips/cps.c @@ -23,7 +23,7 @@ #include "hw/mips/cps.h" #include "hw/mips/mips.h" #include "hw/core/qdev-clock.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/tcg.h" #include "system/reset.h" =20 diff --git a/hw/mips/fuloong2e.c b/hw/mips/fuloong2e.c index d4c100b69a0..d0efe36f7ce 100644 --- a/hw/mips/fuloong2e.c +++ b/hw/mips/fuloong2e.c @@ -33,7 +33,7 @@ #include "hw/pci/pci.h" #include "hw/core/loader.h" #include "hw/ide/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "elf.h" #include "hw/isa/vt82c686.h" #include "system/qtest.h" diff --git a/hw/misc/a9scu.c b/hw/misc/a9scu.c index bb00ae29692..d5eb985044b 100644 --- a/hw/misc/a9scu.c +++ b/hw/misc/a9scu.c @@ -10,7 +10,7 @@ =20 #include "qemu/osdep.h" #include "hw/misc/a9scu.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qemu/log.h" diff --git a/hw/misc/allwinner-h3-dramc.c b/hw/misc/allwinner-h3-dramc.c index 8834524c30c..ef491b36ffb 100644 --- a/hw/misc/allwinner-h3-dramc.c +++ b/hw/misc/allwinner-h3-dramc.c @@ -25,7 +25,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "system/address-spaces.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "hw/misc/allwinner-h3-dramc.h" #include "trace.h" diff --git a/hw/misc/allwinner-r40-dramc.c b/hw/misc/allwinner-r40-dramc.c index 1c8e17e3c0b..3af8af733ac 100644 --- a/hw/misc/allwinner-r40-dramc.c +++ b/hw/misc/allwinner-r40-dramc.c @@ -25,7 +25,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "system/address-spaces.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qemu/bitops.h" #include "hw/misc/allwinner-r40-dramc.h" diff --git a/hw/misc/allwinner-sid.c b/hw/misc/allwinner-sid.c index 1e66c14567b..17faf67e606 100644 --- a/hw/misc/allwinner-sid.c +++ b/hw/misc/allwinner-sid.c @@ -25,7 +25,7 @@ #include "qemu/module.h" #include "qemu/guest-random.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/misc/allwinner-sid.h" #include "trace.h" diff --git a/hw/misc/allwinner-sramc.c b/hw/misc/allwinner-sramc.c index ed299ecaae7..bd7f59fec97 100644 --- a/hw/misc/allwinner-sramc.c +++ b/hw/misc/allwinner-sramc.c @@ -24,7 +24,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/misc/allwinner-sramc.h" #include "trace.h" diff --git a/hw/misc/applesmc.c b/hw/misc/applesmc.c index a015d4a9b8c..fd96f5f245f 100644 --- a/hw/misc/applesmc.c +++ b/hw/misc/applesmc.c @@ -32,7 +32,7 @@ =20 #include "qemu/osdep.h" #include "hw/isa/isa.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "ui/console.h" #include "qemu/error-report.h" #include "qemu/module.h" diff --git a/hw/misc/arm11scu.c b/hw/misc/arm11scu.c index 2ad4fd1d21d..89c2c4cd730 100644 --- a/hw/misc/arm11scu.c +++ b/hw/misc/arm11scu.c @@ -10,7 +10,7 @@ =20 #include "qemu/osdep.h" #include "hw/misc/arm11scu.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/log.h" #include "qemu/module.h" =20 diff --git a/hw/misc/arm_l2x0.c b/hw/misc/arm_l2x0.c index 8b4b61eed00..a5511845c7c 100644 --- a/hw/misc/arm_l2x0.c +++ b/hw/misc/arm_l2x0.c @@ -19,7 +19,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "qemu/log.h" diff --git a/hw/misc/arm_sysctl.c b/hw/misc/arm_sysctl.c index 8995eaeec36..0c91ebafac7 100644 --- a/hw/misc/arm_sysctl.c +++ b/hw/misc/arm_sysctl.c @@ -9,7 +9,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/timer.h" #include "system/runstate.h" #include "qemu/bitops.h" diff --git a/hw/misc/armsse-cpuid.c b/hw/misc/armsse-cpuid.c index a57764d731f..3a52bb5381f 100644 --- a/hw/misc/armsse-cpuid.c +++ b/hw/misc/armsse-cpuid.c @@ -26,7 +26,7 @@ #include "hw/sysbus.h" #include "hw/registerfields.h" #include "hw/misc/armsse-cpuid.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 REG32(CPUID, 0x0) REG32(PID4, 0xfd0) diff --git a/hw/misc/aspeed_hace.c b/hw/misc/aspeed_hace.c index 51c73ca2a52..23e8030cd96 100644 --- a/hw/misc/aspeed_hace.c +++ b/hw/misc/aspeed_hace.c @@ -18,7 +18,7 @@ #include "qapi/error.h" #include "migration/vmstate.h" #include "crypto/hash.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/irq.h" #include "trace.h" =20 diff --git a/hw/misc/aspeed_i3c.c b/hw/misc/aspeed_i3c.c index 3bef1c84dd1..37a05b9ce27 100644 --- a/hw/misc/aspeed_i3c.c +++ b/hw/misc/aspeed_i3c.c @@ -12,7 +12,7 @@ #include "qemu/error-report.h" #include "hw/misc/aspeed_i3c.h" #include "hw/registerfields.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "migration/vmstate.h" #include "trace.h" diff --git a/hw/misc/aspeed_lpc.c b/hw/misc/aspeed_lpc.c index 829955e6f16..68f0f6334bc 100644 --- a/hw/misc/aspeed_lpc.c +++ b/hw/misc/aspeed_lpc.c @@ -14,7 +14,7 @@ #include "qapi/error.h" #include "qapi/visitor.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" =20 #define TO_REG(offset) ((offset) >> 2) diff --git a/hw/misc/aspeed_sbc.c b/hw/misc/aspeed_sbc.c index 2fc5db749d2..065e822e70d 100644 --- a/hw/misc/aspeed_sbc.c +++ b/hw/misc/aspeed_sbc.c @@ -11,7 +11,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "qemu/error-report.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/misc/aspeed_sbc.h" #include "qapi/error.h" #include "migration/vmstate.h" diff --git a/hw/misc/aspeed_scu.c b/hw/misc/aspeed_scu.c index a0ab5eed8f1..d27e0c7f915 100644 --- a/hw/misc/aspeed_scu.c +++ b/hw/misc/aspeed_scu.c @@ -11,7 +11,7 @@ =20 #include "qemu/osdep.h" #include "hw/misc/aspeed_scu.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qapi/visitor.h" diff --git a/hw/misc/aspeed_sdmc.c b/hw/misc/aspeed_sdmc.c index dff7cc362d3..59b4a9a4264 100644 --- a/hw/misc/aspeed_sdmc.c +++ b/hw/misc/aspeed_sdmc.c @@ -12,7 +12,7 @@ #include "qemu/module.h" #include "qemu/error-report.h" #include "hw/misc/aspeed_sdmc.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "trace.h" diff --git a/hw/misc/aspeed_sli.c b/hw/misc/aspeed_sli.c index c51484035e0..5b4d70cdc06 100644 --- a/hw/misc/aspeed_sli.c +++ b/hw/misc/aspeed_sli.c @@ -9,7 +9,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "qemu/error-report.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/misc/aspeed_sli.h" #include "qapi/error.h" #include "migration/vmstate.h" diff --git a/hw/misc/avr_power.c b/hw/misc/avr_power.c index 947304ed3b6..f42cf4fd906 100644 --- a/hw/misc/avr_power.c +++ b/hw/misc/avr_power.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "hw/misc/avr_power.h" #include "qemu/log.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/irq.h" #include "trace.h" =20 diff --git a/hw/misc/bcm2835_cprman.c b/hw/misc/bcm2835_cprman.c index efe6f900dbf..8220f7a6b4b 100644 --- a/hw/misc/bcm2835_cprman.c +++ b/hw/misc/bcm2835_cprman.c @@ -46,7 +46,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "migration/vmstate.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/misc/bcm2835_cprman.h" #include "hw/misc/bcm2835_cprman_internals.h" #include "trace.h" diff --git a/hw/misc/bcm2835_property.c b/hw/misc/bcm2835_property.c index 2026294ce12..216a746c2bd 100644 --- a/hw/misc/bcm2835_property.c +++ b/hw/misc/bcm2835_property.c @@ -8,7 +8,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/misc/bcm2835_property.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "hw/core/irq.h" #include "hw/misc/bcm2835_mbox_defs.h" diff --git a/hw/misc/debugexit.c b/hw/misc/debugexit.c index 04a9fc31223..cdd19166a5a 100644 --- a/hw/misc/debugexit.c +++ b/hw/misc/debugexit.c @@ -9,7 +9,7 @@ =20 #include "qemu/osdep.h" #include "hw/isa/isa.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/module.h" #include "qom/object.h" #include "system/runstate.h" diff --git a/hw/misc/djmemc.c b/hw/misc/djmemc.c index c5b09f551b0..5fd3a8bfb25 100644 --- a/hw/misc/djmemc.c +++ b/hw/misc/djmemc.c @@ -11,7 +11,7 @@ #include "qemu/log.h" #include "migration/vmstate.h" #include "hw/misc/djmemc.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "trace.h" =20 =20 diff --git a/hw/misc/eccmemctl.c b/hw/misc/eccmemctl.c index 71243ba5bad..f93cbd16590 100644 --- a/hw/misc/eccmemctl.c +++ b/hw/misc/eccmemctl.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "qemu/module.h" diff --git a/hw/misc/empty_slot.c b/hw/misc/empty_slot.c index 239d7603207..a012668214f 100644 --- a/hw/misc/empty_slot.c +++ b/hw/misc/empty_slot.c @@ -11,7 +11,7 @@ =20 #include "qemu/osdep.h" #include "hw/sysbus.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/misc/empty_slot.h" #include "qapi/error.h" #include "trace.h" diff --git a/hw/misc/iotkit-secctl.c b/hw/misc/iotkit-secctl.c index f8a2946191d..64e94a76479 100644 --- a/hw/misc/iotkit-secctl.c +++ b/hw/misc/iotkit-secctl.c @@ -20,7 +20,7 @@ #include "hw/core/irq.h" #include "hw/misc/iotkit-secctl.h" #include "hw/arm/armsse-version.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 /* Registers in the secure privilege control block */ REG32(SECRESPCFG, 0x10) diff --git a/hw/misc/iotkit-sysctl.c b/hw/misc/iotkit-sysctl.c index d70e51ab2ec..a9c3568c216 100644 --- a/hw/misc/iotkit-sysctl.c +++ b/hw/misc/iotkit-sysctl.c @@ -27,7 +27,7 @@ #include "migration/vmstate.h" #include "hw/registerfields.h" #include "hw/misc/iotkit-sysctl.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/arm/armsse-version.h" #include "target/arm/arm-powerctl.h" =20 diff --git a/hw/misc/iotkit-sysinfo.c b/hw/misc/iotkit-sysinfo.c index 57405cb7e17..a53b1f51802 100644 --- a/hw/misc/iotkit-sysinfo.c +++ b/hw/misc/iotkit-sysinfo.c @@ -25,7 +25,7 @@ #include "hw/sysbus.h" #include "hw/registerfields.h" #include "hw/misc/iotkit-sysinfo.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/arm/armsse-version.h" =20 REG32(SYS_VERSION, 0x0) diff --git a/hw/misc/ivshmem-pci.c b/hw/misc/ivshmem-pci.c index 636d0b83dee..fb69af52f62 100644 --- a/hw/misc/ivshmem-pci.c +++ b/hw/misc/ivshmem-pci.c @@ -22,7 +22,7 @@ #include "qapi/error.h" #include "qemu/cutils.h" #include "hw/pci/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/pci/msi.h" #include "hw/pci/msix.h" diff --git a/hw/misc/led.c b/hw/misc/led.c index f7f709072af..d9256aaaf56 100644 --- a/hw/misc/led.c +++ b/hw/misc/led.c @@ -8,7 +8,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "migration/vmstate.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/misc/led.h" #include "trace.h" =20 diff --git a/hw/misc/mac_via.c b/hw/misc/mac_via.c index 13ccd3023fb..887397ae842 100644 --- a/hw/misc/mac_via.c +++ b/hw/misc/mac_via.c @@ -27,7 +27,7 @@ #include "system/runstate.h" #include "qapi/error.h" #include "qemu/cutils.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "system/block-backend.h" #include "system/rtc.h" diff --git a/hw/misc/macio/cuda.c b/hw/misc/macio/cuda.c index 3b8dd462f56..312dde242ba 100644 --- a/hw/misc/macio/cuda.c +++ b/hw/misc/macio/cuda.c @@ -25,7 +25,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "hw/misc/macio/cuda.h" #include "qemu/timer.h" diff --git a/hw/misc/macio/gpio.c b/hw/misc/macio/gpio.c index 77658cb6d02..1a7c534d652 100644 --- a/hw/misc/macio/gpio.c +++ b/hw/misc/macio/gpio.c @@ -24,7 +24,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "hw/misc/macio/macio.h" #include "hw/misc/macio/gpio.h" diff --git a/hw/misc/macio/macio.c b/hw/misc/macio/macio.c index 6710485d728..2813705c03b 100644 --- a/hw/misc/macio/macio.c +++ b/hw/misc/macio/macio.c @@ -29,7 +29,7 @@ #include "hw/misc/macio/cuda.h" #include "hw/pci/pci.h" #include "hw/ppc/mac_dbdma.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "hw/char/escc.h" #include "hw/misc/macio/macio.h" diff --git a/hw/misc/macio/pmu.c b/hw/misc/macio/pmu.c index 73e64306b86..04640c20e0a 100644 --- a/hw/misc/macio/pmu.c +++ b/hw/misc/macio/pmu.c @@ -29,7 +29,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "hw/core/irq.h" #include "hw/misc/macio/pmu.h" diff --git a/hw/misc/max78000_gcr.c b/hw/misc/max78000_gcr.c index 6d2e2bd6176..e8dc5937329 100644 --- a/hw/misc/max78000_gcr.c +++ b/hw/misc/max78000_gcr.c @@ -12,7 +12,7 @@ #include "hw/core/irq.h" #include "system/runstate.h" #include "migration/vmstate.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/char/max78000_uart.h" #include "hw/misc/max78000_trng.h" #include "hw/misc/max78000_aes.h" diff --git a/hw/misc/mips_cmgcr.c b/hw/misc/mips_cmgcr.c index 5484b739674..1c6e9d1f6f0 100644 --- a/hw/misc/mips_cmgcr.c +++ b/hw/misc/mips_cmgcr.c @@ -16,7 +16,7 @@ #include "migration/vmstate.h" #include "hw/misc/mips_cmgcr.h" #include "hw/misc/mips_cpc.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/intc/mips_gic.h" =20 static inline bool is_cpc_connected(MIPSGCRState *s) diff --git a/hw/misc/mips_cpc.c b/hw/misc/mips_cpc.c index 9bfb7c97219..efc0326f6f2 100644 --- a/hw/misc/mips_cpc.c +++ b/hw/misc/mips_cpc.c @@ -26,7 +26,7 @@ #include "migration/vmstate.h" =20 #include "hw/misc/mips_cpc.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 static inline uint64_t cpc_vp_run_mask(MIPSCPCState *cpc) { diff --git a/hw/misc/mips_itu.c b/hw/misc/mips_itu.c index fc17385cde7..82c0a90f704 100644 --- a/hw/misc/mips_itu.c +++ b/hw/misc/mips_itu.c @@ -24,7 +24,7 @@ #include "qapi/error.h" #include "hw/core/cpu.h" #include "hw/misc/mips_itu.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "target/mips/cpu.h" =20 #define ITC_TAG_ADDRSPACE_SZ (ITC_ADDRESSMAP_NUM * 8) diff --git a/hw/misc/mos6522.c b/hw/misc/mos6522.c index 728931883d8..bae766ef178 100644 --- a/hw/misc/mos6522.c +++ b/hw/misc/mos6522.c @@ -27,7 +27,7 @@ #include "qemu/osdep.h" #include "hw/core/irq.h" #include "hw/misc/mos6522.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "monitor/monitor.h" #include "monitor/hmp.h" diff --git a/hw/misc/mps2-fpgaio.c b/hw/misc/mps2-fpgaio.c index bee1309f5a6..f3d51fd2286 100644 --- a/hw/misc/mps2-fpgaio.c +++ b/hw/misc/mps2-fpgaio.c @@ -25,7 +25,7 @@ #include "hw/registerfields.h" #include "hw/misc/mps2-fpgaio.h" #include "hw/misc/led.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/timer.h" =20 REG32(LED0, 0) diff --git a/hw/misc/mps2-scc.c b/hw/misc/mps2-scc.c index ea9cad85dc2..56aa0135072 100644 --- a/hw/misc/mps2-scc.c +++ b/hw/misc/mps2-scc.c @@ -28,7 +28,7 @@ #include "hw/registerfields.h" #include "hw/misc/mps2-scc.h" #include "hw/misc/led.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 REG32(CFG0, 0) REG32(CFG1, 4) diff --git a/hw/misc/msf2-sysreg.c b/hw/misc/msf2-sysreg.c index ce0ad50c1be..90c786e95ad 100644 --- a/hw/misc/msf2-sysreg.c +++ b/hw/misc/msf2-sysreg.c @@ -17,7 +17,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "hw/misc/msf2-sysreg.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qemu/error-report.h" #include "trace.h" diff --git a/hw/misc/npcm7xx_mft.c b/hw/misc/npcm7xx_mft.c index 0bbae111cf9..21e74385c71 100644 --- a/hw/misc/npcm7xx_mft.c +++ b/hw/misc/npcm7xx_mft.c @@ -17,7 +17,7 @@ #include "qemu/osdep.h" #include "hw/core/irq.h" #include "hw/core/qdev-clock.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/misc/npcm7xx_mft.h" #include "hw/misc/npcm7xx_pwm.h" #include "hw/registerfields.h" diff --git a/hw/misc/npcm7xx_pwm.c b/hw/misc/npcm7xx_pwm.c index 39ac0dbe2a5..1b010e51ec0 100644 --- a/hw/misc/npcm7xx_pwm.c +++ b/hw/misc/npcm7xx_pwm.c @@ -17,7 +17,7 @@ #include "qemu/osdep.h" #include "hw/core/irq.h" #include "hw/core/qdev-clock.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/misc/npcm7xx_pwm.h" #include "hw/registerfields.h" #include "migration/vmstate.h" diff --git a/hw/misc/npcm_gcr.c b/hw/misc/npcm_gcr.c index 2acaa167713..2d7e5b5a015 100644 --- a/hw/misc/npcm_gcr.c +++ b/hw/misc/npcm_gcr.c @@ -17,7 +17,7 @@ #include "qemu/osdep.h" =20 #include "hw/misc/npcm_gcr.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qemu/cutils.h" diff --git a/hw/misc/nrf51_rng.c b/hw/misc/nrf51_rng.c index 0254fb377a6..37c832d976c 100644 --- a/hw/misc/nrf51_rng.c +++ b/hw/misc/nrf51_rng.c @@ -16,7 +16,7 @@ #include "hw/arm/nrf51.h" #include "hw/core/irq.h" #include "hw/misc/nrf51_rng.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qemu/guest-random.h" =20 diff --git a/hw/misc/pci-testdev.c b/hw/misc/pci-testdev.c index ba71c5069ff..3c3887afe0d 100644 --- a/hw/misc/pci-testdev.c +++ b/hw/misc/pci-testdev.c @@ -20,7 +20,7 @@ =20 #include "qemu/osdep.h" #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/event_notifier.h" #include "qemu/module.h" #include "system/kvm.h" diff --git a/hw/misc/pvpanic-isa.c b/hw/misc/pvpanic-isa.c index f7b421c713b..85fb7da5e5c 100644 --- a/hw/misc/pvpanic-isa.c +++ b/hw/misc/pvpanic-isa.c @@ -17,7 +17,7 @@ #include "system/runstate.h" =20 #include "hw/nvram/fw_cfg.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/misc/pvpanic.h" #include "qom/object.h" #include "hw/isa/isa.h" diff --git a/hw/misc/pvpanic-mmio.c b/hw/misc/pvpanic-mmio.c index 2a363106b2d..2d1464435a8 100644 --- a/hw/misc/pvpanic-mmio.c +++ b/hw/misc/pvpanic-mmio.c @@ -8,7 +8,7 @@ =20 #include "qemu/osdep.h" =20 -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/misc/pvpanic.h" #include "hw/sysbus.h" #include "standard-headers/misc/pvpanic.h" diff --git a/hw/misc/pvpanic-pci.c b/hw/misc/pvpanic-pci.c index 2869b6a7ff8..5509f70a3e5 100644 --- a/hw/misc/pvpanic-pci.c +++ b/hw/misc/pvpanic-pci.c @@ -16,7 +16,7 @@ #include "system/runstate.h" =20 #include "hw/nvram/fw_cfg.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "hw/misc/pvpanic.h" #include "qom/object.h" diff --git a/hw/misc/pvpanic.c b/hw/misc/pvpanic.c index c83247c4087..bbd06d9accd 100644 --- a/hw/misc/pvpanic.c +++ b/hw/misc/pvpanic.c @@ -18,7 +18,7 @@ #include "system/runstate.h" =20 #include "hw/nvram/fw_cfg.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/misc/pvpanic.h" #include "qom/object.h" #include "standard-headers/misc/pvpanic.h" diff --git a/hw/misc/sifive_e_aon.c b/hw/misc/sifive_e_aon.c index 9b1e7baf95e..4d6e015ca38 100644 --- a/hw/misc/sifive_e_aon.c +++ b/hw/misc/sifive_e_aon.c @@ -25,7 +25,7 @@ #include "qapi/visitor.h" #include "qapi/error.h" #include "system/watchdog.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 REG32(AON_WDT_WDOGCFG, 0x0) FIELD(AON_WDT_WDOGCFG, SCALE, 0, 4) diff --git a/hw/misc/sifive_u_otp.c b/hw/misc/sifive_u_otp.c index 1ebed2fd8b4..1d352680468 100644 --- a/hw/misc/sifive_u_otp.c +++ b/hw/misc/sifive_u_otp.c @@ -20,7 +20,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/sysbus.h" #include "qemu/error-report.h" diff --git a/hw/misc/stm32l4x5_rcc.c b/hw/misc/stm32l4x5_rcc.c index 1b012d1cc1e..c2b25e9a4de 100644 --- a/hw/misc/stm32l4x5_rcc.c +++ b/hw/misc/stm32l4x5_rcc.c @@ -26,7 +26,7 @@ #include "hw/core/clock.h" #include "hw/core/irq.h" #include "hw/core/qdev-clock.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/registerfields.h" #include "trace.h" diff --git a/hw/misc/tz-mpc.c b/hw/misc/tz-mpc.c index d922639da17..fb5d232bff5 100644 --- a/hw/misc/tz-mpc.c +++ b/hw/misc/tz-mpc.c @@ -19,7 +19,7 @@ #include "hw/registerfields.h" #include "hw/core/irq.h" #include "hw/misc/tz-mpc.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 /* Our IOMMU has two IOMMU indexes, one for secure transactions and one for * non-secure transactions. diff --git a/hw/misc/tz-msc.c b/hw/misc/tz-msc.c index 74c31f6d7d2..3e33455d421 100644 --- a/hw/misc/tz-msc.c +++ b/hw/misc/tz-msc.c @@ -19,7 +19,7 @@ #include "hw/registerfields.h" #include "hw/core/irq.h" #include "hw/misc/tz-msc.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 static void tz_msc_update_irq(TZMSC *s) { diff --git a/hw/misc/tz-ppc.c b/hw/misc/tz-ppc.c index 2ab03fa9730..a41c6011fba 100644 --- a/hw/misc/tz-ppc.c +++ b/hw/misc/tz-ppc.c @@ -19,7 +19,7 @@ #include "hw/registerfields.h" #include "hw/core/irq.h" #include "hw/misc/tz-ppc.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 static void tz_ppc_update_irq(TZPPC *s) { diff --git a/hw/misc/virt_ctrl.c b/hw/misc/virt_ctrl.c index 9f16093ca2c..7cb1ea5d181 100644 --- a/hw/misc/virt_ctrl.c +++ b/hw/misc/virt_ctrl.c @@ -5,7 +5,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "qemu/log.h" diff --git a/hw/misc/xlnx-versal-cframe-reg.c b/hw/misc/xlnx-versal-cframe-= reg.c index 616c0ecf837..33a4ece26f6 100644 --- a/hw/misc/xlnx-versal-cframe-reg.c +++ b/hw/misc/xlnx-versal-cframe-reg.c @@ -16,7 +16,7 @@ #include "qemu/log.h" #include "qemu/units.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "hw/core/irq.h" #include "hw/misc/xlnx-versal-cframe-reg.h" diff --git a/hw/misc/xlnx-versal-cfu.c b/hw/misc/xlnx-versal-cfu.c index ce58404eb2c..80f9612b2ff 100644 --- a/hw/misc/xlnx-versal-cfu.c +++ b/hw/misc/xlnx-versal-cfu.c @@ -18,7 +18,7 @@ #include "qemu/log.h" #include "qemu/units.h" #include "migration/vmstate.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/misc/xlnx-versal-cfu.h" =20 diff --git a/hw/misc/xlnx-versal-crl.c b/hw/misc/xlnx-versal-crl.c index 8f9a40d941d..b0baabc1adf 100644 --- a/hw/misc/xlnx-versal-crl.c +++ b/hw/misc/xlnx-versal-crl.c @@ -9,7 +9,7 @@ =20 #include "qemu/osdep.h" #include "migration/vmstate.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "hw/core/irq.h" #include "hw/register.h" diff --git a/hw/misc/xlnx-versal-pmc-iou-slcr.c b/hw/misc/xlnx-versal-pmc-i= ou-slcr.c index c75800c1b3c..84d474c38fc 100644 --- a/hw/misc/xlnx-versal-pmc-iou-slcr.c +++ b/hw/misc/xlnx-versal-pmc-iou-slcr.c @@ -30,7 +30,7 @@ #include "qemu/bitops.h" #include "qemu/log.h" #include "migration/vmstate.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/misc/xlnx-versal-pmc-iou-slcr.h" =20 #ifndef XILINX_VERSAL_PMC_IOU_SLCR_ERR_DEBUG diff --git a/hw/misc/xlnx-versal-trng.c b/hw/misc/xlnx-versal-trng.c index 2b573a45bdb..aa1d65de7b7 100644 --- a/hw/misc/xlnx-versal-trng.c +++ b/hw/misc/xlnx-versal-trng.c @@ -35,7 +35,7 @@ #include "qemu/timer.h" #include "qapi/visitor.h" #include "migration/vmstate.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 #ifndef XLNX_VERSAL_TRNG_ERR_DEBUG #define XLNX_VERSAL_TRNG_ERR_DEBUG 0 diff --git a/hw/misc/xlnx-versal-xramc.c b/hw/misc/xlnx-versal-xramc.c index af58bc761f3..6a86f6b5d48 100644 --- a/hw/misc/xlnx-versal-xramc.c +++ b/hw/misc/xlnx-versal-xramc.c @@ -12,7 +12,7 @@ #include "migration/vmstate.h" #include "hw/sysbus.h" #include "hw/register.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/irq.h" #include "hw/misc/xlnx-versal-xramc.h" =20 diff --git a/hw/misc/xlnx-zynqmp-apu-ctrl.c b/hw/misc/xlnx-zynqmp-apu-ctrl.c index 196e2452ae3..93f0bedc48e 100644 --- a/hw/misc/xlnx-zynqmp-apu-ctrl.c +++ b/hw/misc/xlnx-zynqmp-apu-ctrl.c @@ -12,7 +12,7 @@ #include "qapi/error.h" #include "qemu/log.h" #include "migration/vmstate.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "hw/core/irq.h" #include "hw/register.h" diff --git a/hw/misc/zynq_slcr.c b/hw/misc/zynq_slcr.c index cc18b21b22b..d1900a2b948 100644 --- a/hw/misc/zynq_slcr.c +++ b/hw/misc/zynq_slcr.c @@ -24,7 +24,7 @@ #include "hw/registerfields.h" #include "hw/core/qdev-clock.h" #include "qom/object.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" =20 #ifndef ZYNQ_SLCR_ERR_DEBUG diff --git a/hw/net/allwinner-sun8i-emac.c b/hw/net/allwinner-sun8i-emac.c index a4824d61bda..8ff0db5ccdc 100644 --- a/hw/net/allwinner-sun8i-emac.c +++ b/hw/net/allwinner-sun8i-emac.c @@ -24,7 +24,7 @@ #include "migration/vmstate.h" #include "net/net.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/log.h" #include "trace.h" #include "net/checksum.h" diff --git a/hw/net/allwinner_emac.c b/hw/net/allwinner_emac.c index 9158c77cb4f..cbe4cb80e4a 100644 --- a/hw/net/allwinner_emac.c +++ b/hw/net/allwinner_emac.c @@ -24,7 +24,7 @@ #include "qemu/fifo8.h" #include "hw/core/irq.h" #include "hw/net/allwinner_emac.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/log.h" #include "qemu/module.h" #include diff --git a/hw/net/cadence_gem.c b/hw/net/cadence_gem.c index ef72821f8d7..fe9747fdb6f 100644 --- a/hw/net/cadence_gem.c +++ b/hw/net/cadence_gem.c @@ -27,7 +27,7 @@ =20 #include "hw/core/irq.h" #include "hw/net/cadence_gem.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/registerfields.h" #include "migration/vmstate.h" #include "qapi/error.h" diff --git a/hw/net/can/can_kvaser_pci.c b/hw/net/can/can_kvaser_pci.c index 52584c5d6fa..f2912b206da 100644 --- a/hw/net/can/can_kvaser_pci.c +++ b/hw/net/can/can_kvaser_pci.c @@ -34,7 +34,7 @@ #include "qapi/error.h" #include "hw/core/irq.h" #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "net/can_emu.h" =20 diff --git a/hw/net/can/can_mioe3680_pci.c b/hw/net/can/can_mioe3680_pci.c index 2e9e09741b2..fe1a91ee0e7 100644 --- a/hw/net/can/can_mioe3680_pci.c +++ b/hw/net/can/can_mioe3680_pci.c @@ -30,7 +30,7 @@ #include "qapi/error.h" #include "hw/core/irq.h" #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "net/can_emu.h" =20 diff --git a/hw/net/can/can_pcm3680_pci.c b/hw/net/can/can_pcm3680_pci.c index 7dd23c905e5..ea45de28a82 100644 --- a/hw/net/can/can_pcm3680_pci.c +++ b/hw/net/can/can_pcm3680_pci.c @@ -30,7 +30,7 @@ #include "qapi/error.h" #include "hw/core/irq.h" #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "net/can_emu.h" =20 diff --git a/hw/net/can/ctucan_pci.c b/hw/net/can/ctucan_pci.c index ad2b1e60cb4..40654778a45 100644 --- a/hw/net/can/ctucan_pci.c +++ b/hw/net/can/ctucan_pci.c @@ -31,7 +31,7 @@ #include "qapi/error.h" #include "hw/core/irq.h" #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "net/can_emu.h" =20 diff --git a/hw/net/can/xlnx-versal-canfd.c b/hw/net/can/xlnx-versal-canfd.c index 07342795575..94d9178a540 100644 --- a/hw/net/can/xlnx-versal-canfd.c +++ b/hw/net/can/xlnx-versal-canfd.c @@ -36,7 +36,7 @@ #include "hw/register.h" #include "qapi/error.h" #include "qemu/log.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "hw/net/xlnx-versal-canfd.h" #include "trace.h" diff --git a/hw/net/can/xlnx-zynqmp-can.c b/hw/net/can/xlnx-zynqmp-can.c index a98b208169f..533ac854a2f 100644 --- a/hw/net/can/xlnx-zynqmp-can.c +++ b/hw/net/can/xlnx-zynqmp-can.c @@ -38,7 +38,7 @@ #include "qemu/log.h" #include "qemu/cutils.h" #include "migration/vmstate.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "net/can_emu.h" #include "net/can_host.h" #include "qemu/event_notifier.h" diff --git a/hw/net/dp8393x.c b/hw/net/dp8393x.c index 68062481c59..182f0e5f6b1 100644 --- a/hw/net/dp8393x.c +++ b/hw/net/dp8393x.c @@ -19,7 +19,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/net/dp8393x.h" #include "hw/sysbus.h" #include "migration/vmstate.h" diff --git a/hw/net/e1000.c b/hw/net/e1000.c index a80a7b0cdb4..202ad404013 100644 --- a/hw/net/e1000.c +++ b/hw/net/e1000.c @@ -28,7 +28,7 @@ #include "qemu/osdep.h" #include "hw/net/mii.h" #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "net/eth.h" #include "net/net.h" diff --git a/hw/net/e1000e.c b/hw/net/e1000e.c index 89e6d52ba0f..3d4683370c6 100644 --- a/hw/net/e1000e.c +++ b/hw/net/e1000e.c @@ -45,7 +45,7 @@ #include "hw/net/mii.h" #include "hw/pci/msi.h" #include "hw/pci/msix.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" =20 #include "e1000_common.h" diff --git a/hw/net/eepro100.c b/hw/net/eepro100.c index d47df5a97fd..aaa3eb60f8a 100644 --- a/hw/net/eepro100.c +++ b/hw/net/eepro100.c @@ -45,7 +45,7 @@ #include "qemu/osdep.h" #include "qemu/units.h" #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "net/net.h" #include "net/eth.h" diff --git a/hw/net/fsl_etsec/etsec.c b/hw/net/fsl_etsec/etsec.c index e6a29d9ec6d..5b77528e365 100644 --- a/hw/net/fsl_etsec/etsec.c +++ b/hw/net/fsl_etsec/etsec.c @@ -31,7 +31,7 @@ #include "hw/core/irq.h" #include "hw/net/mii.h" #include "hw/core/ptimer.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "etsec.h" #include "registers.h" #include "qapi/error.h" diff --git a/hw/net/ftgmac100.c b/hw/net/ftgmac100.c index d5590391b7f..d29f7dcd171 100644 --- a/hw/net/ftgmac100.c +++ b/hw/net/ftgmac100.c @@ -21,7 +21,7 @@ #include "net/checksum.h" #include "net/eth.h" #include "hw/net/mii.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" =20 #include /* for crc32 */ diff --git a/hw/net/i82596.c b/hw/net/i82596.c index a94cfa2d6df..37ce20efb19 100644 --- a/hw/net/i82596.c +++ b/hw/net/i82596.c @@ -41,7 +41,7 @@ #include "net/net.h" #include "net/eth.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "system/address-spaces.h" #include "qemu/module.h" diff --git a/hw/net/igb.c b/hw/net/igb.c index e4c02365d67..d39eba9f64d 100644 --- a/hw/net/igb.c +++ b/hw/net/igb.c @@ -52,7 +52,7 @@ #include "hw/pci/pcie_sriov.h" #include "hw/pci/msi.h" #include "hw/pci/msix.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" =20 #include "igb_common.h" diff --git a/hw/net/imx_fec.c b/hw/net/imx_fec.c index 386d24421cb..c177b7ff2b7 100644 --- a/hw/net/imx_fec.c +++ b/hw/net/imx_fec.c @@ -24,7 +24,7 @@ #include "qemu/osdep.h" #include "hw/core/irq.h" #include "hw/net/imx_fec.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "system/dma.h" #include "qemu/log.h" diff --git a/hw/net/lan9118.c b/hw/net/lan9118.c index 191fd8b421b..381fd387641 100644 --- a/hw/net/lan9118.c +++ b/hw/net/lan9118.c @@ -19,7 +19,7 @@ #include "hw/net/lan9118_phy.h" #include "hw/net/lan9118.h" #include "hw/core/ptimer.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qemu/bswap.h" #include "qemu/log.h" diff --git a/hw/net/lance.c b/hw/net/lance.c index dfb855c23a4..5d5bf9b9616 100644 --- a/hw/net/lance.c +++ b/hw/net/lance.c @@ -41,7 +41,7 @@ #include "hw/sparc/sparc32_dma.h" #include "migration/vmstate.h" #include "hw/net/lance.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "trace.h" #include "system/system.h" =20 diff --git a/hw/net/lasi_i82596.c b/hw/net/lasi_i82596.c index 2f212a7ed38..50e3c4fa86d 100644 --- a/hw/net/lasi_i82596.c +++ b/hw/net/lasi_i82596.c @@ -19,7 +19,7 @@ #include "hw/net/lasi_82596.h" #include "hw/net/i82596.h" #include "trace.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" =20 #define PA_I82596_RESET 0 /* Offsets relative to LASI-LAN-Ad= dr.*/ diff --git a/hw/net/mcf_fec.c b/hw/net/mcf_fec.c index 9cd94369859..ecf105adf2e 100644 --- a/hw/net/mcf_fec.c +++ b/hw/net/mcf_fec.c @@ -14,7 +14,7 @@ #include "hw/m68k/mcf.h" #include "hw/m68k/mcf_fec.h" #include "hw/net/mii.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include /* for crc32 */ =20 diff --git a/hw/net/msf2-emac.c b/hw/net/msf2-emac.c index 3e279209628..ac01d1ce472 100644 --- a/hw/net/msf2-emac.c +++ b/hw/net/msf2-emac.c @@ -35,7 +35,7 @@ #include "hw/net/msf2-emac.h" #include "hw/net/mii.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" =20 REG32(CFG1, 0x0) diff --git a/hw/net/mv88w8618_eth.c b/hw/net/mv88w8618_eth.c index 68fda839660..1a1bba8b572 100644 --- a/hw/net/mv88w8618_eth.c +++ b/hw/net/mv88w8618_eth.c @@ -7,7 +7,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "hw/core/irq.h" #include "hw/net/mv88w8618_eth.h" diff --git a/hw/net/ne2000-pci.c b/hw/net/ne2000-pci.c index 7b215eb1f2e..f741478101d 100644 --- a/hw/net/ne2000-pci.c +++ b/hw/net/ne2000-pci.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "hw/core/irq.h" #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "ne2000.h" #include "system/system.h" diff --git a/hw/net/npcm7xx_emc.c b/hw/net/npcm7xx_emc.c index 704f4387684..4105e894297 100644 --- a/hw/net/npcm7xx_emc.c +++ b/hw/net/npcm7xx_emc.c @@ -33,7 +33,7 @@ =20 #include "hw/core/irq.h" #include "hw/core/qdev-clock.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/net/npcm7xx_emc.h" #include "net/eth.h" #include "migration/vmstate.h" diff --git a/hw/net/opencores_eth.c b/hw/net/opencores_eth.c index 85419321d94..34992f3cc9f 100644 --- a/hw/net/opencores_eth.c +++ b/hw/net/opencores_eth.c @@ -34,7 +34,7 @@ #include "qemu/osdep.h" #include "hw/core/irq.h" #include "hw/net/mii.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "net/net.h" #include "qemu/module.h" diff --git a/hw/net/pcnet-pci.c b/hw/net/pcnet-pci.c index dad5d2ab06d..bef608959a6 100644 --- a/hw/net/pcnet-pci.c +++ b/hw/net/pcnet-pci.c @@ -30,7 +30,7 @@ #include "qemu/osdep.h" #include "hw/core/irq.h" #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "net/net.h" #include "qemu/module.h" diff --git a/hw/net/pcnet.c b/hw/net/pcnet.c index fc2ce5eeb2d..0bd7d4314e7 100644 --- a/hw/net/pcnet.c +++ b/hw/net/pcnet.c @@ -38,7 +38,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "net/net.h" #include "net/eth.h" diff --git a/hw/net/rocker/rocker.c b/hw/net/rocker/rocker.c index cc49701dd3c..935e74fd7d1 100644 --- a/hw/net/rocker/rocker.c +++ b/hw/net/rocker/rocker.c @@ -17,7 +17,7 @@ =20 #include "qemu/osdep.h" #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/vmstate.h" #include "hw/pci/msix.h" diff --git a/hw/net/rtl8139.c b/hw/net/rtl8139.c index 324fb932aac..9fd00574d29 100644 --- a/hw/net/rtl8139.c +++ b/hw/net/rtl8139.c @@ -52,7 +52,7 @@ #include /* for crc32 */ =20 #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "system/dma.h" #include "qemu/module.h" diff --git a/hw/net/smc91c111.c b/hw/net/smc91c111.c index b1c675be6fc..e3bf3b0e726 100644 --- a/hw/net/smc91c111.c +++ b/hw/net/smc91c111.c @@ -14,7 +14,7 @@ #include "hw/core/irq.h" #include "hw/net/smc91c111.h" #include "hw/registerfields.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/net/spapr_llan.c b/hw/net/spapr_llan.c index f6f217d6320..550848307d1 100644 --- a/hw/net/spapr_llan.c +++ b/hw/net/spapr_llan.c @@ -32,7 +32,7 @@ #include "migration/vmstate.h" #include "hw/ppc/spapr.h" #include "hw/ppc/spapr_vio.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/system.h" #include "trace.h" =20 diff --git a/hw/net/stellaris_enet.c b/hw/net/stellaris_enet.c index a05aa8a024c..c97d6945852 100644 --- a/hw/net/stellaris_enet.c +++ b/hw/net/stellaris_enet.c @@ -9,7 +9,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "net/net.h" diff --git a/hw/net/sungem.c b/hw/net/sungem.c index b405eb89fa5..308c2d0dbd0 100644 --- a/hw/net/sungem.c +++ b/hw/net/sungem.c @@ -9,7 +9,7 @@ =20 #include "qemu/osdep.h" #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/net/sunhme.c b/hw/net/sunhme.c index c2f7a8483da..e2cd1b52710 100644 --- a/hw/net/sunhme.c +++ b/hw/net/sunhme.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "hw/net/mii.h" #include "net/net.h" diff --git a/hw/net/tulip.c b/hw/net/tulip.c index 5f9df76a74e..bc7b18ed36d 100644 --- a/hw/net/tulip.c +++ b/hw/net/tulip.c @@ -10,7 +10,7 @@ #include "qemu/log.h" #include "hw/core/irq.h" #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/nvram/eeprom93xx.h" #include "migration/vmstate.h" #include "system/system.h" diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c index ca813203d76..317f1ad23b1 100644 --- a/hw/net/virtio-net.c +++ b/hw/net/virtio-net.c @@ -33,7 +33,7 @@ #include "hw/virtio/virtio-bus.h" #include "qapi/error.h" #include "qapi/qapi-events-net.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/qapi-types-migration.h" #include "qapi/qapi-events-migration.h" #include "hw/virtio/virtio-access.h" diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c index 03732375a76..bae3a44cb0c 100644 --- a/hw/net/vmxnet3.c +++ b/hw/net/vmxnet3.c @@ -18,7 +18,7 @@ #include "qemu/osdep.h" #include "hw/hw.h" #include "hw/pci/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "net/tap.h" #include "net/checksum.h" #include "system/system.h" diff --git a/hw/net/xen_nic.c b/hw/net/xen_nic.c index e7bdc732de0..4ef1b7dd29a 100644 --- a/hw/net/xen_nic.c +++ b/hw/net/xen_nic.c @@ -37,7 +37,7 @@ =20 #include "hw/xen/xen-backend.h" #include "hw/xen/xen-bus-helper.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" =20 #include "hw/xen/interface/io/netif.h" diff --git a/hw/net/xgmac.c b/hw/net/xgmac.c index 25768644f58..f07be725120 100644 --- a/hw/net/xgmac.c +++ b/hw/net/xgmac.c @@ -26,7 +26,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "qemu/module.h" diff --git a/hw/net/xilinx_axienet.c b/hw/net/xilinx_axienet.c index c7cb257e62d..36047a51c00 100644 --- a/hw/net/xilinx_axienet.c +++ b/hw/net/xilinx_axienet.c @@ -32,7 +32,7 @@ #include "net/checksum.h" =20 #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/stream.h" #include "qom/object.h" =20 diff --git a/hw/net/xilinx_ethlite.c b/hw/net/xilinx_ethlite.c index 0d00e3cc0d9..39e64a46e26 100644 --- a/hw/net/xilinx_ethlite.c +++ b/hw/net/xilinx_ethlite.c @@ -33,7 +33,7 @@ #include "qapi/error.h" #include "hw/sysbus.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/misc/unimp.h" #include "net/net.h" diff --git a/hw/nvram/aspeed_otp.c b/hw/nvram/aspeed_otp.c index dcf8ed3917e..a60289000c3 100644 --- a/hw/nvram/aspeed_otp.c +++ b/hw/nvram/aspeed_otp.c @@ -10,7 +10,7 @@ #include "qemu/log.h" #include "qapi/error.h" #include "system/block-backend.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/nvram/aspeed_otp.h" #include "hw/nvram/trace.h" =20 diff --git a/hw/nvram/ds1225y.c b/hw/nvram/ds1225y.c index 0945e36652e..512e5485187 100644 --- a/hw/nvram/ds1225y.c +++ b/hw/nvram/ds1225y.c @@ -23,7 +23,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "trace.h" diff --git a/hw/nvram/eeprom_at24c.c b/hw/nvram/eeprom_at24c.c index 82ea97e552a..e947cf8a3b2 100644 --- a/hw/nvram/eeprom_at24c.c +++ b/hw/nvram/eeprom_at24c.c @@ -14,7 +14,7 @@ #include "qemu/module.h" #include "hw/i2c/i2c.h" #include "hw/nvram/eeprom_at24c.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "system/block-backend.h" #include "qom/object.h" diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c index df07424e553..e5c35b0e2e4 100644 --- a/hw/nvram/fw_cfg.c +++ b/hw/nvram/fw_cfg.c @@ -30,7 +30,7 @@ #include "system/address-spaces.h" #include "hw/core/boards.h" #include "hw/nvram/fw_cfg.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "migration/qemu-file-types.h" #include "migration/vmstate.h" diff --git a/hw/nvram/mac_nvram.c b/hw/nvram/mac_nvram.c index 66526a22914..b048db0777a 100644 --- a/hw/nvram/mac_nvram.c +++ b/hw/nvram/mac_nvram.c @@ -27,7 +27,7 @@ #include "qapi/error.h" #include "hw/nvram/chrp_nvram.h" #include "hw/nvram/mac_nvram.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "system/block-backend.h" #include "migration/vmstate.h" diff --git a/hw/nvram/nrf51_nvm.c b/hw/nvram/nrf51_nvm.c index 23cc9fe9b3d..b841ead579d 100644 --- a/hw/nvram/nrf51_nvm.c +++ b/hw/nvram/nrf51_nvm.c @@ -23,7 +23,7 @@ #include "qemu/module.h" #include "hw/arm/nrf51.h" #include "hw/nvram/nrf51_nvm.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" =20 /* diff --git a/hw/nvram/spapr_nvram.c b/hw/nvram/spapr_nvram.c index d0ac4e5735f..c9202ddfcd4 100644 --- a/hw/nvram/spapr_nvram.c +++ b/hw/nvram/spapr_nvram.c @@ -36,7 +36,7 @@ #include "hw/nvram/chrp_nvram.h" #include "hw/ppc/spapr.h" #include "hw/ppc/spapr_vio.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "qom/object.h" =20 diff --git a/hw/nvram/xlnx-bbram.c b/hw/nvram/xlnx-bbram.c index 22aefbc240d..aad445b9018 100644 --- a/hw/nvram/xlnx-bbram.c +++ b/hw/nvram/xlnx-bbram.c @@ -31,7 +31,7 @@ #include "qapi/error.h" #include "system/blockdev.h" #include "migration/vmstate.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/nvram/xlnx-efuse.h" =20 diff --git a/hw/nvram/xlnx-efuse.c b/hw/nvram/xlnx-efuse.c index 4c23f8b9312..7eb156f9413 100644 --- a/hw/nvram/xlnx-efuse.c +++ b/hw/nvram/xlnx-efuse.c @@ -31,7 +31,7 @@ #include "qemu/log.h" #include "qapi/error.h" #include "system/blockdev.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" =20 #define TBIT0_OFFSET 28 diff --git a/hw/nvram/xlnx-versal-efuse-cache.c b/hw/nvram/xlnx-versal-efus= e-cache.c index d4ec96a6264..56c2def5f89 100644 --- a/hw/nvram/xlnx-versal-efuse-cache.c +++ b/hw/nvram/xlnx-versal-efuse-cache.c @@ -26,7 +26,7 @@ #include "hw/nvram/xlnx-versal-efuse.h" =20 #include "qemu/log.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 #define MR_SIZE 0xC00 =20 diff --git a/hw/nvram/xlnx-versal-efuse-ctrl.c b/hw/nvram/xlnx-versal-efuse= -ctrl.c index 6f17f32a0c3..b7dc0e49e5f 100644 --- a/hw/nvram/xlnx-versal-efuse-ctrl.c +++ b/hw/nvram/xlnx-versal-efuse-ctrl.c @@ -29,7 +29,7 @@ #include "qemu/log.h" #include "qapi/error.h" #include "migration/vmstate.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 #ifndef XLNX_VERSAL_EFUSE_CTRL_ERR_DEBUG #define XLNX_VERSAL_EFUSE_CTRL_ERR_DEBUG 0 diff --git a/hw/nvram/xlnx-zynqmp-efuse.c b/hw/nvram/xlnx-zynqmp-efuse.c index ce35bb0cc1f..e6bc54fc6bd 100644 --- a/hw/nvram/xlnx-zynqmp-efuse.c +++ b/hw/nvram/xlnx-zynqmp-efuse.c @@ -31,7 +31,7 @@ #include "qemu/log.h" #include "qapi/error.h" #include "migration/vmstate.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 #ifndef ZYNQMP_EFUSE_ERR_DEBUG #define ZYNQMP_EFUSE_ERR_DEBUG 0 diff --git a/hw/openrisc/openrisc_sim.c b/hw/openrisc/openrisc_sim.c index a42e7b5e271..bafb877cc38 100644 --- a/hw/openrisc/openrisc_sim.c +++ b/hw/openrisc/openrisc_sim.c @@ -27,7 +27,7 @@ #include "hw/char/serial-mm.h" #include "net/net.h" #include "hw/openrisc/boot.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/address-spaces.h" #include "system/device_tree.h" #include "system/system.h" diff --git a/hw/openrisc/virt.c b/hw/openrisc/virt.c index bc5d27dbdd8..446a81579c1 100644 --- a/hw/openrisc/virt.c +++ b/hw/openrisc/virt.c @@ -20,7 +20,7 @@ #include "hw/misc/sifive_test.h" #include "hw/pci/pci.h" #include "hw/pci-host/gpex.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/rtc/goldfish_rtc.h" #include "hw/sysbus.h" #include "hw/virtio/virtio-mmio.h" diff --git a/hw/pci-bridge/cxl_downstream.c b/hw/pci-bridge/cxl_downstream.c index 1065245a8b8..1265e40c395 100644 --- a/hw/pci-bridge/cxl_downstream.c +++ b/hw/pci-bridge/cxl_downstream.c @@ -13,7 +13,7 @@ #include "hw/pci/msi.h" #include "hw/pci/pcie.h" #include "hw/pci/pcie_port.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/cxl/cxl.h" #include "qapi/error.h" diff --git a/hw/pci-bridge/cxl_root_port.c b/hw/pci-bridge/cxl_root_port.c index e6a4035d26c..df359dee670 100644 --- a/hw/pci-bridge/cxl_root_port.c +++ b/hw/pci-bridge/cxl_root_port.c @@ -23,7 +23,7 @@ #include "hw/pci/pci_bridge.h" #include "hw/pci/pcie_port.h" #include "hw/pci/msi.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/sysbus.h" #include "qapi/error.h" diff --git a/hw/pci-bridge/cxl_upstream.c b/hw/pci-bridge/cxl_upstream.c index 208e0c6172e..019c311bb5b 100644 --- a/hw/pci-bridge/cxl_upstream.c +++ b/hw/pci-bridge/cxl_upstream.c @@ -10,7 +10,7 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/pci/msi.h" #include "hw/pci/pcie.h" diff --git a/hw/pci-bridge/gen_pcie_root_port.c b/hw/pci-bridge/gen_pcie_ro= ot_port.c index d9078e783bf..fa1cf5e58fd 100644 --- a/hw/pci-bridge/gen_pcie_root_port.c +++ b/hw/pci-bridge/gen_pcie_root_port.c @@ -15,7 +15,7 @@ #include "qemu/module.h" #include "hw/pci/msix.h" #include "hw/pci/pcie_port.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/vmstate.h" #include "qom/object.h" diff --git a/hw/pci-bridge/pci_bridge_dev.c b/hw/pci-bridge/pci_bridge_dev.c index cb4809f38b1..0c1383562d9 100644 --- a/hw/pci-bridge/pci_bridge_dev.c +++ b/hw/pci-bridge/pci_bridge_dev.c @@ -27,7 +27,7 @@ #include "hw/pci/msi.h" #include "hw/pci/shpc.h" #include "hw/pci/slotid_cap.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/memory.h" #include "hw/pci/pci_bus.h" #include "hw/core/hotplug.h" diff --git a/hw/pci-bridge/pci_expander_bridge.c b/hw/pci-bridge/pci_expand= er_bridge.c index b3a5f16e22a..08d40aa2eae 100644 --- a/hw/pci-bridge/pci_expander_bridge.c +++ b/hw/pci-bridge/pci_expander_bridge.c @@ -16,7 +16,7 @@ #include "hw/pci/pci_bus.h" #include "hw/pci/pci_host.h" #include "hw/pci/pcie_port.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/pci/pci_bridge.h" #include "hw/pci-bridge/pci_expander_bridge.h" #include "hw/cxl/cxl.h" diff --git a/hw/pci-bridge/pcie_pci_bridge.c b/hw/pci-bridge/pcie_pci_bridg= e.c index fce292a519b..e826fb2829f 100644 --- a/hw/pci-bridge/pcie_pci_bridge.c +++ b/hw/pci-bridge/pcie_pci_bridge.c @@ -16,7 +16,7 @@ #include "hw/pci/msi.h" #include "hw/pci/shpc.h" #include "hw/pci/slotid_cap.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qom/object.h" =20 struct PCIEPCIBridge { diff --git a/hw/pci-bridge/pcie_root_port.c b/hw/pci-bridge/pcie_root_port.c index 22c2fdb71e7..fe3ced56851 100644 --- a/hw/pci-bridge/pcie_root_port.c +++ b/hw/pci-bridge/pcie_root_port.c @@ -16,7 +16,7 @@ #include "qapi/error.h" #include "qemu/module.h" #include "hw/pci/pcie_port.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 static void rp_aer_vector_update(PCIDevice *d) { diff --git a/hw/pci-bridge/xio3130_downstream.c b/hw/pci-bridge/xio3130_dow= nstream.c index dc7d1aa7d77..0c3fed3053b 100644 --- a/hw/pci-bridge/xio3130_downstream.c +++ b/hw/pci-bridge/xio3130_downstream.c @@ -24,7 +24,7 @@ #include "hw/pci/msi.h" #include "hw/pci/pcie.h" #include "hw/pci/pcie_port.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qemu/module.h" diff --git a/hw/pci-host/aspeed_pcie.c b/hw/pci-host/aspeed_pcie.c index 5d837f638c2..27f1078e3a5 100644 --- a/hw/pci-host/aspeed_pcie.c +++ b/hw/pci-host/aspeed_pcie.c @@ -17,7 +17,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/registerfields.h" #include "hw/core/irq.h" #include "hw/pci/pci_host.h" diff --git a/hw/pci-host/astro.c b/hw/pci-host/astro.c index b54f6ef2d53..00a904277c0 100644 --- a/hw/pci-host/astro.c +++ b/hw/pci-host/astro.c @@ -28,7 +28,7 @@ #include "hw/core/irq.h" #include "hw/pci/pci_device.h" #include "hw/pci/pci_bus.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/pci-host/astro.h" #include "hw/hppa/hppa_hardware.h" #include "migration/vmstate.h" diff --git a/hw/pci-host/designware.c b/hw/pci-host/designware.c index 5a80502abb7..019e0253820 100644 --- a/hw/pci-host/designware.c +++ b/hw/pci-host/designware.c @@ -26,7 +26,7 @@ #include "hw/pci/pci_bridge.h" #include "hw/pci/pci_host.h" #include "hw/pci/pcie_port.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "hw/core/irq.h" #include "hw/pci-host/designware.h" diff --git a/hw/pci-host/dino.c b/hw/pci-host/dino.c index e6fdb927f5e..4e64e0f553a 100644 --- a/hw/pci-host/dino.c +++ b/hw/pci-host/dino.c @@ -17,7 +17,7 @@ #include "hw/core/irq.h" #include "hw/pci/pci_device.h" #include "hw/pci/pci_bus.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/pci-host/dino.h" #include "migration/vmstate.h" #include "trace.h" diff --git a/hw/pci-host/gpex.c b/hw/pci-host/gpex.c index 3db4c8c9f05..b5074c05c00 100644 --- a/hw/pci-host/gpex.c +++ b/hw/pci-host/gpex.c @@ -34,7 +34,7 @@ #include "hw/core/irq.h" #include "hw/pci/pci_bus.h" #include "hw/pci-host/gpex.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qemu/module.h" =20 diff --git a/hw/pci-host/grackle.c b/hw/pci-host/grackle.c index 85a4b83228a..9a58f0e9b56 100644 --- a/hw/pci-host/grackle.c +++ b/hw/pci-host/grackle.c @@ -24,7 +24,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/pci/pci_device.h" #include "hw/core/irq.h" #include "qapi/error.h" diff --git a/hw/pci-host/gt64120.c b/hw/pci-host/gt64120.c index 3e497b5da5b..2339f10a30a 100644 --- a/hw/pci-host/gt64120.c +++ b/hw/pci-host/gt64120.c @@ -29,7 +29,7 @@ #include "qemu/units.h" #include "qemu/log.h" #include "qemu/bswap.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/registerfields.h" #include "hw/pci/pci_device.h" #include "hw/pci/pci_host.h" diff --git a/hw/pci-host/i440fx.c b/hw/pci-host/i440fx.c index e13bb1b53e4..15354abf3ba 100644 --- a/hw/pci-host/i440fx.c +++ b/hw/pci-host/i440fx.c @@ -29,7 +29,7 @@ #include "hw/pci/pci.h" #include "hw/pci/pci_host.h" #include "hw/pci-host/i440fx.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "qapi/error.h" #include "migration/vmstate.h" diff --git a/hw/pci-host/mv64361.c b/hw/pci-host/mv64361.c index 9f080e4825a..636228c4074 100644 --- a/hw/pci-host/mv64361.c +++ b/hw/pci-host/mv64361.c @@ -16,7 +16,7 @@ #include "hw/pci/pci_host.h" #include "hw/core/irq.h" #include "hw/intc/i8259.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/address-spaces.h" #include "qemu/log.h" #include "qemu/error-report.h" diff --git a/hw/pci-host/pnv_phb.c b/hw/pci-host/pnv_phb.c index 4b0ced79b08..85fcc3b6868 100644 --- a/hw/pci-host/pnv_phb.c +++ b/hw/pci-host/pnv_phb.c @@ -15,7 +15,7 @@ #include "hw/pci-host/pnv_phb3.h" #include "hw/pci-host/pnv_phb4.h" #include "hw/ppc/pnv.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qom/object.h" #include "system/system.h" =20 diff --git a/hw/pci-host/pnv_phb3.c b/hw/pci-host/pnv_phb3.c index 9808d575509..d6ab5153374 100644 --- a/hw/pci-host/pnv_phb3.c +++ b/hw/pci-host/pnv_phb3.c @@ -19,7 +19,7 @@ #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_chip.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qom/object.h" #include "system/system.h" =20 diff --git a/hw/pci-host/pnv_phb3_msi.c b/hw/pci-host/pnv_phb3_msi.c index f6bf4e323a9..66ba7b79134 100644 --- a/hw/pci-host/pnv_phb3_msi.c +++ b/hw/pci-host/pnv_phb3_msi.c @@ -14,7 +14,7 @@ #include "hw/ppc/pnv.h" #include "hw/pci/msi.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/reset.h" =20 static uint64_t phb3_msi_ive_addr(PnvPHB3 *phb, int srcno) diff --git a/hw/pci-host/pnv_phb4.c b/hw/pci-host/pnv_phb4.c index 9f17fc1bb41..396bc47817d 100644 --- a/hw/pci-host/pnv_phb4.c +++ b/hw/pci-host/pnv_phb4.c @@ -19,7 +19,7 @@ #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_xscom.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qom/object.h" #include "trace.h" =20 diff --git a/hw/pci-host/pnv_phb4_pec.c b/hw/pci-host/pnv_phb4_pec.c index 5bac1c42ed0..58ec14ec2fc 100644 --- a/hw/pci-host/pnv_phb4_pec.c +++ b/hw/pci-host/pnv_phb4_pec.c @@ -18,7 +18,7 @@ #include "hw/pci/pci_bus.h" #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_chip.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/system.h" =20 #include diff --git a/hw/pci-host/ppce500.c b/hw/pci-host/ppce500.c index a8e172136eb..76623f78c46 100644 --- a/hw/pci-host/ppce500.c +++ b/hw/pci-host/ppce500.c @@ -16,7 +16,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "hw/pci/pci_device.h" #include "hw/pci/pci_host.h" diff --git a/hw/pci-host/q35.c b/hw/pci-host/q35.c index a708758d361..bf562290514 100644 --- a/hw/pci-host/q35.c +++ b/hw/pci-host/q35.c @@ -32,7 +32,7 @@ #include "qemu/log.h" #include "hw/i386/pc.h" #include "hw/pci-host/q35.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qapi/visitor.h" diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index a587f16131b..c50061996c7 100644 --- a/hw/pci-host/raven.c +++ b/hw/pci-host/raven.c @@ -30,7 +30,7 @@ #include "hw/pci/pci_device.h" #include "hw/pci/pci_bus.h" #include "hw/pci/pci_host.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/intc/i8259.h" #include "hw/core/irq.h" #include "hw/core/or-irq.h" diff --git a/hw/pci-host/remote.c b/hw/pci-host/remote.c index e6d2af4502a..feaaa9adaa1 100644 --- a/hw/pci-host/remote.c +++ b/hw/pci-host/remote.c @@ -26,7 +26,7 @@ #include "hw/pci/pci.h" #include "hw/pci/pci_host.h" #include "hw/pci/pcie_host.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/pci-host/remote.h" #include "system/memory.h" =20 diff --git a/hw/pci-host/sabre.c b/hw/pci-host/sabre.c index c2f99b76f80..87af933dc29 100644 --- a/hw/pci-host/sabre.c +++ b/hw/pci-host/sabre.c @@ -28,7 +28,7 @@ #include "hw/sysbus.h" #include "hw/pci/pci.h" #include "hw/pci/pci_host.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/pci/pci_bridge.h" #include "hw/pci/pci_bus.h" #include "hw/core/irq.h" diff --git a/hw/pci-host/uninorth.c b/hw/pci-host/uninorth.c index 7a25f3f39f5..d39546b6f42 100644 --- a/hw/pci-host/uninorth.c +++ b/hw/pci-host/uninorth.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/module.h" #include "hw/pci/pci_device.h" #include "hw/pci/pci_host.h" diff --git a/hw/pci-host/versatile.c b/hw/pci-host/versatile.c index 40dce72e674..1fdae78210a 100644 --- a/hw/pci-host/versatile.c +++ b/hw/pci-host/versatile.c @@ -15,7 +15,7 @@ #include "hw/pci/pci_device.h" #include "hw/pci/pci_bus.h" #include "hw/pci/pci_host.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/log.h" #include "qemu/module.h" #include "qom/object.h" diff --git a/hw/pci-host/xilinx-pcie.c b/hw/pci-host/xilinx-pcie.c index ac6e61c83b0..86c20377d19 100644 --- a/hw/pci-host/xilinx-pcie.c +++ b/hw/pci-host/xilinx-pcie.c @@ -22,7 +22,7 @@ #include "qemu/units.h" #include "qapi/error.h" #include "hw/pci/pci_bridge.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/irq.h" #include "hw/pci-host/xilinx-pcie.h" =20 diff --git a/hw/pci/pci.c b/hw/pci/pci.c index a3118ac6d0d..2371a916809 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -30,7 +30,7 @@ #include "hw/pci/pci_bridge.h" #include "hw/pci/pci_bus.h" #include "hw/pci/pci_host.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/cpr.h" #include "migration/qemu-file-types.h" diff --git a/hw/pci/pci_bridge.c b/hw/pci/pci_bridge.c index 76255c4cd89..e85932e41a9 100644 --- a/hw/pci/pci_bridge.c +++ b/hw/pci/pci_bridge.c @@ -38,7 +38,7 @@ #include "qapi/error.h" #include "hw/acpi/acpi_aml_interface.h" #include "hw/acpi/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 /* PCI bridge subsystem vendor ID helper functions */ #define PCI_SSVID_SIZEOF 8 diff --git a/hw/pci/pci_host.c b/hw/pci/pci_host.c index 7179d99178b..05f1475dc74 100644 --- a/hw/pci/pci_host.c +++ b/hw/pci/pci_host.c @@ -22,7 +22,7 @@ #include "hw/pci/pci.h" #include "hw/pci/pci_bridge.h" #include "hw/pci/pci_host.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/module.h" #include "hw/pci/pci_bus.h" #include "migration/vmstate.h" diff --git a/hw/pci/pcie_port.c b/hw/pci/pcie_port.c index 20b5e4cfb51..dbb6032160e 100644 --- a/hw/pci/pcie_port.c +++ b/hw/pci/pcie_port.c @@ -20,7 +20,7 @@ =20 #include "qemu/osdep.h" #include "hw/pci/pcie_port.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/module.h" #include "hw/core/hotplug.h" =20 diff --git a/hw/pci/pcie_sriov.c b/hw/pci/pcie_sriov.c index c4f88f09757..34e0875d210 100644 --- a/hw/pci/pcie_sriov.c +++ b/hw/pci/pcie_sriov.c @@ -14,7 +14,7 @@ #include "hw/pci/pci_device.h" #include "hw/pci/pcie.h" #include "hw/pci/pci_bus.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/range.h" #include "qapi/error.h" #include "trace.h" diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c index 7c65757e215..7f164331c8e 100644 --- a/hw/ppc/e500.c +++ b/hw/ppc/e500.c @@ -38,7 +38,7 @@ #include "hw/ppc/openpic.h" #include "hw/ppc/openpic_kvm.h" #include "hw/ppc/ppc.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/loader.h" #include "elf.h" #include "hw/sysbus.h" diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c index 909a4fe257d..410a3ac392e 100644 --- a/hw/ppc/mac_newworld.c +++ b/hw/ppc/mac_newworld.c @@ -52,7 +52,7 @@ #include "qapi/error.h" #include "exec/target_page.h" #include "hw/ppc/ppc.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/nvram/mac_nvram.h" #include "hw/core/boards.h" #include "hw/pci-host/uninorth.h" diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c index 8400db6c352..e679d338985 100644 --- a/hw/ppc/mac_oldworld.c +++ b/hw/ppc/mac_oldworld.c @@ -30,7 +30,7 @@ #include "qapi/error.h" #include "exec/target_page.h" #include "hw/ppc/ppc.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/boards.h" #include "hw/input/adb.h" #include "system/system.h" diff --git a/hw/ppc/pegasos.c b/hw/ppc/pegasos.c index 2de80a5fae9..bf290a7dcd5 100644 --- a/hw/ppc/pegasos.c +++ b/hw/ppc/pegasos.c @@ -20,7 +20,7 @@ #include "hw/isa/vt82c686.h" #include "hw/ide/pci.h" #include "hw/i2c/smbus_eeprom.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/reset.h" #include "system/runstate.h" #include "system/qtest.h" diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 8a50e9f0d85..f891c3a797c 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -50,7 +50,7 @@ #include "hw/pci-host/pnv_phb4.h" =20 #include "hw/ppc/xics.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/ppc/pnv_chip.h" #include "hw/ppc/pnv_xscom.h" #include "hw/ppc/pnv_pnor.h" diff --git a/hw/ppc/pnv_adu.c b/hw/ppc/pnv_adu.c index 005fbda4750..d686bfa62d9 100644 --- a/hw/ppc/pnv_adu.c +++ b/hw/ppc/pnv_adu.c @@ -17,7 +17,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" =20 -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_adu.h" #include "hw/ppc/pnv_chip.h" diff --git a/hw/ppc/pnv_chiptod.c b/hw/ppc/pnv_chiptod.c index 540d5e365f4..09a5a52ac72 100644 --- a/hw/ppc/pnv_chiptod.c +++ b/hw/ppc/pnv_chiptod.c @@ -29,7 +29,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/ppc/fdt.h" #include "hw/ppc/ppc.h" #include "hw/ppc/pnv.h" diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c index fb2dfc7ba21..59a9eee597c 100644 --- a/hw/ppc/pnv_core.c +++ b/hw/ppc/pnv_core.c @@ -29,7 +29,7 @@ #include "hw/ppc/pnv_core.h" #include "hw/ppc/pnv_xscom.h" #include "hw/ppc/xics.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "helper_regs.h" =20 static const char *pnv_core_cpu_typename(PnvCore *pc) diff --git a/hw/ppc/pnv_homer.c b/hw/ppc/pnv_homer.c index fb394cc6e09..1683513daca 100644 --- a/hw/ppc/pnv_homer.c +++ b/hw/ppc/pnv_homer.c @@ -23,7 +23,7 @@ #include "system/memory.h" #include "system/cpus.h" #include "hw/core/qdev.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_chip.h" #include "hw/ppc/pnv_homer.h" diff --git a/hw/ppc/pnv_i2c.c b/hw/ppc/pnv_i2c.c index 213e58b455c..c8e90c636f4 100644 --- a/hw/ppc/pnv_i2c.c +++ b/hw/ppc/pnv_i2c.c @@ -12,7 +12,7 @@ #include "system/reset.h" =20 #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_chip.h" diff --git a/hw/ppc/pnv_lpc.c b/hw/ppc/pnv_lpc.c index 538681bdb32..3b65c123164 100644 --- a/hw/ppc/pnv_lpc.c +++ b/hw/ppc/pnv_lpc.c @@ -24,7 +24,7 @@ #include "qemu/module.h" #include "hw/core/irq.h" #include "hw/isa/isa.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_chip.h" #include "hw/ppc/pnv_lpc.h" diff --git a/hw/ppc/pnv_n1_chiplet.c b/hw/ppc/pnv_n1_chiplet.c index 053f6473f22..c75ac671d36 100644 --- a/hw/ppc/pnv_n1_chiplet.c +++ b/hw/ppc/pnv_n1_chiplet.c @@ -8,7 +8,7 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_xscom.h" #include "hw/ppc/pnv_n1_chiplet.h" diff --git a/hw/ppc/pnv_nest_pervasive.c b/hw/ppc/pnv_nest_pervasive.c index 1b1b14fed95..01119e667c3 100644 --- a/hw/ppc/pnv_nest_pervasive.c +++ b/hw/ppc/pnv_nest_pervasive.c @@ -8,7 +8,7 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_xscom.h" #include "hw/ppc/pnv_nest_pervasive.h" diff --git a/hw/ppc/pnv_occ.c b/hw/ppc/pnv_occ.c index 7e93e6a6b11..64cab3e9dc8 100644 --- a/hw/ppc/pnv_occ.c +++ b/hw/ppc/pnv_occ.c @@ -22,7 +22,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_chip.h" #include "hw/ppc/pnv_xscom.h" diff --git a/hw/ppc/pnv_pnor.c b/hw/ppc/pnv_pnor.c index c7cbc525b33..1083e42ab57 100644 --- a/hw/ppc/pnv_pnor.c +++ b/hw/ppc/pnv_pnor.c @@ -15,7 +15,7 @@ #include "system/blockdev.h" #include "hw/core/loader.h" #include "hw/ppc/pnv_pnor.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" =20 static uint64_t pnv_pnor_read(void *opaque, hwaddr addr, unsigned size) diff --git a/hw/ppc/pnv_psi.c b/hw/ppc/pnv_psi.c index 1cea9375c0e..264568cdfb1 100644 --- a/hw/ppc/pnv_psi.c +++ b/hw/ppc/pnv_psi.c @@ -30,7 +30,7 @@ #include "hw/ppc/fdt.h" #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_xscom.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/ppc/pnv_psi.h" =20 #include diff --git a/hw/ppc/pnv_sbe.c b/hw/ppc/pnv_sbe.c index 4798e129983..27383ce6837 100644 --- a/hw/ppc/pnv_sbe.c +++ b/hw/ppc/pnv_sbe.c @@ -22,7 +22,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_xscom.h" #include "hw/ppc/pnv_sbe.h" diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c index 9e71037d84c..491560575c0 100644 --- a/hw/ppc/ppc440_bamboo.c +++ b/hw/ppc/ppc440_bamboo.c @@ -30,7 +30,7 @@ #include "system/reset.h" #include "hw/sysbus.h" #include "hw/intc/ppc-uic.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" =20 #include diff --git a/hw/ppc/ppc440_uc.c b/hw/ppc/ppc440_uc.c index fd9203d7e2a..fc6dd332e88 100644 --- a/hw/ppc/ppc440_uc.c +++ b/hw/ppc/ppc440_uc.c @@ -15,7 +15,7 @@ #include "hw/core/irq.h" #include "hw/ppc/ppc4xx.h" #include "hw/pci-host/ppc4xx.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/pci/pci.h" #include "system/reset.h" #include "cpu.h" diff --git a/hw/ppc/ppc4xx_devs.c b/hw/ppc/ppc4xx_devs.c index f36c519c8bf..1e6b6fec5da 100644 --- a/hw/ppc/ppc4xx_devs.c +++ b/hw/ppc/ppc4xx_devs.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "cpu.h" #include "hw/ppc/ppc4xx.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" =20 /*************************************************************************= ****/ diff --git a/hw/ppc/ppc4xx_sdram.c b/hw/ppc/ppc4xx_sdram.c index 6cc2a82ac5c..b2c8f96d5f8 100644 --- a/hw/ppc/ppc4xx_sdram.c +++ b/hw/ppc/ppc4xx_sdram.c @@ -36,7 +36,7 @@ #include "qemu/error-report.h" #include "system/address-spaces.h" /* get_system_memory() */ #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/ppc/ppc4xx.h" #include "trace.h" =20 diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c index 90164face16..c4efd1d3908 100644 --- a/hw/ppc/prep.c +++ b/hw/ppc/prep.c @@ -39,7 +39,7 @@ #include "hw/core/loader.h" #include "hw/rtc/mc146818rtc.h" #include "hw/isa/pc87312.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "exec/target_page.h" #include "system/kvm.h" #include "system/reset.h" diff --git a/hw/ppc/prep_systemio.c b/hw/ppc/prep_systemio.c index d0e42e8731a..bc8b0964e75 100644 --- a/hw/ppc/prep_systemio.c +++ b/hw/ppc/prep_systemio.c @@ -26,7 +26,7 @@ #include "qemu/log.h" #include "hw/core/irq.h" #include "hw/isa/isa.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "system/address-spaces.h" #include "qom/object.h" diff --git a/hw/ppc/rs6000_mc.c b/hw/ppc/rs6000_mc.c index a0964051d1e..d87afd6d5b4 100644 --- a/hw/ppc/rs6000_mc.c +++ b/hw/ppc/rs6000_mc.c @@ -22,7 +22,7 @@ #include "qemu/osdep.h" #include "qemu/units.h" #include "hw/isa/isa.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "system/address-spaces.h" #include "qapi/error.h" diff --git a/hw/ppc/sam460ex.c b/hw/ppc/sam460ex.c index 550aaa21fa2..b6e233747ed 100644 --- a/hw/ppc/sam460ex.c +++ b/hw/ppc/sam460ex.c @@ -37,7 +37,7 @@ #include "hw/ide/pci.h" #include "hw/usb/hcd-ehci.h" #include "hw/ppc/fdt.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/intc/ppc-uic.h" =20 #include diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 7363e533e15..eb626547ebd 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -68,7 +68,7 @@ #include "hw/ppc/spapr_nested.h" #include "hw/ppc/spapr_vio.h" #include "hw/ppc/vof.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/pci-host/spapr.h" #include "hw/pci/msi.h" =20 diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c index 4952f9bd2cf..41e37103c04 100644 --- a/hw/ppc/spapr_cpu_core.c +++ b/hw/ppc/spapr_cpu_core.c @@ -10,7 +10,7 @@ #include "qemu/osdep.h" #include "hw/cpu/core.h" #include "hw/ppc/spapr_cpu_core.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "target/ppc/cpu.h" #include "hw/ppc/spapr.h" diff --git a/hw/ppc/spapr_irq.c b/hw/ppc/spapr_irq.c index 32a2edbe5cc..3a9c96d939b 100644 --- a/hw/ppc/spapr_irq.c +++ b/hw/ppc/spapr_irq.c @@ -17,7 +17,7 @@ #include "hw/ppc/spapr_xive.h" #include "hw/ppc/xics.h" #include "hw/ppc/xics_spapr.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "cpu-models.h" #include "system/kvm.h" =20 diff --git a/hw/ppc/spapr_nvdimm.c b/hw/ppc/spapr_nvdimm.c index 72b4a6329fb..66474283915 100644 --- a/hw/ppc/spapr_nvdimm.c +++ b/hw/ppc/spapr_nvdimm.c @@ -34,7 +34,7 @@ #include "block/thread-pool.h" #include "migration/vmstate.h" #include "qemu/pmem.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 /* DIMM health bitmap bitmap indicators. Taken from kernel's papr_scm.c */ /* SCM device is unable to persist memory contents */ diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index 523edaa7b6c..a7c064be330 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -43,7 +43,7 @@ #include "hw/pci/pci_bus.h" #include "hw/pci/pci_ids.h" #include "hw/ppc/spapr_drc.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/device_tree.h" #include "system/kvm.h" #include "system/hostmem.h" diff --git a/hw/ppc/spapr_rng.c b/hw/ppc/spapr_rng.c index 6fec6070370..846ea3e3b6d 100644 --- a/hw/ppc/spapr_rng.c +++ b/hw/ppc/spapr_rng.c @@ -25,7 +25,7 @@ #include "system/device_tree.h" #include "system/rng.h" #include "hw/ppc/spapr.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "kvm_ppc.h" #include "qom/object.h" =20 diff --git a/hw/ppc/spapr_tpm_proxy.c b/hw/ppc/spapr_tpm_proxy.c index 1297b3ad569..a48dab7e7a6 100644 --- a/hw/ppc/spapr_tpm_proxy.c +++ b/hw/ppc/spapr_tpm_proxy.c @@ -15,7 +15,7 @@ #include "qemu/error-report.h" #include "system/reset.h" #include "hw/ppc/spapr.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "trace.h" =20 #define TPM_SPAPR_BUFSIZE 4096 diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c index 8b5f4eb57a0..cf2d10ecb27 100644 --- a/hw/ppc/virtex_ml507.c +++ b/hw/ppc/virtex_ml507.c @@ -43,7 +43,7 @@ #include "hw/intc/ppc-uic.h" #include "hw/ppc/ppc.h" #include "hw/ppc/ppc4xx.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 #include =20 diff --git a/hw/remote/proxy.c b/hw/remote/proxy.c index 18e0f7a064f..5081d67e7f4 100644 --- a/hw/remote/proxy.c +++ b/hw/remote/proxy.c @@ -12,7 +12,7 @@ #include "hw/pci/pci.h" #include "qapi/error.h" #include "io/channel-util.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "monitor/monitor.h" #include "migration/blocker.h" #include "qemu/sockets.h" diff --git a/hw/riscv/numa.c b/hw/riscv/numa.c index 726df2daf1f..24a803f7fad 100644 --- a/hw/riscv/numa.c +++ b/hw/riscv/numa.c @@ -21,7 +21,7 @@ #include "qemu/error-report.h" #include "qapi/error.h" #include "hw/core/boards.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/riscv/numa.h" #include "system/device_tree.h" =20 diff --git a/hw/riscv/riscv-iommu-pci.c b/hw/riscv/riscv-iommu-pci.c index cdb4a7a8f03..5f7d3592047 100644 --- a/hw/riscv/riscv-iommu-pci.c +++ b/hw/riscv/riscv-iommu-pci.c @@ -21,7 +21,7 @@ #include "hw/pci/msi.h" #include "hw/pci/msix.h" #include "hw/pci/pci_bus.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/riscv/riscv_hart.h" #include "migration/vmstate.h" #include "qapi/error.h" diff --git a/hw/riscv/riscv-iommu-sys.c b/hw/riscv/riscv-iommu-sys.c index 7d8c6f1c7c6..2a11c4dab6d 100644 --- a/hw/riscv/riscv-iommu-sys.c +++ b/hw/riscv/riscv-iommu-sys.c @@ -19,7 +19,7 @@ #include "qemu/osdep.h" #include "hw/core/irq.h" #include "hw/pci/pci_bus.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "qapi/error.h" #include "qemu/error-report.h" diff --git a/hw/riscv/riscv-iommu.c b/hw/riscv/riscv-iommu.c index f8656ec04b1..baaadadda10 100644 --- a/hw/riscv/riscv-iommu.c +++ b/hw/riscv/riscv-iommu.c @@ -21,7 +21,7 @@ #include "exec/target_page.h" #include "hw/pci/pci_bus.h" #include "hw/pci/pci_device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/riscv/riscv_hart.h" #include "migration/vmstate.h" #include "qapi/error.h" diff --git a/hw/riscv/riscv_hart.c b/hw/riscv/riscv_hart.c index 33cbc9873e6..31187487946 100644 --- a/hw/riscv/riscv_hart.c +++ b/hw/riscv/riscv_hart.c @@ -26,7 +26,7 @@ #include "qemu/cutils.h" #include "hw/sysbus.h" #include "target/riscv/cpu.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/riscv/riscv_hart.h" #include "qemu/error-report.h" =20 diff --git a/hw/riscv/shakti_c.c b/hw/riscv/shakti_c.c index d309ea2e39e..49a39b30212 100644 --- a/hw/riscv/shakti_c.c +++ b/hw/riscv/shakti_c.c @@ -24,7 +24,7 @@ #include "hw/intc/sifive_plic.h" #include "hw/intc/riscv_aclint.h" #include "system/system.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/address-spaces.h" #include "hw/riscv/boot.h" =20 diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index 9cb4f16432e..d79add55768 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -26,7 +26,7 @@ #include "hw/core/boards.h" #include "hw/core/loader.h" #include "hw/sysbus.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/char/serial-mm.h" #include "target/riscv/cpu.h" #include "hw/core/sysbus-fdt.h" diff --git a/hw/riscv/xiangshan_kmh.c b/hw/riscv/xiangshan_kmh.c index e831954cb36..436e51c1c59 100644 --- a/hw/riscv/xiangshan_kmh.c +++ b/hw/riscv/xiangshan_kmh.c @@ -37,7 +37,7 @@ #include "hw/intc/riscv_aclint.h" #include "hw/intc/riscv_aplic.h" #include "hw/intc/riscv_imsic.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/riscv/boot.h" #include "hw/riscv/xiangshan_kmh.h" #include "hw/riscv/riscv_hart.h" diff --git a/hw/rtc/allwinner-rtc.c b/hw/rtc/allwinner-rtc.c index a747bff534c..0ffd38cf787 100644 --- a/hw/rtc/allwinner-rtc.c +++ b/hw/rtc/allwinner-rtc.c @@ -23,7 +23,7 @@ #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/rtc/allwinner-rtc.h" #include "system/rtc.h" #include "trace.h" diff --git a/hw/rtc/goldfish_rtc.c b/hw/rtc/goldfish_rtc.c index 67f9eacb22a..79d2a04c721 100644 --- a/hw/rtc/goldfish_rtc.c +++ b/hw/rtc/goldfish_rtc.c @@ -23,7 +23,7 @@ #include "hw/rtc/goldfish_rtc.h" #include "migration/vmstate.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "qemu/bitops.h" #include "qemu/timer.h" diff --git a/hw/rtc/m48t59-isa.c b/hw/rtc/m48t59-isa.c index 9e2f6563a0a..ea0f307aa06 100644 --- a/hw/rtc/m48t59-isa.c +++ b/hw/rtc/m48t59-isa.c @@ -25,7 +25,7 @@ =20 #include "qemu/osdep.h" #include "hw/isa/isa.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/rtc/m48t59.h" #include "m48t59-internal.h" #include "qapi/error.h" diff --git a/hw/rtc/m48t59.c b/hw/rtc/m48t59.c index 0be17b3e798..be8efb8c0ad 100644 --- a/hw/rtc/m48t59.c +++ b/hw/rtc/m48t59.c @@ -25,7 +25,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/rtc/m48t59.h" #include "qemu/timer.h" #include "system/runstate.h" diff --git a/hw/rtc/mc146818rtc.c b/hw/rtc/mc146818rtc.c index 4c4c1c84219..56f8c79479e 100644 --- a/hw/rtc/mc146818rtc.c +++ b/hw/rtc/mc146818rtc.c @@ -29,7 +29,7 @@ #include "hw/acpi/acpi_aml_interface.h" #include "hw/intc/kvm_irqcount.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "qemu/timer.h" #include "system/system.h" diff --git a/hw/rtc/pl031.c b/hw/rtc/pl031.c index 2ec8ac8add6..847349b407a 100644 --- a/hw/rtc/pl031.c +++ b/hw/rtc/pl031.c @@ -15,7 +15,7 @@ #include "hw/rtc/pl031.h" #include "migration/vmstate.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "qemu/timer.h" #include "system/system.h" diff --git a/hw/rtc/rs5c372.c b/hw/rtc/rs5c372.c index bb924534a73..58f12b836d3 100644 --- a/hw/rtc/rs5c372.c +++ b/hw/rtc/rs5c372.c @@ -10,7 +10,7 @@ =20 #include "qemu/osdep.h" #include "hw/i2c/i2c.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/resettable.h" #include "migration/vmstate.h" #include "qemu/bcd.h" diff --git a/hw/rx/rx62n.c b/hw/rx/rx62n.c index 3fe9a4a518c..e1fa3d56618 100644 --- a/hw/rx/rx62n.c +++ b/hw/rx/rx62n.c @@ -27,7 +27,7 @@ #include "hw/rx/rx62n.h" #include "hw/core/loader.h" #include "hw/sysbus.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/system.h" #include "qobject/qlist.h" #include "qom/object.h" diff --git a/hw/s390x/3270-ccw.c b/hw/s390x/3270-ccw.c index 3f0d384fd80..51c6828ff17 100644 --- a/hw/s390x/3270-ccw.c +++ b/hw/s390x/3270-ccw.c @@ -15,7 +15,7 @@ #include "qemu/module.h" #include "hw/s390x/css.h" #include "hw/s390x/css-bridge.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/s390x/3270-ccw.h" =20 /* Handle READ ccw commands from guest */ diff --git a/hw/s390x/ccw-device.c b/hw/s390x/ccw-device.c index 8be1813b9e7..25c42732795 100644 --- a/hw/s390x/ccw-device.c +++ b/hw/s390x/ccw-device.c @@ -11,7 +11,7 @@ =20 #include "qemu/osdep.h" #include "ccw-device.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/module.h" #include "ipl.h" #include "qapi/visitor.h" diff --git a/hw/s390x/cpu-topology.c b/hw/s390x/cpu-topology.c index 9182ddb628d..efe88bc9674 100644 --- a/hw/s390x/cpu-topology.c +++ b/hw/s390x/cpu-topology.c @@ -18,7 +18,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qemu/error-report.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/boards.h" #include "target/s390x/cpu.h" #include "hw/s390x/s390-virtio-ccw.h" diff --git a/hw/s390x/css-bridge.c b/hw/s390x/css-bridge.c index f3b6ef56300..887794beef7 100644 --- a/hw/s390x/css-bridge.c +++ b/hw/s390x/css-bridge.c @@ -13,7 +13,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/core/hotplug.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "qemu/bitops.h" #include "qemu/module.h" diff --git a/hw/s390x/css.c b/hw/s390x/css.c index 53444f68288..d2c0af6a9bf 100644 --- a/hw/s390x/css.c +++ b/hw/s390x/css.c @@ -16,7 +16,7 @@ #include "qemu/error-report.h" #include "system/address-spaces.h" #include "hw/s390x/ioinst.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/s390x/css.h" #include "trace.h" #include "hw/s390x/s390_flic.h" diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c index e0a04ab1a22..b119a87a864 100644 --- a/hw/s390x/ipl.c +++ b/hw/s390x/ipl.c @@ -20,7 +20,7 @@ #include "system/tcg.h" #include "elf.h" #include "hw/core/loader.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/boards.h" #include "hw/s390x/virtio-ccw.h" #include "hw/s390x/vfio-ccw.h" diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index 3eea2f0c9d9..ff415b6312d 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -22,7 +22,7 @@ #include "hw/s390x/s390-virtio-ccw.h" #include "hw/core/boards.h" #include "hw/pci/pci_bus.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/pci/pci_bridge.h" #include "hw/pci/msi.h" #include "qemu/error-report.h" diff --git a/hw/s390x/s390-skeys.c b/hw/s390x/s390-skeys.c index 8eeecfd58fc..d974d97b5e7 100644 --- a/hw/s390x/s390-skeys.c +++ b/hw/s390x/s390-skeys.c @@ -13,7 +13,7 @@ #include "qemu/units.h" #include "exec/target_page.h" #include "hw/s390x/s390-virtio-ccw.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/s390x/storage-keys.h" #include "qapi/error.h" #include "qapi/qapi-commands-machine.h" diff --git a/hw/s390x/s390-stattrib.c b/hw/s390x/s390-stattrib.c index aa185372914..f149af16ac1 100644 --- a/hw/s390x/s390-stattrib.c +++ b/hw/s390x/s390-stattrib.c @@ -14,7 +14,7 @@ #include "exec/target_page.h" #include "migration/qemu-file.h" #include "migration/register.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/s390x/storage-attributes.h" #include "qemu/error-report.h" #include "qapi/error.h" diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index c5e0691a26d..8314655ec2c 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -36,7 +36,7 @@ #include "migration/register.h" #include "target/s390x/cpu_models.h" #include "hw/core/nmi.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/s390x/tod.h" #include "system/system.h" #include "system/cpus.h" diff --git a/hw/s390x/vhost-scsi-ccw.c b/hw/s390x/vhost-scsi-ccw.c index 8341b23a95c..1e68459eb0e 100644 --- a/hw/s390x/vhost-scsi-ccw.c +++ b/hw/s390x/vhost-scsi-ccw.c @@ -10,7 +10,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio.h" #include "qapi/error.h" #include "qemu/module.h" diff --git a/hw/s390x/vhost-user-fs-ccw.c b/hw/s390x/vhost-user-fs-ccw.c index cc1b8227fc0..35a77e4cb71 100644 --- a/hw/s390x/vhost-user-fs-ccw.c +++ b/hw/s390x/vhost-user-fs-ccw.c @@ -8,7 +8,7 @@ * directory. */ #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "hw/virtio/vhost-user-fs.h" #include "virtio-ccw.h" diff --git a/hw/s390x/vhost-vsock-ccw.c b/hw/s390x/vhost-vsock-ccw.c index 552e9e86a4b..efdfdeec84c 100644 --- a/hw/s390x/vhost-vsock-ccw.c +++ b/hw/s390x/vhost-vsock-ccw.c @@ -7,7 +7,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio.h" #include "qapi/error.h" #include "qemu/module.h" diff --git a/hw/s390x/virtio-ccw-9p.c b/hw/s390x/virtio-ccw-9p.c index 72bf6ec80c8..d8612f7cd13 100644 --- a/hw/s390x/virtio-ccw-9p.c +++ b/hw/s390x/virtio-ccw-9p.c @@ -10,7 +10,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio.h" #include "qapi/error.h" #include "qemu/module.h" diff --git a/hw/s390x/virtio-ccw-balloon.c b/hw/s390x/virtio-ccw-balloon.c index 399b40f366e..4f67310b693 100644 --- a/hw/s390x/virtio-ccw-balloon.c +++ b/hw/s390x/virtio-ccw-balloon.c @@ -10,7 +10,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio.h" #include "qapi/error.h" #include "qemu/module.h" diff --git a/hw/s390x/virtio-ccw-blk.c b/hw/s390x/virtio-ccw-blk.c index 7d8c4a75ced..939dcaeed38 100644 --- a/hw/s390x/virtio-ccw-blk.c +++ b/hw/s390x/virtio-ccw-blk.c @@ -10,7 +10,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio.h" #include "qapi/error.h" #include "qemu/module.h" diff --git a/hw/s390x/virtio-ccw-crypto.c b/hw/s390x/virtio-ccw-crypto.c index 75e714603b1..2c4ee2ca394 100644 --- a/hw/s390x/virtio-ccw-crypto.c +++ b/hw/s390x/virtio-ccw-crypto.c @@ -9,7 +9,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio.h" #include "qapi/error.h" #include "qemu/module.h" diff --git a/hw/s390x/virtio-ccw-gpu.c b/hw/s390x/virtio-ccw-gpu.c index edb6a47d376..4120c6bcb9f 100644 --- a/hw/s390x/virtio-ccw-gpu.c +++ b/hw/s390x/virtio-ccw-gpu.c @@ -9,7 +9,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio.h" #include "qapi/error.h" #include "qemu/module.h" diff --git a/hw/s390x/virtio-ccw-input.c b/hw/s390x/virtio-ccw-input.c index 2250d8cf981..a9ec60428ca 100644 --- a/hw/s390x/virtio-ccw-input.c +++ b/hw/s390x/virtio-ccw-input.c @@ -9,7 +9,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio.h" #include "qapi/error.h" #include "qemu/module.h" diff --git a/hw/s390x/virtio-ccw-mem.c b/hw/s390x/virtio-ccw-mem.c index daa485d189f..dea30aacfb3 100644 --- a/hw/s390x/virtio-ccw-mem.c +++ b/hw/s390x/virtio-ccw-mem.c @@ -11,7 +11,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qemu/module.h" #include "virtio-ccw-mem.h" diff --git a/hw/s390x/virtio-ccw-net.c b/hw/s390x/virtio-ccw-net.c index a7d4afbeb9e..30e7055ab2b 100644 --- a/hw/s390x/virtio-ccw-net.c +++ b/hw/s390x/virtio-ccw-net.c @@ -10,7 +10,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio.h" #include "qapi/error.h" #include "qemu/module.h" diff --git a/hw/s390x/virtio-ccw-rng.c b/hw/s390x/virtio-ccw-rng.c index 3263287d45a..0647621e33d 100644 --- a/hw/s390x/virtio-ccw-rng.c +++ b/hw/s390x/virtio-ccw-rng.c @@ -10,7 +10,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio.h" #include "qapi/error.h" #include "qemu/module.h" diff --git a/hw/s390x/virtio-ccw-scsi.c b/hw/s390x/virtio-ccw-scsi.c index 06b4c6c4a5a..c181a2b7692 100644 --- a/hw/s390x/virtio-ccw-scsi.c +++ b/hw/s390x/virtio-ccw-scsi.c @@ -10,7 +10,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio.h" #include "qapi/error.h" #include "qemu/module.h" diff --git a/hw/s390x/virtio-ccw-serial.c b/hw/s390x/virtio-ccw-serial.c index 0dac590c080..7ff07a08412 100644 --- a/hw/s390x/virtio-ccw-serial.c +++ b/hw/s390x/virtio-ccw-serial.c @@ -12,7 +12,7 @@ #include "qemu/osdep.h" #include "hw/virtio/virtio.h" #include "qemu/module.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio-serial.h" #include "virtio-ccw.h" =20 diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c index 844643d916f..f62e420a91e 100644 --- a/hw/scsi/megasas.c +++ b/hw/scsi/megasas.c @@ -20,7 +20,7 @@ =20 #include "qemu/osdep.h" #include "hw/pci/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/dma.h" #include "system/block-backend.h" #include "system/rtc.h" diff --git a/hw/scsi/mptsas.c b/hw/scsi/mptsas.c index 4ada35b7ec8..e4a7b2fee4a 100644 --- a/hw/scsi/mptsas.c +++ b/hw/scsi/mptsas.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/pci/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/dma.h" #include "hw/pci/msi.h" #include "qemu/iov.h" diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c index b9b115deedd..f310ddafb96 100644 --- a/hw/scsi/scsi-bus.c +++ b/hw/scsi/scsi-bus.c @@ -4,7 +4,7 @@ #include "qemu/module.h" #include "qemu/option.h" #include "qemu/hw-version.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/scsi/scsi.h" #include "migration/qemu-file-types.h" #include "migration/vmstate.h" diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c index b4782c6248d..9c78c9e18e2 100644 --- a/hw/scsi/scsi-disk.c +++ b/hw/scsi/scsi-disk.c @@ -36,7 +36,7 @@ #include "system/block-backend.h" #include "system/blockdev.h" #include "hw/block/block.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "system/dma.h" #include "system/system.h" diff --git a/hw/scsi/scsi-generic.c b/hw/scsi/scsi-generic.c index 9e380a2109e..2ac4fd66c37 100644 --- a/hw/scsi/scsi-generic.c +++ b/hw/scsi/scsi-generic.c @@ -18,7 +18,7 @@ #include "qemu/module.h" #include "hw/scsi/scsi.h" #include "migration/qemu-file-types.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/scsi/emulation.h" #include "system/block-backend.h" diff --git a/hw/scsi/spapr_vscsi.c b/hw/scsi/spapr_vscsi.c index a6591319db7..b4c8f94d22a 100644 --- a/hw/scsi/spapr_vscsi.c +++ b/hw/scsi/spapr_vscsi.c @@ -40,7 +40,7 @@ #include "srp.h" #include "hw/ppc/spapr.h" #include "hw/ppc/spapr_vio.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "viosrp.h" #include "trace.h" =20 diff --git a/hw/scsi/vhost-scsi.c b/hw/scsi/vhost-scsi.c index 573a44b2b3e..699863cc109 100644 --- a/hw/scsi/vhost-scsi.c +++ b/hw/scsi/vhost-scsi.c @@ -27,7 +27,7 @@ #include "hw/virtio/virtio-scsi.h" #include "hw/virtio/virtio-bus.h" #include "hw/core/fw-path-provider.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/cutils.h" #include "system/system.h" =20 diff --git a/hw/scsi/vhost-user-scsi.c b/hw/scsi/vhost-user-scsi.c index 2c79522b09a..89f06066b70 100644 --- a/hw/scsi/vhost-user-scsi.c +++ b/hw/scsi/vhost-user-scsi.c @@ -20,7 +20,7 @@ #include "qemu/error-report.h" #include "hw/core/fw-path-provider.h" #include "hw/core/qdev.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/virtio/vhost.h" #include "hw/virtio/vhost-backend.h" diff --git a/hw/scsi/virtio-scsi.c b/hw/scsi/virtio-scsi.c index 93e87c459c7..774968d8c70 100644 --- a/hw/scsi/virtio-scsi.c +++ b/hw/scsi/virtio-scsi.c @@ -24,7 +24,7 @@ #include "qemu/module.h" #include "system/block-backend.h" #include "system/dma.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/scsi/scsi.h" #include "scsi/constants.h" #include "hw/virtio/iothread-vq-mapping.h" diff --git a/hw/scsi/vmw_pvscsi.c b/hw/scsi/vmw_pvscsi.c index 7c98b1b8ea6..b3cdc255b46 100644 --- a/hw/scsi/vmw_pvscsi.c +++ b/hw/scsi/vmw_pvscsi.c @@ -33,7 +33,7 @@ #include "migration/vmstate.h" #include "scsi/constants.h" #include "hw/pci/msi.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "vmw_pvscsi.h" #include "trace.h" #include "qom/object.h" diff --git a/hw/sd/allwinner-sdhost.c b/hw/sd/allwinner-sdhost.c index 4c039b9520e..87bb7df9035 100644 --- a/hw/sd/allwinner-sdhost.c +++ b/hw/sd/allwinner-sdhost.c @@ -24,7 +24,7 @@ #include "qapi/error.h" #include "system/blockdev.h" #include "system/dma.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/irq.h" #include "hw/sd/allwinner-sdhost.h" #include "migration/vmstate.h" diff --git a/hw/sd/aspeed_sdhci.c b/hw/sd/aspeed_sdhci.c index 330e6a19c9a..6684f8221a3 100644 --- a/hw/sd/aspeed_sdhci.c +++ b/hw/sd/aspeed_sdhci.c @@ -13,7 +13,7 @@ #include "qapi/error.h" #include "hw/core/irq.h" #include "migration/vmstate.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "trace.h" =20 #define ASPEED_SDHCI_INFO 0x00 diff --git a/hw/sd/sd.c b/hw/sd/sd.c index ff45c8e70ca..3df331d5611 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -42,7 +42,7 @@ #include "migration/vmstate.h" #include "qapi/error.h" #include "qemu/bitmap.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "qemu/error-report.h" #include "qemu/timer.h" diff --git a/hw/sd/sdhci-pci.c b/hw/sd/sdhci-pci.c index 0e38bed49a9..27001e5e1ec 100644 --- a/hw/sd/sdhci-pci.c +++ b/hw/sd/sdhci-pci.c @@ -19,7 +19,7 @@ #include "qapi/error.h" #include "qemu/module.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sd/sdhci.h" #include "sdhci-internal.h" =20 diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 39185f0a987..9146e0cde06 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -29,7 +29,7 @@ #include "qemu/error-report.h" #include "qapi/error.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/dma.h" #include "qemu/timer.h" #include "qemu/bitops.h" diff --git a/hw/sd/ssi-sd.c b/hw/sd/ssi-sd.c index 3aacbd03871..c6e350af2dd 100644 --- a/hw/sd/ssi-sd.c +++ b/hw/sd/ssi-sd.c @@ -19,7 +19,7 @@ #include "system/blockdev.h" #include "hw/ssi/ssi.h" #include "migration/vmstate.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sd/sd.h" #include "qapi/error.h" #include "qemu/crc-ccitt.h" diff --git a/hw/sensor/isl_pmbus_vr.c b/hw/sensor/isl_pmbus_vr.c index e8d29b08ff3..0fad04def77 100644 --- a/hw/sensor/isl_pmbus_vr.c +++ b/hw/sensor/isl_pmbus_vr.c @@ -8,7 +8,7 @@ =20 #include "qemu/osdep.h" #include "hw/sensor/isl_pmbus_vr.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/visitor.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c index 9e8c2fa8d12..35db5cbbcd1 100644 --- a/hw/sh4/r2d.c +++ b/hw/sh4/r2d.c @@ -35,7 +35,7 @@ #include "system/system.h" #include "hw/core/boards.h" #include "hw/pci/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "net/net.h" #include "sh7750_regs.h" #include "hw/ide/mmio.h" diff --git a/hw/sh4/sh7750.c b/hw/sh4/sh7750.c index 6cb42e34412..aff45320bc5 100644 --- a/hw/sh4/sh7750.c +++ b/hw/sh4/sh7750.c @@ -30,7 +30,7 @@ #include "hw/sh4/sh.h" #include "system/system.h" #include "target/sh4/cpu.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "sh7750_regs.h" #include "sh7750_regnames.h" diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c index 50f1cf91706..ec9a386b48d 100644 --- a/hw/sparc/leon3.c +++ b/hw/sparc/leon3.c @@ -33,7 +33,7 @@ #include "hw/core/irq.h" #include "qemu/timer.h" #include "hw/core/ptimer.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "system/system.h" #include "system/qtest.h" #include "system/reset.h" diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index fa524513036..2e3952c917b 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -43,7 +43,7 @@ #include "hw/core/boards.h" #include "hw/scsi/esp.h" #include "hw/nvram/sun_nvram.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/nvram/chrp_nvram.h" #include "hw/nvram/fw_cfg.h" #include "hw/char/escc.h" diff --git a/hw/sparc/sun4m_iommu.c b/hw/sparc/sun4m_iommu.c index 9ce2e3b7fc8..10c4786dad6 100644 --- a/hw/sparc/sun4m_iommu.c +++ b/hw/sparc/sun4m_iommu.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sparc/sun4m_iommu.h" #include "hw/sysbus.h" #include "migration/vmstate.h" diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c index c0fb421d2ba..14b47c037ba 100644 --- a/hw/sparc64/sun4u.c +++ b/hw/sparc64/sun4u.c @@ -33,7 +33,7 @@ #include "hw/pci/pci.h" #include "hw/pci/pci_bridge.h" #include "hw/pci/pci_host.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/pci-host/sabre.h" #include "hw/char/serial-isa.h" #include "hw/char/serial-mm.h" diff --git a/hw/ssi/aspeed_smc.c b/hw/ssi/aspeed_smc.c index 9819904a4ad..6bef856c620 100644 --- a/hw/ssi/aspeed_smc.c +++ b/hw/ssi/aspeed_smc.c @@ -34,7 +34,7 @@ #include "trace.h" =20 #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/ssi/aspeed_smc.h" =20 /* CE Type Setting Register */ diff --git a/hw/ssi/ibex_spi_host.c b/hw/ssi/ibex_spi_host.c index 63f4cce5129..a7dc0c2f032 100644 --- a/hw/ssi/ibex_spi_host.c +++ b/hw/ssi/ibex_spi_host.c @@ -29,7 +29,7 @@ #include "hw/registerfields.h" #include "hw/ssi/ibex_spi_host.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/vmstate.h" #include "trace.h" diff --git a/hw/ssi/npcm7xx_fiu.c b/hw/ssi/npcm7xx_fiu.c index bc5e4e20ccd..02707de350f 100644 --- a/hw/ssi/npcm7xx_fiu.c +++ b/hw/ssi/npcm7xx_fiu.c @@ -17,7 +17,7 @@ #include "qemu/osdep.h" =20 #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/ssi/npcm7xx_fiu.h" #include "migration/vmstate.h" #include "qapi/error.h" diff --git a/hw/ssi/pnv_spi.c b/hw/ssi/pnv_spi.c index e59386712b4..1cf3a4416de 100644 --- a/hw/ssi/pnv_spi.c +++ b/hw/ssi/pnv_spi.c @@ -8,7 +8,7 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/ppc/pnv_xscom.h" #include "hw/ssi/pnv_spi.h" #include "hw/ssi/pnv_spi_regs.h" diff --git a/hw/ssi/sifive_spi.c b/hw/ssi/sifive_spi.c index c66fae80a9c..577cd5d2d8b 100644 --- a/hw/ssi/sifive_spi.c +++ b/hw/ssi/sifive_spi.c @@ -21,7 +21,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "hw/ssi/ssi.h" #include "qemu/fifo8.h" diff --git a/hw/ssi/ssi.c b/hw/ssi/ssi.c index d0de640fe64..3a4fade2d5b 100644 --- a/hw/ssi/ssi.c +++ b/hw/ssi/ssi.c @@ -13,7 +13,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/ssi/ssi.h" #include "migration/vmstate.h" #include "qemu/module.h" diff --git a/hw/ssi/xilinx_spi.c b/hw/ssi/xilinx_spi.c index 9e8656b5560..6dcdd63916a 100644 --- a/hw/ssi/xilinx_spi.c +++ b/hw/ssi/xilinx_spi.c @@ -32,7 +32,7 @@ #include "qemu/fifo8.h" =20 #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/ssi/ssi.h" #include "qom/object.h" diff --git a/hw/ssi/xilinx_spips.c b/hw/ssi/xilinx_spips.c index 5fa9bf965ff..e3c6035c169 100644 --- a/hw/ssi/xilinx_spips.c +++ b/hw/ssi/xilinx_spips.c @@ -26,7 +26,7 @@ #include "hw/sysbus.h" #include "hw/core/irq.h" #include "hw/core/ptimer.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/log.h" #include "qemu/module.h" #include "qemu/bitops.h" diff --git a/hw/ssi/xlnx-versal-ospi.c b/hw/ssi/xlnx-versal-ospi.c index 88fafb5a2ed..93cdc9d3999 100644 --- a/hw/ssi/xlnx-versal-ospi.c +++ b/hw/ssi/xlnx-versal-ospi.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "hw/sysbus.h" #include "migration/vmstate.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/bitops.h" #include "qemu/log.h" #include "hw/core/irq.h" diff --git a/hw/timer/a9gtimer.c b/hw/timer/a9gtimer.c index a0b73fb7311..a2363a89a5f 100644 --- a/hw/timer/a9gtimer.c +++ b/hw/timer/a9gtimer.c @@ -23,7 +23,7 @@ #include "qemu/osdep.h" #include "hw/hw.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/timer/a9gtimer.h" #include "migration/vmstate.h" #include "qapi/error.h" diff --git a/hw/timer/allwinner-a10-pit.c b/hw/timer/allwinner-a10-pit.c index 6c0d3b556a2..d52669787ee 100644 --- a/hw/timer/allwinner-a10-pit.c +++ b/hw/timer/allwinner-a10-pit.c @@ -17,7 +17,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "hw/timer/allwinner-a10-pit.h" #include "migration/vmstate.h" diff --git a/hw/timer/arm_mptimer.c b/hw/timer/arm_mptimer.c index adec87cc8d2..869db913d40 100644 --- a/hw/timer/arm_mptimer.c +++ b/hw/timer/arm_mptimer.c @@ -23,7 +23,7 @@ #include "hw/hw.h" #include "hw/core/irq.h" #include "hw/core/ptimer.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/timer/arm_mptimer.h" #include "migration/vmstate.h" #include "qapi/error.h" diff --git a/hw/timer/arm_timer.c b/hw/timer/arm_timer.c index 8d8b250698c..c38e56f5b89 100644 --- a/hw/timer/arm_timer.c +++ b/hw/timer/arm_timer.c @@ -13,7 +13,7 @@ #include "qemu/timer.h" #include "hw/core/irq.h" #include "hw/core/ptimer.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/module.h" #include "qemu/log.h" #include "qom/object.h" diff --git a/hw/timer/aspeed_timer.c b/hw/timer/aspeed_timer.c index b08a737bc97..20adb7decbe 100644 --- a/hw/timer/aspeed_timer.c +++ b/hw/timer/aspeed_timer.c @@ -19,7 +19,7 @@ #include "qemu/timer.h" #include "qemu/log.h" #include "qemu/module.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "trace.h" =20 #define TIMER_NR_REGS 4 diff --git a/hw/timer/avr_timer16.c b/hw/timer/avr_timer16.c index 0f1fda4218f..1a65a61ed2b 100644 --- a/hw/timer/avr_timer16.c +++ b/hw/timer/avr_timer16.c @@ -35,7 +35,7 @@ #include "qapi/error.h" #include "qemu/log.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/timer/avr_timer16.h" #include "trace.h" =20 diff --git a/hw/timer/cmsdk-apb-dualtimer.c b/hw/timer/cmsdk-apb-dualtimer.c index 5f4848ef618..bcb6f8e43d7 100644 --- a/hw/timer/cmsdk-apb-dualtimer.c +++ b/hw/timer/cmsdk-apb-dualtimer.c @@ -23,7 +23,7 @@ #include "qemu/module.h" #include "hw/sysbus.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/registerfields.h" #include "hw/core/qdev-clock.h" #include "hw/timer/cmsdk-apb-dualtimer.h" diff --git a/hw/timer/grlib_gptimer.c b/hw/timer/grlib_gptimer.c index 82d0d9d7622..dbce6f736fa 100644 --- a/hw/timer/grlib_gptimer.c +++ b/hw/timer/grlib_gptimer.c @@ -30,7 +30,7 @@ #include "qemu/timer.h" #include "hw/core/irq.h" #include "hw/core/ptimer.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/module.h" =20 #include "trace.h" diff --git a/hw/timer/hpet.c b/hw/timer/hpet.c index 1387c417ae1..82006df0e34 100644 --- a/hw/timer/hpet.c +++ b/hw/timer/hpet.c @@ -29,7 +29,7 @@ #include "qapi/error.h" #include "qemu/error-report.h" #include "qemu/timer.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/timer/hpet.h" #include "hw/sysbus.h" #include "hw/rtc/mc146818rtc.h" diff --git a/hw/timer/ibex_timer.c b/hw/timer/ibex_timer.c index d2c4f86e038..ee186521893 100644 --- a/hw/timer/ibex_timer.c +++ b/hw/timer/ibex_timer.c @@ -30,7 +30,7 @@ #include "qemu/timer.h" #include "hw/timer/ibex_timer.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "target/riscv/cpu.h" #include "migration/vmstate.h" =20 diff --git a/hw/timer/mss-timer.c b/hw/timer/mss-timer.c index 946e87c99a6..bd3f3e845fd 100644 --- a/hw/timer/mss-timer.c +++ b/hw/timer/mss-timer.c @@ -27,7 +27,7 @@ #include "qemu/module.h" #include "qemu/log.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/timer/mss-timer.h" #include "migration/vmstate.h" =20 diff --git a/hw/timer/npcm7xx_timer.c b/hw/timer/npcm7xx_timer.c index 0e62add74d3..16b62d3374b 100644 --- a/hw/timer/npcm7xx_timer.c +++ b/hw/timer/npcm7xx_timer.c @@ -18,7 +18,7 @@ =20 #include "hw/core/irq.h" #include "hw/core/qdev-clock.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/timer/npcm7xx_timer.h" #include "migration/vmstate.h" #include "qemu/bitops.h" diff --git a/hw/timer/nrf51_timer.c b/hw/timer/nrf51_timer.c index 0688f49eefb..b0443b94827 100644 --- a/hw/timer/nrf51_timer.c +++ b/hw/timer/nrf51_timer.c @@ -17,7 +17,7 @@ #include "hw/arm/nrf51.h" #include "hw/core/irq.h" #include "hw/timer/nrf51_timer.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "trace.h" =20 diff --git a/hw/timer/pxa2xx_timer.c b/hw/timer/pxa2xx_timer.c index d18d98b2337..b875c050525 100644 --- a/hw/timer/pxa2xx_timer.c +++ b/hw/timer/pxa2xx_timer.c @@ -9,7 +9,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/timer.h" #include "system/runstate.h" #include "hw/sysbus.h" diff --git a/hw/timer/renesas_cmt.c b/hw/timer/renesas_cmt.c index c62dad690ff..35962e66c32 100644 --- a/hw/timer/renesas_cmt.c +++ b/hw/timer/renesas_cmt.c @@ -25,7 +25,7 @@ #include "qemu/log.h" #include "hw/core/irq.h" #include "hw/registerfields.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/timer/renesas_cmt.h" #include "migration/vmstate.h" =20 diff --git a/hw/timer/renesas_tmr.c b/hw/timer/renesas_tmr.c index 1fc539e9497..2e7d7d4543a 100644 --- a/hw/timer/renesas_tmr.c +++ b/hw/timer/renesas_tmr.c @@ -25,7 +25,7 @@ #include "qemu/log.h" #include "hw/core/irq.h" #include "hw/registerfields.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/timer/renesas_tmr.h" #include "migration/vmstate.h" =20 diff --git a/hw/timer/sifive_pwm.c b/hw/timer/sifive_pwm.c index f1882ae6bc1..8fda5445e74 100644 --- a/hw/timer/sifive_pwm.c +++ b/hw/timer/sifive_pwm.c @@ -28,7 +28,7 @@ #include "trace.h" #include "hw/core/irq.h" #include "hw/timer/sifive_pwm.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/registerfields.h" #include "migration/vmstate.h" #include "qemu/log.h" diff --git a/hw/timer/slavio_timer.c b/hw/timer/slavio_timer.c index f66b3aaa433..07359a6fe70 100644 --- a/hw/timer/slavio_timer.c +++ b/hw/timer/slavio_timer.c @@ -26,7 +26,7 @@ #include "qemu/timer.h" #include "hw/core/irq.h" #include "hw/core/ptimer.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "trace.h" diff --git a/hw/timer/sse-timer.c b/hw/timer/sse-timer.c index 1de882f3eb3..50d1de58055 100644 --- a/hw/timer/sse-timer.c +++ b/hw/timer/sse-timer.c @@ -45,7 +45,7 @@ #include "hw/registerfields.h" #include "hw/core/clock.h" #include "hw/core/qdev-clock.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" =20 REG32(CNTPCT_LO, 0x0) diff --git a/hw/timer/stm32f2xx_timer.c b/hw/timer/stm32f2xx_timer.c index 979b6ad5bae..0442ac64adc 100644 --- a/hw/timer/stm32f2xx_timer.c +++ b/hw/timer/stm32f2xx_timer.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/timer/stm32f2xx_timer.h" #include "migration/vmstate.h" #include "qemu/log.h" diff --git a/hw/timer/xilinx_timer.c b/hw/timer/xilinx_timer.c index fbc10015916..57a2c7101d1 100644 --- a/hw/timer/xilinx_timer.c +++ b/hw/timer/xilinx_timer.c @@ -30,7 +30,7 @@ #include "hw/sysbus.h" #include "hw/core/irq.h" #include "hw/core/ptimer.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/tpm/tpm_crb.c b/hw/tpm/tpm_crb.c index bc7a78f898c..8723536f931 100644 --- a/hw/tpm/tpm_crb.c +++ b/hw/tpm/tpm_crb.c @@ -19,7 +19,7 @@ #include "qemu/module.h" #include "qapi/error.h" #include "system/address-spaces.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/pci/pci_ids.h" #include "hw/acpi/tpm.h" #include "migration/vmstate.h" diff --git a/hw/tpm/tpm_spapr.c b/hw/tpm/tpm_spapr.c index ea608ba4c80..19075d1f012 100644 --- a/hw/tpm/tpm_spapr.c +++ b/hw/tpm/tpm_spapr.c @@ -16,7 +16,7 @@ #include "qemu/osdep.h" #include "qemu/error-report.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" =20 #include "system/tpm_backend.h" diff --git a/hw/tpm/tpm_tis_common.c b/hw/tpm/tpm_tis_common.c index 1615be29339..f594b15b8ab 100644 --- a/hw/tpm/tpm_tis_common.c +++ b/hw/tpm/tpm_tis_common.c @@ -32,7 +32,7 @@ =20 #include "hw/acpi/tpm.h" #include "hw/pci/pci_ids.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "system/tpm_backend.h" #include "system/tpm_util.h" diff --git a/hw/tpm/tpm_tis_isa.c b/hw/tpm/tpm_tis_isa.c index dce83057a94..61e95434f5b 100644 --- a/hw/tpm/tpm_tis_isa.c +++ b/hw/tpm/tpm_tis_isa.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/isa/isa.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "hw/acpi/tpm.h" #include "tpm_prop.h" diff --git a/hw/tpm/tpm_tis_sysbus.c b/hw/tpm/tpm_tis_sysbus.c index 2ffa85852ac..07c30401301 100644 --- a/hw/tpm/tpm_tis_sysbus.c +++ b/hw/tpm/tpm_tis_sysbus.c @@ -23,7 +23,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "hw/acpi/tpm.h" #include "tpm_prop.h" diff --git a/hw/tricore/triboard.c b/hw/tricore/triboard.c index db6f2b765ac..23f11cf0a16 100644 --- a/hw/tricore/triboard.c +++ b/hw/tricore/triboard.c @@ -21,7 +21,7 @@ #include "qemu/osdep.h" #include "qemu/units.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "net/net.h" #include "hw/core/loader.h" #include "elf.h" diff --git a/hw/tricore/tricore_testdevice.c b/hw/tricore/tricore_testdevic= e.c index e8daf952982..d3ffc5fe9f3 100644 --- a/hw/tricore/tricore_testdevice.c +++ b/hw/tricore/tricore_testdevice.c @@ -18,7 +18,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "hw/sysbus.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/tricore/tricore_testdevice.h" =20 static void tricore_testdevice_write(void *opaque, hwaddr offset, diff --git a/hw/uefi/var-service-sysbus.c b/hw/uefi/var-service-sysbus.c index a5aa218e260..3bf93356506 100644 --- a/hw/uefi/var-service-sysbus.c +++ b/hw/uefi/var-service-sysbus.c @@ -6,7 +6,7 @@ #include "qemu/osdep.h" #include "migration/vmstate.h" =20 -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" =20 #include "hw/uefi/hardware-info.h" diff --git a/hw/usb/bus.c b/hw/usb/bus.c index c1dd1429658..3b6fbd46ac3 100644 --- a/hw/usb/bus.c +++ b/hw/usb/bus.c @@ -1,5 +1,5 @@ #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/usb/usb.h" #include "qapi/error.h" #include "qapi/qapi-commands-machine.h" diff --git a/hw/usb/canokey.c b/hw/usb/canokey.c index acd4ea30d98..c3baedac2c2 100644 --- a/hw/usb/canokey.c +++ b/hw/usb/canokey.c @@ -13,7 +13,7 @@ #include "qemu/module.h" #include "qapi/error.h" #include "hw/usb/usb.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "trace.h" #include "desc.h" #include "canokey.h" diff --git a/hw/usb/ccid-card-emulated.c b/hw/usb/ccid-card-emulated.c index c21cefd82d2..985f21997aa 100644 --- a/hw/usb/ccid-card-emulated.c +++ b/hw/usb/ccid-card-emulated.c @@ -34,7 +34,7 @@ #include "qemu/main-loop.h" #include "qemu/module.h" #include "ccid.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qom/object.h" =20 diff --git a/hw/usb/ccid-card-passthru.c b/hw/usb/ccid-card-passthru.c index c8aada0988d..306dd7d9146 100644 --- a/hw/usb/ccid-card-passthru.c +++ b/hw/usb/ccid-card-passthru.c @@ -13,7 +13,7 @@ #include "qemu/units.h" #include #include "chardev/char-fe.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "migration/vmstate.h" #include "qemu/error-report.h" diff --git a/hw/usb/dev-audio.c b/hw/usb/dev-audio.c index 988824ea750..dfda2dccc04 100644 --- a/hw/usb/dev-audio.c +++ b/hw/usb/dev-audio.c @@ -31,7 +31,7 @@ =20 #include "qemu/osdep.h" #include "qemu/module.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/usb/usb.h" #include "migration/vmstate.h" #include "desc.h" diff --git a/hw/usb/dev-hid.c b/hw/usb/dev-hid.c index 296e9d0d856..ae19d60203f 100644 --- a/hw/usb/dev-hid.c +++ b/hw/usb/dev-hid.c @@ -33,7 +33,7 @@ #include "qemu/timer.h" #include "hw/input/hid.h" #include "hw/usb/hid.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qom/object.h" =20 struct USBHIDState { diff --git a/hw/usb/dev-hub.c b/hw/usb/dev-hub.c index f418da14094..b45d571fa83 100644 --- a/hw/usb/dev-hub.c +++ b/hw/usb/dev-hub.c @@ -26,7 +26,7 @@ #include "qapi/error.h" #include "qemu/timer.h" #include "trace.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/usb/usb.h" #include "migration/vmstate.h" #include "desc.h" diff --git a/hw/usb/dev-mtp.c b/hw/usb/dev-mtp.c index 04e8eedbf61..1d8cfd32dc6 100644 --- a/hw/usb/dev-mtp.c +++ b/hw/usb/dev-mtp.c @@ -22,7 +22,7 @@ #include "qemu/module.h" #include "qemu/filemonitor.h" #include "trace.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/usb/usb.h" #include "migration/vmstate.h" #include "desc.h" diff --git a/hw/usb/dev-network.c b/hw/usb/dev-network.c index 34cd906d6cc..568a6ff24c6 100644 --- a/hw/usb/dev-network.c +++ b/hw/usb/dev-network.c @@ -25,7 +25,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/usb/usb.h" #include "migration/vmstate.h" #include "desc.h" diff --git a/hw/usb/dev-serial.c b/hw/usb/dev-serial.c index 17bdff9e820..286c7711f64 100644 --- a/hw/usb/dev-serial.c +++ b/hw/usb/dev-serial.c @@ -13,7 +13,7 @@ #include "qemu/cutils.h" #include "qemu/error-report.h" #include "qemu/module.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/usb/usb.h" #include "migration/vmstate.h" diff --git a/hw/usb/dev-smartcard-reader.c b/hw/usb/dev-smartcard-reader.c index a1081e545aa..964c142d106 100644 --- a/hw/usb/dev-smartcard-reader.c +++ b/hw/usb/dev-smartcard-reader.c @@ -40,7 +40,7 @@ #include "qemu/cutils.h" #include "qemu/error-report.h" #include "qemu/module.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/usb/usb.h" #include "migration/vmstate.h" #include "desc.h" diff --git a/hw/usb/dev-storage.c b/hw/usb/dev-storage.c index bbd97406f00..040cf150518 100644 --- a/hw/usb/dev-storage.c +++ b/hw/usb/dev-storage.c @@ -16,7 +16,7 @@ #include "hw/usb/usb.h" #include "hw/usb/msd.h" #include "desc.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/scsi/scsi.h" #include "migration/vmstate.h" #include "qemu/cutils.h" diff --git a/hw/usb/dev-uas.c b/hw/usb/dev-uas.c index 75f01c74038..8576dfec96f 100644 --- a/hw/usb/dev-uas.c +++ b/hw/usb/dev-uas.c @@ -21,7 +21,7 @@ #include "hw/usb/usb.h" #include "migration/vmstate.h" #include "desc.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/scsi/scsi.h" #include "scsi/constants.h" #include "qom/object.h" diff --git a/hw/usb/hcd-dwc2.c b/hw/usb/hcd-dwc2.c index 83864505bb8..cd3b61158d1 100644 --- a/hw/usb/hcd-dwc2.c +++ b/hw/usb/hcd-dwc2.c @@ -41,7 +41,7 @@ #include "qemu/log.h" #include "qemu/error-report.h" #include "qemu/main-loop.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 #define USB_HZ_FS 12000000 #define USB_HZ_HS 96000000 diff --git a/hw/usb/hcd-dwc3.c b/hw/usb/hcd-dwc3.c index 98a342b8b82..74dff39fda1 100644 --- a/hw/usb/hcd-dwc3.c +++ b/hw/usb/hcd-dwc3.c @@ -33,7 +33,7 @@ #include "qemu/bitops.h" #include "qom/object.h" #include "migration/vmstate.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/usb/hcd-dwc3.h" #include "qapi/error.h" =20 diff --git a/hw/usb/hcd-ehci-pci.c b/hw/usb/hcd-ehci-pci.c index 38ad3406b32..9febcc10314 100644 --- a/hw/usb/hcd-ehci-pci.c +++ b/hw/usb/hcd-ehci-pci.c @@ -16,7 +16,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/usb/hcd-ehci.h" #include "migration/vmstate.h" #include "qemu/module.h" diff --git a/hw/usb/hcd-ehci-sysbus.c b/hw/usb/hcd-ehci-sysbus.c index 0449f5fa6d6..b31032bbf39 100644 --- a/hw/usb/hcd-ehci-sysbus.c +++ b/hw/usb/hcd-ehci-sysbus.c @@ -16,7 +16,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/usb/hcd-ehci.h" #include "migration/vmstate.h" =20 diff --git a/hw/usb/hcd-ohci-pci.c b/hw/usb/hcd-ohci-pci.c index 25c400698ee..bdbbaaa87a3 100644 --- a/hw/usb/hcd-ohci-pci.c +++ b/hw/usb/hcd-ohci-pci.c @@ -26,7 +26,7 @@ #include "hw/pci/pci_device.h" #include "hw/sysbus.h" #include "hw/core/qdev-dma.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "trace.h" #include "hcd-ohci.h" #include "qom/object.h" diff --git a/hw/usb/hcd-ohci-sysbus.c b/hw/usb/hcd-ohci-sysbus.c index 8224fb88628..350b0118997 100644 --- a/hw/usb/hcd-ohci-sysbus.c +++ b/hw/usb/hcd-ohci-sysbus.c @@ -27,7 +27,7 @@ #include "migration/vmstate.h" #include "hw/sysbus.h" #include "hw/core/qdev-dma.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "trace.h" #include "hcd-ohci.h" =20 diff --git a/hw/usb/hcd-ohci.c b/hw/usb/hcd-ohci.c index 588cecef14d..c771aafdd06 100644 --- a/hw/usb/hcd-ohci.c +++ b/hw/usb/hcd-ohci.c @@ -34,7 +34,7 @@ #include "migration/vmstate.h" #include "hw/sysbus.h" #include "hw/core/qdev-dma.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "trace.h" #include "hcd-ohci.h" =20 diff --git a/hw/usb/hcd-uhci.c b/hw/usb/hcd-uhci.c index c243a4f42cc..b2224c7f766 100644 --- a/hw/usb/hcd-uhci.c +++ b/hw/usb/hcd-uhci.c @@ -32,7 +32,7 @@ #include "migration/vmstate.h" #include "hw/pci/pci.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qemu/timer.h" #include "qemu/iov.h" diff --git a/hw/usb/hcd-xhci-nec.c b/hw/usb/hcd-xhci-nec.c index 5fc853eb330..46839911f3f 100644 --- a/hw/usb/hcd-xhci-nec.c +++ b/hw/usb/hcd-xhci-nec.c @@ -23,7 +23,7 @@ #include "hw/usb/usb.h" #include "qemu/module.h" #include "hw/pci/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 #include "hcd-xhci-pci.h" =20 diff --git a/hw/usb/hcd-xhci-pci.c b/hw/usb/hcd-xhci-pci.c index b93c80b09d8..aa570506fc1 100644 --- a/hw/usb/hcd-xhci-pci.c +++ b/hw/usb/hcd-xhci-pci.c @@ -24,7 +24,7 @@ */ #include "qemu/osdep.h" #include "hw/pci/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "hw/pci/msi.h" #include "hw/pci/msix.h" diff --git a/hw/usb/hcd-xhci-sysbus.c b/hw/usb/hcd-xhci-sysbus.c index 862673054a0..19664c5985e 100644 --- a/hw/usb/hcd-xhci-sysbus.c +++ b/hw/usb/hcd-xhci-sysbus.c @@ -8,7 +8,7 @@ * SPDX-License-Identifier: GPL-2.0-or-later */ #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "trace.h" #include "qapi/error.h" diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c index 292c378bfc9..2cdab3ba0e4 100644 --- a/hw/usb/hcd-xhci.c +++ b/hw/usb/hcd-xhci.c @@ -25,7 +25,7 @@ #include "qemu/module.h" #include "qemu/queue.h" #include "migration/vmstate.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "trace.h" #include "qapi/error.h" =20 diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c index 38893b5e680..b9f3ad3f66d 100644 --- a/hw/usb/host-libusb.c +++ b/hw/usb/host-libusb.c @@ -55,7 +55,7 @@ #include "system/system.h" #include "trace.h" =20 -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/usb/usb.h" =20 /* -----------------------------------------------------------------------= - */ diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c index 1a73db68f26..6fd04b7b421 100644 --- a/hw/usb/redirect.c +++ b/hw/usb/redirect.c @@ -41,7 +41,7 @@ #include #include =20 -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/usb/usb.h" #include "migration/qemu-file-types.h" diff --git a/hw/usb/u2f-emulated.c b/hw/usb/u2f-emulated.c index 783e7f1af0b..196d05a83a5 100644 --- a/hw/usb/u2f-emulated.c +++ b/hw/usb/u2f-emulated.c @@ -29,7 +29,7 @@ #include "qemu/main-loop.h" #include "qapi/error.h" #include "hw/usb/usb.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 #include =20 diff --git a/hw/usb/u2f-passthru.c b/hw/usb/u2f-passthru.c index b3206fb7fe4..59b5f9829d4 100644 --- a/hw/usb/u2f-passthru.c +++ b/hw/usb/u2f-passthru.c @@ -28,7 +28,7 @@ #include "qemu/main-loop.h" #include "qemu/error-report.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/usb/usb.h" #include "migration/vmstate.h" =20 diff --git a/hw/usb/xlnx-usb-subsystem.c b/hw/usb/xlnx-usb-subsystem.c index 98967ef49f1..7193dd4cd2c 100644 --- a/hw/usb/xlnx-usb-subsystem.c +++ b/hw/usb/xlnx-usb-subsystem.c @@ -28,7 +28,7 @@ #include "qemu/bitops.h" #include "qom/object.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/usb/xlnx-usb-subsystem.h" =20 static void versal_usb2_realize(DeviceState *dev, Error **errp) diff --git a/hw/vfio-user/pci.c b/hw/vfio-user/pci.c index 353d07e7819..64b8b3cb8cf 100644 --- a/hw/vfio-user/pci.c +++ b/hw/vfio-user/pci.c @@ -11,7 +11,7 @@ #include "qapi-visit-sockets.h" #include "qemu/error-report.h" =20 -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/vfio/pci.h" #include "hw/vfio-user/device.h" #include "hw/vfio-user/proxy.h" diff --git a/hw/vfio/ap.c b/hw/vfio/ap.c index 3368ac89150..e58a0169af9 100644 --- a/hw/vfio/ap.c +++ b/hw/vfio/ap.c @@ -28,7 +28,7 @@ #include "qemu/config-file.h" #include "kvm/kvm_s390x.h" #include "migration/vmstate.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/s390x/ap-bridge.h" #include "system/address-spaces.h" #include "qom/object.h" diff --git a/hw/vfio/ccw.c b/hw/vfio/ccw.c index 4d9588e7aa1..2251facb356 100644 --- a/hw/vfio/ccw.c +++ b/hw/vfio/ccw.c @@ -25,7 +25,7 @@ #include "system/iommufd.h" #include "hw/s390x/s390-ccw.h" #include "hw/s390x/vfio-ccw.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/s390x/ccw-device.h" #include "system/address-spaces.h" #include "qemu/error-report.h" diff --git a/hw/vfio/pci-quirks.c b/hw/vfio/pci-quirks.c index b5da6afbf5b..7b907b9360d 100644 --- a/hw/vfio/pci-quirks.c +++ b/hw/vfio/pci-quirks.c @@ -23,7 +23,7 @@ #include "qapi/visitor.h" #include #include "hw/nvram/fw_cfg.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "pci.h" #include "pci-quirks.h" #include "trace.h" diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index b46b1305a7b..6b71605dd97 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -27,7 +27,7 @@ #include "hw/pci/msi.h" #include "hw/pci/msix.h" #include "hw/pci/pci_bridge.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/vfio/vfio-cpr.h" #include "migration/vmstate.h" diff --git a/hw/virtio/vdpa-dev-pci.c b/hw/virtio/vdpa-dev-pci.c index 30681121465..c047b0400db 100644 --- a/hw/virtio/vdpa-dev-pci.c +++ b/hw/virtio/vdpa-dev-pci.c @@ -19,7 +19,7 @@ #include "hw/virtio/virtio.h" #include "hw/virtio/vdpa-dev.h" #include "hw/pci/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qemu/error-report.h" #include "qemu/module.h" diff --git a/hw/virtio/vdpa-dev.c b/hw/virtio/vdpa-dev.c index 57739385a96..3a6de7ebb43 100644 --- a/hw/virtio/vdpa-dev.c +++ b/hw/virtio/vdpa-dev.c @@ -20,7 +20,7 @@ #include "qemu/error-report.h" #include "qemu/cutils.h" #include "hw/core/qdev.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/virtio/vhost.h" #include "hw/virtio/virtio.h" diff --git a/hw/virtio/vhost-scsi-pci.c b/hw/virtio/vhost-scsi-pci.c index 7399acef8e2..a78e13e0381 100644 --- a/hw/virtio/vhost-scsi-pci.c +++ b/hw/virtio/vhost-scsi-pci.c @@ -17,7 +17,7 @@ #include "qemu/osdep.h" =20 #include "standard-headers/linux/virtio_pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/vhost-scsi.h" #include "qapi/error.h" #include "qemu/module.h" diff --git a/hw/virtio/vhost-user-base.c b/hw/virtio/vhost-user-base.c index ff67a020b47..01ab9ca56b1 100644 --- a/hw/virtio/vhost-user-base.c +++ b/hw/virtio/vhost-user-base.c @@ -12,7 +12,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio-bus.h" #include "hw/virtio/vhost-user-base.h" #include "qemu/error-report.h" diff --git a/hw/virtio/vhost-user-blk-pci.c b/hw/virtio/vhost-user-blk-pci.c index 904369f5a3d..20d100f665d 100644 --- a/hw/virtio/vhost-user-blk-pci.c +++ b/hw/virtio/vhost-user-blk-pci.c @@ -22,7 +22,7 @@ #include "hw/virtio/virtio.h" #include "hw/virtio/vhost-user-blk.h" #include "hw/pci/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qemu/error-report.h" #include "qemu/module.h" diff --git a/hw/virtio/vhost-user-fs-pci.c b/hw/virtio/vhost-user-fs-pci.c index 1490c118bca..92ae2fc8a67 100644 --- a/hw/virtio/vhost-user-fs-pci.c +++ b/hw/virtio/vhost-user-fs-pci.c @@ -12,7 +12,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/vhost-user-fs.h" #include "hw/virtio/virtio-pci.h" #include "qom/object.h" diff --git a/hw/virtio/vhost-user-fs.c b/hw/virtio/vhost-user-fs.c index e77c69eb12e..0acd9580b13 100644 --- a/hw/virtio/vhost-user-fs.c +++ b/hw/virtio/vhost-user-fs.c @@ -15,7 +15,7 @@ #include #include "standard-headers/linux/virtio_fs.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/virtio/virtio-bus.h" #include "hw/virtio/virtio-access.h" diff --git a/hw/virtio/vhost-user-gpio-pci.c b/hw/virtio/vhost-user-gpio-pc= i.c index 9b165b54f8f..9bd59e7ae7e 100644 --- a/hw/virtio/vhost-user-gpio-pci.c +++ b/hw/virtio/vhost-user-gpio-pci.c @@ -7,7 +7,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/vhost-user-gpio.h" #include "hw/virtio/virtio-pci.h" =20 diff --git a/hw/virtio/vhost-user-gpio.c b/hw/virtio/vhost-user-gpio.c index a7fd49b10a3..d473f870778 100644 --- a/hw/virtio/vhost-user-gpio.c +++ b/hw/virtio/vhost-user-gpio.c @@ -8,7 +8,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio-bus.h" #include "hw/virtio/vhost-user-gpio.h" #include "standard-headers/linux/virtio_ids.h" diff --git a/hw/virtio/vhost-user-i2c-pci.c b/hw/virtio/vhost-user-i2c-pci.c index 692cd66fde6..5ddae8367bb 100644 --- a/hw/virtio/vhost-user-i2c-pci.c +++ b/hw/virtio/vhost-user-i2c-pci.c @@ -7,7 +7,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/vhost-user-i2c.h" #include "hw/virtio/virtio-pci.h" =20 diff --git a/hw/virtio/vhost-user-i2c.c b/hw/virtio/vhost-user-i2c.c index ae007fe97d9..152b1f67401 100644 --- a/hw/virtio/vhost-user-i2c.c +++ b/hw/virtio/vhost-user-i2c.c @@ -8,7 +8,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio-bus.h" #include "hw/virtio/vhost-user-i2c.h" #include "qemu/error-report.h" diff --git a/hw/virtio/vhost-user-rng-pci.c b/hw/virtio/vhost-user-rng-pci.c index 9f45fc6f355..cc289d0cb36 100644 --- a/hw/virtio/vhost-user-rng-pci.c +++ b/hw/virtio/vhost-user-rng-pci.c @@ -7,7 +7,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/vhost-user-rng.h" #include "hw/virtio/virtio-pci.h" =20 diff --git a/hw/virtio/vhost-user-rng.c b/hw/virtio/vhost-user-rng.c index 61dadcda054..106c8f211aa 100644 --- a/hw/virtio/vhost-user-rng.c +++ b/hw/virtio/vhost-user-rng.c @@ -10,7 +10,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio-bus.h" #include "hw/virtio/vhost-user-rng.h" #include "standard-headers/linux/virtio_ids.h" diff --git a/hw/virtio/vhost-user-scmi-pci.c b/hw/virtio/vhost-user-scmi-pc= i.c index 0ab56a50bb3..9a83e1f1ba8 100644 --- a/hw/virtio/vhost-user-scmi-pci.c +++ b/hw/virtio/vhost-user-scmi-pci.c @@ -6,7 +6,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/vhost-user-scmi.h" #include "hw/virtio/virtio-pci.h" =20 diff --git a/hw/virtio/vhost-user-scsi-pci.c b/hw/virtio/vhost-user-scsi-pc= i.c index 367b8f27da5..174552eb71b 100644 --- a/hw/virtio/vhost-user-scsi-pci.c +++ b/hw/virtio/vhost-user-scsi-pci.c @@ -22,7 +22,7 @@ #include "hw/virtio/virtio.h" #include "hw/virtio/virtio-scsi.h" #include "hw/pci/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qemu/error-report.h" #include "qemu/module.h" diff --git a/hw/virtio/vhost-user-snd-pci.c b/hw/virtio/vhost-user-snd-pci.c index f5015fb6c4e..90f47bf7a52 100644 --- a/hw/virtio/vhost-user-snd-pci.c +++ b/hw/virtio/vhost-user-snd-pci.c @@ -7,7 +7,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/vhost-user-snd.h" #include "hw/virtio/virtio-pci.h" =20 diff --git a/hw/virtio/vhost-user-snd.c b/hw/virtio/vhost-user-snd.c index 732411c6551..7129b77d9c0 100644 --- a/hw/virtio/vhost-user-snd.c +++ b/hw/virtio/vhost-user-snd.c @@ -10,7 +10,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio-bus.h" #include "hw/virtio/vhost-user-snd.h" #include "standard-headers/linux/virtio_ids.h" diff --git a/hw/virtio/vhost-user-test-device-pci.c b/hw/virtio/vhost-user-= test-device-pci.c index b4ed0efb50f..7f6d7516903 100644 --- a/hw/virtio/vhost-user-test-device-pci.c +++ b/hw/virtio/vhost-user-test-device-pci.c @@ -8,7 +8,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/vhost-user-base.h" #include "hw/virtio/virtio-pci.h" =20 diff --git a/hw/virtio/vhost-user-test-device.c b/hw/virtio/vhost-user-test= -device.c index 1b98ea3e488..a2f963fdf60 100644 --- a/hw/virtio/vhost-user-test-device.c +++ b/hw/virtio/vhost-user-test-device.c @@ -14,7 +14,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio-bus.h" #include "hw/virtio/vhost-user-base.h" #include "qemu/error-report.h" diff --git a/hw/virtio/vhost-user-vsock-pci.c b/hw/virtio/vhost-user-vsock-= pci.c index adb877b6e05..bac96c96d8a 100644 --- a/hw/virtio/vhost-user-vsock-pci.c +++ b/hw/virtio/vhost-user-vsock-pci.c @@ -11,7 +11,7 @@ #include "qemu/osdep.h" =20 #include "hw/virtio/virtio-pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/vhost-user-vsock.h" #include "qom/object.h" =20 diff --git a/hw/virtio/vhost-user-vsock.c b/hw/virtio/vhost-user-vsock.c index 993c2873482..e20e0aee439 100644 --- a/hw/virtio/vhost-user-vsock.c +++ b/hw/virtio/vhost-user-vsock.c @@ -12,7 +12,7 @@ =20 #include "qapi/error.h" #include "qemu/error-report.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/virtio/vhost-user-vsock.h" =20 diff --git a/hw/virtio/vhost-vsock-common.c b/hw/virtio/vhost-vsock-common.c index c6c44d8989f..b33def900a7 100644 --- a/hw/virtio/vhost-vsock-common.c +++ b/hw/virtio/vhost-vsock-common.c @@ -13,7 +13,7 @@ #include "qapi/error.h" #include "hw/virtio/virtio-bus.h" #include "qemu/error-report.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/vhost.h" #include "hw/virtio/vhost-vsock.h" #include "qemu/iov.h" diff --git a/hw/virtio/vhost-vsock-pci.c b/hw/virtio/vhost-vsock-pci.c index 0022a713d43..3a94d06f8c0 100644 --- a/hw/virtio/vhost-vsock-pci.c +++ b/hw/virtio/vhost-vsock-pci.c @@ -14,7 +14,7 @@ #include "qemu/osdep.h" =20 #include "hw/virtio/virtio-pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/vhost-vsock.h" #include "qemu/module.h" #include "qom/object.h" diff --git a/hw/virtio/vhost-vsock.c b/hw/virtio/vhost-vsock.c index 7940b60d8a5..da244eb1657 100644 --- a/hw/virtio/vhost-vsock.c +++ b/hw/virtio/vhost-vsock.c @@ -17,7 +17,7 @@ #include "hw/virtio/virtio-access.h" #include "qemu/error-report.h" #include "qemu/sockets.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/vhost-vsock.h" #include "monitor/monitor.h" =20 diff --git a/hw/virtio/virtio-9p-pci.c b/hw/virtio/virtio-9p-pci.c index 594742ff656..4b501ac2a37 100644 --- a/hw/virtio/virtio-9p-pci.c +++ b/hw/virtio/virtio-9p-pci.c @@ -17,7 +17,7 @@ =20 #include "hw/virtio/virtio-pci.h" #include "hw/9pfs/virtio-9p.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/module.h" #include "qom/object.h" =20 diff --git a/hw/virtio/virtio-balloon-pci.c b/hw/virtio/virtio-balloon-pci.c index 96e88b6b86d..0bb5931bbcc 100644 --- a/hw/virtio/virtio-balloon-pci.c +++ b/hw/virtio/virtio-balloon-pci.c @@ -15,7 +15,7 @@ #include "qemu/osdep.h" =20 #include "hw/virtio/virtio-pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio-balloon.h" #include "qapi/error.h" #include "qemu/module.h" diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c index bcf6ab64432..38bf1e84a1d 100644 --- a/hw/virtio/virtio-balloon.c +++ b/hw/virtio/virtio-balloon.c @@ -20,7 +20,7 @@ #include "qemu/madvise.h" #include "hw/virtio/virtio.h" #include "hw/mem/pc-dimm.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/boards.h" #include "system/balloon.h" #include "system/ramblock.h" diff --git a/hw/virtio/virtio-blk-pci.c b/hw/virtio/virtio-blk-pci.c index fd33bbd7e83..64a434c81b5 100644 --- a/hw/virtio/virtio-blk-pci.c +++ b/hw/virtio/virtio-blk-pci.c @@ -17,7 +17,7 @@ =20 #include "qemu/osdep.h" =20 -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio-blk.h" #include "hw/virtio/virtio-pci.h" #include "qapi/error.h" diff --git a/hw/virtio/virtio-crypto-pci.c b/hw/virtio/virtio-crypto-pci.c index 868abc03a9e..7b7dd056169 100644 --- a/hw/virtio/virtio-crypto-pci.c +++ b/hw/virtio/virtio-crypto-pci.c @@ -14,7 +14,7 @@ =20 #include "qemu/osdep.h" #include "hw/pci/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio.h" #include "hw/virtio/virtio-bus.h" #include "hw/virtio/virtio-pci.h" diff --git a/hw/virtio/virtio-crypto.c b/hw/virtio/virtio-crypto.c index 517f2089c5a..cbd1810fbc6 100644 --- a/hw/virtio/virtio-crypto.c +++ b/hw/virtio/virtio-crypto.c @@ -20,7 +20,7 @@ =20 #include "hw/virtio/virtio.h" #include "hw/virtio/virtio-crypto.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "standard-headers/linux/virtio_ids.h" #include "system/cryptodev-vhost.h" =20 diff --git a/hw/virtio/virtio-input-pci.c b/hw/virtio/virtio-input-pci.c index 3be5358b4cd..cd356084606 100644 --- a/hw/virtio/virtio-input-pci.c +++ b/hw/virtio/virtio-input-pci.c @@ -9,7 +9,7 @@ #include "qemu/osdep.h" =20 #include "hw/virtio/virtio-pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio-input.h" #include "qemu/module.h" #include "qom/object.h" diff --git a/hw/virtio/virtio-iommu-pci.c b/hw/virtio/virtio-iommu-pci.c index dd4100033f1..9d32b8a7b3c 100644 --- a/hw/virtio/virtio-iommu-pci.c +++ b/hw/virtio/virtio-iommu-pci.c @@ -13,7 +13,7 @@ =20 #include "hw/virtio/virtio-pci.h" #include "hw/virtio/virtio-iommu.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "qapi/error.h" #include "hw/core/boards.h" diff --git a/hw/virtio/virtio-iommu.c b/hw/virtio/virtio-iommu.c index 3500f1b0820..4226a676d07 100644 --- a/hw/virtio/virtio-iommu.c +++ b/hw/virtio/virtio-iommu.c @@ -23,7 +23,7 @@ #include "qemu/range.h" #include "qemu/reserved-region.h" #include "exec/target_page.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio.h" #include "system/kvm.h" #include "system/reset.h" diff --git a/hw/virtio/virtio-mem.c b/hw/virtio/virtio-mem.c index 5d1d90edc52..41de2ef5a0a 100644 --- a/hw/virtio/virtio-mem.c +++ b/hw/virtio/virtio-mem.c @@ -28,7 +28,7 @@ #include "qapi/visitor.h" #include "migration/misc.h" #include "hw/core/boards.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/acpi/acpi.h" #include "trace.h" =20 diff --git a/hw/virtio/virtio-mmio.c b/hw/virtio/virtio-mmio.c index d54d70b4fb8..54bd0c57b5f 100644 --- a/hw/virtio/virtio-mmio.c +++ b/hw/virtio/virtio-mmio.c @@ -22,7 +22,7 @@ #include "qemu/osdep.h" #include "standard-headers/linux/virtio_mmio.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "hw/virtio/virtio.h" #include "migration/qemu-file-types.h" diff --git a/hw/virtio/virtio-net-pci.c b/hw/virtio/virtio-net-pci.c index f857a84f11c..fd3e0303f5f 100644 --- a/hw/virtio/virtio-net-pci.c +++ b/hw/virtio/virtio-net-pci.c @@ -17,7 +17,7 @@ =20 #include "qemu/osdep.h" =20 -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio-net.h" #include "hw/virtio/virtio-pci.h" #include "qapi/error.h" diff --git a/hw/virtio/virtio-nsm-pci.c b/hw/virtio/virtio-nsm-pci.c index ec243963e1e..96e92be1b66 100644 --- a/hw/virtio/virtio-nsm-pci.c +++ b/hw/virtio/virtio-nsm-pci.c @@ -12,7 +12,7 @@ =20 #include "hw/virtio/virtio-pci.h" #include "hw/virtio/virtio-nsm.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qemu/module.h" #include "qom/object.h" diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index 7382e7db6fa..b273eb26919 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -25,7 +25,7 @@ #include "migration/qemu-file-types.h" #include "hw/pci/pci.h" #include "hw/pci/pci_bus.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qemu/error-report.h" #include "qemu/log.h" diff --git a/hw/virtio/virtio-pmem.c b/hw/virtio/virtio-pmem.c index 3416ea1827c..854d08abf6e 100644 --- a/hw/virtio/virtio-pmem.c +++ b/hw/virtio/virtio-pmem.c @@ -17,7 +17,7 @@ #include "qemu/iov.h" #include "qemu/main-loop.h" #include "hw/virtio/virtio-pmem.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio-access.h" #include "standard-headers/linux/virtio_ids.h" #include "standard-headers/linux/virtio_pmem.h" diff --git a/hw/virtio/virtio-rng-pci.c b/hw/virtio/virtio-rng-pci.c index 39b600356ea..dcea260825f 100644 --- a/hw/virtio/virtio-rng-pci.c +++ b/hw/virtio/virtio-rng-pci.c @@ -13,7 +13,7 @@ =20 #include "hw/virtio/virtio-pci.h" #include "hw/virtio/virtio-rng.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qemu/module.h" #include "qom/object.h" diff --git a/hw/virtio/virtio-rng.c b/hw/virtio/virtio-rng.c index 3df5d2576ec..66690a34dc9 100644 --- a/hw/virtio/virtio-rng.c +++ b/hw/virtio/virtio-rng.c @@ -15,7 +15,7 @@ #include "qemu/module.h" #include "qemu/timer.h" #include "hw/virtio/virtio.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio-rng.h" #include "system/rng.h" #include "system/runstate.h" diff --git a/hw/virtio/virtio-scsi-pci.c b/hw/virtio/virtio-scsi-pci.c index af877592070..fd5102819ad 100644 --- a/hw/virtio/virtio-scsi-pci.c +++ b/hw/virtio/virtio-scsi-pci.c @@ -15,7 +15,7 @@ =20 #include "qemu/osdep.h" =20 -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio-scsi.h" #include "qemu/module.h" #include "hw/virtio/virtio-pci.h" diff --git a/hw/virtio/virtio-serial-pci.c b/hw/virtio/virtio-serial-pci.c index 3f212ffe52f..6d33d149dfd 100644 --- a/hw/virtio/virtio-serial-pci.c +++ b/hw/virtio/virtio-serial-pci.c @@ -17,7 +17,7 @@ =20 #include "qemu/osdep.h" =20 -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio-serial.h" #include "qemu/module.h" #include "hw/virtio/virtio-pci.h" diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 257cda506a4..5b64eb4d67f 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -28,7 +28,7 @@ #include "migration/qemu-file-types.h" #include "qemu/atomic.h" #include "hw/virtio/virtio-bus.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/virtio/virtio-access.h" #include "system/dma.h" #include "system/iothread.h" diff --git a/hw/vmapple/vmapple.c b/hw/vmapple/vmapple.c index ad513d4cbc1..2ebd0f07bd3 100644 --- a/hw/vmapple/vmapple.c +++ b/hw/vmapple/vmapple.c @@ -28,7 +28,7 @@ #include "hw/core/boards.h" #include "hw/core/irq.h" #include "hw/core/loader.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "hw/usb/usb.h" #include "hw/arm/boot.h" diff --git a/hw/watchdog/cmsdk-apb-watchdog.c b/hw/watchdog/cmsdk-apb-watch= dog.c index f1dd7d66eee..90d14e342b0 100644 --- a/hw/watchdog/cmsdk-apb-watchdog.c +++ b/hw/watchdog/cmsdk-apb-watchdog.c @@ -28,7 +28,7 @@ #include "system/watchdog.h" #include "hw/sysbus.h" #include "hw/core/irq.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/registerfields.h" #include "hw/core/qdev-clock.h" #include "hw/watchdog/cmsdk-apb-watchdog.h" diff --git a/hw/watchdog/sbsa_gwdt.c b/hw/watchdog/sbsa_gwdt.c index ce84849df0e..7ade5c6f187 100644 --- a/hw/watchdog/sbsa_gwdt.c +++ b/hw/watchdog/sbsa_gwdt.c @@ -18,7 +18,7 @@ #include "qemu/osdep.h" #include "system/reset.h" #include "system/watchdog.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/watchdog/sbsa_gwdt.h" #include "qemu/timer.h" #include "migration/vmstate.h" diff --git a/hw/watchdog/wdt_aspeed.c b/hw/watchdog/wdt_aspeed.c index 30226435efc..930834bfcaf 100644 --- a/hw/watchdog/wdt_aspeed.c +++ b/hw/watchdog/wdt_aspeed.c @@ -14,7 +14,7 @@ #include "qemu/module.h" #include "qemu/timer.h" #include "system/watchdog.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "hw/watchdog/wdt_aspeed.h" #include "migration/vmstate.h" diff --git a/hw/watchdog/wdt_imx2.c b/hw/watchdog/wdt_imx2.c index 10151a15d08..c83d4107c19 100644 --- a/hw/watchdog/wdt_imx2.c +++ b/hw/watchdog/wdt_imx2.c @@ -14,7 +14,7 @@ #include "qemu/module.h" #include "system/watchdog.h" #include "migration/vmstate.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" =20 #include "hw/watchdog/wdt_imx2.h" #include "trace.h" diff --git a/hw/xen/xen-bus.c b/hw/xen/xen-bus.c index 6bd2e546f6b..e3c51030f35 100644 --- a/hw/xen/xen-bus.c +++ b/hw/xen/xen-bus.c @@ -9,7 +9,7 @@ #include "qemu/main-loop.h" #include "qemu/module.h" #include "qemu/uuid.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "hw/xen/xen.h" #include "hw/xen/xen-backend.h" diff --git a/hw/xen/xen-legacy-backend.c b/hw/xen/xen-legacy-backend.c index da9a8e5213a..f9b0dd1513d 100644 --- a/hw/xen/xen-legacy-backend.c +++ b/hw/xen/xen-legacy-backend.c @@ -26,7 +26,7 @@ =20 #include "hw/sysbus.h" #include "hw/core/boards.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/main-loop.h" #include "qapi/error.h" #include "hw/xen/xen-legacy-backend.h" diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c index 006b5b55f24..c1b92d90cf9 100644 --- a/hw/xen/xen_pt.c +++ b/hw/xen/xen_pt.c @@ -58,7 +58,7 @@ #include =20 #include "hw/pci/pci.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/xen/xen_pt.h" #include "hw/xen/xen_igd.h" diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c index a96abcd4bdd..a533f2bac3f 100644 --- a/hw/xtensa/xtfpga.c +++ b/hw/xtensa/xtfpga.c @@ -32,7 +32,7 @@ #include "system/system.h" #include "hw/core/boards.h" #include "hw/core/loader.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "elf.h" #include "system/memory.h" #include "exec/tswap.h" diff --git a/net/net.c b/net/net.c index 8aefdb3424f..4930b573ed3 100644 --- a/net/net.c +++ b/net/net.c @@ -27,7 +27,7 @@ #include "net/net.h" #include "clients.h" #include "hub.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "net/slirp.h" #include "net/eth.h" #include "util.h" diff --git a/system/physmem.c b/system/physmem.c index ba69be2d082..e3221ce00de 100644 --- a/system/physmem.c +++ b/system/physmem.c @@ -37,7 +37,7 @@ #include "exec/target_page.h" #include "exec/translation-block.h" #include "hw/core/qdev.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/boards.h" #include "system/xen.h" #include "system/kvm.h" diff --git a/system/qdev-monitor.c b/system/qdev-monitor.c index c8773d864d9..8e74e24c190 100644 --- a/system/qdev-monitor.c +++ b/system/qdev-monitor.c @@ -40,7 +40,7 @@ #include "system/block-backend.h" #include "migration/misc.h" #include "qemu/cutils.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/clock.h" #include "hw/core/boards.h" =20 diff --git a/system/vl.c b/system/vl.c index 659c6506fc7..2417f82c3ec 100644 --- a/system/vl.c +++ b/system/vl.c @@ -30,7 +30,7 @@ #include "qemu/target-info.h" #include "exec/cpu-common.h" #include "exec/page-vary.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/compat-policy.h" #include "qapi/error.h" #include "qobject/qdict.h" diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 09e89272edc..caf7980b1fc 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -34,7 +34,7 @@ #include "internals.h" #include "cpu-features.h" #include "exec/target_page.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #if !defined(CONFIG_USER_ONLY) #include "hw/core/loader.h" #include "hw/core/boards.h" diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c index ae84d8e4205..bf303813701 100644 --- a/target/arm/cpu64.c +++ b/target/arm/cpu64.c @@ -31,7 +31,7 @@ #include "kvm_arm.h" #include "hvf_arm.h" #include "qapi/visitor.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "internals.h" #include "cpu-features.h" =20 diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 6871956382f..917db5bb09a 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -23,7 +23,7 @@ #include "cpu.h" #include "qemu/module.h" #include "qapi/visitor.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qemu/units.h" #include "internals.h" #include "cpu-features.h" diff --git a/target/avr/cpu.c b/target/avr/cpu.c index a6df71d0205..52237da3ce9 100644 --- a/target/avr/cpu.c +++ b/target/avr/cpu.c @@ -26,7 +26,7 @@ #include "cpu.h" #include "disas/dis-asm.h" #include "tcg/debug-assert.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "accel/tcg/cpu-ops.h" =20 static void avr_cpu_set_pc(CPUState *cs, vaddr value) diff --git a/target/hexagon/cpu.c b/target/hexagon/cpu.c index a5a04173ab8..8ac4f49aa3b 100644 --- a/target/hexagon/cpu.c +++ b/target/hexagon/cpu.c @@ -21,7 +21,7 @@ #include "internal.h" #include "exec/translation-block.h" #include "qapi/error.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "fpu/softfloat-helpers.h" #include "tcg/tcg.h" #include "exec/gdbstub.h" diff --git a/target/i386/cpu-apic.c b/target/i386/cpu-apic.c index 564c1288e47..eeee62b52a2 100644 --- a/target/i386/cpu-apic.c +++ b/target/i386/cpu-apic.c @@ -15,7 +15,7 @@ #include "system/kvm.h" #include "system/xen.h" #include "system/address-spaces.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/i386/apic_internal.h" #include "cpu-internal.h" =20 diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 4216ca9ec1d..fe52538723b 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -34,7 +34,7 @@ #include "qemu/error-report.h" #include "qapi/qapi-visit-machine.h" #include "standard-headers/asm-x86/kvm_para.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/i386/topology.h" #include "exec/watchpoint.h" #ifndef CONFIG_USER_ONLY diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c index d74c3c3766b..e01e044239b 100644 --- a/target/loongarch/cpu.c +++ b/target/loongarch/cpu.c @@ -14,7 +14,7 @@ #include "system/tcg.h" #include "system/kvm.h" #include "kvm/kvm_loongarch.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "exec/translation-block.h" #include "cpu.h" #include "cpu-mmu.h" diff --git a/target/microblaze/cpu.c b/target/microblaze/cpu.c index 22231f09e60..53649ec6567 100644 --- a/target/microblaze/cpu.c +++ b/target/microblaze/cpu.c @@ -26,7 +26,7 @@ #include "qapi/error.h" #include "cpu.h" #include "qemu/module.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "accel/tcg/cpu-ldst.h" #include "exec/gdbstub.h" #include "exec/translation-block.h" diff --git a/target/mips/cpu.c b/target/mips/cpu.c index 894799c02c7..f74a9d5f615 100644 --- a/target/mips/cpu.c +++ b/target/mips/cpu.c @@ -29,7 +29,7 @@ #include "qemu/module.h" #include "system/kvm.h" #include "system/qtest.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/qdev-clock.h" #include "fpu_helper.h" #ifndef CONFIG_USER_ONLY diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c index a3b14cceada..929254827d6 100644 --- a/target/ppc/cpu_init.c +++ b/target/ppc/cpu_init.c @@ -34,7 +34,7 @@ #include "qapi/error.h" #include "qobject/qnull.h" #include "qapi/visitor.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/ppc/ppc.h" #include "mmu-book3s-v3.h" #include "qemu/cutils.h" diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 73d4280d7c8..8f26d8b8b07 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -27,7 +27,7 @@ #include "qapi/error.h" #include "qapi/visitor.h" #include "qemu/error-report.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/core/qdev-prop-internal.h" #include "migration/vmstate.h" #include "fpu/softfloat-helpers.h" diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c index f05ce317da1..be99b2ab94c 100644 --- a/target/s390x/cpu.c +++ b/target/s390x/cpu.c @@ -30,7 +30,7 @@ #include "trace.h" #include "qapi/qapi-types-machine.h" #include "system/hw_accel.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/resettable.h" #include "fpu/softfloat-helpers.h" diff --git a/target/sparc/cpu.c b/target/sparc/cpu.c index c9773f15401..bfc6fb9d00d 100644 --- a/target/sparc/cpu.c +++ b/target/sparc/cpu.c @@ -24,7 +24,7 @@ #include "qemu/qemu-print.h" #include "accel/tcg/cpu-mmu-index.h" #include "exec/translation-block.h" -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qapi/visitor.h" #include "tcg/tcg.h" #include "fpu/softfloat.h" diff --git a/tests/unit/test-qdev-global-props.c b/tests/unit/test-qdev-glo= bal-props.c index 33062762a67..8ea362cbb90 100644 --- a/tests/unit/test-qdev-global-props.c +++ b/tests/unit/test-qdev-global-props.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" =20 -#include "hw/qdev-properties.h" +#include "hw/core/qdev-properties.h" #include "qom/object.h" #include "qapi/error.h" #include "qapi/visitor.h" --=20 2.52.0 From nobody Wed Jan 7 09:26:48 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=1766827087; cv=none; d=zohomail.com; s=zohoarc; b=EZNL4AyzKQ2XxiHTkGwefKKno4giIHUDCbpVGvHQbL6mKsNNj0T3yyfsgj76wN3X99VYkXHa2W6dxaVZ+Kty/Ti0hKD3HC66Tc9h8oRYT71jlSye7Ub7ZF17qdOGQBZ39ylw/BQcBLeJInjFwUlL6WTB8u4wLsb9PNEd5Z32MC8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827087; 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=n2JfYlRTqAieQX/+h2QIvPpNfLbcWj8ebN3B4q+ls28=; b=kgnNtv1sJXrsOkjksfWzfPekwdSPHNH3mnoe/By3wC+KMKq/TZGFy523uES9CaxR5oVW9u80H3eYGy7AsSiwQHpl37o3xw/FT00vdDqBO8F4075pC+JEMrKxmeXTxh/SBOqrlTF6QTxufVDmnt4srLGrO5YEa0hgL2u2byATQPs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827087688573.7541648253155; Sat, 27 Dec 2025 01:18:07 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQF-0002XW-TH; Sat, 27 Dec 2025 04:17:15 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQE-0002XF-4K for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:14 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQ9-0002Oh-Vi for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:13 -0500 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-683-B-9_fpcxMdqS2k_9Dk8kRA-1; Sat, 27 Dec 2025 04:17:06 -0500 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-430fc153d50so6248490f8f.1 for ; Sat, 27 Dec 2025 01:17:06 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa477bsm50007162f8f.36.2025.12.27.01.17.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827029; 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=n2JfYlRTqAieQX/+h2QIvPpNfLbcWj8ebN3B4q+ls28=; b=OmWr8hueehJ0rWBrz/8z1eVY2hTeoj+vTTBlLb96HawIKFy2TpKZpslkFkStEbS8JqdW/j NyguNhWNfme035rbgLd7f7iU4hAXOyBIsO2llJeOS0JhWJKQVmQ2IoQHFcf347fTnVbnL/ KbizJw7NcZj4K6tP7HVl7eCIfsJpTNM= X-MC-Unique: B-9_fpcxMdqS2k_9Dk8kRA-1 X-Mimecast-MFC-AGG-ID: B-9_fpcxMdqS2k_9Dk8kRA_1766827026 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827025; x=1767431825; 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; bh=n2JfYlRTqAieQX/+h2QIvPpNfLbcWj8ebN3B4q+ls28=; b=FcaP7ZzJupbRQXQlFlqSa1pFJZ99R6/foYwAkGpYTww+WTlfA0Wyzpif/R5S531TgX GvpnNoKShOumQAxGQug/+20v5sDatRcodJ5E+JiscjvITFFguIFrPLgdo3EZa8o0WZmT kw3uhkip/btBiPJjCN3c/ZqJfl9NFj28QG1uBbL7yVBvDHGkh8AP0acX6tBeJwvg9Sho si4rYSXKkpW+5pUqpWYWIRZKzzRanVhMCYzc+3K/l1doaHzz1YugX8qorInBSRvy0Rcp Z4i1p/HtQ85zNQMH+hgwEGqM65DMymSPqRJodh4J1B08gI61Z4ZrLkvtirS30X2uxe8L ws1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827025; x=1767431825; 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; bh=n2JfYlRTqAieQX/+h2QIvPpNfLbcWj8ebN3B4q+ls28=; b=VbaeOlu2Cs07DaB6YBzEFbBc1FzcMOCy382Z+B6Ocw0faXEJ6vHserebUqpel4moPE milCGyfjN3mTQuoC6A2Rz1i/uRl036Tg1FDky7eQiWWzupWYJ9J0kl8RXWlubMxVn3UH 29ou/xpdWg+9OPk63iSh9h3oa1wd2NmNRQ9YeoJHuoeeXmI5bvhFl86xRKcgg4rpaYCO ONb33kCgUVGw1jjZFmIOH7Rpfq/hs7oSuPAojOM+XOgt2dZK0yTUswxjqS/GxYyIJQlk yZuxKblp/EevyF1P9Q3+NWFgoUz8324OJlOvrE6Qq/jNTAt8s2ryIEpK7p+beQ5sIQo2 Uc/A== X-Gm-Message-State: AOJu0YysxSvMRbsy/0BrmqwNwFXVEiHHzMbkKfc3V0+j4N9uDA5RCpFI ulyYc5eD4RHa9tCkjvbptqHXd67GjEQnwTQXGZVDUGyZx3gScVZyoFBcXfjuOxxzpwZKBWJIMmP kA/YFfHm7Ta6QjfxqO0aV8Y9i5XPTqiibdHdPWzCf9ikYErQVGZp3pIFMLPIFIGS2HTJbxTl3Qu CvRJhVGg2XO1Wb1sXnFT6mFCMVZMhWUTg1omuxbwBs X-Gm-Gg: AY/fxX5a4n0oDV09nhCpqmFBfkVk2eV3m51sBV9chGapNVnA7Y7iOLfuNnj3XmSP2/S rTA89FEBiPFv6YQnYi2gLplTBA/+xHpiMCC86Ivyzs/ieAECogQTbZJ1eA7IB1f9jC8npI80mMr QKYeC1Dci1ffGaJ4VCH8D8YRa8TVICRsLdS+CnPIGt8DsI4F7+r1kKcC2Ay+Ak+Y+4uSmZ3RGSF HvpB+gY4bAMh1Kut8HbLSX/V7gRY9ohbP3YlD0ur9n4k15bFNemX3p9ou/wYZaOTPSmVip5p0fk a4X1qae/TNdGkU3TKC8RQNzQKDpp/+GGUTZ1jqaNVsarhaDYBPY+8oXz5ehH5aFFbp9a9+oWjIC Cxbg0mY8JhQ3jjcwkDWzWxs3sjcljOw2hKKX2LYMGStZORJj/Av/3UXFYue347S3GSumJEWzzRI SE0g/c55QFeUll4zQ= X-Received: by 2002:a05:6000:2c13:b0:430:ff0c:3615 with SMTP id ffacd0b85a97d-4324e703d11mr35136357f8f.53.1766827024128; Sat, 27 Dec 2025 01:17:04 -0800 (PST) X-Google-Smtp-Source: AGHT+IGTXFFSsJtJHHi4cnV+mSf75t40juhzkmpBBtRI+eiMvjCx2EaEGBwE5Mbq2KBgYbYguSBG2g== X-Received: by 2002:a05:6000:2c13:b0:430:ff0c:3615 with SMTP id ffacd0b85a97d-4324e703d11mr35136276f8f.53.1766827022992; Sat, 27 Dec 2025 01:17:02 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 021/153] include: move hw/qdev-properties-system.h to hw/core/ Date: Sat, 27 Dec 2025 10:14:08 +0100 Message-ID: <20251227091622.20725-22-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827089415158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- include/hw/block/block.h | 2 +- include/hw/{ =3D> core}/qdev-properties-system.h | 0 include/net/net.h | 2 +- include/qemu/audio.h | 2 +- migration/options.h | 2 +- rust/hw/core/wrapper.h | 2 +- backends/spdm-socket.c | 2 +- hw/acpi/vmclock.c | 2 +- hw/acpi/vmgenid.c | 2 +- hw/arm/strongarm.c | 2 +- hw/block/fdc-isa.c | 2 +- hw/block/fdc.c | 2 +- hw/block/m25p80.c | 2 +- hw/block/pflash_cfi01.c | 2 +- hw/block/pflash_cfi02.c | 2 +- hw/block/vhost-user-blk.c | 2 +- hw/char/avr_usart.c | 2 +- hw/char/bcm2835_aux.c | 2 +- hw/char/cadence_uart.c | 2 +- hw/char/cmsdk-apb-uart.c | 2 +- hw/char/debugcon.c | 2 +- hw/char/digic-uart.c | 2 +- hw/char/diva-gsp.c | 2 +- hw/char/escc.c | 2 +- hw/char/exynos4210_uart.c | 2 +- hw/char/goldfish_tty.c | 2 +- hw/char/grlib_apbuart.c | 2 +- hw/char/ibex_uart.c | 2 +- hw/char/imx_serial.c | 2 +- hw/char/ipoctal232.c | 2 +- hw/char/max78000_uart.c | 2 +- hw/char/mcf_uart.c | 2 +- hw/char/nrf51_uart.c | 2 +- hw/char/parallel.c | 2 +- hw/char/pl011.c | 2 +- hw/char/renesas_sci.c | 2 +- hw/char/sclpconsole-lm.c | 2 +- hw/char/sclpconsole.c | 2 +- hw/char/serial-pci-multi.c | 2 +- hw/char/serial.c | 2 +- hw/char/sh_serial.c | 2 +- hw/char/shakti_uart.c | 2 +- hw/char/sifive_uart.c | 2 +- hw/char/spapr_vty.c | 2 +- hw/char/stm32f2xx_usart.c | 2 +- hw/char/stm32l4x5_usart.c | 2 +- hw/char/terminal3270.c | 2 +- hw/char/virtio-console.c | 2 +- hw/char/xen_console.c | 2 +- hw/char/xilinx_uartlite.c | 2 +- hw/core/qdev-properties-system.c | 2 +- hw/hyperv/vmbus.c | 2 +- hw/i386/kvm/i8254.c | 2 +- hw/intc/xilinx_intc.c | 2 +- hw/ipmi/ipmi_bmc_extern.c | 2 +- hw/ipmi/ipmi_bmc_sim.c | 2 +- hw/mem/cxl_type3.c | 2 +- hw/misc/allwinner-sid.c | 2 +- hw/misc/allwinner-sramc.c | 2 +- hw/misc/ivshmem-flat.c | 2 +- hw/misc/ivshmem-pci.c | 2 +- hw/misc/mac_via.c | 2 +- hw/misc/sifive_u_otp.c | 2 +- hw/misc/stm32l4x5_rcc.c | 2 +- hw/misc/xlnx-versal-cfu.c | 2 +- hw/net/rocker/rocker.c | 2 +- hw/net/xen_nic.c | 2 +- hw/net/xilinx_ethlite.c | 2 +- hw/nvram/eeprom_at24c.c | 2 +- hw/nvram/mac_nvram.c | 2 +- hw/nvram/spapr_nvram.c | 2 +- hw/nvram/xlnx-bbram.c | 2 +- hw/nvram/xlnx-efuse.c | 2 +- hw/pci-bridge/cxl_downstream.c | 2 +- hw/pci-bridge/cxl_root_port.c | 2 +- hw/pci-bridge/cxl_upstream.c | 2 +- hw/pci-bridge/gen_pcie_root_port.c | 2 +- hw/pci/pci.c | 2 +- hw/ppc/pnv_pnor.c | 2 +- hw/rtc/mc146818rtc.c | 2 +- hw/scsi/scsi-disk.c | 2 +- hw/scsi/scsi-generic.c | 2 +- hw/scsi/vhost-user-scsi.c | 2 +- hw/sd/sd.c | 2 +- hw/sh4/sh7750.c | 2 +- hw/ssi/ibex_spi_host.c | 2 +- hw/ssi/xilinx_spi.c | 2 +- hw/timer/xilinx_timer.c | 2 +- hw/usb/ccid-card-passthru.c | 2 +- hw/usb/dev-serial.c | 2 +- hw/usb/redirect.c | 2 +- hw/vfio/pci.c | 2 +- hw/virtio/vdpa-dev.c | 2 +- hw/virtio/vhost-user-fs.c | 2 +- hw/virtio/vhost-user-vsock.c | 2 +- hw/virtio/virtio-iommu-pci.c | 2 +- hw/xen/xen_pt.c | 2 +- target/s390x/cpu.c | 2 +- 98 files changed, 97 insertions(+), 97 deletions(-) rename include/hw/{ =3D> core}/qdev-properties-system.h (100%) diff --git a/include/hw/block/block.h b/include/hw/block/block.h index b4d914624ee..7dc19d8a453 100644 --- a/include/hw/block/block.h +++ b/include/hw/block/block.h @@ -13,7 +13,7 @@ =20 #include "exec/hwaddr.h" #include "qapi/qapi-types-block-core.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" =20 /* Configuration */ =20 diff --git a/include/hw/qdev-properties-system.h b/include/hw/core/qdev-pro= perties-system.h similarity index 100% rename from include/hw/qdev-properties-system.h rename to include/hw/core/qdev-properties-system.h diff --git a/include/net/net.h b/include/net/net.h index 72b476ee1dc..45bc86fc86b 100644 --- a/include/net/net.h +++ b/include/net/net.h @@ -4,7 +4,7 @@ #include "qemu/queue.h" #include "qapi/qapi-types-net.h" #include "net/queue.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" =20 #define MAC_FMT "%02X:%02X:%02X:%02X:%02X:%02X" #define MAC_ARG(x) ((uint8_t *)(x))[0], ((uint8_t *)(x))[1], \ diff --git a/include/qemu/audio.h b/include/qemu/audio.h index c56af895d62..a92e0b70ef0 100644 --- a/include/qemu/audio.h +++ b/include/qemu/audio.h @@ -27,7 +27,7 @@ =20 #include "qemu/queue.h" #include "qapi/qapi-types-audio.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #ifdef CONFIG_GIO #include "gio/gio.h" #endif diff --git a/migration/options.h b/migration/options.h index d6f1742e5b9..0c3043f1ffb 100644 --- a/migration/options.h +++ b/migration/options.h @@ -15,7 +15,7 @@ #define QEMU_MIGRATION_OPTIONS_H =20 #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "migration/client-options.h" =20 /* migration properties */ diff --git a/rust/hw/core/wrapper.h b/rust/hw/core/wrapper.h index 8fda78924d8..f6b34161a68 100644 --- a/rust/hw/core/wrapper.h +++ b/rust/hw/core/wrapper.h @@ -28,5 +28,5 @@ typedef enum memory_order { #include "hw/core/clock.h" #include "hw/core/qdev-clock.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/core/irq.h" diff --git a/backends/spdm-socket.c b/backends/spdm-socket.c index 07aea375165..bc5c7afb3cd 100644 --- a/backends/spdm-socket.c +++ b/backends/spdm-socket.c @@ -14,7 +14,7 @@ #include "system/spdm-socket.h" #include "qapi/error.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/core/qdev-prop-internal.h" =20 static bool read_bytes(const int socket, uint8_t *buffer, diff --git a/hw/acpi/vmclock.c b/hw/acpi/vmclock.c index 55c9f950662..d51cab2e20a 100644 --- a/hw/acpi/vmclock.c +++ b/hw/acpi/vmclock.c @@ -18,7 +18,7 @@ #include "hw/acpi/vmclock.h" #include "hw/nvram/fw_cfg.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "migration/vmstate.h" #include "system/reset.h" =20 diff --git a/hw/acpi/vmgenid.c b/hw/acpi/vmgenid.c index fcf9a94daf1..e87c0256964 100644 --- a/hw/acpi/vmgenid.c +++ b/hw/acpi/vmgenid.c @@ -18,7 +18,7 @@ #include "hw/acpi/vmgenid.h" #include "hw/nvram/fw_cfg.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "migration/vmstate.h" #include "system/reset.h" =20 diff --git a/hw/arm/strongarm.c b/hw/arm/strongarm.c index 3ee73ee4594..acc75476c34 100644 --- a/hw/arm/strongarm.c +++ b/hw/arm/strongarm.c @@ -30,7 +30,7 @@ #include "qemu/osdep.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "strongarm.h" diff --git a/hw/block/fdc-isa.c b/hw/block/fdc-isa.c index ebb3d2f7cd8..a10f34a20f5 100644 --- a/hw/block/fdc-isa.c +++ b/hw/block/fdc-isa.c @@ -36,7 +36,7 @@ #include "hw/core/irq.h" #include "hw/isa/isa.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "migration/vmstate.h" #include "hw/block/block.h" #include "system/block-backend.h" diff --git a/hw/block/fdc.c b/hw/block/fdc.c index 1747f6506fd..4585640af92 100644 --- a/hw/block/fdc.c +++ b/hw/block/fdc.c @@ -36,7 +36,7 @@ #include "hw/core/irq.h" #include "hw/isa/isa.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "migration/vmstate.h" #include "hw/block/block.h" #include "system/block-backend.h" diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index 648e6bdc008..4a758f83dc7 100644 --- a/hw/block/m25p80.c +++ b/hw/block/m25p80.c @@ -27,7 +27,7 @@ #include "hw/block/block.h" #include "hw/block/flash.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/ssi/ssi.h" #include "migration/vmstate.h" #include "qemu/bitops.h" diff --git a/hw/block/pflash_cfi01.c b/hw/block/pflash_cfi01.c index f93b812c024..d1673a1b411 100644 --- a/hw/block/pflash_cfi01.c +++ b/hw/block/pflash_cfi01.c @@ -40,7 +40,7 @@ #include "hw/block/block.h" #include "hw/block/flash.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "system/block-backend.h" #include "qapi/error.h" #include "qemu/error-report.h" diff --git a/hw/block/pflash_cfi02.c b/hw/block/pflash_cfi02.c index 6a74bcb7a1b..423516cb301 100644 --- a/hw/block/pflash_cfi02.c +++ b/hw/block/pflash_cfi02.c @@ -36,7 +36,7 @@ #include "hw/block/block.h" #include "hw/block/flash.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "qapi/error.h" #include "qemu/error-report.h" #include "qemu/bitmap.h" diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c index 62295f187ca..4d81d2dc347 100644 --- a/hw/block/vhost-user-blk.c +++ b/hw/block/vhost-user-blk.c @@ -22,7 +22,7 @@ #include "qemu/cutils.h" #include "hw/core/qdev.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/virtio/virtio-blk-common.h" #include "hw/virtio/vhost.h" #include "hw/virtio/vhost-user-blk.h" diff --git a/hw/char/avr_usart.c b/hw/char/avr_usart.c index c3515b6f7d0..30e135a244b 100644 --- a/hw/char/avr_usart.c +++ b/hw/char/avr_usart.c @@ -24,7 +24,7 @@ #include "qemu/log.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" =20 static int avr_usart_can_receive(void *opaque) { diff --git a/hw/char/bcm2835_aux.c b/hw/char/bcm2835_aux.c index 47e24c5bba1..d1e114f2dea 100644 --- a/hw/char/bcm2835_aux.c +++ b/hw/char/bcm2835_aux.c @@ -24,7 +24,7 @@ #include "hw/char/bcm2835_aux.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c index 58c4c95fded..c24ece5fe88 100644 --- a/hw/char/cadence_uart.c +++ b/hw/char/cadence_uart.c @@ -32,7 +32,7 @@ #include "hw/char/cadence_uart.h" #include "hw/core/irq.h" #include "hw/core/qdev-clock.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "trace.h" =20 #ifdef CADENCE_UART_ERR_DEBUG diff --git a/hw/char/cmsdk-apb-uart.c b/hw/char/cmsdk-apb-uart.c index a5ec61a0044..c3645a553ec 100644 --- a/hw/char/cmsdk-apb-uart.c +++ b/hw/char/cmsdk-apb-uart.c @@ -27,7 +27,7 @@ #include "chardev/char-serial.h" #include "hw/char/cmsdk-apb-uart.h" #include "hw/core/irq.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" =20 REG32(DATA, 0) REG32(STATE, 4) diff --git a/hw/char/debugcon.c b/hw/char/debugcon.c index 36607d0c1c7..a1b370b90be 100644 --- a/hw/char/debugcon.c +++ b/hw/char/debugcon.c @@ -30,7 +30,7 @@ #include "chardev/char-fe.h" #include "hw/isa/isa.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "qom/object.h" =20 #define TYPE_ISA_DEBUGCON_DEVICE "isa-debugcon" diff --git a/hw/char/digic-uart.c b/hw/char/digic-uart.c index 04dec0df8a6..8a704dfcf50 100644 --- a/hw/char/digic-uart.c +++ b/hw/char/digic-uart.c @@ -35,7 +35,7 @@ =20 #include "hw/char/digic-uart.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" =20 enum { ST_RX_RDY =3D (1 << 0), diff --git a/hw/char/diva-gsp.c b/hw/char/diva-gsp.c index 1dafc1e80c3..280d0413c6e 100644 --- a/hw/char/diva-gsp.c +++ b/hw/char/diva-gsp.c @@ -21,7 +21,7 @@ #include "hw/core/irq.h" #include "hw/pci/pci_device.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "migration/vmstate.h" =20 #define PCI_DEVICE_ID_HP_DIVA 0x1048 diff --git a/hw/char/escc.c b/hw/char/escc.c index 496bbc56dea..a2fb682f8be 100644 --- a/hw/char/escc.c +++ b/hw/char/escc.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "qemu/module.h" diff --git a/hw/char/exynos4210_uart.c b/hw/char/exynos4210_uart.c index 387156d5e34..d1c2f249150 100644 --- a/hw/char/exynos4210_uart.c +++ b/hw/char/exynos4210_uart.c @@ -32,7 +32,7 @@ #include "hw/arm/exynos4210.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" =20 #include "trace.h" #include "qom/object.h" diff --git a/hw/char/goldfish_tty.c b/hw/char/goldfish_tty.c index 821b3218502..35bcb2a9676 100644 --- a/hw/char/goldfish_tty.c +++ b/hw/char/goldfish_tty.c @@ -9,7 +9,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "chardev/char-fe.h" diff --git a/hw/char/grlib_apbuart.c b/hw/char/grlib_apbuart.c index 9731e664c1b..7be847d0932 100644 --- a/hw/char/grlib_apbuart.c +++ b/hw/char/grlib_apbuart.c @@ -27,7 +27,7 @@ #include "qemu/osdep.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/char/grlib_uart.h" #include "hw/sysbus.h" #include "qemu/module.h" diff --git a/hw/char/ibex_uart.c b/hw/char/ibex_uart.c index ac4a43af84e..3166f6d3094 100644 --- a/hw/char/ibex_uart.c +++ b/hw/char/ibex_uart.c @@ -30,7 +30,7 @@ #include "hw/core/irq.h" #include "hw/core/qdev-clock.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/registerfields.h" #include "migration/vmstate.h" #include "qemu/log.h" diff --git a/hw/char/imx_serial.c b/hw/char/imx_serial.c index 78d2c25f86f..080b7f6331c 100644 --- a/hw/char/imx_serial.c +++ b/hw/char/imx_serial.c @@ -22,7 +22,7 @@ #include "hw/char/imx_serial.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/char/ipoctal232.c b/hw/char/ipoctal232.c index 19f312b9d30..b66c20f4fa8 100644 --- a/hw/char/ipoctal232.c +++ b/hw/char/ipoctal232.c @@ -12,7 +12,7 @@ #include "hw/ipack/ipack.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "migration/vmstate.h" #include "qemu/bitops.h" #include "qemu/module.h" diff --git a/hw/char/max78000_uart.c b/hw/char/max78000_uart.c index 59ec24a15e8..85fc6eed3e5 100644 --- a/hw/char/max78000_uart.c +++ b/hw/char/max78000_uart.c @@ -10,7 +10,7 @@ #include "hw/char/max78000_uart.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "qemu/log.h" #include "qemu/module.h" #include "migration/vmstate.h" diff --git a/hw/char/mcf_uart.c b/hw/char/mcf_uart.c index 391674dbcc6..51edf917c94 100644 --- a/hw/char/mcf_uart.c +++ b/hw/char/mcf_uart.c @@ -13,7 +13,7 @@ #include "qapi/error.h" #include "hw/m68k/mcf.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "chardev/char-fe.h" #include "qom/object.h" =20 diff --git a/hw/char/nrf51_uart.c b/hw/char/nrf51_uart.c index 6087cabeb3c..73069232441 100644 --- a/hw/char/nrf51_uart.c +++ b/hw/char/nrf51_uart.c @@ -18,7 +18,7 @@ #include "hw/char/nrf51_uart.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "migration/vmstate.h" #include "trace.h" =20 diff --git a/hw/char/parallel.c b/hw/char/parallel.c index 6708d7658bd..07bbc9443fb 100644 --- a/hw/char/parallel.c +++ b/hw/char/parallel.c @@ -29,7 +29,7 @@ #include "chardev/char-parallel.h" #include "hw/acpi/acpi_aml_interface.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "migration/vmstate.h" #include "hw/char/parallel-isa.h" #include "hw/char/parallel.h" diff --git a/hw/char/pl011.c b/hw/char/pl011.c index f37ffd349f6..0b0af677988 100644 --- a/hw/char/pl011.c +++ b/hw/char/pl011.c @@ -25,7 +25,7 @@ #include "hw/sysbus.h" #include "hw/core/qdev-clock.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "migration/vmstate.h" #include "chardev/char-fe.h" #include "chardev/char-serial.h" diff --git a/hw/char/renesas_sci.c b/hw/char/renesas_sci.c index 3c1cc43954b..f1c5d5ae6b3 100644 --- a/hw/char/renesas_sci.c +++ b/hw/char/renesas_sci.c @@ -26,7 +26,7 @@ #include "hw/core/irq.h" #include "hw/registerfields.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/char/renesas_sci.h" #include "migration/vmstate.h" =20 diff --git a/hw/char/sclpconsole-lm.c b/hw/char/sclpconsole-lm.c index ed08cf42da2..9a16896d228 100644 --- a/hw/char/sclpconsole-lm.c +++ b/hw/char/sclpconsole-lm.c @@ -23,7 +23,7 @@ #include "migration/vmstate.h" #include "hw/s390x/event-facility.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/s390x/ebcdic.h" #include "qom/object.h" =20 diff --git a/hw/char/sclpconsole.c b/hw/char/sclpconsole.c index ab444fe1fa4..179d12745cc 100644 --- a/hw/char/sclpconsole.c +++ b/hw/char/sclpconsole.c @@ -20,7 +20,7 @@ #include "hw/s390x/sclp.h" #include "migration/vmstate.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/s390x/event-facility.h" #include "chardev/char-fe.h" #include "qom/object.h" diff --git a/hw/char/serial-pci-multi.c b/hw/char/serial-pci-multi.c index f0af12c14f9..17796b93dd7 100644 --- a/hw/char/serial-pci-multi.c +++ b/hw/char/serial-pci-multi.c @@ -33,7 +33,7 @@ #include "hw/core/irq.h" #include "hw/pci/pci_device.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "migration/vmstate.h" =20 #define PCI_SERIAL_MAX_PORTS 4 diff --git a/hw/char/serial.c b/hw/char/serial.c index cbff68a7111..adbd1d1d4ab 100644 --- a/hw/char/serial.c +++ b/hw/char/serial.c @@ -36,7 +36,7 @@ #include "qemu/error-report.h" #include "trace.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" =20 #define UART_LCR_DLAB 0x80 /* Divisor latch access bit */ =20 diff --git a/hw/char/sh_serial.c b/hw/char/sh_serial.c index 9cd79fce334..b3bed2bb7bf 100644 --- a/hw/char/sh_serial.c +++ b/hw/char/sh_serial.c @@ -30,7 +30,7 @@ #include "hw/core/irq.h" #include "hw/core/qdev.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/sh4/sh.h" #include "chardev/char-fe.h" #include "qapi/error.h" diff --git a/hw/char/shakti_uart.c b/hw/char/shakti_uart.c index 51e45351d95..2d1bc9cb8e2 100644 --- a/hw/char/shakti_uart.c +++ b/hw/char/shakti_uart.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "hw/char/shakti_uart.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "qemu/log.h" =20 static uint64_t shakti_uart_read(void *opaque, hwaddr addr, unsigned size) diff --git a/hw/char/sifive_uart.c b/hw/char/sifive_uart.c index 473374d3de1..af17cf9a6ce 100644 --- a/hw/char/sifive_uart.c +++ b/hw/char/sifive_uart.c @@ -24,7 +24,7 @@ #include "chardev/char-fe.h" #include "hw/core/irq.h" #include "hw/char/sifive_uart.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" =20 #define TX_INTERRUPT_TRIGGER_DELAY_NS 100 =20 diff --git a/hw/char/spapr_vty.c b/hw/char/spapr_vty.c index 17a17c47c36..1dd9fb155cb 100644 --- a/hw/char/spapr_vty.c +++ b/hw/char/spapr_vty.c @@ -7,7 +7,7 @@ #include "hw/ppc/spapr.h" #include "hw/ppc/spapr_vio.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "qom/object.h" =20 #define VTERM_BUFSIZE 16 diff --git a/hw/char/stm32f2xx_usart.c b/hw/char/stm32f2xx_usart.c index 2c19ec69cc8..2bf0161fa58 100644 --- a/hw/char/stm32f2xx_usart.c +++ b/hw/char/stm32f2xx_usart.c @@ -26,7 +26,7 @@ #include "hw/char/stm32f2xx_usart.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "qemu/log.h" #include "qemu/module.h" =20 diff --git a/hw/char/stm32l4x5_usart.c b/hw/char/stm32l4x5_usart.c index 8b208ba9b6a..664d03d6b96 100644 --- a/hw/char/stm32l4x5_usart.c +++ b/hw/char/stm32l4x5_usart.c @@ -27,7 +27,7 @@ #include "hw/core/irq.h" #include "hw/core/qdev-clock.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/registerfields.h" #include "trace.h" =20 diff --git a/hw/char/terminal3270.c b/hw/char/terminal3270.c index 821a75c37a2..1d857bad9bc 100644 --- a/hw/char/terminal3270.c +++ b/hw/char/terminal3270.c @@ -16,7 +16,7 @@ #include "qemu/module.h" #include "chardev/char-fe.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/s390x/3270-ccw.h" #include "qom/object.h" =20 diff --git a/hw/char/virtio-console.c b/hw/char/virtio-console.c index 8c2a6a9d1d3..25db0f019b8 100644 --- a/hw/char/virtio-console.c +++ b/hw/char/virtio-console.c @@ -16,7 +16,7 @@ #include "qemu/module.h" #include "trace.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/virtio/virtio-serial.h" #include "qapi/error.h" #include "qapi/qapi-events-char.h" diff --git a/hw/char/xen_console.c b/hw/char/xen_console.c index a0d142582ee..8ee098d9ad4 100644 --- a/hw/char/xen_console.c +++ b/hw/char/xen_console.c @@ -30,7 +30,7 @@ #include "hw/xen/xen-backend.h" #include "hw/xen/xen-bus-helper.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/xen/interface/io/console.h" #include "hw/xen/interface/io/xs_wire.h" #include "hw/xen/interface/grant_table.h" diff --git a/hw/char/xilinx_uartlite.c b/hw/char/xilinx_uartlite.c index 9d81cd904c6..ba7e9e339b6 100644 --- a/hw/char/xilinx_uartlite.c +++ b/hw/char/xilinx_uartlite.c @@ -28,7 +28,7 @@ #include "hw/char/xilinx_uartlite.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/sysbus.h" #include "qemu/module.h" #include "chardev/char-fe.h" diff --git a/hw/core/qdev-properties-system.c b/hw/core/qdev-properties-sys= tem.c index d0a66358b5a..fe5464c7da1 100644 --- a/hw/core/qdev-properties-system.c +++ b/hw/core/qdev-properties-system.c @@ -12,7 +12,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "qapi/error.h" #include "qapi/visitor.h" #include "qapi/qapi-types-block.h" diff --git a/hw/hyperv/vmbus.c b/hw/hyperv/vmbus.c index 639d932b094..86b53a23ade 100644 --- a/hw/hyperv/vmbus.c +++ b/hw/hyperv/vmbus.c @@ -14,7 +14,7 @@ #include "qapi/error.h" #include "migration/vmstate.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/hyperv/hyperv.h" #include "hw/hyperv/vmbus.h" #include "hw/hyperv/vmbus-bridge.h" diff --git a/hw/i386/kvm/i8254.c b/hw/i386/kvm/i8254.c index 14b78f30a83..81e742f8667 100644 --- a/hw/i386/kvm/i8254.c +++ b/hw/i386/kvm/i8254.c @@ -32,7 +32,7 @@ #include "system/runstate.h" #include "hw/timer/i8254.h" #include "hw/timer/i8254_internal.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "system/kvm.h" #include "target/i386/kvm/kvm_i386.h" #include "qom/object.h" diff --git a/hw/intc/xilinx_intc.c b/hw/intc/xilinx_intc.c index 465df1c3af2..f93f0d6e7ea 100644 --- a/hw/intc/xilinx_intc.c +++ b/hw/intc/xilinx_intc.c @@ -31,7 +31,7 @@ #include "qemu/module.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "qom/object.h" =20 #define D(x) diff --git a/hw/ipmi/ipmi_bmc_extern.c b/hw/ipmi/ipmi_bmc_extern.c index fb90a7d7c30..fa08ed6c217 100644 --- a/hw/ipmi/ipmi_bmc_extern.c +++ b/hw/ipmi/ipmi_bmc_extern.c @@ -35,7 +35,7 @@ #include "chardev/char-fe.h" #include "hw/ipmi/ipmi.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "migration/vmstate.h" #include "qom/object.h" =20 diff --git a/hw/ipmi/ipmi_bmc_sim.c b/hw/ipmi/ipmi_bmc_sim.c index b86943c3245..3d4fe1a699a 100644 --- a/hw/ipmi/ipmi_bmc_sim.c +++ b/hw/ipmi/ipmi_bmc_sim.c @@ -30,7 +30,7 @@ #include "qemu/module.h" #include "hw/core/loader.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "migration/vmstate.h" =20 #define IPMI_NETFN_CHASSIS 0x00 diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c index 26baa1c3d6c..6eb20137a04 100644 --- a/hw/mem/cxl_type3.c +++ b/hw/mem/cxl_type3.c @@ -18,7 +18,7 @@ #include "hw/mem/pc-dimm.h" #include "hw/pci/pci.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "qapi/error.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/misc/allwinner-sid.c b/hw/misc/allwinner-sid.c index 17faf67e606..92a0c7918bc 100644 --- a/hw/misc/allwinner-sid.c +++ b/hw/misc/allwinner-sid.c @@ -26,7 +26,7 @@ #include "qemu/guest-random.h" #include "qapi/error.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/misc/allwinner-sid.h" #include "trace.h" =20 diff --git a/hw/misc/allwinner-sramc.c b/hw/misc/allwinner-sramc.c index bd7f59fec97..423e0a844fa 100644 --- a/hw/misc/allwinner-sramc.c +++ b/hw/misc/allwinner-sramc.c @@ -25,7 +25,7 @@ #include "qemu/module.h" #include "qapi/error.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/misc/allwinner-sramc.h" #include "trace.h" =20 diff --git a/hw/misc/ivshmem-flat.c b/hw/misc/ivshmem-flat.c index 790500d34de..1248f9e81bc 100644 --- a/hw/misc/ivshmem-flat.c +++ b/hw/misc/ivshmem-flat.c @@ -14,7 +14,7 @@ #include "qemu/module.h" #include "qapi/error.h" #include "hw/core/irq.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/sysbus.h" #include "chardev/char-fe.h" #include "system/address-spaces.h" diff --git a/hw/misc/ivshmem-pci.c b/hw/misc/ivshmem-pci.c index fb69af52f62..b9162589a02 100644 --- a/hw/misc/ivshmem-pci.c +++ b/hw/misc/ivshmem-pci.c @@ -23,7 +23,7 @@ #include "qemu/cutils.h" #include "hw/pci/pci.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/pci/msi.h" #include "hw/pci/msix.h" #include "system/kvm.h" diff --git a/hw/misc/mac_via.c b/hw/misc/mac_via.c index 887397ae842..0c608c3dc63 100644 --- a/hw/misc/mac_via.c +++ b/hw/misc/mac_via.c @@ -28,7 +28,7 @@ #include "qapi/error.h" #include "qemu/cutils.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "system/block-backend.h" #include "system/rtc.h" #include "trace.h" diff --git a/hw/misc/sifive_u_otp.c b/hw/misc/sifive_u_otp.c index 1d352680468..899bc31745c 100644 --- a/hw/misc/sifive_u_otp.c +++ b/hw/misc/sifive_u_otp.c @@ -21,7 +21,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/sysbus.h" #include "qemu/error-report.h" #include "qemu/log.h" diff --git a/hw/misc/stm32l4x5_rcc.c b/hw/misc/stm32l4x5_rcc.c index c2b25e9a4de..cf7fa28cbe9 100644 --- a/hw/misc/stm32l4x5_rcc.c +++ b/hw/misc/stm32l4x5_rcc.c @@ -27,7 +27,7 @@ #include "hw/core/irq.h" #include "hw/core/qdev-clock.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/registerfields.h" #include "trace.h" =20 diff --git a/hw/misc/xlnx-versal-cfu.c b/hw/misc/xlnx-versal-cfu.c index 80f9612b2ff..13cd597da49 100644 --- a/hw/misc/xlnx-versal-cfu.c +++ b/hw/misc/xlnx-versal-cfu.c @@ -19,7 +19,7 @@ #include "qemu/units.h" #include "migration/vmstate.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/misc/xlnx-versal-cfu.h" =20 #ifndef XLNX_VERSAL_CFU_APB_ERR_DEBUG diff --git a/hw/net/rocker/rocker.c b/hw/net/rocker/rocker.c index 935e74fd7d1..3eb7b445113 100644 --- a/hw/net/rocker/rocker.c +++ b/hw/net/rocker/rocker.c @@ -18,7 +18,7 @@ #include "qemu/osdep.h" #include "hw/pci/pci_device.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "migration/vmstate.h" #include "hw/pci/msix.h" #include "net/net.h" diff --git a/hw/net/xen_nic.c b/hw/net/xen_nic.c index 4ef1b7dd29a..f4d0b060130 100644 --- a/hw/net/xen_nic.c +++ b/hw/net/xen_nic.c @@ -38,7 +38,7 @@ #include "hw/xen/xen-backend.h" #include "hw/xen/xen-bus-helper.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" =20 #include "hw/xen/interface/io/netif.h" #include "hw/xen/interface/io/xs_wire.h" diff --git a/hw/net/xilinx_ethlite.c b/hw/net/xilinx_ethlite.c index 39e64a46e26..72b14811a9d 100644 --- a/hw/net/xilinx_ethlite.c +++ b/hw/net/xilinx_ethlite.c @@ -34,7 +34,7 @@ #include "hw/sysbus.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/misc/unimp.h" #include "net/net.h" #include "trace.h" diff --git a/hw/nvram/eeprom_at24c.c b/hw/nvram/eeprom_at24c.c index e947cf8a3b2..8b7f2dc13f1 100644 --- a/hw/nvram/eeprom_at24c.c +++ b/hw/nvram/eeprom_at24c.c @@ -15,7 +15,7 @@ #include "hw/i2c/i2c.h" #include "hw/nvram/eeprom_at24c.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "system/block-backend.h" #include "qom/object.h" =20 diff --git a/hw/nvram/mac_nvram.c b/hw/nvram/mac_nvram.c index b048db0777a..efadb3c943c 100644 --- a/hw/nvram/mac_nvram.c +++ b/hw/nvram/mac_nvram.c @@ -28,7 +28,7 @@ #include "hw/nvram/chrp_nvram.h" #include "hw/nvram/mac_nvram.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "system/block-backend.h" #include "migration/vmstate.h" #include "qemu/cutils.h" diff --git a/hw/nvram/spapr_nvram.c b/hw/nvram/spapr_nvram.c index c9202ddfcd4..58d81f77c88 100644 --- a/hw/nvram/spapr_nvram.c +++ b/hw/nvram/spapr_nvram.c @@ -37,7 +37,7 @@ #include "hw/ppc/spapr.h" #include "hw/ppc/spapr_vio.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "qom/object.h" =20 struct SpaprNvram { diff --git a/hw/nvram/xlnx-bbram.c b/hw/nvram/xlnx-bbram.c index aad445b9018..60ede7e40fb 100644 --- a/hw/nvram/xlnx-bbram.c +++ b/hw/nvram/xlnx-bbram.c @@ -32,7 +32,7 @@ #include "system/blockdev.h" #include "migration/vmstate.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/nvram/xlnx-efuse.h" =20 #ifndef XLNX_BBRAM_ERR_DEBUG diff --git a/hw/nvram/xlnx-efuse.c b/hw/nvram/xlnx-efuse.c index 7eb156f9413..facbef3fc4c 100644 --- a/hw/nvram/xlnx-efuse.c +++ b/hw/nvram/xlnx-efuse.c @@ -32,7 +32,7 @@ #include "qapi/error.h" #include "system/blockdev.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" =20 #define TBIT0_OFFSET 28 #define TBIT1_OFFSET 29 diff --git a/hw/pci-bridge/cxl_downstream.c b/hw/pci-bridge/cxl_downstream.c index 1265e40c395..f7b131e67e8 100644 --- a/hw/pci-bridge/cxl_downstream.c +++ b/hw/pci-bridge/cxl_downstream.c @@ -14,7 +14,7 @@ #include "hw/pci/pcie.h" #include "hw/pci/pcie_port.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/cxl/cxl.h" #include "qapi/error.h" =20 diff --git a/hw/pci-bridge/cxl_root_port.c b/hw/pci-bridge/cxl_root_port.c index df359dee670..616d5d934cc 100644 --- a/hw/pci-bridge/cxl_root_port.c +++ b/hw/pci-bridge/cxl_root_port.c @@ -24,7 +24,7 @@ #include "hw/pci/pcie_port.h" #include "hw/pci/msi.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/sysbus.h" #include "qapi/error.h" #include "hw/cxl/cxl.h" diff --git a/hw/pci-bridge/cxl_upstream.c b/hw/pci-bridge/cxl_upstream.c index 019c311bb5b..6d708fadc25 100644 --- a/hw/pci-bridge/cxl_upstream.c +++ b/hw/pci-bridge/cxl_upstream.c @@ -11,7 +11,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/pci/msi.h" #include "hw/pci/pcie.h" #include "hw/pci/pcie_port.h" diff --git a/hw/pci-bridge/gen_pcie_root_port.c b/hw/pci-bridge/gen_pcie_ro= ot_port.c index fa1cf5e58fd..2f7257d166a 100644 --- a/hw/pci-bridge/gen_pcie_root_port.c +++ b/hw/pci-bridge/gen_pcie_root_port.c @@ -16,7 +16,7 @@ #include "hw/pci/msix.h" #include "hw/pci/pcie_port.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "migration/vmstate.h" #include "qom/object.h" =20 diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 2371a916809..5996229c813 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -31,7 +31,7 @@ #include "hw/pci/pci_bus.h" #include "hw/pci/pci_host.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "migration/cpr.h" #include "migration/qemu-file-types.h" #include "migration/vmstate.h" diff --git a/hw/ppc/pnv_pnor.c b/hw/ppc/pnv_pnor.c index 1083e42ab57..365c4d78b8a 100644 --- a/hw/ppc/pnv_pnor.c +++ b/hw/ppc/pnv_pnor.c @@ -16,7 +16,7 @@ #include "hw/core/loader.h" #include "hw/ppc/pnv_pnor.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" =20 static uint64_t pnv_pnor_read(void *opaque, hwaddr addr, unsigned size) { diff --git a/hw/rtc/mc146818rtc.c b/hw/rtc/mc146818rtc.c index 56f8c79479e..ccbb2797169 100644 --- a/hw/rtc/mc146818rtc.c +++ b/hw/rtc/mc146818rtc.c @@ -30,7 +30,7 @@ #include "hw/intc/kvm_irqcount.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "qemu/timer.h" #include "system/system.h" #include "system/replay.h" diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c index 9c78c9e18e2..0f896c27f47 100644 --- a/hw/scsi/scsi-disk.c +++ b/hw/scsi/scsi-disk.c @@ -37,7 +37,7 @@ #include "system/blockdev.h" #include "hw/block/block.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "system/dma.h" #include "system/system.h" #include "qemu/cutils.h" diff --git a/hw/scsi/scsi-generic.c b/hw/scsi/scsi-generic.c index 2ac4fd66c37..0a676a16fa4 100644 --- a/hw/scsi/scsi-generic.c +++ b/hw/scsi/scsi-generic.c @@ -19,7 +19,7 @@ #include "hw/scsi/scsi.h" #include "migration/qemu-file-types.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/scsi/emulation.h" #include "system/block-backend.h" #include "trace.h" diff --git a/hw/scsi/vhost-user-scsi.c b/hw/scsi/vhost-user-scsi.c index 89f06066b70..3612897d4b9 100644 --- a/hw/scsi/vhost-user-scsi.c +++ b/hw/scsi/vhost-user-scsi.c @@ -21,7 +21,7 @@ #include "hw/core/fw-path-provider.h" #include "hw/core/qdev.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/virtio/vhost.h" #include "hw/virtio/vhost-backend.h" #include "hw/virtio/vhost-user-scsi.h" diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 3df331d5611..5aa34f1d5bd 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -43,7 +43,7 @@ #include "qapi/error.h" #include "qemu/bitmap.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "qemu/error-report.h" #include "qemu/timer.h" #include "qemu/log.h" diff --git a/hw/sh4/sh7750.c b/hw/sh4/sh7750.c index aff45320bc5..a0aa89ad318 100644 --- a/hw/sh4/sh7750.c +++ b/hw/sh4/sh7750.c @@ -31,7 +31,7 @@ #include "system/system.h" #include "target/sh4/cpu.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "sh7750_regs.h" #include "sh7750_regnames.h" #include "hw/sh4/sh_intc.h" diff --git a/hw/ssi/ibex_spi_host.c b/hw/ssi/ibex_spi_host.c index a7dc0c2f032..50cf08de9c9 100644 --- a/hw/ssi/ibex_spi_host.c +++ b/hw/ssi/ibex_spi_host.c @@ -30,7 +30,7 @@ #include "hw/ssi/ibex_spi_host.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "migration/vmstate.h" #include "trace.h" =20 diff --git a/hw/ssi/xilinx_spi.c b/hw/ssi/xilinx_spi.c index 6dcdd63916a..cf406d08246 100644 --- a/hw/ssi/xilinx_spi.c +++ b/hw/ssi/xilinx_spi.c @@ -33,7 +33,7 @@ =20 #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/ssi/ssi.h" #include "qom/object.h" =20 diff --git a/hw/timer/xilinx_timer.c b/hw/timer/xilinx_timer.c index 57a2c7101d1..9c2969a2c4f 100644 --- a/hw/timer/xilinx_timer.c +++ b/hw/timer/xilinx_timer.c @@ -31,7 +31,7 @@ #include "hw/core/irq.h" #include "hw/core/ptimer.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "qemu/log.h" #include "qemu/module.h" #include "qom/object.h" diff --git a/hw/usb/ccid-card-passthru.c b/hw/usb/ccid-card-passthru.c index 306dd7d9146..5ab7855272a 100644 --- a/hw/usb/ccid-card-passthru.c +++ b/hw/usb/ccid-card-passthru.c @@ -14,7 +14,7 @@ #include #include "chardev/char-fe.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "migration/vmstate.h" #include "qemu/error-report.h" #include "qemu/module.h" diff --git a/hw/usb/dev-serial.c b/hw/usb/dev-serial.c index 286c7711f64..b238cb79375 100644 --- a/hw/usb/dev-serial.c +++ b/hw/usb/dev-serial.c @@ -14,7 +14,7 @@ #include "qemu/error-report.h" #include "qemu/module.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/usb/usb.h" #include "migration/vmstate.h" #include "desc.h" diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c index 6fd04b7b421..fda5bbca676 100644 --- a/hw/usb/redirect.c +++ b/hw/usb/redirect.c @@ -42,7 +42,7 @@ #include =20 #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/usb/usb.h" #include "migration/qemu-file-types.h" #include "migration/vmstate.h" diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 6b71605dd97..a0a66b105aa 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -28,7 +28,7 @@ #include "hw/pci/msix.h" #include "hw/pci/pci_bridge.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/vfio/vfio-cpr.h" #include "migration/vmstate.h" #include "migration/cpr.h" diff --git a/hw/virtio/vdpa-dev.c b/hw/virtio/vdpa-dev.c index 3a6de7ebb43..f2377d2d501 100644 --- a/hw/virtio/vdpa-dev.c +++ b/hw/virtio/vdpa-dev.c @@ -21,7 +21,7 @@ #include "qemu/cutils.h" #include "hw/core/qdev.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/virtio/vhost.h" #include "hw/virtio/virtio.h" #include "hw/virtio/virtio-bus.h" diff --git a/hw/virtio/vhost-user-fs.c b/hw/virtio/vhost-user-fs.c index 0acd9580b13..ad6fcacf066 100644 --- a/hw/virtio/vhost-user-fs.c +++ b/hw/virtio/vhost-user-fs.c @@ -16,7 +16,7 @@ #include "standard-headers/linux/virtio_fs.h" #include "qapi/error.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/virtio/virtio-bus.h" #include "hw/virtio/virtio-access.h" #include "qemu/error-report.h" diff --git a/hw/virtio/vhost-user-vsock.c b/hw/virtio/vhost-user-vsock.c index e20e0aee439..c2cd376e732 100644 --- a/hw/virtio/vhost-user-vsock.c +++ b/hw/virtio/vhost-user-vsock.c @@ -13,7 +13,7 @@ #include "qapi/error.h" #include "qemu/error-report.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/virtio/vhost-user-vsock.h" =20 static const int user_feature_bits[] =3D { diff --git a/hw/virtio/virtio-iommu-pci.c b/hw/virtio/virtio-iommu-pci.c index 9d32b8a7b3c..f5f6ce7359d 100644 --- a/hw/virtio/virtio-iommu-pci.c +++ b/hw/virtio/virtio-iommu-pci.c @@ -14,7 +14,7 @@ #include "hw/virtio/virtio-pci.h" #include "hw/virtio/virtio-iommu.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "qapi/error.h" #include "hw/core/boards.h" #include "hw/pci/pci_bus.h" diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c index c1b92d90cf9..0fe9c0aada8 100644 --- a/hw/xen/xen_pt.c +++ b/hw/xen/xen_pt.c @@ -59,7 +59,7 @@ =20 #include "hw/pci/pci.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/xen/xen_pt.h" #include "hw/xen/xen_igd.h" #include "hw/xen/xen.h" diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c index be99b2ab94c..da536fb30ed 100644 --- a/target/s390x/cpu.c +++ b/target/s390x/cpu.c @@ -31,7 +31,7 @@ #include "qapi/qapi-types-machine.h" #include "system/hw_accel.h" #include "hw/core/qdev-properties.h" -#include "hw/qdev-properties-system.h" +#include "hw/core/qdev-properties-system.h" #include "hw/resettable.h" #include "fpu/softfloat-helpers.h" #include "disas/capstone.h" --=20 2.52.0 From nobody Wed Jan 7 09:26:48 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=1766827121; cv=none; d=zohomail.com; s=zohoarc; b=P0Bx1vnq/XaYtdamDyvU+JDqjdYcvE2LMdV17KJ2542YG+BOOMf++fwLvaecAA9x4kRZ4kk0ptl0pKsU6AxaTSNydD2AeBQYtm9KQFdgXiu5695PoC9Yl7URf8g3iBGcdT5PQohx3DIZCuosybplkxOU8Wk8XCaIoZOq+y3ZHn4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827121; 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=N2T9Qo+I/XfHhW0PoTnRWcNW5Xf7eKo5IY8PYEQOWvY=; b=KQKvEHc27/KaiczqOawiGmvHUIwKU6v9SF7C8/4x9mUF5fHnpUo6F7POmgaETkk8GiY2lLJHiEpf5cgyXhyJthL3NCvev3ycEpzCMWMzrnD4L5KuG66JYfn3RGlE50VElT8vQ/0HnwLDYl5K2a7LjF0vNr/8EaXhqIUrwME4Ooo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827121576239.23090208941505; Sat, 27 Dec 2025 01:18:41 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQH-0002YG-0o; Sat, 27 Dec 2025 04:17:17 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQF-0002XU-JJ for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:15 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQB-0002PM-JD for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:15 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-689-4zIVNiHiM7u6HNAqtfcPMg-1; Sat, 27 Dec 2025 04:17:08 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-47918084ac1so65200865e9.2 for ; Sat, 27 Dec 2025 01:17:08 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d193d4e91sm421370455e9.13.2025.12.27.01.17.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827031; 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=N2T9Qo+I/XfHhW0PoTnRWcNW5Xf7eKo5IY8PYEQOWvY=; b=cYwaRHED6ACEV0ao4snryLK416Eviqf1Os5PkzbIvdryriCdNyEG6RQtSJg9uWEvFRz1tZ fHf70dMe5yHNBHt9dmQjzjGJdZ8QzDTikgPwDyfePXu4LBg1Kmr5VitRHYIBEAcmB+FuYB 1DDiM3szUFBH7WDYqTa+XTUMbI5dYPM= X-MC-Unique: 4zIVNiHiM7u6HNAqtfcPMg-1 X-Mimecast-MFC-AGG-ID: 4zIVNiHiM7u6HNAqtfcPMg_1766827027 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827027; x=1767431827; 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; bh=N2T9Qo+I/XfHhW0PoTnRWcNW5Xf7eKo5IY8PYEQOWvY=; b=TuvmFJQ5EjR+GFH3DTsxrf5AyeLF5wJ7Hwe46z9cDt7/FnhdNBqxrv2cwpsNusfx0W YIX+99nKILtO7bpXAl/YDry66TYrVKStzhkTYcf3WlhZia8+OcDwn/nDTrNKTho7GRkI OXTpLf4B1hcZGYh2NUcGItTjEK2V9j/yL8kqoT2eQnDWZRPZCC5YZ2yONqMcyPAsRb5k CVHAevvkuL7Q7ryWIPtanOYXqvXFEH1F/59f54XkSvsONGgzSD45canZ/JzlHAvTDZ6d gdekKjYRTHtEIv2PApbFMC1Gsn0gEeRHKUPOBgHCNl+sjH/gDhfV6pghWdxCuAMpRyHF qzMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827027; x=1767431827; 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; bh=N2T9Qo+I/XfHhW0PoTnRWcNW5Xf7eKo5IY8PYEQOWvY=; b=U4mthe0JHHYOs1rKiJQUYqyHaz3Tea5Ug3XgoeFimFlfOhGHMRwHoPijZt75/se+Yv z5/BMCltpLr9kDTLMsvc9aWVr6/e5641GD/P8Lk+aKFJGJpl8GrmsidJ6kvB9fo05k8a QfO6jR0DxkZ+jRpW6e7CrJH2s0EjKDw4dC2EnE8qwpE04Ckg/QH8O0saqLVRoIesIA7p Uj31j9kOJvoI46bqp9JHFSI8QAm12F8YABfs9BEar9YrFzqHugNh5K8pwneUPsB8wkFf oq0IICYeBmvoW18EDhU2QV0oL6oEE51QjYQNNw0bz7sbCHp5um86S5gWNPgmaRcnE5sC Bb5Q== X-Gm-Message-State: AOJu0YwMqv5pxTuWvM3miuKnfeYrkcjVhc7YZCnc9FaF9l4r4yyLLwjH szLXctPOnpKPetvUAZ+Yj8v+C++/p3QiJPPBJ2FAt8T3rVbEoLVc3LCXVjC01C0EU45s3O84lDh rpT4y+kVTRUXPEorkolOPfsKt+xyVJoIQC8AfJpVjIKJ4VSnF9+FuUuKwkkQarQvPl0tjkeIGk/ BKSx67u5FteWNswAC2vzWs8VVFpaWOkPSIWBCSXSzM X-Gm-Gg: AY/fxX6AFhudfTOPvXrifxtkkQ3GDDjoJ5Y2r6wTxA/pmEisWoa+0Jp0WLWsF9HMEN6 B/gvgDBehCXC3xJG286h9vP2SarXOYu/uli3TLIcjAd4ZQvsj3hbHDuuK8KbhIBhm2aGb3KIRgD HAF9lEBEvfAJ1u4aemTGrlXgHZH4lJ5C9BEYBcY8wdhf8CzLVYj8qwpbzJl2/IgjQh/Dq6ZDr0e CTW/bd7VrHskE7GItBsvwVotrzTvEczJ4r8Fw7jcTcFdhphisX/POcbKQpngXNhrhLmswXVeVuK Sofu1IjZpJe1yE78gRYsERIAEaSMuP8EGBn0xCue1lqJFAFc7RQQDs0wTjLTh/lBnQhbLS4uaRq 1hhRCq7r3HHbXGNEQv+z9S2niGILmvwHLQMYFmQ1jG7hXMZf+q/Ai44mwVhyMPVbqXtt3g/y/GL Nbn1YseB8lJqTpaT0= X-Received: by 2002:a05:600c:45c8:b0:477:8a2a:1244 with SMTP id 5b1f17b1804b1-47d195558bemr275598985e9.11.1766827026130; Sat, 27 Dec 2025 01:17:06 -0800 (PST) X-Google-Smtp-Source: AGHT+IESg8EQ+T+UjY7ACO/aIsNmqsWSfYgH4vNigyiLeRrA+M6ZdtJCQGJtKhHsJpMtoTV/Wr4OxQ== X-Received: by 2002:a05:600c:45c8:b0:477:8a2a:1244 with SMTP id 5b1f17b1804b1-47d195558bemr275597935e9.11.1766827024257; Sat, 27 Dec 2025 01:17:04 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 022/153] include: move hw/registerfields.h to hw/core/ Date: Sat, 27 Dec 2025 10:14:09 +0100 Message-ID: <20251227091622.20725-23-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827123520158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- MAINTAINERS | 2 +- docs/devel/style.rst | 2 +- hw/arm/smmuv3-internal.h | 2 +- hw/intc/gic_internal.h | 2 +- hw/intc/gicv3_internal.h | 2 +- hw/sd/sdhci-internal.h | 2 +- include/block/nvme.h | 2 +- include/block/ufs.h | 2 +- include/fpu/softfloat-types.h | 2 +- include/hw/acpi/tpm.h | 2 +- include/hw/char/nrf51_uart.h | 2 +- include/hw/{ =3D> core}/registerfields.h | 0 include/hw/i2c/aspeed_i2c.h | 2 +- include/hw/misc/bcm2835_cprman_internals.h | 2 +- include/hw/misc/stm32l4x5_rcc_internals.h | 2 +- include/hw/register.h | 2 +- target/arm/cpregs.h | 2 +- target/arm/cpu-features.h | 2 +- target/arm/cpu.h | 2 +- target/arm/internals.h | 2 +- target/arm/mmuidx-internal.h | 2 +- target/hexagon/cpu.h | 2 +- target/hppa/cpu.h | 2 +- target/loongarch/cpu-csr.h | 2 +- target/loongarch/cpu.h | 2 +- target/ppc/cpu.h | 2 +- target/ppc/internal.h | 2 +- target/riscv/cpu.h | 2 +- target/riscv/internals.h | 2 +- target/riscv/vector_internals.h | 2 +- target/rx/cpu.h | 2 +- target/tricore/cpu.h | 2 +- hw/adc/npcm7xx_adc.c | 2 +- hw/arm/armsse.c | 2 +- hw/arm/raspi.c | 2 +- hw/arm/raspi4b.c | 2 +- hw/char/cmsdk-apb-uart.c | 2 +- hw/char/ibex_uart.c | 2 +- hw/char/renesas_sci.c | 2 +- hw/char/stm32l4x5_usart.c | 2 +- hw/gpio/aspeed_gpio.c | 2 +- hw/i2c/arm_sbcon_i2c.c | 2 +- hw/i2c/aspeed_i2c.c | 2 +- hw/intc/aspeed_intc.c | 2 +- hw/intc/rx_icu.c | 2 +- hw/misc/armsse-cpu-pwrctrl.c | 2 +- hw/misc/armsse-cpuid.c | 2 +- hw/misc/armsse-mhu.c | 2 +- hw/misc/aspeed_i3c.c | 2 +- hw/misc/aspeed_peci.c | 2 +- hw/misc/bcm2835_thermal.c | 2 +- hw/misc/imx6ul_ccm.c | 2 +- hw/misc/imx7_src.c | 2 +- hw/misc/iotkit-secctl.c | 2 +- hw/misc/iotkit-sysctl.c | 2 +- hw/misc/iotkit-sysinfo.c | 2 +- hw/misc/mps2-fpgaio.c | 2 +- hw/misc/mps2-scc.c | 2 +- hw/misc/npcm7xx_mft.c | 2 +- hw/misc/npcm7xx_pwm.c | 2 +- hw/misc/sifive_e_aon.c | 2 +- hw/misc/stm32l4x5_rcc.c | 2 +- hw/misc/tz-mpc.c | 2 +- hw/misc/tz-msc.c | 2 +- hw/misc/tz-ppc.c | 2 +- hw/misc/xlnx-versal-cframe-reg.c | 2 +- hw/misc/zynq_slcr.c | 2 +- hw/net/cadence_gem.c | 2 +- hw/net/msf2-emac.c | 2 +- hw/net/npcm_gmac.c | 2 +- hw/net/npcm_pcs.c | 2 +- hw/net/smc91c111.c | 2 +- hw/pci-host/aspeed_pcie.c | 2 +- hw/pci-host/bonito.c | 2 +- hw/pci-host/gt64120.c | 2 +- hw/rtc/ls7a_rtc.c | 2 +- hw/sd/sd.c | 2 +- hw/sensor/tmp105.c | 2 +- hw/ssi/ibex_spi_host.c | 2 +- hw/ssi/npcm_pspi.c | 2 +- hw/timer/bcm2835_systmr.c | 2 +- hw/timer/cmsdk-apb-dualtimer.c | 2 +- hw/timer/cmsdk-apb-timer.c | 2 +- hw/timer/renesas_cmt.c | 2 +- hw/timer/renesas_tmr.c | 2 +- hw/timer/sifive_pwm.c | 2 +- hw/timer/sse-counter.c | 2 +- hw/timer/sse-timer.c | 2 +- hw/watchdog/allwinner-wdt.c | 2 +- hw/watchdog/cmsdk-apb-watchdog.c | 2 +- target/tricore/helper.c | 2 +- tests/qtest/sdhci-test.c | 2 +- tests/qtest/sifive-e-aon-watchdog-test.c | 2 +- tests/qtest/stm32l4x5_rcc-test.c | 2 +- tests/qtest/stm32l4x5_usart-test.c | 2 +- 95 files changed, 94 insertions(+), 94 deletions(-) rename include/hw/{ =3D> core}/registerfields.h (100%) diff --git a/MAINTAINERS b/MAINTAINERS index 41b536c3a2a..e0904cc0cc7 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3560,7 +3560,7 @@ M: Alistair Francis S: Maintained F: hw/core/register.c F: include/hw/register.h -F: include/hw/registerfields.h +F: include/hw/core/registerfields.h =20 Rust M: Manos Pitsidianakis diff --git a/docs/devel/style.rst b/docs/devel/style.rst index 941fe14bfd4..12e509d10de 100644 --- a/docs/devel/style.rst +++ b/docs/devel/style.rst @@ -433,7 +433,7 @@ We also suggest avoiding bitfields even in structures w= here the exact layout does not matter, unless you can show that they provide a significant usability benefit. =20 -We encourage the usage of ``include/hw/registerfields.h`` as a safe replac= ement +We encourage the usage of ``include/hw/core/registerfields.h`` as a safe r= eplacement for bitfields. =20 Reserved namespaces in C and POSIX diff --git a/hw/arm/smmuv3-internal.h b/hw/arm/smmuv3-internal.h index b6b7399347f..d15031f2651 100644 --- a/hw/arm/smmuv3-internal.h +++ b/hw/arm/smmuv3-internal.h @@ -21,7 +21,7 @@ #ifndef HW_ARM_SMMUV3_INTERNAL_H #define HW_ARM_SMMUV3_INTERNAL_H =20 -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/arm/smmu-common.h" =20 typedef enum SMMUTranslationStatus { diff --git a/hw/intc/gic_internal.h b/hw/intc/gic_internal.h index 8ddbf554c69..b821f1feb3b 100644 --- a/hw/intc/gic_internal.h +++ b/hw/intc/gic_internal.h @@ -21,7 +21,7 @@ #ifndef QEMU_ARM_GIC_INTERNAL_H #define QEMU_ARM_GIC_INTERNAL_H =20 -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/intc/arm_gic.h" =20 #define ALL_CPU_MASK ((unsigned)(((1 << GIC_NCPU) - 1))) diff --git a/hw/intc/gicv3_internal.h b/hw/intc/gicv3_internal.h index fc586524f56..880dbe52d86 100644 --- a/hw/intc/gicv3_internal.h +++ b/hw/intc/gicv3_internal.h @@ -24,7 +24,7 @@ #ifndef QEMU_ARM_GICV3_INTERNAL_H #define QEMU_ARM_GICV3_INTERNAL_H =20 -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/intc/arm_gicv3_common.h" =20 /* Distributor registers, as offsets from the distributor base address */ diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h index 9f768c418e0..3e81821dd1e 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -24,7 +24,7 @@ #ifndef SDHCI_INTERNAL_H #define SDHCI_INTERNAL_H =20 -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" =20 /* R/W SDMA System Address register 0x0 */ #define SDHC_SYSAD 0x00 diff --git a/include/block/nvme.h b/include/block/nvme.h index 8640dfa8269..9d7159ed7a7 100644 --- a/include/block/nvme.h +++ b/include/block/nvme.h @@ -1,7 +1,7 @@ #ifndef BLOCK_NVME_H #define BLOCK_NVME_H =20 -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" =20 typedef struct QEMU_PACKED NvmeBar { uint64_t cap; diff --git a/include/block/ufs.h b/include/block/ufs.h index a3ee62b027a..ede4aff08ea 100644 --- a/include/block/ufs.h +++ b/include/block/ufs.h @@ -3,7 +3,7 @@ #ifndef BLOCK_UFS_H #define BLOCK_UFS_H =20 -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" =20 typedef struct QEMU_PACKED UfsReg { uint32_t cap; diff --git a/include/fpu/softfloat-types.h b/include/fpu/softfloat-types.h index 1af2a0cb14b..8f82fdfc975 100644 --- a/include/fpu/softfloat-types.h +++ b/include/fpu/softfloat-types.h @@ -80,7 +80,7 @@ this code that are retained. #ifndef SOFTFLOAT_TYPES_H #define SOFTFLOAT_TYPES_H =20 -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" =20 /* * Software IEC/IEEE floating-point types. diff --git a/include/hw/acpi/tpm.h b/include/hw/acpi/tpm.h index 9d0fe6f2f96..d2bf6637c54 100644 --- a/include/hw/acpi/tpm.h +++ b/include/hw/acpi/tpm.h @@ -17,7 +17,7 @@ #define HW_ACPI_TPM_H =20 #include "qemu/units.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/acpi/aml-build.h" #include "system/tpm.h" =20 diff --git a/include/hw/char/nrf51_uart.h b/include/hw/char/nrf51_uart.h index 03d8c2a20d2..7a54db746bd 100644 --- a/include/hw/char/nrf51_uart.h +++ b/include/hw/char/nrf51_uart.h @@ -13,7 +13,7 @@ =20 #include "hw/sysbus.h" #include "chardev/char-fe.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "qom/object.h" =20 #define UART_FIFO_LENGTH 6 diff --git a/include/hw/registerfields.h b/include/hw/core/registerfields.h similarity index 100% rename from include/hw/registerfields.h rename to include/hw/core/registerfields.h diff --git a/include/hw/i2c/aspeed_i2c.h b/include/hw/i2c/aspeed_i2c.h index 2daacc10ce0..c9c2620a8a3 100644 --- a/include/hw/i2c/aspeed_i2c.h +++ b/include/hw/i2c/aspeed_i2c.h @@ -22,7 +22,7 @@ =20 #include "hw/i2c/i2c.h" #include "hw/sysbus.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "qom/object.h" =20 #define TYPE_ASPEED_I2C "aspeed.i2c" diff --git a/include/hw/misc/bcm2835_cprman_internals.h b/include/hw/misc/b= cm2835_cprman_internals.h index 7617aff96fd..de75139cfdd 100644 --- a/include/hw/misc/bcm2835_cprman_internals.h +++ b/include/hw/misc/bcm2835_cprman_internals.h @@ -9,7 +9,7 @@ #ifndef HW_MISC_BCM2835_CPRMAN_INTERNALS_H #define HW_MISC_BCM2835_CPRMAN_INTERNALS_H =20 -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/misc/bcm2835_cprman.h" =20 #define TYPE_CPRMAN_PLL "bcm2835-cprman-pll" diff --git a/include/hw/misc/stm32l4x5_rcc_internals.h b/include/hw/misc/st= m32l4x5_rcc_internals.h index ff1c834f694..1e044604c87 100644 --- a/include/hw/misc/stm32l4x5_rcc_internals.h +++ b/include/hw/misc/stm32l4x5_rcc_internals.h @@ -18,7 +18,7 @@ #ifndef HW_STM32L4X5_RCC_INTERNALS_H #define HW_STM32L4X5_RCC_INTERNALS_H =20 -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/misc/stm32l4x5_rcc.h" =20 #define TYPE_RCC_CLOCK_MUX "stm32l4x5-rcc-clock-mux" diff --git a/include/hw/register.h b/include/hw/register.h index b3d20fee7d3..1f265f4ed71 100644 --- a/include/hw/register.h +++ b/include/hw/register.h @@ -13,7 +13,7 @@ =20 #include "hw/core/qdev.h" #include "system/memory.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "qom/object.h" =20 typedef struct RegisterInfo RegisterInfo; diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index 48a406a5fbc..f5ec7484c1d 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -21,7 +21,7 @@ #ifndef TARGET_ARM_CPREGS_H #define TARGET_ARM_CPREGS_H =20 -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "exec/memop.h" #include "target/arm/kvm-consts.h" #include "cpu.h" diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 579fa8f8f42..c86a4e667dc 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -20,7 +20,7 @@ #ifndef TARGET_ARM_FEATURES_H #define TARGET_ARM_FEATURES_H =20 -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "qemu/host-utils.h" #include "cpu.h" #include "cpu-sysregs.h" diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 39f2b2e54de..9579d43ba33 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -22,7 +22,7 @@ =20 #include "kvm-consts.h" #include "qemu/cpu-float.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "cpu-qom.h" #include "exec/cpu-common.h" #include "exec/cpu-defs.h" diff --git a/target/arm/internals.h b/target/arm/internals.h index 75677945af3..9cd4bf74efb 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -29,7 +29,7 @@ #include "exec/vaddr.h" #include "exec/breakpoint.h" #include "accel/tcg/tb-cpu-state.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "tcg/tcg-gvec-desc.h" #include "system/memory.h" #include "syndrome.h" diff --git a/target/arm/mmuidx-internal.h b/target/arm/mmuidx-internal.h index 962b0538526..776e31c9ba5 100644 --- a/target/arm/mmuidx-internal.h +++ b/target/arm/mmuidx-internal.h @@ -8,7 +8,7 @@ =20 #include "mmuidx.h" #include "tcg/debug-assert.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" =20 =20 FIELD(MMUIDXINFO, EL, 0, 2) diff --git a/target/hexagon/cpu.h b/target/hexagon/cpu.h index 43a854f5172..656b7dc0449 100644 --- a/target/hexagon/cpu.h +++ b/target/hexagon/cpu.h @@ -25,7 +25,7 @@ #include "exec/cpu-defs.h" #include "hex_regs.h" #include "mmvec/mmvec.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" =20 #ifndef CONFIG_USER_ONLY #error "Hexagon does not support system emulation" diff --git a/target/hppa/cpu.h b/target/hppa/cpu.h index c652ef945ac..012e54f8f6f 100644 --- a/target/hppa/cpu.h +++ b/target/hppa/cpu.h @@ -27,7 +27,7 @@ #include "system/memory.h" #include "qemu/cpu-float.h" #include "qemu/interval-tree.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" =20 #define MMU_KERNEL_IDX 0 #define MMU_KERNEL_P_IDX 1 diff --git a/target/loongarch/cpu-csr.h b/target/loongarch/cpu-csr.h index 68989474987..77555929264 100644 --- a/target/loongarch/cpu-csr.h +++ b/target/loongarch/cpu-csr.h @@ -8,7 +8,7 @@ #ifndef LOONGARCH_CPU_CSR_H #define LOONGARCH_CPU_CSR_H =20 -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" =20 /* Based on kernel definitions: arch/loongarch/include/asm/loongarch.h */ =20 diff --git a/target/loongarch/cpu.h b/target/loongarch/cpu.h index 1a14469b3bc..92af68ea7f8 100644 --- a/target/loongarch/cpu.h +++ b/target/loongarch/cpu.h @@ -13,7 +13,7 @@ #include "exec/cpu-defs.h" #include "exec/cpu-interrupt.h" #include "fpu/softfloat-types.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "qemu/timer.h" #ifndef CONFIG_USER_ONLY #include "system/memory.h" diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 787020f6f90..dbebae89dce 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -27,7 +27,7 @@ #include "exec/cpu-interrupt.h" #include "cpu-qom.h" #include "qom/object.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" =20 #define CPU_RESOLVING_TYPE TYPE_POWERPC_CPU =20 diff --git a/target/ppc/internal.h b/target/ppc/internal.h index 7723350227f..58f315ffcf5 100644 --- a/target/ppc/internal.h +++ b/target/ppc/internal.h @@ -19,7 +19,7 @@ #define PPC_INTERNAL_H =20 #include "exec/breakpoint.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "exec/page-protection.h" #include "accel/tcg/tb-cpu-state.h" =20 diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index b54cd78f8f7..90b3e951053 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -21,7 +21,7 @@ #define RISCV_CPU_H =20 #include "hw/core/cpu.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/core/qdev-properties.h" #include "exec/cpu-common.h" #include "exec/cpu-defs.h" diff --git a/target/riscv/internals.h b/target/riscv/internals.h index 172296f12e2..35b923c4bf5 100644 --- a/target/riscv/internals.h +++ b/target/riscv/internals.h @@ -20,7 +20,7 @@ #define RISCV_CPU_INTERNALS_H =20 #include "exec/cpu-common.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "fpu/softfloat-types.h" #include "target/riscv/cpu_bits.h" =20 diff --git a/target/riscv/vector_internals.h b/target/riscv/vector_internal= s.h index 8eee7e5c31c..5681b818153 100644 --- a/target/riscv/vector_internals.h +++ b/target/riscv/vector_internals.h @@ -20,7 +20,7 @@ #define TARGET_RISCV_VECTOR_INTERNALS_H =20 #include "qemu/bitops.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "cpu.h" #include "tcg/tcg-gvec-desc.h" #include "internals.h" diff --git a/target/rx/cpu.h b/target/rx/cpu.h index ba5761b6472..b3b1ecff5af 100644 --- a/target/rx/cpu.h +++ b/target/rx/cpu.h @@ -20,7 +20,7 @@ #define RX_CPU_H =20 #include "qemu/bitops.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "cpu-qom.h" =20 #include "exec/cpu-common.h" diff --git a/target/tricore/cpu.h b/target/tricore/cpu.h index 82085fbc32f..ab46192e261 100644 --- a/target/tricore/cpu.h +++ b/target/tricore/cpu.h @@ -21,7 +21,7 @@ #define TRICORE_CPU_H =20 #include "cpu-qom.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "exec/cpu-common.h" #include "exec/cpu-defs.h" #include "qemu/cpu-float.h" diff --git a/hw/adc/npcm7xx_adc.c b/hw/adc/npcm7xx_adc.c index 44079791cbd..3584c27c75a 100644 --- a/hw/adc/npcm7xx_adc.c +++ b/hw/adc/npcm7xx_adc.c @@ -18,7 +18,7 @@ #include "hw/adc/npcm7xx_adc.h" #include "hw/core/qdev-clock.h" #include "hw/core/qdev-properties.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/arm/armsse.c b/hw/arm/armsse.c index 42ceb097ae8..b6fc95df3b6 100644 --- a/hw/arm/armsse.c +++ b/hw/arm/armsse.c @@ -18,7 +18,7 @@ #include "trace.h" #include "hw/sysbus.h" #include "migration/vmstate.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/arm/armsse.h" #include "hw/arm/armsse-version.h" #include "hw/arm/boot.h" diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c index 637525a7e3f..1276bb4df40 100644 --- a/hw/arm/raspi.c +++ b/hw/arm/raspi.c @@ -20,7 +20,7 @@ #include "hw/arm/bcm2836.h" #include "hw/arm/bcm2838.h" #include "hw/arm/raspi_platform.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "qemu/error-report.h" #include "hw/core/boards.h" #include "hw/core/loader.h" diff --git a/hw/arm/raspi4b.c b/hw/arm/raspi4b.c index ead28500c73..3eeb8f447e6 100644 --- a/hw/arm/raspi4b.c +++ b/hw/arm/raspi4b.c @@ -14,7 +14,7 @@ #include "hw/arm/machines-qom.h" #include "hw/arm/raspi_platform.h" #include "hw/display/bcm2835_fb.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "qemu/error-report.h" #include "system/device_tree.h" #include "hw/core/boards.h" diff --git a/hw/char/cmsdk-apb-uart.c b/hw/char/cmsdk-apb-uart.c index c3645a553ec..1a83e4a9bd1 100644 --- a/hw/char/cmsdk-apb-uart.c +++ b/hw/char/cmsdk-apb-uart.c @@ -22,7 +22,7 @@ #include "trace.h" #include "hw/sysbus.h" #include "migration/vmstate.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "chardev/char-fe.h" #include "chardev/char-serial.h" #include "hw/char/cmsdk-apb-uart.h" diff --git a/hw/char/ibex_uart.c b/hw/char/ibex_uart.c index 3166f6d3094..127d219df3c 100644 --- a/hw/char/ibex_uart.c +++ b/hw/char/ibex_uart.c @@ -31,7 +31,7 @@ #include "hw/core/qdev-clock.h" #include "hw/core/qdev-properties.h" #include "hw/core/qdev-properties-system.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/char/renesas_sci.c b/hw/char/renesas_sci.c index f1c5d5ae6b3..dc2810a9b11 100644 --- a/hw/char/renesas_sci.c +++ b/hw/char/renesas_sci.c @@ -24,7 +24,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "hw/core/irq.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/core/qdev-properties.h" #include "hw/core/qdev-properties-system.h" #include "hw/char/renesas_sci.h" diff --git a/hw/char/stm32l4x5_usart.c b/hw/char/stm32l4x5_usart.c index 664d03d6b96..736f1e764e6 100644 --- a/hw/char/stm32l4x5_usart.c +++ b/hw/char/stm32l4x5_usart.c @@ -28,7 +28,7 @@ #include "hw/core/qdev-clock.h" #include "hw/core/qdev-properties.h" #include "hw/core/qdev-properties-system.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "trace.h" =20 =20 diff --git a/hw/gpio/aspeed_gpio.c b/hw/gpio/aspeed_gpio.c index 85a5acd7087..d9237d4360f 100644 --- a/hw/gpio/aspeed_gpio.c +++ b/hw/gpio/aspeed_gpio.c @@ -16,7 +16,7 @@ #include "hw/core/irq.h" #include "migration/vmstate.h" #include "trace.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" =20 #define GPIOS_PER_GROUP 8 =20 diff --git a/hw/i2c/arm_sbcon_i2c.c b/hw/i2c/arm_sbcon_i2c.c index 979ccbe0ed6..688f45c3139 100644 --- a/hw/i2c/arm_sbcon_i2c.c +++ b/hw/i2c/arm_sbcon_i2c.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/i2c/arm_sbcon_i2c.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "qemu/log.h" #include "qemu/module.h" #include "qom/object.h" diff --git a/hw/i2c/aspeed_i2c.c b/hw/i2c/aspeed_i2c.c index e3ca77865bd..1f9ce131bf7 100644 --- a/hw/i2c/aspeed_i2c.c +++ b/hw/i2c/aspeed_i2c.c @@ -29,7 +29,7 @@ #include "hw/i2c/aspeed_i2c.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "trace.h" =20 /* Enable SLAVE_ADDR_RX_MATCH always */ diff --git a/hw/intc/aspeed_intc.c b/hw/intc/aspeed_intc.c index d92305b9ca1..f14c340b602 100644 --- a/hw/intc/aspeed_intc.c +++ b/hw/intc/aspeed_intc.c @@ -11,7 +11,7 @@ #include "hw/core/irq.h" #include "qemu/log.h" #include "trace.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "qapi/error.h" =20 /* diff --git a/hw/intc/rx_icu.c b/hw/intc/rx_icu.c index 788afe6b1a0..87cdc6cbdef 100644 --- a/hw/intc/rx_icu.c +++ b/hw/intc/rx_icu.c @@ -27,7 +27,7 @@ #include "qemu/log.h" #include "qemu/error-report.h" #include "hw/core/irq.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/core/qdev-properties.h" #include "hw/intc/rx_icu.h" #include "migration/vmstate.h" diff --git a/hw/misc/armsse-cpu-pwrctrl.c b/hw/misc/armsse-cpu-pwrctrl.c index 66e9218f277..87770facfce 100644 --- a/hw/misc/armsse-cpu-pwrctrl.c +++ b/hw/misc/armsse-cpu-pwrctrl.c @@ -22,7 +22,7 @@ #include "qapi/error.h" #include "migration/vmstate.h" #include "hw/sysbus.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/misc/armsse-cpu-pwrctrl.h" =20 REG32(CPUPWRCFG, 0x0) diff --git a/hw/misc/armsse-cpuid.c b/hw/misc/armsse-cpuid.c index 3a52bb5381f..03833125514 100644 --- a/hw/misc/armsse-cpuid.c +++ b/hw/misc/armsse-cpuid.c @@ -24,7 +24,7 @@ #include "trace.h" #include "qapi/error.h" #include "hw/sysbus.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/misc/armsse-cpuid.h" #include "hw/core/qdev-properties.h" =20 diff --git a/hw/misc/armsse-mhu.c b/hw/misc/armsse-mhu.c index 2673c2de3ef..6fbe2cca37e 100644 --- a/hw/misc/armsse-mhu.c +++ b/hw/misc/armsse-mhu.c @@ -22,7 +22,7 @@ #include "qapi/error.h" #include "hw/sysbus.h" #include "migration/vmstate.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/core/irq.h" #include "hw/misc/armsse-mhu.h" =20 diff --git a/hw/misc/aspeed_i3c.c b/hw/misc/aspeed_i3c.c index 37a05b9ce27..ac6db214ee2 100644 --- a/hw/misc/aspeed_i3c.c +++ b/hw/misc/aspeed_i3c.c @@ -11,7 +11,7 @@ #include "qemu/log.h" #include "qemu/error-report.h" #include "hw/misc/aspeed_i3c.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "migration/vmstate.h" diff --git a/hw/misc/aspeed_peci.c b/hw/misc/aspeed_peci.c index cf902a8ab8c..0569ee57d1f 100644 --- a/hw/misc/aspeed_peci.c +++ b/hw/misc/aspeed_peci.c @@ -11,7 +11,7 @@ #include "qemu/log.h" #include "hw/core/irq.h" #include "hw/misc/aspeed_peci.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "trace.h" =20 #define ASPEED_PECI_CC_RSP_SUCCESS (0x40U) diff --git a/hw/misc/bcm2835_thermal.c b/hw/misc/bcm2835_thermal.c index 33bfc91c7aa..0dc1be15b4a 100644 --- a/hw/misc/bcm2835_thermal.c +++ b/hw/misc/bcm2835_thermal.c @@ -10,7 +10,7 @@ #include "qemu/log.h" #include "qapi/error.h" #include "hw/misc/bcm2835_thermal.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "migration/vmstate.h" =20 REG32(CTL, 0) diff --git a/hw/misc/imx6ul_ccm.c b/hw/misc/imx6ul_ccm.c index 7f3ae61710c..c4f6e372fe1 100644 --- a/hw/misc/imx6ul_ccm.c +++ b/hw/misc/imx6ul_ccm.c @@ -11,7 +11,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "migration/vmstate.h" #include "hw/misc/imx6ul_ccm.h" #include "qemu/log.h" diff --git a/hw/misc/imx7_src.c b/hw/misc/imx7_src.c index df0b0a69057..77f13bd020b 100644 --- a/hw/misc/imx7_src.c +++ b/hw/misc/imx7_src.c @@ -17,7 +17,7 @@ #include "qemu/module.h" #include "target/arm/arm-powerctl.h" #include "hw/core/cpu.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" =20 #include "trace.h" =20 diff --git a/hw/misc/iotkit-secctl.c b/hw/misc/iotkit-secctl.c index 64e94a76479..832b0217774 100644 --- a/hw/misc/iotkit-secctl.c +++ b/hw/misc/iotkit-secctl.c @@ -16,7 +16,7 @@ #include "trace.h" #include "hw/sysbus.h" #include "migration/vmstate.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/core/irq.h" #include "hw/misc/iotkit-secctl.h" #include "hw/arm/armsse-version.h" diff --git a/hw/misc/iotkit-sysctl.c b/hw/misc/iotkit-sysctl.c index a9c3568c216..d673ae326bc 100644 --- a/hw/misc/iotkit-sysctl.c +++ b/hw/misc/iotkit-sysctl.c @@ -25,7 +25,7 @@ #include "qapi/error.h" #include "hw/sysbus.h" #include "migration/vmstate.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/misc/iotkit-sysctl.h" #include "hw/core/qdev-properties.h" #include "hw/arm/armsse-version.h" diff --git a/hw/misc/iotkit-sysinfo.c b/hw/misc/iotkit-sysinfo.c index a53b1f51802..3b4d228e3ef 100644 --- a/hw/misc/iotkit-sysinfo.c +++ b/hw/misc/iotkit-sysinfo.c @@ -23,7 +23,7 @@ #include "trace.h" #include "qapi/error.h" #include "hw/sysbus.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/misc/iotkit-sysinfo.h" #include "hw/core/qdev-properties.h" #include "hw/arm/armsse-version.h" diff --git a/hw/misc/mps2-fpgaio.c b/hw/misc/mps2-fpgaio.c index f3d51fd2286..9cd5e9884c0 100644 --- a/hw/misc/mps2-fpgaio.c +++ b/hw/misc/mps2-fpgaio.c @@ -22,7 +22,7 @@ #include "trace.h" #include "hw/sysbus.h" #include "migration/vmstate.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/misc/mps2-fpgaio.h" #include "hw/misc/led.h" #include "hw/core/qdev-properties.h" diff --git a/hw/misc/mps2-scc.c b/hw/misc/mps2-scc.c index 56aa0135072..06d436cf58e 100644 --- a/hw/misc/mps2-scc.c +++ b/hw/misc/mps2-scc.c @@ -25,7 +25,7 @@ #include "hw/sysbus.h" #include "hw/core/irq.h" #include "migration/vmstate.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/misc/mps2-scc.h" #include "hw/misc/led.h" #include "hw/core/qdev-properties.h" diff --git a/hw/misc/npcm7xx_mft.c b/hw/misc/npcm7xx_mft.c index 21e74385c71..742166c4e82 100644 --- a/hw/misc/npcm7xx_mft.c +++ b/hw/misc/npcm7xx_mft.c @@ -20,7 +20,7 @@ #include "hw/core/qdev-properties.h" #include "hw/misc/npcm7xx_mft.h" #include "hw/misc/npcm7xx_pwm.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qapi/visitor.h" diff --git a/hw/misc/npcm7xx_pwm.c b/hw/misc/npcm7xx_pwm.c index 1b010e51ec0..3ee34820c8a 100644 --- a/hw/misc/npcm7xx_pwm.c +++ b/hw/misc/npcm7xx_pwm.c @@ -19,7 +19,7 @@ #include "hw/core/qdev-clock.h" #include "hw/core/qdev-properties.h" #include "hw/misc/npcm7xx_pwm.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "migration/vmstate.h" #include "qemu/bitops.h" #include "qemu/error-report.h" diff --git a/hw/misc/sifive_e_aon.c b/hw/misc/sifive_e_aon.c index 4d6e015ca38..0e82ae3758b 100644 --- a/hw/misc/sifive_e_aon.c +++ b/hw/misc/sifive_e_aon.c @@ -20,7 +20,7 @@ #include "qemu/timer.h" #include "qemu/log.h" #include "hw/core/irq.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/misc/sifive_e_aon.h" #include "qapi/visitor.h" #include "qapi/error.h" diff --git a/hw/misc/stm32l4x5_rcc.c b/hw/misc/stm32l4x5_rcc.c index cf7fa28cbe9..85095871340 100644 --- a/hw/misc/stm32l4x5_rcc.c +++ b/hw/misc/stm32l4x5_rcc.c @@ -28,7 +28,7 @@ #include "hw/core/qdev-clock.h" #include "hw/core/qdev-properties.h" #include "hw/core/qdev-properties-system.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "trace.h" =20 #define HSE_DEFAULT_FRQ 48000000ULL diff --git a/hw/misc/tz-mpc.c b/hw/misc/tz-mpc.c index fb5d232bff5..65517d390d3 100644 --- a/hw/misc/tz-mpc.c +++ b/hw/misc/tz-mpc.c @@ -16,7 +16,7 @@ #include "trace.h" #include "hw/sysbus.h" #include "migration/vmstate.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/core/irq.h" #include "hw/misc/tz-mpc.h" #include "hw/core/qdev-properties.h" diff --git a/hw/misc/tz-msc.c b/hw/misc/tz-msc.c index 3e33455d421..dd845193d64 100644 --- a/hw/misc/tz-msc.c +++ b/hw/misc/tz-msc.c @@ -16,7 +16,7 @@ #include "trace.h" #include "hw/sysbus.h" #include "migration/vmstate.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/core/irq.h" #include "hw/misc/tz-msc.h" #include "hw/core/qdev-properties.h" diff --git a/hw/misc/tz-ppc.c b/hw/misc/tz-ppc.c index a41c6011fba..7b812a034b2 100644 --- a/hw/misc/tz-ppc.c +++ b/hw/misc/tz-ppc.c @@ -16,7 +16,7 @@ #include "trace.h" #include "hw/sysbus.h" #include "migration/vmstate.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/core/irq.h" #include "hw/misc/tz-ppc.h" #include "hw/core/qdev-properties.h" diff --git a/hw/misc/xlnx-versal-cframe-reg.c b/hw/misc/xlnx-versal-cframe-= reg.c index 33a4ece26f6..a5a5e41f3e3 100644 --- a/hw/misc/xlnx-versal-cframe-reg.c +++ b/hw/misc/xlnx-versal-cframe-reg.c @@ -11,7 +11,7 @@ #include "qemu/osdep.h" #include "hw/sysbus.h" #include "hw/register.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "qemu/bitops.h" #include "qemu/log.h" #include "qemu/units.h" diff --git a/hw/misc/zynq_slcr.c b/hw/misc/zynq_slcr.c index d1900a2b948..d7d490b093d 100644 --- a/hw/misc/zynq_slcr.c +++ b/hw/misc/zynq_slcr.c @@ -21,7 +21,7 @@ #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/core/qdev-clock.h" #include "qom/object.h" #include "hw/core/qdev-properties.h" diff --git a/hw/net/cadence_gem.c b/hw/net/cadence_gem.c index fe9747fdb6f..b568fa3392d 100644 --- a/hw/net/cadence_gem.c +++ b/hw/net/cadence_gem.c @@ -28,7 +28,7 @@ #include "hw/core/irq.h" #include "hw/net/cadence_gem.h" #include "hw/core/qdev-properties.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qemu/log.h" diff --git a/hw/net/msf2-emac.c b/hw/net/msf2-emac.c index ac01d1ce472..077485c95d9 100644 --- a/hw/net/msf2-emac.c +++ b/hw/net/msf2-emac.c @@ -31,7 +31,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "qapi/error.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/net/msf2-emac.h" #include "hw/net/mii.h" #include "hw/core/irq.h" diff --git a/hw/net/npcm_gmac.c b/hw/net/npcm_gmac.c index 5e32cd3edf3..123fb92ca40 100644 --- a/hw/net/npcm_gmac.c +++ b/hw/net/npcm_gmac.c @@ -23,7 +23,7 @@ =20 #include "qemu/osdep.h" =20 -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/net/mii.h" #include "hw/net/npcm_gmac.h" #include "migration/vmstate.h" diff --git a/hw/net/npcm_pcs.c b/hw/net/npcm_pcs.c index 6aec105271a..ae078e14c38 100644 --- a/hw/net/npcm_pcs.c +++ b/hw/net/npcm_pcs.c @@ -24,7 +24,7 @@ #include "qemu/osdep.h" =20 #include "exec/hwaddr.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/net/npcm_pcs.h" #include "migration/vmstate.h" #include "qemu/log.h" diff --git a/hw/net/smc91c111.c b/hw/net/smc91c111.c index e3bf3b0e726..d6f57bc004a 100644 --- a/hw/net/smc91c111.c +++ b/hw/net/smc91c111.c @@ -13,7 +13,7 @@ #include "net/net.h" #include "hw/core/irq.h" #include "hw/net/smc91c111.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/core/qdev-properties.h" #include "qapi/error.h" #include "qemu/log.h" diff --git a/hw/pci-host/aspeed_pcie.c b/hw/pci-host/aspeed_pcie.c index 27f1078e3a5..83a1c7075c3 100644 --- a/hw/pci-host/aspeed_pcie.c +++ b/hw/pci-host/aspeed_pcie.c @@ -18,7 +18,7 @@ #include "qemu/log.h" #include "qapi/error.h" #include "hw/core/qdev-properties.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/core/irq.h" #include "hw/pci/pci_host.h" #include "hw/pci/pcie_port.h" diff --git a/hw/pci-host/bonito.c b/hw/pci-host/bonito.c index 90040045c1f..ff2f5c966eb 100644 --- a/hw/pci-host/bonito.c +++ b/hw/pci-host/bonito.c @@ -50,7 +50,7 @@ #include "migration/vmstate.h" #include "system/runstate.h" #include "hw/misc/unimp.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "qom/object.h" #include "trace.h" =20 diff --git a/hw/pci-host/gt64120.c b/hw/pci-host/gt64120.c index 2339f10a30a..d361c457edb 100644 --- a/hw/pci-host/gt64120.c +++ b/hw/pci-host/gt64120.c @@ -30,7 +30,7 @@ #include "qemu/log.h" #include "qemu/bswap.h" #include "hw/core/qdev-properties.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/pci/pci_device.h" #include "hw/pci/pci_host.h" #include "hw/misc/empty_slot.h" diff --git a/hw/rtc/ls7a_rtc.c b/hw/rtc/ls7a_rtc.c index 234a7e97698..54943f60b80 100644 --- a/hw/rtc/ls7a_rtc.c +++ b/hw/rtc/ls7a_rtc.c @@ -16,7 +16,7 @@ #include "migration/vmstate.h" #include "hw/misc/unimp.h" #include "system/rtc.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" =20 #define SYS_TOYTRIM 0x20 #define SYS_TOYWRITE0 0x24 diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 5aa34f1d5bd..5a1fda38a7b 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -36,7 +36,7 @@ #include "qemu/units.h" #include "qemu/cutils.h" #include "hw/core/irq.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "system/block-backend.h" #include "hw/sd/sd.h" #include "migration/vmstate.h" diff --git a/hw/sensor/tmp105.c b/hw/sensor/tmp105.c index 4e5c968bcc7..c5089d74f4b 100644 --- a/hw/sensor/tmp105.c +++ b/hw/sensor/tmp105.c @@ -26,7 +26,7 @@ #include "qapi/error.h" #include "qapi/visitor.h" #include "qemu/module.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "trace.h" =20 FIELD(CONFIG, SHUTDOWN_MODE, 0, 1) diff --git a/hw/ssi/ibex_spi_host.c b/hw/ssi/ibex_spi_host.c index 50cf08de9c9..1e574c3fcb8 100644 --- a/hw/ssi/ibex_spi_host.c +++ b/hw/ssi/ibex_spi_host.c @@ -26,7 +26,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "qemu/module.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/ssi/ibex_spi_host.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" diff --git a/hw/ssi/npcm_pspi.c b/hw/ssi/npcm_pspi.c index 1f11e1f8a46..2e05d5dacb2 100644 --- a/hw/ssi/npcm_pspi.c +++ b/hw/ssi/npcm_pspi.c @@ -17,7 +17,7 @@ #include "qemu/osdep.h" =20 #include "hw/core/irq.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/ssi/npcm_pspi.h" #include "migration/vmstate.h" #include "qapi/error.h" diff --git a/hw/timer/bcm2835_systmr.c b/hw/timer/bcm2835_systmr.c index 7929aaa882a..00bcfcd05c6 100644 --- a/hw/timer/bcm2835_systmr.c +++ b/hw/timer/bcm2835_systmr.c @@ -16,7 +16,7 @@ #include "qemu/log.h" #include "qemu/timer.h" #include "hw/timer/bcm2835_systmr.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "migration/vmstate.h" #include "trace.h" =20 diff --git a/hw/timer/cmsdk-apb-dualtimer.c b/hw/timer/cmsdk-apb-dualtimer.c index bcb6f8e43d7..39b1fa3a149 100644 --- a/hw/timer/cmsdk-apb-dualtimer.c +++ b/hw/timer/cmsdk-apb-dualtimer.c @@ -24,7 +24,7 @@ #include "hw/sysbus.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/core/qdev-clock.h" #include "hw/timer/cmsdk-apb-dualtimer.h" #include "migration/vmstate.h" diff --git a/hw/timer/cmsdk-apb-timer.c b/hw/timer/cmsdk-apb-timer.c index d80bf1f96d0..e8b6601097c 100644 --- a/hw/timer/cmsdk-apb-timer.c +++ b/hw/timer/cmsdk-apb-timer.c @@ -34,7 +34,7 @@ #include "trace.h" #include "hw/sysbus.h" #include "hw/core/irq.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/core/qdev-clock.h" #include "hw/timer/cmsdk-apb-timer.h" #include "migration/vmstate.h" diff --git a/hw/timer/renesas_cmt.c b/hw/timer/renesas_cmt.c index 35962e66c32..a5cc7ebd270 100644 --- a/hw/timer/renesas_cmt.c +++ b/hw/timer/renesas_cmt.c @@ -24,7 +24,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "hw/core/irq.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/core/qdev-properties.h" #include "hw/timer/renesas_cmt.h" #include "migration/vmstate.h" diff --git a/hw/timer/renesas_tmr.c b/hw/timer/renesas_tmr.c index 2e7d7d4543a..c917f70de22 100644 --- a/hw/timer/renesas_tmr.c +++ b/hw/timer/renesas_tmr.c @@ -24,7 +24,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "hw/core/irq.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/core/qdev-properties.h" #include "hw/timer/renesas_tmr.h" #include "migration/vmstate.h" diff --git a/hw/timer/sifive_pwm.c b/hw/timer/sifive_pwm.c index 8fda5445e74..780eaa50799 100644 --- a/hw/timer/sifive_pwm.c +++ b/hw/timer/sifive_pwm.c @@ -29,7 +29,7 @@ #include "hw/core/irq.h" #include "hw/timer/sifive_pwm.h" #include "hw/core/qdev-properties.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/timer/sse-counter.c b/hw/timer/sse-counter.c index de9d354483b..39d140347e5 100644 --- a/hw/timer/sse-counter.c +++ b/hw/timer/sse-counter.c @@ -33,7 +33,7 @@ #include "trace.h" #include "hw/timer/sse-counter.h" #include "hw/sysbus.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/core/clock.h" #include "hw/core/qdev-clock.h" #include "migration/vmstate.h" diff --git a/hw/timer/sse-timer.c b/hw/timer/sse-timer.c index 50d1de58055..62381e07e06 100644 --- a/hw/timer/sse-timer.c +++ b/hw/timer/sse-timer.c @@ -42,7 +42,7 @@ #include "hw/timer/sse-counter.h" #include "hw/sysbus.h" #include "hw/core/irq.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/core/clock.h" #include "hw/core/qdev-clock.h" #include "hw/core/qdev-properties.h" diff --git a/hw/watchdog/allwinner-wdt.c b/hw/watchdog/allwinner-wdt.c index 8fcd7766752..68b600689a5 100644 --- a/hw/watchdog/allwinner-wdt.c +++ b/hw/watchdog/allwinner-wdt.c @@ -26,7 +26,7 @@ #include "qemu/module.h" #include "trace.h" #include "hw/sysbus.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/watchdog/allwinner-wdt.h" #include "system/watchdog.h" #include "migration/vmstate.h" diff --git a/hw/watchdog/cmsdk-apb-watchdog.c b/hw/watchdog/cmsdk-apb-watch= dog.c index 90d14e342b0..ceae792580e 100644 --- a/hw/watchdog/cmsdk-apb-watchdog.c +++ b/hw/watchdog/cmsdk-apb-watchdog.c @@ -29,7 +29,7 @@ #include "hw/sysbus.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/core/qdev-clock.h" #include "hw/watchdog/cmsdk-apb-watchdog.h" #include "migration/vmstate.h" diff --git a/target/tricore/helper.c b/target/tricore/helper.c index 7574111c87d..7ee8c7fd699 100644 --- a/target/tricore/helper.c +++ b/target/tricore/helper.c @@ -17,7 +17,7 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "cpu.h" #include "exec/cputlb.h" #include "accel/tcg/cpu-mmu-index.h" diff --git a/tests/qtest/sdhci-test.c b/tests/qtest/sdhci-test.c index 6275e7626c2..7b32711c8f8 100644 --- a/tests/qtest/sdhci-test.c +++ b/tests/qtest/sdhci-test.c @@ -9,7 +9,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "libqtest.h" #include "qemu/module.h" #include "libqos/pci-pc.h" diff --git a/tests/qtest/sifive-e-aon-watchdog-test.c b/tests/qtest/sifive-= e-aon-watchdog-test.c index 1f313d16ad8..277f1b8360b 100644 --- a/tests/qtest/sifive-e-aon-watchdog-test.c +++ b/tests/qtest/sifive-e-aon-watchdog-test.c @@ -20,7 +20,7 @@ #include "qemu/timer.h" #include "qemu/bitops.h" #include "libqtest.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "hw/misc/sifive_e_aon.h" =20 FIELD(AON_WDT_WDOGCFG, SCALE, 0, 4) diff --git a/tests/qtest/stm32l4x5_rcc-test.c b/tests/qtest/stm32l4x5_rcc-t= est.c index d927c655d13..4ab0a0ab29f 100644 --- a/tests/qtest/stm32l4x5_rcc-test.c +++ b/tests/qtest/stm32l4x5_rcc-test.c @@ -11,7 +11,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "libqtest-single.h" #include "hw/misc/stm32l4x5_rcc_internals.h" =20 diff --git a/tests/qtest/stm32l4x5_usart-test.c b/tests/qtest/stm32l4x5_usa= rt-test.c index 98a7472307f..a72c5a685d1 100644 --- a/tests/qtest/stm32l4x5_usart-test.c +++ b/tests/qtest/stm32l4x5_usart-test.c @@ -11,7 +11,7 @@ #include "qemu/osdep.h" #include "libqtest.h" #include "hw/misc/stm32l4x5_rcc_internals.h" -#include "hw/registerfields.h" +#include "hw/core/registerfields.h" #include "stm32l4x5.h" =20 #define RCC_BASE_ADDR 0x40021000 --=20 2.52.0 From nobody Wed Jan 7 09:26:48 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=1766827128; cv=none; d=zohomail.com; s=zohoarc; b=BiAt6LNkJclwZwXLmDvfO54YQyVJy86JBErLV6EN6Sd6hVrdmVDKpdlYr+fdriiffXagDEFZyEKRho3Cn/iSSEsno9iXGSs8dVlPUy5NEMiawR5GkHeFr7H7V0cguRN4HArxCd5utLw3YhUq7IUkFi5hntFhqai1XkdXKw3iOEo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827128; 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=EAPNHDeDnVTBZPtsdYZ4vNsLhPqjrTIxBmnpOYzbcEI=; b=jsVaBUIFtWub3bEhiepnO3RrxTDSJiaiNN81gOiqv0WQ+HoebZfC0iKDc3PZo8y0h0OaSAIeW3+XJBRn9sJ5pbID2WJA7oNiillpvdRdE8J96EXWjAndJ+5MgZSB6DHWHIugBxbVcfsSKRoZ/Dlmp/fY8/zvQmEOHKsNdj5W3y0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827128209393.03952087387427; Sat, 27 Dec 2025 01:18:48 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQK-0002Zx-FG; Sat, 27 Dec 2025 04:17:20 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQG-0002Y7-Fn for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:16 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQC-0002Pp-1g for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:16 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-680-GEfQPRwEN_2Vd5mvd3U7JA-1; Sat, 27 Dec 2025 04:17:09 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-47d3c4468d8so15091925e9.2 for ; Sat, 27 Dec 2025 01:17:09 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be3a4651bsm191146895e9.7.2025.12.27.01.17.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827031; 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=EAPNHDeDnVTBZPtsdYZ4vNsLhPqjrTIxBmnpOYzbcEI=; b=I5rYKOTuiO8jglsQCNkb4z4oHtdrOPAxnoAvFX+owYOCvpaBVWepc2Ss2mMsvennkKSD13 l6m2Ujl4xyPlivO6l8fqFahf1zG2sJEVacd7+TZWzeezR3HNpJgbMQn6+izLXk1oTqV3/y y7Csjwa2LkjS74OVvqkeuuut7vN0JOA= X-MC-Unique: GEfQPRwEN_2Vd5mvd3U7JA-1 X-Mimecast-MFC-AGG-ID: GEfQPRwEN_2Vd5mvd3U7JA_1766827028 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827027; x=1767431827; 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; bh=EAPNHDeDnVTBZPtsdYZ4vNsLhPqjrTIxBmnpOYzbcEI=; b=BNKHrVT58UoRXgRFLBYtiJBJHJ6jTC7RK6ySu630jLDfHH2fFaik75jM6Ceg/17838 24RdG8p24+tZBL5vykbJOzM5F/26eVVLCYdOEKFlAJlTO2srI2ju65PtnMq4ms6lHUzX 4S2EW3ZqKtxw8r/6Q3jmdS/u7iyk6ShjlABDSu1+ammLx0sNDEgNl6d8/m+Oh0l+Jbrd GH9BHRePM0gO2qBwDPsOb/myCzp5dzYTITj4jFRt2cfOL+KV3beJr4QnNqGpFpT8qUmx 4TpK9Sv6hydQ7ARws7LudOZV/hvYVdicgvhaJnu3VkkJQSO7QO7gHWpETPh0P4Ie0Uiq UWJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827027; x=1767431827; 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; bh=EAPNHDeDnVTBZPtsdYZ4vNsLhPqjrTIxBmnpOYzbcEI=; b=Vwuau8B6oQnuEiO3c92cCiK5JlNNSbdaLM9DVKCB1mOAhXDvdhOs6V6w4e6UdPpdF6 DiWli88e6oFvNzLxsVVlETfkg6A7D4HBKZv8UQKp/vg4aQXh+a3pkIULma6XsQ05qrY4 F6+x25ckPolmDmZrV+wdMqVGgx1W7rm9J0uZJ7jZDmSZGcO++cSumfbf30X8pXwaWvUA u1+1OMqzsMVATYcG/OxMIjHiigHkFU1DoZEDkVjvAfdDzA0awlChxtpop1X4trgf4n00 ap74CODYf8YtsYMXq2fbKElkM1/X0vEEt0bNZevu7UbJvTEl4COpQ7vrdEtK8aJ6tMju 0O/w== X-Gm-Message-State: AOJu0YzwPWBkslmAR3MpvvegbYKXWbpyAoUegEpX6D8XyH/8nPMe5o2G B1ppG6Qk9fjrPFycDNpEMKXNxv7hevL0mLCmwYwn1lVhCMqyKNmg2elzl1Bx6LWBkvfd/UOmLvc r1Fn9d+vkzHh0Z93IM4B8xWQEDbVfHIy54CLE8UIdrvF8dMvYTY5tcPZTGiYvCeUZVSmj39gS9m CO5zjFw/oOGSnvV8UkBa4+8Z2Jmtbo9S1LXC5+q3oe X-Gm-Gg: AY/fxX7266mIx6y2umj3DXp0wHrxWATJGeSnO1UDQU+RKPZ9fjIYaQ1sf4h1t9Ot4Ay 4B+jY99TaeXWotm+71sh/zEpYjQPYJbsszGhdnoVqW96u3CVdYtOCRLlGfOwsyWrkGuvxzIOhYr IYkXjpIEXez1pGZseByoMoVvRBZAXByZ1qe9D+CGCCYtqa10EII7Mb/ldxyIuzMtqjkkV7Gv8G5 9KKKHkmqaTKvuRKxR6rtlMN/h3rbW3cktifV3DoaPSYPX6k70Gyu8WVTEVLBcCEow3u3ruPjmTv Yd7nZFsj67J1lGkrCPDvFUQixypBN15Jrc9KWzY+BF1dzGSPIvF0T39quBXM+GbfnTAmS/lZDsz gPRZ55XLXZHBSvu2b8BveXi3RJRTR/6TJ6/POyyzjVJf9IaHmDVp6aLrMh3WhA2Alph5P6zOAqF /kmYhsNa7WPDFQEYM= X-Received: by 2002:a05:600c:6388:b0:477:7b16:5f88 with SMTP id 5b1f17b1804b1-47d1953345cmr252589575e9.6.1766827026394; Sat, 27 Dec 2025 01:17:06 -0800 (PST) X-Google-Smtp-Source: AGHT+IFff8IBSuSqPPNoQrZWDyEaTRSd77kDMKbRx8xzM/I0jdqdVgK38QqqXn0DQFJ/zw9cFFIfvg== X-Received: by 2002:a05:600c:6388:b0:477:7b16:5f88 with SMTP id 5b1f17b1804b1-47d1953345cmr252589295e9.6.1766827025481; Sat, 27 Dec 2025 01:17:05 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 023/153] include: move hw/register.h to hw/core/ Date: Sat, 27 Dec 2025 10:14:10 +0100 Message-ID: <20251227091622.20725-24-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827129560158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- MAINTAINERS | 2 +- include/hw/{ =3D> core}/register.h | 0 include/hw/cxl/cxl_component.h | 2 +- include/hw/cxl/cxl_device.h | 2 +- include/hw/dma/xlnx-zdma.h | 2 +- include/hw/dma/xlnx-zynq-devcfg.h | 2 +- include/hw/dma/xlnx_csu_dma.h | 2 +- include/hw/intc/xlnx-pmu-iomod-intc.h | 2 +- include/hw/intc/xlnx-zynqmp-ipi.h | 2 +- include/hw/misc/allwinner-a10-dramc.h | 2 +- include/hw/misc/xlnx-versal-cframe-reg.h | 2 +- include/hw/misc/xlnx-versal-cfu.h | 2 +- include/hw/misc/xlnx-versal-crl.h | 2 +- include/hw/misc/xlnx-versal-pmc-iou-slcr.h | 2 +- include/hw/misc/xlnx-versal-trng.h | 2 +- include/hw/misc/xlnx-versal-xramc.h | 2 +- include/hw/misc/xlnx-zynqmp-apu-ctrl.h | 2 +- include/hw/misc/xlnx-zynqmp-crf.h | 2 +- include/hw/net/xlnx-versal-canfd.h | 2 +- include/hw/net/xlnx-zynqmp-can.h | 2 +- include/hw/nvram/xlnx-bbram.h | 2 +- include/hw/nvram/xlnx-versal-efuse.h | 2 +- include/hw/nvram/xlnx-zynqmp-efuse.h | 2 +- include/hw/pci/pcie_doe.h | 2 +- include/hw/rtc/xlnx-zynqmp-rtc.h | 2 +- include/hw/ssi/xlnx-versal-ospi.h | 2 +- include/hw/usb/hcd-dwc3.h | 2 +- include/hw/usb/xlnx-usb-subsystem.h | 2 +- include/hw/usb/xlnx-versal-usb2-ctrl-regs.h | 2 +- hw/core/register.c | 2 +- hw/dma/xlnx_csu_dma.c | 2 +- hw/intc/xlnx-pmu-iomod-intc.c | 2 +- hw/intc/xlnx-zynqmp-ipi.c | 2 +- hw/misc/xlnx-versal-cframe-reg.c | 2 +- hw/misc/xlnx-versal-cfu.c | 2 +- hw/misc/xlnx-versal-crl.c | 2 +- hw/misc/xlnx-versal-pmc-iou-slcr.c | 2 +- hw/misc/xlnx-versal-xramc.c | 2 +- hw/misc/xlnx-zynqmp-apu-ctrl.c | 2 +- hw/misc/xlnx-zynqmp-crf.c | 2 +- hw/net/can/xlnx-versal-canfd.c | 2 +- hw/net/can/xlnx-zynqmp-can.c | 2 +- hw/rtc/ls7a_rtc.c | 2 +- hw/rtc/xlnx-zynqmp-rtc.c | 2 +- hw/ssi/xilinx_spips.c | 2 +- hw/usb/hcd-dwc3.c | 2 +- hw/usb/xlnx-usb-subsystem.c | 2 +- hw/usb/xlnx-versal-usb2-ctrl-regs.c | 2 +- 48 files changed, 47 insertions(+), 47 deletions(-) rename include/hw/{ =3D> core}/register.h (100%) diff --git a/MAINTAINERS b/MAINTAINERS index e0904cc0cc7..b38215954a2 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3559,7 +3559,7 @@ Register API M: Alistair Francis S: Maintained F: hw/core/register.c -F: include/hw/register.h +F: include/hw/core/register.h F: include/hw/core/registerfields.h =20 Rust diff --git a/include/hw/register.h b/include/hw/core/register.h similarity index 100% rename from include/hw/register.h rename to include/hw/core/register.h diff --git a/include/hw/cxl/cxl_component.h b/include/hw/cxl/cxl_component.h index 945ee6ffd04..b0f2aa79143 100644 --- a/include/hw/cxl/cxl_component.h +++ b/include/hw/cxl/cxl_component.h @@ -17,7 +17,7 @@ =20 #include "qemu/range.h" #include "hw/cxl/cxl_cdat.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "qapi/error.h" =20 enum reg_type { diff --git a/include/hw/cxl/cxl_device.h b/include/hw/cxl/cxl_device.h index 89411c80936..165355baf9d 100644 --- a/include/hw/cxl/cxl_device.h +++ b/include/hw/cxl/cxl_device.h @@ -12,7 +12,7 @@ =20 #include "hw/cxl/cxl_component.h" #include "hw/pci/pci_device.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "hw/cxl/cxl_events.h" =20 /* diff --git a/include/hw/dma/xlnx-zdma.h b/include/hw/dma/xlnx-zdma.h index 9c57c499102..2d2d4aeefab 100644 --- a/include/hw/dma/xlnx-zdma.h +++ b/include/hw/dma/xlnx-zdma.h @@ -30,7 +30,7 @@ #define XLNX_ZDMA_H =20 #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "system/dma.h" #include "qom/object.h" =20 diff --git a/include/hw/dma/xlnx-zynq-devcfg.h b/include/hw/dma/xlnx-zynq-d= evcfg.h index e4cf085d703..8d10553c22a 100644 --- a/include/hw/dma/xlnx-zynq-devcfg.h +++ b/include/hw/dma/xlnx-zynq-devcfg.h @@ -27,7 +27,7 @@ #ifndef XLNX_ZYNQ_DEVCFG_H #define XLNX_ZYNQ_DEVCFG_H =20 -#include "hw/register.h" +#include "hw/core/register.h" #include "hw/sysbus.h" #include "qom/object.h" =20 diff --git a/include/hw/dma/xlnx_csu_dma.h b/include/hw/dma/xlnx_csu_dma.h index 85b6b64e0e3..63af4586dd9 100644 --- a/include/hw/dma/xlnx_csu_dma.h +++ b/include/hw/dma/xlnx_csu_dma.h @@ -22,7 +22,7 @@ #define XLNX_CSU_DMA_H =20 #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "hw/core/ptimer.h" #include "hw/stream.h" =20 diff --git a/include/hw/intc/xlnx-pmu-iomod-intc.h b/include/hw/intc/xlnx-p= mu-iomod-intc.h index ccc8bd272a2..e36b5e17629 100644 --- a/include/hw/intc/xlnx-pmu-iomod-intc.h +++ b/include/hw/intc/xlnx-pmu-iomod-intc.h @@ -26,7 +26,7 @@ #define HW_INTC_XLNX_PMU_IOMOD_INTC_H =20 #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "qom/object.h" =20 #define TYPE_XLNX_PMU_IO_INTC "xlnx.pmu_io_intc" diff --git a/include/hw/intc/xlnx-zynqmp-ipi.h b/include/hw/intc/xlnx-zynqm= p-ipi.h index 33eff1d4f68..53fc89084af 100644 --- a/include/hw/intc/xlnx-zynqmp-ipi.h +++ b/include/hw/intc/xlnx-zynqmp-ipi.h @@ -26,7 +26,7 @@ #define XLNX_ZYNQMP_IPI_H =20 #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "qom/object.h" =20 #define TYPE_XLNX_ZYNQMP_IPI "xlnx.zynqmp_ipi" diff --git a/include/hw/misc/allwinner-a10-dramc.h b/include/hw/misc/allwin= ner-a10-dramc.h index b61fbecbe74..a1ae621e217 100644 --- a/include/hw/misc/allwinner-a10-dramc.h +++ b/include/hw/misc/allwinner-a10-dramc.h @@ -25,7 +25,7 @@ =20 #include "qom/object.h" #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" =20 /** * @name Constants diff --git a/include/hw/misc/xlnx-versal-cframe-reg.h b/include/hw/misc/xln= x-versal-cframe-reg.h index 83f6a077446..fe8788a7453 100644 --- a/include/hw/misc/xlnx-versal-cframe-reg.h +++ b/include/hw/misc/xlnx-versal-cframe-reg.h @@ -18,7 +18,7 @@ #define HW_MISC_XLNX_VERSAL_CFRAME_REG_H =20 #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "hw/misc/xlnx-cfi-if.h" #include "hw/misc/xlnx-versal-cfu.h" #include "qemu/fifo32.h" diff --git a/include/hw/misc/xlnx-versal-cfu.h b/include/hw/misc/xlnx-versa= l-cfu.h index 3de3ee49231..3d7ca506de1 100644 --- a/include/hw/misc/xlnx-versal-cfu.h +++ b/include/hw/misc/xlnx-versal-cfu.h @@ -18,7 +18,7 @@ #define HW_MISC_XLNX_VERSAL_CFU_APB_H =20 #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "hw/misc/xlnx-cfi-if.h" #include "qemu/fifo32.h" =20 diff --git a/include/hw/misc/xlnx-versal-crl.h b/include/hw/misc/xlnx-versa= l-crl.h index 49ed500acde..ace3d198bde 100644 --- a/include/hw/misc/xlnx-versal-crl.h +++ b/include/hw/misc/xlnx-versal-crl.h @@ -11,7 +11,7 @@ #define HW_MISC_XLNX_VERSAL_CRL_H =20 #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "target/arm/cpu-qom.h" #include "hw/arm/xlnx-versal-version.h" =20 diff --git a/include/hw/misc/xlnx-versal-pmc-iou-slcr.h b/include/hw/misc/x= lnx-versal-pmc-iou-slcr.h index 0c4a4fd66d9..d8f45bd94b2 100644 --- a/include/hw/misc/xlnx-versal-pmc-iou-slcr.h +++ b/include/hw/misc/xlnx-versal-pmc-iou-slcr.h @@ -55,7 +55,7 @@ #define XLNX_VERSAL_PMC_IOU_SLCR_H =20 #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" =20 #define TYPE_XILINX_VERSAL_PMC_IOU_SLCR "xlnx.versal-pmc-iou-slcr" =20 diff --git a/include/hw/misc/xlnx-versal-trng.h b/include/hw/misc/xlnx-vers= al-trng.h index 4e516216dbe..8de29104048 100644 --- a/include/hw/misc/xlnx-versal-trng.h +++ b/include/hw/misc/xlnx-versal-trng.h @@ -28,7 +28,7 @@ =20 #include "hw/core/irq.h" #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" =20 #define TYPE_XLNX_VERSAL_TRNG "xlnx.versal-trng" OBJECT_DECLARE_SIMPLE_TYPE(XlnxVersalTRng, XLNX_VERSAL_TRNG); diff --git a/include/hw/misc/xlnx-versal-xramc.h b/include/hw/misc/xlnx-ver= sal-xramc.h index 35e4e8b91dd..e79941d8865 100644 --- a/include/hw/misc/xlnx-versal-xramc.h +++ b/include/hw/misc/xlnx-versal-xramc.h @@ -10,7 +10,7 @@ #define XLNX_VERSAL_XRAMC_H =20 #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" =20 #define TYPE_XLNX_XRAM_CTRL "xlnx.versal-xramc" =20 diff --git a/include/hw/misc/xlnx-zynqmp-apu-ctrl.h b/include/hw/misc/xlnx-= zynqmp-apu-ctrl.h index fbfe34aa7e5..c0315720053 100644 --- a/include/hw/misc/xlnx-zynqmp-apu-ctrl.h +++ b/include/hw/misc/xlnx-zynqmp-apu-ctrl.h @@ -12,7 +12,7 @@ #define HW_MISC_XLNX_ZYNQMP_APU_CTRL_H =20 #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "target/arm/cpu-qom.h" =20 #define TYPE_XLNX_ZYNQMP_APU_CTRL "xlnx.apu-ctrl" diff --git a/include/hw/misc/xlnx-zynqmp-crf.h b/include/hw/misc/xlnx-zynqm= p-crf.h index c746ae10397..df83034a988 100644 --- a/include/hw/misc/xlnx-zynqmp-crf.h +++ b/include/hw/misc/xlnx-zynqmp-crf.h @@ -9,7 +9,7 @@ #define HW_MISC_XLNX_ZYNQMP_CRF_H =20 #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" =20 #define TYPE_XLNX_ZYNQMP_CRF "xlnx.zynqmp_crf" OBJECT_DECLARE_SIMPLE_TYPE(XlnxZynqMPCRF, XLNX_ZYNQMP_CRF) diff --git a/include/hw/net/xlnx-versal-canfd.h b/include/hw/net/xlnx-versa= l-canfd.h index 45cf0001c6b..7cadf3123b5 100644 --- a/include/hw/net/xlnx-versal-canfd.h +++ b/include/hw/net/xlnx-versal-canfd.h @@ -28,7 +28,7 @@ #ifndef HW_CANFD_XILINX_H #define HW_CANFD_XILINX_H =20 -#include "hw/register.h" +#include "hw/core/register.h" #include "hw/core/ptimer.h" #include "net/can_emu.h" #include "hw/core/qdev-clock.h" diff --git a/include/hw/net/xlnx-zynqmp-can.h b/include/hw/net/xlnx-zynqmp-= can.h index d272f40ea80..d23c1523caf 100644 --- a/include/hw/net/xlnx-zynqmp-can.h +++ b/include/hw/net/xlnx-zynqmp-can.h @@ -31,7 +31,7 @@ #define XLNX_ZYNQMP_CAN_H =20 #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "net/can_emu.h" #include "net/can_host.h" #include "qemu/fifo32.h" diff --git a/include/hw/nvram/xlnx-bbram.h b/include/hw/nvram/xlnx-bbram.h index 63558dbc329..27423035d40 100644 --- a/include/hw/nvram/xlnx-bbram.h +++ b/include/hw/nvram/xlnx-bbram.h @@ -30,7 +30,7 @@ #include "hw/core/qdev.h" #include "hw/core/irq.h" #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" =20 #define RMAX_XLNX_BBRAM ((0x4c / 4) + 1) =20 diff --git a/include/hw/nvram/xlnx-versal-efuse.h b/include/hw/nvram/xlnx-v= ersal-efuse.h index 37d09da4809..07f1000a851 100644 --- a/include/hw/nvram/xlnx-versal-efuse.h +++ b/include/hw/nvram/xlnx-versal-efuse.h @@ -24,7 +24,7 @@ =20 #include "hw/core/irq.h" #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "hw/nvram/xlnx-efuse.h" =20 #define XLNX_VERSAL_EFUSE_CTRL_R_MAX ((0x100 / 4) + 1) diff --git a/include/hw/nvram/xlnx-zynqmp-efuse.h b/include/hw/nvram/xlnx-z= ynqmp-efuse.h index 6eb3fea8fa2..d4886943860 100644 --- a/include/hw/nvram/xlnx-zynqmp-efuse.h +++ b/include/hw/nvram/xlnx-zynqmp-efuse.h @@ -24,7 +24,7 @@ =20 #include "hw/core/irq.h" #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "hw/nvram/xlnx-efuse.h" =20 #define XLNX_ZYNQMP_EFUSE_R_MAX ((0x10fc / 4) + 1) diff --git a/include/hw/pci/pcie_doe.h b/include/hw/pci/pcie_doe.h index 9e1275db8ae..4bd49bb5ae6 100644 --- a/include/hw/pci/pcie_doe.h +++ b/include/hw/pci/pcie_doe.h @@ -11,7 +11,7 @@ #define PCIE_DOE_H =20 #include "qemu/range.h" -#include "hw/register.h" +#include "hw/core/register.h" =20 /* * Reference: diff --git a/include/hw/rtc/xlnx-zynqmp-rtc.h b/include/hw/rtc/xlnx-zynqmp-= rtc.h index f0c6a2d78a8..a542b87cb89 100644 --- a/include/hw/rtc/xlnx-zynqmp-rtc.h +++ b/include/hw/rtc/xlnx-zynqmp-rtc.h @@ -27,7 +27,7 @@ #ifndef HW_RTC_XLNX_ZYNQMP_RTC_H #define HW_RTC_XLNX_ZYNQMP_RTC_H =20 -#include "hw/register.h" +#include "hw/core/register.h" #include "hw/sysbus.h" #include "qom/object.h" =20 diff --git a/include/hw/ssi/xlnx-versal-ospi.h b/include/hw/ssi/xlnx-versal= -ospi.h index 4ac975aa2fd..e8709208caa 100644 --- a/include/hw/ssi/xlnx-versal-ospi.h +++ b/include/hw/ssi/xlnx-versal-ospi.h @@ -52,7 +52,7 @@ #ifndef XLNX_VERSAL_OSPI_H #define XLNX_VERSAL_OSPI_H =20 -#include "hw/register.h" +#include "hw/core/register.h" #include "hw/ssi/ssi.h" #include "qemu/fifo8.h" #include "hw/dma/xlnx_csu_dma.h" diff --git a/include/hw/usb/hcd-dwc3.h b/include/hw/usb/hcd-dwc3.h index dbdf12b21d7..e656532d6c0 100644 --- a/include/hw/usb/hcd-dwc3.h +++ b/include/hw/usb/hcd-dwc3.h @@ -26,7 +26,7 @@ #ifndef HCD_DWC3_H #define HCD_DWC3_H =20 -#include "hw/register.h" +#include "hw/core/register.h" #include "hw/usb/hcd-xhci.h" #include "hw/usb/hcd-xhci-sysbus.h" =20 diff --git a/include/hw/usb/xlnx-usb-subsystem.h b/include/hw/usb/xlnx-usb-= subsystem.h index 40f9e97e093..b22e5d065be 100644 --- a/include/hw/usb/xlnx-usb-subsystem.h +++ b/include/hw/usb/xlnx-usb-subsystem.h @@ -25,7 +25,7 @@ #ifndef XLNX_USB_SUBSYSTEM_H #define XLNX_USB_SUBSYSTEM_H =20 -#include "hw/register.h" +#include "hw/core/register.h" #include "hw/sysbus.h" #include "hw/usb/xlnx-versal-usb2-ctrl-regs.h" #include "hw/usb/hcd-dwc3.h" diff --git a/include/hw/usb/xlnx-versal-usb2-ctrl-regs.h b/include/hw/usb/x= lnx-versal-usb2-ctrl-regs.h index 6a502006b07..c1470da4758 100644 --- a/include/hw/usb/xlnx-versal-usb2-ctrl-regs.h +++ b/include/hw/usb/xlnx-versal-usb2-ctrl-regs.h @@ -26,7 +26,7 @@ #ifndef XLNX_VERSAL_USB2_CTRL_REGS_H #define XLNX_VERSAL_USB2_CTRL_REGS_H =20 -#include "hw/register.h" +#include "hw/core/register.h" #include "hw/sysbus.h" =20 #define TYPE_XILINX_VERSAL_USB2_CTRL_REGS "xlnx.versal-usb2-ctrl-regs" diff --git a/hw/core/register.c b/hw/core/register.c index 81316d48597..c3f3c936e70 100644 --- a/hw/core/register.c +++ b/hw/core/register.c @@ -16,7 +16,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "qemu/log.h" #include "qemu/module.h" =20 diff --git a/hw/dma/xlnx_csu_dma.c b/hw/dma/xlnx_csu_dma.c index 650401614ed..ffe258cf31a 100644 --- a/hw/dma/xlnx_csu_dma.c +++ b/hw/dma/xlnx_csu_dma.c @@ -28,7 +28,7 @@ #include "system/dma.h" #include "hw/core/ptimer.h" #include "hw/stream.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "hw/dma/xlnx_csu_dma.h" =20 /* diff --git a/hw/intc/xlnx-pmu-iomod-intc.c b/hw/intc/xlnx-pmu-iomod-intc.c index f3509efa0ab..b8bafe2f3f3 100644 --- a/hw/intc/xlnx-pmu-iomod-intc.c +++ b/hw/intc/xlnx-pmu-iomod-intc.c @@ -27,7 +27,7 @@ #include "qemu/osdep.h" #include "hw/sysbus.h" #include "migration/vmstate.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "qemu/bitops.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/intc/xlnx-zynqmp-ipi.c b/hw/intc/xlnx-zynqmp-ipi.c index 99566bc2e20..e69ea74ff74 100644 --- a/hw/intc/xlnx-zynqmp-ipi.c +++ b/hw/intc/xlnx-zynqmp-ipi.c @@ -28,7 +28,7 @@ #include "qemu/osdep.h" #include "hw/sysbus.h" #include "migration/vmstate.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "qemu/bitops.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/misc/xlnx-versal-cframe-reg.c b/hw/misc/xlnx-versal-cframe-= reg.c index a5a5e41f3e3..efacbe83abb 100644 --- a/hw/misc/xlnx-versal-cframe-reg.c +++ b/hw/misc/xlnx-versal-cframe-reg.c @@ -10,7 +10,7 @@ =20 #include "qemu/osdep.h" #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "hw/core/registerfields.h" #include "qemu/bitops.h" #include "qemu/log.h" diff --git a/hw/misc/xlnx-versal-cfu.c b/hw/misc/xlnx-versal-cfu.c index 13cd597da49..bdce0ce7475 100644 --- a/hw/misc/xlnx-versal-cfu.c +++ b/hw/misc/xlnx-versal-cfu.c @@ -12,7 +12,7 @@ =20 #include "qemu/osdep.h" #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "hw/core/irq.h" #include "qemu/bitops.h" #include "qemu/log.h" diff --git a/hw/misc/xlnx-versal-crl.c b/hw/misc/xlnx-versal-crl.c index b0baabc1adf..072d6d98591 100644 --- a/hw/misc/xlnx-versal-crl.c +++ b/hw/misc/xlnx-versal-crl.c @@ -12,7 +12,7 @@ #include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "hw/core/irq.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "hw/resettable.h" =20 #include "target/arm/arm-powerctl.h" diff --git a/hw/misc/xlnx-versal-pmc-iou-slcr.c b/hw/misc/xlnx-versal-pmc-i= ou-slcr.c index 84d474c38fc..0246167a5e6 100644 --- a/hw/misc/xlnx-versal-pmc-iou-slcr.c +++ b/hw/misc/xlnx-versal-pmc-iou-slcr.c @@ -25,7 +25,7 @@ =20 #include "qemu/osdep.h" #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "hw/core/irq.h" #include "qemu/bitops.h" #include "qemu/log.h" diff --git a/hw/misc/xlnx-versal-xramc.c b/hw/misc/xlnx-versal-xramc.c index 6a86f6b5d48..f4f02c7680b 100644 --- a/hw/misc/xlnx-versal-xramc.c +++ b/hw/misc/xlnx-versal-xramc.c @@ -11,7 +11,7 @@ #include "qapi/error.h" #include "migration/vmstate.h" #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "hw/core/qdev-properties.h" #include "hw/core/irq.h" #include "hw/misc/xlnx-versal-xramc.h" diff --git a/hw/misc/xlnx-zynqmp-apu-ctrl.c b/hw/misc/xlnx-zynqmp-apu-ctrl.c index 93f0bedc48e..957043f01b9 100644 --- a/hw/misc/xlnx-zynqmp-apu-ctrl.c +++ b/hw/misc/xlnx-zynqmp-apu-ctrl.c @@ -15,7 +15,7 @@ #include "hw/core/qdev-properties.h" #include "hw/sysbus.h" #include "hw/core/irq.h" -#include "hw/register.h" +#include "hw/core/register.h" =20 #include "qemu/bitops.h" =20 diff --git a/hw/misc/xlnx-zynqmp-crf.c b/hw/misc/xlnx-zynqmp-crf.c index 841bce2231c..a2ebf6ce5d7 100644 --- a/hw/misc/xlnx-zynqmp-crf.c +++ b/hw/misc/xlnx-zynqmp-crf.c @@ -8,7 +8,7 @@ =20 #include "qemu/osdep.h" #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "qemu/bitops.h" #include "qemu/log.h" #include "migration/vmstate.h" diff --git a/hw/net/can/xlnx-versal-canfd.c b/hw/net/can/xlnx-versal-canfd.c index 94d9178a540..3ceb1a8b912 100644 --- a/hw/net/can/xlnx-versal-canfd.c +++ b/hw/net/can/xlnx-versal-canfd.c @@ -33,7 +33,7 @@ #include "qemu/osdep.h" #include "hw/sysbus.h" #include "hw/core/irq.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "qapi/error.h" #include "qemu/log.h" #include "hw/core/qdev-properties.h" diff --git a/hw/net/can/xlnx-zynqmp-can.c b/hw/net/can/xlnx-zynqmp-can.c index 533ac854a2f..6c583cab8f5 100644 --- a/hw/net/can/xlnx-zynqmp-can.c +++ b/hw/net/can/xlnx-zynqmp-can.c @@ -31,7 +31,7 @@ =20 #include "qemu/osdep.h" #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "hw/core/irq.h" #include "qapi/error.h" #include "qemu/bitops.h" diff --git a/hw/rtc/ls7a_rtc.c b/hw/rtc/ls7a_rtc.c index 54943f60b80..b0c6588e098 100644 --- a/hw/rtc/ls7a_rtc.c +++ b/hw/rtc/ls7a_rtc.c @@ -8,7 +8,7 @@ #include "qemu/osdep.h" #include "hw/sysbus.h" #include "hw/core/irq.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "qemu/timer.h" #include "system/system.h" #include "qemu/cutils.h" diff --git a/hw/rtc/xlnx-zynqmp-rtc.c b/hw/rtc/xlnx-zynqmp-rtc.c index 18849340d62..49d48dc6782 100644 --- a/hw/rtc/xlnx-zynqmp-rtc.c +++ b/hw/rtc/xlnx-zynqmp-rtc.c @@ -26,7 +26,7 @@ =20 #include "qemu/osdep.h" #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "qemu/bitops.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/ssi/xilinx_spips.c b/hw/ssi/xilinx_spips.c index e3c6035c169..a56a5e304dc 100644 --- a/hw/ssi/xilinx_spips.c +++ b/hw/ssi/xilinx_spips.c @@ -32,7 +32,7 @@ #include "qemu/bitops.h" #include "hw/ssi/xilinx_spips.h" #include "qapi/error.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "system/dma.h" #include "migration/blocker.h" #include "migration/vmstate.h" diff --git a/hw/usb/hcd-dwc3.c b/hw/usb/hcd-dwc3.c index 74dff39fda1..4018d70f02f 100644 --- a/hw/usb/hcd-dwc3.c +++ b/hw/usb/hcd-dwc3.c @@ -29,7 +29,7 @@ =20 #include "qemu/osdep.h" #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "qemu/bitops.h" #include "qom/object.h" #include "migration/vmstate.h" diff --git a/hw/usb/xlnx-usb-subsystem.c b/hw/usb/xlnx-usb-subsystem.c index 7193dd4cd2c..e0dfdfdcbd1 100644 --- a/hw/usb/xlnx-usb-subsystem.c +++ b/hw/usb/xlnx-usb-subsystem.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/sysbus.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "qemu/bitops.h" #include "qom/object.h" #include "qapi/error.h" diff --git a/hw/usb/xlnx-versal-usb2-ctrl-regs.c b/hw/usb/xlnx-versal-usb2-= ctrl-regs.c index eb946b5dbd9..33a7d7fbca0 100644 --- a/hw/usb/xlnx-versal-usb2-ctrl-regs.c +++ b/hw/usb/xlnx-versal-usb2-ctrl-regs.c @@ -30,7 +30,7 @@ #include "qemu/osdep.h" #include "hw/sysbus.h" #include "hw/core/irq.h" -#include "hw/register.h" +#include "hw/core/register.h" #include "qemu/bitops.h" #include "qom/object.h" #include "migration/vmstate.h" --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827087; cv=none; d=zohomail.com; s=zohoarc; b=mUXGV7bZwZjx0xk1hpSI62B1NNbgcOf23KnxjLYUxsmZiCEl70kPzZ1T21GrSFXEody3pnXDv9gjUpUNzrT0LaopBr6b+QavvEQvxRNqoMmRyfmVnVGR+twK4zJ8qxUmQ95DEKrObqsLPXBFXGGPIyRXpzRu7fi8lruFtXQEOYI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827087; 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=bivrVV7bo5oZF3dxfEhb6DoI+Vn3TCKqB0VgafCU4Bs=; b=ldUs2twFguPPzc8HQLLRpjSD0jpVE2l7DivTvuy0tdv5l2y2BejR9tELCBYFXPXtKb4IWk5xBbif63v68WJEGQkojXz1OwKvIq5sUIPB+fjQn6WfdPX0rdXfwJzye5VS/pPPOt0R8E84dix4rehiDgxh3K7zsQy+FuSyNFG9Wt4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827087730436.15505982489015; Sat, 27 Dec 2025 01:18:07 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQH-0002YZ-Je; Sat, 27 Dec 2025 04:17:17 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQF-0002XV-Lr for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:15 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQC-0002Ps-7j for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:15 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-264-yVZdGz5FNmevDNDV-94M0g-1; Sat, 27 Dec 2025 04:17:09 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-431026b6252so7782809f8f.1 for ; Sat, 27 Dec 2025 01:17:09 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea8311fsm50394695f8f.28.2025.12.27.01.17.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827031; 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=bivrVV7bo5oZF3dxfEhb6DoI+Vn3TCKqB0VgafCU4Bs=; b=Qg+0UHncyMumpPoHkkHx3bIZpuh827z7K+MfBzXfxW8JJuQT+xlImtRb4zq29hLlMa5AlK zzWIEEDviIJLkHB4S1hUakYrdVGc2Zde2FHqINRdpwQz1jGpnsNrLN9l1qH5zlILOtLlNk xCLOwOWLI3qGHmlmN6Dc0ywdG2YS6wo= X-MC-Unique: yVZdGz5FNmevDNDV-94M0g-1 X-Mimecast-MFC-AGG-ID: yVZdGz5FNmevDNDV-94M0g_1766827028 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827027; x=1767431827; 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; bh=bivrVV7bo5oZF3dxfEhb6DoI+Vn3TCKqB0VgafCU4Bs=; b=mHhWVcgZ0wZLAONcl3oOkREFf+XV2T8ODq7k78+OcJmnFgDYVtxyBFB9GkfpRrO5Xc aFzVjbcwELRSr9jhFnOxX6Vks3V2vXKZlsfOj7uVMSLjw/8lF77Afb6zct1dUwjvksAA u9Z4QjuU7V+41wqSl1anItIZrnVjNyXms01Vjn853AA/0ZehQRkhKOwYmFlwTnAGA4kL luhG/mEIqAR49xNF3rZ37h3BQMCxCJxRyIh0HitoH98Yscj0XUNTe4Kbd9hWlooQI5pc JGLE5hb++ghqzHjNwYWFTkQpjNWL8j+wqh4yz08Rm/2LzigTrDSO1pbuti6OHb5AiMUn X1aQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827027; x=1767431827; 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; bh=bivrVV7bo5oZF3dxfEhb6DoI+Vn3TCKqB0VgafCU4Bs=; b=K0beE0wv9JJr6AorjBTKGwB24RBNgbjAgQrE+33ubLHTFCjRF4x24XI4cycIDgBVR+ q/vea25/YjEfPRgovHideWy13bywejO7HzI+0vwVvDLvoCdOBH9ZX85oP4zCnO4j+h5X v0pTobin90AnmCjuBw5BCI01uh936d6cqHcbf/TruqceEr77tIDB6mNrs1ohacLNd5oG cIrkzMeIKA9e8Duk3JVUI3aDOnn90BM/98458whgaj0/K/ECZw7RIfDTVr0vAkxGB0pw E1lwAAFXEregev7rB3aOXrgvePhJlzjdCnAMVa6Bb0mBLsdwiIsRa3oNnYLhxoUoEuF3 0nsQ== X-Gm-Message-State: AOJu0Yz5FdlytP4x59mxrVKtElIIKrsVQXq4WYOtisW0LLHxf+bxeTxS /vTcBQ4psPNQ546xcIW58ZIStOnqR8ZehNZVDvRHV80ugiUNxnqoXMV4YGtvGZIoTR50py5eiJd gq1Fgms6cgQfxrKu3YYpto0JLnr6ZwKCEkLIzyIRoZikuaL3GKOpHI5Bq5hx2RNOyXYcZHfebY4 epHn2iBygDp8fn6jznyh0S9j9kitOWWXKzNerzb1/E X-Gm-Gg: AY/fxX5dgnnIRynJ5BKs1DDabvK/BLF3HFK/G/HP5l/L+PdAKrNe/tc17Bydskg5Aoq E49xrHcm7A5H2O9eGfbbdZRZN4uh3XGK5N/ZOWNE2K4cTvQpLxa1umYj3MRK2N5jNUUF6YPxGjn zmaIaZlMU9EJ3g9uYtPCtNLHhPnuOZaEigM+DLAglLsoIu64jv/1AgOkgc/fD27cGDlRsDVGug3 XmMnhM8ZTNnLPcX4tb+9Zf3HEboGEEmbk13kKT4IC9OIKBv49/RMbeBPOJYN3Fcbc39Hx0ML6RE XWy3OcFIy5JvmCxix9613lg6v60SxyT+AZas979aEt6KvdP7JhXDRpyYeIu98a4ov7TygJTEnTv 1xlzgKXzspbrNk9gE3JnCAXjyyNlFso9MqiCUcXMbw6vSMotjkVEN9euGFl6W5Ygk9QNWqbji0z LITwLGLRoS0jeXXa4= X-Received: by 2002:a05:6000:1a8e:b0:430:f68f:ee7d with SMTP id ffacd0b85a97d-4324e50d9demr31585681f8f.47.1766827027569; Sat, 27 Dec 2025 01:17:07 -0800 (PST) X-Google-Smtp-Source: AGHT+IF6CCcTXCqFuWmLd+GdnOHv8EEzir1jdeFJkhQXbgxOsTaNN7TajTmHTbMVka7wAY8QL2Pdvg== X-Received: by 2002:a05:6000:1a8e:b0:430:f68f:ee7d with SMTP id ffacd0b85a97d-4324e50d9demr31585651f8f.47.1766827027005; Sat, 27 Dec 2025 01:17:07 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 024/153] include: move hw/resettable.h to hw/core/ Date: Sat, 27 Dec 2025 10:14:11 +0100 Message-ID: <20251227091622.20725-25-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827089328158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- MAINTAINERS | 2 +- docs/devel/reset.rst | 2 +- include/hw/core/boards.h | 2 +- include/hw/core/qdev.h | 2 +- include/hw/{ =3D> core}/resettable.h | 0 include/hw/virtio/virtio-balloon.h | 2 +- include/hw/virtio/virtio-mem.h | 2 +- include/system/reset.h | 2 +- hw/core/reset.c | 2 +- hw/core/resetcontainer.c | 2 +- hw/core/resettable.c | 2 +- hw/misc/xlnx-versal-crl.c | 2 +- hw/net/lan9118_phy.c | 2 +- hw/pci-host/fsl_imx8m_phy.c | 2 +- hw/rtc/rs5c372.c | 2 +- system/runstate.c | 2 +- target/s390x/cpu.c | 2 +- 17 files changed, 16 insertions(+), 16 deletions(-) rename include/hw/{ =3D> core}/resettable.h (100%) diff --git a/MAINTAINERS b/MAINTAINERS index b38215954a2..e241690bdce 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3961,7 +3961,7 @@ F: docs/devel/clocks.rst Reset framework M: Peter Maydell S: Maintained -F: include/hw/resettable.h +F: include/hw/core/resettable.h F: include/hw/core/resetcontainer.h F: include/system/reset.h F: hw/core/reset.c diff --git a/docs/devel/reset.rst b/docs/devel/reset.rst index c02fe0a405c..91e8c21189e 100644 --- a/docs/devel/reset.rst +++ b/docs/devel/reset.rst @@ -4,7 +4,7 @@ Reset in QEMU: the Resettable interface =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 The reset of qemu objects is handled using the resettable interface declar= ed -in ``include/hw/resettable.h``. +in ``include/hw/core/resettable.h``. =20 This interface allows objects to be grouped (on a tree basis); so that the whole group can be reset consistently. Each individual member object does = not diff --git a/include/hw/core/boards.h b/include/hw/core/boards.h index a48ed4f86a3..815845207b0 100644 --- a/include/hw/core/boards.h +++ b/include/hw/core/boards.h @@ -10,7 +10,7 @@ #include "qemu/module.h" #include "qom/object.h" #include "hw/core/cpu.h" -#include "hw/resettable.h" +#include "hw/core/resettable.h" =20 #define TYPE_MACHINE_SUFFIX "-machine" =20 diff --git a/include/hw/core/qdev.h b/include/hw/core/qdev.h index f0ef2dc3aa8..e211d807e82 100644 --- a/include/hw/core/qdev.h +++ b/include/hw/core/qdev.h @@ -8,7 +8,7 @@ #include "qemu/rcu_queue.h" #include "qom/object.h" #include "hw/core/hotplug.h" -#include "hw/resettable.h" +#include "hw/core/resettable.h" =20 /** * DOC: The QEMU Device API diff --git a/include/hw/resettable.h b/include/hw/core/resettable.h similarity index 100% rename from include/hw/resettable.h rename to include/hw/core/resettable.h diff --git a/include/hw/virtio/virtio-balloon.h b/include/hw/virtio/virtio-= balloon.h index 0456c211c6e..79ac194ccec 100644 --- a/include/hw/virtio/virtio-balloon.h +++ b/include/hw/virtio/virtio-balloon.h @@ -16,7 +16,7 @@ #define QEMU_VIRTIO_BALLOON_H =20 #include "standard-headers/linux/virtio_balloon.h" -#include "hw/resettable.h" +#include "hw/core/resettable.h" #include "hw/virtio/virtio.h" #include "system/iothread.h" #include "qom/object.h" diff --git a/include/hw/virtio/virtio-mem.h b/include/hw/virtio/virtio-mem.h index e0ab31b45a4..221cfd76bf9 100644 --- a/include/hw/virtio/virtio-mem.h +++ b/include/hw/virtio/virtio-mem.h @@ -14,7 +14,7 @@ #define HW_VIRTIO_MEM_H =20 #include "standard-headers/linux/virtio_mem.h" -#include "hw/resettable.h" +#include "hw/core/resettable.h" #include "hw/virtio/virtio.h" #include "qapi/qapi-types-misc.h" #include "system/hostmem.h" diff --git a/include/system/reset.h b/include/system/reset.h index 97131d94cfc..62e9977e3c2 100644 --- a/include/system/reset.h +++ b/include/system/reset.h @@ -27,7 +27,7 @@ #ifndef QEMU_SYSTEM_RESET_H #define QEMU_SYSTEM_RESET_H =20 -#include "hw/resettable.h" +#include "hw/core/resettable.h" #include "qapi/qapi-events-run-state.h" =20 typedef void QEMUResetHandler(void *opaque); diff --git a/hw/core/reset.c b/hw/core/reset.c index 65f82fa43d9..e7230b49b70 100644 --- a/hw/core/reset.c +++ b/hw/core/reset.c @@ -25,7 +25,7 @@ =20 #include "qemu/osdep.h" #include "system/reset.h" -#include "hw/resettable.h" +#include "hw/core/resettable.h" #include "hw/core/resetcontainer.h" =20 /* diff --git a/hw/core/resetcontainer.c b/hw/core/resetcontainer.c index 5ff17002e75..ef84aa2374a 100644 --- a/hw/core/resetcontainer.c +++ b/hw/core/resetcontainer.c @@ -15,7 +15,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/resettable.h" +#include "hw/core/resettable.h" #include "hw/core/resetcontainer.h" =20 struct ResettableContainer { diff --git a/hw/core/resettable.c b/hw/core/resettable.c index 5cdb4a4f8d3..86e16c8c6e4 100644 --- a/hw/core/resettable.c +++ b/hw/core/resettable.c @@ -12,7 +12,7 @@ =20 #include "qemu/osdep.h" #include "qemu/module.h" -#include "hw/resettable.h" +#include "hw/core/resettable.h" #include "trace.h" =20 /** diff --git a/hw/misc/xlnx-versal-crl.c b/hw/misc/xlnx-versal-crl.c index 072d6d98591..9bbf44def6b 100644 --- a/hw/misc/xlnx-versal-crl.c +++ b/hw/misc/xlnx-versal-crl.c @@ -13,7 +13,7 @@ #include "hw/sysbus.h" #include "hw/core/irq.h" #include "hw/core/register.h" -#include "hw/resettable.h" +#include "hw/core/resettable.h" =20 #include "target/arm/arm-powerctl.h" #include "target/arm/multiprocessing.h" diff --git a/hw/net/lan9118_phy.c b/hw/net/lan9118_phy.c index f0f6e55d807..2fc027d112c 100644 --- a/hw/net/lan9118_phy.c +++ b/hw/net/lan9118_phy.c @@ -16,7 +16,7 @@ #include "hw/net/lan9118_phy.h" #include "hw/net/mii.h" #include "hw/core/irq.h" -#include "hw/resettable.h" +#include "hw/core/resettable.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "trace.h" diff --git a/hw/pci-host/fsl_imx8m_phy.c b/hw/pci-host/fsl_imx8m_phy.c index 04da3f99a07..0afa6167e0d 100644 --- a/hw/pci-host/fsl_imx8m_phy.c +++ b/hw/pci-host/fsl_imx8m_phy.c @@ -8,7 +8,7 @@ =20 #include "qemu/osdep.h" #include "hw/pci-host/fsl_imx8m_phy.h" -#include "hw/resettable.h" +#include "hw/core/resettable.h" #include "migration/vmstate.h" =20 #define CMN_REG075 0x1d4 diff --git a/hw/rtc/rs5c372.c b/hw/rtc/rs5c372.c index 58f12b836d3..20015dd6c1e 100644 --- a/hw/rtc/rs5c372.c +++ b/hw/rtc/rs5c372.c @@ -11,7 +11,7 @@ #include "qemu/osdep.h" #include "hw/i2c/i2c.h" #include "hw/core/qdev-properties.h" -#include "hw/resettable.h" +#include "hw/core/resettable.h" #include "migration/vmstate.h" #include "qemu/bcd.h" #include "qom/object.h" diff --git a/system/runstate.c b/system/runstate.c index 89bbfe7fbf9..ed2db564806 100644 --- a/system/runstate.c +++ b/system/runstate.c @@ -32,7 +32,7 @@ #include "exec/cpu-common.h" #include "gdbstub/syscalls.h" #include "hw/core/boards.h" -#include "hw/resettable.h" +#include "hw/core/resettable.h" #include "migration/misc.h" #include "migration/postcopy-ram.h" #include "monitor/monitor.h" diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c index da536fb30ed..6c4198eb1b1 100644 --- a/target/s390x/cpu.c +++ b/target/s390x/cpu.c @@ -32,7 +32,7 @@ #include "system/hw_accel.h" #include "hw/core/qdev-properties.h" #include "hw/core/qdev-properties-system.h" -#include "hw/resettable.h" +#include "hw/core/resettable.h" #include "fpu/softfloat-helpers.h" #include "disas/capstone.h" #include "system/tcg.h" --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827058; cv=none; d=zohomail.com; s=zohoarc; b=k6Ux9ryH2jstiGVGFScP/lpLcHVjw0mCe4u9HRw52PuSB8cpH2/F2gy8XWvEtVoJHekzLDVS8CYjIxSsOE0S1TkIm0BEMpxfFEVStPDTFJj7FaWBXx+hRsF7VTf1zCiADdpGoutXjPLVoiEdor8XdyaFOvVEU6KlM7liXqq3F7I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827058; 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=NWrHJCMeB68IQkNuStswZsduDLDnLKkS5nzviqg04gA=; b=Bui/caupzztCxnOw6fCiknn0jFO1yJihX8fFDAoGsn8TPBLndry1toF91b4kh9zhNMh7rFM8YGLG1YMJxUOQGMt9iTUHhdCBUkM9/kpqdy22KqTt8fqGflwNjkAq+1Bp+YGdFf1qET6zuub3LkPLoQZEajsoXrzTKL3rFAX4kWY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827058783345.2121499822324; Sat, 27 Dec 2025 01:17:38 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQI-0002ZE-4P; Sat, 27 Dec 2025 04:17:18 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQF-0002XT-Hd for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:15 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQD-0002T7-Vq for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:15 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-688-aCubD4NFOn6iDTsvuKMteA-1; Sat, 27 Dec 2025 04:17:11 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-47775585257so54465125e9.1 for ; Sat, 27 Dec 2025 01:17:11 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d193e329asm436417255e9.15.2025.12.27.01.17.07 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827033; 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=NWrHJCMeB68IQkNuStswZsduDLDnLKkS5nzviqg04gA=; b=c8BvZFn7a2bOgfVSIjfH2CGIHVUL6Z09MMXT8UCx21/W8RX6vLLfOTfOB08+TmDB5Jbumw KGxTb0KawNvWRLsDyKV1Dl6gQO27CY/Ix6tQmTI/62wgnEZoNToTZz0GfH6KVsRu8z8EPw gx6+N2HiB7XiraiabtfSup8FmFn2YTo= X-MC-Unique: aCubD4NFOn6iDTsvuKMteA-1 X-Mimecast-MFC-AGG-ID: aCubD4NFOn6iDTsvuKMteA_1766827030 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827029; x=1767431829; 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; bh=NWrHJCMeB68IQkNuStswZsduDLDnLKkS5nzviqg04gA=; b=qPkALXX+Z2/u1HHEsI/E3ow6rX6i+D5UnEvDwHh++hKgQYnSFJi6T08q4rw8KNdIgW PMbxHyfvuo0Kez9+AN1wWyb4+2HKLjgvLX0xVq1mnlC2AQp6rXGVog11YwnUwIhlHePH LqIKLMPF6ZyBA8Lzi6m51diuL8E7qML+PIBnymGq3/NvP1ly7Fprr5eEbpw/QW0/9yuM 36Vge9SVKnvViJDbQcZLT2j4IQCHrvRT43GsaLOkIJ45a4qSEor0z195FXOPoevMvX1R ztQmR7PowwqMPnwRsjdUHz3KRriz0HT4FUhcp5d7ttxuBX0Bqx4g4iCPQ6I9pArFN7yS 5axA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827029; x=1767431829; 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; bh=NWrHJCMeB68IQkNuStswZsduDLDnLKkS5nzviqg04gA=; b=LFT5NWKlfG+zpf5nFcfHx1m4RE6bQrYf35alADgJyZdym5+Re2ZogJLB8OtB5vrRj8 xu5TMstWY2PeLzv8deY4ECKnBNPG7eCbzl88kEUyOeM2qCF9mPoenZEbIH4cZNrNqCkQ XvA7pHywkq8pHoq1C8HPXWvei1DqtmtgesfzR5ZHMCVTUHe/8/9GElv2zUaJXP+LaWF6 BwgogaozseF3lFsJMjm2d2dw3jasknmfmP+B6yljnxFVs++i8vNVK1I+wVmC+ZFIijqE 4cQDvb9sN8FHcJO2lJPWJ+K8Vg9xh1N3cV+2OpwSbsbcxSOavJCxTYQbqIC5FdEoxrY/ bwCQ== X-Gm-Message-State: AOJu0YyQ2N2ErCEyGJgAAT3yrJ4PDtddazDqecPnJMpYCHSa2mVR+FPJ ijFNy3fgGpgIE4NBJMvCHKXHzAVx1AhsmVgpycumnlZEXspbP9K1rbN90ZMghZQGaFjlybAq7IK p10aVrgnyQ32bLaRmtY/02huuTXactmV3ojFKcaP6HMy5sPDEJ0XH8y0rsXHR3orLLPcKkFS5MD DdxFizofthq+XCVKQ5/8Co25AZIYnYw+8MfF4yDzui X-Gm-Gg: AY/fxX5GkPOqmHPMYiUN3phwqKjKjkfcN8IR6gQ0CS7a845owrTC/d+Z++6b5xFHriH HWax8W88TFZCuvquxAs63xO3yuRGjo7n457YAQh7UTelc4KHMxWW2hQbaP8LMwvVuUOaLNKIuba QwId6eUmMUda7iCCOU6RZHiCY7Vt6qHaLhXvMNSnfAMJiaLCgHwZ8O9x27iNbvGTOUpDz8l3IzN Ri/w56OZxhmoaV9FQ/HZIXoI9oeVxBGHETgV92k6g0PUqGGx/45kKjreRLk2Gvn2ruX6JE8fRzR CREwglxqDOvGtnBdrcz/FV8pJbY7E7uxlbuEtxxPledWfTo1PMbX1mh6ik01ReYF7FUWbuQkEcs BOKAdQYE5Ybm6kFmGcm/BwxNwV+AYtkaMfBwjnGH6tBcqBocyei97NmAHYZqConDTe12WaE8UaS CH3wfRBFIM9PlsmOk= X-Received: by 2002:a05:600c:468f:b0:45c:4470:271c with SMTP id 5b1f17b1804b1-47d269c7019mr240035435e9.18.1766827029578; Sat, 27 Dec 2025 01:17:09 -0800 (PST) X-Google-Smtp-Source: AGHT+IF9dswpvgCIolYnjB86n/pnqocL7MKEhYaz7HM3uXOuaru81+qOZM51CHDu3xbpHy2HLw0BIw== X-Received: by 2002:a05:600c:468f:b0:45c:4470:271c with SMTP id 5b1f17b1804b1-47d269c7019mr240035285e9.18.1766827029156; Sat, 27 Dec 2025 01:17:09 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 025/153] include: move hw/stream.h to hw/core/ Date: Sat, 27 Dec 2025 10:14:12 +0100 Message-ID: <20251227091622.20725-26-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827059300158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- MAINTAINERS | 2 +- include/hw/{ =3D> core}/stream.h | 0 include/hw/dma/xlnx_csu_dma.h | 2 +- include/hw/ssi/xilinx_spips.h | 2 +- hw/core/stream.c | 2 +- hw/dma/xilinx_axidma.c | 2 +- hw/dma/xlnx_csu_dma.c | 2 +- hw/microblaze/petalogix_ml605_mmu.c | 2 +- hw/net/xilinx_axienet.c | 2 +- 9 files changed, 8 insertions(+), 8 deletions(-) rename include/hw/{ =3D> core}/stream.h (100%) diff --git a/MAINTAINERS b/MAINTAINERS index e241690bdce..44d84aa243a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3600,7 +3600,7 @@ Streams M: Edgar E. Iglesias S: Maintained F: hw/core/stream.c -F: include/hw/stream.h +F: include/hw/core/stream.h =20 Stubs M: Paolo Bonzini diff --git a/include/hw/stream.h b/include/hw/core/stream.h similarity index 100% rename from include/hw/stream.h rename to include/hw/core/stream.h diff --git a/include/hw/dma/xlnx_csu_dma.h b/include/hw/dma/xlnx_csu_dma.h index 63af4586dd9..4d6d18fb9b5 100644 --- a/include/hw/dma/xlnx_csu_dma.h +++ b/include/hw/dma/xlnx_csu_dma.h @@ -24,7 +24,7 @@ #include "hw/sysbus.h" #include "hw/core/register.h" #include "hw/core/ptimer.h" -#include "hw/stream.h" +#include "hw/core/stream.h" =20 #define TYPE_XLNX_CSU_DMA "xlnx.csu_dma" =20 diff --git a/include/hw/ssi/xilinx_spips.h b/include/hw/ssi/xilinx_spips.h index 7a754bf67a2..56cf69a37d2 100644 --- a/include/hw/ssi/xilinx_spips.h +++ b/include/hw/ssi/xilinx_spips.h @@ -27,7 +27,7 @@ =20 #include "hw/ssi/ssi.h" #include "qemu/fifo32.h" -#include "hw/stream.h" +#include "hw/core/stream.h" #include "hw/sysbus.h" #include "qom/object.h" =20 diff --git a/hw/core/stream.c b/hw/core/stream.c index 19477d0f2df..bfcac938802 100644 --- a/hw/core/stream.c +++ b/hw/core/stream.c @@ -1,5 +1,5 @@ #include "qemu/osdep.h" -#include "hw/stream.h" +#include "hw/core/stream.h" #include "qemu/module.h" =20 size_t diff --git a/hw/dma/xilinx_axidma.c b/hw/dma/xilinx_axidma.c index 7cdd76330f3..90ba7bf0573 100644 --- a/hw/dma/xilinx_axidma.c +++ b/hw/dma/xilinx_axidma.c @@ -34,7 +34,7 @@ #include "qemu/module.h" =20 #include "system/dma.h" -#include "hw/stream.h" +#include "hw/core/stream.h" #include "qom/object.h" #include "trace.h" =20 diff --git a/hw/dma/xlnx_csu_dma.c b/hw/dma/xlnx_csu_dma.c index ffe258cf31a..b390d092699 100644 --- a/hw/dma/xlnx_csu_dma.c +++ b/hw/dma/xlnx_csu_dma.c @@ -27,7 +27,7 @@ #include "migration/vmstate.h" #include "system/dma.h" #include "hw/core/ptimer.h" -#include "hw/stream.h" +#include "hw/core/stream.h" #include "hw/core/register.h" #include "hw/dma/xlnx_csu_dma.h" =20 diff --git a/hw/microblaze/petalogix_ml605_mmu.c b/hw/microblaze/petalogix_= ml605_mmu.c index 9c2b0ff0b37..51ee237d584 100644 --- a/hw/microblaze/petalogix_ml605_mmu.c +++ b/hw/microblaze/petalogix_ml605_mmu.c @@ -41,7 +41,7 @@ =20 #include "boot.h" =20 -#include "hw/stream.h" +#include "hw/core/stream.h" =20 #define LMB_BRAM_SIZE (128 * KiB) #define FLASH_SIZE (32 * MiB) diff --git a/hw/net/xilinx_axienet.c b/hw/net/xilinx_axienet.c index 36047a51c00..451f8da2122 100644 --- a/hw/net/xilinx_axienet.c +++ b/hw/net/xilinx_axienet.c @@ -33,7 +33,7 @@ =20 #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/stream.h" +#include "hw/core/stream.h" #include "qom/object.h" =20 #define DPHY(x) --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827548; cv=none; d=zohomail.com; s=zohoarc; b=hfdTTYIIpKmIm55aV80nAedkYSQNY5vBvoLxQZK1E1pGB02h9mLtsBOg0/n32loKh2u9DWnyofhnwWb1U4AA1WD4Pp66IZLP82CknzA+aEHYTYNe7AGKWcuIYOBYHQO1WC0ZYkVLcwhpCjWMckiILklNM+F8BEe4KmC7CUjAw2o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827548; 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=kqkn7YzQLx9ICypP9q1mwkaDNqpRLdTa2h2Ubih9XWQ=; b=IhrUW5CNvdegkjw9cY18Le2EPu8ucn6jvvxFC981g5TVsDkmPKh0xeov6qNE7YJ3vXyv/Sh7Kd2DQVMR8/LwdDWU5RVuv9P3UDl9QmBo6G9+bsAFDNM6xL+cXCAzNTWnoOnTgy/4rcs13a9N4ncntPCk5Bioojg0NraDnYPxpaA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827547935595.0469301232841; Sat, 27 Dec 2025 01:25:47 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQW-0003iB-6v; Sat, 27 Dec 2025 04:17:32 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQU-0003XR-D1 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:30 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQP-0002jn-9N for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:30 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-231-M0klh2C7PlSQpPgONd2FXw-1; Sat, 27 Dec 2025 04:17:17 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-4779b432aecso45556145e9.0 for ; Sat, 27 Dec 2025 01:17:16 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be3a4651bsm191147695e9.7.2025.12.27.01.17.09 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827044; 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=kqkn7YzQLx9ICypP9q1mwkaDNqpRLdTa2h2Ubih9XWQ=; b=JV6RFFIDIctqG4e65WRZV/Bf8vV/uSF53toSwq9O+Bg/QafpLStDH8AQE/uK79sEZmK5NZ jW98z7vyfMCWtRZ+LyCtrbeom+kktupRTd3EO9WTvUWaLYMh46XhkwmsIgiF4FBO/RwRXj WpBsJa4HxSALl+WJiqsDFffrP4F1esY= X-MC-Unique: M0klh2C7PlSQpPgONd2FXw-1 X-Mimecast-MFC-AGG-ID: M0klh2C7PlSQpPgONd2FXw_1766827036 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827035; x=1767431835; 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; bh=kqkn7YzQLx9ICypP9q1mwkaDNqpRLdTa2h2Ubih9XWQ=; b=igaoiO483+jBwuirWfiQh7uGpM0FvyPoo4Meu/0jYPL1shWmUS/dlZVeIcJgTsllIv MbyVTQ1ctm7rQbgFih7SfSa6Lhpp9JKrkZk1SGxpPOgKA6veBwY35gwph7jR9TCGBjk7 Ghdt72AqXfgDWY4/MSpM1dzDfwl+RnFyFyLHQXjsUQEOsR4KKwnKgfMghEgPeF3BIxX+ JQw+NxG9qIYDqbHTOyncpNtiXsOYyXx6jEHA4O01rAfeI2N/wjbyqpojBmBLEehyTB91 9UojoHiEFcE/HfGfqIOQ8vW3vMV62DJep7/vucLVn0ES1vsiphXtbK8yqoTIc+mXUuVX P2qQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827035; x=1767431835; 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; bh=kqkn7YzQLx9ICypP9q1mwkaDNqpRLdTa2h2Ubih9XWQ=; b=w1cpdApk3Mn3p3K/yyfISgAzQWCVY0h/AGeJbhxJMfXOV1onTg1VAXvQJPUMamogKj SNH3KrcPN38tcEp0Lc7ejvY/XEtMgmMyTzdmpo+lBvHAEYBQCeoV46PQR0uQsaeX2Jqo yPspf89HTVdiks/+0mogSKaMixbsdv5df0WdyeoVis71MlEkaOlEi87vAlKRJtiaxI0T CgO/jlALHAgVVgKp2OV8Kcv+kRkeqXWKptAzagVOfD+rKGudnJANnQ5pq6Ax216Llu7+ 9HKijLxmoWD0e8fMEG66qdDlsvGazKW0UrwfeVmLex2grZ2g7X2g0PpLVJzf1bofBX5w 5zmQ== X-Gm-Message-State: AOJu0YwfssYqnHZXohgKt7brhxZe7BVyCpRyZjHdyHrC02cefiXasNLC rdrstIlnJUp/mUZfzYW/1eNfTDcxbT6YoVky5w+bBhW8F3GNmBI+16SoABZZLgiVv6pIw5WeSfS UIXf5rquaXq3SmbJAg0pFwdnwHm4eYe5tNyki00DE91D9wVJRRv0NO13PAtg7yjjhs0BdvZt+Af dBKjwfqJ79HkYYMU8EStpLnbMScGPr5Gm22bO8JYUn X-Gm-Gg: AY/fxX6wr5y25wzeT41huBNc45aVun652u0Q0H+j1JVuRhwmgNkWTCP7NNLdnFPAlSy +u6/eioYmVSpVaGzbEDGIaHSxDRFaxowf14vLu1v+MkMpZTHIxAXcT6T/UhKDfjTA+ZS6S2yb/v xKLFDZoMawbHH6tyfmxbOP0sqgo9DJnjVNEAMw9yCivBxESU/uFBPfYmmuHGVv2xNOWvfJcpSxl uw9Va8U9/qDGzKUq2KuqxxGKrvOEcceGSKDbZON93OTBL85x67qDeeZLTG0OCrFXe6lulPY18X7 aFHfgnpZ0n9msnaYMUQ3NU/8i6hrKwd9u5cwjnRx9RN3XQEqJfD4MaO5ZiMUzqWyW8imRAsJ3Oi 4CgXPWRdzsrUm7TbGJL6LCxgvG62P/QYK6wFopkgElqs91GdvmhC4MtSAX4vdgj/lIpIvytnUhu vXSsWHNUNuTHjGoZg= X-Received: by 2002:a05:600c:35c4:b0:475:dd9a:f791 with SMTP id 5b1f17b1804b1-47d195869e7mr323342915e9.28.1766827033598; Sat, 27 Dec 2025 01:17:13 -0800 (PST) X-Google-Smtp-Source: AGHT+IFAu9bsnAzkyREn4LPS3iNoS8XfwUURgtzmhu8tpemTZBdtqykhMgyiBFxV9yM8cdUwNlXTMA== X-Received: by 2002:a05:600c:35c4:b0:475:dd9a:f791 with SMTP id 5b1f17b1804b1-47d195869e7mr323341915e9.28.1766827031682; Sat, 27 Dec 2025 01:17:11 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 026/153] include: move hw/sysbus.h to hw/core/ Date: Sat, 27 Dec 2025 10:14:13 +0100 Message-ID: <20251227091622.20725-27-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827549227158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- hw/i386/kvm/xen_evtchn.h | 2 +- hw/intc/ioapic_internal.h | 2 +- hw/net/fsl_etsec/etsec.h | 2 +- hw/ppc/e500-ccsr.h | 2 +- hw/scsi/lasi_ncr710.h | 2 +- hw/scsi/ncr53c710.h | 2 +- hw/usb/hcd-dwc2.h | 2 +- hw/usb/hcd-ehci.h | 2 +- hw/usb/hcd-ohci.h | 2 +- hw/usb/hcd-xhci-sysbus.h | 2 +- include/hw/acpi/generic_event_device.h | 2 +- include/hw/adc/aspeed_adc.h | 2 +- include/hw/adc/npcm7xx_adc.h | 2 +- include/hw/adc/stm32f2xx_adc.h | 2 +- include/hw/adc/zynq-xadc.h | 2 +- include/hw/arm/armsse.h | 2 +- include/hw/arm/armv7m.h | 2 +- include/hw/arm/bcm2835_peripherals.h | 2 +- include/hw/arm/exynos4210.h | 2 +- include/hw/arm/fsl-imx8mp.h | 2 +- include/hw/arm/nrf51_soc.h | 2 +- include/hw/arm/smmu-common.h | 2 +- include/hw/arm/xlnx-versal.h | 2 +- include/hw/audio/asc.h | 2 +- include/hw/block/swim.h | 2 +- include/hw/char/avr_usart.h | 2 +- include/hw/char/bcm2835_aux.h | 2 +- include/hw/char/cadence_uart.h | 2 +- include/hw/char/cmsdk-apb-uart.h | 2 +- include/hw/char/digic-uart.h | 2 +- include/hw/char/escc.h | 2 +- include/hw/char/goldfish_tty.h | 2 +- include/hw/char/ibex_uart.h | 2 +- include/hw/char/imx_serial.h | 2 +- include/hw/char/max78000_uart.h | 2 +- include/hw/char/mchp_pfsoc_mmuart.h | 2 +- include/hw/char/nrf51_uart.h | 2 +- include/hw/char/pl011.h | 2 +- include/hw/char/renesas_sci.h | 2 +- include/hw/char/serial-mm.h | 2 +- include/hw/char/shakti_uart.h | 2 +- include/hw/char/sifive_uart.h | 2 +- include/hw/char/stm32f2xx_usart.h | 2 +- include/hw/char/stm32l4x5_usart.h | 2 +- include/hw/core/or-irq.h | 2 +- include/hw/core/platform-bus.h | 2 +- include/hw/core/split-irq.h | 2 +- include/hw/{ =3D> core}/sysbus.h | 0 include/hw/cpu/a15mpcore.h | 2 +- include/hw/cpu/a9mpcore.h | 2 +- include/hw/cpu/arm11mpcore.h | 2 +- include/hw/display/bcm2835_fb.h | 2 +- include/hw/display/macfb.h | 2 +- include/hw/display/xlnx_dp.h | 2 +- include/hw/dma/bcm2835_dma.h | 2 +- include/hw/dma/pl080.h | 2 +- include/hw/dma/sifive_pdma.h | 2 +- include/hw/dma/xlnx-zdma.h | 2 +- include/hw/dma/xlnx-zynq-devcfg.h | 2 +- include/hw/dma/xlnx_csu_dma.h | 2 +- include/hw/dma/xlnx_dpdma.h | 2 +- include/hw/fsi/aspeed_apb2opb.h | 2 +- include/hw/gpio/aspeed_gpio.h | 2 +- include/hw/gpio/bcm2835_gpio.h | 2 +- include/hw/gpio/bcm2838_gpio.h | 2 +- include/hw/gpio/imx_gpio.h | 2 +- include/hw/gpio/npcm7xx_gpio.h | 2 +- include/hw/gpio/nrf51_gpio.h | 2 +- include/hw/gpio/sifive_gpio.h | 2 +- include/hw/gpio/stm32l4x5_gpio.h | 2 +- include/hw/hyperv/vmbus-bridge.h | 2 +- include/hw/i2c/allwinner-i2c.h | 2 +- include/hw/i2c/arm_sbcon_i2c.h | 2 +- include/hw/i2c/aspeed_i2c.h | 2 +- include/hw/i2c/bcm2835_i2c.h | 2 +- include/hw/i2c/imx_i2c.h | 2 +- include/hw/i2c/microbit_i2c.h | 2 +- include/hw/i2c/npcm7xx_smbus.h | 2 +- include/hw/i2c/ppc4xx_i2c.h | 2 +- include/hw/i386/x86-iommu.h | 2 +- include/hw/ide/ahci-sysbus.h | 2 +- include/hw/input/i8042.h | 2 +- include/hw/input/lasips2.h | 2 +- include/hw/input/pl050.h | 2 +- include/hw/input/ps2.h | 2 +- include/hw/input/stellaris_gamepad.h | 2 +- include/hw/intc/allwinner-a10-pic.h | 2 +- include/hw/intc/arm_gic_common.h | 2 +- include/hw/intc/arm_gicv3_common.h | 2 +- include/hw/intc/arm_gicv3_its_common.h | 2 +- include/hw/intc/armv7m_nvic.h | 2 +- include/hw/intc/aspeed_intc.h | 2 +- include/hw/intc/aspeed_vic.h | 2 +- include/hw/intc/bcm2835_ic.h | 2 +- include/hw/intc/bcm2836_control.h | 2 +- include/hw/intc/exynos4210_combiner.h | 2 +- include/hw/intc/exynos4210_gic.h | 2 +- include/hw/intc/goldfish_pic.h | 2 +- include/hw/intc/grlib_irqmp.h | 2 +- include/hw/intc/heathrow_pic.h | 2 +- include/hw/intc/imx_avic.h | 2 +- include/hw/intc/imx_gpcv2.h | 2 +- include/hw/intc/loongarch_dintc.h | 2 +- include/hw/intc/loongarch_extioi_common.h | 2 +- include/hw/intc/loongarch_pch_msi.h | 2 +- include/hw/intc/loongarch_pic_common.h | 2 +- include/hw/intc/loongson_ipi.h | 2 +- include/hw/intc/loongson_ipi_common.h | 2 +- include/hw/intc/loongson_liointc.h | 2 +- include/hw/intc/m68k_irqc.h | 2 +- include/hw/intc/mips_gic.h | 2 +- include/hw/intc/realview_gic.h | 2 +- include/hw/intc/riscv_aclint.h | 2 +- include/hw/intc/riscv_aplic.h | 2 +- include/hw/intc/riscv_imsic.h | 2 +- include/hw/intc/rx_icu.h | 2 +- include/hw/intc/sifive_plic.h | 2 +- include/hw/intc/xlnx-pmu-iomod-intc.h | 2 +- include/hw/intc/xlnx-zynqmp-ipi.h | 2 +- include/hw/m68k/q800-glue.h | 2 +- include/hw/mem/npcm7xx_mc.h | 2 +- include/hw/mips/cps.h | 2 +- include/hw/misc/a9scu.h | 2 +- include/hw/misc/allwinner-a10-ccm.h | 2 +- include/hw/misc/allwinner-a10-dramc.h | 2 +- include/hw/misc/allwinner-cpucfg.h | 2 +- include/hw/misc/allwinner-h3-ccu.h | 2 +- include/hw/misc/allwinner-h3-dramc.h | 2 +- include/hw/misc/allwinner-h3-sysctrl.h | 2 +- include/hw/misc/allwinner-r40-ccu.h | 2 +- include/hw/misc/allwinner-r40-dramc.h | 2 +- include/hw/misc/allwinner-sid.h | 2 +- include/hw/misc/allwinner-sramc.h | 2 +- include/hw/misc/arm11scu.h | 2 +- include/hw/misc/armsse-cpu-pwrctrl.h | 2 +- include/hw/misc/armsse-cpuid.h | 2 +- include/hw/misc/armsse-mhu.h | 2 +- include/hw/misc/armv7m_ras.h | 2 +- include/hw/misc/aspeed_hace.h | 2 +- include/hw/misc/aspeed_i3c.h | 2 +- include/hw/misc/aspeed_lpc.h | 2 +- include/hw/misc/aspeed_peci.h | 2 +- include/hw/misc/aspeed_sbc.h | 2 +- include/hw/misc/aspeed_scu.h | 2 +- include/hw/misc/aspeed_sdmc.h | 2 +- include/hw/misc/aspeed_sli.h | 2 +- include/hw/misc/aspeed_xdma.h | 2 +- include/hw/misc/avr_power.h | 2 +- include/hw/misc/bcm2835_cprman.h | 2 +- include/hw/misc/bcm2835_mbox.h | 2 +- include/hw/misc/bcm2835_mphi.h | 2 +- include/hw/misc/bcm2835_powermgt.h | 2 +- include/hw/misc/bcm2835_property.h | 2 +- include/hw/misc/bcm2835_rng.h | 2 +- include/hw/misc/bcm2835_thermal.h | 2 +- include/hw/misc/djmemc.h | 2 +- include/hw/misc/imx6_src.h | 2 +- include/hw/misc/imx7_gpr.h | 2 +- include/hw/misc/imx7_snvs.h | 2 +- include/hw/misc/imx7_src.h | 2 +- include/hw/misc/imx8mp_analog.h | 2 +- include/hw/misc/imx_ccm.h | 2 +- include/hw/misc/imx_rngc.h | 2 +- include/hw/misc/iotkit-secctl.h | 2 +- include/hw/misc/iotkit-sysctl.h | 2 +- include/hw/misc/iotkit-sysinfo.h | 2 +- include/hw/misc/ivshmem-flat.h | 2 +- include/hw/misc/lasi.h | 2 +- include/hw/misc/mac_via.h | 2 +- include/hw/misc/macio/gpio.h | 2 +- include/hw/misc/max78000_aes.h | 2 +- include/hw/misc/max78000_gcr.h | 2 +- include/hw/misc/max78000_icc.h | 2 +- include/hw/misc/max78000_trng.h | 2 +- include/hw/misc/mchp_pfsoc_dmc.h | 2 +- include/hw/misc/mchp_pfsoc_ioscb.h | 2 +- include/hw/misc/mchp_pfsoc_sysreg.h | 2 +- include/hw/misc/mips_cmgcr.h | 2 +- include/hw/misc/mips_cpc.h | 2 +- include/hw/misc/mips_itu.h | 2 +- include/hw/misc/mos6522.h | 2 +- include/hw/misc/mps2-fpgaio.h | 2 +- include/hw/misc/mps2-scc.h | 2 +- include/hw/misc/msf2-sysreg.h | 2 +- include/hw/misc/npcm7xx_mft.h | 2 +- include/hw/misc/npcm7xx_pwm.h | 2 +- include/hw/misc/npcm7xx_rng.h | 2 +- include/hw/misc/npcm_clk.h | 2 +- include/hw/misc/npcm_gcr.h | 2 +- include/hw/misc/nrf51_rng.h | 2 +- include/hw/misc/sifive_e_aon.h | 2 +- include/hw/misc/sifive_e_prci.h | 2 +- include/hw/misc/sifive_test.h | 2 +- include/hw/misc/sifive_u_otp.h | 2 +- include/hw/misc/sifive_u_prci.h | 2 +- include/hw/misc/stm32_rcc.h | 2 +- include/hw/misc/stm32f2xx_syscfg.h | 2 +- include/hw/misc/stm32f4xx_exti.h | 2 +- include/hw/misc/stm32f4xx_syscfg.h | 2 +- include/hw/misc/stm32l4x5_exti.h | 2 +- include/hw/misc/stm32l4x5_rcc.h | 2 +- include/hw/misc/stm32l4x5_syscfg.h | 2 +- include/hw/misc/tz-mpc.h | 2 +- include/hw/misc/tz-msc.h | 2 +- include/hw/misc/tz-ppc.h | 2 +- include/hw/misc/unimp.h | 2 +- include/hw/misc/virt_ctrl.h | 2 +- include/hw/misc/xlnx-versal-cframe-reg.h | 2 +- include/hw/misc/xlnx-versal-cfu.h | 2 +- include/hw/misc/xlnx-versal-crl.h | 2 +- include/hw/misc/xlnx-versal-pmc-iou-slcr.h | 2 +- include/hw/misc/xlnx-versal-trng.h | 2 +- include/hw/misc/xlnx-versal-xramc.h | 2 +- include/hw/misc/xlnx-zynqmp-apu-ctrl.h | 2 +- include/hw/misc/xlnx-zynqmp-crf.h | 2 +- include/hw/net/allwinner-sun8i-emac.h | 2 +- include/hw/net/allwinner_emac.h | 2 +- include/hw/net/cadence_gem.h | 2 +- include/hw/net/dp8393x.h | 2 +- include/hw/net/ftgmac100.h | 2 +- include/hw/net/imx_fec.h | 2 +- include/hw/net/lan9118_phy.h | 2 +- include/hw/net/lance.h | 2 +- include/hw/net/lasi_82596.h | 2 +- include/hw/net/msf2-emac.h | 2 +- include/hw/net/npcm7xx_emc.h | 2 +- include/hw/net/npcm_gmac.h | 2 +- include/hw/net/npcm_pcs.h | 2 +- include/hw/net/xlnx-zynqmp-can.h | 2 +- include/hw/nubus/nubus.h | 2 +- include/hw/nvram/bcm2835_otp.h | 2 +- include/hw/nvram/fw_cfg.h | 2 +- include/hw/nvram/mac_nvram.h | 2 +- include/hw/nvram/npcm7xx_otp.h | 2 +- include/hw/nvram/nrf51_nvm.h | 2 +- include/hw/nvram/xlnx-bbram.h | 2 +- include/hw/nvram/xlnx-versal-efuse.h | 2 +- include/hw/nvram/xlnx-zynqmp-efuse.h | 2 +- include/hw/pci-host/aspeed_pcie.h | 2 +- include/hw/pci-host/designware.h | 2 +- include/hw/pci-host/fsl_imx8m_phy.h | 2 +- include/hw/pci-host/gpex.h | 2 +- include/hw/pci-host/xilinx-pcie.h | 2 +- include/hw/pci/pci_host.h | 2 +- include/hw/ppc/mac_dbdma.h | 2 +- include/hw/ppc/openpic.h | 2 +- include/hw/ppc/pnv.h | 2 +- include/hw/ppc/pnv_chip.h | 2 +- include/hw/ppc/pnv_pnor.h | 2 +- include/hw/ppc/pnv_psi.h | 2 +- include/hw/ppc/ppc4xx.h | 2 +- include/hw/ppc/xive.h | 2 +- include/hw/ppc/xive2.h | 2 +- include/hw/riscv/numa.h | 2 +- include/hw/riscv/riscv_hart.h | 2 +- include/hw/riscv/spike.h | 2 +- include/hw/riscv/virt.h | 2 +- include/hw/rtc/allwinner-rtc.h | 2 +- include/hw/rtc/aspeed_rtc.h | 2 +- include/hw/rtc/goldfish_rtc.h | 2 +- include/hw/rtc/pl031.h | 2 +- include/hw/rtc/xlnx-zynqmp-rtc.h | 2 +- include/hw/s390x/3270-ccw.h | 2 +- include/hw/s390x/css-bridge.h | 2 +- include/hw/s390x/s390_flic.h | 2 +- include/hw/s390x/sclp.h | 2 +- include/hw/scsi/esp.h | 2 +- include/hw/sd/allwinner-sdhost.h | 2 +- include/hw/sd/bcm2835_sdhost.h | 2 +- include/hw/sd/sdhci.h | 2 +- include/hw/sparc/sparc32_dma.h | 2 +- include/hw/sparc/sun4m_iommu.h | 2 +- include/hw/sparc/sun4u_iommu.h | 2 +- include/hw/ssi/allwinner-a10-spi.h | 2 +- include/hw/ssi/aspeed_smc.h | 2 +- include/hw/ssi/bcm2835_spi.h | 2 +- include/hw/ssi/ibex_spi_host.h | 2 +- include/hw/ssi/imx_spi.h | 2 +- include/hw/ssi/mss-spi.h | 2 +- include/hw/ssi/npcm7xx_fiu.h | 2 +- include/hw/ssi/npcm_pspi.h | 2 +- include/hw/ssi/pl022.h | 2 +- include/hw/ssi/pnv_spi.h | 2 +- include/hw/ssi/sifive_spi.h | 2 +- include/hw/ssi/stm32f2xx_spi.h | 2 +- include/hw/ssi/xilinx_spips.h | 2 +- include/hw/timer/a9gtimer.h | 2 +- include/hw/timer/allwinner-a10-pit.h | 2 +- include/hw/timer/arm_mptimer.h | 2 +- include/hw/timer/armv7m_systick.h | 2 +- include/hw/timer/avr_timer16.h | 2 +- include/hw/timer/bcm2835_systmr.h | 2 +- include/hw/timer/cadence_ttc.h | 2 +- include/hw/timer/cmsdk-apb-dualtimer.h | 2 +- include/hw/timer/cmsdk-apb-timer.h | 2 +- include/hw/timer/digic-timer.h | 2 +- include/hw/timer/ibex_timer.h | 2 +- include/hw/timer/imx_epit.h | 2 +- include/hw/timer/imx_gpt.h | 2 +- include/hw/timer/mss-timer.h | 2 +- include/hw/timer/npcm7xx_timer.h | 2 +- include/hw/timer/nrf51_timer.h | 2 +- include/hw/timer/renesas_cmt.h | 2 +- include/hw/timer/renesas_tmr.h | 2 +- include/hw/timer/sifive_pwm.h | 2 +- include/hw/timer/sse-counter.h | 2 +- include/hw/timer/sse-timer.h | 2 +- include/hw/timer/stellaris-gptm.h | 2 +- include/hw/timer/stm32f2xx_timer.h | 2 +- include/hw/tricore/tc27x_soc.h | 2 +- include/hw/tricore/tricore_testdevice.h | 2 +- include/hw/usb/imx-usb-phy.h | 2 +- include/hw/usb/xlnx-usb-subsystem.h | 2 +- include/hw/usb/xlnx-versal-usb2-ctrl-regs.h | 2 +- include/hw/virtio/virtio-mmio.h | 2 +- include/hw/watchdog/allwinner-wdt.h | 2 +- include/hw/watchdog/cmsdk-apb-watchdog.h | 2 +- include/hw/watchdog/sbsa_gwdt.h | 2 +- include/hw/watchdog/wdt_aspeed.h | 2 +- include/hw/watchdog/wdt_imx2.h | 2 +- include/hw/xen/xen_pvdev.h | 2 +- rust/hw/core/wrapper.h | 2 +- hw/acpi/cxl.c | 2 +- hw/adc/stm32f2xx_adc.c | 2 +- hw/arm/allwinner-a10.c | 2 +- hw/arm/allwinner-h3.c | 2 +- hw/arm/allwinner-r40.c | 2 +- hw/arm/armsse.c | 2 +- hw/arm/armv7m.c | 2 +- hw/arm/bcm2836.c | 2 +- hw/arm/bcm2838.c | 2 +- hw/arm/collie.c | 2 +- hw/arm/exynos4210.c | 2 +- hw/arm/exynos4_boards.c | 2 +- hw/arm/highbank.c | 2 +- hw/arm/integratorcp.c | 2 +- hw/arm/musicpal.c | 2 +- hw/arm/nrf51_soc.c | 2 +- hw/arm/omap1.c | 2 +- hw/arm/realview.c | 2 +- hw/arm/smmuv3.c | 2 +- hw/arm/stellaris.c | 2 +- hw/arm/strongarm.c | 2 +- hw/arm/versatilepb.c | 2 +- hw/arm/vexpress.c | 2 +- hw/arm/virt.c | 2 +- hw/arm/xilinx_zynq.c | 2 +- hw/arm/xlnx-versal-virt.c | 2 +- hw/arm/xlnx-versal.c | 2 +- hw/audio/asc.c | 2 +- hw/audio/cs4231.c | 2 +- hw/audio/marvell_88w8618.c | 2 +- hw/audio/pl041.c | 2 +- hw/avr/atmega.c | 2 +- hw/block/fdc-sysbus.c | 2 +- hw/block/pflash_cfi01.c | 2 +- hw/block/pflash_cfi02.c | 2 +- hw/block/swim.c | 2 +- hw/char/cadence_uart.c | 2 +- hw/char/cmsdk-apb-uart.c | 2 +- hw/char/digic-uart.c | 2 +- hw/char/escc.c | 2 +- hw/char/exynos4210_uart.c | 2 +- hw/char/goldfish_tty.c | 2 +- hw/char/grlib_apbuart.c | 2 +- hw/char/mcf_uart.c | 2 +- hw/char/pl011.c | 2 +- hw/char/sh_serial.c | 2 +- hw/char/xilinx_uartlite.c | 2 +- hw/core/qdev.c | 2 +- hw/core/sysbus.c | 2 +- hw/display/artist.c | 2 +- hw/display/cg3.c | 2 +- hw/display/exynos4210_fimd.c | 2 +- hw/display/g364fb.c | 2 +- hw/display/jazz_led.c | 2 +- hw/display/macfb.c | 2 +- hw/display/pl110.c | 2 +- hw/display/sm501.c | 2 +- hw/display/tcx.c | 2 +- hw/display/vga-mmio.c | 2 +- hw/dma/pl080.c | 2 +- hw/dma/pl330.c | 2 +- hw/dma/rc4030.c | 2 +- hw/dma/sifive_pdma.c | 2 +- hw/dma/sparc32_dma.c | 2 +- hw/dma/xilinx_axidma.c | 2 +- hw/dma/xlnx_csu_dma.c | 2 +- hw/gpio/bcm2835_gpio.c | 2 +- hw/gpio/bcm2838_gpio.c | 2 +- hw/gpio/gpio_key.c | 2 +- hw/gpio/gpio_pwr.c | 2 +- hw/gpio/mpc8xxx.c | 2 +- hw/gpio/omap_gpio.c | 2 +- hw/gpio/pl061.c | 2 +- hw/gpio/zaurus.c | 2 +- hw/hyperv/vmbus.c | 2 +- hw/i2c/aspeed_i2c.c | 2 +- hw/i2c/bitbang_i2c.c | 2 +- hw/i2c/exynos4210_i2c.c | 2 +- hw/i2c/i2c_mux_pca954x.c | 2 +- hw/i2c/mpc_i2c.c | 2 +- hw/i2c/omap_i2c.c | 2 +- hw/i386/intel_iommu.c | 2 +- hw/i386/kvm/clock.c | 2 +- hw/i386/kvm/xen_evtchn.c | 2 +- hw/i386/kvm/xen_gnttab.c | 2 +- hw/i386/kvm/xen_overlay.c | 2 +- hw/i386/kvm/xen_primary_console.c | 2 +- hw/i386/kvm/xen_xenstore.c | 2 +- hw/i386/microvm-dt.c | 2 +- hw/i386/nitro_enclave.c | 2 +- hw/i386/pc_piix.c | 2 +- hw/i386/pc_sysfw.c | 2 +- hw/i386/vapic.c | 2 +- hw/i386/x86-iommu.c | 2 +- hw/ide/mmio.c | 2 +- hw/input/lasips2.c | 2 +- hw/input/pl050.c | 2 +- hw/input/ps2.c | 2 +- hw/intc/allwinner-a10-pic.c | 2 +- hw/intc/apic_common.c | 2 +- hw/intc/arm_gic.c | 2 +- hw/intc/arm_gicv2m.c | 2 +- hw/intc/armv7m_nvic.c | 2 +- hw/intc/exynos4210_combiner.c | 2 +- hw/intc/exynos4210_gic.c | 2 +- hw/intc/goldfish_pic.c | 2 +- hw/intc/grlib_irqmp.c | 2 +- hw/intc/ioapic_common.c | 2 +- hw/intc/loongarch_dintc.c | 2 +- hw/intc/loongarch_pch_msi.c | 2 +- hw/intc/loongson_ipi_common.c | 2 +- hw/intc/mips_gic.c | 2 +- hw/intc/omap_intc.c | 2 +- hw/intc/ompic.c | 2 +- hw/intc/openpic.c | 2 +- hw/intc/openpic_kvm.c | 2 +- hw/intc/pl190.c | 2 +- hw/intc/riscv_aclint.c | 2 +- hw/intc/riscv_aplic.c | 2 +- hw/intc/riscv_imsic.c | 2 +- hw/intc/s390_flic.c | 2 +- hw/intc/sifive_plic.c | 2 +- hw/intc/slavio_intctl.c | 2 +- hw/intc/xilinx_intc.c | 2 +- hw/intc/xlnx-pmu-iomod-intc.c | 2 +- hw/intc/xlnx-zynqmp-ipi.c | 2 +- hw/isa/isa-bus.c | 2 +- hw/m68k/mcf5206.c | 2 +- hw/m68k/mcf5208.c | 2 +- hw/m68k/mcf_intc.c | 2 +- hw/m68k/next-cube.c | 2 +- hw/m68k/next-kbd.c | 2 +- hw/m68k/q800.c | 2 +- hw/m68k/virt.c | 2 +- hw/mem/sparse-mem.c | 2 +- hw/microblaze/petalogix_ml605_mmu.c | 2 +- hw/microblaze/petalogix_s3adsp1800_mmu.c | 2 +- hw/mips/jazz.c | 2 +- hw/mips/malta.c | 2 +- hw/misc/allwinner-a10-ccm.c | 2 +- hw/misc/allwinner-a10-dramc.c | 2 +- hw/misc/allwinner-cpucfg.c | 2 +- hw/misc/allwinner-h3-ccu.c | 2 +- hw/misc/allwinner-h3-dramc.c | 2 +- hw/misc/allwinner-h3-sysctrl.c | 2 +- hw/misc/allwinner-r40-ccu.c | 2 +- hw/misc/allwinner-r40-dramc.c | 2 +- hw/misc/allwinner-sid.c | 2 +- hw/misc/allwinner-sramc.c | 2 +- hw/misc/arm_integrator_debug.c | 2 +- hw/misc/arm_l2x0.c | 2 +- hw/misc/arm_sysctl.c | 2 +- hw/misc/armsse-cpu-pwrctrl.c | 2 +- hw/misc/armsse-cpuid.c | 2 +- hw/misc/armsse-mhu.c | 2 +- hw/misc/eccmemctl.c | 2 +- hw/misc/empty_slot.c | 2 +- hw/misc/exynos4210_clk.c | 2 +- hw/misc/exynos4210_pmu.c | 2 +- hw/misc/exynos4210_rng.c | 2 +- hw/misc/grlib_ahb_apb_pnp.c | 2 +- hw/misc/iosb.c | 2 +- hw/misc/iotkit-secctl.c | 2 +- hw/misc/iotkit-sysctl.c | 2 +- hw/misc/iotkit-sysinfo.c | 2 +- hw/misc/ivshmem-flat.c | 2 +- hw/misc/mac_via.c | 2 +- hw/misc/mchp_pfsoc_dmc.c | 2 +- hw/misc/mchp_pfsoc_ioscb.c | 2 +- hw/misc/mchp_pfsoc_sysreg.c | 2 +- hw/misc/mips_cmgcr.c | 2 +- hw/misc/mips_cpc.c | 2 +- hw/misc/mps2-fpgaio.c | 2 +- hw/misc/mps2-scc.c | 2 +- hw/misc/pvpanic-mmio.c | 2 +- hw/misc/sbsa_ec.c | 2 +- hw/misc/sifive_e_prci.c | 2 +- hw/misc/sifive_test.c | 2 +- hw/misc/sifive_u_otp.c | 2 +- hw/misc/sifive_u_prci.c | 2 +- hw/misc/slavio_misc.c | 2 +- hw/misc/tz-mpc.c | 2 +- hw/misc/tz-msc.c | 2 +- hw/misc/tz-ppc.c | 2 +- hw/misc/unimp.c | 2 +- hw/misc/virt_ctrl.c | 2 +- hw/misc/xlnx-versal-cframe-reg.c | 2 +- hw/misc/xlnx-versal-cfu.c | 2 +- hw/misc/xlnx-versal-crl.c | 2 +- hw/misc/xlnx-versal-pmc-iou-slcr.c | 2 +- hw/misc/xlnx-versal-xramc.c | 2 +- hw/misc/xlnx-zynqmp-apu-ctrl.c | 2 +- hw/misc/xlnx-zynqmp-crf.c | 2 +- hw/misc/zynq_slcr.c | 2 +- hw/net/allwinner-sun8i-emac.c | 2 +- hw/net/allwinner_emac.c | 2 +- hw/net/can/xlnx-versal-canfd.c | 2 +- hw/net/can/xlnx-zynqmp-can.c | 2 +- hw/net/dp8393x.c | 2 +- hw/net/fsl_etsec/etsec.c | 2 +- hw/net/lan9118.c | 2 +- hw/net/lasi_i82596.c | 2 +- hw/net/mcf_fec.c | 2 +- hw/net/mv88w8618_eth.c | 2 +- hw/net/opencores_eth.c | 2 +- hw/net/smc91c111.c | 2 +- hw/net/stellaris_enet.c | 2 +- hw/net/xgmac.c | 2 +- hw/net/xilinx_axienet.c | 2 +- hw/net/xilinx_ethlite.c | 2 +- hw/nubus/mac-nubus-bridge.c | 2 +- hw/nubus/nubus-bridge.c | 2 +- hw/nvram/ds1225y.c | 2 +- hw/nvram/fw_cfg.c | 2 +- hw/openrisc/openrisc_sim.c | 2 +- hw/openrisc/virt.c | 2 +- hw/pci-bridge/cxl_root_port.c | 2 +- hw/pci-host/i440fx.c | 2 +- hw/pci-host/mv64361.c | 2 +- hw/pci-host/sabre.c | 2 +- hw/pci-host/sh_pci.c | 2 +- hw/pci-host/versatile.c | 2 +- hw/ppc/e500.c | 2 +- hw/ppc/e500plat.c | 2 +- hw/ppc/mac_newworld.c | 2 +- hw/ppc/mpc8544_guts.c | 2 +- hw/ppc/pegasos.c | 2 +- hw/ppc/pnv_xscom.c | 2 +- hw/ppc/ppc440_bamboo.c | 2 +- hw/ppc/ppce500_spin.c | 2 +- hw/ppc/sam460ex.c | 2 +- hw/ppc/spapr_pci.c | 2 +- hw/ppc/spapr_vio.c | 2 +- hw/ppc/virtex_ml507.c | 2 +- hw/riscv/microblaze-v-generic.c | 2 +- hw/riscv/microchip_pfsoc.c | 2 +- hw/riscv/riscv-iommu-sys.c | 2 +- hw/riscv/riscv_hart.c | 2 +- hw/riscv/sifive_e.c | 2 +- hw/riscv/sifive_u.c | 2 +- hw/riscv/spike.c | 2 +- hw/riscv/virt.c | 2 +- hw/rtc/allwinner-rtc.c | 2 +- hw/rtc/exynos4210_rtc.c | 2 +- hw/rtc/goldfish_rtc.c | 2 +- hw/rtc/ls7a_rtc.c | 2 +- hw/rtc/m48t59.c | 2 +- hw/rtc/pl031.c | 2 +- hw/rtc/sun4v-rtc.c | 2 +- hw/rtc/xlnx-zynqmp-rtc.c | 2 +- hw/rx/rx62n.c | 2 +- hw/s390x/ap-bridge.c | 2 +- hw/s390x/css-bridge.c | 2 +- hw/scsi/esp.c | 2 +- hw/scsi/lasi_ncr710.c | 2 +- hw/scsi/ncr53c710.c | 2 +- hw/sd/omap_mmc.c | 2 +- hw/sd/pl181.c | 2 +- hw/sh4/r2d.c | 2 +- hw/sh4/sh7750.c | 2 +- hw/sparc/sun4m.c | 2 +- hw/sparc/sun4m_iommu.c | 2 +- hw/sparc64/sun4u.c | 2 +- hw/sparc64/sun4u_iommu.c | 2 +- hw/ssi/aspeed_smc.c | 2 +- hw/ssi/pl022.c | 2 +- hw/ssi/sifive_spi.c | 2 +- hw/ssi/xilinx_spi.c | 2 +- hw/ssi/xilinx_spips.c | 2 +- hw/ssi/xlnx-versal-ospi.c | 2 +- hw/timer/allwinner-a10-pit.c | 2 +- hw/timer/arm_timer.c | 2 +- hw/timer/armv7m_systick.c | 2 +- hw/timer/aspeed_timer.c | 2 +- hw/timer/cadence_ttc.c | 2 +- hw/timer/cmsdk-apb-dualtimer.c | 2 +- hw/timer/cmsdk-apb-timer.c | 2 +- hw/timer/digic-timer.c | 2 +- hw/timer/exynos4210_mct.c | 2 +- hw/timer/exynos4210_pwm.c | 2 +- hw/timer/grlib_gptimer.c | 2 +- hw/timer/hpet.c | 2 +- hw/timer/pxa2xx_timer.c | 2 +- hw/timer/slavio_timer.c | 2 +- hw/timer/sse-counter.c | 2 +- hw/timer/sse-timer.c | 2 +- hw/timer/xilinx_timer.c | 2 +- hw/tpm/tpm_tis_i2c.c | 2 +- hw/tpm/tpm_tis_sysbus.c | 2 +- hw/tricore/tc27x_soc.c | 2 +- hw/tricore/tricore_testdevice.c | 2 +- hw/uefi/var-service-sysbus.c | 2 +- hw/usb/hcd-dwc3.c | 2 +- hw/usb/hcd-ohci-pci.c | 2 +- hw/usb/hcd-ohci-sysbus.c | 2 +- hw/usb/hcd-ohci.c | 2 +- hw/usb/xlnx-usb-subsystem.c | 2 +- hw/usb/xlnx-versal-usb2-ctrl-regs.c | 2 +- hw/virtio/virtio-mmio.c | 2 +- hw/vmapple/aes.c | 2 +- hw/vmapple/bdif.c | 2 +- hw/vmapple/cfg.c | 2 +- hw/vmapple/vmapple.c | 2 +- hw/watchdog/allwinner-wdt.c | 2 +- hw/watchdog/cmsdk-apb-watchdog.c | 2 +- hw/watchdog/wdt_aspeed.c | 2 +- hw/xen/xen-bus.c | 2 +- hw/xen/xen-legacy-backend.c | 2 +- hw/xtensa/xtfpga.c | 2 +- system/qdev-monitor.c | 2 +- hw/display/apple-gfx-mmio.m | 2 +- 633 files changed, 632 insertions(+), 632 deletions(-) rename include/hw/{ =3D> core}/sysbus.h (100%) diff --git a/hw/i386/kvm/xen_evtchn.h b/hw/i386/kvm/xen_evtchn.h index 0521ebc0922..8d339db5601 100644 --- a/hw/i386/kvm/xen_evtchn.h +++ b/hw/i386/kvm/xen_evtchn.h @@ -12,7 +12,7 @@ #ifndef QEMU_XEN_EVTCHN_H #define QEMU_XEN_EVTCHN_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 typedef uint32_t evtchn_port_t; =20 diff --git a/hw/intc/ioapic_internal.h b/hw/intc/ioapic_internal.h index 51205767f44..499b997d4b7 100644 --- a/hw/intc/ioapic_internal.h +++ b/hw/intc/ioapic_internal.h @@ -24,7 +24,7 @@ =20 #include "system/memory.h" #include "hw/intc/ioapic.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/notify.h" #include "qom/object.h" =20 diff --git a/hw/net/fsl_etsec/etsec.h b/hw/net/fsl_etsec/etsec.h index ca8ad5638a3..24e1344bf1e 100644 --- a/hw/net/fsl_etsec/etsec.h +++ b/hw/net/fsl_etsec/etsec.h @@ -25,7 +25,7 @@ #ifndef ETSEC_H #define ETSEC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "net/net.h" #include "hw/core/ptimer.h" #include "qom/object.h" diff --git a/hw/ppc/e500-ccsr.h b/hw/ppc/e500-ccsr.h index 249c17be3b8..4de006b4434 100644 --- a/hw/ppc/e500-ccsr.h +++ b/hw/ppc/e500-ccsr.h @@ -1,7 +1,7 @@ #ifndef E500_CCSR_H #define E500_CCSR_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 struct PPCE500CCSRState { diff --git a/hw/scsi/lasi_ncr710.h b/hw/scsi/lasi_ncr710.h index 058718068e8..99be001fc3c 100644 --- a/hw/scsi/lasi_ncr710.h +++ b/hw/scsi/lasi_ncr710.h @@ -14,7 +14,7 @@ #ifndef HW_LASI_NCR710_H #define HW_LASI_NCR710_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/osdep.h" #include "exec/memattrs.h" #include "hw/scsi/scsi.h" diff --git a/hw/scsi/ncr53c710.h b/hw/scsi/ncr53c710.h index 9ae64a182d5..a8dc92f4ef8 100644 --- a/hw/scsi/ncr53c710.h +++ b/hw/scsi/ncr53c710.h @@ -16,7 +16,7 @@ #define HW_NCR53C710_H =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/scsi/scsi.h" #include "qemu/fifo8.h" #include "qom/object.h" diff --git a/hw/usb/hcd-dwc2.h b/hw/usb/hcd-dwc2.h index a99409a654b..68877661ca0 100644 --- a/hw/usb/hcd-dwc2.h +++ b/hw/usb/hcd-dwc2.h @@ -21,7 +21,7 @@ =20 #include "qemu/timer.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/usb/usb.h" #include "system/dma.h" #include "qom/object.h" diff --git a/hw/usb/hcd-ehci.h b/hw/usb/hcd-ehci.h index c16717294d3..0ae8c06331a 100644 --- a/hw/usb/hcd-ehci.h +++ b/hw/usb/hcd-ehci.h @@ -22,7 +22,7 @@ #include "hw/usb/usb.h" #include "system/dma.h" #include "hw/pci/pci_device.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #ifndef EHCI_DEBUG #define EHCI_DEBUG 0 diff --git a/hw/usb/hcd-ohci.h b/hw/usb/hcd-ohci.h index 75e266de90b..243cd1f46ac 100644 --- a/hw/usb/hcd-ohci.h +++ b/hw/usb/hcd-ohci.h @@ -21,7 +21,7 @@ #ifndef HCD_OHCI_H #define HCD_OHCI_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "system/dma.h" #include "hw/usb/usb.h" #include "qom/object.h" diff --git a/hw/usb/hcd-xhci-sysbus.h b/hw/usb/hcd-xhci-sysbus.h index f8175470bab..0ce6b6d9896 100644 --- a/hw/usb/hcd-xhci-sysbus.h +++ b/hw/usb/hcd-xhci-sysbus.h @@ -13,7 +13,7 @@ =20 #include "hw/usb/usb.h" #include "hcd-xhci.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define XHCI_SYSBUS(obj) \ OBJECT_CHECK(XHCISysbusState, (obj), TYPE_XHCI_SYSBUS) diff --git a/include/hw/acpi/generic_event_device.h b/include/hw/acpi/gener= ic_event_device.h index 130c014d3f0..7cbfb5fe7d7 100644 --- a/include/hw/acpi/generic_event_device.h +++ b/include/hw/acpi/generic_event_device.h @@ -59,7 +59,7 @@ #ifndef HW_ACPI_GENERIC_EVENT_DEVICE_H #define HW_ACPI_GENERIC_EVENT_DEVICE_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/acpi/memory_hotplug.h" #include "hw/acpi/ghes.h" #include "hw/acpi/cpu.h" diff --git a/include/hw/adc/aspeed_adc.h b/include/hw/adc/aspeed_adc.h index f502f197ac0..75c00b03255 100644 --- a/include/hw/adc/aspeed_adc.h +++ b/include/hw/adc/aspeed_adc.h @@ -11,7 +11,7 @@ #ifndef HW_ADC_ASPEED_ADC_H #define HW_ADC_ASPEED_ADC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define TYPE_ASPEED_ADC "aspeed.adc" #define TYPE_ASPEED_2400_ADC TYPE_ASPEED_ADC "-ast2400" diff --git a/include/hw/adc/npcm7xx_adc.h b/include/hw/adc/npcm7xx_adc.h index 02dc1902fce..867e4c767c0 100644 --- a/include/hw/adc/npcm7xx_adc.h +++ b/include/hw/adc/npcm7xx_adc.h @@ -18,7 +18,7 @@ =20 #include "hw/core/clock.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/timer.h" =20 #define NPCM7XX_ADC_NUM_INPUTS 8 diff --git a/include/hw/adc/stm32f2xx_adc.h b/include/hw/adc/stm32f2xx_adc.h index 42b48981f24..2af21f1852d 100644 --- a/include/hw/adc/stm32f2xx_adc.h +++ b/include/hw/adc/stm32f2xx_adc.h @@ -25,7 +25,7 @@ #ifndef HW_STM32F2XX_ADC_H #define HW_STM32F2XX_ADC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define ADC_SR 0x00 diff --git a/include/hw/adc/zynq-xadc.h b/include/hw/adc/zynq-xadc.h index c10cc4c379c..9b4943681b8 100644 --- a/include/hw/adc/zynq-xadc.h +++ b/include/hw/adc/zynq-xadc.h @@ -15,7 +15,7 @@ #ifndef ZYNQ_XADC_H #define ZYNQ_XADC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define ZYNQ_XADC_MMIO_SIZE 0x0020 diff --git a/include/hw/arm/armsse.h b/include/hw/arm/armsse.h index 414e553600d..bdf2d4db8e2 100644 --- a/include/hw/arm/armsse.h +++ b/include/hw/arm/armsse.h @@ -93,7 +93,7 @@ #ifndef ARMSSE_H #define ARMSSE_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/arm/armv7m.h" #include "hw/misc/iotkit-secctl.h" #include "hw/misc/tz-ppc.h" diff --git a/include/hw/arm/armv7m.h b/include/hw/arm/armv7m.h index e31888cc8cd..98ad08db036 100644 --- a/include/hw/arm/armv7m.h +++ b/include/hw/arm/armv7m.h @@ -10,7 +10,7 @@ #ifndef HW_ARM_ARMV7M_H #define HW_ARM_ARMV7M_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/intc/armv7m_nvic.h" #include "hw/misc/armv7m_ras.h" #include "target/arm/idau.h" diff --git a/include/hw/arm/bcm2835_peripherals.h b/include/hw/arm/bcm2835_= peripherals.h index d46d892956d..bf35bb18e54 100644 --- a/include/hw/arm/bcm2835_peripherals.h +++ b/include/hw/arm/bcm2835_peripherals.h @@ -12,7 +12,7 @@ #ifndef BCM2835_PERIPHERALS_H #define BCM2835_PERIPHERALS_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/char/pl011.h" #include "hw/char/bcm2835_aux.h" #include "hw/display/bcm2835_fb.h" diff --git a/include/hw/arm/exynos4210.h b/include/hw/arm/exynos4210.h index fbe4370219d..b29e7243c72 100644 --- a/include/hw/arm/exynos4210.h +++ b/include/hw/arm/exynos4210.h @@ -25,7 +25,7 @@ #define EXYNOS4210_H =20 #include "hw/core/or-irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/cpu/a9mpcore.h" #include "hw/intc/exynos4210_gic.h" #include "hw/intc/exynos4210_combiner.h" diff --git a/include/hw/arm/fsl-imx8mp.h b/include/hw/arm/fsl-imx8mp.h index 1275df22f19..4b367b754c6 100644 --- a/include/hw/arm/fsl-imx8mp.h +++ b/include/hw/arm/fsl-imx8mp.h @@ -26,7 +26,7 @@ #include "hw/timer/imx_gpt.h" #include "hw/usb/hcd-dwc3.h" #include "hw/watchdog/wdt_imx2.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" #include "qemu/units.h" =20 diff --git a/include/hw/arm/nrf51_soc.h b/include/hw/arm/nrf51_soc.h index 94d7fc62ac4..f759d007a13 100644 --- a/include/hw/arm/nrf51_soc.h +++ b/include/hw/arm/nrf51_soc.h @@ -10,7 +10,7 @@ #ifndef NRF51_SOC_H #define NRF51_SOC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/arm/armv7m.h" #include "hw/char/nrf51_uart.h" #include "hw/misc/nrf51_rng.h" diff --git a/include/hw/arm/smmu-common.h b/include/hw/arm/smmu-common.h index 80d0fecfde8..48368c8e894 100644 --- a/include/hw/arm/smmu-common.h +++ b/include/hw/arm/smmu-common.h @@ -19,7 +19,7 @@ #ifndef HW_ARM_SMMU_COMMON_H #define HW_ARM_SMMU_COMMON_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/pci/pci.h" #include "qom/object.h" =20 diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index e1fb1f4cf5b..4c4599add1d 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -13,7 +13,7 @@ #ifndef XLNX_VERSAL_H #define XLNX_VERSAL_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" #include "net/can_emu.h" #include "hw/arm/xlnx-versal-version.h" diff --git a/include/hw/audio/asc.h b/include/hw/audio/asc.h index bb51e9a3d19..f4aefbfe5a5 100644 --- a/include/hw/audio/asc.h +++ b/include/hw/audio/asc.h @@ -13,7 +13,7 @@ #ifndef HW_AUDIO_ASC_H #define HW_AUDIO_ASC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/audio.h" =20 #define ASC_FREQ 22257 diff --git a/include/hw/block/swim.h b/include/hw/block/swim.h index 5f567e8d595..e8998f57c4b 100644 --- a/include/hw/block/swim.h +++ b/include/hw/block/swim.h @@ -12,7 +12,7 @@ #define SWIM_H =20 #include "hw/block/block.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define SWIM_MAX_FD 2 diff --git a/include/hw/char/avr_usart.h b/include/hw/char/avr_usart.h index bd2d488f9a1..8af7a5d1eec 100644 --- a/include/hw/char/avr_usart.h +++ b/include/hw/char/avr_usart.h @@ -22,7 +22,7 @@ #ifndef HW_CHAR_AVR_USART_H #define HW_CHAR_AVR_USART_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "chardev/char-fe.h" #include "qom/object.h" =20 diff --git a/include/hw/char/bcm2835_aux.h b/include/hw/char/bcm2835_aux.h index a11134f216f..c5ce148bbce 100644 --- a/include/hw/char/bcm2835_aux.h +++ b/include/hw/char/bcm2835_aux.h @@ -9,7 +9,7 @@ #ifndef BCM2835_AUX_H #define BCM2835_AUX_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "chardev/char-fe.h" #include "qom/object.h" =20 diff --git a/include/hw/char/cadence_uart.h b/include/hw/char/cadence_uart.h index ad09fbdf32c..751a751248f 100644 --- a/include/hw/char/cadence_uart.h +++ b/include/hw/char/cadence_uart.h @@ -20,7 +20,7 @@ #define CADENCE_UART_H =20 #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "chardev/char-fe.h" #include "qapi/error.h" #include "qemu/timer.h" diff --git a/include/hw/char/cmsdk-apb-uart.h b/include/hw/char/cmsdk-apb-u= art.h index 3d0af26cebc..0c62b7f2f50 100644 --- a/include/hw/char/cmsdk-apb-uart.h +++ b/include/hw/char/cmsdk-apb-uart.h @@ -12,7 +12,7 @@ #ifndef CMSDK_APB_UART_H #define CMSDK_APB_UART_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "chardev/char-fe.h" #include "qom/object.h" =20 diff --git a/include/hw/char/digic-uart.h b/include/hw/char/digic-uart.h index 3eebdab8a01..6f67b70dfd5 100644 --- a/include/hw/char/digic-uart.h +++ b/include/hw/char/digic-uart.h @@ -18,7 +18,7 @@ #ifndef HW_CHAR_DIGIC_UART_H #define HW_CHAR_DIGIC_UART_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "chardev/char-fe.h" #include "qom/object.h" =20 diff --git a/include/hw/char/escc.h b/include/hw/char/escc.h index 857f64699e3..9e60175b778 100644 --- a/include/hw/char/escc.h +++ b/include/hw/char/escc.h @@ -3,7 +3,7 @@ =20 #include "chardev/char-fe.h" #include "chardev/char-serial.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "ui/input.h" #include "qom/object.h" =20 diff --git a/include/hw/char/goldfish_tty.h b/include/hw/char/goldfish_tty.h index 70fdedd1d0f..a696362fa55 100644 --- a/include/hw/char/goldfish_tty.h +++ b/include/hw/char/goldfish_tty.h @@ -12,7 +12,7 @@ =20 #include "qemu/fifo8.h" #include "chardev/char-fe.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define TYPE_GOLDFISH_TTY "goldfish_tty" OBJECT_DECLARE_SIMPLE_TYPE(GoldfishTTYState, GOLDFISH_TTY) diff --git a/include/hw/char/ibex_uart.h b/include/hw/char/ibex_uart.h index 1ccbb602e61..882796e0c64 100644 --- a/include/hw/char/ibex_uart.h +++ b/include/hw/char/ibex_uart.h @@ -25,7 +25,7 @@ #ifndef HW_IBEX_UART_H #define HW_IBEX_UART_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "chardev/char-fe.h" #include "qemu/timer.h" #include "qom/object.h" diff --git a/include/hw/char/imx_serial.h b/include/hw/char/imx_serial.h index 2dcd2e6bcdd..855792b6055 100644 --- a/include/hw/char/imx_serial.h +++ b/include/hw/char/imx_serial.h @@ -18,7 +18,7 @@ #ifndef IMX_SERIAL_H #define IMX_SERIAL_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "chardev/char-fe.h" #include "qom/object.h" #include "qemu/fifo32.h" diff --git a/include/hw/char/max78000_uart.h b/include/hw/char/max78000_uar= t.h index ac93f83389a..6977c7b3f16 100644 --- a/include/hw/char/max78000_uart.h +++ b/include/hw/char/max78000_uart.h @@ -9,7 +9,7 @@ #ifndef HW_MAX78000_UART_H #define HW_MAX78000_UART_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "chardev/char-fe.h" #include "qemu/fifo8.h" #include "qom/object.h" diff --git a/include/hw/char/mchp_pfsoc_mmuart.h b/include/hw/char/mchp_pfs= oc_mmuart.h index a7b8b1b08b3..1e27732df12 100644 --- a/include/hw/char/mchp_pfsoc_mmuart.h +++ b/include/hw/char/mchp_pfsoc_mmuart.h @@ -28,7 +28,7 @@ #ifndef HW_MCHP_PFSOC_MMUART_H #define HW_MCHP_PFSOC_MMUART_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/char/serial-mm.h" =20 #define MCHP_PFSOC_MMUART_REG_COUNT 13 diff --git a/include/hw/char/nrf51_uart.h b/include/hw/char/nrf51_uart.h index 7a54db746bd..36a6c54cde1 100644 --- a/include/hw/char/nrf51_uart.h +++ b/include/hw/char/nrf51_uart.h @@ -11,7 +11,7 @@ #ifndef NRF51_UART_H #define NRF51_UART_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "chardev/char-fe.h" #include "hw/core/registerfields.h" #include "qom/object.h" diff --git a/include/hw/char/pl011.h b/include/hw/char/pl011.h index 2d4ff01c815..ff735b5234a 100644 --- a/include/hw/char/pl011.h +++ b/include/hw/char/pl011.h @@ -15,7 +15,7 @@ #ifndef HW_PL011_H #define HW_PL011_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "chardev/char-fe.h" #include "qom/object.h" =20 diff --git a/include/hw/char/renesas_sci.h b/include/hw/char/renesas_sci.h index 90e784f36a3..372e788be4c 100644 --- a/include/hw/char/renesas_sci.h +++ b/include/hw/char/renesas_sci.h @@ -10,7 +10,7 @@ #define HW_CHAR_RENESAS_SCI_H =20 #include "chardev/char-fe.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_RENESAS_SCI "renesas-sci" diff --git a/include/hw/char/serial-mm.h b/include/hw/char/serial-mm.h index 77abd098e0d..0076bdc061b 100644 --- a/include/hw/char/serial-mm.h +++ b/include/hw/char/serial-mm.h @@ -29,7 +29,7 @@ #include "hw/char/serial.h" #include "system/memory.h" #include "chardev/char.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_SERIAL_MM "serial-mm" diff --git a/include/hw/char/shakti_uart.h b/include/hw/char/shakti_uart.h index e5e775d7c9a..e77553f2b57 100644 --- a/include/hw/char/shakti_uart.h +++ b/include/hw/char/shakti_uart.h @@ -25,7 +25,7 @@ #ifndef HW_SHAKTI_UART_H #define HW_SHAKTI_UART_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "chardev/char-fe.h" =20 #define SHAKTI_UART_BAUD 0x00 diff --git a/include/hw/char/sifive_uart.h b/include/hw/char/sifive_uart.h index dea6055f872..414564b0266 100644 --- a/include/hw/char/sifive_uart.h +++ b/include/hw/char/sifive_uart.h @@ -22,7 +22,7 @@ =20 #include "chardev/char-fe.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" #include "qemu/fifo8.h" =20 diff --git a/include/hw/char/stm32f2xx_usart.h b/include/hw/char/stm32f2xx_= usart.h index f9018b8b8f6..5bb5bb28c13 100644 --- a/include/hw/char/stm32f2xx_usart.h +++ b/include/hw/char/stm32f2xx_usart.h @@ -25,7 +25,7 @@ #ifndef HW_STM32F2XX_USART_H #define HW_STM32F2XX_USART_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "chardev/char-fe.h" #include "qom/object.h" =20 diff --git a/include/hw/char/stm32l4x5_usart.h b/include/hw/char/stm32l4x5_= usart.h index cdf7419f533..3bb59fd654b 100644 --- a/include/hw/char/stm32l4x5_usart.h +++ b/include/hw/char/stm32l4x5_usart.h @@ -18,7 +18,7 @@ #ifndef HW_STM32L4X5_USART_H #define HW_STM32L4X5_USART_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "chardev/char-fe.h" #include "qom/object.h" =20 diff --git a/include/hw/core/or-irq.h b/include/hw/core/or-irq.h index c0a42f37112..1123cc518fb 100644 --- a/include/hw/core/or-irq.h +++ b/include/hw/core/or-irq.h @@ -25,7 +25,7 @@ #ifndef HW_OR_IRQ_H #define HW_OR_IRQ_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_OR_IRQ "or-irq" diff --git a/include/hw/core/platform-bus.h b/include/hw/core/platform-bus.h index 44f30c5353f..45b9d8dbc7b 100644 --- a/include/hw/core/platform-bus.h +++ b/include/hw/core/platform-bus.h @@ -22,7 +22,7 @@ * License along with this library; if not, see . */ =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 =20 diff --git a/include/hw/core/split-irq.h b/include/hw/core/split-irq.h index ff8852f4071..19e9830b763 100644 --- a/include/hw/core/split-irq.h +++ b/include/hw/core/split-irq.h @@ -35,7 +35,7 @@ #ifndef HW_SPLIT_IRQ_H #define HW_SPLIT_IRQ_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_SPLIT_IRQ "split-irq" diff --git a/include/hw/sysbus.h b/include/hw/core/sysbus.h similarity index 100% rename from include/hw/sysbus.h rename to include/hw/core/sysbus.h diff --git a/include/hw/cpu/a15mpcore.h b/include/hw/cpu/a15mpcore.h index 75d39e5458a..138f491c222 100644 --- a/include/hw/cpu/a15mpcore.h +++ b/include/hw/cpu/a15mpcore.h @@ -20,7 +20,7 @@ #ifndef HW_CPU_A15MPCORE_H #define HW_CPU_A15MPCORE_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/intc/arm_gic.h" #include "qom/object.h" =20 diff --git a/include/hw/cpu/a9mpcore.h b/include/hw/cpu/a9mpcore.h index e0396ab6af7..60765990247 100644 --- a/include/hw/cpu/a9mpcore.h +++ b/include/hw/cpu/a9mpcore.h @@ -10,7 +10,7 @@ #ifndef HW_CPU_A9MPCORE_H #define HW_CPU_A9MPCORE_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/intc/arm_gic.h" #include "hw/misc/a9scu.h" #include "hw/timer/arm_mptimer.h" diff --git a/include/hw/cpu/arm11mpcore.h b/include/hw/cpu/arm11mpcore.h index 2cac8c1232d..1a8fbc550a6 100644 --- a/include/hw/cpu/arm11mpcore.h +++ b/include/hw/cpu/arm11mpcore.h @@ -10,7 +10,7 @@ #ifndef HW_CPU_ARM11MPCORE_H #define HW_CPU_ARM11MPCORE_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/misc/arm11scu.h" #include "hw/intc/arm_gic.h" #include "hw/timer/arm_mptimer.h" diff --git a/include/hw/display/bcm2835_fb.h b/include/hw/display/bcm2835_f= b.h index acc9230b6a8..f7ef076f1f4 100644 --- a/include/hw/display/bcm2835_fb.h +++ b/include/hw/display/bcm2835_fb.h @@ -12,7 +12,7 @@ #ifndef BCM2835_FB_H #define BCM2835_FB_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define UPPER_RAM_BASE 0x40000000 diff --git a/include/hw/display/macfb.h b/include/hw/display/macfb.h index 356a03ce31a..495dead44b5 100644 --- a/include/hw/display/macfb.h +++ b/include/hw/display/macfb.h @@ -16,7 +16,7 @@ #include "system/memory.h" #include "hw/core/irq.h" #include "hw/nubus/nubus.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "ui/console.h" #include "qemu/timer.h" =20 diff --git a/include/hw/display/xlnx_dp.h b/include/hw/display/xlnx_dp.h index 9ec5a90c342..b01c77fed69 100644 --- a/include/hw/display/xlnx_dp.h +++ b/include/hw/display/xlnx_dp.h @@ -24,7 +24,7 @@ #ifndef XLNX_DP_H #define XLNX_DP_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "ui/console.h" #include "hw/misc/auxbus.h" #include "hw/i2c/i2c.h" diff --git a/include/hw/dma/bcm2835_dma.h b/include/hw/dma/bcm2835_dma.h index 1d26b1d8d0f..9c20652d4e4 100644 --- a/include/hw/dma/bcm2835_dma.h +++ b/include/hw/dma/bcm2835_dma.h @@ -8,7 +8,7 @@ #ifndef BCM2835_DMA_H #define BCM2835_DMA_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 typedef struct { diff --git a/include/hw/dma/pl080.h b/include/hw/dma/pl080.h index 3c9659e4381..6635cd8e93d 100644 --- a/include/hw/dma/pl080.h +++ b/include/hw/dma/pl080.h @@ -29,7 +29,7 @@ #ifndef HW_DMA_PL080_H #define HW_DMA_PL080_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define PL080_MAX_CHANNELS 8 diff --git a/include/hw/dma/sifive_pdma.h b/include/hw/dma/sifive_pdma.h index 8c6cfa7f325..34494ec6014 100644 --- a/include/hw/dma/sifive_pdma.h +++ b/include/hw/dma/sifive_pdma.h @@ -23,7 +23,7 @@ #ifndef SIFIVE_PDMA_H #define SIFIVE_PDMA_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 struct sifive_pdma_chan { uint32_t control; diff --git a/include/hw/dma/xlnx-zdma.h b/include/hw/dma/xlnx-zdma.h index 2d2d4aeefab..7d254c66e7d 100644 --- a/include/hw/dma/xlnx-zdma.h +++ b/include/hw/dma/xlnx-zdma.h @@ -29,7 +29,7 @@ #ifndef XLNX_ZDMA_H #define XLNX_ZDMA_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" #include "system/dma.h" #include "qom/object.h" diff --git a/include/hw/dma/xlnx-zynq-devcfg.h b/include/hw/dma/xlnx-zynq-d= evcfg.h index 8d10553c22a..3e3cc7b98ba 100644 --- a/include/hw/dma/xlnx-zynq-devcfg.h +++ b/include/hw/dma/xlnx-zynq-devcfg.h @@ -28,7 +28,7 @@ #define XLNX_ZYNQ_DEVCFG_H =20 #include "hw/core/register.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_XLNX_ZYNQ_DEVCFG "xlnx.ps7-dev-cfg" diff --git a/include/hw/dma/xlnx_csu_dma.h b/include/hw/dma/xlnx_csu_dma.h index 4d6d18fb9b5..ceb28f40bae 100644 --- a/include/hw/dma/xlnx_csu_dma.h +++ b/include/hw/dma/xlnx_csu_dma.h @@ -21,7 +21,7 @@ #ifndef XLNX_CSU_DMA_H #define XLNX_CSU_DMA_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" #include "hw/core/ptimer.h" #include "hw/core/stream.h" diff --git a/include/hw/dma/xlnx_dpdma.h b/include/hw/dma/xlnx_dpdma.h index 484b2e377f0..7cf67aef6e1 100644 --- a/include/hw/dma/xlnx_dpdma.h +++ b/include/hw/dma/xlnx_dpdma.h @@ -25,7 +25,7 @@ #ifndef XLNX_DPDMA_H #define XLNX_DPDMA_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "system/dma.h" #include "qom/object.h" =20 diff --git a/include/hw/fsi/aspeed_apb2opb.h b/include/hw/fsi/aspeed_apb2op= b.h index 878619eafa7..e42399185ad 100644 --- a/include/hw/fsi/aspeed_apb2opb.h +++ b/include/hw/fsi/aspeed_apb2opb.h @@ -10,7 +10,7 @@ =20 #include "system/memory.h" #include "hw/fsi/fsi-master.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define TYPE_FSI_OPB "fsi.opb" =20 diff --git a/include/hw/gpio/aspeed_gpio.h b/include/hw/gpio/aspeed_gpio.h index e6b2fe71b50..0ff4539cb2d 100644 --- a/include/hw/gpio/aspeed_gpio.h +++ b/include/hw/gpio/aspeed_gpio.h @@ -10,7 +10,7 @@ #ifndef ASPEED_GPIO_H #define ASPEED_GPIO_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_ASPEED_GPIO "aspeed.gpio" diff --git a/include/hw/gpio/bcm2835_gpio.h b/include/hw/gpio/bcm2835_gpio.h index 1c53a050908..c1410ccbebf 100644 --- a/include/hw/gpio/bcm2835_gpio.h +++ b/include/hw/gpio/bcm2835_gpio.h @@ -15,7 +15,7 @@ #define BCM2835_GPIO_H =20 #include "hw/sd/sd.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 struct BCM2835GpioState { diff --git a/include/hw/gpio/bcm2838_gpio.h b/include/hw/gpio/bcm2838_gpio.h index f2a57a697f2..9324ebcbaeb 100644 --- a/include/hw/gpio/bcm2838_gpio.h +++ b/include/hw/gpio/bcm2838_gpio.h @@ -15,7 +15,7 @@ #define BCM2838_GPIO_H =20 #include "hw/sd/sd.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_BCM2838_GPIO "bcm2838-gpio" diff --git a/include/hw/gpio/imx_gpio.h b/include/hw/gpio/imx_gpio.h index 227860b9f0a..ae2afb3c0fb 100644 --- a/include/hw/gpio/imx_gpio.h +++ b/include/hw/gpio/imx_gpio.h @@ -20,7 +20,7 @@ #ifndef IMX_GPIO_H #define IMX_GPIO_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_IMX_GPIO "imx.gpio" diff --git a/include/hw/gpio/npcm7xx_gpio.h b/include/hw/gpio/npcm7xx_gpio.h index 7c0bf61a960..9b2a3f27d37 100644 --- a/include/hw/gpio/npcm7xx_gpio.h +++ b/include/hw/gpio/npcm7xx_gpio.h @@ -16,7 +16,7 @@ #define NPCM7XX_GPIO_H =20 #include "system/memory.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 /* Number of pins managed by each controller. */ #define NPCM7XX_GPIO_NR_PINS (32) diff --git a/include/hw/gpio/nrf51_gpio.h b/include/hw/gpio/nrf51_gpio.h index fcfa2bac173..661e79b9217 100644 --- a/include/hw/gpio/nrf51_gpio.h +++ b/include/hw/gpio/nrf51_gpio.h @@ -26,7 +26,7 @@ #ifndef NRF51_GPIO_H #define NRF51_GPIO_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" #define TYPE_NRF51_GPIO "nrf51_soc.gpio" OBJECT_DECLARE_SIMPLE_TYPE(NRF51GPIOState, NRF51_GPIO) diff --git a/include/hw/gpio/sifive_gpio.h b/include/hw/gpio/sifive_gpio.h index fc53785c9d0..e96cf33df68 100644 --- a/include/hw/gpio/sifive_gpio.h +++ b/include/hw/gpio/sifive_gpio.h @@ -14,7 +14,7 @@ #ifndef SIFIVE_GPIO_H #define SIFIVE_GPIO_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_SIFIVE_GPIO "sifive_soc.gpio" diff --git a/include/hw/gpio/stm32l4x5_gpio.h b/include/hw/gpio/stm32l4x5_g= pio.h index 878bd19fc9b..62197541295 100644 --- a/include/hw/gpio/stm32l4x5_gpio.h +++ b/include/hw/gpio/stm32l4x5_gpio.h @@ -19,7 +19,7 @@ #ifndef HW_STM32L4X5_GPIO_H #define HW_STM32L4X5_GPIO_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_STM32L4X5_GPIO "stm32l4x5-gpio" diff --git a/include/hw/hyperv/vmbus-bridge.h b/include/hw/hyperv/vmbus-bri= dge.h index 1e5419574ee..2cf73075c6f 100644 --- a/include/hw/hyperv/vmbus-bridge.h +++ b/include/hw/hyperv/vmbus-bridge.h @@ -10,7 +10,7 @@ #ifndef HW_HYPERV_VMBUS_BRIDGE_H #define HW_HYPERV_VMBUS_BRIDGE_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/hyperv/vmbus.h" #include "qom/object.h" =20 diff --git a/include/hw/i2c/allwinner-i2c.h b/include/hw/i2c/allwinner-i2c.h index 0e325d265ee..72836cc1017 100644 --- a/include/hw/i2c/allwinner-i2c.h +++ b/include/hw/i2c/allwinner-i2c.h @@ -24,7 +24,7 @@ #ifndef ALLWINNER_I2C_H #define ALLWINNER_I2C_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_AW_I2C "allwinner.i2c" diff --git a/include/hw/i2c/arm_sbcon_i2c.h b/include/hw/i2c/arm_sbcon_i2c.h index da9b5e8f83b..39b99f57bfb 100644 --- a/include/hw/i2c/arm_sbcon_i2c.h +++ b/include/hw/i2c/arm_sbcon_i2c.h @@ -13,7 +13,7 @@ #ifndef HW_I2C_ARM_SBCON_I2C_H #define HW_I2C_ARM_SBCON_I2C_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/i2c/bitbang_i2c.h" #include "qom/object.h" =20 diff --git a/include/hw/i2c/aspeed_i2c.h b/include/hw/i2c/aspeed_i2c.h index c9c2620a8a3..ffcff2580f0 100644 --- a/include/hw/i2c/aspeed_i2c.h +++ b/include/hw/i2c/aspeed_i2c.h @@ -21,7 +21,7 @@ #define ASPEED_I2C_H =20 #include "hw/i2c/i2c.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/registerfields.h" #include "qom/object.h" =20 diff --git a/include/hw/i2c/bcm2835_i2c.h b/include/hw/i2c/bcm2835_i2c.h index 0a56df4720b..45f876df224 100644 --- a/include/hw/i2c/bcm2835_i2c.h +++ b/include/hw/i2c/bcm2835_i2c.h @@ -24,7 +24,7 @@ * THE SOFTWARE. */ =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/i2c/i2c.h" #include "qom/object.h" =20 diff --git a/include/hw/i2c/imx_i2c.h b/include/hw/i2c/imx_i2c.h index e4f91339f58..988a3e284fb 100644 --- a/include/hw/i2c/imx_i2c.h +++ b/include/hw/i2c/imx_i2c.h @@ -21,7 +21,7 @@ #ifndef IMX_I2C_H #define IMX_I2C_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_IMX_I2C "imx.i2c" diff --git a/include/hw/i2c/microbit_i2c.h b/include/hw/i2c/microbit_i2c.h index 3c29e09bf38..a3ec27ff6c2 100644 --- a/include/hw/i2c/microbit_i2c.h +++ b/include/hw/i2c/microbit_i2c.h @@ -11,7 +11,7 @@ #ifndef MICROBIT_I2C_H #define MICROBIT_I2C_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/arm/nrf51.h" #include "qom/object.h" =20 diff --git a/include/hw/i2c/npcm7xx_smbus.h b/include/hw/i2c/npcm7xx_smbus.h index f5adb69c672..dff9bc2f6ed 100644 --- a/include/hw/i2c/npcm7xx_smbus.h +++ b/include/hw/i2c/npcm7xx_smbus.h @@ -19,7 +19,7 @@ #include "system/memory.h" #include "hw/i2c/i2c.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 /* * Number of addresses this module contains. Do not change this without diff --git a/include/hw/i2c/ppc4xx_i2c.h b/include/hw/i2c/ppc4xx_i2c.h index 4e882fa3c80..5b875eedacc 100644 --- a/include/hw/i2c/ppc4xx_i2c.h +++ b/include/hw/i2c/ppc4xx_i2c.h @@ -27,7 +27,7 @@ #ifndef PPC4XX_I2C_H #define PPC4XX_I2C_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/i2c/bitbang_i2c.h" #include "qom/object.h" =20 diff --git a/include/hw/i386/x86-iommu.h b/include/hw/i386/x86-iommu.h index e89f55a5c21..c526a047ab6 100644 --- a/include/hw/i386/x86-iommu.h +++ b/include/hw/i386/x86-iommu.h @@ -20,7 +20,7 @@ #ifndef HW_I386_X86_IOMMU_H #define HW_I386_X86_IOMMU_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/pci/msi.h" #include "qom/object.h" =20 diff --git a/include/hw/ide/ahci-sysbus.h b/include/hw/ide/ahci-sysbus.h index 06eaac8cb60..34d0c8f55ad 100644 --- a/include/hw/ide/ahci-sysbus.h +++ b/include/hw/ide/ahci-sysbus.h @@ -7,7 +7,7 @@ #define HW_IDE_AHCI_SYSBUS_H =20 #include "qom/object.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/ide/ahci.h" =20 #define TYPE_SYSBUS_AHCI "sysbus-ahci" diff --git a/include/hw/input/i8042.h b/include/hw/input/i8042.h index e90f008b667..07d749b3d04 100644 --- a/include/hw/input/i8042.h +++ b/include/hw/input/i8042.h @@ -9,7 +9,7 @@ #define HW_INPUT_I8042_H =20 #include "hw/isa/isa.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/input/ps2.h" #include "qom/object.h" =20 diff --git a/include/hw/input/lasips2.h b/include/hw/input/lasips2.h index fd74883073b..2739f752c8e 100644 --- a/include/hw/input/lasips2.h +++ b/include/hw/input/lasips2.h @@ -20,7 +20,7 @@ #define HW_INPUT_LASIPS2_H =20 #include "exec/hwaddr.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/input/ps2.h" =20 #define TYPE_LASIPS2_PORT "lasips2-port" diff --git a/include/hw/input/pl050.h b/include/hw/input/pl050.h index db662654c58..2cdfa74f73c 100644 --- a/include/hw/input/pl050.h +++ b/include/hw/input/pl050.h @@ -10,7 +10,7 @@ #ifndef HW_PL050_H #define HW_PL050_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/input/ps2.h" #include "hw/core/irq.h" diff --git a/include/hw/input/ps2.h b/include/hw/input/ps2.h index cd61a634c39..058db3e0890 100644 --- a/include/hw/input/ps2.h +++ b/include/hw/input/ps2.h @@ -25,7 +25,7 @@ #ifndef HW_PS2_H #define HW_PS2_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define PS2_MOUSE_BUTTON_LEFT 0x01 #define PS2_MOUSE_BUTTON_RIGHT 0x02 diff --git a/include/hw/input/stellaris_gamepad.h b/include/hw/input/stella= ris_gamepad.h index 51085e166ca..e011482646f 100644 --- a/include/hw/input/stellaris_gamepad.h +++ b/include/hw/input/stellaris_gamepad.h @@ -11,7 +11,7 @@ #ifndef HW_INPUT_STELLARIS_GAMEPAD_H #define HW_INPUT_STELLARIS_GAMEPAD_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 /* diff --git a/include/hw/intc/allwinner-a10-pic.h b/include/hw/intc/allwinne= r-a10-pic.h index b8364d3ed40..f22059ed85b 100644 --- a/include/hw/intc/allwinner-a10-pic.h +++ b/include/hw/intc/allwinner-a10-pic.h @@ -1,7 +1,7 @@ #ifndef ALLWINNER_A10_PIC_H #define ALLWINNER_A10_PIC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_AW_A10_PIC "allwinner-a10-pic" diff --git a/include/hw/intc/arm_gic_common.h b/include/hw/intc/arm_gic_com= mon.h index 93a3cc2bf81..b169394e6ca 100644 --- a/include/hw/intc/arm_gic_common.h +++ b/include/hw/intc/arm_gic_common.h @@ -21,7 +21,7 @@ #ifndef HW_ARM_GIC_COMMON_H #define HW_ARM_GIC_COMMON_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 /* Maximum number of possible interrupts, determined by the GIC architectu= re */ diff --git a/include/hw/intc/arm_gicv3_common.h b/include/hw/intc/arm_gicv3= _common.h index 61d51915e07..3d24ad22d28 100644 --- a/include/hw/intc/arm_gicv3_common.h +++ b/include/hw/intc/arm_gicv3_common.h @@ -24,7 +24,7 @@ #ifndef HW_ARM_GICV3_COMMON_H #define HW_ARM_GICV3_COMMON_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/intc/arm_gic_common.h" #include "qom/object.h" #include "qemu/notify.h" diff --git a/include/hw/intc/arm_gicv3_its_common.h b/include/hw/intc/arm_g= icv3_its_common.h index 3c7b543b018..05b438aa7ad 100644 --- a/include/hw/intc/arm_gicv3_its_common.h +++ b/include/hw/intc/arm_gicv3_its_common.h @@ -21,7 +21,7 @@ #ifndef QEMU_ARM_GICV3_ITS_COMMON_H #define QEMU_ARM_GICV3_ITS_COMMON_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/intc/arm_gicv3_common.h" #include "qom/object.h" =20 diff --git a/include/hw/intc/armv7m_nvic.h b/include/hw/intc/armv7m_nvic.h index 7b9964fe7e4..e699546f6a6 100644 --- a/include/hw/intc/armv7m_nvic.h +++ b/include/hw/intc/armv7m_nvic.h @@ -11,7 +11,7 @@ #define HW_ARM_ARMV7M_NVIC_H =20 #include "target/arm/cpu-qom.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/timer/armv7m_systick.h" #include "qom/object.h" =20 diff --git a/include/hw/intc/aspeed_intc.h b/include/hw/intc/aspeed_intc.h index 6dd8effcd89..5d10268fff3 100644 --- a/include/hw/intc/aspeed_intc.h +++ b/include/hw/intc/aspeed_intc.h @@ -8,7 +8,7 @@ #ifndef ASPEED_INTC_H #define ASPEED_INTC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" #include "hw/core/or-irq.h" =20 diff --git a/include/hw/intc/aspeed_vic.h b/include/hw/intc/aspeed_vic.h index 68d6ab997a1..5172f5c9137 100644 --- a/include/hw/intc/aspeed_vic.h +++ b/include/hw/intc/aspeed_vic.h @@ -13,7 +13,7 @@ #ifndef ASPEED_VIC_H #define ASPEED_VIC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_ASPEED_VIC "aspeed.vic" diff --git a/include/hw/intc/bcm2835_ic.h b/include/hw/intc/bcm2835_ic.h index 588eb76c5cb..f9ebaac8f9b 100644 --- a/include/hw/intc/bcm2835_ic.h +++ b/include/hw/intc/bcm2835_ic.h @@ -8,7 +8,7 @@ #ifndef BCM2835_IC_H #define BCM2835_IC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_BCM2835_IC "bcm2835-ic" diff --git a/include/hw/intc/bcm2836_control.h b/include/hw/intc/bcm2836_co= ntrol.h index a410c817e8f..05380f1b855 100644 --- a/include/hw/intc/bcm2836_control.h +++ b/include/hw/intc/bcm2836_control.h @@ -15,7 +15,7 @@ #ifndef BCM2836_CONTROL_H #define BCM2836_CONTROL_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/timer.h" #include "qom/object.h" =20 diff --git a/include/hw/intc/exynos4210_combiner.h b/include/hw/intc/exynos= 4210_combiner.h index bd207a7e6e4..b1db48cb880 100644 --- a/include/hw/intc/exynos4210_combiner.h +++ b/include/hw/intc/exynos4210_combiner.h @@ -23,7 +23,7 @@ #ifndef HW_INTC_EXYNOS4210_COMBINER_H #define HW_INTC_EXYNOS4210_COMBINER_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 /* * State for each output signal of internal combiner diff --git a/include/hw/intc/exynos4210_gic.h b/include/hw/intc/exynos4210_= gic.h index f64c4069c6d..6ffe57c2306 100644 --- a/include/hw/intc/exynos4210_gic.h +++ b/include/hw/intc/exynos4210_gic.h @@ -22,7 +22,7 @@ #ifndef HW_INTC_EXYNOS4210_GIC_H #define HW_INTC_EXYNOS4210_GIC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define TYPE_EXYNOS4210_GIC "exynos4210.gic" OBJECT_DECLARE_SIMPLE_TYPE(Exynos4210GicState, EXYNOS4210_GIC) diff --git a/include/hw/intc/goldfish_pic.h b/include/hw/intc/goldfish_pic.h index 3e795803672..e61df599b0d 100644 --- a/include/hw/intc/goldfish_pic.h +++ b/include/hw/intc/goldfish_pic.h @@ -10,7 +10,7 @@ #ifndef HW_INTC_GOLDFISH_PIC_H #define HW_INTC_GOLDFISH_PIC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define TYPE_GOLDFISH_PIC "goldfish_pic" OBJECT_DECLARE_SIMPLE_TYPE(GoldfishPICState, GOLDFISH_PIC) diff --git a/include/hw/intc/grlib_irqmp.h b/include/hw/intc/grlib_irqmp.h index a76acbf9403..e39496ca5df 100644 --- a/include/hw/intc/grlib_irqmp.h +++ b/include/hw/intc/grlib_irqmp.h @@ -27,7 +27,7 @@ #ifndef GRLIB_IRQMP_H #define GRLIB_IRQMP_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 /* Emulation of GrLib device is base on the GRLIB IP Core User's Manual: * http://www.gaisler.com/products/grlib/grip.pdf diff --git a/include/hw/intc/heathrow_pic.h b/include/hw/intc/heathrow_pic.h index c0a7f6f5460..cfd8a8df2b2 100644 --- a/include/hw/intc/heathrow_pic.h +++ b/include/hw/intc/heathrow_pic.h @@ -26,7 +26,7 @@ #ifndef HW_INTC_HEATHROW_PIC_H #define HW_INTC_HEATHROW_PIC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_HEATHROW "heathrow" diff --git a/include/hw/intc/imx_avic.h b/include/hw/intc/imx_avic.h index 75fbd1a89c7..82ce9037eda 100644 --- a/include/hw/intc/imx_avic.h +++ b/include/hw/intc/imx_avic.h @@ -17,7 +17,7 @@ #ifndef IMX_AVIC_H #define IMX_AVIC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_IMX_AVIC "imx.avic" diff --git a/include/hw/intc/imx_gpcv2.h b/include/hw/intc/imx_gpcv2.h index 7bdee7e80a1..7a3441ac657 100644 --- a/include/hw/intc/imx_gpcv2.h +++ b/include/hw/intc/imx_gpcv2.h @@ -1,7 +1,7 @@ #ifndef IMX_GPCV2_H #define IMX_GPCV2_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 enum IMXGPCv2Registers { diff --git a/include/hw/intc/loongarch_dintc.h b/include/hw/intc/loongarch_= dintc.h index 01bb1e465cb..1f4f65705a7 100644 --- a/include/hw/intc/loongarch_dintc.h +++ b/include/hw/intc/loongarch_dintc.h @@ -6,7 +6,7 @@ */ =20 #include "qom/object.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/loongarch/virt.h" #include "system/memory.h" =20 diff --git a/include/hw/intc/loongarch_extioi_common.h b/include/hw/intc/lo= ongarch_extioi_common.h index 1bd2bfa07fc..2dbc2563eb0 100644 --- a/include/hw/intc/loongarch_extioi_common.h +++ b/include/hw/intc/loongarch_extioi_common.h @@ -8,7 +8,7 @@ #define LOONGARCH_EXTIOI_COMMON_H =20 #include "qom/object.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/loongarch/virt.h" #include "system/memory.h" =20 diff --git a/include/hw/intc/loongarch_pch_msi.h b/include/hw/intc/loongarc= h_pch_msi.h index ef4ec4fdeb8..fec51187c21 100644 --- a/include/hw/intc/loongarch_pch_msi.h +++ b/include/hw/intc/loongarch_pch_msi.h @@ -5,7 +5,7 @@ * Copyright (C) 2021 Loongson Technology Corporation Limited */ =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "system/memory.h" =20 #define TYPE_LOONGARCH_PCH_MSI "loongarch_pch_msi" diff --git a/include/hw/intc/loongarch_pic_common.h b/include/hw/intc/loong= arch_pic_common.h index 179361eb567..1627ec0899d 100644 --- a/include/hw/intc/loongarch_pic_common.h +++ b/include/hw/intc/loongarch_pic_common.h @@ -8,7 +8,7 @@ #define HW_LOONGARCH_PIC_COMMON_H =20 #include "hw/loongarch/virt.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "system/memory.h" =20 #define PCH_PIC_INT_ID 0x00 diff --git a/include/hw/intc/loongson_ipi.h b/include/hw/intc/loongson_ipi.h index 4e517cc8dc4..afb8488725b 100644 --- a/include/hw/intc/loongson_ipi.h +++ b/include/hw/intc/loongson_ipi.h @@ -10,7 +10,7 @@ =20 #include "qom/object.h" #include "hw/intc/loongson_ipi_common.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define TYPE_LOONGSON_IPI "loongson_ipi" OBJECT_DECLARE_TYPE(LoongsonIPIState, LoongsonIPIClass, LOONGSON_IPI) diff --git a/include/hw/intc/loongson_ipi_common.h b/include/hw/intc/loongs= on_ipi_common.h index 4fa03bc351f..feb858780a9 100644 --- a/include/hw/intc/loongson_ipi_common.h +++ b/include/hw/intc/loongson_ipi_common.h @@ -9,7 +9,7 @@ #define HW_LOONGSON_IPI_COMMON_H =20 #include "qom/object.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "exec/memattrs.h" #include "system/memory.h" =20 diff --git a/include/hw/intc/loongson_liointc.h b/include/hw/intc/loongson_= liointc.h index 848e65eb359..f400f691b07 100644 --- a/include/hw/intc/loongson_liointc.h +++ b/include/hw/intc/loongson_liointc.h @@ -12,7 +12,7 @@ #define LOONGSON_LIOINTC_H =20 #include "qemu/units.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_LOONGSON_LIOINTC "loongson.liointc" diff --git a/include/hw/intc/m68k_irqc.h b/include/hw/intc/m68k_irqc.h index 693e33b0aa5..b2b184dbc98 100644 --- a/include/hw/intc/m68k_irqc.h +++ b/include/hw/intc/m68k_irqc.h @@ -10,7 +10,7 @@ #ifndef M68K_IRQC_H #define M68K_IRQC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define TYPE_M68K_IRQC "m68k-irq-controller" #define M68K_IRQC(obj) OBJECT_CHECK(M68KIRQCState, (obj), \ diff --git a/include/hw/intc/mips_gic.h b/include/hw/intc/mips_gic.h index 5e4c71edd47..e2e6f0a168c 100644 --- a/include/hw/intc/mips_gic.h +++ b/include/hw/intc/mips_gic.h @@ -13,7 +13,7 @@ =20 #include "qemu/units.h" #include "hw/timer/mips_gictimer.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "cpu.h" #include "qom/object.h" /* diff --git a/include/hw/intc/realview_gic.h b/include/hw/intc/realview_gic.h index f37339dc0b1..6feaf1a605b 100644 --- a/include/hw/intc/realview_gic.h +++ b/include/hw/intc/realview_gic.h @@ -10,7 +10,7 @@ #ifndef HW_INTC_REALVIEW_GIC_H #define HW_INTC_REALVIEW_GIC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/intc/arm_gic.h" #include "qom/object.h" =20 diff --git a/include/hw/intc/riscv_aclint.h b/include/hw/intc/riscv_aclint.h index 4b7406eec00..5310615cbf6 100644 --- a/include/hw/intc/riscv_aclint.h +++ b/include/hw/intc/riscv_aclint.h @@ -21,7 +21,7 @@ #ifndef HW_RISCV_ACLINT_H #define HW_RISCV_ACLINT_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define TYPE_RISCV_ACLINT_MTIMER "riscv.aclint.mtimer" =20 diff --git a/include/hw/intc/riscv_aplic.h b/include/hw/intc/riscv_aplic.h index 489b9133c26..c7a4d4ad017 100644 --- a/include/hw/intc/riscv_aplic.h +++ b/include/hw/intc/riscv_aplic.h @@ -19,7 +19,7 @@ #ifndef HW_RISCV_APLIC_H #define HW_RISCV_APLIC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_RISCV_APLIC "riscv.aplic" diff --git a/include/hw/intc/riscv_imsic.h b/include/hw/intc/riscv_imsic.h index 58c2aaa8dc6..fae999731df 100644 --- a/include/hw/intc/riscv_imsic.h +++ b/include/hw/intc/riscv_imsic.h @@ -19,7 +19,7 @@ #ifndef HW_RISCV_IMSIC_H #define HW_RISCV_IMSIC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_RISCV_IMSIC "riscv.imsic" diff --git a/include/hw/intc/rx_icu.h b/include/hw/intc/rx_icu.h index b23504f3dd1..2f2746b8681 100644 --- a/include/hw/intc/rx_icu.h +++ b/include/hw/intc/rx_icu.h @@ -21,7 +21,7 @@ #ifndef HW_INTC_RX_ICU_H #define HW_INTC_RX_ICU_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 enum TRG_MODE { diff --git a/include/hw/intc/sifive_plic.h b/include/hw/intc/sifive_plic.h index d3f45ec2481..32973dbf281 100644 --- a/include/hw/intc/sifive_plic.h +++ b/include/hw/intc/sifive_plic.h @@ -21,7 +21,7 @@ #ifndef HW_SIFIVE_PLIC_H #define HW_SIFIVE_PLIC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_SIFIVE_PLIC "riscv.sifive.plic" diff --git a/include/hw/intc/xlnx-pmu-iomod-intc.h b/include/hw/intc/xlnx-p= mu-iomod-intc.h index e36b5e17629..1a1b0e813d0 100644 --- a/include/hw/intc/xlnx-pmu-iomod-intc.h +++ b/include/hw/intc/xlnx-pmu-iomod-intc.h @@ -25,7 +25,7 @@ #ifndef HW_INTC_XLNX_PMU_IOMOD_INTC_H #define HW_INTC_XLNX_PMU_IOMOD_INTC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" #include "qom/object.h" =20 diff --git a/include/hw/intc/xlnx-zynqmp-ipi.h b/include/hw/intc/xlnx-zynqm= p-ipi.h index 53fc89084af..57ac6e68524 100644 --- a/include/hw/intc/xlnx-zynqmp-ipi.h +++ b/include/hw/intc/xlnx-zynqmp-ipi.h @@ -25,7 +25,7 @@ #ifndef XLNX_ZYNQMP_IPI_H #define XLNX_ZYNQMP_IPI_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" #include "qom/object.h" =20 diff --git a/include/hw/m68k/q800-glue.h b/include/hw/m68k/q800-glue.h index 04fac25f6c2..ac3404d6db8 100644 --- a/include/hw/m68k/q800-glue.h +++ b/include/hw/m68k/q800-glue.h @@ -23,7 +23,7 @@ #ifndef HW_Q800_GLUE_H #define HW_Q800_GLUE_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define TYPE_GLUE "q800-glue" OBJECT_DECLARE_SIMPLE_TYPE(GLUEState, GLUE) diff --git a/include/hw/mem/npcm7xx_mc.h b/include/hw/mem/npcm7xx_mc.h index 568cc35fdd7..9c724e83fd2 100644 --- a/include/hw/mem/npcm7xx_mc.h +++ b/include/hw/mem/npcm7xx_mc.h @@ -17,7 +17,7 @@ #define NPCM7XX_MC_H =20 #include "system/memory.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 /** * struct NPCM7xxMCState - Device state for the memory controller. diff --git a/include/hw/mips/cps.h b/include/hw/mips/cps.h index e7309841d08..878b4d819f4 100644 --- a/include/hw/mips/cps.h +++ b/include/hw/mips/cps.h @@ -20,7 +20,7 @@ #ifndef MIPS_CPS_H #define MIPS_CPS_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/clock.h" #include "hw/misc/mips_cmgcr.h" #include "hw/intc/mips_gic.h" diff --git a/include/hw/misc/a9scu.h b/include/hw/misc/a9scu.h index c3759fb8c8c..312fb29434b 100644 --- a/include/hw/misc/a9scu.h +++ b/include/hw/misc/a9scu.h @@ -10,7 +10,7 @@ #ifndef HW_MISC_A9SCU_H #define HW_MISC_A9SCU_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 /* A9MP private memory region. */ diff --git a/include/hw/misc/allwinner-a10-ccm.h b/include/hw/misc/allwinne= r-a10-ccm.h index 7f22532efaa..109b83f4df6 100644 --- a/include/hw/misc/allwinner-a10-ccm.h +++ b/include/hw/misc/allwinner-a10-ccm.h @@ -24,7 +24,7 @@ #define HW_MISC_ALLWINNER_A10_CCM_H =20 #include "qom/object.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 /** * @name Constants diff --git a/include/hw/misc/allwinner-a10-dramc.h b/include/hw/misc/allwin= ner-a10-dramc.h index a1ae621e217..44663dee44a 100644 --- a/include/hw/misc/allwinner-a10-dramc.h +++ b/include/hw/misc/allwinner-a10-dramc.h @@ -24,7 +24,7 @@ #define HW_MISC_ALLWINNER_A10_DRAMC_H =20 #include "qom/object.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" =20 /** diff --git a/include/hw/misc/allwinner-cpucfg.h b/include/hw/misc/allwinner= -cpucfg.h index a717b47299a..0214f1fb770 100644 --- a/include/hw/misc/allwinner-cpucfg.h +++ b/include/hw/misc/allwinner-cpucfg.h @@ -21,7 +21,7 @@ #define HW_MISC_ALLWINNER_CPUCFG_H =20 #include "qom/object.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 /** * Object model diff --git a/include/hw/misc/allwinner-h3-ccu.h b/include/hw/misc/allwinner= -h3-ccu.h index a04875bfca3..b8a17216865 100644 --- a/include/hw/misc/allwinner-h3-ccu.h +++ b/include/hw/misc/allwinner-h3-ccu.h @@ -21,7 +21,7 @@ #define HW_MISC_ALLWINNER_H3_CCU_H =20 #include "qom/object.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 /** * @name Constants diff --git a/include/hw/misc/allwinner-h3-dramc.h b/include/hw/misc/allwinn= er-h3-dramc.h index 0b6c877ef74..0435120ff92 100644 --- a/include/hw/misc/allwinner-h3-dramc.h +++ b/include/hw/misc/allwinner-h3-dramc.h @@ -21,7 +21,7 @@ #define HW_MISC_ALLWINNER_H3_DRAMC_H =20 #include "qom/object.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "exec/hwaddr.h" =20 /** diff --git a/include/hw/misc/allwinner-h3-sysctrl.h b/include/hw/misc/allwi= nner-h3-sysctrl.h index ec1c220535e..ff886450f3a 100644 --- a/include/hw/misc/allwinner-h3-sysctrl.h +++ b/include/hw/misc/allwinner-h3-sysctrl.h @@ -21,7 +21,7 @@ #define HW_MISC_ALLWINNER_H3_SYSCTRL_H =20 #include "qom/object.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 /** * @name Constants diff --git a/include/hw/misc/allwinner-r40-ccu.h b/include/hw/misc/allwinne= r-r40-ccu.h index ceb74eff923..4f1cc4fe115 100644 --- a/include/hw/misc/allwinner-r40-ccu.h +++ b/include/hw/misc/allwinner-r40-ccu.h @@ -21,7 +21,7 @@ #define HW_MISC_ALLWINNER_R40_CCU_H =20 #include "qom/object.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 /** * @name Constants diff --git a/include/hw/misc/allwinner-r40-dramc.h b/include/hw/misc/allwin= ner-r40-dramc.h index 6a1a3a78935..b823e9eb524 100644 --- a/include/hw/misc/allwinner-r40-dramc.h +++ b/include/hw/misc/allwinner-r40-dramc.h @@ -21,7 +21,7 @@ #define HW_MISC_ALLWINNER_R40_DRAMC_H =20 #include "qom/object.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "exec/hwaddr.h" =20 /** diff --git a/include/hw/misc/allwinner-sid.h b/include/hw/misc/allwinner-si= d.h index 3bfa887a969..cfa22a4d7f3 100644 --- a/include/hw/misc/allwinner-sid.h +++ b/include/hw/misc/allwinner-sid.h @@ -21,7 +21,7 @@ #define HW_MISC_ALLWINNER_SID_H =20 #include "qom/object.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/uuid.h" =20 /** diff --git a/include/hw/misc/allwinner-sramc.h b/include/hw/misc/allwinner-= sramc.h index 66b01b8d044..43fc338a589 100644 --- a/include/hw/misc/allwinner-sramc.h +++ b/include/hw/misc/allwinner-sramc.h @@ -21,7 +21,7 @@ #define HW_MISC_ALLWINNER_SRAMC_H =20 #include "qom/object.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/uuid.h" =20 /** diff --git a/include/hw/misc/arm11scu.h b/include/hw/misc/arm11scu.h index e5c0282aecf..d7ce0446a93 100644 --- a/include/hw/misc/arm11scu.h +++ b/include/hw/misc/arm11scu.h @@ -11,7 +11,7 @@ #ifndef HW_MISC_ARM11SCU_H #define HW_MISC_ARM11SCU_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_ARM11_SCU "arm11-scu" diff --git a/include/hw/misc/armsse-cpu-pwrctrl.h b/include/hw/misc/armsse-= cpu-pwrctrl.h index 51d45ede7db..1d9c50825bf 100644 --- a/include/hw/misc/armsse-cpu-pwrctrl.h +++ b/include/hw/misc/armsse-cpu-pwrctrl.h @@ -21,7 +21,7 @@ #ifndef HW_MISC_ARMSSE_CPU_PWRCTRL_H #define HW_MISC_ARMSSE_CPU_PWRCTRL_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_ARMSSE_CPU_PWRCTRL "armsse-cpu-pwrctrl" diff --git a/include/hw/misc/armsse-cpuid.h b/include/hw/misc/armsse-cpuid.h index 9c0926322cb..0daf466972a 100644 --- a/include/hw/misc/armsse-cpuid.h +++ b/include/hw/misc/armsse-cpuid.h @@ -22,7 +22,7 @@ #ifndef HW_MISC_ARMSSE_CPUID_H #define HW_MISC_ARMSSE_CPUID_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_ARMSSE_CPUID "armsse-cpuid" diff --git a/include/hw/misc/armsse-mhu.h b/include/hw/misc/armsse-mhu.h index 41925ded89b..e34d6c100bf 100644 --- a/include/hw/misc/armsse-mhu.h +++ b/include/hw/misc/armsse-mhu.h @@ -23,7 +23,7 @@ #ifndef HW_MISC_ARMSSE_MHU_H #define HW_MISC_ARMSSE_MHU_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_ARMSSE_MHU "armsse-mhu" diff --git a/include/hw/misc/armv7m_ras.h b/include/hw/misc/armv7m_ras.h index ba6daccf3fc..2b692fa5f9e 100644 --- a/include/hw/misc/armv7m_ras.h +++ b/include/hw/misc/armv7m_ras.h @@ -21,7 +21,7 @@ #ifndef HW_MISC_ARMV7M_RAS_H #define HW_MISC_ARMV7M_RAS_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define TYPE_ARMV7M_RAS "armv7m-ras" OBJECT_DECLARE_SIMPLE_TYPE(ARMv7MRAS, ARMV7M_RAS) diff --git a/include/hw/misc/aspeed_hace.h b/include/hw/misc/aspeed_hace.h index d5d07c6c021..b5416b0cb5d 100644 --- a/include/hw/misc/aspeed_hace.h +++ b/include/hw/misc/aspeed_hace.h @@ -10,7 +10,7 @@ #ifndef ASPEED_HACE_H #define ASPEED_HACE_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "crypto/hash.h" =20 #define TYPE_ASPEED_HACE "aspeed.hace" diff --git a/include/hw/misc/aspeed_i3c.h b/include/hw/misc/aspeed_i3c.h index 39679dfa1ae..7a984e1f01a 100644 --- a/include/hw/misc/aspeed_i3c.h +++ b/include/hw/misc/aspeed_i3c.h @@ -10,7 +10,7 @@ #ifndef ASPEED_I3C_H #define ASPEED_I3C_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define TYPE_ASPEED_I3C "aspeed.i3c" #define TYPE_ASPEED_I3C_DEVICE "aspeed.i3c.device" diff --git a/include/hw/misc/aspeed_lpc.h b/include/hw/misc/aspeed_lpc.h index fa398959af2..64c1039f9ce 100644 --- a/include/hw/misc/aspeed_lpc.h +++ b/include/hw/misc/aspeed_lpc.h @@ -10,7 +10,7 @@ #ifndef ASPEED_LPC_H #define ASPEED_LPC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define TYPE_ASPEED_LPC "aspeed.lpc" #define ASPEED_LPC(obj) OBJECT_CHECK(AspeedLPCState, (obj), TYPE_ASPEED_LP= C) diff --git a/include/hw/misc/aspeed_peci.h b/include/hw/misc/aspeed_peci.h index 8382707d9fd..7680e5befb3 100644 --- a/include/hw/misc/aspeed_peci.h +++ b/include/hw/misc/aspeed_peci.h @@ -10,7 +10,7 @@ #ifndef ASPEED_PECI_H #define ASPEED_PECI_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define ASPEED_PECI_NR_REGS ((0xFC + 4) >> 2) #define TYPE_ASPEED_PECI "aspeed.peci" diff --git a/include/hw/misc/aspeed_sbc.h b/include/hw/misc/aspeed_sbc.h index 7d640a022e4..07c7c22a86a 100644 --- a/include/hw/misc/aspeed_sbc.h +++ b/include/hw/misc/aspeed_sbc.h @@ -9,7 +9,7 @@ #ifndef ASPEED_SBC_H #define ASPEED_SBC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/nvram/aspeed_otp.h" =20 #define TYPE_ASPEED_SBC "aspeed.sbc" diff --git a/include/hw/misc/aspeed_scu.h b/include/hw/misc/aspeed_scu.h index 684b48b7222..35b841960af 100644 --- a/include/hw/misc/aspeed_scu.h +++ b/include/hw/misc/aspeed_scu.h @@ -11,7 +11,7 @@ #ifndef ASPEED_SCU_H #define ASPEED_SCU_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_ASPEED_SCU "aspeed.scu" diff --git a/include/hw/misc/aspeed_sdmc.h b/include/hw/misc/aspeed_sdmc.h index 61c979583ae..806b1cbc58f 100644 --- a/include/hw/misc/aspeed_sdmc.h +++ b/include/hw/misc/aspeed_sdmc.h @@ -9,7 +9,7 @@ #ifndef ASPEED_SDMC_H #define ASPEED_SDMC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_ASPEED_SDMC "aspeed.sdmc" diff --git a/include/hw/misc/aspeed_sli.h b/include/hw/misc/aspeed_sli.h index 23f346ab934..fa8d9fbc531 100644 --- a/include/hw/misc/aspeed_sli.h +++ b/include/hw/misc/aspeed_sli.h @@ -8,7 +8,7 @@ #ifndef ASPEED_SLI_H #define ASPEED_SLI_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define TYPE_ASPEED_SLI "aspeed.sli" #define TYPE_ASPEED_2700_SLI TYPE_ASPEED_SLI "-ast2700" diff --git a/include/hw/misc/aspeed_xdma.h b/include/hw/misc/aspeed_xdma.h index b1478fd1c68..0089da9f1fd 100644 --- a/include/hw/misc/aspeed_xdma.h +++ b/include/hw/misc/aspeed_xdma.h @@ -9,7 +9,7 @@ #ifndef ASPEED_XDMA_H #define ASPEED_XDMA_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_ASPEED_XDMA "aspeed.xdma" diff --git a/include/hw/misc/avr_power.h b/include/hw/misc/avr_power.h index 388e421aa7b..5de78c5125f 100644 --- a/include/hw/misc/avr_power.h +++ b/include/hw/misc/avr_power.h @@ -25,7 +25,7 @@ #ifndef HW_MISC_AVR_POWER_H #define HW_MISC_AVR_POWER_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 =20 diff --git a/include/hw/misc/bcm2835_cprman.h b/include/hw/misc/bcm2835_cpr= man.h index 7b2c0a54642..8146bca3ae9 100644 --- a/include/hw/misc/bcm2835_cprman.h +++ b/include/hw/misc/bcm2835_cprman.h @@ -9,7 +9,7 @@ #ifndef HW_MISC_BCM2835_CPRMAN_H #define HW_MISC_BCM2835_CPRMAN_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/qdev-clock.h" =20 #define TYPE_BCM2835_CPRMAN "bcm2835-cprman" diff --git a/include/hw/misc/bcm2835_mbox.h b/include/hw/misc/bcm2835_mbox.h index ade27af25d0..571741c06e2 100644 --- a/include/hw/misc/bcm2835_mbox.h +++ b/include/hw/misc/bcm2835_mbox.h @@ -9,7 +9,7 @@ #define BCM2835_MBOX_H =20 #include "bcm2835_mbox_defs.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_BCM2835_MBOX "bcm2835-mbox" diff --git a/include/hw/misc/bcm2835_mphi.h b/include/hw/misc/bcm2835_mphi.h index 1a451685e8e..4ddf8ba6521 100644 --- a/include/hw/misc/bcm2835_mphi.h +++ b/include/hw/misc/bcm2835_mphi.h @@ -18,7 +18,7 @@ #define HW_MISC_BCM2835_MPHI_H =20 #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define MPHI_MMIO_SIZE 0x1000 diff --git a/include/hw/misc/bcm2835_powermgt.h b/include/hw/misc/bcm2835_p= owermgt.h index 303b9a6f684..fb0740c01ec 100644 --- a/include/hw/misc/bcm2835_powermgt.h +++ b/include/hw/misc/bcm2835_powermgt.h @@ -11,7 +11,7 @@ #ifndef BCM2835_POWERMGT_H #define BCM2835_POWERMGT_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_BCM2835_POWERMGT "bcm2835-powermgt" diff --git a/include/hw/misc/bcm2835_property.h b/include/hw/misc/bcm2835_p= roperty.h index 2f93fd0c757..53d2a92d173 100644 --- a/include/hw/misc/bcm2835_property.h +++ b/include/hw/misc/bcm2835_property.h @@ -8,7 +8,7 @@ #ifndef BCM2835_PROPERTY_H #define BCM2835_PROPERTY_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "net/net.h" #include "hw/display/bcm2835_fb.h" #include "hw/nvram/bcm2835_otp.h" diff --git a/include/hw/misc/bcm2835_rng.h b/include/hw/misc/bcm2835_rng.h index 7c1fb3ef405..eaf77f5103d 100644 --- a/include/hw/misc/bcm2835_rng.h +++ b/include/hw/misc/bcm2835_rng.h @@ -10,7 +10,7 @@ #ifndef BCM2835_RNG_H #define BCM2835_RNG_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_BCM2835_RNG "bcm2835-rng" diff --git a/include/hw/misc/bcm2835_thermal.h b/include/hw/misc/bcm2835_th= ermal.h index f90f9e487ce..13ffc61c1a7 100644 --- a/include/hw/misc/bcm2835_thermal.h +++ b/include/hw/misc/bcm2835_thermal.h @@ -9,7 +9,7 @@ #ifndef HW_MISC_BCM2835_THERMAL_H #define HW_MISC_BCM2835_THERMAL_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_BCM2835_THERMAL "bcm2835-thermal" diff --git a/include/hw/misc/djmemc.h b/include/hw/misc/djmemc.h index 82d4e4a2fee..76d6b366ff3 100644 --- a/include/hw/misc/djmemc.h +++ b/include/hw/misc/djmemc.h @@ -8,7 +8,7 @@ #ifndef HW_MISC_DJMEMC_H #define HW_MISC_DJMEMC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define DJMEMC_SIZE 0x2000 #define DJMEMC_NUM_REGS (0x38 / sizeof(uint32_t)) diff --git a/include/hw/misc/imx6_src.h b/include/hw/misc/imx6_src.h index f380da3810f..801b5b6a660 100644 --- a/include/hw/misc/imx6_src.h +++ b/include/hw/misc/imx6_src.h @@ -11,7 +11,7 @@ #ifndef IMX6_SRC_H #define IMX6_SRC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/bitops.h" #include "qom/object.h" =20 diff --git a/include/hw/misc/imx7_gpr.h b/include/hw/misc/imx7_gpr.h index df364bd8f09..5cb7d50a694 100644 --- a/include/hw/misc/imx7_gpr.h +++ b/include/hw/misc/imx7_gpr.h @@ -13,7 +13,7 @@ #define IMX7_GPR_H =20 #include "qemu/bitops.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_IMX7_GPR "imx7.gpr" diff --git a/include/hw/misc/imx7_snvs.h b/include/hw/misc/imx7_snvs.h index 1272076086a..90f69a6dd67 100644 --- a/include/hw/misc/imx7_snvs.h +++ b/include/hw/misc/imx7_snvs.h @@ -13,7 +13,7 @@ #define IMX7_SNVS_H =20 #include "qemu/bitops.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 =20 diff --git a/include/hw/misc/imx7_src.h b/include/hw/misc/imx7_src.h index b4b97dcb1c1..55b58a03bf3 100644 --- a/include/hw/misc/imx7_src.h +++ b/include/hw/misc/imx7_src.h @@ -10,7 +10,7 @@ #ifndef IMX7_SRC_H #define IMX7_SRC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/bitops.h" #include "qom/object.h" =20 diff --git a/include/hw/misc/imx8mp_analog.h b/include/hw/misc/imx8mp_analo= g.h index 955f03215a0..6996e537718 100644 --- a/include/hw/misc/imx8mp_analog.h +++ b/include/hw/misc/imx8mp_analog.h @@ -10,7 +10,7 @@ #define IMX8MP_ANALOG_H =20 #include "qom/object.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 enum IMX8MPAnalogRegisters { ANALOG_AUDIO_PLL1_GEN_CTRL =3D 0x000 / 4, diff --git a/include/hw/misc/imx_ccm.h b/include/hw/misc/imx_ccm.h index 7e5678e9726..c4212d04ea6 100644 --- a/include/hw/misc/imx_ccm.h +++ b/include/hw/misc/imx_ccm.h @@ -11,7 +11,7 @@ #ifndef IMX_CCM_H #define IMX_CCM_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define CKIL_FREQ 32768 /* nominal 32khz clock */ diff --git a/include/hw/misc/imx_rngc.h b/include/hw/misc/imx_rngc.h index 34ad6992259..5fb17551b00 100644 --- a/include/hw/misc/imx_rngc.h +++ b/include/hw/misc/imx_rngc.h @@ -10,7 +10,7 @@ #ifndef IMX_RNGC_H #define IMX_RNGC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_IMX_RNGC "imx.rngc" diff --git a/include/hw/misc/iotkit-secctl.h b/include/hw/misc/iotkit-secct= l.h index 79a36283201..1c189eb7214 100644 --- a/include/hw/misc/iotkit-secctl.h +++ b/include/hw/misc/iotkit-secctl.h @@ -55,7 +55,7 @@ #ifndef IOTKIT_SECCTL_H #define IOTKIT_SECCTL_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_IOTKIT_SECCTL "iotkit-secctl" diff --git a/include/hw/misc/iotkit-sysctl.h b/include/hw/misc/iotkit-sysct= l.h index 481e27f4db1..ce72258a847 100644 --- a/include/hw/misc/iotkit-sysctl.h +++ b/include/hw/misc/iotkit-sysctl.h @@ -26,7 +26,7 @@ #ifndef HW_MISC_IOTKIT_SYSCTL_H #define HW_MISC_IOTKIT_SYSCTL_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_IOTKIT_SYSCTL "iotkit-sysctl" diff --git a/include/hw/misc/iotkit-sysinfo.h b/include/hw/misc/iotkit-sysi= nfo.h index 91c23f90d23..36dc702c53d 100644 --- a/include/hw/misc/iotkit-sysinfo.h +++ b/include/hw/misc/iotkit-sysinfo.h @@ -22,7 +22,7 @@ #ifndef HW_MISC_IOTKIT_SYSINFO_H #define HW_MISC_IOTKIT_SYSINFO_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_IOTKIT_SYSINFO "iotkit-sysinfo" diff --git a/include/hw/misc/ivshmem-flat.h b/include/hw/misc/ivshmem-flat.h index d656e578085..4e7277f386c 100644 --- a/include/hw/misc/ivshmem-flat.h +++ b/include/hw/misc/ivshmem-flat.h @@ -16,7 +16,7 @@ #include "chardev/char-fe.h" #include "system/memory.h" #include "qom/object.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define IVSHMEM_MAX_VECTOR_NUM 64 =20 diff --git a/include/hw/misc/lasi.h b/include/hw/misc/lasi.h index 5e40c6aebdf..8bf72404037 100644 --- a/include/hw/misc/lasi.h +++ b/include/hw/misc/lasi.h @@ -14,7 +14,7 @@ =20 #include "system/address-spaces.h" #include "hw/core/boards.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define TYPE_LASI_CHIP "lasi-chip" OBJECT_DECLARE_SIMPLE_TYPE(LasiState, LASI_CHIP) diff --git a/include/hw/misc/mac_via.h b/include/hw/misc/mac_via.h index 6a152281505..114f41db4c7 100644 --- a/include/hw/misc/mac_via.h +++ b/include/hw/misc/mac_via.h @@ -10,7 +10,7 @@ #define HW_MISC_MAC_VIA_H =20 #include "system/memory.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/misc/mos6522.h" #include "hw/input/adb.h" #include "qom/object.h" diff --git a/include/hw/misc/macio/gpio.h b/include/hw/misc/macio/gpio.h index 7d2aa886c24..157ea0659b3 100644 --- a/include/hw/misc/macio/gpio.h +++ b/include/hw/misc/macio/gpio.h @@ -27,7 +27,7 @@ #define MACIO_GPIO_H =20 #include "hw/ppc/openpic.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_MACIO_GPIO "macio-gpio" diff --git a/include/hw/misc/max78000_aes.h b/include/hw/misc/max78000_aes.h index 407c45ef61e..f68ab076960 100644 --- a/include/hw/misc/max78000_aes.h +++ b/include/hw/misc/max78000_aes.h @@ -8,7 +8,7 @@ #ifndef HW_MAX78000_AES_H #define HW_MAX78000_AES_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "crypto/aes.h" #include "qom/object.h" =20 diff --git a/include/hw/misc/max78000_gcr.h b/include/hw/misc/max78000_gcr.h index d5858a40f3b..c209766fa98 100644 --- a/include/hw/misc/max78000_gcr.h +++ b/include/hw/misc/max78000_gcr.h @@ -8,7 +8,7 @@ #ifndef HW_MAX78000_GCR_H #define HW_MAX78000_GCR_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_MAX78000_GCR "max78000-gcr" diff --git a/include/hw/misc/max78000_icc.h b/include/hw/misc/max78000_icc.h index 6fe2bb7a156..a8f1d451bd6 100644 --- a/include/hw/misc/max78000_icc.h +++ b/include/hw/misc/max78000_icc.h @@ -9,7 +9,7 @@ #ifndef HW_MAX78000_ICC_H #define HW_MAX78000_ICC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_MAX78000_ICC "max78000-icc" diff --git a/include/hw/misc/max78000_trng.h b/include/hw/misc/max78000_trn= g.h index c5a8129b6a0..a027f4b62c7 100644 --- a/include/hw/misc/max78000_trng.h +++ b/include/hw/misc/max78000_trng.h @@ -8,7 +8,7 @@ #ifndef HW_MAX78000_TRNG_H #define HW_MAX78000_TRNG_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_MAX78000_TRNG "max78000-trng" diff --git a/include/hw/misc/mchp_pfsoc_dmc.h b/include/hw/misc/mchp_pfsoc_= dmc.h index 3bc1581e0f2..2ed582fb8ce 100644 --- a/include/hw/misc/mchp_pfsoc_dmc.h +++ b/include/hw/misc/mchp_pfsoc_dmc.h @@ -23,7 +23,7 @@ #ifndef MCHP_PFSOC_DMC_H #define MCHP_PFSOC_DMC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 /* DDR SGMII PHY module */ =20 diff --git a/include/hw/misc/mchp_pfsoc_ioscb.h b/include/hw/misc/mchp_pfso= c_ioscb.h index 3fd3e749665..eaaa2ac5d98 100644 --- a/include/hw/misc/mchp_pfsoc_ioscb.h +++ b/include/hw/misc/mchp_pfsoc_ioscb.h @@ -23,7 +23,7 @@ #ifndef MCHP_PFSOC_IOSCB_H #define MCHP_PFSOC_IOSCB_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 typedef struct MchpPfSoCIoscbState { SysBusDevice parent; diff --git a/include/hw/misc/mchp_pfsoc_sysreg.h b/include/hw/misc/mchp_pfs= oc_sysreg.h index c2232bd28d0..c2b3688a94b 100644 --- a/include/hw/misc/mchp_pfsoc_sysreg.h +++ b/include/hw/misc/mchp_pfsoc_sysreg.h @@ -23,7 +23,7 @@ #ifndef MCHP_PFSOC_SYSREG_H #define MCHP_PFSOC_SYSREG_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define MCHP_PFSOC_SYSREG_REG_SIZE 0x2000 =20 diff --git a/include/hw/misc/mips_cmgcr.h b/include/hw/misc/mips_cmgcr.h index db4bf5f4499..cec0edd6205 100644 --- a/include/hw/misc/mips_cmgcr.h +++ b/include/hw/misc/mips_cmgcr.h @@ -10,7 +10,7 @@ #ifndef MIPS_CMGCR_H #define MIPS_CMGCR_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_MIPS_GCR "mips-gcr" diff --git a/include/hw/misc/mips_cpc.h b/include/hw/misc/mips_cpc.h index fcafbd5e002..73ed7597e82 100644 --- a/include/hw/misc/mips_cpc.h +++ b/include/hw/misc/mips_cpc.h @@ -20,7 +20,7 @@ #ifndef MIPS_CPC_H #define MIPS_CPC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define CPC_ADDRSPACE_SZ 0x6000 diff --git a/include/hw/misc/mips_itu.h b/include/hw/misc/mips_itu.h index 27c9a1090d5..0d1c9c419c4 100644 --- a/include/hw/misc/mips_itu.h +++ b/include/hw/misc/mips_itu.h @@ -20,7 +20,7 @@ #ifndef MIPS_ITU_H #define MIPS_ITU_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_MIPS_ITU "mips-itu" diff --git a/include/hw/misc/mos6522.h b/include/hw/misc/mos6522.h index 920871a598b..150e30a2c11 100644 --- a/include/hw/misc/mos6522.h +++ b/include/hw/misc/mos6522.h @@ -28,7 +28,7 @@ #define MOS6522_H =20 #include "exec/hwaddr.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define MOS6522_NUM_REGS 16 diff --git a/include/hw/misc/mps2-fpgaio.h b/include/hw/misc/mps2-fpgaio.h index 7b8bd604de0..edd9f231212 100644 --- a/include/hw/misc/mps2-fpgaio.h +++ b/include/hw/misc/mps2-fpgaio.h @@ -21,7 +21,7 @@ #ifndef MPS2_FPGAIO_H #define MPS2_FPGAIO_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/misc/led.h" #include "qom/object.h" =20 diff --git a/include/hw/misc/mps2-scc.h b/include/hw/misc/mps2-scc.h index 8ff188c06b1..989b2e057dc 100644 --- a/include/hw/misc/mps2-scc.h +++ b/include/hw/misc/mps2-scc.h @@ -30,7 +30,7 @@ #ifndef MPS2_SCC_H #define MPS2_SCC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/misc/led.h" #include "qom/object.h" =20 diff --git a/include/hw/misc/msf2-sysreg.h b/include/hw/misc/msf2-sysreg.h index fc1890e710d..e213aedfb73 100644 --- a/include/hw/misc/msf2-sysreg.h +++ b/include/hw/misc/msf2-sysreg.h @@ -25,7 +25,7 @@ #ifndef HW_MSF2_SYSREG_H #define HW_MSF2_SYSREG_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 enum { diff --git a/include/hw/misc/npcm7xx_mft.h b/include/hw/misc/npcm7xx_mft.h index 79855b6f25d..406ec944434 100644 --- a/include/hw/misc/npcm7xx_mft.h +++ b/include/hw/misc/npcm7xx_mft.h @@ -19,7 +19,7 @@ #include "system/memory.h" #include "hw/core/clock.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 /* Max Fan input number. */ diff --git a/include/hw/misc/npcm7xx_pwm.h b/include/hw/misc/npcm7xx_pwm.h index 6a54b40005d..b5ae9338049 100644 --- a/include/hw/misc/npcm7xx_pwm.h +++ b/include/hw/misc/npcm7xx_pwm.h @@ -17,7 +17,7 @@ #define NPCM7XX_PWM_H =20 #include "hw/core/clock.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" =20 /* Each PWM module holds 4 PWM channels. */ diff --git a/include/hw/misc/npcm7xx_rng.h b/include/hw/misc/npcm7xx_rng.h index 650375dc2cd..90858a71f5c 100644 --- a/include/hw/misc/npcm7xx_rng.h +++ b/include/hw/misc/npcm7xx_rng.h @@ -16,7 +16,7 @@ #ifndef NPCM7XX_RNG_H #define NPCM7XX_RNG_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 struct NPCM7xxRNGState { SysBusDevice parent; diff --git a/include/hw/misc/npcm_clk.h b/include/hw/misc/npcm_clk.h index 50b93a0094d..74c5c1634a9 100644 --- a/include/hw/misc/npcm_clk.h +++ b/include/hw/misc/npcm_clk.h @@ -18,7 +18,7 @@ =20 #include "system/memory.h" #include "hw/core/clock.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define NPCM7XX_CLK_NR_REGS (0x70 / sizeof(uint32_t)) #define NPCM8XX_CLK_NR_REGS (0xc4 / sizeof(uint32_t)) diff --git a/include/hw/misc/npcm_gcr.h b/include/hw/misc/npcm_gcr.h index 702e7fddb1f..97a6e531b89 100644 --- a/include/hw/misc/npcm_gcr.h +++ b/include/hw/misc/npcm_gcr.h @@ -17,7 +17,7 @@ #define NPCM_GCR_H =20 #include "system/memory.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 /* diff --git a/include/hw/misc/nrf51_rng.h b/include/hw/misc/nrf51_rng.h index 9aff9a76f89..0c2f6d2257b 100644 --- a/include/hw/misc/nrf51_rng.h +++ b/include/hw/misc/nrf51_rng.h @@ -34,7 +34,7 @@ #ifndef NRF51_RNG_H #define NRF51_RNG_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/timer.h" #include "qom/object.h" #define TYPE_NRF51_RNG "nrf51_soc.rng" diff --git a/include/hw/misc/sifive_e_aon.h b/include/hw/misc/sifive_e_aon.h index 2ae1c4139ca..efa2c3023f6 100644 --- a/include/hw/misc/sifive_e_aon.h +++ b/include/hw/misc/sifive_e_aon.h @@ -19,7 +19,7 @@ #ifndef HW_SIFIVE_AON_H #define HW_SIFIVE_AON_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_SIFIVE_E_AON "riscv.sifive.e.aon" diff --git a/include/hw/misc/sifive_e_prci.h b/include/hw/misc/sifive_e_prc= i.h index 6aa949e910d..d0abd59f4b7 100644 --- a/include/hw/misc/sifive_e_prci.h +++ b/include/hw/misc/sifive_e_prci.h @@ -19,7 +19,7 @@ #ifndef HW_SIFIVE_E_PRCI_H #define HW_SIFIVE_E_PRCI_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 enum { SIFIVE_E_PRCI_HFROSCCFG =3D 0x0, diff --git a/include/hw/misc/sifive_test.h b/include/hw/misc/sifive_test.h index 88a38d00c59..85afd352631 100644 --- a/include/hw/misc/sifive_test.h +++ b/include/hw/misc/sifive_test.h @@ -19,7 +19,7 @@ #ifndef HW_SIFIVE_TEST_H #define HW_SIFIVE_TEST_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_SIFIVE_TEST "riscv.sifive.test" diff --git a/include/hw/misc/sifive_u_otp.h b/include/hw/misc/sifive_u_otp.h index 170d2148f25..b3d2091a58a 100644 --- a/include/hw/misc/sifive_u_otp.h +++ b/include/hw/misc/sifive_u_otp.h @@ -19,7 +19,7 @@ #ifndef HW_SIFIVE_U_OTP_H #define HW_SIFIVE_U_OTP_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define SIFIVE_U_OTP_PA 0x00 #define SIFIVE_U_OTP_PAIO 0x04 diff --git a/include/hw/misc/sifive_u_prci.h b/include/hw/misc/sifive_u_prc= i.h index 4d2491ad46d..c0cc755a26c 100644 --- a/include/hw/misc/sifive_u_prci.h +++ b/include/hw/misc/sifive_u_prci.h @@ -19,7 +19,7 @@ #ifndef HW_SIFIVE_U_PRCI_H #define HW_SIFIVE_U_PRCI_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define SIFIVE_U_PRCI_HFXOSCCFG 0x00 #define SIFIVE_U_PRCI_COREPLLCFG0 0x04 diff --git a/include/hw/misc/stm32_rcc.h b/include/hw/misc/stm32_rcc.h index ffbdf202ea5..4dccacc2db5 100644 --- a/include/hw/misc/stm32_rcc.h +++ b/include/hw/misc/stm32_rcc.h @@ -25,7 +25,7 @@ #ifndef HW_STM32_RCC_H #define HW_STM32_RCC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define STM32_RCC_CR 0x00 diff --git a/include/hw/misc/stm32f2xx_syscfg.h b/include/hw/misc/stm32f2xx= _syscfg.h index 8595a3b31b0..89e47aa091f 100644 --- a/include/hw/misc/stm32f2xx_syscfg.h +++ b/include/hw/misc/stm32f2xx_syscfg.h @@ -25,7 +25,7 @@ #ifndef HW_STM32F2XX_SYSCFG_H #define HW_STM32F2XX_SYSCFG_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define SYSCFG_MEMRMP 0x00 diff --git a/include/hw/misc/stm32f4xx_exti.h b/include/hw/misc/stm32f4xx_e= xti.h index fc11c595fa4..a2d57ee3459 100644 --- a/include/hw/misc/stm32f4xx_exti.h +++ b/include/hw/misc/stm32f4xx_exti.h @@ -25,7 +25,7 @@ #ifndef HW_STM32F4XX_EXTI_H #define HW_STM32F4XX_EXTI_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define EXTI_IMR 0x00 diff --git a/include/hw/misc/stm32f4xx_syscfg.h b/include/hw/misc/stm32f4xx= _syscfg.h index 9fce67f4b48..e6d2bc1ff3b 100644 --- a/include/hw/misc/stm32f4xx_syscfg.h +++ b/include/hw/misc/stm32f4xx_syscfg.h @@ -25,7 +25,7 @@ #ifndef HW_STM32F4XX_SYSCFG_H #define HW_STM32F4XX_SYSCFG_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define SYSCFG_MEMRMP 0x00 diff --git a/include/hw/misc/stm32l4x5_exti.h b/include/hw/misc/stm32l4x5_e= xti.h index 62f79362f28..543662c7b90 100644 --- a/include/hw/misc/stm32l4x5_exti.h +++ b/include/hw/misc/stm32l4x5_exti.h @@ -24,7 +24,7 @@ #ifndef HW_STM32L4X5_EXTI_H #define HW_STM32L4X5_EXTI_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_STM32L4X5_EXTI "stm32l4x5-exti" diff --git a/include/hw/misc/stm32l4x5_rcc.h b/include/hw/misc/stm32l4x5_rc= c.h index 0fbfba5c40b..64ead11b3d4 100644 --- a/include/hw/misc/stm32l4x5_rcc.h +++ b/include/hw/misc/stm32l4x5_rcc.h @@ -18,7 +18,7 @@ #ifndef HW_STM32L4X5_RCC_H #define HW_STM32L4X5_RCC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_STM32L4X5_RCC "stm32l4x5-rcc" diff --git a/include/hw/misc/stm32l4x5_syscfg.h b/include/hw/misc/stm32l4x5= _syscfg.h index c450df2b9ea..d83b4c07239 100644 --- a/include/hw/misc/stm32l4x5_syscfg.h +++ b/include/hw/misc/stm32l4x5_syscfg.h @@ -24,7 +24,7 @@ #ifndef HW_STM32L4X5_SYSCFG_H #define HW_STM32L4X5_SYSCFG_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" #include "hw/gpio/stm32l4x5_gpio.h" =20 diff --git a/include/hw/misc/tz-mpc.h b/include/hw/misc/tz-mpc.h index 74d5d822cf3..bda4bc2ae3c 100644 --- a/include/hw/misc/tz-mpc.h +++ b/include/hw/misc/tz-mpc.h @@ -31,7 +31,7 @@ #ifndef TZ_MPC_H #define TZ_MPC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_TZ_MPC "tz-mpc" diff --git a/include/hw/misc/tz-msc.h b/include/hw/misc/tz-msc.h index 77cc7f24048..07112d8caa3 100644 --- a/include/hw/misc/tz-msc.h +++ b/include/hw/misc/tz-msc.h @@ -50,7 +50,7 @@ #ifndef TZ_MSC_H #define TZ_MSC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "target/arm/idau.h" #include "qom/object.h" =20 diff --git a/include/hw/misc/tz-ppc.h b/include/hw/misc/tz-ppc.h index 021d671b29b..3fb9401160f 100644 --- a/include/hw/misc/tz-ppc.h +++ b/include/hw/misc/tz-ppc.h @@ -65,7 +65,7 @@ #ifndef TZ_PPC_H #define TZ_PPC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_TZ_PPC "tz-ppc" diff --git a/include/hw/misc/unimp.h b/include/hw/misc/unimp.h index 904f502fab1..77a5077511f 100644 --- a/include/hw/misc/unimp.h +++ b/include/hw/misc/unimp.h @@ -9,7 +9,7 @@ #define HW_MISC_UNIMP_H =20 #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qapi/error.h" #include "qom/object.h" =20 diff --git a/include/hw/misc/virt_ctrl.h b/include/hw/misc/virt_ctrl.h index 81346cf017e..ddce36f3b7e 100644 --- a/include/hw/misc/virt_ctrl.h +++ b/include/hw/misc/virt_ctrl.h @@ -7,7 +7,7 @@ #ifndef VIRT_CTRL_H #define VIRT_CTRL_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define TYPE_VIRT_CTRL "virt-ctrl" OBJECT_DECLARE_SIMPLE_TYPE(VirtCtrlState, VIRT_CTRL) diff --git a/include/hw/misc/xlnx-versal-cframe-reg.h b/include/hw/misc/xln= x-versal-cframe-reg.h index fe8788a7453..8f5c2959a82 100644 --- a/include/hw/misc/xlnx-versal-cframe-reg.h +++ b/include/hw/misc/xlnx-versal-cframe-reg.h @@ -17,7 +17,7 @@ #ifndef HW_MISC_XLNX_VERSAL_CFRAME_REG_H #define HW_MISC_XLNX_VERSAL_CFRAME_REG_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" #include "hw/misc/xlnx-cfi-if.h" #include "hw/misc/xlnx-versal-cfu.h" diff --git a/include/hw/misc/xlnx-versal-cfu.h b/include/hw/misc/xlnx-versa= l-cfu.h index 3d7ca506de1..e4fefe43c00 100644 --- a/include/hw/misc/xlnx-versal-cfu.h +++ b/include/hw/misc/xlnx-versal-cfu.h @@ -17,7 +17,7 @@ #ifndef HW_MISC_XLNX_VERSAL_CFU_APB_H #define HW_MISC_XLNX_VERSAL_CFU_APB_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" #include "hw/misc/xlnx-cfi-if.h" #include "qemu/fifo32.h" diff --git a/include/hw/misc/xlnx-versal-crl.h b/include/hw/misc/xlnx-versa= l-crl.h index ace3d198bde..fea7768642f 100644 --- a/include/hw/misc/xlnx-versal-crl.h +++ b/include/hw/misc/xlnx-versal-crl.h @@ -10,7 +10,7 @@ #ifndef HW_MISC_XLNX_VERSAL_CRL_H #define HW_MISC_XLNX_VERSAL_CRL_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" #include "target/arm/cpu-qom.h" #include "hw/arm/xlnx-versal-version.h" diff --git a/include/hw/misc/xlnx-versal-pmc-iou-slcr.h b/include/hw/misc/x= lnx-versal-pmc-iou-slcr.h index d8f45bd94b2..046f3e525c2 100644 --- a/include/hw/misc/xlnx-versal-pmc-iou-slcr.h +++ b/include/hw/misc/xlnx-versal-pmc-iou-slcr.h @@ -54,7 +54,7 @@ #ifndef XLNX_VERSAL_PMC_IOU_SLCR_H #define XLNX_VERSAL_PMC_IOU_SLCR_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" =20 #define TYPE_XILINX_VERSAL_PMC_IOU_SLCR "xlnx.versal-pmc-iou-slcr" diff --git a/include/hw/misc/xlnx-versal-trng.h b/include/hw/misc/xlnx-vers= al-trng.h index 8de29104048..ea6e4cb2e1a 100644 --- a/include/hw/misc/xlnx-versal-trng.h +++ b/include/hw/misc/xlnx-versal-trng.h @@ -27,7 +27,7 @@ #define XLNX_VERSAL_TRNG_H =20 #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" =20 #define TYPE_XLNX_VERSAL_TRNG "xlnx.versal-trng" diff --git a/include/hw/misc/xlnx-versal-xramc.h b/include/hw/misc/xlnx-ver= sal-xramc.h index e79941d8865..e888a9f03de 100644 --- a/include/hw/misc/xlnx-versal-xramc.h +++ b/include/hw/misc/xlnx-versal-xramc.h @@ -9,7 +9,7 @@ #ifndef XLNX_VERSAL_XRAMC_H #define XLNX_VERSAL_XRAMC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" =20 #define TYPE_XLNX_XRAM_CTRL "xlnx.versal-xramc" diff --git a/include/hw/misc/xlnx-zynqmp-apu-ctrl.h b/include/hw/misc/xlnx-= zynqmp-apu-ctrl.h index c0315720053..cc0a531c244 100644 --- a/include/hw/misc/xlnx-zynqmp-apu-ctrl.h +++ b/include/hw/misc/xlnx-zynqmp-apu-ctrl.h @@ -11,7 +11,7 @@ #ifndef HW_MISC_XLNX_ZYNQMP_APU_CTRL_H #define HW_MISC_XLNX_ZYNQMP_APU_CTRL_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" #include "target/arm/cpu-qom.h" =20 diff --git a/include/hw/misc/xlnx-zynqmp-crf.h b/include/hw/misc/xlnx-zynqm= p-crf.h index df83034a988..933867a6e54 100644 --- a/include/hw/misc/xlnx-zynqmp-crf.h +++ b/include/hw/misc/xlnx-zynqmp-crf.h @@ -8,7 +8,7 @@ #ifndef HW_MISC_XLNX_ZYNQMP_CRF_H #define HW_MISC_XLNX_ZYNQMP_CRF_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" =20 #define TYPE_XLNX_ZYNQMP_CRF "xlnx.zynqmp_crf" diff --git a/include/hw/net/allwinner-sun8i-emac.h b/include/hw/net/allwinn= er-sun8i-emac.h index 185895f4e13..24662a24ac0 100644 --- a/include/hw/net/allwinner-sun8i-emac.h +++ b/include/hw/net/allwinner-sun8i-emac.h @@ -22,7 +22,7 @@ =20 #include "qom/object.h" #include "net/net.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 /** * Object model diff --git a/include/hw/net/allwinner_emac.h b/include/hw/net/allwinner_ema= c.h index 534e748982f..b3482e137ee 100644 --- a/include/hw/net/allwinner_emac.h +++ b/include/hw/net/allwinner_emac.h @@ -27,7 +27,7 @@ #include "net/net.h" #include "qemu/fifo8.h" #include "hw/net/mii.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_AW_EMAC "allwinner-emac" diff --git a/include/hw/net/cadence_gem.h b/include/hw/net/cadence_gem.h index e63941f18fc..f5f1fa47c16 100644 --- a/include/hw/net/cadence_gem.h +++ b/include/hw/net/cadence_gem.h @@ -30,7 +30,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(CadenceGEMState, CADENCE_GEM) =20 #include "net/net.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define CADENCE_GEM_MAXREG (0x00000800 / 4) /* Last valid GEM addre= ss */ =20 diff --git a/include/hw/net/dp8393x.h b/include/hw/net/dp8393x.h index 24273dc1f43..5fe02d5a3c5 100644 --- a/include/hw/net/dp8393x.h +++ b/include/hw/net/dp8393x.h @@ -20,7 +20,7 @@ #ifndef HW_NET_DP8393X_H #define HW_NET_DP8393X_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "net/net.h" #include "system/memory.h" =20 diff --git a/include/hw/net/ftgmac100.h b/include/hw/net/ftgmac100.h index 24ccdf0260a..414963c5fbd 100644 --- a/include/hw/net/ftgmac100.h +++ b/include/hw/net/ftgmac100.h @@ -19,7 +19,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(FTGMAC100State, FTGMAC100) #define FTGMAC100_REG_HIGH_MEM_SIZE 0x100 #define FTGMAC100_REG_HIGH_OFFSET 0x100 =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "net/net.h" =20 /* diff --git a/include/hw/net/imx_fec.h b/include/hw/net/imx_fec.h index 99fc285402c..f0ac7d60e14 100644 --- a/include/hw/net/imx_fec.h +++ b/include/hw/net/imx_fec.h @@ -30,7 +30,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(IMXFECState, IMX_FEC) =20 #define TYPE_IMX_ENET "imx.enet" =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/net/lan9118_phy.h" #include "hw/core/irq.h" #include "net/net.h" diff --git a/include/hw/net/lan9118_phy.h b/include/hw/net/lan9118_phy.h index af12fc33d5f..1f9ad643c7b 100644 --- a/include/hw/net/lan9118_phy.h +++ b/include/hw/net/lan9118_phy.h @@ -12,7 +12,7 @@ #define HW_NET_LAN9118_PHY_H =20 #include "qom/object.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define TYPE_LAN9118_PHY "lan9118-phy" OBJECT_DECLARE_SIMPLE_TYPE(Lan9118PhyState, LAN9118_PHY) diff --git a/include/hw/net/lance.h b/include/hw/net/lance.h index f645d6af67f..be473e2eedb 100644 --- a/include/hw/net/lance.h +++ b/include/hw/net/lance.h @@ -31,7 +31,7 @@ =20 #include "net/net.h" #include "hw/net/pcnet.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_LANCE "lance" diff --git a/include/hw/net/lasi_82596.h b/include/hw/net/lasi_82596.h index c46a4a137e2..ab31874a7c5 100644 --- a/include/hw/net/lasi_82596.h +++ b/include/hw/net/lasi_82596.h @@ -10,7 +10,7 @@ =20 #include "net/net.h" #include "hw/net/i82596.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define TYPE_LASI_82596 "lasi_82596" typedef struct SysBusI82596State SysBusI82596State; diff --git a/include/hw/net/msf2-emac.h b/include/hw/net/msf2-emac.h index b5d9127e46c..f018ab3ff38 100644 --- a/include/hw/net/msf2-emac.h +++ b/include/hw/net/msf2-emac.h @@ -22,7 +22,7 @@ * THE SOFTWARE. */ =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "system/memory.h" #include "net/net.h" #include "net/eth.h" diff --git a/include/hw/net/npcm7xx_emc.h b/include/hw/net/npcm7xx_emc.h index 03c9941d82d..238507cadce 100644 --- a/include/hw/net/npcm7xx_emc.h +++ b/include/hw/net/npcm7xx_emc.h @@ -18,7 +18,7 @@ #define NPCM7XX_EMC_H =20 #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "net/net.h" =20 /* 32-bit register indices. */ diff --git a/include/hw/net/npcm_gmac.h b/include/hw/net/npcm_gmac.h index 44ee7b1bcba..d4fe49ada57 100644 --- a/include/hw/net/npcm_gmac.h +++ b/include/hw/net/npcm_gmac.h @@ -21,7 +21,7 @@ #define NPCM_GMAC_H =20 #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "net/net.h" =20 #define NPCM_GMAC_NR_REGS (0x1060 / sizeof(uint32_t)) diff --git a/include/hw/net/npcm_pcs.h b/include/hw/net/npcm_pcs.h index d5c481ad70d..7f5aa76353c 100644 --- a/include/hw/net/npcm_pcs.h +++ b/include/hw/net/npcm_pcs.h @@ -17,7 +17,7 @@ #ifndef NPCM_PCS_H #define NPCM_PCS_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define NPCM_PCS_NR_SR_CTLS (0x12 / sizeof(uint16_t)) #define NPCM_PCS_NR_SR_MIIS (0x20 / sizeof(uint16_t)) diff --git a/include/hw/net/xlnx-zynqmp-can.h b/include/hw/net/xlnx-zynqmp-= can.h index d23c1523caf..b43384a0983 100644 --- a/include/hw/net/xlnx-zynqmp-can.h +++ b/include/hw/net/xlnx-zynqmp-can.h @@ -30,7 +30,7 @@ #ifndef XLNX_ZYNQMP_CAN_H #define XLNX_ZYNQMP_CAN_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" #include "net/can_emu.h" #include "net/can_host.h" diff --git a/include/hw/nubus/nubus.h b/include/hw/nubus/nubus.h index 105ddddd0d8..52d8797053e 100644 --- a/include/hw/nubus/nubus.h +++ b/include/hw/nubus/nubus.h @@ -10,7 +10,7 @@ #define HW_NUBUS_NUBUS_H =20 #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "system/address-spaces.h" #include "qom/object.h" #include "qemu/units.h" diff --git a/include/hw/nvram/bcm2835_otp.h b/include/hw/nvram/bcm2835_otp.h index 1df33700bde..dba92a41e87 100644 --- a/include/hw/nvram/bcm2835_otp.h +++ b/include/hw/nvram/bcm2835_otp.h @@ -9,7 +9,7 @@ #ifndef BCM2835_OTP_H #define BCM2835_OTP_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_BCM2835_OTP "bcm2835-otp" diff --git a/include/hw/nvram/fw_cfg.h b/include/hw/nvram/fw_cfg.h index d41b9328fd1..a29a5d55eab 100644 --- a/include/hw/nvram/fw_cfg.h +++ b/include/hw/nvram/fw_cfg.h @@ -3,7 +3,7 @@ =20 #include "exec/hwaddr.h" #include "standard-headers/linux/qemu_fw_cfg.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "system/dma.h" #include "qom/object.h" =20 diff --git a/include/hw/nvram/mac_nvram.h b/include/hw/nvram/mac_nvram.h index e9d8398f849..e0237328225 100644 --- a/include/hw/nvram/mac_nvram.h +++ b/include/hw/nvram/mac_nvram.h @@ -27,7 +27,7 @@ #define MAC_NVRAM_H =20 #include "system/memory.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define MACIO_NVRAM_SIZE 0x2000 =20 diff --git a/include/hw/nvram/npcm7xx_otp.h b/include/hw/nvram/npcm7xx_otp.h index 77b05f8b82c..95118c64a74 100644 --- a/include/hw/nvram/npcm7xx_otp.h +++ b/include/hw/nvram/npcm7xx_otp.h @@ -17,7 +17,7 @@ #define NPCM7XX_OTP_H =20 #include "system/memory.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 /* Each OTP module holds 8192 bits of one-time programmable storage */ #define NPCM7XX_OTP_ARRAY_BITS (8192) diff --git a/include/hw/nvram/nrf51_nvm.h b/include/hw/nvram/nrf51_nvm.h index d85e788df5d..172e344a5d5 100644 --- a/include/hw/nvram/nrf51_nvm.h +++ b/include/hw/nvram/nrf51_nvm.h @@ -22,7 +22,7 @@ #ifndef NRF51_NVM_H #define NRF51_NVM_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" #define TYPE_NRF51_NVM "nrf51_soc.nvm" OBJECT_DECLARE_SIMPLE_TYPE(NRF51NVMState, NRF51_NVM) diff --git a/include/hw/nvram/xlnx-bbram.h b/include/hw/nvram/xlnx-bbram.h index 27423035d40..7a8dd85effd 100644 --- a/include/hw/nvram/xlnx-bbram.h +++ b/include/hw/nvram/xlnx-bbram.h @@ -29,7 +29,7 @@ #include "system/block-backend.h" #include "hw/core/qdev.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" =20 #define RMAX_XLNX_BBRAM ((0x4c / 4) + 1) diff --git a/include/hw/nvram/xlnx-versal-efuse.h b/include/hw/nvram/xlnx-v= ersal-efuse.h index 07f1000a851..b10d7483171 100644 --- a/include/hw/nvram/xlnx-versal-efuse.h +++ b/include/hw/nvram/xlnx-versal-efuse.h @@ -23,7 +23,7 @@ #define XLNX_VERSAL_EFUSE_H =20 #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" #include "hw/nvram/xlnx-efuse.h" =20 diff --git a/include/hw/nvram/xlnx-zynqmp-efuse.h b/include/hw/nvram/xlnx-z= ynqmp-efuse.h index d4886943860..b62f8181fd9 100644 --- a/include/hw/nvram/xlnx-zynqmp-efuse.h +++ b/include/hw/nvram/xlnx-zynqmp-efuse.h @@ -23,7 +23,7 @@ #define XLNX_ZYNQMP_EFUSE_H =20 #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" #include "hw/nvram/xlnx-efuse.h" =20 diff --git a/include/hw/pci-host/aspeed_pcie.h b/include/hw/pci-host/aspeed= _pcie.h index be53ea96b90..e660119a455 100644 --- a/include/hw/pci-host/aspeed_pcie.h +++ b/include/hw/pci-host/aspeed_pcie.h @@ -17,7 +17,7 @@ #ifndef ASPEED_PCIE_H #define ASPEED_PCIE_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/pci/pci_bridge.h" #include "hw/pci/pcie_host.h" #include "hw/pci/pcie_port.h" diff --git a/include/hw/pci-host/designware.h b/include/hw/pci-host/designw= are.h index a35a3bd06c8..e82fdc5fe74 100644 --- a/include/hw/pci-host/designware.h +++ b/include/hw/pci-host/designware.h @@ -21,7 +21,7 @@ #ifndef DESIGNWARE_H #define DESIGNWARE_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/pci/pci_bridge.h" #include "qom/object.h" =20 diff --git a/include/hw/pci-host/fsl_imx8m_phy.h b/include/hw/pci-host/fsl_= imx8m_phy.h index 5f1b212fd97..5786534b0ef 100644 --- a/include/hw/pci-host/fsl_imx8m_phy.h +++ b/include/hw/pci-host/fsl_imx8m_phy.h @@ -9,7 +9,7 @@ #ifndef HW_PCIHOST_FSLIMX8MPCIEPHY_H #define HW_PCIHOST_FSLIMX8MPCIEPHY_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" #include "system/memory.h" =20 diff --git a/include/hw/pci-host/gpex.h b/include/hw/pci-host/gpex.h index feaf8274740..695886dedde 100644 --- a/include/hw/pci-host/gpex.h +++ b/include/hw/pci-host/gpex.h @@ -21,7 +21,7 @@ #define HW_GPEX_H =20 #include "exec/hwaddr.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/pci/pci_device.h" #include "hw/pci/pcie_host.h" #include "qom/object.h" diff --git a/include/hw/pci-host/xilinx-pcie.h b/include/hw/pci-host/xilinx= -pcie.h index e1b3c1c2804..b7bab77c247 100644 --- a/include/hw/pci-host/xilinx-pcie.h +++ b/include/hw/pci-host/xilinx-pcie.h @@ -20,7 +20,7 @@ #ifndef HW_XILINX_PCIE_H #define HW_XILINX_PCIE_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/pci/pci_bridge.h" #include "hw/pci/pcie_host.h" #include "qom/object.h" diff --git a/include/hw/pci/pci_host.h b/include/hw/pci/pci_host.h index 954dd446fa4..d8dec0ee049 100644 --- a/include/hw/pci/pci_host.h +++ b/include/hw/pci/pci_host.h @@ -28,7 +28,7 @@ #ifndef PCI_HOST_H #define PCI_HOST_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define PCI_HOST_BYPASS_IOMMU "bypass-iommu" diff --git a/include/hw/ppc/mac_dbdma.h b/include/hw/ppc/mac_dbdma.h index 76764882453..e42805144ef 100644 --- a/include/hw/ppc/mac_dbdma.h +++ b/include/hw/ppc/mac_dbdma.h @@ -26,7 +26,7 @@ #include "system/memory.h" #include "qemu/iov.h" #include "system/dma.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 typedef struct DBDMA_io DBDMA_io; diff --git a/include/hw/ppc/openpic.h b/include/hw/ppc/openpic.h index 9c6af8e2076..5856955af9a 100644 --- a/include/hw/ppc/openpic.h +++ b/include/hw/ppc/openpic.h @@ -1,7 +1,7 @@ #ifndef OPENPIC_H #define OPENPIC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/cpu.h" #include "qom/object.h" =20 diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h index a8c1968f281..24f8843a409 100644 --- a/include/hw/ppc/pnv.h +++ b/include/hw/ppc/pnv.h @@ -22,7 +22,7 @@ =20 #include "cpu.h" #include "hw/core/boards.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/ipmi/ipmi.h" #include "hw/ppc/pnv_pnor.h" =20 diff --git a/include/hw/ppc/pnv_chip.h b/include/hw/ppc/pnv_chip.h index a5b8c49680d..ea47c97dd38 100644 --- a/include/hw/ppc/pnv_chip.h +++ b/include/hw/ppc/pnv_chip.h @@ -14,7 +14,7 @@ #include "hw/ppc/pnv_sbe.h" #include "hw/ppc/pnv_xive.h" #include "hw/ppc/pnv_i2c.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 OBJECT_DECLARE_TYPE(PnvChip, PnvChipClass, PNV_CHIP) diff --git a/include/hw/ppc/pnv_pnor.h b/include/hw/ppc/pnv_pnor.h index b44cafe918d..7bf737d33b4 100644 --- a/include/hw/ppc/pnv_pnor.h +++ b/include/hw/ppc/pnv_pnor.h @@ -10,7 +10,7 @@ #ifndef PPC_PNV_PNOR_H #define PPC_PNV_PNOR_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 /* * PNOR offset on the LPC FW address space. For now this should be 0 becau= se diff --git a/include/hw/ppc/pnv_psi.h b/include/hw/ppc/pnv_psi.h index 8a04860aa8b..e1e1ade0ce7 100644 --- a/include/hw/ppc/pnv_psi.h +++ b/include/hw/ppc/pnv_psi.h @@ -20,7 +20,7 @@ #ifndef PPC_PNV_PSI_H #define PPC_PNV_PSI_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/ppc/xics.h" #include "hw/ppc/xive.h" #include "hw/core/qdev.h" diff --git a/include/hw/ppc/ppc4xx.h b/include/hw/ppc/ppc4xx.h index 2e94b006730..b76bf091cfa 100644 --- a/include/hw/ppc/ppc4xx.h +++ b/include/hw/ppc/ppc4xx.h @@ -27,7 +27,7 @@ =20 #include "hw/ppc/ppc.h" #include "system/memory.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 /* * Generic DCR device diff --git a/include/hw/ppc/xive.h b/include/hw/ppc/xive.h index b7ca8544e43..e98d011998f 100644 --- a/include/hw/ppc/xive.h +++ b/include/hw/ppc/xive.h @@ -139,7 +139,7 @@ #define PPC_XIVE_H =20 #include "system/kvm.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/ppc/xive_regs.h" #include "qom/object.h" =20 diff --git a/include/hw/ppc/xive2.h b/include/hw/ppc/xive2.h index f4437e2c79a..9e2af8d8b17 100644 --- a/include/hw/ppc/xive2.h +++ b/include/hw/ppc/xive2.h @@ -11,7 +11,7 @@ =20 #include "hw/ppc/xive.h" #include "hw/ppc/xive2_regs.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 /* * XIVE2 Router (POWER10) diff --git a/include/hw/riscv/numa.h b/include/hw/riscv/numa.h index 2d9c41ba818..e68ce8e8afd 100644 --- a/include/hw/riscv/numa.h +++ b/include/hw/riscv/numa.h @@ -20,7 +20,7 @@ #define RISCV_NUMA_H =20 #include "hw/core/boards.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "system/numa.h" =20 /** diff --git a/include/hw/riscv/riscv_hart.h b/include/hw/riscv/riscv_hart.h index a6ed73a1956..197fa162311 100644 --- a/include/hw/riscv/riscv_hart.h +++ b/include/hw/riscv/riscv_hart.h @@ -21,7 +21,7 @@ #ifndef HW_RISCV_HART_H #define HW_RISCV_HART_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "target/riscv/cpu.h" #include "qom/object.h" =20 diff --git a/include/hw/riscv/spike.h b/include/hw/riscv/spike.h index acd41e90583..68689768841 100644 --- a/include/hw/riscv/spike.h +++ b/include/hw/riscv/spike.h @@ -21,7 +21,7 @@ =20 #include "hw/core/boards.h" #include "hw/riscv/riscv_hart.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define SPIKE_CPUS_MAX 8 #define SPIKE_SOCKETS_MAX 8 diff --git a/include/hw/riscv/virt.h b/include/hw/riscv/virt.h index 806b78cc639..18a2a323a34 100644 --- a/include/hw/riscv/virt.h +++ b/include/hw/riscv/virt.h @@ -21,7 +21,7 @@ =20 #include "hw/core/boards.h" #include "hw/riscv/riscv_hart.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/block/flash.h" #include "hw/intc/riscv_imsic.h" =20 diff --git a/include/hw/rtc/allwinner-rtc.h b/include/hw/rtc/allwinner-rtc.h index bf415431cd7..2b5ff065665 100644 --- a/include/hw/rtc/allwinner-rtc.h +++ b/include/hw/rtc/allwinner-rtc.h @@ -21,7 +21,7 @@ #define HW_MISC_ALLWINNER_RTC_H =20 #include "qom/object.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 /** * Constants diff --git a/include/hw/rtc/aspeed_rtc.h b/include/hw/rtc/aspeed_rtc.h index 596dfebb46c..ef37dd3d69f 100644 --- a/include/hw/rtc/aspeed_rtc.h +++ b/include/hw/rtc/aspeed_rtc.h @@ -8,7 +8,7 @@ #ifndef HW_RTC_ASPEED_RTC_H #define HW_RTC_ASPEED_RTC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 struct AspeedRtcState { diff --git a/include/hw/rtc/goldfish_rtc.h b/include/hw/rtc/goldfish_rtc.h index 162be338636..55ed9c4085c 100644 --- a/include/hw/rtc/goldfish_rtc.h +++ b/include/hw/rtc/goldfish_rtc.h @@ -22,7 +22,7 @@ #ifndef HW_RTC_GOLDFISH_RTC_H #define HW_RTC_GOLDFISH_RTC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_GOLDFISH_RTC "goldfish_rtc" diff --git a/include/hw/rtc/pl031.h b/include/hw/rtc/pl031.h index 9fd4be1abba..c8b26c2f00e 100644 --- a/include/hw/rtc/pl031.h +++ b/include/hw/rtc/pl031.h @@ -14,7 +14,7 @@ #ifndef HW_RTC_PL031_H #define HW_RTC_PL031_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/timer.h" #include "qom/object.h" =20 diff --git a/include/hw/rtc/xlnx-zynqmp-rtc.h b/include/hw/rtc/xlnx-zynqmp-= rtc.h index a542b87cb89..7d8505ce399 100644 --- a/include/hw/rtc/xlnx-zynqmp-rtc.h +++ b/include/hw/rtc/xlnx-zynqmp-rtc.h @@ -28,7 +28,7 @@ #define HW_RTC_XLNX_ZYNQMP_RTC_H =20 #include "hw/core/register.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_XLNX_ZYNQMP_RTC "xlnx-zynmp.rtc" diff --git a/include/hw/s390x/3270-ccw.h b/include/hw/s390x/3270-ccw.h index 14398822944..6b73c8b51f8 100644 --- a/include/hw/s390x/3270-ccw.h +++ b/include/hw/s390x/3270-ccw.h @@ -13,7 +13,7 @@ #ifndef HW_S390X_3270_CCW_H #define HW_S390X_3270_CCW_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/s390x/css.h" #include "hw/s390x/ccw-device.h" #include "qom/object.h" diff --git a/include/hw/s390x/css-bridge.h b/include/hw/s390x/css-bridge.h index 4f874ed781b..1a29d3a542d 100644 --- a/include/hw/s390x/css-bridge.h +++ b/include/hw/s390x/css-bridge.h @@ -14,7 +14,7 @@ #define HW_S390X_CSS_BRIDGE_H =20 #include "qom/object.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 /* virtual css bridge */ struct VirtualCssBridge { diff --git a/include/hw/s390x/s390_flic.h b/include/hw/s390x/s390_flic.h index 91edaaca409..c9db5279e3a 100644 --- a/include/hw/s390x/s390_flic.h +++ b/include/hw/s390x/s390_flic.h @@ -13,7 +13,7 @@ #ifndef HW_S390_FLIC_H #define HW_S390_FLIC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/s390x/adapter.h" #include "hw/virtio/virtio.h" #include "qemu/queue.h" diff --git a/include/hw/s390x/sclp.h b/include/hw/s390x/sclp.h index 33f01f85bb1..ddc61f1c214 100644 --- a/include/hw/s390x/sclp.h +++ b/include/hw/s390x/sclp.h @@ -14,7 +14,7 @@ #ifndef HW_S390_SCLP_H #define HW_S390_SCLP_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "target/s390x/cpu-qom.h" #include "qom/object.h" =20 diff --git a/include/hw/scsi/esp.h b/include/hw/scsi/esp.h index 3526bad7464..8887ba85124 100644 --- a/include/hw/scsi/esp.h +++ b/include/hw/scsi/esp.h @@ -2,7 +2,7 @@ #define QEMU_HW_ESP_H =20 #include "hw/scsi/scsi.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/fifo8.h" #include "qom/object.h" =20 diff --git a/include/hw/sd/allwinner-sdhost.h b/include/hw/sd/allwinner-sdh= ost.h index 1b951177dda..d154d81d24c 100644 --- a/include/hw/sd/allwinner-sdhost.h +++ b/include/hw/sd/allwinner-sdhost.h @@ -21,7 +21,7 @@ #define HW_SD_ALLWINNER_SDHOST_H =20 #include "qom/object.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/sd/sd.h" =20 /** diff --git a/include/hw/sd/bcm2835_sdhost.h b/include/hw/sd/bcm2835_sdhost.h index f6bca5c3979..8ba220d89e9 100644 --- a/include/hw/sd/bcm2835_sdhost.h +++ b/include/hw/sd/bcm2835_sdhost.h @@ -14,7 +14,7 @@ #ifndef BCM2835_SDHOST_H #define BCM2835_SDHOST_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/sd/sd.h" #include "qom/object.h" =20 diff --git a/include/hw/sd/sdhci.h b/include/hw/sd/sdhci.h index 51fb30ea528..32962c210d7 100644 --- a/include/hw/sd/sdhci.h +++ b/include/hw/sd/sdhci.h @@ -26,7 +26,7 @@ #define SDHCI_H =20 #include "hw/pci/pci_device.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/sd/sd.h" #include "qom/object.h" =20 diff --git a/include/hw/sparc/sparc32_dma.h b/include/hw/sparc/sparc32_dma.h index cde8ec02cb6..3181c17043a 100644 --- a/include/hw/sparc/sparc32_dma.h +++ b/include/hw/sparc/sparc32_dma.h @@ -1,7 +1,7 @@ #ifndef SPARC32_DMA_H #define SPARC32_DMA_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/scsi/esp.h" #include "hw/net/lance.h" #include "qom/object.h" diff --git a/include/hw/sparc/sun4m_iommu.h b/include/hw/sparc/sun4m_iommu.h index 4e2ab34cdef..ccefafedbc4 100644 --- a/include/hw/sparc/sun4m_iommu.h +++ b/include/hw/sparc/sun4m_iommu.h @@ -25,7 +25,7 @@ #ifndef SUN4M_IOMMU_H #define SUN4M_IOMMU_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define IOMMU_NREGS (4 * 4096 / 4) diff --git a/include/hw/sparc/sun4u_iommu.h b/include/hw/sparc/sun4u_iommu.h index f94566a72c9..3ae81a2406a 100644 --- a/include/hw/sparc/sun4u_iommu.h +++ b/include/hw/sparc/sun4u_iommu.h @@ -27,7 +27,7 @@ #ifndef SUN4U_IOMMU_H #define SUN4U_IOMMU_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define IOMMU_NREGS 3 diff --git a/include/hw/ssi/allwinner-a10-spi.h b/include/hw/ssi/allwinner-= a10-spi.h index da46e29a278..6e0e2993615 100644 --- a/include/hw/ssi/allwinner-a10-spi.h +++ b/include/hw/ssi/allwinner-a10-spi.h @@ -23,7 +23,7 @@ #define ALLWINNER_A10_SPI_H =20 #include "hw/ssi/ssi.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/fifo8.h" #include "qom/object.h" =20 diff --git a/include/hw/ssi/aspeed_smc.h b/include/hw/ssi/aspeed_smc.h index 25b95e74060..76831422c6f 100644 --- a/include/hw/ssi/aspeed_smc.h +++ b/include/hw/ssi/aspeed_smc.h @@ -26,7 +26,7 @@ #define ASPEED_SMC_H =20 #include "hw/ssi/ssi.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 struct AspeedSMCState; diff --git a/include/hw/ssi/bcm2835_spi.h b/include/hw/ssi/bcm2835_spi.h index d3f8cec1119..d5891fd9257 100644 --- a/include/hw/ssi/bcm2835_spi.h +++ b/include/hw/ssi/bcm2835_spi.h @@ -22,7 +22,7 @@ * THE SOFTWARE. */ =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/ssi/ssi.h" #include "qom/object.h" #include "qemu/fifo8.h" diff --git a/include/hw/ssi/ibex_spi_host.h b/include/hw/ssi/ibex_spi_host.h index 5bd5557b9a1..2aac6ee920c 100644 --- a/include/hw/ssi/ibex_spi_host.h +++ b/include/hw/ssi/ibex_spi_host.h @@ -27,7 +27,7 @@ #ifndef IBEX_SPI_HOST_H #define IBEX_SPI_HOST_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/ssi/ssi.h" #include "qemu/fifo8.h" #include "qom/object.h" diff --git a/include/hw/ssi/imx_spi.h b/include/hw/ssi/imx_spi.h index eeaf49bbac3..9a95127755f 100644 --- a/include/hw/ssi/imx_spi.h +++ b/include/hw/ssi/imx_spi.h @@ -10,7 +10,7 @@ #ifndef IMX_SPI_H #define IMX_SPI_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/ssi/ssi.h" #include "qemu/bitops.h" #include "qemu/fifo32.h" diff --git a/include/hw/ssi/mss-spi.h b/include/hw/ssi/mss-spi.h index ce6279c4310..85e11f72669 100644 --- a/include/hw/ssi/mss-spi.h +++ b/include/hw/ssi/mss-spi.h @@ -25,7 +25,7 @@ #ifndef HW_MSS_SPI_H #define HW_MSS_SPI_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/ssi/ssi.h" #include "qemu/fifo32.h" #include "qom/object.h" diff --git a/include/hw/ssi/npcm7xx_fiu.h b/include/hw/ssi/npcm7xx_fiu.h index 7ebd422ca6c..530d8e2f44a 100644 --- a/include/hw/ssi/npcm7xx_fiu.h +++ b/include/hw/ssi/npcm7xx_fiu.h @@ -17,7 +17,7 @@ #define NPCM7XX_FIU_H =20 #include "hw/ssi/ssi.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 /* * Number of registers in our device state structure. Don't change this wi= thout diff --git a/include/hw/ssi/npcm_pspi.h b/include/hw/ssi/npcm_pspi.h index 37cc784d962..dbf40710f32 100644 --- a/include/hw/ssi/npcm_pspi.h +++ b/include/hw/ssi/npcm_pspi.h @@ -17,7 +17,7 @@ #define NPCM_PSPI_H =20 #include "hw/ssi/ssi.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 /* * Number of registers in our device state structure. Don't change this wi= thout diff --git a/include/hw/ssi/pl022.h b/include/hw/ssi/pl022.h index 25d58db5f32..afddc314c79 100644 --- a/include/hw/ssi/pl022.h +++ b/include/hw/ssi/pl022.h @@ -22,7 +22,7 @@ #ifndef HW_SSI_PL022_H #define HW_SSI_PL022_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_PL022 "pl022" diff --git a/include/hw/ssi/pnv_spi.h b/include/hw/ssi/pnv_spi.h index c591a0663da..31a690854ba 100644 --- a/include/hw/ssi/pnv_spi.h +++ b/include/hw/ssi/pnv_spi.h @@ -22,7 +22,7 @@ #define PPC_PNV_SPI_H =20 #include "hw/ssi/ssi.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/fifo8.h" =20 #define TYPE_PNV_SPI "pnv-spi" diff --git a/include/hw/ssi/sifive_spi.h b/include/hw/ssi/sifive_spi.h index d0c40cdb11b..e45becb8c59 100644 --- a/include/hw/ssi/sifive_spi.h +++ b/include/hw/ssi/sifive_spi.h @@ -23,7 +23,7 @@ #define HW_SIFIVE_SPI_H =20 #include "qemu/fifo8.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define SIFIVE_SPI_REG_NUM (0x78 / 4) =20 diff --git a/include/hw/ssi/stm32f2xx_spi.h b/include/hw/ssi/stm32f2xx_spi.h index 3683b4ad329..26b02429aaa 100644 --- a/include/hw/ssi/stm32f2xx_spi.h +++ b/include/hw/ssi/stm32f2xx_spi.h @@ -25,7 +25,7 @@ #ifndef HW_STM32F2XX_SPI_H #define HW_STM32F2XX_SPI_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/ssi/ssi.h" #include "qom/object.h" =20 diff --git a/include/hw/ssi/xilinx_spips.h b/include/hw/ssi/xilinx_spips.h index 56cf69a37d2..c8f6c5053c4 100644 --- a/include/hw/ssi/xilinx_spips.h +++ b/include/hw/ssi/xilinx_spips.h @@ -28,7 +28,7 @@ #include "hw/ssi/ssi.h" #include "qemu/fifo32.h" #include "hw/core/stream.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 typedef struct XilinxSPIPS XilinxSPIPS; diff --git a/include/hw/timer/a9gtimer.h b/include/hw/timer/a9gtimer.h index 6ae9122e4b6..5c9b048b954 100644 --- a/include/hw/timer/a9gtimer.h +++ b/include/hw/timer/a9gtimer.h @@ -23,7 +23,7 @@ #ifndef A9GTIMER_H #define A9GTIMER_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define A9_GTIMER_MAX_CPUS 4 diff --git a/include/hw/timer/allwinner-a10-pit.h b/include/hw/timer/allwin= ner-a10-pit.h index 623a1fec219..fe6a408022e 100644 --- a/include/hw/timer/allwinner-a10-pit.h +++ b/include/hw/timer/allwinner-a10-pit.h @@ -2,7 +2,7 @@ #define ALLWINNER_A10_PIT_H =20 #include "hw/core/ptimer.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_AW_A10_PIT "allwinner-A10-timer" diff --git a/include/hw/timer/arm_mptimer.h b/include/hw/timer/arm_mptimer.h index 65a96e2a0dc..4c6f5696319 100644 --- a/include/hw/timer/arm_mptimer.h +++ b/include/hw/timer/arm_mptimer.h @@ -21,7 +21,7 @@ #ifndef HW_TIMER_ARM_MPTIMER_H #define HW_TIMER_ARM_MPTIMER_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define ARM_MPTIMER_MAX_CPUS 4 diff --git a/include/hw/timer/armv7m_systick.h b/include/hw/timer/armv7m_sy= stick.h index fb73f78a7b8..637dbf35c5c 100644 --- a/include/hw/timer/armv7m_systick.h +++ b/include/hw/timer/armv7m_systick.h @@ -12,7 +12,7 @@ #ifndef HW_TIMER_ARMV7M_SYSTICK_H #define HW_TIMER_ARMV7M_SYSTICK_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" #include "hw/core/ptimer.h" #include "hw/core/clock.h" diff --git a/include/hw/timer/avr_timer16.h b/include/hw/timer/avr_timer16.h index a1a032a24dc..5c9dca134a0 100644 --- a/include/hw/timer/avr_timer16.h +++ b/include/hw/timer/avr_timer16.h @@ -28,7 +28,7 @@ #ifndef HW_TIMER_AVR_TIMER16_H #define HW_TIMER_AVR_TIMER16_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/timer.h" #include "qom/object.h" =20 diff --git a/include/hw/timer/bcm2835_systmr.h b/include/hw/timer/bcm2835_s= ystmr.h index 93cb3415a68..0674a18f12d 100644 --- a/include/hw/timer/bcm2835_systmr.h +++ b/include/hw/timer/bcm2835_systmr.h @@ -9,7 +9,7 @@ #ifndef BCM2835_SYSTMR_H #define BCM2835_SYSTMR_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "qemu/timer.h" #include "qom/object.h" diff --git a/include/hw/timer/cadence_ttc.h b/include/hw/timer/cadence_ttc.h index e1251383f2a..27b555e96a4 100644 --- a/include/hw/timer/cadence_ttc.h +++ b/include/hw/timer/cadence_ttc.h @@ -18,7 +18,7 @@ #ifndef HW_TIMER_CADENCE_TTC_H #define HW_TIMER_CADENCE_TTC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/timer.h" =20 typedef struct { diff --git a/include/hw/timer/cmsdk-apb-dualtimer.h b/include/hw/timer/cmsd= k-apb-dualtimer.h index 103ac228815..7e238f04dfe 100644 --- a/include/hw/timer/cmsdk-apb-dualtimer.h +++ b/include/hw/timer/cmsdk-apb-dualtimer.h @@ -26,7 +26,7 @@ #ifndef CMSDK_APB_DUALTIMER_H #define CMSDK_APB_DUALTIMER_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/ptimer.h" #include "hw/core/clock.h" #include "qom/object.h" diff --git a/include/hw/timer/cmsdk-apb-timer.h b/include/hw/timer/cmsdk-ap= b-timer.h index f8c8fb8ce55..5ecda01776e 100644 --- a/include/hw/timer/cmsdk-apb-timer.h +++ b/include/hw/timer/cmsdk-apb-timer.h @@ -12,7 +12,7 @@ #ifndef CMSDK_APB_TIMER_H #define CMSDK_APB_TIMER_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/ptimer.h" #include "hw/core/clock.h" #include "qom/object.h" diff --git a/include/hw/timer/digic-timer.h b/include/hw/timer/digic-timer.h index f62242eaad3..bcd80108a2b 100644 --- a/include/hw/timer/digic-timer.h +++ b/include/hw/timer/digic-timer.h @@ -18,7 +18,7 @@ #ifndef HW_TIMER_DIGIC_TIMER_H #define HW_TIMER_DIGIC_TIMER_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/ptimer.h" #include "qom/object.h" =20 diff --git a/include/hw/timer/ibex_timer.h b/include/hw/timer/ibex_timer.h index 41f5c82a920..53055f3351b 100644 --- a/include/hw/timer/ibex_timer.h +++ b/include/hw/timer/ibex_timer.h @@ -25,7 +25,7 @@ #ifndef HW_IBEX_TIMER_H #define HW_IBEX_TIMER_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define TYPE_IBEX_TIMER "ibex-timer" OBJECT_DECLARE_SIMPLE_TYPE(IbexTimerState, IBEX_TIMER) diff --git a/include/hw/timer/imx_epit.h b/include/hw/timer/imx_epit.h index 2947fad1069..18d41ec1393 100644 --- a/include/hw/timer/imx_epit.h +++ b/include/hw/timer/imx_epit.h @@ -29,7 +29,7 @@ #ifndef IMX_EPIT_H #define IMX_EPIT_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/ptimer.h" #include "hw/misc/imx_ccm.h" #include "qom/object.h" diff --git a/include/hw/timer/imx_gpt.h b/include/hw/timer/imx_gpt.h index 5c12f686e1b..7f0d55b3499 100644 --- a/include/hw/timer/imx_gpt.h +++ b/include/hw/timer/imx_gpt.h @@ -29,7 +29,7 @@ #ifndef IMX_GPT_H #define IMX_GPT_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/ptimer.h" #include "hw/misc/imx_ccm.h" #include "qom/object.h" diff --git a/include/hw/timer/mss-timer.h b/include/hw/timer/mss-timer.h index 0cc376f945f..93a73fae72a 100644 --- a/include/hw/timer/mss-timer.h +++ b/include/hw/timer/mss-timer.h @@ -25,7 +25,7 @@ #ifndef HW_MSS_TIMER_H #define HW_MSS_TIMER_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/ptimer.h" #include "qom/object.h" =20 diff --git a/include/hw/timer/npcm7xx_timer.h b/include/hw/timer/npcm7xx_ti= mer.h index e287375dce6..9ad42c65a8a 100644 --- a/include/hw/timer/npcm7xx_timer.h +++ b/include/hw/timer/npcm7xx_timer.h @@ -17,7 +17,7 @@ #define NPCM7XX_TIMER_H =20 #include "system/memory.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/timer.h" =20 /* Each Timer Module (TIM) instance holds five 25 MHz timers. */ diff --git a/include/hw/timer/nrf51_timer.h b/include/hw/timer/nrf51_timer.h index 76827c11dc7..fe282ff78fd 100644 --- a/include/hw/timer/nrf51_timer.h +++ b/include/hw/timer/nrf51_timer.h @@ -13,7 +13,7 @@ #ifndef NRF51_TIMER_H #define NRF51_TIMER_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/timer.h" #include "qom/object.h" #define TYPE_NRF51_TIMER "nrf51_soc.timer" diff --git a/include/hw/timer/renesas_cmt.h b/include/hw/timer/renesas_cmt.h index 1c0b65c1d5a..e2aa6d47af5 100644 --- a/include/hw/timer/renesas_cmt.h +++ b/include/hw/timer/renesas_cmt.h @@ -10,7 +10,7 @@ #define HW_TIMER_RENESAS_CMT_H =20 #include "qemu/timer.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_RENESAS_CMT "renesas-cmt" diff --git a/include/hw/timer/renesas_tmr.h b/include/hw/timer/renesas_tmr.h index caf7eec0dca..061b8f2900a 100644 --- a/include/hw/timer/renesas_tmr.h +++ b/include/hw/timer/renesas_tmr.h @@ -10,7 +10,7 @@ #define HW_TIMER_RENESAS_TMR_H =20 #include "qemu/timer.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_RENESAS_TMR "renesas-tmr" diff --git a/include/hw/timer/sifive_pwm.h b/include/hw/timer/sifive_pwm.h index 6a8cf7b29e4..d3a49be6b6a 100644 --- a/include/hw/timer/sifive_pwm.h +++ b/include/hw/timer/sifive_pwm.h @@ -27,7 +27,7 @@ #ifndef HW_SIFIVE_PWM_H #define HW_SIFIVE_PWM_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/timer.h" #include "qom/object.h" =20 diff --git a/include/hw/timer/sse-counter.h b/include/hw/timer/sse-counter.h index b433e58d370..15bd1a51047 100644 --- a/include/hw/timer/sse-counter.h +++ b/include/hw/timer/sse-counter.h @@ -30,7 +30,7 @@ #ifndef SSE_COUNTER_H #define SSE_COUNTER_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" #include "qemu/notify.h" =20 diff --git a/include/hw/timer/sse-timer.h b/include/hw/timer/sse-timer.h index 265ad32400d..c9ad2225a63 100644 --- a/include/hw/timer/sse-timer.h +++ b/include/hw/timer/sse-timer.h @@ -24,7 +24,7 @@ #ifndef SSE_TIMER_H #define SSE_TIMER_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/timer.h" #include "qom/object.h" #include "hw/timer/sse-counter.h" diff --git a/include/hw/timer/stellaris-gptm.h b/include/hw/timer/stellaris= -gptm.h index 9d663b58dfa..824723b2730 100644 --- a/include/hw/timer/stellaris-gptm.h +++ b/include/hw/timer/stellaris-gptm.h @@ -11,7 +11,7 @@ #define HW_TIMER_STELLARIS_GPTM_H =20 #include "qom/object.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "hw/core/clock.h" =20 diff --git a/include/hw/timer/stm32f2xx_timer.h b/include/hw/timer/stm32f2x= x_timer.h index 90f40f1746f..040e64d4992 100644 --- a/include/hw/timer/stm32f2xx_timer.h +++ b/include/hw/timer/stm32f2xx_timer.h @@ -25,7 +25,7 @@ #ifndef HW_STM32F2XX_TIMER_H #define HW_STM32F2XX_TIMER_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/timer.h" #include "qom/object.h" =20 diff --git a/include/hw/tricore/tc27x_soc.h b/include/hw/tricore/tc27x_soc.h index dd3a7485c85..2d2bdca3fd2 100644 --- a/include/hw/tricore/tc27x_soc.h +++ b/include/hw/tricore/tc27x_soc.h @@ -21,7 +21,7 @@ #ifndef TC27X_SOC_H #define TC27X_SOC_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "target/tricore/cpu.h" #include "qom/object.h" =20 diff --git a/include/hw/tricore/tricore_testdevice.h b/include/hw/tricore/t= ricore_testdevice.h index 2c57b62f222..98c87ba76be 100644 --- a/include/hw/tricore/tricore_testdevice.h +++ b/include/hw/tricore/tricore_testdevice.h @@ -18,7 +18,7 @@ #ifndef HW_TRICORE_TESTDEVICE_H #define HW_TRICORE_TESTDEVICE_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define TYPE_TRICORE_TESTDEVICE "tricore_testdevice" #define TRICORE_TESTDEVICE(obj) \ diff --git a/include/hw/usb/imx-usb-phy.h b/include/hw/usb/imx-usb-phy.h index d1e867b77a3..1b45b6e62a5 100644 --- a/include/hw/usb/imx-usb-phy.h +++ b/include/hw/usb/imx-usb-phy.h @@ -1,7 +1,7 @@ #ifndef IMX_USB_PHY_H #define IMX_USB_PHY_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/bitops.h" #include "qom/object.h" =20 diff --git a/include/hw/usb/xlnx-usb-subsystem.h b/include/hw/usb/xlnx-usb-= subsystem.h index b22e5d065be..e78ca743d34 100644 --- a/include/hw/usb/xlnx-usb-subsystem.h +++ b/include/hw/usb/xlnx-usb-subsystem.h @@ -26,7 +26,7 @@ #define XLNX_USB_SUBSYSTEM_H =20 #include "hw/core/register.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/usb/xlnx-versal-usb2-ctrl-regs.h" #include "hw/usb/hcd-dwc3.h" =20 diff --git a/include/hw/usb/xlnx-versal-usb2-ctrl-regs.h b/include/hw/usb/x= lnx-versal-usb2-ctrl-regs.h index c1470da4758..a8575ad6696 100644 --- a/include/hw/usb/xlnx-versal-usb2-ctrl-regs.h +++ b/include/hw/usb/xlnx-versal-usb2-ctrl-regs.h @@ -27,7 +27,7 @@ #define XLNX_VERSAL_USB2_CTRL_REGS_H =20 #include "hw/core/register.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #define TYPE_XILINX_VERSAL_USB2_CTRL_REGS "xlnx.versal-usb2-ctrl-regs" =20 diff --git a/include/hw/virtio/virtio-mmio.h b/include/hw/virtio/virtio-mmi= o.h index aa492620228..1eab3c0dece 100644 --- a/include/hw/virtio/virtio-mmio.h +++ b/include/hw/virtio/virtio-mmio.h @@ -22,7 +22,7 @@ #ifndef HW_VIRTIO_MMIO_H #define HW_VIRTIO_MMIO_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/virtio/virtio-bus.h" =20 /* QOM macros */ diff --git a/include/hw/watchdog/allwinner-wdt.h b/include/hw/watchdog/allw= inner-wdt.h index 6f84dbd1a72..e6da42a9f78 100644 --- a/include/hw/watchdog/allwinner-wdt.h +++ b/include/hw/watchdog/allwinner-wdt.h @@ -25,7 +25,7 @@ =20 #include "qom/object.h" #include "hw/core/ptimer.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 /* * This is a model of the Allwinner watchdog. diff --git a/include/hw/watchdog/cmsdk-apb-watchdog.h b/include/hw/watchdog= /cmsdk-apb-watchdog.h index 9bf95ba06d5..1c7de639993 100644 --- a/include/hw/watchdog/cmsdk-apb-watchdog.h +++ b/include/hw/watchdog/cmsdk-apb-watchdog.h @@ -31,7 +31,7 @@ #ifndef CMSDK_APB_WATCHDOG_H #define CMSDK_APB_WATCHDOG_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/ptimer.h" #include "hw/core/clock.h" #include "qom/object.h" diff --git a/include/hw/watchdog/sbsa_gwdt.h b/include/hw/watchdog/sbsa_gwd= t.h index ace8fe04c87..307a4f291a3 100644 --- a/include/hw/watchdog/sbsa_gwdt.h +++ b/include/hw/watchdog/sbsa_gwdt.h @@ -13,7 +13,7 @@ #define WDT_SBSA_GWDT_H =20 #include "qemu/bitops.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" =20 #define TYPE_WDT_SBSA "sbsa_gwdt" diff --git a/include/hw/watchdog/wdt_aspeed.h b/include/hw/watchdog/wdt_asp= eed.h index 830b0a79368..ecf20fbb4ea 100644 --- a/include/hw/watchdog/wdt_aspeed.h +++ b/include/hw/watchdog/wdt_aspeed.h @@ -11,7 +11,7 @@ #define WDT_ASPEED_H =20 #include "hw/misc/aspeed_scu.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define TYPE_ASPEED_WDT "aspeed.wdt" diff --git a/include/hw/watchdog/wdt_imx2.h b/include/hw/watchdog/wdt_imx2.h index 53a8360e906..ad36b8820d8 100644 --- a/include/hw/watchdog/wdt_imx2.h +++ b/include/hw/watchdog/wdt_imx2.h @@ -13,7 +13,7 @@ #define WDT_IMX2_H =20 #include "qemu/bitops.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "hw/core/ptimer.h" #include "qom/object.h" diff --git a/include/hw/xen/xen_pvdev.h b/include/hw/xen/xen_pvdev.h index 629bec90d09..232c496008c 100644 --- a/include/hw/xen/xen_pvdev.h +++ b/include/hw/xen/xen_pvdev.h @@ -1,7 +1,7 @@ #ifndef QEMU_HW_XEN_PVDEV_H #define QEMU_HW_XEN_PVDEV_H =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/xen/xen_backend_ops.h" =20 /* ------------------------------------------------------------- */ diff --git a/rust/hw/core/wrapper.h b/rust/hw/core/wrapper.h index f6b34161a68..8278738f3d8 100644 --- a/rust/hw/core/wrapper.h +++ b/rust/hw/core/wrapper.h @@ -24,7 +24,7 @@ typedef enum memory_order { =20 #include "qemu/osdep.h" =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/clock.h" #include "hw/core/qdev-clock.h" #include "hw/core/qdev-properties.h" diff --git a/hw/acpi/cxl.c b/hw/acpi/cxl.c index 75d5b30bb8b..75edb2c0a65 100644 --- a/hw/acpi/cxl.c +++ b/hw/acpi/cxl.c @@ -18,7 +18,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/pci/pci_bridge.h" #include "hw/pci/pci_host.h" #include "hw/cxl/cxl.h" diff --git a/hw/adc/stm32f2xx_adc.c b/hw/adc/stm32f2xx_adc.c index a490ae640d9..50a04a0722f 100644 --- a/hw/adc/stm32f2xx_adc.c +++ b/hw/adc/stm32f2xx_adc.c @@ -23,7 +23,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/arm/allwinner-a10.c b/hw/arm/allwinner-a10.c index d7508ee0ecd..66f30757dd5 100644 --- a/hw/arm/allwinner-a10.c +++ b/hw/arm/allwinner-a10.c @@ -20,7 +20,7 @@ #include "qemu/error-report.h" #include "qemu/module.h" #include "hw/char/serial-mm.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/arm/allwinner-a10.h" #include "hw/misc/unimp.h" #include "system/system.h" diff --git a/hw/arm/allwinner-h3.c b/hw/arm/allwinner-h3.c index 757c89ef39f..262e99b3f9a 100644 --- a/hw/arm/allwinner-h3.c +++ b/hw/arm/allwinner-h3.c @@ -23,7 +23,7 @@ #include "qemu/module.h" #include "qemu/units.h" #include "hw/core/qdev.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/char/serial-mm.h" #include "hw/misc/unimp.h" #include "hw/usb/hcd-ehci.h" diff --git a/hw/arm/allwinner-r40.c b/hw/arm/allwinner-r40.c index 396e886af47..a1ae75deb6b 100644 --- a/hw/arm/allwinner-r40.c +++ b/hw/arm/allwinner-r40.c @@ -24,7 +24,7 @@ #include "qemu/units.h" #include "hw/core/boards.h" #include "hw/core/qdev.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/char/serial-mm.h" #include "hw/misc/unimp.h" #include "hw/usb/hcd-ehci.h" diff --git a/hw/arm/armsse.c b/hw/arm/armsse.c index b6fc95df3b6..ddb210c8957 100644 --- a/hw/arm/armsse.c +++ b/hw/arm/armsse.c @@ -16,7 +16,7 @@ #include "qemu/units.h" #include "qapi/error.h" #include "trace.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/core/registerfields.h" #include "hw/arm/armsse.h" diff --git a/hw/arm/armv7m.c b/hw/arm/armv7m.c index 844d620286c..a29eab6c915 100644 --- a/hw/arm/armv7m.c +++ b/hw/arm/armv7m.c @@ -10,7 +10,7 @@ #include "qemu/osdep.h" #include "hw/arm/armv7m.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/arm/boot.h" #include "hw/core/loader.h" #include "hw/core/qdev-properties.h" diff --git a/hw/arm/bcm2836.c b/hw/arm/bcm2836.c index cd61ba15054..ee2f44debd1 100644 --- a/hw/arm/bcm2836.c +++ b/hw/arm/bcm2836.c @@ -14,7 +14,7 @@ #include "qemu/module.h" #include "hw/arm/bcm2836.h" #include "hw/arm/raspi_platform.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "target/arm/cpu-qom.h" #include "target/arm/gtimer.h" =20 diff --git a/hw/arm/bcm2838.c b/hw/arm/bcm2838.c index 22aa754613c..c14a8540465 100644 --- a/hw/arm/bcm2838.c +++ b/hw/arm/bcm2838.c @@ -10,7 +10,7 @@ #include "qapi/error.h" #include "qemu/module.h" #include "hw/arm/raspi_platform.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/arm/bcm2838.h" #include "trace.h" =20 diff --git a/hw/arm/collie.c b/hw/arm/collie.c index 73c40bc57da..91f0a94b6ff 100644 --- a/hw/arm/collie.c +++ b/hw/arm/collie.c @@ -11,7 +11,7 @@ #include "qemu/osdep.h" #include "qemu/units.h" #include "qemu/cutils.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/boards.h" #include "strongarm.h" #include "hw/arm/boot.h" diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c index 5d68579cd6b..25c385ba1f5 100644 --- a/hw/arm/exynos4210.c +++ b/hw/arm/exynos4210.c @@ -29,7 +29,7 @@ #include "hw/core/irq.h" #include "system/blockdev.h" #include "system/system.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/arm/boot.h" #include "hw/core/loader.h" #include "hw/core/qdev-properties.h" diff --git a/hw/arm/exynos4_boards.c b/hw/arm/exynos4_boards.c index e8c171f40a8..1b8c9b618f8 100644 --- a/hw/arm/exynos4_boards.c +++ b/hw/arm/exynos4_boards.c @@ -25,7 +25,7 @@ #include "qemu/units.h" #include "qapi/error.h" #include "qemu/error-report.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "net/net.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" diff --git a/hw/arm/highbank.c b/hw/arm/highbank.c index b8c1256328d..92d497999c0 100644 --- a/hw/arm/highbank.c +++ b/hw/arm/highbank.c @@ -20,7 +20,7 @@ #include "qemu/osdep.h" #include "qemu/datadir.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c index b24df11db92..118808f2dc7 100644 --- a/hw/arm/integratorcp.c +++ b/hw/arm/integratorcp.c @@ -9,7 +9,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/core/boards.h" #include "hw/arm/boot.h" diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c index 39e8f69cae0..250fdb49b6f 100644 --- a/hw/arm/musicpal.c +++ b/hw/arm/musicpal.c @@ -12,7 +12,7 @@ #include "qemu/osdep.h" #include "qemu/units.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" diff --git a/hw/arm/nrf51_soc.c b/hw/arm/nrf51_soc.c index a4ccfa373a6..8d8ea71da43 100644 --- a/hw/arm/nrf51_soc.c +++ b/hw/arm/nrf51_soc.c @@ -11,7 +11,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/arm/boot.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/qdev-clock.h" #include "hw/misc/unimp.h" #include "qemu/log.h" diff --git a/hw/arm/omap1.c b/hw/arm/omap1.c index fcba6eb52d5..f3d6be1e295 100644 --- a/hw/arm/omap1.c +++ b/hw/arm/omap1.c @@ -38,7 +38,7 @@ #include "system/runstate.h" #include "system/rtc.h" #include "qemu/range.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/cutils.h" #include "qemu/bcd.h" #include "target/arm/cpu-qom.h" diff --git a/hw/arm/realview.c b/hw/arm/realview.c index d7f96b9d3e4..c9558be4d45 100644 --- a/hw/arm/realview.c +++ b/hw/arm/realview.c @@ -10,7 +10,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "cpu.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/arm/boot.h" #include "hw/arm/primecell.h" #include "hw/arm/machines-qom.h" diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index e12a64a20fb..985dfb345f2 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -19,7 +19,7 @@ #include "qemu/osdep.h" #include "qemu/bitops.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/core/qdev-properties.h" #include "hw/core/qdev.h" diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c index f3e8e15de81..56ecc828f4f 100644 --- a/hw/arm/stellaris.c +++ b/hw/arm/stellaris.c @@ -11,7 +11,7 @@ #include "qemu/bitops.h" #include "qapi/error.h" #include "hw/core/split-irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/sd/sd.h" #include "hw/ssi/ssi.h" #include "hw/arm/boot.h" diff --git a/hw/arm/strongarm.c b/hw/arm/strongarm.c index acc75476c34..5a3242195ab 100644 --- a/hw/arm/strongarm.c +++ b/hw/arm/strongarm.c @@ -31,7 +31,7 @@ #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" #include "hw/core/qdev-properties-system.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "strongarm.h" #include "qemu/error-report.h" diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c index 94661b83d00..254b1610b39 100644 --- a/hw/arm/versatilepb.c +++ b/hw/arm/versatilepb.c @@ -9,7 +9,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c index 75cb77da828..cc6ae7d4c48 100644 --- a/hw/arm/vexpress.c +++ b/hw/arm/vexpress.c @@ -24,7 +24,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qemu/datadir.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/arm/boot.h" #include "hw/arm/primecell.h" #include "hw/arm/machines-qom.h" diff --git a/hw/arm/virt.c b/hw/arm/virt.c index d8773cb541f..fd0e28f030a 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -34,7 +34,7 @@ #include "qemu/option.h" #include "qemu/target-info.h" #include "monitor/qdev.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/arm/boot.h" #include "hw/arm/primecell.h" #include "hw/arm/virt.h" diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c index 0d9c01e4b78..d43f36b7189 100644 --- a/hw/arm/xilinx_zynq.c +++ b/hw/arm/xilinx_zynq.c @@ -18,7 +18,7 @@ #include "qemu/osdep.h" #include "qemu/units.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/arm/boot.h" #include "hw/arm/machines-qom.h" #include "net/net.h" diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index e82ac8e3538..2b04513ba2e 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -17,7 +17,7 @@ #include "system/address-spaces.h" #include "hw/block/flash.h" #include "hw/core/boards.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/arm/fdt.h" #include "hw/arm/xlnx-versal.h" #include "hw/arm/boot.h" diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index a0b2f18b551..facf92b45cc 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -15,7 +15,7 @@ #include "qapi/error.h" #include "qobject/qlist.h" #include "qemu/module.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "net/net.h" #include "system/system.h" #include "hw/misc/unimp.h" diff --git a/hw/audio/asc.c b/hw/audio/asc.c index 77a5cc1092d..a934c2e82c0 100644 --- a/hw/audio/asc.c +++ b/hw/audio/asc.c @@ -13,7 +13,7 @@ #include "qemu/osdep.h" #include "qemu/timer.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "qemu/audio.h" #include "hw/audio/asc.h" diff --git a/hw/audio/cs4231.c b/hw/audio/cs4231.c index 97cceb44d86..bcf98160ec3 100644 --- a/hw/audio/cs4231.c +++ b/hw/audio/cs4231.c @@ -23,7 +23,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/module.h" #include "trace.h" diff --git a/hw/audio/marvell_88w8618.c b/hw/audio/marvell_88w8618.c index 39f4b4514dc..6d5e99123d6 100644 --- a/hw/audio/marvell_88w8618.c +++ b/hw/audio/marvell_88w8618.c @@ -11,7 +11,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" diff --git a/hw/audio/pl041.c b/hw/audio/pl041.c index 117b6b0ae65..4a9b8ad65ce 100644 --- a/hw/audio/pl041.c +++ b/hw/audio/pl041.c @@ -23,7 +23,7 @@ #include "qemu/osdep.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/log.h" #include "qemu/module.h" =20 diff --git a/hw/avr/atmega.c b/hw/avr/atmega.c index b185295d551..280f613af3a 100644 --- a/hw/avr/atmega.c +++ b/hw/avr/atmega.c @@ -17,7 +17,7 @@ #include "system/address-spaces.h" #include "system/system.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" #include "hw/misc/unimp.h" #include "migration/vmstate.h" diff --git a/hw/block/fdc-sysbus.c b/hw/block/fdc-sysbus.c index 956860ab298..ab57dfd83ea 100644 --- a/hw/block/fdc-sysbus.c +++ b/hw/block/fdc-sysbus.c @@ -27,7 +27,7 @@ #include "qapi/error.h" #include "qom/object.h" #include "system/memory.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/block/fdc.h" #include "migration/vmstate.h" #include "fdc-internal.h" diff --git a/hw/block/pflash_cfi01.c b/hw/block/pflash_cfi01.c index d1673a1b411..c0f5b9d8fad 100644 --- a/hw/block/pflash_cfi01.c +++ b/hw/block/pflash_cfi01.c @@ -48,7 +48,7 @@ #include "qemu/host-utils.h" #include "qemu/log.h" #include "qemu/option.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "system/blockdev.h" #include "system/runstate.h" diff --git a/hw/block/pflash_cfi02.c b/hw/block/pflash_cfi02.c index 423516cb301..6f952fe7de0 100644 --- a/hw/block/pflash_cfi02.c +++ b/hw/block/pflash_cfi02.c @@ -44,7 +44,7 @@ #include "system/block-backend.h" #include "qemu/host-utils.h" #include "qemu/module.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "trace.h" =20 diff --git a/hw/block/swim.c b/hw/block/swim.c index 53ba7fa59cf..54b63bfbb52 100644 --- a/hw/block/swim.c +++ b/hw/block/swim.c @@ -14,7 +14,7 @@ #include "qemu/main-loop.h" #include "qapi/error.h" #include "system/block-backend.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/block/block.h" #include "hw/block/swim.h" diff --git a/hw/char/cadence_uart.c b/hw/char/cadence_uart.c index c24ece5fe88..eff6a3c4d17 100644 --- a/hw/char/cadence_uart.c +++ b/hw/char/cadence_uart.c @@ -22,7 +22,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "chardev/char-fe.h" #include "chardev/char-serial.h" diff --git a/hw/char/cmsdk-apb-uart.c b/hw/char/cmsdk-apb-uart.c index 1a83e4a9bd1..bf891081dcc 100644 --- a/hw/char/cmsdk-apb-uart.c +++ b/hw/char/cmsdk-apb-uart.c @@ -20,7 +20,7 @@ #include "qemu/module.h" #include "qapi/error.h" #include "trace.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/core/registerfields.h" #include "chardev/char-fe.h" diff --git a/hw/char/digic-uart.c b/hw/char/digic-uart.c index 8a704dfcf50..bd669173f01 100644 --- a/hw/char/digic-uart.c +++ b/hw/char/digic-uart.c @@ -27,7 +27,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "chardev/char-fe.h" #include "qemu/log.h" diff --git a/hw/char/escc.c b/hw/char/escc.c index a2fb682f8be..3b46818ecc9 100644 --- a/hw/char/escc.c +++ b/hw/char/escc.c @@ -26,7 +26,7 @@ #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" #include "hw/core/qdev-properties-system.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/module.h" #include "hw/char/escc.h" diff --git a/hw/char/exynos4210_uart.c b/hw/char/exynos4210_uart.c index d1c2f249150..46fc4e31b83 100644 --- a/hw/char/exynos4210_uart.c +++ b/hw/char/exynos4210_uart.c @@ -20,7 +20,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qemu/error-report.h" diff --git a/hw/char/goldfish_tty.c b/hw/char/goldfish_tty.c index 35bcb2a9676..8e1e9228c78 100644 --- a/hw/char/goldfish_tty.c +++ b/hw/char/goldfish_tty.c @@ -10,7 +10,7 @@ #include "qemu/osdep.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties-system.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "chardev/char-fe.h" #include "qemu/log.h" diff --git a/hw/char/grlib_apbuart.c b/hw/char/grlib_apbuart.c index 7be847d0932..92f534552ee 100644 --- a/hw/char/grlib_apbuart.c +++ b/hw/char/grlib_apbuart.c @@ -29,7 +29,7 @@ #include "hw/core/qdev-properties.h" #include "hw/core/qdev-properties-system.h" #include "hw/char/grlib_uart.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/module.h" #include "chardev/char-fe.h" =20 diff --git a/hw/char/mcf_uart.c b/hw/char/mcf_uart.c index 51edf917c94..24fd42da063 100644 --- a/hw/char/mcf_uart.c +++ b/hw/char/mcf_uart.c @@ -8,7 +8,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/module.h" #include "qapi/error.h" #include "hw/m68k/mcf.h" diff --git a/hw/char/pl011.c b/hw/char/pl011.c index 0b0af677988..ac453c1057f 100644 --- a/hw/char/pl011.c +++ b/hw/char/pl011.c @@ -22,7 +22,7 @@ #include "qapi/error.h" #include "hw/char/pl011.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/qdev-clock.h" #include "hw/core/qdev-properties.h" #include "hw/core/qdev-properties-system.h" diff --git a/hw/char/sh_serial.c b/hw/char/sh_serial.c index b3bed2bb7bf..10f96e3a44b 100644 --- a/hw/char/sh_serial.c +++ b/hw/char/sh_serial.c @@ -26,7 +26,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "hw/core/qdev.h" #include "hw/core/qdev-properties.h" diff --git a/hw/char/xilinx_uartlite.c b/hw/char/xilinx_uartlite.c index ba7e9e339b6..3ef99adadda 100644 --- a/hw/char/xilinx_uartlite.c +++ b/hw/char/xilinx_uartlite.c @@ -29,7 +29,7 @@ #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" #include "hw/core/qdev-properties-system.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/module.h" #include "chardev/char-fe.h" #include "qom/object.h" diff --git a/hw/core/qdev.c b/hw/core/qdev.c index a3b41286ea0..fc3425a8fe1 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -35,7 +35,7 @@ #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" #include "hw/core/boards.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/qdev-clock.h" #include "migration/vmstate.h" #include "trace.h" diff --git a/hw/core/sysbus.c b/hw/core/sysbus.c index ae447c1196a..3adf2f2faf2 100644 --- a/hw/core/sysbus.c +++ b/hw/core/sysbus.c @@ -19,7 +19,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "monitor/monitor.h" #include "system/address-spaces.h" =20 diff --git a/hw/display/artist.c b/hw/display/artist.c index 22524d9c5fe..206f77afba1 100644 --- a/hw/display/artist.c +++ b/hw/display/artist.c @@ -14,7 +14,7 @@ #include "qemu/units.h" #include "qemu/bswap.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/loader.h" #include "hw/core/qdev.h" #include "hw/core/qdev-properties.h" diff --git a/hw/display/cg3.c b/hw/display/cg3.c index f4067d7825a..59d66d3d4b8 100644 --- a/hw/display/cg3.c +++ b/hw/display/cg3.c @@ -28,7 +28,7 @@ #include "qapi/error.h" #include "qemu/error-report.h" #include "ui/console.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/core/irq.h" #include "hw/core/loader.h" diff --git a/hw/display/exynos4210_fimd.c b/hw/display/exynos4210_fimd.c index 8e3a61ed0e8..7f841b88047 100644 --- a/hw/display/exynos4210_fimd.c +++ b/hw/display/exynos4210_fimd.c @@ -26,7 +26,7 @@ #include "hw/core/qdev-properties.h" #include "hw/hw.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "ui/console.h" #include "ui/pixel_ops.h" diff --git a/hw/display/g364fb.c b/hw/display/g364fb.c index 8ed3e6ecc37..2eefafcaf67 100644 --- a/hw/display/g364fb.c +++ b/hw/display/g364fb.c @@ -28,7 +28,7 @@ #include "ui/console.h" #include "ui/pixel_ops.h" #include "trace.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qom/object.h" =20 diff --git a/hw/display/jazz_led.c b/hw/display/jazz_led.c index 90e82b58be2..9d62e51bed9 100644 --- a/hw/display/jazz_led.c +++ b/hw/display/jazz_led.c @@ -27,7 +27,7 @@ #include "ui/console.h" #include "ui/pixel_ops.h" #include "trace.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qom/object.h" =20 diff --git a/hw/display/macfb.c b/hw/display/macfb.c index fa3572ead34..388f8de5070 100644 --- a/hw/display/macfb.c +++ b/hw/display/macfb.c @@ -12,7 +12,7 @@ =20 #include "qemu/osdep.h" #include "qemu/units.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "ui/console.h" #include "ui/pixel_ops.h" #include "hw/nubus/nubus.h" diff --git a/hw/display/pl110.c b/hw/display/pl110.c index 2537c264625..4cd62a98757 100644 --- a/hw/display/pl110.c +++ b/hw/display/pl110.c @@ -9,7 +9,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "ui/console.h" diff --git a/hw/display/sm501.c b/hw/display/sm501.c index 6ccec03fe72..a07aa9886f9 100644 --- a/hw/display/sm501.c +++ b/hw/display/sm501.c @@ -32,7 +32,7 @@ #include "hw/usb/hcd-ohci.h" #include "hw/char/serial-mm.h" #include "ui/console.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/pci/pci_device.h" #include "hw/core/qdev-properties.h" diff --git a/hw/display/tcx.c b/hw/display/tcx.c index b208923523a..7cba3e25a78 100644 --- a/hw/display/tcx.c +++ b/hw/display/tcx.c @@ -29,7 +29,7 @@ #include "ui/pixel_ops.h" #include "hw/core/loader.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/error-report.h" #include "qemu/module.h" diff --git a/hw/display/vga-mmio.c b/hw/display/vga-mmio.c index 4c497b70f41..1a9608d865f 100644 --- a/hw/display/vga-mmio.c +++ b/hw/display/vga-mmio.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/display/vga.h" #include "hw/core/qdev-properties.h" #include "ui/console.h" diff --git a/hw/dma/pl080.c b/hw/dma/pl080.c index bd61d8ed488..514206b7c31 100644 --- a/hw/dma/pl080.c +++ b/hw/dma/pl080.c @@ -8,7 +8,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/dma/pl330.c b/hw/dma/pl330.c index 4f00092f856..5a8df39d8f5 100644 --- a/hw/dma/pl330.c +++ b/hw/dma/pl330.c @@ -18,7 +18,7 @@ #include "qemu/cutils.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qemu/timer.h" diff --git a/hw/dma/rc4030.c b/hw/dma/rc4030.c index 8ce74257b62..93db286e690 100644 --- a/hw/dma/rc4030.c +++ b/hw/dma/rc4030.c @@ -26,7 +26,7 @@ #include "qemu/units.h" #include "hw/core/irq.h" #include "hw/mips/mips.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qemu/timer.h" diff --git a/hw/dma/sifive_pdma.c b/hw/dma/sifive_pdma.c index 2fbc37ffd14..2844515b2d7 100644 --- a/hw/dma/sifive_pdma.c +++ b/hw/dma/sifive_pdma.c @@ -26,7 +26,7 @@ #include "qapi/error.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "system/dma.h" #include "hw/dma/sifive_pdma.h" diff --git a/hw/dma/sparc32_dma.c b/hw/dma/sparc32_dma.c index 5601d221ec2..5b770599865 100644 --- a/hw/dma/sparc32_dma.c +++ b/hw/dma/sparc32_dma.c @@ -30,7 +30,7 @@ #include "hw/core/qdev-properties.h" #include "hw/sparc/sparc32_dma.h" #include "hw/sparc/sun4m_iommu.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "system/dma.h" #include "qapi/error.h" diff --git a/hw/dma/xilinx_axidma.c b/hw/dma/xilinx_axidma.c index 90ba7bf0573..8488f125b5f 100644 --- a/hw/dma/xilinx_axidma.c +++ b/hw/dma/xilinx_axidma.c @@ -23,7 +23,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qapi/error.h" #include "qemu/timer.h" #include "hw/hw.h" diff --git a/hw/dma/xlnx_csu_dma.c b/hw/dma/xlnx_csu_dma.c index b390d092699..436f9915e02 100644 --- a/hw/dma/xlnx_csu_dma.c +++ b/hw/dma/xlnx_csu_dma.c @@ -23,7 +23,7 @@ #include "qapi/error.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "system/dma.h" #include "hw/core/ptimer.h" diff --git a/hw/gpio/bcm2835_gpio.c b/hw/gpio/bcm2835_gpio.c index bd9170b8932..d7c44ea2abe 100644 --- a/hw/gpio/bcm2835_gpio.c +++ b/hw/gpio/bcm2835_gpio.c @@ -16,7 +16,7 @@ #include "qemu/module.h" #include "qemu/timer.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/sd/sd.h" #include "hw/gpio/bcm2835_gpio.h" diff --git a/hw/gpio/bcm2838_gpio.c b/hw/gpio/bcm2838_gpio.c index dab50faf285..4ae7706b9a0 100644 --- a/hw/gpio/bcm2838_gpio.c +++ b/hw/gpio/bcm2838_gpio.c @@ -15,7 +15,7 @@ #include "qemu/module.h" #include "qemu/timer.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/sd/sd.h" #include "hw/gpio/bcm2838_gpio.h" diff --git a/hw/gpio/gpio_key.c b/hw/gpio/gpio_key.c index f8cf4da239a..14e0fb9d4cb 100644 --- a/hw/gpio/gpio_key.c +++ b/hw/gpio/gpio_key.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/module.h" #include "qemu/timer.h" diff --git a/hw/gpio/gpio_pwr.c b/hw/gpio/gpio_pwr.c index 2d14f8b344c..a60b24a5535 100644 --- a/hw/gpio/gpio_pwr.c +++ b/hw/gpio/gpio_pwr.c @@ -23,7 +23,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "system/runstate.h" =20 #define TYPE_GPIOPWR "gpio-pwr" diff --git a/hw/gpio/mpc8xxx.c b/hw/gpio/mpc8xxx.c index 377832e9d24..2e882329f0f 100644 --- a/hw/gpio/mpc8xxx.c +++ b/hw/gpio/mpc8xxx.c @@ -21,7 +21,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qom/object.h" =20 diff --git a/hw/gpio/omap_gpio.c b/hw/gpio/omap_gpio.c index 0c2a0f9aa6c..f7619260ca7 100644 --- a/hw/gpio/omap_gpio.c +++ b/hw/gpio/omap_gpio.c @@ -23,7 +23,7 @@ #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" #include "hw/arm/omap.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/error-report.h" #include "qemu/module.h" #include "qapi/error.h" diff --git a/hw/gpio/pl061.c b/hw/gpio/pl061.c index 55f51b6cf20..d6a4fb90b96 100644 --- a/hw/gpio/pl061.c +++ b/hw/gpio/pl061.c @@ -31,7 +31,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "qapi/error.h" diff --git a/hw/gpio/zaurus.c b/hw/gpio/zaurus.c index 0a9f76e7743..3cf626a550d 100644 --- a/hw/gpio/zaurus.c +++ b/hw/gpio/zaurus.c @@ -18,7 +18,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/module.h" #include "qemu/log.h" diff --git a/hw/hyperv/vmbus.c b/hw/hyperv/vmbus.c index 86b53a23ade..c01f3392360 100644 --- a/hw/hyperv/vmbus.c +++ b/hw/hyperv/vmbus.c @@ -18,7 +18,7 @@ #include "hw/hyperv/hyperv.h" #include "hw/hyperv/vmbus.h" #include "hw/hyperv/vmbus-bridge.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "exec/target_page.h" #include "trace.h" =20 diff --git a/hw/i2c/aspeed_i2c.c b/hw/i2c/aspeed_i2c.c index 1f9ce131bf7..faf2160c067 100644 --- a/hw/i2c/aspeed_i2c.c +++ b/hw/i2c/aspeed_i2c.c @@ -19,7 +19,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/cutils.h" #include "qemu/log.h" diff --git a/hw/i2c/bitbang_i2c.c b/hw/i2c/bitbang_i2c.c index d379cfd7751..1f5d66ce33d 100644 --- a/hw/i2c/bitbang_i2c.c +++ b/hw/i2c/bitbang_i2c.c @@ -13,7 +13,7 @@ #include "qemu/osdep.h" #include "hw/core/irq.h" #include "hw/i2c/bitbang_i2c.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/module.h" #include "qom/object.h" #include "trace.h" diff --git a/hw/i2c/exynos4210_i2c.c b/hw/i2c/exynos4210_i2c.c index dd72dda4fd0..9fac588e82e 100644 --- a/hw/i2c/exynos4210_i2c.c +++ b/hw/i2c/exynos4210_i2c.c @@ -23,7 +23,7 @@ #include "qemu/osdep.h" #include "qemu/module.h" #include "qemu/timer.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/i2c/i2c.h" #include "hw/core/irq.h" diff --git a/hw/i2c/i2c_mux_pca954x.c b/hw/i2c/i2c_mux_pca954x.c index 7802c68452f..c6034460284 100644 --- a/hw/i2c/i2c_mux_pca954x.c +++ b/hw/i2c/i2c_mux_pca954x.c @@ -21,7 +21,7 @@ #include "hw/i2c/smbus_slave.h" #include "hw/core/qdev.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/log.h" #include "qemu/module.h" #include "qemu/queue.h" diff --git a/hw/i2c/mpc_i2c.c b/hw/i2c/mpc_i2c.c index e2097f819ce..abb2240f9f3 100644 --- a/hw/i2c/mpc_i2c.c +++ b/hw/i2c/mpc_i2c.c @@ -20,7 +20,7 @@ #include "qemu/osdep.h" #include "hw/i2c/i2c.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qom/object.h" #include "trace.h" diff --git a/hw/i2c/omap_i2c.c b/hw/i2c/omap_i2c.c index c768f99e384..e0798f2c8a5 100644 --- a/hw/i2c/omap_i2c.c +++ b/hw/i2c/omap_i2c.c @@ -24,7 +24,7 @@ #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" #include "hw/arm/omap.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/error-report.h" #include "qapi/error.h" =20 diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index f744be9f70f..224b7b94790 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -23,7 +23,7 @@ #include "qemu/error-report.h" #include "qemu/main-loop.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "intel_iommu_internal.h" #include "hw/pci/pci.h" #include "hw/pci/pci_bus.h" diff --git a/hw/i386/kvm/clock.c b/hw/i386/kvm/clock.c index 310b9a8eb5a..8ca88afae24 100644 --- a/hw/i386/kvm/clock.c +++ b/hw/i386/kvm/clock.c @@ -21,7 +21,7 @@ #include "system/hw_accel.h" #include "kvm/kvm_i386.h" #include "migration/vmstate.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/i386/kvm/clock.h" #include "hw/core/qdev-properties.h" #include "qapi/error.h" diff --git a/hw/i386/kvm/xen_evtchn.c b/hw/i386/kvm/xen_evtchn.c index a510ab871de..b65871f3542 100644 --- a/hw/i386/kvm/xen_evtchn.c +++ b/hw/i386/kvm/xen_evtchn.c @@ -27,7 +27,7 @@ #include "migration/vmstate.h" #include "trace.h" =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/xen/xen.h" #include "hw/i386/x86.h" #include "hw/i386/pc.h" diff --git a/hw/i386/kvm/xen_gnttab.c b/hw/i386/kvm/xen_gnttab.c index 4b9e272c5eb..85b324e62d0 100644 --- a/hw/i386/kvm/xen_gnttab.c +++ b/hw/i386/kvm/xen_gnttab.c @@ -20,7 +20,7 @@ #include "system/address-spaces.h" #include "migration/vmstate.h" =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/xen/xen.h" #include "hw/xen/xen_backend_ops.h" #include "xen_overlay.h" diff --git a/hw/i386/kvm/xen_overlay.c b/hw/i386/kvm/xen_overlay.c index 3cb73619371..74cadffb728 100644 --- a/hw/i386/kvm/xen_overlay.c +++ b/hw/i386/kvm/xen_overlay.c @@ -19,7 +19,7 @@ #include "system/address-spaces.h" #include "migration/vmstate.h" =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/xen/xen.h" #include "xen_overlay.h" =20 diff --git a/hw/i386/kvm/xen_primary_console.c b/hw/i386/kvm/xen_primary_co= nsole.c index 6e9d6417c3e..bf61f6235be 100644 --- a/hw/i386/kvm/xen_primary_console.c +++ b/hw/i386/kvm/xen_primary_console.c @@ -13,7 +13,7 @@ =20 #include "qapi/error.h" =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/xen/xen.h" #include "hw/xen/xen_backend_ops.h" #include "xen_evtchn.h" diff --git a/hw/i386/kvm/xen_xenstore.c b/hw/i386/kvm/xen_xenstore.c index 42955cccd90..0dc0edf3bfd 100644 --- a/hw/i386/kvm/xen_xenstore.c +++ b/hw/i386/kvm/xen_xenstore.c @@ -20,7 +20,7 @@ #include "qom/object.h" #include "migration/vmstate.h" =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/xen/xen.h" #include "hw/xen/xen_backend_ops.h" #include "xen_overlay.h" diff --git a/hw/i386/microvm-dt.c b/hw/i386/microvm-dt.c index 81eaddafc8b..45fbb5bbd15 100644 --- a/hw/i386/microvm-dt.c +++ b/hw/i386/microvm-dt.c @@ -37,7 +37,7 @@ #include "hw/char/serial-isa.h" #include "hw/i386/fw_cfg.h" #include "hw/rtc/mc146818rtc.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/virtio/virtio-mmio.h" #include "hw/usb/xhci.h" =20 diff --git a/hw/i386/nitro_enclave.c b/hw/i386/nitro_enclave.c index 5ee50f3b858..640b1d8c548 100644 --- a/hw/i386/nitro_enclave.c +++ b/hw/i386/nitro_enclave.c @@ -14,7 +14,7 @@ #include "qom/object_interfaces.h" =20 #include "chardev/char.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/eif.h" #include "hw/i386/x86.h" #include "hw/i386/microvm.h" diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index 3f8fd078318..2e2671d6050 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -41,7 +41,7 @@ #include "hw/core/irq.h" #include "system/kvm.h" #include "hw/i386/kvm/clock.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/i2c/smbus_eeprom.h" #include "system/memory.h" #include "hw/acpi/acpi.h" diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c index 906df5e7886..d8a86756ca4 100644 --- a/hw/i386/pc_sysfw.c +++ b/hw/i386/pc_sysfw.c @@ -29,7 +29,7 @@ #include "qemu/error-report.h" #include "qemu/option.h" #include "qemu/units.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/i386/x86.h" #include "hw/i386/pc.h" #include "hw/core/loader.h" diff --git a/hw/i386/vapic.c b/hw/i386/vapic.c index 3a4254638b2..32f92a28b88 100644 --- a/hw/i386/vapic.c +++ b/hw/i386/vapic.c @@ -19,7 +19,7 @@ #include "system/runstate.h" #include "system/address-spaces.h" #include "hw/i386/apic_internal.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/boards.h" #include "migration/vmstate.h" #include "qom/object.h" diff --git a/hw/i386/x86-iommu.c b/hw/i386/x86-iommu.c index 21e0d40e114..33ac0bfc97e 100644 --- a/hw/i386/x86-iommu.c +++ b/hw/i386/x86-iommu.c @@ -18,7 +18,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/i386/x86-iommu.h" #include "hw/core/qdev-properties.h" #include "hw/i386/pc.h" diff --git a/hw/ide/mmio.c b/hw/ide/mmio.c index 04b56ac5d86..0de904ac56a 100644 --- a/hw/ide/mmio.c +++ b/hw/ide/mmio.c @@ -24,7 +24,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/module.h" #include "system/dma.h" diff --git a/hw/input/lasips2.c b/hw/input/lasips2.c index e34e9cb5c02..c03a127f3df 100644 --- a/hw/input/lasips2.c +++ b/hw/input/lasips2.c @@ -24,7 +24,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/input/ps2.h" #include "hw/input/lasips2.h" #include "exec/hwaddr.h" diff --git a/hw/input/pl050.c b/hw/input/pl050.c index cb8efc74f77..48df2734e26 100644 --- a/hw/input/pl050.c +++ b/hw/input/pl050.c @@ -16,7 +16,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/input/ps2.h" #include "hw/input/pl050.h" diff --git a/hw/input/ps2.c b/hw/input/ps2.c index 96850124a7b..10ac7324030 100644 --- a/hw/input/ps2.c +++ b/hw/input/ps2.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/input/ps2.h" #include "migration/vmstate.h" #include "ui/console.h" diff --git a/hw/intc/allwinner-a10-pic.c b/hw/intc/allwinner-a10-pic.c index 0e1ec521e42..8e17a77c801 100644 --- a/hw/intc/allwinner-a10-pic.c +++ b/hw/intc/allwinner-a10-pic.c @@ -16,7 +16,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/intc/allwinner-a10-pic.h" #include "hw/core/irq.h" diff --git a/hw/intc/apic_common.c b/hw/intc/apic_common.c index afac20440f8..4e9e3089945 100644 --- a/hw/intc/apic_common.c +++ b/hw/intc/apic_common.c @@ -30,7 +30,7 @@ #include "hw/core/boards.h" #include "system/kvm.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" =20 bool apic_report_tpr_access; diff --git a/hw/intc/arm_gic.c b/hw/intc/arm_gic.c index e27bb20bf8c..4d0cb125a61 100644 --- a/hw/intc/arm_gic.c +++ b/hw/intc/arm_gic.c @@ -20,7 +20,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "gic_internal.h" #include "qapi/error.h" #include "hw/core/cpu.h" diff --git a/hw/intc/arm_gicv2m.c b/hw/intc/arm_gicv2m.c index c39d31b1870..b343e17ca53 100644 --- a/hw/intc/arm_gicv2m.c +++ b/hw/intc/arm_gicv2m.c @@ -27,7 +27,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "hw/pci/msi.h" #include "hw/core/qdev-properties.h" diff --git a/hw/intc/armv7m_nvic.c b/hw/intc/armv7m_nvic.c index 5fa210c6335..3a31eb56f36 100644 --- a/hw/intc/armv7m_nvic.c +++ b/hw/intc/armv7m_nvic.c @@ -12,7 +12,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/timer.h" #include "hw/intc/armv7m_nvic.h" diff --git a/hw/intc/exynos4210_combiner.c b/hw/intc/exynos4210_combiner.c index 8bea69d91b7..ec935a084db 100644 --- a/hw/intc/exynos4210_combiner.c +++ b/hw/intc/exynos4210_combiner.c @@ -28,7 +28,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/module.h" #include "hw/intc/exynos4210_combiner.h" diff --git a/hw/intc/exynos4210_gic.c b/hw/intc/exynos4210_gic.c index a65c9c6d28b..d15e41174a9 100644 --- a/hw/intc/exynos4210_gic.c +++ b/hw/intc/exynos4210_gic.c @@ -21,7 +21,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qemu/module.h" diff --git a/hw/intc/goldfish_pic.c b/hw/intc/goldfish_pic.c index 96e7d5c225f..16f351a30d3 100644 --- a/hw/intc/goldfish_pic.c +++ b/hw/intc/goldfish_pic.c @@ -10,7 +10,7 @@ #include "qemu/osdep.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "trace.h" diff --git a/hw/intc/grlib_irqmp.c b/hw/intc/grlib_irqmp.c index ce7cbc98c17..d860ec15d88 100644 --- a/hw/intc/grlib_irqmp.c +++ b/hw/intc/grlib_irqmp.c @@ -28,7 +28,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #include "hw/core/qdev-properties.h" #include "hw/intc/grlib_irqmp.h" diff --git a/hw/intc/ioapic_common.c b/hw/intc/ioapic_common.c index fce3486e519..d3bcd5699f5 100644 --- a/hw/intc/ioapic_common.c +++ b/hw/intc/ioapic_common.c @@ -26,7 +26,7 @@ #include "hw/intc/intc.h" #include "hw/intc/ioapic.h" #include "hw/intc/ioapic_internal.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 /* ioapic_no count start from 0 to MAX_IOAPICS, * remove as static variable from ioapic_common_init. diff --git a/hw/intc/loongarch_dintc.c b/hw/intc/loongarch_dintc.c index 574e4a0d277..c42a919df4a 100644 --- a/hw/intc/loongarch_dintc.c +++ b/hw/intc/loongarch_dintc.c @@ -6,7 +6,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "hw/intc/loongarch_pch_msi.h" #include "hw/intc/loongarch_pch_pic.h" diff --git a/hw/intc/loongarch_pch_msi.c b/hw/intc/loongarch_pch_msi.c index 63090b27261..3656c6cea97 100644 --- a/hw/intc/loongarch_pch_msi.c +++ b/hw/intc/loongarch_pch_msi.c @@ -6,7 +6,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "hw/intc/loongarch_pch_msi.h" #include "hw/intc/loongarch_pch_pic.h" diff --git a/hw/intc/loongson_ipi_common.c b/hw/intc/loongson_ipi_common.c index b3d8e781ca1..d9d8a374d36 100644 --- a/hw/intc/loongson_ipi_common.c +++ b/hw/intc/loongson_ipi_common.c @@ -6,7 +6,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/intc/loongson_ipi_common.h" #include "hw/core/irq.h" #include "qemu/log.h" diff --git a/hw/intc/mips_gic.c b/hw/intc/mips_gic.c index e983f3a2b58..ad9363a4c7d 100644 --- a/hw/intc/mips_gic.c +++ b/hw/intc/mips_gic.c @@ -13,7 +13,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "system/memory.h" #include "system/kvm.h" #include "system/reset.h" diff --git a/hw/intc/omap_intc.c b/hw/intc/omap_intc.c index deb21f9dc19..b2438d2d5f8 100644 --- a/hw/intc/omap_intc.c +++ b/hw/intc/omap_intc.c @@ -22,7 +22,7 @@ #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" #include "hw/arm/omap.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/error-report.h" #include "qemu/module.h" #include "qapi/error.h" diff --git a/hw/intc/ompic.c b/hw/intc/ompic.c index 05f0ef82549..58736cd8a0c 100644 --- a/hw/intc/ompic.c +++ b/hw/intc/ompic.c @@ -11,7 +11,7 @@ #include "qapi/error.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "system/memory.h" #include "qom/object.h" diff --git a/hw/intc/openpic.c b/hw/intc/openpic.c index 4cc5068ffc8..cd353a04f53 100644 --- a/hw/intc/openpic.c +++ b/hw/intc/openpic.c @@ -36,7 +36,7 @@ #include "hw/ppc/openpic.h" #include "hw/ppc/ppc_e500.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/pci/msi.h" #include "qapi/error.h" diff --git a/hw/intc/openpic_kvm.c b/hw/intc/openpic_kvm.c index 6558135baa1..9aafef5d9eb 100644 --- a/hw/intc/openpic_kvm.c +++ b/hw/intc/openpic_kvm.c @@ -29,7 +29,7 @@ #include "hw/ppc/openpic_kvm.h" #include "hw/pci/msi.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "system/kvm.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/intc/pl190.c b/hw/intc/pl190.c index f1e4959e9ae..d53292d15e8 100644 --- a/hw/intc/pl190.c +++ b/hw/intc/pl190.c @@ -9,7 +9,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/intc/riscv_aclint.c b/hw/intc/riscv_aclint.c index 83968ad7cca..9c1491bd043 100644 --- a/hw/intc/riscv_aclint.c +++ b/hw/intc/riscv_aclint.c @@ -26,7 +26,7 @@ #include "qemu/error-report.h" #include "qemu/log.h" #include "qemu/module.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "target/riscv/cpu.h" #include "target/riscv/time_helper.h" #include "hw/core/qdev-properties.h" diff --git a/hw/intc/riscv_aplic.c b/hw/intc/riscv_aplic.c index cc5f30b5588..92ff0ecaa74 100644 --- a/hw/intc/riscv_aplic.c +++ b/hw/intc/riscv_aplic.c @@ -23,7 +23,7 @@ #include "qemu/error-report.h" #include "qemu/bswap.h" #include "system/address-spaces.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/pci/msi.h" #include "hw/core/boards.h" #include "hw/core/qdev-properties.h" diff --git a/hw/intc/riscv_imsic.c b/hw/intc/riscv_imsic.c index bc580c000ef..7c9a0120335 100644 --- a/hw/intc/riscv_imsic.c +++ b/hw/intc/riscv_imsic.c @@ -23,7 +23,7 @@ #include "qemu/error-report.h" #include "qemu/bswap.h" #include "system/address-spaces.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/pci/msi.h" #include "hw/core/boards.h" #include "hw/core/qdev-properties.h" diff --git a/hw/intc/s390_flic.c b/hw/intc/s390_flic.c index 508b58382ed..57fd4b2b81c 100644 --- a/hw/intc/s390_flic.c +++ b/hw/intc/s390_flic.c @@ -14,7 +14,7 @@ #include "qemu/error-report.h" #include "qemu/main-loop.h" #include "qemu/module.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/s390x/ioinst.h" #include "hw/s390x/s390_flic.h" #include "hw/core/qdev-properties.h" diff --git a/hw/intc/sifive_plic.c b/hw/intc/sifive_plic.c index 5df578822f9..9c84ff06a9f 100644 --- a/hw/intc/sifive_plic.c +++ b/hw/intc/sifive_plic.c @@ -23,7 +23,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "qemu/error-report.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/pci/msi.h" #include "hw/core/qdev-properties.h" #include "hw/intc/sifive_plic.h" diff --git a/hw/intc/slavio_intctl.c b/hw/intc/slavio_intctl.c index b12c8cbd69f..640d8e2baa6 100644 --- a/hw/intc/slavio_intctl.c +++ b/hw/intc/slavio_intctl.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "migration/vmstate.h" #include "qemu/module.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/intc/intc.h" #include "hw/core/irq.h" #include "trace.h" diff --git a/hw/intc/xilinx_intc.c b/hw/intc/xilinx_intc.c index f93f0d6e7ea..782a286e43c 100644 --- a/hw/intc/xilinx_intc.c +++ b/hw/intc/xilinx_intc.c @@ -27,7 +27,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/module.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" diff --git a/hw/intc/xlnx-pmu-iomod-intc.c b/hw/intc/xlnx-pmu-iomod-intc.c index b8bafe2f3f3..0d9e85473d3 100644 --- a/hw/intc/xlnx-pmu-iomod-intc.c +++ b/hw/intc/xlnx-pmu-iomod-intc.c @@ -25,7 +25,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/core/register.h" #include "qemu/bitops.h" diff --git a/hw/intc/xlnx-zynqmp-ipi.c b/hw/intc/xlnx-zynqmp-ipi.c index e69ea74ff74..3538a0e5db9 100644 --- a/hw/intc/xlnx-zynqmp-ipi.c +++ b/hw/intc/xlnx-zynqmp-ipi.c @@ -26,7 +26,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/core/register.h" #include "qemu/bitops.h" diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c index 6c9802eb7ac..7e6d2ce5a94 100644 --- a/hw/isa/isa-bus.c +++ b/hw/isa/isa-bus.c @@ -21,7 +21,7 @@ #include "qemu/error-report.h" #include "qemu/module.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "system/system.h" #include "hw/isa/isa.h" =20 diff --git a/hw/m68k/mcf5206.c b/hw/m68k/mcf5206.c index 4bc7b1d189e..c5befa02eb5 100644 --- a/hw/m68k/mcf5206.c +++ b/hw/m68k/mcf5206.c @@ -17,7 +17,7 @@ #include "qemu/timer.h" #include "hw/core/ptimer.h" #include "system/system.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 /* General purpose timer module. */ typedef struct { diff --git a/hw/m68k/mcf5208.c b/hw/m68k/mcf5208.c index 3a87e1f282c..c6d1c5fae9f 100644 --- a/hw/m68k/mcf5208.c +++ b/hw/m68k/mcf5208.c @@ -31,7 +31,7 @@ #include "net/net.h" #include "hw/core/boards.h" #include "hw/core/loader.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "elf.h" =20 #define SYS_FREQ 166666666 diff --git a/hw/m68k/mcf_intc.c b/hw/m68k/mcf_intc.c index b8770e3a53f..20112c94be1 100644 --- a/hw/m68k/mcf_intc.c +++ b/hw/m68k/mcf_intc.c @@ -12,7 +12,7 @@ #include "qemu/log.h" #include "cpu.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/m68k/mcf.h" #include "hw/core/qdev-properties.h" #include "qom/object.h" diff --git a/hw/m68k/next-cube.c b/hw/m68k/next-cube.c index 75ae66c311a..ca3df7b887b 100644 --- a/hw/m68k/next-cube.c +++ b/hw/m68k/next-cube.c @@ -20,7 +20,7 @@ #include "hw/core/boards.h" #include "hw/core/loader.h" #include "hw/scsi/esp.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" #include "hw/char/escc.h" /* ZILOG 8530 Serial Emulation */ #include "hw/block/fdc.h" diff --git a/hw/m68k/next-kbd.c b/hw/m68k/next-kbd.c index 2bec945acfb..571a9555040 100644 --- a/hw/m68k/next-kbd.c +++ b/hw/m68k/next-kbd.c @@ -29,7 +29,7 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/m68k/next-cube.h" #include "ui/console.h" #include "migration/vmstate.h" diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c index 6fe030e8c5d..25ddddb5d9f 100644 --- a/hw/m68k/q800.c +++ b/hw/m68k/q800.c @@ -33,7 +33,7 @@ #include "hw/core/loader.h" #include "ui/console.h" #include "hw/char/escc.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/scsi/esp.h" #include "standard-headers/asm-m68k/bootinfo.h" #include "standard-headers/asm-m68k/bootinfo-mac.h" diff --git a/hw/m68k/virt.c b/hw/m68k/virt.c index 2d83919fa86..7be3a248000 100644 --- a/hw/m68k/virt.c +++ b/hw/m68k/virt.c @@ -18,7 +18,7 @@ #include "elf.h" #include "hw/core/loader.h" #include "ui/console.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "standard-headers/asm-m68k/bootinfo.h" #include "standard-headers/asm-m68k/bootinfo-virt.h" #include "bootinfo.h" diff --git a/hw/mem/sparse-mem.c b/hw/mem/sparse-mem.c index 9186da6b1a9..3b754de887e 100644 --- a/hw/mem/sparse-mem.c +++ b/hw/mem/sparse-mem.c @@ -14,7 +14,7 @@ #include "qemu/error-report.h" =20 #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qapi/error.h" #include "qemu/units.h" #include "system/qtest.h" diff --git a/hw/microblaze/petalogix_ml605_mmu.c b/hw/microblaze/petalogix_= ml605_mmu.c index 51ee237d584..b3bdc4d65f2 100644 --- a/hw/microblaze/petalogix_ml605_mmu.c +++ b/hw/microblaze/petalogix_ml605_mmu.c @@ -29,7 +29,7 @@ #include "qemu/units.h" #include "qapi/error.h" #include "cpu.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "net/net.h" #include "hw/block/flash.h" #include "system/system.h" diff --git a/hw/microblaze/petalogix_s3adsp1800_mmu.c b/hw/microblaze/petal= ogix_s3adsp1800_mmu.c index 266ecf9e8ab..2a853a7fa5f 100644 --- a/hw/microblaze/petalogix_s3adsp1800_mmu.c +++ b/hw/microblaze/petalogix_s3adsp1800_mmu.c @@ -27,7 +27,7 @@ #include "qemu/units.h" #include "qapi/error.h" #include "cpu.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "net/net.h" #include "hw/block/flash.h" #include "system/system.h" diff --git a/hw/mips/jazz.c b/hw/mips/jazz.c index fb01af8ece3..e0adb96c548 100644 --- a/hw/mips/jazz.c +++ b/hw/mips/jazz.c @@ -43,7 +43,7 @@ #include "hw/display/bochs-vbe.h" #include "hw/audio/pcspk.h" #include "hw/input/i8042.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "system/qtest.h" #include "system/reset.h" #include "qapi/error.h" diff --git a/hw/mips/malta.c b/hw/mips/malta.c index e5ed0b56923..812ff64d831 100644 --- a/hw/mips/malta.c +++ b/hw/mips/malta.c @@ -47,7 +47,7 @@ #include "hw/core/loader.h" #include "elf.h" #include "qom/object.h" -#include "hw/sysbus.h" /* SysBusDevice */ +#include "hw/core/sysbus.h" /* SysBusDevice */ #include "qemu/host-utils.h" #include "system/qtest.h" #include "system/reset.h" diff --git a/hw/misc/allwinner-a10-ccm.c b/hw/misc/allwinner-a10-ccm.c index 6b188c25a5d..dc7f8ff205a 100644 --- a/hw/misc/allwinner-a10-ccm.c +++ b/hw/misc/allwinner-a10-ccm.c @@ -22,7 +22,7 @@ =20 #include "qemu/osdep.h" #include "qemu/units.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/misc/allwinner-a10-dramc.c b/hw/misc/allwinner-a10-dramc.c index c16814cc5b8..757f2cad957 100644 --- a/hw/misc/allwinner-a10-dramc.c +++ b/hw/misc/allwinner-a10-dramc.c @@ -22,7 +22,7 @@ =20 #include "qemu/osdep.h" #include "qemu/units.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/misc/allwinner-cpucfg.c b/hw/misc/allwinner-cpucfg.c index 90dd872abf0..3a1526bda0d 100644 --- a/hw/misc/allwinner-cpucfg.c +++ b/hw/misc/allwinner-cpucfg.c @@ -19,7 +19,7 @@ =20 #include "qemu/osdep.h" #include "qemu/units.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/misc/allwinner-h3-ccu.c b/hw/misc/allwinner-h3-ccu.c index be91c0c1cae..ac5ae01acc0 100644 --- a/hw/misc/allwinner-h3-ccu.c +++ b/hw/misc/allwinner-h3-ccu.c @@ -19,7 +19,7 @@ =20 #include "qemu/osdep.h" #include "qemu/units.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/misc/allwinner-h3-dramc.c b/hw/misc/allwinner-h3-dramc.c index ef491b36ffb..10d929a3039 100644 --- a/hw/misc/allwinner-h3-dramc.c +++ b/hw/misc/allwinner-h3-dramc.c @@ -20,7 +20,7 @@ #include "qemu/osdep.h" #include "qemu/units.h" #include "qemu/error-report.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/misc/allwinner-h3-sysctrl.c b/hw/misc/allwinner-h3-sysctrl.c index 6b86524606a..d37c0a6e260 100644 --- a/hw/misc/allwinner-h3-sysctrl.c +++ b/hw/misc/allwinner-h3-sysctrl.c @@ -19,7 +19,7 @@ =20 #include "qemu/osdep.h" #include "qemu/units.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/misc/allwinner-r40-ccu.c b/hw/misc/allwinner-r40-ccu.c index 4e21eeafdd0..8ba4e7aa429 100644 --- a/hw/misc/allwinner-r40-ccu.c +++ b/hw/misc/allwinner-r40-ccu.c @@ -19,7 +19,7 @@ =20 #include "qemu/osdep.h" #include "qemu/units.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/misc/allwinner-r40-dramc.c b/hw/misc/allwinner-r40-dramc.c index 3af8af733ac..8e6aa7c3106 100644 --- a/hw/misc/allwinner-r40-dramc.c +++ b/hw/misc/allwinner-r40-dramc.c @@ -20,7 +20,7 @@ #include "qemu/osdep.h" #include "qemu/units.h" #include "qemu/error-report.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/misc/allwinner-sid.c b/hw/misc/allwinner-sid.c index 92a0c7918bc..b5f827d4bdf 100644 --- a/hw/misc/allwinner-sid.c +++ b/hw/misc/allwinner-sid.c @@ -19,7 +19,7 @@ =20 #include "qemu/osdep.h" #include "qemu/units.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/misc/allwinner-sramc.c b/hw/misc/allwinner-sramc.c index 423e0a844fa..1d30f8cf326 100644 --- a/hw/misc/allwinner-sramc.c +++ b/hw/misc/allwinner-sramc.c @@ -19,7 +19,7 @@ =20 #include "qemu/osdep.h" #include "qemu/units.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/misc/arm_integrator_debug.c b/hw/misc/arm_integrator_debug.c index 9a197278290..9ac6a50a930 100644 --- a/hw/misc/arm_integrator_debug.c +++ b/hw/misc/arm_integrator_debug.c @@ -15,7 +15,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/misc/arm_integrator_debug.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/misc/arm_l2x0.c b/hw/misc/arm_l2x0.c index a5511845c7c..039f1b0f2ce 100644 --- a/hw/misc/arm_l2x0.c +++ b/hw/misc/arm_l2x0.c @@ -20,7 +20,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/misc/arm_sysctl.c b/hw/misc/arm_sysctl.c index 0c91ebafac7..2a317ac7f5b 100644 --- a/hw/misc/arm_sysctl.c +++ b/hw/misc/arm_sysctl.c @@ -13,7 +13,7 @@ #include "qemu/timer.h" #include "system/runstate.h" #include "qemu/bitops.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/arm/primecell.h" #include "qemu/log.h" diff --git a/hw/misc/armsse-cpu-pwrctrl.c b/hw/misc/armsse-cpu-pwrctrl.c index 87770facfce..86a26a8ac5a 100644 --- a/hw/misc/armsse-cpu-pwrctrl.c +++ b/hw/misc/armsse-cpu-pwrctrl.c @@ -21,7 +21,7 @@ #include "trace.h" #include "qapi/error.h" #include "migration/vmstate.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/registerfields.h" #include "hw/misc/armsse-cpu-pwrctrl.h" =20 diff --git a/hw/misc/armsse-cpuid.c b/hw/misc/armsse-cpuid.c index 03833125514..ea2a099ccb1 100644 --- a/hw/misc/armsse-cpuid.c +++ b/hw/misc/armsse-cpuid.c @@ -23,7 +23,7 @@ #include "qemu/module.h" #include "trace.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/registerfields.h" #include "hw/misc/armsse-cpuid.h" #include "hw/core/qdev-properties.h" diff --git a/hw/misc/armsse-mhu.c b/hw/misc/armsse-mhu.c index 6fbe2cca37e..48c4b59067a 100644 --- a/hw/misc/armsse-mhu.c +++ b/hw/misc/armsse-mhu.c @@ -20,7 +20,7 @@ #include "qemu/module.h" #include "trace.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/core/registerfields.h" #include "hw/core/irq.h" diff --git a/hw/misc/eccmemctl.c b/hw/misc/eccmemctl.c index f93cbd16590..dd1be7d698e 100644 --- a/hw/misc/eccmemctl.c +++ b/hw/misc/eccmemctl.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/module.h" #include "trace.h" diff --git a/hw/misc/empty_slot.c b/hw/misc/empty_slot.c index a012668214f..aab9373c097 100644 --- a/hw/misc/empty_slot.c +++ b/hw/misc/empty_slot.c @@ -10,7 +10,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/qdev-properties.h" #include "hw/misc/empty_slot.h" #include "qapi/error.h" diff --git a/hw/misc/exynos4210_clk.c b/hw/misc/exynos4210_clk.c index fdf5bdd6034..e7526792191 100644 --- a/hw/misc/exynos4210_clk.c +++ b/hw/misc/exynos4210_clk.c @@ -18,7 +18,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/misc/exynos4210_pmu.c b/hw/misc/exynos4210_pmu.c index a86ec9aba85..0be793b3aa7 100644 --- a/hw/misc/exynos4210_pmu.c +++ b/hw/misc/exynos4210_pmu.c @@ -25,7 +25,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/module.h" #include "system/runstate.h" diff --git a/hw/misc/exynos4210_rng.c b/hw/misc/exynos4210_rng.c index 2d0ebc457bc..3f743b47502 100644 --- a/hw/misc/exynos4210_rng.c +++ b/hw/misc/exynos4210_rng.c @@ -18,7 +18,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qemu/log.h" diff --git a/hw/misc/grlib_ahb_apb_pnp.c b/hw/misc/grlib_ahb_apb_pnp.c index cdca00ad542..0d12bcde9d8 100644 --- a/hw/misc/grlib_ahb_apb_pnp.c +++ b/hw/misc/grlib_ahb_apb_pnp.c @@ -23,7 +23,7 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/misc/grlib_ahb_apb_pnp.h" #include "trace.h" =20 diff --git a/hw/misc/iosb.c b/hw/misc/iosb.c index 96221e1ee5a..ea63e34b937 100644 --- a/hw/misc/iosb.c +++ b/hw/misc/iosb.c @@ -10,7 +10,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "migration/vmstate.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/misc/iosb.h" #include "trace.h" =20 diff --git a/hw/misc/iotkit-secctl.c b/hw/misc/iotkit-secctl.c index 832b0217774..54bfe1ba597 100644 --- a/hw/misc/iotkit-secctl.c +++ b/hw/misc/iotkit-secctl.c @@ -14,7 +14,7 @@ #include "qemu/module.h" #include "qapi/error.h" #include "trace.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/core/registerfields.h" #include "hw/core/irq.h" diff --git a/hw/misc/iotkit-sysctl.c b/hw/misc/iotkit-sysctl.c index d673ae326bc..dff89c677f7 100644 --- a/hw/misc/iotkit-sysctl.c +++ b/hw/misc/iotkit-sysctl.c @@ -23,7 +23,7 @@ #include "system/runstate.h" #include "trace.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/core/registerfields.h" #include "hw/misc/iotkit-sysctl.h" diff --git a/hw/misc/iotkit-sysinfo.c b/hw/misc/iotkit-sysinfo.c index 3b4d228e3ef..19f089e6ee9 100644 --- a/hw/misc/iotkit-sysinfo.c +++ b/hw/misc/iotkit-sysinfo.c @@ -22,7 +22,7 @@ #include "qemu/module.h" #include "trace.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/registerfields.h" #include "hw/misc/iotkit-sysinfo.h" #include "hw/core/qdev-properties.h" diff --git a/hw/misc/ivshmem-flat.c b/hw/misc/ivshmem-flat.c index 1248f9e81bc..920aa4943a7 100644 --- a/hw/misc/ivshmem-flat.c +++ b/hw/misc/ivshmem-flat.c @@ -15,7 +15,7 @@ #include "qapi/error.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties-system.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "chardev/char-fe.h" #include "system/address-spaces.h" #include "trace.h" diff --git a/hw/misc/mac_via.c b/hw/misc/mac_via.c index 0c608c3dc63..26ee230dcc4 100644 --- a/hw/misc/mac_via.c +++ b/hw/misc/mac_via.c @@ -18,7 +18,7 @@ #include "qemu/osdep.h" #include "system/address-spaces.h" #include "migration/vmstate.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "qemu/timer.h" #include "hw/misc/mac_via.h" diff --git a/hw/misc/mchp_pfsoc_dmc.c b/hw/misc/mchp_pfsoc_dmc.c index 599f845f459..1fe4535464f 100644 --- a/hw/misc/mchp_pfsoc_dmc.c +++ b/hw/misc/mchp_pfsoc_dmc.c @@ -24,7 +24,7 @@ #include "qemu/bitops.h" #include "qemu/log.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/misc/mchp_pfsoc_dmc.h" =20 /* DDR SGMII PHY module */ diff --git a/hw/misc/mchp_pfsoc_ioscb.c b/hw/misc/mchp_pfsoc_ioscb.c index 84e957244e5..05538d012a9 100644 --- a/hw/misc/mchp_pfsoc_ioscb.c +++ b/hw/misc/mchp_pfsoc_ioscb.c @@ -25,7 +25,7 @@ #include "qemu/log.h" #include "qapi/error.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/misc/mchp_pfsoc_ioscb.h" =20 /* diff --git a/hw/misc/mchp_pfsoc_sysreg.c b/hw/misc/mchp_pfsoc_sysreg.c index 2a415151037..f190ecc78e0 100644 --- a/hw/misc/mchp_pfsoc_sysreg.c +++ b/hw/misc/mchp_pfsoc_sysreg.c @@ -25,7 +25,7 @@ #include "qemu/log.h" #include "qapi/error.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/misc/mchp_pfsoc_sysreg.h" #include "system/runstate.h" =20 diff --git a/hw/misc/mips_cmgcr.c b/hw/misc/mips_cmgcr.c index 1c6e9d1f6f0..3e262e828bc 100644 --- a/hw/misc/mips_cmgcr.c +++ b/hw/misc/mips_cmgcr.c @@ -12,7 +12,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "qemu/module.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/misc/mips_cmgcr.h" #include "hw/misc/mips_cpc.h" diff --git a/hw/misc/mips_cpc.c b/hw/misc/mips_cpc.c index efc0326f6f2..924de855ee2 100644 --- a/hw/misc/mips_cpc.c +++ b/hw/misc/mips_cpc.c @@ -22,7 +22,7 @@ #include "cpu.h" #include "qemu/log.h" #include "qemu/module.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" =20 #include "hw/misc/mips_cpc.h" diff --git a/hw/misc/mps2-fpgaio.c b/hw/misc/mps2-fpgaio.c index 9cd5e9884c0..da78cb60701 100644 --- a/hw/misc/mps2-fpgaio.c +++ b/hw/misc/mps2-fpgaio.c @@ -20,7 +20,7 @@ #include "qemu/module.h" #include "qapi/error.h" #include "trace.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/core/registerfields.h" #include "hw/misc/mps2-fpgaio.h" diff --git a/hw/misc/mps2-scc.c b/hw/misc/mps2-scc.c index 06d436cf58e..350bba3dab8 100644 --- a/hw/misc/mps2-scc.c +++ b/hw/misc/mps2-scc.c @@ -22,7 +22,7 @@ #include "qemu/module.h" #include "qemu/bitops.h" #include "trace.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "migration/vmstate.h" #include "hw/core/registerfields.h" diff --git a/hw/misc/pvpanic-mmio.c b/hw/misc/pvpanic-mmio.c index 2d1464435a8..a173a1a9a58 100644 --- a/hw/misc/pvpanic-mmio.c +++ b/hw/misc/pvpanic-mmio.c @@ -10,7 +10,7 @@ =20 #include "hw/core/qdev-properties.h" #include "hw/misc/pvpanic.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "standard-headers/misc/pvpanic.h" =20 OBJECT_DECLARE_SIMPLE_TYPE(PVPanicMMIOState, PVPANIC_MMIO_DEVICE) diff --git a/hw/misc/sbsa_ec.c b/hw/misc/sbsa_ec.c index dfee1af5ad2..93296d3350c 100644 --- a/hw/misc/sbsa_ec.c +++ b/hw/misc/sbsa_ec.c @@ -12,7 +12,7 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "system/runstate.h" =20 typedef struct SECUREECState { diff --git a/hw/misc/sifive_e_prci.c b/hw/misc/sifive_e_prci.c index a8702c6a5d4..400664aabae 100644 --- a/hw/misc/sifive_e_prci.c +++ b/hw/misc/sifive_e_prci.c @@ -19,7 +19,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qapi/error.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/misc/sifive_test.c b/hw/misc/sifive_test.c index b94bb2d29db..41f102e2dca 100644 --- a/hw/misc/sifive_test.c +++ b/hw/misc/sifive_test.c @@ -19,7 +19,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qapi/error.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/misc/sifive_u_otp.c b/hw/misc/sifive_u_otp.c index 899bc31745c..7205374bc39 100644 --- a/hw/misc/sifive_u_otp.c +++ b/hw/misc/sifive_u_otp.c @@ -22,7 +22,7 @@ #include "qapi/error.h" #include "hw/core/qdev-properties.h" #include "hw/core/qdev-properties-system.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/error-report.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/misc/sifive_u_prci.c b/hw/misc/sifive_u_prci.c index 6e75cb6d0d5..f51588623ab 100644 --- a/hw/misc/sifive_u_prci.c +++ b/hw/misc/sifive_u_prci.c @@ -19,7 +19,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/log.h" #include "qemu/module.h" #include "hw/misc/sifive_u_prci.h" diff --git a/hw/misc/slavio_misc.c b/hw/misc/slavio_misc.c index 43ce5d0bc97..49be827c458 100644 --- a/hw/misc/slavio_misc.c +++ b/hw/misc/slavio_misc.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/module.h" #include "system/runstate.h" diff --git a/hw/misc/tz-mpc.c b/hw/misc/tz-mpc.c index 65517d390d3..02fe0bcb1d5 100644 --- a/hw/misc/tz-mpc.c +++ b/hw/misc/tz-mpc.c @@ -14,7 +14,7 @@ #include "qemu/module.h" #include "qapi/error.h" #include "trace.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/core/registerfields.h" #include "hw/core/irq.h" diff --git a/hw/misc/tz-msc.c b/hw/misc/tz-msc.c index dd845193d64..9d9fc072ff0 100644 --- a/hw/misc/tz-msc.c +++ b/hw/misc/tz-msc.c @@ -14,7 +14,7 @@ #include "qemu/module.h" #include "qapi/error.h" #include "trace.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/core/registerfields.h" #include "hw/core/irq.h" diff --git a/hw/misc/tz-ppc.c b/hw/misc/tz-ppc.c index 7b812a034b2..159073d1e6d 100644 --- a/hw/misc/tz-ppc.c +++ b/hw/misc/tz-ppc.c @@ -14,7 +14,7 @@ #include "qemu/module.h" #include "qapi/error.h" #include "trace.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/core/registerfields.h" #include "hw/core/irq.h" diff --git a/hw/misc/unimp.c b/hw/misc/unimp.c index 4370c14ef16..521b84bf20b 100644 --- a/hw/misc/unimp.c +++ b/hw/misc/unimp.c @@ -12,7 +12,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/misc/unimp.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/misc/virt_ctrl.c b/hw/misc/virt_ctrl.c index 7cb1ea5d181..40747925a29 100644 --- a/hw/misc/virt_ctrl.c +++ b/hw/misc/virt_ctrl.c @@ -6,7 +6,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "trace.h" diff --git a/hw/misc/xlnx-versal-cframe-reg.c b/hw/misc/xlnx-versal-cframe-= reg.c index efacbe83abb..47d3b9e84ad 100644 --- a/hw/misc/xlnx-versal-cframe-reg.c +++ b/hw/misc/xlnx-versal-cframe-reg.c @@ -9,7 +9,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" #include "hw/core/registerfields.h" #include "qemu/bitops.h" diff --git a/hw/misc/xlnx-versal-cfu.c b/hw/misc/xlnx-versal-cfu.c index bdce0ce7475..86df37d6e8a 100644 --- a/hw/misc/xlnx-versal-cfu.c +++ b/hw/misc/xlnx-versal-cfu.c @@ -11,7 +11,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" #include "hw/core/irq.h" #include "qemu/bitops.h" diff --git a/hw/misc/xlnx-versal-crl.c b/hw/misc/xlnx-versal-crl.c index 9bbf44def6b..1379974f81e 100644 --- a/hw/misc/xlnx-versal-crl.c +++ b/hw/misc/xlnx-versal-crl.c @@ -10,7 +10,7 @@ #include "qemu/osdep.h" #include "migration/vmstate.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "hw/core/register.h" #include "hw/core/resettable.h" diff --git a/hw/misc/xlnx-versal-pmc-iou-slcr.c b/hw/misc/xlnx-versal-pmc-i= ou-slcr.c index 0246167a5e6..57a24641cfa 100644 --- a/hw/misc/xlnx-versal-pmc-iou-slcr.c +++ b/hw/misc/xlnx-versal-pmc-iou-slcr.c @@ -24,7 +24,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" #include "hw/core/irq.h" #include "qemu/bitops.h" diff --git a/hw/misc/xlnx-versal-xramc.c b/hw/misc/xlnx-versal-xramc.c index f4f02c7680b..da8c98ae032 100644 --- a/hw/misc/xlnx-versal-xramc.c +++ b/hw/misc/xlnx-versal-xramc.c @@ -10,7 +10,7 @@ #include "qemu/units.h" #include "qapi/error.h" #include "migration/vmstate.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" #include "hw/core/qdev-properties.h" #include "hw/core/irq.h" diff --git a/hw/misc/xlnx-zynqmp-apu-ctrl.c b/hw/misc/xlnx-zynqmp-apu-ctrl.c index 957043f01b9..c46951d552e 100644 --- a/hw/misc/xlnx-zynqmp-apu-ctrl.c +++ b/hw/misc/xlnx-zynqmp-apu-ctrl.c @@ -13,7 +13,7 @@ #include "qemu/log.h" #include "migration/vmstate.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "hw/core/register.h" =20 diff --git a/hw/misc/xlnx-zynqmp-crf.c b/hw/misc/xlnx-zynqmp-crf.c index a2ebf6ce5d7..1f7107c322c 100644 --- a/hw/misc/xlnx-zynqmp-crf.c +++ b/hw/misc/xlnx-zynqmp-crf.c @@ -7,7 +7,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" #include "qemu/bitops.h" #include "qemu/log.h" diff --git a/hw/misc/zynq_slcr.c b/hw/misc/zynq_slcr.c index d7d490b093d..faae98fa023 100644 --- a/hw/misc/zynq_slcr.c +++ b/hw/misc/zynq_slcr.c @@ -17,7 +17,7 @@ #include "qemu/osdep.h" #include "qemu/timer.h" #include "system/runstate.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/net/allwinner-sun8i-emac.c b/hw/net/allwinner-sun8i-emac.c index 8ff0db5ccdc..9b7c67ae8e4 100644 --- a/hw/net/allwinner-sun8i-emac.c +++ b/hw/net/allwinner-sun8i-emac.c @@ -20,7 +20,7 @@ #include "qemu/osdep.h" #include "qemu/units.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "net/net.h" #include "hw/core/irq.h" diff --git a/hw/net/allwinner_emac.c b/hw/net/allwinner_emac.c index cbe4cb80e4a..55d1b6a9a6b 100644 --- a/hw/net/allwinner_emac.c +++ b/hw/net/allwinner_emac.c @@ -18,7 +18,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "net/net.h" #include "qemu/fifo8.h" diff --git a/hw/net/can/xlnx-versal-canfd.c b/hw/net/can/xlnx-versal-canfd.c index 3ceb1a8b912..4a7cdc31ee4 100644 --- a/hw/net/can/xlnx-versal-canfd.c +++ b/hw/net/can/xlnx-versal-canfd.c @@ -31,7 +31,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "hw/core/register.h" #include "qapi/error.h" diff --git a/hw/net/can/xlnx-zynqmp-can.c b/hw/net/can/xlnx-zynqmp-can.c index 6c583cab8f5..bccf6240169 100644 --- a/hw/net/can/xlnx-zynqmp-can.c +++ b/hw/net/can/xlnx-zynqmp-can.c @@ -30,7 +30,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" #include "hw/core/irq.h" #include "qapi/error.h" diff --git a/hw/net/dp8393x.c b/hw/net/dp8393x.c index 182f0e5f6b1..5b611fcbbe7 100644 --- a/hw/net/dp8393x.c +++ b/hw/net/dp8393x.c @@ -21,7 +21,7 @@ #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" #include "hw/net/dp8393x.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "net/net.h" #include "qapi/error.h" diff --git a/hw/net/fsl_etsec/etsec.c b/hw/net/fsl_etsec/etsec.c index 5b77528e365..1d61d918b8d 100644 --- a/hw/net/fsl_etsec/etsec.c +++ b/hw/net/fsl_etsec/etsec.c @@ -27,7 +27,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "hw/net/mii.h" #include "hw/core/ptimer.h" diff --git a/hw/net/lan9118.c b/hw/net/lan9118.c index 381fd387641..072a741d811 100644 --- a/hw/net/lan9118.c +++ b/hw/net/lan9118.c @@ -11,7 +11,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "net/net.h" #include "net/eth.h" diff --git a/hw/net/lasi_i82596.c b/hw/net/lasi_i82596.c index 50e3c4fa86d..423a8676a08 100644 --- a/hw/net/lasi_i82596.c +++ b/hw/net/lasi_i82596.c @@ -13,7 +13,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qemu/timer.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "system/system.h" #include "net/eth.h" #include "hw/net/lasi_82596.h" diff --git a/hw/net/mcf_fec.c b/hw/net/mcf_fec.c index ecf105adf2e..5f267e5ea38 100644 --- a/hw/net/mcf_fec.c +++ b/hw/net/mcf_fec.c @@ -15,7 +15,7 @@ #include "hw/m68k/mcf_fec.h" #include "hw/net/mii.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include /* for crc32 */ =20 //#define DEBUG_FEC 1 diff --git a/hw/net/mv88w8618_eth.c b/hw/net/mv88w8618_eth.c index 1a1bba8b572..1fcfbe912ee 100644 --- a/hw/net/mv88w8618_eth.c +++ b/hw/net/mv88w8618_eth.c @@ -8,7 +8,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "hw/net/mv88w8618_eth.h" #include "migration/vmstate.h" diff --git a/hw/net/opencores_eth.c b/hw/net/opencores_eth.c index 34992f3cc9f..ec3301414cc 100644 --- a/hw/net/opencores_eth.c +++ b/hw/net/opencores_eth.c @@ -35,7 +35,7 @@ #include "hw/core/irq.h" #include "hw/net/mii.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "net/net.h" #include "qemu/module.h" #include "net/eth.h" diff --git a/hw/net/smc91c111.c b/hw/net/smc91c111.c index d6f57bc004a..3420d8e28e1 100644 --- a/hw/net/smc91c111.c +++ b/hw/net/smc91c111.c @@ -8,7 +8,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "net/net.h" #include "hw/core/irq.h" diff --git a/hw/net/stellaris_enet.c b/hw/net/stellaris_enet.c index c97d6945852..ac7924bdd9e 100644 --- a/hw/net/stellaris_enet.c +++ b/hw/net/stellaris_enet.c @@ -10,7 +10,7 @@ #include "qemu/osdep.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "net/net.h" #include "qemu/log.h" diff --git a/hw/net/xgmac.c b/hw/net/xgmac.c index f07be725120..8d316e94c17 100644 --- a/hw/net/xgmac.c +++ b/hw/net/xgmac.c @@ -27,7 +27,7 @@ #include "qemu/osdep.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/module.h" #include "net/net.h" diff --git a/hw/net/xilinx_axienet.c b/hw/net/xilinx_axienet.c index 451f8da2122..29c09b88ebf 100644 --- a/hw/net/xilinx_axienet.c +++ b/hw/net/xilinx_axienet.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/hw.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qapi/error.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/net/xilinx_ethlite.c b/hw/net/xilinx_ethlite.c index 72b14811a9d..ba3acd4c77c 100644 --- a/hw/net/xilinx_ethlite.c +++ b/hw/net/xilinx_ethlite.c @@ -31,7 +31,7 @@ #include "qemu/bitops.h" #include "qom/object.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" #include "hw/core/qdev-properties-system.h" diff --git a/hw/nubus/mac-nubus-bridge.c b/hw/nubus/mac-nubus-bridge.c index 0dac8d19b37..dc9ae6d21fa 100644 --- a/hw/nubus/mac-nubus-bridge.c +++ b/hw/nubus/mac-nubus-bridge.c @@ -9,7 +9,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/nubus/mac-nubus-bridge.h" =20 =20 diff --git a/hw/nubus/nubus-bridge.c b/hw/nubus/nubus-bridge.c index fb14402c4fc..f0e1620ee09 100644 --- a/hw/nubus/nubus-bridge.c +++ b/hw/nubus/nubus-bridge.c @@ -9,7 +9,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/nubus/nubus.h" =20 =20 diff --git a/hw/nvram/ds1225y.c b/hw/nvram/ds1225y.c index 512e5485187..4f35bfebdab 100644 --- a/hw/nvram/ds1225y.c +++ b/hw/nvram/ds1225y.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "trace.h" #include "qemu/error-report.h" diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c index e5c35b0e2e4..437ab6e210f 100644 --- a/hw/nvram/fw_cfg.c +++ b/hw/nvram/fw_cfg.c @@ -31,7 +31,7 @@ #include "hw/core/boards.h" #include "hw/nvram/fw_cfg.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/qemu-file-types.h" #include "migration/vmstate.h" #include "trace.h" diff --git a/hw/openrisc/openrisc_sim.c b/hw/openrisc/openrisc_sim.c index bafb877cc38..603d8ca0d99 100644 --- a/hw/openrisc/openrisc_sim.c +++ b/hw/openrisc/openrisc_sim.c @@ -31,7 +31,7 @@ #include "system/address-spaces.h" #include "system/device_tree.h" #include "system/system.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "system/qtest.h" #include "system/reset.h" #include "hw/core/split-irq.h" diff --git a/hw/openrisc/virt.c b/hw/openrisc/virt.c index 446a81579c1..54ce96666e5 100644 --- a/hw/openrisc/virt.c +++ b/hw/openrisc/virt.c @@ -22,7 +22,7 @@ #include "hw/pci-host/gpex.h" #include "hw/core/qdev-properties.h" #include "hw/rtc/goldfish_rtc.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/virtio/virtio-mmio.h" #include "system/device_tree.h" #include "system/system.h" diff --git a/hw/pci-bridge/cxl_root_port.c b/hw/pci-bridge/cxl_root_port.c index 616d5d934cc..197d3148d20 100644 --- a/hw/pci-bridge/cxl_root_port.c +++ b/hw/pci-bridge/cxl_root_port.c @@ -25,7 +25,7 @@ #include "hw/pci/msi.h" #include "hw/core/qdev-properties.h" #include "hw/core/qdev-properties-system.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qapi/error.h" #include "hw/cxl/cxl.h" =20 diff --git a/hw/pci-host/i440fx.c b/hw/pci-host/i440fx.c index 15354abf3ba..e7d638b296c 100644 --- a/hw/pci-host/i440fx.c +++ b/hw/pci-host/i440fx.c @@ -30,7 +30,7 @@ #include "hw/pci/pci_host.h" #include "hw/pci-host/i440fx.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qapi/error.h" #include "migration/vmstate.h" #include "qapi/visitor.h" diff --git a/hw/pci-host/mv64361.c b/hw/pci-host/mv64361.c index 636228c4074..ef1c77563e8 100644 --- a/hw/pci-host/mv64361.c +++ b/hw/pci-host/mv64361.c @@ -11,7 +11,7 @@ #include "qemu/osdep.h" #include "qemu/units.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/pci/pci_device.h" #include "hw/pci/pci_host.h" #include "hw/core/irq.h" diff --git a/hw/pci-host/sabre.c b/hw/pci-host/sabre.c index 87af933dc29..b3f57dca7d7 100644 --- a/hw/pci-host/sabre.c +++ b/hw/pci-host/sabre.c @@ -25,7 +25,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/pci/pci.h" #include "hw/pci/pci_host.h" #include "hw/core/qdev-properties.h" diff --git a/hw/pci-host/sh_pci.c b/hw/pci-host/sh_pci.c index 87a71c889e4..3ffd2cdbd70 100644 --- a/hw/pci-host/sh_pci.c +++ b/hw/pci-host/sh_pci.c @@ -23,7 +23,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/sh4/sh.h" #include "hw/core/irq.h" #include "hw/pci/pci_device.h" diff --git a/hw/pci-host/versatile.c b/hw/pci-host/versatile.c index 1fdae78210a..b27531f7fbb 100644 --- a/hw/pci-host/versatile.c +++ b/hw/pci-host/versatile.c @@ -9,7 +9,7 @@ =20 #include "qemu/osdep.h" #include "qemu/units.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/core/irq.h" #include "hw/pci/pci_device.h" diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c index 7f164331c8e..113a2daca1d 100644 --- a/hw/ppc/e500.c +++ b/hw/ppc/e500.c @@ -41,7 +41,7 @@ #include "hw/core/qdev-properties.h" #include "hw/core/loader.h" #include "elf.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/host-utils.h" #include "qemu/option.h" #include "hw/pci-host/ppce500.h" diff --git a/hw/ppc/e500plat.c b/hw/ppc/e500plat.c index 4f1d659e723..ca5647284d0 100644 --- a/hw/ppc/e500plat.c +++ b/hw/ppc/e500plat.c @@ -15,7 +15,7 @@ #include "hw/net/fsl_etsec/etsec.h" #include "system/device_tree.h" #include "system/kvm.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/pci/pci.h" #include "hw/ppc/openpic.h" #include "kvm_ppc.h" diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c index 410a3ac392e..7275563a155 100644 --- a/hw/ppc/mac_newworld.c +++ b/hw/ppc/mac_newworld.c @@ -73,7 +73,7 @@ #include "system/reset.h" #include "kvm_ppc.h" #include "hw/usb/usb.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "trace.h" =20 #define MAX_IDE_BUS 2 diff --git a/hw/ppc/mpc8544_guts.c b/hw/ppc/mpc8544_guts.c index a25041e8367..88ae573d1e8 100644 --- a/hw/ppc/mpc8544_guts.c +++ b/hw/ppc/mpc8544_guts.c @@ -21,7 +21,7 @@ #include "qemu/log.h" #include "system/runstate.h" #include "cpu.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qom/object.h" =20 #define MPC8544_GUTS_MMIO_SIZE 0x1000 diff --git a/hw/ppc/pegasos.c b/hw/ppc/pegasos.c index bf290a7dcd5..3e4d19fbe84 100644 --- a/hw/ppc/pegasos.c +++ b/hw/ppc/pegasos.c @@ -11,7 +11,7 @@ #include "qemu/units.h" #include "qapi/error.h" #include "hw/ppc/ppc.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/pci/pci_host.h" #include "hw/core/irq.h" #include "hw/core/or-irq.h" diff --git a/hw/ppc/pnv_xscom.c b/hw/ppc/pnv_xscom.c index fbfec829d5b..8557b560aeb 100644 --- a/hw/ppc/pnv_xscom.c +++ b/hw/ppc/pnv_xscom.c @@ -22,7 +22,7 @@ #include "qemu/module.h" #include "system/hw_accel.h" #include "target/ppc/cpu.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #include "hw/ppc/fdt.h" #include "hw/ppc/pnv.h" diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c index 491560575c0..2dde008b0e4 100644 --- a/hw/ppc/ppc440_bamboo.c +++ b/hw/ppc/ppc440_bamboo.c @@ -28,7 +28,7 @@ #include "hw/pci-host/ppc4xx.h" #include "system/system.h" #include "system/reset.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/intc/ppc-uic.h" #include "hw/core/qdev-properties.h" #include "qapi/error.h" diff --git a/hw/ppc/ppce500_spin.c b/hw/ppc/ppce500_spin.c index bc70e50e926..a066ada77ed 100644 --- a/hw/ppc/ppce500_spin.c +++ b/hw/ppc/ppce500_spin.c @@ -31,7 +31,7 @@ #include "qemu/module.h" #include "qemu/units.h" #include "hw/hw.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "system/hw_accel.h" #include "hw/ppc/ppc.h" #include "e500.h" diff --git a/hw/ppc/sam460ex.c b/hw/ppc/sam460ex.c index b6e233747ed..b13dd224ba1 100644 --- a/hw/ppc/sam460ex.c +++ b/hw/ppc/sam460ex.c @@ -30,7 +30,7 @@ #include "hw/block/flash.h" #include "system/system.h" #include "system/reset.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/char/serial-mm.h" #include "hw/i2c/ppc4xx_i2c.h" #include "hw/i2c/smbus_eeprom.h" diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index a7c064be330..ea998bdff15 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -26,7 +26,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/pci/pci.h" #include "hw/pci/msi.h" diff --git a/hw/ppc/spapr_vio.c b/hw/ppc/spapr_vio.c index 875c17f4784..501e82a7665 100644 --- a/hw/ppc/spapr_vio.c +++ b/hw/ppc/spapr_vio.c @@ -26,7 +26,7 @@ #include "qemu/log.h" #include "hw/core/loader.h" #include "elf.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "system/kvm.h" #include "system/device_tree.h" #include "kvm_ppc.h" diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c index cf2d10ecb27..8b3e67b627c 100644 --- a/hw/ppc/virtex_ml507.c +++ b/hw/ppc/virtex_ml507.c @@ -27,7 +27,7 @@ #include "qemu/units.h" #include "exec/page-protection.h" #include "cpu.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/char/serial-mm.h" #include "hw/block/flash.h" #include "system/system.h" diff --git a/hw/riscv/microblaze-v-generic.c b/hw/riscv/microblaze-v-generi= c.c index 8a461a0dd56..d56b64792d7 100644 --- a/hw/riscv/microblaze-v-generic.c +++ b/hw/riscv/microblaze-v-generic.c @@ -17,7 +17,7 @@ #include "qemu/units.h" #include "qapi/error.h" #include "cpu.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "system/system.h" #include "net/net.h" #include "hw/core/boards.h" diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c index 9de6456c141..0cf849ffb6d 100644 --- a/hw/riscv/microchip_pfsoc.c +++ b/hw/riscv/microchip_pfsoc.c @@ -42,7 +42,7 @@ #include "qapi/visitor.h" #include "hw/core/boards.h" #include "hw/core/loader.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "chardev/char.h" #include "hw/cpu/cluster.h" #include "target/riscv/cpu.h" diff --git a/hw/riscv/riscv-iommu-sys.c b/hw/riscv/riscv-iommu-sys.c index 2a11c4dab6d..bf87b0b4ea3 100644 --- a/hw/riscv/riscv-iommu-sys.c +++ b/hw/riscv/riscv-iommu-sys.c @@ -20,7 +20,7 @@ #include "hw/core/irq.h" #include "hw/pci/pci_bus.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qapi/error.h" #include "qemu/error-report.h" #include "qemu/host-utils.h" diff --git a/hw/riscv/riscv_hart.c b/hw/riscv/riscv_hart.c index 31187487946..e675358e1a1 100644 --- a/hw/riscv/riscv_hart.c +++ b/hw/riscv/riscv_hart.c @@ -24,7 +24,7 @@ #include "system/reset.h" #include "system/qtest.h" #include "qemu/cutils.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "target/riscv/cpu.h" #include "hw/core/qdev-properties.h" #include "hw/riscv/riscv_hart.h" diff --git a/hw/riscv/sifive_e.c b/hw/riscv/sifive_e.c index c2032176c43..4cb9c07ffbf 100644 --- a/hw/riscv/sifive_e.c +++ b/hw/riscv/sifive_e.c @@ -34,7 +34,7 @@ #include "qapi/error.h" #include "hw/core/boards.h" #include "hw/core/loader.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/misc/unimp.h" #include "target/riscv/cpu.h" #include "hw/riscv/riscv_hart.h" diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c index 3e081ddf37e..f1b47ab5848 100644 --- a/hw/riscv/sifive_u.c +++ b/hw/riscv/sifive_u.c @@ -42,7 +42,7 @@ #include "hw/core/boards.h" #include "hw/core/irq.h" #include "hw/core/loader.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/cpu/cluster.h" #include "hw/misc/unimp.h" #include "hw/sd/sd.h" diff --git a/hw/riscv/spike.c b/hw/riscv/spike.c index c9451d7e3b3..ea527c7bfc1 100644 --- a/hw/riscv/spike.c +++ b/hw/riscv/spike.c @@ -27,7 +27,7 @@ #include "qapi/error.h" #include "hw/core/boards.h" #include "hw/core/loader.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "target/riscv/cpu.h" #include "hw/riscv/riscv_hart.h" #include "hw/riscv/spike.h" diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index d79add55768..c87c169d38c 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -25,7 +25,7 @@ #include "qapi/error.h" #include "hw/core/boards.h" #include "hw/core/loader.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/qdev-properties.h" #include "hw/char/serial-mm.h" #include "target/riscv/cpu.h" diff --git a/hw/rtc/allwinner-rtc.c b/hw/rtc/allwinner-rtc.c index 0ffd38cf787..52006a0e3a3 100644 --- a/hw/rtc/allwinner-rtc.c +++ b/hw/rtc/allwinner-rtc.c @@ -19,7 +19,7 @@ =20 #include "qemu/osdep.h" #include "qemu/units.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/rtc/exynos4210_rtc.c b/hw/rtc/exynos4210_rtc.c index a15b5274bd3..846839d2d8b 100644 --- a/hw/rtc/exynos4210_rtc.c +++ b/hw/rtc/exynos4210_rtc.c @@ -28,7 +28,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "qemu/module.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/timer.h" #include "qemu/bcd.h" diff --git a/hw/rtc/goldfish_rtc.c b/hw/rtc/goldfish_rtc.c index 79d2a04c721..5354a6b02f3 100644 --- a/hw/rtc/goldfish_rtc.c +++ b/hw/rtc/goldfish_rtc.c @@ -24,7 +24,7 @@ #include "migration/vmstate.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/bitops.h" #include "qemu/timer.h" #include "system/system.h" diff --git a/hw/rtc/ls7a_rtc.c b/hw/rtc/ls7a_rtc.c index b0c6588e098..158c8155055 100644 --- a/hw/rtc/ls7a_rtc.c +++ b/hw/rtc/ls7a_rtc.c @@ -6,7 +6,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "hw/core/register.h" #include "qemu/timer.h" diff --git a/hw/rtc/m48t59.c b/hw/rtc/m48t59.c index be8efb8c0ad..be4196b21c4 100644 --- a/hw/rtc/m48t59.c +++ b/hw/rtc/m48t59.c @@ -31,7 +31,7 @@ #include "system/runstate.h" #include "system/rtc.h" #include "system/system.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qapi/error.h" #include "qemu/bcd.h" #include "qemu/module.h" diff --git a/hw/rtc/pl031.c b/hw/rtc/pl031.c index 847349b407a..b56877c3a20 100644 --- a/hw/rtc/pl031.c +++ b/hw/rtc/pl031.c @@ -16,7 +16,7 @@ #include "migration/vmstate.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/timer.h" #include "system/system.h" #include "system/rtc.h" diff --git a/hw/rtc/sun4v-rtc.c b/hw/rtc/sun4v-rtc.c index 29e24ef6bed..675b6cd5bd6 100644 --- a/hw/rtc/sun4v-rtc.c +++ b/hw/rtc/sun4v-rtc.c @@ -10,7 +10,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qapi/error.h" #include "qemu/module.h" #include "qemu/timer.h" diff --git a/hw/rtc/xlnx-zynqmp-rtc.c b/hw/rtc/xlnx-zynqmp-rtc.c index 49d48dc6782..28ae7a24f9d 100644 --- a/hw/rtc/xlnx-zynqmp-rtc.c +++ b/hw/rtc/xlnx-zynqmp-rtc.c @@ -25,7 +25,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" #include "qemu/bitops.h" #include "qemu/log.h" diff --git a/hw/rx/rx62n.c b/hw/rx/rx62n.c index e1fa3d56618..3d137a517b8 100644 --- a/hw/rx/rx62n.c +++ b/hw/rx/rx62n.c @@ -26,7 +26,7 @@ #include "qemu/units.h" #include "hw/rx/rx62n.h" #include "hw/core/loader.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/qdev-properties.h" #include "system/system.h" #include "qobject/qlist.h" diff --git a/hw/s390x/ap-bridge.c b/hw/s390x/ap-bridge.c index edeb3dbef34..5cdbf098074 100644 --- a/hw/s390x/ap-bridge.c +++ b/hw/s390x/ap-bridge.c @@ -10,7 +10,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/bitops.h" #include "qemu/module.h" #include "hw/s390x/ap-bridge.h" diff --git a/hw/s390x/css-bridge.c b/hw/s390x/css-bridge.c index 887794beef7..440fefb7d0f 100644 --- a/hw/s390x/css-bridge.c +++ b/hw/s390x/css-bridge.c @@ -14,7 +14,7 @@ #include "qapi/error.h" #include "hw/core/hotplug.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/bitops.h" #include "qemu/module.h" #include "hw/s390x/css.h" diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c index 9da6119be26..933271431ba 100644 --- a/hw/scsi/esp.c +++ b/hw/scsi/esp.c @@ -25,7 +25,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/core/irq.h" #include "hw/scsi/esp.h" diff --git a/hw/scsi/lasi_ncr710.c b/hw/scsi/lasi_ncr710.c index 7e0076c7a3b..4fde2265b5b 100644 --- a/hw/scsi/lasi_ncr710.c +++ b/hw/scsi/lasi_ncr710.c @@ -14,7 +14,7 @@ #include "qemu/osdep.h" #include "hw/scsi/lasi_ncr710.h" #include "hw/scsi/ncr53c710.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/timer.h" #include "qemu/log.h" #include "trace.h" diff --git a/hw/scsi/ncr53c710.c b/hw/scsi/ncr53c710.c index 9931fd4dc7d..0f8914d353d 100644 --- a/hw/scsi/ncr53c710.c +++ b/hw/scsi/ncr53c710.c @@ -29,7 +29,7 @@ #include "qapi/error.h" #include "qemu/timer.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/scsi/scsi.h" #include "hw/scsi/ncr53c710.h" #include "migration/vmstate.h" diff --git a/hw/sd/omap_mmc.c b/hw/sd/omap_mmc.c index 267b723e3c5..020429aa4f4 100644 --- a/hw/sd/omap_mmc.c +++ b/hw/sd/omap_mmc.c @@ -23,7 +23,7 @@ #include "qemu/log.h" #include "qapi/error.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/arm/omap.h" #include "hw/sd/sd.h" =20 diff --git a/hw/sd/pl181.c b/hw/sd/pl181.c index 761b262d7ba..08c34fea31d 100644 --- a/hw/sd/pl181.c +++ b/hw/sd/pl181.c @@ -9,7 +9,7 @@ =20 #include "qemu/osdep.h" #include "system/blockdev.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/core/irq.h" #include "hw/sd/sd.h" diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c index 35db5cbbcd1..acb3fe75a8b 100644 --- a/hw/sh4/r2d.c +++ b/hw/sh4/r2d.c @@ -28,7 +28,7 @@ #include "qapi/error.h" #include "qemu/error-report.h" #include "cpu.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/sh4/sh.h" #include "system/reset.h" #include "system/runstate.h" diff --git a/hw/sh4/sh7750.c b/hw/sh4/sh7750.c index a0aa89ad318..3ae71f99fe5 100644 --- a/hw/sh4/sh7750.c +++ b/hw/sh4/sh7750.c @@ -25,7 +25,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "hw/sh4/sh.h" #include "system/system.h" diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index 2e3952c917b..8ad4eb46bbe 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -28,7 +28,7 @@ #include "qemu/datadir.h" #include "cpu.h" #include "exec/target_page.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/error-report.h" #include "qemu/timer.h" #include "hw/sparc/sun4m_iommu.h" diff --git a/hw/sparc/sun4m_iommu.c b/hw/sparc/sun4m_iommu.c index 10c4786dad6..ab5eb67072a 100644 --- a/hw/sparc/sun4m_iommu.c +++ b/hw/sparc/sun4m_iommu.c @@ -26,7 +26,7 @@ #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" #include "hw/sparc/sun4m_iommu.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/module.h" #include "system/address-spaces.h" diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c index 14b47c037ba..d3ce32b6b09 100644 --- a/hw/sparc64/sun4u.c +++ b/hw/sparc64/sun4u.c @@ -51,7 +51,7 @@ #include "hw/nvram/chrp_nvram.h" #include "hw/sparc/sparc64.h" #include "hw/nvram/fw_cfg.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/ide/pci.h" #include "hw/core/loader.h" #include "hw/core/fw-path-provider.h" diff --git a/hw/sparc64/sun4u_iommu.c b/hw/sparc64/sun4u_iommu.c index 14645f475a0..0188ce35d29 100644 --- a/hw/sparc64/sun4u_iommu.c +++ b/hw/sparc64/sun4u_iommu.c @@ -25,7 +25,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/sparc/sun4u_iommu.h" #include "system/address-spaces.h" #include "qemu/log.h" diff --git a/hw/ssi/aspeed_smc.c b/hw/ssi/aspeed_smc.c index 6bef856c620..b9d5ecba292 100644 --- a/hw/ssi/aspeed_smc.c +++ b/hw/ssi/aspeed_smc.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/block/flash.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/ssi/pl022.c b/hw/ssi/pl022.c index 1851118d55f..715a2d21f4e 100644 --- a/hw/ssi/pl022.c +++ b/hw/ssi/pl022.c @@ -8,7 +8,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/core/irq.h" #include "hw/ssi/pl022.h" diff --git a/hw/ssi/sifive_spi.c b/hw/ssi/sifive_spi.c index 577cd5d2d8b..2ece78053b2 100644 --- a/hw/ssi/sifive_spi.c +++ b/hw/ssi/sifive_spi.c @@ -22,7 +22,7 @@ #include "qemu/osdep.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/ssi/ssi.h" #include "qemu/fifo8.h" #include "qemu/log.h" diff --git a/hw/ssi/xilinx_spi.c b/hw/ssi/xilinx_spi.c index cf406d08246..79f3e8bfae3 100644 --- a/hw/ssi/xilinx_spi.c +++ b/hw/ssi/xilinx_spi.c @@ -26,7 +26,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/module.h" #include "qemu/fifo8.h" diff --git a/hw/ssi/xilinx_spips.c b/hw/ssi/xilinx_spips.c index a56a5e304dc..a4718fb72d9 100644 --- a/hw/ssi/xilinx_spips.c +++ b/hw/ssi/xilinx_spips.c @@ -23,7 +23,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "hw/core/ptimer.h" #include "hw/core/qdev-properties.h" diff --git a/hw/ssi/xlnx-versal-ospi.c b/hw/ssi/xlnx-versal-ospi.c index 93cdc9d3999..467f0ce7033 100644 --- a/hw/ssi/xlnx-versal-ospi.c +++ b/hw/ssi/xlnx-versal-ospi.c @@ -23,7 +23,7 @@ * THE SOFTWARE. */ #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "hw/core/qdev-properties.h" #include "qemu/bitops.h" diff --git a/hw/timer/allwinner-a10-pit.c b/hw/timer/allwinner-a10-pit.c index d52669787ee..bb995313ae0 100644 --- a/hw/timer/allwinner-a10-pit.c +++ b/hw/timer/allwinner-a10-pit.c @@ -18,7 +18,7 @@ #include "qemu/osdep.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/timer/allwinner-a10-pit.h" #include "migration/vmstate.h" #include "qemu/log.h" diff --git a/hw/timer/arm_timer.c b/hw/timer/arm_timer.c index c38e56f5b89..fb70333c538 100644 --- a/hw/timer/arm_timer.c +++ b/hw/timer/arm_timer.c @@ -8,7 +8,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/timer.h" #include "hw/core/irq.h" diff --git a/hw/timer/armv7m_systick.c b/hw/timer/armv7m_systick.c index baba0817b8f..65cfaf49142 100644 --- a/hw/timer/armv7m_systick.c +++ b/hw/timer/armv7m_systick.c @@ -13,7 +13,7 @@ #include "hw/timer/armv7m_systick.h" #include "migration/vmstate.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/qdev-clock.h" #include "qemu/timer.h" #include "qemu/log.h" diff --git a/hw/timer/aspeed_timer.c b/hw/timer/aspeed_timer.c index 20adb7decbe..1e954f7aec5 100644 --- a/hw/timer/aspeed_timer.c +++ b/hw/timer/aspeed_timer.c @@ -12,7 +12,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/timer/aspeed_timer.h" #include "migration/vmstate.h" #include "qemu/bitops.h" diff --git a/hw/timer/cadence_ttc.c b/hw/timer/cadence_ttc.c index 6f02c6a02d9..3d53921cfaf 100644 --- a/hw/timer/cadence_ttc.c +++ b/hw/timer/cadence_ttc.c @@ -18,7 +18,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/module.h" #include "qemu/timer.h" diff --git a/hw/timer/cmsdk-apb-dualtimer.c b/hw/timer/cmsdk-apb-dualtimer.c index 39b1fa3a149..0f57f01aad9 100644 --- a/hw/timer/cmsdk-apb-dualtimer.c +++ b/hw/timer/cmsdk-apb-dualtimer.c @@ -21,7 +21,7 @@ #include "trace.h" #include "qapi/error.h" #include "qemu/module.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" #include "hw/core/registerfields.h" diff --git a/hw/timer/cmsdk-apb-timer.c b/hw/timer/cmsdk-apb-timer.c index e8b6601097c..4717cec0464 100644 --- a/hw/timer/cmsdk-apb-timer.c +++ b/hw/timer/cmsdk-apb-timer.c @@ -32,7 +32,7 @@ #include "qemu/module.h" #include "qapi/error.h" #include "trace.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "hw/core/registerfields.h" #include "hw/core/qdev-clock.h" diff --git a/hw/timer/digic-timer.c b/hw/timer/digic-timer.c index 12b79914df0..352132bf214 100644 --- a/hw/timer/digic-timer.c +++ b/hw/timer/digic-timer.c @@ -27,7 +27,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/ptimer.h" #include "qemu/module.h" #include "qemu/log.h" diff --git a/hw/timer/exynos4210_mct.c b/hw/timer/exynos4210_mct.c index f6527a451b6..0424539c78f 100644 --- a/hw/timer/exynos4210_mct.c +++ b/hw/timer/exynos4210_mct.c @@ -54,7 +54,7 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/timer.h" #include "qemu/module.h" diff --git a/hw/timer/exynos4210_pwm.c b/hw/timer/exynos4210_pwm.c index 1643fa39418..64eb4f5c8d7 100644 --- a/hw/timer/exynos4210_pwm.c +++ b/hw/timer/exynos4210_pwm.c @@ -22,7 +22,7 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/timer.h" #include "qemu/module.h" diff --git a/hw/timer/grlib_gptimer.c b/hw/timer/grlib_gptimer.c index dbce6f736fa..099ab6c5866 100644 --- a/hw/timer/grlib_gptimer.c +++ b/hw/timer/grlib_gptimer.c @@ -26,7 +26,7 @@ =20 #include "qemu/osdep.h" #include "hw/timer/grlib_gptimer.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/timer.h" #include "hw/core/irq.h" #include "hw/core/ptimer.h" diff --git a/hw/timer/hpet.c b/hw/timer/hpet.c index 82006df0e34..070b40e7f67 100644 --- a/hw/timer/hpet.c +++ b/hw/timer/hpet.c @@ -31,7 +31,7 @@ #include "qemu/timer.h" #include "hw/core/qdev-properties.h" #include "hw/timer/hpet.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/rtc/mc146818rtc.h" #include "hw/rtc/mc146818rtc_regs.h" #include "migration/vmstate.h" diff --git a/hw/timer/pxa2xx_timer.c b/hw/timer/pxa2xx_timer.c index b875c050525..b4f501e57fe 100644 --- a/hw/timer/pxa2xx_timer.c +++ b/hw/timer/pxa2xx_timer.c @@ -12,7 +12,7 @@ #include "hw/core/qdev-properties.h" #include "qemu/timer.h" #include "system/runstate.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" diff --git a/hw/timer/slavio_timer.c b/hw/timer/slavio_timer.c index 07359a6fe70..71696a4b615 100644 --- a/hw/timer/slavio_timer.c +++ b/hw/timer/slavio_timer.c @@ -27,7 +27,7 @@ #include "hw/core/irq.h" #include "hw/core/ptimer.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "trace.h" #include "qemu/module.h" diff --git a/hw/timer/sse-counter.c b/hw/timer/sse-counter.c index 39d140347e5..bec3333b0d8 100644 --- a/hw/timer/sse-counter.c +++ b/hw/timer/sse-counter.c @@ -32,7 +32,7 @@ #include "qapi/error.h" #include "trace.h" #include "hw/timer/sse-counter.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/registerfields.h" #include "hw/core/clock.h" #include "hw/core/qdev-clock.h" diff --git a/hw/timer/sse-timer.c b/hw/timer/sse-timer.c index 62381e07e06..ea607118922 100644 --- a/hw/timer/sse-timer.c +++ b/hw/timer/sse-timer.c @@ -40,7 +40,7 @@ #include "trace.h" #include "hw/timer/sse-timer.h" #include "hw/timer/sse-counter.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "hw/core/registerfields.h" #include "hw/core/clock.h" diff --git a/hw/timer/xilinx_timer.c b/hw/timer/xilinx_timer.c index 9c2969a2c4f..8a502dae0ee 100644 --- a/hw/timer/xilinx_timer.c +++ b/hw/timer/xilinx_timer.c @@ -27,7 +27,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "hw/core/ptimer.h" #include "hw/core/qdev-properties.h" diff --git a/hw/tpm/tpm_tis_i2c.c b/hw/tpm/tpm_tis_i2c.c index 5ce84dc7a45..9f13e0ec120 100644 --- a/hw/tpm/tpm_tis_i2c.c +++ b/hw/tpm/tpm_tis_i2c.c @@ -19,7 +19,7 @@ =20 #include "qemu/osdep.h" #include "hw/i2c/i2c.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/acpi/tpm.h" #include "migration/vmstate.h" #include "tpm_prop.h" diff --git a/hw/tpm/tpm_tis_sysbus.c b/hw/tpm/tpm_tis_sysbus.c index 07c30401301..e9372e73163 100644 --- a/hw/tpm/tpm_tis_sysbus.c +++ b/hw/tpm/tpm_tis_sysbus.c @@ -27,7 +27,7 @@ #include "migration/vmstate.h" #include "hw/acpi/tpm.h" #include "tpm_prop.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "tpm_tis.h" #include "qom/object.h" =20 diff --git a/hw/tricore/tc27x_soc.c b/hw/tricore/tc27x_soc.c index e1a97a43874..5b1b07cee1c 100644 --- a/hw/tricore/tc27x_soc.c +++ b/hw/tricore/tc27x_soc.c @@ -20,7 +20,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/loader.h" #include "qemu/units.h" #include "hw/misc/unimp.h" diff --git a/hw/tricore/tricore_testdevice.c b/hw/tricore/tricore_testdevic= e.c index d3ffc5fe9f3..2eb16731e90 100644 --- a/hw/tricore/tricore_testdevice.c +++ b/hw/tricore/tricore_testdevice.c @@ -17,7 +17,7 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/qdev-properties.h" #include "hw/tricore/tricore_testdevice.h" =20 diff --git a/hw/uefi/var-service-sysbus.c b/hw/uefi/var-service-sysbus.c index 3bf93356506..75b07905184 100644 --- a/hw/uefi/var-service-sysbus.c +++ b/hw/uefi/var-service-sysbus.c @@ -7,7 +7,7 @@ #include "migration/vmstate.h" =20 #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" =20 #include "hw/uefi/hardware-info.h" #include "hw/uefi/var-service.h" diff --git a/hw/usb/hcd-dwc3.c b/hw/usb/hcd-dwc3.c index 4018d70f02f..785732fc978 100644 --- a/hw/usb/hcd-dwc3.c +++ b/hw/usb/hcd-dwc3.c @@ -28,7 +28,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" #include "qemu/bitops.h" #include "qom/object.h" diff --git a/hw/usb/hcd-ohci-pci.c b/hw/usb/hcd-ohci-pci.c index bdbbaaa87a3..18b58f5fcbc 100644 --- a/hw/usb/hcd-ohci-pci.c +++ b/hw/usb/hcd-ohci-pci.c @@ -24,7 +24,7 @@ #include "hw/usb/usb.h" #include "migration/vmstate.h" #include "hw/pci/pci_device.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/qdev-dma.h" #include "hw/core/qdev-properties.h" #include "trace.h" diff --git a/hw/usb/hcd-ohci-sysbus.c b/hw/usb/hcd-ohci-sysbus.c index 350b0118997..1a2cf29bed8 100644 --- a/hw/usb/hcd-ohci-sysbus.c +++ b/hw/usb/hcd-ohci-sysbus.c @@ -25,7 +25,7 @@ #include "qemu/timer.h" #include "hw/usb/usb.h" #include "migration/vmstate.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/qdev-dma.h" #include "hw/core/qdev-properties.h" #include "trace.h" diff --git a/hw/usb/hcd-ohci.c b/hw/usb/hcd-ohci.c index c771aafdd06..c7e9c719035 100644 --- a/hw/usb/hcd-ohci.c +++ b/hw/usb/hcd-ohci.c @@ -32,7 +32,7 @@ #include "qemu/timer.h" #include "hw/usb/usb.h" #include "migration/vmstate.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/qdev-dma.h" #include "hw/core/qdev-properties.h" #include "trace.h" diff --git a/hw/usb/xlnx-usb-subsystem.c b/hw/usb/xlnx-usb-subsystem.c index e0dfdfdcbd1..9bf040c917b 100644 --- a/hw/usb/xlnx-usb-subsystem.c +++ b/hw/usb/xlnx-usb-subsystem.c @@ -23,7 +23,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/register.h" #include "qemu/bitops.h" #include "qom/object.h" diff --git a/hw/usb/xlnx-versal-usb2-ctrl-regs.c b/hw/usb/xlnx-versal-usb2-= ctrl-regs.c index 33a7d7fbca0..15ea4384488 100644 --- a/hw/usb/xlnx-versal-usb2-ctrl-regs.c +++ b/hw/usb/xlnx-versal-usb2-ctrl-regs.c @@ -28,7 +28,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "hw/core/register.h" #include "qemu/bitops.h" diff --git a/hw/virtio/virtio-mmio.c b/hw/virtio/virtio-mmio.c index 54bd0c57b5f..0b0412b22f2 100644 --- a/hw/virtio/virtio-mmio.c +++ b/hw/virtio/virtio-mmio.c @@ -23,7 +23,7 @@ #include "standard-headers/linux/virtio_mmio.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/virtio/virtio.h" #include "migration/qemu-file-types.h" #include "qemu/host-utils.h" diff --git a/hw/vmapple/aes.c b/hw/vmapple/aes.c index a6e94610b85..553e688adbe 100644 --- a/hw/vmapple/aes.c +++ b/hw/vmapple/aes.c @@ -15,7 +15,7 @@ #include "crypto/aes.h" #include "crypto/cipher.h" #include "hw/core/irq.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/vmapple/vmapple.h" #include "migration/vmstate.h" #include "qemu/cutils.h" diff --git a/hw/vmapple/bdif.c b/hw/vmapple/bdif.c index 5ccd3745819..4dc10c151d2 100644 --- a/hw/vmapple/bdif.c +++ b/hw/vmapple/bdif.c @@ -15,7 +15,7 @@ #include "qemu/module.h" #include "trace.h" #include "hw/vmapple/vmapple.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/block/block.h" #include "qapi/error.h" #include "system/block-backend.h" diff --git a/hw/vmapple/cfg.c b/hw/vmapple/cfg.c index 3d58a29f69d..2a3204f0ec2 100644 --- a/hw/vmapple/cfg.c +++ b/hw/vmapple/cfg.c @@ -11,7 +11,7 @@ =20 #include "qemu/osdep.h" #include "hw/vmapple/vmapple.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "qemu/log.h" #include "qemu/module.h" #include "qapi/error.h" diff --git a/hw/vmapple/vmapple.c b/hw/vmapple/vmapple.c index 2ebd0f07bd3..b1379eafef3 100644 --- a/hw/vmapple/vmapple.c +++ b/hw/vmapple/vmapple.c @@ -29,7 +29,7 @@ #include "hw/core/irq.h" #include "hw/core/loader.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/usb/usb.h" #include "hw/arm/boot.h" #include "hw/arm/primecell.h" diff --git a/hw/watchdog/allwinner-wdt.c b/hw/watchdog/allwinner-wdt.c index 68b600689a5..156f8235342 100644 --- a/hw/watchdog/allwinner-wdt.c +++ b/hw/watchdog/allwinner-wdt.c @@ -25,7 +25,7 @@ #include "qemu/units.h" #include "qemu/module.h" #include "trace.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/registerfields.h" #include "hw/watchdog/allwinner-wdt.h" #include "system/watchdog.h" diff --git a/hw/watchdog/cmsdk-apb-watchdog.c b/hw/watchdog/cmsdk-apb-watch= dog.c index ceae792580e..c474166cfcc 100644 --- a/hw/watchdog/cmsdk-apb-watchdog.c +++ b/hw/watchdog/cmsdk-apb-watchdog.c @@ -26,7 +26,7 @@ #include "qapi/error.h" #include "qemu/module.h" #include "system/watchdog.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" #include "hw/core/registerfields.h" diff --git a/hw/watchdog/wdt_aspeed.c b/hw/watchdog/wdt_aspeed.c index 930834bfcaf..26506f3c33f 100644 --- a/hw/watchdog/wdt_aspeed.c +++ b/hw/watchdog/wdt_aspeed.c @@ -15,7 +15,7 @@ #include "qemu/timer.h" #include "system/watchdog.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/watchdog/wdt_aspeed.h" #include "migration/vmstate.h" #include "trace.h" diff --git a/hw/xen/xen-bus.c b/hw/xen/xen-bus.c index e3c51030f35..dfad2bc5085 100644 --- a/hw/xen/xen-bus.c +++ b/hw/xen/xen-bus.c @@ -10,7 +10,7 @@ #include "qemu/module.h" #include "qemu/uuid.h" #include "hw/core/qdev-properties.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/xen/xen.h" #include "hw/xen/xen-backend.h" #include "hw/xen/xen-legacy-backend.h" /* xen_be_init() */ diff --git a/hw/xen/xen-legacy-backend.c b/hw/xen/xen-legacy-backend.c index f9b0dd1513d..7977b527127 100644 --- a/hw/xen/xen-legacy-backend.c +++ b/hw/xen/xen-legacy-backend.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" =20 -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/boards.h" #include "hw/core/qdev-properties.h" #include "qemu/main-loop.h" diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c index a533f2bac3f..5e6f897429d 100644 --- a/hw/xtensa/xtfpga.c +++ b/hw/xtensa/xtfpga.c @@ -38,7 +38,7 @@ #include "exec/tswap.h" #include "hw/char/serial-mm.h" #include "net/net.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/block/flash.h" #include "chardev/char.h" #include "system/device_tree.h" diff --git a/system/qdev-monitor.c b/system/qdev-monitor.c index 8e74e24c190..0bf514cb096 100644 --- a/system/qdev-monitor.c +++ b/system/qdev-monitor.c @@ -18,7 +18,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "monitor/hmp.h" #include "monitor/monitor.h" #include "monitor/qdev.h" diff --git a/hw/display/apple-gfx-mmio.m b/hw/display/apple-gfx-mmio.m index b83f5f4fe62..983fc1724a0 100644 --- a/hw/display/apple-gfx-mmio.m +++ b/hw/display/apple-gfx-mmio.m @@ -15,7 +15,7 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "block/aio-wait.h" -#include "hw/sysbus.h" +#include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "apple-gfx.h" #include "trace.h" --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827178; cv=none; d=zohomail.com; s=zohoarc; b=TPavy1cm8hHa53MjVijrzzRMkbiqraOmaiCpNubhwOApmnQrvWNgGeV+kraTXVin1ZaLFy2jZiRLkHLgeg+1emo9R+vFlqbA2yK8pKWeIapBXFtwkwy5G/mn/x/Ax77U2qjPAgRTy+HVXJ+HjwehobcKG5RqQP8c9OlwhUlDEFY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827178; 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=sMZbrpL/sbY9nggcHojULDzfnocTCN6gHzY1sKeWxnM=; b=Bj1KJj4lcn+M8uhWz18zn6ZVLq30+Rr9ThQ2IDeXzPlHZc1Y2Nnv0igRlCsd5YRD32J+yBlECRvIgHtet9gPAoCpb/bgpA6HefSlvaHBx6QyZccoh4lMiPnlMfNkVrmvteEur4rQzEIBStnLd5k642UquRFhRY20nfKrpQkqILY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827178105247.7817951982954; Sat, 27 Dec 2025 01:19:38 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQL-0002aF-2s; Sat, 27 Dec 2025 04:17:21 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQJ-0002ZU-8P for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:19 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQH-0002X7-Qf for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:19 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-225-H4C-aD5kOYmXR9GZSrx0mQ-1; Sat, 27 Dec 2025 04:17:15 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-4779b3749a8so54866275e9.1 for ; Sat, 27 Dec 2025 01:17:15 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d193cbe58sm433083535e9.9.2025.12.27.01.17.12 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827037; 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=sMZbrpL/sbY9nggcHojULDzfnocTCN6gHzY1sKeWxnM=; b=bAG/agJUiH4Gy5UaHTLKU1xb7efFeZMneDS1UIlecIUoCI09+VEkJMtOrtZ/NdaprVNLP3 62TKufcuybz11glfNa7kvDj/O/XvmAmlZq97P8Vcf+tQREsYpNRJ3oQe5yxEOZ38ZtZhpe qjTIC2/ELBPnQeEFS1FtJEA7VhdKzuw= X-MC-Unique: H4C-aD5kOYmXR9GZSrx0mQ-1 X-Mimecast-MFC-AGG-ID: H4C-aD5kOYmXR9GZSrx0mQ_1766827034 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827034; x=1767431834; 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; bh=sMZbrpL/sbY9nggcHojULDzfnocTCN6gHzY1sKeWxnM=; b=oM6aDL+7Dad/0GGUiufbjyGSsylzStyZdOl2RdVeUjzCqKFDgkLGoOcp2ZeJeNYURW 38DW9QB5iaYgyM+xcMZtcMNCrFLxXM+03iDNBiQA00703WntBzRAFIrxsSOZ51S+Nnba nu5ZEocHUEMqjhn1leoPfGXWZFE+GfsBPJGfwPigL7EPsyG1bCwHXKwN5RdtfI5LkOtA omoO4Ay8zfa7d1yCZzMheiL4+b5arA9OirGKKBCfc8KLLKgHLXw+WX44TSjcUjA9UrVv I85jhNzYknGwDQmT6ZZBSdxhhyxf7I3oX4NLvJco1l8tPzl1oAMbOyud/gfnIk1jH89y COMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827034; x=1767431834; 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; bh=sMZbrpL/sbY9nggcHojULDzfnocTCN6gHzY1sKeWxnM=; b=T7Wq0D8irGHdJEKjTVgBSKFKypQnffs+UHDzWqmHDOw1K2QXq0vDKngl9lokx4wIDd sl+vhwqr9SGAh3JAney/WGnNvHUmHzC3Fy0ab74A1OwoHjRROgmnVG47mwKXF5g0WGUk pturOHQvIQsyFywZdiCszooVPL6yRlC45AMbXN2U/CveIPy/of6v50ArpJLYGA8l5GKE uqYHXJLAT1BrFJQNzTvWehzVw7ah6nsqiKM5olsJlV3ENHXtEp15y8FFg2UcPGquaBn9 jBbLsjEvsWE8/Uat7R+pu4ekHADmb5zBJjqya5FK1byPuPEPD9SluJg09r9Gl1Pyzbmy NlQQ== X-Gm-Message-State: AOJu0YxfXe7OPeo1ZvxeQNhDjp/tya0vtlBg4D06EbQqkaOnFiZRQBcu ke/PhMacioPoqIDY1zrGmgwFhpD/o2ZbtCeNsKAsGcxz3pb6NytmTlzIfwekCeTaX5GcoNuI4Tg Xc9IMTtUhXEj1dfL2lYx2AITQoqnruWRCO/0B6H/qpGrEvqhcwOC4UYLpAkSzenOJ3/RKjqPOpS u73IKpdJFnLxuNlUlrpnPR62N6yek7ZzCA136qNyf6 X-Gm-Gg: AY/fxX4rVdFXCpt//vD/lw1Yy2DpSc+Bqv+OzCWqSUdMktYZ99FsuMZUd0pLVGTIv9q 519Xsm1B2g80AsX6zFA6fB/1XX+qnb27ExcH7wNLxkvcwufPsgtRWmfbPk8WzPk4oUz14VUnd5D QQyq6yMQFZRQeQbclzXjJOLhS/tLOAz2z2NLynaNVbhm1Qspl5s1xLN0Ti7MuOQrYzdDW4anos9 +pRWM1fk8mijA3NP396+ZGLEKC0FES0U23Wv1RUSRWYwwgLkjf0OhPcb5HFrFDL2qxjCpvA5pex IZWL+GtogeSD4mb5BBh8t4OT7HrsYAXTCC6hIfwzwQwi2v+FKMG1DREbcaiWcE8Shp+xrmo/H0v MnNHHkOLd55m7Ko6xShRYUF73l5DHisaT2jtv6OF42oEcvx0BYK6h3PzgPqhrbJlCODd1Fi357B ML5KgXJB44eTcwyBw= X-Received: by 2002:a05:600c:1d1d:b0:477:8ba7:fe0a with SMTP id 5b1f17b1804b1-47d1957da90mr278533715e9.24.1766827033820; Sat, 27 Dec 2025 01:17:13 -0800 (PST) X-Google-Smtp-Source: AGHT+IFWOAWVregNtHZX0WsrdK0Z/nHD7fVFAyZVaEsnYXEEn9IABMduHdio9YHVuSR58nGkre4xJw== X-Received: by 2002:a05:600c:1d1d:b0:477:8ba7:fe0a with SMTP id 5b1f17b1804b1-47d1957da90mr278533405e9.24.1766827033228; Sat, 27 Dec 2025 01:17:13 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 027/153] include: move hw/vmstate-if.h to hw/core/ Date: Sat, 27 Dec 2025 10:14:14 +0100 Message-ID: <20251227091622.20725-28-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827179513158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- MAINTAINERS | 2 +- include/hw/{ =3D> core}/vmstate-if.h | 0 include/migration/register.h | 2 +- include/migration/vmstate.h | 2 +- hw/core/vmstate-if.c | 2 +- 5 files changed, 4 insertions(+), 4 deletions(-) rename include/hw/{ =3D> core}/vmstate-if.h (100%) diff --git a/MAINTAINERS b/MAINTAINERS index 44d84aa243a..5d33892c347 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3656,7 +3656,7 @@ M: Peter Xu M: Fabiano Rosas S: Maintained F: hw/core/vmstate-if.c -F: include/hw/vmstate-if.h +F: include/hw/core/vmstate-if.h F: include/migration/ F: include/qemu/userfaultfd.h F: migration/ diff --git a/include/hw/vmstate-if.h b/include/hw/core/vmstate-if.h similarity index 100% rename from include/hw/vmstate-if.h rename to include/hw/core/vmstate-if.h diff --git a/include/migration/register.h b/include/migration/register.h index ae79794cdd4..d0f37f5f438 100644 --- a/include/migration/register.h +++ b/include/migration/register.h @@ -14,7 +14,7 @@ #ifndef MIGRATION_REGISTER_H #define MIGRATION_REGISTER_H =20 -#include "hw/vmstate-if.h" +#include "hw/core/vmstate-if.h" =20 /** * struct SaveVMHandlers: handler structure to finely control diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index a87a5efa428..ed9095a4661 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -27,7 +27,7 @@ #ifndef QEMU_VMSTATE_H #define QEMU_VMSTATE_H =20 -#include "hw/vmstate-if.h" +#include "hw/core/vmstate-if.h" =20 typedef struct VMStateInfo VMStateInfo; typedef struct VMStateField VMStateField; diff --git a/hw/core/vmstate-if.c b/hw/core/vmstate-if.c index bf453620fed..c39631c7586 100644 --- a/hw/core/vmstate-if.c +++ b/hw/core/vmstate-if.c @@ -7,7 +7,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/vmstate-if.h" +#include "hw/core/vmstate-if.h" =20 static const TypeInfo vmstate_if_info =3D { .name =3D TYPE_VMSTATE_IF, --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827192; cv=none; d=zohomail.com; s=zohoarc; b=HXsbHZ7PCySaYI8Clv8kaOUnxyMRLw/LQT9fjg/WGn2BSzBj+nyULUhERQ4qgEcvTfLPLfIn0395+RLCjFj5ZL/prUI9nXwoYUnRewWyAQw5O1B0wkhK57jngaS25Z+vP+baBgbTT2LtlF+VU83VOxEWaqW3QdktMSqKl8x68/w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827192; 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=cuvAaMnX4xWJ8l23niahbd4yVsP0RR+bqdzHgBOfz4M=; b=VE6lG1CJupkJPKD0iS86OgatSvwCL+pqLbBUUT6nJioi1wCLY5bJk/Msh9wYr68CQekGU+1phy5luNnVD9GZKA64fHjFp9AKEXboliTziTI/1jxy8i99G0KFjfAMqgnVCGh3Vlw5C57WIsLDhsSuGk2u5zkHzFYC/5Aea9BLYnA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827192132736.828761992733; Sat, 27 Dec 2025 01:19:52 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQQ-0002xs-C2; Sat, 27 Dec 2025 04:17:26 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQN-0002hn-Sy for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:23 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQL-0002e2-HX for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:23 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-231-1tVeLkvHNYmElZbL1O-Myw-1; Sat, 27 Dec 2025 04:17:18 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-47a97b719ccso46044865e9.2 for ; Sat, 27 Dec 2025 01:17:18 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be274e407sm482008065e9.8.2025.12.27.01.17.13 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827040; 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=cuvAaMnX4xWJ8l23niahbd4yVsP0RR+bqdzHgBOfz4M=; b=R/UyAJVI77BzbXF5jlvswtrU8NQheTjaO24A2UR4m/HQxkOuvJZIImBdfW2BS2NpIDhvok HgxybSMQU9d2dyZlohzkezB3g0TL5UjHpmqPif1gK2DtYXeBsj5FrpZ+R3ELyNKGYrxv94 g8RNSMf1g6y6Z+Am31IrtC6jx3BbWCc= X-MC-Unique: 1tVeLkvHNYmElZbL1O-Myw-1 X-Mimecast-MFC-AGG-ID: 1tVeLkvHNYmElZbL1O-Myw_1766827037 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827036; x=1767431836; 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; bh=cuvAaMnX4xWJ8l23niahbd4yVsP0RR+bqdzHgBOfz4M=; b=tWoXZ+ac4rOdKAcqrohl/8UO1OdCeHNPG3YW5IzbKlOeBPFK2srht8VlodahOzN1BR S5N5VSlChuNkQEwnqY25k5/bF0lwXo644BJMS8dswYXifcSWCtX0mLSDb8M4b5Q5nuNq iI7sxhuolybpX8KNsGM3MGCvpT6xNBf7jabijqkDNAnOzXGzMBIZtC02sSbxQinT029D nAhQ95HwHIQUBbiCJE7od9bKHfSApKfJT0CrTdj6Pu1K10OgaV6EsgW9hdK2eGrTB7nL TOwtIlnLB6RL13SajPeDMgHwb/mBk3NE/fReu2OWT2vKXr24hUcCeaPsrE4klO52ayox w5Zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827036; x=1767431836; 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; bh=cuvAaMnX4xWJ8l23niahbd4yVsP0RR+bqdzHgBOfz4M=; b=DWndTbJj8hffVmALhe3vELzsCF0vzfu27ldfK0hgrzuF0SSLVgWuyDMOX+N+KDMKxO NSWVtLvHUFzj3Lg5vjxbv0eVHE1Q+5vSYf538ozlh/XhwGTX0ZFS10IkrjH+RoP/PKO7 s4Ti035Nr9P4rLYsg1Bos5XZSsg8F3gP7Su/zBWG2mql5XTGhql1Zubefxf3wboTuxwh /fNd8tuNXyLVRkmW1+FPtvu5zvd3mFQGIWlPbvcC5fuKS98y4ObQZwHOdG1R7AA9rcX6 eu94BcaSXhTsUAMvcQo+axrzEw/LOtIPNQpOwhGzMXocAfNm1ayNmgjeGU40BeT6bwPi o0uA== X-Gm-Message-State: AOJu0YzP40i+ccYw05bnh4ZZUk1t6QxoUCXtKR6T4G/dDykK10RRG8ir +XKE6I4AZGN8uxSogNPAaUkudsHjLZete+rjmhI03P3UxSQTtOVqoOSGkdx+oFA7+pp7LgygGrU Ayq0xGONiqE3C9BLl7Z9VvtdHt+e8du2x9wdpgVQKIIR3PU+I0U5Ura7uXrTvjVL1NWtVJC7j7W G1NYQjRuHZZJP4ubmC0OlanjUY3sipLupxdaWwS2zu X-Gm-Gg: AY/fxX6Tf7KrY2MIW1hsmcTeE75oLm7SeueabuXmZ0dMVo+2RZREzCBBPezj2+hZtqd OHsNm3BKF54y6rwA7NYWLKiHP8QMmYJcLm2QfvysVoUNYb2ZVzjU7ybHv7hrzLMuwga/2jJhKL4 QYT4uzu+brc6klSk8h+m3VZMaDJUWFlFsjKqLhgEK7Y1qFWy7q4HXwtSsN5hNro33Jup7GJMozP w++SkNU/ucUK456H2F9rjEAhwMxdecPWM8TyasKqUmZ9jQB8Th6708lAblYvjILJlMZ8Tjsz5eb Rx/iskFuf+RKN8ivs1gRM2BDoGIlfB+j0iQyZx9x/PAWJYa+3naw5lAiitbZqtAnkz+8XiVWCr4 n5uLo+HT38XB40zunoRkjMaTrSpT/Yot48BiENmotxPpwgRb3qY9b5zlPZqFHc83mspH1vfHW0D BXfcijfUQKI3pR9lk= X-Received: by 2002:a05:600c:5248:b0:47a:8154:33e3 with SMTP id 5b1f17b1804b1-47d1958958dmr271805265e9.28.1766827035703; Sat, 27 Dec 2025 01:17:15 -0800 (PST) X-Google-Smtp-Source: AGHT+IElzgTTta4osiYoqBK8wOYy7VFSieJc6YFYhrGXpJXRe1GXyBO091VZV788ur+pL296avg6zw== X-Received: by 2002:a05:600c:5248:b0:47a:8154:33e3 with SMTP id 5b1f17b1804b1-47d1958958dmr271804905e9.28.1766827034972; Sat, 27 Dec 2025 01:17:14 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 028/153] include: move hw/hw.h to hw/core/, rename Date: Sat, 27 Dec 2025 10:14:15 +0100 Message-ID: <20251227091622.20725-29-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827193526158500 Content-Type: text/plain; charset="utf-8" Call it include/hw/core/hw-error.h since that is the only thing it contains. Signed-off-by: Paolo Bonzini --- include/hw/{hw.h =3D> core/hw-error.h} | 0 hw/arm/integratorcp.c | 2 +- hw/arm/omap1.c | 2 +- hw/arm/xen-stubs.c | 2 +- hw/audio/lm4549.c | 2 +- hw/core/loader.c | 2 +- hw/display/bcm2835_fb.c | 2 +- hw/display/exynos4210_fimd.c | 2 +- hw/display/g364fb.c | 2 +- hw/dma/pl080.c | 2 +- hw/dma/xilinx_axidma.c | 2 +- hw/i386/xen/xen-hvm.c | 2 +- hw/intc/exynos4210_combiner.c | 2 +- hw/misc/omap_clk.c | 2 +- hw/net/e1000e.c | 2 +- hw/net/igb.c | 2 +- hw/net/igbvf.c | 2 +- hw/net/vmxnet3.c | 2 +- hw/net/xilinx_axienet.c | 2 +- hw/ppc/ppce500_spin.c | 2 +- hw/timer/a9gtimer.c | 2 +- hw/timer/arm_mptimer.c | 2 +- hw/vfio/device.c | 2 +- hw/vfio/helpers.c | 2 +- hw/vfio/igd.c | 2 +- hw/vfio/listener.c | 2 +- hw/vfio/migration.c | 2 +- hw/vfio/pci.c | 2 +- hw/vfio/region.c | 2 +- hw/vfio/spapr.c | 2 +- hw/xen/xen-hvm-common.c | 2 +- system/cpus.c | 2 +- target/ppc/kvm.c | 2 +- target/ppc/mmu-hash64.c | 2 +- target/s390x/mmu_helper.c | 2 +- scripts/analyze-inclusions | 10 +++++----- 36 files changed, 39 insertions(+), 39 deletions(-) rename include/hw/{hw.h =3D> core/hw-error.h} (100%) diff --git a/include/hw/hw.h b/include/hw/core/hw-error.h similarity index 100% rename from include/hw/hw.h rename to include/hw/core/hw-error.h diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c index 118808f2dc7..0bf519b6bb8 100644 --- a/hw/arm/integratorcp.c +++ b/hw/arm/integratorcp.c @@ -23,7 +23,7 @@ #include "qemu/log.h" #include "qemu/error-report.h" #include "hw/char/pl011.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "hw/core/irq.h" #include "hw/sd/sd.h" #include "qom/object.h" diff --git a/hw/arm/omap1.c b/hw/arm/omap1.c index f3d6be1e295..f5ff4b107ae 100644 --- a/hw/arm/omap1.c +++ b/hw/arm/omap1.c @@ -24,7 +24,7 @@ #include "qapi/error.h" #include "cpu.h" #include "system/address-spaces.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" #include "hw/arm/boot.h" diff --git a/hw/arm/xen-stubs.c b/hw/arm/xen-stubs.c index 6a830435533..00bc310252f 100644 --- a/hw/arm/xen-stubs.c +++ b/hw/arm/xen-stubs.c @@ -7,7 +7,7 @@ #include "qemu/osdep.h" #include "qapi/qapi-commands-migration.h" #include "system/xen.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "hw/xen/xen-hvm-common.h" #include "hw/xen/arch_hvm.h" =20 diff --git a/hw/audio/lm4549.c b/hw/audio/lm4549.c index bf711c49c04..f85226d1ac5 100644 --- a/hw/audio/lm4549.c +++ b/hw/audio/lm4549.c @@ -14,7 +14,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "qemu/log.h" #include "qemu/audio.h" #include "lm4549.h" diff --git a/hw/core/loader.c b/hw/core/loader.c index 40cb187a113..8252616fdd3 100644 --- a/hw/core/loader.c +++ b/hw/core/loader.c @@ -50,7 +50,7 @@ #include "qapi/type-helpers.h" #include "qemu/units.h" #include "trace.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "disas/disas.h" #include "migration/cpr.h" #include "migration/vmstate.h" diff --git a/hw/display/bcm2835_fb.c b/hw/display/bcm2835_fb.c index 8eec0dc600b..75d7c0f8499 100644 --- a/hw/display/bcm2835_fb.c +++ b/hw/display/bcm2835_fb.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "hw/display/bcm2835_fb.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "hw/core/irq.h" #include "ui/console.h" #include "framebuffer.h" diff --git a/hw/display/exynos4210_fimd.c b/hw/display/exynos4210_fimd.c index 7f841b88047..a97054132fb 100644 --- a/hw/display/exynos4210_fimd.c +++ b/hw/display/exynos4210_fimd.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/qdev-properties.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "hw/core/irq.h" #include "hw/core/sysbus.h" #include "migration/vmstate.h" diff --git a/hw/display/g364fb.c b/hw/display/g364fb.c index 2eefafcaf67..50952e9934b 100644 --- a/hw/display/g364fb.c +++ b/hw/display/g364fb.c @@ -19,7 +19,7 @@ =20 #include "qemu/osdep.h" #include "qemu/units.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" #include "qapi/error.h" diff --git a/hw/dma/pl080.c b/hw/dma/pl080.c index 514206b7c31..3f8acb03deb 100644 --- a/hw/dma/pl080.c +++ b/hw/dma/pl080.c @@ -13,7 +13,7 @@ #include "qemu/log.h" #include "qemu/module.h" #include "hw/dma/pl080.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" #include "qapi/error.h" diff --git a/hw/dma/xilinx_axidma.c b/hw/dma/xilinx_axidma.c index 8488f125b5f..22dec8b3eb2 100644 --- a/hw/dma/xilinx_axidma.c +++ b/hw/dma/xilinx_axidma.c @@ -26,7 +26,7 @@ #include "hw/core/sysbus.h" #include "qapi/error.h" #include "qemu/timer.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "hw/core/irq.h" #include "hw/core/ptimer.h" #include "hw/core/qdev-properties.h" diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c index 591da26d453..a6e1683885a 100644 --- a/hw/i386/xen/xen-hvm.c +++ b/hw/i386/xen/xen-hvm.c @@ -15,7 +15,7 @@ #include "qapi/qapi-commands-migration.h" #include "trace.h" =20 -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "hw/i386/pc.h" #include "hw/core/irq.h" #include "hw/i386/apic-msidef.h" diff --git a/hw/intc/exynos4210_combiner.c b/hw/intc/exynos4210_combiner.c index ec935a084db..e8cac331e4c 100644 --- a/hw/intc/exynos4210_combiner.c +++ b/hw/intc/exynos4210_combiner.c @@ -33,7 +33,7 @@ #include "qemu/module.h" #include "hw/intc/exynos4210_combiner.h" #include "hw/arm/exynos4210.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" #include "qom/object.h" diff --git a/hw/misc/omap_clk.c b/hw/misc/omap_clk.c index 37afef09903..e927ef22a09 100644 --- a/hw/misc/omap_clk.c +++ b/hw/misc/omap_clk.c @@ -20,7 +20,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "hw/core/irq.h" #include "hw/arm/omap.h" =20 diff --git a/hw/net/e1000e.c b/hw/net/e1000e.c index 3d4683370c6..9faf0c74c3d 100644 --- a/hw/net/e1000e.c +++ b/hw/net/e1000e.c @@ -41,7 +41,7 @@ #include "qemu/module.h" #include "qemu/range.h" #include "system/system.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "hw/net/mii.h" #include "hw/pci/msi.h" #include "hw/pci/msix.h" diff --git a/hw/net/igb.c b/hw/net/igb.c index d39eba9f64d..c076807e711 100644 --- a/hw/net/igb.c +++ b/hw/net/igb.c @@ -45,7 +45,7 @@ #include "qemu/module.h" #include "qemu/range.h" #include "system/system.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "hw/net/mii.h" #include "hw/pci/pci.h" #include "hw/pci/pcie.h" diff --git a/hw/net/igbvf.c b/hw/net/igbvf.c index 9b0db8f8411..48d56e43aca 100644 --- a/hw/net/igbvf.c +++ b/hw/net/igbvf.c @@ -38,7 +38,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "hw/net/mii.h" #include "hw/pci/pci_device.h" #include "hw/pci/pcie.h" diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c index bae3a44cb0c..97156dd33b9 100644 --- a/hw/net/vmxnet3.c +++ b/hw/net/vmxnet3.c @@ -16,7 +16,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "hw/pci/pci.h" #include "hw/core/qdev-properties.h" #include "net/tap.h" diff --git a/hw/net/xilinx_axienet.c b/hw/net/xilinx_axienet.c index 29c09b88ebf..d85f8bb23fe 100644 --- a/hw/net/xilinx_axienet.c +++ b/hw/net/xilinx_axienet.c @@ -23,7 +23,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "hw/core/sysbus.h" #include "qapi/error.h" #include "qemu/log.h" diff --git a/hw/ppc/ppce500_spin.c b/hw/ppc/ppce500_spin.c index a066ada77ed..85bdcac43a1 100644 --- a/hw/ppc/ppce500_spin.c +++ b/hw/ppc/ppce500_spin.c @@ -30,7 +30,7 @@ #include "qemu/osdep.h" #include "qemu/module.h" #include "qemu/units.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "hw/core/sysbus.h" #include "system/hw_accel.h" #include "hw/ppc/ppc.h" diff --git a/hw/timer/a9gtimer.c b/hw/timer/a9gtimer.c index a2363a89a5f..3a086915c81 100644 --- a/hw/timer/a9gtimer.c +++ b/hw/timer/a9gtimer.c @@ -21,7 +21,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" #include "hw/timer/a9gtimer.h" diff --git a/hw/timer/arm_mptimer.c b/hw/timer/arm_mptimer.c index 869db913d40..88158144b23 100644 --- a/hw/timer/arm_mptimer.c +++ b/hw/timer/arm_mptimer.c @@ -20,7 +20,7 @@ */ =20 #include "qemu/osdep.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "hw/core/irq.h" #include "hw/core/ptimer.h" #include "hw/core/qdev-properties.h" diff --git a/hw/vfio/device.c b/hw/vfio/device.c index 76869828fc8..19d1236ed75 100644 --- a/hw/vfio/device.c +++ b/hw/vfio/device.c @@ -23,7 +23,7 @@ =20 #include "hw/vfio/vfio-device.h" #include "hw/vfio/pci.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "trace.h" #include "qapi/error.h" #include "qemu/error-report.h" diff --git a/hw/vfio/helpers.c b/hw/vfio/helpers.c index 23d13e5db5f..2cbc7b4964f 100644 --- a/hw/vfio/helpers.c +++ b/hw/vfio/helpers.c @@ -24,7 +24,7 @@ =20 #include "system/kvm.h" #include "hw/vfio/vfio-device.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "qapi/error.h" #include "vfio-helpers.h" =20 diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index cff413c16f5..6aacf27284f 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -16,7 +16,7 @@ #include "qapi/error.h" #include "qapi/qmp/qerror.h" #include "hw/core/boards.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "hw/nvram/fw_cfg.h" #include "pci.h" #include "pci-quirks.h" diff --git a/hw/vfio/listener.c b/hw/vfio/listener.c index 2d7d3a46457..7af01075359 100644 --- a/hw/vfio/listener.c +++ b/hw/vfio/listener.c @@ -30,7 +30,7 @@ #include "hw/vfio/pci.h" #include "system/address-spaces.h" #include "system/memory.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "qemu/error-report.h" #include "qemu/main-loop.h" #include "qemu/range.h" diff --git a/hw/vfio/migration.c b/hw/vfio/migration.c index 4c06e3db936..fde343f06e3 100644 --- a/hw/vfio/migration.c +++ b/hw/vfio/migration.c @@ -30,7 +30,7 @@ #include "exec/ramlist.h" #include "pci.h" #include "trace.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "vfio-migration-internal.h" =20 /* diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index a0a66b105aa..c7344727214 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -23,7 +23,7 @@ #include #include =20 -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "hw/pci/msi.h" #include "hw/pci/msix.h" #include "hw/pci/pci_bridge.h" diff --git a/hw/vfio/region.c b/hw/vfio/region.c index b165ab0b937..ca75ab1be4d 100644 --- a/hw/vfio/region.c +++ b/hw/vfio/region.c @@ -23,7 +23,7 @@ =20 #include "hw/vfio/vfio-region.h" #include "hw/vfio/vfio-device.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "trace.h" #include "qapi/error.h" #include "qemu/error-report.h" diff --git a/hw/vfio/spapr.c b/hw/vfio/spapr.c index 0f23681a3f9..a9f093c3570 100644 --- a/hw/vfio/spapr.c +++ b/hw/vfio/spapr.c @@ -16,7 +16,7 @@ #include "system/address-spaces.h" =20 #include "hw/vfio/vfio-container-legacy.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "qemu/error-report.h" #include "qapi/error.h" #include "trace.h" diff --git a/hw/xen/xen-hvm-common.c b/hw/xen/xen-hvm-common.c index 5d11b50db9c..59c73dfaeb5 100644 --- a/hw/xen/xen-hvm-common.c +++ b/hw/xen/xen-hvm-common.c @@ -7,7 +7,7 @@ #include "exec/target_page.h" #include "trace.h" =20 -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "hw/pci/pci_host.h" #include "hw/xen/xen-hvm-common.h" #include "hw/xen/xen-bus.h" diff --git a/system/cpus.c b/system/cpus.c index a0e1debfea8..49deeb9468a 100644 --- a/system/cpus.c +++ b/system/cpus.c @@ -45,7 +45,7 @@ #include "system/cpu-timers.h" #include "system/whpx.h" #include "hw/core/boards.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "trace.h" =20 #ifdef CONFIG_LINUX diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c index 43124bf1c78..2c96eca584e 100644 --- a/target/ppc/kvm.c +++ b/target/ppc/kvm.c @@ -34,7 +34,7 @@ =20 #include "hw/ppc/spapr.h" #include "hw/ppc/spapr_cpu_core.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "hw/ppc/ppc.h" #include "migration/qemu-file-types.h" #include "system/watchdog.h" diff --git a/target/ppc/mmu-hash64.c b/target/ppc/mmu-hash64.c index dd337558aa6..d026abadd11 100644 --- a/target/ppc/mmu-hash64.c +++ b/target/ppc/mmu-hash64.c @@ -28,7 +28,7 @@ #include "kvm_ppc.h" #include "mmu-hash64.h" #include "exec/log.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "internal.h" #include "mmu-book3s-v3.h" #include "mmu-books.h" diff --git a/target/s390x/mmu_helper.c b/target/s390x/mmu_helper.c index 7a7b3810590..7063f1a905f 100644 --- a/target/s390x/mmu_helper.c +++ b/target/s390x/mmu_helper.c @@ -26,7 +26,7 @@ #include "system/memory.h" #include "exec/page-protection.h" #include "exec/target_page.h" -#include "hw/hw.h" +#include "hw/core/hw-error.h" #include "hw/s390x/storage-keys.h" #include "hw/core/boards.h" =20 diff --git a/scripts/analyze-inclusions b/scripts/analyze-inclusions index d2c566667df..50a7d95d9e7 100644 --- a/scripts/analyze-inclusions +++ b/scripts/analyze-inclusions @@ -46,7 +46,7 @@ grep_include() { } =20 echo Found $(find . -name "*.d" | wc -l) object files -echo $(grep_include -F 'hw/hw.h') files include hw/hw.h +echo $(grep_include -F 'hw/core/hw-error.h') files include hw/core/hw-erro= r.h echo $(grep_include 'target/[a-z0-9]*/cpu\.h') files include cpu.h echo $(grep_include -F 'qapi-types.h') files include qapi-types.h echo $(grep_include -F 'trace/generated-tracers.h') files include generate= d-tracers.h @@ -85,8 +85,8 @@ analyze() { echo osdep.h: analyze ../include/qemu/osdep.h =20 -echo hw/hw.h: -analyze -include ../include/qemu/osdep.h ../include/hw/hw.h +echo hw/core/hw-error.h: +analyze -include ../include/qemu/osdep.h ../include/hw/core/hw-error.h =20 echo trace/generated-tracers.h: analyze -include ../include/qemu/osdep.h trace/generated-tracers.h @@ -94,5 +94,5 @@ analyze -include ../include/qemu/osdep.h trace/generated-= tracers.h echo target/i386/cpu.h: analyze -DCOMPILING_PER_TARGET -I../target/i386 -Ii386-softmmu -include ..= /include/qemu/osdep.h ../target/i386/cpu.h =20 -echo hw/hw.h + COMPILING_PER_TARGET: -analyze -DCOMPILING_PER_TARGET -I../target/i386 -Ii386-softmmu -include ..= /include/qemu/osdep.h ../include/hw/hw.h +echo hw/core/hw-error.h + COMPILING_PER_TARGET: +analyze -DCOMPILING_PER_TARGET -I../target/i386 -Ii386-softmmu -include ..= /include/qemu/osdep.h ../include/hw/core/hw-error.h --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827548; cv=none; d=zohomail.com; s=zohoarc; b=QmgsF5dDFwtjiu07N+QdTWmiwVqUmnww+N+Z/1s5HpOzuNAbN4kxJ6SeGE9Qhw07mNZts+Wmt9DQw3hHTGBkD55Bynk1HGRSEAIhV4rmT+9izIjSLC2ExbJKg8Gbv6qqo5u2/ssTlWlvIgZsNWtjMbFm8nhsVEpPOGjnYM5OcHA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827548; h=Content-Type: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=Pufk5GgGhlY6DrCtW/sKLNa/dsa3kQGJr+qH8ncay6g=; b=Cw1qhoXlnlkhU6PvPAxxMiqZSMjz1JXBSCJseK13lhbxewf3Jx72wUUTmTbbOKQ1+jp/5Qk61gg3cKNxyL9mqrmWBBHII5f+zN17v3s9G5zm92o6BsXp7JWx9zmrRFSXNB5oxNXe8ZiVUTJ6B9xc0mMeWPb5sKuoV2dKEHhXEv8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827547894299.12123713176766; Sat, 27 Dec 2025 01:25:47 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQZ-0004Me-FN; Sat, 27 Dec 2025 04:17:35 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQV-0003c9-5k for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:31 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQQ-0002jw-C9 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:30 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-533-8jtsw6zjOOCXnBhyUrt7mA-1; Sat, 27 Dec 2025 04:17:23 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-4792bd2c290so73394105e9.1 for ; Sat, 27 Dec 2025 01:17:22 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d193d5372sm452275915e9.14.2025.12.27.01.17.15 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827045; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Pufk5GgGhlY6DrCtW/sKLNa/dsa3kQGJr+qH8ncay6g=; b=QQamqG4wY5pPVYyjHuBflM1IX03z7i2X33KeD/Po0ai3aUkTUTsGiwri8evJyB41FTNC+K Fvlr8vue06jk5oCP8WFNel2FqNPH6W4g3uFLPwePaS+AfsQbBzR68I1aD1OUvViDpKnuCW ug9aDb96RZySmxmFUsfT+6HLdxoBY1E= X-MC-Unique: 8jtsw6zjOOCXnBhyUrt7mA-1 X-Mimecast-MFC-AGG-ID: 8jtsw6zjOOCXnBhyUrt7mA_1766827042 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827040; x=1767431840; 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; bh=Pufk5GgGhlY6DrCtW/sKLNa/dsa3kQGJr+qH8ncay6g=; b=rSB7yh/IQ8LMXRq7z4ZmoVHedNs5sHj2G+JfARsD+m6AfVvx1iHH7uwNCmRRDJh6w1 IS58odDfT9+fc6vWGp25oNrt2oWhxancai0v5Ipz4WWNS3NLvkmUoWd3fTUTT2o9Rg9q YnZAY8a4z4puGVLG6XJjVieEX0yvo51nDg2VWiW+z8FvefiTWCCniprpzlTRBpE8Ow8B FDBJqvZRrG2uAdEcpZkHNe5voLx/4/xRAM7iYo1VDeAc2CwK2Dx5kNcw8F8ZFRG8fhYW yOSZkuAm/Q6Z4BgYJB3Gx4A5H5L1FT5WKnsrruTOIdjV0nXBDfKQVUF3YiXfdOTcP/ha W/ow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827040; x=1767431840; 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; bh=Pufk5GgGhlY6DrCtW/sKLNa/dsa3kQGJr+qH8ncay6g=; b=U0K3HOPXqyxYRYJxPEIk9/tItPSgqEO1DBjyPeTWoHfA5dMW0xeg+vgfihY+DRHHSg ZK56H2DumLOlL2XxSruHjb2thGCGKd8Hrgye+0fT96h2LsXWsQZDgYqwVRMy12On/dGm wdQ+J1CSZ5esbryYn+x7hIozaocDmrJhqXPe49MPsomncxbNyR3J0C8H5N+LzUaug9IY 1PBcfs2GW0/yn4rzXiKg3BYsEbwhkfYQVjPuyX4ZPCx1llF8dT0UwsxrMngBBf5fBWN9 q4p07xQ+khGu4aqJGo02X6f5ejEifIZG4e38gJVKeTJi0Bv0YtKAheIIuVJi5GJJjaiB q1DQ== X-Gm-Message-State: AOJu0YxDen2982R8lVp7+3VSS/3VkkItN5lfY98k70KHawRjKgi65OZ/ HpLEEye7ka0GOz4p6GkblHd6Vt/4t/zI5Hq8v1sfzxndW73++b3kq8/YCaSmu7nXfgyLZhXNqeV mXSdNO67TnAfWk/Bona90xO3AWhbrK63LaNiOU6nRJTYfKpiQvS/GGqdQQVe6sHHcugB1uprGFR W7eP3sZ2kPnWhjjI8JTEfu0xzhc0TfIL2FxCScFoYu X-Gm-Gg: AY/fxX4cMMzmQLlKFu82C/7nfviA7sYnDxpvTGJbCyTpbI7umIwBeEuKr6bd+BvbH7W Fgr6VbKlCxDtUKBr24BOTdwMH2Enyu4Cuii36Ai6SewnkETPQiVrBSYOMjFEGrThwBOYuvirpWx zcFvKO52j4CJDtge82sYyk8qyv6ruFYLmIrAv5Cj9YepvMRTjbJkEGle7TZqfJe1+vaig193MTh FGefaI8MnH2+8JHvL/ftU7WEVUsBYODIi59XyqSKnjhTKM+MuiF5k1lwC7kYtB0+/m+++iEjl4N UZ+4zjoGHDKD+Y0FCYIrBOK2wh05pVjRfQcyUc9QiKW4i4Ky9pK8CmKBiP18OGYu5TrG3AnhDdz uXEBwoKo+4RuIWBlfQ3FGIGHa3EcgprGXuNbtFuL0QN46jo86wbrZDa7yRm19bVGM9Z5I5MxLms hovB8Frj4j6h0SinM= X-Received: by 2002:a05:600c:3b92:b0:477:6d96:b3ca with SMTP id 5b1f17b1804b1-47d1955b7e9mr297324525e9.5.1766827039789; Sat, 27 Dec 2025 01:17:19 -0800 (PST) X-Google-Smtp-Source: AGHT+IEqGautTBbv2SdsHdyUm5/BNrgsEf4AKFC5/e3COQOsP/J/OrBYOygEiwFVwSkjsKyDjMwziw== X-Received: by 2002:a05:600c:3b92:b0:477:6d96:b3ca with SMTP id 5b1f17b1804b1-47d1955b7e9mr297323655e9.5.1766827038307; Sat, 27 Dec 2025 01:17:18 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 029/153] include: reorganize memory API headers Date: Sat, 27 Dec 2025 10:14:16 +0100 Message-ID: <20251227091622.20725-30-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827548993158500 Move RAMBlock functions out of ram_addr.h and cpu-common.h; move memory API headers out of include/exec and into include/system. Signed-off-by: Paolo Bonzini --- MAINTAINERS | 2 +- include/exec/cpu-common.h | 74 ----------- include/exec/cputlb.h | 1 + include/exec/translation-block.h | 2 + include/hw/core/qdev-properties-system.h | 1 + include/hw/i2c/smbus_eeprom.h | 2 +- include/hw/xen/xen-hvm-common.h | 1 + include/system/balloon.h | 2 +- include/system/block-ram-registrar.h | 2 +- include/system/iommufd.h | 2 +- include/system/memory.h | 16 ++- include/system/memory_mapping.h | 4 +- include/system/physmem.h | 2 +- include/system/ram_addr.h | 136 +++---------------- include/system/ramblock.h | 160 ++++++++++++++++++++++- include/{exec =3D> system}/ramlist.h | 10 +- include/system/xen-mapcache.h | 1 - include/system/xen.h | 3 +- migration/migration.h | 3 +- migration/ram.h | 1 + accel/mshv/mshv-all.c | 1 + accel/tcg/cputlb.c | 2 +- accel/tcg/tcg-accel-ops-mttcg.c | 1 + backends/hostmem.c | 1 + block/blkio.c | 2 +- dump/dump.c | 1 + hw/acpi/ghes.c | 1 + hw/acpi/nvdimm.c | 1 + hw/acpi/vmgenid.c | 1 + hw/arm/omap1.c | 1 + hw/audio/marvell_88w8618.c | 1 + hw/char/riscv_htif.c | 1 + hw/core/cpu-common.c | 1 + hw/core/machine-qmp-cmds.c | 1 + hw/core/numa.c | 3 +- hw/display/exynos4210_fimd.c | 1 + hw/display/omap_lcdc.c | 1 + hw/display/ramfb.c | 1 + hw/display/vga.c | 1 + hw/dma/i8257.c | 1 + hw/dma/omap_dma.c | 1 + hw/dma/rc4030.c | 1 + hw/dma/sifive_pdma.c | 1 + hw/hyperv/hyperv.c | 1 + hw/hyperv/syndbg.c | 1 + hw/hyperv/vmbus.c | 1 + hw/i386/kvm/clock.c | 1 + hw/i386/vapic.c | 1 + hw/intc/apic.c | 1 + hw/intc/xive2.c | 1 + hw/m68k/next-cube.c | 1 + hw/microblaze/boot.c | 1 + hw/misc/pc-testdev.c | 1 + hw/net/fsl_etsec/rings.c | 1 + hw/net/mcf_fec.c | 1 + hw/net/opencores_eth.c | 1 + hw/net/xgmac.c | 1 + hw/nvram/spapr_nvram.c | 1 + hw/ppc/amigaone.c | 1 + hw/ppc/e500.c | 1 + hw/ppc/pegasos.c | 1 + hw/ppc/pnv.c | 1 + hw/ppc/ppc440_uc.c | 1 + hw/ppc/spapr.c | 1 + hw/ppc/spapr_drc.c | 1 + hw/ppc/spapr_events.c | 1 + hw/ppc/spapr_hcall.c | 1 + hw/ppc/spapr_rtas.c | 1 + hw/ppc/spapr_tpm_proxy.c | 1 + hw/ppc/virtex_ml507.c | 1 + hw/remote/proxy-memory-listener.c | 1 + hw/s390x/css.c | 1 + hw/s390x/ipl.c | 1 + hw/s390x/s390-pci-bus.c | 1 + hw/s390x/s390-stattrib.c | 1 + hw/s390x/virtio-ccw.c | 1 + hw/scsi/vmw_pvscsi.c | 1 + hw/sparc/leon3.c | 1 + hw/vfio-user/container.c | 1 + hw/vfio/container.c | 2 +- hw/vfio/helpers.c | 1 + hw/vfio/migration.c | 2 +- hw/virtio/vhost.c | 1 + hw/xen/xen-mapcache.c | 1 + hw/xen/xen_pt_graphics.c | 1 + hw/xtensa/xtfpga.c | 1 + migration/ram.c | 2 +- stubs/physmem.c | 2 +- stubs/ram-block.c | 4 +- system/ioport.c | 1 + system/memory.c | 2 +- system/physmem.c | 2 +- target/arm/kvm.c | 1 + target/i386/kvm/kvm.c | 1 + target/i386/sev.c | 1 + target/ppc/kvm.c | 2 +- target/s390x/kvm/kvm.c | 2 +- tests/qtest/fuzz/generic_fuzz.c | 2 +- util/vfio-helpers.c | 2 +- rust/hw/char/pl011/src/bindings.rs | 4 +- rust/hw/core/src/bindings.rs | 2 +- rust/system/src/bindings.rs | 5 +- 102 files changed, 298 insertions(+), 234 deletions(-) rename include/{exec =3D> system}/ramlist.h (94%) diff --git a/MAINTAINERS b/MAINTAINERS index 5d33892c347..a03898ccb63 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3254,9 +3254,9 @@ R: Philippe Mathieu-Daud=C3=A9 S: Supported F: include/system/ioport.h F: include/exec/memop.h +F: include/system/ram_addr.h F: include/system/memory.h F: include/system/physmem.h -F: include/system/ram_addr.h F: include/system/ramblock.h F: include/system/memory_mapping.h F: system/dma-helpers.c diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h index e0be4ee2b8f..b2e02c60d4a 100644 --- a/include/exec/cpu-common.h +++ b/include/exec/cpu-common.h @@ -38,69 +38,6 @@ int cpu_get_free_index(void); void tcg_iommu_init_notifier_list(CPUState *cpu); void tcg_iommu_free_notifier_list(CPUState *cpu); =20 -enum device_endian { - DEVICE_NATIVE_ENDIAN, - DEVICE_BIG_ENDIAN, - DEVICE_LITTLE_ENDIAN, -}; - -/* address in the RAM (different from a physical address) */ -#if defined(CONFIG_XEN_BACKEND) -typedef uint64_t ram_addr_t; -# define RAM_ADDR_MAX UINT64_MAX -# define RAM_ADDR_FMT "%" PRIx64 -#else -typedef uintptr_t ram_addr_t; -# define RAM_ADDR_MAX UINTPTR_MAX -# define RAM_ADDR_FMT "%" PRIxPTR -#endif - -/* memory API */ - -void qemu_ram_remap(ram_addr_t addr); -/* This should not be used by devices. */ -ram_addr_t qemu_ram_addr_from_host(void *ptr); -ram_addr_t qemu_ram_addr_from_host_nofail(void *ptr); -RAMBlock *qemu_ram_block_by_name(const char *name); - -/* - * Translates a host ptr back to a RAMBlock and an offset in that RAMBlock. - * - * @ptr: The host pointer to translate. - * @round_offset: Whether to round the result offset down to a target page - * @offset: Will be set to the offset within the returned RAMBlock. - * - * Returns: RAMBlock (or NULL if not found) - * - * By the time this function returns, the returned pointer is not protected - * by RCU anymore. If the caller is not within an RCU critical section and - * does not hold the BQL, it must have other means of protecting the - * pointer, such as a reference to the memory region that owns the RAMBloc= k. - */ -RAMBlock *qemu_ram_block_from_host(void *ptr, bool round_offset, - ram_addr_t *offset); -ram_addr_t qemu_ram_block_host_offset(RAMBlock *rb, void *host); -void qemu_ram_set_idstr(RAMBlock *block, const char *name, DeviceState *de= v); -void qemu_ram_unset_idstr(RAMBlock *block); -const char *qemu_ram_get_idstr(RAMBlock *rb); -void *qemu_ram_get_host_addr(RAMBlock *rb); -ram_addr_t qemu_ram_get_offset(RAMBlock *rb); -ram_addr_t qemu_ram_get_fd_offset(RAMBlock *rb); -ram_addr_t qemu_ram_get_used_length(RAMBlock *rb); -ram_addr_t qemu_ram_get_max_length(RAMBlock *rb); -bool qemu_ram_is_shared(RAMBlock *rb); -bool qemu_ram_is_noreserve(RAMBlock *rb); -bool qemu_ram_is_uf_zeroable(RAMBlock *rb); -void qemu_ram_set_uf_zeroable(RAMBlock *rb); -bool qemu_ram_is_migratable(RAMBlock *rb); -void qemu_ram_set_migratable(RAMBlock *rb); -void qemu_ram_unset_migratable(RAMBlock *rb); -bool qemu_ram_is_named_file(RAMBlock *rb); -int qemu_ram_get_fd(RAMBlock *rb); - -size_t qemu_ram_pagesize(RAMBlock *block); -size_t qemu_ram_pagesize_largest(void); - /** * cpu_address_space_init: * @cpu: CPU to add this address space to @@ -139,17 +76,6 @@ void *cpu_physical_memory_map(hwaddr addr, void cpu_physical_memory_unmap(void *buffer, hwaddr len, bool is_write, hwaddr access_len); =20 -/* Coalesced MMIO regions are areas where write operations can be reordere= d. - * This usually implies that write operations are side-effect free. This = allows - * batching which can make a major impact on performance when using - * virtualization. - */ -void qemu_flush_coalesced_mmio_buffer(void); - -typedef int (RAMBlockIterFunc)(RAMBlock *rb, void *opaque); - -int qemu_ram_foreach_block(RAMBlockIterFunc func, void *opaque); - /* vl.c */ void list_cpus(void); =20 diff --git a/include/exec/cputlb.h b/include/exec/cputlb.h index 9bec0e78909..0d1d46429c9 100644 --- a/include/exec/cputlb.h +++ b/include/exec/cputlb.h @@ -24,6 +24,7 @@ #include "exec/hwaddr.h" #include "exec/memattrs.h" #include "exec/vaddr.h" +#include "system/ram_addr.h" =20 #if defined(CONFIG_TCG) && !defined(CONFIG_USER_ONLY) void tlb_protect_code(ram_addr_t ram_addr); diff --git a/include/exec/translation-block.h b/include/exec/translation-bl= ock.h index cdce399ebab..4f83d5bec98 100644 --- a/include/exec/translation-block.h +++ b/include/exec/translation-block.h @@ -14,6 +14,8 @@ #ifdef CONFIG_USER_ONLY #include "qemu/interval-tree.h" #include "exec/target_page.h" +#else +#include "system/ram_addr.h" #endif =20 /* diff --git a/include/hw/core/qdev-properties-system.h b/include/hw/core/qde= v-properties-system.h index ec39ef3bd6e..ec21732ce52 100644 --- a/include/hw/core/qdev-properties-system.h +++ b/include/hw/core/qdev-properties-system.h @@ -2,6 +2,7 @@ #define HW_QDEV_PROPERTIES_SYSTEM_H =20 #include "hw/core/qdev-properties.h" +#include "qapi/qapi-types-common.h" =20 bool qdev_prop_sanitize_s390x_loadparm(uint8_t *loadparm, const char *str, Error **errp); diff --git a/include/hw/i2c/smbus_eeprom.h b/include/hw/i2c/smbus_eeprom.h index 68b0063ab6f..61a54cda761 100644 --- a/include/hw/i2c/smbus_eeprom.h +++ b/include/hw/i2c/smbus_eeprom.h @@ -23,7 +23,7 @@ #ifndef HW_SMBUS_EEPROM_H #define HW_SMBUS_EEPROM_H =20 -#include "exec/cpu-common.h" +#include "system/ram_addr.h" #include "hw/i2c/i2c.h" =20 void smbus_eeprom_init_one(I2CBus *bus, uint8_t address, uint8_t *eeprom_b= uf); diff --git a/include/hw/xen/xen-hvm-common.h b/include/hw/xen/xen-hvm-commo= n.h index 19df5600a39..e1beca062ff 100644 --- a/include/hw/xen/xen-hvm-common.h +++ b/include/hw/xen/xen-hvm-common.h @@ -5,6 +5,7 @@ #include "exec/hwaddr.h" #include "hw/xen/xen_native.h" #include "hw/xen/xen_backend_ops.h" +#include "system/runstate.h" #include =20 extern MemoryRegion xen_memory; diff --git a/include/system/balloon.h b/include/system/balloon.h index 867687b73ac..066c7e1ddf4 100644 --- a/include/system/balloon.h +++ b/include/system/balloon.h @@ -14,7 +14,7 @@ #ifndef QEMU_BALLOON_H #define QEMU_BALLOON_H =20 -#include "exec/cpu-common.h" +#include "system/ram_addr.h" #include "qapi/qapi-types-machine.h" =20 typedef void (QEMUBalloonEvent)(void *opaque, ram_addr_t target); diff --git a/include/system/block-ram-registrar.h b/include/system/block-ra= m-registrar.h index d8b2f7942ba..61b0dff3400 100644 --- a/include/system/block-ram-registrar.h +++ b/include/system/block-ram-registrar.h @@ -7,7 +7,7 @@ #ifndef BLOCK_RAM_REGISTRAR_H #define BLOCK_RAM_REGISTRAR_H =20 -#include "exec/ramlist.h" +#include "system/ramlist.h" =20 /** * struct BlockRAMRegistrar: diff --git a/include/system/iommufd.h b/include/system/iommufd.h index a659f36a20f..9f5eb872454 100644 --- a/include/system/iommufd.h +++ b/include/system/iommufd.h @@ -16,7 +16,7 @@ =20 #include "qom/object.h" #include "exec/hwaddr.h" -#include "exec/cpu-common.h" +#include "system/ram_addr.h" #include "system/host_iommu_device.h" =20 #define TYPE_IOMMUFD_BACKEND "iommufd" diff --git a/include/system/memory.h b/include/system/memory.h index 1cacc117cc6..b3597fb2d04 100644 --- a/include/system/memory.h +++ b/include/system/memory.h @@ -14,11 +14,10 @@ #ifndef SYSTEM_MEMORY_H #define SYSTEM_MEMORY_H =20 -#include "exec/cpu-common.h" #include "exec/hwaddr.h" +#include "system/ram_addr.h" #include "exec/memattrs.h" #include "exec/memop.h" -#include "exec/ramlist.h" #include "qemu/bswap.h" #include "qemu/queue.h" #include "qemu/int128.h" @@ -27,6 +26,12 @@ #include "qom/object.h" #include "qemu/rcu.h" =20 +enum device_endian { + DEVICE_NATIVE_ENDIAN, + DEVICE_BIG_ENDIAN, + DEVICE_LITTLE_ENDIAN, +}; + #define RAM_ADDR_INVALID (~(ram_addr_t)0) =20 #define MAX_PHYS_ADDR_SPACE_BITS 62 @@ -3266,6 +3271,13 @@ address_space_write_cached(MemoryRegionCache *cache,= hwaddr addr, MemTxResult address_space_set(AddressSpace *as, hwaddr addr, uint8_t c, hwaddr len, MemTxAttrs attrs); =20 +/* Coalesced MMIO regions are areas where write operations can be reordere= d. + * This usually implies that write operations are side-effect free. This = allows + * batching which can make a major impact on performance when using + * virtualization. + */ +void qemu_flush_coalesced_mmio_buffer(void); + /* * Inhibit technologies that require discarding of pages in RAM blocks, e.= g., * to manage the actual amount of memory consumed by the VM (then, the mem= ory diff --git a/include/system/memory_mapping.h b/include/system/memory_mappin= g.h index 021e0a62309..4c770bf0b83 100644 --- a/include/system/memory_mapping.h +++ b/include/system/memory_mapping.h @@ -15,7 +15,9 @@ #define MEMORY_MAPPING_H =20 #include "qemu/queue.h" -#include "exec/cpu-common.h" +#include "exec/hwaddr.h" +#include "exec/vaddr.h" +#include "system/ram_addr.h" =20 typedef struct GuestPhysBlock { /* visible to guest, reflects PCI hole, etc */ diff --git a/include/system/physmem.h b/include/system/physmem.h index 879f6eae38b..ed337130228 100644 --- a/include/system/physmem.h +++ b/include/system/physmem.h @@ -9,7 +9,7 @@ #define QEMU_SYSTEM_PHYSMEM_H =20 #include "exec/hwaddr.h" -#include "exec/ramlist.h" +#include "system/ramlist.h" =20 #define DIRTY_CLIENTS_ALL ((1 << DIRTY_MEMORY_NUM) - 1) #define DIRTY_CLIENTS_NOCODE (DIRTY_CLIENTS_ALL & ~(1 << DIRTY_MEMORY_COD= E)) diff --git a/include/system/ram_addr.h b/include/system/ram_addr.h index 683485980ce..129f6b8757d 100644 --- a/include/system/ram_addr.h +++ b/include/system/ram_addr.h @@ -1,5 +1,5 @@ /* - * Declarations for cpu physical memory functions + * Declarations of basic RAMBlock-related types and macros * * Copyright 2011 Red Hat, Inc. and/or its affiliates * @@ -11,125 +11,23 @@ * */ =20 -/* - * This header is for use by exec.c and memory.c ONLY. Do not include it. - * The functions declared here will be removed soon. - */ +#ifndef RAM_ADDR_H +#define RAM_ADDR_H =20 -#ifndef SYSTEM_RAM_ADDR_H -#define SYSTEM_RAM_ADDR_H +/* address in the RAM (different from a physical address) */ +#if defined(CONFIG_XEN_BACKEND) +typedef uint64_t ram_addr_t; +# define RAM_ADDR_MAX UINT64_MAX +# define RAM_ADDR_FMT "%" PRIx64 +#else +typedef uintptr_t ram_addr_t; +# define RAM_ADDR_MAX UINTPTR_MAX +# define RAM_ADDR_FMT "%" PRIxPTR +#endif =20 -#include "system/ramblock.h" -#include "exec/target_page.h" -#include "exec/hwaddr.h" - -extern uint64_t total_dirty_pages; - -/** - * clear_bmap_size: calculate clear bitmap size - * - * @pages: number of guest pages - * @shift: guest page number shift - * - * Returns: number of bits for the clear bitmap - */ -static inline long clear_bmap_size(uint64_t pages, uint8_t shift) -{ - return DIV_ROUND_UP(pages, 1UL << shift); -} - -/** - * clear_bmap_set: set clear bitmap for the page range. Must be with - * bitmap_mutex held. - * - * @rb: the ramblock to operate on - * @start: the start page number - * @size: number of pages to set in the bitmap - * - * Returns: None - */ -static inline void clear_bmap_set(RAMBlock *rb, uint64_t start, - uint64_t npages) -{ - uint8_t shift =3D rb->clear_bmap_shift; - - bitmap_set(rb->clear_bmap, start >> shift, clear_bmap_size(npages, shi= ft)); -} - -/** - * clear_bmap_test_and_clear: test clear bitmap for the page, clear if set. - * Must be with bitmap_mutex held. - * - * @rb: the ramblock to operate on - * @page: the page number to check - * - * Returns: true if the bit was set, false otherwise - */ -static inline bool clear_bmap_test_and_clear(RAMBlock *rb, uint64_t page) -{ - uint8_t shift =3D rb->clear_bmap_shift; - - return bitmap_test_and_clear(rb->clear_bmap, page >> shift, 1); -} - -static inline unsigned long int ramblock_recv_bitmap_offset(void *host_add= r, - RAMBlock *rb) -{ - uint64_t host_addr_offset =3D - (uint64_t)(uintptr_t)(host_addr - (void *)rb->host); - return host_addr_offset >> TARGET_PAGE_BITS; -} - -/** - * qemu_ram_alloc_from_file, - * qemu_ram_alloc_from_fd: Allocate a ram block from the specified backing - * file or device - * - * Parameters: - * @size: the size in bytes of the ram block - * @max_size: the maximum size of the block after resizing - * @mr: the memory region where the ram block is - * @resized: callback after calls to qemu_ram_resize - * @ram_flags: RamBlock flags. Supported flags: RAM_SHARED, RAM_PMEM, - * RAM_NORESERVE, RAM_PROTECTED, RAM_NAMED_FILE, RAM_READONLY, - * RAM_READONLY_FD, RAM_GUEST_MEMFD - * @mem_path or @fd: specify the backing file or device - * @offset: Offset into target file - * @grow: extend file if necessary (but an empty file is always extended). - * @errp: pointer to Error*, to store an error if it happens - * - * Return: - * On success, return a pointer to the ram block. - * On failure, return NULL. - */ -typedef void (*qemu_ram_resize_cb)(const char *, uint64_t length, void *ho= st); - -RAMBlock *qemu_ram_alloc_from_file(ram_addr_t size, MemoryRegion *mr, - uint32_t ram_flags, const char *mem_pat= h, - off_t offset, Error **errp); -RAMBlock *qemu_ram_alloc_from_fd(ram_addr_t size, ram_addr_t max_size, - qemu_ram_resize_cb resized, MemoryRegion = *mr, - uint32_t ram_flags, int fd, off_t offset, - bool grow, - Error **errp); - -RAMBlock *qemu_ram_alloc_from_ptr(ram_addr_t size, void *host, - MemoryRegion *mr, Error **errp); -RAMBlock *qemu_ram_alloc(ram_addr_t size, uint32_t ram_flags, MemoryRegion= *mr, - Error **errp); -RAMBlock *qemu_ram_alloc_resizeable(ram_addr_t size, ram_addr_t max_size, - qemu_ram_resize_cb resized, - MemoryRegion *mr, Error **errp); -void qemu_ram_free(RAMBlock *block); - -int qemu_ram_resize(RAMBlock *block, ram_addr_t newsize, Error **errp); - -void qemu_ram_msync(RAMBlock *block, ram_addr_t start, ram_addr_t length); - -/* Clear whole block of mem */ -static inline void qemu_ram_block_writeback(RAMBlock *block) -{ - qemu_ram_msync(block, 0, block->used_length); -} +#define DIRTY_MEMORY_VGA 0 +#define DIRTY_MEMORY_CODE 1 +#define DIRTY_MEMORY_MIGRATION 2 +#define DIRTY_MEMORY_NUM 3 /* num of dirty bits */ =20 #endif diff --git a/include/system/ramblock.h b/include/system/ramblock.h index 76694fe1b5b..e9f58ac0457 100644 --- a/include/system/ramblock.h +++ b/include/system/ramblock.h @@ -14,9 +14,9 @@ #ifndef SYSTEM_RAMBLOCK_H #define SYSTEM_RAMBLOCK_H =20 -#include "exec/cpu-common.h" #include "qemu/rcu.h" -#include "exec/ramlist.h" +#include "system/ram_addr.h" +#include "system/ramlist.h" #include "system/hostmem.h" =20 #define TYPE_RAM_BLOCK_ATTRIBUTES "ram-block-attributes" @@ -130,4 +130,160 @@ static inline void *ramblock_ptr(RAMBlock *block, ram= _addr_t offset) return (char *)block->host + offset; } =20 +/* memory API */ + +void qemu_ram_remap(ram_addr_t addr); +/* This should not be used by devices. */ +ram_addr_t qemu_ram_addr_from_host(void *ptr); +ram_addr_t qemu_ram_addr_from_host_nofail(void *ptr); +RAMBlock *qemu_ram_block_by_name(const char *name); + +/* + * Translates a host ptr back to a RAMBlock and an offset in that RAMBlock. + * + * @ptr: The host pointer to translate. + * @round_offset: Whether to round the result offset down to a target page + * @offset: Will be set to the offset within the returned RAMBlock. + * + * Returns: RAMBlock (or NULL if not found) + * + * By the time this function returns, the returned pointer is not protected + * by RCU anymore. If the caller is not within an RCU critical section and + * does not hold the BQL, it must have other means of protecting the + * pointer, such as a reference to the memory region that owns the RAMBloc= k. + */ +RAMBlock *qemu_ram_block_from_host(void *ptr, bool round_offset, + ram_addr_t *offset); +ram_addr_t qemu_ram_block_host_offset(RAMBlock *rb, void *host); +void qemu_ram_set_idstr(RAMBlock *block, const char *name, DeviceState *de= v); +void qemu_ram_unset_idstr(RAMBlock *block); +const char *qemu_ram_get_idstr(RAMBlock *rb); +void *qemu_ram_get_host_addr(RAMBlock *rb); +ram_addr_t qemu_ram_get_offset(RAMBlock *rb); +ram_addr_t qemu_ram_get_fd_offset(RAMBlock *rb); +ram_addr_t qemu_ram_get_used_length(RAMBlock *rb); +ram_addr_t qemu_ram_get_max_length(RAMBlock *rb); +bool qemu_ram_is_shared(RAMBlock *rb); +bool qemu_ram_is_noreserve(RAMBlock *rb); +bool qemu_ram_is_uf_zeroable(RAMBlock *rb); +void qemu_ram_set_uf_zeroable(RAMBlock *rb); +bool qemu_ram_is_migratable(RAMBlock *rb); +void qemu_ram_set_migratable(RAMBlock *rb); +void qemu_ram_unset_migratable(RAMBlock *rb); +bool qemu_ram_is_named_file(RAMBlock *rb); +int qemu_ram_get_fd(RAMBlock *rb); + +size_t qemu_ram_pagesize(RAMBlock *block); +size_t qemu_ram_pagesize_largest(void); +#include "exec/target_page.h" +#include "exec/hwaddr.h" + +extern uint64_t total_dirty_pages; + +/** + * clear_bmap_size: calculate clear bitmap size + * + * @pages: number of guest pages + * @shift: guest page number shift + * + * Returns: number of bits for the clear bitmap + */ +static inline long clear_bmap_size(uint64_t pages, uint8_t shift) +{ + return DIV_ROUND_UP(pages, 1UL << shift); +} + +/** + * clear_bmap_set: set clear bitmap for the page range. Must be with + * bitmap_mutex held. + * + * @rb: the ramblock to operate on + * @start: the start page number + * @size: number of pages to set in the bitmap + * + * Returns: None + */ +static inline void clear_bmap_set(RAMBlock *rb, uint64_t start, + uint64_t npages) +{ + uint8_t shift =3D rb->clear_bmap_shift; + + bitmap_set(rb->clear_bmap, start >> shift, clear_bmap_size(npages, shi= ft)); +} + +/** + * clear_bmap_test_and_clear: test clear bitmap for the page, clear if set. + * Must be with bitmap_mutex held. + * + * @rb: the ramblock to operate on + * @page: the page number to check + * + * Returns: true if the bit was set, false otherwise + */ +static inline bool clear_bmap_test_and_clear(RAMBlock *rb, uint64_t page) +{ + uint8_t shift =3D rb->clear_bmap_shift; + + return bitmap_test_and_clear(rb->clear_bmap, page >> shift, 1); +} + +static inline unsigned long int ramblock_recv_bitmap_offset(void *host_add= r, + RAMBlock *rb) +{ + uint64_t host_addr_offset =3D + (uint64_t)(uintptr_t)(host_addr - (void *)rb->host); + return host_addr_offset >> TARGET_PAGE_BITS; +} + +/** + * qemu_ram_alloc_from_file, + * qemu_ram_alloc_from_fd: Allocate a ram block from the specified backing + * file or device + * + * Parameters: + * @size: the size in bytes of the ram block + * @max_size: the maximum size of the block after resizing + * @mr: the memory region where the ram block is + * @resized: callback after calls to qemu_ram_resize + * @ram_flags: RamBlock flags. Supported flags: RAM_SHARED, RAM_PMEM, + * RAM_NORESERVE, RAM_PROTECTED, RAM_NAMED_FILE, RAM_READONLY, + * RAM_READONLY_FD, RAM_GUEST_MEMFD + * @mem_path or @fd: specify the backing file or device + * @offset: Offset into target file + * @grow: extend file if necessary (but an empty file is always extended). + * @errp: pointer to Error*, to store an error if it happens + * + * Return: + * On success, return a pointer to the ram block. + * On failure, return NULL. + */ +typedef void (*qemu_ram_resize_cb)(const char *, uint64_t length, void *ho= st); + +RAMBlock *qemu_ram_alloc_from_file(ram_addr_t size, MemoryRegion *mr, + uint32_t ram_flags, const char *mem_pat= h, + off_t offset, Error **errp); +RAMBlock *qemu_ram_alloc_from_fd(ram_addr_t size, ram_addr_t max_size, + qemu_ram_resize_cb resized, MemoryRegion = *mr, + uint32_t ram_flags, int fd, off_t offset, + bool grow, + Error **errp); + +RAMBlock *qemu_ram_alloc_from_ptr(ram_addr_t size, void *host, + MemoryRegion *mr, Error **errp); +RAMBlock *qemu_ram_alloc(ram_addr_t size, uint32_t ram_flags, MemoryRegion= *mr, + Error **errp); +RAMBlock *qemu_ram_alloc_resizeable(ram_addr_t size, ram_addr_t max_size, + qemu_ram_resize_cb resized, + MemoryRegion *mr, Error **errp); +void qemu_ram_free(RAMBlock *block); + +int qemu_ram_resize(RAMBlock *block, ram_addr_t newsize, Error **errp); + +void qemu_ram_msync(RAMBlock *block, ram_addr_t start, ram_addr_t length); + +/* Clear whole block of mem */ +static inline void qemu_ram_block_writeback(RAMBlock *block) +{ + qemu_ram_msync(block, 0, block->used_length); +} #endif diff --git a/include/exec/ramlist.h b/include/system/ramlist.h similarity index 94% rename from include/exec/ramlist.h rename to include/system/ramlist.h index d9cfe530bea..c7f388f487d 100644 --- a/include/exec/ramlist.h +++ b/include/system/ramlist.h @@ -5,14 +5,10 @@ #include "qemu/thread.h" #include "qemu/rcu.h" #include "qemu/rcu_queue.h" +#include "system/ram_addr.h" =20 typedef struct RAMBlockNotifier RAMBlockNotifier; =20 -#define DIRTY_MEMORY_VGA 0 -#define DIRTY_MEMORY_CODE 1 -#define DIRTY_MEMORY_MIGRATION 2 -#define DIRTY_MEMORY_NUM 3 /* num of dirty bits */ - /* The dirty memory bitmap is split into fixed-size blocks to allow growth * under RCU. The bitmap for a block can be accessed as follows: * @@ -75,6 +71,10 @@ struct RAMBlockNotifier { QLIST_ENTRY(RAMBlockNotifier) next; }; =20 +typedef int (RAMBlockIterFunc)(RAMBlock *rb, void *opaque); + +int qemu_ram_foreach_block(RAMBlockIterFunc func, void *opaque); + void ram_block_notifier_add(RAMBlockNotifier *n); void ram_block_notifier_remove(RAMBlockNotifier *n); void ram_block_notify_add(void *host, size_t size, size_t max_size); diff --git a/include/system/xen-mapcache.h b/include/system/xen-mapcache.h index bb454a7c96c..fa2cff38d1a 100644 --- a/include/system/xen-mapcache.h +++ b/include/system/xen-mapcache.h @@ -9,7 +9,6 @@ #ifndef XEN_MAPCACHE_H #define XEN_MAPCACHE_H =20 -#include "exec/cpu-common.h" #include "system/xen.h" =20 typedef hwaddr (*phys_offset_to_gaddr_t)(hwaddr phys_offset, diff --git a/include/system/xen.h b/include/system/xen.h index c2f283d1c26..9a7c53f2838 100644 --- a/include/system/xen.h +++ b/include/system/xen.h @@ -10,7 +10,8 @@ #ifndef SYSTEM_XEN_H #define SYSTEM_XEN_H =20 -#include "exec/cpu-common.h" +#include "exec/hwaddr.h" +#include "system/ram_addr.h" =20 #ifdef COMPILING_PER_TARGET # ifdef CONFIG_XEN diff --git a/migration/migration.h b/migration/migration.h index fbe02d5bb1a..43fbe5488ca 100644 --- a/migration/migration.h +++ b/migration/migration.h @@ -14,7 +14,8 @@ #ifndef QEMU_MIGRATION_H #define QEMU_MIGRATION_H =20 -#include "exec/cpu-common.h" +#include "system/ram_addr.h" +#include "system/ramblock.h" #include "hw/core/qdev.h" #include "qapi/qapi-types-migration.h" #include "qobject/json-writer.h" diff --git a/migration/ram.h b/migration/ram.h index 24cd0bf5857..41697a75993 100644 --- a/migration/ram.h +++ b/migration/ram.h @@ -31,6 +31,7 @@ =20 #include "qapi/qapi-types-migration.h" #include "exec/cpu-common.h" +#include "system/ram_addr.h" #include "io/channel.h" =20 /* diff --git a/accel/mshv/mshv-all.c b/accel/mshv/mshv-all.c index 47c67ef8cc9..4675cb886fe 100644 --- a/accel/mshv/mshv-all.c +++ b/accel/mshv/mshv-all.c @@ -31,6 +31,7 @@ #include "qemu/guest-random.h" #include "accel/accel-ops.h" #include "accel/accel-cpu-ops.h" +#include "exec/cpu-common.h" #include "system/cpus.h" #include "system/runstate.h" #include "system/accel-blocker.h" diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c index fd1606c8565..655d1e113f9 100644 --- a/accel/tcg/cputlb.c +++ b/accel/tcg/cputlb.c @@ -30,7 +30,7 @@ #include "accel/tcg/cpu-mmu-index.h" #include "exec/cputlb.h" #include "exec/tb-flush.h" -#include "system/ram_addr.h" +#include "system/ramblock.h" #include "exec/mmu-access-type.h" #include "exec/tlb-common.h" #include "exec/vaddr.h" diff --git a/accel/tcg/tcg-accel-ops-mttcg.c b/accel/tcg/tcg-accel-ops-mttc= g.c index 89299829c3a..4160e2ba947 100644 --- a/accel/tcg/tcg-accel-ops-mttcg.c +++ b/accel/tcg/tcg-accel-ops-mttcg.c @@ -24,6 +24,7 @@ */ =20 #include "qemu/osdep.h" +#include "exec/cpu-common.h" #include "system/tcg.h" #include "system/replay.h" #include "exec/icount.h" diff --git a/backends/hostmem.c b/backends/hostmem.c index 67827c42b87..15d4365b697 100644 --- a/backends/hostmem.c +++ b/backends/hostmem.c @@ -12,6 +12,7 @@ =20 #include "qemu/osdep.h" #include "system/hostmem.h" +#include "system/ramblock.h" #include "hw/core/boards.h" #include "qapi/error.h" #include "qapi/qapi-builtin-visit.h" diff --git a/block/blkio.c b/block/blkio.c index 41426739847..20f138a38c5 100644 --- a/block/blkio.c +++ b/block/blkio.c @@ -12,7 +12,7 @@ #include #include "block/block_int.h" #include "system/memory.h" -#include "exec/cpu-common.h" /* for qemu_ram_get_fd() */ +#include "system/ramblock.h" #include "qemu/defer-call.h" #include "qapi/error.h" #include "qemu/error-report.h" diff --git a/dump/dump.c b/dump/dump.c index 15bbcc0c619..f7a99a7af2e 100644 --- a/dump/dump.c +++ b/dump/dump.c @@ -15,6 +15,7 @@ #include "qemu/cutils.h" #include "elf.h" #include "qemu/bswap.h" +#include "exec/cpu-common.h" #include "exec/target_page.h" #include "monitor/monitor.h" #include "system/dump.h" diff --git a/hw/acpi/ghes.c b/hw/acpi/ghes.c index 06555905ceb..365156dff90 100644 --- a/hw/acpi/ghes.c +++ b/hw/acpi/ghes.c @@ -27,6 +27,7 @@ #include "hw/acpi/generic_event_device.h" #include "hw/nvram/fw_cfg.h" #include "qemu/uuid.h" +#include "exec/cpu-common.h" =20 #define ACPI_HW_ERROR_FW_CFG_FILE "etc/hardware_errors" #define ACPI_HW_ERROR_ADDR_FW_CFG_FILE "etc/hardware_errors_addr" diff --git a/hw/acpi/nvdimm.c b/hw/acpi/nvdimm.c index 732d613ac09..eb4b4770765 100644 --- a/hw/acpi/nvdimm.c +++ b/hw/acpi/nvdimm.c @@ -36,6 +36,7 @@ #include "hw/mem/nvdimm.h" #include "qemu/nvdimm-utils.h" #include "trace.h" +#include "exec/cpu-common.h" =20 /* * define Byte Addressable Persistent Memory (PM) Region according to diff --git a/hw/acpi/vmgenid.c b/hw/acpi/vmgenid.c index e87c0256964..70ad029057b 100644 --- a/hw/acpi/vmgenid.c +++ b/hw/acpi/vmgenid.c @@ -21,6 +21,7 @@ #include "hw/core/qdev-properties-system.h" #include "migration/vmstate.h" #include "system/reset.h" +#include "exec/cpu-common.h" =20 void vmgenid_build_acpi(VmGenIdState *vms, GArray *table_data, GArray *gui= d, BIOSLinker *linker, const char *oem_id) diff --git a/hw/arm/omap1.c b/hw/arm/omap1.c index f5ff4b107ae..9ca8eecfa09 100644 --- a/hw/arm/omap1.c +++ b/hw/arm/omap1.c @@ -24,6 +24,7 @@ #include "qapi/error.h" #include "cpu.h" #include "system/address-spaces.h" +#include "exec/cpu-common.h" #include "hw/core/hw-error.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" diff --git a/hw/audio/marvell_88w8618.c b/hw/audio/marvell_88w8618.c index 6d5e99123d6..4ad4a220a98 100644 --- a/hw/audio/marvell_88w8618.c +++ b/hw/audio/marvell_88w8618.c @@ -12,6 +12,7 @@ =20 #include "qemu/osdep.h" #include "hw/core/sysbus.h" +#include "exec/cpu-common.h" #include "migration/vmstate.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" diff --git a/hw/char/riscv_htif.c b/hw/char/riscv_htif.c index a78ea9b01c0..e9efab16e99 100644 --- a/hw/char/riscv_htif.c +++ b/hw/char/riscv_htif.c @@ -31,6 +31,7 @@ #include "system/address-spaces.h" #include "system/dma.h" #include "system/runstate.h" +#include "exec/cpu-common.h" #include "trace.h" =20 #define HTIF_DEV_SHIFT 56 diff --git a/hw/core/cpu-common.c b/hw/core/cpu-common.c index 2e925880afa..6d54c12a778 100644 --- a/hw/core/cpu-common.c +++ b/hw/core/cpu-common.c @@ -19,6 +19,7 @@ */ =20 #include "qemu/osdep.h" +#include "exec/cpu-common.h" #include "qapi/error.h" #include "hw/core/cpu.h" #include "system/hw_accel.h" diff --git a/hw/core/machine-qmp-cmds.c b/hw/core/machine-qmp-cmds.c index d23466177d8..79cbcdd63e8 100644 --- a/hw/core/machine-qmp-cmds.c +++ b/hw/core/machine-qmp-cmds.c @@ -26,6 +26,7 @@ #include "system/hostmem.h" #include "system/hw_accel.h" #include "system/numa.h" +#include "system/ramlist.h" #include "system/runstate.h" #include "system/system.h" #include "hw/s390x/storage-keys.h" diff --git a/hw/core/numa.c b/hw/core/numa.c index fa78dacb6be..f462883c87c 100644 --- a/hw/core/numa.c +++ b/hw/core/numa.c @@ -27,7 +27,8 @@ #include "system/hostmem.h" #include "system/numa.h" #include "exec/cpu-common.h" -#include "exec/ramlist.h" +#include "system/ramlist.h" +#include "system/ramblock.h" #include "qemu/error-report.h" #include "qapi/error.h" #include "qapi/opts-visitor.h" diff --git a/hw/display/exynos4210_fimd.c b/hw/display/exynos4210_fimd.c index a97054132fb..2d8fa7ee944 100644 --- a/hw/display/exynos4210_fimd.c +++ b/hw/display/exynos4210_fimd.c @@ -27,6 +27,7 @@ #include "hw/core/hw-error.h" #include "hw/core/irq.h" #include "hw/core/sysbus.h" +#include "exec/cpu-common.h" #include "migration/vmstate.h" #include "ui/console.h" #include "ui/pixel_ops.h" diff --git a/hw/display/omap_lcdc.c b/hw/display/omap_lcdc.c index 90a97314541..c41c65bb2e0 100644 --- a/hw/display/omap_lcdc.c +++ b/hw/display/omap_lcdc.c @@ -23,6 +23,7 @@ #include "hw/arm/omap.h" #include "framebuffer.h" #include "ui/pixel_ops.h" +#include "exec/cpu-common.h" =20 struct omap_lcd_panel_s { MemoryRegion *sysmem; diff --git a/hw/display/ramfb.c b/hw/display/ramfb.c index ad12fb1782e..50c25706a52 100644 --- a/hw/display/ramfb.c +++ b/hw/display/ramfb.c @@ -18,6 +18,7 @@ #include "hw/display/bochs-vbe.h" /* for limits */ #include "ui/console.h" #include "system/reset.h" +#include "exec/cpu-common.h" =20 struct QEMU_PACKED RAMFBCfg { uint64_t addr; diff --git a/hw/display/vga.c b/hw/display/vga.c index 90b89cf4044..59a65cbbff5 100644 --- a/hw/display/vga.c +++ b/hw/display/vga.c @@ -25,6 +25,7 @@ #include "qemu/osdep.h" #include "qemu/units.h" #include "system/reset.h" +#include "system/ramblock.h" #include "qapi/error.h" #include "qemu/target-info.h" #include "hw/display/vga.h" diff --git a/hw/dma/i8257.c b/hw/dma/i8257.c index d909d6c8fc2..3637d8f82d7 100644 --- a/hw/dma/i8257.c +++ b/hw/dma/i8257.c @@ -27,6 +27,7 @@ #include "hw/core/qdev-properties.h" #include "migration/vmstate.h" #include "hw/dma/i8257.h" +#include "exec/cpu-common.h" #include "qapi/error.h" #include "qemu/main-loop.h" #include "qemu/module.h" diff --git a/hw/dma/omap_dma.c b/hw/dma/omap_dma.c index 2bf9ebad565..963ce6fd102 100644 --- a/hw/dma/omap_dma.c +++ b/hw/dma/omap_dma.c @@ -23,6 +23,7 @@ #include "hw/arm/omap.h" #include "hw/core/irq.h" #include "hw/arm/soc_dma.h" +#include "exec/cpu-common.h" =20 struct omap_dma_channel_s { /* transfer data */ diff --git a/hw/dma/rc4030.c b/hw/dma/rc4030.c index 93db286e690..159d0173913 100644 --- a/hw/dma/rc4030.c +++ b/hw/dma/rc4030.c @@ -27,6 +27,7 @@ #include "hw/core/irq.h" #include "hw/mips/mips.h" #include "hw/core/sysbus.h" +#include "exec/cpu-common.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qemu/timer.h" diff --git a/hw/dma/sifive_pdma.c b/hw/dma/sifive_pdma.c index 2844515b2d7..6d06ec0375f 100644 --- a/hw/dma/sifive_pdma.c +++ b/hw/dma/sifive_pdma.c @@ -27,6 +27,7 @@ #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" #include "hw/core/sysbus.h" +#include "exec/cpu-common.h" #include "migration/vmstate.h" #include "system/dma.h" #include "hw/dma/sifive_pdma.h" diff --git a/hw/hyperv/hyperv.c b/hw/hyperv/hyperv.c index e4d0688dbfa..27e323a8196 100644 --- a/hw/hyperv/hyperv.c +++ b/hw/hyperv/hyperv.c @@ -14,6 +14,7 @@ #include "system/address-spaces.h" #include "system/memory.h" #include "exec/target_page.h" +#include "exec/cpu-common.h" #include "linux/kvm.h" #include "system/kvm.h" #include "qemu/bitops.h" diff --git a/hw/hyperv/syndbg.c b/hw/hyperv/syndbg.c index dc6cc84b503..1e177f9dd82 100644 --- a/hw/hyperv/syndbg.c +++ b/hw/hyperv/syndbg.c @@ -19,6 +19,7 @@ #include "hw/hyperv/hyperv.h" #include "hw/hyperv/vmbus-bridge.h" #include "hw/hyperv/hyperv-proto.h" +#include "exec/cpu-common.h" #include "net/net.h" #include "net/eth.h" #include "net/checksum.h" diff --git a/hw/hyperv/vmbus.c b/hw/hyperv/vmbus.c index c01f3392360..c5bab5d2452 100644 --- a/hw/hyperv/vmbus.c +++ b/hw/hyperv/vmbus.c @@ -19,6 +19,7 @@ #include "hw/hyperv/vmbus.h" #include "hw/hyperv/vmbus-bridge.h" #include "hw/core/sysbus.h" +#include "exec/cpu-common.h" #include "exec/target_page.h" #include "trace.h" =20 diff --git a/hw/i386/kvm/clock.c b/hw/i386/kvm/clock.c index 8ca88afae24..aba6842a22c 100644 --- a/hw/i386/kvm/clock.c +++ b/hw/i386/kvm/clock.c @@ -24,6 +24,7 @@ #include "hw/core/sysbus.h" #include "hw/i386/kvm/clock.h" #include "hw/core/qdev-properties.h" +#include "exec/cpu-common.h" #include "qapi/error.h" =20 #include diff --git a/hw/i386/vapic.c b/hw/i386/vapic.c index 32f92a28b88..670a50524d6 100644 --- a/hw/i386/vapic.c +++ b/hw/i386/vapic.c @@ -21,6 +21,7 @@ #include "hw/i386/apic_internal.h" #include "hw/core/sysbus.h" #include "hw/core/boards.h" +#include "exec/cpu-common.h" #include "migration/vmstate.h" #include "qom/object.h" =20 diff --git a/hw/intc/apic.c b/hw/intc/apic.c index aad253af158..dd8c77f8180 100644 --- a/hw/intc/apic.c +++ b/hw/intc/apic.c @@ -30,6 +30,7 @@ #include "system/mshv.h" #include "trace.h" #include "hw/i386/apic-msidef.h" +#include "exec/cpu-common.h" #include "qapi/error.h" #include "qom/object.h" =20 diff --git a/hw/intc/xive2.c b/hw/intc/xive2.c index 495925196a8..d353391208e 100644 --- a/hw/intc/xive2.c +++ b/hw/intc/xive2.c @@ -17,6 +17,7 @@ #include "hw/ppc/xive.h" #include "hw/ppc/xive2.h" #include "hw/ppc/xive2_regs.h" +#include "exec/cpu-common.h" #include "trace.h" =20 static void xive2_router_end_notify(Xive2Router *xrtr, uint8_t end_blk, diff --git a/hw/m68k/next-cube.c b/hw/m68k/next-cube.c index ca3df7b887b..26177c7b867 100644 --- a/hw/m68k/next-cube.c +++ b/hw/m68k/next-cube.c @@ -12,6 +12,7 @@ =20 #include "qemu/osdep.h" #include "exec/hwaddr.h" +#include "exec/cpu-common.h" #include "exec/cpu-interrupt.h" #include "system/system.h" #include "system/qtest.h" diff --git a/hw/microblaze/boot.c b/hw/microblaze/boot.c index 8ff99b3339d..a6f9ebab90c 100644 --- a/hw/microblaze/boot.c +++ b/hw/microblaze/boot.c @@ -33,6 +33,7 @@ #include "qemu/guest-random.h" #include "system/device_tree.h" #include "system/reset.h" +#include "exec/cpu-common.h" #include "hw/core/boards.h" #include "hw/core/loader.h" #include "elf.h" diff --git a/hw/misc/pc-testdev.c b/hw/misc/pc-testdev.c index 4093cb3c99c..228012e772f 100644 --- a/hw/misc/pc-testdev.c +++ b/hw/misc/pc-testdev.c @@ -39,6 +39,7 @@ #include "qemu/module.h" #include "hw/core/irq.h" #include "hw/isa/isa.h" +#include "exec/cpu-common.h" #include "qom/object.h" =20 #define IOMEM_LEN 0x10000 diff --git a/hw/net/fsl_etsec/rings.c b/hw/net/fsl_etsec/rings.c index 42216de6c9a..22660c32b84 100644 --- a/hw/net/fsl_etsec/rings.c +++ b/hw/net/fsl_etsec/rings.c @@ -26,6 +26,7 @@ #include "qemu/log.h" #include "etsec.h" #include "registers.h" +#include "exec/cpu-common.h" =20 /* #define ETSEC_RING_DEBUG */ /* #define HEX_DUMP */ diff --git a/hw/net/mcf_fec.c b/hw/net/mcf_fec.c index 5f267e5ea38..79a5c4385c6 100644 --- a/hw/net/mcf_fec.c +++ b/hw/net/mcf_fec.c @@ -16,6 +16,7 @@ #include "hw/net/mii.h" #include "hw/core/qdev-properties.h" #include "hw/core/sysbus.h" +#include "exec/cpu-common.h" #include /* for crc32 */ =20 //#define DEBUG_FEC 1 diff --git a/hw/net/opencores_eth.c b/hw/net/opencores_eth.c index ec3301414cc..6abeffcc9c7 100644 --- a/hw/net/opencores_eth.c +++ b/hw/net/opencores_eth.c @@ -36,6 +36,7 @@ #include "hw/net/mii.h" #include "hw/core/qdev-properties.h" #include "hw/core/sysbus.h" +#include "exec/cpu-common.h" #include "net/net.h" #include "qemu/module.h" #include "net/eth.h" diff --git a/hw/net/xgmac.c b/hw/net/xgmac.c index 8d316e94c17..204c78aba37 100644 --- a/hw/net/xgmac.c +++ b/hw/net/xgmac.c @@ -28,6 +28,7 @@ #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" #include "hw/core/sysbus.h" +#include "exec/cpu-common.h" #include "migration/vmstate.h" #include "qemu/module.h" #include "net/net.h" diff --git a/hw/nvram/spapr_nvram.c b/hw/nvram/spapr_nvram.c index 58d81f77c88..3af7e6ecbec 100644 --- a/hw/nvram/spapr_nvram.c +++ b/hw/nvram/spapr_nvram.c @@ -38,6 +38,7 @@ #include "hw/ppc/spapr_vio.h" #include "hw/core/qdev-properties.h" #include "hw/core/qdev-properties-system.h" +#include "exec/cpu-common.h" #include "qom/object.h" =20 struct SpaprNvram { diff --git a/hw/ppc/amigaone.c b/hw/ppc/amigaone.c index 4b858443806..8074713fbe9 100644 --- a/hw/ppc/amigaone.c +++ b/hw/ppc/amigaone.c @@ -21,6 +21,7 @@ #include "hw/ide/pci.h" #include "hw/i2c/smbus_eeprom.h" #include "hw/ppc/ppc.h" +#include "exec/cpu-common.h" #include "system/block-backend.h" #include "system/qtest.h" #include "system/reset.h" diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c index 113a2daca1d..eb0d3a418e2 100644 --- a/hw/ppc/e500.c +++ b/hw/ppc/e500.c @@ -52,6 +52,7 @@ #include "hw/core/irq.h" #include "hw/sd/sdhci.h" #include "hw/misc/unimp.h" +#include "exec/cpu-common.h" =20 #define EPAPR_MAGIC (0x45504150) #define DTC_LOAD_PAD 0x1800000 diff --git a/hw/ppc/pegasos.c b/hw/ppc/pegasos.c index 3e4d19fbe84..ac9fc5a6542 100644 --- a/hw/ppc/pegasos.c +++ b/hw/ppc/pegasos.c @@ -39,6 +39,7 @@ #include "qemu/datadir.h" #include "system/device_tree.h" #include "hw/ppc/vof.h" +#include "exec/cpu-common.h" =20 #include =20 diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index f891c3a797c..1513575b8f3 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -58,6 +58,7 @@ #include "hw/isa/isa.h" #include "hw/char/serial-isa.h" #include "hw/rtc/mc146818rtc.h" +#include "exec/cpu-common.h" =20 #include =20 diff --git a/hw/ppc/ppc440_uc.c b/hw/ppc/ppc440_uc.c index fc6dd332e88..0f28a7937fb 100644 --- a/hw/ppc/ppc440_uc.c +++ b/hw/ppc/ppc440_uc.c @@ -17,6 +17,7 @@ #include "hw/pci-host/ppc4xx.h" #include "hw/core/qdev-properties.h" #include "hw/pci/pci.h" +#include "exec/cpu-common.h" #include "system/reset.h" #include "cpu.h" #include "ppc440.h" diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index eb626547ebd..bcf6aa560f3 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -43,6 +43,7 @@ #include "system/reset.h" #include "system/runstate.h" #include "qemu/log.h" +#include "exec/cpu-common.h" #include "hw/core/fw-path-provider.h" #include "elf.h" #include "net/net.h" diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c index d2044b4fb52..9bc65c760ea 100644 --- a/hw/ppc/spapr_drc.c +++ b/hw/ppc/spapr_drc.c @@ -23,6 +23,7 @@ #include "hw/ppc/spapr.h" /* for RTAS return codes */ #include "hw/pci-host/spapr.h" /* spapr_phb_remove_pci_device_cb callback = */ #include "hw/ppc/spapr_nvdimm.h" +#include "exec/cpu-common.h" #include "system/device_tree.h" #include "system/reset.h" #include "trace.h" diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c index b1774e88f2b..1a21ac7bbf8 100644 --- a/hw/ppc/spapr_events.c +++ b/hw/ppc/spapr_events.c @@ -41,6 +41,7 @@ #include "qemu/bcd.h" #include "qemu/main-loop.h" #include "hw/ppc/spapr_ovec.h" +#include "exec/cpu-common.h" #include #include "migration/blocker.h" =20 diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c index 8f03b3e7764..032805a8d0d 100644 --- a/hw/ppc/spapr_hcall.c +++ b/hw/ppc/spapr_hcall.c @@ -24,6 +24,7 @@ #include "hw/ppc/spapr_numa.h" #include "mmu-book3s-v3.h" #include "hw/mem/memory-device.h" +#include "exec/cpu-common.h" =20 bool is_ram_address(SpaprMachineState *spapr, hwaddr addr) { diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c index a6715b4026d..cb79ad34053 100644 --- a/hw/ppc/spapr_rtas.c +++ b/hw/ppc/spapr_rtas.c @@ -46,6 +46,7 @@ #include "qemu/cutils.h" #include "trace.h" #include "hw/ppc/fdt.h" +#include "exec/cpu-common.h" #include "target/ppc/mmu-hash64.h" #include "target/ppc/mmu-book3s-v3.h" #include "migration/blocker.h" diff --git a/hw/ppc/spapr_tpm_proxy.c b/hw/ppc/spapr_tpm_proxy.c index a48dab7e7a6..361a3dc817d 100644 --- a/hw/ppc/spapr_tpm_proxy.c +++ b/hw/ppc/spapr_tpm_proxy.c @@ -16,6 +16,7 @@ #include "system/reset.h" #include "hw/ppc/spapr.h" #include "hw/core/qdev-properties.h" +#include "exec/cpu-common.h" #include "trace.h" =20 #define TPM_SPAPR_BUFSIZE 4096 diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c index 8b3e67b627c..51b3d7d7121 100644 --- a/hw/ppc/virtex_ml507.c +++ b/hw/ppc/virtex_ml507.c @@ -44,6 +44,7 @@ #include "hw/ppc/ppc.h" #include "hw/ppc/ppc4xx.h" #include "hw/core/qdev-properties.h" +#include "exec/cpu-common.h" =20 #include =20 diff --git a/hw/remote/proxy-memory-listener.c b/hw/remote/proxy-memory-lis= tener.c index e1a52d24f0b..d0c856b0939 100644 --- a/hw/remote/proxy-memory-listener.c +++ b/hw/remote/proxy-memory-listener.c @@ -11,6 +11,7 @@ #include "qemu/int128.h" #include "qemu/range.h" #include "system/memory.h" +#include "system/ramblock.h" #include "exec/cpu-common.h" #include "qapi/error.h" #include "qemu/error-report.h" diff --git a/hw/s390x/css.c b/hw/s390x/css.c index d2c0af6a9bf..ccc9c1c243b 100644 --- a/hw/s390x/css.c +++ b/hw/s390x/css.c @@ -22,6 +22,7 @@ #include "hw/s390x/s390_flic.h" #include "hw/s390x/s390-virtio-ccw.h" #include "hw/s390x/s390-ccw.h" +#include "exec/cpu-common.h" =20 typedef struct CrwContainer { CRW crw; diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c index b119a87a864..d34adb55220 100644 --- a/hw/s390x/ipl.c +++ b/hw/s390x/ipl.c @@ -28,6 +28,7 @@ #include "hw/s390x/ebcdic.h" #include "hw/scsi/scsi.h" #include "hw/virtio/virtio-net.h" +#include "exec/cpu-common.h" #include "ipl.h" #include "qemu/error-report.h" #include "qemu/config-file.h" diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index ff415b6312d..30fdca1e8a6 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -25,6 +25,7 @@ #include "hw/core/qdev-properties.h" #include "hw/pci/pci_bridge.h" #include "hw/pci/msi.h" +#include "exec/cpu-common.h" #include "qemu/error-report.h" #include "qemu/module.h" #include "system/reset.h" diff --git a/hw/s390x/s390-stattrib.c b/hw/s390x/s390-stattrib.c index f149af16ac1..d808ece3b92 100644 --- a/hw/s390x/s390-stattrib.c +++ b/hw/s390x/s390-stattrib.c @@ -12,6 +12,7 @@ #include "qemu/osdep.h" #include "qemu/units.h" #include "exec/target_page.h" +#include "system/ram_addr.h" #include "migration/qemu-file.h" #include "migration/register.h" #include "hw/core/qdev-properties.h" diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c index 4a3ffb84f8f..b4011c4049d 100644 --- a/hw/s390x/virtio-ccw.c +++ b/hw/s390x/virtio-ccw.c @@ -32,6 +32,7 @@ #include "trace.h" #include "hw/s390x/css-bridge.h" #include "hw/s390x/s390-virtio-ccw.h" +#include "exec/cpu-common.h" #include "system/replay.h" =20 #define NR_CLASSIC_INDICATOR_BITS 64 diff --git a/hw/scsi/vmw_pvscsi.c b/hw/scsi/vmw_pvscsi.c index b3cdc255b46..11ae6b9b747 100644 --- a/hw/scsi/vmw_pvscsi.c +++ b/hw/scsi/vmw_pvscsi.c @@ -34,6 +34,7 @@ #include "scsi/constants.h" #include "hw/pci/msi.h" #include "hw/core/qdev-properties.h" +#include "exec/cpu-common.h" #include "vmw_pvscsi.h" #include "trace.h" #include "qom/object.h" diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c index ec9a386b48d..d4e25f761a6 100644 --- a/hw/sparc/leon3.c +++ b/hw/sparc/leon3.c @@ -29,6 +29,7 @@ #include "qemu/error-report.h" #include "qapi/error.h" #include "qemu/datadir.h" +#include "exec/cpu-common.h" #include "cpu.h" #include "hw/core/irq.h" #include "qemu/timer.h" diff --git a/hw/vfio-user/container.c b/hw/vfio-user/container.c index dab7a23224c..d5275a463b8 100644 --- a/hw/vfio-user/container.c +++ b/hw/vfio-user/container.c @@ -15,6 +15,7 @@ #include "hw/vfio-user/trace.h" #include "hw/vfio/vfio-device.h" #include "hw/vfio/vfio-listener.h" +#include "system/ramblock.h" #include "qapi/error.h" =20 /* diff --git a/hw/vfio/container.c b/hw/vfio/container.c index 013a691bc5a..5993d905457 100644 --- a/hw/vfio/container.c +++ b/hw/vfio/container.c @@ -15,7 +15,7 @@ #include =20 #include "system/tcg.h" -#include "system/ram_addr.h" +#include "system/ramblock.h" #include "qapi/error.h" #include "qemu/error-report.h" #include "hw/vfio/vfio-container.h" diff --git a/hw/vfio/helpers.c b/hw/vfio/helpers.c index 2cbc7b4964f..c595f860cea 100644 --- a/hw/vfio/helpers.c +++ b/hw/vfio/helpers.c @@ -23,6 +23,7 @@ #include =20 #include "system/kvm.h" +#include "exec/cpu-common.h" #include "hw/vfio/vfio-device.h" #include "hw/core/hw-error.h" #include "qapi/error.h" diff --git a/hw/vfio/migration.c b/hw/vfio/migration.c index fde343f06e3..58a4940b00e 100644 --- a/hw/vfio/migration.c +++ b/hw/vfio/migration.c @@ -27,7 +27,7 @@ #include "migration-multifd.h" #include "qapi/error.h" #include "qapi/qapi-events-vfio.h" -#include "exec/ramlist.h" +#include "system/ramlist.h" #include "pci.h" #include "trace.h" #include "hw/core/hw-error.h" diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index e654ea468a0..31e9704cdc6 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -28,6 +28,7 @@ #include "migration/qemu-file-types.h" #include "system/dma.h" #include "system/memory.h" +#include "system/ramblock.h" #include "trace.h" =20 /* enabled until disconnected backend stabilizes */ diff --git a/hw/xen/xen-mapcache.c b/hw/xen/xen-mapcache.c index e31d3797025..11115f60845 100644 --- a/hw/xen/xen-mapcache.c +++ b/hw/xen/xen-mapcache.c @@ -18,6 +18,7 @@ #include "hw/xen/xen_native.h" #include "qemu/bitmap.h" =20 +#include "system/ramlist.h" #include "system/runstate.h" #include "system/xen-mapcache.h" #include "trace.h" diff --git a/hw/xen/xen_pt_graphics.c b/hw/xen/xen_pt_graphics.c index 2c0cec97234..445f33e1726 100644 --- a/hw/xen/xen_pt_graphics.c +++ b/hw/xen/xen_pt_graphics.c @@ -5,6 +5,7 @@ #include "qapi/error.h" #include "hw/xen/xen_pt.h" #include "hw/xen/xen_igd.h" +#include "exec/cpu-common.h" #include "xen-host-pci-device.h" =20 static unsigned long igd_guest_opregion; diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c index 5e6f897429d..d427d68e505 100644 --- a/hw/xtensa/xtfpga.c +++ b/hw/xtensa/xtfpga.c @@ -49,6 +49,7 @@ #include "bootparam.h" #include "xtensa_memory.h" #include "hw/xtensa/mx_pic.h" +#include "exec/cpu-common.h" #include "migration/vmstate.h" =20 typedef struct XtfpgaFlashDesc { diff --git a/migration/ram.c b/migration/ram.c index 6b469238ad2..a57f4f49b34 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -48,7 +48,7 @@ #include "qapi/qapi-commands-migration.h" #include "qapi/qmp/qerror.h" #include "trace.h" -#include "system/ram_addr.h" +#include "system/ramblock.h" #include "exec/target_page.h" #include "qemu/rcu_queue.h" #include "migration/colo.h" diff --git a/stubs/physmem.c b/stubs/physmem.c index 1fc5f2df29f..14667f2bd8f 100644 --- a/stubs/physmem.c +++ b/stubs/physmem.c @@ -1,5 +1,5 @@ #include "qemu/osdep.h" -#include "exec/cpu-common.h" +#include "system/ramblock.h" =20 RAMBlock *qemu_ram_block_from_host(void *ptr, bool round_offset, ram_addr_t *offset) diff --git a/stubs/ram-block.c b/stubs/ram-block.c index e88fab31a5d..8790a59593e 100644 --- a/stubs/ram-block.c +++ b/stubs/ram-block.c @@ -1,6 +1,6 @@ #include "qemu/osdep.h" -#include "exec/ramlist.h" -#include "exec/cpu-common.h" +#include "system/ramlist.h" +#include "system/ramblock.h" #include "system/memory.h" =20 void *qemu_ram_get_host_addr(RAMBlock *rb) diff --git a/system/ioport.c b/system/ioport.c index 4f96e9119fc..801e2490c36 100644 --- a/system/ioport.c +++ b/system/ioport.c @@ -29,6 +29,7 @@ #include "system/ioport.h" #include "system/memory.h" #include "system/address-spaces.h" +#include "hw/core/qdev.h" #include "trace.h" =20 struct MemoryRegionPortioList { diff --git a/system/memory.c b/system/memory.c index b65219c2e49..25950756604 100644 --- a/system/memory.c +++ b/system/memory.c @@ -26,7 +26,7 @@ #include "qom/object.h" #include "trace.h" #include "system/physmem.h" -#include "system/ram_addr.h" +#include "system/ramblock.h" #include "system/kvm.h" #include "system/runstate.h" #include "system/tcg.h" diff --git a/system/physmem.c b/system/physmem.c index e3221ce00de..2547687d137 100644 --- a/system/physmem.c +++ b/system/physmem.c @@ -68,7 +68,7 @@ #include "qemu/main-loop.h" #include "system/replay.h" =20 -#include "system/ram_addr.h" +#include "system/ramblock.h" =20 #include "qemu/pmem.h" =20 diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 12a63602b11..48f853fff80 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -22,6 +22,7 @@ #include "qapi/error.h" #include "system/system.h" #include "system/runstate.h" +#include "system/ramblock.h" #include "system/kvm.h" #include "system/kvm_int.h" #include "kvm_arm.h" diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index 60c79811382..e98da47a451 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -35,6 +35,7 @@ #include "system/hw_accel.h" #include "system/kvm_int.h" #include "system/runstate.h" +#include "system/ramblock.h" #include "kvm_i386.h" #include "../confidential-guest.h" #include "sev.h" diff --git a/target/i386/sev.c b/target/i386/sev.c index fd2dada013b..fb5a3b5d778 100644 --- a/target/i386/sev.c +++ b/target/i386/sev.c @@ -41,6 +41,7 @@ #include "confidential-guest.h" #include "hw/i386/pc.h" #include "system/address-spaces.h" +#include "system/ramlist.h" #include "hw/i386/e820_memory_layout.h" #include "qemu/queue.h" #include "qemu/cutils.h" diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c index 2c96eca584e..3b2f1077da6 100644 --- a/target/ppc/kvm.c +++ b/target/ppc/kvm.c @@ -41,7 +41,7 @@ #include "trace.h" #include "gdbstub/enums.h" #include "exec/memattrs.h" -#include "system/ram_addr.h" +#include "system/ramblock.h" #include "system/hostmem.h" #include "qemu/cutils.h" #include "qemu/main-loop.h" diff --git a/target/s390x/kvm/kvm.c b/target/s390x/kvm/kvm.c index 916dac1f14e..fe3bf408dda 100644 --- a/target/s390x/kvm/kvm.c +++ b/target/s390x/kvm/kvm.c @@ -41,7 +41,7 @@ #include "system/runstate.h" #include "system/device_tree.h" #include "gdbstub/enums.h" -#include "system/ram_addr.h" +#include "system/ramblock.h" #include "trace.h" #include "hw/s390x/s390-pci-inst.h" #include "hw/s390x/s390-pci-bus.h" diff --git a/tests/qtest/fuzz/generic_fuzz.c b/tests/qtest/fuzz/generic_fuz= z.c index e8bb7bb0d56..440de250345 100644 --- a/tests/qtest/fuzz/generic_fuzz.c +++ b/tests/qtest/fuzz/generic_fuzz.c @@ -21,7 +21,7 @@ #include "fuzz.h" #include "string.h" #include "system/memory.h" -#include "system/ramblock.h" +#include "system/ram_addr.h" #include "hw/core/qdev.h" #include "hw/pci/pci.h" #include "hw/pci/pci_device.h" diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c index fdff042ab46..44b457c442f 100644 --- a/util/vfio-helpers.c +++ b/util/vfio-helpers.c @@ -14,7 +14,7 @@ #include #include #include "qapi/error.h" -#include "exec/ramlist.h" +#include "system/ramlist.h" #include "exec/cpu-common.h" #include "system/memory.h" #include "trace.h" diff --git a/rust/hw/char/pl011/src/bindings.rs b/rust/hw/char/pl011/src/bi= ndings.rs index 654be9185b1..68b9b22bbc3 100644 --- a/rust/hw/char/pl011/src/bindings.rs +++ b/rust/hw/char/pl011/src/bindings.rs @@ -21,8 +21,8 @@ //! `bindgen`-generated declarations. =20 use glib_sys::{ - gboolean, guint, GArray, GByteArray, GHashTable, GHashTableIter, GIOCo= ndition, GList, - GMainContext, GPollFD, GPtrArray, GSList, GSource, GSourceFunc, GStrin= g, + gboolean, guint, GArray, GHashTable, GHashTableIter, GIOCondition, GLi= st, GMainContext, + GPollFD, GPtrArray, GSList, GSource, GSourceFunc, }; =20 #[cfg(MESON)] diff --git a/rust/hw/core/src/bindings.rs b/rust/hw/core/src/bindings.rs index 730d5b28a3c..db872d38bc7 100644 --- a/rust/hw/core/src/bindings.rs +++ b/rust/hw/core/src/bindings.rs @@ -20,7 +20,7 @@ =20 use chardev::bindings::Chardev; use common::Zeroable; -use glib_sys::{GArray, GByteArray, GHashTable, GHashTableIter, GList, GPtr= Array, GSList, GString}; +use glib_sys::{GHashTable, GHashTableIter, GList, GPtrArray, GSList}; use migration::bindings::VMStateDescription; use qom::bindings::ObjectClass; use system::bindings::MemoryRegion; diff --git a/rust/system/src/bindings.rs b/rust/system/src/bindings.rs index ddccfe0436f..7164c5219a5 100644 --- a/rust/system/src/bindings.rs +++ b/rust/system/src/bindings.rs @@ -19,10 +19,7 @@ )] =20 use common::Zeroable; -use glib_sys::{ - guint, GArray, GByteArray, GHashTable, GHashTableIter, GList, GPollFD,= GPtrArray, GSList, - GString, -}; +use glib_sys::{guint, GHashTable, GHashTableIter, GList, GPollFD, GPtrArra= y, GSList}; =20 #[cfg(MESON)] include!("bindings.inc.rs"); --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827153; cv=none; d=zohomail.com; s=zohoarc; b=fKl0pIm1vTGMywQ2b/PKB8zjGHxPS32jSsdcdiAngBrsgpzMK0+q8ba0lw3W6Hl7F7ete0G05P4Kpy+fbKU4oaNQ4nqNAFHkdls/ZwrH5hoagAgl/IF2YMhrOUusrDRaHcGuwJ+2GH1koRlBbei5+j4HjQbkukFMw6yd3SNYuQQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827153; 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=d7SYOw4sQQDax6EO5Hl/iUoTI2G92OOQPR76b24ZCis=; b=F0gLpHoQjbI2DEOwnVT0ktu9paLLSyWoP6jOfGVVouRjpJfKUpPPnlMc/sPrgvAaUhcsipOKSqpc77YhTeP/OWQLMTd4OpBI2wMVsprlgQbelvhQlYN0kJuomIcqkvDx8Dk4qswM2SXdGt2IhfAjBVNPyfmv1ZS+sf5rGDAbnu0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827153599250.8475577238887; Sat, 27 Dec 2025 01:19:13 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQR-00037n-Nd; Sat, 27 Dec 2025 04:17:27 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQQ-0002z3-Km for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:26 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQO-0002jf-VU for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:26 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-148-13oPvDatOwqraIgi9pOwfg-1; Sat, 27 Dec 2025 04:17:22 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-47d4029340aso23149445e9.3 for ; Sat, 27 Dec 2025 01:17:22 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d192e88f5sm427166925e9.0.2025.12.27.01.17.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827044; 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=d7SYOw4sQQDax6EO5Hl/iUoTI2G92OOQPR76b24ZCis=; b=dEWG63tPw2QwJj/HrFLsGT+bV9UPvarGhcrP7uglH+tuQF/6c0j77xNzqm9AgZLnevN/32 WHs1tcS5D9FmKb8aYjThGcUWnCe/MInBvExLrJEzbHZOGF26uGr7xafCdNZVtYaXABMsDI 5a5XAJJlXf05ymz/qYRXL28Dp1/c32o= X-MC-Unique: 13oPvDatOwqraIgi9pOwfg-1 X-Mimecast-MFC-AGG-ID: 13oPvDatOwqraIgi9pOwfg_1766827041 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827040; x=1767431840; 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; bh=d7SYOw4sQQDax6EO5Hl/iUoTI2G92OOQPR76b24ZCis=; b=UAE/OMgqZxoQt77VqV9/4nMxef5vcYGekiKimmdEuRPpMjdZaonwvbrBQ1m3AVkz7g OD2VuYx8ot7u/PAwXYVek3MavHfZ/LQSn4V82e4fsSB6US3X4GE3xm+WXUP63qP1HygC EwkZhSpBjQgvy5tSRjpVRoOjenFx5JKb5TFKPhro+6JapLHEiM38guiTlETqi0lvo+o/ AjPTTFlVjtnZdalZ8oRAh+NSrPgS34q1/omfhLSS82zoHa2dXuG8glsrUVLZ19+DQo4v Ypug2+FwBBhN31pX4fttt6TE39KpdYLF1KhypmQcEYLls9erwectnTS2+mh8aVFOMaSx hAcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827040; x=1767431840; 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; bh=d7SYOw4sQQDax6EO5Hl/iUoTI2G92OOQPR76b24ZCis=; b=kVne/6HMCcWBo6HLY8P07Z2xK7QggUn3Y8pZPPH1b2rm+U3rVq1/nUB7Tr/Kj47I34 cRvwph2uoOR7c1V6WcOZSWQaPYLQhv+rxM+wiJO86y+oZ52WbQfCDoC8j58BWwmSWTYX QCqOpTK1yfuezDHNvkGkMWhYb5dxJ2wlGzkS9jZ2XfkPlyomC2MOUWZCNPX9ffq/dyGG uZv6Ml/wNT8aac0YOLB80yHfa56FM6QbLDSuget2gG9W8z+VwFYMpkuR5ldbpzlVKSdi oi67F1pXiVwnZG6gYub1+lUDH28+XZKXO+pXK5Tl1SQgwbl7puHXkJ9apcEZcf3xClcS yKZA== X-Gm-Message-State: AOJu0YyHtsZB4NerBDN6knrrFcCJXlD2o9DxLQuV/h6YmrD3wktFLeG+ eNjU9C2tAcfLk4PW0pOTzmJYRDLprLP9Yy5JZPjBnJ9D8Nuzfxf5GvJ/zR33scUCe56xaRn5gAq Oq4yQOZa41AdbKppI7Z+CiySFp+fOmbrTsWYmIxWo/oBs17yKtCTWeuh5wUiC8pb8P1YrlMhF30 cPsGi2oRqNv2HaBbpkwKlU5otFGoGIlYl7q+g4nGGn X-Gm-Gg: AY/fxX51HqG+bU1irqS/AbvF/x+a+3krGQSyYs/wOKHDax9Y9VJimdGoDZw+hNa7dpC Mcqma3AfY8aCmwCGSVIZERHfE0RJcSuWafXnq12xQJDPsHXx6ZwcrLWLcAGDvVLW6gj55S6b3Yh MVW32JyCT4tbGN2usxcUgpVlYdz4F+3s0AWAseEm1/SGnL6/qwybA6uagYoQULVQa5ibmXxmKDi XLJPOXeRxqdSKnPCrKtGCvrsI7cfAjLUODUQEdXgs6IvyqukE31rK1BeF9BpEgkQ18/QrZOtLNH xx12KwtHDiTBt/yMu1NRgnrsAcsi98hmg9xnXYbNXQ4i5SCx1xEwSzDA/j2AO1TURHN4CoMELcI HLfxPHOi6d4zfred8soJkIoThVgsoY6uJuQ6limxKFDnClR262kU+KAbllYxnzH6oOVccjz4rit nfhzCodb5UTpMilGo= X-Received: by 2002:a05:600c:314f:b0:47d:4fbe:e6cc with SMTP id 5b1f17b1804b1-47d4fbee749mr18018425e9.13.1766827040349; Sat, 27 Dec 2025 01:17:20 -0800 (PST) X-Google-Smtp-Source: AGHT+IGA4TTzFVoVBxsMgBe2zMFziu9DEzsmavLgTtSYCv2qtvHGYCCsvtdVLRfg4LxH4Z5MzzxsVQ== X-Received: by 2002:a05:600c:314f:b0:47d:4fbe:e6cc with SMTP id 5b1f17b1804b1-47d4fbee749mr18018095e9.13.1766827039807; Sat, 27 Dec 2025 01:17:19 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Zhao Liu Subject: [PULL 030/153] rust: remove leftover bindings/ Date: Sat, 27 Dec 2025 10:14:17 +0100 Message-ID: <20251227091622.20725-31-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827155450158501 From: Marc-Andr=C3=A9 Lureau Reviewed-by: Zhao Liu Signed-off-by: Marc-Andr=C3=A9 Lureau --- rust/bindings/src/lib.rs | 64 ---------------------------------------- 1 file changed, 64 deletions(-) delete mode 100644 rust/bindings/src/lib.rs diff --git a/rust/bindings/src/lib.rs b/rust/bindings/src/lib.rs deleted file mode 100644 index 4c9bb794f79..00000000000 --- a/rust/bindings/src/lib.rs +++ /dev/null @@ -1,64 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -#![allow( - dead_code, - improper_ctypes_definitions, - improper_ctypes, - non_camel_case_types, - non_snake_case, - non_upper_case_globals, - unsafe_op_in_unsafe_fn, - clippy::pedantic, - clippy::restriction, - clippy::style, - clippy::missing_const_for_fn, - clippy::ptr_offset_with_cast, - clippy::useless_transmute, - clippy::missing_safety_doc -)] - -//! `bindgen`-generated declarations. - -#[cfg(MESON)] -include!("bindings.inc.rs"); - -#[cfg(not(MESON))] -include!(concat!(env!("OUT_DIR"), "/bindings.inc.rs")); - -// SAFETY: these are implemented in C; the bindings need to assert that the -// BQL is taken, either directly or via `BqlCell` and `BqlRefCell`. -// When bindings for character devices are introduced, this can be -// moved to the Opaque<> wrapper in src/chardev.rs. -unsafe impl Send for CharFrontend {} -unsafe impl Sync for CharFrontend {} - -// SAFETY: this is a pure data struct -unsafe impl Send for CoalescedMemoryRange {} -unsafe impl Sync for CoalescedMemoryRange {} - -// SAFETY: these are constants and vtables; the Send and Sync requirements -// are deferred to the unsafe callbacks that they contain -unsafe impl Send for MemoryRegionOps {} -unsafe impl Sync for MemoryRegionOps {} - -unsafe impl Send for Property {} -unsafe impl Sync for Property {} - -unsafe impl Send for TypeInfo {} -unsafe impl Sync for TypeInfo {} - -unsafe impl Send for VMStateDescription {} -unsafe impl Sync for VMStateDescription {} - -unsafe impl Send for VMStateField {} -unsafe impl Sync for VMStateField {} - -unsafe impl Send for VMStateInfo {} -unsafe impl Sync for VMStateInfo {} - -// bindgen does not derive Default here -#[allow(clippy::derivable_impls)] -impl Default for VMStateFlags { - fn default() -> Self { - Self(0) - } -} --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827458; cv=none; d=zohomail.com; s=zohoarc; b=Hk1Hc4MJ+9vd/dbBTKPSv+j6xTgUAOL1U/B28PKneC5DC6NpEQdO8oc7OAv6jC2Uvme4b6OF/XVNtMbYQPqoLp2rO9z0D9CIeK6lyL7fwom+u4L1lmZnMirBNPclrSwS4ELBhTaXX/uOjm5AmYVHzK93OWwajlFZ8BzizBpfIRI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827458; 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=fIxIm1q5tYjU5GatZa6c3wxEnNz1WzWG0Tw3dE7ZdZs=; b=aqdrz+lNGQrNohMSluX+0nS0Ua7w89asn1GclQDaFHmv5ruWbob4UHh9icm9LYo0KmSmS+wAYUTCMV3vXq/qwKezCHmyClUoAgKGIZH03Ol2kYBEyFuClwxmMDGVqzXhCy2584ZvYbW3t8Gh5dUwp8HFUmTGuqzyiyQ+vXGOD2I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176682745801680.68731244446735; Sat, 27 Dec 2025 01:24:18 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQX-0003tg-Ec; Sat, 27 Dec 2025 04:17:33 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQV-0003fO-M7 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:31 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQQ-0002k0-HW for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:31 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-447-L12XIUo_NqWb9_ahV-SnfQ-1; Sat, 27 Dec 2025 04:17:24 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-4779b432aecso45556395e9.0 for ; Sat, 27 Dec 2025 01:17:23 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea82feasm50100215f8f.24.2025.12.27.01.17.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827045; 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=fIxIm1q5tYjU5GatZa6c3wxEnNz1WzWG0Tw3dE7ZdZs=; b=gCNw/fhhyhyBPxn+/qtb8CSPZoNpKul1zfesGddBQnw+AO2aNDKeBIUjXvYfctMkjq/tUu ztrfMvqma9r3fsaK2685fWFxJkcjQpxrOFN7GD5qabFXgWonAfHq0Hn2QjYIlGCjc1QJo7 4n8ZcTwrObErYkGV8MuR5bjcidGG/dc= X-MC-Unique: L12XIUo_NqWb9_ahV-SnfQ-1 X-Mimecast-MFC-AGG-ID: L12XIUo_NqWb9_ahV-SnfQ_1766827043 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827041; x=1767431841; 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; bh=fIxIm1q5tYjU5GatZa6c3wxEnNz1WzWG0Tw3dE7ZdZs=; b=hBWqCpzziomhDN7BkhCRKKkXNPUy2/2lFZ/u4oheVz0ldzEJeHet9yMqOVHRU+8dxl s4Dk0wYSSRfALCYoRCJx3bJo9lc95vAho/R3R5n746HDKwM9+iwyqxb1rM9rno1Rtyv5 4hHMShc8pLf8w7yJWlVJJVNyFcXQwYTeVZUIST0FDQdh14bgcZpOgTvmqNhOq/cIJdif NLeGNvuTnzsA6YY/9EuRuAbxAQZv4dYmcfRrUnzJhO+oBkvK83/j8hHIQj9SBNXW/xRg e0PPnhtdDs6wukYxLUUZQlUzJUHMxYCT/n0YiLwEBE2bjeKh4aQU6xIEZEw2bA/hkRYM lVPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827041; x=1767431841; 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; bh=fIxIm1q5tYjU5GatZa6c3wxEnNz1WzWG0Tw3dE7ZdZs=; b=PpR0DjvmPB0yoWBTgP7G+Isrc7bJrZD7U5GwTJMVZFmKV/pzvd5xENS3zzOLb/88BO LRdldayrWJUe691fn+XNJP42vhgtLheUENXSBeg7r7vKkxv1SswOEjmNdnbhV2Nj/WpM 2psL/noXu9gE0gCrgzXIo2AePsUCJpBQ/UP3tFjTEQodF+6IJF4mqVARMIj26383GZmY yMv/1droK1F3jNDPj8UXnvFXrN9VsEgIGSa+0ynM5c2ehsp/jwDQiWYqN/JQXrwnb1EA fTdr8zLSb1jUYILdRYWC0CMhGVkoYgaEQbnwH18hpGciy0y/PnKj352hZIqWK+jUXbeN AuRg== X-Gm-Message-State: AOJu0Yy+pAiVw1SuTpaDnyAnzqOtacp+S1Ks8lrIddxuM7Fbsp0YtC8/ dm6nNFvAnTYYo3YicQTIwlRV5TOCVFIIdNDgVZnu6QDBmd4R/3DdBbO7tnDfYnzOkU6BNmKmoUv llJL9F6f/HpylNEo/0vg+30HubKUyYbLKRCjr7gRppwio6156uWdQN+raTM78smiv9FwEZKB6qM OjCcWnDDcKAnqmV5vzd7lu3XUZWARG1cSrt2WELVLj X-Gm-Gg: AY/fxX5x54WkqhTgRRsnhahjJGdFPBTH7WsOy8ONV1H9MOB9OabOHo3lHsaOTJ59ivw g4U4KVVB06oD2ASjvhTbUn1YtGTQVEnRov958rLHSO11GF3GjDgWBZ1HVvwWEI57+4WYcEX7xdX 5iosw1w1JG/L37to/6G6KPSTJhsnDqCpwjxxtujhnh7H6ceTIhAzsiyYGwuWwxhDxSzy+6O80Ke F5ZFspQKsuAbB5HMKWjh/FqwqOKeedk7mhmMRoVwhIlePL0G9Z57c2WgukwiWqj0+gTwHIbvIJZ AFZdLu5Z10QyTRcLvo/MxF6X9BkyRY7+RxhWRGl/jTmGBuxdkaJiPwr2S+FcYHzX5ofzYggW2nF cumOIA+xI6c/hh6tFKIZ9rbeTjyQExjPSq/D+iSCf9TY6WZvqvpp5YeigqUFHDd2DO4TbYcuIcG Xu1oEHFPOpfZ4Ttf0= X-Received: by 2002:a05:600d:101:b0:475:de14:db1e with SMTP id 5b1f17b1804b1-47d1957b7c8mr189516735e9.24.1766827041318; Sat, 27 Dec 2025 01:17:21 -0800 (PST) X-Google-Smtp-Source: AGHT+IHOoNu16LC9DsIevHM2UHAPf7uAJC5pto81x1sFonitHhE1M0RBKHsdpLzxp4Ql1H7sckNEHg== X-Received: by 2002:a05:600d:101:b0:475:de14:db1e with SMTP id 5b1f17b1804b1-47d1957b7c8mr189516565e9.24.1766827040920; Sat, 27 Dec 2025 01:17:20 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 031/153] rust: remove unused --cfg arguments Date: Sat, 27 Dec 2025 10:14:18 +0100 Message-ID: <20251227091622.20725-32-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827458589158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- rust/qemu-macros/meson.build | 5 ----- subprojects/packagefiles/bilge-impl-0.2-rs/meson.build | 3 --- subprojects/packagefiles/proc-macro-error-1-rs/meson.build | 1 - .../packagefiles/proc-macro-error-attr-1-rs/meson.build | 3 --- 4 files changed, 12 deletions(-) diff --git a/rust/qemu-macros/meson.build b/rust/qemu-macros/meson.build index 0f27e0df925..17b2a4e2e24 100644 --- a/rust/qemu-macros/meson.build +++ b/rust/qemu-macros/meson.build @@ -2,11 +2,6 @@ _qemu_macros_rs =3D rust.proc_macro( 'qemu_macros', files('src/lib.rs'), override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_args: [ - '--cfg', 'use_fallback', - '--cfg', 'feature=3D"syn-error"', - '--cfg', 'feature=3D"proc-macro"', - ], dependencies: [ attrs_rs_native, proc_macro2_rs_native, diff --git a/subprojects/packagefiles/bilge-impl-0.2-rs/meson.build b/subpr= ojects/packagefiles/bilge-impl-0.2-rs/meson.build index 42b03dcd53c..04617b875c5 100644 --- a/subprojects/packagefiles/bilge-impl-0.2-rs/meson.build +++ b/subprojects/packagefiles/bilge-impl-0.2-rs/meson.build @@ -26,9 +26,6 @@ _bilge_impl_rs =3D rust.proc_macro( override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_args: [ '--cap-lints', 'allow', - '--cfg', 'use_fallback', - '--cfg', 'feature=3D"syn-error"', - '--cfg', 'feature=3D"proc-macro"', ], dependencies: [ itertools_dep, diff --git a/subprojects/packagefiles/proc-macro-error-1-rs/meson.build b/s= ubprojects/packagefiles/proc-macro-error-1-rs/meson.build index 10c2741085c..8ba558e1330 100644 --- a/subprojects/packagefiles/proc-macro-error-1-rs/meson.build +++ b/subprojects/packagefiles/proc-macro-error-1-rs/meson.build @@ -23,7 +23,6 @@ _proc_macro_error_rs =3D static_library( '--cap-lints', 'allow', '--cfg', 'use_fallback', '--cfg', 'feature=3D"syn-error"', - '--cfg', 'feature=3D"proc-macro"', '-A', 'non_fmt_panics' ], dependencies: [ 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 index c4c4c5e397c..a85d7c07143 100644 --- a/subprojects/packagefiles/proc-macro-error-attr-1-rs/meson.build +++ b/subprojects/packagefiles/proc-macro-error-attr-1-rs/meson.build @@ -17,9 +17,6 @@ _proc_macro_error_attr_rs =3D rust.proc_macro( override_options: ['rust_std=3D2018', 'build.rust_std=3D2018'], rust_args: [ '--cap-lints', 'allow', - '--cfg', 'use_fallback', - '--cfg', 'feature=3D"syn-error"', - '--cfg', 'feature=3D"proc-macro"' ], dependencies: [ proc_macro2_dep, --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827550; cv=none; d=zohomail.com; s=zohoarc; b=d+9JGp3oaKV+WY7RPCZ8vOiJS8uVdsfyTp/UsIkPFX+SDfmRNM2eswIQB8tJMTXGNjioSSOeiylGYJp6MpTxNxCDnYvHFdiWkEw8QLOTXOAjDG6cJIlg6vzTaDdNia5YTrcwtcyqd06O1TtyWCAvmn7BWoBp3pCp7F3lPZcjSIA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827550; 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=Z7YclRVtO4qoFigCNOFrbbMZmcmDW1b22zXAtv4jyAY=; b=hSVev73jm+ZNePd32LGBQ/shaCCEdWV9kdgLUNkLeHmFk9kgmeuXr280+dXbHf8xzpZON7c3Bes5uacSs6d+HJ27Bs87d2rwKpnYIrzVvoLbpqiGnIzPdBYnydctmTNvw09zHs3qm/+AMlEW8swddmymTyzvvizWCiAbpTWzId4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827550631563.2962709739326; Sat, 27 Dec 2025 01:25:50 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQZ-0004Ma-Fg; Sat, 27 Dec 2025 04:17:35 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQX-0003qZ-1b for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:33 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQU-0002lS-1Z for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:32 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-433-bl1MYdBAPEWIdOprNAxo3g-1; Sat, 27 Dec 2025 04:17:26 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-477cf2230c8so77990305e9.0 for ; Sat, 27 Dec 2025 01:17:26 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d193d4f09sm442644615e9.12.2025.12.27.01.17.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827049; 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=Z7YclRVtO4qoFigCNOFrbbMZmcmDW1b22zXAtv4jyAY=; b=ZeT3SmBDFsFWUOCH4GbBZs7zgNWdzF7ifSJ5ixHkKzNpFXsektdUqMF8fvklPnOitla9NV r5z96MzFYkvJHEf+D02pygR7cj6TxLAW/fuyhBrB4igKnZnSTLimBYqYWwHc2iOQSG4pmo cdPv/YFObC3U7MFf7hKgrEcS90TE17c= X-MC-Unique: bl1MYdBAPEWIdOprNAxo3g-1 X-Mimecast-MFC-AGG-ID: bl1MYdBAPEWIdOprNAxo3g_1766827045 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827045; x=1767431845; 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; bh=Z7YclRVtO4qoFigCNOFrbbMZmcmDW1b22zXAtv4jyAY=; b=Urix5876PMrPQslxHq3fD4c9dtnr1g0Mu751DrEyUdkCJdqnn7pSqkjUOL5zE+b6QG o/AXXd4+m4Tewtk8nMwRwSCjAK/19KOM7eh9EwN208IXLOQ45eQ7hMUHdSnSS5970ZVh 1MrfyRQDGEuEZHJ4+5FgxGIEvv6DvVCaM2PuUBnPtGSd+pSPjK5WKCabkSfao5JHWPpf 9SQo4XEruNv8UizN43uZi6G6fideEkP7dQwZbmClIUZ+nOkS/JNRQl+X4v5pVOrhJxK7 vmIC3DDNHqFkDD9P9d9RQValbZdnqhfS9Wb7gsMSHeZ4Ev/245GxeX1mIhVrLAS95IR2 2mVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827045; x=1767431845; 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; bh=Z7YclRVtO4qoFigCNOFrbbMZmcmDW1b22zXAtv4jyAY=; b=mr6/pN58CKk8Iwjwh51MB+HKYpue4Ndp5bmiJNYq0yWplfQ7KIorhWuRGplfyYOExP 9gcqXJOMtXWJR4yqeFvwKX88FmF7Mx6GBVzzf/TDScIVS2CRxOqG31dPn+PJzSHAKe7Z C+AO/12GuZ0kyqxiRdEBJLv5uywWy/JATQAtYScb6ewSu/0ugkY3rxE8dOcBaL8xqZVV xhHjXpE1+mFJI20GX/PVz1Yp0La9I6whw1RCAjpcAb9WJmTOKisrfuLxk2ktoHeKbt6l xVHZ/wUNmuYwChRVHxxlb96jkB1Bbef2MnHCh95agSIlxJ19GnUqeIm8fHRD6vmmmbEj cQiA== X-Gm-Message-State: AOJu0YzaBDQSmnC2aCd5M4iTDUxPIJuKbsf/IZ8LOtweU4uuUN8N10tq 2328tdWD3M6M0eSAUQIvHy6Bz0pmLZWsA2OvwEX435E/lUw0vTezzWZSdX5BKfqP+cz6x4AC6Dn KjLxlTqsS4V4ZltnYzYOr/P0dUIDmwHwsEBpvtHNfbxNHPX0M/nUJTeAiB8WA0k2+Pm+9bT0U7j EMnlv5nvkUJ+6hJ/F42JMYUIwIxjOVuEN3aSr9iv2/ X-Gm-Gg: AY/fxX51rmsrLzvW4ENhr5J/0EE6heIz/LobMbH4+zJ/IMA46p8Sh5GXlgt7QubuSy0 W4vHyD3R68pyjHVaj2b3JSVwfXv6oilG2IDhD4OvapLah9HUDXat+7t6hdQM4GmcOCW2SwzcO4R rrkEU7rSWOdyJlu4y42A0zAU+zRCvPe7zXpWdraDKi5PPxdGPEUkb24I9lsSEWEPVuDlnWhB6tP Of0Ts9u960aO4Bucvd1idNj0jjwXHaF/NK8Jb0iXi1bf50IQzknieeiF4TOFF2X7Jgw3hwRUcq2 6b9H2gdXlVTbFEAaaiboKDYdwybY1Id44wMctJjBEtW8TYp8YkY6nc5XsZ0Anvm0BFOnFnq56jo 90B+xP8PR6nhTEYxzJ07VJ+IEDFi3kyYfWIIiJaISjj+b9zjrqQpJrag87vyi3cn3M7/QAoVeeL MFe2/6FfrASCIn660= X-Received: by 2002:a05:600c:3ba3:b0:46e:761b:e7ff with SMTP id 5b1f17b1804b1-47d1958c90cmr283354195e9.28.1766827044626; Sat, 27 Dec 2025 01:17:24 -0800 (PST) X-Google-Smtp-Source: AGHT+IHlzsELfVLkTvLG9B+wbrBIn96UviLFWBwCGpOweK9mfeurgJfPufyDQMp/LMFgkL0hQYS/Hw== X-Received: by 2002:a05:600c:3ba3:b0:46e:761b:e7ff with SMTP id 5b1f17b1804b1-47d1958c90cmr283354005e9.28.1766827044190; Sat, 27 Dec 2025 01:17:24 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 032/153] rust: remove unnecessary repetitive options Date: Sat, 27 Dec 2025 10:14:19 +0100 Message-ID: <20251227091622.20725-33-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827550808158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- meson.build | 3 ++- rust/bits/meson.build | 2 -- rust/bql/meson.build | 2 -- rust/chardev/meson.build | 2 -- rust/common/meson.build | 2 -- rust/migration/meson.build | 2 -- rust/qemu-macros/meson.build | 1 - rust/qom/meson.build | 2 -- rust/system/meson.build | 2 -- rust/tests/meson.build | 1 - rust/trace/meson.build | 2 -- rust/util/meson.build | 2 -- 12 files changed, 2 insertions(+), 21 deletions(-) diff --git a/meson.build b/meson.build index d9293294d8e..270181038bf 100644 --- a/meson.build +++ b/meson.build @@ -1,6 +1,7 @@ project('qemu', ['c'], meson_version: '>=3D1.5.0', default_options: ['warning_level=3D1', 'c_std=3Dgnu11', 'cpp_std= =3Dgnu++11', 'b_colorout=3Dauto', - 'b_staticpic=3Dfalse', 'stdsplit=3Dfalse', 'opti= mization=3D2', 'b_pie=3Dtrue'], + 'b_staticpic=3Dfalse', 'stdsplit=3Dfalse', 'opti= mization=3D2', 'b_pie=3Dtrue', + 'rust_std=3D2021', 'build.rust_std=3D2021'], version: files('VERSION')) =20 meson.add_devenv({ 'MESON_BUILD_ROOT' : meson.project_build_root() }) diff --git a/rust/bits/meson.build b/rust/bits/meson.build index 359ca86f155..c0094ffcf38 100644 --- a/rust/bits/meson.build +++ b/rust/bits/meson.build @@ -1,8 +1,6 @@ _bits_rs =3D static_library( 'bits', 'src/lib.rs', - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', dependencies: [qemu_macros], ) =20 diff --git a/rust/bql/meson.build b/rust/bql/meson.build index 091372dd7b6..e5836e3f566 100644 --- a/rust/bql/meson.build +++ b/rust/bql/meson.build @@ -34,8 +34,6 @@ _bql_rs =3D static_library( ], {'.': _bql_bindings_inc_rs} ), - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', rust_args: _bql_cfg, dependencies: [glib_sys_rs], ) diff --git a/rust/chardev/meson.build b/rust/chardev/meson.build index 36ada7c4546..6b681c609ad 100644 --- a/rust/chardev/meson.build +++ b/rust/chardev/meson.build @@ -33,8 +33,6 @@ _chardev_rs =3D static_library( ], {'.': _chardev_bindings_inc_rs} ), - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', link_with: [_bql_rs, _migration_rs, _qom_rs, _util_rs], dependencies: [glib_sys_rs, common_rs, qemu_macros], ) diff --git a/rust/common/meson.build b/rust/common/meson.build index aff601d1df2..4b1cd35f639 100644 --- a/rust/common/meson.build +++ b/rust/common/meson.build @@ -16,8 +16,6 @@ _common_rs =3D static_library( 'src/zeroable.rs', ], ), - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', rust_args: _common_cfg, dependencies: [libc_rs, qemu_macros], ) diff --git a/rust/migration/meson.build b/rust/migration/meson.build index 444494700ad..94590dc1b87 100644 --- a/rust/migration/meson.build +++ b/rust/migration/meson.build @@ -36,8 +36,6 @@ _migration_rs =3D static_library( ], {'.' : _migration_bindings_inc_rs}, ), - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', link_with: [_util_rs, _bql_rs], dependencies: [common_rs, glib_sys_rs, qemu_macros], ) diff --git a/rust/qemu-macros/meson.build b/rust/qemu-macros/meson.build index 17b2a4e2e24..cdea5bf439e 100644 --- a/rust/qemu-macros/meson.build +++ b/rust/qemu-macros/meson.build @@ -1,7 +1,6 @@ _qemu_macros_rs =3D rust.proc_macro( 'qemu_macros', files('src/lib.rs'), - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], dependencies: [ attrs_rs_native, proc_macro2_rs_native, diff --git a/rust/qom/meson.build b/rust/qom/meson.build index e50f41858d6..551c4f0bf5f 100644 --- a/rust/qom/meson.build +++ b/rust/qom/meson.build @@ -26,8 +26,6 @@ _qom_rs =3D static_library( ], {'.': _qom_bindings_inc_rs} ), - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', link_with: [_bql_rs, _migration_rs], dependencies: [common_rs, glib_sys_rs, qemu_macros], ) diff --git a/rust/system/meson.build b/rust/system/meson.build index 73d61991146..2cd2dd36679 100644 --- a/rust/system/meson.build +++ b/rust/system/meson.build @@ -33,8 +33,6 @@ _system_rs =3D static_library( ], {'.': _system_bindings_inc_rs} ), - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', link_with: [_bql_rs, _migration_rs, _qom_rs, _util_rs], dependencies: [glib_sys_rs, common_rs, qemu_macros], ) diff --git a/rust/tests/meson.build b/rust/tests/meson.build index 00688c66fb1..3c5020490b0 100644 --- a/rust/tests/meson.build +++ b/rust/tests/meson.build @@ -2,7 +2,6 @@ test('rust-integration', executable( 'rust-integration', files('tests/vmstate_tests.rs'), - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_args: ['--test'], install: false, dependencies: [bql_rs, common_rs, util_rs, migration_rs, qom_rs]), diff --git a/rust/trace/meson.build b/rust/trace/meson.build index adca57e5507..1b3498f7fc1 100644 --- a/rust/trace/meson.build +++ b/rust/trace/meson.build @@ -11,9 +11,7 @@ _trace_rs =3D static_library( 'trace', # Library name, lib_rs, trace_rs_targets, # List of generated `.rs` custom targets - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], dependencies: [libc_rs], - rust_abi: 'rust', ) =20 trace_rs =3D declare_dependency(link_with: _trace_rs) diff --git a/rust/util/meson.build b/rust/util/meson.build index 8ad344dccbd..18d67a4b374 100644 --- a/rust/util/meson.build +++ b/rust/util/meson.build @@ -38,8 +38,6 @@ _util_rs =3D static_library( ], {'.': _util_bindings_inc_rs} ), - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', dependencies: [anyhow_rs, libc_rs, foreign_rs, glib_sys_rs, common_rs, q= om, qemuutil], ) =20 --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827294; cv=none; d=zohomail.com; s=zohoarc; b=LxqPJYwkJs0AECF+4HHRW4vc7qXwVjdmz2MLhVAXzPITr39brjMdPn2SZyyXILjY4AHaEfRRyEoHxpDfLDlgIrhadPnstD3+HW62axLF4RjYRGb18oBZYV/KVawNJ9iZ+cHThxxaPkYDqssLgcEwLmW/+OhsLdqt9mVX3Oysq8c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827294; 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=FhMZmw4l6Hf5SDK8IzfKQnQK0WMwwbYlh1bvQfymtds=; b=ndxsOHRW0n8xDK5RW9LwivylM1mk3sWBke2+W6cEkLQCfMKnVLZLNdxJ3due9cKrkZ9C27glWKhZrd67O7BHnGDpy9UARo3zaFJLkRzDr/pSZ1UrjN2NBxkJc5fkw0HwwBfVYwcTOrV0tyasorLOuj6VKs1caQ1589Wl/2wFSkY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827294701563.1746400572416; Sat, 27 Dec 2025 01:21:34 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQY-0004CQ-KE; Sat, 27 Dec 2025 04:17:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQW-0003pl-TM for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:32 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQV-0002lr-G9 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:32 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-556-PEhCGSqBN4Kzkm8-dJO9Zw-1; Sat, 27 Dec 2025 04:17:29 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-47a97b719ccso46045225e9.2 for ; Sat, 27 Dec 2025 01:17:29 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be27b0d5asm489405475e9.13.2025.12.27.01.17.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827050; 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=FhMZmw4l6Hf5SDK8IzfKQnQK0WMwwbYlh1bvQfymtds=; b=Exs7qz9ADA3lzaWGx/AfVs8GMHnDB+5EoG6n/sTISAgN5mHOArP9JbJxrZzjwJIMLQgiM7 leS139K/j/E51j1NnJ/0DxVYEYZw1sH7gBr+v4yMTFOrGVZbRQ7AewuX78iPdg0/4p6X0c Lwh0mXva3U74ht9z0wAWWKLLAXZg/0c= X-MC-Unique: PEhCGSqBN4Kzkm8-dJO9Zw-1 X-Mimecast-MFC-AGG-ID: PEhCGSqBN4Kzkm8-dJO9Zw_1766827048 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827047; x=1767431847; 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; bh=FhMZmw4l6Hf5SDK8IzfKQnQK0WMwwbYlh1bvQfymtds=; b=tQCaRl4mf4zviyxZMZvV6hJG38f4OsDKuXmLKy8f0HJ7j+UbpLpvDDk3WqgIh0Si5S VIuNgQtv/Jc6U6rFGNTXxrTu1LDnx2hZkJtyK0LD4undt2aAhmt+xTWuGQdXboMkKlcy XqVBL3PRtU927jrZ8D4XilgXFSVAU9swdrO2SXd+v4yPMy9egzzQyknQNp4CkHx5WCpo zHMkNymNeT6nuDsfhdnjhiNfB7N94EEJghQ+KnjtcQIqmnT0Q2e/XXw4I0QW/QBzLBap BtWDNFyUojubBxahwOzOuYdnQiq/S+XhKs9zPjaLCUeghbbBmOCEUnDMJZ/jOfRCSoGl mg4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827047; x=1767431847; 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; bh=FhMZmw4l6Hf5SDK8IzfKQnQK0WMwwbYlh1bvQfymtds=; b=Isdd0wESQSfML0Z/eF/eBQHoeiRptnFamComiJqMFSh4N5Tfcew9BdZQSnSWHifvcm j5olakZvj8hSOahf3d0Ozxg49oNsKENxyYcZqvPkgAiWX87F6Mx5ebC75iMimVaqwhwj eP00GcmjPhSCOowTdr6KdftH8aQkCEaz3YVwf7HG6qppvSJC/D532FyJmh91rosleuOU KkhGVAdG1yR7fSUVx4ma6KId8Em6kxdtO0Wv5Nv0UPzKKoo0wnvGbhi1Wj2WfG9ihOyy ZPOT4+/ot+IHqGuD8sDjBj9R2m8nVvOVjWilS7egFfoW8xv+QeGi/NpMp71QbUJiBbA1 cV5A== X-Gm-Message-State: AOJu0Yyu3LUuYelxHqflD0SiyGg6yIwlDFr0YQDIjUmNNCRNlHp7+GmM yMnpEEK+m1khBEs2uHHUlhAXXTbDhRtIKc1oA64XE891H6wIMM9LAZM19dF+sDjb43Job7+xgOP Fd4boc0n5XOBp5aJMA3o2gPwyahnhVeXMkLoWfJzCAkfUaC6EdagzIdL98mzXb8Vdu7TrZDtTVG YtI8hL3lc/xpT5gM+BAtjyV+NIaRwaKyw3hprMwtRq X-Gm-Gg: AY/fxX6hHheLj0fE+x3VQJdrNQQlKj4UB3BGyMumBNeR2UySn69F4BpLM3/kjcXP+Wi IoPxi+w7BxmT4uZ3G4Ppyw1Fx2vOCP24QkWBrJYKf41rC0hUS22XqqfHOGmnmSq0Y3+upGS4uT1 MAErPbErJqBiTeFvn+XMa5QiqfoFMKNBbmNjkNsIzTPZv9RNSG+tWTJM6FqfChTl3cJeaDGCyT6 EPdd3BTDZQiCS5Lpbcl5BLbBXSVl1wHLl0/IVNIoPzB5FRFbfES8zr9hBa7MC+3yym8+47Vrw10 58wfc4VKY3RQ7/jd7pbK1E+rGqg/twHH273NSGk8QwmmUH4errPjYyKi55UdRhAEa1BUMQlbcdy t9pnkXMo14LXDndsZTGT3vGcIVEcBQuTQ5EePKaaHUDURxfwsedmsaR17rnB4wn8hXqQZA/ySE6 UM1iVuHWzAtLe4TQU= X-Received: by 2002:a05:600c:c83:b0:479:3876:22a8 with SMTP id 5b1f17b1804b1-47d19555940mr294996425e9.16.1766827047529; Sat, 27 Dec 2025 01:17:27 -0800 (PST) X-Google-Smtp-Source: AGHT+IFIbaFoSTuzbMOM6w2TnNnqHOHVgbC7rvsa5ZRIMPwj/Oiv/2BVWsdaAqBovczFP80Gz9bYQg== X-Received: by 2002:a05:600c:c83:b0:479:3876:22a8 with SMTP id 5b1f17b1804b1-47d19555940mr294996185e9.16.1766827047055; Sat, 27 Dec 2025 01:17:27 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 033/153] rust: do not copy the SysBusDevice Date: Sat, 27 Dec 2025 10:14:20 +0100 Message-ID: <20251227091622.20725-34-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827296167158501 Content-Type: text/plain; charset="utf-8" Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- rust/hw/core/src/sysbus.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/hw/core/src/sysbus.rs b/rust/hw/core/src/sysbus.rs index 68165e89295..ec620639be5 100644 --- a/rust/hw/core/src/sysbus.rs +++ b/rust/hw/core/src/sysbus.rs @@ -78,7 +78,7 @@ fn mmio_addr(&self, id: u32) -> Option { assert!(bql::is_locked()); // SAFETY: the BQL ensures that no one else writes to sbd.mmio[], = and // the SysBusDevice must be initialized to get an IsA. - let sbd =3D unsafe { *self.upcast().as_ptr() }; + let sbd =3D unsafe { &*self.upcast().as_ptr() }; let id: usize =3D id.try_into().unwrap(); if sbd.mmio[id].memory.is_null() { None --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827486; cv=none; d=zohomail.com; s=zohoarc; b=FSZFkEa6jUSNCkz5iBkmmOPCvyYeu/uIrlSL570dyAhZB27zi90fPfSAFzdorOdjS1HRFZN+qhm2DJIv5UGQxn46GhcUAhzaR80i1beg7BJ4RPtqeDcdY7VTo1gTx+JMIl0THy9AV8hMpkOkaX+4erUm59RnxWBO2bVxfwYu6S4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827486; 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=NGZ1x4J+t3Ww35ZOB0iffP3twL5jbSY9E6s3tqgBRTk=; b=EmCahgqtNccGjVmPVV3G0xqJ9owvpIsCMo9+9I7AAR3pI8tvV/PPfjOraeDkESqu3vaNR6qxE0xprDZUtheNBDN7RMlhuZM2RSXrjFsia8nuIfHtepbD26n+GjoLgjZTmcs78Cu7vr24SVAT8v9FWEudMJcemN5HBBWM8R6wWHc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827486661351.3539575763408; Sat, 27 Dec 2025 01:24:46 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQb-0004bi-43; Sat, 27 Dec 2025 04:17:37 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQZ-0004Ot-LF for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:35 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQY-0002nP-8a for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:35 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-562-taSur1p7NDipgJVVESXCAg-1; Sat, 27 Dec 2025 04:17:31 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-477cf2230c8so77990475e9.0 for ; Sat, 27 Dec 2025 01:17:31 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be273e4d5sm493338065e9.6.2025.12.27.01.17.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827053; 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=NGZ1x4J+t3Ww35ZOB0iffP3twL5jbSY9E6s3tqgBRTk=; b=Y6l8xxfBcu/5Wgzk2oQOI0YWscTKwaZg88N2IwbotcrUyE05JmYd93MmIqpRLbluV9LEQz 4XnuJZoeFnFqQ/rbmxRN6uVY+MKvl6bzco7qB9bA2/bshz48zBQs++b5/pKYfg3U9XNxDF dOqDS1gT1h+PcAFTA2JoRHSYhyn3zyw= X-MC-Unique: taSur1p7NDipgJVVESXCAg-1 X-Mimecast-MFC-AGG-ID: taSur1p7NDipgJVVESXCAg_1766827050 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827049; x=1767431849; 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; bh=NGZ1x4J+t3Ww35ZOB0iffP3twL5jbSY9E6s3tqgBRTk=; b=oVuvMqb01/bG97sVHrQlRiwJfHj5GvORET0X8F6bL2vNPst6RxNpc4eUVeyK+u9ENb rfgwbKzTbuBAz606wHqj001YZko2s21xVwWPjq8c1ysnYB19fq3ImdbGl6CPy4anV5rf ZU3Z/z6Mpd93vr4iKFbVQ0/gHfZCeIf+Hvp0xsmnLsuVGqkzWsRbp0g4IPDYsBL1vw7C vIAFMpfp1MtjZ2T43TV0MMQA3aggjHanKntnoxnC9w61ectMeJM8osZezzmkt8ReVmha oV2dk3iH4yblcP6D4IPgL3fqexpb6GFAQdpzt/8Lm8e7L2jsHALA+U+Rg9Kv+H8LIBBW LAhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827049; x=1767431849; 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; bh=NGZ1x4J+t3Ww35ZOB0iffP3twL5jbSY9E6s3tqgBRTk=; b=NFKQ1dor5ERrksPTBlbuGkqxoYYSrF7qIzJ9r0e6Bp8a+/qW+w84KHw/+iwXI1OedR QWbbFhjKJLzywNRMtOU5bwXIwA8l1noJzh40UBf95e5RamhIko9pi5wGZAeI64kANwYz HbEGh/DbX/iieP6krKHvpWAG9tfBiLT26JfBici/nyQdpM2oFjXUldSM6LqO82S/DFeP zc5ZjDajrvVoltVhoEhTfNmiYD3FjoAP9RBh0Lt69M6g2/+50VSFw0d09vo3Cis8Hq5n TB8Duqd0Ej6Xf6Krr6MLb3CEgpVMgxFlL8bR7m2KAlrTzWGyAPj7xHVF8vequ7+yOlyE ppdQ== X-Gm-Message-State: AOJu0Yz+fmFjCH7M3xgqOl1MNyyA2VRnIp1QG+Aq7U6ARnkElITXkrBS qdmi4mW5wP+EdmdAA4mhMfmVu7mEFDx8tlTJkKQdV34bfunCs52oU9oJ1mfzg4qXm8jFS9VCsvJ SFIHN4tnbByrJl1FqcI4LWbSzYq8OZf6AN6GW40//DGkWtANEALzmdDtodKUupW/477dGA09086 3NyLZPd2WjmODHCrSf6gly4f0TY+5UpG57qlneuYHR X-Gm-Gg: AY/fxX4d1n/856BCO72GnXfhyF9QSQ5udhUruSEQBwlC2RkG62mG1DUcYkoDoDnefEc GdeWPVXugMPSO50Hr0fZbFK6ngAsJeB05DWqj4syQItqraQyZb20kA/prEA3izVg7Vexl1friHX /dQS+4ZKq75gWkYaLmmriclYgpPlEdk3y40pgXtxYQTcf23RzCytkPNZhePChztwo0RKKN+8suN Dlb2aeATM6VSyJKGM0RhrqrHl3DI/5m3+wvsb0Gb9bKqit/4yuBPUxWrmwPosm5Tm2lld2xwaY7 mnQnDgtGIuYSqN8RsFDJ+vlw+RHZOF+I/YJ2qEvuavKyc/AvfFCv61QRVWNgENeWwLpW4uuambp K3MubhuBw9hM8qnUFcvl8tKs4K/0HbifZitHv6guj8nlwaLZPRM2BcBQ3iK0KAtdVdV6Ph81AQC Ib4eL0NY815/nMAPw= X-Received: by 2002:a05:600c:3b8f:b0:475:e09c:960e with SMTP id 5b1f17b1804b1-47d19593d0dmr357743335e9.32.1766827049545; Sat, 27 Dec 2025 01:17:29 -0800 (PST) X-Google-Smtp-Source: AGHT+IGM6vMRwVYuFux8yxcs7iuPLGmeN2n6jZ+dzlHBjlkfJ/m3jUZi3s0mheRGifJYQeDoCvwRnA== X-Received: by 2002:a05:600c:3b8f:b0:475:e09c:960e with SMTP id 5b1f17b1804b1-47d19593d0dmr357743075e9.32.1766827049141; Sat, 27 Dec 2025 01:17:29 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 034/153] rust: fix reference to MemoryRegion Date: Sat, 27 Dec 2025 10:14:21 +0100 Message-ID: <20251227091622.20725-35-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827488699158500 Content-Type: text/plain; charset="utf-8" Use the wrapper struct, not the C one. Signed-off-by: Paolo Bonzini --- rust/bql/src/cell.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/rust/bql/src/cell.rs b/rust/bql/src/cell.rs index 8ade7db629c..f4bfa697d32 100644 --- a/rust/bql/src/cell.rs +++ b/rust/bql/src/cell.rs @@ -41,10 +41,11 @@ //! this rule is not flexible enough. Sometimes it is required to have mul= tiple //! references to an object and yet mutate it. In particular, QEMU objects //! usually have their pointer shared with the "outside world very early in -//! their lifetime", for example when they create their -//! [`MemoryRegion`s](crate::bindings::MemoryRegion). Therefore, individu= al -//! parts of a device must be made mutable in a controlled manner; this m= odule -//! provides the tools to do so. +//! their lifetime", for example when they create their [`MemoryRegion`s]. +//! Therefore, individual parts of a device must be made mutable in a +//! controlled manner; this module provides the tools to do so. +//! +//! [`MemoryRegion`s]: ../../system/memory/struct.MemoryRegion.html //! //! ## Cell types //! --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827495; cv=none; d=zohomail.com; s=zohoarc; b=P8knQRR8HNqipTBiETe3Fr5RPpsIH4nzRziv/aaoHEld8kCeGfr3bYo2jMiMall1a8F+qZE5jRhERqdmmm34IyxYIeUJZ4oDrhONUyihhwlDQFZUJAgQ+IJE1xcPqkv0DrDMOh2b/Nnk3lTXvXz3g0O+DJFCFEIB7NyQvMUWVgc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827495; 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=ah8JPPokp8PIS242o3ghPDmvg2Xy6nZa/QiTTUPeBrw=; b=Wv6MRKvilMcd3mpDL2oj8R3UESnOFJj6w65RQP+6HVBPVvXU5n6WhmGhrquCiP3k95N279khOLzWbdVIHAQsNABAW0pMfw0H6igieTTpHITO5eytSOmuVdqDLBR/sej9/EY/df3zMKu+GRh8OWE1o6mnUAKHGeUsw/nxjAmvZf0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827495644879.7922628764644; Sat, 27 Dec 2025 01:24:55 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQd-0004o5-7Z; Sat, 27 Dec 2025 04:17:39 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQb-0004bt-2s for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:37 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQZ-0002qP-GF for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:36 -0500 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-590-I5KM845oMQWzdSaGniXmxw-1; Sat, 27 Dec 2025 04:17:33 -0500 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-430fdaba167so4115618f8f.3 for ; Sat, 27 Dec 2025 01:17:33 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea227casm49960066f8f.15.2025.12.27.01.17.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827055; 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=ah8JPPokp8PIS242o3ghPDmvg2Xy6nZa/QiTTUPeBrw=; b=JrshS1yVt3bcrfIedLmlpfDcv/DtQRJ4z3vMzYMamH1iqlon732e1LL/BWPlreMLb/zskK rbrtOVWBlNmZ2UvBt6/rHkbv+ZaObyj8wb2hC+4jsUsmZeryPXSJVEoiLZx0ZdPVq3UNZS 7aPh0o2nUUSUju/vM2wGvAWKrLYfXzc= X-MC-Unique: I5KM845oMQWzdSaGniXmxw-1 X-Mimecast-MFC-AGG-ID: I5KM845oMQWzdSaGniXmxw_1766827052 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827051; x=1767431851; 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; bh=ah8JPPokp8PIS242o3ghPDmvg2Xy6nZa/QiTTUPeBrw=; b=EwrGyLo98wRYrze4//IMPbAjDRm8VUdviMHN8mPMe4l+895OnhQCFryY2A3zJi31cJ 1PzSNnFC5oRWi/PKTusq4OdhBdvcbs++Ap55NNnDHb/jjxYREU3caQ4PNPVw8XcpTVrZ J4jt3b4rHHkXlGap0nvBC7reFKPUUe9ZhJKN9r9LFKEMOkgtVALT16NMiU3Adju0n3r7 iNZn2JyBaDhPTVdaC6D237BKIE9XftDUgOpKRUwMRFL26bAMpcqgDMbJ6tpt23mRIY+m vbtL3H64TuN18UVwIdQnvaWVQ+DgmzHOpBALiKsoHjOoKsfjJpsR3uQdthVD1GnjBZcv rROg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827051; x=1767431851; 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; bh=ah8JPPokp8PIS242o3ghPDmvg2Xy6nZa/QiTTUPeBrw=; b=wqjuhpHMrZ1JFt1vdvOPFr42kXsj69hNdNc4oPFiqctym0L6YCNAfGch8P7XIjJDPT aV6kyq7F4tR9zaO4j4vSYek9nTnVIrzxdXTXb3xoOtVNeWy5TXgCl8AVhlIVImqsAD+k +ONWiZfWcP/KqWUNuSyz5r16AxfpjmsArJLDAmQMeCz9sUb95GsEZby06190vDgqKgk8 Vu2Ly3fjMrPb9bi7sFJVOsmq233opax50VSEbxIw5RiATTd8+1A1YDDkyErlJSQCWXc8 Y6ZuKorJf+M0FsRELG2jy5CTzLImFq15u9ItCTSBVXehGQeF+R58rMzuxQkVJ512mkxm 6tiA== X-Gm-Message-State: AOJu0Yyy7AyEXHAvCftKIrKoqOAayV7evTxkTvfTyuU2wWrK8cS36xXP wKWDs5GSxoyWEi7DJjKGf/h/26KsebpfyK4sNVMZHXZVBGVJx0E6DBGfLY/QMb/seHxoPedXjrN JgChN7ZBTVJ7wDQVihjvOMqaAEAMjR6SYbrfOJxUYQJprU4XIU4j3/vMx03QUzUDki7ASirWvyb ng7R8p4eYI0YmgI9v1I3/AOtdONBtS7CYmZZM1i9c/ X-Gm-Gg: AY/fxX7JO53Hg4Hqr8j1j9N/gFNreUFA3y+SB0lU+z9sBSqQmWBxEvxImZofistGrSJ llgbHfqb7QqlcuZa9Kxy8T1dZiM21qIoE/dk5mYVHhmA20cdf5FAVSE1PP+HTffilnY8fgljO/h BbLYPQFeq+j7SwuzHI67fTQmogtzFrIKjCuVBCbM7VzcDzlonGMK7LIRBlu87w2nwS7tcHWmTWd myuhsQ6C3cCuaQp3zmOTabIuoo5iA4VJc3zau1Q2sQVLSHpLVWB+sfhXc6FOy7zmqvWXma+vHe9 AVXp6T9Fwt5Z4wnznbCpvuxgzkDP88oYi9cIKyKR899OWk5+RJMYn6Kj54RZMCJQ0Xmi5oD9Bem DxcoFKJ4wqR4A1s2gj1ivnnNjK5Ft/psLIFDLmd+PmHVEBkkWQ+8dSuU6B8b168y8PwQw56CRG6 O1ybcGUSCz/AUXlUQ= X-Received: by 2002:a5d:588c:0:b0:430:ff81:295d with SMTP id ffacd0b85a97d-4324e4f9350mr30589213f8f.41.1766827051222; Sat, 27 Dec 2025 01:17:31 -0800 (PST) X-Google-Smtp-Source: AGHT+IHinHH6HAofe1h8KWEgYSLXrHsnp1RiKfQP3PCHdwQtKJQBy/v0i7xB7LuWLLl8EWkkEUdcvQ== X-Received: by 2002:a5d:588c:0:b0:430:ff81:295d with SMTP id ffacd0b85a97d-4324e4f9350mr30589185f8f.41.1766827050758; Sat, 27 Dec 2025 01:17:30 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 035/153] rust: hide panicking default associated constants from rustdoc Date: Sat, 27 Dec 2025 10:14:22 +0100 Message-ID: <20251227091622.20725-36-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827496625158500 Content-Type: text/plain; charset="utf-8" Work around rustdoc issue that panics while trying to evaluate the constants. Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- rust/hw/core/src/qdev.rs | 1 + rust/migration/src/vmstate.rs | 1 + 2 files changed, 2 insertions(+) diff --git a/rust/hw/core/src/qdev.rs b/rust/hw/core/src/qdev.rs index 4e983da28b7..c2ca17f6ce0 100644 --- a/rust/hw/core/src/qdev.rs +++ b/rust/hw/core/src/qdev.rs @@ -132,6 +132,7 @@ pub trait ResettablePhasesImpl { /// [`bindings::PropertyInfo`] pointer for the trait implementation to be = safe. pub unsafe trait QDevProp { const BASE_INFO: *const bindings::PropertyInfo; + #[doc(hidden)] // https://github.com/rust-lang/rust/issues/149635 const BIT_INFO: *const bindings::PropertyInfo =3D { panic!("invalid type for bit property"); }; diff --git a/rust/migration/src/vmstate.rs b/rust/migration/src/vmstate.rs index 267f9c8e053..f9d9f335b98 100644 --- a/rust/migration/src/vmstate.rs +++ b/rust/migration/src/vmstate.rs @@ -101,6 +101,7 @@ pub unsafe trait VMState { /// type for the length (i.e. if it is not `u8`, `u16`, `u32`), using = it /// in a call to [`vmstate_of!`](crate::vmstate_of) will cause a /// compile-time error. + #[doc(hidden)] // https://github.com/rust-lang/rust/issues/149635 const VARRAY_FLAG: VMStateFlags =3D { panic!("invalid type for variable-sized array"); }; --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827115; cv=none; d=zohomail.com; s=zohoarc; b=LYZrlSETQhLnt5YuPl7PVQF4RjUVnWov6NXMN6o1D+UOubZl4/i5b3fCFQJsv19U2UBtAc9I0M+uDGToGBfcJTUEmnCvvyCWB5s6dBRhTf6xSX4wdfNmR0EW6uUOBrJnmiiCCa+R6AA8hOrcsACpGS3jTKV/w0SNk4i8vrwJJk8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827115; 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=5xP6RbDJdxuVF1c+h4BfUbKLKE7O4fF3Vh5w0OqHTD4=; b=LapKevw6KCzl7vHpdLTLIZsS2jlH19IeS9DDT+c4leCzUylb6iyXjlkNyO5pgIFWcnRJKWasWY5cpXc+F0nwnWgkyeMcZ3xOWI1U7YVjC9nNmOp5MkRThmNyY7dutc8OBS5oWTj2C/jL6bvG4GoTjMkCl1vQl9/d4a1MdduQxqU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827115553512.2409519320821; Sat, 27 Dec 2025 01:18:35 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQi-0004x5-96; Sat, 27 Dec 2025 04:17:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQg-0004vt-TD for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:42 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQe-00032Y-9m for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:42 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-275-oRe9ZkfpPpSmtjOgZBnf1A-1; Sat, 27 Dec 2025 04:17:36 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-4779b3749a8so54867355e9.1 for ; Sat, 27 Dec 2025 01:17:36 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea82fa1sm48076085f8f.23.2025.12.27.01.17.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827059; 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=5xP6RbDJdxuVF1c+h4BfUbKLKE7O4fF3Vh5w0OqHTD4=; b=SHsLEeeinrHkk7bQMqNMpkMF15Th+Yd9bCSGDrRY3IvnC/PiDCQroQvTkZcsxm4dASyHhs hYW9vo5MbW30O2wv80/vU/T10jlWSuserOA1p8LXRe/PIH2wjRoiRakYGBxwCVozlM2K9M ZLZt3TUsdCw2sfTehhhyWOzPh/xeDEU= X-MC-Unique: oRe9ZkfpPpSmtjOgZBnf1A-1 X-Mimecast-MFC-AGG-ID: oRe9ZkfpPpSmtjOgZBnf1A_1766827056 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827054; x=1767431854; 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; bh=5xP6RbDJdxuVF1c+h4BfUbKLKE7O4fF3Vh5w0OqHTD4=; b=LLrW52SEvVC710rz0V1wqRTAM40bq+yIm+dkyR7ubr1J7zN4RV9rHzTUxPRnl8bl1j zXqxdcCrq6QhlVL5PRDtSeqr5XPBMAkzjara5eRMX+u1PlXU/9XYlA6mJqtVcOdn4fKL tFeCaAoDUA4TeHSL1ZdF59F1GcFE8I0gEN/eJEofX+VVct6Ah1dXNFW2U5z8B1X7x/44 ataPdlIVUUJXGZC6fXF59myxqGOIe6PcgMogYjSh3wQa1eNC00obMhF3FUzw3rIB28iW xNvBq9uD77z8iK/VfcT7+En6vBPQm6nJDdXmRftYSjhzrkeLOOmS9TU58B/bLCdk6R2n sHxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827054; x=1767431854; 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; bh=5xP6RbDJdxuVF1c+h4BfUbKLKE7O4fF3Vh5w0OqHTD4=; b=nDNxUiyXDWBsv2XaPyuHAnVaaPdcsGlmohlkcWb31hcy8/YT8e51MuscCbmwMXRpZf tmF4HGwPKmnkY9LvJmHQ4U5mcyr/Cejrs6C1IQDCQxnPkUSv5iZEQhoMjllFvZfDZZ/n epSYk2nce3lUnJqC5DQ+axzfHdeCTwiWKSr7kwGxVyoMIyLHFWcF0hO6wRUNFQ8yIffd qVQz/mij5Kia/kQKrKjATL3YaXxiLx77ABAJnhGXoKCtaGVjdVCaSPZ0xd6OMggd2Fnm GhHJ2o8z6wc7yQ7RCDksuPf3WCjZKqmiSJT1DIWTgL9KZNsBy1BO6BiW8qfdJkuQK2b7 IY0Q== X-Gm-Message-State: AOJu0YyURvjfA9Vc1J/uDShXfVaXocFQYBeGmu/elGRRlCGbIRZdhOLf lS0zgs9Plv/S2Yc7cxMBySqBB088OXDGWNwaDzKQ04j29DTjP5S/6DVgPCFaYSP0pDBM6dTF1hz vj3rmMAmHHs8KrZMqCrMOcnGP+rdDWcOo3hE46larzMc2lHBMmKXaj4exyXOcWJ5tpJ7z7P+iLT wA/AUnzZ20omdFNYGBu0Z9SVNlBvS+4pQ0eo1bO6sc X-Gm-Gg: AY/fxX6UGduvbTF+fatZkwYTN2G4ythFY/m5gmh3/yRdpUQBgeP8JI4yECCPExZFYYo G2tbY3guK/pfIzYl7gHV0KczffABBN4wIFgysPwFV2AGj+Jh1gMlwWGOhc1eyCwWGHShRqQJsLG W9MBC+9gRpjPNtpoi46Ef8u5UfA6Bwhk5nUltsCVzm2k13DhJKIUtro/S/thdzZXao26ZnsS8qV 2PKVRyPhmocjvKiN/yDdZn6j0aB6wLVs6OFXHkAod3HAkGTBe5H82yiHDuoaECxeUj+JKeiIHEJ /gpw1/osWcmC3ZrVBuSZc7a+Hn2gluNU6Z/lJmgdepDKFuEf1KG9DzG1L8JdDzGcKmMyaJ2K2Dt nsuIFc2EjFtzPGsC1HbUf/j/edxKm885Ri9HLFtPzHvrwmSVVvhosPg4yF0aE1DPWECUL14ViAf 0BfgYDkM8+IH0pm88= X-Received: by 2002:a05:600c:19c6:b0:477:7b9a:bb0a with SMTP id 5b1f17b1804b1-47d4cb41658mr52598825e9.21.1766827054119; Sat, 27 Dec 2025 01:17:34 -0800 (PST) X-Google-Smtp-Source: AGHT+IFYvmmj3BK11NvnSycBHmzd+Lmg1JzeV29inqTR3Znqp/L8j2XTZWBpKwB0CBu7B+CzDdG22Q== X-Received: by 2002:a05:600c:19c6:b0:477:7b9a:bb0a with SMTP id 5b1f17b1804b1-47d4cb41658mr52598515e9.21.1766827053669; Sat, 27 Dec 2025 01:17:33 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 036/153] rust: move strict lints handling to meson.build Date: Sat, 27 Dec 2025 10:14:23 +0100 Message-ID: <20251227091622.20725-37-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827117370158500 Content-Type: text/plain; charset="utf-8" Simplify rustc_args.py, and align its code with what Meson's own Cargo.toml translator does in v1.10. Bump unknown_lints to "forbid", so that it will certainly override Cargo.to= ml's "allow" level. Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- meson.build | 7 +++---- scripts/rust/rustc_args.py | 21 +++------------------ 2 files changed, 6 insertions(+), 22 deletions(-) diff --git a/meson.build b/meson.build index 270181038bf..e6a11cefdb7 100644 --- a/meson.build +++ b/meson.build @@ -128,14 +128,13 @@ if have_rust rustc_args =3D [find_program('scripts/rust/rustc_args.py'), '--rustc-version', rustc.version(), '--workspace', meson.project_source_root() / 'rust'] - if get_option('strict_rust_lints') - rustc_args +=3D ['--strict-lints'] - endif - 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 =20 # Apart from procedural macros, our Rust executables will often link # with C code, so include all the libraries that C code needs. This diff --git a/scripts/rust/rustc_args.py b/scripts/rust/rustc_args.py index 63b0748e0d3..8098053720a 100644 --- a/scripts/rust/rustc_args.py +++ b/scripts/rust/rustc_args.py @@ -35,8 +35,6 @@ except ImportError: import tomli as tomllib =20 -STRICT_LINTS =3D {"unknown_lints", "warnings"} - =20 class CargoTOML: tomldata: Mapping[Any, Any] @@ -82,7 +80,7 @@ class LintFlag: priority: int =20 =20 -def generate_lint_flags(cargo_toml: CargoTOML, strict_lints: bool) -> Iter= able[str]: +def generate_lint_flags(cargo_toml: CargoTOML) -> Iterable[str]: """Converts Cargo.toml lints to rustc -A/-D/-F/-W flags.""" =20 toml_lints =3D cargo_toml.lints @@ -103,13 +101,7 @@ def generate_lint_flags(cargo_toml: CargoTOML, strict_= lints: bool) -> Iterable[s flag =3D "-F" else: raise Exception(f"invalid level {level} for {prefix}{lint}= ") - - if not (strict_lints and lint in STRICT_LINTS): - lint_list.append(LintFlag(flags=3D[flag, prefix + lint], p= riority=3Dpriority)) - - if strict_lints: - for lint in STRICT_LINTS: - lint_list.append(LintFlag(flags=3D["-D", lint], priority=3D100= 0000)) + lint_list.append(LintFlag(flags=3D[flag, prefix + lint], prior= ity=3Dpriority)) =20 lint_list.sort(key=3Dlambda x: x.priority) for lint in lint_list: @@ -187,13 +179,6 @@ def main() -> None: required=3DFalse, default=3D"1.0.0", ) - parser.add_argument( - "--strict-lints", - action=3D"store_true", - dest=3D"strict_lints", - help=3D"apply stricter checks (for nightly Rust)", - default=3DFalse, - ) args =3D parser.parse_args() if args.verbose: logging.basicConfig(level=3Dlogging.DEBUG) @@ -207,7 +192,7 @@ def main() -> None: cargo_toml =3D CargoTOML(args.cargo_toml, None) =20 if args.lints: - for tok in generate_lint_flags(cargo_toml, args.strict_lints): + for tok in generate_lint_flags(cargo_toml): print(tok) =20 if rustc_version >=3D (1, 80): --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827128; cv=none; d=zohomail.com; s=zohoarc; b=KqFAnfdz1pa5GJtf2VfTvjW2DyNBDdJorDqNq8DURH7R+b9Km2Pu04pn+C26zfB/xEne5egOLVPRcZV1FzakGSDNBerBOQUdBH4txJO7L9MOBGaNFTGjj0VcZAfujCq65qv8OVWDwUHCPZ+MzBD/wmuW5ABPdqE1WeNR0HsU0KI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827128; 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=npP6lBXv8yluOnouSv/I/yZNTQJ/85K9PXZ3liTT2JQ=; b=XsxU2178RjzZUzRBCal33RiMcEyviC6ZDsV+Yv8lzEh2dQ548dQ2XFLMWZwnB0s3cfkgHkL5NDNp58cudoTRA1BblodXQfVeQE7wKA7O/naTcc+oZlBCzB/bPahluo/BJfnaL2/j2UC1HtxbbRDsvDkCbbWBZUGmIW7IRbQbkwI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827128082947.4997566910444; Sat, 27 Dec 2025 01:18:48 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQg-0004vh-Os; Sat, 27 Dec 2025 04:17:42 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQf-0004vH-R7 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:41 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQe-00032r-6O for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:41 -0500 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-150-pwbDrNd4OJu_X03NwDyLwQ-1; Sat, 27 Dec 2025 04:17:37 -0500 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-4325b182e3cso3054652f8f.2 for ; Sat, 27 Dec 2025 01:17:37 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea22674sm51317229f8f.10.2025.12.27.01.17.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827059; 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=npP6lBXv8yluOnouSv/I/yZNTQJ/85K9PXZ3liTT2JQ=; b=OMg2mN0EirGz6N8NK9hjIy8mNIxqyGRU7DWnr9ijMXRV6QCtME2IkbkPrQPsem/gRHzxCl FLTUd91l+FgFf5f9wK3wYcQXtAQKh0WHx3rf58xvEdfPGJ5rsTJNY+FqLF6bqxw/4OX+ty MmNjdExpGKi/hfi+Pu+yqwgU8AndjAI= X-MC-Unique: pwbDrNd4OJu_X03NwDyLwQ-1 X-Mimecast-MFC-AGG-ID: pwbDrNd4OJu_X03NwDyLwQ_1766827056 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827055; x=1767431855; 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; bh=npP6lBXv8yluOnouSv/I/yZNTQJ/85K9PXZ3liTT2JQ=; b=GzI6BcSn9dBva+IOrPG+shVJBhE6mLHnfisamqT/j1csWktkkGwOKkKOEXBm/0bpHr LjNMy5c8AEV/GnRwZmUX8Qu0RFJ+ojP7J5RBAMhjqTIB4/v0wlAhjizrvvoTkSUYpXve gFICf3XVur2LW2sZkigYhC9N6xKcgTCyVTSIXrD0SJvt3WlB2jLJ92hBuN2lPjyVkc1N rIK5zbjG7mwIJhaQthdF8Z8XO/YH4zI1nxMh9zo04c+Vq9MJTroVJCj0TgHEVInSv7iP cmMaJoTCWPbeYTzyF6cPAaYEoFX2/rSuiS0k+ZcXgTmTpA8lV/jkkls/sYGHCtAKKL2n +sug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827055; x=1767431855; 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; bh=npP6lBXv8yluOnouSv/I/yZNTQJ/85K9PXZ3liTT2JQ=; b=GE9KfePighwsPSW3Bt1/s9L92hdJgFteN0T16rTHev7RH2hmtM1B/jwYdRq2A7SACf 1ZAxzNvzbDOCyDhkNNMQaMX7qeUDeBVWRJjx54vmUoVBnl5hMF3kizL4fiIIJeDq2LpL IXoiN60qLw5N8Uiq4uTIVTTuIq8Ob9ikRj9rjjBQIA/6lexYMkG7vlyzi8H+1vHPsfdv oubwEMXm5X7VWiJDpOklTfrcAiEoyEOWJ1JrYkpIFgz8o5su79SX0hL6mOSzeuhpayk0 ZGnnLK2iZyY+Or0tUg+KHi7+O/IIW0waj4Zjilpw3UP2wAjuoIW/3WAs4O231hk55yl0 TINQ== X-Gm-Message-State: AOJu0YylAq8WADKHms/Y6/VCkjIcBerFlUEw60moFAGWx5O3kkZlbR1S kHRYtrXSZf9lrnOEiR9iF1ll7R4WBydNTGcybis+TGaXchJgV/cp7hvCKTu1chmwrrloxSmzoBr QJMMMvEAWw40o0xD6Aj8GXHl3hu+5EIlyfCX9BWQ7rGlQbgSjlyq4ylynJ7pt4YhYILHUqfIT1S xSSQZXC8HpMpouIoKny+Qi6QWtogCUcCU2foHpkw45 X-Gm-Gg: AY/fxX4gE9NMrTM9Vf61kxzB/89Njv8yZVt1lYAkuLd0rl8KNol6a6zjbbjIv56qyUe udr2iYv3k4pyztV9tK9gcNEr4xn05qG0M4Hzn75jyqRfhlh4SQsV0DkP7upBqWZPxm29GzctLd7 23OLe1osDga4GbNfOsErqJMXajQ16Lab/I/VYZN48gEbYl88s4rFubwze2HccYKtE6wpliza25B QEp6aUhhzuNWf41Fxi9LnQZx/j8zYtLJ4/MJsw23C6SCs6AijNR/mUd0dgTz+ppPUcikPl8Kw/f 6aU66UYdVxwpEyqccUB2EnbFZHTVU9EEAApgTPPZoEDM1sx1ffdFLyI/8hGtl4xnvmejPTrR7hB r/QHIdm7w2aJZZrH6IzhGn8yf3nlZL0NVBJ0Tw89DX9T3u4Q3U9GjV0ZGY1exGwoXewNoV4LtNC 078VtVzH57ma/4fkA= X-Received: by 2002:a05:6000:611:b0:431:3ba:1188 with SMTP id ffacd0b85a97d-4324e4c70e5mr25675141f8f.3.1766827055178; Sat, 27 Dec 2025 01:17:35 -0800 (PST) X-Google-Smtp-Source: AGHT+IGrKB4MYlE58YQiODrimvgOYLPwJRoz7zmW8GXjiXHvr5xEITVHgC4ICIl/4yWEV11td/YI9A== X-Received: by 2002:a05:6000:611:b0:431:3ba:1188 with SMTP id ffacd0b85a97d-4324e4c70e5mr25675113f8f.3.1766827054664; Sat, 27 Dec 2025 01:17:34 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 037/153] util: add prelude Date: Sat, 27 Dec 2025 10:14:24 +0100 Message-ID: <20251227091622.20725-38-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827129380158501 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- rust/hw/char/pl011/src/device.rs | 2 +- rust/hw/timer/hpet/src/device.rs | 5 +---- rust/hw/timer/hpet/src/fw_cfg.rs | 2 +- rust/util/meson.build | 1 + rust/util/src/lib.rs | 5 +++++ rust/util/src/prelude.rs | 11 +++++++++++ 6 files changed, 20 insertions(+), 6 deletions(-) create mode 100644 rust/util/src/prelude.rs diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index 04155dabe1a..18f40fdc58b 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -17,7 +17,7 @@ }; use qom::{prelude::*, ObjectImpl, Owned, ParentField, ParentInit}; use system::{hwaddr, MemoryRegion, MemoryRegionOps, MemoryRegionOpsBuilder= }; -use util::{log::Log, log_mask_ln, ResultExt}; +use util::prelude::*; =20 use crate::registers::{self, Interrupt, RegisterOffset}; =20 diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index 3564aa79c6e..6e9c004ecae 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -25,10 +25,7 @@ bindings::{address_space_memory, address_space_stl_le, hwaddr}, MemoryRegion, MemoryRegionOps, MemoryRegionOpsBuilder, MEMTXATTRS_UNSP= ECIFIED, }; -use util::{ - ensure, - timer::{Timer, CLOCK_VIRTUAL, NANOSECONDS_PER_SECOND}, -}; +use util::prelude::*; =20 use crate::fw_cfg::HPETFwConfig; =20 diff --git a/rust/hw/timer/hpet/src/fw_cfg.rs b/rust/hw/timer/hpet/src/fw_c= fg.rs index 777fc8ef45e..ad80acd998c 100644 --- a/rust/hw/timer/hpet/src/fw_cfg.rs +++ b/rust/hw/timer/hpet/src/fw_cfg.rs @@ -5,7 +5,7 @@ use std::ptr::addr_of_mut; =20 use common::Zeroable; -use util::{self, ensure}; +use util::{self, prelude::*}; =20 /// Each `HPETState` represents a Event Timer Block. The v1 spec supports /// up to 8 blocks. QEMU only uses 1 block (in PC machine). diff --git a/rust/util/meson.build b/rust/util/meson.build index 18d67a4b374..95b44f7c670 100644 --- a/rust/util/meson.build +++ b/rust/util/meson.build @@ -34,6 +34,7 @@ _util_rs =3D static_library( 'src/error.rs', 'src/log.rs', 'src/module.rs', + 'src/prelude.rs', 'src/timer.rs', ], {'.': _util_bindings_inc_rs} diff --git a/rust/util/src/lib.rs b/rust/util/src/lib.rs index d14aa14ca77..7d2de3ed811 100644 --- a/rust/util/src/lib.rs +++ b/rust/util/src/lib.rs @@ -4,6 +4,11 @@ pub mod error; pub mod log; pub mod module; + +// preserve one-item-per-"use" syntax, it is clearer +// for prelude-like modules +#[rustfmt::skip] +pub mod prelude; pub mod timer; =20 pub use error::{Error, Result, ResultExt}; diff --git a/rust/util/src/prelude.rs b/rust/util/src/prelude.rs new file mode 100644 index 00000000000..f52e7100e9f --- /dev/null +++ b/rust/util/src/prelude.rs @@ -0,0 +1,11 @@ +//! Essential types and traits intended for blanket imports. + +pub use crate::error::ResultExt; +pub use crate::log::Log; +pub use crate::timer::Timer; +pub use crate::timer::CLOCK_VIRTUAL; +pub use crate::timer::NANOSECONDS_PER_SECOND; + +// Re-export commonly used macros +pub use crate::ensure; +pub use crate::log_mask_ln; --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827487; cv=none; d=zohomail.com; s=zohoarc; b=kqKiXvLyQZYQeyMm2j4lQCWtzP2OYu005nvbSXiHimcYpNP0/O09Dpm0ykQ7CvAzeL48K1E9ysZ21vw6jIpY653L4kYt/dfBIMSemc+x7moIP/IlE4yd0tY91GljpSFMA2AmOs60knQzpWlpZ6tGHtsbIXSVHPQ+8xx2YFrgskg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827487; 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=GUnSWK/yLZHKNz7WpY3bYWHy/Ak2/CbbgzV5tUWVqa4=; b=i86ywB3oflAU7PFXoOyfh2woVk0fZQRIjCOw7OWaZ9fUF3Y8VUo74Ubc/tP9Rt/l/1VRR8odIeqkKX9dxqkKrIxkTvXx8LBXaNul5xX0JQrBZxRq5qRRGPV6kNCKQhMLILBpoGVHVLFMTAEYAVPzpA5GsAhobKorju6e1HOKWwo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17668274877180.9115469729113101; Sat, 27 Dec 2025 01:24:47 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQj-0004xS-3I; Sat, 27 Dec 2025 04:17:45 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQh-0004wb-GO for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:43 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQf-00039N-TV for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:43 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-295-B3iaAr5kOm-b__PQKX7AJg-1; Sat, 27 Dec 2025 04:17:39 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-4792bd2c290so73395795e9.1 for ; Sat, 27 Dec 2025 01:17:39 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be2724fe8sm568381795e9.1.2025.12.27.01.17.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827061; 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=GUnSWK/yLZHKNz7WpY3bYWHy/Ak2/CbbgzV5tUWVqa4=; b=CMlgyqdNVwOTZ/0MFnPKbPEUCoRur3YCYkTyQN4W2I/FlT7aLtZZI91WJCSY2NykD3tyYa 56v1ycrh4jfdN0ZAmA/3KGnOx/ZTwaqusv0j3RSma5+kXy0REJrF6Zd24wllvNxUTcKu4D JL89A5lodf0LVIqrPCsK+5/9bfdTQCE= X-MC-Unique: B3iaAr5kOm-b__PQKX7AJg-1 X-Mimecast-MFC-AGG-ID: B3iaAr5kOm-b__PQKX7AJg_1766827058 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827058; x=1767431858; 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; bh=GUnSWK/yLZHKNz7WpY3bYWHy/Ak2/CbbgzV5tUWVqa4=; b=MuoidLCsAsVRYbg8FGrAyoUfMKcDfI8WdWqqoiAsZ8REFsPnIrkcFwWYm1/vzL0++Y XOEzyvhUQo6qZvTUiu68vaLonY7GKXRdxomGFr/iJN9RdQdxDrArL9qSlM680Txe+wVg EP9VSvHKCNwmQsSFSMvCdIgkBUb8wvjCXRvUMBq8FdcbN65cSHNkj5yCLMiEKFZ7UAu8 2RwIv/mLdWq0mWBQo3bult1hsHPQC2IGisEFbgnIZjK71QKShT5qZewg2AwNa94mkVwg 1VroZG9/KMjGRYz4uspQyruye5kBux0QtnpiKOGoM8JwzFr53DsXrcX6/IDb0UHiZ1m/ VHJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827058; x=1767431858; 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; bh=GUnSWK/yLZHKNz7WpY3bYWHy/Ak2/CbbgzV5tUWVqa4=; b=xSsKR8YYIZ3K3hic0MqEmQYut2mk2fpnCMoRsYpm6hw067o7bqJFbvORmxdlZZCTxU tSq/yLsa0+A03cfmD4CQ4Nl2z6bvmIuf7mcya5OfMHw6qLQfs07Sh5096qzY7cqs+VoC hrFOnVPkK4e3KG75XrRCCnZtImVEU+45/Y8quG7Xz9TMfyCD0cPjUrKZJsBfAbmloWNw uxObcsOW4fNCfFGb0i/EfrABJAq9+F1mreeJ9OAeydkXYRKuA3eRfz96rpTEWp3EVxZa EcTIW5WZabY11O25WiZvxWgoMLxF4SXDkS99skJZyFEP+y0ZI9BmP0/WV9custqi7ns0 LzPw== X-Gm-Message-State: AOJu0YwuXIJkUCNV30Xx5d5f1tIeDjW3Phqb59KHVUqNQ94D3O394QW6 W1nTAosZVQZ/HzF2y5WEs+sb1R78z8xs+ARpW9P7ODZjP6RoRyIrk3Qxluch1yYx/Xf7S35UemS 5SoSX9dhdxe/27CX+6f6BP1K3iBgP+dYB4XQxieNcIZOApKfevsmOGpbpH2rvGbp+vhv0Ij2/CG fKDLwCDPsC0RV3uZ8Lq5vJq1+G5v4/Qp+X4j+l/vyS X-Gm-Gg: AY/fxX5b9LYeuRznWyJ02jaUulEgXAq2tBy+9AU0uTvxah0nMFSlJCh32oRCHezU3AT znjJ70Io590FlMqPfJUgtgQJCnRT9lF+Q44FNnLsKLHY2wGE5PtLcc50a0AiKzQcoOx6mPVEZyH asd1K6yFOUbKqSGqOFKvt8It05YVwSAso/WkQF2QQjIunYue2KN82yG8VCUzBRDa5qsb7gEjlmh 2WfblB69M2u13e9pwRjZ+vOwrZrIBm672kC52pTBKF27z/AXum/cOeB1oN0WUaG7xGnLdUPbAA1 jzT9E1fIL7WZ5Y+AxeQ/mZkX7IpDYFdepJZrr+fP90WyvuOA9X23Yf7FJctpQmIEYvsQEH7onWB FnixFhlIsZfEkSqgtucO88+dzEMI6yE1vSRcV26ydkMkonLTQLKM4nL78/UOMMNRi8o9cU6BFzB oxoW/IE+0uR6ElRY8= X-Received: by 2002:a05:600c:3b0e:b0:477:b0b9:3129 with SMTP id 5b1f17b1804b1-47d1955b7d1mr273719465e9.3.1766827058088; Sat, 27 Dec 2025 01:17:38 -0800 (PST) X-Google-Smtp-Source: AGHT+IFu+X3PNjYuqA5fiL8dxjBzJO4FM6MiMLRp8jsBDAZLl3mQ9e0wZ+Eh68AL5Dd1S00h3eG13A== X-Received: by 2002:a05:600c:3b0e:b0:477:b0b9:3129 with SMTP id 5b1f17b1804b1-47d1955b7d1mr273719235e9.3.1766827057675; Sat, 27 Dec 2025 01:17:37 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 038/153] common: add prelude Date: Sat, 27 Dec 2025 10:14:25 +0100 Message-ID: <20251227091622.20725-39-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827488728158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- rust/common/meson.build | 13 +------------ rust/common/src/lib.rs | 5 +++++ rust/common/src/prelude.rs | 9 +++++++++ rust/hw/char/pl011/src/device.rs | 2 +- rust/hw/timer/hpet/src/device.rs | 2 +- 5 files changed, 17 insertions(+), 14 deletions(-) create mode 100644 rust/common/src/prelude.rs diff --git a/rust/common/meson.build b/rust/common/meson.build index 4b1cd35f639..57091b18fc4 100644 --- a/rust/common/meson.build +++ b/rust/common/meson.build @@ -4,18 +4,7 @@ _common_cfg =3D run_command(rustc_args, =20 _common_rs =3D static_library( 'common', - structured_sources( - [ - 'src/lib.rs', - 'src/assertions.rs', - 'src/bitops.rs', - 'src/callbacks.rs', - 'src/errno.rs', - 'src/opaque.rs', - 'src/uninit.rs', - 'src/zeroable.rs', - ], - ), + 'src/lib.rs', rust_args: _common_cfg, dependencies: [libc_rs, qemu_macros], ) diff --git a/rust/common/src/lib.rs b/rust/common/src/lib.rs index 8311bf945da..6093d01a388 100644 --- a/rust/common/src/lib.rs +++ b/rust/common/src/lib.rs @@ -15,6 +15,11 @@ pub mod opaque; pub use opaque::{Opaque, Wrapper}; =20 +// preserve one-item-per-"use" syntax, it is clearer +// for prelude-like modules +#[rustfmt::skip] +pub mod prelude; + pub mod uninit; pub use uninit::MaybeUninitField; =20 diff --git a/rust/common/src/prelude.rs b/rust/common/src/prelude.rs new file mode 100644 index 00000000000..7d38ea12055 --- /dev/null +++ b/rust/common/src/prelude.rs @@ -0,0 +1,9 @@ +//! Essential types and traits intended for blanket imports. + +pub use crate::bitops::IntegerExt; +pub use crate::uninit::MaybeUninitField; + +// Re-export commonly used macros +pub use crate::static_assert; +pub use crate::uninit_field_mut; +pub use qemu_macros::TryInto; diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index 18f40fdc58b..b7e8e393d2e 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -6,7 +6,7 @@ =20 use bql::BqlRefCell; use chardev::{CharFrontend, Chardev, Event}; -use common::{static_assert, uninit_field_mut}; +use common::prelude::*; use hwcore::{ Clock, ClockEvent, DeviceImpl, DeviceMethods, DeviceState, IRQState, I= nterruptSource, ResetType, ResettablePhasesImpl, SysBusDevice, SysBusDeviceImpl, SysBu= sDeviceMethods, diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index 6e9c004ecae..e9c7afa24d5 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -11,7 +11,7 @@ }; =20 use bql::{BqlCell, BqlRefCell}; -use common::{bitops::IntegerExt, uninit_field_mut}; +use common::prelude::*; use hwcore::{ DeviceImpl, DeviceMethods, DeviceState, InterruptSource, ResetType, Re= settablePhasesImpl, SysBusDevice, SysBusDeviceImpl, SysBusDeviceMethods, --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827489; cv=none; d=zohomail.com; s=zohoarc; b=ir0P/LMeKZSu6qSaAN36qpRUpPaXk/cWKGL5mDeWrrkCmjUc9+vOAfm/UWFh4+79bEj8VBzP+91AZ7/DwVXo5oXLx4DJFb43oWiKF1Vx9rjMyy61XBw8FIirRep5OlE4zViMasH9I20O82uT0WvfjVrtyqrWauI6pGeTANXUoes= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827489; 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=4/gCmmzBIF+KM2x1EnkEGwKPoQsC1VbJV5BydwbuYfs=; b=eW8yqug0Lal63/EGEWJ6Adi5WGc641J04UFC4bV60hEhFcMlE/6CyVCiroU5C9uyQvdDpCTYj0tzYlfJzlfG7rqLVxKGWAP1XDyYWbUUvmJXMceFoC4zj+3SMdeL7D2D1V4lBwlm7o6Ct3f0Aqnk2jUCKVnF60GQcJ4Z6C2k5O8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827489219911.508249299933; Sat, 27 Dec 2025 01:24:49 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQl-00054E-Hg; Sat, 27 Dec 2025 04:17:47 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQk-00051n-9L for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:46 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQi-0003E6-Ia for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:46 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-465-rwVkcEpIPXWHmm6l-8nHVQ-1; Sat, 27 Dec 2025 04:17:41 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-477cf2230c8so77991055e9.0 for ; Sat, 27 Dec 2025 01:17:41 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea1aee5sm50854018f8f.4.2025.12.27.01.17.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827064; 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=4/gCmmzBIF+KM2x1EnkEGwKPoQsC1VbJV5BydwbuYfs=; b=feyHm5+m4RU9snon+yOQWumFQyfo60WZzd46YVexq/3Tp3MVW0sT5XhFk9EYZYHxCwZkQL MpW2NjUPD/mUktKLipBj4xj4RDc4/9S8+FNrV01VzYNN33HC1EIKUqfJbWmgD1prWzgGnC AnwYNamH3ru/vaOzNdaPKBxFdvaUdu0= X-MC-Unique: rwVkcEpIPXWHmm6l-8nHVQ-1 X-Mimecast-MFC-AGG-ID: rwVkcEpIPXWHmm6l-8nHVQ_1766827060 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827060; x=1767431860; 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; bh=4/gCmmzBIF+KM2x1EnkEGwKPoQsC1VbJV5BydwbuYfs=; b=ir1WOkqJhn53sLM5TV2WM2rX9X+Wwj0YMkHX6l1hvobouRXT/2GcXR49DOaHVT+KL5 Tzgb+uRbPru24DHGDEnHI1nbeIHcHpV0uLUxmb6HhWM9U9a/QyCxS6YlrAOBg2FtZb4D FOsSn17ft1MhpEmzNmWTtKfzMYkrxExiCEZyG7pN9O2Wq0HfhwlXOhqEHFNWEmoXpHND iqtTLg56Xm8jw2x0c5LLc/7OV+3rf8z64Lgzpw685jJCxwETSv1+dKK9eME7vIyRwmeu 7Vdk9Ea5Lzl0s6UjGiMMP6fD/S+QKfU5i02cvL8Xbo509pWloHseSvJ4H9ht+Deu1Vfz KK2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827060; x=1767431860; 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; bh=4/gCmmzBIF+KM2x1EnkEGwKPoQsC1VbJV5BydwbuYfs=; b=Ooiqpm4Z1TzNdywtsV3yBdHcLfaip6auG63aydObYXyT4aKB5pKxmHw7+bv2u23K36 8vdWNV/lVMdg1FLP5N5gFP2XlVVnkl5e6RVQa4ejozwL8GMWi51V34cjH1+ZUJine0DC 9EGU3t2Vl+KKcKtCTVHTxavOBeCw8wa9GRX+cD8wPSBr2VspGGXxIPmeePUd0TMoU9oB CeZwn2lCtMXB9zgDFhH3frdXFcUzh0L9m2d4ObBaDSsvKVdy65qvO+nBdxTVXtcuX7t0 +a70EyqhRhUatrfnn44S264YMc5gegI532eJObhzjqof2mLqWuvThuelOyPcqWSnnUNs rhdw== X-Gm-Message-State: AOJu0Yw8iXPa5zUGtFxVfhFgYrN8y7RpjEmU6QD5eI+Lw3uOWa5psyoZ Kg3rEoV2n8kFp4Kg2FFsNnLTNRjJY94Jivx5tlg9d2Qguk+UxJ9mFLwMg1NKFv26ycsnsGl8ceZ k6GZe1b5ccJrC/+ztiO1vOA43pKIjnbRXfo89A53ii6eA9ByMqB1BNNP5gZGmJYSrh0I+41zdFn reajUxZB+q3GBi9QVROaLsGSY1PFLmzxqcX3Ap7nkr X-Gm-Gg: AY/fxX79u27XmVAuToNWgc/Zkgk/3lNX/foT7XDaDHC0RpiQnsAGDCFelzaaUd/Cg6V 6OEsb5yKRHioVm4FStaUj2S2VGXdwMy+IBvOEoybIn2smJguFVgdqtqA+2+u4MXHpY9e/tUj5xT adUvog+Cw2WmzpcPU2+CDvKTlfntr1EX7jw0AY8niyAofnQcY7PFBMmZZDVwSfvzZTUMLx9E5fC azcnQGfS+LJtgJU09IvMGD08dA0ptREbMdj1dOr9j4Zvl+4k/SNDMJNXPSXdvzWOKdb/yc48oT8 KW/A3w4YqIDgANNyVtljW2EZTr8AP951NaUxA4AUoEuMLS32em8vzeOZcukzz6+q+cpskqcHhTf QqQNXEGhnrIfN7znxzZCZQzIECwyrm772dRrVspg0oCg4UULIB50VuBJTYBOfAAOwD0nmoe5pKC EZP16PFLMbYtih5cQ= X-Received: by 2002:a05:600c:3ba3:b0:46e:761b:e7ff with SMTP id 5b1f17b1804b1-47d1958c90cmr283360495e9.28.1766827059779; Sat, 27 Dec 2025 01:17:39 -0800 (PST) X-Google-Smtp-Source: AGHT+IFFXzL5fFBOCR8SLXi3YbZKWcuIyCUjtAMyIvjFYjix0rCzfZIE+yheFNDEaXF37WFD8XMd9Q== X-Received: by 2002:a05:600c:3ba3:b0:46e:761b:e7ff with SMTP id 5b1f17b1804b1-47d1958c90cmr283360315e9.28.1766827059276; Sat, 27 Dec 2025 01:17:39 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 039/153] hwcore: add prelude Date: Sat, 27 Dec 2025 10:14:26 +0100 Message-ID: <20251227091622.20725-40-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827490657158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- rust/hw/char/pl011/src/device.rs | 5 +---- rust/hw/core/meson.build | 1 + rust/hw/core/src/lib.rs | 5 +++++ rust/hw/core/src/prelude.rs | 14 ++++++++++++++ rust/hw/core/tests/tests.rs | 2 +- rust/hw/timer/hpet/src/device.rs | 5 +---- 6 files changed, 23 insertions(+), 9 deletions(-) create mode 100644 rust/hw/core/src/prelude.rs diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index b7e8e393d2e..164f27d5bb2 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -7,10 +7,7 @@ use bql::BqlRefCell; use chardev::{CharFrontend, Chardev, Event}; use common::prelude::*; -use hwcore::{ - Clock, ClockEvent, DeviceImpl, DeviceMethods, DeviceState, IRQState, I= nterruptSource, - ResetType, ResettablePhasesImpl, SysBusDevice, SysBusDeviceImpl, SysBu= sDeviceMethods, -}; +use hwcore::{prelude::*, ClockEvent, IRQState}; use migration::{ self, impl_vmstate_forward, impl_vmstate_struct, vmstate_fields, vmsta= te_of, vmstate_subsections, vmstate_unused, VMStateDescription, VMStateDescri= ptionBuilder, diff --git a/rust/hw/core/meson.build b/rust/hw/core/meson.build index 1560dd20c6b..fa1765a2302 100644 --- a/rust/hw/core/meson.build +++ b/rust/hw/core/meson.build @@ -51,6 +51,7 @@ _hwcore_rs =3D static_library( 'src/lib.rs', 'src/bindings.rs', 'src/irq.rs', + 'src/prelude.rs', 'src/qdev.rs', 'src/sysbus.rs', ], diff --git a/rust/hw/core/src/lib.rs b/rust/hw/core/src/lib.rs index b40801eb843..491743d2b9d 100644 --- a/rust/hw/core/src/lib.rs +++ b/rust/hw/core/src/lib.rs @@ -8,6 +8,11 @@ mod irq; pub use irq::*; =20 +// preserve one-item-per-"use" syntax, it is clearer +// for prelude-like modules +#[rustfmt::skip] +pub mod prelude; + mod qdev; pub use qdev::*; =20 diff --git a/rust/hw/core/src/prelude.rs b/rust/hw/core/src/prelude.rs new file mode 100644 index 00000000000..c544c317b39 --- /dev/null +++ b/rust/hw/core/src/prelude.rs @@ -0,0 +1,14 @@ +//! Essential types and traits intended for blanket imports. + +pub use crate::qdev::Clock; +pub use crate::qdev::DeviceState; +pub use crate::qdev::DeviceImpl; +pub use crate::qdev::DeviceMethods; +pub use crate::qdev::ResettablePhasesImpl; +pub use crate::qdev::ResetType; + +pub use crate::sysbus::SysBusDevice; +pub use crate::sysbus::SysBusDeviceImpl; +pub use crate::sysbus::SysBusDeviceMethods; + +pub use crate::irq::InterruptSource; diff --git a/rust/hw/core/tests/tests.rs b/rust/hw/core/tests/tests.rs index 247d812866d..b39d1501d5b 100644 --- a/rust/hw/core/tests/tests.rs +++ b/rust/hw/core/tests/tests.rs @@ -5,7 +5,7 @@ use std::{ffi::CStr, ptr::addr_of}; =20 use bql::BqlCell; -use hwcore::{DeviceImpl, DeviceState, ResettablePhasesImpl, SysBusDevice}; +use hwcore::prelude::*; use migration::{VMStateDescription, VMStateDescriptionBuilder}; use qom::{prelude::*, ObjectImpl, ParentField}; use util::bindings::{module_call_init, module_init_type}; diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index e9c7afa24d5..7ab9897cdfb 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -12,10 +12,7 @@ =20 use bql::{BqlCell, BqlRefCell}; use common::prelude::*; -use hwcore::{ - DeviceImpl, DeviceMethods, DeviceState, InterruptSource, ResetType, Re= settablePhasesImpl, - SysBusDevice, SysBusDeviceImpl, SysBusDeviceMethods, -}; +use hwcore::prelude::*; use migration::{ self, impl_vmstate_struct, vmstate_fields, vmstate_of, vmstate_subsect= ions, vmstate_validate, VMStateDescription, VMStateDescriptionBuilder, --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827505; cv=none; d=zohomail.com; s=zohoarc; b=L/IONpJYLvvcs1gLIWkYcoAOP2vDLa0AAjUwF9c0LxClB1QQkwXYG513dvV8TBsC4ELviYGtzQtxX3q4/YFqL7c2eNMxOWy39ykd7CNDWipeQ6SrTY5HUecoKtiy87naLEK/dyINDaon/tEGCzb+SxOAiajYOBAXuMeYo9iv90o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827505; 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=FwekjZinjWJMgWeTKWwSXEYnWdIxsqhWLTJE90n1OPI=; b=MfMiAH8gEN8oBO5AYGLz54y7HOHPj80EjmX1wG7xUCeZCoB54vJf/Y7zT2HuXpXTdLsuGj3sJbd53gLYyhGFsxY6MBFS7wCMQqE7GFjFTkkyGilAaxzUKP0TdPR2QLhbBhG4iB0ScNSifaYCWwcKFpeyJl/YYr03swtDHVJlRT4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827505859404.4539969997138; Sat, 27 Dec 2025 01:25:05 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQn-0005Fa-G6; Sat, 27 Dec 2025 04:17:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQl-000541-Ex for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:47 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQj-0003FR-N7 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:47 -0500 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-417-X-kt2YoDNdGVIy3KXTFAxA-1; Sat, 27 Dec 2025 04:17:42 -0500 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-430fc83f58dso4347552f8f.2 for ; Sat, 27 Dec 2025 01:17:42 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea830fesm50395867f8f.20.2025.12.27.01.17.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827064; 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=FwekjZinjWJMgWeTKWwSXEYnWdIxsqhWLTJE90n1OPI=; b=VCfcWmE3a/UTAtNmJSc2WZad3zJUKyT+bljEY1b/koMGgfLnaVs3VWxRi2tMGybp4bOC8X eoclOsxLPYXw7GFMSxuIYVwUQd5xiSpk+txA93Gv1DjvcvIgyiHwZY0G1LonUcmTZUj1W/ S151j+XIy3ucUQhDcIYm99NcvAskwnU= X-MC-Unique: X-kt2YoDNdGVIy3KXTFAxA-1 X-Mimecast-MFC-AGG-ID: X-kt2YoDNdGVIy3KXTFAxA_1766827061 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827061; x=1767431861; 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; bh=FwekjZinjWJMgWeTKWwSXEYnWdIxsqhWLTJE90n1OPI=; b=ivnTbBgZn3QzIeo+C4iL2LgkHBRyf7FHFMGtNqN8RTX6cJIDnR9oSGk7IuaGD7NSjo skWQXqNbdwRSCfPGfkbFv7S9aIn9fb2S5mhStdjePS+z6h4g7nV3tm5nruLQkW0plgc4 PddpZmY5zQs+6fzPDs72fvJE0uo5OHCyzB7ItGDydkJVgw7GXbpfAT0+fv5+R9peLJwl SdLIdeqOxy7SjIZ2dwbVQEhEJ1bMhGhYOemkfalyttTWKsHk5uZnwcbC/DstCjau91L4 +dmNkOTBlu7QkQp2cTysxX042IRmYsjvL2SKQ/ZSTgX4uj6WNBM8Am0evgBlObXZ51Ct Yt+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827061; x=1767431861; 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; bh=FwekjZinjWJMgWeTKWwSXEYnWdIxsqhWLTJE90n1OPI=; b=JxyFZbvKLnuUq1dLmb9YH1typJU9Ydbk9TTWBKcMR6rg5DVWcx6bPybfQEOkhPumh5 bFjDBA04hbR3W/jljmdRSG2KG1OGA1viBzTm7MXVQZcQYzQKI12lD9ppQJVvTvt0B3T7 5+R/c/2rfVHToL1quvMv9eJEI+0kVibrdiGaiwssVSoWknL+jZPyWmEUbDBFxekQRAg/ tFFwuOvnlGSApR7utfxv2wAST3zbD9qObmdZJk7Ryz7z7/4Q0KSRfnVjUhiICIOAljPZ ptDcT5GImMzF3aaAx2XzwPYlX3yEsJOrtfrfLWPEeutk3IoIwieRgH+qjRqwaRRmD0mz ad5A== X-Gm-Message-State: AOJu0YyutcDX5+uhADlbEjCG+C55iQBH0Cy3QZO2Prp49GzkBaTgbeSc nwz/PiFmeODj036DDOc+iGLVV6c1v/ZK+jNuovJ896bkRK+HX0qq6899yVvVKTTEqLZ5wvrfsLW FM7nLGYOMcCgR+gJmhda+vA/BATHIj6MgQSEdJttkfKnKAZMM64pFT/dHhcD20P4QRKWtNtsdV5 NQR2p4/2CQIJvo0aDqY0k4kZ7aTyTRxuDLKTl27WE/ X-Gm-Gg: AY/fxX7N9YBiQSKp45B2tCGHM3NafT9RknhD/x8XF45yFUmrPLvOr1qeJhAiizvBH9J 3U7YOpLgAuew9wWPhEFwOldNFQAP14Arj4ZhyTTanVdguDOX8YYKPFbKk01yWuBjn/bxrSiXe9E J1FXm9iWM8KFytAnwIwihRw+xMu8mL0Eh1w3Ta5RK5espr0fzzMNGjtt7QZBCNxL45AVrxP+kMT OKfzVJT1PdK6WYdkvTihIZ0VLWRdbI5dPXBw7oZpdp7HObgKiOhx48fkx9oGHyKHvk/JWJ3wR/w pMHtmrEeSH+U012sCG73IVzddgxFwqT76KK/lxkpIRmEuutnB4FmpAkn34ZtyEGGk3CgZDOBYRq oTbSC4CdHITSgYrzuhGYQlH+6NtkPWupIcxSg4BKXthN3dQxfQvVJosVZqDRvMS8z4WOjWdQYLx F1rvJECFH9QRMB5qk= X-Received: by 2002:a05:6000:24c4:b0:430:fc3a:fbce with SMTP id ffacd0b85a97d-4324e4c9d45mr34443861f8f.15.1766827060937; Sat, 27 Dec 2025 01:17:40 -0800 (PST) X-Google-Smtp-Source: AGHT+IEE9bb0R5f+0u58pO69zWp65EnjxxVRVrAvKPl359NUjwK8hb5k+6GwJyKKe/a9+dSPFcVPkw== X-Received: by 2002:a05:6000:24c4:b0:430:fc3a:fbce with SMTP id ffacd0b85a97d-4324e4c9d45mr34443833f8f.15.1766827060415; Sat, 27 Dec 2025 01:17:40 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 040/153] migration: add prelude Date: Sat, 27 Dec 2025 10:14:27 +0100 Message-ID: <20251227091622.20725-41-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827506972158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- rust/chardev/src/prelude.rs | 3 +++ rust/hw/char/pl011/src/device.rs | 5 +---- rust/hw/core/tests/tests.rs | 2 +- rust/hw/timer/hpet/src/device.rs | 5 +---- rust/migration/meson.build | 1 + rust/migration/src/lib.rs | 5 +++++ rust/migration/src/prelude.rs | 19 +++++++++++++++++++ rust/tests/tests/vmstate_tests.rs | 5 ++--- 8 files changed, 33 insertions(+), 12 deletions(-) create mode 100644 rust/chardev/src/prelude.rs create mode 100644 rust/migration/src/prelude.rs diff --git a/rust/chardev/src/prelude.rs b/rust/chardev/src/prelude.rs new file mode 100644 index 00000000000..9f0b561bfab --- /dev/null +++ b/rust/chardev/src/prelude.rs @@ -0,0 +1,3 @@ +//! Essential types and traits intended for blanket imports. + +pub use crate::chardev::{Chardev, CharFrontend, Event}; \ No newline at end of file diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index 164f27d5bb2..2e4ccc9b231 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -8,10 +8,7 @@ use chardev::{CharFrontend, Chardev, Event}; use common::prelude::*; use hwcore::{prelude::*, ClockEvent, IRQState}; -use migration::{ - self, impl_vmstate_forward, impl_vmstate_struct, vmstate_fields, vmsta= te_of, - vmstate_subsections, vmstate_unused, VMStateDescription, VMStateDescri= ptionBuilder, -}; +use migration::{self, prelude::*}; use qom::{prelude::*, ObjectImpl, Owned, ParentField, ParentInit}; use system::{hwaddr, MemoryRegion, MemoryRegionOps, MemoryRegionOpsBuilder= }; use util::prelude::*; diff --git a/rust/hw/core/tests/tests.rs b/rust/hw/core/tests/tests.rs index b39d1501d5b..f38376d0016 100644 --- a/rust/hw/core/tests/tests.rs +++ b/rust/hw/core/tests/tests.rs @@ -6,7 +6,7 @@ =20 use bql::BqlCell; use hwcore::prelude::*; -use migration::{VMStateDescription, VMStateDescriptionBuilder}; +use migration::prelude::*; use qom::{prelude::*, ObjectImpl, ParentField}; use util::bindings::{module_call_init, module_init_type}; =20 diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index 7ab9897cdfb..4ff1779a3d2 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -13,10 +13,7 @@ use bql::{BqlCell, BqlRefCell}; use common::prelude::*; use hwcore::prelude::*; -use migration::{ - self, impl_vmstate_struct, vmstate_fields, vmstate_of, vmstate_subsect= ions, vmstate_validate, - VMStateDescription, VMStateDescriptionBuilder, -}; +use migration::{self, prelude::*}; use qom::{prelude::*, ObjectImpl, ParentField, ParentInit}; use system::{ bindings::{address_space_memory, address_space_stl_le, hwaddr}, diff --git a/rust/migration/meson.build b/rust/migration/meson.build index 94590dc1b87..76d86b0ac0f 100644 --- a/rust/migration/meson.build +++ b/rust/migration/meson.build @@ -32,6 +32,7 @@ _migration_rs =3D static_library( 'src/lib.rs', 'src/bindings.rs', 'src/migratable.rs', + 'src/prelude.rs', 'src/vmstate.rs', ], {'.' : _migration_bindings_inc_rs}, diff --git a/rust/migration/src/lib.rs b/rust/migration/src/lib.rs index c9bdf0d4133..32e182e716a 100644 --- a/rust/migration/src/lib.rs +++ b/rust/migration/src/lib.rs @@ -7,5 +7,10 @@ pub mod migratable; pub use migratable::*; =20 +// preserve one-item-per-"use" syntax, it is clearer +// for prelude-like modules +#[rustfmt::skip] +pub mod prelude; + pub mod vmstate; pub use vmstate::*; diff --git a/rust/migration/src/prelude.rs b/rust/migration/src/prelude.rs new file mode 100644 index 00000000000..797e7ec59d1 --- /dev/null +++ b/rust/migration/src/prelude.rs @@ -0,0 +1,19 @@ +//! Essential types and traits intended for blanket imports. + +// Core migration traits and types +pub use crate::vmstate::VMState; +pub use crate::vmstate::VMStateDescription; +pub use crate::vmstate::VMStateDescriptionBuilder; + +// Migratable wrappers +pub use crate::migratable::Migratable; +pub use crate::ToMigrationState; + +// Commonly used macros +pub use crate::impl_vmstate_forward; +pub use crate::impl_vmstate_struct; +pub use crate::vmstate_fields; +pub use crate::vmstate_of; +pub use crate::vmstate_subsections; +pub use crate::vmstate_unused; +pub use crate::vmstate_validate; diff --git a/rust/tests/tests/vmstate_tests.rs b/rust/tests/tests/vmstate_t= ests.rs index fa9bbd6a122..c3f9e1c7436 100644 --- a/rust/tests/tests/vmstate_tests.rs +++ b/rust/tests/tests/vmstate_tests.rs @@ -16,9 +16,8 @@ vmstate_info_bool, vmstate_info_int32, vmstate_info_int64, vmstate= _info_int8, vmstate_info_uint64, vmstate_info_uint8, vmstate_info_unused_buffe= r, VMStateFlags, }, - impl_vmstate_forward, impl_vmstate_struct, - vmstate::{VMStateDescription, VMStateDescriptionBuilder, VMStateField}, - vmstate_fields, vmstate_of, vmstate_unused, vmstate_validate, + prelude::*, + vmstate::VMStateField, }; =20 const FOO_ARRAY_MAX: usize =3D 3; --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827519; cv=none; d=zohomail.com; s=zohoarc; b=Cfyw0QBcsvNs3OuYzaC0GH1pJFWZqhsBoo9UjvG/O2Qzqnx1RYyK+ndtQNWcENKSkxatwbMFTMR09sMqACZp3dHcF0UhoovwsapChRDBsGgrv8U2sRi61BLl9tRFIUWhNjhVQCck34mVb1Z4BxIOZCLxG1ncFKV5NUmdxPw9iZ0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827519; 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=fsRfJ17Tv3k56iygc1dJWL298tqHmSNxwclb6VwBO0g=; b=U8+Pn27iaPTJ1EiAcGPHDHYAFUr9i8vezysolFzxjMsp94n1JYoQmvwNYHJg0fq69rQ8x1M87GySYfRKfpho1ofiDU+crzhqE6W5IZd+0kk7lzOcKOSEdQmEpM8n/FcjqyYfNGoUbXZMCftF/NDY4tyQA/vPU2pFG/DIa3aXv08= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827519275833.9278505132692; Sat, 27 Dec 2025 01:25:19 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQr-0005NN-Kp; Sat, 27 Dec 2025 04:17:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQp-0005Lg-V4 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:51 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQo-0003JK-Fr for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:51 -0500 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-106-ISCKBvEwPmWZ0BbK4RWF-A-1; Sat, 27 Dec 2025 04:17:44 -0500 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-4325aa61c6bso2497420f8f.0 for ; Sat, 27 Dec 2025 01:17:44 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa4749sm50634584f8f.37.2025.12.27.01.17.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827070; 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=fsRfJ17Tv3k56iygc1dJWL298tqHmSNxwclb6VwBO0g=; b=hwGiaceLoMrPKEfQVRsKCO/eMMSGs+PwWLCnvzZDyo/GfM0npjn7X+gcn13Es2HbO61np4 85D4M0VSsvgb3tKy3G6+DFtH1NN7jyIRbqFNOEna/yoU0BhRcnz3K7o5R5G131Um8Y2A52 hF0OBAIOv+Gl7O6SMCwghiPluf9hmwc= X-MC-Unique: ISCKBvEwPmWZ0BbK4RWF-A-1 X-Mimecast-MFC-AGG-ID: ISCKBvEwPmWZ0BbK4RWF-A_1766827063 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827063; x=1767431863; 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; bh=fsRfJ17Tv3k56iygc1dJWL298tqHmSNxwclb6VwBO0g=; b=g4TTJzqnNGgtuDRk44JtpVphZTdWJkKUMfj5VhlpF2BmFmMtm9A6sPzLTFyR4oS/88 g7IWHuj4ZVFxx8CIZ1FgP/h6PD12MKghzJsQbZDrYS6tZ6n1iNErfCZMmxQ0VCFZBri0 fa7kTzOsazD+t6PxjC8fFkDUyjGcN1ewiF5vCRSV5/B1tQE91L1QzZEztNpWRnvj5f/e IR5AufR+GYFAN/QJxbeW5ObxC+CJFOrYnkzcCm3TFjgqPxbq9rG1yYE1SDlSDGk9kIaB 9iLpT/3MPqWxHhOaJ0w6M5Pop6kX87FkCaZh0QubpTq6YA24DGCqM4UQDBPGHj0vQvrw T6FA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827063; x=1767431863; 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; bh=fsRfJ17Tv3k56iygc1dJWL298tqHmSNxwclb6VwBO0g=; b=le02nlMCSK1ztO9FGw4AdIqpIYP0d3v9Bhn7lWhRZ2RPC10Nyeb/arteJVpJ89NPoj bQUFSV98hr06rn8lf8O/xp/qilH2rMoFhDGsEGpdmnnIV2HlnczoAWLexywTL7DC8oAk rmH0CKjjgQccOv+5K9xiDhB9GeETwFWFGQonhMljNs5snk1UV73xQTAXKaqF45nNVMUJ hn71ISpxKtm9qIwqrI7N8aukYSAig9nNe/AtZsXj/wQyM49he3oWhOO0LRmnEXPAzs/7 liqHwJoLfCl0NXv7ydOzDlvAETTav0yoNQQ/pZA6GaMbUaSpKnMW7jLlui9ra7BcEqOv W4qw== X-Gm-Message-State: AOJu0Yy0tSkNvBaDMt/9UrqI+8vLhYxFpOqxroMsPfeDpWtKLKDzsIjN 2GnMFeqhDIfzqvBtce/HoHfh/ajRO6fomkd37g9AZAKymK6yun+FLhpV0ochzITDRHoSsCEVV3Z ALDXurhP3xv2pc0eLmjEAjjBgVg/n6thuiPpTs6EUMr4xW81ZKOjpHx1GLXKAhBKkcqk+d2jpWF OSoYxxJtoBkkF3BVbSa2gLdPQa0ew2Keke4vaeX3kj X-Gm-Gg: AY/fxX6S2y3hHuxH7+uxcuI0Tx+5VNgwbhecV2m9SrGGrxIudFy3jPtLicUK4VZLrCO o+0Uy4a+9/fYkrxQ4FCRVRX2S3DbuUCd25v3OftH5DcyySJgichIavJ+IjPdX8F+5Nbt787ldHh iebCrDnzNTr7cfFt2W6Jl5HESa3bloQ158ZuZgxjN7FTe0FVzSDqsqNvgIsTy080FFzTfwTem/w nty8cFsjLuYzyPa7sxniSs53jiyZdtb0ApdCmUc4ARXOim6zF1YayaJkV89s5j/842JI4IGPfYa P/3FVM5oGvMpeDXUAaSAzVRif0z1LM++UXgWqkp+mY0eeEYQm/3gPpl8u9u0AEr9pPrEHif35B4 1Iiqlp799/DQtUY6A1LJn/Ta26ITIBcRH6xS4gKARwop7saIBY2l11X0hkc0VmnLk3xOfYpY6Tn wP7E/CtwpyJxa1t1Y= X-Received: by 2002:a05:6000:40de:b0:432:851d:23e2 with SMTP id ffacd0b85a97d-432851d2633mr4205088f8f.49.1766827062842; Sat, 27 Dec 2025 01:17:42 -0800 (PST) X-Google-Smtp-Source: AGHT+IHZgUyTignmUNVGcnYrV8ZqNnWSrdz2zQ0J4yerIydqlD+JEwFe8zx9r14iCsiDpyDCkf0IbQ== X-Received: by 2002:a05:6000:40de:b0:432:851d:23e2 with SMTP id ffacd0b85a97d-432851d2633mr4205062f8f.49.1766827062298; Sat, 27 Dec 2025 01:17:42 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 041/153] chardev: add prelude Date: Sat, 27 Dec 2025 10:14:28 +0100 Message-ID: <20251227091622.20725-42-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827520726158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- rust/chardev/meson.build | 1 + rust/chardev/src/lib.rs | 5 +++++ rust/chardev/src/prelude.rs | 4 +++- rust/hw/char/pl011/src/device.rs | 2 +- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/rust/chardev/meson.build b/rust/chardev/meson.build index 6b681c609ad..54bb2962528 100644 --- a/rust/chardev/meson.build +++ b/rust/chardev/meson.build @@ -30,6 +30,7 @@ _chardev_rs =3D static_library( 'src/lib.rs', 'src/bindings.rs', 'src/chardev.rs', + 'src/prelude.rs', ], {'.': _chardev_bindings_inc_rs} ), diff --git a/rust/chardev/src/lib.rs b/rust/chardev/src/lib.rs index 2e549f99d91..93a28725932 100644 --- a/rust/chardev/src/lib.rs +++ b/rust/chardev/src/lib.rs @@ -4,3 +4,8 @@ =20 mod chardev; pub use chardev::*; + +// preserve one-item-per-"use" syntax, it is clearer +// for prelude-like modules +#[rustfmt::skip] +pub mod prelude; diff --git a/rust/chardev/src/prelude.rs b/rust/chardev/src/prelude.rs index 9f0b561bfab..f949d925399 100644 --- a/rust/chardev/src/prelude.rs +++ b/rust/chardev/src/prelude.rs @@ -1,3 +1,5 @@ //! Essential types and traits intended for blanket imports. =20 -pub use crate::chardev::{Chardev, CharFrontend, Event}; \ No newline at end of file +pub use crate::chardev::Chardev; +pub use crate::chardev::CharFrontend; +pub use crate::chardev::Event; diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index 2e4ccc9b231..ff929e60993 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -5,7 +5,7 @@ use std::{ffi::CStr, mem::size_of}; =20 use bql::BqlRefCell; -use chardev::{CharFrontend, Chardev, Event}; +use chardev::prelude::*; use common::prelude::*; use hwcore::{prelude::*, ClockEvent, IRQState}; use migration::{self, prelude::*}; --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827462; cv=none; d=zohomail.com; s=zohoarc; b=kl+kRdZYWgoJJ34Ij8IHoQuRLmnbAAI/b0RWBrn7xySFBXYkWyiv7TjyDlqcspccI7YtAdN/YwzsnlW1FU9DMtXhlzU0QqJ1U2SMFLQm98tcJeUGdLYCcu05dppfctYL5whZ6K3u64tO+Weco716x29+d8LMrnIJU2sS2PfkGr4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827462; 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=GTCXqPXLE/4/zflAMpw7ZRNXVyd9ZRmA4bEXl/HdzsQ=; b=S/TH6LWNXHd1UVbZj8Y+bjqHd8adH+heuPTbxvfnwqdqyaR4Lg6n0nt2GfPtEhWMj9d3ed/k7n3e9sUlecUOp64ghLWmHv2/IGADXgCkNvuu7wo3zwZowYJWHKiSfPgOFNWcxGO4rqZJxqwKyXlUajVnvFpk39t1Ma+WV1D2Fis= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827462190229.07068792945665; Sat, 27 Dec 2025 01:24:22 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQR0-0005UZ-Ck; Sat, 27 Dec 2025 04:18:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQs-0005OR-RB for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:54 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQr-0003Qy-AA for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:54 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-592-HMNuaH1nMmWoFaIqOQ1R4Q-1; Sat, 27 Dec 2025 04:17:50 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-477a11d9e67so44886055e9.2 for ; Sat, 27 Dec 2025 01:17:49 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be279d6d8sm483809325e9.10.2025.12.27.01.17.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827072; 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=GTCXqPXLE/4/zflAMpw7ZRNXVyd9ZRmA4bEXl/HdzsQ=; b=Z5NZ3PpiNYZDhp0pD/P+3dVd6d1oCxiiBS5Qu3SKIkiD8Ub0nzASTqts8G81qsNL9ZSxwQ 2tGnhWhQ5l5ctnUD6XL77NNhcCb0vyopGa+LlFl8c618d2uzsNy1IvOwX9dh/DEffEiwLZ h0qpuMPTmNEDnRKbaNCHOVz/D/hNIYI= X-MC-Unique: HMNuaH1nMmWoFaIqOQ1R4Q-1 X-Mimecast-MFC-AGG-ID: HMNuaH1nMmWoFaIqOQ1R4Q_1766827069 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827068; x=1767431868; 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; bh=GTCXqPXLE/4/zflAMpw7ZRNXVyd9ZRmA4bEXl/HdzsQ=; b=RZcsniPYu8075+pfxnUyjP2/td+q4ZTXCm3i9sJm+e9hlsBkoQPfImJ9QqaDLAvZwe oyxEHGHvaZ9HA5u6LuF0tw8EN3HTITjloSY+zFoT5KllKWqz4wiSSf91fekAV1ELLyWn +AXeD5BmPHuMi+7R9P8PSPsz5VVpj8WfGAvC8d1xvoLanyS2B29ZWPnCHOiBtT0f437s XhYkvRJmPhvxAn7608X770a0yWeieGmnUFhuVee6E3vOXB1fRQbwU3uW3ijwU6B3QQU7 axA3Rk7cLTrcnSaeg8zvcNMmWnc/zeunX66pBg1LU3LY36yybGmnzapzXcIFBAcLlpqF TieA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827068; x=1767431868; 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; bh=GTCXqPXLE/4/zflAMpw7ZRNXVyd9ZRmA4bEXl/HdzsQ=; b=smbDLOakjuZ0MSSp8NDcDVVA655/HExjvsoEZcvEp4Zo06e0cv+0kIRytrmOaiKw9d eb13SSK+jNciZrG/m5cRjnBpa2qIy7FBOKyaZ+t5mS9famZT28jEvc6FqFD87S85EygO yadQPprCqByy7ba+/U/HoSQYV9wF3An+IwWRz2zJsXtZTTaqrEH/B1qAb0/dnsoLTEqN OzUYJvS5D9x7Ft0U22L8wRiv4Zsxxe7c2lRFYk46FJyEcTyeOPhAQO718fQpqEjXxqOM /hAoQJlOojvwCFl4eKJqvP96fqe+YtCm3ydfe2X1WnLp6PCjhm11USRbvzbRnTR95dwt Dqsw== X-Gm-Message-State: AOJu0YxDgS+KPQxv4WFuNyRqKPbBjDdTMo50y54lQhkgWL35z4iEUpss hbGB5bGxcswerwsFewMRbIjmnQuTYu/UcEQ13D3ZmkstZ2WU+MiPzr1Aeu8TIsJQ7bge66K5Cuq Mki9Q9r4wWsM28LeMp3glIU0evGOqrdDE8fluCR5YKthLe8hDXgUGt3uidyaxhLES5v82wm6GIM IEvKhOAbgRkSF2wbZ1NMLGDqNoHhv1DCCJD6LQ6Jwo X-Gm-Gg: AY/fxX54MCrfaHs1n3e177nfz9dz367Gm8vJ0JUQO2gGnBYMdY8vKJjCpU5xN1WaX4S 37up4z6dpvaYDVM9cRxCT+NIgkH6op2WqoMHZwEAfKcsfuz919RmGNBLilv3kg9DZSOUUH+da62 QfTwNEi3yrsiP1tSXw2JC+QEZ9GKH9bk2jLD+vluiCN+VSlue4PNIxhfmvxPFep0ofH7J7Ef7dz 07Oa41OnIKTADPP+Cv836UMo3l8f+kvVZ085vYEQm2oXAB2qM4m0bhzOa/I9oX17CS65xhMHH0Y jaysU+1Os6L1nyyC2xtncHb6xWg++KA1J3wXVYfgHKZY1GF36Y/0k8Q8p3cfLRlQ7OuJAwwqsDY 0J07hKzBY/gNhJRtkVfRydKPAvK8XbvX/VSnrWrjeXX8S4LRm2EYR/tArbIGU8T5SgecfVqoLtc powfcvOSGXpdePJRE= X-Received: by 2002:a05:600c:4f15:b0:477:b734:8c41 with SMTP id 5b1f17b1804b1-47d19538dfbmr317525265e9.1.1766827063903; Sat, 27 Dec 2025 01:17:43 -0800 (PST) X-Google-Smtp-Source: AGHT+IE5KReWIw8WM1LxCWxZJuE8zgYNxjy/NLlXont3WePdUDPzweAcHAHbxQW1cgw9qgqnLm8bmQ== X-Received: by 2002:a05:600c:4f15:b0:477:b734:8c41 with SMTP id 5b1f17b1804b1-47d19538dfbmr317525045e9.1.1766827063417; Sat, 27 Dec 2025 01:17:43 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 042/153] bql: add prelude Date: Sat, 27 Dec 2025 10:14:29 +0100 Message-ID: <20251227091622.20725-43-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827462576158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- rust/bql/meson.build | 1 + rust/bql/src/lib.rs | 5 +++++ rust/bql/src/prelude.rs | 4 ++++ rust/chardev/src/chardev.rs | 2 +- rust/hw/char/pl011/src/device.rs | 2 +- rust/hw/core/tests/tests.rs | 2 +- rust/hw/timer/hpet/src/device.rs | 2 +- rust/migration/src/migratable.rs | 2 +- rust/tests/tests/vmstate_tests.rs | 2 +- 9 files changed, 16 insertions(+), 6 deletions(-) create mode 100644 rust/bql/src/prelude.rs diff --git a/rust/bql/meson.build b/rust/bql/meson.build index e5836e3f566..728c9e4dacf 100644 --- a/rust/bql/meson.build +++ b/rust/bql/meson.build @@ -31,6 +31,7 @@ _bql_rs =3D static_library( 'src/lib.rs', 'src/bindings.rs', 'src/cell.rs', + 'src/prelude.rs', ], {'.': _bql_bindings_inc_rs} ), diff --git a/rust/bql/src/lib.rs b/rust/bql/src/lib.rs index ef08221e9c1..d2fea5db1ac 100644 --- a/rust/bql/src/lib.rs +++ b/rust/bql/src/lib.rs @@ -6,6 +6,11 @@ mod cell; pub use cell::*; =20 +// preserve one-item-per-"use" syntax, it is clearer +// for prelude-like modules +#[rustfmt::skip] +pub mod prelude; + /// An internal function that is used by doctests. pub fn start_test() { // SAFETY: integration tests are run with --test-threads=3D1, while diff --git a/rust/bql/src/prelude.rs b/rust/bql/src/prelude.rs new file mode 100644 index 00000000000..42031ec18ab --- /dev/null +++ b/rust/bql/src/prelude.rs @@ -0,0 +1,4 @@ +//! Essential types and traits intended for blanket imports. + +pub use crate::cell::BqlCell; +pub use crate::cell::BqlRefCell; diff --git a/rust/chardev/src/chardev.rs b/rust/chardev/src/chardev.rs index f0b7975dbf7..fb9674b3fb4 100644 --- a/rust/chardev/src/chardev.rs +++ b/rust/chardev/src/chardev.rs @@ -18,7 +18,7 @@ slice, }; =20 -use bql::{BqlRefCell, BqlRefMut}; +use bql::{prelude::*, BqlRefMut}; use common::{callbacks::FnCall, errno, Opaque}; use qom::prelude::*; =20 diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index ff929e60993..be1bdf5ab12 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -4,7 +4,7 @@ =20 use std::{ffi::CStr, mem::size_of}; =20 -use bql::BqlRefCell; +use bql::prelude::*; use chardev::prelude::*; use common::prelude::*; use hwcore::{prelude::*, ClockEvent, IRQState}; diff --git a/rust/hw/core/tests/tests.rs b/rust/hw/core/tests/tests.rs index f38376d0016..e60c9d018f5 100644 --- a/rust/hw/core/tests/tests.rs +++ b/rust/hw/core/tests/tests.rs @@ -4,7 +4,7 @@ =20 use std::{ffi::CStr, ptr::addr_of}; =20 -use bql::BqlCell; +use bql::prelude::*; use hwcore::prelude::*; use migration::prelude::*; use qom::{prelude::*, ObjectImpl, ParentField}; diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index 4ff1779a3d2..b7153a46e31 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -10,7 +10,7 @@ slice::from_ref, }; =20 -use bql::{BqlCell, BqlRefCell}; +use bql::prelude::*; use common::prelude::*; use hwcore::prelude::*; use migration::{self, prelude::*}; diff --git a/rust/migration/src/migratable.rs b/rust/migration/src/migratab= le.rs index ded6fe8f4a6..ce603867502 100644 --- a/rust/migration/src/migratable.rs +++ b/rust/migration/src/migratable.rs @@ -9,7 +9,7 @@ sync::{Arc, Mutex}, }; =20 -use bql::{BqlCell, BqlRefCell}; +use bql::prelude::*; use common::Zeroable; =20 use crate::{ diff --git a/rust/tests/tests/vmstate_tests.rs b/rust/tests/tests/vmstate_t= ests.rs index c3f9e1c7436..87176a80990 100644 --- a/rust/tests/tests/vmstate_tests.rs +++ b/rust/tests/tests/vmstate_tests.rs @@ -9,7 +9,7 @@ slice, }; =20 -use bql::BqlCell; +use bql::prelude::*; use common::Opaque; use migration::{ bindings::{ --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827469; cv=none; d=zohomail.com; s=zohoarc; b=Y5h9cBuPDZgZqhN+x7c5P6SesDOlPjPGih8vKJjceXagiumKkXU6VjHmwl+UT75y04Do8wlA2lereHTH291iObko9v+GDKe4bskU31kyKW0t/9NB0a3P2a//l2+YmEiqgLdafabuuoXjXnqHF1HCoDg3n277OSmYk/g9Zf6DpJ4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827469; 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=w9Ri2pVpELCUzvf62fElrJ9WA+/Vh+qWfkWU/RNk9CM=; b=FpXFJ8JRaKq4hQQ6kwnmqtzd8Fc3nMp/KKt+O7xF7BIUjl7i1eoKq99dcPQtbFMM+R/jA+WLvyKZgXuPB/qk+AeJ40KzF6w3Au0gPPIch4ohaVLAchdSBuE2ELf6DSY1QLOzqQREoOp2lU/H5uT90DX4l1N1msUAj87obmIuEiA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176682746927244.800840684542436; Sat, 27 Dec 2025 01:24:29 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQq-0005Lh-18; Sat, 27 Dec 2025 04:17:52 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQo-0005KE-UY for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:50 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQn-0003JC-Ak for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:50 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-96-J3QTCiD-MVaqD8Gfn4-riA-1; Sat, 27 Dec 2025 04:17:47 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-47775585257so54467015e9.1 for ; Sat, 27 Dec 2025 01:17:46 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d193d4e91sm421394035e9.13.2025.12.27.01.17.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827068; 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=w9Ri2pVpELCUzvf62fElrJ9WA+/Vh+qWfkWU/RNk9CM=; b=czcmZneBHulT/KxMxs5DxvLmowChPpQT6D4AYNKbWluV5ZuUCA7TfFyuuYo7kLId3uC1E1 5yVe7RrYhQFtYzzypM5t9NQTKod1h0QmvkmhHe0p4h49ezAdYmi2C3rDMDsmWA+dtEdcfp ZWvOICrfT0jpInOE4LmzJQ4vVc5FJ6Q= X-MC-Unique: J3QTCiD-MVaqD8Gfn4-riA-1 X-Mimecast-MFC-AGG-ID: J3QTCiD-MVaqD8Gfn4-riA_1766827066 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827065; x=1767431865; 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; bh=w9Ri2pVpELCUzvf62fElrJ9WA+/Vh+qWfkWU/RNk9CM=; b=EmbWHpWsRT7acOeKk+jO6sdyrjua8z/zUQjalMh0mglyCwFCpWU3gQr28FirvlEY25 ZvQnVg0BEF0RJc+5jMF1aLXMOfZkyH0iA5U231QSLPa98uByGVs7Tv7ywYPSDEr2HhHn LuJoEWi8Sex5zrKhp0IRh8GNSPEmqieBbtc4zTTeOj17fGZsyad+F+oXXDoHUnHCQa/x Pai1z964acx5fLxx9Wi5SuCxBGA8IU7fOahtxTVpV9sLkcwz66rZmc06QeZ1MBv6uUrs LSftIl50z+2yE93OBEq6dIfn2nfLljibJtt6h8u2yMubMGQP46wVaak9ewe6O+w0VRYW n0GA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827065; x=1767431865; 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; bh=w9Ri2pVpELCUzvf62fElrJ9WA+/Vh+qWfkWU/RNk9CM=; b=U/KNjb23gr73EI8r19C+ODLD6D638hOJavcL3GwXLEjWkqRc7l8YJDDKBOcRs2zDEs bEyL4RvAEk7vmsbwXSATOjpiLkdZUVQ6z6sPPOCKICB5Pluvs/4tp9y9o1Qtssj2405D INd7Qbkc291SFPOd+kja2QePzyg1PBDgn5Fs3cfps+znu6aBRVTtgO6NFnnF6/SDOgBi XD9q6MdYn1UML2ipR8qql3Y1j/LLVQRPfTXRMksrKTsFx7NSnfhTC20aEZF+HDwSnBg/ zxIfRkemaog6y6aBy/NEoIx1y9Zf6JWqJuusrGDPORKsA9+IXAzUtiWHc5XlqttD1W3P KtMw== X-Gm-Message-State: AOJu0YwucPs+VeQFQYkuqh/KyyxEZZjxPvL+SlcUpr8/i5YA6DrIlK5j oYn90EYsd+MJK/lM1Y1zvrEoXv7VwUe+3A8u4uTf6gvcwD5zWz74c33UhaPmf6znT9X5MuEJNdp 7ZX5N3PFXLoKfpjqVud7HmCuE1S56/Hf/jjEh7ot8B9sqThWIpFkGKTD6XRwKBjIqHb5Iakz2Wp Uheph+ecmLzMxidpUoDRM8EhmooGVgBmzcUAsC0D4o X-Gm-Gg: AY/fxX7Vsk8xKiUIaW2XhGqohHtAHOF69aiP9DYkymeRfJYBSDYHC5EGBh8q6HlK/UG ygbF4063gednLi/VMQlDWmwvJidKa00beuTPJnPxRD2rdI2p9jhTPtP8TiE+Fw52/JJ+4XPNMuG 7s2SvjyL0Bj+hZrNxncCCbnTowzd/YcuMyP1AWxNuTu6nL98NGPxXi4aDJY0cP6IlKahhqxYpHh soJCpcq3hP1fOxSFmfBkg9fOqqfmbNebHAhk8+seAqgc7Mp76xQ8hxbK6/xK4LpKO/IBqI+U7IL qOEs5oSL1UQeE1o/Nq5wJx92kOPCI3bVan/YEQJEXE5LFXji28rr4dwsB/jkBpnNXMfd8cTdyz7 qhXFdb0FEg3bYO1wLcprC97W5Xq/xzJn9m/R2/tk9r1vjtBI4ooXmSOsBZqx+j07+IJoGkcsQWK PAFpMG74RGzjiN5Zo= X-Received: by 2002:a05:600c:3b07:b0:47a:814c:eea1 with SMTP id 5b1f17b1804b1-47d195917d2mr264795275e9.35.1766827065358; Sat, 27 Dec 2025 01:17:45 -0800 (PST) X-Google-Smtp-Source: AGHT+IH7tP8Ocwm5SXjPjY2VZdH8eCz/OcFkuPaayTunLa9U+dq6nWLy8B1Sq7PEfBIDe0vNvUNhsg== X-Received: by 2002:a05:600c:3b07:b0:47a:814c:eea1 with SMTP id 5b1f17b1804b1-47d195917d2mr264794975e9.35.1766827064820; Sat, 27 Dec 2025 01:17:44 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 043/153] system: add prelude Date: Sat, 27 Dec 2025 10:14:30 +0100 Message-ID: <20251227091622.20725-44-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827470668158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- rust/hw/char/pl011/src/device.rs | 2 +- rust/hw/timer/hpet/src/device.rs | 5 +++-- rust/system/meson.build | 1 + rust/system/src/lib.rs | 5 +++++ rust/system/src/prelude.rs | 8 ++++++++ 5 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 rust/system/src/prelude.rs diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index be1bdf5ab12..0b1bb2d5a3b 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -10,7 +10,7 @@ use hwcore::{prelude::*, ClockEvent, IRQState}; use migration::{self, prelude::*}; use qom::{prelude::*, ObjectImpl, Owned, ParentField, ParentInit}; -use system::{hwaddr, MemoryRegion, MemoryRegionOps, MemoryRegionOpsBuilder= }; +use system::prelude::*; use util::prelude::*; =20 use crate::registers::{self, Interrupt, RegisterOffset}; diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index b7153a46e31..c5cdb87b073 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -16,8 +16,9 @@ use migration::{self, prelude::*}; use qom::{prelude::*, ObjectImpl, ParentField, ParentInit}; use system::{ - bindings::{address_space_memory, address_space_stl_le, hwaddr}, - MemoryRegion, MemoryRegionOps, MemoryRegionOpsBuilder, MEMTXATTRS_UNSP= ECIFIED, + bindings::{address_space_memory, address_space_stl_le}, + MEMTXATTRS_UNSPECIFIED, + prelude::*, }; use util::prelude::*; =20 diff --git a/rust/system/meson.build b/rust/system/meson.build index 2cd2dd36679..e9f36ed8554 100644 --- a/rust/system/meson.build +++ b/rust/system/meson.build @@ -30,6 +30,7 @@ _system_rs =3D static_library( 'src/lib.rs', 'src/bindings.rs', 'src/memory.rs', + 'src/prelude.rs', ], {'.': _system_bindings_inc_rs} ), diff --git a/rust/system/src/lib.rs b/rust/system/src/lib.rs index aafe9a866c9..5fb83b65d8d 100644 --- a/rust/system/src/lib.rs +++ b/rust/system/src/lib.rs @@ -4,3 +4,8 @@ =20 mod memory; pub use memory::*; + +// preserve one-item-per-"use" syntax, it is clearer +// for prelude-like modules +#[rustfmt::skip] +pub mod prelude; diff --git a/rust/system/src/prelude.rs b/rust/system/src/prelude.rs new file mode 100644 index 00000000000..2d98524c36e --- /dev/null +++ b/rust/system/src/prelude.rs @@ -0,0 +1,8 @@ +//! Essential types and traits intended for blanket imports. + +// Core memory types +pub use crate::memory::hwaddr; +pub use crate::memory::MemoryRegion; +pub use crate::memory::MemoryRegionOps; +pub use crate::memory::MemoryRegionOpsBuilder; +pub use crate::memory::MemTxAttrs; --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827560; cv=none; d=zohomail.com; s=zohoarc; b=WjM57pSE3Tetg9Gt4pixqG/R1ikyBblneYf+FiPKM7HumCVhXnFX4dIopa/jTkpD9iRbmNtL4sko0Z7T4wZTuZx/SuM8B1xDUWvfe3rFMaSfOLiFFkb8Dx/bPT2ZGbshwx0gzYWFjnYSqXRW+2551uogconcZikrg02d6fyD2y4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827560; 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=BcYiSMPHRhr9NPTHybSXLlaJL+NoJQyoxLhUprtUz0k=; b=VZLQeNCDR6k+43bv/4YlZK0MUxARFfuGPWN0m2vXpdj0Ndw7KHc12S4K3VudZO4lkIrYEMYvGPDT7scwZuO301tAJCZOrgbFJGk5AFKCAJJyYuT8AbqeaOWhBFDOTCVgVSFYYcx2bxiJuK9FOX6RKh34VqCFoOxnNQ1wJ7jGx0U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827560816769.6551820081936; Sat, 27 Dec 2025 01:26:00 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQr-0005NE-3X; Sat, 27 Dec 2025 04:17:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQq-0005ME-D1 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:52 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQo-0003JI-Gy for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:52 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-582-nCbtgSXXO2yxqCbDMdlp8g-1; Sat, 27 Dec 2025 04:17:48 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4779b3749a8so54867785e9.1 for ; Sat, 27 Dec 2025 01:17:48 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d193cba81sm426726835e9.10.2025.12.27.01.17.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827069; 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=BcYiSMPHRhr9NPTHybSXLlaJL+NoJQyoxLhUprtUz0k=; b=RlcVOtRruyuO9h7fzSb8w6OXfQgBN0iz8MlYJTgw3pSxKdDGfWtIWlLHgmWP3TUqQk4kAx 5ndCHTft4DmV60v7YRPmcXfvDinnh+LSeFua+sxfEqTBAeIVBuyDqXIeTMkXB/L21WmZgX UZHVgqlBc18qkvEO+1znCvnXejGunOE= X-MC-Unique: nCbtgSXXO2yxqCbDMdlp8g-1 X-Mimecast-MFC-AGG-ID: nCbtgSXXO2yxqCbDMdlp8g_1766827067 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827066; x=1767431866; 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; bh=BcYiSMPHRhr9NPTHybSXLlaJL+NoJQyoxLhUprtUz0k=; b=DSBru235IAE0E5F5je+x1y9V+N6nSH5RtqhIwshWjZPyFW24tTXReJfxANCqL0Z3pe lMUtAqb+wdMCTjzqAL2jYuiEKI1TtJznjWBOiAxVOBitfYwWRzuYNONdvYszxnXKMag+ hl1WaAysRxi4LKddMyEj4vwy4/uix9flVVSRbvnQO5ezksvujBO+s77moblIwjJ+3C76 lcl7LzFom8wDF7jd03wWQYGtsGay/xoftG9DlsgenOpkiFierZY1mLX6H2Mv41q1uvE+ aq/WFZS12hPQmnvtmGAOI61QZVpHSPjk9WIxvPNvdRzHzOkyzDARfz5i32hk+1bqic7F K7EQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827066; x=1767431866; 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; bh=BcYiSMPHRhr9NPTHybSXLlaJL+NoJQyoxLhUprtUz0k=; b=pFejA4MOTPFfV19Xkf7jIabw+FaZFDrs0m1/43gzZ72aEQ+nM/+vnRtqBgixI/4F5a PYfynNK8s9ryarmSQDfSxfjG1e8ae5L9l2e4jzrlUxGeYZHKVSH4n48G+/DOmMDzl5yA N5Naay1pgSHjkTxS8Hi0MMNSSqccNdOpY0EpYkax7/ynO+ldGp6KFNp8jAhtqciW0k9f nC1dxPt/vKHj+8za8lilk/a5peHMngMgtB1dUssle0LU6DWnE8kz7gddDOwv3KxVenk+ al542Jj1kwqU+qylwGqkWM02n/+5wU+QOoxUF3FJumiSTcZYuJsSXYvpi5J4OqBQq2TM IrfQ== X-Gm-Message-State: AOJu0Yx7cE2Da3QJqUCJBgQ6PTXS7PTdOy2YlSTBt9JcAOl/b/qAiKuQ 6BoF3OrozrlemC7stUEIbAR1V4mYaERD3v22Uxy/fVnseGH3kgSVj9ajRPECt6RrBisxzdDxkZi mR6pnkvoOgYPz8PABXxgtMv9+8SLrVX0fSYr8SDFF1o6MBuRpBmUh5pp5a3+TGT4Srseqxx9uwE UJ8Ru/3tINulDFzPtR2VdJ00Jw4VrvkkBxNd+MvH9C X-Gm-Gg: AY/fxX6YtUOMRkfLdMI5klNwZGObWyKLgmLTCmvpL3SdyQHITwHTm949X7tpqYrrSFF k1Xkzmv9OYWgHpgKdEi31RNnv/OloOrO+rhnI+jaq1g3Njyi8c8CyTRwQZM7aZB4YKrPkRmiT9X ssdst/E+drbtneoc1FyIwZOfKrGoKU2rQQK1n07Cn7nIwbmgQjdDwAzpMejJEqC+7pbY431MB+1 rgNYsmv7YHBtXbiC1v81oqwT5c45pa5aH0bvF2gch2F/OPMBA0+e/SbdyJ7z3g4MSDeyQKph6Do SZM+Mp+VnVDIg6RAw11BoDwv1qhj+d0LONgTbvr3Rhk1sB7n4SWQjn1NBBfG4gqFZS+34ORJWcS RLjl7nzLtixlDqH8f/W4Zm7TTc/hh5rIjf27mc6rUWSPAQTpCHy9QIEQjl1iX/wYY74FPPHvBiG rO7HBjIQKC7X0egiU= X-Received: by 2002:a05:600c:350b:b0:471:1774:3003 with SMTP id 5b1f17b1804b1-47d1958ef07mr248776275e9.29.1766827066321; Sat, 27 Dec 2025 01:17:46 -0800 (PST) X-Google-Smtp-Source: AGHT+IGxcCvVmVgGt9VmZPiK/W01YxArFV57JKA7voZorMIDY+l6m815+h1YITbidc/sUZwGKmKN/Q== X-Received: by 2002:a05:600c:350b:b0:471:1774:3003 with SMTP id 5b1f17b1804b1-47d1958ef07mr248775995e9.29.1766827065826; Sat, 27 Dec 2025 01:17:45 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 044/153] qom: add more to the prelude Date: Sat, 27 Dec 2025 10:14:31 +0100 Message-ID: <20251227091622.20725-45-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827562847158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- rust/hw/char/pl011/src/device.rs | 2 +- rust/hw/core/src/qdev.rs | 2 +- rust/hw/core/src/sysbus.rs | 2 +- rust/hw/core/tests/tests.rs | 2 +- rust/hw/timer/hpet/src/device.rs | 2 +- rust/qom/src/prelude.rs | 4 ++++ 6 files changed, 9 insertions(+), 5 deletions(-) diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index 0b1bb2d5a3b..9f5c4a34df0 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -9,7 +9,7 @@ use common::prelude::*; use hwcore::{prelude::*, ClockEvent, IRQState}; use migration::{self, prelude::*}; -use qom::{prelude::*, ObjectImpl, Owned, ParentField, ParentInit}; +use qom::prelude::*; use system::prelude::*; use util::prelude::*; =20 diff --git a/rust/hw/core/src/qdev.rs b/rust/hw/core/src/qdev.rs index c2ca17f6ce0..87232becbad 100644 --- a/rust/hw/core/src/qdev.rs +++ b/rust/hw/core/src/qdev.rs @@ -12,7 +12,7 @@ use chardev::Chardev; use common::{callbacks::FnCall, Opaque}; use migration::{impl_vmstate_c_struct, VMStateDescription}; -use qom::{prelude::*, ObjectClass, ObjectImpl, Owned, ParentInit}; +use qom::{prelude::*, ObjectClass}; use util::{Error, Result}; =20 pub use crate::bindings::{ClockEvent, DeviceClass, Property, ResetType}; diff --git a/rust/hw/core/src/sysbus.rs b/rust/hw/core/src/sysbus.rs index ec620639be5..071fccff1e6 100644 --- a/rust/hw/core/src/sysbus.rs +++ b/rust/hw/core/src/sysbus.rs @@ -8,7 +8,7 @@ =20 pub use bindings::SysBusDeviceClass; use common::Opaque; -use qom::{prelude::*, Owned}; +use qom::prelude::*; use system::MemoryRegion; use util::{Error, Result}; =20 diff --git a/rust/hw/core/tests/tests.rs b/rust/hw/core/tests/tests.rs index e60c9d018f5..115dd7a860d 100644 --- a/rust/hw/core/tests/tests.rs +++ b/rust/hw/core/tests/tests.rs @@ -7,7 +7,7 @@ use bql::prelude::*; use hwcore::prelude::*; use migration::prelude::*; -use qom::{prelude::*, ObjectImpl, ParentField}; +use qom::prelude::*; use util::bindings::{module_call_init, module_init_type}; =20 // Test that macros can compile. diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index c5cdb87b073..c82b27ddf15 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -14,7 +14,7 @@ use common::prelude::*; use hwcore::prelude::*; use migration::{self, prelude::*}; -use qom::{prelude::*, ObjectImpl, ParentField, ParentInit}; +use qom::prelude::*; use system::{ bindings::{address_space_memory, address_space_stl_le}, MEMTXATTRS_UNSPECIFIED, diff --git a/rust/qom/src/prelude.rs b/rust/qom/src/prelude.rs index 00a60959771..6a1ecaef2a7 100644 --- a/rust/qom/src/prelude.rs +++ b/rust/qom/src/prelude.rs @@ -6,7 +6,11 @@ pub use crate::qom::ObjectCast; pub use crate::qom::ObjectClassMethods; pub use crate::qom::ObjectDeref; +pub use crate::qom::ObjectImpl; pub use crate::qom::ObjectMethods; pub use crate::qom::ObjectType; +pub use crate::qom::Owned; +pub use crate::qom::ParentField; +pub use crate::qom::ParentInit; =20 pub use crate::qom_isa; --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827228; cv=none; d=zohomail.com; s=zohoarc; b=j4Gla/2vNegX+p6HvsJj39BDvrV2xjHS0F0hlbU3OXWqBvTXxZYFI3yZg6lIrDMUd/6ZPARu8bRWCzgHOi9ZJSHiK+pUuqFG1qC5jf/oyJ2EdjwN1No5t2gn11zaNlWPMgDMJsy0mEXz/o/odnWR7bxn7hPLDt9C2v59dSaOEiM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827228; 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=Saf9PETHsvdIuPhzv3hNmYIifKozrOKriQHb+ziBQiU=; b=B8A2u/s4pRBWznGjzlNZo7x3P3swplL5DdNoAjJF1XRLYnhsJhgVWMPwp2Oce5Kc82JHKvhuSfgky9St/uRJaT/pDmMrjMD2neqqpLYjBQpkSPNYGdyjXoior4moFo1Qel/OnnEiqIAGo2vDVMaHwXfeF3UhVhvw6dMaoEi68RY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827228233262.29207467310346; Sat, 27 Dec 2025 01:20:28 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQQv-0005P8-3t; Sat, 27 Dec 2025 04:17:57 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQs-0005O0-3q for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:54 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQq-0003Mq-Ha for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:53 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-681-m-WjB_NaPVO6xIhky76RKg-1; Sat, 27 Dec 2025 04:17:50 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-430f527f5easo4791414f8f.1 for ; Sat, 27 Dec 2025 01:17:50 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be279d6d8sm483811885e9.10.2025.12.27.01.17.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827071; 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=Saf9PETHsvdIuPhzv3hNmYIifKozrOKriQHb+ziBQiU=; b=goJEhM4X5HEYERcdHyhKo7DYw0oOdMJnBgw+mnoxQ3siG6IbthnQivcRMRwhKGqdqVCCw4 1D1/ml5MMuakTcqwmW1JN9ve5+8hyfGdnSBR+3scoD9joSTtdscqkCmdgARTBQCsMSuXfB eiTUNjoweI08ZpOhfy7xbXRwthlqCnE= X-MC-Unique: m-WjB_NaPVO6xIhky76RKg-1 X-Mimecast-MFC-AGG-ID: m-WjB_NaPVO6xIhky76RKg_1766827069 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827068; x=1767431868; 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; bh=Saf9PETHsvdIuPhzv3hNmYIifKozrOKriQHb+ziBQiU=; b=b3AzFjEcJhNZ7IrRCdVsFhZBU5yIohVT82O8IuvsmJ+ycCqtPUxLfL3Lq4tbEUhL9a YDQYGNtr25aKDEWI0w3sDmfaRgZBandVV3djN/1JtQb8Dh9pgR8+nyfqxrrs4x5mnM26 qPCfewyrJ0axLV1Z1IH/v9gG5Ps3TNsSCDqw4mrulsvzOU/lZYhvlv+U9Io4lTwAkGJL JHHT1SKbp1897BGByorbe8VPzuqH0oubg0s8ft4Pcjp5v/Feb2ivxVcWj3RbLy53Ek++ vgHwJfaifqzx650JbR8sBjPqOEAk9pocSaRmey59JYkJiax4N1rith/QiG2DvU5zsQh7 yxoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827068; x=1767431868; 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; bh=Saf9PETHsvdIuPhzv3hNmYIifKozrOKriQHb+ziBQiU=; b=U+ACRvjED/JTp+DF50TEkwwT2ARy7wkPj6U/iISfgt4LClr24gWkWBnzarSJn/Mrt7 xX/ol6rmR25tsvfd2UYMaacPQLdJCcqmpMuY+VQI1W97Ku5DMjvxK16Kl4O391lND8It sKgSOLvKAs5ztcWR2D+TTmit+5GFVTjlsqMLVgZ9MR34Q55nCp4by7BCm2SPI6tmFyQl 8sNoP6dVagXG6dzxtLA9HOUDXzBLM8vDKwjeQHNukrYuGe65kp4121c/ZNB378zKWshA GNKZRG0tPBHvKI2NjYnhPpaP2oiYIcQthKrYTqP/6tVuHMtQa4VsjWcU7iAUce8ApAfC CReg== X-Gm-Message-State: AOJu0YydNQyevH32N8S+M/6KnHBycfOjLUI4R0uhmjGuf3XfiPOt9D18 FBHvwaIDVG/wPWn84e4olvPHooNtgV5xpe09gRxRsU4eSbtrhRWENXfWAFcIjza96zOQFApnATK JjBR7Q1C+npat5aaCRZl6S78YNLXMBmpExOrxmg2IoPb7eWWUGPetAOMNVp1xdjEAvkB27ohlEb k9kst0PcSAh+1xJtYFq5VvDe7z//2zi9GGLhDPAa5j X-Gm-Gg: AY/fxX5A3ByN/LlW73+0kMzUJx2jJoKZwwyYvxwycqpWKf55V3l0uJXCTEdzjVHWW0B pH3v1hXt2gXBIUyGK0M+FavhVxIs0NGB/2gS0b0Qjdb21ALbY/4nJhKEQwwJQmBZ6lOP0M4m4Au SNXRRaKv9VPp1qEABYVTJm/Iv8bHK9c3ju+18M8EGRo14Gl/JuvTfjTRqY94AvCtlOBB8xbegjb 7yObZwg8tdaJJk8+QE4FDlQhAR1dAWzztbRdMwpcdneMNFIhEe5PQqej/15hzJopbmmicfbKtwB ZcX6l87FZZATasbJr8J9cSmwL5orh4ZrWUI3c+/U4VCeFuW5Wb2a+0GkMwY6uvcc3D1Dh/t+L91 DD3j62u6nnm+c0RdQTXaslrHZPr2PgDFukCqkoC4oJhUmTfYJGKw8AujTnghZaulX0H9MzdYXxj GgxcfDuvTK/tBukXs= X-Received: by 2002:a05:600c:4f08:b0:475:d9de:952e with SMTP id 5b1f17b1804b1-47d18b83218mr273763375e9.1.1766827068126; Sat, 27 Dec 2025 01:17:48 -0800 (PST) X-Google-Smtp-Source: AGHT+IEf36DEy3WgmEV+PRop4O1VCaEYDnttE/4kNKkHZerpkgnFKSo475+eyM2AGyHovOYeR1fMIg== X-Received: by 2002:a05:600c:4f08:b0:475:d9de:952e with SMTP id 5b1f17b1804b1-47d18b83218mr273763095e9.1.1766827067629; Sat, 27 Dec 2025 01:17:47 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Stefan Hajnoczi , Manos Pitsidianakis Subject: [PULL 045/153] hpet: remove unused trace events Date: Sat, 27 Dec 2025 10:14:32 +0100 Message-ID: <20251227091622.20725-46-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827229809158500 Content-Type: text/plain; charset="utf-8" From: Stefan Hajnoczi Signed-off-by: Stefan Hajnoczi Reviewed-by: Manos Pitsidianakis Link: https://lore.kernel.org/r/20251106215606.36598-2-stefanha@redhat.com Signed-off-by: Paolo Bonzini --- hw/timer/trace-events | 2 -- 1 file changed, 2 deletions(-) diff --git a/hw/timer/trace-events b/hw/timer/trace-events index 2bb51f95ea8..f3fca6fc9b1 100644 --- a/hw/timer/trace-events +++ b/hw/timer/trace-events @@ -112,7 +112,6 @@ sh_timer_write(uint64_t offset, uint64_t value) "tmu012= _write 0x%" PRIx64 " 0x%0 =20 # hpet.c hpet_timer_id_out_of_range(uint8_t timer_id) "timer id out of range: 0x%" = PRIx8 -hpet_invalid_hpet_cfg(uint8_t reg_off) "invalid HPET_CFG + %u" PRIx8 hpet_ram_read(uint64_t addr) "enter hpet_ram_readl at 0x%" PRIx64 hpet_ram_read_reading_counter(uint8_t reg_off, uint64_t cur_tick) "reading= counter + %" PRIu8 " =3D 0x%" PRIx64 hpet_ram_read_invalid(void) "invalid hpet_ram_readl" @@ -123,4 +122,3 @@ hpet_ram_write_tn_cmp(uint8_t reg_off) "hpet_ram_writel= HPET_TN_CMP + %" PRIu8 hpet_ram_write_invalid_tn_cmp(void) "invalid HPET_TN_CMP + 4 write" hpet_ram_write_invalid(void) "invalid hpet_ram_writel" hpet_ram_write_counter_write_while_enabled(void) "Writing counter while HP= ET enabled!" -hpet_ram_write_counter_written(uint8_t reg_off, uint64_t value, uint64_t c= ounter) "HPET counter + %" PRIu8 "written. crt =3D 0x%" PRIx64 " -> 0x%" PR= Ix64 --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827489; cv=none; d=zohomail.com; s=zohoarc; b=j/X97WjB0jh/H4LO1yY2RYzKaJCKm2TZv9oAV14b156suX9E8458LocWwOXmyn4BCQZDWSN/31cFO5iGMRZtTnalXJH60apKi1obvcbJtm9laE4Ooa9aENp/m94WwY89tNI0o/1Kwz4K2wWJVUQo94sGbBSFcJu9QbkQeDeg2NY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827489; 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=kYWPfvt7RxlWz1Fc5/w7WlUWta1x0esdmfC55Kug0eE=; b=AW+hfK8QUUFr/EDIeh1bGEoR6jsVWJfaMt58GuXkp/ZxUIFY/xiuCitYMWNgdyD1GfF6d80XEAoW0f4BsMKU8bT3KbAgPDpg3zKUqom0dMVU7RSUIzJT5u0CGcGfHd6GdBw39wKAJFy/XVWopTlfgJYJBNX+EiPNvuZUUOPho2s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17668274892501014.9237554696483; Sat, 27 Dec 2025 01:24:49 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQR1-0005Ws-CM; Sat, 27 Dec 2025 04:18:03 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQv-0005PV-5u for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:57 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQt-0003VR-Bj for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:56 -0500 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-658-8eaMrJDwOH2TzNc8fFII3A-1; Sat, 27 Dec 2025 04:17:53 -0500 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-430fd96b2f5so6779124f8f.3 for ; Sat, 27 Dec 2025 01:17:53 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa0908sm49534672f8f.31.2025.12.27.01.17.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827074; 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=kYWPfvt7RxlWz1Fc5/w7WlUWta1x0esdmfC55Kug0eE=; b=U7j5TbcZS0onQ1ZbNPPHn4mLrkCcdnwKmRT2VFpgTS8twG9migvJJ0xL9Ph3foTAtpyWLd 4JevCsY8kK0NH4S3RXB8/i/L3MkoKeZXVILDQOW/GBwe0fHZojjzeUBJaGOqOyBOyK9wVd WtOiXXY3zLg/Keo12idTOIlaS1muOso= X-MC-Unique: 8eaMrJDwOH2TzNc8fFII3A-1 X-Mimecast-MFC-AGG-ID: 8eaMrJDwOH2TzNc8fFII3A_1766827072 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827071; x=1767431871; 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; bh=kYWPfvt7RxlWz1Fc5/w7WlUWta1x0esdmfC55Kug0eE=; b=UY7cUFM3y5MCGRXcAWAQrJyuZMEQA44X3skAdiCP2vA/kgL1RhozlnaiFgok2BG1YC dzvDHKOfljCN2XK+TfO4fZ5fuPaAeOBTF1cbkSwiCZQOrap5/FvIB0/HyXDhX46lZMVD JAwiJfbZUUXR1gTAYhjEd3ZumJFTsZXYkVT6/gRulCj7osCOt63zchXP9RoBI3kussgF zhczm66laLweKkycvm6/0A2n7Khq8ljQ/VpRSy+Y5SjzxgiAL9eqk2wHiOuQLOn7/GRd 8aIw+YjB59yVgudXw5J4pVmRu80S1y7dypDtBuyc6JiqBsyAKUpO+z7VMLuvNPmLUV5P oZyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827071; x=1767431871; 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; bh=kYWPfvt7RxlWz1Fc5/w7WlUWta1x0esdmfC55Kug0eE=; b=NIpZNYvw4IDvoUbCIJHBe0ifjhA2uJvrWOe8KAd+d3WVJYDI739+Wd+ASPYxtEPS7c tSf+tWwoLDDfPfo0QuQnHf/jEhxLsh4wjyB8xNUn3+yGkCqTv33TZbANhr856xcmBh8f d84nOU8U55LI417scgWdHzXaB0Da8hbanMcGaNsZ7wg7g/e66bBfsl8oJ9JiuAAO0nw4 0gc0CF3bqvesYTENs2ZBsin4GoDx5aJuBRpowx9JLQ1533qhmVYJMq5bGMdN3c2xGmyv ExcPn8bZvNqB4bOk7bWJxeyr97Cg2IVKSFArrw/8GZg7iBvWamkhfPIUHfEnR5sUtCg2 g6LQ== X-Gm-Message-State: AOJu0YwsXLb8fnlghjfDUuY6Ry10mvTkRXHB/tPwOsktnrfQQ2rbXph+ zLhuFTbEqiSjR7p75BRVnStjg8hPbYjcIRwVq8HtcCRbZxWY45eKehZpcaAC2UQk9Uv2vySb3ud vGnte7S5y7BGXRTt8hYd1ceGFfU9MGv8PDT4w9QqDtVEqaF/0U8AzotqJF5wtMv1/tPkpYBZVoy 7FRjPwtnb5Utkj+A674fCd6KkRV5RYKg0hZZS2dQ8F X-Gm-Gg: AY/fxX7T0kmYvpA6D121/hnMwNGi231tpY8iNQgq0x6oEH/9UsJxZjyW2HeXS5SPFQR BTtVJRRsT97xjfTOdpGW2RQlQKZEVeScgpFyJRERlLbXgTqTqEJn5jI/05+3zbbiwcCN1ajvW7Z 9kQZHI2Btfo7xl8LyWq56+2ual9s/vnu97D6bbknBrOk0uxN7hNRxNeMUIjibg7sPC5hfrs+cWU MUCpam6T+rCIbF9ski8ycp+eQEiJnV7R+LxtWD3X4NXv2jhX9MeWYw0+U3w92wWIzbROxTVfATK CX1sjfXypqjgoD5DI13bVHbipLO7fTznYV77Nm2tDjeAxTNE8MPRAohxaHOXGLLRh9XwgaW1Ib4 ft6vHcWO4zJ02caDlh28FIudowaowieSDiSQ5oC8jbCTtB/f/xp8SAw1ccCd9MT/glyEms6t461 TUtnJD2jd5aw0TvKQ= X-Received: by 2002:a05:6000:2285:b0:431:1d4:3a82 with SMTP id ffacd0b85a97d-4324e4c6405mr32278416f8f.11.1766827071282; Sat, 27 Dec 2025 01:17:51 -0800 (PST) X-Google-Smtp-Source: AGHT+IHvv3vS4zPd41glGYlB5sJBDi5+XzHXtprzZbh2jnkb3swK20rj84cjYdzgy8M9EOFmp/uGpg== X-Received: by 2002:a05:6000:2285:b0:431:1d4:3a82 with SMTP id ffacd0b85a97d-4324e4c6405mr32278382f8f.11.1766827070708; Sat, 27 Dec 2025 01:17:50 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Stefan Hajnoczi , Manos Pitsidianakis Subject: [PULL 046/153] rust/hpet: add trace events Date: Sat, 27 Dec 2025 10:14:33 +0100 Message-ID: <20251227091622.20725-47-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827490734158500 Content-Type: text/plain; charset="utf-8" From: Stefan Hajnoczi Implement the same trace events as the C implementation. Notes: - Keep order of hpet_ram_write_invalid_tn_cmp and hpet_ram_write_tn_cmp the same as the C implementation. - Put hpet_ram_write_timer_id in HPETTimer::write() instead of HPETState::decode() so that reads can be excluded. Signed-off-by: Stefan Hajnoczi Reviewed-by: Manos Pitsidianakis Link: https://lore.kernel.org/r/20251106215606.36598-3-stefanha@redhat.com Signed-off-by: Paolo Bonzini --- hw/timer/trace-events | 2 +- rust/Cargo.lock | 1 + rust/hw/timer/hpet/Cargo.toml | 1 + rust/hw/timer/hpet/meson.build | 1 + rust/hw/timer/hpet/src/device.rs | 44 ++++++++++++++++++-------------- 5 files changed, 29 insertions(+), 20 deletions(-) diff --git a/hw/timer/trace-events b/hw/timer/trace-events index f3fca6fc9b1..ac5afe84e83 100644 --- a/hw/timer/trace-events +++ b/hw/timer/trace-events @@ -116,7 +116,7 @@ hpet_ram_read(uint64_t addr) "enter hpet_ram_readl at 0= x%" PRIx64 hpet_ram_read_reading_counter(uint8_t reg_off, uint64_t cur_tick) "reading= counter + %" PRIu8 " =3D 0x%" PRIx64 hpet_ram_read_invalid(void) "invalid hpet_ram_readl" hpet_ram_write(uint64_t addr, uint64_t value) "enter hpet_ram_writel at 0x= %" PRIx64 " =3D 0x%" PRIx64 -hpet_ram_write_timer_id(uint64_t timer_id) "hpet_ram_writel timer_id =3D 0= x%" PRIx64 +hpet_ram_write_timer_id(uint8_t timer_id) "hpet_ram_writel timer_id =3D %"= PRIu8 hpet_ram_write_tn_cfg(uint8_t reg_off) "hpet_ram_writel HPET_TN_CFG + %" P= RIu8 hpet_ram_write_tn_cmp(uint8_t reg_off) "hpet_ram_writel HPET_TN_CMP + %" P= RIu8 hpet_ram_write_invalid_tn_cmp(void) "invalid HPET_TN_CMP + 4 write" diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 0c1df625df1..f520597f25d 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -144,6 +144,7 @@ dependencies =3D [ "migration", "qom", "system", + "trace", "util", ] =20 diff --git a/rust/hw/timer/hpet/Cargo.toml b/rust/hw/timer/hpet/Cargo.toml index f781b28d8b3..5567eefda4a 100644 --- a/rust/hw/timer/hpet/Cargo.toml +++ b/rust/hw/timer/hpet/Cargo.toml @@ -18,6 +18,7 @@ bql =3D { path =3D "../../../bql" } qom =3D { path =3D "../../../qom" } system =3D { path =3D "../../../system" } hwcore =3D { path =3D "../../../hw/core" } +trace =3D { path =3D "../../../trace" } =20 [lints] workspace =3D true diff --git a/rust/hw/timer/hpet/meson.build b/rust/hw/timer/hpet/meson.build index bb64b96672e..9a3dd62caa3 100644 --- a/rust/hw/timer/hpet/meson.build +++ b/rust/hw/timer/hpet/meson.build @@ -11,6 +11,7 @@ _libhpet_rs =3D static_library( qom_rs, system_rs, hwcore_rs, + trace_rs, ], ) =20 diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index c82b27ddf15..a2c5b7d04c6 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -17,13 +17,15 @@ use qom::prelude::*; use system::{ bindings::{address_space_memory, address_space_stl_le}, - MEMTXATTRS_UNSPECIFIED, prelude::*, + MEMTXATTRS_UNSPECIFIED, }; use util::prelude::*; =20 use crate::fw_cfg::HPETFwConfig; =20 +::trace::include_trace!("hw_timer"); + /// Register space for each timer block (`HPET_BASE` is defined in hpet.h). const HPET_REG_SPACE_LEN: u64 =3D 0x400; // 1024 bytes =20 @@ -394,7 +396,8 @@ fn del_timer(&mut self) { =20 /// Configuration and Capability Register fn set_tn_cfg_reg(&mut self, shift: u32, len: u32, val: u64) { - // TODO: Add trace point - trace_hpet_ram_write_tn_cfg(addr & 4) + trace::trace_hpet_ram_write_tn_cfg((shift / 8).try_into().unwrap()= ); + let old_val: u64 =3D self.config; let mut new_val: u64 =3D old_val.deposit(shift, len, val); new_val =3D hpet_fixup_reg(new_val, old_val, HPET_TN_CFG_WRITE_MAS= K); @@ -427,17 +430,18 @@ fn set_tn_cmp_reg(&mut self, shift: u32, len: u32, va= l: u64) { let mut length =3D len; let mut value =3D val; =20 - // TODO: Add trace point - trace_hpet_ram_write_tn_cmp(addr & 4) if self.is_32bit_mod() { // High 32-bits are zero, leave them untouched. if shift !=3D 0 { - // TODO: Add trace point - trace_hpet_ram_write_invalid_tn= _cmp() + trace::trace_hpet_ram_write_invalid_tn_cmp(); return; } length =3D 64; value =3D u64::from(value as u32); // truncate! } =20 + trace::trace_hpet_ram_write_tn_cmp((shift / 8).try_into().unwrap()= ); + if !self.is_periodic() || self.is_valset_enabled() { self.cmp =3D self.cmp.deposit(shift, length, value); } @@ -504,6 +508,9 @@ const fn read(&self, reg: TimerRegister) -> u64 { =20 fn write(&mut self, reg: TimerRegister, value: u64, shift: u32, len: u= 32) { use TimerRegister::*; + + trace::trace_hpet_ram_write_timer_id(self.index); + match reg { CFG =3D> self.set_tn_cfg_reg(shift, len, value), CMP =3D> self.set_tn_cmp_reg(shift, len, value), @@ -681,15 +688,13 @@ fn set_int_status_reg(&self, shift: u32, _len: u32, v= al: u64) { /// Main Counter Value Register fn set_counter_reg(&self, shift: u32, len: u32, val: u64) { if self.is_hpet_enabled() { - // TODO: Add trace point - - // trace_hpet_ram_write_counter_write_while_enabled() - // // HPET spec says that writes to this register should only be // done while the counter is halted. So this is an undefined // behavior. There's no need to forbid it, but when HPET is // enabled, the changed counter value will not affect the // tick count (i.e., the previously calculated offset will // not be changed as well). + trace::trace_hpet_ram_write_counter_write_while_enabled(); } self.counter .set(self.counter.get().deposit(shift, len, val)); @@ -779,11 +784,10 @@ fn decode(&self, mut addr: hwaddr, size: u32) -> HPET= AddrDecode<'_> { } else { let timer_id: usize =3D ((addr - 0x100) / 0x20) as usize; if timer_id < self.num_timers { - // TODO: Add trace point - trace_hpet_ram_[read|write]_tim= er_id(timer_id) TimerRegister::try_from(addr & 0x18) .map(|reg| HPETRegister::Timer(&self.timers[timer_id],= reg)) } else { - // TODO: Add trace point - trace_hpet_timer_id_out_of_ran= ge(timer_id) + trace::trace_hpet_timer_id_out_of_range(timer_id.try_into(= ).unwrap()); Err(addr) } }; @@ -795,7 +799,8 @@ fn decode(&self, mut addr: hwaddr, size: u32) -> HPETAd= drDecode<'_> { } =20 fn read(&self, addr: hwaddr, size: u32) -> u64 { - // TODO: Add trace point - trace_hpet_ram_read(addr) + trace::trace_hpet_ram_read(addr); + let HPETAddrDecode { shift, reg, .. } =3D self.decode(addr, size); =20 use GlobalRegister::*; @@ -806,16 +811,18 @@ fn read(&self, addr: hwaddr, size: u32) -> u64 { Global(CFG) =3D> self.config.get(), Global(INT_STATUS) =3D> self.int_status.get(), Global(COUNTER) =3D> { - // TODO: Add trace point - // trace_hpet_ram_read_reading_counter(addr & 4, cur_tick) - if self.is_hpet_enabled() { + let cur_tick =3D if self.is_hpet_enabled() { self.get_ticks() } else { self.counter.get() - } + }; + + trace::trace_hpet_ram_read_reading_counter((addr & 4) as u= 8, cur_tick); + + cur_tick } Unknown(_) =3D> { - // TODO: Add trace point- trace_hpet_ram_read_invalid() + trace::trace_hpet_ram_read_invalid(); 0 } }) >> shift @@ -824,7 +831,8 @@ fn read(&self, addr: hwaddr, size: u32) -> u64 { fn write(&self, addr: hwaddr, value: u64, size: u32) { let HPETAddrDecode { shift, len, reg } =3D self.decode(addr, size); =20 - // TODO: Add trace point - trace_hpet_ram_write(addr, value) + trace::trace_hpet_ram_write(addr, value); + use GlobalRegister::*; use HPETRegister::*; match reg { @@ -833,9 +841,7 @@ fn write(&self, addr: hwaddr, value: u64, size: u32) { Global(CFG) =3D> self.set_cfg_reg(shift, len, value), Global(INT_STATUS) =3D> self.set_int_status_reg(shift, len, va= lue), Global(COUNTER) =3D> self.set_counter_reg(shift, len, value), - Unknown(_) =3D> { - // TODO: Add trace point - trace_hpet_ram_write_invalid() - } + Unknown(_) =3D> trace::trace_hpet_ram_write_invalid(), } } =20 --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827527; cv=none; d=zohomail.com; s=zohoarc; b=SfT7y8bNCjnA/raN+CSATWsK4+Y8qy5SkxVW4zn1OwqaKXd0hb9cJmKnx+h/6giectDoFSt93u5ZwcOf+wWUrA2D/I0+0F1ZL499NgKvmXJRerwRh1snEqZPuJhTQHDMf7Xz3RmcQmAUiOlcIe85TqHKd3bPYokCbBq70RpbUb8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827527; 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=5r1dlz6k+9YSG4rC8cKOerFMsHuLeVrkakCHQYVz+64=; b=WaFfROPxEYSkmVIGH7OGvMc2q+yeTiKJUzKCVFObg9BXaUnfjQ0ULnAQjowzelRCWnr1CsEjhIo5VXraL1WT6l5v5tjCUPGOVgMzdeH4Avm6Vma/Ol3Tz2Ju3A4iFJAMDDs0Nhh9sjNpBLJ+E5G2pIATDudkyg+d/6DcJ+64k84= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176682752775245.98247662760207; Sat, 27 Dec 2025 01:25:27 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQR1-0005XK-GE; Sat, 27 Dec 2025 04:18:03 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQw-0005Q7-Ic for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:59 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQv-0003aI-6j for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:17:58 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-515-6LNsBrPjMMKi6REZy6rU9A-1; Sat, 27 Dec 2025 04:17:54 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-477964c22e0so53225145e9.0 for ; Sat, 27 Dec 2025 01:17:54 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d193d4f09sm442664075e9.12.2025.12.27.01.17.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827076; 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=5r1dlz6k+9YSG4rC8cKOerFMsHuLeVrkakCHQYVz+64=; b=awXag1O0SoG2ECWrEJ2ANGe6lHQ2K+RPECR/KGgNX3V6XSkraektqOSyFGVv37AV9PpQjU Xpp64ZSQKuYOPj/kO4Fk76y9n4iL5BG9vVSnehw9C44xtKkvLkNQooN/fWoWdWEHADntol tL6uvclwPGv4HFW6mIzw4MvPdTPbCvw= X-MC-Unique: 6LNsBrPjMMKi6REZy6rU9A-1 X-Mimecast-MFC-AGG-ID: 6LNsBrPjMMKi6REZy6rU9A_1766827074 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827072; x=1767431872; 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; bh=5r1dlz6k+9YSG4rC8cKOerFMsHuLeVrkakCHQYVz+64=; b=tqdOAEFivqipjfzuNz2zsOGH1I/EVOEyhF2IAEyQCXsSpNRp0vRwo7E+QxW7KlTV9Z W8RQVzGBXsV8xFt0ieu3t6/9fvLxezJs6CD0NYdhi6JCEgyVminfGYA3CtlNRwi3Z8wj 7kAjFHn/N+JU0X+niAFpq6hfQKUdk/Mex6AiLBBDzJV/qxZjG8Io5j2/CdP+977zbqxN mBBbDpp1xSLRGmyuEawj/qov14T9wloPCReERPoVoBb44otaUWfMLUheferd1e4bkV0s m9N713glgd+A+SQMUSVQRXyGIO9Ow5S9jOxqNrg6mV+qCWIaPi19jKwtzDa0RVFoPCsJ Bgxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827072; x=1767431872; 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; bh=5r1dlz6k+9YSG4rC8cKOerFMsHuLeVrkakCHQYVz+64=; b=ctPwngLn2V1PP8UyGwRF1la/Wt3zyQ+Ykc6d0yj/Z9K+ev48FnQ5NM/pS4qiYpjY1E c4bW3/CqWgq9r3xnwy/A9J2nW94VEQ1n6WN8WuoPgmyuO9VzG1PJLBt5k6CzfYZkVhZc D/KA+cLhav66XMwXluI5paAn08sMd06Je2UEvr9hvMM+1DN6MEzzl7H19K/zD40fhbaM Me7yD04+dBtGEO1TG2AXvHioiIcMmLQ/50+MAvnxOoObUfSbWQ1N/AfqkBOap6DmAE/W OOoKzJxVCyJCwQJP2J316CtXdOhtJqJoCP1gBhrlOGzI9IqbnqtI1s9sACRdY0Mt2ZmE LLYQ== X-Gm-Message-State: AOJu0YwVrGkn1yL1BCamsahhz2A8w1iKUMoBmtCuqLIzRIrdeGRV4sO8 396KhZ+gHDtbhtR2r1lieTb3xov8RaIYGz+kyOA6F+hpC4Hw6JqG2Ja+FswVYw4J626Hvgw84jg JmGaT+Cm9NlVpE3aT0/9izqy5dN2WN1i7Yu9kztI+pWnWkO3knZzf4tS1KN0VfEJnWHaAFjzyft g22tBkXVU5QHlAhv+0daFf5VHmUOJvKMPddPRVJo8A X-Gm-Gg: AY/fxX4xBeW/NJACaDWop+NS8ClWeOePO+t8GJRq4eBYRGXqFAl1AJWY0plQup6uta1 3P0TZKCK3EExPTRlMBRE4Y0kxzq9pa3rnLbCqxrOOGEqw5NfsxUeE6OPFoJyIQFjDhpxrsBqOV3 nS8oGp+mz6C3uoEzYaNe1uZQZK0904vWomHC2zX5Y2uLcY4vrXQVkwCLeqRwLU9siuJexXeskUa ImFlrnD0N+oPyKsDkqHj9vRn8yLnQIKgQv9+8/Zhc6GNySdrwkVObPrhPXNaeuF0HPzt7Y0nTFH Iez+wbjjMxET7S/0H3PmAwQ5nTtEwetZt3GZgTtKUnvS1771ta/spXaiRGPrtP8wETR1eibBJ2V Exq5KOdZEsvxYQTv3GihPcK1cUDLMeYmuqz9lCEbzOJ1Jl+xGVOkNAkSvVAM0Gjd4Lj+vfPGyrA yDPzZNKEZVlTE1bWU= X-Received: by 2002:a05:600c:608e:b0:46f:a2ba:581f with SMTP id 5b1f17b1804b1-47d18be1812mr309056625e9.16.1766827072271; Sat, 27 Dec 2025 01:17:52 -0800 (PST) X-Google-Smtp-Source: AGHT+IFIPcjVqkXNhoaFYL/RfB8+ABKIQEcXfngKAhmmox9EdSPEa3Os4sOuFvBqh4kM4rQ3ort1dw== X-Received: by 2002:a05:600c:608e:b0:46f:a2ba:581f with SMTP id 5b1f17b1804b1-47d18be1812mr309056395e9.16.1766827071912; Sat, 27 Dec 2025 01:17:51 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 047/153] rust/migration: Add Sync implementation for Migratable<> Date: Sat, 27 Dec 2025 10:14:34 +0100 Message-ID: <20251227091622.20725-48-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827528727158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu It's common to define MemoryRegionOps and VMStateDescription as static variables, and this requires T to implement Sync. Migratable is usually embedded in device state, so it's necessary to implement Sync for Migratable. Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251113051937.4017675-2-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- rust/migration/src/migratable.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rust/migration/src/migratable.rs b/rust/migration/src/migratab= le.rs index ce603867502..5700554f7eb 100644 --- a/rust/migration/src/migratable.rs +++ b/rust/migration/src/migratable.rs @@ -340,6 +340,9 @@ pub struct Migratable { runtime_state: T, } =20 +// SAFETY: the migration_state asserts via `BqlCell` that the BQL is taken. +unsafe impl Sync for Migratable {} + impl std::ops::Deref for Migratable { type Target =3D T; =20 --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827510; cv=none; d=zohomail.com; s=zohoarc; b=AjWcbSzqblj8Sv7DYbk5AL8yB+acDlpos+nqUSEVVa/yxiuXMpdbS4FtFkzDQkIGhU8iTmxh8j7WBuvwo6RSd+eOsVC/TSc9yd2OcedoFN3yM7eYJEfQy+3XaaH6FXK0jTuX1H+NLPEE1xXyaULO8xfLqR9DXr10sLohArPlAfY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827510; 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=L11krJYxRksBQg3D1YvlTwwy3hlxeTdJtIaYO5UeY6I=; b=WnwFB52TJIF15tB8IV+e63g4IeUoxDDCigVb+OCjPGNaVMXgRoVDasdp0vEU/0W2LNMJGoliVIqylPF2/GA5MmforqOQNigfoEi9jCSxN2/Drat1rM6Vk4QudC4xc28MzRUf/u1EOgIA7AVjDKeMhBr8HicYUoTRAC9zwu5rzMU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827510004414.7280906792472; Sat, 27 Dec 2025 01:25:10 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQR1-0005VN-05; Sat, 27 Dec 2025 04:18:03 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQz-0005U5-L2 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:02 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQy-0003ag-52 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:01 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-519-1tqQM5a2PB2iNs0_HPjqdw-1; Sat, 27 Dec 2025 04:17:57 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-4775d110fabso65463925e9.1 for ; Sat, 27 Dec 2025 01:17:56 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be27c2260sm474525055e9.15.2025.12.27.01.17.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827079; 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=L11krJYxRksBQg3D1YvlTwwy3hlxeTdJtIaYO5UeY6I=; b=TpcGypjgM0sD2uGQAlk1eXwVv2FD//YHLyV5OoVq1Ep7/CXn75zRKiVS2ELln5KGWiqEdB e1PvdBUQlUfc3oExvraRUjCNgtQW2MI1rKPogIVNRsEC4WMtNP+4HrkWqnsnpySGeJWxBH pV2f7MzC5jWndTvIVKYTFCO4MVMmU58= X-MC-Unique: 1tqQM5a2PB2iNs0_HPjqdw-1 X-Mimecast-MFC-AGG-ID: 1tqQM5a2PB2iNs0_HPjqdw_1766827076 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827075; x=1767431875; 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; bh=L11krJYxRksBQg3D1YvlTwwy3hlxeTdJtIaYO5UeY6I=; b=TxZsYQNJHsQ9cE17VzUytRWDQyzAmvJUSXmPxKhA+DMNqccVoAwnheOP6VfrooHZrL Lr4Gz+fCvdkC7uvu2R2dOHS9fGwr5Pt0jnLn9EhmyTblck2kIVc9DTHJZEJyAIgHsw49 le7ZPGtYFNo3xDLNS0MgUakZJSx7kJnctObvifkM5kOf+5J3kYYANHGRCpj9LddMLS/S QTVT85VgZ2JvYPpeLGmm0CkrTKJjTMf1xFLZbVi72D6TKccrLOy0eTORxLgUoQe47fr8 yZioUXaoic1wMSs0+5vnayrAmBVPxDyfbL9cfSQzuYDm/ZeaSqsSD+GRyBz12lZsIZNa tXhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827075; x=1767431875; 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; bh=L11krJYxRksBQg3D1YvlTwwy3hlxeTdJtIaYO5UeY6I=; b=HwxCBuEC85uRv/QFGQiMOOBjAxL2L4GTzM4hWXX8+/xjVVx9h/HGuyo+7NR02Ybt5/ ZH0lR5ZUMk1sJAxKYvnoaRWXfonmZr7dy5TXmiEHb6Sjkg6s2lJat7bXtzE3NbzkKX16 vCKjM7vflrMn+sAe2UOdIZQL1A2+2tnldVIxJjjhsP5667I87IkNcl1n+aOl2tMeb6KA /DwYtsX8q4AZjNZec5Wztccw4MbfMp9rXfQ5X9+l5du0TgyjQiZu++M5D9sqfwQeIXLX gyf/y76UNjJVnB/0GWJulK12DSjhf4MrlAyP/LA+4A01Mwtps+1G4hAgPUfsQvEwOk+t WhYg== X-Gm-Message-State: AOJu0Yw27FwAC3LU6Humy87Vr3tm26ZovHLPmnWcdCo1kt4Xzozx7KPK xVhUMw3gi21nOKOUp2tdDMZbK0lxmYCIV8YgurPdR5ZHmOKajzIKp1314Kg3PzZtF8ptLSi7M2i kjgkMxoykHgS92A0kF6ghaaKGk5V0Y4TJZwqPAgZxGLUHExfEXOlUGK58nSl72zTyGPsyQ81ZzS bqPPX88bj1SvINkbKDWmMNhlN2yabyJsWDTP7HW2cO X-Gm-Gg: AY/fxX5YeQoDvwyN4a74TITr5nwauazxru8Ux4XpVnJupA/IZmzdj3oE8weq0xM0Iox F8PuxM2Opl0/a7ybvVSXhxftNQKP1rzgEkixd0vzH+E3Ux9baEl2N7kdH/W4F28cmNABnU2joPN /y2QnFMNlFG3ODUm2/De4I/g25GLjC2yjPk93ky72WFov6pTfvdHADDog/Z/a7eflpEWLwOe6YQ ll/O9YJMdg0DOQDB9IPlaB23lIBvr5aUrfmfk4sm9AF0YNJLmVouD4s4hRThC2ommlSLNqT2ujK oZ8jLHmazG1gdmW267ZM5Ii/o5/jvfRdahxbXvUiXrBLBq382Chy8nhdeqeMW56MlGyDJpWnJW7 PGlADbSL+rnD9KePdKr+b/S13rA2dTRwddM5paEwLiQyt/4wNDsx9EkOdno6f8K/cH83vNXQgHQ uB/PYXI+Dq7iKCi9g= X-Received: by 2002:a05:600c:828c:b0:479:3a87:2092 with SMTP id 5b1f17b1804b1-47d19598e86mr220195585e9.36.1766827075411; Sat, 27 Dec 2025 01:17:55 -0800 (PST) X-Google-Smtp-Source: AGHT+IF9faMqUG7YfpBycBTmJ7aZzjfpOzMKiGs+1i7R9IBU7rOimRO7RqHvOV5P80WC1WfkdQRmvA== X-Received: by 2002:a05:600c:828c:b0:479:3a87:2092 with SMTP id 5b1f17b1804b1-47d19598e86mr220195405e9.36.1766827074930; Sat, 27 Dec 2025 01:17:54 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 048/153] rust/migration: Fix missing name in the VMSD of Migratable<> Date: Sat, 27 Dec 2025 10:14:35 +0100 Message-ID: <20251227091622.20725-49-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827510688158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu The VMStateDescription of Migratable missed the name field, and this casused segmentation fault in vmstate_save_state_v() when it tries to write name field by json_writer_str(). Due to the limitation of const, a custom name based on type would be more difficult. Instead, a straightforward and simple approach is to have all Migratable instances use the same VMSD name - "migratable-wrapper". This is availiable because Migratable is always a field within a VMSD, and its parent VMSD should have a distinct name. Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251113051937.4017675-3-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- rust/migration/src/migratable.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rust/migration/src/migratable.rs b/rust/migration/src/migratab= le.rs index 5700554f7eb..02efe31d72c 100644 --- a/rust/migration/src/migratable.rs +++ b/rust/migration/src/migratable.rs @@ -421,7 +421,11 @@ impl Migratable { Migratable::::FIELD }; =20 + // All Migratable instances share the same name. This is fine becau= se + // Migratable is always a field within a VMSD. The parent VMSD has = the + // different name to distinguish child Migratable. const VMSD: &'static bindings::VMStateDescription =3D VMStateDescripti= onBuilder::::new() + .name(c"migratable-wrapper") .version_id(1) .minimum_version_id(1) .pre_save(&Self::pre_save) --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827185; cv=none; d=zohomail.com; s=zohoarc; b=QTQ3Nsku7Ru0nu1kOozK64n/FNRQQWfxXOCG/4b1kbXNlsDNj1a8ZpM7LunpdV6qECWcWcE/3SVi0cdNOhz1V+WeHvYW+gIUzX9AEUTMsi5lzDNiQbUJjNcmNvhl21oSD5IRh68meh3EZyM1gvUJNs3en2DW0M4dlVVGeKqSvHU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827185; 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=sTcYZX9SZysc77qo1jI98QwZgsIEhfX2i6Ty2BfwHw8=; b=EJD/9enIYlwQ3TQkYzBh0ombwVUTfigBuWy9JIn4X7HiFZhzaPxTe4iNOzSAEU6g/iipMfKEaSrjUxCSDCkSlcLOzIerxIZ5VMchwoJr02Xb2HMyzWA6O8V6F4wkTdQDc+FRdKKGu+zJqil2jlSnTLtadTdV++435qs1CICSwjU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827185572962.0142143314665; Sat, 27 Dec 2025 01:19:45 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQR2-0005Zi-7f; Sat, 27 Dec 2025 04:18:04 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQR0-0005Ur-KJ for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:02 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQQy-0003ak-So for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:02 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-670-SuZXPxWfPHmY35c_SuZEOA-1; Sat, 27 Dec 2025 04:17:58 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-477bf8c1413so46121465e9.1 for ; Sat, 27 Dec 2025 01:17:58 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d193d4f09sm442666875e9.12.2025.12.27.01.17.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827080; 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=sTcYZX9SZysc77qo1jI98QwZgsIEhfX2i6Ty2BfwHw8=; b=BRzYXRZX5kWPDO6rjR7v4B6nfVOwROoPZe5QzRDCovimKT39THiKN0Z4tME7ZsFt+aiTk8 mfK+8ISCfgfXtGHzoeWzKVU6viqvdp5SFZYxaVLhiJi5CS2iKx1Bsy82ejC1M0yhkzWUgg cQZVwcx8ifGemSTdn5tRYcOVVshaXcw= X-MC-Unique: SuZXPxWfPHmY35c_SuZEOA-1 X-Mimecast-MFC-AGG-ID: SuZXPxWfPHmY35c_SuZEOA_1766827077 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827077; x=1767431877; 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; bh=sTcYZX9SZysc77qo1jI98QwZgsIEhfX2i6Ty2BfwHw8=; b=ArM2J9VI7Tl17k6cyomWAFy0jNaemPZzgbWKoUHOdw3udYbl8HFtuCttswgLsRWHrl FhUK1XXcnzlxlL16QQvOYq0OQxdDD54NaUssWcXWcfVeCxRyDHDETDmuKM7RSs5zDN+C zYaw4PZsfEAq6mGy8C1EhIWx1rGpzDr1dOCanHIFzZQLOeoqyhdTchm2j3rmeQPSrXb7 kWEgFShOiIR76hX1XyCkkIGjMknyesQah8mLYYwMvbTel0J+q1dvGpRea2HY0vzw16zw Wsc+0xs4nCWgY7NAIGkPTXnlJA7aWL2txvKLKr0kSZD+rEnjWkyP9Wua1FuSPir0DE6j qKBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827077; x=1767431877; 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; bh=sTcYZX9SZysc77qo1jI98QwZgsIEhfX2i6Ty2BfwHw8=; b=As8aRFAea0TFsqOsF0+tJzkWBGqzzZfANnOJ8dUiDm6m+Nsa+8+bpB/yuextbrC6kZ leLXhMl+YsJoqb7J/p4eFk2X/fEENi1oqCwtxrSsjdsJtsjFmkqc5KPlfnm74QNYzn4q gZ9H8A/GiwLkW8R2zJF0w+2tmW7bOGxeLrjBGFnDFnGsyEagXAp3YAOe9h8ASk8kn6Rg MGjxLk9DMh/xYluN/9Esggo7l0NxrfHas5Otj4cXU1XPquzaWHubMOHhEcbASShxxJ7q vdGcQ1CZquW/5JKyQvR4N2GFyKxfXKA4Ok5gfgs1qafrEpt7sDzD7i3rjzHWL/fctxqQ o1oA== X-Gm-Message-State: AOJu0YwKwJrvfjeXI/VA++V5ypKeNiK607tcCcnSSmurdM/x5+hUPTk3 C4fRkYyDW1JAeJVf6DGxitMUUBR1dyRlzMaUHazmFjAZHvVE6pAT8nmV7WjkYIhkTAe9tIC2OKp JboFPCgn7AtFAuw4zkIj03Q9lNT9BPI0ZQzhJOnuj3SQqzRCWTf0OMee9ZxIwtOadU0t2/aVCXl clOZYHxT2WH1HxTOi/VkbnJdONN4W1/ZAIscRZUTEU X-Gm-Gg: AY/fxX4vS3hvG8nzwaGsqwkyWQ7fV0EP/7UxfKwzypf9w+yTJfL48x4gkuzi4halxz6 zUMyfcJ+PjuCzYrCmCM5PrBihPIgcxLGKvJlF9gNn/sk7sLpBx/Lak9O81hv6JjjxNVRFvz/zfx hgla0CFil5fv8qvRNpt9xU+cFIC5rPZ3pB5QYwUz+0BZrMJUd1qZJBYo84geBd5cdkx+csuvuh5 oPnGFifBqYZrIUmDSeZTMlIyO/PJPTvGuvOMnhWTGa1HsoxgfZ0IN7UnRIWx3+m0YEI8D2H6nYQ GPPviOnLmhmMDkKuALZdfelf3dpt9R5A9KVZwl0eiruIEW+yNpVKRVmOyCIC1j+J/85p7He07bw 4ImJrkdxQ4uFHLmrF6W3Ld1TKz+g0/AEFrwIdIyUdj1WAMelvcrYQ/vg0L0H27gh+PI+qatR1cl 6CWhpiDUVSmIZUcb0= X-Received: by 2002:a05:600c:1991:b0:477:7a78:3016 with SMTP id 5b1f17b1804b1-47d1953318bmr266685865e9.8.1766827077041; Sat, 27 Dec 2025 01:17:57 -0800 (PST) X-Google-Smtp-Source: AGHT+IHk3+nhqts091f6gUJJWhmt6ZK4OSy4VKwWzucuKm/gpNrhgxYJSGib67M8ZDpz3CAcVLl3gA== X-Received: by 2002:a05:600c:1991:b0:477:7a78:3016 with SMTP id 5b1f17b1804b1-47d1953318bmr266685725e9.8.1766827076632; Sat, 27 Dec 2025 01:17:56 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 049/153] rust/migration: Check name field in VMStateDescriptionBuilder Date: Sat, 27 Dec 2025 10:14:36 +0100 Message-ID: <20251227091622.20725-50-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827187533158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu The name field is necessary for VMStateDescription, so that it's necessary to check if it is set when build VMStateDescription. Since is_null()/as_ref() become rustc v1.84 and pointer cannot cast to integer in const, use Option<> to check name with a new field in VMStateDescriptionBuilder instead. This can be simplified in future when QEMU bumps up rustc version. Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251113051937.4017675-4-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- rust/migration/src/vmstate.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/rust/migration/src/vmstate.rs b/rust/migration/src/vmstate.rs index f9d9f335b98..595e7e9cd75 100644 --- a/rust/migration/src/vmstate.rs +++ b/rust/migration/src/vmstate.rs @@ -531,7 +531,11 @@ macro_rules! vmstate_subsections { unsafe impl Sync for VMStateDescription {} =20 #[derive(Clone)] -pub struct VMStateDescriptionBuilder(bindings::VMStateDescription, Phan= tomData); +pub struct VMStateDescriptionBuilder( + bindings::VMStateDescription, + Option<*const std::os::raw::c_char>, // the name of VMStateDescription + PhantomData, +); =20 #[derive(Debug)] pub struct InvalidError; @@ -592,7 +596,7 @@ fn from(_value: InvalidError) -> Errno { impl VMStateDescriptionBuilder { #[must_use] pub const fn name(mut self, name_str: &CStr) -> Self { - self.0.name =3D ::std::ffi::CStr::as_ptr(name_str); + self.1 =3D Some(::std::ffi::CStr::as_ptr(name_str)); self } =20 @@ -718,13 +722,16 @@ pub const fn subsections(mut self, subs: &'static VMS= tateSubsections) -> Self { } =20 #[must_use] - pub const fn build(self) -> VMStateDescription { + pub const fn build(mut self) -> VMStateDescription { + // FIXME: is_null()/as_ref() become const since v1.84. + assert!(self.1.is_some(), "VMStateDescription requires name field!= "); + self.0.name =3D self.1.unwrap(); VMStateDescription::(self.0, PhantomData) } =20 #[must_use] pub const fn new() -> Self { - Self(bindings::VMStateDescription::ZERO, PhantomData) + Self(bindings::VMStateDescription::ZERO, None, PhantomData) } } =20 --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827526; cv=none; d=zohomail.com; s=zohoarc; b=I75ph/XUxYxiRNC20Aby172bPB6ZVimk0h5ggeGPzMhE0i3jCdQhQ8CfH1VgFGmigfv6LzXdnq1hI9yQ/BPjBMDJ6jsF8uHp4O8sNQbbMtHqHt5PLp6q+wVXmCmhUSnsK6jQNopRpH5j2xP0LSEqpac5FWvJwrK5HFksJIcpISE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827526; 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=LinX1JQiwqc2ikT9Actgt6zsDgwmjLDHb98Wkwcyz80=; b=As9D+qK6jf60zi6kHqlTF7jiG17tggYm1uC/pRgm1UOCUwheChfRDbbRJMaXTj1TBCq6a2hbwVPiuBNY4Jt+iCG9GVFjghQMJskuzjYd5VpogUPh9SUmeVHZ/yOVDTjI+hh8OiR5f2bNyoozYZt6fYVKURKGDM8E028gY4fxCoY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827526426750.0127050033165; Sat, 27 Dec 2025 01:25:26 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQR6-0005t4-04; Sat, 27 Dec 2025 04:18:08 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQR2-0005c9-UV for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:05 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQR1-0003b4-8K for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:04 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-326-9dw69hg8Mwur7C8SQguAaQ-1; Sat, 27 Dec 2025 04:18:01 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-47775585257so54467625e9.1 for ; Sat, 27 Dec 2025 01:18:00 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea82f6asm51482780f8f.27.2025.12.27.01.17.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827082; 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=LinX1JQiwqc2ikT9Actgt6zsDgwmjLDHb98Wkwcyz80=; b=fkCeu0uR8Dq2wbS19lEUAe2v6k4eUUtWzEGL12XAUfDX/k9gpog4D+CRyvOb2oxiGDtTU9 24fgvD0hkF3mFzI3ORqoBXcd3fSA+RmFcWaeTrCMli6Gt9PjQMKdftCA5wC8HxvLwTY3W6 EerQ4OyOgCJLuXw3LIx3G1Knu+H8MEM= X-MC-Unique: 9dw69hg8Mwur7C8SQguAaQ-1 X-Mimecast-MFC-AGG-ID: 9dw69hg8Mwur7C8SQguAaQ_1766827080 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827079; x=1767431879; 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; bh=LinX1JQiwqc2ikT9Actgt6zsDgwmjLDHb98Wkwcyz80=; b=sNnJyG0YbIvtvqQc4yu7MtvHPs0eU/FvLZNvg+xnIf5r2YIX05ZgGWDLy5kp27xagL No9UZO8OuV+jcGjCwx/8Su8aX9CvpWxxSKLNoIWP/1qxULkI37io4XhKcP6BlttSkOvY RJzEOXUDteNfzTFMevVTUXbUP06lGupTSz6PqdgKXZx4d/EymI/CDv3NyGObrd3xoonX jfIzTZiEYbTiqn6sS92fyX+2NYz2SrCIL+XF4JTKed4QTp9jroqeCtmVKJzB8JQS8UeR JQATXfi7YdRxT3RdN0XwixrXKSl3vtU1pbD4GoSNjORV1Y1QMqHdmAQFHye4dXKkFAPB JTYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827079; x=1767431879; 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; bh=LinX1JQiwqc2ikT9Actgt6zsDgwmjLDHb98Wkwcyz80=; b=D8+iMhlkV1S9hlJOiIYl16sn8HTjN3m0vUln+nT+7bd0Z9QhDIa9MDWc55ICRXfa5W oI+rtI2FU38Wyz2s5pLg2BKXMfXxosb/DJWkqzqVzouNT1j6Vqv/1jJV8NxwY3BxUaMS hSTVLaCgG35VXudzLTAlPDdJQQQpvPagp7lpvklCAdQVuDkq3H23uDn8fslFHpNZBDz4 bY1avAu0NE+LXsozpzsuAaWhj+boB8C6QhZDyIIuvHC1Qu1hkOTdiB/JmC9qtJTQovXL 4HW/6icx82KxIDR0rz/JYSq0GHzYthqhnfDlgn3qkGIqdecR2cPq+w9BnHaeNtaMbgKE SVxA== X-Gm-Message-State: AOJu0Yz6TWQKkXeaqlhYhY3jfRPzgBVsbEDCOvXNnzUh+xHxqJ219DUj IO7Lft40FG8/FOYuIt6dCt3N7Oj9sBSJxtpf10jxTjvL5zSzFuwwN3qMx0YpDF0TTpUdox4OB+E vaXULTjYj28Y1bDvVRMHrD82WHotzOfIbYXfheF1ECzIwLp9rEw/yVTkYDWo/hu+PAtGozfLpJt rH3q8uIciPOhWW+ckpjwzFglzwT/cS/VCiIX5eRkcq X-Gm-Gg: AY/fxX4sYL0RTTetR01OJS5m1SoVdcKxD0ZGUjhA2XRP9kcDMtGugK4DC/rNgmbRbZP 0ldwuUYizBIiuA8XbIAhUy4exgnYrqSYLi56DhDRXmCd+262OAkjXbOEYKKE7Zj5iTrwpZm2vqf HBeJUU1LBCTuwpoLYGrln7dbz2RqLNc7Ub88nSSASAzR6aQIdsn/DTUtVlO81EAAiaTax77hGGu eL81Q/wFF5hBDkP9ivQI3SlR5CgYq0zaEkvEWJjAa7flA+1k4MaNyF0WBEm4gyKmXUcFet6Gj+j wAUGj9avKK1prSQ/UPDl4tn4AkAMa+Lgn2ScG9DWkd7Ok0O/3zMxKP2Bh65fNrMTaQyYd6ytfOa MIjkfUYdalnPJTAyGhvhc1urtkHbk4VEPEWHL1QS4VDKNVUrA9sG7rA+KdsfGcvqNHBhFTb1Gy/ 1rXDdQOMENBslI140= X-Received: by 2002:a05:600c:470a:b0:477:7b16:5f9f with SMTP id 5b1f17b1804b1-47d1958a61fmr275526105e9.31.1766827078856; Sat, 27 Dec 2025 01:17:58 -0800 (PST) X-Google-Smtp-Source: AGHT+IEFpmz/kkWzre+yKSsaqZMtgvSe4yE86hi47PQ3yn7UEscppUy/QAmNtPPhp4p/RcW9rwiiwQ== X-Received: by 2002:a05:600c:470a:b0:477:7b16:5f9f with SMTP id 5b1f17b1804b1-47d1958a61fmr275525865e9.31.1766827078362; Sat, 27 Dec 2025 01:17:58 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 050/153] rust/bql: Ensure BQL locked early at BqlRefCell borrowing Date: Sat, 27 Dec 2025 10:14:37 +0100 Message-ID: <20251227091622.20725-51-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827526754158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu At present, BqlRefCell checks whether BQL is locked when it blocks BQL unlock (in bql_block_unlock). But the such check should be done earlier - at the beginning of BqlRefCell borrowing. So convert BqlRefCell::borrow field from Cell<> to BqlCell<>, to guarantee BQL is locked from the beginning when someone is trying to borrow BqlRefCell. Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251113051937.4017675-6-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- rust/bql/src/cell.rs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/rust/bql/src/cell.rs b/rust/bql/src/cell.rs index f4bfa697d32..b25906a6503 100644 --- a/rust/bql/src/cell.rs +++ b/rust/bql/src/cell.rs @@ -142,8 +142,10 @@ //! Multiple immutable borrows are allowed via [`borrow`](BqlRefCell::borr= ow), //! or a single mutable borrow via [`borrow_mut`](BqlRefCell::borrow_mut).= The //! thread will panic if these rules are violated or if the BQL is not hel= d. +#[cfg(feature =3D "debug_cell")] +use std::cell::Cell; use std::{ - cell::{Cell, UnsafeCell}, + cell::UnsafeCell, cmp::Ordering, fmt, marker::PhantomData, @@ -378,7 +380,7 @@ pub struct BqlRefCell { // for std::cell::BqlRefCell), so that we can use offset_of! on it. // UnsafeCell and repr(C) both prevent usage of niches. value: UnsafeCell, - borrow: Cell, + borrow: BqlCell, // Stores the location of the earliest currently active borrow. // This gets updated whenever we go from having zero borrows // to having a single borrow. When a borrow occurs, this gets included @@ -427,7 +429,7 @@ impl BqlRefCell { pub const fn new(value: T) -> BqlRefCell { BqlRefCell { value: UnsafeCell::new(value), - borrow: Cell::new(UNUSED), + borrow: BqlCell::new(UNUSED), #[cfg(feature =3D "debug_cell")] borrowed_at: Cell::new(None), } @@ -689,12 +691,12 @@ fn from(t: T) -> BqlRefCell { } =20 struct BorrowRef<'b> { - borrow: &'b Cell, + borrow: &'b BqlCell, } =20 impl<'b> BorrowRef<'b> { #[inline] - fn new(borrow: &'b Cell) -> Option> { + fn new(borrow: &'b BqlCell) -> Option> { let b =3D borrow.get().wrapping_add(1); if !is_reading(b) { // Incrementing borrow can result in a non-reading value (<=3D= 0) in these cases: @@ -790,12 +792,12 @@ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Res= ult { } =20 struct BorrowRefMut<'b> { - borrow: &'b Cell, + borrow: &'b BqlCell, } =20 impl<'b> BorrowRefMut<'b> { #[inline] - fn new(borrow: &'b Cell) -> Option> { + fn new(borrow: &'b BqlCell) -> Option> { // There must currently be no existing references when borrow_mut(= ) is // called, so we explicitly only allow going from UNUSED to UNUSED= - 1. match borrow.get() { --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827110; cv=none; d=zohomail.com; s=zohoarc; b=MNnKLV64qvP2rBNxP9GGy1+pXzJ0YNfFMN4GzIAFKpEWQJH0sz6gv8HIvMU7yCOTHr/wudiNjzq7pCEnhbg1ko/oFp5wVFuaKjoRKRVq9fA8dGZpQLZLZMsAWPSVvqL0l0JnpSI/2WUvuGdlqhm/QujwqVH9sMhXJZr+sheZxus= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827110; 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=H3JUmPJ/juui8+XKZjoKGDOzRk+FSkrjgG0mg8NiM70=; b=CQa3NpPI1QtVqpmYqG2qREZRdBRPSdK4jTaoC2X5d9prAwd40xZKvF9yjhr5oRuosekG4h5UQ77QOsk1zR1Qej7lLpYV8SWijBsBl3DQU9lWuowIVqy+8Hd4Ing3x4ZJaQM+qlK30ZAz/dFPNVcMEcDyU7MPsFxUC8+oT2vbOZE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827110622214.78877536725986; Sat, 27 Dec 2025 01:18:30 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQR9-000630-1j; Sat, 27 Dec 2025 04:18:11 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQR5-0005so-TW for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:07 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQR4-0003bX-CF for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:07 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-692-pJFVjyihNS2Wpxt63MGOOg-1; Sat, 27 Dec 2025 04:18:03 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-4775e00b16fso19381075e9.2 for ; Sat, 27 Dec 2025 01:18:03 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d19346e48sm423172875e9.2.2025.12.27.01.17.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:17:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827085; 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=H3JUmPJ/juui8+XKZjoKGDOzRk+FSkrjgG0mg8NiM70=; b=d2KVAsmzwfCuTfkyEVh7uzWPHnkhkmhlpPwpz+4wxVbgDSwmnxx6bULXn9rhhA9SmR6hMz fHhlGNWFnZRZVctn2QAjyv+gi1efucQuQXIoHHZt9DNyYH1Q8xl7+PbxJmuHHSw5MsC3/z nK4T0I+ncR1FgN0qwVvVb/weJDslJW4= X-MC-Unique: pJFVjyihNS2Wpxt63MGOOg-1 X-Mimecast-MFC-AGG-ID: pJFVjyihNS2Wpxt63MGOOg_1766827082 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827081; x=1767431881; 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; bh=H3JUmPJ/juui8+XKZjoKGDOzRk+FSkrjgG0mg8NiM70=; b=ouRGWlQ1piwcJAbtZavaYz+kjIA3ogrAJaYOleUQmwH7dTgRvysXhrRIV83RwEZojP yqcC/b5mvT4oKgOpR2oMpWi63G5kRnCqkL7QwwpuVvz2uWj+8l9qzpHJFIzPNQL7nLfw HXmr1arY2klePLCBqHgyyPwcL0jRJXJwrGA4BC+nzd6d/J/VPY8YFZfmhdktqo8e/g+Z eTdv+DSezls6c4jYhq17e1WjD+sXSBLfeflN2nGFL4YaLJIDLHt13tLpEp4lDZWGedAZ HUB3AJ2l4EIaexhpRrNhwaqRdVVGGqWv1o6mXEkCTa61KU+ZtuAsjEn+r646zPJCz1P6 NJpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827081; x=1767431881; 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; bh=H3JUmPJ/juui8+XKZjoKGDOzRk+FSkrjgG0mg8NiM70=; b=GiK9uCPfF/8d3aPW+y0pkBRvlK3HgVjXcQJwIKIJ2UMyR5rv5mu1zEDpDo/x/nD5GH GdeqsNLwUmkgQzy3YjEd95rjgtxvxusOX36C3FlHHqFFW0YB8MFhd6IW7gmjZNYiMPPd /2r5b3wUsTjy8U2INzDQFNTuIDcWb/oDy2lNsjXZZ88EjTyjdwiCmacsa4ekVbtR29nw t4czxAdeXrLDyaaw5ItpAB8FDmTGvXQZO72lH8ygA81O4ys9tWyQk8Szj2KZyxwqqz/O KT79Wt85tTH8fQoOJm++qF6PPIf8DeFfwi+29ElEbeTgMD2CwP8K1HWsjNZ8jl/2zrxj FDbA== X-Gm-Message-State: AOJu0YznBpZeHFmUF3b2wTmhE0hmTDjeMH3ODpYQTM+5zAib8DMYa7pc qhXjUp6scP7SyRuTPco3GXeSA0T2Gul+o/7UekXMU0wVJJHBzTMYRWPVeU/MSMq6S3VjPKPSJ9G LjQbEiIw1pdF8jT5eXh4K5RbTVJYAt/gPQkzpj3+ldh7lEqP+ibcYb7CP3cdgMXkbNIt9ZBx0ih 64vUUkfgIlwfUn+S+MiBCICo+Ruk0UIbx0qUaJVWVc X-Gm-Gg: AY/fxX5Wk3mgQuinbJu2vcXqNntzwC1fDvI0/SVscjT0sRizaeSjUm7G1kwNzK7NWEH Z9FZO8iJIyJkuIJNOd6yXfzg8ZCh5WL1ODzFPlVyS14DDX/E0u/hp/PtCHWOK3HxKF6MVRl3Gqh phDvlFD+fxbZ9fFfEJADuVT2dfmiJ6fCWIGYBGB3vhrCaAqvAm1sqCk+nmjlVsxP0mKECZ5OsVY UmpV8AB0GAaUHfSA+dwibocWIL+YX/e3YAWJxieMtlD6rkXMnsSonaGeblnTUzc8qiECnwiMdaY yZ1UDq4jaj2j2kag1/2ZmoGwWL2XDJDGnLayF3j76UpT59BoPZHvb6nQ74NbYF9ULpr4oBqe28O igs4/7vMYnr/MLBoOt2YVAEyc5BaUr+nkM2/C0fjU8lRZPeQsjjgpsfuXrRja/GLQ2DILtMEBqj oR7KehNSAQQr3ZaNU= X-Received: by 2002:a05:600c:828d:b0:477:73cc:82c2 with SMTP id 5b1f17b1804b1-47d1954a14dmr283136685e9.9.1766827081338; Sat, 27 Dec 2025 01:18:01 -0800 (PST) X-Google-Smtp-Source: AGHT+IFyIDXFhDPRix52DF5n3AOO1Tzo3X/E4Y6K4JSZAa/eVWW91cbhS6WBiNMkpChV5YOe3VUiLw== X-Received: by 2002:a05:600c:828d:b0:477:73cc:82c2 with SMTP id 5b1f17b1804b1-47d1954a14dmr283136435e9.9.1766827080960; Sat, 27 Dec 2025 01:18:00 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 051/153] rust/hpet: Reduce unnecessary mutable self argument Date: Sat, 27 Dec 2025 10:14:38 +0100 Message-ID: <20251227091622.20725-52-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827111354158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Methods of Timer and InterruptSource have been made as safe, so make the related methods of HPETTimer to accept immutable self reference. Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251113051937.4017675-8-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- rust/hw/timer/hpet/src/device.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index a2c5b7d04c6..ddfdf5185ad 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -318,7 +318,7 @@ fn get_int_route(&self) -> usize { } } =20 - fn set_irq(&mut self, set: bool) { + fn set_irq(&self, set: bool) { let route =3D self.get_int_route(); =20 if set && self.is_int_enabled() && self.get_state().is_hpet_enable= d() { @@ -344,7 +344,7 @@ fn set_irq(&mut self, set: bool) { } } =20 - fn update_irq(&mut self, set: bool) { + fn update_irq(&self, set: bool) { // If Timer N Interrupt Enable bit is 0, "the timer will // still operate and generate appropriate status bits, but // will not cause an interrupt" @@ -382,7 +382,7 @@ fn set_timer(&mut self) { self.arm_timer(self.cmp64); } =20 - fn del_timer(&mut self) { + fn del_timer(&self) { // Just remove the timer from the timer_list without destroying // this timer instance. self.qemu_timer.delete(); @@ -656,7 +656,7 @@ fn set_cfg_reg(&self, shift: u32, len: u32, val: u64) { self.counter.set(self.get_ticks()); =20 for timer in self.timers.iter().take(self.num_timers) { - timer.borrow_mut().del_timer(); + timer.borrow().del_timer(); } } =20 @@ -680,7 +680,7 @@ fn set_int_status_reg(&self, shift: u32, _len: u32, val= : u64) { =20 for (index, timer) in self.timers.iter().take(self.num_timers).enu= merate() { if cleared & (1 << index) !=3D 0 { - timer.borrow_mut().update_irq(false); + timer.borrow().update_irq(false); } } } --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827148; cv=none; d=zohomail.com; s=zohoarc; b=OEhJbekT8fqd6MmQqqj5WEybuFYpzxhcKA9wKQZccU+AcopNUK2Pu/NP69Om/olq7+r4u/dLMw3hQoCkfjLv9eTO8HmD8Enrx8pLZuSH2ZVnDYrM8h3dpVk5BUwRTKNRrf3rbIAn7kMphX8hh1WgFgoMyuf7pppJUxKBV3JIPNw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827148; 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=BWG6/VJifV9TnZXwGu1QSP0yR2HgFAZn9IEMSAaLbOg=; b=V7XpZKpTkL1lb+1cPap+zBOobXbwe2EWM4JcsmEVVGEv3hoYnIE9AdLA2mNa7jKPe72IEnvapo+zRQLIaReRqJD+I28ywJdJila6KxUmL41DwEOFOuuT2K6/SkprZ3mfvfiD2cMRZBYBwEWRuGv3smd02AAQbAWuP+z9FlgwRvs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827148844371.1756563797019; Sat, 27 Dec 2025 01:19:08 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQRC-0006UO-Rh; Sat, 27 Dec 2025 04:18:14 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQR8-00066N-7c for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:11 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQR6-0003bo-GM for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:09 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-118-CK-qF-28PpeJRLFlGiTCNg-1; Sat, 27 Dec 2025 04:18:05 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-47d28e7960fso20576035e9.0 for ; Sat, 27 Dec 2025 01:18:05 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be3a20af0sm187586365e9.4.2025.12.27.01.18.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:18:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827088; 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=BWG6/VJifV9TnZXwGu1QSP0yR2HgFAZn9IEMSAaLbOg=; b=JUqGpeqJesdqmU7LbxFJsSCDe32FtgoIWAKH3ML2Po3YAJ3HpGwKdLOC+BglmUPlWrbFr5 uoE0AX1Ccz/LVpfkuUiJPKJSl4956Ctzd/2UdeleCSu1it/sLbKeUD4zDWg0g2GSPH89Ce 5jutZUHGTcYX4VJQmsNVDPCjYLqTlWM= X-MC-Unique: CK-qF-28PpeJRLFlGiTCNg-1 X-Mimecast-MFC-AGG-ID: CK-qF-28PpeJRLFlGiTCNg_1766827085 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827083; x=1767431883; 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; bh=BWG6/VJifV9TnZXwGu1QSP0yR2HgFAZn9IEMSAaLbOg=; b=XOeKFi28dKAmEiWtFd7S7gFe5mAJ+QURveHx91eLPM0n53kAnqQHWHUuqSw1Ad/wR/ gFiH/Ds7Vpm/+Y+HrSYcONtZ2q/BpcIqrBx7RsBEkHOxT0D80NCjRZcsRTbUXZSVq8D3 QBmZQ3btHJKDiDZ/ya/D5gz1SDWHrQj672Yw6XURceSmxKszU0G5Uh/BucemO+0Yv5K0 DcyxoAjBfJxHhlp2ULjp5QufI11hzdfwKWrTN2YoU7IxVIw7PrbnNfYiDcZmATvw+NMw Cwi3pigRyhAzth70Kc9MQf0Z1BN8qBgek+8F5Vy8mqVKjKax0868+p9oGiZ1pyDPKggp DpaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827083; x=1767431883; 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; bh=BWG6/VJifV9TnZXwGu1QSP0yR2HgFAZn9IEMSAaLbOg=; b=clyBrALDpkxrv+DISgGvgubHiji6yVxr4fE3bRh1TEGDm/vaVyLvHjBR55zmwnme5v z0vcRWRUlKwJj61C26rfEdca4Nptuge6K2QsjdOB1YMs1A0U+qM2KzFglA8dIII30GWd VJs1EBEOKJtzgZ2xTTTZNrwIw5PAxVkc4BUFyb4WkNXk0HYMzG+B9BxbC3U4sCnqm8Uj We/+gsA14C1344stjX8+tpPvirL7Ot4hw0m5rBytabDtKewZ0ZcGeb2dDbvXfOtBNHGP U2/TmHmRWE0bgFD6jyJ7v8Ng6AUjCnhEN7rOQ+IvoRe4ujUd07E4C0sCKQQLhOc5PoKR +MwA== X-Gm-Message-State: AOJu0Yy7WKVzlW4lqK62AiK80h8Omh4qN1HTZKsy3GZaB5U3gmrEUgbx IHIT+cutkpyyc47gnLyme2hhpQ3txuRPDRIPb/hHmzDIElNm2JGPo1LTSze0gbsIADRC0TElmw4 5AdiIZtA9SC5PIdfBtJ8zD7NPFLD2yGx1kceFSVwks3k714SsA2L8poVFe6aNzfjjO3V1WmF8d6 Ad7yp7U/xSiRZY3+6M5YxPflQR9v1FvcJ/ordb5tuN X-Gm-Gg: AY/fxX7XqT1SfOmkWc9inLiUOzBe7ldeqaU1ESf9AqRHzGX49CEZrBpEe7sLxwDUnN4 4KsULUT3TIyfEQcca7l2z/3L8qw2XnEoKMXNuFZQp4GyOv4hNPN5bVgI1NRAMh+tAKEIvPURzSC 2Yh516jJH/6e7kqABsqRa3bFq4q6bS1UjpUreKWVCKs2QpHH5KblmRghPu7G0sXQPwNJRxWOOiA Fnf8eGU6mcYP8Ak7iCKG0vt4ey7AHfpuQ5kS7ilAml+1iAKyQIcyb7Hey2Q4f375Gj2N7cfuq/r NcUbX/2hQcW+rOMgIO1OJmYnKOu9U6ZtgyuCTJ92LDVEFkwsYGtlCPlsUS+G+chHVtlyk7MtMZK J9ArlreLgNwLLXPHkUN8ufNTER/xaELqEUgBQwgOypOfufENb08aw3dUfmD/nqICw/bc8kaT4g1 X59cbV6LTV/BbAQBs= X-Received: by 2002:a05:600c:8588:b0:47b:deb9:f8a with SMTP id 5b1f17b1804b1-47d19975bb7mr226603785e9.30.1766827083511; Sat, 27 Dec 2025 01:18:03 -0800 (PST) X-Google-Smtp-Source: AGHT+IFZbqsddnCfiMEJEaKgtpOL3l8grZWLcC87/ARqLlB9vsfgcJQYQhi950J5di77SSmGojVfVw== X-Received: by 2002:a05:600c:8588:b0:47b:deb9:f8a with SMTP id 5b1f17b1804b1-47d19975bb7mr226603585e9.30.1766827082979; Sat, 27 Dec 2025 01:18:02 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 052/153] rust/hpet: Rename HPETRegister to DecodedRegister Date: Sat, 27 Dec 2025 10:14:39 +0100 Message-ID: <20251227091622.20725-53-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827149453158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu HPETRegister represents the layout of register spaces of HPET timer block and timer N, and is used to decode register address into register enumeration. To avoid confusion with the subsequently introduced HPETRegisters (that is used to maintain values of HPET registers), rename HPETRegister to DecodedRegister. Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251113051937.4017675-9-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- rust/hw/timer/hpet/src/device.rs | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index ddfdf5185ad..3e8f5397fb2 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -96,7 +96,7 @@ #[derive(common::TryInto)] #[repr(u64)] #[allow(non_camel_case_types)] -/// Timer registers, masked by 0x18 +/// Timer register enumerations, masked by 0x18 enum TimerRegister { /// Timer N Configuration and Capability Register CFG =3D 0, @@ -109,7 +109,7 @@ enum TimerRegister { #[derive(common::TryInto)] #[repr(u64)] #[allow(non_camel_case_types)] -/// Global registers +/// Global register enumerations enum GlobalRegister { /// General Capabilities and ID Register CAP =3D 0, @@ -121,7 +121,7 @@ enum GlobalRegister { COUNTER =3D 0xF0, } =20 -enum HPETRegister<'a> { +enum DecodedRegister<'a> { /// Global register in the range from `0` to `0xff` Global(GlobalRegister), =20 @@ -136,7 +136,7 @@ enum HPETRegister<'a> { struct HPETAddrDecode<'a> { shift: u32, len: u32, - reg: HPETRegister<'a>, + reg: DecodedRegister<'a>, } =20 const fn hpet_next_wrap(cur_tick: u64) -> u64 { @@ -780,21 +780,21 @@ fn decode(&self, mut addr: hwaddr, size: u32) -> HPET= AddrDecode<'_> { =20 addr &=3D !4; let reg =3D if (0..=3D0xff).contains(&addr) { - GlobalRegister::try_from(addr).map(HPETRegister::Global) + GlobalRegister::try_from(addr).map(DecodedRegister::Global) } else { let timer_id: usize =3D ((addr - 0x100) / 0x20) as usize; if timer_id < self.num_timers { TimerRegister::try_from(addr & 0x18) - .map(|reg| HPETRegister::Timer(&self.timers[timer_id],= reg)) + .map(|reg| DecodedRegister::Timer(&self.timers[timer_i= d], reg)) } else { trace::trace_hpet_timer_id_out_of_range(timer_id.try_into(= ).unwrap()); Err(addr) } }; =20 - // reg is now a Result - // convert the Err case into HPETRegister as well - let reg =3D reg.unwrap_or_else(HPETRegister::Unknown); + // reg is now a Result + // convert the Err case into DecodedRegister as well + let reg =3D reg.unwrap_or_else(DecodedRegister::Unknown); HPETAddrDecode { shift, len, reg } } =20 @@ -804,7 +804,7 @@ fn read(&self, addr: hwaddr, size: u32) -> u64 { let HPETAddrDecode { shift, reg, .. } =3D self.decode(addr, size); =20 use GlobalRegister::*; - use HPETRegister::*; + use DecodedRegister::*; (match reg { Timer(timer, tn_reg) =3D> timer.borrow_mut().read(tn_reg), Global(CAP) =3D> self.capability.get(), /* including HPET_PERI= OD 0x004 */ @@ -834,7 +834,7 @@ fn write(&self, addr: hwaddr, value: u64, size: u32) { trace::trace_hpet_ram_write(addr, value); =20 use GlobalRegister::*; - use HPETRegister::*; + use DecodedRegister::*; match reg { Timer(timer, tn_reg) =3D> timer.borrow_mut().write(tn_reg, val= ue, shift, len), Global(CAP) =3D> {} // General Capabilities and ID Register: R= ead Only --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827252; cv=none; d=zohomail.com; s=zohoarc; b=cR3QuVHWpp9qLK69hh9436pb2QD3Pv3E56t5xqIvIKWV1e9swveSykiOjsZKZWUClglxqFHRHO/fj2tGLwtrbXqYXZPWz1GBLWxOfayy6gVZG8v0kJjguSqGqfaAOKHl7cQnxvQaCi4NdpYp1pf6zhSXIzAEhs+N8hHe8e/WotU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827252; 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=Sg+vJcpOM9SDnQu5i+ms6oyFRoJtaCHlqpcmC/jWSQA=; b=noeKXVSkEZohcgJ/GrDOSharU0wUNa1BC/HbnnjGUGiSOsubyAwpZfK0dyTDuGPWzLMpulR+lmSWik66N+pmhxwTfEz5vdO5aBc7OGhW4ENlz0131F8LEs5/dYdE31k/oWpbbvtA0nFO5Q3J6S7VIKjS/aQ5pxlvMQx46gAV8t4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827252166457.7122989009215; Sat, 27 Dec 2025 01:20:52 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQRD-0006X1-7O; Sat, 27 Dec 2025 04:18:15 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQR9-0006DB-PH for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:11 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQR7-0003bv-Uz for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:11 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-265-wLiLrZ4pOLKs6-l8BY-gOg-1; Sat, 27 Dec 2025 04:18:07 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-477b8a667bcso106201465e9.2 for ; Sat, 27 Dec 2025 01:18:07 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d19352306sm426326215e9.5.2025.12.27.01.18.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:18:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827089; 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=Sg+vJcpOM9SDnQu5i+ms6oyFRoJtaCHlqpcmC/jWSQA=; b=h9vUGC2Ji26mBbf6jT7FXDFdcQHX+4YHf0ybRtZmJxkbJVKP8JpxURTU9dMZgyiJsRV3AV HMfzsebmRaMjcFeCBNH6ksIS8pBQfTar+IxywqurZBBpY0UCXGV9lMWjZK3+rWhS1jLO2A KXNcL3Tz0F8out/0NU3xg9f3TLQ2GQ8= X-MC-Unique: wLiLrZ4pOLKs6-l8BY-gOg-1 X-Mimecast-MFC-AGG-ID: wLiLrZ4pOLKs6-l8BY-gOg_1766827086 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827085; x=1767431885; 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; bh=Sg+vJcpOM9SDnQu5i+ms6oyFRoJtaCHlqpcmC/jWSQA=; b=W+slPMaqdxkuyhcmoKZapYVnZr3r5m1IOpbLx5mWQBLTVPWp+rqd1K19/NoKPay0NO t+ILxlFfschEiPQj0wAfIPABw+fTBb0T/T1KZK/owRQ2i2bMEiZhxihMYE3GrmoxGwUL u2h7fHGhPh5PBns9dT3ozkoQsDQbyaWT4h0IapjdY160Pdy+UE60ySR647oLV5Ij1nd+ mOdrcG4OtJSMG8x5FjrB9u6c8m3tbmYS2+Ztn5BIu8l6BV8AP+Q5SVfErG5qL2npXwsG Crz62vXxg0GUYVckvX6zrd1Jc9h57vnLFnWovUwf3nw7XXnsa6G1cyXYRwVNeaeQAHLm fj4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827085; x=1767431885; 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; bh=Sg+vJcpOM9SDnQu5i+ms6oyFRoJtaCHlqpcmC/jWSQA=; b=cxSy3pOYrsj3MVHUs+YAPs+7tnm7gFoNY8hfncnHecLa2sLMXXNrd3gr+GWjyrv+eO /bKybYYKbEtAGuGlp98dTakuSAi2Dlk0GyrlZDnwueqWWRJpWg5vdqNemY0dP79omcCN ambjG96GyEt5eIuyntQ1MzT4hOCOpQUzSmSSP7FlSmovYWl9NciBkccOaKIaqPWOqDZH wQnyxqvK7TR1J4iNAjYyLnyoANERSZ5THSxgbP2oA+xIunFQ1vhzJBJ8XMwv8o8jFk5k +K6go+keWddbsPzEOeuFRNnv3SsOFDFaDRayRtvoa0AWcj1pY84sztOfTlO2UiSZfhA/ g/Rg== X-Gm-Message-State: AOJu0YwZpe52KYRJxffLdRR8Do6L+IatoBlDeJw1bIgaw2Tm0kYqLMXY Z2Wp8WN+tQ6A016GVrUUNAHGOi1bfGX96ifdBMflqrCvlzSRv1aHYAIjWqb+JL+0QdZsw+yeZ8o KTx3B88FK6PgCrV4oUJ2PAMSQ+zt21k12k1VuCUhJjXvtCpZL54P2V1bgel+lvSjXOg5x1t31pF 1Ww5fwPgwmLx0czRol1x24LUd6lfEMH0NbiygDlkO0 X-Gm-Gg: AY/fxX7HO+RlEePIwLoLvH+y2RdClpE1GSLBNyRy6XUA+u+SeRxqrdSfh4nAQO2htBK rbHtjv3ji4o4CvaEFEwsBDeqmF0Xucr8395Ek42Qhwt0MklgFJQ37OSr3zUjqGZ9etTdG/er7m5 E8slfaJ2a7ogqR+39XpDUMM/Lw96lmFGhvwWEsTlEUN+ZxJcGOUPTilqYfM1bt+jboD5AhBv9QZ kKy99xpzXrcYO9HZbib4Z+K5c1S5V8uQp5DO50491EFSZeTKDjh67029Sk96n7LhFVwN+gRnQp1 OGxnVzud8xoOuHz5ZdAYBln1PDwOM6fByheywFjnhYKcIOSqVihNfWd+HRUzwtPnwjG5jHo5++c RkStK8HiVeikxmyZ++l0cZE4tn+bBTuvKoI7wyWW1VFPQSGnXzgp1aonynMVXPxvnEgi2stDvsB PLQ+DR/gJ+GGwPfoU= X-Received: by 2002:a05:600c:4e90:b0:471:989:9d7b with SMTP id 5b1f17b1804b1-47d19594b70mr313924525e9.21.1766827084584; Sat, 27 Dec 2025 01:18:04 -0800 (PST) X-Google-Smtp-Source: AGHT+IFE7i6ZEnTNrEmB5MRtEzCMUrtPWXBAcpCLUqqxEId3eDGYajm90HX4xh5Fcslwv8WWVSIRYg== X-Received: by 2002:a05:600c:4e90:b0:471:989:9d7b with SMTP id 5b1f17b1804b1-47d19594b70mr313924195e9.21.1766827084099; Sat, 27 Dec 2025 01:18:04 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 053/153] rust/hpet: Rename decoded "reg" enumeration to "target" Date: Sat, 27 Dec 2025 10:14:40 +0100 Message-ID: <20251227091622.20725-54-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827253789158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu HPETAddrDecode has a `reg` field so that there're many variables named "reg" in MMIO read/write/decode functions. In the future, there'll be other HPETRegisters/HPETTimerRegisters structs containing values of HPET registers, and related variables or arguments will be named as "regs". To avoid potential confusion between many "reg" and "regs", rename HPETAddrDecode::reg to HPETAddrDecode::target, and rename decoding related variables from "reg" to "target". "target" is picked as the name since this clearly reflects the field or variable is the target decoded register. Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251113051937.4017675-10-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- rust/hw/timer/hpet/src/device.rs | 33 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index 3e8f5397fb2..c5b58f8dee7 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -136,7 +136,7 @@ enum DecodedRegister<'a> { struct HPETAddrDecode<'a> { shift: u32, len: u32, - reg: DecodedRegister<'a>, + target: DecodedRegister<'a>, } =20 const fn hpet_next_wrap(cur_tick: u64) -> u64 { @@ -497,21 +497,20 @@ fn callback(&mut self) { self.update_irq(true); } =20 - const fn read(&self, reg: TimerRegister) -> u64 { + const fn read(&self, target: TimerRegister) -> u64 { use TimerRegister::*; - match reg { + match target { CFG =3D> self.config, // including interrupt capabilities CMP =3D> self.cmp, // comparator register ROUTE =3D> self.fsb, } } =20 - fn write(&mut self, reg: TimerRegister, value: u64, shift: u32, len: u= 32) { + fn write(&mut self, target: TimerRegister, value: u64, shift: u32, len= : u32) { use TimerRegister::*; =20 trace::trace_hpet_ram_write_timer_id(self.index); - - match reg { + match target { CFG =3D> self.set_tn_cfg_reg(shift, len, value), CMP =3D> self.set_tn_cmp_reg(shift, len, value), ROUTE =3D> self.set_tn_fsb_route_reg(shift, len, value), @@ -779,34 +778,34 @@ fn decode(&self, mut addr: hwaddr, size: u32) -> HPET= AddrDecode<'_> { let len =3D std::cmp::min(size * 8, 64 - shift); =20 addr &=3D !4; - let reg =3D if (0..=3D0xff).contains(&addr) { + let target =3D if (0..=3D0xff).contains(&addr) { GlobalRegister::try_from(addr).map(DecodedRegister::Global) } else { let timer_id: usize =3D ((addr - 0x100) / 0x20) as usize; if timer_id < self.num_timers { TimerRegister::try_from(addr & 0x18) - .map(|reg| DecodedRegister::Timer(&self.timers[timer_i= d], reg)) + .map(|target| DecodedRegister::Timer(&self.timers[time= r_id], target)) } else { trace::trace_hpet_timer_id_out_of_range(timer_id.try_into(= ).unwrap()); Err(addr) } }; =20 - // reg is now a Result + // `target` is now a Result // convert the Err case into DecodedRegister as well - let reg =3D reg.unwrap_or_else(DecodedRegister::Unknown); - HPETAddrDecode { shift, len, reg } + let target =3D target.unwrap_or_else(DecodedRegister::Unknown); + HPETAddrDecode { shift, len, target } } =20 fn read(&self, addr: hwaddr, size: u32) -> u64 { trace::trace_hpet_ram_read(addr); =20 - let HPETAddrDecode { shift, reg, .. } =3D self.decode(addr, size); + let HPETAddrDecode { shift, target, .. } =3D self.decode(addr, siz= e); =20 use GlobalRegister::*; use DecodedRegister::*; - (match reg { - Timer(timer, tn_reg) =3D> timer.borrow_mut().read(tn_reg), + (match target { + Timer(timer, tn_target) =3D> timer.borrow_mut().read(tn_target= ), Global(CAP) =3D> self.capability.get(), /* including HPET_PERI= OD 0x004 */ Global(CFG) =3D> self.config.get(), Global(INT_STATUS) =3D> self.int_status.get(), @@ -829,14 +828,14 @@ fn read(&self, addr: hwaddr, size: u32) -> u64 { } =20 fn write(&self, addr: hwaddr, value: u64, size: u32) { - let HPETAddrDecode { shift, len, reg } =3D self.decode(addr, size); + let HPETAddrDecode { shift, len, target } =3D self.decode(addr, si= ze); =20 trace::trace_hpet_ram_write(addr, value); =20 use GlobalRegister::*; use DecodedRegister::*; - match reg { - Timer(timer, tn_reg) =3D> timer.borrow_mut().write(tn_reg, val= ue, shift, len), + match target { + Timer(timer, tn_target) =3D> timer.borrow_mut().write(tn_targe= t, value, shift, len), Global(CAP) =3D> {} // General Capabilities and ID Register: R= ead Only Global(CFG) =3D> self.set_cfg_reg(shift, len, value), Global(INT_STATUS) =3D> self.set_int_status_reg(shift, len, va= lue), --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827445; cv=none; d=zohomail.com; s=zohoarc; b=HAeCosjBvK3fitGi9W2SteZIaDWRclO3pZNv4+5IDXzMs6BgroZmUycxpABnT9mB11iJWUjJsxqKBPNAS5IVcpGSOaXjbaaEKaoU0tHUq12T3YLqUAAghBycFtFi6QPimdmzK3TQSr3u/1ZA7WYpK55nN3MXDdwDQMpsOO9RbJQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827445; 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=r0iF3982sft8+oFlrdUYWicQoJY4NOU6Cauxe2SgZGQ=; b=neUtSkn3iz12VfpJSbkrbGHvz0jTNtKbhqhZupq8mXoFeBJ5dk72SmgqWdsquMbgxrm/oH0IXAvnZvKP4ebj8IVElV6duv/b6giJgTsu19O4I+b5qZ4d0uSkjAW5MiQ+W3qo9wDlLy54sNbRkl7AnsR45jBOy/1Pfp+OVx9vGqY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176682744561815.181764812665278; Sat, 27 Dec 2025 01:24:05 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQRM-0006oC-3L; Sat, 27 Dec 2025 04:18:24 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRD-0006gN-Qe for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:15 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRB-0003eY-H7 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:15 -0500 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-689-SkpRYjwDPTSVCezVyuCQmQ-1; Sat, 27 Dec 2025 04:18:10 -0500 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-4325cc15176so3153562f8f.1 for ; Sat, 27 Dec 2025 01:18:10 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d19346d33sm444601745e9.3.2025.12.27.01.18.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:18:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827092; 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=r0iF3982sft8+oFlrdUYWicQoJY4NOU6Cauxe2SgZGQ=; b=R6XtiAlr3ALtKAGl6lkPc+oT9Ltl+/qYbMRXax841+wQNWJXuKcdhGHVi40K7osHoPs+Sm vAjNm8cOp6Tai6RVzIyiYcdiYpTga0SHlRyiCgwWQawqmO9bPjQdMi+08tVyajcuEpygTS KmIO4m0EBYQtB87JWdUmZea+mIx9Kt4= X-MC-Unique: SkpRYjwDPTSVCezVyuCQmQ-1 X-Mimecast-MFC-AGG-ID: SkpRYjwDPTSVCezVyuCQmQ_1766827089 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827088; x=1767431888; 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; bh=r0iF3982sft8+oFlrdUYWicQoJY4NOU6Cauxe2SgZGQ=; b=sKBQSk2N6Wp2CPxW+rxOb0VcxE6lXwdv7LUZIFsTXxRWshftFcnBQZZ3ZjfUhjQqA6 jJiWTgPy2JSdQBa5+OAGi0cUxsAeeueMq4qs5qQwNdp1i4SbQEBBWMZX7EqSvcoqx8HH 6u2SoPlIuuIFn2xXTZ4b6NJvHoMhL8fPtpnNv5vSw0DOZ8CX3gunj9W/SwrddeCveyes 7Ekz5L/hnLo4oodR5P8PZe4JYTu+Hl2A0YjYFIHhP8QgAQJC82zCCTtQFBOCEs4abWSA VOiaXI7KS07P48tSxR8PeNMq+06Aum7JBGUZHaxFlEBisuctB+uRLJwW8en02ylIMvAT wtHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827088; x=1767431888; 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; bh=r0iF3982sft8+oFlrdUYWicQoJY4NOU6Cauxe2SgZGQ=; b=nGpt6R1HISyG3Ui4ilhwcnTyolAS3cGleUN6EjHAlEZGWeS9oSIMq8yuNLlXd7oaWv YOFEn6Jp9XWg1qHUA3Iz/OWq6rCFGoSkR7gRZubTvq/ge6dmW/uClp1BO5j3qtol36z5 TLz1fYyWJvF1AMxdlfHDjw9TFMVHuAL9NLq2EzRYTd6xNxsgVHvcRZnAlo+StMLl7QCf V9S4/rKUjX50L1BxtXBo8lW+m1jYZKzszBJfs4DeDfB2oDod1zNiTRdUBjIb7jp7ea+i Em6MfHlbrqJuK8HtNNdCvACOaxyKVNpGEEDSXyW7zJmiDuKk+BCwd+U5hWWx0Cquw48I SQbQ== X-Gm-Message-State: AOJu0YxfulYg7zbGVAXM9AR9ox0PqbeX1sxsDFJOAsZZoKksqEkkkNwx GYHdlbctPOGFErEW7hmXvSsoC5/DLqiF5iJTYreYo4kn7p9rXaCEYYKmZf4R7X0k1EVAHWzE171 CyTpjlYFOhW+XHynUmB74og6uhOKzThL/lsUCFelI8/4sA1rIZS8Xxq/v6bzkjJPUQfngLPu7tO 1rPT1KfZSOZXMsE60Y2M0A24u58vEUQvNLQ9Wb7v3i X-Gm-Gg: AY/fxX491401/eMTvxJo5S/5N6p0UsABhZfhi0Fu5NZaCGWMTbkbWZoDmFy+nXC4l9A cWz39zlMljykFu+gwjji2tx+jR7sUOPICWOvarVgh394ibhVWUpwGlsQTXhrszWo0GHeQclU+X9 zld5gBXJxgvcGjUEcp0qmZWLg3nnyoG8BuWekOQTB+O12N2D7zWD0eea1Mfz4LS5plV6Bx0pxvs +uDacwQbcXUHkS/HUN02h/99m8YT+yGVkdq0cZ6ldFy0A9CsV9oQrKRamoOjajUxW1N6h9AJfcq 8XcXDuNLbRl/AcUeJ1LiVfdXLPIIvQBFQDlkeP/QsTs6vZmpm5AzjbPqiUOfr5PeG3/4Dn6jTAQ ZiqWrWS5ZbRHNiO1Q/gl9OOg7UFf2XkmbRWPRdG5yMKQ/M97UQDK7yMzEsjv/1l0UaZGKCEfVmw 6ds/wtXw0gunYTZEY= X-Received: by 2002:a05:600c:a31a:b0:477:b48d:ba7a with SMTP id 5b1f17b1804b1-47d1afcd9e2mr214052395e9.32.1766827088126; Sat, 27 Dec 2025 01:18:08 -0800 (PST) X-Google-Smtp-Source: AGHT+IE5rcsq30k1T3AMDnMq7LkrLVP9lk81w4s+x6+aXLsTQ8v7LH4Dci8lUTpINSPXoKkhHX9uwQ== X-Received: by 2002:a05:600c:a31a:b0:477:b48d:ba7a with SMTP id 5b1f17b1804b1-47d1afcd9e2mr214052125e9.32.1766827087531; Sat, 27 Dec 2025 01:18:07 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 054/153] rust/hpet: Abstract HPETTimerRegisters struct Date: Sat, 27 Dec 2025 10:14:41 +0100 Message-ID: <20251227091622.20725-55-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827446611158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Place all timer N's registers in a HPETTimerRegisters struct. This allows all Timer N registers to be grouped together with global registers and managed using a single lock (BqlRefCell or Mutex) in future. And this makes it easier to apply ToMigrationState macro. Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251113051937.4017675-11-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- rust/hw/timer/hpet/src/device.rs | 101 ++++++++++++++++++------------- 1 file changed, 60 insertions(+), 41 deletions(-) diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index c5b58f8dee7..1bdee064d43 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -174,6 +174,18 @@ fn timer_handler(timer_cell: &BqlRefCell) { timer_cell.borrow_mut().callback() } =20 +#[repr(C)] +#[derive(Debug, Default)] +pub struct HPETTimerRegisters { + // Memory-mapped, software visible timer registers + /// Timer N Configuration and Capability Register + config: u64, + /// Timer N Comparator Value Register + cmp: u64, + /// Timer N FSB Interrupt Route Register + fsb: u64, +} + /// HPET Timer Abstraction #[repr(C)] #[derive(Debug)] @@ -185,14 +197,7 @@ pub struct HPETTimer { /// timer block abstraction containing this timer state: NonNull, =20 - // Memory-mapped, software visible timer registers - /// Timer N Configuration and Capability Register - config: u64, - /// Timer N Comparator Value Register - cmp: u64, - /// Timer N FSB Interrupt Route Register - fsb: u64, - + regs: HPETTimerRegisters, // Hidden register state /// comparator (extended to counter width) cmp64: u64, @@ -217,9 +222,7 @@ fn new(index: u8, state: *const HPETState) -> HPETTimer= { // is initialized below. qemu_timer: unsafe { Timer::new() }, state: NonNull::new(state.cast_mut()).unwrap(), - config: 0, - cmp: 0, - fsb: 0, + regs: Default::default(), cmp64: 0, period: 0, wrap_flag: 0, @@ -246,32 +249,32 @@ fn is_int_active(&self) -> bool { } =20 const fn is_fsb_route_enabled(&self) -> bool { - self.config & (1 << HPET_TN_CFG_FSB_ENABLE_SHIFT) !=3D 0 + self.regs.config & (1 << HPET_TN_CFG_FSB_ENABLE_SHIFT) !=3D 0 } =20 const fn is_periodic(&self) -> bool { - self.config & (1 << HPET_TN_CFG_PERIODIC_SHIFT) !=3D 0 + self.regs.config & (1 << HPET_TN_CFG_PERIODIC_SHIFT) !=3D 0 } =20 const fn is_int_enabled(&self) -> bool { - self.config & (1 << HPET_TN_CFG_INT_ENABLE_SHIFT) !=3D 0 + self.regs.config & (1 << HPET_TN_CFG_INT_ENABLE_SHIFT) !=3D 0 } =20 const fn is_32bit_mod(&self) -> bool { - self.config & (1 << HPET_TN_CFG_32BIT_SHIFT) !=3D 0 + self.regs.config & (1 << HPET_TN_CFG_32BIT_SHIFT) !=3D 0 } =20 const fn is_valset_enabled(&self) -> bool { - self.config & (1 << HPET_TN_CFG_SETVAL_SHIFT) !=3D 0 + self.regs.config & (1 << HPET_TN_CFG_SETVAL_SHIFT) !=3D 0 } =20 fn clear_valset(&mut self) { - self.config &=3D !(1 << HPET_TN_CFG_SETVAL_SHIFT); + self.regs.config &=3D !(1 << HPET_TN_CFG_SETVAL_SHIFT); } =20 /// True if timer interrupt is level triggered; otherwise, edge trigge= red. const fn is_int_level_triggered(&self) -> bool { - self.config & (1 << HPET_TN_CFG_INT_TYPE_SHIFT) !=3D 0 + self.regs.config & (1 << HPET_TN_CFG_INT_TYPE_SHIFT) !=3D 0 } =20 /// calculate next value of the general counter that matches the @@ -290,7 +293,7 @@ fn calculate_cmp64(&self, cur_tick: u64, target: u64) -= > u64 { } =20 const fn get_individual_route(&self) -> usize { - ((self.config & HPET_TN_CFG_INT_ROUTE_MASK) >> HPET_TN_CFG_INT_ROU= TE_SHIFT) as usize + ((self.regs.config & HPET_TN_CFG_INT_ROUTE_MASK) >> HPET_TN_CFG_IN= T_ROUTE_SHIFT) as usize } =20 fn get_int_route(&self) -> usize { @@ -328,8 +331,8 @@ fn set_irq(&self, set: bool) { unsafe { address_space_stl_le( addr_of_mut!(address_space_memory), - self.fsb >> 32, // Timer N FSB int addr - self.fsb as u32, // Timer N FSB int value, truncat= e! + self.regs.fsb >> 32, // Timer N FSB int addr + self.regs.fsb as u32, // Timer N FSB int value, tr= uncate! MEMTXATTRS_UNSPECIFIED, null_mut(), ); @@ -369,7 +372,7 @@ fn set_timer(&mut self) { let cur_tick: u64 =3D self.get_state().get_ticks(); =20 self.wrap_flag =3D 0; - self.cmp64 =3D self.calculate_cmp64(cur_tick, self.cmp); + self.cmp64 =3D self.calculate_cmp64(cur_tick, self.regs.cmp); if self.is_32bit_mod() { // HPET spec says in one-shot 32-bit mode, generate an interru= pt when // counter wraps in addition to an interrupt with comparator m= atch. @@ -398,25 +401,25 @@ fn del_timer(&self) { fn set_tn_cfg_reg(&mut self, shift: u32, len: u32, val: u64) { trace::trace_hpet_ram_write_tn_cfg((shift / 8).try_into().unwrap()= ); =20 - let old_val: u64 =3D self.config; + let old_val: u64 =3D self.regs.config; let mut new_val: u64 =3D old_val.deposit(shift, len, val); new_val =3D hpet_fixup_reg(new_val, old_val, HPET_TN_CFG_WRITE_MAS= K); =20 // Switch level-type interrupt to edge-type. if deactivating_bit(old_val, new_val, HPET_TN_CFG_INT_TYPE_SHIFT) { - // Do this before changing timer.config; otherwise, if + // Do this before changing timer.regs.config; otherwise, if // HPET_TN_FSB is set, update_irq will not lower the qemu_irq. self.update_irq(false); } =20 - self.config =3D new_val; + self.regs.config =3D new_val; =20 if activating_bit(old_val, new_val, HPET_TN_CFG_INT_ENABLE_SHIFT) = && self.is_int_active() { self.update_irq(true); } =20 if self.is_32bit_mod() { - self.cmp =3D u64::from(self.cmp as u32); // truncate! + self.regs.cmp =3D u64::from(self.regs.cmp as u32); // truncate! self.period =3D u64::from(self.period as u32); // truncate! } =20 @@ -443,7 +446,7 @@ fn set_tn_cmp_reg(&mut self, shift: u32, len: u32, val:= u64) { trace::trace_hpet_ram_write_tn_cmp((shift / 8).try_into().unwrap()= ); =20 if !self.is_periodic() || self.is_valset_enabled() { - self.cmp =3D self.cmp.deposit(shift, length, value); + self.regs.cmp =3D self.regs.cmp.deposit(shift, length, value); } =20 if self.is_periodic() { @@ -458,18 +461,19 @@ fn set_tn_cmp_reg(&mut self, shift: u32, len: u32, va= l: u64) { =20 /// FSB Interrupt Route Register fn set_tn_fsb_route_reg(&mut self, shift: u32, len: u32, val: u64) { - self.fsb =3D self.fsb.deposit(shift, len, val); + self.regs.fsb =3D self.regs.fsb.deposit(shift, len, val); } =20 fn reset(&mut self) { self.del_timer(); - self.cmp =3D u64::MAX; // Comparator Match Registers reset to all = 1's. - self.config =3D (1 << HPET_TN_CFG_PERIODIC_CAP_SHIFT) | (1 << HPET= _TN_CFG_SIZE_CAP_SHIFT); + self.regs.cmp =3D u64::MAX; // Comparator Match Registers reset to= all 1's. + self.regs.config =3D + (1 << HPET_TN_CFG_PERIODIC_CAP_SHIFT) | (1 << HPET_TN_CFG_SIZE= _CAP_SHIFT); if self.get_state().has_msi_flag() { - self.config |=3D 1 << HPET_TN_CFG_FSB_CAP_SHIFT; + self.regs.config |=3D 1 << HPET_TN_CFG_FSB_CAP_SHIFT; } // advertise availability of ioapic int - self.config |=3D + self.regs.config |=3D (u64::from(self.get_state().int_route_cap)) << HPET_TN_CFG_INT= _ROUTE_CAP_SHIFT; self.period =3D 0; self.wrap_flag =3D 0; @@ -485,9 +489,9 @@ fn callback(&mut self) { self.cmp64 +=3D period; } if self.is_32bit_mod() { - self.cmp =3D u64::from(self.cmp64 as u32); // truncate! + self.regs.cmp =3D u64::from(self.cmp64 as u32); // truncat= e! } else { - self.cmp =3D self.cmp64; + self.regs.cmp =3D self.cmp64; } self.arm_timer(self.cmp64); } else if self.wrap_flag !=3D 0 { @@ -500,9 +504,9 @@ fn callback(&mut self) { const fn read(&self, target: TimerRegister) -> u64 { use TimerRegister::*; match target { - CFG =3D> self.config, // including interrupt capabilities - CMP =3D> self.cmp, // comparator register - ROUTE =3D> self.fsb, + CFG =3D> self.regs.config, // including interrupt capabilities + CMP =3D> self.regs.cmp, // comparator register + ROUTE =3D> self.regs.fsb, } } =20 @@ -862,7 +866,7 @@ fn post_load(&self, _version_id: u8) -> Result<(), migr= ation::Infallible> { for timer in self.timers.iter().take(self.num_timers) { let mut t =3D timer.borrow_mut(); =20 - t.cmp64 =3D t.calculate_cmp64(t.get_state().counter.get(), t.c= mp); + t.cmp64 =3D t.calculate_cmp64(t.get_state().counter.get(), t.r= egs.cmp); t.last =3D CLOCK_VIRTUAL.get_ns() - NANOSECONDS_PER_SECOND; } =20 @@ -926,6 +930,22 @@ impl ObjectImpl for HPETState { }) .build(); =20 +// In fact, version_id and minimum_version_id for HPETTimerRegisters are +// unrelated to HPETTimer's version IDs. Does not affect compatibility. +impl_vmstate_struct!( + HPETTimerRegisters, + VMStateDescriptionBuilder::::new() + .name(c"hpet_timer/regs") + .version_id(1) + .minimum_version_id(1) + .fields(vmstate_fields! { + vmstate_of!(HPETTimerRegisters, config), + vmstate_of!(HPETTimerRegisters, cmp), + vmstate_of!(HPETTimerRegisters, fsb), + }) + .build() +); + const VMSTATE_HPET_TIMER: VMStateDescription =3D VMStateDescriptionBuilder::::new() .name(c"hpet_timer") @@ -933,14 +953,13 @@ impl ObjectImpl for HPETState { .minimum_version_id(1) .fields(vmstate_fields! { vmstate_of!(HPETTimer, index), - vmstate_of!(HPETTimer, config), - vmstate_of!(HPETTimer, cmp), - vmstate_of!(HPETTimer, fsb), + vmstate_of!(HPETTimer, regs), vmstate_of!(HPETTimer, period), vmstate_of!(HPETTimer, wrap_flag), vmstate_of!(HPETTimer, qemu_timer), }) .build(); + impl_vmstate_struct!(HPETTimer, VMSTATE_HPET_TIMER); =20 const VALIDATE_TIMERS_NAME: &CStr =3D c"num_timers must match"; --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827215; cv=none; d=zohomail.com; s=zohoarc; b=jaqYqgZf3im4gWv0W6LJELG+UWcr08GcZVRNJeKrX165CC2Bf8FtVBLI52pgcd/tdNNjAXFxqgKyjTEGoGMMBPe9eB2CUpOJL9Ip7PLZKTmnSc7zTw1zehONDIXmE4sLEQ5VM+/6lvy46HdKxLVfhQg0DxVJFhLftQ4zMJZVCVM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827215; 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=paa+WcSbaqh3C78vzKBguRWQhtas8zYMwVuB+87aW10=; b=AJz7Fz5Dh/BkWXKH3E4emvEE2S/znvZODEU+WNDA0waR33vTxqksiyFL1FMN3raZ2R9/GJqd8EBtGoUMMuXWqbBJrW+hhZaF48Z6TSWX1EGOIFlakhDLBWj/TTNBVbTYqFRNIufvkhNJ2G5Er3ljFmy/ah/mOvwHi8XplNvZQn4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827215961990.6346327235443; Sat, 27 Dec 2025 01:20:15 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQRT-00074U-SB; Sat, 27 Dec 2025 04:18:33 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRE-0006kz-Ue for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:18 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRB-0003ec-Tw for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:16 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-228-Nr5NrB48OW6w2G2EIeni-Q-1; Sat, 27 Dec 2025 04:18:12 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-477cf25ceccso85499645e9.0 for ; Sat, 27 Dec 2025 01:18:11 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be3bbe1c8sm192137825e9.11.2025.12.27.01.18.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:18:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827093; 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=paa+WcSbaqh3C78vzKBguRWQhtas8zYMwVuB+87aW10=; b=fPDm/KtbcH0KhOI0WmFXm34Pi8BCgZe1iLr6j8vSOyYiKMr+KyfpK7XcN/XPm0m8MPmNZj cIVmKlaQwrLOftkcpEYtiT9u+IFs45WZmC5qwDn2entC0Zbw5HmM58YxF9u8UXhtAYaupQ XYVrWHf0hBsWvPBaVB21wxc/aTQ0prE= X-MC-Unique: Nr5NrB48OW6w2G2EIeni-Q-1 X-Mimecast-MFC-AGG-ID: Nr5NrB48OW6w2G2EIeni-Q_1766827091 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827089; x=1767431889; 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; bh=paa+WcSbaqh3C78vzKBguRWQhtas8zYMwVuB+87aW10=; b=qBut3O9X37xd5mhCJqdb+kxh5TLK8s3wBlYkiM5UXyMU5S2F3wmwddCHkMFft7g+q2 URN6YYtNfoZ8/5VeDwLX3IJYaS4R1s+FwrEBguMApKEa5qgOlz5s11ee6IqINJGL8iK7 YIiKWIvONb3jW8X0k20ii7lOz1AUBxyCqm8nl2SzYLJFBAnWMqrvGY/3YTyn5Lm1jkgq M+DFe8JjBH+HdwXjvVJZiP3257QIhfqwe2YHl6Odu9Tcbkiw/pglv3ofYWVzO+vysG3q PQOokirF9+7/tDPQThtQpkpi5DjNUJoXmBpWgK6eN2iZuBEgEiubveMmy4w2wiQi97lw 5aMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827089; x=1767431889; 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; bh=paa+WcSbaqh3C78vzKBguRWQhtas8zYMwVuB+87aW10=; b=a7HKKWgzHde5zEKoKhwUf2O/ula42CzSvk7Z4abxxvjdP2lJAe6o/Cp7mQO0mX8Px5 DbPKAhOH5DAhqyXevUElJJR3Gstf6v8aKuFdiHzDlINyl21NoNBnJ9ryai/HgIrPEt0g U8gTdb6I//57ct2nY6OmChU5KJ/oULP3enDNoPwWXWJVecKi3oJ5VrB09xUt69MsUi30 prhLZPr+XnFPIHqhiuE1QthxmXQF9hLJQlJ6iXHd14RFV16Y8EJ9sQGvMYKKA4V+L99g W8xGErjwGTXAMWVgwlGbgYXY/atMp813A0/Hf1XvjCK7gqcXmjMgonM9qUHOfQlw1QVf DTFw== X-Gm-Message-State: AOJu0YwzG+giRnPWLosnXhKiUC84FeM6H35yvNFsB9q2KXnlw9621Vgs tRFUjFEMcPKQDiTTZcJ9lIM6ohh0bMQMi0nHkdIkRmTarCDk5VeKAZY1njlCvUKpePpqkqOphtW Y+QWXfyZvN+Bq9ijmfcQtJ3W+VKhKAQORky6gD1MdbCqQcvvcvski/p1SWPgGv3rYw2446raL5k /6wtBQtFkY/ANfJ+FcwZs/M0acKRjvjks/Wiq/zzrM X-Gm-Gg: AY/fxX4J5MXNhu/OI3uURJpQiW+za5ERvfI4y3vQ6cN2cnhI2m/jtAwJ55vzAdmI91h aMcdgQEGiP77BqFROT/H3PH1Z52BA+PZPQ7lpvU2V/ttKgqiA13mRqsyESvoPuvUPT2NwzQL4F/ sFFFv8A28PpkhxAQY/OMfieH/TCDzYzh8WuXdnCSAWmMAvGqLPKL4uKFEyMptv082Do9Xuo9ame 8/DXAW/VIq8xZdDw8xFy/LXYsHrr8P77v7QMNXH+oW4XHO5/X7WUGqejxsoMQLGZ6TGCz6P6Zgo wPV3h4UhJ+xppzQTw3xNFDZaNy9IJ6A5D1D7mCZFgNNW2ZmzR22cAMnc9+2JfxY0uFpiUsUJsU6 3W+LItU5e2NoKyN7sLLUJm1KN1rNpikUVH1ASEySKAwqkurBq2LNropidGYYBmpoiS84BO3vlH5 mjHwQ2rkitMWyhc+8= X-Received: by 2002:a05:600c:3b05:b0:477:6e02:54a5 with SMTP id 5b1f17b1804b1-47d19594d77mr259864015e9.18.1766827089433; Sat, 27 Dec 2025 01:18:09 -0800 (PST) X-Google-Smtp-Source: AGHT+IENMd7J/Fq5qOXZagPgvbnI5Sq0u0xBK2YiqrizHlK+7MRQ+cOo8C5qSww4QfeLFq6syBMK/Q== X-Received: by 2002:a05:600c:3b05:b0:477:6e02:54a5 with SMTP id 5b1f17b1804b1-47d19594d77mr259863715e9.18.1766827088847; Sat, 27 Dec 2025 01:18:08 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 055/153] rust/hpet: Make timer register accessors as methods of HPETTimerRegisters Date: Sat, 27 Dec 2025 10:14:42 +0100 Message-ID: <20251227091622.20725-56-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827217756158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Implement helper accessors as methods of HPETTimerRegisters. Then HPETTimerRegisters can be accessed without going through HPETTimer or HPETState. In subsequent refactoring, HPETTimerRegisters will be maintained at the HPETState level. However, accessing it through HPETState requires the lock (lock BQL or mutex), which would cause troublesome nested locks or reentrancy issues. Therefore, refactor the accessors of HPETTimerRegisters to bypass HPETTimer or HPETState. Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251113051937.4017675-12-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- rust/hw/timer/hpet/src/device.rs | 108 ++++++++++++++++--------------- 1 file changed, 55 insertions(+), 53 deletions(-) diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index 1bdee064d43..8dc3cc59c98 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -186,6 +186,41 @@ pub struct HPETTimerRegisters { fsb: u64, } =20 +impl HPETTimerRegisters { + const fn is_fsb_route_enabled(&self) -> bool { + self.config & (1 << HPET_TN_CFG_FSB_ENABLE_SHIFT) !=3D 0 + } + + const fn is_periodic(&self) -> bool { + self.config & (1 << HPET_TN_CFG_PERIODIC_SHIFT) !=3D 0 + } + + const fn is_int_enabled(&self) -> bool { + self.config & (1 << HPET_TN_CFG_INT_ENABLE_SHIFT) !=3D 0 + } + + const fn is_32bit_mod(&self) -> bool { + self.config & (1 << HPET_TN_CFG_32BIT_SHIFT) !=3D 0 + } + + const fn is_valset_enabled(&self) -> bool { + self.config & (1 << HPET_TN_CFG_SETVAL_SHIFT) !=3D 0 + } + + /// True if timer interrupt is level triggered; otherwise, edge trigge= red. + const fn is_int_level_triggered(&self) -> bool { + self.config & (1 << HPET_TN_CFG_INT_TYPE_SHIFT) !=3D 0 + } + + const fn clear_valset(&mut self) { + self.config &=3D !(1 << HPET_TN_CFG_SETVAL_SHIFT); + } + + const fn get_individual_route(&self) -> usize { + ((self.config & HPET_TN_CFG_INT_ROUTE_MASK) >> HPET_TN_CFG_INT_ROU= TE_SHIFT) as usize + } +} + /// HPET Timer Abstraction #[repr(C)] #[derive(Debug)] @@ -248,40 +283,11 @@ fn is_int_active(&self) -> bool { self.get_state().is_timer_int_active(self.index.into()) } =20 - const fn is_fsb_route_enabled(&self) -> bool { - self.regs.config & (1 << HPET_TN_CFG_FSB_ENABLE_SHIFT) !=3D 0 - } - - const fn is_periodic(&self) -> bool { - self.regs.config & (1 << HPET_TN_CFG_PERIODIC_SHIFT) !=3D 0 - } - - const fn is_int_enabled(&self) -> bool { - self.regs.config & (1 << HPET_TN_CFG_INT_ENABLE_SHIFT) !=3D 0 - } - - const fn is_32bit_mod(&self) -> bool { - self.regs.config & (1 << HPET_TN_CFG_32BIT_SHIFT) !=3D 0 - } - - const fn is_valset_enabled(&self) -> bool { - self.regs.config & (1 << HPET_TN_CFG_SETVAL_SHIFT) !=3D 0 - } - - fn clear_valset(&mut self) { - self.regs.config &=3D !(1 << HPET_TN_CFG_SETVAL_SHIFT); - } - - /// True if timer interrupt is level triggered; otherwise, edge trigge= red. - const fn is_int_level_triggered(&self) -> bool { - self.regs.config & (1 << HPET_TN_CFG_INT_TYPE_SHIFT) !=3D 0 - } - /// calculate next value of the general counter that matches the /// target (either entirely, or the low 32-bit only depending on /// the timer mode). fn calculate_cmp64(&self, cur_tick: u64, target: u64) -> u64 { - if self.is_32bit_mod() { + if self.regs.is_32bit_mod() { let mut result: u64 =3D cur_tick.deposit(0, 32, target); if result < cur_tick { result +=3D 0x100000000; @@ -292,10 +298,6 @@ fn calculate_cmp64(&self, cur_tick: u64, target: u64) = -> u64 { } } =20 - const fn get_individual_route(&self) -> usize { - ((self.regs.config & HPET_TN_CFG_INT_ROUTE_MASK) >> HPET_TN_CFG_IN= T_ROUTE_SHIFT) as usize - } - fn get_int_route(&self) -> usize { if self.index <=3D 1 && self.get_state().is_legacy_mode() { // If LegacyReplacement Route bit is set, HPET specification r= equires @@ -317,15 +319,15 @@ fn get_int_route(&self) -> usize { // ... // If the LegacyReplacement Route bit is not set, the individu= al // routing bits for each of the timers are used. - self.get_individual_route() + self.regs.get_individual_route() } } =20 fn set_irq(&self, set: bool) { let route =3D self.get_int_route(); =20 - if set && self.is_int_enabled() && self.get_state().is_hpet_enable= d() { - if self.is_fsb_route_enabled() { + if set && self.regs.is_int_enabled() && self.get_state().is_hpet_e= nabled() { + if self.regs.is_fsb_route_enabled() { // SAFETY: // the parameters are valid. unsafe { @@ -337,12 +339,12 @@ fn set_irq(&self, set: bool) { null_mut(), ); } - } else if self.is_int_level_triggered() { + } else if self.regs.is_int_level_triggered() { self.get_state().irqs[route].raise(); } else { self.get_state().irqs[route].pulse(); } - } else if !self.is_fsb_route_enabled() { + } else if !self.regs.is_fsb_route_enabled() { self.get_state().irqs[route].lower(); } } @@ -352,7 +354,7 @@ fn update_irq(&self, set: bool) { // still operate and generate appropriate status bits, but // will not cause an interrupt" self.get_state() - .update_int_status(self.index.into(), set && self.is_int_level= _triggered()); + .update_int_status(self.index.into(), set && self.regs.is_int_= level_triggered()); self.set_irq(set); } =20 @@ -360,7 +362,7 @@ fn arm_timer(&mut self, tick: u64) { let mut ns =3D self.get_state().get_ns(tick); =20 // Clamp period to reasonable min value (1 us) - if self.is_periodic() && ns - self.last < 1000 { + if self.regs.is_periodic() && ns - self.last < 1000 { ns =3D self.last + 1000; } =20 @@ -373,10 +375,10 @@ fn set_timer(&mut self) { =20 self.wrap_flag =3D 0; self.cmp64 =3D self.calculate_cmp64(cur_tick, self.regs.cmp); - if self.is_32bit_mod() { + if self.regs.is_32bit_mod() { // HPET spec says in one-shot 32-bit mode, generate an interru= pt when // counter wraps in addition to an interrupt with comparator m= atch. - if !self.is_periodic() && self.cmp64 > hpet_next_wrap(cur_tick= ) { + if !self.regs.is_periodic() && self.cmp64 > hpet_next_wrap(cur= _tick) { self.wrap_flag =3D 1; self.arm_timer(hpet_next_wrap(cur_tick)); return; @@ -418,7 +420,7 @@ fn set_tn_cfg_reg(&mut self, shift: u32, len: u32, val:= u64) { self.update_irq(true); } =20 - if self.is_32bit_mod() { + if self.regs.is_32bit_mod() { self.regs.cmp =3D u64::from(self.regs.cmp as u32); // truncate! self.period =3D u64::from(self.period as u32); // truncate! } @@ -433,7 +435,7 @@ fn set_tn_cmp_reg(&mut self, shift: u32, len: u32, val:= u64) { let mut length =3D len; let mut value =3D val; =20 - if self.is_32bit_mod() { + if self.regs.is_32bit_mod() { // High 32-bits are zero, leave them untouched. if shift !=3D 0 { trace::trace_hpet_ram_write_invalid_tn_cmp(); @@ -445,15 +447,15 @@ fn set_tn_cmp_reg(&mut self, shift: u32, len: u32, va= l: u64) { =20 trace::trace_hpet_ram_write_tn_cmp((shift / 8).try_into().unwrap()= ); =20 - if !self.is_periodic() || self.is_valset_enabled() { + if !self.regs.is_periodic() || self.regs.is_valset_enabled() { self.regs.cmp =3D self.regs.cmp.deposit(shift, length, value); } =20 - if self.is_periodic() { + if self.regs.is_periodic() { self.period =3D self.period.deposit(shift, length, value); } =20 - self.clear_valset(); + self.regs.clear_valset(); if self.get_state().is_hpet_enabled() { self.set_timer(); } @@ -484,11 +486,11 @@ fn callback(&mut self) { let period: u64 =3D self.period; let cur_tick: u64 =3D self.get_state().get_ticks(); =20 - if self.is_periodic() && period !=3D 0 { + if self.regs.is_periodic() && period !=3D 0 { while hpet_time_after(cur_tick, self.cmp64) { self.cmp64 +=3D period; } - if self.is_32bit_mod() { + if self.regs.is_32bit_mod() { self.regs.cmp =3D u64::from(self.cmp64 as u32); // truncat= e! } else { self.regs.cmp =3D self.cmp64; @@ -649,7 +651,7 @@ fn set_cfg_reg(&self, shift: u32, len: u32, val: u64) { for timer in self.timers.iter().take(self.num_timers) { let mut t =3D timer.borrow_mut(); =20 - if t.is_int_enabled() && t.is_int_active() { + if t.regs.is_int_enabled() && t.is_int_active() { t.update_irq(true); } t.set_timer(); @@ -806,8 +808,8 @@ fn read(&self, addr: hwaddr, size: u32) -> u64 { =20 let HPETAddrDecode { shift, target, .. } =3D self.decode(addr, siz= e); =20 - use GlobalRegister::*; use DecodedRegister::*; + use GlobalRegister::*; (match target { Timer(timer, tn_target) =3D> timer.borrow_mut().read(tn_target= ), Global(CAP) =3D> self.capability.get(), /* including HPET_PERI= OD 0x004 */ @@ -836,8 +838,8 @@ fn write(&self, addr: hwaddr, value: u64, size: u32) { =20 trace::trace_hpet_ram_write(addr, value); =20 - use GlobalRegister::*; use DecodedRegister::*; + use GlobalRegister::*; match target { Timer(timer, tn_target) =3D> timer.borrow_mut().write(tn_targe= t, value, shift, len), Global(CAP) =3D> {} // General Capabilities and ID Register: R= ead Only --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827527; cv=none; d=zohomail.com; s=zohoarc; b=KL6gmAs9wodGFNMDSI3k6Qe3E+DH+F2nhhPiiUjthRnQIAZB+PEU0Fu7/Pc5tIw/vNa6ws6Y9DBBU4NOxQ5ixGwVMKbT3sd5XLSdp+kgUTOr85H/RX3GFHWcCZHSfh6B7xxAbiw2yFf9Rez2Q6uE0VPCvc6E3lxBppPbztQlUS4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827527; 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=FEQp1QeOCaVuElqN45AAQIvtGjAtReoau7wTk87mvLg=; b=Bs1hZAiZv5obNF4CU3NYqf4YoinNaWAAI82L/CuaOSzSute2b3EAZFXMOObiblnfwlawzHxqjZa6iSjVPhka0j3jL+P9ahoHYuQMcQR3AxYA5ezbdVfT/Q/Qkd1j2Maixd0kfeOE1usy7awcSJ+JarNrhSyfbD+vlSPCeTYBT1s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827527503681.6475682285059; Sat, 27 Dec 2025 01:25:27 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQRW-000778-J0; Sat, 27 Dec 2025 04:18:35 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRH-0006nc-Lf for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:20 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRF-0003gH-L0 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:19 -0500 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-250-92FXTLBdPjyNdWhjYtJESg-1; Sat, 27 Dec 2025 04:18:14 -0500 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-4327778efa9so1318090f8f.2 for ; Sat, 27 Dec 2025 01:18:14 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea226d1sm50703204f8f.13.2025.12.27.01.18.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:18:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827097; 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=FEQp1QeOCaVuElqN45AAQIvtGjAtReoau7wTk87mvLg=; b=RxXZcXM8OPrarMlQ2YoVwLeOJvAL+3MrQjCEzOaz6/ZyMSx4ki+fjDYYXvAghJ+dCLwB1O azBPnLvVHzXeujw4tchkeYgO0u5aTDx3uF69yaYNJHl9YswuhnAECBSH3dA4J4KOLkOUcw iMWENRJzybYm83EqmIJEZQrIe6l5Jmk= X-MC-Unique: 92FXTLBdPjyNdWhjYtJESg-1 X-Mimecast-MFC-AGG-ID: 92FXTLBdPjyNdWhjYtJESg_1766827093 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827093; x=1767431893; 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; bh=FEQp1QeOCaVuElqN45AAQIvtGjAtReoau7wTk87mvLg=; b=O2X7doFI/alP+e97FJzVfieaGXpKF6BmAaXIstdHS5PTwvrgxmrx/B7oCM8FoY6OVg mcGz87qP0effSXqASFKhg0sztE9DljoPsbXrPdyETpxcenAFe4u/f4vFznhjamoXZ0qR qYpncM2/j1VsVMtC92nSQX+6X/TjAFOXz+2ugNwKkf5f/EIjJHViEBJRH2tt4AoIDd8I UDC5fVVvMqR7K7uocDclTDe4zyThQqI938G7LGNj2rUcZbRN87dxibH65R0b2UaMWJG5 y2goXk93fPVoS+TBS2tv3RHDcPAevpMTPZjTGzyE2/TR44c5DTpcsrzjQiQgPkiLJhiW Vr8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827093; x=1767431893; 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; bh=FEQp1QeOCaVuElqN45AAQIvtGjAtReoau7wTk87mvLg=; b=S6TN/DByYOQ3dYBKBFpu+fJQuIQ2gym+xd2A+Mnq6eA0S/6PepxeYPJmuMmk3CMmuO 22Uw51ZQ64prUZvAWpTrXI75LSzGs/OXihU7QnE8sNIzm/UEZpLEQmivzdRERHCBorn0 1sUiW8KxfwhGDuYL5chlDWReGNEld17o7Uo6tGAa93VbpSaU1FeZ4JzZdwyxKtgiLP2M HrkbbvI6Jxk317Vtp/+OmhprM+QONNABEyJNLUqklcuXiat+KGUl/zVTe8SKk2GSoqlz zL48e11CD9YsJ3ooZ4w2BJU7JiWt20LMr3dGMWXwRmWifWunSGFCe2khM2mgJcfZ+5dL 0YpA== X-Gm-Message-State: AOJu0YzGlQAr1xaeXC+JYZAcPRLLpZwzI54be5DV55Mt1GKoiC2Mp4QG 1OaQiXl0jT0zehUrJOEMLNO5qxeaqS7A71FqVmVTbPlT1KLy3VBs2htoRqug6NkJmMeI9/+tlZg 8UTqIn06ddxGs5X3kJEENUYcjhOUgu7QrArfqBcFoYD34Wh3Kjxq+HUKvMQEXMoQRxrwAu9th2n N5h79qbbpmKJj97lI4Iaxn/FlavwyZbQqeTotIOYe3 X-Gm-Gg: AY/fxX7p1GEmqPIc1v3vREnrvNFCrVyOXEvKNyMldVKKtsYkF3mpnyNtZy146LE6dqR YF3Mx3Xdz7HyxOR5O5GZ/SzPuoOYxVINujqhQPJuxkD2XojMAGIIigMx9Hfjy3kXxWBjNXpzhLO PwsSskI6H2pCyHcegziv1roMSGPvkWW4wSB/DKvkyfYESnnCS0dNFOiHtvGUWIeBnQ/JkOdhaVJ PvulDO2aPT9Hos4VbAZs9c6KSY+kOCtBbpXP4+hkIExca8LWfkd0GqWoyjKMjq+KrZtAQUa8U/o ipv85EXWLiDNvEJOgNQSmMUNiL5vYHaakiUZ69fllRTdD3X9xwI3h3xLCeMKSbwPtAWe05/Rb+R zkcBm+ALoQgQV/PwnbuU36pYaU5T10ulFKnuNodkTFAJih2wt3aDQzlWYpNABziuMzFH+BlHmUJ HQJAHkhB/OiIm45Z4= X-Received: by 2002:a05:6000:2285:b0:430:fafd:f1d2 with SMTP id ffacd0b85a97d-4324e4c6848mr32383803f8f.11.1766827092713; Sat, 27 Dec 2025 01:18:12 -0800 (PST) X-Google-Smtp-Source: AGHT+IHO48PlqlieWihndh+EVkuTjcBEF8YXPXM6OWzbBD5XGzvQ6djlsm8DEl4voz3u8TsjR3UJBg== X-Received: by 2002:a05:6000:2285:b0:430:fafd:f1d2 with SMTP id ffacd0b85a97d-4324e4c6848mr32383771f8f.11.1766827092196; Sat, 27 Dec 2025 01:18:12 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 056/153] rust/hpet: Abstract HPETRegisters struct Date: Sat, 27 Dec 2025 10:14:43 +0100 Message-ID: <20251227091622.20725-57-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827528868158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Place all HPET (global) timer block registers in a HPETRegisters struct, and wrap the whole register struct with a BqlRefCell<>. This allows to elevate the Bql check from individual register access to register structure access, making the Bql check more coarse-grained. But in current step, just treat BqlRefCell as BqlCell while maintaining fine-grained BQL protection. This approach helps to use HPETRegisters struct clearly without introducing the "already borrowed" around BqlRefCell. HPETRegisters struct makes it possible to take a Mutex<> to replace BqlRefCell<>, like C side did. Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251113051937.4017675-13-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- rust/hw/timer/hpet/src/device.rs | 116 +++++++++++++++++++------------ 1 file changed, 70 insertions(+), 46 deletions(-) diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index 8dc3cc59c98..bf9f4936718 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -524,24 +524,29 @@ fn write(&mut self, target: TimerRegister, value: u64= , shift: u32, len: u32) { } } =20 +#[repr(C)] +#[derive(Default)] +pub struct HPETRegisters { + // HPET block Registers: Memory-mapped, software visible registers + /// General Capabilities and ID Register + capability: u64, + /// General Configuration Register + config: u64, + /// General Interrupt Status Register + #[doc(alias =3D "isr")] + int_status: u64, + /// Main Counter Value Register + #[doc(alias =3D "hpet_counter")] + counter: u64, +} + /// HPET Event Timer Block Abstraction #[repr(C)] #[derive(qom::Object, hwcore::Device)] pub struct HPETState { parent_obj: ParentField, iomem: MemoryRegion, - - // HPET block Registers: Memory-mapped, software visible registers - /// General Capabilities and ID Register - capability: BqlCell, - /// General Configuration Register - config: BqlCell, - /// General Interrupt Status Register - #[doc(alias =3D "isr")] - int_status: BqlCell, - /// Main Counter Value Register - #[doc(alias =3D "hpet_counter")] - counter: BqlCell, + regs: BqlRefCell, =20 // Internal state /// Capabilities that QEMU HPET supports. @@ -583,15 +588,15 @@ const fn has_msi_flag(&self) -> bool { } =20 fn is_legacy_mode(&self) -> bool { - self.config.get() & (1 << HPET_CFG_LEG_RT_SHIFT) !=3D 0 + self.regs.borrow().config & (1 << HPET_CFG_LEG_RT_SHIFT) !=3D 0 } =20 fn is_hpet_enabled(&self) -> bool { - self.config.get() & (1 << HPET_CFG_ENABLE_SHIFT) !=3D 0 + self.regs.borrow().config & (1 << HPET_CFG_ENABLE_SHIFT) !=3D 0 } =20 fn is_timer_int_active(&self, index: usize) -> bool { - self.int_status.get() & (1 << index) !=3D 0 + self.regs.borrow().int_status & (1 << index) !=3D 0 } =20 fn get_ticks(&self) -> u64 { @@ -631,22 +636,22 @@ fn init_timers(this: &mut MaybeUninit) { } =20 fn update_int_status(&self, index: u32, level: bool) { - self.int_status - .set(self.int_status.get().deposit(index, 1, u64::from(level))= ); + let mut regs =3D self.regs.borrow_mut(); + regs.int_status =3D regs.int_status.deposit(index, 1, u64::from(le= vel)); } =20 /// General Configuration Register fn set_cfg_reg(&self, shift: u32, len: u32, val: u64) { - let old_val =3D self.config.get(); + let old_val =3D self.regs.borrow().config; let mut new_val =3D old_val.deposit(shift, len, val); =20 new_val =3D hpet_fixup_reg(new_val, old_val, HPET_CFG_WRITE_MASK); - self.config.set(new_val); + self.regs.borrow_mut().config =3D new_val; =20 if activating_bit(old_val, new_val, HPET_CFG_ENABLE_SHIFT) { // Enable main counter and interrupt generation. self.hpet_offset - .set(ticks_to_ns(self.counter.get()) - CLOCK_VIRTUAL.get_n= s()); + .set(ticks_to_ns(self.regs.borrow().counter) - CLOCK_VIRTU= AL.get_ns()); =20 for timer in self.timers.iter().take(self.num_timers) { let mut t =3D timer.borrow_mut(); @@ -658,7 +663,7 @@ fn set_cfg_reg(&self, shift: u32, len: u32, val: u64) { } } else if deactivating_bit(old_val, new_val, HPET_CFG_ENABLE_SHIFT= ) { // Halt main counter and disable interrupt generation. - self.counter.set(self.get_ticks()); + self.regs.borrow_mut().counter =3D self.get_ticks(); =20 for timer in self.timers.iter().take(self.num_timers) { timer.borrow().del_timer(); @@ -681,7 +686,7 @@ fn set_cfg_reg(&self, shift: u32, len: u32, val: u64) { /// General Interrupt Status Register: Read/Write Clear fn set_int_status_reg(&self, shift: u32, _len: u32, val: u64) { let new_val =3D val << shift; - let cleared =3D new_val & self.int_status.get(); + let cleared =3D new_val & self.regs.borrow().int_status; =20 for (index, timer) in self.timers.iter().take(self.num_timers).enu= merate() { if cleared & (1 << index) !=3D 0 { @@ -701,8 +706,8 @@ fn set_counter_reg(&self, shift: u32, len: u32, val: u6= 4) { // not be changed as well). trace::trace_hpet_ram_write_counter_write_while_enabled(); } - self.counter - .set(self.counter.get().deposit(shift, len, val)); + let mut regs =3D self.regs.borrow_mut(); + regs.counter =3D regs.counter.deposit(shift, len, val); } =20 unsafe fn init(mut this: ParentInit) { @@ -745,14 +750,12 @@ fn realize(&self) -> util::Result<()> { self.hpet_id.set(HPETFwConfig::assign_hpet_id()?); =20 // 64-bit General Capabilities and ID Register; LegacyReplacementR= oute. - self.capability.set( - HPET_CAP_REV_ID_VALUE << HPET_CAP_REV_ID_SHIFT | + self.regs.borrow_mut().capability =3D HPET_CAP_REV_ID_VALUE << HPE= T_CAP_REV_ID_SHIFT | 1 << HPET_CAP_COUNT_SIZE_CAP_SHIFT | 1 << HPET_CAP_LEG_RT_CAP_SHIFT | HPET_CAP_VENDER_ID_VALUE << HPET_CAP_VENDER_ID_SHIFT | ((self.num_timers - 1) as u64) << HPET_CAP_NUM_TIM_SHIFT | // = indicate the last timer - (HPET_CLK_PERIOD * FS_PER_NS) << HPET_CAP_CNT_CLK_PERIOD_SHIFT= , // 10 ns - ); + (HPET_CLK_PERIOD * FS_PER_NS) << HPET_CAP_CNT_CLK_PERIOD_SHIFT= ; // 10 ns =20 self.init_gpio_in(2, HPETState::handle_legacy_irq); self.init_gpio_out(from_ref(&self.pit_enabled)); @@ -764,17 +767,23 @@ fn reset_hold(&self, _type: ResetType) { timer.borrow_mut().reset(); } =20 - self.counter.set(0); - self.config.set(0); + // pit_enabled.set(true) will call irq handler and access regs + // again. We cannot borrow BqlRefCell twice at once. Minimize the + // scope of regs to ensure it will be dropped before irq callback. + { + let mut regs =3D self.regs.borrow_mut(); + regs.counter =3D 0; + regs.config =3D 0; + HPETFwConfig::update_hpet_cfg( + self.hpet_id.get(), + regs.capability as u32, + self.mmio_addr(0).unwrap(), + ); + } + self.pit_enabled.set(true); self.hpet_offset.set(0); =20 - HPETFwConfig::update_hpet_cfg( - self.hpet_id.get(), - self.capability.get() as u32, - self.mmio_addr(0).unwrap(), - ); - // to document that the RTC lowers its output on reset as well self.rtc_irq_level.set(0); } @@ -812,14 +821,14 @@ fn read(&self, addr: hwaddr, size: u32) -> u64 { use GlobalRegister::*; (match target { Timer(timer, tn_target) =3D> timer.borrow_mut().read(tn_target= ), - Global(CAP) =3D> self.capability.get(), /* including HPET_PERI= OD 0x004 */ - Global(CFG) =3D> self.config.get(), - Global(INT_STATUS) =3D> self.int_status.get(), + Global(CAP) =3D> self.regs.borrow().capability, /* including H= PET_PERIOD 0x004 */ + Global(CFG) =3D> self.regs.borrow().config, + Global(INT_STATUS) =3D> self.regs.borrow().int_status, Global(COUNTER) =3D> { let cur_tick =3D if self.is_hpet_enabled() { self.get_ticks() } else { - self.counter.get() + self.regs.borrow().counter }; =20 trace::trace_hpet_ram_read_reading_counter((addr & 4) as u= 8, cur_tick); @@ -852,7 +861,7 @@ fn write(&self, addr: hwaddr, value: u64, size: u32) { =20 fn pre_save(&self) -> Result<(), migration::Infallible> { if self.is_hpet_enabled() { - self.counter.set(self.get_ticks()); + self.regs.borrow_mut().counter =3D self.get_ticks(); } =20 /* @@ -867,15 +876,16 @@ fn pre_save(&self) -> Result<(), migration::Infallibl= e> { fn post_load(&self, _version_id: u8) -> Result<(), migration::Infallib= le> { for timer in self.timers.iter().take(self.num_timers) { let mut t =3D timer.borrow_mut(); + let cnt =3D t.get_state().regs.borrow().counter; =20 - t.cmp64 =3D t.calculate_cmp64(t.get_state().counter.get(), t.r= egs.cmp); + t.cmp64 =3D t.calculate_cmp64(cnt, t.regs.cmp); t.last =3D CLOCK_VIRTUAL.get_ns() - NANOSECONDS_PER_SECOND; } =20 // Recalculate the offset between the main counter and guest time if !self.hpet_offset_saved { self.hpet_offset - .set(ticks_to_ns(self.counter.get()) - CLOCK_VIRTUAL.get_n= s()); + .set(ticks_to_ns(self.regs.borrow().counter) - CLOCK_VIRTU= AL.get_ns()); } =20 Ok(()) @@ -966,6 +976,22 @@ impl ObjectImpl for HPETState { =20 const VALIDATE_TIMERS_NAME: &CStr =3D c"num_timers must match"; =20 +// In fact, version_id and minimum_version_id for HPETRegisters are +// unrelated to HPETState's version IDs. Does not affect compatibility. +impl_vmstate_struct!( + HPETRegisters, + VMStateDescriptionBuilder::::new() + .name(c"hpet/regs") + .version_id(1) + .minimum_version_id(1) + .fields(vmstate_fields! { + vmstate_of!(HPETRegisters, config), + vmstate_of!(HPETRegisters, int_status), + vmstate_of!(HPETRegisters, counter), + }) + .build() +); + const VMSTATE_HPET: VMStateDescription =3D VMStateDescriptionBuilder::::new() .name(c"hpet") @@ -974,9 +1000,7 @@ impl ObjectImpl for HPETState { .pre_save(&HPETState::pre_save) .post_load(&HPETState::post_load) .fields(vmstate_fields! { - vmstate_of!(HPETState, config), - vmstate_of!(HPETState, int_status), - vmstate_of!(HPETState, counter), + vmstate_of!(HPETState, regs), vmstate_of!(HPETState, num_timers_save), vmstate_validate!(HPETState, VALIDATE_TIMERS_NAME, HPETState::= validate_num_timers), vmstate_of!(HPETState, timers[0 .. num_timers_save], HPETState= ::validate_num_timers).with_version_id(0), --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827172; cv=none; d=zohomail.com; s=zohoarc; b=aRi54pA4s3+edRGZiLV/dxGtEXA0FkOnEdwGJ/2bvaNUukhHoQNbJsYjLxESh31JiygQcYrxZ7ZlpsvSvCIYnsqRnCbTQI9wQVhMP1IcrRIfozxNKv1eiDoF4MGEDmk2mvQOOvBUe7axoEjYEsY1s8sj1J43xt6gXNMevWpgQ/Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827172; 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=jkC95+QEJXnEvaNYkvGGuoEWgNXpEhyP0YGy73T68So=; b=f34ID+QfaYhXzPXXWuFgNXnTBi8z/yexLmqhTJiVaRr0XNGummFkfoVAX/XKDcnMSI1Imum2YkGP5NZYwwkawXj3t+wnIzN77vuvcG9/bMsyCswoNzEYzCzTYPzD0wWCpI1Iz/cjYrW4LC9iI6829iCD9abNrJBL0h02RCXoo6o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827172354762.5489222095176; Sat, 27 Dec 2025 01:19:32 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQRa-0007KF-4V; Sat, 27 Dec 2025 04:18:38 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRI-0006oB-Qe for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:22 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRG-0003gP-UD for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:20 -0500 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-496-SZ6Wppi9NKCQc6bkiuuIag-1; Sat, 27 Dec 2025 04:18:16 -0500 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-430fc83f58dso4347628f8f.2 for ; Sat, 27 Dec 2025 01:18:15 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa08efsm50446158f8f.29.2025.12.27.01.18.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:18:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827098; 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=jkC95+QEJXnEvaNYkvGGuoEWgNXpEhyP0YGy73T68So=; b=bp/WZAo5+QwNKcHYB7SptOtVRHhdyWyq9zJ8wR2pj5K1vG4NCiqFQ2E3NcnS5/I7FINV6H DZz38gX4umZ+PrpSTiko0jJ/T158203PYV/ASlyRKFvgKaWrFVF5x/UiTD0zXlJfo1j+lv EK6byUg0dovyUI/xDyceXfNIC/jCYmk= X-MC-Unique: SZ6Wppi9NKCQc6bkiuuIag-1 X-Mimecast-MFC-AGG-ID: SZ6Wppi9NKCQc6bkiuuIag_1766827095 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827094; x=1767431894; 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; bh=jkC95+QEJXnEvaNYkvGGuoEWgNXpEhyP0YGy73T68So=; b=rUp02qTZlUTnM1PRd8NbZ+BzewvCwqOy9mEiDKrO/sRKUi9WxIkuYUYgsfHKPC31bp bWShAqRaLgaiozTqADEWgmU8QtU5EeqsndEax5sIvgt7mYarnuHi3I9RbCFIRBMkP8Kv Co+7ZZVI31QCRjKLss+LyXq+/6UeyeeAlOYy1BiZksn/kvKgfgSMnMnotSkgritfvVR0 lHxKSRV9PfH5NC95RyvGdJj/KTyhGJswfVXc5Jeb0ZyM3tUDIchoGXXQsOo9ndT+n2Ta OLGfCZpetpt8Cf9L0E6hG9TMIMiAeaA1kxlmL58nG2lWcwKV7u3qbDJmPdxwmUPQFbZ3 4TUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827094; x=1767431894; 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; bh=jkC95+QEJXnEvaNYkvGGuoEWgNXpEhyP0YGy73T68So=; b=tqgPT8Kd4slhyjcwcYfdrRcpMdgg7lv5Hg45D0RSi8+TYUhYL/FGWPbWak9CJOan8f zw0RThzK48iRL1zALFor3vaZArB451nhw5owNi99nbYEwlLisWIockpdZDbu2O/ZX1I6 NyC6QIS0ZSVAuHpT+v4IDABRcQ1b1MBFZ5G2ycKtTWJTQ5NEc4lsGkYIdXaNpByCBlYz kPV7D1rUGR8cGeUVoaYmmTKwkaabJI3XOEYl1vNK3813yo8n+4SM8yO539NLSEZVaRHP KQgFgdtiELRKusQ5JDmocp2nfiifpzie32KQsNXZo5945Y31gEF+cHY+emt7r23gL0xA F9XA== X-Gm-Message-State: AOJu0YweetGgPnCji2nDbBLireuOsWwom5nB8ujdOujP0DcX6BpKbN8X yysV4Pn6wNxudHgc/pkpqOJ98dXlN0x39RWQhlxfZ1+PZ3ngOMfCe1VDiZ/PqnNrWJwxAhzmZ9a 8QgHWDT5yQkk5K/x6Rp+OOsGHaHzLpfWrs2JU/eHjAYIR3lYsdWUQ7EWzh46iy2uH6mT3WNYSQ+ XR87TJeJiTqojCcpCaBD2i23Bay9WprNFF95mE1sVJ X-Gm-Gg: AY/fxX4Rpn9PeYxW/CMSVPveNmw4HVl0+8TQFDT4X0gYs6ZO0DJv1uKVfRsKRC0ldhd Vl/3f3vrYH9UCcr67pIz1D2ByANZaftXqMxHzdZNIsRZfNVGk2WAsJIUH1iuUUJS2FYoroZv92F t+TjrnqPk958JzsUYc6sMDM14OMAQDjVlT6TAR8CCcW44togarnmDaZqVWeamTaFM9V/W5Wiiot nLGU3dueOxbIeDax/TSAJNfdcyNF3rscUA/Vtm/Akg72Hh7zXelwHAimkF5MoX90Xu2z8kVSsbG PCoyQTUi6Vld6Jd5njgaGsPFjMd8/LtyPnDZ32jRivbxnr2+DhVLJVi2r//9nnjHBc5FTwlkGNj +oatjmwhgQA0kwTCxvRteda3n/PCunxddyx/xl8E6bcI/W3yEomQE10hOxAoOq2lgqYghatwpsx BIG7fc06m9LGOiTrE= X-Received: by 2002:a05:6000:25c8:b0:430:fdc8:8be3 with SMTP id ffacd0b85a97d-4324e4f938fmr30133575f8f.29.1766827093796; Sat, 27 Dec 2025 01:18:13 -0800 (PST) X-Google-Smtp-Source: AGHT+IGzo3YNrl9fvsEexixfKvLP8kTB+O1gGU0JaiOoOOwBNUBxPnNeEofUdeB8W2QAZqdXXD2y3A== X-Received: by 2002:a05:6000:25c8:b0:430:fdc8:8be3 with SMTP id ffacd0b85a97d-4324e4f938fmr30133543f8f.29.1766827093273; Sat, 27 Dec 2025 01:18:13 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 057/153] rust/hpet: Make global register accessors as methods of HPETRegisters Date: Sat, 27 Dec 2025 10:14:44 +0100 Message-ID: <20251227091622.20725-58-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827173565158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Implement helper accessors as methods of HPETRegisters. Then HPETRegisters can be accessed without going through HPETState. In subsequent refactoring, coarser-grained BQL lock protection will be implemented. Specifically, BqlRefCell will be borrowed only once during MMIO accesses, and the scope of borrowed `regs` will be extended to cover the entire MMIO access. Consequently, repeated borrow() attempts within function calls will no longer be allowed. Therefore, refactor the accessors of HPETRegisters to bypass HPETState, which help to reduce borrow() in deep function calls. Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251113051937.4017675-14-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- rust/hw/timer/hpet/src/device.rs | 60 ++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 26 deletions(-) diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index bf9f4936718..da938f356e9 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -280,7 +280,10 @@ fn get_state(&self) -> &HPETState { } =20 fn is_int_active(&self) -> bool { - self.get_state().is_timer_int_active(self.index.into()) + self.get_state() + .regs + .borrow() + .is_timer_int_active(self.index.into()) } =20 /// calculate next value of the general counter that matches the @@ -299,7 +302,7 @@ fn calculate_cmp64(&self, cur_tick: u64, target: u64) -= > u64 { } =20 fn get_int_route(&self) -> usize { - if self.index <=3D 1 && self.get_state().is_legacy_mode() { + if self.index <=3D 1 && self.get_state().regs.borrow().is_legacy_m= ode() { // If LegacyReplacement Route bit is set, HPET specification r= equires // timer0 be routed to IRQ0 in NON-APIC or IRQ2 in the I/O API= C, // timer1 be routed to IRQ8 in NON-APIC or IRQ8 in the I/O API= C. @@ -326,7 +329,7 @@ fn get_int_route(&self) -> usize { fn set_irq(&self, set: bool) { let route =3D self.get_int_route(); =20 - if set && self.regs.is_int_enabled() && self.get_state().is_hpet_e= nabled() { + if set && self.regs.is_int_enabled() && self.get_state().regs.borr= ow().is_hpet_enabled() { if self.regs.is_fsb_route_enabled() { // SAFETY: // the parameters are valid. @@ -425,7 +428,7 @@ fn set_tn_cfg_reg(&mut self, shift: u32, len: u32, val:= u64) { self.period =3D u64::from(self.period as u32); // truncate! } =20 - if self.get_state().is_hpet_enabled() { + if self.get_state().regs.borrow().is_hpet_enabled() { self.set_timer(); } } @@ -456,7 +459,7 @@ fn set_tn_cmp_reg(&mut self, shift: u32, len: u32, val:= u64) { } =20 self.regs.clear_valset(); - if self.get_state().is_hpet_enabled() { + if self.get_state().regs.borrow().is_hpet_enabled() { self.set_timer(); } } @@ -540,6 +543,20 @@ pub struct HPETRegisters { counter: u64, } =20 +impl HPETRegisters { + fn is_legacy_mode(&self) -> bool { + self.config & (1 << HPET_CFG_LEG_RT_SHIFT) !=3D 0 + } + + fn is_hpet_enabled(&self) -> bool { + self.config & (1 << HPET_CFG_ENABLE_SHIFT) !=3D 0 + } + + fn is_timer_int_active(&self, index: usize) -> bool { + self.int_status & (1 << index) !=3D 0 + } +} + /// HPET Event Timer Block Abstraction #[repr(C)] #[derive(qom::Object, hwcore::Device)] @@ -587,18 +604,6 @@ const fn has_msi_flag(&self) -> bool { self.flags & (1 << HPET_FLAG_MSI_SUPPORT_SHIFT) !=3D 0 } =20 - fn is_legacy_mode(&self) -> bool { - self.regs.borrow().config & (1 << HPET_CFG_LEG_RT_SHIFT) !=3D 0 - } - - fn is_hpet_enabled(&self) -> bool { - self.regs.borrow().config & (1 << HPET_CFG_ENABLE_SHIFT) !=3D 0 - } - - fn is_timer_int_active(&self, index: usize) -> bool { - self.regs.borrow().int_status & (1 << index) !=3D 0 - } - fn get_ticks(&self) -> u64 { ns_to_ticks(CLOCK_VIRTUAL.get_ns() + self.hpet_offset.get()) } @@ -608,13 +613,14 @@ fn get_ns(&self, tick: u64) -> u64 { } =20 fn handle_legacy_irq(&self, irq: u32, level: u32) { + let regs =3D self.regs.borrow(); if irq =3D=3D HPET_LEGACY_PIT_INT { - if !self.is_legacy_mode() { + if !regs.is_legacy_mode() { self.irqs[0].set(level !=3D 0); } } else { self.rtc_irq_level.set(level); - if !self.is_legacy_mode() { + if !regs.is_legacy_mode() { self.irqs[RTC_ISA_IRQ].set(level !=3D 0); } } @@ -697,7 +703,8 @@ fn set_int_status_reg(&self, shift: u32, _len: u32, val= : u64) { =20 /// Main Counter Value Register fn set_counter_reg(&self, shift: u32, len: u32, val: u64) { - if self.is_hpet_enabled() { + let mut regs =3D self.regs.borrow_mut(); + if regs.is_hpet_enabled() { // HPET spec says that writes to this register should only be // done while the counter is halted. So this is an undefined // behavior. There's no need to forbid it, but when HPET is @@ -706,7 +713,6 @@ fn set_counter_reg(&self, shift: u32, len: u32, val: u6= 4) { // not be changed as well). trace::trace_hpet_ram_write_counter_write_while_enabled(); } - let mut regs =3D self.regs.borrow_mut(); regs.counter =3D regs.counter.deposit(shift, len, val); } =20 @@ -825,10 +831,11 @@ fn read(&self, addr: hwaddr, size: u32) -> u64 { Global(CFG) =3D> self.regs.borrow().config, Global(INT_STATUS) =3D> self.regs.borrow().int_status, Global(COUNTER) =3D> { - let cur_tick =3D if self.is_hpet_enabled() { + let regs =3D self.regs.borrow(); + let cur_tick =3D if regs.is_hpet_enabled() { self.get_ticks() } else { - self.regs.borrow().counter + regs.counter }; =20 trace::trace_hpet_ram_read_reading_counter((addr & 4) as u= 8, cur_tick); @@ -860,8 +867,9 @@ fn write(&self, addr: hwaddr, value: u64, size: u32) { } =20 fn pre_save(&self) -> Result<(), migration::Infallible> { - if self.is_hpet_enabled() { - self.regs.borrow_mut().counter =3D self.get_ticks(); + let mut regs =3D self.regs.borrow_mut(); + if regs.is_hpet_enabled() { + regs.counter =3D self.get_ticks(); } =20 /* @@ -896,7 +904,7 @@ fn is_rtc_irq_level_needed(&self) -> bool { } =20 fn is_offset_needed(&self) -> bool { - self.is_hpet_enabled() && self.hpet_offset_saved + self.regs.borrow().is_hpet_enabled() && self.hpet_offset_saved } =20 fn validate_num_timers(&self, _version_id: u8) -> bool { --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827511; cv=none; d=zohomail.com; s=zohoarc; b=j+T+O0ZpP28MuJJ9tfcrjNN7QidEmFzs34eSFQ0QkMGD9G8sLThBH2wN8yI7o+wvOReF9h5EtPVcDwN/YO/1MsuwVSzaUES/fn9iyIgPv9QtP7kMlb69q07qzwvlBQi07s9yQxyfoeUaWqnv8GnAkM5M3e7auMO7KXFCr8MxU+w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827511; 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=N/s+BcBJhXrQ1Hn7p2/Ew5sWlE3mbAppM59lkGTyxaY=; b=S+Lk4SpExdVHPS5HOSlbV3B+HoXVmggVBs2JT5klXqb3U02/fsnu0JTujyH2OQMdMGGvdo2WD2OJ2erOIpSN1xUh3tEPg/R0fkpvejXPPRsMwVIwAouzpLs6TK6uLnjJqd+ZYmwxGtfuwzds40KDLJbFY2B4NuSnAos8SqJH1hk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17668275118411017.0110890832653; Sat, 27 Dec 2025 01:25:11 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQRZ-0007E5-U7; Sat, 27 Dec 2025 04:18:37 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRK-0006rV-Nm for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:24 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRJ-0003gw-2D for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:22 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-124-OZdyd51_PsScrhVsDiv7OQ-1; Sat, 27 Dec 2025 04:18:18 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-477c49f273fso99541045e9.3 for ; Sat, 27 Dec 2025 01:18:18 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be3a49315sm203692265e9.2.2025.12.27.01.18.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:18:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827100; 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=N/s+BcBJhXrQ1Hn7p2/Ew5sWlE3mbAppM59lkGTyxaY=; b=GLemswEEpfNhllbZEyFcHBlIfE7nZaiCAXcyedaFYj+71964VADgFgzxty8prxoZMzeRf8 b3cUvv8cYuxuFHXE+5HhZSPsrJc/PPUK4JpXt1EPG07ZY6xchlTajkd5omNr9ng8Cu74wO MGtN1czX/hIfI1pZsdKFj805/F/qzqg= X-MC-Unique: OZdyd51_PsScrhVsDiv7OQ-1 X-Mimecast-MFC-AGG-ID: OZdyd51_PsScrhVsDiv7OQ_1766827097 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827096; x=1767431896; 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; bh=N/s+BcBJhXrQ1Hn7p2/Ew5sWlE3mbAppM59lkGTyxaY=; b=ob+zouEBtt4VkeO5FroZFqVWJ8xdmY8/8iEFexbs/Kk3JvB3J98F1kmLgnjZCXy3X9 N3gJMTYbYvyOQfVDaorPWMzGoTD0DvR0VZLE+U5JwVse3UZSlAIDurdWAaKZck5HqnRT gNS/fe9qVfsyZx84Cj0xF0U7tdf693TPgjDvpLKp7dm0DtIk7Qfk5mGlZ7dpoGJBdsp0 sdQf8xqQELlLqUevn4EDOMk4pch5WNsvFaDx2Xiv8TJhUnPYnZbbDKvcBRuFz85qDvRh f5fSWtXWsEGtMIld7axF2NVRmQ2mYsVhs3uNrbNsEp1mnXEI2PJtTGnIMx50KYJweajV HDFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827096; x=1767431896; 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; bh=N/s+BcBJhXrQ1Hn7p2/Ew5sWlE3mbAppM59lkGTyxaY=; b=o3NH8CWciYHllyWAPEvhnzUqgAGKT7iMt86AfCIog3rGoNPLAGdoYimh+AcMJ9kr1U RBV5xDK2Sl4o0JsGx7Lfzm5FxBim0Zie3RRDJCA9jxhCQvzkHJxHn1Mh0o8gWBp8qqAp dPtaSsCRws+LjUSqnXDSSUGZr32IW4ulwNslgKD/9PJJmPOubR2DeTW6uY9I7iPlNVpP PRAa48yKcIYAhlOisQoszQ/eN2q4ii7XYjSgiK2hiKyyhp5lDoffSFgqvPvAkelDQFXq 9KF5SsQmDuF2ixwQnJvIvbi5vGw9Lvyy7N9WYqFAo3zpf7cQg6Puza/Z4rHwNskF09et nCsg== X-Gm-Message-State: AOJu0Ywfa0+DpEBiOhW7hZ+KWuJvJfHGc12bxai0XPmA/B5CP/F1kQOT qjoBeEO8sN7dWYYpS6E7LCuv1uGN5z5qv7wiPBcFhyG2l2GthKXBwvtUYilKa0M5CAKS87o1azP IZZlIqJlSFBaea906imVkJjMRtzZk6KSud01UjMjAVrAPpS24y/YZo7q9h3llEX9V+u9Vv/n6C6 N5Zg7RZXzFAwh3IrrbqdWzBxsVoU6RTWM7rodxS47D X-Gm-Gg: AY/fxX523yQZ7T6KqwteM/c7GCwWzLNRgSkUSCmLwCjnLLIhDGxluxk89R7we62BsDL 8l5ItUeE2XyQ8TDxvakN4s8zbQaVoXS27TCY7tJUpWVt6wmwpxSwQd/AAcgh9Bway7REWozhWC1 7wNkq/kwpQ8mYpl/6vIEcwYjgwIoZuGxF8cCaphzQl7NIqgM8K0uROwt7qUs588LN99548EjyIb rDuBTdwWVaiXdGpfRgTSwkb/U+wnl73PwaGNklgBgvR6/WHNoYU9B16p2dLbUQgXuZGTLfhDB3N 8/e52jtDvXATS2PfdqOVAXn9yKnHXYwSCxRmvZp1shDJwoLrLY5Arwu8d87g0cFePQCLiqQmoT+ IloCyB9mPv2vk5SFXIIHcmN8Okbh8Unqwlp5B0m7rQCUDC4EZ7CupFRTHN9KWGPV2Lxfhaj37/J sqIKyjeJJOrUs8wH8= X-Received: by 2002:a05:600c:3e18:b0:46e:1fb7:a1b3 with SMTP id 5b1f17b1804b1-47d4e6fc0f1mr40400235e9.23.1766827096445; Sat, 27 Dec 2025 01:18:16 -0800 (PST) X-Google-Smtp-Source: AGHT+IHHjvIW48Vu01GRNP4RseiHgKFoIYr+urKP+RGe8ldUJn9pUUQlZKpFbnUZmyl6JjpaxXjk8w== X-Received: by 2002:a05:600c:3e18:b0:46e:1fb7:a1b3 with SMTP id 5b1f17b1804b1-47d4e6fc0f1mr40399965e9.23.1766827095961; Sat, 27 Dec 2025 01:18:15 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 058/153] rust/hpet: Borrow HPETState.regs once in HPETState::post_load() Date: Sat, 27 Dec 2025 10:14:45 +0100 Message-ID: <20251227091622.20725-59-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827512704158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Timers in post_load() access the same HPETState, which is the "self" HPETState. So there's no need to access HPETState from child HPETTimer again and again. Instead, just cache and borrow HPETState.regs at the beginning, and this could save some CPU cycles and reduce borrow() calls. It's safe, because post_load() is called with BQL protection, so that there's no other chance to modify the regs. Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251113051937.4017675-15-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- rust/hw/timer/hpet/src/device.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index da938f356e9..abbaebc405e 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -882,9 +882,11 @@ fn pre_save(&self) -> Result<(), migration::Infallible= > { } =20 fn post_load(&self, _version_id: u8) -> Result<(), migration::Infallib= le> { + let regs =3D self.regs.borrow(); + for timer in self.timers.iter().take(self.num_timers) { let mut t =3D timer.borrow_mut(); - let cnt =3D t.get_state().regs.borrow().counter; + let cnt =3D regs.counter; =20 t.cmp64 =3D t.calculate_cmp64(cnt, t.regs.cmp); t.last =3D CLOCK_VIRTUAL.get_ns() - NANOSECONDS_PER_SECOND; @@ -893,7 +895,7 @@ fn post_load(&self, _version_id: u8) -> Result<(), migr= ation::Infallible> { // Recalculate the offset between the main counter and guest time if !self.hpet_offset_saved { self.hpet_offset - .set(ticks_to_ns(self.regs.borrow().counter) - CLOCK_VIRTU= AL.get_ns()); + .set(ticks_to_ns(regs.counter) - CLOCK_VIRTUAL.get_ns()); } =20 Ok(()) --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827505; cv=none; d=zohomail.com; s=zohoarc; b=gdPptIKBo5oFxPWY3c9Lq9/4qYguMOh358dhL5gav/7qRCjPZY4GPCCOibSkWHheFoRe7bL6LMIU5Pq23UVwNtGPCg34VNemaPztfzr0Z/oJeTnDKHf+PXnKgN/JZ9/w1o1A7YJ/T2vvMkGLby7dQjMkYlf2Cuo+XNjH1q1ItBg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827505; 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=SIY+C6WBcDEaxjsneB4epVbDtpl9yBW5enqGVp+ga3s=; b=M5c1SVifuUEpM+KVTH3I5ZK13Ofl20+mhfrwwSOSA/SedX2InYYzjB0JJOYR5i/qhk/fjtoFWgSMbyb0yOwPdd2uARNTz6fsXqAv+uB61Ply8tU0LRR6aM9Cpc/gHOjvgyElVVPNhJTbGdnGMlqtY8BXV5vVzP7xcehxDSoiLsc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176682750597487.42366866255793; Sat, 27 Dec 2025 01:25:05 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQRb-0007Vu-Pl; Sat, 27 Dec 2025 04:18:39 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRM-0006vX-Ds for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:26 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRK-0003n2-QE for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:24 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-340-ePmPP8tNMe6Eozv1bvZpmA-1; Sat, 27 Dec 2025 04:18:21 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-4775f51ce36so74622825e9.1 for ; Sat, 27 Dec 2025 01:18:20 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d28a33adcsm130098485e9.18.2025.12.27.01.18.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:18:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827102; 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=SIY+C6WBcDEaxjsneB4epVbDtpl9yBW5enqGVp+ga3s=; b=EZQQvtRQVz4Ec7bJI8JqD955Xp3wKN/lYO/4GrHiFURv7OjOczak9FXsB/hvr0tznTVfC7 g5eNraEx3fkG9SJfWLk91aIxZVWwelf37Ic2y0rTSxSgCPwFBKuhRYxHCPFfK1IDvX/8Xl qYe9PSal6F/VqrI0ttVpikLSz/5K4T4= X-MC-Unique: ePmPP8tNMe6Eozv1bvZpmA-1 X-Mimecast-MFC-AGG-ID: ePmPP8tNMe6Eozv1bvZpmA_1766827100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827099; x=1767431899; 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; bh=SIY+C6WBcDEaxjsneB4epVbDtpl9yBW5enqGVp+ga3s=; b=NnWEZO78n34F822Ac2PRDf1q2tt5aCpvaORyjugODESv/7Bn2u+p7eIFtH7K7vow3Y dwfS7x5BSeAQlZAognJ3P1KAiZr2oPw9j3g+uxGcyo3zBPu1qxVvBo81x4jSRQ/bFP8T 4YOcyRTxvQoRwFXYPaobM9oXKny6UiuhE2ddxP5kvsyu8WE6rt5VgHwh4V7ITzSDS8/5 udrTkEMzmuGOqhB76bXz6W1PV3DXjYqc0mTLUgDiX+kY/gi9qLCOmh4z7JHOALvbQUIr wd1BD1XCEaFG5seuvCt7lpxYh9sBPJJR7fikGZkRwK4yRhODzRqzQs2l4NIEYjlKoJPm P7kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827099; x=1767431899; 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; bh=SIY+C6WBcDEaxjsneB4epVbDtpl9yBW5enqGVp+ga3s=; b=GNjYz9ZSzqPafjl3GmBC6uWYs9pLswK87Snq/zt5jHuS6/Woh5gEGNUvEP3dzDmfOK C4RhQWzaTNVik6MEy5nQCzPlhUUhjaDVyjcyiownokFLoM8K4ZQ5beVOo1L3n/NqRUI3 cf433BuMdcsWLtXf1qNkKNIhjORdoKm99BRCvJ8D5edOLveilpSnoonqkbIQFYVLwnpg J/6+ufitfyCPPh6T76aKju/u+IvFkSm7ljcemsis3Ur6gUowxbxvUIyrSVxkAzslDMZr F7xYErBkTMq98Bb3zRLXMy9rqd8MMr85Z2M93iHg+gZXUWTAlBmnb5mLmhmlH7+jNClO ywvA== X-Gm-Message-State: AOJu0YxSTLBvsihscQraA7EtU/AagXJ8XAKA95v5lYzg3oo80sGuiT19 AnL4Wmbn+T3QQV6nFb+2yD8bU46XlJ882hPnSK0LLNZiKx9p+RKeWaVxu2Zb6ZzQ16JF9UBjNkt N0JhFMjQRBPjGkV1Og8T7Gefb7mN6PSikw1BBkFaUQGtfutAkRblkSKAeSzSfn/rElcHfOaInQO EJPWSsRYxYIEL4jrpA4fA+00Q7b+Yw//4eIqkQPAnw X-Gm-Gg: AY/fxX6GZe45qiZDmbzmLrItAluwWktEqoM5gibIUVUhpUdbYlLM741TNh0ogGlEHYn NuVLopPUcsuPtTq8AkRiS2AcAPBvkjuWVHth/tRVlCNI2C3wpuuNdMnVUZuYNydNzMOiiq8OAoA t8ldycpAPPDOa/0cI+pUSBaExP82Pv133cnr5iYBRQi8NOEuiWgf87idU6VrwwONWWRFyTQozGU vk2/3rawxrlM9G9zVlSjKDmeRtuCY+ATH/StT+a5x8W0Zmz/Ted82ssAsCVnFZFiZ2NqqVUTTnK 5puuxBdcrE5vI4tG+raXlBaFauBDkoUrdcC+AoBWdL+uJF7yH8Yg/DLASJwC3VmqGRK0EsC4G1a jx8RP7029K5J/frBUcS7GXLWgs+vva7lDs8XGAGTnuwk20WPRTlHCwArmtErQ5ud4ODtYCegooa 3ypDHTt6CYvDEossk= X-Received: by 2002:a05:600c:5250:b0:479:3a86:dc1b with SMTP id 5b1f17b1804b1-47d36243a0bmr140761465e9.37.1766827098885; Sat, 27 Dec 2025 01:18:18 -0800 (PST) X-Google-Smtp-Source: AGHT+IHanS1ghInQAvwtDhSvYf6har0Q+vF093ZAOSRuiGuoI4W2lYsAuea+rJ1MYQvOuuOlvQiLPg== X-Received: by 2002:a05:600c:5250:b0:479:3a86:dc1b with SMTP id 5b1f17b1804b1-47d36243a0bmr140761265e9.37.1766827098479; Sat, 27 Dec 2025 01:18:18 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 059/153] rust/hpet: Explicitly initialize complex fields in init() Date: Sat, 27 Dec 2025 10:14:46 +0100 Message-ID: <20251227091622.20725-60-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827506926158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Explicitly initialize more fields which are complex structures. For simple types (bool/u32/usize), they can be omitted since C has already initialized memory to all zeros and this is the valid initialization for those simple types. Previously such complex fields (InterruptSource/BqlCell/BqlRefCell) were not explicitly initialized in init() and it's fine, because simply setting all memory to zero aligns with their default initialization behavior. However, this behavior is not robust. When adding new complex struct or modifying the initial values of existing structs, this default behavior can easily be broken. Thus, do explicit initialization for HPET to become a good example. Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251113051937.4017675-16-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- rust/hw/timer/hpet/src/device.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index abbaebc405e..d622a6920a8 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -733,6 +733,18 @@ unsafe fn init(mut this: ParentInit) { HPET_REG_SPACE_LEN, ); =20 + // Only consider members with more complex structures. C has alrea= dy + // initialized memory to all zeros - simple types (bool/u32/usize)= can + // rely on this without explicit initialization. + uninit_field_mut!(*this, regs).write(Default::default()); + uninit_field_mut!(*this, hpet_offset).write(Default::default()); + // Set null_mut for now and post_init() will fill it. + uninit_field_mut!(*this, irqs).write(Default::default()); + uninit_field_mut!(*this, rtc_irq_level).write(Default::default()); + uninit_field_mut!(*this, pit_enabled).write(Default::default()); + uninit_field_mut!(*this, num_timers_save).write(Default::default()= ); + uninit_field_mut!(*this, hpet_id).write(Default::default()); + Self::init_timers(&mut this); } =20 --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827495; cv=none; d=zohomail.com; s=zohoarc; b=dNY3rgWE4HoOuKdtUiLM6kTjhVu8VYspRk8DvFNE3WSZ+PT/aXy6qS99cKANLw6ZOMBSrDucLDxWBUvjQHymIV3D1dH2+K1uQkq17XTniDX2s7ajIblTQhX7b5c094TVlrCzlpkLaAoEDD+Rm4OHpn0xV093z5/sYNAr5O63Uac= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827495; 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=NisvLOvlFj34dGny5Nm7Ra+7kuex4jcPKLIx0SYwBt8=; b=GNaPOabHcCOv18rPH8yH1PxpeNmIIG3axkWuYN8T7238miWRvq3HqR/8q7Y4T9VsVsKcuEXEO+Rjs4sWy8ipPoJdtfe7XZpckbCASqEOeMTcABQHDjWhBeKTC8ItU90wMqeceiwvM2DQAJ6LbliO3A739Pe1DFh4qv9XCcyZcZ8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827495269879.0452885763493; Sat, 27 Dec 2025 01:24:55 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQRb-0007Qn-EJ; Sat, 27 Dec 2025 04:18:39 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRR-00071n-8V for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:29 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRO-0003tZ-R8 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:29 -0500 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-435-c-3PMj55NwCMyz69YvMtRA-1; Sat, 27 Dec 2025 04:18:24 -0500 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-42fdbba545fso4744487f8f.0 for ; Sat, 27 Dec 2025 01:18:23 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea2278dsm50621825f8f.18.2025.12.27.01.18.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:18:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827106; 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=NisvLOvlFj34dGny5Nm7Ra+7kuex4jcPKLIx0SYwBt8=; b=AomICaZtApSH7Z1iCr0KbsCWalZgXGWJ37bD4c43FBpcB38IslxFlsRCVIl9Oiewsu2Uzs xbckJbKCeW9qesuWE4+JYMgBsWGpdDVHkFMA6Juzk+IaTmBAtgse6UnvkmRvdThel6dn/I t+PlqUyjG4p1gqfM7cnRrpplYFvtwN0= X-MC-Unique: c-3PMj55NwCMyz69YvMtRA-1 X-Mimecast-MFC-AGG-ID: c-3PMj55NwCMyz69YvMtRA_1766827103 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827101; x=1767431901; 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; bh=NisvLOvlFj34dGny5Nm7Ra+7kuex4jcPKLIx0SYwBt8=; b=BNkG4+/NB6id1AZj9oEgII8zQH57+7CTzv4/OnY1xvfV6Jjp9VBKV9iSSuwPoXUYJi dqPwCTAXkEpWFYZzYrM62WCs3z8WbaIUlsa2FZ7UU8xdmtkoVtyPv76dnb2krd0DjN/5 cwAXOscsevsD6/95YECtCNLaFbvBY/iONhDFrjaQK2QIL4muWM1d8yVNeJnYIMA43rSP 43LPENTOm+Hwz9gV4mr5sR2CBL8GHWkVHpf2fs3RsoPCxR4rquILhMucboyQSq8AtaZ7 Sir5v6SqKOHEIeJg3O2TJzBTpc/vRVQbVCfaCafJf4TYdxVcVY/zWl98iytWQQAhWhDR mUyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827101; x=1767431901; 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; bh=NisvLOvlFj34dGny5Nm7Ra+7kuex4jcPKLIx0SYwBt8=; b=gbs3lwUhRweP0SwzQAS9pfICXLUZiNVaRak4UK5MG5Riynm9qAkTDML7QOlyVXzw5T kjwYy7bUV/60zC2vjbbv2PePVjVT55H6uTAZloL+rD2g8D+pTl3JrNhfdFlYMXiYIGs9 T5Y10iwKU8frS7qdcb0s6g4JZagbk+xjKFpOq6BvlgnMkwyKEPZXx6FXjX1rer7WNNxV a6Al3RoMryokvl7nUJuPsFgIAayrZUCJrIF/LcDR9VIm0UHbijRibdee7kX0smYj0LjX k0sp9UFtYKrGTdhkppdEnYBF0Ear6cNGb/JrdxpiMUEKWq3LD3OjFhYmAVliQRHtRi0/ i8eg== X-Gm-Message-State: AOJu0YzdQ+PQjgXqYFOyt80H0TxIeSL+JxWGY6TQ3uMvaIS7GuASBfpz y165H8cHnUWHc6FJIfthGP+g9Cxr0Jjd/DWHFqN/XtGmbRKjkvYcNGQiBP7xg8vN9oqFnY85LLp Q+ip6xKdp8wdBmVJfZt5vs16oYOGN9jJj7fjBTAGdAPNKPda6r/QiGdOlVr6RPV6lFJgnVIaTsa dqpcuoe/U7/1KF81R5sKdWFKaku/FJ1TIZDp3aUu+r X-Gm-Gg: AY/fxX4JKxQDdMflagkav4F3JiIAJz3vFzhO4BYB7OXClPy+jaIh26LsalfRFPPoF07 u/meabXszxTesnBt0/LnmILKIQ+MljdCv8Gkf9zO3Vd7sSnXG+l6WVJR5bvwbcqzdRc+ErxukMh ju/FumuJyS1hsRbqlzGjwpb1f98llhERBOwjitdHSlHBC1UnnA2L/pvpJMp1wrXw6lkpyRgFYfg 6HX3KO1qIlgsBlvuLW9EmBhTOlw7UwjcQzHqbCkPb5IA9/W6MID/eCur4cDweTmQpvCseZFK1F0 Ki98FpCajAjBk8JLIiB1KEZlqsps96XnAHg5BqeJmGdpA9YdgM98pEJzVPxVzpSJuJiwXOnKWSM 2EUhppSYuKyA85DpLJtNub++qiwXAlVqgn4EOSQ89+mQn2+K1pmVGpz/LINL2EvDM1REWrp267y pSKCvTIjqlExPodWA= X-Received: by 2002:a05:6000:2c12:b0:432:88be:27ae with SMTP id ffacd0b85a97d-43288be281fmr1364290f8f.23.1766827101168; Sat, 27 Dec 2025 01:18:21 -0800 (PST) X-Google-Smtp-Source: AGHT+IFZzFd0hE0HcQ2CUV0d17axRTaSOStMN0jGSAaofWYcOEYkqzML6h5QwqIkZDUSJZI8mWeDHw== X-Received: by 2002:a05:6000:2c12:b0:432:88be:27ae with SMTP id ffacd0b85a97d-43288be281fmr1364254f8f.23.1766827100565; Sat, 27 Dec 2025 01:18:20 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 060/153] rust/hpet: Pass &BqlRefCell as argument during MMIO access Date: Sat, 27 Dec 2025 10:14:47 +0100 Message-ID: <20251227091622.20725-61-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827496759158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Currently in HPETTimer context, the global registers are accessed by dereferring a HPETState raw pointer stored in NonNull<>, and then borrowing the BqlRefCel<>. This blocks borrowing HPETRegisters once during MMIO access, and furthermore prevents replacing BqlRefCell<> with Mutex<>. Therefore, do not access global registers through NonNull and instead passing &BqlRefCell as argument in function calls within MMIO access. But there's one special case that is timer handler, which still needs to access HPETRegistsers through NonNull. It's okay for now since this case doesn't have any repeated borrow() or lock reentrancy issues. Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251113051937.4017675-17-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- rust/hw/timer/hpet/src/device.rs | 161 +++++++++++++++++++------------ 1 file changed, 97 insertions(+), 64 deletions(-) diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index d622a6920a8..0e076a7f1d8 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -171,7 +171,10 @@ const fn deactivating_bit(old: u64, new: u64, shift: u= size) -> bool { } =20 fn timer_handler(timer_cell: &BqlRefCell) { - timer_cell.borrow_mut().callback() + let mut t =3D timer_cell.borrow_mut(); + // SFAETY: state field is valid after timer initialization. + let hpet_regs =3D &mut unsafe { t.state.as_mut() }.regs; + t.callback(hpet_regs) } =20 #[repr(C)] @@ -279,11 +282,8 @@ fn get_state(&self) -> &HPETState { unsafe { self.state.as_ref() } } =20 - fn is_int_active(&self) -> bool { - self.get_state() - .regs - .borrow() - .is_timer_int_active(self.index.into()) + fn is_int_active(&self, hpet_regs: &BqlRefCell) -> bool= { + hpet_regs.borrow().is_timer_int_active(self.index.into()) } =20 /// calculate next value of the general counter that matches the @@ -301,8 +301,8 @@ fn calculate_cmp64(&self, cur_tick: u64, target: u64) -= > u64 { } } =20 - fn get_int_route(&self) -> usize { - if self.index <=3D 1 && self.get_state().regs.borrow().is_legacy_m= ode() { + fn get_int_route(&self, regs: &HPETRegisters) -> usize { + if self.index <=3D 1 && regs.is_legacy_mode() { // If LegacyReplacement Route bit is set, HPET specification r= equires // timer0 be routed to IRQ0 in NON-APIC or IRQ2 in the I/O API= C, // timer1 be routed to IRQ8 in NON-APIC or IRQ8 in the I/O API= C. @@ -326,10 +326,10 @@ fn get_int_route(&self) -> usize { } } =20 - fn set_irq(&self, set: bool) { - let route =3D self.get_int_route(); + fn set_irq(&self, regs: &HPETRegisters, set: bool) { + let route =3D self.get_int_route(regs); =20 - if set && self.regs.is_int_enabled() && self.get_state().regs.borr= ow().is_hpet_enabled() { + if set && self.regs.is_int_enabled() && regs.is_hpet_enabled() { if self.regs.is_fsb_route_enabled() { // SAFETY: // the parameters are valid. @@ -352,13 +352,17 @@ fn set_irq(&self, set: bool) { } } =20 - fn update_irq(&self, set: bool) { + fn update_irq(&self, hpet_regs: &BqlRefCell, set: bool)= { + let mut regs =3D hpet_regs.borrow_mut(); // If Timer N Interrupt Enable bit is 0, "the timer will // still operate and generate appropriate status bits, but // will not cause an interrupt" - self.get_state() - .update_int_status(self.index.into(), set && self.regs.is_int_= level_triggered()); - self.set_irq(set); + regs.int_status =3D regs.int_status.deposit( + self.index.into(), + 1, + u64::from(set && self.regs.is_int_level_triggered()), + ); + self.set_irq(®s, set); } =20 fn arm_timer(&mut self, tick: u64) { @@ -390,22 +394,27 @@ fn set_timer(&mut self) { self.arm_timer(self.cmp64); } =20 - fn del_timer(&self) { + fn del_timer(&self, hpet_regs: &BqlRefCell) { // Just remove the timer from the timer_list without destroying // this timer instance. self.qemu_timer.delete(); =20 - if self.is_int_active() { + if self.is_int_active(hpet_regs) { // For level-triggered interrupt, this leaves interrupt status // register set but lowers irq. - self.update_irq(true); + self.update_irq(hpet_regs, true); } } =20 /// Configuration and Capability Register - fn set_tn_cfg_reg(&mut self, shift: u32, len: u32, val: u64) { + fn set_tn_cfg_reg( + &mut self, + hpet_regs: &BqlRefCell, + shift: u32, + len: u32, + val: u64, + ) { trace::trace_hpet_ram_write_tn_cfg((shift / 8).try_into().unwrap()= ); - let old_val: u64 =3D self.regs.config; let mut new_val: u64 =3D old_val.deposit(shift, len, val); new_val =3D hpet_fixup_reg(new_val, old_val, HPET_TN_CFG_WRITE_MAS= K); @@ -414,13 +423,15 @@ fn set_tn_cfg_reg(&mut self, shift: u32, len: u32, va= l: u64) { if deactivating_bit(old_val, new_val, HPET_TN_CFG_INT_TYPE_SHIFT) { // Do this before changing timer.regs.config; otherwise, if // HPET_TN_FSB is set, update_irq will not lower the qemu_irq. - self.update_irq(false); + self.update_irq(hpet_regs, false); } =20 self.regs.config =3D new_val; =20 - if activating_bit(old_val, new_val, HPET_TN_CFG_INT_ENABLE_SHIFT) = && self.is_int_active() { - self.update_irq(true); + if activating_bit(old_val, new_val, HPET_TN_CFG_INT_ENABLE_SHIFT) + && self.is_int_active(hpet_regs) + { + self.update_irq(hpet_regs, true); } =20 if self.regs.is_32bit_mod() { @@ -428,13 +439,19 @@ fn set_tn_cfg_reg(&mut self, shift: u32, len: u32, va= l: u64) { self.period =3D u64::from(self.period as u32); // truncate! } =20 - if self.get_state().regs.borrow().is_hpet_enabled() { + if hpet_regs.borrow().is_hpet_enabled() { self.set_timer(); } } =20 /// Comparator Value Register - fn set_tn_cmp_reg(&mut self, shift: u32, len: u32, val: u64) { + fn set_tn_cmp_reg( + &mut self, + hpet_regs: &BqlRefCell, + shift: u32, + len: u32, + val: u64, + ) { let mut length =3D len; let mut value =3D val; =20 @@ -459,18 +476,24 @@ fn set_tn_cmp_reg(&mut self, shift: u32, len: u32, va= l: u64) { } =20 self.regs.clear_valset(); - if self.get_state().regs.borrow().is_hpet_enabled() { + if hpet_regs.borrow().is_hpet_enabled() { self.set_timer(); } } =20 /// FSB Interrupt Route Register - fn set_tn_fsb_route_reg(&mut self, shift: u32, len: u32, val: u64) { + fn set_tn_fsb_route_reg( + &mut self, + _hpet_regs: &BqlRefCell, + shift: u32, + len: u32, + val: u64, + ) { self.regs.fsb =3D self.regs.fsb.deposit(shift, len, val); } =20 - fn reset(&mut self) { - self.del_timer(); + fn reset(&mut self, hpet_regs: &BqlRefCell) { + self.del_timer(hpet_regs); self.regs.cmp =3D u64::MAX; // Comparator Match Registers reset to= all 1's. self.regs.config =3D (1 << HPET_TN_CFG_PERIODIC_CAP_SHIFT) | (1 << HPET_TN_CFG_SIZE= _CAP_SHIFT); @@ -485,7 +508,7 @@ fn reset(&mut self) { } =20 /// timer expiration callback - fn callback(&mut self) { + fn callback(&mut self, hpet_regs: &BqlRefCell) { let period: u64 =3D self.period; let cur_tick: u64 =3D self.get_state().get_ticks(); =20 @@ -503,10 +526,10 @@ fn callback(&mut self) { self.wrap_flag =3D 0; self.arm_timer(self.cmp64); } - self.update_irq(true); + self.update_irq(hpet_regs, true); } =20 - const fn read(&self, target: TimerRegister) -> u64 { + const fn read(&self, target: TimerRegister, _hpet_regs: &BqlRefCell) -> u64 { use TimerRegister::*; match target { CFG =3D> self.regs.config, // including interrupt capabilities @@ -515,14 +538,21 @@ const fn read(&self, target: TimerRegister) -> u64 { } } =20 - fn write(&mut self, target: TimerRegister, value: u64, shift: u32, len= : u32) { + fn write( + &mut self, + target: TimerRegister, + hpet_regs: &BqlRefCell, + value: u64, + shift: u32, + len: u32, + ) { use TimerRegister::*; =20 trace::trace_hpet_ram_write_timer_id(self.index); match target { - CFG =3D> self.set_tn_cfg_reg(shift, len, value), - CMP =3D> self.set_tn_cmp_reg(shift, len, value), - ROUTE =3D> self.set_tn_fsb_route_reg(shift, len, value), + CFG =3D> self.set_tn_cfg_reg(hpet_regs, shift, len, value), + CMP =3D> self.set_tn_cmp_reg(hpet_regs, shift, len, value), + ROUTE =3D> self.set_tn_fsb_route_reg(hpet_regs, shift, len, va= lue), } } } @@ -641,38 +671,33 @@ fn init_timers(this: &mut MaybeUninit) { } } =20 - fn update_int_status(&self, index: u32, level: bool) { - let mut regs =3D self.regs.borrow_mut(); - regs.int_status =3D regs.int_status.deposit(index, 1, u64::from(le= vel)); - } - /// General Configuration Register - fn set_cfg_reg(&self, shift: u32, len: u32, val: u64) { - let old_val =3D self.regs.borrow().config; + fn set_cfg_reg(&self, regs: &BqlRefCell, shift: u32, le= n: u32, val: u64) { + let old_val =3D regs.borrow().config; let mut new_val =3D old_val.deposit(shift, len, val); =20 new_val =3D hpet_fixup_reg(new_val, old_val, HPET_CFG_WRITE_MASK); - self.regs.borrow_mut().config =3D new_val; + regs.borrow_mut().config =3D new_val; =20 if activating_bit(old_val, new_val, HPET_CFG_ENABLE_SHIFT) { // Enable main counter and interrupt generation. self.hpet_offset - .set(ticks_to_ns(self.regs.borrow().counter) - CLOCK_VIRTU= AL.get_ns()); + .set(ticks_to_ns(regs.borrow().counter) - CLOCK_VIRTUAL.ge= t_ns()); =20 for timer in self.timers.iter().take(self.num_timers) { let mut t =3D timer.borrow_mut(); =20 - if t.regs.is_int_enabled() && t.is_int_active() { - t.update_irq(true); + if t.regs.is_int_enabled() && t.is_int_active(regs) { + t.update_irq(regs, true); } t.set_timer(); } } else if deactivating_bit(old_val, new_val, HPET_CFG_ENABLE_SHIFT= ) { // Halt main counter and disable interrupt generation. - self.regs.borrow_mut().counter =3D self.get_ticks(); + regs.borrow_mut().counter =3D self.get_ticks(); =20 for timer in self.timers.iter().take(self.num_timers) { - timer.borrow().del_timer(); + timer.borrow().del_timer(regs); } } =20 @@ -690,20 +715,26 @@ fn set_cfg_reg(&self, shift: u32, len: u32, val: u64)= { } =20 /// General Interrupt Status Register: Read/Write Clear - fn set_int_status_reg(&self, shift: u32, _len: u32, val: u64) { + fn set_int_status_reg( + &self, + regs: &BqlRefCell, + shift: u32, + _len: u32, + val: u64, + ) { let new_val =3D val << shift; - let cleared =3D new_val & self.regs.borrow().int_status; + let cleared =3D new_val & regs.borrow().int_status; =20 for (index, timer) in self.timers.iter().take(self.num_timers).enu= merate() { if cleared & (1 << index) !=3D 0 { - timer.borrow().update_irq(false); + timer.borrow().update_irq(regs, false); } } } =20 /// Main Counter Value Register - fn set_counter_reg(&self, shift: u32, len: u32, val: u64) { - let mut regs =3D self.regs.borrow_mut(); + fn set_counter_reg(&self, regs: &BqlRefCell, shift: u32= , len: u32, val: u64) { + let mut regs =3D regs.borrow_mut(); if regs.is_hpet_enabled() { // HPET spec says that writes to this register should only be // done while the counter is halted. So this is an undefined @@ -782,7 +813,7 @@ fn realize(&self) -> util::Result<()> { =20 fn reset_hold(&self, _type: ResetType) { for timer in self.timers.iter().take(self.num_timers) { - timer.borrow_mut().reset(); + timer.borrow_mut().reset(&self.regs); } =20 // pit_enabled.set(true) will call irq handler and access regs @@ -834,16 +865,17 @@ fn read(&self, addr: hwaddr, size: u32) -> u64 { trace::trace_hpet_ram_read(addr); =20 let HPETAddrDecode { shift, target, .. } =3D self.decode(addr, siz= e); + let regs =3D &self.regs; =20 use DecodedRegister::*; use GlobalRegister::*; (match target { - Timer(timer, tn_target) =3D> timer.borrow_mut().read(tn_target= ), - Global(CAP) =3D> self.regs.borrow().capability, /* including H= PET_PERIOD 0x004 */ - Global(CFG) =3D> self.regs.borrow().config, - Global(INT_STATUS) =3D> self.regs.borrow().int_status, + Timer(timer, tn_target) =3D> timer.borrow_mut().read(tn_target= , regs), + Global(CAP) =3D> regs.borrow().capability, /* including HPET_P= ERIOD 0x004 */ + Global(CFG) =3D> regs.borrow().config, + Global(INT_STATUS) =3D> regs.borrow().int_status, Global(COUNTER) =3D> { - let regs =3D self.regs.borrow(); + let regs =3D regs.borrow(); let cur_tick =3D if regs.is_hpet_enabled() { self.get_ticks() } else { @@ -863,17 +895,18 @@ fn read(&self, addr: hwaddr, size: u32) -> u64 { =20 fn write(&self, addr: hwaddr, value: u64, size: u32) { let HPETAddrDecode { shift, len, target } =3D self.decode(addr, si= ze); + let regs =3D &self.regs; =20 trace::trace_hpet_ram_write(addr, value); =20 use DecodedRegister::*; use GlobalRegister::*; match target { - Timer(timer, tn_target) =3D> timer.borrow_mut().write(tn_targe= t, value, shift, len), + Timer(timer, tn_target) =3D> timer.borrow_mut().write(tn_targe= t, regs, value, shift, len), Global(CAP) =3D> {} // General Capabilities and ID Register: R= ead Only - Global(CFG) =3D> self.set_cfg_reg(shift, len, value), - Global(INT_STATUS) =3D> self.set_int_status_reg(shift, len, va= lue), - Global(COUNTER) =3D> self.set_counter_reg(shift, len, value), + Global(CFG) =3D> self.set_cfg_reg(regs, shift, len, value), + Global(INT_STATUS) =3D> self.set_int_status_reg(regs, shift, l= en, value), + Global(COUNTER) =3D> self.set_counter_reg(regs, shift, len, va= lue), Unknown(_) =3D> trace::trace_hpet_ram_write_invalid(), } } --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827147; cv=none; d=zohomail.com; s=zohoarc; b=hR8HBzP86hM1jY9l1eicPmvOU1B1mAf4bGEH3teGkSDqawbMV5ZYER8eQ3HhHC9gV7h0vn2VeeYQ/MoKxeylvPCdNEcXOD3HWz8SyWtu2BVUYuhy7R6LCwi+84HTJVTtIwWgWTOd12YBKsD0ldyQu3G3BihAvrH4KjKolbXgrNw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827147; 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=1Uq86M4XvjQn415+OGKJuuGSPMQ2/3Qzq3ETHRXpqV0=; b=WIJm6w6HXIj5F1EP10l224J95ObXBJtlset6GMPzkiojBOgFO0PNU1y/0KquDK/pje+SZ84BnAokXpRzR+IK40qsbpztT4MY8Ipdtfv1a0tUYG2ku94f3AD0NPj4sIL2NZGIXZ2drYcr0gO8QL5LvN9LG2q/VmQEDRQHNfeQsIE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827147003304.620544433594; Sat, 27 Dec 2025 01:19:07 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQRf-0007xC-Hj; Sat, 27 Dec 2025 04:18:45 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRR-00071l-4p for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:29 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRO-0003tb-Rw for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:28 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-490-iQK6Cn2vPpOYGgkyUK6Itw-1; Sat, 27 Dec 2025 04:18:24 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-47d40e8a588so11256205e9.3 for ; Sat, 27 Dec 2025 01:18:24 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d193d4f09sm442684595e9.12.2025.12.27.01.18.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:18:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827106; 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=1Uq86M4XvjQn415+OGKJuuGSPMQ2/3Qzq3ETHRXpqV0=; b=QoKifPe3YagwPMrqBXVTQnNqWIy60kKqeuefMqIML9RVvgo16F+wGoxOnwyAeSYHaDZlIr 1+n924TkhDqsCvk6RvwzE9e6CS4QHDeWyvulOIdCerH4kTr4iI4yoLgz0XKhdQrmgZhZ28 ioHFG/K2SU6XMLaSuVQ5zbVYpHoRTwQ= X-MC-Unique: iQK6Cn2vPpOYGgkyUK6Itw-1 X-Mimecast-MFC-AGG-ID: iQK6Cn2vPpOYGgkyUK6Itw_1766827103 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827102; x=1767431902; 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; bh=1Uq86M4XvjQn415+OGKJuuGSPMQ2/3Qzq3ETHRXpqV0=; b=GYGfirU7wPBvIr3qvUzhro2bXwgWwP7m09VeywSrsOqbvHoKJk3mFY5FK43SSt2SjU eeT/NIi08RgbiVHPcmowWVAxVLkh4uG2zIzaqnMQnE0RarRG4wu7h+fJsMPSKvmzPX4s o8Z/Y8MJKJqfgBTiFHS1HNGYygUmwiiluIic7HRIQ8Ya1epJkBXPhAEHYLubVuysPD0O lXwB7PDC44pwAAmyq+RmgqPmxb5pAtpvtpy672JT8BB+j4CkLi5YTKEDGtfpK0861xqM WHVUkvXA8z8ppcTxG7teC/lZhgFMvfJt2yl1jTQSrk1bA7SryhwyFpfzwWOaTMbuPFVf a0VA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827102; x=1767431902; 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; bh=1Uq86M4XvjQn415+OGKJuuGSPMQ2/3Qzq3ETHRXpqV0=; b=Sbzn8CA07Yq8NSb4yiij0CgvbN87COVISUfE2uElpxKNEdjomEmUw7Yq1txm8CABeg g4eb7OpfzBPWw8kUhL750S83YrVvejXEdeaVpi8eGslkZFDBpgnNwzhthNu35RzgQL1m fNFKM6r3xJ7WUq+hGBly5WryyJXoydne67J/GgPuZwHRNmK7s3y4YX95BUkPcOUgSjrD YPMvyOcAmSa4Lt15qyxvhHRdhb3ljU8qgDF9Cty9SIMWObYm/MMhmTn51p3IbWeNyMh/ mTbClxm5sfulILpLUyvw57oGD+JD7bhqfoHTpxVn8vTs+TXY/PbvSxZuBygk0m1pvj3H vNbQ== X-Gm-Message-State: AOJu0YyHOT+lioVzK/39kuZArC5icD4+1xZ+mUwHSW1cPYyGxUjnMwNZ XJlc/161FxVdcqjptuK1q7p4ffxVz43OG3QAlrX8YRxWiU4ZFkFSVrmTuA3TyGqACH+lMW3OxU7 trW7B5i63LYvfLBIVBMftrvRLPo+7n7o3ZxYNDt/3LYkreY2cwYldkNgdCarK7CBPg22AD2iGAb ynK70HhUtsASujFZxhp0olXQZip5lnH8GgMMp5E4g7 X-Gm-Gg: AY/fxX78E6HypHv9y7YXRcJC5hktfL7O9g0Wwubb7AeEt9/p3hx6JuLpf+kK7DeK8Md CC6EPIGA+SWEs85OqjdI/zOdNTvxfdVyIPsEFa3X5L9snXSNDx59kWc0Lc06puHsyTn5tpJemR+ cfNRX6zVBBcoPLrgVVVMGFeAGe64DGAUftoJtIvG2GWLOLyia4qTFqSN1FWJ5kLDwv0CjlADzfk 75IXIoZgAKZXVsL2TDlxNQqNz93+D2rtdns3Ul2+QsaL1LxOi8mP68NMj2sD4OXU/NbUe0ZkgYR lIcso/A7o3O6dLu0A+fc/c7yijjkT248B0BljGTgda54/ZuQbyoPvqcDBfsG/20FgiyD1q7Ntpv 1d32ZyWxacuOncPLgoqES3A2fzTHdF6iivtqL8uC2vlKZO7j/G6gXZb1NrFtoknN6bZpxzDy0p+ PzTsU3/v75xzmB2Q4= X-Received: by 2002:a05:600c:1d0b:b0:479:2a0b:180d with SMTP id 5b1f17b1804b1-47d1954a5f7mr273164285e9.11.1766827102452; Sat, 27 Dec 2025 01:18:22 -0800 (PST) X-Google-Smtp-Source: AGHT+IHivJ8xaNlju7I0KZ5kVb6YandZ626sG0lgpCoPcmyYnMz0ayyBeGkWM9fUpLkr83TSKOCp3Q== X-Received: by 2002:a05:600c:1d0b:b0:479:2a0b:180d with SMTP id 5b1f17b1804b1-47d1954a5f7mr273163955e9.11.1766827101878; Sat, 27 Dec 2025 01:18:21 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 061/153] rust/hpet: Maintain HPETTimerRegisters in HPETRegisters Date: Sat, 27 Dec 2025 10:14:48 +0100 Message-ID: <20251227091622.20725-62-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827147550158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Lockless IO requires holding a single lock during MMIO access, so that it's necessary to maintain timer N's registers (HPETTimerRegisters) with global register in one place. Therefore, move HPETTimerRegisters to HPETRegisters from HPETTimer, and access timer registers from HPETRegisters struct for the whole HPET code. This changes HPETTimer and HPETRegisters, and the layout of VMState has changed, which makes it incompatible to migrate with previous versions. Thus, bump up the version IDs in VMStates of HPETState and HPETTimer. The VMState version IDs of HPETRegisters doesn't need to change since it's a newly added struct and its version IDs doesn't affect the compatibility of HPETState's VMState. Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251113051937.4017675-18-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- rust/hw/timer/hpet/src/device.rs | 163 ++++++++++++++++++------------- 1 file changed, 96 insertions(+), 67 deletions(-) diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index 0e076a7f1d8..f9cdced5406 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -235,7 +235,6 @@ pub struct HPETTimer { /// timer block abstraction containing this timer state: NonNull, =20 - regs: HPETTimerRegisters, // Hidden register state /// comparator (extended to counter width) cmp64: u64, @@ -260,7 +259,6 @@ fn new(index: u8, state: *const HPETState) -> HPETTimer= { // is initialized below. qemu_timer: unsafe { Timer::new() }, state: NonNull::new(state.cast_mut()).unwrap(), - regs: Default::default(), cmp64: 0, period: 0, wrap_flag: 0, @@ -289,8 +287,14 @@ fn is_int_active(&self, hpet_regs: &BqlRefCell) -> bool { /// calculate next value of the general counter that matches the /// target (either entirely, or the low 32-bit only depending on /// the timer mode). - fn calculate_cmp64(&self, cur_tick: u64, target: u64) -> u64 { - if self.regs.is_32bit_mod() { + fn calculate_cmp64( + &self, + hpet_regs: &BqlRefCell, + cur_tick: u64, + target: u64, + ) -> u64 { + let tn_regs =3D &hpet_regs.borrow().tn_regs[self.index as usize]; + if tn_regs.is_32bit_mod() { let mut result: u64 =3D cur_tick.deposit(0, 32, target); if result < cur_tick { result +=3D 0x100000000; @@ -322,32 +326,33 @@ fn get_int_route(&self, regs: &HPETRegisters) -> usiz= e { // ... // If the LegacyReplacement Route bit is not set, the individu= al // routing bits for each of the timers are used. - self.regs.get_individual_route() + regs.tn_regs[self.index as usize].get_individual_route() } } =20 fn set_irq(&self, regs: &HPETRegisters, set: bool) { + let tn_regs =3D ®s.tn_regs[self.index as usize]; let route =3D self.get_int_route(regs); =20 - if set && self.regs.is_int_enabled() && regs.is_hpet_enabled() { - if self.regs.is_fsb_route_enabled() { + if set && tn_regs.is_int_enabled() && regs.is_hpet_enabled() { + if tn_regs.is_fsb_route_enabled() { // SAFETY: // the parameters are valid. unsafe { address_space_stl_le( addr_of_mut!(address_space_memory), - self.regs.fsb >> 32, // Timer N FSB int addr - self.regs.fsb as u32, // Timer N FSB int value, tr= uncate! + tn_regs.fsb >> 32, // Timer N FSB int addr + tn_regs.fsb as u32, // Timer N FSB int value, trun= cate! MEMTXATTRS_UNSPECIFIED, null_mut(), ); } - } else if self.regs.is_int_level_triggered() { + } else if tn_regs.is_int_level_triggered() { self.get_state().irqs[route].raise(); } else { self.get_state().irqs[route].pulse(); } - } else if !self.regs.is_fsb_route_enabled() { + } else if !tn_regs.is_fsb_route_enabled() { self.get_state().irqs[route].lower(); } } @@ -360,16 +365,17 @@ fn update_irq(&self, hpet_regs: &BqlRefCell, set: bool) { regs.int_status =3D regs.int_status.deposit( self.index.into(), 1, - u64::from(set && self.regs.is_int_level_triggered()), + u64::from(set && regs.tn_regs[self.index as usize].is_int_leve= l_triggered()), ); self.set_irq(®s, set); } =20 - fn arm_timer(&mut self, tick: u64) { + fn arm_timer(&mut self, hpet_regs: &BqlRefCell, tick: u= 64) { + let tn_regs =3D &hpet_regs.borrow().tn_regs[self.index as usize]; let mut ns =3D self.get_state().get_ns(tick); =20 // Clamp period to reasonable min value (1 us) - if self.regs.is_periodic() && ns - self.last < 1000 { + if tn_regs.is_periodic() && ns - self.last < 1000 { ns =3D self.last + 1000; } =20 @@ -377,21 +383,22 @@ fn arm_timer(&mut self, tick: u64) { self.qemu_timer.modify(self.last); } =20 - fn set_timer(&mut self) { + fn set_timer(&mut self, hpet_regs: &BqlRefCell) { + let tn_regs =3D &hpet_regs.borrow().tn_regs[self.index as usize]; let cur_tick: u64 =3D self.get_state().get_ticks(); =20 self.wrap_flag =3D 0; - self.cmp64 =3D self.calculate_cmp64(cur_tick, self.regs.cmp); - if self.regs.is_32bit_mod() { + self.cmp64 =3D self.calculate_cmp64(hpet_regs, cur_tick, tn_regs.c= mp); + if tn_regs.is_32bit_mod() { // HPET spec says in one-shot 32-bit mode, generate an interru= pt when // counter wraps in addition to an interrupt with comparator m= atch. - if !self.regs.is_periodic() && self.cmp64 > hpet_next_wrap(cur= _tick) { + if !tn_regs.is_periodic() && self.cmp64 > hpet_next_wrap(cur_t= ick) { self.wrap_flag =3D 1; - self.arm_timer(hpet_next_wrap(cur_tick)); + self.arm_timer(hpet_regs, hpet_next_wrap(cur_tick)); return; } } - self.arm_timer(self.cmp64); + self.arm_timer(hpet_regs, self.cmp64); } =20 fn del_timer(&self, hpet_regs: &BqlRefCell) { @@ -406,16 +413,16 @@ fn del_timer(&self, hpet_regs: &BqlRefCell) { } } =20 - /// Configuration and Capability Register - fn set_tn_cfg_reg( - &mut self, + fn prepare_tn_cfg_reg_new( + &self, hpet_regs: &BqlRefCell, shift: u32, len: u32, val: u64, - ) { + ) -> (u64, u64) { trace::trace_hpet_ram_write_tn_cfg((shift / 8).try_into().unwrap()= ); - let old_val: u64 =3D self.regs.config; + let tn_regs =3D &hpet_regs.borrow().tn_regs[self.index as usize]; + let old_val: u64 =3D tn_regs.config; let mut new_val: u64 =3D old_val.deposit(shift, len, val); new_val =3D hpet_fixup_reg(new_val, old_val, HPET_TN_CFG_WRITE_MAS= K); =20 @@ -426,7 +433,21 @@ fn set_tn_cfg_reg( self.update_irq(hpet_regs, false); } =20 - self.regs.config =3D new_val; + (new_val, old_val) + } + + /// Configuration and Capability Register + fn set_tn_cfg_reg( + &mut self, + hpet_regs: &BqlRefCell, + shift: u32, + len: u32, + val: u64, + ) { + // Factor out a prepare_tn_cfg_reg_new() to better handle immutabl= e scope. + let (new_val, old_val) =3D self.prepare_tn_cfg_reg_new(hpet_regs, = shift, len, val); + let tn_regs =3D &mut hpet_regs.borrow_mut().tn_regs[self.index as = usize]; + tn_regs.config =3D new_val; =20 if activating_bit(old_val, new_val, HPET_TN_CFG_INT_ENABLE_SHIFT) && self.is_int_active(hpet_regs) @@ -434,13 +455,13 @@ fn set_tn_cfg_reg( self.update_irq(hpet_regs, true); } =20 - if self.regs.is_32bit_mod() { - self.regs.cmp =3D u64::from(self.regs.cmp as u32); // truncate! + if tn_regs.is_32bit_mod() { + tn_regs.cmp =3D u64::from(tn_regs.cmp as u32); // truncate! self.period =3D u64::from(self.period as u32); // truncate! } =20 if hpet_regs.borrow().is_hpet_enabled() { - self.set_timer(); + self.set_timer(hpet_regs); } } =20 @@ -452,10 +473,11 @@ fn set_tn_cmp_reg( len: u32, val: u64, ) { + let tn_regs =3D &mut hpet_regs.borrow_mut().tn_regs[self.index as = usize]; let mut length =3D len; let mut value =3D val; =20 - if self.regs.is_32bit_mod() { + if tn_regs.is_32bit_mod() { // High 32-bits are zero, leave them untouched. if shift !=3D 0 { trace::trace_hpet_ram_write_invalid_tn_cmp(); @@ -467,41 +489,43 @@ fn set_tn_cmp_reg( =20 trace::trace_hpet_ram_write_tn_cmp((shift / 8).try_into().unwrap()= ); =20 - if !self.regs.is_periodic() || self.regs.is_valset_enabled() { - self.regs.cmp =3D self.regs.cmp.deposit(shift, length, value); + if !tn_regs.is_periodic() || tn_regs.is_valset_enabled() { + tn_regs.cmp =3D tn_regs.cmp.deposit(shift, length, value); } =20 - if self.regs.is_periodic() { + if tn_regs.is_periodic() { self.period =3D self.period.deposit(shift, length, value); } =20 - self.regs.clear_valset(); + tn_regs.clear_valset(); if hpet_regs.borrow().is_hpet_enabled() { - self.set_timer(); + self.set_timer(hpet_regs); } } =20 /// FSB Interrupt Route Register fn set_tn_fsb_route_reg( - &mut self, - _hpet_regs: &BqlRefCell, + &self, + hpet_regs: &BqlRefCell, shift: u32, len: u32, val: u64, ) { - self.regs.fsb =3D self.regs.fsb.deposit(shift, len, val); + let tn_regs =3D &mut hpet_regs.borrow_mut().tn_regs[self.index as = usize]; + tn_regs.fsb =3D tn_regs.fsb.deposit(shift, len, val); } =20 fn reset(&mut self, hpet_regs: &BqlRefCell) { self.del_timer(hpet_regs); - self.regs.cmp =3D u64::MAX; // Comparator Match Registers reset to= all 1's. - self.regs.config =3D - (1 << HPET_TN_CFG_PERIODIC_CAP_SHIFT) | (1 << HPET_TN_CFG_SIZE= _CAP_SHIFT); + + let tn_regs =3D &mut hpet_regs.borrow_mut().tn_regs[self.index as = usize]; + tn_regs.cmp =3D u64::MAX; // Comparator Match Registers reset to a= ll 1's. + tn_regs.config =3D (1 << HPET_TN_CFG_PERIODIC_CAP_SHIFT) | (1 << H= PET_TN_CFG_SIZE_CAP_SHIFT); if self.get_state().has_msi_flag() { - self.regs.config |=3D 1 << HPET_TN_CFG_FSB_CAP_SHIFT; + tn_regs.config |=3D 1 << HPET_TN_CFG_FSB_CAP_SHIFT; } // advertise availability of ioapic int - self.regs.config |=3D + tn_regs.config |=3D (u64::from(self.get_state().int_route_cap)) << HPET_TN_CFG_INT= _ROUTE_CAP_SHIFT; self.period =3D 0; self.wrap_flag =3D 0; @@ -509,32 +533,35 @@ fn reset(&mut self, hpet_regs: &BqlRefCell) { =20 /// timer expiration callback fn callback(&mut self, hpet_regs: &BqlRefCell) { + let tn_regs =3D &mut hpet_regs.borrow_mut().tn_regs[self.index as = usize]; let period: u64 =3D self.period; let cur_tick: u64 =3D self.get_state().get_ticks(); =20 - if self.regs.is_periodic() && period !=3D 0 { + if tn_regs.is_periodic() && period !=3D 0 { while hpet_time_after(cur_tick, self.cmp64) { self.cmp64 +=3D period; } - if self.regs.is_32bit_mod() { - self.regs.cmp =3D u64::from(self.cmp64 as u32); // truncat= e! + if tn_regs.is_32bit_mod() { + tn_regs.cmp =3D u64::from(self.cmp64 as u32); // truncate! } else { - self.regs.cmp =3D self.cmp64; + tn_regs.cmp =3D self.cmp64; } - self.arm_timer(self.cmp64); + self.arm_timer(hpet_regs, self.cmp64); } else if self.wrap_flag !=3D 0 { self.wrap_flag =3D 0; - self.arm_timer(self.cmp64); + self.arm_timer(hpet_regs, self.cmp64); } self.update_irq(hpet_regs, true); } =20 - const fn read(&self, target: TimerRegister, _hpet_regs: &BqlRefCell) -> u64 { + fn read(&self, target: TimerRegister, hpet_regs: &BqlRefCell) -> u64 { + let tn_regs =3D &hpet_regs.borrow().tn_regs[self.index as usize]; + use TimerRegister::*; match target { - CFG =3D> self.regs.config, // including interrupt capabilities - CMP =3D> self.regs.cmp, // comparator register - ROUTE =3D> self.regs.fsb, + CFG =3D> tn_regs.config, // including interrupt capabilities + CMP =3D> tn_regs.cmp, // comparator register + ROUTE =3D> tn_regs.fsb, } } =20 @@ -571,6 +598,9 @@ pub struct HPETRegisters { /// Main Counter Value Register #[doc(alias =3D "hpet_counter")] counter: u64, + + /// HPET Timer N Registers + tn_regs: [HPETTimerRegisters; HPET_MAX_TIMERS], } =20 impl HPETRegisters { @@ -686,11 +716,13 @@ fn set_cfg_reg(&self, regs: &BqlRefCell, shift: u32, len: u32, va =20 for timer in self.timers.iter().take(self.num_timers) { let mut t =3D timer.borrow_mut(); + let id =3D t.index as usize; + let tn_regs =3D ®s.borrow().tn_regs[id]; =20 - if t.regs.is_int_enabled() && t.is_int_active(regs) { + if tn_regs.is_int_enabled() && t.is_int_active(regs) { t.update_irq(regs, true); } - t.set_timer(); + t.set_timer(regs); } } else if deactivating_bit(old_val, new_val, HPET_CFG_ENABLE_SHIFT= ) { // Halt main counter and disable interrupt generation. @@ -932,8 +964,9 @@ fn post_load(&self, _version_id: u8) -> Result<(), migr= ation::Infallible> { for timer in self.timers.iter().take(self.num_timers) { let mut t =3D timer.borrow_mut(); let cnt =3D regs.counter; + let cmp =3D regs.tn_regs[t.index as usize].cmp; =20 - t.cmp64 =3D t.calculate_cmp64(cnt, t.regs.cmp); + t.cmp64 =3D t.calculate_cmp64(&self.regs, cnt, cmp); t.last =3D CLOCK_VIRTUAL.get_ns() - NANOSECONDS_PER_SECOND; } =20 @@ -997,8 +1030,6 @@ impl ObjectImpl for HPETState { }) .build(); =20 -// In fact, version_id and minimum_version_id for HPETTimerRegisters are -// unrelated to HPETTimer's version IDs. Does not affect compatibility. impl_vmstate_struct!( HPETTimerRegisters, VMStateDescriptionBuilder::::new() @@ -1016,11 +1047,10 @@ impl ObjectImpl for HPETState { const VMSTATE_HPET_TIMER: VMStateDescription =3D VMStateDescriptionBuilder::::new() .name(c"hpet_timer") - .version_id(1) - .minimum_version_id(1) + .version_id(2) + .minimum_version_id(2) .fields(vmstate_fields! { vmstate_of!(HPETTimer, index), - vmstate_of!(HPETTimer, regs), vmstate_of!(HPETTimer, period), vmstate_of!(HPETTimer, wrap_flag), vmstate_of!(HPETTimer, qemu_timer), @@ -1031,18 +1061,17 @@ impl ObjectImpl for HPETState { =20 const VALIDATE_TIMERS_NAME: &CStr =3D c"num_timers must match"; =20 -// In fact, version_id and minimum_version_id for HPETRegisters are -// unrelated to HPETState's version IDs. Does not affect compatibility. impl_vmstate_struct!( HPETRegisters, VMStateDescriptionBuilder::::new() .name(c"hpet/regs") - .version_id(1) - .minimum_version_id(1) + .version_id(2) + .minimum_version_id(2) .fields(vmstate_fields! { vmstate_of!(HPETRegisters, config), vmstate_of!(HPETRegisters, int_status), vmstate_of!(HPETRegisters, counter), + vmstate_of!(HPETRegisters, tn_regs), }) .build() ); @@ -1050,8 +1079,8 @@ impl ObjectImpl for HPETState { const VMSTATE_HPET: VMStateDescription =3D VMStateDescriptionBuilder::::new() .name(c"hpet") - .version_id(2) - .minimum_version_id(2) + .version_id(3) + .minimum_version_id(3) .pre_save(&HPETState::pre_save) .post_load(&HPETState::post_load) .fields(vmstate_fields! { --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827277; cv=none; d=zohomail.com; s=zohoarc; b=OBQSqbpEROuCzhQF41T09Nwm84/H3AruD3YLrTOakpA6STKxK1gPMLxHlFPeBdKt6q1ts9a8awx1qjj31UOpbrCEWcU1N4cLvMXVEYkzp84jBR+kuak//T20r3wKitsS68DphlqfqqmXn5wJ2qrrH8Z7vh9TQACQA0vFvrnT1B8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827277; 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=y+It6rXPbyRMS2BhIGgbQHCMr6/9Ea6F9PiZBE4rSII=; b=SotIB8tztThRPULwsF8+b98MP2vo+Up3fZd0ALpGLPON/W6uyqD4LsSzYX8A/7aZTq2bLOT82uDy6o3aEKRJITScCz0KDXtf8SJc3n1uICi7jpFMDtU4ugMIDZtHOXydPoRaOaAEEK/RzPLbECSQXvE1MoaCIASMbvyiy6X1Kgo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827277622860.559662809046; Sat, 27 Dec 2025 01:21:17 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQRe-0007hA-Gc; Sat, 27 Dec 2025 04:18:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRV-0007AC-W5 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:34 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRS-00041T-EP for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:32 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-380--cgTjsUiN8WBzffp4Tkf6w-1; Sat, 27 Dec 2025 04:18:27 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-47d4029340aso23154545e9.3 for ; Sat, 27 Dec 2025 01:18:27 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea8311fsm50402459f8f.28.2025.12.27.01.18.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:18:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827109; 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=y+It6rXPbyRMS2BhIGgbQHCMr6/9Ea6F9PiZBE4rSII=; b=ObZNEVoQ4dHqdQO/C3/ftvI4vY9xGgfptifHvk98J7x0NSb+mfuLPy5a94pqjo/N8Vo0QK T6QpWT3sceG1nu49HzD5ibw6AAcsb5JEI+dw2EPFX80jDgJNUI/jk9+OXPY6QWKp1IrXUC Y7m3NXIkK8GrY6/iVBA3EAXnuToEtRY= X-MC-Unique: -cgTjsUiN8WBzffp4Tkf6w-1 X-Mimecast-MFC-AGG-ID: -cgTjsUiN8WBzffp4Tkf6w_1766827107 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827106; x=1767431906; 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; bh=y+It6rXPbyRMS2BhIGgbQHCMr6/9Ea6F9PiZBE4rSII=; b=fYO+sTS8X5L4LahOfAj2XY7FL+tMVl7EJdRfEZDi2OOUJ524Csp81xm0TO7MV5Nj+U 39Hb86A1ljRXH2aEdgFUCcGTnHaP78Wb6gpoif9hun+NIUsEIxqXStJEvvu3uNivbjrp kb6aMJEOS96xvde0fhk9T/EN1UW6ztWvNJxyT57/Eh0YJTfrSKARQhdF6jDiQFw0VzAT RDl0R1+k28Fkd29coowCBr5cQ7qIJqu69NzMNZH/DOmrXiq+r5REx8cOnHo5OFdIasbJ YwJFnQ6dgEStfXcDoupkt1Thgrr+Ethpg+bMjr91Iymd0jXVehiS5Xqc8yDdPyZWJJV/ xW+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827106; x=1767431906; 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; bh=y+It6rXPbyRMS2BhIGgbQHCMr6/9Ea6F9PiZBE4rSII=; b=WwKz2riYeUgCn0rehDM5eCWsfeepy9DV8++DykhRwI8Nt/9yqt318ws9oRDUUGZjLM zy4WGThTujfzZSLiwi2Zdb4n0hlgEQ16O5jvGBTARCaIW5T4d6GVD0trDzN3EOCR+Pp8 pFFPm6recbzOlBTIusJVv0UVqfFBJ2otignlTRqBV2hGRMh1uRiWgZfMGACODwNxDzMX 7oCVjOph6rKXa718iF7ksTsJPEVCIWGAIjWuRQbTbWdhL4u8TC6P+aCp24Ft6dgAVkE/ jz86by8rpJNeudfp26ruMsxzm3mUpEvG2urbSdEM27ODBIn2POogDOrzi7RVV2fFNUCz hBvA== X-Gm-Message-State: AOJu0Ywpxb2PPBq6Faj1PLMJFnrX+7Lh0lHQ05pqPaCVtP5Bhh1KldUS N+q/M0/acWFF7a2GKo0UwwH9JgaUM/pOpg/TFuOVVHS/tr5R417MKN0hjm9L5bfKnuComtvcjzs ZIzTUJqGt5mDg9vCJWTH60iYv11jZgMfCO58eTfYWCnYUn8x4XXQWncXdYhdKI5VRWGu67ZtY2T QwxiZ65aCq/kuWFu7a11mG47UOvWzU+drJKwMWzQPr X-Gm-Gg: AY/fxX5Rg6uYcUK1gSUxFVb1MeHJarUIrmi8bf+PhRT1e7EP5PthJUroFx0cOE8LF8m F6JMRwvZdWdUrUagXUd3T/CMyjXbAr9pU5sT/URB4Je5fDH9gMA1tcP3g5/S7t1VtSlxWxpLXY2 vBOs4/UMjv4jN024xh6aSn42lrwkYtJkTA9H0pFSQmGmt+UZFWSFk7yxp7m5/a73Od6TQTD90N3 f0LkTiznLdONHxXjUUbpyo+pTe+ixRR1ustGPOq0W3ll2px0YqeOInKa1Uj2q3+gxK6pLSR0dUT Ny/OYRru2hb3ZI3PvdfVRUY7YfN+BsZT1JQBfMyIXAfqVCcjyojCcxKmrdhC99NWkAaDTnS1Rty b49L7ecMVgh1ti91Yruqda16MUS10rmTsGmm4dg1CmScYMp4GDewa9FCWgP9W6GV4TO22WruTey 6sC6qzkN0lOelfq6g= X-Received: by 2002:a05:600c:8905:b0:471:115e:87bd with SMTP id 5b1f17b1804b1-47d1958b749mr236532575e9.26.1766827105399; Sat, 27 Dec 2025 01:18:25 -0800 (PST) X-Google-Smtp-Source: AGHT+IGrAaBIgwvDD3J63XBGfOFA5+B5jmyIlbxXr6cPIhpAMxjXeK68oO8H/A3G/jMIlRCJOOWUOg== X-Received: by 2002:a05:600c:8905:b0:471:115e:87bd with SMTP id 5b1f17b1804b1-47d1958b749mr236532325e9.26.1766827104841; Sat, 27 Dec 2025 01:18:24 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 062/153] rust/hpet: Borrow BqlRefCell at top level Date: Sat, 27 Dec 2025 10:14:49 +0100 Message-ID: <20251227091622.20725-63-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827278105158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Lockless IO requires to lock the registers during MMIO access. So it's necessary to get (or borrow) registers data at top level, and not to borrow again in child function calls. Change the argument types from BqlRefCell to &HPETRegisters/&mut HPETRegisters in child methods, and do borrow the data once at top level. This allows BqlRefCell to be directly replaced with Mutex in subsequent steps without causing lock reentrancy issues. Note, passing reference instead of BqlRef/BqlRefMut because BqlRefMut cannot be re-borrowed as BqlRef, though BqlRef/BqlRefMut themselves play as the "guard". Passing reference is directly and the extra bql::is_locked check could help to consolidate safety guarantee. Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251113051937.4017675-19-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- rust/hw/timer/hpet/src/device.rs | 190 +++++++++++++------------------ 1 file changed, 80 insertions(+), 110 deletions(-) diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index f9cdced5406..916ae587b08 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -174,7 +174,7 @@ fn timer_handler(timer_cell: &BqlRefCell) { let mut t =3D timer_cell.borrow_mut(); // SFAETY: state field is valid after timer initialization. let hpet_regs =3D &mut unsafe { t.state.as_mut() }.regs; - t.callback(hpet_regs) + t.callback(&mut hpet_regs.borrow_mut()) } =20 #[repr(C)] @@ -280,20 +280,15 @@ fn get_state(&self) -> &HPETState { unsafe { self.state.as_ref() } } =20 - fn is_int_active(&self, hpet_regs: &BqlRefCell) -> bool= { - hpet_regs.borrow().is_timer_int_active(self.index.into()) + fn is_int_active(&self, regs: &HPETRegisters) -> bool { + regs.is_timer_int_active(self.index.into()) } =20 /// calculate next value of the general counter that matches the /// target (either entirely, or the low 32-bit only depending on /// the timer mode). - fn calculate_cmp64( - &self, - hpet_regs: &BqlRefCell, - cur_tick: u64, - target: u64, - ) -> u64 { - let tn_regs =3D &hpet_regs.borrow().tn_regs[self.index as usize]; + fn calculate_cmp64(&self, regs: &HPETRegisters, cur_tick: u64, target:= u64) -> u64 { + let tn_regs =3D ®s.tn_regs[self.index as usize]; if tn_regs.is_32bit_mod() { let mut result: u64 =3D cur_tick.deposit(0, 32, target); if result < cur_tick { @@ -357,8 +352,7 @@ fn set_irq(&self, regs: &HPETRegisters, set: bool) { } } =20 - fn update_irq(&self, hpet_regs: &BqlRefCell, set: bool)= { - let mut regs =3D hpet_regs.borrow_mut(); + fn update_irq(&self, regs: &mut HPETRegisters, set: bool) { // If Timer N Interrupt Enable bit is 0, "the timer will // still operate and generate appropriate status bits, but // will not cause an interrupt" @@ -367,11 +361,11 @@ fn update_irq(&self, hpet_regs: &BqlRefCell, set: bool) { 1, u64::from(set && regs.tn_regs[self.index as usize].is_int_leve= l_triggered()), ); - self.set_irq(®s, set); + self.set_irq(regs, set); } =20 - fn arm_timer(&mut self, hpet_regs: &BqlRefCell, tick: u= 64) { - let tn_regs =3D &hpet_regs.borrow().tn_regs[self.index as usize]; + fn arm_timer(&mut self, regs: &HPETRegisters, tick: u64) { + let tn_regs =3D ®s.tn_regs[self.index as usize]; let mut ns =3D self.get_state().get_ns(tick); =20 // Clamp period to reasonable min value (1 us) @@ -383,45 +377,45 @@ fn arm_timer(&mut self, hpet_regs: &BqlRefCell, tick: u64) { self.qemu_timer.modify(self.last); } =20 - fn set_timer(&mut self, hpet_regs: &BqlRefCell) { - let tn_regs =3D &hpet_regs.borrow().tn_regs[self.index as usize]; + fn set_timer(&mut self, regs: &HPETRegisters) { + let tn_regs =3D ®s.tn_regs[self.index as usize]; let cur_tick: u64 =3D self.get_state().get_ticks(); =20 self.wrap_flag =3D 0; - self.cmp64 =3D self.calculate_cmp64(hpet_regs, cur_tick, tn_regs.c= mp); + self.cmp64 =3D self.calculate_cmp64(regs, cur_tick, tn_regs.cmp); if tn_regs.is_32bit_mod() { // HPET spec says in one-shot 32-bit mode, generate an interru= pt when // counter wraps in addition to an interrupt with comparator m= atch. if !tn_regs.is_periodic() && self.cmp64 > hpet_next_wrap(cur_t= ick) { self.wrap_flag =3D 1; - self.arm_timer(hpet_regs, hpet_next_wrap(cur_tick)); + self.arm_timer(regs, hpet_next_wrap(cur_tick)); return; } } - self.arm_timer(hpet_regs, self.cmp64); + self.arm_timer(regs, self.cmp64); } =20 - fn del_timer(&self, hpet_regs: &BqlRefCell) { + fn del_timer(&self, regs: &mut HPETRegisters) { // Just remove the timer from the timer_list without destroying // this timer instance. self.qemu_timer.delete(); =20 - if self.is_int_active(hpet_regs) { + if self.is_int_active(regs) { // For level-triggered interrupt, this leaves interrupt status // register set but lowers irq. - self.update_irq(hpet_regs, true); + self.update_irq(regs, true); } } =20 fn prepare_tn_cfg_reg_new( &self, - hpet_regs: &BqlRefCell, + regs: &mut HPETRegisters, shift: u32, len: u32, val: u64, ) -> (u64, u64) { trace::trace_hpet_ram_write_tn_cfg((shift / 8).try_into().unwrap()= ); - let tn_regs =3D &hpet_regs.borrow().tn_regs[self.index as usize]; + let tn_regs =3D ®s.tn_regs[self.index as usize]; let old_val: u64 =3D tn_regs.config; let mut new_val: u64 =3D old_val.deposit(shift, len, val); new_val =3D hpet_fixup_reg(new_val, old_val, HPET_TN_CFG_WRITE_MAS= K); @@ -430,50 +424,38 @@ fn prepare_tn_cfg_reg_new( if deactivating_bit(old_val, new_val, HPET_TN_CFG_INT_TYPE_SHIFT) { // Do this before changing timer.regs.config; otherwise, if // HPET_TN_FSB is set, update_irq will not lower the qemu_irq. - self.update_irq(hpet_regs, false); + self.update_irq(regs, false); } =20 (new_val, old_val) } =20 /// Configuration and Capability Register - fn set_tn_cfg_reg( - &mut self, - hpet_regs: &BqlRefCell, - shift: u32, - len: u32, - val: u64, - ) { + fn set_tn_cfg_reg(&mut self, regs: &mut HPETRegisters, shift: u32, len= : u32, val: u64) { // Factor out a prepare_tn_cfg_reg_new() to better handle immutabl= e scope. - let (new_val, old_val) =3D self.prepare_tn_cfg_reg_new(hpet_regs, = shift, len, val); - let tn_regs =3D &mut hpet_regs.borrow_mut().tn_regs[self.index as = usize]; - tn_regs.config =3D new_val; + let (new_val, old_val) =3D self.prepare_tn_cfg_reg_new(regs, shift= , len, val); + regs.tn_regs[self.index as usize].config =3D new_val; =20 if activating_bit(old_val, new_val, HPET_TN_CFG_INT_ENABLE_SHIFT) - && self.is_int_active(hpet_regs) + && self.is_int_active(regs) { - self.update_irq(hpet_regs, true); + self.update_irq(regs, true); } =20 + let tn_regs =3D &mut regs.tn_regs[self.index as usize]; if tn_regs.is_32bit_mod() { tn_regs.cmp =3D u64::from(tn_regs.cmp as u32); // truncate! self.period =3D u64::from(self.period as u32); // truncate! } =20 - if hpet_regs.borrow().is_hpet_enabled() { - self.set_timer(hpet_regs); + if regs.is_hpet_enabled() { + self.set_timer(regs); } } =20 /// Comparator Value Register - fn set_tn_cmp_reg( - &mut self, - hpet_regs: &BqlRefCell, - shift: u32, - len: u32, - val: u64, - ) { - let tn_regs =3D &mut hpet_regs.borrow_mut().tn_regs[self.index as = usize]; + fn set_tn_cmp_reg(&mut self, regs: &mut HPETRegisters, shift: u32, len= : u32, val: u64) { + let tn_regs =3D &mut regs.tn_regs[self.index as usize]; let mut length =3D len; let mut value =3D val; =20 @@ -498,27 +480,21 @@ fn set_tn_cmp_reg( } =20 tn_regs.clear_valset(); - if hpet_regs.borrow().is_hpet_enabled() { - self.set_timer(hpet_regs); + if regs.is_hpet_enabled() { + self.set_timer(regs); } } =20 /// FSB Interrupt Route Register - fn set_tn_fsb_route_reg( - &self, - hpet_regs: &BqlRefCell, - shift: u32, - len: u32, - val: u64, - ) { - let tn_regs =3D &mut hpet_regs.borrow_mut().tn_regs[self.index as = usize]; + fn set_tn_fsb_route_reg(&self, regs: &mut HPETRegisters, shift: u32, l= en: u32, val: u64) { + let tn_regs =3D &mut regs.tn_regs[self.index as usize]; tn_regs.fsb =3D tn_regs.fsb.deposit(shift, len, val); } =20 - fn reset(&mut self, hpet_regs: &BqlRefCell) { - self.del_timer(hpet_regs); + fn reset(&mut self, regs: &mut HPETRegisters) { + self.del_timer(regs); =20 - let tn_regs =3D &mut hpet_regs.borrow_mut().tn_regs[self.index as = usize]; + let tn_regs =3D &mut regs.tn_regs[self.index as usize]; tn_regs.cmp =3D u64::MAX; // Comparator Match Registers reset to a= ll 1's. tn_regs.config =3D (1 << HPET_TN_CFG_PERIODIC_CAP_SHIFT) | (1 << H= PET_TN_CFG_SIZE_CAP_SHIFT); if self.get_state().has_msi_flag() { @@ -532,8 +508,8 @@ fn reset(&mut self, hpet_regs: &BqlRefCell) { } =20 /// timer expiration callback - fn callback(&mut self, hpet_regs: &BqlRefCell) { - let tn_regs =3D &mut hpet_regs.borrow_mut().tn_regs[self.index as = usize]; + fn callback(&mut self, regs: &mut HPETRegisters) { + let tn_regs =3D &mut regs.tn_regs[self.index as usize]; let period: u64 =3D self.period; let cur_tick: u64 =3D self.get_state().get_ticks(); =20 @@ -546,16 +522,16 @@ fn callback(&mut self, hpet_regs: &BqlRefCell) { } else { tn_regs.cmp =3D self.cmp64; } - self.arm_timer(hpet_regs, self.cmp64); + self.arm_timer(regs, self.cmp64); } else if self.wrap_flag !=3D 0 { self.wrap_flag =3D 0; - self.arm_timer(hpet_regs, self.cmp64); + self.arm_timer(regs, self.cmp64); } - self.update_irq(hpet_regs, true); + self.update_irq(regs, true); } =20 - fn read(&self, target: TimerRegister, hpet_regs: &BqlRefCell) -> u64 { - let tn_regs =3D &hpet_regs.borrow().tn_regs[self.index as usize]; + fn read(&self, target: TimerRegister, regs: &HPETRegisters) -> u64 { + let tn_regs =3D ®s.tn_regs[self.index as usize]; =20 use TimerRegister::*; match target { @@ -568,7 +544,7 @@ fn read(&self, target: TimerRegister, hpet_regs: &BqlRe= fCell) -> fn write( &mut self, target: TimerRegister, - hpet_regs: &BqlRefCell, + regs: &mut HPETRegisters, value: u64, shift: u32, len: u32, @@ -577,9 +553,9 @@ fn write( =20 trace::trace_hpet_ram_write_timer_id(self.index); match target { - CFG =3D> self.set_tn_cfg_reg(hpet_regs, shift, len, value), - CMP =3D> self.set_tn_cmp_reg(hpet_regs, shift, len, value), - ROUTE =3D> self.set_tn_fsb_route_reg(hpet_regs, shift, len, va= lue), + CFG =3D> self.set_tn_cfg_reg(regs, shift, len, value), + CMP =3D> self.set_tn_cmp_reg(regs, shift, len, value), + ROUTE =3D> self.set_tn_fsb_route_reg(regs, shift, len, value), } } } @@ -702,22 +678,22 @@ fn init_timers(this: &mut MaybeUninit) { } =20 /// General Configuration Register - fn set_cfg_reg(&self, regs: &BqlRefCell, shift: u32, le= n: u32, val: u64) { - let old_val =3D regs.borrow().config; + fn set_cfg_reg(&self, regs: &mut HPETRegisters, shift: u32, len: u32, = val: u64) { + let old_val =3D regs.config; let mut new_val =3D old_val.deposit(shift, len, val); =20 new_val =3D hpet_fixup_reg(new_val, old_val, HPET_CFG_WRITE_MASK); - regs.borrow_mut().config =3D new_val; + regs.config =3D new_val; =20 if activating_bit(old_val, new_val, HPET_CFG_ENABLE_SHIFT) { // Enable main counter and interrupt generation. self.hpet_offset - .set(ticks_to_ns(regs.borrow().counter) - CLOCK_VIRTUAL.ge= t_ns()); + .set(ticks_to_ns(regs.counter) - CLOCK_VIRTUAL.get_ns()); =20 for timer in self.timers.iter().take(self.num_timers) { let mut t =3D timer.borrow_mut(); let id =3D t.index as usize; - let tn_regs =3D ®s.borrow().tn_regs[id]; + let tn_regs =3D ®s.tn_regs[id]; =20 if tn_regs.is_int_enabled() && t.is_int_active(regs) { t.update_irq(regs, true); @@ -726,7 +702,7 @@ fn set_cfg_reg(&self, regs: &BqlRefCell,= shift: u32, len: u32, va } } else if deactivating_bit(old_val, new_val, HPET_CFG_ENABLE_SHIFT= ) { // Halt main counter and disable interrupt generation. - regs.borrow_mut().counter =3D self.get_ticks(); + regs.counter =3D self.get_ticks(); =20 for timer in self.timers.iter().take(self.num_timers) { timer.borrow().del_timer(regs); @@ -747,15 +723,9 @@ fn set_cfg_reg(&self, regs: &BqlRefCell= , shift: u32, len: u32, va } =20 /// General Interrupt Status Register: Read/Write Clear - fn set_int_status_reg( - &self, - regs: &BqlRefCell, - shift: u32, - _len: u32, - val: u64, - ) { + fn set_int_status_reg(&self, regs: &mut HPETRegisters, shift: u32, _le= n: u32, val: u64) { let new_val =3D val << shift; - let cleared =3D new_val & regs.borrow().int_status; + let cleared =3D new_val & regs.int_status; =20 for (index, timer) in self.timers.iter().take(self.num_timers).enu= merate() { if cleared & (1 << index) !=3D 0 { @@ -765,8 +735,7 @@ fn set_int_status_reg( } =20 /// Main Counter Value Register - fn set_counter_reg(&self, regs: &BqlRefCell, shift: u32= , len: u32, val: u64) { - let mut regs =3D regs.borrow_mut(); + fn set_counter_reg(&self, regs: &mut HPETRegisters, shift: u32, len: u= 32, val: u64) { if regs.is_hpet_enabled() { // HPET spec says that writes to this register should only be // done while the counter is halted. So this is an undefined @@ -844,23 +813,23 @@ fn realize(&self) -> util::Result<()> { } =20 fn reset_hold(&self, _type: ResetType) { + let mut regs =3D self.regs.borrow_mut(); for timer in self.timers.iter().take(self.num_timers) { - timer.borrow_mut().reset(&self.regs); + timer.borrow_mut().reset(&mut regs); } =20 + regs.counter =3D 0; + regs.config =3D 0; + HPETFwConfig::update_hpet_cfg( + self.hpet_id.get(), + regs.capability as u32, + self.mmio_addr(0).unwrap(), + ); + // pit_enabled.set(true) will call irq handler and access regs // again. We cannot borrow BqlRefCell twice at once. Minimize the // scope of regs to ensure it will be dropped before irq callback. - { - let mut regs =3D self.regs.borrow_mut(); - regs.counter =3D 0; - regs.config =3D 0; - HPETFwConfig::update_hpet_cfg( - self.hpet_id.get(), - regs.capability as u32, - self.mmio_addr(0).unwrap(), - ); - } + drop(regs); =20 self.pit_enabled.set(true); self.hpet_offset.set(0); @@ -897,17 +866,16 @@ fn read(&self, addr: hwaddr, size: u32) -> u64 { trace::trace_hpet_ram_read(addr); =20 let HPETAddrDecode { shift, target, .. } =3D self.decode(addr, siz= e); - let regs =3D &self.regs; + let regs =3D &self.regs.borrow(); =20 use DecodedRegister::*; use GlobalRegister::*; (match target { Timer(timer, tn_target) =3D> timer.borrow_mut().read(tn_target= , regs), - Global(CAP) =3D> regs.borrow().capability, /* including HPET_P= ERIOD 0x004 */ - Global(CFG) =3D> regs.borrow().config, - Global(INT_STATUS) =3D> regs.borrow().int_status, + Global(CAP) =3D> regs.capability, /* including HPET_PERIOD 0x0= 04 */ + Global(CFG) =3D> regs.config, + Global(INT_STATUS) =3D> regs.int_status, Global(COUNTER) =3D> { - let regs =3D regs.borrow(); let cur_tick =3D if regs.is_hpet_enabled() { self.get_ticks() } else { @@ -927,18 +895,20 @@ fn read(&self, addr: hwaddr, size: u32) -> u64 { =20 fn write(&self, addr: hwaddr, value: u64, size: u32) { let HPETAddrDecode { shift, len, target } =3D self.decode(addr, si= ze); - let regs =3D &self.regs; + let mut regs =3D self.regs.borrow_mut(); =20 trace::trace_hpet_ram_write(addr, value); =20 use DecodedRegister::*; use GlobalRegister::*; match target { - Timer(timer, tn_target) =3D> timer.borrow_mut().write(tn_targe= t, regs, value, shift, len), + Timer(timer, tn_target) =3D> timer + .borrow_mut() + .write(tn_target, &mut regs, value, shift, len), Global(CAP) =3D> {} // General Capabilities and ID Register: R= ead Only - Global(CFG) =3D> self.set_cfg_reg(regs, shift, len, value), - Global(INT_STATUS) =3D> self.set_int_status_reg(regs, shift, l= en, value), - Global(COUNTER) =3D> self.set_counter_reg(regs, shift, len, va= lue), + Global(CFG) =3D> self.set_cfg_reg(&mut regs, shift, len, value= ), + Global(INT_STATUS) =3D> self.set_int_status_reg(&mut regs, shi= ft, len, value), + Global(COUNTER) =3D> self.set_counter_reg(&mut regs, shift, le= n, value), Unknown(_) =3D> trace::trace_hpet_ram_write_invalid(), } } @@ -966,7 +936,7 @@ fn post_load(&self, _version_id: u8) -> Result<(), migr= ation::Infallible> { let cnt =3D regs.counter; let cmp =3D regs.tn_regs[t.index as usize].cmp; =20 - t.cmp64 =3D t.calculate_cmp64(&self.regs, cnt, cmp); + t.cmp64 =3D t.calculate_cmp64(®s, cnt, cmp); t.last =3D CLOCK_VIRTUAL.get_ns() - NANOSECONDS_PER_SECOND; } =20 --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827224; cv=none; d=zohomail.com; s=zohoarc; b=M1qlw1NcOXz4gthmUIQiGSULvTTHQIrM8qmjGyuuvohtJUxZv32+5mVeRP5wc0rUDjvowy7SRUNRmxaHm8E41PR52UdHJTJ+m6/cljydbKSbXu/ZEPG0UifdNdZlL7uhqhbk7IrHK3a3frkKmlOubJBqHnuo49NvLi+J5CKOjGg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827224; 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=OR2XGfrAI6MMQ/VUl3zvivBWqmGu/o9Ocde5KCOxOWA=; b=kpeJhZ/NIZ7dxiVfZ0nyu6iEMOCIQLtB+aF9qVsv9dGIG2GhcTyGGDEpdwv0KWlJV3g5M7hlknPn2su2iLMb2GVKEi6VGHx8+rpNHGUexqrMGZ94iVIKJHGSkEa3uYYjqIAYjihWAHBC7RrkNUYyiKqZNYdmKF0Ger1xIQDEtt8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827224056790.7527228612906; Sat, 27 Dec 2025 01:20:24 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQRk-0008Ne-Hf; Sat, 27 Dec 2025 04:18:48 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRZ-0007GS-Ci for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:37 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRU-00043y-FN for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:35 -0500 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-325-cX41jstnPJ-bHq55vp0HPQ-1; Sat, 27 Dec 2025 04:18:29 -0500 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-430ffc4dc83so8257515f8f.3 for ; Sat, 27 Dec 2025 01:18:29 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d1936d220sm472916695e9.8.2025.12.27.01.18.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:18:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827111; 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=OR2XGfrAI6MMQ/VUl3zvivBWqmGu/o9Ocde5KCOxOWA=; b=gI5LiAjO1RYB9qAP2zBYMgZtw28kAO3ULcLnG4nlsreYvP50X/vW0d5qvoLxS4eHxBnUxS tPcELQ3bnxGf3JU5TXGbTO6kpd/MICybMRnZpnAIdDNJy4CQGRJyKeYYVyCn7LNKFeoJQZ GfF2quMR7y6q2sEZuq/5GoE2cT1gYUg= X-MC-Unique: cX41jstnPJ-bHq55vp0HPQ-1 X-Mimecast-MFC-AGG-ID: cX41jstnPJ-bHq55vp0HPQ_1766827108 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827107; x=1767431907; 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; bh=OR2XGfrAI6MMQ/VUl3zvivBWqmGu/o9Ocde5KCOxOWA=; b=St0dby/cM8k126py9cykM7AdTeSDNQdiuK/S8H16YpEc95B2GmdMkuRz9GFi7IZlvp TZ432dkuhpV5eByWFTcjnh5JqJzuHIzJGXkA/JSAZUTm8f2R7hmQZMTHyV/YMRT9McNl uPm4ZLMbmsbHDCGGekVG2vyHddrvGTIS2MoWUSMIgTU422DUrE/dJ6XN3xWMh7R+6NCs C2Nv87WjVUgYlo8rhjfiwWyt+fpdPes2sGPktsKcOBMrnd51ZWJdbocuRTZAw/3tolir bRGUjlSovvfmvt05RVxwzMlxX6HPixJzpZQYJU3jZDQxfIx07wIFy1VNI748VBN/PoDJ uefA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827107; x=1767431907; 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; bh=OR2XGfrAI6MMQ/VUl3zvivBWqmGu/o9Ocde5KCOxOWA=; b=fN8IY5FWy0GLGHdFXrclf99L/ToPWdTQdCqOYOgVjzJWje2EsyeJ0Vz4f+G0Uq63A5 z29ec/zSDmlekzVrgmJF4oOrrQn5rl55zD8An9BYb2LbXjW0MUE6vIufq498XwjaDeAe 3rJHt1vqq/u7Naqk1RALv52sPZR5f9OLQoUl39N4ptkCx/l+9mpuTLOI5xTNEG2m6h4T o1HiE3eBTHt3b6HZsvou8nPY10SPKWbBMETJruJeFVJfdKLlcIHEuWnWKb1L68lY/jqC Yf7PV3fPta73J62dNfwioKqhwSaqOGJdAioTaAcnwYJNfH4BUwwNvj/WJcmAoqi0MQUW q0ag== X-Gm-Message-State: AOJu0YxPe9B4JbmNAOIfzvDCp8+U8b3kzoGlxxlRJYFDzmJwftsucFIr y9TTyR4NWrkb3cPWtq5BemOoGZfqrudaafDKBjwdajLrXmuxcAzPZpLDcMUdUsb25+IJG3qle0l 2lPMvmvP8+2Osk+GVc+BNFdLN0mBShTTtOs8zCULiT/iZKV4eFBqHg0PNeI8BOuRFpdYDrSiVRK VHjO9sKJTq/JrdlJsjGQ9kc4znANSFzDEGQIHHVSbB X-Gm-Gg: AY/fxX48nUzip+pi+XV4+GfSdlSTnAN6QKHMkRH09tDUix6EFZnmn0MFT+fEx7qefKb btDBPiJ1DgvriLuzWfX7G+euQMP+ggZg16tZ7wRv3UNhw1VAN7yc5H/TxPcOWJJEhSNEEamBcFS uDyon+YEKnc1xDDuDt5qmd6UQJSUoRdSXDRow/jYHTd2MZNikvRMZIHwlxA3x3J5Z6IbAFvASJx UYL49DPZoq9jkz5PSAM+ZNVABZVjakAtOxp/MIyUFwvtgoJt7RdGQ2psgJVVdkHccSo7PfSqcq1 LgYhZS/mUZTkiDBN84xeUqZdvgRWHfWgOMOLCh/BZE/8pCNWA+BI6XADXns0qnuSC9dAOi2gpfm c0T2Mc4UdNZpPvFc43x5r0eiHPev1T6dG1zZOwXdAgzJNwbaStZy/HLduPeYL1ApWm/zfVWzwT7 8gTasVzsfxIH8DTrs= X-Received: by 2002:a05:600c:3b1f:b0:477:9b4a:a82 with SMTP id 5b1f17b1804b1-47d36c75e0cmr152016485e9.35.1766827106612; Sat, 27 Dec 2025 01:18:26 -0800 (PST) X-Google-Smtp-Source: AGHT+IFmmVlUhETPcOo/UpkCg5r4JBwiiVgn0woBfgtYG8S9fYDBnIey6PAiPtoICDmTKxXka9tCuQ== X-Received: by 2002:a05:600c:3b1f:b0:477:9b4a:a82 with SMTP id 5b1f17b1804b1-47d36c75e0cmr152016185e9.35.1766827106053; Sat, 27 Dec 2025 01:18:26 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 063/153] rust/hpet: move hidden registers to HPETTimerRegisters Date: Sat, 27 Dec 2025 10:14:50 +0100 Message-ID: <20251227091622.20725-64-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827225814158500 Content-Type: text/plain; charset="utf-8" Do not separate visible and hidden state; both of them are used in the same circumstances and it's easiest to place both of them under the same BqlRefCell. Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- rust/hw/timer/hpet/src/device.rs | 151 +++++++++++++++---------------- 1 file changed, 71 insertions(+), 80 deletions(-) diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index 916ae587b08..005e41aec47 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -171,9 +171,9 @@ const fn deactivating_bit(old: u64, new: u64, shift: us= ize) -> bool { } =20 fn timer_handler(timer_cell: &BqlRefCell) { - let mut t =3D timer_cell.borrow_mut(); + let t =3D timer_cell.borrow(); // SFAETY: state field is valid after timer initialization. - let hpet_regs =3D &mut unsafe { t.state.as_mut() }.regs; + let hpet_regs =3D &unsafe { t.state.as_ref() }.regs; t.callback(&mut hpet_regs.borrow_mut()) } =20 @@ -187,9 +187,35 @@ pub struct HPETTimerRegisters { cmp: u64, /// Timer N FSB Interrupt Route Register fsb: u64, + + // Hidden register state + /// comparator (extended to counter width) + cmp64: u64, + /// Last value written to comparator + period: u64, + /// timer pop will indicate wrap for one-shot 32-bit + /// mode. Next pop will be actual timer expiration. + wrap_flag: u8, + /// last value armed, to avoid timer storms + last: u64, } =20 impl HPETTimerRegisters { + /// calculate next value of the general counter that matches the + /// target (either entirely, or the low 32-bit only depending on + /// the timer mode). + fn update_cmp64(&mut self, cur_tick: u64) { + self.cmp64 =3D if self.is_32bit_mod() { + let mut result: u64 =3D cur_tick.deposit(0, 32, self.cmp); + if result < cur_tick { + result +=3D 0x100000000; + } + result + } else { + self.cmp + } + } + const fn is_fsb_route_enabled(&self) -> bool { self.config & (1 << HPET_TN_CFG_FSB_ENABLE_SHIFT) !=3D 0 } @@ -234,17 +260,6 @@ pub struct HPETTimer { qemu_timer: Timer, /// timer block abstraction containing this timer state: NonNull, - - // Hidden register state - /// comparator (extended to counter width) - cmp64: u64, - /// Last value written to comparator - period: u64, - /// timer pop will indicate wrap for one-shot 32-bit - /// mode. Next pop will be actual timer expiration. - wrap_flag: u8, - /// last value armed, to avoid timer storms - last: u64, } =20 // SAFETY: Sync is not automatically derived due to the `state` field, @@ -259,10 +274,6 @@ fn new(index: u8, state: *const HPETState) -> HPETTime= r { // is initialized below. qemu_timer: unsafe { Timer::new() }, state: NonNull::new(state.cast_mut()).unwrap(), - cmp64: 0, - period: 0, - wrap_flag: 0, - last: 0, } } =20 @@ -284,22 +295,6 @@ fn is_int_active(&self, regs: &HPETRegisters) -> bool { regs.is_timer_int_active(self.index.into()) } =20 - /// calculate next value of the general counter that matches the - /// target (either entirely, or the low 32-bit only depending on - /// the timer mode). - fn calculate_cmp64(&self, regs: &HPETRegisters, cur_tick: u64, target:= u64) -> u64 { - let tn_regs =3D ®s.tn_regs[self.index as usize]; - if tn_regs.is_32bit_mod() { - let mut result: u64 =3D cur_tick.deposit(0, 32, target); - if result < cur_tick { - result +=3D 0x100000000; - } - result - } else { - target - } - } - fn get_int_route(&self, regs: &HPETRegisters) -> usize { if self.index <=3D 1 && regs.is_legacy_mode() { // If LegacyReplacement Route bit is set, HPET specification r= equires @@ -364,35 +359,34 @@ fn update_irq(&self, regs: &mut HPETRegisters, set: b= ool) { self.set_irq(regs, set); } =20 - fn arm_timer(&mut self, regs: &HPETRegisters, tick: u64) { - let tn_regs =3D ®s.tn_regs[self.index as usize]; + fn arm_timer(&self, tn_regs: &mut HPETTimerRegisters, tick: u64) { let mut ns =3D self.get_state().get_ns(tick); =20 // Clamp period to reasonable min value (1 us) - if tn_regs.is_periodic() && ns - self.last < 1000 { - ns =3D self.last + 1000; + if tn_regs.is_periodic() && ns - tn_regs.last < 1000 { + ns =3D tn_regs.last + 1000; } =20 - self.last =3D ns; - self.qemu_timer.modify(self.last); + tn_regs.last =3D ns; + self.qemu_timer.modify(tn_regs.last); } =20 - fn set_timer(&mut self, regs: &HPETRegisters) { - let tn_regs =3D ®s.tn_regs[self.index as usize]; + fn set_timer(&self, regs: &mut HPETRegisters) { + let tn_regs =3D &mut regs.tn_regs[self.index as usize]; let cur_tick: u64 =3D self.get_state().get_ticks(); =20 - self.wrap_flag =3D 0; - self.cmp64 =3D self.calculate_cmp64(regs, cur_tick, tn_regs.cmp); + tn_regs.wrap_flag =3D 0; + tn_regs.update_cmp64(cur_tick); if tn_regs.is_32bit_mod() { // HPET spec says in one-shot 32-bit mode, generate an interru= pt when // counter wraps in addition to an interrupt with comparator m= atch. - if !tn_regs.is_periodic() && self.cmp64 > hpet_next_wrap(cur_t= ick) { - self.wrap_flag =3D 1; - self.arm_timer(regs, hpet_next_wrap(cur_tick)); + if !tn_regs.is_periodic() && tn_regs.cmp64 > hpet_next_wrap(cu= r_tick) { + tn_regs.wrap_flag =3D 1; + self.arm_timer(tn_regs, hpet_next_wrap(cur_tick)); return; } } - self.arm_timer(regs, self.cmp64); + self.arm_timer(tn_regs, tn_regs.cmp64); } =20 fn del_timer(&self, regs: &mut HPETRegisters) { @@ -431,7 +425,7 @@ fn prepare_tn_cfg_reg_new( } =20 /// Configuration and Capability Register - fn set_tn_cfg_reg(&mut self, regs: &mut HPETRegisters, shift: u32, len= : u32, val: u64) { + fn set_tn_cfg_reg(&self, regs: &mut HPETRegisters, shift: u32, len: u3= 2, val: u64) { // Factor out a prepare_tn_cfg_reg_new() to better handle immutabl= e scope. let (new_val, old_val) =3D self.prepare_tn_cfg_reg_new(regs, shift= , len, val); regs.tn_regs[self.index as usize].config =3D new_val; @@ -445,7 +439,7 @@ fn set_tn_cfg_reg(&mut self, regs: &mut HPETRegisters, = shift: u32, len: u32, val let tn_regs =3D &mut regs.tn_regs[self.index as usize]; if tn_regs.is_32bit_mod() { tn_regs.cmp =3D u64::from(tn_regs.cmp as u32); // truncate! - self.period =3D u64::from(self.period as u32); // truncate! + tn_regs.period =3D u64::from(tn_regs.period as u32); // trunca= te! } =20 if regs.is_hpet_enabled() { @@ -454,7 +448,7 @@ fn set_tn_cfg_reg(&mut self, regs: &mut HPETRegisters, = shift: u32, len: u32, val } =20 /// Comparator Value Register - fn set_tn_cmp_reg(&mut self, regs: &mut HPETRegisters, shift: u32, len= : u32, val: u64) { + fn set_tn_cmp_reg(&self, regs: &mut HPETRegisters, shift: u32, len: u3= 2, val: u64) { let tn_regs =3D &mut regs.tn_regs[self.index as usize]; let mut length =3D len; let mut value =3D val; @@ -476,7 +470,7 @@ fn set_tn_cmp_reg(&mut self, regs: &mut HPETRegisters, = shift: u32, len: u32, val } =20 if tn_regs.is_periodic() { - self.period =3D self.period.deposit(shift, length, value); + tn_regs.period =3D tn_regs.period.deposit(shift, length, value= ); } =20 tn_regs.clear_valset(); @@ -491,7 +485,7 @@ fn set_tn_fsb_route_reg(&self, regs: &mut HPETRegisters= , shift: u32, len: u32, v tn_regs.fsb =3D tn_regs.fsb.deposit(shift, len, val); } =20 - fn reset(&mut self, regs: &mut HPETRegisters) { + fn reset(&self, regs: &mut HPETRegisters) { self.del_timer(regs); =20 let tn_regs =3D &mut regs.tn_regs[self.index as usize]; @@ -503,29 +497,28 @@ fn reset(&mut self, regs: &mut HPETRegisters) { // advertise availability of ioapic int tn_regs.config |=3D (u64::from(self.get_state().int_route_cap)) << HPET_TN_CFG_INT= _ROUTE_CAP_SHIFT; - self.period =3D 0; - self.wrap_flag =3D 0; + tn_regs.period =3D 0; + tn_regs.wrap_flag =3D 0; } =20 /// timer expiration callback - fn callback(&mut self, regs: &mut HPETRegisters) { + fn callback(&self, regs: &mut HPETRegisters) { let tn_regs =3D &mut regs.tn_regs[self.index as usize]; - let period: u64 =3D self.period; let cur_tick: u64 =3D self.get_state().get_ticks(); =20 - if tn_regs.is_periodic() && period !=3D 0 { - while hpet_time_after(cur_tick, self.cmp64) { - self.cmp64 +=3D period; + if tn_regs.is_periodic() && tn_regs.period !=3D 0 { + while hpet_time_after(cur_tick, tn_regs.cmp64) { + tn_regs.cmp64 +=3D tn_regs.period; } if tn_regs.is_32bit_mod() { - tn_regs.cmp =3D u64::from(self.cmp64 as u32); // truncate! + tn_regs.cmp =3D u64::from(tn_regs.cmp64 as u32); // trunca= te! } else { - tn_regs.cmp =3D self.cmp64; + tn_regs.cmp =3D tn_regs.cmp64; } - self.arm_timer(regs, self.cmp64); - } else if self.wrap_flag !=3D 0 { - self.wrap_flag =3D 0; - self.arm_timer(regs, self.cmp64); + self.arm_timer(tn_regs, tn_regs.cmp64); + } else if tn_regs.wrap_flag !=3D 0 { + tn_regs.wrap_flag =3D 0; + self.arm_timer(tn_regs, tn_regs.cmp64); } self.update_irq(regs, true); } @@ -542,7 +535,7 @@ fn read(&self, target: TimerRegister, regs: &HPETRegist= ers) -> u64 { } =20 fn write( - &mut self, + &self, target: TimerRegister, regs: &mut HPETRegisters, value: u64, @@ -691,7 +684,7 @@ fn set_cfg_reg(&self, regs: &mut HPETRegisters, shift: = u32, len: u32, val: u64) .set(ticks_to_ns(regs.counter) - CLOCK_VIRTUAL.get_ns()); =20 for timer in self.timers.iter().take(self.num_timers) { - let mut t =3D timer.borrow_mut(); + let t =3D timer.borrow(); let id =3D t.index as usize; let tn_regs =3D ®s.tn_regs[id]; =20 @@ -815,7 +808,7 @@ fn realize(&self) -> util::Result<()> { fn reset_hold(&self, _type: ResetType) { let mut regs =3D self.regs.borrow_mut(); for timer in self.timers.iter().take(self.num_timers) { - timer.borrow_mut().reset(&mut regs); + timer.borrow().reset(&mut regs); } =20 regs.counter =3D 0; @@ -871,7 +864,7 @@ fn read(&self, addr: hwaddr, size: u32) -> u64 { use DecodedRegister::*; use GlobalRegister::*; (match target { - Timer(timer, tn_target) =3D> timer.borrow_mut().read(tn_target= , regs), + Timer(timer, tn_target) =3D> timer.borrow().read(tn_target, re= gs), Global(CAP) =3D> regs.capability, /* including HPET_PERIOD 0x0= 04 */ Global(CFG) =3D> regs.config, Global(INT_STATUS) =3D> regs.int_status, @@ -903,7 +896,7 @@ fn write(&self, addr: hwaddr, value: u64, size: u32) { use GlobalRegister::*; match target { Timer(timer, tn_target) =3D> timer - .borrow_mut() + .borrow() .write(tn_target, &mut regs, value, shift, len), Global(CAP) =3D> {} // General Capabilities and ID Register: R= ead Only Global(CFG) =3D> self.set_cfg_reg(&mut regs, shift, len, value= ), @@ -929,15 +922,14 @@ fn pre_save(&self) -> Result<(), migration::Infallibl= e> { } =20 fn post_load(&self, _version_id: u8) -> Result<(), migration::Infallib= le> { - let regs =3D self.regs.borrow(); + let mut regs =3D self.regs.borrow_mut(); + let cnt =3D regs.counter; =20 - for timer in self.timers.iter().take(self.num_timers) { - let mut t =3D timer.borrow_mut(); - let cnt =3D regs.counter; - let cmp =3D regs.tn_regs[t.index as usize].cmp; + for index in 0..self.num_timers { + let tn_regs =3D &mut regs.tn_regs[index]; =20 - t.cmp64 =3D t.calculate_cmp64(®s, cnt, cmp); - t.last =3D CLOCK_VIRTUAL.get_ns() - NANOSECONDS_PER_SECOND; + tn_regs.update_cmp64(cnt); + tn_regs.last =3D CLOCK_VIRTUAL.get_ns() - NANOSECONDS_PER_SECO= ND; } =20 // Recalculate the offset between the main counter and guest time @@ -1010,6 +1002,8 @@ impl ObjectImpl for HPETState { vmstate_of!(HPETTimerRegisters, config), vmstate_of!(HPETTimerRegisters, cmp), vmstate_of!(HPETTimerRegisters, fsb), + vmstate_of!(HPETTimerRegisters, period), + vmstate_of!(HPETTimerRegisters, wrap_flag), }) .build() ); @@ -1020,9 +1014,6 @@ impl ObjectImpl for HPETState { .version_id(2) .minimum_version_id(2) .fields(vmstate_fields! { - vmstate_of!(HPETTimer, index), - vmstate_of!(HPETTimer, period), - vmstate_of!(HPETTimer, wrap_flag), vmstate_of!(HPETTimer, qemu_timer), }) .build(); --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827251; cv=none; d=zohomail.com; s=zohoarc; b=X2G2rMtAzfzE9yLoT7cBaLLtUdHZkttTZF2REJL8VV5pJcte0kJN0XUZCKas111X1Ade+0/4glIbqnsl90bG9Zxv0e4xe9pY15VhmW9idu2a5aIDLGPCQjloVssSQ2zrZIIWcRpKn36pxs50csST0WszsedI+rP2TkfOtqQd0+M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827251; 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=TIU29rCd+LxhpC3MSMAwtQsowNWKj0bEzD+0h4XZ9Y8=; b=f2v6YCHfyqUay2GlKUCzN0CUB99eHv+9HW0XHoWdQZn/KWCsTngqdgGW2YPvJB7LVhtYrU4HV1DO5lgVqsly/cnYK/8FYX/9XmsVfbCSjRpIbYTzNoLaXiHxEyBr5QMKSNYad5xhewDZedOG8xVfVUzIsUqcPoBILZBQotEKOJo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827251243586.0127175167931; Sat, 27 Dec 2025 01:20:51 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQRe-0007gz-Fx; Sat, 27 Dec 2025 04:18:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRZ-0007GE-CI for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:37 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRW-00049N-0m for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:35 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-169-6hz0Trz2MZiz4tqr3XU_qA-1; Sat, 27 Dec 2025 04:18:31 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-4792bd2c290so73398815e9.1 for ; Sat, 27 Dec 2025 01:18:31 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be3aea77bsm188463155e9.17.2025.12.27.01.18.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:18:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827113; 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=TIU29rCd+LxhpC3MSMAwtQsowNWKj0bEzD+0h4XZ9Y8=; b=JTVL5LPLH4Y5k5pBQWJXHKwPRA4UpwTOv/LiaKZVxMic7ym/HDg/cbrJyCx2TZ53P9C1d9 Z6O8g/neVkYBkb5MpsON6h9txxAkuethvr8G350n0gSt94gcseGnYbEJztDxZZ0Dm8Tb8R IRYg+aubd/n5Fx+SlCkw12evYM9k8BI= X-MC-Unique: 6hz0Trz2MZiz4tqr3XU_qA-1 X-Mimecast-MFC-AGG-ID: 6hz0Trz2MZiz4tqr3XU_qA_1766827111 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827110; x=1767431910; 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; bh=TIU29rCd+LxhpC3MSMAwtQsowNWKj0bEzD+0h4XZ9Y8=; b=FH+IZnFjwKCdevGsGyeXZMONAMOg8LwMjWKJRnJoTvHjxEy2YHFEa2lNocN8QRPr1u lq7kAunF/Pev0DH9fTNbGXqAwQV2DTbfk9eOA0Dpyn1NiN60moWH63wVo3//HD30JL+n 4mgmWrazB3V3yQBKf+wCTxPVZH95q3EbJlTt0UO92bNaX7O4x3bhYLvsBKK6A8nK3aRL jlk92WXAWN0PGEZuvXIZFFMZTyfA6hdo0yodll16T7hPh7Qsz10GJJaJqfa1AQkbM99y Yy/k1r8mw0r9eOEYSJHcody1/XYGqp7mQTMc25GPtG+kV+N8io5QLLc7pO4K7W9bZT3X P5zA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827110; x=1767431910; 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; bh=TIU29rCd+LxhpC3MSMAwtQsowNWKj0bEzD+0h4XZ9Y8=; b=pu+LEJaBTSIbjl45+eV5Xzh4Iokun3lIdqAfMk1TtYvIhbpNOZFZNtnsj8Qlh1v89c q30XBMnpy6nyAMzkXM+N5EKH1iA8KtMxm1s0VNlHQ11ZaGfvw7E9Rjy474vNBzRG/VrH GmRh2acgY98DRsb3HG88YMeIGfMes2aT55gREI8RBPTrc7CjYCI8ZIX5KB5BtftkT1BR LwGgHbo0n7SfYhY/V/uocYAWoGUErvIQaBZIJwKg5ldX6Zvz6IoiJIEDkf84BT5roYMP z4RqGWMrGVU0BOSEykUYNXU9c4zZ4Iv+af+VHM0gw9R/C5wINYzH8W/RK5t8VadtCLYS +X8g== X-Gm-Message-State: AOJu0Yy7UiZzX2TR/KkFrzMwqX9CjyjZIOtGYRW7nC5YYrVKGYB678Gj G36ZTySl/AB5+K1BuDRr4tD6OMD7fSNizPpoO7v/s3UJRpFAr51Bv3bXCkbspGjSOkTRhm1FSxz O3s2hSK2hiHt7W07YRxqGyz3lohZDqnZP7ROZIs1rRLDOCPTpq+f58OAqu/tHpX6E6jO0hLG8kh X+0gqCj2epZPqnkeNUEke1VKqiFv4+FpDWJpl/ZcJ+ X-Gm-Gg: AY/fxX7WbxgAXwA0cPbxRYwN6hFWke5KimoBNHiPFP4VMcOu/OV7epzVbVCkDQw5PQj ge8l8LgT/XzuYX2/O9fyQGSOTm8/b5rkF07h4igdHwlp8Nk9RYcgKrNB5GhhVTcoDmAHb2Jv01b Uafvkzm1oYKIRZAHHDvxMZcw8iD6KbWLQCRCU/zpU5bigpZnIGcoMmqcb7wYXmNNnDgK7q8lZu8 DB+IG250bBLmywl7ix8P3CkFmn+2qadzlyT0kIwSzAi5QynnLGN5EloAQnKeC/85jL2Xyrnlb6F bAphfPzv2bXv0CewzhwQP40g08osjE9jTqHvz/uj68V54IITQNY84HBkJPFoPHLIqXyIHhqQG3o jCQ3a8BFjFzC6iy8c0oEuKJxEwNMTEhQg1tbF9+zlZyQdiCrGk5cBSuzHMs1atLx7g2H2AdyO/j 3p5p7z68AOXvqYXNA= X-Received: by 2002:a05:600c:444b:b0:477:557b:691d with SMTP id 5b1f17b1804b1-47d1959fa3emr276877785e9.25.1766827109704; Sat, 27 Dec 2025 01:18:29 -0800 (PST) X-Google-Smtp-Source: AGHT+IHEz4iDWNydYWwaLoj6tY+myOl2zIKD894Mg73uq8euM6LeRrRMWUjYJPjyNzNrdXg0TxRisw== X-Received: by 2002:a05:600c:444b:b0:477:557b:691d with SMTP id 5b1f17b1804b1-47d1959fa3emr276877585e9.25.1766827109260; Sat, 27 Dec 2025 01:18:29 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 064/153] rust/hpet: remove BqlRefCell around HPETTimer Date: Sat, 27 Dec 2025 10:14:51 +0100 Message-ID: <20251227091622.20725-65-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827261221158500 Content-Type: text/plain; charset="utf-8" HPETTimer now has all of its state stored in HPETRegisters, so it does not need its own BqlRefCell anymore. Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- rust/hw/timer/hpet/src/device.rs | 55 ++++++++++++++++---------------- rust/util/src/timer.rs | 12 ++++--- 2 files changed, 34 insertions(+), 33 deletions(-) diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index 005e41aec47..0dbfc5b3bab 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -126,7 +126,7 @@ enum DecodedRegister<'a> { Global(GlobalRegister), =20 /// Register in the timer block `0x100`...`0x3ff` - Timer(&'a BqlRefCell, TimerRegister), + Timer(&'a HPETTimer, TimerRegister), =20 /// Invalid address #[allow(dead_code)] @@ -170,8 +170,7 @@ const fn deactivating_bit(old: u64, new: u64, shift: us= ize) -> bool { (old & mask !=3D 0) && (new & mask =3D=3D 0) } =20 -fn timer_handler(timer_cell: &BqlRefCell) { - let t =3D timer_cell.borrow(); +fn timer_handler(t: &HPETTimer) { // SFAETY: state field is valid after timer initialization. let hpet_regs =3D &unsafe { t.state.as_ref() }.regs; t.callback(&mut hpet_regs.borrow_mut()) @@ -277,12 +276,16 @@ fn new(index: u8, state: *const HPETState) -> HPETTim= er { } } =20 - fn init_timer_with_cell(cell: &BqlRefCell) { - let mut timer =3D cell.borrow_mut(); - // SAFETY: HPETTimer is only used as part of HPETState, which is - // always pinned. - let qemu_timer =3D unsafe { Pin::new_unchecked(&mut timer.qemu_tim= er) }; - qemu_timer.init_full(None, CLOCK_VIRTUAL, Timer::NS, 0, timer_hand= ler, cell); + fn init_timer(timer: Pin<&mut Self>) { + Timer::init_full( + timer, + None, + CLOCK_VIRTUAL, + Timer::NS, + 0, + timer_handler, + |t| &mut t.qemu_timer, + ); } =20 fn get_state(&self) -> &HPETState { @@ -619,7 +622,7 @@ pub struct HPETState { =20 /// HPET timer array managed by this timer block. #[doc(alias =3D "timer")] - timers: [BqlRefCell; HPET_MAX_TIMERS], + timers: [HPETTimer; HPET_MAX_TIMERS], #[property(rename =3D "timers", default =3D HPET_MIN_TIMERS)] num_timers: usize, num_timers_save: BqlCell, @@ -662,11 +665,10 @@ fn init_timers(this: &mut MaybeUninit) { =20 // Initialize in two steps, to avoid calling Timer::init_full = on a // temporary that can be moved. - let timer =3D timer.write(BqlRefCell::new(HPETTimer::new( - index.try_into().unwrap(), - state, - ))); - HPETTimer::init_timer_with_cell(timer); + let timer =3D timer.write(HPETTimer::new(index.try_into().unwr= ap(), state)); + // SAFETY: HPETState is pinned + let timer =3D unsafe { Pin::new_unchecked(timer) }; + HPETTimer::init_timer(timer); } } =20 @@ -683,8 +685,7 @@ fn set_cfg_reg(&self, regs: &mut HPETRegisters, shift: = u32, len: u32, val: u64) self.hpet_offset .set(ticks_to_ns(regs.counter) - CLOCK_VIRTUAL.get_ns()); =20 - for timer in self.timers.iter().take(self.num_timers) { - let t =3D timer.borrow(); + for t in self.timers.iter().take(self.num_timers) { let id =3D t.index as usize; let tn_regs =3D ®s.tn_regs[id]; =20 @@ -697,8 +698,8 @@ fn set_cfg_reg(&self, regs: &mut HPETRegisters, shift: = u32, len: u32, val: u64) // Halt main counter and disable interrupt generation. regs.counter =3D self.get_ticks(); =20 - for timer in self.timers.iter().take(self.num_timers) { - timer.borrow().del_timer(regs); + for t in self.timers.iter().take(self.num_timers) { + t.del_timer(regs); } } =20 @@ -720,9 +721,9 @@ fn set_int_status_reg(&self, regs: &mut HPETRegisters, = shift: u32, _len: u32, va let new_val =3D val << shift; let cleared =3D new_val & regs.int_status; =20 - for (index, timer) in self.timers.iter().take(self.num_timers).enu= merate() { - if cleared & (1 << index) !=3D 0 { - timer.borrow().update_irq(regs, false); + for t in self.timers.iter().take(self.num_timers) { + if cleared & (1 << t.index) !=3D 0 { + t.update_irq(regs, false); } } } @@ -807,8 +808,8 @@ fn realize(&self) -> util::Result<()> { =20 fn reset_hold(&self, _type: ResetType) { let mut regs =3D self.regs.borrow_mut(); - for timer in self.timers.iter().take(self.num_timers) { - timer.borrow().reset(&mut regs); + for t in self.timers.iter().take(self.num_timers) { + t.reset(&mut regs); } =20 regs.counter =3D 0; @@ -864,7 +865,7 @@ fn read(&self, addr: hwaddr, size: u32) -> u64 { use DecodedRegister::*; use GlobalRegister::*; (match target { - Timer(timer, tn_target) =3D> timer.borrow().read(tn_target, re= gs), + Timer(t, tn_target) =3D> t.read(tn_target, regs), Global(CAP) =3D> regs.capability, /* including HPET_PERIOD 0x0= 04 */ Global(CFG) =3D> regs.config, Global(INT_STATUS) =3D> regs.int_status, @@ -895,9 +896,7 @@ fn write(&self, addr: hwaddr, value: u64, size: u32) { use DecodedRegister::*; use GlobalRegister::*; match target { - Timer(timer, tn_target) =3D> timer - .borrow() - .write(tn_target, &mut regs, value, shift, len), + Timer(t, tn_target) =3D> t.write(tn_target, &mut regs, value, = shift, len), Global(CAP) =3D> {} // General Capabilities and ID Register: R= ead Only Global(CFG) =3D> self.set_cfg_reg(&mut regs, shift, len, value= ), Global(INT_STATUS) =3D> self.set_int_status_reg(&mut regs, shi= ft, len, value), diff --git a/rust/util/src/timer.rs b/rust/util/src/timer.rs index c6b3e4088ec..829f52d111e 100644 --- a/rust/util/src/timer.rs +++ b/rust/util/src/timer.rs @@ -45,14 +45,14 @@ impl Timer { } =20 /// Create a new timer with the given attributes. - pub fn init_full<'timer, 'opaque: 'timer, T, F>( - self: Pin<&'timer mut Self>, + pub fn init_full( + opaque: Pin<&mut T>, timer_list_group: Option<&TimerListGroup>, clk_type: ClockType, scale: u32, attributes: u32, _cb: F, - opaque: &'opaque T, + field: impl FnOnce(&mut T) -> &mut Self, ) where F: for<'a> FnCall<(&'a T,)>, { @@ -70,8 +70,10 @@ pub fn init_full<'timer, 'opaque: 'timer, T, F>( =20 // SAFETY: the opaque outlives the timer unsafe { + let opaque =3D Pin::into_inner_unchecked(opaque); + let timer =3D field(opaque).as_mut_ptr(); timer_init_full( - self.as_mut_ptr(), + timer, if let Some(g) =3D timer_list_group { g as *const TimerListGroup as *mut _ } else { @@ -81,7 +83,7 @@ pub fn init_full<'timer, 'opaque: 'timer, T, F>( scale as c_int, attributes as c_int, Some(timer_cb), - (opaque as *const T).cast::().cast_mut(), + (opaque as *mut T).cast::(), ) } } --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827229; cv=none; d=zohomail.com; s=zohoarc; b=Yszu+CPabWXhMhekBF/j3jl/w4bx99PBCV915UqkZuOZ/+FadSnL9DyxQ4+WIo96XZWkyeV505QuzvO53+use98EYcribIX9oDYh7fIz3KXnIPsP0MY+B3gxm9umcTpLxT5MV4Nx4fiivLWlwLrjidJ1p7d7VWvhET8fFcwpvPo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827229; 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=xJg73JCP5bk90I6eF87pOlmwqjr/KR3OYSz/2lMy7Lo=; b=gKOrlAJmIkBoqtVcTpVzSGA6GnJvf6vcBtarBxVyb/9fURJ358IhE6uP8PtX9Z8x6Ppk9NpvJ4Rm3htFwZhVklgsLELWl6t1JHm3JgkHwMLYtOSt2T9AfB9ZcI/VaV9B/A696KMs0ZOok0C7yyEz3QaZdp0XHn3KvMPny5lob0I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17668272295221008.2350228001667; Sat, 27 Dec 2025 01:20:29 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQRk-0008RR-VF; Sat, 27 Dec 2025 04:18:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRb-0007PD-3F for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:39 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRZ-0004Bh-4G for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:38 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-84--IIT5waaMqWW5_FA3yzWwA-1; Sat, 27 Dec 2025 04:18:33 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4792bd2c290so73398945e9.1 for ; Sat, 27 Dec 2025 01:18:33 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d193621c8sm429301655e9.7.2025.12.27.01.18.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:18:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827116; 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=xJg73JCP5bk90I6eF87pOlmwqjr/KR3OYSz/2lMy7Lo=; b=A1jRbETd/SILeAf+9rl+Lm03V0iZUvplZs/vlbfpb5UQ2wb3gKe1RgdFfiUmfrDb8LEJyN RgRHjHCdsMpY9IAjgkJLUWBiuQWGy8ET14VsEyrBsCqGp4prLy3XT6NkesFdG0Fwur/ZWc GKD+duX7T6mE40IwbcCFIV5VORW+v8M= X-MC-Unique: -IIT5waaMqWW5_FA3yzWwA-1 X-Mimecast-MFC-AGG-ID: -IIT5waaMqWW5_FA3yzWwA_1766827113 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827112; x=1767431912; 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; bh=xJg73JCP5bk90I6eF87pOlmwqjr/KR3OYSz/2lMy7Lo=; b=KY9tad2y4nmqWF4zgMWb7VMJBeWiMIP3nQ+IGgCLyXrGB8giHY7Ga7R4eAxnCnKESb oQ09ZzSJet9SBCbH9vHtkXfGpiz7CRhn5KJcjXH98hsXPlFIMHp9vyIulIHKDxd2Z2WO kxVZ5RpPkRQ/OmstUS4SAxfWxlyxSaTBsU0VpnogUieOpE0Mut6aXZG+yk93Eb3cDLig dysxZXQoqX1AM8kZm3zSNTJ0gsueFACr96lYKfmMbThrNkdb6XwHeACndS5Jc5rhBNVZ v5UGKiKAsd/Tj2AJSCidn2UTeqaptQqIUWyioGkaW9RdqNGOeg5MgUnpO+uyYO03LK5K o5ag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827112; x=1767431912; 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; bh=xJg73JCP5bk90I6eF87pOlmwqjr/KR3OYSz/2lMy7Lo=; b=YJWBRnPR8MpxGsuTy1ahjUYwep2XCC9b3OL2dgUTbbOKVkxNugogP13uOBSPvLSCac OhzzPMi5oQTOIQ6P0+ilYlcnP+DKYH2e6VqmAhNnooJabXmczW3fLUqajPsGk8vcsJ6x fiShrLKUUqrEqOnaY3/GlQyeJdPIy/OfpHd0xTIkOicn3vNfJGMHnKKVIUPRB+BuiMFN gl1Wf3kboGXflQSivTgGDARVp2ZRQTE/blniBzI0EjBom5/j9LVtWc7NS2C7biVqtt9v a5ae9YvXxmuu1WR7jPgDRfHsLYoYZdVhg2ZYZm+76CAzZADrnrkNNlt2g9EeBqgAk7kV Z2Tw== X-Gm-Message-State: AOJu0YxxTOueZkmCejK9gqB9t+t5uwTgFWmjrC3/2P4xcymjcrASn/Iz oQwyqu88Z4HrNjGFkW3O7K/K02swERAJjB9urXlmJjYllw6BzXNuO119JkNSL+N3BSwxUJ6QB3W lFiWRZlheI8p1e0i02/JohNFdB0cvi3zvSjPxerxzlHXJpLGgnLc3ZXQpcj16nOH3TVv4JtZlHp VdswxkbEDja2r2P7rsL9A84dpMQDo3AaTrV2TGUQ8b X-Gm-Gg: AY/fxX5h4WbgS0zyTwYP4JpakVkqraXnl41Gzo+ezc7YgcYGn5RYGiYnWj46jQretGu 0+PukbeOW9Yr84CJxZoNvwfy8X3l6Ix1AAGtCy5xsbky0yVI2UioG2AgaaFAgc8g56WgHAkEzc5 cIMMzuRLhbX+hsAP5BjKJzUp7Ie9ymuYrAXJahWDUu4VpFdmTwnJ+esQIbOA75Nom9CvNvRSeoX luuSKa2mC2RnZmVeeruVEbL4g+Qjbtr8J5rQCil4IHGl87ElomqCmCvC8MEQVvPIKQWjGfGzpuq /8MjpTON0PnqGSAx+e2QClfAM1rqjFItNjXPUjo53MMAg+YrUg7hYeBtHSkFs+35afPeVRrUhOb hKZ7RaQpBUghHUUdarNIxbzB8kQzkE9NU1jkzxpoZMCPEyPSZzFIczIyO0e2l/2uK7atSUIYXpc +yeVCg5KFsztkKzXA= X-Received: by 2002:a05:600c:1385:b0:477:7b16:5fb1 with SMTP id 5b1f17b1804b1-47d3a5f47b3mr133615155e9.7.1766827111893; Sat, 27 Dec 2025 01:18:31 -0800 (PST) X-Google-Smtp-Source: AGHT+IH16AAAEs8WOB3izfhztSHCIKz03DbffUWBXBoaojP8vqKu2zBDnjrrWhqPVWUjKhV2d8RZmw== X-Received: by 2002:a05:600c:1385:b0:477:7b16:5fb1 with SMTP id 5b1f17b1804b1-47d3a5f47b3mr133614875e9.7.1766827111446; Sat, 27 Dec 2025 01:18:31 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 065/153] rust/hpet: move hpet_offset to HPETRegisters Date: Sat, 27 Dec 2025 10:14:52 +0100 Message-ID: <20251227091622.20725-66-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827229806158500 Content-Type: text/plain; charset="utf-8" Likewise, do not separate hpet_offset from the other registers. However, because it is migrated in a subsection it is necessary to copy it out of HPETRegisters and into a BqlCell<>. Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- rust/hw/timer/hpet/src/device.rs | 69 ++++++++++++++++++-------------- 1 file changed, 40 insertions(+), 29 deletions(-) diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index 0dbfc5b3bab..41d5c8fea0e 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -362,8 +362,9 @@ fn update_irq(&self, regs: &mut HPETRegisters, set: boo= l) { self.set_irq(regs, set); } =20 - fn arm_timer(&self, tn_regs: &mut HPETTimerRegisters, tick: u64) { - let mut ns =3D self.get_state().get_ns(tick); + fn arm_timer(&self, regs: &mut HPETRegisters, tick: u64) { + let mut ns =3D regs.get_ns(tick); + let tn_regs =3D &mut regs.tn_regs[self.index as usize]; =20 // Clamp period to reasonable min value (1 us) if tn_regs.is_periodic() && ns - tn_regs.last < 1000 { @@ -375,21 +376,22 @@ fn arm_timer(&self, tn_regs: &mut HPETTimerRegisters,= tick: u64) { } =20 fn set_timer(&self, regs: &mut HPETRegisters) { + let cur_tick: u64 =3D regs.get_ticks(); let tn_regs =3D &mut regs.tn_regs[self.index as usize]; - let cur_tick: u64 =3D self.get_state().get_ticks(); =20 tn_regs.wrap_flag =3D 0; tn_regs.update_cmp64(cur_tick); + + let mut next_tick: u64 =3D tn_regs.cmp64; if tn_regs.is_32bit_mod() { // HPET spec says in one-shot 32-bit mode, generate an interru= pt when // counter wraps in addition to an interrupt with comparator m= atch. if !tn_regs.is_periodic() && tn_regs.cmp64 > hpet_next_wrap(cu= r_tick) { tn_regs.wrap_flag =3D 1; - self.arm_timer(tn_regs, hpet_next_wrap(cur_tick)); - return; + next_tick =3D hpet_next_wrap(cur_tick); } } - self.arm_timer(tn_regs, tn_regs.cmp64); + self.arm_timer(regs, next_tick); } =20 fn del_timer(&self, regs: &mut HPETRegisters) { @@ -506,10 +508,10 @@ fn reset(&self, regs: &mut HPETRegisters) { =20 /// timer expiration callback fn callback(&self, regs: &mut HPETRegisters) { + let cur_tick: u64 =3D regs.get_ticks(); let tn_regs =3D &mut regs.tn_regs[self.index as usize]; - let cur_tick: u64 =3D self.get_state().get_ticks(); =20 - if tn_regs.is_periodic() && tn_regs.period !=3D 0 { + let next_tick =3D if tn_regs.is_periodic() && tn_regs.period !=3D = 0 { while hpet_time_after(cur_tick, tn_regs.cmp64) { tn_regs.cmp64 +=3D tn_regs.period; } @@ -518,10 +520,16 @@ fn callback(&self, regs: &mut HPETRegisters) { } else { tn_regs.cmp =3D tn_regs.cmp64; } - self.arm_timer(tn_regs, tn_regs.cmp64); + Some(tn_regs.cmp64) } else if tn_regs.wrap_flag !=3D 0 { tn_regs.wrap_flag =3D 0; - self.arm_timer(tn_regs, tn_regs.cmp64); + Some(tn_regs.cmp64) + } else { + None + }; + + if let Some(tick) =3D next_tick { + self.arm_timer(regs, tick); } self.update_irq(regs, true); } @@ -573,9 +581,20 @@ pub struct HPETRegisters { =20 /// HPET Timer N Registers tn_regs: [HPETTimerRegisters; HPET_MAX_TIMERS], + + /// Offset of main counter relative to qemu clock. + pub hpet_offset: u64, } =20 impl HPETRegisters { + fn get_ticks(&self) -> u64 { + ns_to_ticks(CLOCK_VIRTUAL.get_ns() + self.hpet_offset) + } + + fn get_ns(&self, tick: u64) -> u64 { + ticks_to_ns(tick) - self.hpet_offset + } + fn is_legacy_mode(&self) -> bool { self.config & (1 << HPET_CFG_LEG_RT_SHIFT) !=3D 0 } @@ -603,8 +622,7 @@ pub struct HPETState { #[property(rename =3D "msi", bit =3D HPET_FLAG_MSI_SUPPORT_SHIFT, defa= ult =3D false)] flags: u32, =20 - /// Offset of main counter relative to qemu clock. - hpet_offset: BqlCell, + hpet_offset_migration: BqlCell, #[property(rename =3D "hpet-offset-saved", default =3D true)] hpet_offset_saved: bool, =20 @@ -636,14 +654,6 @@ const fn has_msi_flag(&self) -> bool { self.flags & (1 << HPET_FLAG_MSI_SUPPORT_SHIFT) !=3D 0 } =20 - fn get_ticks(&self) -> u64 { - ns_to_ticks(CLOCK_VIRTUAL.get_ns() + self.hpet_offset.get()) - } - - fn get_ns(&self, tick: u64) -> u64 { - ticks_to_ns(tick) - self.hpet_offset.get() - } - fn handle_legacy_irq(&self, irq: u32, level: u32) { let regs =3D self.regs.borrow(); if irq =3D=3D HPET_LEGACY_PIT_INT { @@ -682,8 +692,7 @@ fn set_cfg_reg(&self, regs: &mut HPETRegisters, shift: = u32, len: u32, val: u64) =20 if activating_bit(old_val, new_val, HPET_CFG_ENABLE_SHIFT) { // Enable main counter and interrupt generation. - self.hpet_offset - .set(ticks_to_ns(regs.counter) - CLOCK_VIRTUAL.get_ns()); + regs.hpet_offset =3D ticks_to_ns(regs.counter) - CLOCK_VIRTUAL= .get_ns(); =20 for t in self.timers.iter().take(self.num_timers) { let id =3D t.index as usize; @@ -696,7 +705,7 @@ fn set_cfg_reg(&self, regs: &mut HPETRegisters, shift: = u32, len: u32, val: u64) } } else if deactivating_bit(old_val, new_val, HPET_CFG_ENABLE_SHIFT= ) { // Halt main counter and disable interrupt generation. - regs.counter =3D self.get_ticks(); + regs.counter =3D regs.get_ticks(); =20 for t in self.timers.iter().take(self.num_timers) { t.del_timer(regs); @@ -763,7 +772,7 @@ unsafe fn init(mut this: ParentInit) { // initialized memory to all zeros - simple types (bool/u32/usize)= can // rely on this without explicit initialization. uninit_field_mut!(*this, regs).write(Default::default()); - uninit_field_mut!(*this, hpet_offset).write(Default::default()); + uninit_field_mut!(*this, hpet_offset_migration).write(Default::def= ault()); // Set null_mut for now and post_init() will fill it. uninit_field_mut!(*this, irqs).write(Default::default()); uninit_field_mut!(*this, rtc_irq_level).write(Default::default()); @@ -814,6 +823,7 @@ fn reset_hold(&self, _type: ResetType) { =20 regs.counter =3D 0; regs.config =3D 0; + regs.hpet_offset =3D 0; HPETFwConfig::update_hpet_cfg( self.hpet_id.get(), regs.capability as u32, @@ -826,7 +836,6 @@ fn reset_hold(&self, _type: ResetType) { drop(regs); =20 self.pit_enabled.set(true); - self.hpet_offset.set(0); =20 // to document that the RTC lowers its output on reset as well self.rtc_irq_level.set(0); @@ -871,7 +880,7 @@ fn read(&self, addr: hwaddr, size: u32) -> u64 { Global(INT_STATUS) =3D> regs.int_status, Global(COUNTER) =3D> { let cur_tick =3D if regs.is_hpet_enabled() { - self.get_ticks() + regs.get_ticks() } else { regs.counter }; @@ -907,8 +916,9 @@ fn write(&self, addr: hwaddr, value: u64, size: u32) { =20 fn pre_save(&self) -> Result<(), migration::Infallible> { let mut regs =3D self.regs.borrow_mut(); + self.hpet_offset_migration.set(regs.hpet_offset); if regs.is_hpet_enabled() { - regs.counter =3D self.get_ticks(); + regs.counter =3D regs.get_ticks(); } =20 /* @@ -933,9 +943,10 @@ fn post_load(&self, _version_id: u8) -> Result<(), mig= ration::Infallible> { =20 // Recalculate the offset between the main counter and guest time if !self.hpet_offset_saved { - self.hpet_offset + self.hpet_offset_migration .set(ticks_to_ns(regs.counter) - CLOCK_VIRTUAL.get_ns()); } + regs.hpet_offset =3D self.hpet_offset_migration.get(); =20 Ok(()) } @@ -987,7 +998,7 @@ impl ObjectImpl for HPETState { .minimum_version_id(1) .needed(&HPETState::is_offset_needed) .fields(vmstate_fields! { - vmstate_of!(HPETState, hpet_offset), + vmstate_of!(HPETState, hpet_offset_migration), }) .build(); =20 --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827235; cv=none; d=zohomail.com; s=zohoarc; b=QB07JV18b8s4hKRw5ZXr/AD+UxDilbWv4e95Zrd2CDWfHHD6dmfa91ao+gyTKXNA/hx7W9kY77WolxHT545uhCn6UO597LYPYkPw0DuQ6asiSy6d4iDqsFi9faCeHCu9atJxSJnOyMN8hYTbFh1xz0g7WX6xrWM0uB9Ac6ANDeQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827235; 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=gYnTTtVJ8ZUirzhAJBf/N7drNMZHzXnzITSzRmZeCzQ=; b=azJpnpiwrdHeU9ZhqRTZ7Pmr3Fgi+hRo/0E65uFaOPNNaggKY64YK/qN87fz4+JsdZU+ha9Lmt2IcNc2tqJu41bAkGHGER/PpW7iBctkqNnMctnSlrvRU0tIwSVNiZwdLKDc00/tRfhUtdo0LsZ49rrJGoRkPg2YR99j08snEpU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827235365111.20360277337647; Sat, 27 Dec 2025 01:20:35 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQRj-0008G1-B9; Sat, 27 Dec 2025 04:18:47 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRa-0007NX-N2 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:38 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRZ-0004Bf-5K for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:38 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-381-ZF139d6oMGGnd3zPU_h3fw-1; Sat, 27 Dec 2025 04:18:34 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-47a83800743so43351575e9.0 for ; Sat, 27 Dec 2025 01:18:34 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d193d5372sm452325335e9.14.2025.12.27.01.18.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:18:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827116; 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=gYnTTtVJ8ZUirzhAJBf/N7drNMZHzXnzITSzRmZeCzQ=; b=ieeiDi/1on8o+KawSZTg68WFgAIbPs0jtRe0ldHp4BE0O6llHmgOwz3kWPmQPIven3T35M WvX8AdbHuSIFwW8pIyGkldQe/SKMpLU34UKXjUipTU6FG8jUF1OT/RC8MgN8t6eQJTzcCY /yJNjgk3L+loZ4heg6Pwb0DxeVOZECw= X-MC-Unique: ZF139d6oMGGnd3zPU_h3fw-1 X-Mimecast-MFC-AGG-ID: ZF139d6oMGGnd3zPU_h3fw_1766827113 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827113; x=1767431913; 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; bh=gYnTTtVJ8ZUirzhAJBf/N7drNMZHzXnzITSzRmZeCzQ=; b=ctL+FiiPxOQjhzJj0eNSQvP6b9rL+lkuDKHc7ksx0A4nNcVupfGLnSZkSkM93OGYdK YvtGR4HHWiHnarO7xX0N5BkYKP5spRkR5MT1TUUUHC7dmV7BiWjWdqlHpFn9ln2TaBCX N0kdWDtc8PE8I/3dW/OibZnwBmT8xq2ronasYl7EPUsgeF6j5Rbrlv2MWM1KQMMccKX1 adqPFUwntWIbhW753g8xpPclmy5wN/cyAemfREafgamZMyyZpoClS57wroZnofTaoF0A bZtxFCC07ym23s9zW32UGBI/bwGHSuy9rkajnLD/PURSPUQfB2t9hDwu78iTqzm2rex2 T9Mg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827113; x=1767431913; 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; bh=gYnTTtVJ8ZUirzhAJBf/N7drNMZHzXnzITSzRmZeCzQ=; b=j06K4qc1YHCbO8VafDGdexyaMmcDdXI8bNoSvZmfQ1gLgBKtNCNcbi7pA2DC+cUJMe /vJgS5GmzD6aozMKUTqoHfoKF5jhcnh0VLEeFnIBixsRrS0Z8p3r7jcwS97ekUAs+812 nlC9GINk+PhCKz2n60aoYlPu7+RjnFBMSJ3JCY5iV6KN58yp1wxvs8OyqG/AxXum0FPp OprGJdkplGJuXakq2brif7s1wEccPFm9VStv2vEcvppoAuWsRAPIdv+uaglqOeDg5G4l bcuAMIvkxIvWaBLgBfq5nj3W8jRDM1j7ANU6jwFkCFb/yXSRrqZ7a+eFuG8Lg+JuWEYF k1Ag== X-Gm-Message-State: AOJu0YyV7KKm/2mMok+hhCBUS+go4Pz3cUBpnfKFt2peqTPAqtoIW27+ o9GMhgCGNGsGkuzkB1NAzKAFzEM3ZiPR8onGVu6gAQAZ77SU60Q2jeuCducIF4u8v/7Ix1/tzN+ XFqXa4p8ArjWJo3x3BCLzb593zBqdwFFiSWkGRtEp65aiVSYRIE97CA/4x+OSFbjXBXGiOC66c5 EREBdjunmsNn0pQvEAVn3ccSGSnA9pKCetV11X75ta X-Gm-Gg: AY/fxX6ZQHw/ZUoi0VEIUJg5C1+BqhAodn9znXIKgLHMVvSA6FMhy2wGyUHiH+Jnu2k GsDZFnqaJBehIwKMDGPBl2HRVhdzKLEZK9CfPPDGNhL7aSDHmRbI1fKM9Em63SEVe7vlV67uEqD 29dMkurkZVKSNAqeHZpT88vH4bHZDeBlLkhJP0LcgpvUYXufUdxTfNoht9yxxE1iHnlNq6tx5bo PL1PEPvWoRz9871l6+/Bl7DRfoZ83hiIPwSJalkhvAamqkb2FyeK73URCPTOMDnisjC2ktpF3Au oix3I/+ulSdH3YPC3CQMFVRrD+DAv5YlZDcGJ2OUHupihlloCzkssN9hOHl5SJX9Aqlbm1NQe1V HweG+MOtef7nmoHKvldUfeZb+r6TRR/cLf8VIeehatD470XjmF2j4V8uptoLmyQadU42J9MIPWB /zLfqXjHxdRNYoty4= X-Received: by 2002:a05:600c:45c4:b0:47d:403a:277 with SMTP id 5b1f17b1804b1-47d403a0498mr102533075e9.4.1766827112902; Sat, 27 Dec 2025 01:18:32 -0800 (PST) X-Google-Smtp-Source: AGHT+IE3PZkZWKP7+DMLrY69+AvRk5rfpMchAA7oqI6Q92Nib2PHBMLFl66gzqiBhhegkJr+a90wgQ== X-Received: by 2002:a05:600c:45c4:b0:47d:403a:277 with SMTP id 5b1f17b1804b1-47d403a0498mr102532765e9.4.1766827112482; Sat, 27 Dec 2025 01:18:32 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 066/153] rust: timer: add bindings to timer_mod_ns and timer_expire_time_ns Date: Sat, 27 Dec 2025 10:14:53 +0100 Message-ID: <20251227091622.20725-67-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827235763158501 Content-Type: text/plain; charset="utf-8" These are needed to implement ToMigrationStateShared for timers, and thus allow including them in Migratable<> structs. Signed-off-by: Paolo Bonzini --- rust/util/src/timer.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/rust/util/src/timer.rs b/rust/util/src/timer.rs index 829f52d111e..f8e65c9a0ac 100644 --- a/rust/util/src/timer.rs +++ b/rust/util/src/timer.rs @@ -10,7 +10,8 @@ use common::{callbacks::FnCall, Opaque}; =20 use crate::bindings::{ - self, qemu_clock_get_ns, timer_del, timer_init_full, timer_mod, QEMUCl= ockType, + self, qemu_clock_get_ns, timer_del, timer_expire_time_ns, timer_init_f= ull, timer_mod, + timer_mod_ns, QEMUClockType, }; =20 /// A safe wrapper around [`bindings::QEMUTimer`]. @@ -88,6 +89,19 @@ pub fn init_full( } } =20 + pub fn expire_time_ns(&self) -> Option { + // SAFETY: the only way to obtain a Timer safely is via methods th= at + // take a Pin<&mut Self>, therefore the timer is pinned + let ret =3D unsafe { timer_expire_time_ns(self.as_ptr()) }; + i64::try_from(ret).ok() + } + + pub fn modify_ns(&self, expire_time: u64) { + // SAFETY: the only way to obtain a Timer safely is via methods th= at + // take a Pin<&mut Self>, therefore the timer is pinned + unsafe { timer_mod_ns(self.as_mut_ptr(), expire_time.try_into().un= wrap()) } + } + pub fn modify(&self, expire_time: u64) { // SAFETY: the only way to obtain a Timer safely is via methods th= at // take a Pin<&mut Self>, therefore the timer is pinned --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827562; cv=none; d=zohomail.com; s=zohoarc; b=A4KiqJswTqBfg7YH0y7qXUD8WcDJptJBbqWvkMByJmIbGS+yeGnvbykQhsqsEdHEEf83ZMqAIlj/8vlwBnFEkNAIqJzE7gY6eLmrZgJjxwfjE+V+nUFyy0VLGd5YQvZ/MYeox41LQxNgnu3E7JPNPuFUB8fzNXXhcohpydTOg40= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827562; 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=VFYcLWaF6fd9NaYzHhETNwC24PxBBmji/jH2TTf+UfQ=; b=U4ok88cJ/m2PFUK9kjT7TZ/4NbmkHoRoYl+GVsZ94ypNiPgodjrO/eBAJsSI9uZnyxHonc00N0hy5XNfGXyyvSXCUvLG+2rZZ5eHT1EXixIbSdVo0X1mSoYQFsGNiz0BMH7O5i+IgQqDEXRAc9qTUk6/6Mbmknh7lHJI6dKgmRE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827562059616.4088320095449; Sat, 27 Dec 2025 01:26:02 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQRr-0000xE-Ee; Sat, 27 Dec 2025 04:18:55 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRp-0000hZ-HJ for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:53 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRn-0004Sy-PY for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:53 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-246-QA11pz_wPDS0tU7M3aoXmA-1; Sat, 27 Dec 2025 04:18:38 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-4779b432aecso45563785e9.0 for ; Sat, 27 Dec 2025 01:18:38 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d193cbc0bsm442954365e9.11.2025.12.27.01.18.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:18:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827131; 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=VFYcLWaF6fd9NaYzHhETNwC24PxBBmji/jH2TTf+UfQ=; b=D+p7amI51HfzfXtRPeltq9PA5T4LEqVXJ9pnrOJQ7ed+AqlTW4RGXZPjnqcoezp3LfUhAT 7MfikGdm5pYfifNkDe9eWSoOE8JzfUAYPRfKJrOPiaPtDgijAR9HkHlKzkOLfvkNGafeq0 TvcInn1/KpFBF4PWqMfmPZYTbP4ltEs= X-MC-Unique: QA11pz_wPDS0tU7M3aoXmA-1 X-Mimecast-MFC-AGG-ID: QA11pz_wPDS0tU7M3aoXmA_1766827116 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827115; x=1767431915; 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; bh=VFYcLWaF6fd9NaYzHhETNwC24PxBBmji/jH2TTf+UfQ=; b=onpQWD7yNPXEy50vqDmTt0WtaJiRbY4YKK3tHH9uUOz0yWb+Mjqc7pO7MCYMOEyc/f 5I4+h6b/2lm306lPYcfouscjzh3mq+BLJaUSFlx0o6UwX698nsiDuPkYK2pVbpBJu8Nw AC0VYbNWxpN2G4ozccbmsJDrfyYN0U354+7tIvYUb7MZzIvn8hKM1oHcr7fL2rjy4/+Z EmvqR7Z3Mb/yD5MfXJsiI6LjGpIKR8JF3Rh45D8sCs9pkwHYkOt16sXjaom2hawOBn8t KJTP0AwjpnU53IsI1P76Jv2OFeQ5NNrHLRRE0XF9UIxwqN7l/mFDMEW1RjjHaUj5LEVC eYgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827115; x=1767431915; 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; bh=VFYcLWaF6fd9NaYzHhETNwC24PxBBmji/jH2TTf+UfQ=; b=nIleM4BY+q4+SCAbcPwujSr0vlDH+P1UQN/g2YUF8XhE+rJ+pPDfNqej+d59ZD1Teh mBksTFCWJRNstHW9E+DPmRZ8QTUsWQxJYd8TBQGmhrcg3h2w7aDdYZ0Rv+r8xVwtxXT3 rA8AyAgusowGneu0u9r+EXSYjZn4KoqF160x4JDUYw+iAx4hxFrWcQYnfYdcggGOwbUt hVKwAvVm4/y63XiTbjw9iRgl52XEUExOLbLMwTwWSd45mC4H66S89s8aZgW4Xl+eulBV jlgX+Z4SEW2ALxXnMionzZq1zNx2MHlH/GqhfaAzIdOTA53LARO/oZw9mM8B8DfKiNw/ xZeg== X-Gm-Message-State: AOJu0YzHLPd3evss1yepcoOmIplgX2wAyjv4ioZPeDxSDr7qftfBAoP3 3Uu4W4mMnHcW0PJaT3fazCbb+GixxDBlPYIZKYvPgWmyjFP6cpXUbECVA/vENU5Sn+362KgWraT YFO6qnG8il4PUFr1tKpCYhZj7KPlh5K7g3om16JPLAD0g2KxiUR8ZjuWn4fWcaViE4lOc6kgTKw 0VnmcT7v/jxgG5abjrLB/dopb3c7B2ER/1jZsafYoP X-Gm-Gg: AY/fxX43Zac7+3SMokI7JcsHrqzhCXM/rZ+uuGXFqO4s+yWGz2Oe90Zkrvp07zRyZRK 8lWR8an8r+NaDia+PDALhQyaeyWIQlD5HLzLmHoVKyomZLKqSvR/bQ5tM+AOaIY1+W8FOQnuVnl ijgNVmXOoGTMWc3T9uVNopQSsF5U68Sb9UkY0pLXSamxyPZM25sZLUqi4eEPCGyCtR096/fRoGj O+W4sgW7FW0Vnkt4xzfLhDGYTxThtI+9F+NX1sFbWjrw27Em/liLXtd6ey9oR84h6EAyHaV3bsM MmHwdUYu3crOL5llQjQxDPPXh2W/NDdDv9opjQinA8UtTuv3gDl6kL8/28caac0o85gYoo+Cj8V gI8G4/5xiCdWJvo6jVgfeOW08OmLvNjjG+7AGch950VaIqplOq4LeHYyVZej8LsWO9PW2CZ88Kv G3UQBf5mLsyntlLu4= X-Received: by 2002:a05:600c:4e8e:b0:477:b0b8:4dd0 with SMTP id 5b1f17b1804b1-47d1957b120mr291175795e9.17.1766827115239; Sat, 27 Dec 2025 01:18:35 -0800 (PST) X-Google-Smtp-Source: AGHT+IERLqjFfUpsVqODdAeXDTx0Q9NlLiWoQPmI/6aNwRUDfVBXXRjM6Kbj43CvhA2uEyyQ/xu2vw== X-Received: by 2002:a05:600c:4e8e:b0:477:b0b8:4dd0 with SMTP id 5b1f17b1804b1-47d1957b120mr291175525e9.17.1766827114774; Sat, 27 Dec 2025 01:18:34 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 067/153] rust: migration: implement ToMigrationState for Timer Date: Sat, 27 Dec 2025 10:14:54 +0100 Message-ID: <20251227091622.20725-68-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827562879158500 Content-Type: text/plain; charset="utf-8" Timer is a complex struct, allow adding it to a struct that uses #[derive(ToMigrationState)]; similar to vmstate_timer, only the expiration time has to be preserved. In fact, because it is thread-safe, ToMigrationStateShared can also be implemented without needing a cell or mutex that wraps the timer. Signed-off-by: Paolo Bonzini --- rust/hw/timer/hpet/src/device.rs | 1 - rust/migration/src/migratable.rs | 31 +++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index 41d5c8fea0e..375bea4c96b 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -250,7 +250,6 @@ const fn get_individual_route(&self) -> usize { } =20 /// HPET Timer Abstraction -#[repr(C)] #[derive(Debug)] pub struct HPETTimer { /// timer N index within the timer block (`HPETState`) diff --git a/rust/migration/src/migratable.rs b/rust/migration/src/migratab= le.rs index 02efe31d72c..7748aac2f27 100644 --- a/rust/migration/src/migratable.rs +++ b/rust/migration/src/migratable.rs @@ -140,6 +140,26 @@ fn restore_migrated_state_mut( =20 impl_for_primitive!(u8, u16, u32, u64, i8, i16, i32, i64, bool); =20 +impl ToMigrationState for util::timer::Timer { + type Migrated =3D i64; + + fn snapshot_migration_state(&self, target: &mut i64) -> Result<(), Inv= alidError> { + // SAFETY: as_ptr() is unsafe to ensure that the caller reasons ab= out + // the pinning of the data inside the Opaque<>. Here all we do is + // access a field. + *target =3D self.expire_time_ns().unwrap_or(-1); + Ok(()) + } + + fn restore_migrated_state_mut( + &mut self, + source: Self::Migrated, + version_id: u8, + ) -> Result<(), InvalidError> { + self.restore_migrated_state(source, version_id) + } +} + impl ToMigrationState for [T; N] where [T::Migrated; N]: Default, @@ -237,6 +257,17 @@ fn restore_migrated_state( ) -> Result<(), InvalidError>; } =20 +impl ToMigrationStateShared for util::timer::Timer { + fn restore_migrated_state(&self, source: i64, _version_id: u8) -> Resu= lt<(), InvalidError> { + if source >=3D 0 { + self.modify_ns(source as u64); + } else { + self.delete(); + } + Ok(()) + } +} + impl ToMigrationStateShared for= [T; N] where [T::Migrated; N]: Default, --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827547; cv=none; d=zohomail.com; s=zohoarc; b=O3266mbn4k0ThzV09MDgQIVhrTkLfUzbriXENTZ5hRm/2mVlxuQucJmNF8j4CXr3qZkySvwq6137qUi9uyEurqP/kRv7Y75+1v2UtJZmiCvqWzvFvOkfsvjgxkOowy9GL5YG2qvjTnB7FyhoKaw+Fz99wNutrQpu6aj9OI1cPxY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827547; 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=FwyQTgzPobAZmx3kBA+jclwVD+zv80vSUor+sTPtx4s=; b=IX1B1haNeIbJAmv1vWJH2XExBfwaqRBj2r0hnoCDqnuuHR+az4gZVTUSMEbpQMQGSuo+lGykCPoHeDjSU2qafohlS+53ycIkLulL+cHJctJLVE4weKl6zxBBFfWBGBMg/tWQ6FITPt5xjhXBa0/StcI9o38KNuX9Ofibcg9fMoA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827547318138.04809380533254; Sat, 27 Dec 2025 01:25:47 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQRo-0000dV-Lk; Sat, 27 Dec 2025 04:18:52 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRm-0000IM-GN for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:50 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRk-0004H4-8w for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:50 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-518-q3oZI9hlMoS1k0IpLxIKcg-1; Sat, 27 Dec 2025 04:18:39 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-477964c22e0so53227935e9.0 for ; Sat, 27 Dec 2025 01:18:39 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea2278dsm50622918f8f.18.2025.12.27.01.18.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:18:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827120; 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=FwyQTgzPobAZmx3kBA+jclwVD+zv80vSUor+sTPtx4s=; b=RNKrhmfrmg7jAAcYBTD4sAKuIEEjyoxcdsYhknfR3kCC+AJV7o6iYu5LYv9edoULLpMxKM ZFC+K4U7Af3RfV3jHXf3cG/i3pntRClXGb0ziMz5ioo68Khz9pqrngLl/AUEUYhbqqh5/T c2djDnIdNJqlQIf0RY9N/BCNXkutZXc= X-MC-Unique: q3oZI9hlMoS1k0IpLxIKcg-1 X-Mimecast-MFC-AGG-ID: q3oZI9hlMoS1k0IpLxIKcg_1766827118 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827117; x=1767431917; 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; bh=FwyQTgzPobAZmx3kBA+jclwVD+zv80vSUor+sTPtx4s=; b=HUFHC0PFQPW0gJ7T5HnFhrmRTN/8IgTuTX2VYINCUH717FigSM0bZDdEAYDRyvX8X/ SRWVrUGyAhwN03zsldrUmvt72BHVj1SM9/l9K+DSA4m94ajaPKwQJe5Xir6BoAZ1OHBd MMHoIimJuXcaRsNfoDoDhm+6jiHyg9nReuL/Q29lTTJG8ioIbK90bOt77/XLA+sEF0hI ytqtid1KPecSdmg5ymG9HtQeGc+rsNSfj1LIx8Wi/SWJg9Tp0cRRgMcihhp+LKVwpZGE ECgmQ2ePQRCAnK/1Xfdsg8ogUvEeshhZGnmSPr+XC2rUULC61X4m4SZgJKxamqTYK0QF Aa2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827117; x=1767431917; 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; bh=FwyQTgzPobAZmx3kBA+jclwVD+zv80vSUor+sTPtx4s=; b=Ai2yhHGPEj0HJUiEBBsipY+R3UFCoKTz+ln5sYgd9e0fsyOUNLQGSCL4NHoqfjtYMl LjKQ13a2zKh+jFK00CALfEFiuv6/DYjTmraH2Mgdmu2kjlJVTqJ1epyXbDomPqPBe71V 65o+XXCNyyYSEcdggVLSO5ww8/b1jyd5w95SKIce524A1vW/0cCnWU1UkFVzSW+gEybV z59/OcK8GWNR9SIc0qO20+P8h1R1ln5h9v8JoGB24D8SpMbOKJXrBcVBt7KKbWmiJ8oc L6d+IRVsbhKhYReQRQalnCT94luAauCuGFUuQgPSh1nD+UOzNxmEr5ubKZfC7MtUWnKd +Qng== X-Gm-Message-State: AOJu0YzsirSJl1yCMa1gZEL6zdRK0IRXB9uSI9Hyk3/EUKX663OVfdWM bs49v//Cdxb7NhGtlR+iboFMQAEHphnJVKX03irSTU7WbYwCQjaqwIYMKpkjlz6OLzDe2+B4Dv9 eY3hABtdI00KNLyD96+5u7QQgAs6Dwl4nnrfhEfkZG0x9XOn0MqoMnJOUr3m/XhH5y9QIZySRCa qgfoiQE7OuMfX9yBtF2MIMTHV/Cf/KL/pHMpzdXT+S X-Gm-Gg: AY/fxX5n4uKljJh0AMzlJIxEfrByeqLfRgwO9Hcx/H8zb0g6DI0vys95wk1+0uattMD /CllxGSLFlGxdja1/FHZ1LEo6V0vJIqTDvUr9EJchUK0+alYf7BoDb1R2mQhysIfmsDp9tT1DAd X9AunZOrv6artMMLt/UH/yg45Z2nY4e8Tbgd7rLnpUT/uG9UyDXdp6USlorCiuemVocXOsWryfP y9pPH8fnaJJG0uuEcvqMp+EmQGEpH2vc0rdzFCfPVKLncm/V8swHe/ysDKmRNqVFeBvMQ5LYnuF dovHSNdjjJOA6UWgeVnkOl6hAwoFzdnMu8GEA6KyoOuVPo2AiIZCZtY1OC5TgMFoZqu+Dv2si2s vQJTJiI7MiVj+nSM2xROX6VWzdavYhOkbreP7hTsF3kWuZwBCEwQmtIoHQzxPCsawYkAi7Od1OK Ng+NloDMogywSxNXE= X-Received: by 2002:a05:600c:4d98:b0:475:d7fd:5c59 with SMTP id 5b1f17b1804b1-47be29f362amr218501555e9.16.1766827117112; Sat, 27 Dec 2025 01:18:37 -0800 (PST) X-Google-Smtp-Source: AGHT+IGC2A9ttI2vvn2d4GyHD6Rm2yvmZXTPTwLyOpqnEL/0hWFXItsVEC66hL0FWlWsHa1RPwEDiw== X-Received: by 2002:a05:600c:4d98:b0:475:d7fd:5c59 with SMTP id 5b1f17b1804b1-47be29f362amr218501345e9.16.1766827116597; Sat, 27 Dec 2025 01:18:36 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 068/153] rust/hpet: Apply Migratable<> wrapper and ToMigrationState Date: Sat, 27 Dec 2025 10:14:55 +0100 Message-ID: <20251227091622.20725-69-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827548912158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Before using Mutex<> to protect HPETRegisters, it's necessary to apply Migratable<> wrapper and ToMigrationState first since there's no pre-defined VMState for Mutex<>. In addition, this allows to move data from HPETRegisters' vmstate to HPETTimer's, so as to preserve the original migration format of the C implementation. To do that, HPETTimer is wrapped with Migratable<> as well but the implementation of ToMigrationStateShared is hand-written. Note that even though the HPETRegistersMigration struct is generated by ToMigrationState macro, its VMState still needs to be implemented by hand. Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251113051937.4017675-21-zhao1.liu@intel.c= om [Added HPETTimer implementation and restored compatible migration format. -= Paolo] Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- rust/hw/timer/hpet/src/device.rs | 139 +++++++++++++++++++++++-------- 1 file changed, 102 insertions(+), 37 deletions(-) diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index 375bea4c96b..a0c122d42bb 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -13,7 +13,7 @@ use bql::prelude::*; use common::prelude::*; use hwcore::prelude::*; -use migration::{self, prelude::*}; +use migration::{self, prelude::*, ToMigrationStateShared}; use qom::prelude::*; use system::{ bindings::{address_space_memory, address_space_stl_le}, @@ -176,7 +176,6 @@ fn timer_handler(t: &HPETTimer) { t.callback(&mut hpet_regs.borrow_mut()) } =20 -#[repr(C)] #[derive(Debug, Default)] pub struct HPETTimerRegisters { // Memory-mapped, software visible timer registers @@ -563,11 +562,13 @@ fn write( } } =20 -#[repr(C)] -#[derive(Default)] +#[derive(Default, ToMigrationState)] pub struct HPETRegisters { // HPET block Registers: Memory-mapped, software visible registers /// General Capabilities and ID Register + /// + /// Constant and therefore not migrated. + #[migration_state(omit)] capability: u64, /// General Configuration Register config: u64, @@ -579,9 +580,15 @@ pub struct HPETRegisters { counter: u64, =20 /// HPET Timer N Registers + /// + /// Migrated as part of `Migratable` + #[migration_state(omit)] tn_regs: [HPETTimerRegisters; HPET_MAX_TIMERS], =20 /// Offset of main counter relative to qemu clock. + /// + /// Migrated as a subsection and therefore snapshotted into [`HPETStat= e`] + #[migration_state(omit)] pub hpet_offset: u64, } =20 @@ -613,7 +620,7 @@ fn is_timer_int_active(&self, index: usize) -> bool { pub struct HPETState { parent_obj: ParentField, iomem: MemoryRegion, - regs: BqlRefCell, + regs: Migratable>, =20 // Internal state /// Capabilities that QEMU HPET supports. @@ -639,7 +646,7 @@ pub struct HPETState { =20 /// HPET timer array managed by this timer block. #[doc(alias =3D "timer")] - timers: [HPETTimer; HPET_MAX_TIMERS], + timers: [Migratable; HPET_MAX_TIMERS], #[property(rename =3D "timers", default =3D HPET_MIN_TIMERS)] num_timers: usize, num_timers_save: BqlCell, @@ -674,9 +681,12 @@ fn init_timers(this: &mut MaybeUninit) { =20 // Initialize in two steps, to avoid calling Timer::init_full = on a // temporary that can be moved. - let timer =3D timer.write(HPETTimer::new(index.try_into().unwr= ap(), state)); + let timer =3D timer.write(Migratable::new(HPETTimer::new( + index.try_into().unwrap(), + state, + ))); // SAFETY: HPETState is pinned - let timer =3D unsafe { Pin::new_unchecked(timer) }; + let timer =3D unsafe { Pin::new_unchecked(&mut **timer) }; HPETTimer::init_timer(timer); } } @@ -1001,47 +1011,102 @@ impl ObjectImpl for HPETState { }) .build(); =20 -impl_vmstate_struct!( - HPETTimerRegisters, - VMStateDescriptionBuilder::::new() - .name(c"hpet_timer/regs") +#[derive(Default)] +pub struct HPETTimerMigration { + index: u8, + config: u64, + cmp: u64, + fsb: u64, + period: u64, + wrap_flag: u8, + qemu_timer: i64, +} + +impl ToMigrationState for HPETTimer { + type Migrated =3D HPETTimerMigration; + + fn snapshot_migration_state( + &self, + target: &mut Self::Migrated, + ) -> Result<(), migration::InvalidError> { + let state =3D self.get_state(); + let regs =3D state.regs.borrow_mut(); + let tn_regs =3D ®s.tn_regs[self.index as usize]; + + target.index =3D self.index; + target.config =3D tn_regs.config; + target.cmp =3D tn_regs.cmp; + target.fsb =3D tn_regs.fsb; + target.period =3D tn_regs.period; + target.wrap_flag =3D tn_regs.wrap_flag; + self.qemu_timer + .snapshot_migration_state(&mut target.qemu_timer)?; + + Ok(()) + } + + fn restore_migrated_state_mut( + &mut self, + source: Self::Migrated, + version_id: u8, + ) -> Result<(), migration::InvalidError> { + self.restore_migrated_state(source, version_id) + } +} + +impl ToMigrationStateShared for HPETTimer { + fn restore_migrated_state( + &self, + source: Self::Migrated, + version_id: u8, + ) -> Result<(), migration::InvalidError> { + let state =3D self.get_state(); + let mut regs =3D state.regs.borrow_mut(); + let tn_regs =3D &mut regs.tn_regs[self.index as usize]; + + tn_regs.config =3D source.config; + tn_regs.cmp =3D source.cmp; + tn_regs.fsb =3D source.fsb; + tn_regs.period =3D source.period; + tn_regs.wrap_flag =3D source.wrap_flag; + self.qemu_timer + .restore_migrated_state(source.qemu_timer, version_id)?; + + Ok(()) + } +} + +const VMSTATE_HPET_TIMER: VMStateDescription =3D + VMStateDescriptionBuilder::::new() + .name(c"hpet_timer") .version_id(1) .minimum_version_id(1) .fields(vmstate_fields! { - vmstate_of!(HPETTimerRegisters, config), - vmstate_of!(HPETTimerRegisters, cmp), - vmstate_of!(HPETTimerRegisters, fsb), - vmstate_of!(HPETTimerRegisters, period), - vmstate_of!(HPETTimerRegisters, wrap_flag), - }) - .build() -); - -const VMSTATE_HPET_TIMER: VMStateDescription =3D - VMStateDescriptionBuilder::::new() - .name(c"hpet_timer") - .version_id(2) - .minimum_version_id(2) - .fields(vmstate_fields! { - vmstate_of!(HPETTimer, qemu_timer), + vmstate_of!(HPETTimerMigration, index), + vmstate_of!(HPETTimerMigration, config), + vmstate_of!(HPETTimerMigration, cmp), + vmstate_of!(HPETTimerMigration, fsb), + vmstate_of!(HPETTimerMigration, period), + vmstate_of!(HPETTimerMigration, wrap_flag), + vmstate_of!(HPETTimerMigration, qemu_timer), }) .build(); =20 -impl_vmstate_struct!(HPETTimer, VMSTATE_HPET_TIMER); +impl_vmstate_struct!(HPETTimerMigration, VMSTATE_HPET_TIMER); =20 const VALIDATE_TIMERS_NAME: &CStr =3D c"num_timers must match"; =20 +// HPETRegistersMigration is generated by ToMigrationState macro. impl_vmstate_struct!( - HPETRegisters, - VMStateDescriptionBuilder::::new() + HPETRegistersMigration, + VMStateDescriptionBuilder::::new() .name(c"hpet/regs") .version_id(2) .minimum_version_id(2) .fields(vmstate_fields! { - vmstate_of!(HPETRegisters, config), - vmstate_of!(HPETRegisters, int_status), - vmstate_of!(HPETRegisters, counter), - vmstate_of!(HPETRegisters, tn_regs), + vmstate_of!(HPETRegistersMigration, config), + vmstate_of!(HPETRegistersMigration, int_status), + vmstate_of!(HPETRegistersMigration, counter), }) .build() ); @@ -1049,8 +1114,8 @@ impl ObjectImpl for HPETState { const VMSTATE_HPET: VMStateDescription =3D VMStateDescriptionBuilder::::new() .name(c"hpet") - .version_id(3) - .minimum_version_id(3) + .version_id(2) + .minimum_version_id(2) .pre_save(&HPETState::pre_save) .post_load(&HPETState::post_load) .fields(vmstate_fields! { --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827298; cv=none; d=zohomail.com; s=zohoarc; b=VAU1GUFkBOvxIwdA1bVhRYeU1/xHK8q6PBi403zCOXK+k1u7wTbGWaakUAqAnSHl5lPxmcmnD/+3NoYLfzSZOerIyUlxdsCbBfSxDBbPF4ltbRi5X4+SfBiNYMOdeY+QesVi7SuryV6dFc5mt7AE6ERKhPbUDWAYclsLeLH9uUo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827298; 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=ObGR5P7eTjQgNjfbpSHVJGhDzxLZp1RWBcBtzTbVYA0=; b=Q4xXR7ID4vKPVxsQ/F/gEE60sK6W3Nsw/e6SwaZeCPUzgj2chLfAHihOjtEkeejWynk3PN9IkceUhUFXgVy6iCwAgxvm0xXgjPjwv4h3qQYr7KPRRg/uV396ZbSjCnsF+Qgv3VJcJRP92xshbM1TybRqlbemO+Bcxd5kJqqj7rY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827298157900.8528090714735; Sat, 27 Dec 2025 01:21:38 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQRp-0000hk-LI; Sat, 27 Dec 2025 04:18:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRn-0000Rf-EY for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:51 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRk-0004MK-Ae for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:51 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-77-BTREEH9pOPmExVTcGAh8QQ-1; Sat, 27 Dec 2025 04:18:41 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-430ffa9fccaso6146228f8f.1 for ; Sat, 27 Dec 2025 01:18:41 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa2beasm48905304f8f.33.2025.12.27.01.18.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:18:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827125; 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=ObGR5P7eTjQgNjfbpSHVJGhDzxLZp1RWBcBtzTbVYA0=; b=dWYKaApuBsWpMPZhYBqNXZPme/Jgcqzu0HFbClpjt0UEVHz9t0jSYnJDGobsCOzR9UlwS/ Jjgbls7HIVG9+VujEwg1iwlf5kBXQHHMScG5+7y+6JxfiuRV3c6OLumkR8gsqm4RmPUL9F ZLxOta8buy0gFLWy07NWm0l4TSYZ2m0= X-MC-Unique: BTREEH9pOPmExVTcGAh8QQ-1 X-Mimecast-MFC-AGG-ID: BTREEH9pOPmExVTcGAh8QQ_1766827120 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827119; x=1767431919; 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; bh=ObGR5P7eTjQgNjfbpSHVJGhDzxLZp1RWBcBtzTbVYA0=; b=nH9vqNbGjEGwvVZntOx2UF+7w0xwYI5aGb5gn8WFbQSHWBgsjG7egsUA9Se7dypeMb s6epwAKl4R+5UqenH/23HuOtZ2NNbO0cyFxrjMxoq/QsOgKSofMOZ/3uTqxUfbWXrgwQ 0r0gjPKw4T5/ybWIKzZLut55aJo6mvivLcZ+yKVhLCMtyw2m/MWdfYCUVYlIoDz0BBIB bPbPJ8PKoQrmoAT8XWYnOwOowrQ0AWarur36/NifeAYREXMS6aaw0/hoVt3BX0XFdVGz NhmwmDDxdzG24viBGIoJgIEak1WB3avB1U5j3snOl/7Ze27589HZYsris4jXxGSaRU7R tloA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827119; x=1767431919; 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; bh=ObGR5P7eTjQgNjfbpSHVJGhDzxLZp1RWBcBtzTbVYA0=; b=soi0/5r9BmHONZKINFcnL2ip5eJfWn9z8HlXTNg2+ai+/J0BrlDGLRhaUPiRKX8Rwn AfMcGhZFJgS7J0rLZAjOtA+aHkjBj47P61Uud5hA/1zMn/buuHVxPnVfKQTL0jTOZK0C WEs6WK2tVbv4kxIBMVk4CRMro9ZbtmJcedZBmz5okpzWr/SGa9DWYApqfeEwCz85t93j lIGPWe7l+5n4haavnAor5kz8ix5fBaRyo1Az11847mVebQe5gTdQaJmeiSuNU4w7dOd0 YtVqgn9TiXPtwZd3nUu7v7pYjs+puh3XfbJgfijgoqn00+fgGJlhLDpZUkcogAqpBKco DmIQ== X-Gm-Message-State: AOJu0YxSceijn8NZv3c28uLr+LLfogynRXp2UkhmaEv+uZQAAeh0MbN2 0RUi2hf/IR96/WOD3i1Wqn0UjFz81FGzUkEwFUtqKDJdmDbnT5p0SaYqQmXxattjF2Ilf0CB7Zx JmmsOM1LJ0q5spE7Gr4EGuPm5GqN6+JUg9JsJiMxIR/rlDI/7XZUArT9FSjTOyUTwxK4qIsAP5n 1Us0ljjn2+qkbRySqZZgxgfkbgosnsIyPiPeqkABo2 X-Gm-Gg: AY/fxX6oK+0YHz57sRDTQ86+BDphM3uOLLa5arDRDco/NTY/FMwaTU2OIRF07iKL1Xa Z8RpMBYAtAzWuu8kAsRlwigb8EfvtwQZ0qt90AsRrNNiPLUW28w874ZWJvik8ofq+/kkN4BQtBW Shb8stKl6Jf0q1zQJ8o8aZ5RcPJQPs7oeVLIioIZQsr585K10ag64xGCH6Xn6OGCuSDMjWumfGJ FQ/ftijOsB4TLHLFy7Tt28iYI86AM2bQLP25h8nuCILz4PqYINrUd5LMWCQOUMcOCmdhjbhvfLT Fybq1rbnXToeDn3db5VKBALN84o7WPS1/us++QcqoUt882yanMpvMMX83KHMZT10Ah+8QbSuwqJ 5+g61/5SzSOFGariM7kmPgE9GF9cIkYajAhn8VYlKm1akKzzjK6dFijrSjjXqskwupgCopo69H3 /DVlHWe0djP8p/OUo= X-Received: by 2002:a05:6000:1848:b0:432:851d:217e with SMTP id ffacd0b85a97d-432851d21e9mr4731432f8f.44.1766827119456; Sat, 27 Dec 2025 01:18:39 -0800 (PST) X-Google-Smtp-Source: AGHT+IHp4G70cRqOwUzzRouwH/RfFU8lZ/fsjLcVDuwwhPTZe4VcF8kRCmyODWIqhtAArf6LjuRVFA== X-Received: by 2002:a05:6000:1848:b0:432:851d:217e with SMTP id ffacd0b85a97d-432851d21e9mr4731403f8f.44.1766827118898; Sat, 27 Dec 2025 01:18:38 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 069/153] rust/hpet: change wrap_flag to a bool Date: Sat, 27 Dec 2025 10:14:56 +0100 Message-ID: <20251227091622.20725-70-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827299983158500 Content-Type: text/plain; charset="utf-8" This is more precise, and makes it possible to use bool::then_some(). Signed-off-by: Paolo Bonzini --- rust/hw/timer/hpet/src/device.rs | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index a0c122d42bb..3166688e4e3 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -193,7 +193,7 @@ pub struct HPETTimerRegisters { period: u64, /// timer pop will indicate wrap for one-shot 32-bit /// mode. Next pop will be actual timer expiration. - wrap_flag: u8, + wrap_flag: bool, /// last value armed, to avoid timer storms last: u64, } @@ -377,7 +377,7 @@ fn set_timer(&self, regs: &mut HPETRegisters) { let cur_tick: u64 =3D regs.get_ticks(); let tn_regs =3D &mut regs.tn_regs[self.index as usize]; =20 - tn_regs.wrap_flag =3D 0; + tn_regs.wrap_flag =3D false; tn_regs.update_cmp64(cur_tick); =20 let mut next_tick: u64 =3D tn_regs.cmp64; @@ -385,7 +385,7 @@ fn set_timer(&self, regs: &mut HPETRegisters) { // HPET spec says in one-shot 32-bit mode, generate an interru= pt when // counter wraps in addition to an interrupt with comparator m= atch. if !tn_regs.is_periodic() && tn_regs.cmp64 > hpet_next_wrap(cu= r_tick) { - tn_regs.wrap_flag =3D 1; + tn_regs.wrap_flag =3D true; next_tick =3D hpet_next_wrap(cur_tick); } } @@ -501,7 +501,7 @@ fn reset(&self, regs: &mut HPETRegisters) { tn_regs.config |=3D (u64::from(self.get_state().int_route_cap)) << HPET_TN_CFG_INT= _ROUTE_CAP_SHIFT; tn_regs.period =3D 0; - tn_regs.wrap_flag =3D 0; + tn_regs.wrap_flag =3D false; } =20 /// timer expiration callback @@ -519,13 +519,11 @@ fn callback(&self, regs: &mut HPETRegisters) { tn_regs.cmp =3D tn_regs.cmp64; } Some(tn_regs.cmp64) - } else if tn_regs.wrap_flag !=3D 0 { - tn_regs.wrap_flag =3D 0; - Some(tn_regs.cmp64) } else { - None + tn_regs.wrap_flag.then_some(tn_regs.cmp64) }; =20 + tn_regs.wrap_flag =3D false; if let Some(tick) =3D next_tick { self.arm_timer(regs, tick); } @@ -1038,7 +1036,7 @@ fn snapshot_migration_state( target.cmp =3D tn_regs.cmp; target.fsb =3D tn_regs.fsb; target.period =3D tn_regs.period; - target.wrap_flag =3D tn_regs.wrap_flag; + target.wrap_flag =3D u8::from(tn_regs.wrap_flag); self.qemu_timer .snapshot_migration_state(&mut target.qemu_timer)?; =20 @@ -1068,7 +1066,7 @@ fn restore_migrated_state( tn_regs.cmp =3D source.cmp; tn_regs.fsb =3D source.fsb; tn_regs.period =3D source.period; - tn_regs.wrap_flag =3D source.wrap_flag; + tn_regs.wrap_flag =3D source.wrap_flag !=3D 0; self.qemu_timer .restore_migrated_state(source.qemu_timer, version_id)?; =20 --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827505; cv=none; d=zohomail.com; s=zohoarc; b=FBX2CjBw87Tf1yja6GhH/jFszF7HfCVatRG/94sUpmqzhbqU51V5XleZ3OeZqMeMzwM6jFjB/AjO8Q92QS2BfXqnBnNHTiZPn4sAE8/4u10ghTDCSo3i08p6GnsEWGI+cOqIHvo+0atRENtVgJsLDBRXwuYSknv0SJolv7tbJsg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827505; 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=8p/Bpe0gmBVLAqwDcW5Zxplm8I9ytkWLraykQNKpZ9M=; b=SZiO4/DXMXCGVSSXu2h4Nk3AS3FAssl4AxuwHmT0SIq9TE9ki+xnlu7Uz7gtJmI2yJyOUqjigOVKqYgeuEhXSFrcCMcTH7RXYRdsWh1MTVg8Y4kt8cHyvbiytHn1uLgYhIsJcXSQRdVFBXTJ3NNMFm9ti4lzqnuZK7NRyptzneI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827505055171.0184838624216; Sat, 27 Dec 2025 01:25:05 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQRr-0000ve-6P; Sat, 27 Dec 2025 04:18:55 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRn-0000V3-Of for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:51 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRk-0004MH-BL for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:51 -0500 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-526-5mX0-G6rPlWXQGneDpqBKQ-1; Sat, 27 Dec 2025 04:18:43 -0500 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-43102ac1da8so5533820f8f.2 for ; Sat, 27 Dec 2025 01:18:42 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea1aee5sm50858965f8f.4.2025.12.27.01.18.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:18:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827124; 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=8p/Bpe0gmBVLAqwDcW5Zxplm8I9ytkWLraykQNKpZ9M=; b=IXqcWysTdUSvR6u7x5jlpgTOm8GUgR69MiKtnbkrKQ8iTm3/rj7alAqsrG+SXUFKVSn+K1 1PqY+0uVO13XcW0RH6UWeWqs+LvtOYD1ekyUqc7bQQb6jxPAdbm2oxhycONpSbbI8dGpKb brmyc48ms+jJq0uksDlivd13FGHF2X8= X-MC-Unique: 5mX0-G6rPlWXQGneDpqBKQ-1 X-Mimecast-MFC-AGG-ID: 5mX0-G6rPlWXQGneDpqBKQ_1766827122 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827120; x=1767431920; 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; bh=8p/Bpe0gmBVLAqwDcW5Zxplm8I9ytkWLraykQNKpZ9M=; b=sQW+1cUH7Pq16InfDIicMVSuLsUht1BHdUhXoHvlHeXTtiwV+dKHrPd/o6JDzTAN2G OW9fDhlc7QR6Y20w80nLygzCbF2bql+z9ZXh+M8/LnmPURN6kn8g2fXehYDHTfXh+83M T/fpO5U9CXcUYzlbk6HUFdGDBgOnrrWxYF75WeJBDzIXoKeeOHWM+oix/p+WaylS+OCK S53gS0o356EWDEhYnMFOCZ8OqU8DQblmrau+efeJGdksPvzlx9dpeTIeYFa4mIw4jqnR kVGb2CgUQ/1MRWqN1ZaYcQGUdqHt/PIMzdU1iEeX8TtiuyDTa3GFmSPYdZ3i+z3rQ9EI rtQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827120; x=1767431920; 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; bh=8p/Bpe0gmBVLAqwDcW5Zxplm8I9ytkWLraykQNKpZ9M=; b=Fzk/WWy7ImJBXB572pFu76VEUigQL2o4x7khCz5BcF6MPtrnAGq8bJ+GLWhwZewncb d5MkLE0lBFOlz++tWToVMdwM+sOS6touqnPNInP72h1TyA1uJDlLCUAiXLufNoMMuPG3 UCa0dgYGnMiqLsWr0PewqpjbirXRxzDsXHbLvfiAtpiPa9vSKyOLl8MpYYpgz9O0eTq4 f1XcEZENZaainEis2d5DSCnAT9AWw+klScsjTOXRDiSuX2HzWxERvOIzeVkmz6vS0Ydj K7W/U5kWOofuqXUJ92v8jXhc8+N1IxsV8OnIVkxbBkUouzWP1xjvG2s017aS+WOSu/Sl 8jiQ== X-Gm-Message-State: AOJu0YysBGWIhoUuI9YGpx7zWnFtbysWjF29NhhiqdkGU1pRKbwZrFH/ Nah+yk9GI5V83tyLHf89g8wi3iDYQ1p1o8Xd3hic86qw0bbFD4kPhUyaiOS7Tc/wnhMzE4r3c0L zRbpWXi6S7hwumWs9DaizRt9eaZbo7TKWdYreHRWWXnLr99C275ykRVztyF0kYAHL6JvjKlNmkq YZ7R4E27LFG12s4CBBbt+o4PUNLzKufxHIlxivbfQk X-Gm-Gg: AY/fxX4GHJ4UdtkIucu78RhwiYrpKBFbcDY9ilxoyV81z76sZIwayYwzb22h8jYpApZ hSSEO7z11lv6TCzW7CiMUsuS4Y3h8uKcJi9irC4JKP+iPp5ba8UatM38smAVz++/N0GRv5itcGW nItVykmBg35y1Pr5vgH6o//wvfRClVmH3Gcvpncm5OyK2tiFLdFNc5qrv0k1LvrU1ONVIhc+fYc 0tAPJlFXu25Vb5OYNe7VTN4/RFSzYBddPtd98wT5I7BLT42/8d7+yGIVw3yOvalQHRfeoda251R 576BlxmKxu/aeleVTgi+ljwYBwme6LYqe2RYEbv7MKnWo1gPzlpaBazjY63WcFMMnpwqRstrHcc hxFo/yh6qnxtEA9OXlXLe6GIew0Oj8MVnCSJ9gEZ5iX0QGbiv4BUB7xJXelFOifGw2ol2Qpv2bS AJ1s0GWn5A2g8BHQ4= X-Received: by 2002:adf:f392:0:b0:432:5bf9:cf22 with SMTP id ffacd0b85a97d-4325bf9d1admr18151076f8f.3.1766827120484; Sat, 27 Dec 2025 01:18:40 -0800 (PST) X-Google-Smtp-Source: AGHT+IHF773MeYjm1VFhIvuqc0SdmBm93iIJm/C7LnADvueQnLpyqyVnsRFxQGn2AmV14dYskkJ1Wg== X-Received: by 2002:adf:f392:0:b0:432:5bf9:cf22 with SMTP id ffacd0b85a97d-4325bf9d1admr18151057f8f.3.1766827120041; Sat, 27 Dec 2025 01:18:40 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Stefan Hajnoczi Subject: [PULL 070/153] subprojects: add probe crate Date: Sat, 27 Dec 2025 10:14:57 +0100 Message-ID: <20251227091622.20725-71-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827506979158500 Content-Type: text/plain; charset="utf-8" From: Stefan Hajnoczi The probe crate (https://crates.io/crates/probe) provides a probe!() macro that defines SystemTap SDT probes on Linux hosts or does nothing on other host OSes. This crate will be used to implement DTrace support for Rust. Signed-off-by: Stefan Hajnoczi Link: https://lore.kernel.org/r/20251119205200.173170-4-stefanha@redhat.com Signed-off-by: Paolo Bonzini --- rust/meson.build | 2 ++ scripts/archive-source.sh | 1 + scripts/make-release | 2 +- subprojects/.gitignore | 1 + .../packagefiles/probe-0.5-rs/meson.build | 22 +++++++++++++++++++ subprojects/probe-0.5-rs.wrap | 7 ++++++ 6 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 subprojects/packagefiles/probe-0.5-rs/meson.build create mode 100644 subprojects/probe-0.5-rs.wrap diff --git a/rust/meson.build b/rust/meson.build index 76e10699b37..afbeeeb47a7 100644 --- a/rust/meson.build +++ b/rust/meson.build @@ -4,6 +4,7 @@ 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) =20 anyhow_rs =3D dependency('anyhow-1-rs') bilge_rs =3D dependency('bilge-0.2-rs') @@ -11,6 +12,7 @@ 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') =20 subproject('proc-macro2-1-rs', required: true) subproject('quote-1-rs', required: true) diff --git a/scripts/archive-source.sh b/scripts/archive-source.sh index 8f97b19a088..a37acab524e 100755 --- a/scripts/archive-source.sh +++ b/scripts/archive-source.sh @@ -41,6 +41,7 @@ subprojects=3D( 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 diff --git a/scripts/make-release b/scripts/make-release index bc1b43caa25..5f54b0e7939 100755 --- a/scripts/make-release +++ b/scripts/make-release @@ -42,7 +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 - libc-0.2-rs proc-macro2-1-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" =20 diff --git a/subprojects/.gitignore b/subprojects/.gitignore index c00c8478372..011ce4dc3b7 100644 --- a/subprojects/.gitignore +++ b/subprojects/.gitignore @@ -16,6 +16,7 @@ /glib-sys-* /itertools-* /libc-* +/probe-* /proc-macro-error-* /proc-macro-error-attr-* /proc-macro* diff --git a/subprojects/packagefiles/probe-0.5-rs/meson.build b/subproject= s/packagefiles/probe-0.5-rs/meson.build new file mode 100644 index 00000000000..e6ea69533b7 --- /dev/null +++ b/subprojects/packagefiles/probe-0.5-rs/meson.build @@ -0,0 +1,22 @@ +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/probe-0.5-rs.wrap b/subprojects/probe-0.5-rs.wrap new file mode 100644 index 00000000000..73229ee1c29 --- /dev/null +++ b/subprojects/probe-0.5-rs.wrap @@ -0,0 +1,7 @@ +[wrap-file] +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 +patch_directory =3D probe-0.5-rs --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827536; cv=none; d=zohomail.com; s=zohoarc; b=nxNTOzII1Sd5zOVOWWAWOfU1SCGQ+IBH7ol76AVz5TgrT6h5RyQXYLLQc3avvRUIYiTQ+SsGUuzSm6nZGWLthFPD+BvoeIkiXHIK4Q3vyct2qlud3CkC+wCxVaqTDDOcamCWPl9X+SffnkSjddj8u+FQX69loXyBFHYrGHslIUg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827536; 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=jIVwFjqTLfC18+H9AtLgQG96XLWQyMts/mwazionaPA=; b=X0F8a5hIA2La7GPuhybLDt0NFDsPESc7Bg+tn9fFTarJXhenT/kdpb9cq4UpDcw2tRh3nDTwhYnJSiYrA5zB0IgKZIVmfSX46C/+j7PmahAZxiD8ToSQ7pJHdBkgOqHCb8z1i3olwsyCF9gqM/ufIK1fsyhwWu1KkWDa+uGqs2I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827536931904.0590138182461; Sat, 27 Dec 2025 01:25:36 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQRs-000150-By; Sat, 27 Dec 2025 04:18:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRq-0000kJ-49 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:54 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRl-0004QZ-9R for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:53 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-594-enrTY8cNPemk09euJcTXEQ-1; Sat, 27 Dec 2025 04:18:46 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-4325cc15176so3153841f8f.1 for ; Sat, 27 Dec 2025 01:18:46 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be3a40a14sm209462795e9.2.2025.12.27.01.18.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:18:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827128; 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=jIVwFjqTLfC18+H9AtLgQG96XLWQyMts/mwazionaPA=; b=bsrV6sFE5qNvRYdvmSWr6nr4PDnGHS17ePLnhwiwFidHx1mgFio90aA2Cs9gGMkdthgMrp /VT5RXRPUyqdy/0UG4FHK/zAinifc3Bv1Zd701TDFyAQF1ebS90NXGzh3IyBb46NmPDUm3 tk31tvGZmJIZuzTI1Wbzf7qqyI0ORgg= X-MC-Unique: enrTY8cNPemk09euJcTXEQ-1 X-Mimecast-MFC-AGG-ID: enrTY8cNPemk09euJcTXEQ_1766827125 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827124; x=1767431924; 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; bh=jIVwFjqTLfC18+H9AtLgQG96XLWQyMts/mwazionaPA=; b=iLT9eRAlFGF4aoF9TwiKuR9NLc2ttbukxog5RnAGovHhBRjN2T3m5vQLTKFxyGR3qN wuYpuOGsCo95oD/eRRm9qMWlwPEBe7oNcvq3DOj3RmUbE8NELHWoPhAhcZJw5UUBW+/E knsO8UQAPwp2XgS+Hdp4jD70izFkVWhad72EnFydUuklQIMXNzM6/cNTJ54ud6cUKJAG Ina4jKPBw/aHuPqqLehIZv+7VkQLOYfKWyYJVsLzsZ8loptSQTuKW73/c0Iy3DAhBSY9 SsFIxA/4bB0iazkHpc8nwGSKLzymWKo9NZB3IdPMb8CmLTY+r5nkINrQQbM5Kcflgtwo 1RLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827124; x=1767431924; 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; bh=jIVwFjqTLfC18+H9AtLgQG96XLWQyMts/mwazionaPA=; b=LOnhZL9m1MRjaMOj8g2WcseGwmBFsnb0Q9GdG2RKXb/J13Kc0PHmJRUlh2/f5oASDJ XAZ9k6vZ2kOZRB30uOyVAoW9kVX9PbehS74gRsN9/wd4I5HFKb4Z8TEhmFYs7B4V0IRJ u/5jp5yX+325SqFdD6FJoSBRkHP2A/VeTSPswTMUEYSK7jML86V9vIA0QhA11VTU8MJx iLqNsqGjR7B8XC9G70xEgD1xMBwQg3/rm22gCtDkr5uxKNnTnfAaQ5vL9KpM3oMuWNnJ zq0zJ/52bikJ4KmJbZHZ1x8YbdCt9pqGERKCgzjU5nOx8qoUfwIhXCK1T/O+6soB77jw sYHg== X-Gm-Message-State: AOJu0Yy0Wr19GOiPNNjtlr/O2N4qft8845inn87Sejq4K5e82vfASKn9 ha8KxgrLQ374oJz/KST6hxZCQCezpDxyDFJjlRzZdEFf4+vR86mwMqbtfNkJC4tM89zOhnwGnEf oRtDWTma+5aff0aOpt5HQ8QiKeYUAgvDG4bSxLBiYFmF3rwUnWUVAHb5iPZFli/Q/MEHApxeJPR 8oxDnl5KWjOgD8THCXES1Z1qcG7yKAEwKDkyz2jKGC X-Gm-Gg: AY/fxX5N7DkvZRT49Nu+86kHfXBnjy1yqH01XXlsIoK2yCpVdvIMicjku+9lxyiPRH2 qeNIY7ddwRMylKibFd/tuD1aC+4O+eUZ+54g4+2beqL1hA6RanPPBVGRN0mwpHifqQ0J4QR/Xzz tX2KsvLVza9To393REBfoX6StYxSWd1b0CEGAXRs5fEKhVggHaV86k5Wou+VKLsRDTY+6uZeGRr VcS+8yvqO61b14SVG+pbcFcjdpTP2cYG17Gb09R1yJgKLIk2JAwKQkTj9kGNuoTiq038qFhC+oO wkxAajvjsiiR+5VRPnGvfeIIqnRjshRf8XLJqRM2atjbZol8czwo244kIPQF8ySXhAx+W5SmAkM z7AuWWCuN9ns/JXlHo5Kb6x8bzK9uo0FPbBerFGYt9P5pkAIqLFyidl7VWvF8wCRq8twr7igsMj ySg7qXcAo3S2qYk84= X-Received: by 2002:a05:600c:3b2a:b0:477:7ab8:aba with SMTP id 5b1f17b1804b1-47d1953bd8bmr292017835e9.1.1766827123884; Sat, 27 Dec 2025 01:18:43 -0800 (PST) X-Google-Smtp-Source: AGHT+IG/9gdwCW71KiHrIR54MMDYooyKuF/93UcGKhNW6c7qLMuA10WyrmjVTqKXv3Ur1LiQnXDGag== X-Received: by 2002:a05:600c:3b2a:b0:477:7ab8:aba with SMTP id 5b1f17b1804b1-47d1953bd8bmr292017515e9.1.1766827123325; Sat, 27 Dec 2025 01:18:43 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Stefan Hajnoczi Subject: [PULL 071/153] tracetool: add Rust DTrace/SystemTap SDT support Date: Sat, 27 Dec 2025 10:14:58 +0100 Message-ID: <20251227091622.20725-72-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827538947158500 Content-Type: text/plain; charset="utf-8" Implement DTrace/SystemTap SDT by emitting the following: - The probe crate's probe!() macro is used to emit a DTrace/SystemTap SDT probe. - Every trace event gets a corresponding trace__enabled() -> bool generated function that Rust code can use to avoid expensive computation when a trace event is disabled. This API works for other trace backends too. `#[allow(dead_code)]` additions are necessary for QEMU's dstate in generated trace-.rs files since they are unused by the dtrace backend. `./configure --enable-trace-backends=3D` can enable multiple backends, so keep it simple and just silence the warning instead of trying to detect the condition when generating the dstate code can be skipped. The tracetool tests are updated. Take a look at tests/tracetool/dtrace.rs to see what the new generated code looks like. Signed-off-by: Stefan Hajnoczi Link: https://lore.kernel.org/r/20251119205200.173170-5-stefanha@redhat.com Signed-off-by: Paolo Bonzini --- rust/Cargo.lock | 6 +++ rust/trace/Cargo.toml | 1 + rust/trace/meson.build | 2 +- rust/trace/src/lib.rs | 4 ++ scripts/tracetool/__init__.py | 1 + scripts/tracetool/backend/dtrace.py | 31 ++++++++++++++ scripts/tracetool/format/rs.py | 27 ++++++++++-- tests/tracetool/dtrace.rs | 64 +++++++++++++++++++++++++++++ tests/tracetool/ftrace.rs | 21 ++++++++++ tests/tracetool/log.rs | 21 ++++++++++ tests/tracetool/simple.rs | 21 ++++++++++ tests/tracetool/syslog.rs | 21 ++++++++++ tests/tracetool/tracetool-test.py | 2 +- 13 files changed, 216 insertions(+), 6 deletions(-) create mode 100644 tests/tracetool/dtrace.rs diff --git a/rust/Cargo.lock b/rust/Cargo.lock index f520597f25d..42ae857fe53 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -230,6 +230,10 @@ dependencies =3D [ "util", ] =20 +[[package]] +name =3D "probe" +version =3D "0.5.2" + [[package]] name =3D "proc-macro-error" version =3D "1.0.4" @@ -388,6 +392,7 @@ dependencies =3D [ "migration", "qom", "system", + "trace", "util", ] =20 @@ -430,6 +435,7 @@ name =3D "trace" version =3D "0.1.0" dependencies =3D [ "libc", + "probe", ] =20 [[package]] diff --git a/rust/trace/Cargo.toml b/rust/trace/Cargo.toml index fc81bce5803..11e27f8d286 100644 --- a/rust/trace/Cargo.toml +++ b/rust/trace/Cargo.toml @@ -14,6 +14,7 @@ rust-version.workspace =3D true =20 [dependencies] libc =3D { workspace =3D true } +probe =3D "0.5" =20 [lints] workspace =3D true diff --git a/rust/trace/meson.build b/rust/trace/meson.build index 1b3498f7fc1..0071a49cf72 100644 --- a/rust/trace/meson.build +++ b/rust/trace/meson.build @@ -11,7 +11,7 @@ _trace_rs =3D static_library( 'trace', # Library name, lib_rs, trace_rs_targets, # List of generated `.rs` custom targets - dependencies: [libc_rs], + dependencies: [libc_rs, probe_rs], ) =20 trace_rs =3D declare_dependency(link_with: _trace_rs) diff --git a/rust/trace/src/lib.rs b/rust/trace/src/lib.rs index e03bce43c47..c2abe430a52 100644 --- a/rust/trace/src/lib.rs +++ b/rust/trace/src/lib.rs @@ -6,6 +6,9 @@ #[doc(hidden)] /// Re-exported item to avoid adding libc as a dependency everywhere. pub use libc::{syslog, LOG_INFO}; +#[doc(hidden)] +/// Re-exported item to avoid adding probe as a dependency everywhere. +pub use probe::probe; =20 #[macro_export] /// Define the trace-points from the named directory (which should have sl= ashes @@ -21,6 +24,7 @@ macro_rules! include_trace { #[allow( clippy::ptr_as_ptr, clippy::cast_lossless, + clippy::nonminimal_bool, clippy::used_underscore_binding )] mod trace { diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.py index 74062d21a7c..61ba6f1ba8c 100644 --- a/scripts/tracetool/__init__.py +++ b/scripts/tracetool/__init__.py @@ -461,6 +461,7 @@ def formats(self): =20 QEMU_TRACE =3D "trace_%(name)s" QEMU_TRACE_TCG =3D QEMU_TRACE + "_tcg" + QEMU_RUST_DSTATE =3D "trace_%(name)s_enabled" QEMU_DSTATE =3D "_TRACE_%(NAME)s_DSTATE" QEMU_BACKEND_DSTATE =3D "TRACE_%(NAME)s_BACKEND_DSTATE" QEMU_EVENT =3D "_TRACE_%(NAME)s_EVENT" diff --git a/scripts/tracetool/backend/dtrace.py b/scripts/tracetool/backen= d/dtrace.py index b4af403025c..f0b58cc1585 100644 --- a/scripts/tracetool/backend/dtrace.py +++ b/scripts/tracetool/backend/dtrace.py @@ -70,3 +70,34 @@ def generate_h(event, group): def generate_h_backend_dstate(event, group): out(' QEMU_%(uppername)s_ENABLED() || \\', uppername=3Devent.name.upper()) + + +def generate_rs_begin(events, group): + out('use std::cell::UnsafeCell;', + '', + 'extern "C" {') + # These are the Rust declarations of the .probes section semaphores + # generated by dtrace(1) in its .o file output. + for e in events: + if 'disable' in e.properties: + continue + out(' #[allow(dead_code)]', + f' static qemu_{e.name}_semaphore: UnsafeCell;') + out('}', + '') + + +def generate_rs(event, group): + args =3D event.args.rust_call_extern() + if args: + args =3D ', ' + args + + out(f' ::trace::probe!(qemu, {event.name}{args});') + + +def generate_rs_backend_dstate(event, group): + # Rust does not have access to the __ENABLED() macro f= rom + # the dtrace(1) generated .h file. Use the matching semaphore declarat= ions + # generated by generate_rs_begin() instead. + out(' (unsafe {qemu_%(n)s_semaphore.get().read_volatile()}) !=3D 0 = ||', + n=3Devent.name) diff --git a/scripts/tracetool/format/rs.py b/scripts/tracetool/format/rs.py index 32ac4e59770..7d9af7edfee 100644 --- a/scripts/tracetool/format/rs.py +++ b/scripts/tracetool/format/rs.py @@ -24,25 +24,43 @@ def generate(events, backend, group): '#[allow(unused_imports)]', 'use util::bindings;', '', + '#[allow(dead_code)]', '#[inline(always)]', 'fn trace_event_state_is_enabled(dstate: u16) -> bool {', ' (unsafe { trace_events_enabled_count }) !=3D 0 && dstate !=3D= 0', '}', '', 'extern "C" {', + ' #[allow(dead_code)]', ' static mut trace_events_enabled_count: u32;', '}',) =20 out('extern "C" {') =20 for e in events: - out(' static mut %s: u16;' % e.api(e.QEMU_DSTATE)) - out('}') + out(' #[allow(dead_code)]', + ' static mut %s: u16;' % e.api(e.QEMU_DSTATE)) + out('}', + '') =20 backend.generate_begin(events, group) =20 for e in events: - out('', + out('#[inline(always)]', + '#[allow(dead_code)]', + 'pub fn %(api)s() -> bool', + '{', + api=3De.api(e.QEMU_RUST_DSTATE)) + + if "disable" not in e.properties: + backend.generate_backend_dstate(e, group) + if backend.check_trace_event_get_state: + out(' trace_event_state_is_enabled(unsafe { _%(event_id= )s_DSTATE}) ||', + event_id =3D 'TRACE_' + e.name.upper()) + + out(' false', + '}', + '', '#[inline(always)]', '#[allow(dead_code)]', 'pub fn %(api)s(%(args)s)', @@ -59,6 +77,7 @@ def generate(events, backend, group): api=3De.api()) backend.generate(e, group, check_trace_event_get_state=3DT= rue) out(' }') - out('}') + out('}', + '') =20 backend.generate_end(events, group) diff --git a/tests/tracetool/dtrace.rs b/tests/tracetool/dtrace.rs new file mode 100644 index 00000000000..3490fcb271a --- /dev/null +++ b/tests/tracetool/dtrace.rs @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +// This file is @generated by tracetool, do not edit. + +#[allow(unused_imports)] +use std::ffi::c_char; +#[allow(unused_imports)] +use util::bindings; + +#[allow(dead_code)] +#[inline(always)] +fn trace_event_state_is_enabled(dstate: u16) -> bool { + (unsafe { trace_events_enabled_count }) !=3D 0 && dstate !=3D 0 +} + +extern "C" { + #[allow(dead_code)] + static mut trace_events_enabled_count: u32; +} +extern "C" { + #[allow(dead_code)] + static mut _TRACE_TEST_BLAH_DSTATE: u16; + #[allow(dead_code)] + static mut _TRACE_TEST_WIBBLE_DSTATE: u16; +} + +use std::cell::UnsafeCell; + +extern "C" { + #[allow(dead_code)] + static qemu_test_blah_semaphore: UnsafeCell; + #[allow(dead_code)] + static qemu_test_wibble_semaphore: UnsafeCell; +} + +#[inline(always)] +#[allow(dead_code)] +pub fn trace_test_blah_enabled() -> bool +{ + (unsafe {qemu_test_blah_semaphore.get().read_volatile()}) !=3D 0 || + false +} + +#[inline(always)] +#[allow(dead_code)] +pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr) +{ + ::trace::probe!(qemu, test_blah, _context, _filename.as_ptr()); +} + +#[inline(always)] +#[allow(dead_code)] +pub fn trace_test_wibble_enabled() -> bool +{ + (unsafe {qemu_test_wibble_semaphore.get().read_volatile()}) !=3D 0 || + false +} + +#[inline(always)] +#[allow(dead_code)] +pub fn trace_test_wibble(_context: *mut (), _value: std::ffi::c_int) +{ + ::trace::probe!(qemu, test_wibble, _context, _value); +} + diff --git a/tests/tracetool/ftrace.rs b/tests/tracetool/ftrace.rs index 07b9259cf29..34f66004902 100644 --- a/tests/tracetool/ftrace.rs +++ b/tests/tracetool/ftrace.rs @@ -6,19 +6,31 @@ #[allow(unused_imports)] use util::bindings; =20 +#[allow(dead_code)] #[inline(always)] fn trace_event_state_is_enabled(dstate: u16) -> bool { (unsafe { trace_events_enabled_count }) !=3D 0 && dstate !=3D 0 } =20 extern "C" { + #[allow(dead_code)] static mut trace_events_enabled_count: u32; } extern "C" { + #[allow(dead_code)] static mut _TRACE_TEST_BLAH_DSTATE: u16; + #[allow(dead_code)] static mut _TRACE_TEST_WIBBLE_DSTATE: u16; } =20 +#[inline(always)] +#[allow(dead_code)] +pub fn trace_test_blah_enabled() -> bool +{ + trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) || + false +} + #[inline(always)] #[allow(dead_code)] pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr) @@ -29,6 +41,14 @@ pub fn trace_test_blah(_context: *mut (), _filename: &st= d::ffi::CStr) } } =20 +#[inline(always)] +#[allow(dead_code)] +pub fn trace_test_wibble_enabled() -> bool +{ + trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) || + false +} + #[inline(always)] #[allow(dead_code)] pub fn trace_test_wibble(_context: *mut (), _value: std::ffi::c_int) @@ -38,3 +58,4 @@ pub fn trace_test_wibble(_context: *mut (), _value: std::= ffi::c_int) unsafe {bindings::ftrace_write(format_string.as_ptr() as *const c_= char, _context /* as *mut () */, _value /* as std::ffi::c_int */);} } } + diff --git a/tests/tracetool/log.rs b/tests/tracetool/log.rs index c191895c8f8..770758611d1 100644 --- a/tests/tracetool/log.rs +++ b/tests/tracetool/log.rs @@ -6,19 +6,31 @@ #[allow(unused_imports)] use util::bindings; =20 +#[allow(dead_code)] #[inline(always)] fn trace_event_state_is_enabled(dstate: u16) -> bool { (unsafe { trace_events_enabled_count }) !=3D 0 && dstate !=3D 0 } =20 extern "C" { + #[allow(dead_code)] static mut trace_events_enabled_count: u32; } extern "C" { + #[allow(dead_code)] static mut _TRACE_TEST_BLAH_DSTATE: u16; + #[allow(dead_code)] static mut _TRACE_TEST_WIBBLE_DSTATE: u16; } =20 +#[inline(always)] +#[allow(dead_code)] +pub fn trace_test_blah_enabled() -> bool +{ + trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) || + false +} + #[inline(always)] #[allow(dead_code)] pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr) @@ -31,6 +43,14 @@ pub fn trace_test_blah(_context: *mut (), _filename: &st= d::ffi::CStr) } } =20 +#[inline(always)] +#[allow(dead_code)] +pub fn trace_test_wibble_enabled() -> bool +{ + trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) || + false +} + #[inline(always)] #[allow(dead_code)] pub fn trace_test_wibble(_context: *mut (), _value: std::ffi::c_int) @@ -42,3 +62,4 @@ pub fn trace_test_wibble(_context: *mut (), _value: std::= ffi::c_int) } } } + diff --git a/tests/tracetool/simple.rs b/tests/tracetool/simple.rs index 9ee39495e38..92f896ef178 100644 --- a/tests/tracetool/simple.rs +++ b/tests/tracetool/simple.rs @@ -6,19 +6,31 @@ #[allow(unused_imports)] use util::bindings; =20 +#[allow(dead_code)] #[inline(always)] fn trace_event_state_is_enabled(dstate: u16) -> bool { (unsafe { trace_events_enabled_count }) !=3D 0 && dstate !=3D 0 } =20 extern "C" { + #[allow(dead_code)] static mut trace_events_enabled_count: u32; } extern "C" { + #[allow(dead_code)] static mut _TRACE_TEST_BLAH_DSTATE: u16; + #[allow(dead_code)] static mut _TRACE_TEST_WIBBLE_DSTATE: u16; } =20 +#[inline(always)] +#[allow(dead_code)] +pub fn trace_test_blah_enabled() -> bool +{ + trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) || + false +} + #[inline(always)] #[allow(dead_code)] pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr) @@ -29,6 +41,14 @@ pub fn trace_test_blah(_context: *mut (), _filename: &st= d::ffi::CStr) } } =20 +#[inline(always)] +#[allow(dead_code)] +pub fn trace_test_wibble_enabled() -> bool +{ + trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) || + false +} + #[inline(always)] #[allow(dead_code)] pub fn trace_test_wibble(_context: *mut (), _value: std::ffi::c_int) @@ -38,3 +58,4 @@ pub fn trace_test_wibble(_context: *mut (), _value: std::= ffi::c_int) unsafe { _simple_trace_test_wibble(_context, _value); } } } + diff --git a/tests/tracetool/syslog.rs b/tests/tracetool/syslog.rs index 9d3675a0b57..378d03d34b2 100644 --- a/tests/tracetool/syslog.rs +++ b/tests/tracetool/syslog.rs @@ -6,19 +6,31 @@ #[allow(unused_imports)] use util::bindings; =20 +#[allow(dead_code)] #[inline(always)] fn trace_event_state_is_enabled(dstate: u16) -> bool { (unsafe { trace_events_enabled_count }) !=3D 0 && dstate !=3D 0 } =20 extern "C" { + #[allow(dead_code)] static mut trace_events_enabled_count: u32; } extern "C" { + #[allow(dead_code)] static mut _TRACE_TEST_BLAH_DSTATE: u16; + #[allow(dead_code)] static mut _TRACE_TEST_WIBBLE_DSTATE: u16; } =20 +#[inline(always)] +#[allow(dead_code)] +pub fn trace_test_blah_enabled() -> bool +{ + trace_event_state_is_enabled(unsafe { _TRACE_TEST_BLAH_DSTATE}) || + false +} + #[inline(always)] #[allow(dead_code)] pub fn trace_test_blah(_context: *mut (), _filename: &std::ffi::CStr) @@ -29,6 +41,14 @@ pub fn trace_test_blah(_context: *mut (), _filename: &st= d::ffi::CStr) } } =20 +#[inline(always)] +#[allow(dead_code)] +pub fn trace_test_wibble_enabled() -> bool +{ + trace_event_state_is_enabled(unsafe { _TRACE_TEST_WIBBLE_DSTATE}) || + false +} + #[inline(always)] #[allow(dead_code)] pub fn trace_test_wibble(_context: *mut (), _value: std::ffi::c_int) @@ -38,3 +58,4 @@ pub fn trace_test_wibble(_context: *mut (), _value: std::= ffi::c_int) unsafe {::trace::syslog(::trace::LOG_INFO, format_string.as_ptr() = as *const c_char, _context /* as *mut () */, _value /* as std::ffi::c_int *= /);} } } + diff --git a/tests/tracetool/tracetool-test.py b/tests/tracetool/tracetool-= test.py index 786083ad7fb..30006a99190 100755 --- a/tests/tracetool/tracetool-test.py +++ b/tests/tracetool/tracetool-test.py @@ -14,7 +14,7 @@ def get_formats(backend): "c", "h", ] - if backend in {"ftrace", "log", "simple", "syslog"}: + if backend in {"dtrace", "ftrace", "log", "simple", "syslog"}: formats +=3D ["rs"] if backend =3D=3D "dtrace": formats +=3D [ --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827279; cv=none; d=zohomail.com; s=zohoarc; b=kcW66yK6aJCEBN9djNwrkjSzi5jX8lH8AP/M5RosNHqBo6O+Ns908EB0wgS/Or0SOhhohPC3t4KkwkNx2hcIfre1hOret0aZuFwYuMwKWktoRaVtkn+Tyiz0FqF80AMG1BOZ63Usw+dGjdjnEhidwT8MTaFvVxhWJQegVCCyuQg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827279; 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=q/vVrG06Rr5jifGh9xz0OwdmLw8dMRsZZ4hi+JD78cQ=; b=UxUveGoQ6fVcciszzn863IyMioR65QqgDRhHokrc0H9SCJYmMwv1RVvc8L9z+OWbJNyNW2JR2UuT8Aih0OAJt9ohjtFqkgkAl/0BbnfDZRbyQpaIe5BjQHlvXd+NP8h0qGmrQ1nFZqMALinllGfQzx8dTb6rwMRrL52QAN21vZI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827279095303.82543203398916; Sat, 27 Dec 2025 01:21:19 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQRp-0000gV-Ga; Sat, 27 Dec 2025 04:18:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRn-0000TV-Iu for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:51 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRl-0004QV-16 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:51 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-596-_oAY5Rt3OGCl9x54apX3fg-1; Sat, 27 Dec 2025 04:18:46 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-477cf2230c8so77995135e9.0 for ; Sat, 27 Dec 2025 01:18:46 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea1b36fsm49744289f8f.5.2025.12.27.01.18.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:18:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827128; 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=q/vVrG06Rr5jifGh9xz0OwdmLw8dMRsZZ4hi+JD78cQ=; b=Wf/4VmpNMY5j4TIUeZekBSnuqYi74Py3RF7JZQmBuUOAIUZhEotIYViw4h+5dXBYxyuI2m UyyTq3skEZgbcccE2e7LY6vcFXr7KsAcBzuQbsiiszia+kP+fOkVdytHsXdKn6+K/gjFDG itzzbbU4i7Dxp5vkrnqWu8PLw/y7Gd8= X-MC-Unique: _oAY5Rt3OGCl9x54apX3fg-1 X-Mimecast-MFC-AGG-ID: _oAY5Rt3OGCl9x54apX3fg_1766827125 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827125; x=1767431925; 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; bh=q/vVrG06Rr5jifGh9xz0OwdmLw8dMRsZZ4hi+JD78cQ=; b=ftmQDcLPk5X8gjdX94+AIjM4qQpZhrvVV4wKCJ8NxPRRJ1YFc6poiwyObYjjg2o6v+ eEFgDhlQl0npkcC5mvXVeIfWVXbTqYN/eFJcSCHP6MXW2Xef7XPxsffNADN2NDeoFrdG 9wtRst/31edmY/XeJCo2rTja82LrqOacLAUGLKb+F6QgslUP/5Iv38I8o4FsW4qs2HSc hpQwPzIItXv8eTq5AU520j/k/g1qf+2OY1d6LdbbzbCuzgvBUFHwXgzPj0NrtpqTraK5 xJymHsdYM2npV6ufDTf5R3B2jmepHpaOWLCPr9A39J5o4w14lFhDWaCstJv0+a+zRD8d 4IZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827125; x=1767431925; 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; bh=q/vVrG06Rr5jifGh9xz0OwdmLw8dMRsZZ4hi+JD78cQ=; b=v3MB5rdKrF/38q5c0Nd/forJlbfVn1SrzR3NnfLVoQmhxP3+DfTT/msqnQ7gMKKyoL CzxrM3s4LK6PP1zbAI+sCviSTnERtuxiswYpLDw6b997HNqDKH90WtTwLDx4fXnmgJ14 QTrqmlECp1o4r3jzQpMooH9p2JA5JUridYuGq1Z6hs1QP+6t43A5r1T47d/4NOwySRMR yQfeCIT0Udp7RVrqR5AklCt45R18Q/fV/vEHUA4ljGeS413NihcFuKPxaYpnsQCJUBW2 f4OLVKI2Y9yMd8tcTA2KvTy0A7TA9Z4s75UKoXPXFsLxemTLbg38zV53PrUoGmZ1AOOi kIPA== X-Gm-Message-State: AOJu0Yyw9Y+CvTfx1aiV7I9XIUUGxLmWPh5ePv554HHsuA3UiFJGVjGd 4ptA550/M4Zj+g2c53wmECE/g6Khg1Ii5WTprRnQHNra5ZIU4FFGmvEHUvEYlOGIBLPXUeMGKod C92bu/cu6kuIbWCqKoFh0sXQbw242Qd1Lv1TehoRMl7gI2BA3dIAPnTJHa7dBay0Un/bKv1fdWB OyOam7Gq4Uo3l6052sP+AOGtfb2Yy8ROX2whgN5Uxt X-Gm-Gg: AY/fxX5ZHjDFTBphrOMsc0LR9WHtcjs8z05cNW3LEWcjpkcLURjn229u1dcvJXVTJ5Q amkReP+D3wmcLPPL7Fnsv48HGCmvsp9FinHIwhF1351EtiArV89OD3gXSh1IiM9LpJWKy5JTny0 74kLXVDZIpkRUz8dUmjbxhBAih2dDGHxi1nBY0f5r8a2K1Ay+Z42i5GWrcfJmdtu7CvkLY+M/fH tta8XD7/PlCMQbMcA6y97fD/uos2oWy7oq4RKumSweLt2he3azoclXasHWDYmdDEf9u4HYybP9C B5nw1HCK+Ucp2qlfqY59o5ycJuKFYexSsV8XGlXqqnZ9u6IBbq8LtRJEpkWoyxH80H8gApb0Ae8 zIKtxhK3ZHt2KYC0Vvs2RycfVHeL/fK6Iw1icfdUSyLXvkPZFsydWtw6stTLyKuTjBBaTZlEfo1 kpacY8LZv2HmEl0Fs= X-Received: by 2002:a05:600c:4e01:b0:477:9574:d641 with SMTP id 5b1f17b1804b1-47d1957f712mr294941535e9.22.1766827124938; Sat, 27 Dec 2025 01:18:44 -0800 (PST) X-Google-Smtp-Source: AGHT+IFH7My0YJ6bXCTbKrST8rl6I8SJ6atVJZTu3q3CZYRAf3RAlVIHeJXxU7AQ4iNTDpUlseRgDA== X-Received: by 2002:a05:600c:4e01:b0:477:9574:d641 with SMTP id 5b1f17b1804b1-47d1957f712mr294941295e9.22.1766827124444; Sat, 27 Dec 2025 01:18:44 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: "Dr. David Alan Gilbert" , Julian Andres Klode Subject: [PULL 072/153] qemu-options.hx: Document -M as -machine alias Date: Sat, 27 Dec 2025 10:14:59 +0100 Message-ID: <20251227091622.20725-73-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827279967158500 Content-Type: text/plain; charset="utf-8" From: "Dr. David Alan Gilbert" -M is used heavily in documentation and scripts, but isn't actually documented anywhere. Document it as equivalent to -machine, also moving to -machine the sole suboption that was documented under -M. Reported-by: Julian Andres Klode Signed-off-by: Dr. David Alan Gilbert Link: https://lore.kernel.org/r/20251203131511.153460-1-dave@treblig.org Signed-off-by: Paolo Bonzini --- qemu-options.hx | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/qemu-options.hx b/qemu-options.hx index fca2b7bc74f..ec92723f10d 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -44,6 +44,7 @@ DEF("machine", HAS_ARG, QEMU_OPTION_machine, \ #endif " memory-backend=3D'backend-id' specifies explicitly pr= ovided backend for main RAM (default=3Dnone)\n" " cxl-fmw.0.targets.0=3Dfirsttarget,cxl-fmw.0.targets.1= =3Dsecondtarget,cxl-fmw.0.size=3Dsize[,cxl-fmw.0.interleave-granularity=3Dg= ranularity]\n" + " sgx-epc.0.memdev=3Dmemid,sgx-epc.0.node=3Dnumaid\n" " smp-cache.0.cache=3Dcachename,smp-cache.0.topology=3D= topologylevel\n", QEMU_ARCH_ALL) SRST @@ -179,6 +180,9 @@ SRST =20 -machine cxl-fmw.0.targets.0=3Dcxl.0,cxl-fmw.0.targets.1=3Dcxl= .1,cxl-fmw.0.size=3D128G,cxl-fmw.0.interleave-granularity=3D512 =20 + ``sgx-epc.0.memdev=3D@var{memid},sgx-epc.0.node=3D@var{numaid}`` + Define an SGX EPC section. + ``smp-cache.0.cache=3Dcachename,smp-cache.0.topology=3Dtopologylevel`` Define cache properties for SMP system. =20 @@ -208,12 +212,10 @@ SRST ERST =20 DEF("M", HAS_ARG, QEMU_OPTION_M, - " sgx-epc.0.memdev=3Dmemid,sgx-epc.0.node=3Dnumaid\n", - QEMU_ARCH_ALL) - + "-M as -machine\n", QEMU_ARCH_ALL) SRST -``sgx-epc.0.memdev=3D@var{memid},sgx-epc.0.node=3D@var{numaid}`` - Define an SGX EPC section. +``-M`` + as -machine. ERST =20 DEF("cpu", HAS_ARG, QEMU_OPTION_cpu, --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827494; cv=none; d=zohomail.com; s=zohoarc; b=DWFWZ5v2n4sJtIKwpWfs9weEq4Zo/I9HcrYggIclVwM7Szz82aMjsSmyqk9iMcqy1eUghXh4Ue/gnAfu51G87vr3XBDvTR1il2NXFhVKM/wYphv1JJg75Igo9ySej72KJKwyV2y+2tjFMmNS0FboF5eIhv+TBARkVP4+AdwYI2U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827494; 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=QLDG/mu3345byp5m3TmLYz4W6m4rlJhi1efMLR5uavA=; b=VgpFNutCdJzv8vpf4iG++Zx4fbAPn0sExyctAZXD/emUgk1vqccIAYrCLuiqMC2Pc1YPsQJn/KEWYTwMLdndG/trRTf6aYUE4i5228e0spWtYyEdCIxcVbQDBKeplfhQRf5MkPvs3ybfUc/padSLn0zM9AmOiaWZgLXGtqnoMa4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766827494034319.8264475911593; Sat, 27 Dec 2025 01:24:54 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQRr-0000zg-RE; Sat, 27 Dec 2025 04:18:55 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRp-0000i0-Lz for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:53 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRn-0004Sm-QK for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:53 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-523-ZC1FiFcUN228m1Z-M_oWhA-1; Sat, 27 Dec 2025 04:18:49 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4776079ada3so70687555e9.1 for ; Sat, 27 Dec 2025 01:18:49 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d193cba81sm426762775e9.10.2025.12.27.01.18.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:18:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827131; 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=QLDG/mu3345byp5m3TmLYz4W6m4rlJhi1efMLR5uavA=; b=WfWvrBKKoiRKjhqLzziS3ZxMtDVFCoPJmsCUySXDBUl4lehsaER+HXz25VaQmTLTSF6+/u bco3sFNVr/rqWWjEuSba/zJ9RujSIL0b48rEum68eWuV64SZhbsuAIEsQpJyHe9qetteBo AyGsPDbvwIWz3t8XIZDf+1JW6qjKUSI= X-MC-Unique: ZC1FiFcUN228m1Z-M_oWhA-1 X-Mimecast-MFC-AGG-ID: ZC1FiFcUN228m1Z-M_oWhA_1766827128 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827127; x=1767431927; 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; bh=QLDG/mu3345byp5m3TmLYz4W6m4rlJhi1efMLR5uavA=; b=Y4mdILSYdtLcCDEiEI7gAY6RTzNad790/492qD/FMPC8xHX3FTpGIoEf4NKX+v0Sf/ EZoTZKsfAL+Z8aEvKYlVqWcYxrPUMxER3Se7ALwndU6deV/v9+2vofV2B6h02skAqDLc cK6Atebdg0fO9Mkw08KE2oVCs0IVh0Dwx6ThSvdCIJcugdh+EZ6o625BBUa1pNlThywH bCGI7iTgY2LVPyeNESVZf/OLzRV/+hqScztIFyXFmSu9U/jhJ/9+eyi984Qh2sLpYALD DN5BbqKMbZ/lW6akwoIj4q31McKbVpdBigmuTzw0Cb10Cxcm6aU4eKDvsASG5X3HiCkg boRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827127; x=1767431927; 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; bh=QLDG/mu3345byp5m3TmLYz4W6m4rlJhi1efMLR5uavA=; b=l0exxbPbbCnkdW1BtQY311sOxolqItQhrEq+Ayga6nyRINu9PZ6jFpb2WnqvZMBMlO JpAwY64HopNaxT2cAKr3i2pp6nR7qoY1BVWLopBIG1cBw7q39dU+IiXW8FMZ8jG5Mzol ngwuB0qKk0F385GeR1dvZNjsjuse1tcYcndfTztWkYpyeKorH3H6RdTILvw+7vFu0JNY NxUgKEGLhyNTAmrV9ipi2w6Yfjt5iAsx+c48+N4UkQFjj1eazW5zEboVpz3IKWNwqW1K MDRD/SsWkYdFz79j9VgLk4Nqii+W/oJqlKjSn7FBTTK3Bavjhzx7y32Q++bBuQVHwXo2 LuYQ== X-Gm-Message-State: AOJu0YzAGF7u85XY21h0KHh+wnGlvptZVAFQbbk6R1eAIP36b8Ne+Iq2 49Vs68HtvQls14rYNOdUTjQytq0+M0TKnZdVyAWe18UjelkRcgTSYBei+gyIIw+H7BVR+8PalLf CINqkl8fUkEFrgkDq/a93FKNOcRrx1W1sefU2V2Xkke9QyLVRjxuXQnDXhhPxCP3TGpQy7zG6LP seFoNCF0YQOAn78ju2Hb0TaDxswGq7OZuSA+2geR5C X-Gm-Gg: AY/fxX5WvfC0Ky0jx8wSicGChBlx1Wry05/IpCsSVuZdNz+NGKiSmeeGI+W3H/cTzXM W0F486oLKATGqXnSuipt/9BYSRcDUN9rM6E/pl1AGsqy9XKhUZz/e9gs658hBcfdhzafNGOE2MS najUzZ9GIY61Sl9UiaO0Mw+1ECFmUBhim8Q3+7EZpPgDJmXQIUZrJ38Qa25xmpvWrJESb/1cGs4 UzqoyiOExKbjoKYHxquqYNzzd1TC1f5CzAWNV/315hxjrgRrJiw/CRBqH04bkp61psZR52Rl6we 7bC5c/LFgMngTVFIHAtOqtRKEjBoLu7V+PBKYusthLc46+pIJbt6RRtzf6uwQeBaE7hNqHtEaPM xK4FW8PINqKCYM7gfGxeoEkN26+Gn/NLpzb6UDa2MEFFxV0Buqf9ydhJdXuWg0uiksKR5+z6Img d0n8+tO6YC5WaxTQQ= X-Received: by 2002:a05:600d:4453:10b0:47d:2093:649f with SMTP id 5b1f17b1804b1-47d2093660fmr182024115e9.8.1766827127220; Sat, 27 Dec 2025 01:18:47 -0800 (PST) X-Google-Smtp-Source: AGHT+IHROktWE4utAdCy0tq+mXNPChgtU/N53C/k2gSXjy+OGJVISmWCDeT5VAAMQEhg4v8zH3O61g== X-Received: by 2002:a05:600d:4453:10b0:47d:2093:649f with SMTP id 5b1f17b1804b1-47d2093660fmr182023915e9.8.1766827126727; Sat, 27 Dec 2025 01:18:46 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Xiaoyao Li Subject: [PULL 073/153] i386/cpu: Clean up indent style of x86_ext_save_areas[] Date: Sat, 27 Dec 2025 10:15:00 +0100 Message-ID: <20251227091622.20725-74-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827494651158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu The indentation style in `x86_ext_save_areas[]` is extremely inconsistent. Clean it up to ensure a uniform style. Tested-by: Farrah Chen Reviewed-by: Xiaoyao Li Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211060801.3600039-2-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- target/i386/cpu.c | 58 +++++++++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 25 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index fe52538723b..a1de82b92c7 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -2028,38 +2028,46 @@ ExtSaveArea x86_ext_save_areas[XSAVE_STATE_AREA_COU= NT] =3D { .feature =3D FEAT_1_ECX, .bits =3D CPUID_EXT_XSAVE, .size =3D sizeof(X86LegacyXSaveArea) + sizeof(X86XSaveHeader), }, - [XSTATE_YMM_BIT] =3D - { .feature =3D FEAT_1_ECX, .bits =3D CPUID_EXT_AVX, - .size =3D sizeof(XSaveAVX) }, - [XSTATE_BNDREGS_BIT] =3D - { .feature =3D FEAT_7_0_EBX, .bits =3D CPUID_7_0_EBX_MPX, - .size =3D sizeof(XSaveBNDREG) }, - [XSTATE_BNDCSR_BIT] =3D - { .feature =3D FEAT_7_0_EBX, .bits =3D CPUID_7_0_EBX_MPX, - .size =3D sizeof(XSaveBNDCSR) }, - [XSTATE_OPMASK_BIT] =3D - { .feature =3D FEAT_7_0_EBX, .bits =3D CPUID_7_0_EBX_AVX512F, - .size =3D sizeof(XSaveOpmask) }, - [XSTATE_ZMM_Hi256_BIT] =3D - { .feature =3D FEAT_7_0_EBX, .bits =3D CPUID_7_0_EBX_AVX512F, - .size =3D sizeof(XSaveZMM_Hi256) }, - [XSTATE_Hi16_ZMM_BIT] =3D - { .feature =3D FEAT_7_0_EBX, .bits =3D CPUID_7_0_EBX_AVX512F, - .size =3D sizeof(XSaveHi16_ZMM) }, - [XSTATE_PKRU_BIT] =3D - { .feature =3D FEAT_7_0_ECX, .bits =3D CPUID_7_0_ECX_PKU, - .size =3D sizeof(XSavePKRU) }, + [XSTATE_YMM_BIT] =3D { + .feature =3D FEAT_1_ECX, .bits =3D CPUID_EXT_AVX, + .size =3D sizeof(XSaveAVX), + }, + [XSTATE_BNDREGS_BIT] =3D { + .feature =3D FEAT_7_0_EBX, .bits =3D CPUID_7_0_EBX_MPX, + .size =3D sizeof(XSaveBNDREG), + }, + [XSTATE_BNDCSR_BIT] =3D { + .feature =3D FEAT_7_0_EBX, .bits =3D CPUID_7_0_EBX_MPX, + .size =3D sizeof(XSaveBNDCSR), + }, + [XSTATE_OPMASK_BIT] =3D { + .feature =3D FEAT_7_0_EBX, .bits =3D CPUID_7_0_EBX_AVX512F, + .size =3D sizeof(XSaveOpmask), + }, + [XSTATE_ZMM_Hi256_BIT] =3D { + .feature =3D FEAT_7_0_EBX, .bits =3D CPUID_7_0_EBX_AVX512F, + .size =3D sizeof(XSaveZMM_Hi256), + }, + [XSTATE_Hi16_ZMM_BIT] =3D { + .feature =3D FEAT_7_0_EBX, .bits =3D CPUID_7_0_EBX_AVX512F, + .size =3D sizeof(XSaveHi16_ZMM), + }, + [XSTATE_PKRU_BIT] =3D { + .feature =3D FEAT_7_0_ECX, .bits =3D CPUID_7_0_ECX_PKU, + .size =3D sizeof(XSavePKRU), + }, [XSTATE_ARCH_LBR_BIT] =3D { - .feature =3D FEAT_7_0_EDX, .bits =3D CPUID_7_0_EDX_ARCH_LBR, - .offset =3D 0 /*supervisor mode component, offset =3D 0 */, - .size =3D sizeof(XSavesArchLBR) }, + .feature =3D FEAT_7_0_EDX, .bits =3D CPUID_7_0_EDX_ARCH_LBR, + .offset =3D 0 /*supervisor mode component, offset =3D 0 */, + .size =3D sizeof(XSavesArchLBR), + }, [XSTATE_XTILE_CFG_BIT] =3D { .feature =3D FEAT_7_0_EDX, .bits =3D CPUID_7_0_EDX_AMX_TILE, .size =3D sizeof(XSaveXTILECFG), }, [XSTATE_XTILE_DATA_BIT] =3D { .feature =3D FEAT_7_0_EDX, .bits =3D CPUID_7_0_EDX_AMX_TILE, - .size =3D sizeof(XSaveXTILEDATA) + .size =3D sizeof(XSaveXTILEDATA), }, }; =20 --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766827565; cv=none; d=zohomail.com; s=zohoarc; b=K+Au19UhnN1VeYkejNgeiDReo0n27MxaUYzIgo4QpNulAtg9Zhxaoa6l/EDI9BBfp3eH4fGnkB/VI4WGe/IAKaCMRmDpkuczGoq5aEor2QbWLHHDFumputxnC1zdWt2EZfrdKBRvItollL0uZzZwgZx1XyhQZa7nafliod1bwF0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766827565; 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=J25vunL87AyvdpBRg+pj1dyV40vixOMAuev4scCnlOg=; b=Lmcw8+6gRSBRYQuNLBql8vxkK9t3C7deSU7IZnBJTXJfG/cLFJu/vcRZImcy52pOjEJKUVZuok1ynwRbFqPrHbatsbJFqyYHYItOxC4ZqJ/V1Iv8P/r5AZCatIVGS/8iF52ySWIfJ9m/WqdHmB94tdVzUd4U90Aw9XOhnOlvBIs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17668275655671.1053774975234774; Sat, 27 Dec 2025 01:26:05 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQRt-0001El-Bn; Sat, 27 Dec 2025 04:18:57 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRr-0000yc-L1 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:55 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQRp-0004Uh-My for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:18:55 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-608-oPmPdGV1PUC30CwWxUpt5A-1; Sat, 27 Dec 2025 04:18:51 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-47777158a85so88673625e9.3 for ; Sat, 27 Dec 2025 01:18:51 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be3aea77bsm188468025e9.17.2025.12.27.01.18.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:18:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766827133; 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=J25vunL87AyvdpBRg+pj1dyV40vixOMAuev4scCnlOg=; b=PEzA2HOv6iKesB2FX5/RSxsoUxDKQv3gBLiksKgotiCbOsVq0UeFA3uPxqh0VALEEaZznV sJD4aVuL5STbegouqHUy8bN/9yc7AA4HYrhS8AsJtm8Dcgc3gX9ddeYUfKvTesarkNG0CP ya2e4GWS7HTLprFH2sSf4czZV0W9cJc= X-MC-Unique: oPmPdGV1PUC30CwWxUpt5A-1 X-Mimecast-MFC-AGG-ID: oPmPdGV1PUC30CwWxUpt5A_1766827130 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766827130; x=1767431930; 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; bh=J25vunL87AyvdpBRg+pj1dyV40vixOMAuev4scCnlOg=; b=idrQTWWdNbNhKWWOz6eDx5vvzcLn7moN2FT7OpxHc8hkbQCPHZLK76DrmuqcxLLqXc f/fwQ1sYsBUAx0wP/HB5XUiZzplvNKAkT5//GHAKbBAuDJ4HTR9YG45df0LYGdztpu9Y okq8GbOf/j4t7NO64czS/vDKqAyyKVQ8zumVmZvrNQ9/pwHiHlZsRSLRpXR44S0AL1Dl XeT8y3IdAKSG5iZXg5ukgBcI8cDd13zpJDdKu9/qOnJdvmXWEi5gmnrV4AhIjtJTAUGh doKKDalgs6lX8cnZ7Rj7tByUptXrZ8u+SUcMMFl3uJkFwkqRoMWYfxqp3ZUi/YmrDDDx z7CQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766827130; x=1767431930; 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; bh=J25vunL87AyvdpBRg+pj1dyV40vixOMAuev4scCnlOg=; b=Yzbr5zmZsUa0u9gJQc7EC6r4sNs1vThoh2hAI07k8YARwgXkVUtJyr/9Is3JiJRWiG zsCbiH39hLe2mHbKzWGCtw+We0Oju/Wy7ev0Fmcj+8konci5RaB6fRRFje8nStUaB61k 2qrxVEg+SjAAJwymQE8NRM8kk6TOx4f7Bvmzq/3/LAOBBZH6dlu4hZRdagMn1rP9r07m F23FnpKoMNUNR8VZDISxScs9qkV5sEuSE3XfUiLtWdZSm+oU2w4sP5lwDZowpurQrWAY 0dGzN3V32yeY/DcEghL43bFD5Ev/eslsVhEVTGU41R7Pqw873HFXZxtIAFPrfEzE+uOQ jFfw== X-Gm-Message-State: AOJu0YwmFRsBpAw8IoaFOnIgH/UNIc7UhVehabRTvskTzRxSqg62O27m Cfj+hvMWjnTAx8swMJcQFriyHg3BLJqLkzQQUmbUbK7pKCm+hWf+Q5sRYshn2tdq3l+dRk6l6MD AI0Uxe0ZdWNnauWoDUR38uFMhKlG4TsRHvOIiGehTrSaf7cNeLGkTTKuzPJDrkH0EBw28ugIltH YtvcitQ7aacIfAQI3KrRbNgi1cfWvPwxepHVZBQtng X-Gm-Gg: AY/fxX7y9UXJcAah8LwPdyaHcIyaC7o7GL0hcRXFicnyELeKo+IZ1AgXIR0hIFTlONA 3GtxI0GnGKBMau9mAILH9FFhn/a9eaoierelESTrk1BwYI6FyElb8NVGl0TvIM2I3OLBnSN9L0v PeTQcGytzHUDbYcuL7G0lVt5WNHq+gMHZf/siDTIb1RR3soN30hige479nmwG9w6KfE0OMjIN6l gLcRdo3Y1lxzeFlK7Q/aM6IwSMbd8GPJh8E+fibqnCcyCYFwF1X+KZdZwBr2AoTNM/CtxuBdfqA c7sLBABvdN1YD06f3Z2vQk2pdN2/CrGWmETMgVerEE2Iqq+xa6xFbYKdrj29ByAK6om0TTJmsmd kjUkbwXZPaPzQOXhLUYRn9soR7UzRrgdmMhtN8yKir3Q0dZC8CnOblC7ZV+SMh340Xgv+GxlzfZ +rmKtSTr2EWZB50G4= X-Received: by 2002:a05:600c:4711:b0:47a:9560:5944 with SMTP id 5b1f17b1804b1-47d195c1a71mr305956875e9.34.1766827129928; Sat, 27 Dec 2025 01:18:49 -0800 (PST) X-Google-Smtp-Source: AGHT+IGpIjSCRhI6ULWCTlHJ+qzoMyWijns64sX3ZDzLys//wvgq1UHbFifCoz0s3IstI+AdWVOYVA== X-Received: by 2002:a05:600c:4711:b0:47a:9560:5944 with SMTP id 5b1f17b1804b1-47d195c1a71mr305956615e9.34.1766827129503; Sat, 27 Dec 2025 01:18:49 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 074/153] i386/cpu: Clean up arch lbr xsave struct and comment Date: Sat, 27 Dec 2025 10:15:01 +0100 Message-ID: <20251227091622.20725-75-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766827566944158501 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Arch LBR state is area 15, not 19. Fix this comment. And considerring other areas don't mention user or supervisor state, for consistent style, remove "Supervisor mode" from its comment. Moreover, rename XSavesArchLBR to XSaveArchLBR since there's no need to emphasize XSAVES in naming; the XSAVE related structure is mainly used to represent memory layout. In addition, arch lbr specifies its offset of xsave component as 0. But this cannot help on anything. The offset of ExtSaveArea is initialized by accelerators (e.g., hvf_cpu_xsave_init(), kvm_cpu_xsave_init() and x86_tcg_cpu_xsave_init()), so explicitly setting the offset doesn't work and CPUID 0xD encoding has already ensure supervisor states won't have non-zero offsets. Drop the offset initialization and its comment from the xsave area of arch lbr. Tested-by: Farrah Chen Reviewed-by: Zide Chen Reviewed-by: Xiaoyao Li Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211060801.3600039-3-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- target/i386/cpu.h | 8 ++++---- target/i386/cpu.c | 3 +-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index cee1f692a1c..c95b772719c 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -1747,15 +1747,15 @@ typedef struct { =20 #define ARCH_LBR_NR_ENTRIES 32 =20 -/* Ext. save area 19: Supervisor mode Arch LBR state */ -typedef struct XSavesArchLBR { +/* Ext. save area 15: Arch LBR state */ +typedef struct XSaveArchLBR { uint64_t lbr_ctl; uint64_t lbr_depth; uint64_t ler_from; uint64_t ler_to; uint64_t ler_info; LBREntry lbr_records[ARCH_LBR_NR_ENTRIES]; -} XSavesArchLBR; +} XSaveArchLBR; =20 QEMU_BUILD_BUG_ON(sizeof(XSaveAVX) !=3D 0x100); QEMU_BUILD_BUG_ON(sizeof(XSaveBNDREG) !=3D 0x40); @@ -1766,7 +1766,7 @@ QEMU_BUILD_BUG_ON(sizeof(XSaveHi16_ZMM) !=3D 0x400); QEMU_BUILD_BUG_ON(sizeof(XSavePKRU) !=3D 0x8); QEMU_BUILD_BUG_ON(sizeof(XSaveXTILECFG) !=3D 0x40); QEMU_BUILD_BUG_ON(sizeof(XSaveXTILEDATA) !=3D 0x2000); -QEMU_BUILD_BUG_ON(sizeof(XSavesArchLBR) !=3D 0x328); +QEMU_BUILD_BUG_ON(sizeof(XSaveArchLBR) !=3D 0x328); =20 typedef struct ExtSaveArea { uint32_t feature, bits; diff --git a/target/i386/cpu.c b/target/i386/cpu.c index a1de82b92c7..de4e5c57746 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -2058,8 +2058,7 @@ ExtSaveArea x86_ext_save_areas[XSAVE_STATE_AREA_COUNT= ] =3D { }, [XSTATE_ARCH_LBR_BIT] =3D { .feature =3D FEAT_7_0_EDX, .bits =3D CPUID_7_0_EDX_ARCH_LBR, - .offset =3D 0 /*supervisor mode component, offset =3D 0 */, - .size =3D sizeof(XSavesArchLBR), + .size =3D sizeof(XSaveArchLBR), }, [XSTATE_XTILE_CFG_BIT] =3D { .feature =3D FEAT_7_0_EDX, .bits =3D CPUID_7_0_EDX_AMX_TILE, --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766828931; cv=none; d=zohomail.com; s=zohoarc; b=RozbxdjawoGy1PQ3fp5Xn3fAdweKhY+sK4rwT+i0QRCIHe5Xee8Z+adG2aiMMkCeAnoMA2XimFXrrqPYlWJU8HTbjo+GfR2Qif/aL3PO+m6Z+yBtNuULvq+1SzDTObN1/LtZyotmjH3idiu0ZfY1fbjR5I5V6bMWdx/P1PGieGY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766828931; 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=7dZhd1TJrGMuB/APYTvzoI0KrpziUdotLVGl/UiitoY=; b=VtRSVlWJa4YCsjoYSNXc4C2Y08CJdFMkZ94IuvMLH8LBqJoWj+moZb9xZl/+7VIlTw1FmP93wD+dgfqLmyv8GtRsYIQyNnDJQm0HCEfebPsmay7mZyb+TvnIwruqfSn/vLWxEHD6VgzVkrbTlNUAIZrus7pLSzJ9yzpFJmhZrtY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17668289310861008.6000516829232; Sat, 27 Dec 2025 01:48:51 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQuA-00029V-6A; Sat, 27 Dec 2025 04:48:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQu8-00029H-L4 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:08 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQu6-0006qL-RK for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:08 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-184-bcAPrjScONal8lpWqDSoZA-1; Sat, 27 Dec 2025 04:48:03 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-4792bd2c290so73500055e9.1 for ; Sat, 27 Dec 2025 01:48:03 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa08efsm50567011f8f.29.2025.12.27.01.48.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:48:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828885; 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=7dZhd1TJrGMuB/APYTvzoI0KrpziUdotLVGl/UiitoY=; b=WamZ+MXqt0BerMVbVxlvaK7JcsOY7PbJdryh9WnhnaBKP5xgsaxbX70Sy/NT1LB3UlNKEM BeSvBt8GviEzLPe6hKunhIxF+2SRP9IhadNq1V4lpYf9Rna7xEF0zOdI960UPr0IsX+Q7D uJLiTUsq1+2fJRGIeqjiT+6p5fZHT9Q= X-MC-Unique: bcAPrjScONal8lpWqDSoZA-1 X-Mimecast-MFC-AGG-ID: bcAPrjScONal8lpWqDSoZA_1766828882 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828882; x=1767433682; 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; bh=7dZhd1TJrGMuB/APYTvzoI0KrpziUdotLVGl/UiitoY=; b=WCyBHNmzrZ94pheQjntz+bXwR/Gn2Q+DUrH3Yj3P3mzWJgp4xoCBpIQosJyVLykA7f aHoRmLBn2gC1E5e3OI6/fN/DH/K84BVQa+S6LvqUTpTifD4xGGyBvjmRTjxrh/mRL3NL TZo1Nwt+F7bQTnmcRJTkGBTJ4WXx+GoGLA9N1gfMPQhqc8Zu4Fl+oZDXFeOy8dVmuOd5 zPrTNepHoRFI0kI6JESACige6pReuSvKXyUurUxW48cGSVGSLU893+pTTEqsWrqIeN9j d5xz7MAX85J9eSi35R4Em4lorzfvfibCRiZFiq8qB/rfXnncCPnVFzmfCXGFeeiRW+mT 5iNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828882; x=1767433682; 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; bh=7dZhd1TJrGMuB/APYTvzoI0KrpziUdotLVGl/UiitoY=; b=LgRLO7JFqPSIggi7GMnRbTXqJU1Yf8v4bAbayRa32GI87gNwPYDp19EDJTtZr4ETiC hVulJq3ik/9KqhY0Q1zAACP11V7nIBBxRM0HGLxe2pqCqo+/kWZu4v50C6U9X5kspm2T wyuOKbU3n0Lz+BAlH+VLWgkdeCYrWYj0yS1g4XgU2wZq7YZBezVuNo6YnXCI211gSzxR wQRxRlgFK+ydYSFS0fiZpRnZW63l67Zjr2EZz7QjyDe9X1KD+a52AaqvPWYOQG2rHw6r ntCUpVa1toHOTqaxGrWEiUigeqYqWn+AZHnDYSeEXPdGHXsd/QkfjbZ32K8dgWfwAVZU M49Q== X-Gm-Message-State: AOJu0YzXEf6gn5vXCIbS/TDZmIy0xAfNDfuYA3/8M8GEMPXYPshlVrC8 XWrAP7ZaEqXPphHVVeIKJZBIMMvW9+BOcM6qZ/zqQhvj2LQJHK1pWF/a9UNWKs86IrwoYslmigS VE2SKekDYpM9RY3kPJgXEM/AcGN1D+LO/cg0saF61fXgEMIKRKrpu7FCg3jwnEUl7dq+GW/LcK8 6VMpHNuLCqA49L6h0QXRkFmSHi+n+XMq5HS7j4mkbT X-Gm-Gg: AY/fxX74a4uhTV1zlXpaeCtqDr49rKfH16e0QIOKShXzuOJRD4Ul5/hVii0OHZRylDr 0UF1rC2dFOrmQnLVxQHGQdJpeFkrSbNx/hORvknOMyFUKscGQ5aqi0ibAm4zhlQUqTTTzOwg8a2 OmBNT56WqP5hJFoDDZ9ZX+RJYJOMDFbrTs4v0uKkAAsFWL43caMAMURV9qng/fUCI+KLTHLSJMb qjoGvgBXXntHPa19a449mV4kFvGodxLtUc3Nc59cRgCEv2Aab/69cxGb9eFsddt8wE/Cl+aKf4L SuewSmWelmWsjmxHYgWtZKCJx0hG6tEQquk3D5bE+/d4p/ZNNt0zlF0mdyQlP3xKcRZtd6ygZGs zd4wQEqxLX9MEm0Zcps01fJNAcUK2oINLvmTO9XUiauC89x7CVDLRGQ8V0RkPSylHgLWfYuMgP2 qaNxZa2F2CzqzVjiI= X-Received: by 2002:a05:600c:4f94:b0:477:c71:1fc1 with SMTP id 5b1f17b1804b1-47d19595e3dmr274109605e9.19.1766828881746; Sat, 27 Dec 2025 01:48:01 -0800 (PST) X-Google-Smtp-Source: AGHT+IFToZ968yGx9ycARSj2nZd0RxtA6xp/fE83aQxLcFTVABds3HwP7JhbbjX5YjFwA4h/LDJ2fA== X-Received: by 2002:a05:600c:4f94:b0:477:c71:1fc1 with SMTP id 5b1f17b1804b1-47d19595e3dmr274109345e9.19.1766828881171; Sat, 27 Dec 2025 01:48:01 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 075/153] i386/cpu: Reorganize arch lbr structure definitions Date: Sat, 27 Dec 2025 10:46:40 +0100 Message-ID: <20251227094759.35658-1-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766828932621158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu - Move ARCH_LBR_NR_ENTRIES macro and LBREntry definition before XSAVE areas definitions. - Reorder XSavesArchLBR (area 15) between XSavePKRU (area 9) and XSaveXTILECFG (area 17), and reorder the related QEMU_BUILD_BUG_ON check to keep the same ordering. This makes xsave structures to be organized together and makes them clearer. Tested-by: Farrah Chen Reviewed-by: Zide Chen Reviewed-by: Xiaoyao Li Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211060801.3600039-4-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- target/i386/cpu.h | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index c95b772719c..a183394eca7 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -1652,6 +1652,14 @@ typedef struct { =20 #define NB_OPMASK_REGS 8 =20 +typedef struct { + uint64_t from; + uint64_t to; + uint64_t info; +} LBREntry; + +#define ARCH_LBR_NR_ENTRIES 32 + /* CPU can't have 0xFFFFFFFF APIC ID, use that value to distinguish * that APIC ID hasn't been set yet */ @@ -1729,24 +1737,6 @@ typedef struct XSavePKRU { uint32_t padding; } XSavePKRU; =20 -/* Ext. save area 17: AMX XTILECFG state */ -typedef struct XSaveXTILECFG { - uint8_t xtilecfg[64]; -} XSaveXTILECFG; - -/* Ext. save area 18: AMX XTILEDATA state */ -typedef struct XSaveXTILEDATA { - uint8_t xtiledata[8][1024]; -} XSaveXTILEDATA; - -typedef struct { - uint64_t from; - uint64_t to; - uint64_t info; -} LBREntry; - -#define ARCH_LBR_NR_ENTRIES 32 - /* Ext. save area 15: Arch LBR state */ typedef struct XSaveArchLBR { uint64_t lbr_ctl; @@ -1757,6 +1747,16 @@ typedef struct XSaveArchLBR { LBREntry lbr_records[ARCH_LBR_NR_ENTRIES]; } XSaveArchLBR; =20 +/* Ext. save area 17: AMX XTILECFG state */ +typedef struct XSaveXTILECFG { + uint8_t xtilecfg[64]; +} XSaveXTILECFG; + +/* Ext. save area 18: AMX XTILEDATA state */ +typedef struct XSaveXTILEDATA { + uint8_t xtiledata[8][1024]; +} XSaveXTILEDATA; + QEMU_BUILD_BUG_ON(sizeof(XSaveAVX) !=3D 0x100); QEMU_BUILD_BUG_ON(sizeof(XSaveBNDREG) !=3D 0x40); QEMU_BUILD_BUG_ON(sizeof(XSaveBNDCSR) !=3D 0x40); @@ -1764,9 +1764,9 @@ QEMU_BUILD_BUG_ON(sizeof(XSaveOpmask) !=3D 0x40); QEMU_BUILD_BUG_ON(sizeof(XSaveZMM_Hi256) !=3D 0x200); QEMU_BUILD_BUG_ON(sizeof(XSaveHi16_ZMM) !=3D 0x400); QEMU_BUILD_BUG_ON(sizeof(XSavePKRU) !=3D 0x8); +QEMU_BUILD_BUG_ON(sizeof(XSaveArchLBR) !=3D 0x328); QEMU_BUILD_BUG_ON(sizeof(XSaveXTILECFG) !=3D 0x40); QEMU_BUILD_BUG_ON(sizeof(XSaveXTILEDATA) !=3D 0x2000); -QEMU_BUILD_BUG_ON(sizeof(XSaveArchLBR) !=3D 0x328); =20 typedef struct ExtSaveArea { uint32_t feature, bits; --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766828904; cv=none; d=zohomail.com; s=zohoarc; b=CkhzQbw/EZVnIx1HQQ5RHhn5zAahGR4bU+TQjMofhh0Olt4IOI41Qi7cqO51Yj8ouY/QQabzHNsNKqMIGRIt1pGUZ8wNKKipAyvghpmR0nzcxyleedDk3ncV52qv7n3BHRGCoOpa1itxaTWg4lJ/DWbGetbV2tG2oNgu26nlFoo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766828904; 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=vSz4mh7XiAmt4x7C6Gw7+a5fT7FbsBUAI34WJrGmG+Q=; b=Cg0OkFt2hykyXmjyxWp8h9SVdSgw28RFLluUPNBPAb+V1pjOx+WtjadqEBxyLwr7It28zCCw0hIqxudMiuHwhB8GGlgm0n4aDSAb0sxpCAwTwLxT8oi5JVv0Q0edB8yW/grc6JcytzPRFj0RpxZRA7AFYcoUhyb77BOIPt0kbx8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766828904822600.6774975579234; Sat, 27 Dec 2025 01:48:24 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQuC-00029q-14; Sat, 27 Dec 2025 04:48:12 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuA-00029e-5o for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:10 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQu7-0006ql-Lt for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:09 -0500 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-342-7jKYbtOpNf6EWoS7aLROmg-1; Sat, 27 Dec 2025 04:48:05 -0500 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-4325aa61c6bso2502543f8f.0 for ; Sat, 27 Dec 2025 01:48:05 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa08d9sm50885173f8f.30.2025.12.27.01.48.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:48:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828887; 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=vSz4mh7XiAmt4x7C6Gw7+a5fT7FbsBUAI34WJrGmG+Q=; b=Vh2pphMQ1ov/9wctJqriFWua50Zpzn8cpIka2aPmygydD1wxx9G3HXjhtAkHKy/2Hai+2V 538mAVKyMGRE/f3G+72GPJNJC1NwBKlBabouDWNU/k4yGGRlF0VGZRwii5Rvj7372LLxCZ uQjTAC+4NZUbMTY9ztQhSGlOvq2WuuQ= X-MC-Unique: 7jKYbtOpNf6EWoS7aLROmg-1 X-Mimecast-MFC-AGG-ID: 7jKYbtOpNf6EWoS7aLROmg_1766828884 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828883; x=1767433683; 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; bh=vSz4mh7XiAmt4x7C6Gw7+a5fT7FbsBUAI34WJrGmG+Q=; b=j9/HeIFBarIMQya4fyzIshvhmgvd5mVpMRIc5iK7tyqjtPNT1cZ7CgCNECyOKRYvCm 6VvWjypX9GD1XoFQxPBe/N8RB7DDVj7GXYH3EgkbkRJuEDXjnGdYOwJo4sUg0A27jLMW Ch5pFXb4/EXSzA7uXTLQjWDuQog9ODB7UikTNnQWsfPcFeIfyGFqupQmPpa5t/gQC4ul VwbwmTkXXIDAM1cxtH/oswMEUJgW8bBSUQy5dMfLoY1nVwk0yogMj62xzFM+ygC9gN+X HYLErCrDMoMqC1UeDekc4jREZEP0dCL9meEIxYzQXIYuef+eEMxH5tMUiYC+1xFM+5Xd 578w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828883; x=1767433683; 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; bh=vSz4mh7XiAmt4x7C6Gw7+a5fT7FbsBUAI34WJrGmG+Q=; b=vghQuMJjbENanS27ZcvX3/4ymKbpymxUQ+HfvHenxQ3MBVNLNjLe9nsv+AYL3vjIyU 1PIUdtYDwTM0xPaY6mFnRAaidUN6DcQnMFAYPttaVupmQ9Xjmk4qPYfq9rLulej2gAPZ 5bZqXBdy7bunUfzCm60kfkPbG7tHAlwCTkHRfPbbQEqGCOcQU/+ABQUyn6HXHxSq6OID gTQWT75qwskqVJdt+qAkJS60/l5f2GCg0onuIJx/qCjRHeEDRTsWNPQt7fF0svmBJqko r9LQd20VOwb3U4nPIKKn3pm5Fs13qYq1lFSe/rClivPb729ICDvVqJcKg5+hvDLy54S4 u73A== X-Gm-Message-State: AOJu0YyGHLdgBb0UPBhWuwpbK3xQDCJNloiiVZByvG2+WZqnyGiYhf8V WxbWWpc2f+OFjAdgK/yVS+34CfFIrzGC6Wgg4IuP052oO2O/FyLEwfMDrEzlV/VZKBDl/KhUcYs TSHdx9gjLztuAWdP/cjm15tHiyWfoXQWMk4fiGrKLOeCxfsG+db0NL0UqbMhdCcsEco50Tz1M1A plfirPkyFPeL7RT3isYfiE9vvNbJjTYASwpIFF3ad2 X-Gm-Gg: AY/fxX4D1XzqkmnjFsoNsycvNXdqLCjLndGnOKMOVXuaD+D6aeqUcyyqs98MiAvS4Sq ZikghooeU3zZC9vLUVa5VTinsPLJooqDxP7xnwBFUg971mnNbGiQu4di7HzI6F3zMeM6Br5MYDt tgLRHaeOIVbbr5JX4v7x4k7Cpj6sIIEMamllP5tJ6tzouY+U7eM1F6ZlkcJzHGC+NiryOOMIBez WC91QQV8plcA0sgTw/qlbEmyW1wB4iFnwt9+FipOW/BMyvLBzbgKpEcqCVVZbDoTWCLlwA1d+0m 9ZJiyiuxawpVXiKz9Xs1JsypxVFeyjS1rq0TfJ33NAKfKgLT6kCMVYuRjKTgeSiWzoIBC+IGRfT ewf8HWQSAMnz5vuEwH/jqjgJUezOsHDRRPKblUvzbVAwS2g9rtqTZ97tAv75MwI6sumDdI570Eb wHWfuCHz+VsrNSMb4= X-Received: by 2002:a05:6000:200c:b0:432:88c2:edb6 with SMTP id ffacd0b85a97d-43288c2ee05mr1376438f8f.2.1766828883551; Sat, 27 Dec 2025 01:48:03 -0800 (PST) X-Google-Smtp-Source: AGHT+IEvLOTVoRp4qSL+k2jn2WYEN0FUCvbRBBZLPIYcM+7drxHvtSveqnmgx2dTWZn2GStnKtPV1Q== X-Received: by 2002:a05:6000:200c:b0:432:88c2:edb6 with SMTP id ffacd0b85a97d-43288c2ee05mr1376416f8f.2.1766828883058; Sat, 27 Dec 2025 01:48:03 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 076/153] i386/cpu: Make ExtSaveArea store an array of dependencies Date: Sat, 27 Dec 2025 10:46:41 +0100 Message-ID: <20251227094759.35658-2-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766828906761158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Some XSAVE components depend on multiple features. For example, Opmask/ ZMM_Hi256/Hi16_ZMM depend on avx512f OR avx10, and for CET (which will be supported later), cet_u/cet_s will depend on shstk OR ibt. Although previously there's the special check for the dependencies of AVX512F OR AVX10 on their respective XSAVE components (in cpuid_has_xsave_feature()), to make the code more general and avoid adding more special cases, make ExtSaveArea store a features array instead of a single feature, so that it can describe multiple dependencies. Tested-by: Farrah Chen Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211060801.3600039-5-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- target/i386/cpu.h | 9 +++++- target/i386/cpu.c | 78 ++++++++++++++++++++++++++++++++++------------- 2 files changed, 65 insertions(+), 22 deletions(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index a183394eca7..3d74afc5a8e 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -1769,9 +1769,16 @@ QEMU_BUILD_BUG_ON(sizeof(XSaveXTILECFG) !=3D 0x40); QEMU_BUILD_BUG_ON(sizeof(XSaveXTILEDATA) !=3D 0x2000); =20 typedef struct ExtSaveArea { - uint32_t feature, bits; uint32_t offset, size; uint32_t ecx; + /* + * The dependencies in the array work as OR relationships, which + * means having just one of those features is enough. + * + * At most two features are sharing the same xsave area. + * Number of features can be adjusted if necessary. + */ + const FeatureMask features[2]; } ExtSaveArea; =20 #define XSAVE_STATE_AREA_COUNT (XSTATE_XTILE_DATA_BIT + 1) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index de4e5c57746..367396a216e 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -2020,53 +2020,77 @@ static const X86RegisterInfo32 x86_reg_info_32[CPU_= NB_REGS32] =3D { ExtSaveArea x86_ext_save_areas[XSAVE_STATE_AREA_COUNT] =3D { [XSTATE_FP_BIT] =3D { /* x87 FP state component is always enabled if XSAVE is supported = */ - .feature =3D FEAT_1_ECX, .bits =3D CPUID_EXT_XSAVE, .size =3D sizeof(X86LegacyXSaveArea) + sizeof(X86XSaveHeader), + .features =3D { + { FEAT_1_ECX, CPUID_EXT_XSAVE }, + }, }, [XSTATE_SSE_BIT] =3D { /* SSE state component is always enabled if XSAVE is supported */ - .feature =3D FEAT_1_ECX, .bits =3D CPUID_EXT_XSAVE, .size =3D sizeof(X86LegacyXSaveArea) + sizeof(X86XSaveHeader), + .features =3D { + { FEAT_1_ECX, CPUID_EXT_XSAVE }, + }, }, [XSTATE_YMM_BIT] =3D { - .feature =3D FEAT_1_ECX, .bits =3D CPUID_EXT_AVX, .size =3D sizeof(XSaveAVX), + .features =3D { + { FEAT_1_ECX, CPUID_EXT_AVX }, + }, }, [XSTATE_BNDREGS_BIT] =3D { - .feature =3D FEAT_7_0_EBX, .bits =3D CPUID_7_0_EBX_MPX, .size =3D sizeof(XSaveBNDREG), + .features =3D { + { FEAT_7_0_EBX, CPUID_7_0_EBX_MPX }, + }, }, [XSTATE_BNDCSR_BIT] =3D { - .feature =3D FEAT_7_0_EBX, .bits =3D CPUID_7_0_EBX_MPX, .size =3D sizeof(XSaveBNDCSR), + .features =3D { + { FEAT_7_0_EBX, CPUID_7_0_EBX_MPX }, + }, }, [XSTATE_OPMASK_BIT] =3D { - .feature =3D FEAT_7_0_EBX, .bits =3D CPUID_7_0_EBX_AVX512F, .size =3D sizeof(XSaveOpmask), + .features =3D { + { FEAT_7_0_EBX, CPUID_7_0_EBX_AVX512F }, + }, }, [XSTATE_ZMM_Hi256_BIT] =3D { - .feature =3D FEAT_7_0_EBX, .bits =3D CPUID_7_0_EBX_AVX512F, .size =3D sizeof(XSaveZMM_Hi256), + .features =3D { + { FEAT_7_0_EBX, CPUID_7_0_EBX_AVX512F }, + }, }, [XSTATE_Hi16_ZMM_BIT] =3D { - .feature =3D FEAT_7_0_EBX, .bits =3D CPUID_7_0_EBX_AVX512F, .size =3D sizeof(XSaveHi16_ZMM), + .features =3D { + { FEAT_7_0_EBX, CPUID_7_0_EBX_AVX512F }, + }, }, [XSTATE_PKRU_BIT] =3D { - .feature =3D FEAT_7_0_ECX, .bits =3D CPUID_7_0_ECX_PKU, .size =3D sizeof(XSavePKRU), + .features =3D { + { FEAT_7_0_ECX, CPUID_7_0_ECX_PKU }, + }, }, [XSTATE_ARCH_LBR_BIT] =3D { - .feature =3D FEAT_7_0_EDX, .bits =3D CPUID_7_0_EDX_ARCH_LBR, .size =3D sizeof(XSaveArchLBR), + .features =3D { + { FEAT_7_0_EDX, CPUID_7_0_EDX_ARCH_LBR }, + }, }, [XSTATE_XTILE_CFG_BIT] =3D { - .feature =3D FEAT_7_0_EDX, .bits =3D CPUID_7_0_EDX_AMX_TILE, .size =3D sizeof(XSaveXTILECFG), + .features =3D { + { FEAT_7_0_EDX, CPUID_7_0_EDX_AMX_TILE }, + }, }, [XSTATE_XTILE_DATA_BIT] =3D { - .feature =3D FEAT_7_0_EDX, .bits =3D CPUID_7_0_EDX_AMX_TILE, .size =3D sizeof(XSaveXTILEDATA), + .features =3D { + { FEAT_7_0_EDX, CPUID_7_0_EDX_AMX_TILE }, + }, }, }; =20 @@ -7131,16 +7155,24 @@ static inline void feat2prop(char *s) static const char *x86_cpu_feature_name(FeatureWord w, int bitnr) { const char *name; - /* XSAVE components are automatically enabled by other features, + /* + * XSAVE components are automatically enabled by other features, * so return the original feature name instead */ if (w =3D=3D FEAT_XSAVE_XCR0_LO || w =3D=3D FEAT_XSAVE_XCR0_HI) { int comp =3D (w =3D=3D FEAT_XSAVE_XCR0_HI) ? bitnr + 32 : bitnr; =20 - if (comp < ARRAY_SIZE(x86_ext_save_areas) && - x86_ext_save_areas[comp].bits) { - w =3D x86_ext_save_areas[comp].feature; - bitnr =3D ctz32(x86_ext_save_areas[comp].bits); + if (comp < ARRAY_SIZE(x86_ext_save_areas)) { + /* + * Present the first feature as the default. + * FIXME: select and present the one which is actually enabled + * among multiple dependencies. + */ + const FeatureMask *fm =3D &x86_ext_save_areas[comp].features[0= ]; + if (fm->mask) { + w =3D fm->index; + bitnr =3D ctz32(fm->mask); + } } } =20 @@ -8610,11 +8642,15 @@ static bool cpuid_has_xsave_feature(CPUX86State *en= v, const ExtSaveArea *esa) return false; } =20 - if (env->features[esa->feature] & esa->bits) { - return true; + for (int i =3D 0; i < ARRAY_SIZE(esa->features); i++) { + if (env->features[esa->features[i].index] & esa->features[i].mask)= { + return true; + } } - if (esa->feature =3D=3D FEAT_7_0_EBX && esa->bits =3D=3D CPUID_7_0_EBX= _AVX512F - && (env->features[FEAT_7_1_EDX] & CPUID_7_1_EDX_AVX10)) { + + if (esa->features[0].index =3D=3D FEAT_7_0_EBX && + esa->features[0].mask =3D=3D CPUID_7_0_EBX_AVX512F && + (env->features[FEAT_7_1_EDX] & CPUID_7_1_EDX_AVX10)) { return true; } =20 --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766828949; cv=none; d=zohomail.com; s=zohoarc; b=fmGJLJhJ/pXOkOPhsFdamNbgUaEZS+OSiTn7BoFI/cuLF8QmNoJmQwR2j+rHwA4h44xc8pxdg2hobygJMYn4EOwQUSxq25KlEu0n0cvnLYyJIZS+ujIw14Iqn6Tq9VrsHFNMuTuVoYGQneZ2dq6sN1QDyBLPgZKIyeWVj2NEBGs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766828949; 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=sL1kDqNm7nTKG73R+I3DXC1EVq/1kF29j6GdAVvDY1c=; b=ITFK/Tb+8bU57gYznb6oQefZak5i5QkVLlPXeKV4UZLjsyGp0mCho4RTWKcV+4GWMS62M3vx9RCKBPWuF/I9bW5ax1ndu4BtN9E3PAxWqpydYjRq/hLVUl/HwkX90fqRg8ESaS8QY1Pb84BPfSZCMkjR4jaaEzyU/WFzQU5gxMI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766828949313921.8325662742461; Sat, 27 Dec 2025 01:49:09 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQuD-0002AX-KE; Sat, 27 Dec 2025 04:48:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuC-00029r-0T for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:12 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuA-0006rP-Jd for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:11 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-250-MM6QTmOhN4uzwfmeCVmXSA-1; Sat, 27 Dec 2025 04:48:08 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-477bf8c1413so46215415e9.1 for ; Sat, 27 Dec 2025 01:48:07 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be27b28a7sm487399005e9.12.2025.12.27.01.48.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:48:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828890; 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=sL1kDqNm7nTKG73R+I3DXC1EVq/1kF29j6GdAVvDY1c=; b=UADdbYiGJt/3m2AwE0YsGJ/9Pbis1etQ+ObXXYrtPc42mQGjgF+iiubolzeeg6U0vGD3pM eLmpOjduw3HvZwIqxB2eBvdz2cy0SylbdqKtQFK5p8xO5WQOPJeS2xsACzt6Cu0RXYKY41 ooGJLWW4xCj+7nFggtb9oVBXPIWPe/U= X-MC-Unique: MM6QTmOhN4uzwfmeCVmXSA-1 X-Mimecast-MFC-AGG-ID: MM6QTmOhN4uzwfmeCVmXSA_1766828887 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828886; x=1767433686; 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; bh=sL1kDqNm7nTKG73R+I3DXC1EVq/1kF29j6GdAVvDY1c=; b=ooR3CEyYt7mWBfJMjVYB4e4vGR6cRY+t2SU5mHaXx4wZM+pTGIXuZ1irq5h103QAgx uGE2a8OB90yJUWfFRgLUaQUzss9Nb9yg7UUi+xKsl3W+CjAHH+Hu2QTaY3n3AfSj1md/ hLmOCvlV4XNybZmg3L44XDyw6MKaUKf/2GRvBuUjfzwkrMlgldU1VcPoJOPGoI0ziJ5w zS3RUZwYpEy+4Ze4pC/HPcik62EazySIRPruNekI2QK2yoWmBnDpKJ74072vp5HBqUU1 xh8f7QEmPVy4fvQ82iVqG1m8M7ZcKoLXp2SHZmRCrxbWV1WsN9nvdWvi0pu8HbhMvYU/ Rm0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828886; x=1767433686; 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; bh=sL1kDqNm7nTKG73R+I3DXC1EVq/1kF29j6GdAVvDY1c=; b=wM4Fjt6mWza4q5xXG23zBv55kWNPmr1GlRUK3e6b9tlgzjktq8iBxbUw3XczV2osY8 FN4VdNCuNA6fGyjGWf4vuo6rE5AYzDc5YCSY0MeFcfVGHL5hGeOp4gL+FxHxm4gAmpto jK36mOCJmC3m5rzeHO+DAhGbkZ4qSsTTx/vwbhDr3I1szOgFb1S+X93+NtLJc1wF60QT MshOLIsO98z7TIYvsqEgDc9fRpEmULWqwPYEdOYjbioFk7v5AlzfeI28jDotp12Gi/RC 3UwYe7xt2T8VcAel1oNloLULu1eGoj7ATcq7SSCzO6SNwcBrxtTQHQNpqi81TB/XGgU2 Ce4A== X-Gm-Message-State: AOJu0Ywvx3IP9CNJbxoSm2RgjQeo/ZTrbytyY8tGiXtfhQ8kaWID1MN0 OPCRRVEdDD7lQV5gaFiPSRB2tiLj3DgFp0v7CooJESQ1AOWoJx72wZ5hz2yX6PZAbsBY4XVvvxn JjNCaRKktXWDyQWVToxzdHKkoo55DqxXF05XBWPWxCEvmhQS1nx/9bpkyRtafA7/UeoP6tqVZXE khOI8aeU1x5s3NpnvQvJuY/Cx/r0DCvhf4gOEtm4NF X-Gm-Gg: AY/fxX51hQdublrQrCAJH9weaELrabVCBIqrIbaqYspH5h+ZIm69KC+/0MoIrw51k5r jQmjRYmTuqGFVleWjz+FxapjGIXum2nyHBngFQVrjojy/QTviIefjhePiKLqG8RqK1ov24aPsPk JXmC8UgqQbZtWpvP26e0ToLbGImFAyWEGUvS/HKSBz0uEEhm/Vc3yllru7muTqbSKuuYxd048ex +do1+R79SUbGwQ7dynQlnRSy4n0TXoXRXk0LlH2qA2gc3tA/eQtLTcwnznbbFcgLybLAuP1xwkU nNHG8jd2whEdpG/ewTt6tdD9C1eE1BtpBw9psZw6OTSLIr2TdulMlL8DKMTDmR1/AIPKXCkF79u BK/xuzdWwxICGypsTPi6DosvAn3u596xc+qoxYsIRs32H6Iu7/CBpb+gOyn1grZOirJwXGE3WO0 NKc78/GZu2Z2siyHE= X-Received: by 2002:a05:600c:3ba7:b0:477:7af8:c88b with SMTP id 5b1f17b1804b1-47d1953d798mr285422205e9.11.1766828886049; Sat, 27 Dec 2025 01:48:06 -0800 (PST) X-Google-Smtp-Source: AGHT+IFLwVkdvFFt2c6byVjauxGdH1RcbsBNVY4ZXcAsBv86y7oLwhIuETY/161Bp6PmyTLCdej+CQ== X-Received: by 2002:a05:600c:3ba7:b0:477:7af8:c88b with SMTP id 5b1f17b1804b1-47d1953d798mr285421985e9.11.1766828885688; Sat, 27 Dec 2025 01:48:05 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 077/153] i386/cpu: Add avx10 dependency for Opmask/ZMM_Hi256/Hi16_ZMM Date: Sat, 27 Dec 2025 10:46:42 +0100 Message-ID: <20251227094759.35658-3-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766828950642158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu With feature array in ExtSaveArea, add avx10 as the second dependency for Opmask/ZMM_Hi256/Hi16_ZMM xsave components, and drop the special check in cpuid_has_xsave_feature(). Tested-by: Farrah Chen Reviewed-by: Xiaoyao Li Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211060801.3600039-6-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- target/i386/cpu.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 367396a216e..812a2151471 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -2054,18 +2054,21 @@ ExtSaveArea x86_ext_save_areas[XSAVE_STATE_AREA_COU= NT] =3D { .size =3D sizeof(XSaveOpmask), .features =3D { { FEAT_7_0_EBX, CPUID_7_0_EBX_AVX512F }, + { FEAT_7_1_EDX, CPUID_7_1_EDX_AVX10 }, }, }, [XSTATE_ZMM_Hi256_BIT] =3D { .size =3D sizeof(XSaveZMM_Hi256), .features =3D { { FEAT_7_0_EBX, CPUID_7_0_EBX_AVX512F }, + { FEAT_7_1_EDX, CPUID_7_1_EDX_AVX10 }, }, }, [XSTATE_Hi16_ZMM_BIT] =3D { .size =3D sizeof(XSaveHi16_ZMM), .features =3D { { FEAT_7_0_EBX, CPUID_7_0_EBX_AVX512F }, + { FEAT_7_1_EDX, CPUID_7_1_EDX_AVX10 }, }, }, [XSTATE_PKRU_BIT] =3D { @@ -8648,12 +8651,6 @@ static bool cpuid_has_xsave_feature(CPUX86State *env= , const ExtSaveArea *esa) } } =20 - if (esa->features[0].index =3D=3D FEAT_7_0_EBX && - esa->features[0].mask =3D=3D CPUID_7_0_EBX_AVX512F && - (env->features[FEAT_7_1_EDX] & CPUID_7_1_EDX_AVX10)) { - return true; - } - return false; } =20 --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766828950; cv=none; d=zohomail.com; s=zohoarc; b=A2y4Jf7Ide5ndAs5zgG0rFLGuIJRlYHCbFRxTBDt1YMAZQz68U16en0N1Og0/iku3h/nlSeoW6TBWLLiLOLXvnKfz9fPswPpxC8rv+dvOrsEBoJ62d6td3mVljg4RXYqjSvSz8k+2w3RKgZJOE5T+cVo/ocoh4BB4JAoJ4xkrgs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766828950; 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=AKWJeBpGxkmOH5K5Q94L9lMVL3nCFqA7MqpJ6Eqegow=; b=mkJGafs4lZVq5d2WV1vI1wp9QPy/ryR/Is7K3Z6cEwQvQGymLwmNGR2PaFCW7srovvTPF6ri5usisZOxHF3J4q2PbnyvfetGI3iQRaOgxX5kvd/U/rxnfeSIyXMbAsYLgr8YpG45tKCseYWca4+qD+IjsTsXV+PzeRTDGrtcGUg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766828950246718.9933114495992; Sat, 27 Dec 2025 01:49:10 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQuJ-0002BF-7C; Sat, 27 Dec 2025 04:48:19 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuF-0002Ah-QH for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:16 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuE-0006rp-6u for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:15 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-303-O1ZI_ee0PcCFri5dy2gr2Q-1; Sat, 27 Dec 2025 04:48:10 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-432586f2c82so3532974f8f.0 for ; Sat, 27 Dec 2025 01:48:09 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eab33f5sm50344962f8f.41.2025.12.27.01.48.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:48:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828893; 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=AKWJeBpGxkmOH5K5Q94L9lMVL3nCFqA7MqpJ6Eqegow=; b=PZHGovtekHqhvodX/zSaglVvuB89E9a1harWUfomWSN1ZsYUwWYxmRFevLtUVxETjjOBfR 3FgviXX+dumcpbskhdkAku6+jZW/y+lKcDe0PEHuSdbU3XiVNLtt+vQEMd3KYLzNxSDjA+ U9bstuwHe5QPqWU3dayKlqdwbWACrRA= X-MC-Unique: O1ZI_ee0PcCFri5dy2gr2Q-1 X-Mimecast-MFC-AGG-ID: O1ZI_ee0PcCFri5dy2gr2Q_1766828889 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828888; x=1767433688; 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; bh=AKWJeBpGxkmOH5K5Q94L9lMVL3nCFqA7MqpJ6Eqegow=; b=DDp06LCkynmvbXBPi/+R7qPmRC33zu0pNar/BRGaptkicuFQyLKOOvttbUY6nKY8Ge mW+IhgIXO5HvOP4aIDgFQvrfZESVgFEy8L/0Jzao+RB/Af2TGYRixbBL79Tghbyqebnl jGEMsDOaV7Op9uYWXjZ32Ivevf3/ZMwZa0E7GJXZCieYhXd2J4S4PFM29ar3NN0isi6k vfz67Np50vxZFsi0tb5XV9l8RP0MstHFF5iRpcz+G7ohNYefiaTknGE2+efDcK7dfWfL pA8Hlg3EoZ/X8z5QHhFdmY/Z3CtrulqJE8K8XKWT2zCX0zVTpumHgYUNtQxhefrSSofM nzfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828888; x=1767433688; 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; bh=AKWJeBpGxkmOH5K5Q94L9lMVL3nCFqA7MqpJ6Eqegow=; b=DM/aKUM0W+NmPyUX6kavtcmsqjJf3eMMucdFA7TR3i6ae3JknH3jwTaJ7czI6733Rd HOLC9YN+jL/HGXF89SledDJ7n+0v4E9uz7jvYyDXXYIssTOBR40v+VKrRZk//93Z2jEn kbwqhUFhD6ZpIZHLF0zUFs1kgYRkCvepTvIKKn4Z4+cRMLL01ld2IbVhDiL6a6dJiHX7 KFn18E+eMUcUtf7UKlpJRQRwW9eGZQ0QFrfJZIsZAPHedM1N2QDIUz329hThuVuFQw8C MigsFg55k3WTulZME8v4/QSxPmUdy+1kL6MlOSfbAgVZBBa7hIoslmtpAbdFPsOrA+S2 xu1Q== X-Gm-Message-State: AOJu0YwNCv5ixNTCWQtmsAFQBzWE7sj1n6EYqD1PH0VQe/gRBp9RfDLv VUOSrEIRmuGY+RsGKoYaQuxct1fc7Ck2pTFVkFmXr0qttoiUD5iNDRpoSMfNlMGhG74Ut3PtBlv q+qJ+eoTEVX55ZE+G+HuoRO34D/4nk2Sj17l+RqtUh4RedKCVP9hczTqX9sk10DUWw+76k5mA1z iCVwF99vmdXik9X1c3FEsVDaJfnGxM4roGt4dyCaJ8 X-Gm-Gg: AY/fxX4jE7xUMZVFJX564+kqBOtInmaMIAopaMWlZfOrI+9hVkZTKPR0OAdevuQ4tcG a10hciYstpHY1wpgWNlY0XhWHZ9WKAqA/z+AMfRRsrEpvHXW8ovqfsVPLxV/nGugDs5Bp/hXUdQ QcmNb36avLLazMiqCGq8+oYC/7CIa+tG1X8i2oCoNbHVQkv8axTNEIpklmxfyCZLGidASpj/lVh /2tha/SLAzEl1Pc/bNVogI81vSzh4VZJhPmFG8pMvjkxFGR3i4Y0NUJi/ZnSOKRr2xcY88TaQAE t5rAsjPBL9MD3BmjCs1OI8qeiSEuofINO3EsLcGxFzE4CEIadn3ww/PqJjBVgZ4hpZBpD0asgkG r14qhbpw14/iRHdRk96rDcD35tH2slBbMi3RmkqAc27jvFDt21OPdXLCeDjK/jxkfbO2X/omrSy 5X8LONlUvxBfH4w/Y= X-Received: by 2002:a5d:5f96:0:b0:430:fca5:7353 with SMTP id ffacd0b85a97d-432447a3dc1mr30546237f8f.8.1766828888056; Sat, 27 Dec 2025 01:48:08 -0800 (PST) X-Google-Smtp-Source: AGHT+IH4X3DOQWya6V5ukwmgVWcy8wdu5rM1CFgps9HCyBCJZLYhLqwu719f+SqkZbEGWrtpf9zyBA== X-Received: by 2002:a5d:5f96:0:b0:430:fca5:7353 with SMTP id ffacd0b85a97d-432447a3dc1mr30546216f8f.8.1766828887601; Sat, 27 Dec 2025 01:48:07 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 078/153] i386/cpu: Use x86_ext_save_areas[] for CPUID.0XD subleaves Date: Sat, 27 Dec 2025 10:46:43 +0100 Message-ID: <20251227094759.35658-4-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766828950647158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu The x86_ext_save_areas[] is expected to be well initialized by accelerators and its xstate detail information cannot be changed by user. So use x86_ext_save_areas[] to encode CPUID.0XD subleaves directly without other hardcoding & masking. And for arch LBR, KVM fills its xstate in x86_ext_save_areas[] via host_cpuid(). The info obtained this way matches what would be retrieved from x86_cpu_get_supported_cpuid() (since KVM just fills CPUID with the host xstate info directly anyway). So just use the initialized x86_ext_save_areas[] instead of calling x86_cpu_get_supported_cpuid(). Tested-by: Farrah Chen Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211060801.3600039-7-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- target/i386/cpu.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 812a2151471..f4c0ae533d0 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -8188,20 +8188,17 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index= , uint32_t count, } } else if (count =3D=3D 0xf && cpu->enable_pmu && (env->features[FEAT_7_0_EDX] & CPUID_7_0_EDX_ARCH_LB= R)) { - x86_cpu_get_supported_cpuid(0xD, count, eax, ebx, ecx, edx); + const ExtSaveArea *esa =3D &x86_ext_save_areas[count]; + + *eax =3D esa->size; + *ebx =3D esa->offset; + *ecx =3D esa->ecx; } else if (count < ARRAY_SIZE(x86_ext_save_areas)) { const ExtSaveArea *esa =3D &x86_ext_save_areas[count]; =20 - if (x86_cpu_xsave_xcr0_components(cpu) & (1ULL << count)) { - *eax =3D esa->size; - *ebx =3D esa->offset; - *ecx =3D esa->ecx & - (ESA_FEATURE_ALIGN64_MASK | ESA_FEATURE_XFD_MASK); - } else if (x86_cpu_xsave_xss_components(cpu) & (1ULL << count)= ) { - *eax =3D esa->size; - *ebx =3D 0; - *ecx =3D 1; - } + *eax =3D esa->size; + *ebx =3D esa->offset; + *ecx =3D esa->ecx; } break; } --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766828961; cv=none; d=zohomail.com; s=zohoarc; b=QxjijIAv0TxW99qIX9MveIDk/9VPGoliPefzRdlKR0e2Jqp2O7nOSfEdCJgDGv2q/Bj6yJrlDn8VKDLNwNBynx6EkQg85Wp42OnNRrObxs38zQ7t4qDFe61aHFfZsE4JEADETqxWlDVoiuIcfepEDM9gBCRr1zSPcmvQbL6Y5io= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766828961; 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=PDttGNujX8XIoiK6An9iT+1WmFacRAyCzD2veP1fHPg=; b=A1noK73QMp2MKiTLTgfWuLpJUw7LY0RT77IY3yhmh00Np1o6+HxbDrT0AzLQK+Lzs6IeAnAp3INytw1CQ0W65me7O+A2ShSx4WNMPmRommxsIlKPzzJB4RF3UG0fpIRYC2IYPOhqvsgBhyzrNxPl166PXsOOY6YfhF7q0jY53y8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17668289619511013.9628730910425; Sat, 27 Dec 2025 01:49:21 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQuO-0002C1-Ux; Sat, 27 Dec 2025 04:48:24 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuH-0002Av-9j for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:17 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuE-0006rw-NE for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:16 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-92-Jv1ztmSRO-uUXNaCyjnVoQ-1; Sat, 27 Dec 2025 04:48:12 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-477964c22e0so53325355e9.0 for ; Sat, 27 Dec 2025 01:48:12 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d1936d220sm474344535e9.8.2025.12.27.01.48.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:48:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828894; 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=PDttGNujX8XIoiK6An9iT+1WmFacRAyCzD2veP1fHPg=; b=K/4UPGc+5ztnjocSpQMrpOBbSW8N37HeLjYGNaVTFmP/2CcBU11hHlktUIJOZFvfI1YG67 XP0Eq+v+OlqQobZ01f/VXmJvJ3lub1O6rCnd3doZDKhPq8Kl/tmY7Gbd2XN+90E+TTppJB vOp5GSBQsikUXnBR2r+Ta3sIbxOSYWk= X-MC-Unique: Jv1ztmSRO-uUXNaCyjnVoQ-1 X-Mimecast-MFC-AGG-ID: Jv1ztmSRO-uUXNaCyjnVoQ_1766828891 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828891; x=1767433691; 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; bh=PDttGNujX8XIoiK6An9iT+1WmFacRAyCzD2veP1fHPg=; b=rl06LkTSM03RwwJ2+ju2ggpC2nUWOqXy/3xSmjso6k2S4z3BbcW3k5R586+0AcrmjZ bffiMV7rbsViZuso8KgOVgN97n5sI5pobwOGPCQaYdtJQHHQgmufDIHY3fZpIX03hBgJ 9bZNz+zVFq6yIsufMMzkhowpybPMeZtX3iyJy6gTmH7FpxasfCeOb0YuRFZBUYcVFEYv EWU1ho5bOd9eSmQvGLQbJIMWLNYDCH8wiRGB7I9lpY3PoN6N2Uro9RA6NwuvjkHJIKJH W/Mf5Kgde7aDlHVUNJLJlDVWn/0Y+hqM3VzO+zEyIZ9EOSaBZQv0ShnUEkFacX/YTl2Y iUNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828891; x=1767433691; 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; bh=PDttGNujX8XIoiK6An9iT+1WmFacRAyCzD2veP1fHPg=; b=hjYl8wMvMIAgHtTi22jEFnFPfkegyeL1ZKPu3xSq+LmXjA124170KZpL9UnP4BeJxU h7M64pdAJRAHgO+gfBrpNB+WGvVFGhQn/0v2/8GgvF52m+6mVAA0oNzEnNibxCSl0ziA iTMpily2CX03Smv7Bjg57ql9J5I/gMXrGyH1tkkFkikXjGnUhu/FEVQvSt11EYKt++cQ 0kN+5N2xwBjkGixQjg4BXUJhXujkaV5eynrxRQcPgKgs0o1xhB25GVtq7JXJcwwHghGg /7zL+N042gxb3Nj3r+5Tak2YqH0nO7ZRpytomspaxOAj4hubawa+rXsz97UM7Wpo+x5q QXVA== X-Gm-Message-State: AOJu0YyNf768ZMYINzgS3PCQ5cGg6Sb6ctYcy2Ja/36mMRA+xisWU946 sWZujAKmsMZmSSV3oruM5D+qWIGySr227s0ef6jbCZYEEKMVmoQgiyqVplXTbo0TCLDczi84NSg krUU8d+9yvYMaRD5m4DfhezmbpI74FGFMU2Z/BZooD06dW7h5d91SvvAJvQWTtOI4sVFgqw0/p7 Hje6dF+Qzwmcek1bgJB70BlMdrdyAwoOSlryv4z9PW X-Gm-Gg: AY/fxX5VY/iQxRm2I7BZZyrdDWrVuHwIyXi0Hwg3p6GZQEuAJvlzLjMB3YMSN3FcoZ0 rCh38CcrIN8Cvdo1cAGVQRPRWkpFNMNorVmNxZu5Naw3rQKTApM2hj9i5foNSketperZEoCBRLO Fne9cMAlMqwvI0auBGq42cQzt4vOGVk7SkjRe4ibppa2YeN9NOU6D2fMa6LnzbheUmj/Sv9bNPT Wc4VkEvkc28vvf3Gl4gGaJXyW3W5eaM11CZ/yDE8TVthiJXRyhZB1vO+VE4H0J3MY+WqdA2QQH1 IUe1UUvyrL4pRbeYGWGT5XN2yGRpjuDXHWkDzJ6/bFxPOgJ8m+edPac2WmLj2t95iSI87E+Nwy1 UQRkzWXY/vXltfvCBaLn4pKIu/4A2Px3TtZheDCmrEeZeIQLObS3qUcd1B+YY53XTuchMX6I3AI VMfeUbQMWDHlaG1HI= X-Received: by 2002:a05:600c:6749:b0:471:665:e688 with SMTP id 5b1f17b1804b1-47d18be89d5mr355272485e9.17.1766828890704; Sat, 27 Dec 2025 01:48:10 -0800 (PST) X-Google-Smtp-Source: AGHT+IEy+YraYlQ4MrXFWSbixYhgiAVFEO+SZKARZzE6WmBX0m8dkllavEt62zDHysJK0IjL4fFHuw== X-Received: by 2002:a05:600c:6749:b0:471:665:e688 with SMTP id 5b1f17b1804b1-47d18be89d5mr355272145e9.17.1766828890078; Sat, 27 Dec 2025 01:48:10 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 079/153] i386/cpu: Reorganize dependency check for arch lbr state Date: Sat, 27 Dec 2025 10:46:44 +0100 Message-ID: <20251227094759.35658-5-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766828964713158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu The arch lbr state has 2 dependencies: * Arch lbr feature bit (CPUID 0x7.0x0:EDX[bit 19]): This bit also depends on pmu property. Mask it off if pmu is disabled in x86_cpu_expand_features(), so that it is not needed to repeatedly check whether this bit is set as well as pmu is enabled. Note this doesn't need compat option, since even KVM hasn't support arch lbr yet. The supported xstate is constructed based such dependency in cpuid_has_xsave_feature(), so if pmu is disabled and arch lbr bit is masked off, then arch lbr state won't be included in supported xstates. Thus it's safe to drop the check on arch lbr bit in CPUID 0xD encoding. * XSAVES feature bit (CPUID 0xD.0x1.EAX[bit 3]): Arch lbr state is a supervisor state, which requires the XSAVES feature support. Enumerate supported supervisor state based on XSAVES feature bit in x86_cpu_enable_xsave_components(). Then it's safe to drop the check on XSAVES feature support during CPUID 0XD encoding. Suggested-by: Zide Chen Tested-by: Farrah Chen Reviewed-by: Zide Chen Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211060801.3600039-8-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- target/i386/cpu.c | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index f4c0ae533d0..b53467eb997 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -8179,20 +8179,6 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index,= uint32_t count, *ebx =3D xsave_area_size(xstate, true); *ecx =3D env->features[FEAT_XSAVE_XSS_LO]; *edx =3D env->features[FEAT_XSAVE_XSS_HI]; - if (kvm_enabled() && cpu->enable_pmu && - (env->features[FEAT_7_0_EDX] & CPUID_7_0_EDX_ARCH_LBR) && - (*eax & CPUID_XSAVE_XSAVES)) { - *ecx |=3D XSTATE_ARCH_LBR_MASK; - } else { - *ecx &=3D ~XSTATE_ARCH_LBR_MASK; - } - } else if (count =3D=3D 0xf && cpu->enable_pmu - && (env->features[FEAT_7_0_EDX] & CPUID_7_0_EDX_ARCH_LB= R)) { - const ExtSaveArea *esa =3D &x86_ext_save_areas[count]; - - *eax =3D esa->size; - *ebx =3D esa->offset; - *ecx =3D esa->ecx; } else if (count < ARRAY_SIZE(x86_ext_save_areas)) { const ExtSaveArea *esa =3D &x86_ext_save_areas[count]; =20 @@ -8910,6 +8896,12 @@ static void x86_cpu_enable_xsave_components(X86CPU *= cpu) =20 mask =3D 0; for (i =3D 0; i < ARRAY_SIZE(x86_ext_save_areas); i++) { + /* Skip supervisor states if XSAVES is not supported. */ + if (CPUID_XSTATE_XSS_MASK & (1 << i) && + !(env->features[FEAT_XSAVE] & CPUID_XSAVE_XSAVES)) { + continue; + } + const ExtSaveArea *esa =3D &x86_ext_save_areas[i]; if (cpuid_has_xsave_feature(env, esa)) { mask |=3D (1ULL << i); @@ -9027,11 +9019,13 @@ void x86_cpu_expand_features(X86CPU *cpu, Error **e= rrp) } } =20 - if (!cpu->pdcm_on_even_without_pmu) { + if (!cpu->enable_pmu) { /* PDCM is fixed1 bit for TDX */ - if (!cpu->enable_pmu && !is_tdx_vm()) { + if (!cpu->pdcm_on_even_without_pmu && !is_tdx_vm()) { env->features[FEAT_1_ECX] &=3D ~CPUID_EXT_PDCM; } + + env->features[FEAT_7_0_EDX] &=3D ~CPUID_7_0_EDX_ARCH_LBR; } =20 for (i =3D 0; i < ARRAY_SIZE(feature_dependencies); i++) { --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766828937; cv=none; d=zohomail.com; s=zohoarc; b=cVmx8jhaT775VkhKWeAMJ65R1vVXhl5UxlWYffsz/WiN9ZLLr1v0wOGeInXdzj6gsBPTa9WeuOX/BsdK8PwaZaYZxxjLECy+5BkTyYsz6cSOksw/gMJ17dkjUTQOzRy09Pjn3VLqx29g8jJx8pHMS5BQSnidV6xtVh/B9ymi3SQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766828937; 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=hG1FuwTjSde0jNlaSR5VRL/KDZZc2NyTCbowH+IvjH0=; b=cyzmRwC5mekBuNZRDGZ9COXOdy88kZNrezG5NTVbyUraElLerqLMB04aFYbYeJDP4V+CQNmsX9YWboiozD2DlJRAmbZUUVS5Ebk+Lx2H8TIGW4ll14zjDVyEhzxAMV3Vnksw5PbZYUPeYbwuYMRF1SLAmZumHX4EtJh69n7kQa8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766828937886368.49520584183927; Sat, 27 Dec 2025 01:48:57 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQuh-0002G8-47; Sat, 27 Dec 2025 04:48:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuK-0002BV-LG for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:20 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuH-0006s8-EH for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:20 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-453-SBhK835_Poyy_v2xxosg1g-1; Sat, 27 Dec 2025 04:48:14 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-47788165c97so45472615e9.0 for ; Sat, 27 Dec 2025 01:48:14 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be272e46fsm476080215e9.4.2025.12.27.01.48.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:48:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828896; 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=hG1FuwTjSde0jNlaSR5VRL/KDZZc2NyTCbowH+IvjH0=; b=bFgt83sfLGWH6KgEGepXZnNRczYre5piDk6HAnGIhI8z8LVEzjDIJt0d4R1pSKOV+GLPT6 CGC77t3uaEBhYZhghB6W8WoJ3eawNbWz+Q5ngk3J+scaqlPo1W+wM9H6JK3OgmEGkwx0Ef 9sKPJ/zkEjDIi32GuqKoHPAwKxeI7VA= X-MC-Unique: SBhK835_Poyy_v2xxosg1g-1 X-Mimecast-MFC-AGG-ID: SBhK835_Poyy_v2xxosg1g_1766828893 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828892; x=1767433692; 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; bh=hG1FuwTjSde0jNlaSR5VRL/KDZZc2NyTCbowH+IvjH0=; b=iBpZjayI6fszSFiGX3BTvCLfcbD/YkQI7XmDg8sJwNGYhU/O3RHugm/KJzQ7m6Yayj m3CZP/BTY7mOHYacaYinKtrHDa+Ql7CYUwjwJv1csYEvvZHRYPre5Ho7irHqQTKhH+G9 c2efBFr9QBbwK+N8236pep2fqNe3U6yf/TXDHzepjMH1wpxVHvQc4iEEd3aP2CbPJVFI E2NCdc3k8cJSRlMJd6ijqm7kJF9jhjrCdilRdOlC51XZI0TrPErO7l+gqVLr6zJkqWde WDvIzfs/qhJZMdBQKibu9iObq5ybBV1xYC0Q8jSubFzd/EOp6vXZoO9gVRleksvlt9pj vY7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828892; x=1767433692; 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; bh=hG1FuwTjSde0jNlaSR5VRL/KDZZc2NyTCbowH+IvjH0=; b=QJr0BcHRYkTSeuzDZTbiW17vGhDRA4zpXod9ysPVN7DPYNvjEix9ZXKXVJa+D9V5Dd iUwdwS6Xkku1bZcO+COFeqqp+sF1VBXCWdkZ1g3Wojuet/HCtEJjw1y9XD5EeoOcwr4z 0Z0qZURpfzZEg3a/4pYHlGmpIK/00cddssGWh5+fmzLwsAx4YsnMUoL18vwWai3dJr2e DpultvyKPeVXnx2wjTxFzQ2WDZAYySn0MKhslUvSnr0H2n20dTNEzkNbZw6cZ03xJ2t6 9a38A0rXZh3zV3uDTgC9yHqIq91P+/SjqqfPV9Wu42ZiKV/NPlqgyfOabC9r4W7Vxk/h i3Xg== X-Gm-Message-State: AOJu0Yyh5B4DrX5ZZZb5JJnhZue1CBPgaTTZENT/2o+/+9HQX/Ka8Wbj r886XrN2efMrIvSH2SWHjJmDmwipW2udjr1WErucjVQR8Fssjr6DkHg3E5Eb3/vGnV4QCVigCgs oznXxXgbydtpXHFzI4Og+boYRCfz/0RhCAx6xY5WNQKDsPzo8XZF4q9X7deczYXMfjWP6jMiKCv wFLdpHo20lEq1Gs+TLiPJsTmLx1Cvg7SEFDWq/U1ol X-Gm-Gg: AY/fxX6d4Ixhu94gXnCij5pkFOf/cN+fiYJvNT1XuZJ825oo/oRSVXem3NetKg23c0B P9tgSNlUDxM6MmRPQ+IMAE3jZ0pqXy/+XIBvHFYrukunEuL82ySb3Bqf82XI10jxyljnoGFkjm0 XhcGf+KxOvbjj71ZB0c859HlU6t/FQCcv6nDhq6OlqjhYDByXdvKKjGpV7CbyxNd6OxOE7tN5la meecga//Jyk5Wxyzx+cRfSlOK5btBlGTHE9GvOtbT95gZo/R9qxP5A0kW1q34EiExLCVfdqSEFv fZT9FU2YEMkYLSzZt/NBtKWnXTBgVAlKf66Fi/6H4W2wmPM6y0FkXW0GrPKu40k3EpaYkTW9ux5 4okY4SVwYsNY40lqUWbRBInQrD2b4lkkq9nWih26qlBTQPPTlEMdlm1vsLltEyNPMg2KCfOQ7YA +fHWumMtopdl4GCwk= X-Received: by 2002:a05:600c:c105:b0:47d:3ffb:16c9 with SMTP id 5b1f17b1804b1-47d3ffb184amr98888595e9.23.1766828892547; Sat, 27 Dec 2025 01:48:12 -0800 (PST) X-Google-Smtp-Source: AGHT+IHJPO5YIbLs/L/0BrEPGLittszu20oJnPceZMetavKkmAiRo7g/Q8ptMSdU3c7oqyd+hQBZAQ== X-Received: by 2002:a05:600c:c105:b0:47d:3ffb:16c9 with SMTP id 5b1f17b1804b1-47d3ffb184amr98888375e9.23.1766828892074; Sat, 27 Dec 2025 01:48:12 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 080/153] i386/cpu: Drop pmu check in CPUID 0x1C encoding Date: Sat, 27 Dec 2025 10:46:45 +0100 Message-ID: <20251227094759.35658-6-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766828938763158501 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Since CPUID_7_0_EDX_ARCH_LBR will be masked off if pmu is disabled, there's no need to check CPUID_7_0_EDX_ARCH_LBR feature with pmu. Tested-by: Farrah Chen Reviewed-by: Zide Chen Reviewed-by: Xiaoyao Li Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211060801.3600039-9-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- target/i386/cpu.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index b53467eb997..5ba4d49dc35 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -8273,11 +8273,16 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index= , uint32_t count, } break; } - case 0x1C: - if (cpu->enable_pmu && (env->features[FEAT_7_0_EDX] & CPUID_7_0_ED= X_ARCH_LBR)) { - x86_cpu_get_supported_cpuid(0x1C, 0, eax, ebx, ecx, edx); - *edx =3D 0; + case 0x1C: /* Last Branch Records Information Leaf */ + *eax =3D 0; + *ebx =3D 0; + *ecx =3D 0; + *edx =3D 0; + if (!(env->features[FEAT_7_0_EDX] & CPUID_7_0_EDX_ARCH_LBR)) { + break; } + x86_cpu_get_supported_cpuid(0x1C, 0, eax, ebx, ecx, edx); + *edx =3D 0; /* EDX is reserved. */ break; case 0x1D: { /* AMX TILE, for now hardcoded for Sapphire Rapids*/ --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829206; cv=none; d=zohomail.com; s=zohoarc; b=kb19ewoz9FZ95Q3+pRkWXNvZszdAEDOB2stwR2BaN3A1KcvfgRFBCRTQSR3gQN50WaQAyu7WUDp7AV5NCnDEmSffERGUBmW92WJCh7/4CbVPruNWZsH93LVSvEWeB27zq0vrKbQKayAnW+rwCXuStNRPAOSr1u2NItEAfQ0hm7Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829206; 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=NUmdt3r8IHKmZ332Dkfg2R3Sl1VyHZuITLUsOhOwT44=; b=iBMqkwKxL8088Q1IzmgGughx6wS+EXPyh+H01zU37Vc+a4BZ6l2ggwY4nw9V9jVjqb2Z+lCiYsr9X+pwkLPJ2CG3iRnRKHubucoRKR8dDABMDYP8Clp/T+acVMLh2MFTuttYwE8Ga4zFsfSWElgGi7KH3Tv3ZNtKFay8Tt5aYN8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829206012289.1935875697179; Sat, 27 Dec 2025 01:53:26 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQuo-0002Wx-3H; Sat, 27 Dec 2025 04:48:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuK-0002Ba-RK for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:20 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuJ-0006sU-9m for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:20 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-190-SiMoCMTUNiqKZYf0QPZVKw-1; Sat, 27 Dec 2025 04:48:16 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-47918084ac1so65312025e9.2 for ; Sat, 27 Dec 2025 01:48:16 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea830f3sm48754467f8f.22.2025.12.27.01.48.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:48:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828898; 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=NUmdt3r8IHKmZ332Dkfg2R3Sl1VyHZuITLUsOhOwT44=; b=FOgUj9vbnr0HJdZ1w3QZq/K9bnKgMmFx5cgurA1MMqe5V6uvC5RQlHhrbEecKyoxuNnEUG 5afItm1MSSL9tPrU9K9fKCZQB4fGKwNyiSQUQqWmJLADHQj0+I7T/mvujqMLIm56KJVC+M DB9SOOIsArC5wE13oN/9xIjTcp04c60= X-MC-Unique: SiMoCMTUNiqKZYf0QPZVKw-1 X-Mimecast-MFC-AGG-ID: SiMoCMTUNiqKZYf0QPZVKw_1766828896 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828895; x=1767433695; 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; bh=NUmdt3r8IHKmZ332Dkfg2R3Sl1VyHZuITLUsOhOwT44=; b=D0n7mRwATbSrsH+ZsmFNm/S4K2Z6uTgY3rvx9Jp5gXtqNHcnsDoirBff04JkitDM2j XO19SLjNARFJzBN3G3LTWAIS4Fdp1P+i9FlTpb/l7TlFNTNUXHF13DXaGeUYQkMn94cK 1J9dnSP+GjivCv4fMYZaCensDZSTw9GZty0h1KDkOE7PxN8rwN5PvqcsHOsIaUFaWxJm ryH1bZSPZUEkVVk95DJ5ZV2t+A/CEM3VULCFxKe5vArkEVRnIjZR5o5prz7R+zdpd5l6 eskTkfuwqsvOys6ndg7cHa0Ff3kx0IbhX1AK65W8foX5FwR/T7IqR3FLF42OEdvywVcc Wa0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828895; x=1767433695; 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; bh=NUmdt3r8IHKmZ332Dkfg2R3Sl1VyHZuITLUsOhOwT44=; b=kyRHY9ae0UDqrNiS5jTOsIkSF3ciLg+jp6jT79J5lrHgnUBQuZyQ0dXjKvBChaF9lZ PcUPO+G0hIQ91FPzQ6OlFtqgBH8Knta+dZQgHrns175YtePrpVqs2qfGd2BJwzwRN9Co j2i1n4JWyOuVy0TbEZNdgNnrB2Io3UOlSyDx/Haj71CQfi2tF2PtaWV7dFne8/dwy7+s TybW+D1SqvVOPPkT+Lw/yLUENqOrpQMCFjG8LhtOL5f3Wj7rDMUG9OMb1LffRhyGctva /ULmzjD7FUssPy0rA289FaVMB9p4wjElh8Lgk9yY6YPP4tAR3j1nVgId+3BcK4Jdtlb8 Dopg== X-Gm-Message-State: AOJu0YzZ5nkXowdX2BqbT++vgWwsOReG2f91Qfr1N9y+ZpGBZDW+Xlr2 ybcI+jsXbG5ZTqelpXzweM6x3xva3fHhkYQfOkDGi/JDOHk3fpvvOAnjEiE8nif1NNmrfYcbkCS +UV/y93FZiCUK+72ubtOEvXfLNR1uDMKmv4JAk4gcaxxhafV8BwSAF6SOiX/5A8yDyXoN6/Cdu8 ocgIF6hit3047eC55S7wssqauaUj6gXtd9j600edAM X-Gm-Gg: AY/fxX7UaPCHjIEm1MUY0TG3fE9D4VZt8C+r9VMLjhCGEWjsHQbQGtrtJJkp0IGuL+p 3rDfyICnp84DT+oXEE73nInwrnHTMvHKWsvJyBAwwDIDrHlO2HwWh/4dwoBGF4L+su1xgQOBfnu UZ06Zpuh8MsH4EWwUL+5ibgEjqc69vs7pgOapkudRpRqlS89royqvgrO0dGhg6mPBL6ucy0AdnN ABkLBSvUDm83m38AQ5A5q3aPOOyI140wThojH5GtHnV0hrttY5hyVkaJ5OwWH7+om58EaichmUH slq+mW80xCtGaGpopZLdzEuJFW+Ms1+bUlILCvGgwbk8SAr9FZiyGd0PXxDTi1PnvoRB4+y+P9A HJTPGMKYfv7coFk7s/8J06/1L2iLcTZqZU3uz379dEx6h1+49VLVs+4HokzP78izM3aZRAgdyIi zEMqDpRLxDiq1I63Y= X-Received: by 2002:a05:600c:8b6d:b0:475:dd8d:2f52 with SMTP id 5b1f17b1804b1-47d1959d1d8mr293600565e9.32.1766828894858; Sat, 27 Dec 2025 01:48:14 -0800 (PST) X-Google-Smtp-Source: AGHT+IG75u6NtmaI8Pu/ALi0DJ4JOaqu9ta7+mqjIETgaCOBkUlXHY/BIPN6V7gAa7dPx2w7IjGxgw== X-Received: by 2002:a05:600c:8b6d:b0:475:dd8d:2f52 with SMTP id 5b1f17b1804b1-47d1959d1d8mr293600285e9.32.1766828894449; Sat, 27 Dec 2025 01:48:14 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Chao Gao Subject: [PULL 081/153] i386/cpu: Fix supervisor xstate initialization Date: Sat, 27 Dec 2025 10:46:46 +0100 Message-ID: <20251227094759.35658-7-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829207441158500 Content-Type: text/plain; charset="utf-8" From: Chao Gao Arch lbr is a supervisor xstate, but its area is not covered in x86_cpu_init_xsave(). Fix it by checking supported xss bitmap. In addition, drop the (uint64_t) type casts for supported_xcr0 since x86_cpu_get_supported_feature_word() returns uint64_t so that the cast is not needed. Then ensure line length is within 90 characters. Tested-by: Farrah Chen Reviewed-by: Xiaoyao Li Signed-off-by: Chao Gao Co-developed-by: Zhao Liu Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211060801.3600039-10-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- target/i386/cpu.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 5ba4d49dc35..e9ef8b992fd 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -9711,20 +9711,23 @@ static void x86_cpu_post_initfn(Object *obj) static void x86_cpu_init_xsave(void) { static bool first =3D true; - uint64_t supported_xcr0; + uint64_t supported_xcr0, supported_xss; int i; =20 if (first) { first =3D false; =20 supported_xcr0 =3D - ((uint64_t) x86_cpu_get_supported_feature_word(NULL, FEAT_XSAV= E_XCR0_HI) << 32) | + x86_cpu_get_supported_feature_word(NULL, FEAT_XSAVE_XCR0_HI) <= < 32 | x86_cpu_get_supported_feature_word(NULL, FEAT_XSAVE_XCR0_LO); + supported_xss =3D + x86_cpu_get_supported_feature_word(NULL, FEAT_XSAVE_XSS_HI) <<= 32 | + x86_cpu_get_supported_feature_word(NULL, FEAT_XSAVE_XSS_LO); =20 for (i =3D XSTATE_SSE_BIT + 1; i < XSAVE_STATE_AREA_COUNT; i++) { ExtSaveArea *esa =3D &x86_ext_save_areas[i]; =20 - if (!(supported_xcr0 & (1 << i))) { + if (!((supported_xcr0 | supported_xss) & (1 << i))) { esa->size =3D 0; } } --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766828971; cv=none; d=zohomail.com; s=zohoarc; b=AmYwwIPe4FmkFTH0dMivGGMkompkSKwbiYlIP+jgRsMdBoYa5z5zXJuHqGEP9kYDD/wEe0flFYa8GTc1TgW1vPyzTEwmTzw+YbVGFWxEtRBGgas+kxq+fccS1GqycNxUKt708m5LNFTo8IFheKb/uXhxMQJ2EGjd616CWg0zJk4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766828971; 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=xT9y9UR3+zCEYdJU7EuhVDLHUDh0P/v0kAFoxiE1HTQ=; b=nKgU2tNA5VUsmGm5Uv45nicKa0YNL6OCP4EPu/GsaVGJmRsZybDsIG5kuZ3YAzQVkfvI6z0Vg5umOGrJN2nGQBw0p0bK1z2ZQ+RVWrQU9sAqMmqjpR4+o8v0Ti9FYB5VXlRfixNt74kzSMcxO7U5njFGAa+NczqZZ3E9OO6psf8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176682897178850.52699918173266; Sat, 27 Dec 2025 01:49:31 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQun-0002Ug-Ns; Sat, 27 Dec 2025 04:48:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuP-0002Dy-2P for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:25 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuK-0006sh-Vt for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:23 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-595-6bAuzXDqO9KDnbBJhHBczQ-1; Sat, 27 Dec 2025 04:48:18 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-430f8866932so6174272f8f.1 for ; Sat, 27 Dec 2025 01:48:18 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea1aee5sm51007182f8f.4.2025.12.27.01.48.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:48:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828900; 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=xT9y9UR3+zCEYdJU7EuhVDLHUDh0P/v0kAFoxiE1HTQ=; b=a2HZiEW4RpoVsyPmeWgJkdY9XnqCAExMpTRzaKKrkOLlalOAIslPj69c2/50lPu/q7EELL Q8j54O0s1CM2Mc1Hee0kzNwVrT0kdoEUasUnm4RGemalRrxTP6uwGK5HtiFlyH0YNJhkK2 kzbQLFEElmsBLRmjdkYkUE1D8j7VIHw= X-MC-Unique: 6bAuzXDqO9KDnbBJhHBczQ-1 X-Mimecast-MFC-AGG-ID: 6bAuzXDqO9KDnbBJhHBczQ_1766828898 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828897; x=1767433697; 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; bh=xT9y9UR3+zCEYdJU7EuhVDLHUDh0P/v0kAFoxiE1HTQ=; b=rRwTRU9ebxMLclD7o0Em01IziPcOEbEb7A9QER0lC4rSDd+Mg5EkyoPhyP9PwnOSxR AJQnE/ssSVklmLierGqqUBzx+nXuJigplbYxxrVCdQeB9cL/fTydEurlTtkYNToemPqr tUWoaVdFfl12Z+GCbxp4LOWM72pnGQQ6eu7FtZwgNhdFpSMnLs60zsEWpkqbGWovz9u0 q4+7uTI31xbv9wmJtm7+iNusH6W6pTPs4MYPyPCU97kxXNyER77krw/9+1o6k530uigf NyDHi4R0erZciNQhzSDaS0Q4l9d2ccPmBklrTXSbtrhIAOzPDhvg+xoMYjx3W8bNo+UK 2Yhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828897; x=1767433697; 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; bh=xT9y9UR3+zCEYdJU7EuhVDLHUDh0P/v0kAFoxiE1HTQ=; b=ZGAmLtUCrXVvcG4AksDIBd19MWKT7Y3Z4z4/CD2dCYvqa4rFR7glmm/qaFuKoGOD5b S2lxZlAyxKkHJE7la2G6OubUqdLKgyY+vwrFsyZS4eVrILlPj9yvYiedwlvGLxWz1eYy Vr250OXy0Nzyi5pIlp4X4BQY50Wkmd+y1za0BvWNl2JOpfFa1vCHYjZ6wv2yiyo+8qnR JV+InRWuvjCLLMQTfj1965X3LnMzZDgUeIgTNazyskU3FVCXzSTd61oz0+O0WvygAWGt nt3lZZdMqkOJZdToKdDL8lE2YFTYLiHXVp0qcnY3PYyOe6KpsRG8nl7lZ1HDqP6Pj5kK xBsQ== X-Gm-Message-State: AOJu0YzBrbieOAikJUSZPahmwp6cdh/ANe6hcW/pFK5K4a8g/wDEPRER J5YHgmMthEZ+YPBU2EqPFLoZ3k5R0fBK/osj3+YI/IqxqgL4mFfdXOzaa5dFgXsn/oDwH5hnOoD TI+57tSOuxnQA44M1jqEjFpNS6NN2uV8ZjYEwgHkf+zHr8Rccm5LnfQA4EK43kVdCm/q6cI9vmA Meq1dxvZ7Ygt2VYc0EskXkcs9R1+NTaSAxERuV/1lS X-Gm-Gg: AY/fxX4zTA0aZS1sDddVipdIPhHN/9DkMMVBCbmspYKa55YufT/41eGU3UlzIeteOE1 aPSF88jFb4iM8fnIK41cciBRnb6ApvXHsMnW08ByDEfC96WIJrYY045hJHYHo/IQ6XBBiztgSz8 5giu5H0o63Ehmo7XPA8s2SFU2aZxwYg7rgq4OqQB5sILpKENIBxdxwmbMB9k5NbxJU2lZQBee41 7LDHbTGMwAWtoOT2WfR5JFL6Znr/qVrbvBR+mLRyKF+IWo0Z0Ix39WGFXmswdE+r2Vha5SLaPMX TaWLluTUEqWm0J2++uV+XfImOhgnW1RC+YRVz/IS/PAFwLRGtw1qt7xPxkD1m3j++rQwUCSO5yw DxQs4l40N6OAza8ZNrpIkKzwxIS2WROgpnojyWDNSTtzu8myVobfHM5vrp3/4ZmTif6q1LuOn+L CNhTRPd8f1/yw3oXA= X-Received: by 2002:a05:6000:2302:b0:42f:bbc6:eda2 with SMTP id ffacd0b85a97d-4324e5060b7mr27006219f8f.40.1766828896913; Sat, 27 Dec 2025 01:48:16 -0800 (PST) X-Google-Smtp-Source: AGHT+IG9NUnbVcMUSLBX1mQH9WXT0HeTT5BXcWe7AezcVJchpiqRlEGL/68ao44twU2Q55ssQDtFzw== X-Received: by 2002:a05:6000:2302:b0:42f:bbc6:eda2 with SMTP id ffacd0b85a97d-4324e5060b7mr27006202f8f.40.1766828896471; Sat, 27 Dec 2025 01:48:16 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 082/153] i386/cpu: Add missing migratable xsave features Date: Sat, 27 Dec 2025 10:46:47 +0100 Message-ID: <20251227094759.35658-8-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766828972716158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Xtile-cfg & xtile-data are both user xstates. Their xstates are cached in X86CPUState, and there's a related vmsd "vmstate_amx_xtile", so that it's safe to mark them as migratable. Arch lbr xstate is a supervisor xstate, and it is save & load by saving & loading related arch lbr MSRs, which are cached in X86CPUState, and there's a related vmsd "vmstate_arch_lbr". So it should be migratable. PT is still unmigratable since KVM disabled it and there's no vmsd and no other emulation/simulation support. Note, though the migratable_flags get fixed, x86_cpu_enable_xsave_components() still overrides supported xstates bitmaps regardless the masking of migratable_flags. This is another issue, and would be fixed in follow-up refactoring. Tested-by: Farrah Chen Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211060801.3600039-11-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- target/i386/cpu.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index e9ef8b992fd..8c00a3ad4df 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -1484,6 +1484,7 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] =3D { .ecx =3D 1, .reg =3D R_ECX, }, + .migratable_flags =3D XSTATE_ARCH_LBR_MASK, }, [FEAT_XSAVE_XSS_HI] =3D { .type =3D CPUID_FEATURE_WORD, @@ -1522,7 +1523,7 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] =3D { .migratable_flags =3D XSTATE_FP_MASK | XSTATE_SSE_MASK | XSTATE_YMM_MASK | XSTATE_BNDREGS_MASK | XSTATE_BNDCSR_MASK | XSTATE_OPMASK_MASK | XSTATE_ZMM_Hi256_MASK | XSTATE_Hi16_ZMM_M= ASK | - XSTATE_PKRU_MASK, + XSTATE_PKRU_MASK | XSTATE_XTILE_CFG_MASK | XSTATE_XTILE_DATA_M= ASK, }, [FEAT_XSAVE_XCR0_HI] =3D { .type =3D CPUID_FEATURE_WORD, @@ -2154,8 +2155,13 @@ static uint64_t x86_cpu_get_migratable_flags(X86CPU = *cpu, FeatureWord w) for (i =3D 0; i < 64; i++) { uint64_t f =3D 1ULL << i; =20 - /* If the feature name is known, it is implicitly considered migra= table, - * unless it is explicitly set in unmigratable_flags */ + /* + * If the feature name is known, it is implicitly considered migra= table, + * unless it is explicitly set in unmigratable_flags. + * + * TODO: Make the behavior of x86_cpu_enable_xsave_components() al= ign + * with migratable_flags masking. + */ if ((wi->migratable_flags & f) || (wi->feat_names[i] && !(wi->unmigratable_flags & f))) { r |=3D f; --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766828952; cv=none; d=zohomail.com; s=zohoarc; b=nhhYGKkiFhZYbKsvgvHlJyDvpteCuCBNcOlJp5DPncfuBMplcG9lFQeEr0LXW1iokkMF+LOTzq7+yWKnypK0TrpPDQ9vh7SWXK+2d7QrcVeWPGnqdN4iHP6evr7MuYICR+WM7p7pPtfK5ZQNtmH9ghknrd6Pb7GIQES0bht67wM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766828952; 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=Ab87kf8/soKr7IkvZR1XjGAb5AA1aka9diU3WgRo9Vo=; b=aW0siAfYrzInJB1GbcNBJshA5dMPh2jngSJx8gw7KEzrOSGGque/bIrtOuX4eEFHlYzOjNjX6Zu08ZPK6FscSD28YIcy11UrB8cZ82gaQcn7k1UXdT1RQcu0l3xMKUxXm/aYq49XNy9DTv602KQQshqRZnzx8DH0977iBK41OZc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766828952116818.1350103417348; Sat, 27 Dec 2025 01:49:12 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQum-0002Tw-J6; Sat, 27 Dec 2025 04:48:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuQ-0002FH-KS for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:28 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuO-0006sv-S8 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:26 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-463-fNG-059fN5aIFnK1z3WktQ-1; Sat, 27 Dec 2025 04:48:21 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4779d8fd4ecso39606115e9.1 for ; Sat, 27 Dec 2025 01:48:21 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be3964226sm209695655e9.0.2025.12.27.01.48.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:48:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828903; 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=Ab87kf8/soKr7IkvZR1XjGAb5AA1aka9diU3WgRo9Vo=; b=QYX3NFm+XGxiTp0rK7NsOXXI4RtYKKViJKIDDLpqHITGTUJlAlGytjANEyiRWnU9bJVEaI It5qtuBZgAYl2rlAZF7pWYyepmutnBOdBmrN07G9K6QLnPdsKl+pMxNi0coKBxREiRUiRf hWONWMGs/hVSt/Qrf0hWq/br0qfdUlA= X-MC-Unique: fNG-059fN5aIFnK1z3WktQ-1 X-Mimecast-MFC-AGG-ID: fNG-059fN5aIFnK1z3WktQ_1766828900 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828899; x=1767433699; 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; bh=Ab87kf8/soKr7IkvZR1XjGAb5AA1aka9diU3WgRo9Vo=; b=KXymk2UR/Cdd2M2BV9vWJJZh64tSxs4QpdgbiuelueP5TwLQOSDhBdI3A4ESK6ub0m nxzdNfMVlmGyZyMG0TqvKd6I7tYZHtPAVHR+7NIMDJHx0HvRBGriDFxeUeUZlkRhYNsh JW+JXlYWkkLV9IKY063rooSIqELpSbALH44TBGlJoeATR0/AauVE/9OMKB/yxKlCjGOs Ebywx+vOxWUz35sNF9dAIaJVbvJw48fCSIeo6cKuramH1fJ/tG1pQiewJsuveRpGHRzv yfisi1yPfD9E5eBMG6XO1TXoS5W21zqzR7Zs0+kzs9p4gYuURh/bfWjz4TVH7lflc2bi MJAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828899; x=1767433699; 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; bh=Ab87kf8/soKr7IkvZR1XjGAb5AA1aka9diU3WgRo9Vo=; b=CxZxJ5oiMPMe2UMdsCy0LWPS8QCuh2jLqf9djiSjvLmyx5ifICThTe89ofX48WvyF7 GLaN6muaBJghq5Y3PD7FFgplJ/Ti8buDsCO/c36i1RiePE3sB6ft04JWqyJ3kp1OPuAj hukUXrsk20iocslgAGnJvJpe584G6WlklOAR8XcvtkTQNIcndfPp56jEbHaeQK//0JZo SCMHDbLYptArOWcKOyHS9FyG0477jLNfNZWF/FUkd8KLBxlKGPY9XgNmyKwPye/8OYI/ b9Ct59pOX2r4cWm0fCMk85kfd8Q8S9wv0CwQYYwgSwB+g4rAYuc5xg2xtH342lpqAMPc RJTQ== X-Gm-Message-State: AOJu0YwknSCz6JNnIb453kYOeGsbsdJzvtvKVNzBdxhaJxX48RRbvHu4 Zsj4m5vG+Q8blPJ+FSidPinNp4tf6DEigBKDIbhrSJwN0f/QYnhlrOYL57v7tdGN4lGx+SBLciz vErX5sgomvuT9329wQ4BcjAcO+fmfKrPkbPn5hFo5Z9Mpm0laHGWAZDChJe8bfDMOqzkPLGiPnt b8QDAXn4FraaAu5pri+GcPAqBoBtpe7NS1M1V1n3WJ X-Gm-Gg: AY/fxX5+3K1RymHlp61ihLUxm1OfkVhGPZGxLNoBxKZc7Z3k9ty8dT1N/FNrsdELGUV 3B04MrmbjcYwcQ/fkDvxNtjyCA5aDBktHLv6PLs7iamjFb8NVEqq91KXNJDqjNEedZ5DnoOaX1W yyaBerzrOVplz1m9Zn0PI/mZ2lsGKnuVCg3DfvLqFEM6B9dZmMSoh1nhQHNWUd3Fp+Py6UzlbQf 1MyH+fQv/p596MyH69V0tm2nrtC47rxlsi7SjZngDpSe//qzprFFmfcaBGsgJS4nvmqM6L7/VeU GW12MYG8ZJd4iIFe7GFZnrawGpNeAAvLPqv4Z58i40syZJqdHHeeAf0ErhAugoE8x5UX08nPf3t TLUNcfaXtufIfmQjFkYm4mPLRbXkDbUAjnUpDqP/GQM/K81e6lGYrUcbQ2VfIcracNo0XQsukEO ujL2+0xY24m4G1Paw= X-Received: by 2002:a05:600c:46cf:b0:477:9e0c:f59 with SMTP id 5b1f17b1804b1-47d18b833a6mr286743605e9.2.1766828899397; Sat, 27 Dec 2025 01:48:19 -0800 (PST) X-Google-Smtp-Source: AGHT+IFui7U4OYk3thzB7qMF8H2eP0ks29W88lkkI1XYJXUowekmkwWFX2Dnpt3vuvg/El7iOl0TUQ== X-Received: by 2002:a05:600c:46cf:b0:477:9e0c:f59 with SMTP id 5b1f17b1804b1-47d18b833a6mr286743335e9.2.1766828898928; Sat, 27 Dec 2025 01:48:18 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Yang Weijiang , Chao Gao Subject: [PULL 083/153] i386/cpu: Enable xsave support for CET states Date: Sat, 27 Dec 2025 10:46:48 +0100 Message-ID: <20251227094759.35658-9-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766828954679158500 Content-Type: text/plain; charset="utf-8" From: Yang Weijiang Add CET_U/S bits in xstate area and report support in xstate feature mask. MSR_XSS[bit 11] corresponds to CET user mode states. MSR_XSS[bit 12] corresponds to CET supervisor mode states. CET Shadow Stack(SHSTK) and Indirect Branch Tracking(IBT) features are enumerated via CPUID.(EAX=3D07H,ECX=3D0H):ECX[7] and EDX[20] respectively, two features share the same state bits in XSS, so if either of the features is enabled, set CET_U and CET_S bits together. Tested-by: Farrah Chen Reviewed-by: Xiaoyao Li Signed-off-by: Yang Weijiang Co-developed-by: Chao Gao Signed-off-by: Chao Gao Co-developed-by: Zhao Liu Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211060801.3600039-12-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- target/i386/cpu.h | 26 +++++++++++++++++++++++++- target/i386/cpu.c | 14 ++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 3d74afc5a8e..bc3296a3c6f 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -589,6 +589,8 @@ typedef enum X86Seg { #define XSTATE_Hi16_ZMM_BIT 7 #define XSTATE_PT_BIT 8 #define XSTATE_PKRU_BIT 9 +#define XSTATE_CET_U_BIT 11 +#define XSTATE_CET_S_BIT 12 #define XSTATE_ARCH_LBR_BIT 15 #define XSTATE_XTILE_CFG_BIT 17 #define XSTATE_XTILE_DATA_BIT 18 @@ -603,6 +605,8 @@ typedef enum X86Seg { #define XSTATE_Hi16_ZMM_MASK (1ULL << XSTATE_Hi16_ZMM_BIT) #define XSTATE_PT_MASK (1ULL << XSTATE_PT_BIT) #define XSTATE_PKRU_MASK (1ULL << XSTATE_PKRU_BIT) +#define XSTATE_CET_U_MASK (1ULL << XSTATE_CET_U_BIT) +#define XSTATE_CET_S_MASK (1ULL << XSTATE_CET_S_BIT) #define XSTATE_ARCH_LBR_MASK (1ULL << XSTATE_ARCH_LBR_BIT) #define XSTATE_XTILE_CFG_MASK (1ULL << XSTATE_XTILE_CFG_BIT) #define XSTATE_XTILE_DATA_MASK (1ULL << XSTATE_XTILE_DATA_BIT) @@ -625,7 +629,8 @@ typedef enum X86Seg { XSTATE_XTILE_CFG_MASK | XSTATE_XTILE_DATA= _MASK) =20 /* CPUID feature bits available in XSS */ -#define CPUID_XSTATE_XSS_MASK (XSTATE_ARCH_LBR_MASK) +#define CPUID_XSTATE_XSS_MASK (XSTATE_ARCH_LBR_MASK | XSTATE_CET_U_MASK = | \ + XSTATE_CET_S_MASK) =20 #define CPUID_XSTATE_MASK (CPUID_XSTATE_XCR0_MASK | CPUID_XSTATE_XSS= _MASK) =20 @@ -904,6 +909,8 @@ uint64_t x86_cpu_get_supported_feature_word(X86CPU *cpu= , FeatureWord w); #define CPUID_7_0_ECX_WAITPKG (1U << 5) /* Additional AVX-512 Vector Byte Manipulation Instruction */ #define CPUID_7_0_ECX_AVX512_VBMI2 (1U << 6) +/* Control-flow enforcement technology: shadow stack */ +#define CPUID_7_0_ECX_CET_SHSTK (1U << 7) /* Galois Field New Instructions */ #define CPUID_7_0_ECX_GFNI (1U << 8) /* Vector AES Instructions */ @@ -951,6 +958,8 @@ uint64_t x86_cpu_get_supported_feature_word(X86CPU *cpu= , FeatureWord w); #define CPUID_7_0_EDX_TSX_LDTRK (1U << 16) /* Architectural LBRs */ #define CPUID_7_0_EDX_ARCH_LBR (1U << 19) +/* Control-flow enforcement technology: indirect branch tracking */ +#define CPUID_7_0_EDX_CET_IBT (1U << 20) /* AMX_BF16 instruction */ #define CPUID_7_0_EDX_AMX_BF16 (1U << 22) /* AVX512_FP16 instruction */ @@ -1737,6 +1746,19 @@ typedef struct XSavePKRU { uint32_t padding; } XSavePKRU; =20 +/* Ext. save area 11: CET_U state */ +typedef struct XSaveCETU { + uint64_t u_cet; + uint64_t pl3_ssp; +} XSaveCETU; + +/* Ext. save area 12: CET_S state */ +typedef struct XSaveCETS { + uint64_t pl0_ssp; + uint64_t pl1_ssp; + uint64_t pl2_ssp; +} XSaveCETS; + /* Ext. save area 15: Arch LBR state */ typedef struct XSaveArchLBR { uint64_t lbr_ctl; @@ -1764,6 +1786,8 @@ QEMU_BUILD_BUG_ON(sizeof(XSaveOpmask) !=3D 0x40); QEMU_BUILD_BUG_ON(sizeof(XSaveZMM_Hi256) !=3D 0x200); QEMU_BUILD_BUG_ON(sizeof(XSaveHi16_ZMM) !=3D 0x400); QEMU_BUILD_BUG_ON(sizeof(XSavePKRU) !=3D 0x8); +QEMU_BUILD_BUG_ON(sizeof(XSaveCETU) !=3D 0x10); +QEMU_BUILD_BUG_ON(sizeof(XSaveCETS) !=3D 0x18); QEMU_BUILD_BUG_ON(sizeof(XSaveArchLBR) !=3D 0x328); QEMU_BUILD_BUG_ON(sizeof(XSaveXTILECFG) !=3D 0x40); QEMU_BUILD_BUG_ON(sizeof(XSaveXTILEDATA) !=3D 0x2000); diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 8c00a3ad4df..b1bbb099f33 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -2078,6 +2078,20 @@ ExtSaveArea x86_ext_save_areas[XSAVE_STATE_AREA_COUN= T] =3D { { FEAT_7_0_ECX, CPUID_7_0_ECX_PKU }, }, }, + [XSTATE_CET_U_BIT] =3D { + .size =3D sizeof(XSaveCETU), + .features =3D { + { FEAT_7_0_ECX, CPUID_7_0_ECX_CET_SHSTK }, + { FEAT_7_0_EDX, CPUID_7_0_EDX_CET_IBT }, + }, + }, + [XSTATE_CET_S_BIT] =3D { + .size =3D sizeof(XSaveCETS), + .features =3D { + { FEAT_7_0_ECX, CPUID_7_0_ECX_CET_SHSTK }, + { FEAT_7_0_EDX, CPUID_7_0_EDX_CET_IBT }, + }, + }, [XSTATE_ARCH_LBR_BIT] =3D { .size =3D sizeof(XSaveArchLBR), .features =3D { --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766828939; cv=none; d=zohomail.com; s=zohoarc; b=LWsNxIsahWQVW3RpbOnEwb1+uqcyBGgToDXcA95hHay280dR6xaaB9mUzU5j46CxVMnxKLxTiMeZlnI/zYj4cNneDw4VR6NT5vHJmVg6bQ1SyU0w9j/hib2O0rwMX+5SPOgwb7RiHpLs6pPEpTP7Ty02cTF9HZcbsHYiSp3+Ew0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766828939; 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=WTeoXBXn1B2oSI1CWXAONsVZ5J/6RHjxwZByIoSgDCA=; b=PXMagtQPeuLCYr3/+M0bZMPx0298G5EjjEN/QLSIFY4mFV3SsGFJcDbGE5sUqc3QCq50J29gSMZn22MgbnpDQoqyOvWLs2chuAZxQq0M4sJbagsn2cOi0XpyJvh6X2MJvKQUYkeWLxbqUfLshlnqC6m4HF4+MZ5sK6r1idbRNwo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766828939826889.570625842222; Sat, 27 Dec 2025 01:48:59 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQul-0002PW-RW; Sat, 27 Dec 2025 04:48:48 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuT-0002Fm-Ha for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:30 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuQ-0006tA-Gs for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:28 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-509-ONYCdVLONReu9D0ptkRK0g-1; Sat, 27 Dec 2025 04:48:23 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-477cf2230c8so78144875e9.0 for ; Sat, 27 Dec 2025 01:48:23 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be273f147sm498023555e9.7.2025.12.27.01.48.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:48:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828905; 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=WTeoXBXn1B2oSI1CWXAONsVZ5J/6RHjxwZByIoSgDCA=; b=f1epY7y0/cvm3xFhlZKYj+kFWY6zciFcViWkhw+UpDEoT9RB0LCdHrgcDXm2kIAbrz9HLM urR71k74fhhc5T46MwJjqWz48EmlFASR25B9NP3nA//t9oL/Aqm3UOUjg05RatXARdAop+ I0OdedwUExMh+loIaW7TPsoh50vXdec= X-MC-Unique: ONYCdVLONReu9D0ptkRK0g-1 X-Mimecast-MFC-AGG-ID: ONYCdVLONReu9D0ptkRK0g_1766828902 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828901; x=1767433701; 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; bh=WTeoXBXn1B2oSI1CWXAONsVZ5J/6RHjxwZByIoSgDCA=; b=fxezDw39/fydvfvOp6tuRDrW1epxTJLuVjbesfQTfZn5dc3gSoDmBymqBdanP0w6sv Fd3ZkP3WiMtVsyF9VGXqUG0V7yymxqDD2N6991Dpt4e9PvGBFDAXH0PXtBEmmof8zViz XucnNzF23w4PFvKnWNU42HAOkl1zf/7t3v7WypAR21VJDIL/4T48Mewezpm5Ucl+zyFW ykMgp4rnH7ql6yy6W1o5+MdDU1XiaMP8iwYlsYngmXapRmLyeAdukLrrcsTa0HUJGhBJ 9YFeVoaiVvib40ICd8Wabpmr7IL/a0iK7S8ZKc7zdL+WsY5ylaMXJ8cOq4oNBOzP1fi5 MfZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828901; x=1767433701; 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; bh=WTeoXBXn1B2oSI1CWXAONsVZ5J/6RHjxwZByIoSgDCA=; b=v9yA/yx76LYw5SrYmUd+s8extAcrg/0VqVvcLhtiOby3EL3ZfIJnsyEfaXmlFjbMIw jpIQFr1ChtGaAPMNwHa3h7LH5ACUndRCKGcYYoDHe/FKV2/eMHR7W+II/G0lp+OIm78p meaoaL/XBbrivsClkuhY1p/l6Bvxks3S+aZjbVo8oqX/u94hafAFvLNJ1fp3PHxqghrx XD5mYlTRfc/I6bbpsZEbzGODvpqOIdDHTYl1RKFqV6+P6/czVOYQBmXoORJVacCiCsO9 QPDxIrLk7FOIJAO6nYONyUhzMFXZJUMLP0MnJ9xEOW5QbtoIHqEfzUZp1IVKvEEBpx+v adyg== X-Gm-Message-State: AOJu0YxFpcU+Qw9FPDtUNg3NSYi1gBLurKIBzt5GqoijAz3e0SoZjibv JI2RHI9GwmPTkMMQPncdy7Lqi0YMwCa7IwOyIeheslV0W1PzHqEOO64oT9aiuOoIBAF9L1F2Dzp qvpzR2HMmJ6zFrqEba5KCQd1LCClLrZ2b5TfG0y/QwAwOLV4+oJx00tiLYDYMXVI6sCFEnoPAUD 3ogcWVtfS0O4ugEqdR2HnW0TXmHoyh5KlEbRMOrnzP X-Gm-Gg: AY/fxX6SCLV9qXLu5S+HaCEDaqtiQFmnfUQ0FVAbeIboib07Z+cQoXf9dtRX4uPATlg Zm1rHqi/dE3KZk9TCJ12hCuOvGODL6kn0vdXyjxnGSH4j6v6GgdlgzN+uFgNjSXBeugvZghXx1s cNe7fDJ4MkhhoD1Hre4Wm7ymripamLQC+K5GNpAPsy8DdM3uUMmzzcW9AyPvdAB6W3s4mP67hOQ kIOCSreh+Gk0ZG0pUOi3/W/1dqXuo9WicFSeT1DFUBB1xdFf/qNnP0aVF1TqkFY468/sEyrQbii T737HYaFqzC8Ba6PoW5Tv4umTv3PkUZ6Uag/A5ln+9l0YwnwfPqNQy05+7rIb4xifjChsoRVdwf S5sgn2Yg6k2DGLj+hCQ08eldXORSX07D+6RKr+EZ9we7/mrSWD42grjHOWs9RXZupVUiAtayMZK GiEyn6rtC/55YdjLk= X-Received: by 2002:a05:600c:3b8f:b0:475:e09c:960e with SMTP id 5b1f17b1804b1-47d19593d0dmr358821435e9.32.1766828901352; Sat, 27 Dec 2025 01:48:21 -0800 (PST) X-Google-Smtp-Source: AGHT+IEKZdXGqXZnciz1/2yMkVCMRq0EAQV1ZYIdi0KpOwKuLxiXRfIB5P/hE1XkkNgFIWn6fmaJXQ== X-Received: by 2002:a05:600c:3b8f:b0:475:e09c:960e with SMTP id 5b1f17b1804b1-47d19593d0dmr358821195e9.32.1766828900932; Sat, 27 Dec 2025 01:48:20 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 084/153] i386/cpu: Add CET support in CR4 Date: Sat, 27 Dec 2025 10:46:49 +0100 Message-ID: <20251227094759.35658-10-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766828940611158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu CR4.CET bit (bit 23) is as master enable for CET. Check and adjust CR4.CET bit based on CET CPUIDs. Tested-by: Farrah Chen Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211060801.3600039-13-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- target/i386/cpu.h | 9 +++++++-- target/i386/helper.c | 12 ++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index bc3296a3c6f..a1ff2ceb0c3 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -257,6 +257,7 @@ typedef enum X86Seg { #define CR4_SMEP_MASK (1U << 20) #define CR4_SMAP_MASK (1U << 21) #define CR4_PKE_MASK (1U << 22) +#define CR4_CET_MASK (1U << 23) #define CR4_PKS_MASK (1U << 24) #define CR4_LAM_SUP_MASK (1U << 28) =20 @@ -273,8 +274,8 @@ typedef enum X86Seg { | CR4_OSFXSR_MASK | CR4_OSXMMEXCPT_MASK | CR4_UMIP_MASK \ | CR4_LA57_MASK \ | CR4_FSGSBASE_MASK | CR4_PCIDE_MASK | CR4_OSXSAVE_MASK \ - | CR4_SMEP_MASK | CR4_SMAP_MASK | CR4_PKE_MASK | CR4_PKS_M= ASK \ - | CR4_LAM_SUP_MASK | CR4_FRED_MASK)) + | CR4_SMEP_MASK | CR4_SMAP_MASK | CR4_PKE_MASK | CR4_CET_M= ASK \ + | CR4_PKS_MASK | CR4_LAM_SUP_MASK | CR4_FRED_MASK)) =20 #define DR6_BD (1 << 13) #define DR6_BS (1 << 14) @@ -2948,6 +2949,10 @@ static inline uint64_t cr4_reserved_bits(CPUX86State= *env) if (!(env->features[FEAT_7_1_EAX] & CPUID_7_1_EAX_FRED)) { reserved_bits |=3D CR4_FRED_MASK; } + if (!(env->features[FEAT_7_0_ECX] & CPUID_7_0_ECX_CET_SHSTK) && + !(env->features[FEAT_7_0_EDX] & CPUID_7_0_EDX_CET_IBT)) { + reserved_bits |=3D CR4_CET_MASK; + } return reserved_bits; } =20 diff --git a/target/i386/helper.c b/target/i386/helper.c index 72b2e195a31..3f179c6c11f 100644 --- a/target/i386/helper.c +++ b/target/i386/helper.c @@ -232,6 +232,18 @@ void cpu_x86_update_cr4(CPUX86State *env, uint32_t new= _cr4) new_cr4 &=3D ~CR4_LAM_SUP_MASK; } =20 + /* + * In fact, "CR4.CET can be set only if CR0.WP is set, and it must be + * clear before CR0.WP can be cleared". However, here we only check + * CR4.CET based on the supported CPUID CET bit, without checking the + * dependency on CR4.WP - the latter need to be determined by the + * underlying accelerators. + */ + if (!(env->features[FEAT_7_0_ECX] & CPUID_7_0_ECX_CET_SHSTK) && + !(env->features[FEAT_7_0_EDX] & CPUID_7_0_EDX_CET_IBT)) { + new_cr4 &=3D ~CR4_CET_MASK; + } + env->cr[4] =3D new_cr4; env->hflags =3D hflags; =20 --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829077; cv=none; d=zohomail.com; s=zohoarc; b=SIRnk6KnPPwNOVUBxVqaz2pUn87mlJL5SZ1MsRcwodSMWDP3eaat+KP3az2YE6puApPAvhp/Ikw/8Cpf1LylpCnqDckL2QmhWIlGQUi7X+FPHLYdRQ7Tac1TvoMgrpYsyVlMO8kUWS1rmxJK/i2/vp0gSJ1ZY4AsMaNIslTGOM8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829077; 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=r/Vz2CUHAmSaLIK8YaLXzjbxqiWBCQcRlEKeuVHl6Oo=; b=kOVwKiVxwYKBH6M3BB7Y8Y9HsW6NLVyGfhnL3lnGxMbupIuwrtVyQgmNwXp61Ho9HmeHP7xCiZ2DSr+G2nbipzKTA/jUeYrcSOL33rZZRulTg0UOhMxQSYCR3wjaC0h5Da7vGpuSTzlVl3RsUV42QRZAOLe2plFckiubFZ+YmOs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829077989755.3792434152112; Sat, 27 Dec 2025 01:51:17 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQuw-0003Zg-Eu; Sat, 27 Dec 2025 04:48:58 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuT-0002Fn-PS for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:30 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuR-0006tM-BV for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:29 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-631-2slGkurSM-iX9Kduw2JBIg-1; Sat, 27 Dec 2025 04:48:25 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-47918084ac1so65312525e9.2 for ; Sat, 27 Dec 2025 01:48:25 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d19362345sm432836685e9.6.2025.12.27.01.48.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:48:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828906; 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=r/Vz2CUHAmSaLIK8YaLXzjbxqiWBCQcRlEKeuVHl6Oo=; b=Rqchk4xRwHx5apkXWHTmnhUtEDo8gssATV2GeqMUct0I1wsGcPAbPEqtEK7p5O4pN4mdVs THIXBijLc8D0MoKmbD/T08nRtG7T7czRJj69HQxEnpStQseYBaRNRwFJHwkGSWO79uwBtU PTFmAmzXooInJsDHpI01YVM0aHv1JUo= X-MC-Unique: 2slGkurSM-iX9Kduw2JBIg-1 X-Mimecast-MFC-AGG-ID: 2slGkurSM-iX9Kduw2JBIg_1766828904 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828903; x=1767433703; 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; bh=r/Vz2CUHAmSaLIK8YaLXzjbxqiWBCQcRlEKeuVHl6Oo=; b=Jkv7PkYl4sEU19h5wwyEvbRC1QGvW8KfPnwCnEiV40vWGgXELhAGjp7RCUVVJzZLGj e7+TevrfKfx4i1l/k+/wogwnGGvuqxAj4cCGFDY86GZXQrqR3itK+vf9EYSvu+iAapTj 5jS7pe5FyLn962sMTTZAS7IbW1H1EBgfXwXvSpmvlH8xfojPrToDegshfcqz0cMXXes5 3HdgolN63KMdaj/SP1NWln28D0mCK5v8+EVi+b2bHaiGARjDVSQC5LplLmdA0J5R+1BW nkHgCmXnh7OUX97J5PnwOlES9YUeW+dxYrPphcV7GQzbE7i4SZ0MCFxSxORkkeOEiEl7 9H2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828903; x=1767433703; 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; bh=r/Vz2CUHAmSaLIK8YaLXzjbxqiWBCQcRlEKeuVHl6Oo=; b=jHG5JlhgFXMe2EqVmAQ6B6cS8UpvvULie6GLvKc1w+txJuHc9Qxi1BZqa/F/iIqgJ2 Tzp6U1q2BCUN8FfWZ/wPmWqL/Vc703REyX18VSS75T+yxeN5VfN57KVCZ98jGrgVXXK5 Fy0Zn6CD2koX9Tj37H87vUfu8W/sTchkpwq9DasgUxtNns3P7Xs/2eTb9btqnri8DuY8 JumFrVwmqkXARLU9Y0QNzvmkuEjdx2fiBvZ4psmTOEwrtaRSS7mZHGz5IVNqu66kb1tc EvoJrjhq9Lm8ZHsn+KBbG3LQv2p1UR1W0/wRI1XGFVaGyURcbHnpuht+kV0M9s342Lnn kVSQ== X-Gm-Message-State: AOJu0Yx7lfMSybkLlQJrBGPsXhYqhajsp4qbvYudOsIpdhyhqkpRCr4s Cc7Yt1/rXx3CU0yv8rxFnNIEHMO3ouIdlbR3EP5takb1Q6PigicOlFHgK8NXqDqrBc7SG6/rlJh trYRh+/6spa/W1+V4Q1a982Koz4ZqmmUFywZi/oUqwwsjkjmP0xVpUfVvN9OfKSZwmbCwwopI8Z vbyAyXUTNDJB3MuyjAjZbzgY9D0K3Y0T4/w9yCZckd X-Gm-Gg: AY/fxX6ivdAsMvJ+Zs75i1YQJv9lsWj85R/iBNfoD0vKHHVcF6Jui/TtZtDwArzJ6Sw nuBLzkIFTLMIQV2xZm5WC9EBdEp4csuijKfws8WSAGrsG6srPN3QAcY3xsNDjyMT5NyS7Q0u3ga ZJmqWl8kNouMFp2EvrPCd14DndtiKUp3XRID7P0OIscgo39AfEGBq/gaQ2SYKrDTC0AiLxhdrY1 79tFdxBUiIvt5LUIdiBExgl8XFffKAspdgo5m5UuTd2Yh/eWyQLIeaNfBWJjp9cWyH+1ws11EOT 21z9KFA0BLxDAOPKjpNsgt261OZLibwWtdWc0H4fVL1908cDLbKIBxPVeKAPNXHWNhwTWWhdYx/ VgGpP6/MXfy0bLlGlkk5xBgpQBOSSz4up0LaZkke/sWygwFOe/9TeUnQ5Zoz3ZeGIt4RjYdBMyK EAm1kdP1tz2li4Qfk= X-Received: by 2002:a05:600c:3b9d:b0:459:db7b:988e with SMTP id 5b1f17b1804b1-47d19555e07mr344065225e9.13.1766828903417; Sat, 27 Dec 2025 01:48:23 -0800 (PST) X-Google-Smtp-Source: AGHT+IEkXjh17Gc3ONEKcCfBrAFN2l31vqQQnRDnJ4MvwWALmJZ3e0OuL60yRySzT1bcRHFj+7oOcQ== X-Received: by 2002:a05:600c:3b9d:b0:459:db7b:988e with SMTP id 5b1f17b1804b1-47d19555e07mr344065015e9.13.1766828903017; Sat, 27 Dec 2025 01:48:23 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , "Xin Li (Intel)" Subject: [PULL 085/153] i386/cpu: Save/restore SSP0 MSR for FRED Date: Sat, 27 Dec 2025 10:46:50 +0100 Message-ID: <20251227094759.35658-11-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829079047158500 Content-Type: text/plain; charset="utf-8" From: "Xin Li (Intel)" Both FRED and CET shadow stack define the MSR MSR_IA32_PL0_SSP (aka MSR_IA32_FRED_SSP0 in FRED spec). MSR_IA32_PL0_SSP is a FRED SSP MSR, so that if a processor doesn't support CET shadow stack, FRED transitions won't use MSR_IA32_PL0_SSP, but this MSR would still be accessible using MSR-access instructions (e.g., RDMSR, WRMSR). Therefore, save/restore SSP0 MSR for FRED. Tested-by: Farrah Chen Signed-off-by: Xin Li (Intel) Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211060801.3600039-14-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- target/i386/cpu.h | 6 ++++++ target/i386/kvm/kvm.c | 13 +++++++++++++ 2 files changed, 19 insertions(+) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index a1ff2ceb0c3..84e5cf0ab0c 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -554,6 +554,9 @@ typedef enum X86Seg { #define MSR_IA32_FRED_SSP3 0x000001d3 /* Stack level 3 = shadow stack pointer in ring 0 */ #define MSR_IA32_FRED_CONFIG 0x000001d4 /* FRED Entrypoin= t and interrupt stack level */ =20 +/* FRED and CET MSR */ +#define MSR_IA32_PL0_SSP 0x000006a4 /* ring-0 shadow = stack pointer (aka MSR_IA32_FRED_SSP0 for FRED) */ + #define MSR_IA32_BNDCFGS 0x00000d90 #define MSR_IA32_XSS 0x00000da0 #define MSR_IA32_UMWAIT_CONTROL 0xe1 @@ -1970,6 +1973,9 @@ typedef struct CPUArchState { uint64_t fred_config; #endif =20 + /* MSR used for both FRED and CET (SHSTK) */ + uint64_t pl0_ssp; + uint64_t tsc_adjust; uint64_t tsc_deadline; uint64_t tsc_aux; diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index e98da47a451..5b8c7550a16 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -4009,6 +4009,11 @@ static int kvm_put_msrs(X86CPU *cpu, KvmPutState lev= el) kvm_msr_entry_add(cpu, MSR_IA32_FRED_SSP2, env->fred_ssp2); kvm_msr_entry_add(cpu, MSR_IA32_FRED_SSP3, env->fred_ssp3); kvm_msr_entry_add(cpu, MSR_IA32_FRED_CONFIG, env->fred_config); + /* + * Aka MSR_IA32_FRED_SSP0. This MSR is accessible even if + * CET shadow stack is not supported. + */ + kvm_msr_entry_add(cpu, MSR_IA32_PL0_SSP, env->pl0_ssp); } } #endif @@ -4496,6 +4501,11 @@ static int kvm_get_msrs(X86CPU *cpu) kvm_msr_entry_add(cpu, MSR_IA32_FRED_SSP2, 0); kvm_msr_entry_add(cpu, MSR_IA32_FRED_SSP3, 0); kvm_msr_entry_add(cpu, MSR_IA32_FRED_CONFIG, 0); + /* + * Aka MSR_IA32_FRED_SSP0. This MSR is accessible even if + * CET shadow stack is not supported. + */ + kvm_msr_entry_add(cpu, MSR_IA32_PL0_SSP, 0); } } #endif @@ -4747,6 +4757,9 @@ static int kvm_get_msrs(X86CPU *cpu) case MSR_IA32_FRED_CONFIG: env->fred_config =3D msrs[i].data; break; + case MSR_IA32_PL0_SSP: /* aka MSR_IA32_FRED_SSP0 */ + env->pl0_ssp =3D msrs[i].data; + break; #endif case MSR_IA32_TSC: env->tsc =3D msrs[i].data; --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829065; cv=none; d=zohomail.com; s=zohoarc; b=IohzXJz7tvioMwDZTtMY7Q8i9QHRIX+FJQ1GJKRFYe+0UpGG7EmY3Edtj/SEK9Ny6ji99vtZZR+F5kJ3KgqIZF9V6zIRS96jQqFm5spQQUS7R3hEnZWsoh3BAAxwrdseUxeka1gkCUqY6I4z8VQEOIrcIw1vUAgUBSzF9aEKnR0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829065; 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=bhMzQBznpreh9ZxnptD90zF45nT9leymZqtVkihCPfI=; b=oH41u66k9H3z6QjlAW7YNRCUINy1xduRXL+iJuhPC43CZp6fDT2xwXcef9nQIyYInQUurhuCnB5Ww8FQqGbIG6OBtvWt7UIQVyCiFJ7wNMK9TBAnoTWA9f/ENGcwTbM0kjFVSeF1hA4ByxUeXEC6lrC7G0OdULvYO2fqrUx9yZs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176682906549542.25677620842737; Sat, 27 Dec 2025 01:51:05 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQuw-0003Zm-EU; Sat, 27 Dec 2025 04:48:58 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuY-0002IV-Un for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:42 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuT-0006ta-Um for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:31 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-448-M5uEcwAMMKm5uortkMvgAA-1; Sat, 27 Dec 2025 04:48:28 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-47910af0c8bso53726435e9.2 for ; Sat, 27 Dec 2025 01:48:27 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be3acdb87sm191616315e9.16.2025.12.27.01.48.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:48:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828909; 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=bhMzQBznpreh9ZxnptD90zF45nT9leymZqtVkihCPfI=; b=J4HykKCYxbLPRvWtgI8//WfWe0Q8KHzJqeH+xv4Lc+i2KEgNOB0BMObEKhjlsXuqL++x07 3m2Es1ZVBlvt0LiRas9x96RGLLJ8L+NDuH1iFo6r9NdtQaLHfmSyWFrRIDZRM7MOb9awgY yI72S2OtZoZ1vWlp9hvw9OI5rfVeMTM= X-MC-Unique: M5uEcwAMMKm5uortkMvgAA-1 X-Mimecast-MFC-AGG-ID: M5uEcwAMMKm5uortkMvgAA_1766828907 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828906; x=1767433706; 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; bh=bhMzQBznpreh9ZxnptD90zF45nT9leymZqtVkihCPfI=; b=YLRQE1Pr114VoWQmORc6wlDlz+55I176k9rAwDgy3FVWKnSkiDaVy+vpgaRM6TD3XI h0mYNDZbjxnDJVHusiRGUOJkrtFss/7U+srAAnItYmyftPeWNsZekxj1FKRdMApSj7cY wXYqVuIqvFd9AKtke6wvmUlYqIx4JdG90acpxv5RP0/6TXkLnB2xqHC6z2bnWHtyCwAs G6abtABXHN+uc2MfseLOYQPCzi2uHFz4kxVefYagAURq6QOvI7T5fEmfvWNzzmzFZ0bR zFskmfH8rgP3YM2l7QxHURIoShO9AD6HA/l2yI5W5r6O3mhCfUUcGrf6IBRcIAk6mCPq exZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828906; x=1767433706; 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; bh=bhMzQBznpreh9ZxnptD90zF45nT9leymZqtVkihCPfI=; b=SZlhAp70ixzrX4dCkEu3zPLP1lJb1xjVMdSHdytOwAsqETkp4InHuEggL6F/+hGgay Sr2jsvP5ILBE3iKfNMl9RSwdBcmHkQs1PF8Q+ueEEU+EXvBlg0YEMf/gckE0ZlEwiEpY GEzmgDG0uG8BKNAUekoXVKSvPHCcre7F8f+Y4Lw2otSXoA+GnjAay+AMDKMCvVDE9Zb9 lOAvM4wJGnDevW+6uHCYJkWFTkkfIwiK6nwQ7kuIRvIhisNIOT4fp+lo88MmJV6PPnTe xsNqAxdENcb0Wa7FUeLPpHEuubBP6ProMF3muxM6qE21Rc5LkS0kHYQAeTa+7GJtM3sK WTBQ== X-Gm-Message-State: AOJu0YxMRQsPveRbsJP5qDYPv17Ap2lOEUI1cqe9gCPoNIyD6nqLx+Rg fBgZFrakopMKNNpFxkpDrkIvjssh9zjjfrYgUJMn3+AjIcDknQLf0kV2FGGealtOvozbyC4Fb1k U9qBVVHDhQHcrIXFXngFIFr+gBrwTkfINYiemc8oJ7XyOYt1sdbs6LzPEymvBp9XGI+vLTBUmG1 18qbUCyeTloBFWvFAV1cr7EqS6X8ivemYOp2mwFVXk X-Gm-Gg: AY/fxX4TD28AXQp7PBSsJ7LNrUVngVLbffGmqwKeJTSV1B2ZcQxd/Z/UDuAEKF5nBtu A+qOPCw/JFz/xGJ4LJlFEJPtS2nh7U4Xo+cXkMEtZgRKL5IP3ZR9qC56vJn5jTdJnEOwW5TIPea t5Nem1x1jDfCJKyqie4o5GgV7t3GciWatuKXq2wAtY09PIkp4iU+PyHk6Fo0UyIQTtJ/g039Z0g t8h7QOW1ixhLrb0E3PHxqPOHJAaPR1O/kFxlj8uH2IlvC3etHCk7A2FkJPG0dDJuW4ajfooxGT0 QXDLH4fCa048futb8jOzjyL3DcWtXrwDglGaeBYI+o7a2aVKQkX2+cYwRtIMFKMuWXz/IDyYkyA 1LSz6q8gHRdDVY0mnTMDWvaT6ePEwD3PG8Eq0+9rANCtVZ8oysZXp4pe30aGsGcOafm0mA0gMnl NUiXMKC/vkzPgf6y8= X-Received: by 2002:a05:600c:524f:b0:45d:d8d6:7fcc with SMTP id 5b1f17b1804b1-47d1958b73cmr285259695e9.27.1766828905877; Sat, 27 Dec 2025 01:48:25 -0800 (PST) X-Google-Smtp-Source: AGHT+IE/xBIzn+C7tpRU0OnKNoFMvXqW1ZtmfBtZjkVl69mPPy90XAWq97D0itjfDmw/NxyTABMHHw== X-Received: by 2002:a05:600c:524f:b0:45d:d8d6:7fcc with SMTP id 5b1f17b1804b1-47d1958b73cmr285259385e9.27.1766828905417; Sat, 27 Dec 2025 01:48:25 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Yang Weijiang , "Xin Li (Intel)" , Chao Gao Subject: [PULL 086/153] i386/kvm: Add save/restore support for CET MSRs Date: Sat, 27 Dec 2025 10:46:51 +0100 Message-ID: <20251227094759.35658-12-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829067140158500 Content-Type: text/plain; charset="utf-8" From: Yang Weijiang CET (architectural) MSRs include: MSR_IA32_U_CET - user mode CET control bits. MSR_IA32_S_CET - supervisor mode CET control bits. MSR_IA32_PL{0,1,2,3}_SSP - linear addresses of SSPs for user/kernel modes. MSR_IA32_INT_SSP_TAB - linear address of interrupt SSP table Since FRED also needs to save/restore MSR_IA32_PL0_SSP, to avoid duplicate operations, make FRED only save/restore MSR_IA32_PL0_SSP when CET-SHSTK is not enumerated. And considerring MSR_IA32_SSP_TBL_ADDR is only presented on 64 bit processor, wrap it with TARGET_X86_64 macro. For other MSRs, add save/restore support directly. Tested-by: Farrah Chen Suggested-by: Xin Li (Intel) Signed-off-by: Yang Weijiang Co-developed-by: Chao Gao Signed-off-by: Chao Gao Co-developed-by: Zhao Liu Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211060801.3600039-15-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- target/i386/cpu.h | 26 ++++++++++--- target/i386/kvm/kvm.c | 91 ++++++++++++++++++++++++++++++++++++------- 2 files changed, 98 insertions(+), 19 deletions(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 84e5cf0ab0c..37cc218bf3a 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -543,7 +543,7 @@ typedef enum X86Seg { #define MSR_IA32_XFD 0x000001c4 #define MSR_IA32_XFD_ERR 0x000001c5 =20 -/* FRED MSRs */ +/* FRED MSRs (MSR_IA32_FRED_SSP0 is defined as MSR_IA32_PL0_SSP in CET MSR= s) */ #define MSR_IA32_FRED_RSP0 0x000001cc /* Stack level 0 = regular stack pointer */ #define MSR_IA32_FRED_RSP1 0x000001cd /* Stack level 1 = regular stack pointer */ #define MSR_IA32_FRED_RSP2 0x000001ce /* Stack level 2 = regular stack pointer */ @@ -554,9 +554,6 @@ typedef enum X86Seg { #define MSR_IA32_FRED_SSP3 0x000001d3 /* Stack level 3 = shadow stack pointer in ring 0 */ #define MSR_IA32_FRED_CONFIG 0x000001d4 /* FRED Entrypoin= t and interrupt stack level */ =20 -/* FRED and CET MSR */ -#define MSR_IA32_PL0_SSP 0x000006a4 /* ring-0 shadow = stack pointer (aka MSR_IA32_FRED_SSP0 for FRED) */ - #define MSR_IA32_BNDCFGS 0x00000d90 #define MSR_IA32_XSS 0x00000da0 #define MSR_IA32_UMWAIT_CONTROL 0xe1 @@ -583,6 +580,15 @@ typedef enum X86Seg { #define MSR_APIC_START 0x00000800 #define MSR_APIC_END 0x000008ff =20 +/* CET MSRs */ +#define MSR_IA32_U_CET 0x000006a0 /* user mode cet = */ +#define MSR_IA32_S_CET 0x000006a2 /* kernel mode ce= t */ +#define MSR_IA32_PL0_SSP 0x000006a4 /* ring-0 shadow = stack pointer */ +#define MSR_IA32_PL1_SSP 0x000006a5 /* ring-1 shadow = stack pointer */ +#define MSR_IA32_PL2_SSP 0x000006a6 /* ring-2 shadow = stack pointer */ +#define MSR_IA32_PL3_SSP 0x000006a7 /* ring-3 shadow = stack pointer */ +#define MSR_IA32_INT_SSP_TAB 0x000006a8 /* exception shad= ow stack table */ + #define XSTATE_FP_BIT 0 #define XSTATE_SSE_BIT 1 #define XSTATE_YMM_BIT 2 @@ -1973,8 +1979,16 @@ typedef struct CPUArchState { uint64_t fred_config; #endif =20 - /* MSR used for both FRED and CET (SHSTK) */ - uint64_t pl0_ssp; + /* CET MSRs */ + uint64_t u_cet; + uint64_t s_cet; + uint64_t pl0_ssp; /* also used for FRED */ + uint64_t pl1_ssp; + uint64_t pl2_ssp; + uint64_t pl3_ssp; +#ifdef TARGET_X86_64 + uint64_t int_ssp_table; +#endif =20 uint64_t tsc_adjust; uint64_t tsc_deadline; diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index 5b8c7550a16..e1a1f0ce9e5 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -4009,11 +4009,14 @@ static int kvm_put_msrs(X86CPU *cpu, KvmPutState le= vel) kvm_msr_entry_add(cpu, MSR_IA32_FRED_SSP2, env->fred_ssp2); kvm_msr_entry_add(cpu, MSR_IA32_FRED_SSP3, env->fred_ssp3); kvm_msr_entry_add(cpu, MSR_IA32_FRED_CONFIG, env->fred_config); - /* - * Aka MSR_IA32_FRED_SSP0. This MSR is accessible even if - * CET shadow stack is not supported. - */ - kvm_msr_entry_add(cpu, MSR_IA32_PL0_SSP, env->pl0_ssp); + + if (!(env->features[FEAT_7_0_ECX] & CPUID_7_0_ECX_CET_SHSTK)) { + /* + * Aka MSR_IA32_FRED_SSP0. This MSR is accessible even if + * CET shadow stack is not supported. + */ + kvm_msr_entry_add(cpu, MSR_IA32_PL0_SSP, env->pl0_ssp); + } } } #endif @@ -4267,6 +4270,26 @@ static int kvm_put_msrs(X86CPU *cpu, KvmPutState lev= el) } } =20 + if (env->features[FEAT_7_0_ECX] & CPUID_7_0_ECX_CET_SHSTK || + env->features[FEAT_7_0_EDX] & CPUID_7_0_EDX_CET_IBT) { + kvm_msr_entry_add(cpu, MSR_IA32_U_CET, env->u_cet); + kvm_msr_entry_add(cpu, MSR_IA32_S_CET, env->s_cet); + + if (env->features[FEAT_7_0_ECX] & CPUID_7_0_ECX_CET_SHSTK) { + kvm_msr_entry_add(cpu, MSR_IA32_PL0_SSP, env->pl0_ssp); + kvm_msr_entry_add(cpu, MSR_IA32_PL1_SSP, env->pl1_ssp); + kvm_msr_entry_add(cpu, MSR_IA32_PL2_SSP, env->pl2_ssp); + kvm_msr_entry_add(cpu, MSR_IA32_PL3_SSP, env->pl3_ssp); + +#ifdef TARGET_X86_64 + if (lm_capable_kernel) { + kvm_msr_entry_add(cpu, MSR_IA32_INT_SSP_TAB, + env->int_ssp_table); + } +#endif + } + } + return kvm_buf_set_msrs(cpu); } =20 @@ -4501,11 +4524,14 @@ static int kvm_get_msrs(X86CPU *cpu) kvm_msr_entry_add(cpu, MSR_IA32_FRED_SSP2, 0); kvm_msr_entry_add(cpu, MSR_IA32_FRED_SSP3, 0); kvm_msr_entry_add(cpu, MSR_IA32_FRED_CONFIG, 0); - /* - * Aka MSR_IA32_FRED_SSP0. This MSR is accessible even if - * CET shadow stack is not supported. - */ - kvm_msr_entry_add(cpu, MSR_IA32_PL0_SSP, 0); + + if (!(env->features[FEAT_7_0_ECX] & CPUID_7_0_ECX_CET_SHSTK)) { + /* + * Aka MSR_IA32_FRED_SSP0. This MSR is accessible even if + * CET shadow stack is not supported. + */ + kvm_msr_entry_add(cpu, MSR_IA32_PL0_SSP, 0); + } } } #endif @@ -4663,6 +4689,25 @@ static int kvm_get_msrs(X86CPU *cpu) } } =20 + if (env->features[FEAT_7_0_ECX] & CPUID_7_0_ECX_CET_SHSTK || + env->features[FEAT_7_0_EDX] & CPUID_7_0_EDX_CET_IBT) { + kvm_msr_entry_add(cpu, MSR_IA32_U_CET, 0); + kvm_msr_entry_add(cpu, MSR_IA32_S_CET, 0); + + if (env->features[FEAT_7_0_EDX] & CPUID_7_0_ECX_CET_SHSTK) { + kvm_msr_entry_add(cpu, MSR_IA32_PL0_SSP, 0); + kvm_msr_entry_add(cpu, MSR_IA32_PL1_SSP, 0); + kvm_msr_entry_add(cpu, MSR_IA32_PL2_SSP, 0); + kvm_msr_entry_add(cpu, MSR_IA32_PL3_SSP, 0); + +#ifdef TARGET_X86_64 + if (lm_capable_kernel) { + kvm_msr_entry_add(cpu, MSR_IA32_INT_SSP_TAB, 0); + } +#endif + } + } + ret =3D kvm_vcpu_ioctl(CPU(cpu), KVM_GET_MSRS, cpu->kvm_msr_buf); if (ret < 0) { return ret; @@ -4757,9 +4802,6 @@ static int kvm_get_msrs(X86CPU *cpu) case MSR_IA32_FRED_CONFIG: env->fred_config =3D msrs[i].data; break; - case MSR_IA32_PL0_SSP: /* aka MSR_IA32_FRED_SSP0 */ - env->pl0_ssp =3D msrs[i].data; - break; #endif case MSR_IA32_TSC: env->tsc =3D msrs[i].data; @@ -5013,6 +5055,29 @@ static int kvm_get_msrs(X86CPU *cpu) case MSR_ARCH_LBR_INFO_0 ... MSR_ARCH_LBR_INFO_0 + 31: env->lbr_records[index - MSR_ARCH_LBR_INFO_0].info =3D msrs[i]= .data; break; + case MSR_IA32_U_CET: + env->u_cet =3D msrs[i].data; + break; + case MSR_IA32_S_CET: + env->s_cet =3D msrs[i].data; + break; + case MSR_IA32_PL0_SSP: /* aka MSR_IA32_FRED_SSP0 */ + env->pl0_ssp =3D msrs[i].data; + break; + case MSR_IA32_PL1_SSP: + env->pl1_ssp =3D msrs[i].data; + break; + case MSR_IA32_PL2_SSP: + env->pl2_ssp =3D msrs[i].data; + break; + case MSR_IA32_PL3_SSP: + env->pl3_ssp =3D msrs[i].data; + break; +#ifdef TARGET_X86_64 + case MSR_IA32_INT_SSP_TAB: + env->int_ssp_table =3D msrs[i].data; + break; +#endif case MSR_K7_HWCR: env->msr_hwcr =3D msrs[i].data; break; --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829157; cv=none; d=zohomail.com; s=zohoarc; b=WWDrtk6yQWMzGsgsMN1iCNCwHKbDaiuMcp/TiiHEhctx3d2W1t8kFjvx9wRROmoMdXMIFsD/UvP31i9ApYJXHN7RNK4Up8Y7SqjQyagZunNlnmE6Gu0vSHjLl03zCTbjHiZCGpoG0GZVEJtcPp4CqGb8L8EUK4EYM8cDjKrI+vA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829157; 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=XzIiipLLrfD4vcpRpCLjIkg7cFdHY3lI2WYxF9LZKpA=; b=HsbBc6BlPyUm1WsMefFyBfGoKTXUQOp2hMg2iX+excQ6MkVu3GL6cFaqdYcBhleDFbNYCuk2LSwSNdkgXUuh7S/8PrgZUFcG5wujxxPmVmgpAitNAJVdYWvM+WM1icXCqfqejs/jgyIcEX+xigftJzHw2xmF5gb2YVUZ4ZnZ7Rw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829157944776.5770973497497; Sat, 27 Dec 2025 01:52:37 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQuo-0002aI-Cw; Sat, 27 Dec 2025 04:48:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQug-0002JS-B6 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:43 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuW-0006u8-Ag for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:36 -0500 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-689-CxuLkgyKMe6sa63Fix0MaQ-1; Sat, 27 Dec 2025 04:48:29 -0500 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-4325ddc5babso2696484f8f.0 for ; Sat, 27 Dec 2025 01:48:29 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4325b6bfe88sm41924278f8f.19.2025.12.27.01.48.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:48:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828911; 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=XzIiipLLrfD4vcpRpCLjIkg7cFdHY3lI2WYxF9LZKpA=; b=F3q04x2e9vEf4d0qEDTRjzwK8mxNYe/T8xhuwE9ZF9SBXSjifN3gS5Vr2Lij/WNwnf23Y+ 9ZgUbwSeOw7aBm7GbHxPKtgotWUOzvA5Xm7XaON3ebCK5yAeGd8FGw9OamQxIAdW1KTm12 d3cS8uau41yh9HPBTHTZOg7t0g9OQeU= X-MC-Unique: CxuLkgyKMe6sa63Fix0MaQ-1 X-Mimecast-MFC-AGG-ID: CxuLkgyKMe6sa63Fix0MaQ_1766828909 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828908; x=1767433708; 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; bh=XzIiipLLrfD4vcpRpCLjIkg7cFdHY3lI2WYxF9LZKpA=; b=pSDSSNdr06WqyK70H6xfLZqMOSrGJWDNt3bszWDUU0FyGVvW/06pNk1VatThbMrWoh xa7jH8yVsl9u28DdENLz3bG/m6SSejuscvBO1oFL/ltr8M/EZhKeD9ZoyrCp6KMmPmaX T7ovjFhqSCl8qJK8A8u9FbRuvHwzr59Aj19JloeJXS/8IlJWOc5CQsgP7FzlZyJPmjNG oCQv8HqRuVS+4rCc55VhgAr2aAxCS1M9NnnAZbKBmKDUg+8tfKf22KrgPE9h1FClKs5w f6JjdAGG1t6rGPWBTRrG9K9OjXXJQylQmQ1kvD7vsJwoLYdjdGiUEJhDvK+oR8UdFCRn vkHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828908; x=1767433708; 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; bh=XzIiipLLrfD4vcpRpCLjIkg7cFdHY3lI2WYxF9LZKpA=; b=se2i/Y3QKN3PLsO+reUHtjEEBJNon1mNGUHxCzg9b2NI26idyYGgwfIr3QCR2iA4UO LlBBXUnpIZ6uUHyDXn+q1TnEREQ1W3pD6z/WlsV26RmFa/qZOMV/mMbyjArSLeeivi+g V7qYzvD5c1FNg6gjYtNAsG4nfqqs09RkuiBNcqPY9cMJahqR2AZq26yAjNWJe/aHFxzG enFD6Ku5lO8D4IS8o1Fw6ZZsZqIcwCfTdhKXvuiXrSon+Vr6kjqrJgb+jM/vAGZ3xSYp IIsb7HJ9FB1V5S+vGQbh7PGunHTwrah3QVr6O5rI/eJ9/qSii7k2lDYu2SFB1EqGr8Ik Ajdw== X-Gm-Message-State: AOJu0Yx9KfEsaMufCgz33RYJwIbIxN/hhueXopq5RvF4yLIquJBTV9c6 OwhwD/M0XxfueO7gup5SiNdFuBsNkfyqx8OKyKxTqi5CmRZ7wmM6fm0Guuo4etf0n4CRHOZSL0F RyfUc5EE4TFt2gc0AhKXpp7DnPTflKW2z5CtOfqj2Vme6d/zNcg/Gov1+uHn/L0uYrnhStBA6jn +pxlMHTNGXKjsYfx7YliExBbN5GOojsMHSx3VcCuhP X-Gm-Gg: AY/fxX7tZrNvPyNTABTB0OxyrL1nB4SVNTINvl55nZOZmLCXbkvFgcXykrChpSwHJc1 crfUaJ9XyLrO+nY8yi8m/NTAV1eIT9pY1FY90ZjUVBqnPz5bpZybxI/m7hZFGE29o6fwWBNYLGF ZHF2TPtWzNcOD4WUZTt9r+wUt3aNtNYvpnNeYo+9dwbr113NvvEMXFbNCqlLLLjo6LmNNgmls9B fkd/MbAIhnwAYMfSmo30L2U8oAmknAyuYvuTqWM8pFl+LceERBXa/CEumgh1BGZ299YDOeESHm+ IpYJNc5b8gch55+tmIaNDpFMVHUmwOkmu0wk5s0kmwL+Y8KOyFRYWYgvKUnPBBdIuxbObFMzZ0x rHmxUdwQE5G5Fei7BaShOsllG/73eQIAQNtCqXJczi3j9AS0kg8bh56v6BLoWuwLAsZ4t6DozZ3 isLWEINsffsUG/nRY= X-Received: by 2002:a05:6000:2203:b0:42f:b707:56e6 with SMTP id ffacd0b85a97d-4324e5035d1mr24635026f8f.34.1766828907890; Sat, 27 Dec 2025 01:48:27 -0800 (PST) X-Google-Smtp-Source: AGHT+IE7R/v75mFl2ZQpRodO9BvtZOVNjKNQx6c50SCp4zWj68HiK+T83bsvAtkF/mXlwJX+Fhc4OA== X-Received: by 2002:a05:6000:2203:b0:42f:b707:56e6 with SMTP id ffacd0b85a97d-4324e5035d1mr24635004f8f.34.1766828907453; Sat, 27 Dec 2025 01:48:27 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Yang Weijiang , Chao Gao Subject: [PULL 087/153] i386/kvm: Add save/restore support for KVM_REG_GUEST_SSP Date: Sat, 27 Dec 2025 10:46:52 +0100 Message-ID: <20251227094759.35658-13-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829163324158500 Content-Type: text/plain; charset="utf-8" From: Yang Weijiang CET provides a new architectural register, shadow stack pointer (SSP), which cannot be directly encoded as a source, destination or memory operand in instructions. But Intel VMCS & VMCB provide fields to save/load guest & host's ssp. It's necessary to save & restore Guest's ssp before & after migration. To support this, KVM implements Guest's SSP as a special KVM internal register - KVM_REG_GUEST_SSP, and allows QEMU to save & load it via KVM_GET_ONE_REG/KVM_SET_ONE_REG. Cache KVM_REG_GUEST_SSP in X86CPUState. Tested-by: Farrah Chen Reviewed-by: Xiaoyao Li Signed-off-by: Yang Weijiang Co-developed-by: Chao Gao Signed-off-by: Chao Gao Co-developed-by: Zhao Liu Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211060801.3600039-16-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- target/i386/cpu.h | 3 ++- target/i386/kvm/kvm.c | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 37cc218bf3a..458775daaa3 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -1979,7 +1979,7 @@ typedef struct CPUArchState { uint64_t fred_config; #endif =20 - /* CET MSRs */ + /* CET MSRs and register */ uint64_t u_cet; uint64_t s_cet; uint64_t pl0_ssp; /* also used for FRED */ @@ -1989,6 +1989,7 @@ typedef struct CPUArchState { #ifdef TARGET_X86_64 uint64_t int_ssp_table; #endif + uint64_t guest_ssp; =20 uint64_t tsc_adjust; uint64_t tsc_deadline; diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index e1a1f0ce9e5..7b9b740a8e5 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -4293,6 +4293,35 @@ static int kvm_put_msrs(X86CPU *cpu, KvmPutState lev= el) return kvm_buf_set_msrs(cpu); } =20 +static int kvm_put_kvm_regs(X86CPU *cpu) +{ + CPUX86State *env =3D &cpu->env; + int ret; + + if ((env->features[FEAT_7_0_ECX] & CPUID_7_0_ECX_CET_SHSTK)) { + ret =3D kvm_set_one_reg(CPU(cpu), KVM_X86_REG_KVM(KVM_REG_GUEST_SS= P), + &env->guest_ssp); + if (ret) { + return ret; + } + } + return 0; +} + +static int kvm_get_kvm_regs(X86CPU *cpu) +{ + CPUX86State *env =3D &cpu->env; + int ret; + + if ((env->features[FEAT_7_0_ECX] & CPUID_7_0_ECX_CET_SHSTK)) { + ret =3D kvm_get_one_reg(CPU(cpu), KVM_X86_REG_KVM(KVM_REG_GUEST_SS= P), + &env->guest_ssp); + if (ret) { + return ret; + } + } + return 0; +} =20 static int kvm_get_xsave(X86CPU *cpu) { @@ -5446,6 +5475,11 @@ int kvm_arch_put_registers(CPUState *cpu, KvmPutStat= e level, Error **errp) error_setg_errno(errp, -ret, "Failed to set MSRs"); return ret; } + ret =3D kvm_put_kvm_regs(x86_cpu); + if (ret < 0) { + error_setg_errno(errp, -ret, "Failed to set KVM type registers"); + return ret; + } ret =3D kvm_put_vcpu_events(x86_cpu, level); if (ret < 0) { error_setg_errno(errp, -ret, "Failed to set vCPU events"); @@ -5518,6 +5552,11 @@ int kvm_arch_get_registers(CPUState *cs, Error **err= p) error_setg_errno(errp, -ret, "Failed to get MSRs"); goto out; } + ret =3D kvm_get_kvm_regs(cpu); + if (ret < 0) { + error_setg_errno(errp, -ret, "Failed to get KVM type registers"); + goto out; + } ret =3D kvm_get_apic(cpu); if (ret < 0) { error_setg_errno(errp, -ret, "Failed to get APIC"); --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766828988; cv=none; d=zohomail.com; s=zohoarc; b=l4+5rsScuphrUC3IF9akcCAPzx6HOXVa5vi1GOzrws/Vjslr7/g3CifIMBr6jxMYz4ufg4Ay0oxsBuhW0wGoDkUuqiZTCow8jLPAua3nJWkz57+yYgutqO3YU7mOm1Ix4cLrhgoh6EpEfOw3sCNvbNDW1Cu4KtSb2a2vwpG5nps= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766828988; 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=7kUTlFc/KJPLVMSA/F+IBTx3RR6lGmvUqShGXuIbKbE=; b=D5ORIPPwnz/62KlPpPQQJEMfA6dumdKXb7ETZHLxdFcgaiapt6S1fhser+5ERn68krLZhN119lRFtV1UlUIqNr2j/Bi2PMEVcb4+9EBxLyV4qR1IFzYUYsdERpkp1rBT4+kH9kvpnn4OdmiV++Tcm2eBNl8hGuARFE3Wi+H2ojo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766828988846712.6246785630107; Sat, 27 Dec 2025 01:49:48 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQup-0002kf-L6; Sat, 27 Dec 2025 04:48:51 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQug-0002JT-Au for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:43 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuY-0006uH-PQ for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:38 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-649-ItGvtA1iPr6XGiyd2aB90A-1; Sat, 27 Dec 2025 04:48:32 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4779d8fd4ecso39606675e9.1 for ; Sat, 27 Dec 2025 01:48:32 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea1aee5sm51008526f8f.4.2025.12.27.01.48.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:48:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828913; 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=7kUTlFc/KJPLVMSA/F+IBTx3RR6lGmvUqShGXuIbKbE=; b=MJ29P42eqY6y6E94et2DoAtLhh5YamRYCIJmgJypeG1w9POhZZZYGwJeouVCorT+rS7Zwj LMdYtAFZS84oTE2omVVPPwtg5hQ7+YoZiJjiZHH3ov/nIeWEEZdzV0TxFt3HqDlHky1Vcf 0V5XSMkfJLX5gXj5g4LCgnbE2H+RyRU= X-MC-Unique: ItGvtA1iPr6XGiyd2aB90A-1 X-Mimecast-MFC-AGG-ID: ItGvtA1iPr6XGiyd2aB90A_1766828911 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828910; x=1767433710; 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; bh=7kUTlFc/KJPLVMSA/F+IBTx3RR6lGmvUqShGXuIbKbE=; b=rB+k8Y9gZ8ItI4qGHfSNFQhIwhulwhf6fCei/ULRqqC2v7t0LDlkiE+h9otILIczIS yQjFInlZwYIBlAbfwXzvHHmcx7ELxWzEN+StxYTFrBcsNjlK2yBlbc6974f0YEx7sR8W ugRgQVjfFwB4JR3LzfZvfD2k/f34vIC0ly0RomMj87++RlC/M4YemSzM35p6Z+oSHd8T sgiu9u+/AA14oBliHGc0UnCzJ4ON8G6rZss7Oi4CX0BI/NH16dP+C5SgCUTpRhwAhLLi T67hk8QZDVkw4BmSUeVpt5rBCqjHtGfvJ5sb9lMF0uUq+eW39HO86xZbschd1tTAPkBU sIkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828910; x=1767433710; 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; bh=7kUTlFc/KJPLVMSA/F+IBTx3RR6lGmvUqShGXuIbKbE=; b=KE5ZJKYQvTZnLTTNIBt/Fy0upHBwJ8mfYHmjJ7IdSZ9P1Xg2KuBAVFos51SM7dPikG 7b9gAb85uUQXpzaoeeuA3k66ekiwsE3jARSleWh4Ls5ob25L8AyC1Y1m35ljDUhcWFQh uMcmyt9EcIpP35UdeWPJjLAYkMBjpOZ8tu/i9P11Ej4GYhqw6uHDKlJ6yodGrcmJG4/P FAFWPRczIG74XC0WKm5Lg+eHbAW8tHQpg+RVYYBivXuI3q/CNdm5zNfGugkUr9HVrmYa LAH4gT8cUq1E/DDwBCvdjOrx56Cg1mzemQh1PLa/RLOJdxohrblXfwpifNeXnSxiLy3k Jyow== X-Gm-Message-State: AOJu0Yxf+YMcWeWSvzbT+5W6Y5emF4rxSQy/xdal5XG9iJd5QwZ8Ioyk A5jDA3lIt7U7LdOEUwU8zGxaITbje18oF/oQIGcMqFqByyjacJiEYlJYyyBV4jVAg4DIX7346rl MYsXsKHUZSHKfXqVv+nlBZVZUhtVjnqbwgodzYYnvdo4b8+jAghs3H6nTWycq/I3hTbEqGHonpS bo5wpJ4dGZMzdA1z2UY8EWcm2nFmHQeRB12QKYybwk X-Gm-Gg: AY/fxX449KFjc48ECj3HEpuNA8k/s2qgmD/UQGwj/CFNjHPLB59DqxmCDOwR18nZyZ8 wq7HJ+rJ7Wmg3G0ZMY8Pp19b+dD483vjkRTFA9m/mx0e3NlcDQVTIFOHwCmvrMPm9Gg1/kxMvFS UwfoyO1P+jeXEMq5mZSIv19SrT9tcizAkjhtGEFBZcyavcINqr9pl4cvj2oUeSU1Wpwwk7DRnlV niNcALWbBPaxkG16UWvN6k9lwJJvTXO4zh/6IBfTWyDlm78nHi6TZ8ha1xzhfDHe0slLHOZaUPy QNbGIPhucF0yUxmNlV0TT4Cz0OZskzBIl0h050F/eBh5fUFsLHbVmky98v3JIz60M7A9J8dye6k TB2rckYOBAvQByg4sb0K8dj3taRccH61T3ljMMZdW4Iu0IT7NRQAFsvCDjHTlkXzyxLI4Ug29I1 GYTKC851r6zueCArk= X-Received: by 2002:a05:600c:6749:b0:471:665:e688 with SMTP id 5b1f17b1804b1-47d18be89d5mr355281155e9.17.1766828910369; Sat, 27 Dec 2025 01:48:30 -0800 (PST) X-Google-Smtp-Source: AGHT+IGbP2AxT+3667TzgfRbqvGgsFSYVTqZOkF4PeOGmaf9Tht4pzv7keNxhKWdJCMQ0OHwpwivZg== X-Received: by 2002:a05:600c:6749:b0:471:665:e688 with SMTP id 5b1f17b1804b1-47d18be89d5mr355280895e9.17.1766828909941; Sat, 27 Dec 2025 01:48:29 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , "Xin Li (Intel)" Subject: [PULL 088/153] i386/cpu: Migrate MSR_IA32_PL0_SSP for FRED and CET-SHSTK Date: Sat, 27 Dec 2025 10:46:53 +0100 Message-ID: <20251227094759.35658-14-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766828990734158500 Content-Type: text/plain; charset="utf-8" From: "Xin Li (Intel)" Both FRED and CET-SHSTK need MSR_IA32_PL0_SSP, so add the vmstate for this MSR. When CET-SHSTK is not supported, MSR_IA32_PL0_SSP keeps accessible, but its value doesn't take effect. Therefore, treat this vmstate as a subsection rather than a fix for the previous FRED vmstate. Tested-by: Farrah Chen Signed-off-by: Xin Li (Intel) Co-developed-by: Zhao Liu Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211060801.3600039-17-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- target/i386/machine.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/target/i386/machine.c b/target/i386/machine.c index 45b7cea80aa..bf13f7f0f66 100644 --- a/target/i386/machine.c +++ b/target/i386/machine.c @@ -1668,6 +1668,28 @@ static const VMStateDescription vmstate_triple_fault= =3D { } }; =20 +static bool pl0_ssp_needed(void *opaque) +{ + X86CPU *cpu =3D opaque; + + /* + * CPUID_7_1_EAX_FRED and CPUID_7_0_ECX_CET_SHSTK are checked because + * if all of these bits are zero and the MSR will not be settable. + */ + return !!(cpu->env.pl0_ssp); +} + +static const VMStateDescription vmstate_pl0_ssp =3D { + .name =3D "cpu/msr_pl0_ssp", + .version_id =3D 1, + .minimum_version_id =3D 1, + .needed =3D pl0_ssp_needed, + .fields =3D (const VMStateField[]) { + VMSTATE_UINT64(env.pl0_ssp, X86CPU), + VMSTATE_END_OF_LIST() + } +}; + const VMStateDescription vmstate_x86_cpu =3D { .name =3D "cpu", .version_id =3D 12, @@ -1817,6 +1839,7 @@ const VMStateDescription vmstate_x86_cpu =3D { #endif &vmstate_arch_lbr, &vmstate_triple_fault, + &vmstate_pl0_ssp, NULL } }; --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829154; cv=none; d=zohomail.com; s=zohoarc; b=Le1eGAtoYHsvt3rfRlSiq+LLqHm4TUc91gP+/B9+jMBq98S8Xhhz2yMZD1fm3M3OT2XfVHCtsp+wiw3BQriMuFrR2bk0IHDd7KNFrg0xT17WB8HpL0rxmtAlJPDfK1Sr5Gxvo6/UF2NeRVlau6NlOmy4fTnBI9tijIh/AEtTD9o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829154; 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=B1NClWp8k93LnwznfnQ9F9fegAQxKZaohNu9b81EugQ=; b=NyFTqRSeITLeygd1MGbL7qHMciiHJI8jzhxxtqg8JcsH2iJ9Wdm4YVZNAjdqWSNTmuXRC/VWkt6wNkktuPFzch0R/amTlNAOR/SLyWzKDgfD2kharLm3kKINx2PKkQrVA6phfKUEyWjqM0pnM/LuF1dmYCvKUlXRdqvT8Zj0OEw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829154572796.8260204502401; Sat, 27 Dec 2025 01:52:34 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQus-000361-A9; Sat, 27 Dec 2025 04:48:54 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQui-0002O7-7P for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:45 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQud-0006uZ-C9 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:43 -0500 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-177-WvQ_x1cHOEac6ync84v1YQ-1; Sat, 27 Dec 2025 04:48:35 -0500 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-43284edbbc8so552062f8f.0 for ; Sat, 27 Dec 2025 01:48:34 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea227casm50084695f8f.15.2025.12.27.01.48.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:48:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828916; 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=B1NClWp8k93LnwznfnQ9F9fegAQxKZaohNu9b81EugQ=; b=M62RSQuoIQBkxMckx0nbBdQjon5MJRz0cyT1LxXA31aj87gzFW97j+OcUSbpN0aqr9Nd5m pXw2HDt68eTWR/ftcTRZaw+E1BEYhQMLPmeOsg902zZtQ0GSfrDsd0uHbe5+DHml74Ss+/ +8i7vTHp346Wxe+4/8scDhTrs7f+cMg= X-MC-Unique: WvQ_x1cHOEac6ync84v1YQ-1 X-Mimecast-MFC-AGG-ID: WvQ_x1cHOEac6ync84v1YQ_1766828914 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828913; x=1767433713; 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; bh=B1NClWp8k93LnwznfnQ9F9fegAQxKZaohNu9b81EugQ=; b=fqIJgrse+35In4vMrfBPzECKXsAN6mshjvcNbOJmZ0Grr8Bh2kQLHd2WT+GXbmJXi5 lbuZL8v3zLajZBC5XvDGmNqwiCU+z9RV/Bjq2lUqAGoPfs6sZfiv1e+ERLedp74rEPAg g5lV7WFO6bGWGczNQ3xrY28M1x35R6CDjKIvqfAbLWUZtsI07EqJfctHMTZIA9CrpvW0 SPeC3oDVClyhbM0Z3jTRvAjF/dyk5IoJjYltNCtqw6bCqU1KcdNdxRu7ntqJmVWgN6AL UVkU8jZusDCFoJlez31Xy4MGajbw8ezNMmyRwCbLuvzMN/VWojf5TdJA65C9zwPlUUGA j8eQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828913; x=1767433713; 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; bh=B1NClWp8k93LnwznfnQ9F9fegAQxKZaohNu9b81EugQ=; b=UwSQj8TG0hUb6nH2Kc/mES/u4w6m5OYB5ZBQAD9ahkrGc91fntI3YlxFWrMdkW5GpZ fqNaog/a0k5uC5Zxwmcrvt8iRY1RpanREP670wOqxrFtxIO374YzrEl6gc1hotJGy1j0 joHmX8ZU8+DrJeQS4un/OkaNWbKOP38yb5IPdwatdmoqyUXUoTd0tZJ82i//ZVUoMoWe vJv9mvbkLJu8xc0pECA2V80gw+5zBwetGsUv6PEmNNHTozskillecpDGWfgSwLUNTbYp tj4L2jvKcAtovkb9cYCa88hwihkSRHRghVjYUmnN8spp97pF9A+S8Ho18RDkDzjqBQ7N 7jgw== X-Gm-Message-State: AOJu0YzmdFPImNsW4R3A5hHwo1tHPlX1Ip0I71Jk2ITPxbMUbwOMqpLc 3GvPBOPyqRkdoh5p5qE1AfjDDlhrH6YesGn/Axz9FkvSKqEeiCiF3m9HzaCDkAcUyXZA8m2Frvb s74aicm4tbNh+Hej1muAn8C3KhXKYQCCiE1pTfYk6kWaS6rS7K49EByZkr6MfGNkK3Oev9wp6YH vuJBQDd28Uo7YkNZOSJ6Wro3QtYq15HJV0r0Czm/+N X-Gm-Gg: AY/fxX70YCj25Rl8KJ5b3VvD94PsExTRjhgzgFczGvVulBpVl9jFTfkHC7N4I9yCqW2 RrDsFE4q3dtY4FU77iHT3r1ghRnUEHNuI/+Byhg/jjAHYOiJTO39aG7hPmG2Joh6cTA54z13fBf 1lNQmAMSRKW4j4ImG+aU1HtHuYEuoLwRgXOr+8HUxWGqidTz+OXsFHX1zhWkaSPpTNaU9XyGutA 1XGDs86vzGkQn0F6OluzU5+N7+iFnJYgTGCITc0bO2iAef0vbWojVqgMDcFeqWbmwuy7olzaACI v6ooG7y5RqRuwGFlqI0gl9AZKvXmnj8dwOagbHl2ckaGCijoRd136bJmVS9iqPvJQ9HsIfYRjWS iwv03kRSeaHCeICUinU1RxsskU2SNoh7gz/xJgnomBUTKSoN4/RGA68mneRwzJyTiNtmhP/DMOh v73wOLpC/XjR41K+I= X-Received: by 2002:adf:b605:0:b0:432:7d2a:2be4 with SMTP id ffacd0b85a97d-4327d2a2d3dmr7559583f8f.60.1766828912963; Sat, 27 Dec 2025 01:48:32 -0800 (PST) X-Google-Smtp-Source: AGHT+IFiV9bpbN4q8ShhY/lYm9lf1k9/TfLV68VC/9arPx+AxLNQKsN/4pdCOsCKwDeCUGUdNBb5hA== X-Received: by 2002:adf:b605:0:b0:432:7d2a:2be4 with SMTP id ffacd0b85a97d-4327d2a2d3dmr7559559f8f.60.1766828912397; Sat, 27 Dec 2025 01:48:32 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Yang Weijiang , Chao Gao Subject: [PULL 089/153] i386/machine: Add vmstate for cet-shstk and cet-ibt Date: Sat, 27 Dec 2025 10:46:54 +0100 Message-ID: <20251227094759.35658-15-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829155227158500 Content-Type: text/plain; charset="utf-8" From: Yang Weijiang Add vmstates for cet-shstk and cet-ibt Tested-by: Farrah Chen Signed-off-by: Yang Weijiang Co-developed-by: Chao Gao Signed-off-by: Chao Gao Co-developed-by: Zhao Liu Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211060801.3600039-18-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- target/i386/machine.c | 52 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/target/i386/machine.c b/target/i386/machine.c index bf13f7f0f66..57a968c30db 100644 --- a/target/i386/machine.c +++ b/target/i386/machine.c @@ -1690,6 +1690,57 @@ static const VMStateDescription vmstate_pl0_ssp =3D { } }; =20 +static bool shstk_needed(void *opaque) +{ + X86CPU *cpu =3D opaque; + CPUX86State *env =3D &cpu->env; + + return !!(env->features[FEAT_7_0_ECX] & CPUID_7_0_ECX_CET_SHSTK); +} + +static const VMStateDescription vmstate_shstk =3D { + .name =3D "cpu/cet_shstk", + .version_id =3D 1, + .minimum_version_id =3D 1, + .needed =3D shstk_needed, + .fields =3D (VMStateField[]) { + /* pl0_ssp has been covered by vmstate_pl0_ssp. */ + VMSTATE_UINT64(env.pl1_ssp, X86CPU), + VMSTATE_UINT64(env.pl2_ssp, X86CPU), + VMSTATE_UINT64(env.pl3_ssp, X86CPU), +#ifdef TARGET_X86_64 + VMSTATE_UINT64(env.int_ssp_table, X86CPU), +#endif + VMSTATE_UINT64(env.guest_ssp, X86CPU), + VMSTATE_END_OF_LIST() + } +}; + +static bool cet_needed(void *opaque) +{ + X86CPU *cpu =3D opaque; + CPUX86State *env =3D &cpu->env; + + return !!((env->features[FEAT_7_0_ECX] & CPUID_7_0_ECX_CET_SHSTK) || + (env->features[FEAT_7_0_EDX] & CPUID_7_0_EDX_CET_IBT)); +} + +static const VMStateDescription vmstate_cet =3D { + .name =3D "cpu/cet", + .version_id =3D 1, + .minimum_version_id =3D 1, + .needed =3D cet_needed, + .fields =3D (VMStateField[]) { + VMSTATE_UINT64(env.u_cet, X86CPU), + VMSTATE_UINT64(env.s_cet, X86CPU), + VMSTATE_END_OF_LIST() + }, + .subsections =3D (const VMStateDescription * const []) { + &vmstate_shstk, + NULL, + }, +}; + const VMStateDescription vmstate_x86_cpu =3D { .name =3D "cpu", .version_id =3D 12, @@ -1840,6 +1891,7 @@ const VMStateDescription vmstate_x86_cpu =3D { &vmstate_arch_lbr, &vmstate_triple_fault, &vmstate_pl0_ssp, + &vmstate_cet, NULL } }; --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829263; cv=none; d=zohomail.com; s=zohoarc; b=jCyXWno0Lll8HC2PNa4RbPzl62emPUfkE1woAED3mY2T8yDUKl9RY7zdHNXQe0IeE/INyDAH0LhYUmnhob2xv2LaL3o0bEAzyAVR4ecCP3IaSrkPmvqek2Ka/qGivYEBAJLiZvsNvfLhke24XLvrBADG7DPLxYKIadIncrAL1/M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829263; 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=sxTxSluSeMR2sv+YqnYcIpwAfUPDvmouTbMC1Ijhc98=; b=OafBUbxf8/MVjALe2rk8SsXuKOCZaKiU42RcP4488Dj8Ctn501aC1Jp+WyK6nJjz0QFPVY14NWHOHwoy8/wMjD0+4ZPF4nl5RiEdX6wAAkGwrmdeYhoPH0KeV+kXdG/3d937t2p9C7pnWStJpQudZPhH/s7cxo98EaxCNAYP51w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829263712117.74961966933017; Sat, 27 Dec 2025 01:54:23 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQuo-0002ZQ-9f; Sat, 27 Dec 2025 04:48:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuk-0002PX-36 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:47 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQug-0006uq-4U for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:44 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-580-Dd3VGsH0N52T1lJ7B35K2A-1; Sat, 27 Dec 2025 04:48:37 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-4779ecc3cc8so58139585e9.3 for ; Sat, 27 Dec 2025 01:48:37 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea2278dsm50745961f8f.18.2025.12.27.01.48.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:48:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828919; 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=sxTxSluSeMR2sv+YqnYcIpwAfUPDvmouTbMC1Ijhc98=; b=AJ0IL+oNQAcddvBP/Xj68G2vahcHuCCtokoVWSM/GYNwbpL44Se+MeDIQPzQl0AcaasC7C 79ddPDZsDJ5LOvqG1/hG1mONDwEQKgKkxzc57zL6NCIAtbQcmKusqTumf1ak9flv3aTdHS SRrj++18713sMnNP8PySZo50L7CSKX4= X-MC-Unique: Dd3VGsH0N52T1lJ7B35K2A-1 X-Mimecast-MFC-AGG-ID: Dd3VGsH0N52T1lJ7B35K2A_1766828916 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828916; x=1767433716; 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; bh=sxTxSluSeMR2sv+YqnYcIpwAfUPDvmouTbMC1Ijhc98=; b=A7sivJVsHJFcXCA1o3AUnnpO62VwGEw5XpmFfxpMb+hM90PdY1FttSOUE2WlfCSMeH ThGzQRUOIyi1rPOqNXboAdyT99tSs3fWfMdZXPom2hD3YSAQNc2e6XSrytTC8gTZ/hHy /+gayaQre3R07fq79wNjMqN4P5F0o5IEBgGo74CpVA+PA2qunn8uj0wneLjRqjRMgcP7 RZ1ySjAoUYCrRe7ajhr0kI841xuGkL5H3IRBDMZwXhy+R13MHKf9gx5ja870bSH/84RC 0i2F+ovUXQlEZ7UWT7NtJk5qZVVZmhxJ5TrUNHx/mdEJXY2idLdypJPE4vgSmI0dLZBR RhIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828916; x=1767433716; 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; bh=sxTxSluSeMR2sv+YqnYcIpwAfUPDvmouTbMC1Ijhc98=; b=QSYjLCZwbThK2Fibl7nlazXCJAwM3TxA9aZvo09jgGLH0Z6nyK+YS64n9FNjLOf5sp 5MRZ8sMVs8OPGb1AF72qAIiMkmnxB8hIG5DMkOM4PSVzJBigTmWqWvPZcrdF40nFtOKC FXPdwST/7/O/hOiSHwZEuhRYshSE8/hUfnnjFpQ7F9+5LGGjD5jJzeletRR0VQx3yWnp PDT4UGVzvy9dDuxvGNOnquND/A6jw7pwIXxsXRfJzM9m3eYieudrRdkJOKSBXBoUp2Qz xm55+qSb3RkEElUl7TsTZGgE47RKw7Uu1qg9RTiAk9n59rmw2LjuJIsSiQxCJeVt37xl bZLQ== X-Gm-Message-State: AOJu0YzNTur0KjUyUEwdP+BWfKvvM/3fRMg9WZ13oKR76J1iOzzXMuFD N+WzyNRRX2S7sfmArie2EuV5wY99rrooICxLv9RzA4GlVficzKs0F6BLbh2F+hPpinWpA0BoxEB 6Lp/Ch60OrS1dO3H560Pj7gooIOqN41ENkHABrSqh4ahNLOzECjlkg7P1ggL7vhv/mvowivLyH/ 0zXKGIyhKg4oGf0S8oeaegQEVVLz65qMJFV+nwRpZd X-Gm-Gg: AY/fxX5gax8CWBlBZYTYzmtn/Bxrleq8qs+XwttZp21ROtdwVHKKOKsDR52w74/dQTE g4EgIxFYRx1/HpfTDF5XxdbIHeEgQzAcQS9ulde0+k5tKT2ZeVK7qiAHgHXWLHuMUkJzFRgIJ2I uyaKH8SMGGJAXbH04SwG/oqPx7L9+Rbh344erlIx5ly4CsbXIg1ujO15YEoJg/qVyGFBnCDkPvA tOwjQkb0qTSiHMhooWsG1IP6FvopC0fRO8UStN5rKKVB+RR60xXENXoHTvjSNpF4XBQ1zpYNOmi e6v4IMR897KqIYJs2lVaLX12vuHZZiURaMbJiLZGdAsmh8mpNRwAwBb3uOSsITLunZ4JW51sB+N owim2Nm9AjrWUTkvdsl4/imhl7zv67KNPUcJVJCoGLQcvs4fqpU+gollgz08ptC+c/KXsnYPMj8 UUUPym1RZT6towGPc= X-Received: by 2002:a05:600c:c091:b0:477:7b9a:bb07 with SMTP id 5b1f17b1804b1-47d195a98d5mr228100385e9.35.1766828916178; Sat, 27 Dec 2025 01:48:36 -0800 (PST) X-Google-Smtp-Source: AGHT+IH1pFD6d6W+lX0Ky/BGS5ax30VL9itizGK8C73Flx07LBaDxGXpY8So32uWdlN0Cp0DjINA1A== X-Received: by 2002:a05:600c:c091:b0:477:7b9a:bb07 with SMTP id 5b1f17b1804b1-47d195a98d5mr228100165e9.35.1766828915785; Sat, 27 Dec 2025 01:48:35 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 090/153] i386/cpu: Mark cet-u & cet-s xstates as migratable Date: Sat, 27 Dec 2025 10:46:55 +0100 Message-ID: <20251227094759.35658-16-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829265604158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Cet-u and cet-s are supervisor xstates. Their states are saved/loaded by saving/loading related CET MSRs. And there're the "vmstate_cet" and "vmstate_pl0_ssp" to migrate these MSRs. Thus, it's safe to mark them as migratable. Tested-by: Farrah Chen Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211060801.3600039-19-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- target/i386/cpu.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index b1bbb099f33..6774f662342 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -1484,7 +1484,8 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] =3D { .ecx =3D 1, .reg =3D R_ECX, }, - .migratable_flags =3D XSTATE_ARCH_LBR_MASK, + .migratable_flags =3D XSTATE_CET_U_MASK | XSTATE_CET_S_MASK | + XSTATE_ARCH_LBR_MASK, }, [FEAT_XSAVE_XSS_HI] =3D { .type =3D CPUID_FEATURE_WORD, --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829235; cv=none; d=zohomail.com; s=zohoarc; b=cf6tfK0YcDtJvq7kI5HM60ZWqOGUIHdMa9C6opv9+BB6yxWxGe9TymHxH0GlLSufEVfUynSaJGEk2pm6pBllteb8j0iH4M/LHnrSzrnXo3yNULEyMkl3iicCvvn7WaSE3TTTT8OffyIyLPmk9DeOV+Ai/+8BFw5K6N2K1BTBT5Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829235; 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=zu8WUnPfYpMz8lDj9gJ6ePuGh493tji4kOMOKwvE/+4=; b=flr7SYkgQqR1BricJLoD/VD2mpVYusLQIxPiAsfeRBlkplgyDmK0dkPRIdpeQ6jx0t4E9tO/WkNHC47x4BtVsv4UqMKgC31XbChAfVkyDYgB8XjZo9Ym7eFfjlsioHVwvwsjk9gkatn3/gxjWMlEemFzjEG9IQG5/YAN8/2DY2A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829234992370.5738914433589; Sat, 27 Dec 2025 01:53:54 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQut-0003BH-8S; Sat, 27 Dec 2025 04:48:55 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuk-0002PY-5B for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:47 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQug-0006v9-Nd for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:45 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-586-i2YutWIzNt-tDJnuxGQAZg-1; Sat, 27 Dec 2025 04:48:40 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-430fcf10287so5463550f8f.0 for ; Sat, 27 Dec 2025 01:48:40 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea82fa1sm48197543f8f.23.2025.12.27.01.48.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:48:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828922; 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=zu8WUnPfYpMz8lDj9gJ6ePuGh493tji4kOMOKwvE/+4=; b=MiWm8HCo4nndXZbhgDIKy0j7za6/jCpJTC4b2qkBq1qwzx6JwcioQAPNfj/baKVXT/+RMS tWJzJbLhWNj2HN2Ixrrh2u5co87VJOqNTM77kXTgM2/dy2oSJ8tZW1Pn9Sg9Okk/m0q18K 5omB/D4tIj1S0Ga/HMQkWIfPQL6zdKs= X-MC-Unique: i2YutWIzNt-tDJnuxGQAZg-1 X-Mimecast-MFC-AGG-ID: i2YutWIzNt-tDJnuxGQAZg_1766828919 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828919; x=1767433719; 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; bh=zu8WUnPfYpMz8lDj9gJ6ePuGh493tji4kOMOKwvE/+4=; b=mHJ/LyjbmZbFBSxLf0qgiWGwcVrjDXjm8M3VunkBlRXWw7xbFhGR7gtmB74f4wOxdm stzMYatKNxtrzX0ChMDNMC36BlXgY1Q6kaI8HATN/A7Xg59xB+tQyboyXqDTlJAjphu9 qm7sYnDOm1Zc7buDw0RSb7e0vf2mT4kdkcLY35r0YrZWcbcKfrC/3+Yw19sCOw/1nJvZ iOatUdgkK+UongFNYf1xEH9HbqqE7xbOYguTJINOwEBf1gO97B4SmhqGI3i7g0YGC8VG iCEK0NjkO1X233Ey38qK3nwWgqxeln3IhkpOrgeunvTiDinvtc9hZxfqiMYdIoOxhXeq aAlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828919; x=1767433719; 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; bh=zu8WUnPfYpMz8lDj9gJ6ePuGh493tji4kOMOKwvE/+4=; b=JpkiGRLeMb4sxZZkD/cIVwJokXr/fgvEYOVHgnHIvKK8q23az0jMo98O8Rp8B8C+XP 278L65L8eU7i2XySb4I0C9ZwS1JMogiw9wDRJWBs97G79XqW9JYQRmy90+WY65SamlZB V1wZtQHw4/ZxMmHT/k9eVkX2l0jPVYKuA3hZQlwYk85HR71+q8jQcEhgr9hLkvIcgXO/ e7RO+mh9Ox2OJ9BMS50S8QTchQa5KGqLKp31nhDdZKIxSKJhvPALJ2GaQEb9B0XWgLOY 6wceZWMEnBV/ypAzlX7az45UFrN7jlAljyNzBFDFqlr5ukp5g+hkx+GNSeKtgFrPR9hj GVOw== X-Gm-Message-State: AOJu0YwRKpnTci0CGNhqQi8J2cAIDMzXu1G0espYQ6E0/pjMdAkh11QR +MiQc7vIJfu08xMlXBFTy9Fj0lQdskvKPOSTZ8h67a+iWtqLZimzNBRf7DqDdjkUSy7xFzo/p2p MJ7a1XRPPd4lPVu+pakWQizkJehGCvqGonFj2E8Q96Xnr1LcMtQWtzfTAO0lyW55ReYQdrqanKr UWTNYebN8LvflZZvWaWwNS1bspNYUw8QJ0V7oXm+Cd X-Gm-Gg: AY/fxX5e2RfCHAgiOytxkj3ZLngfzWuU7xigqigo0xsJIqPzjpYFaYhy9Ot03k35Cn4 rFAOe43XZEdlV8ZTHavrEU9f3w+pIEmot/wSxLZWjY69pvr3Ahz1Vb73buzUzzrM4+HpgX1BQQe knwBuG8mMAPX5OYhVoivFqfjTODJLIwEWJTkH7IE1uZ/dJBatmjVHMHmb1ajEpfEID9y1hlFLY9 xPAT8JM4sy3/HAbl4vajldPi3B9ooogKZ8+/dUMIHoNqFqkp8JpC1mTiknNhvVW6qzP3sTT2FKb P43Woa8liUq0MsibRbW1hPW5ZBbgziDeEu4e3t9PPgHS5tz85l6M/Pc8zwPdA3JLwB1g5gPSGbu GDcJbZiWMcr5klQBVRbprjBw0KUj1YpgB2m9pjEAksgY5ACDC4+f8Jv2Rj1jIl677Z3BpSVitzo T5tD9SSB7nzrH3YPc= X-Received: by 2002:a05:6000:2303:b0:42b:396e:2817 with SMTP id ffacd0b85a97d-4324e4fa8f9mr28000027f8f.40.1766828918780; Sat, 27 Dec 2025 01:48:38 -0800 (PST) X-Google-Smtp-Source: AGHT+IE/OdXTZa2q1Vx06g3f7fdvdNtLApH5gbC6mTAuD1QhnEP6qvx4xRvCRaSCcD2XI1Gh4L5YvQ== X-Received: by 2002:a05:6000:2303:b0:42b:396e:2817 with SMTP id ffacd0b85a97d-4324e4fa8f9mr28000003f8f.40.1766828918220; Sat, 27 Dec 2025 01:48:38 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Yang Weijiang , Chao Gao Subject: [PULL 091/153] i386/cpu: Advertise CET related flags in feature words Date: Sat, 27 Dec 2025 10:46:56 +0100 Message-ID: <20251227094759.35658-17-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829235577158500 Content-Type: text/plain; charset="utf-8" From: Yang Weijiang Add SHSTK and IBT flags in feature words with entry/exit control flags. CET SHSTK and IBT feature are enumerated via CPUID(EAX=3D7,ECX=3D0) ECX[bit 7] and EDX[bit 20]. CET states load/restore at vmentry/ vmexit are controlled by VMX_ENTRY_CTLS[bit 20] and VMX_EXIT_CTLS[bit 28]. Enable these flags so that KVM can enumerate the features properly. Tested-by: Farrah Chen Reviewed-by: Xiaoyao Li Signed-off-by: Yang Weijiang Co-developed-by: Chao Gao Signed-off-by: Chao Gao Co-developed-by: Zhao Liu Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211060801.3600039-20-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- target/i386/cpu.h | 2 ++ target/i386/cpu.c | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 458775daaa3..33350602edd 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -1370,6 +1370,7 @@ uint64_t x86_cpu_get_supported_feature_word(X86CPU *c= pu, FeatureWord w); #define VMX_VM_EXIT_CLEAR_BNDCFGS 0x00800000 #define VMX_VM_EXIT_PT_CONCEAL_PIP 0x01000000 #define VMX_VM_EXIT_CLEAR_IA32_RTIT_CTL 0x02000000 +#define VMX_VM_EXIT_SAVE_CET 0x10000000 #define VMX_VM_EXIT_LOAD_IA32_PKRS 0x20000000 #define VMX_VM_EXIT_ACTIVATE_SECONDARY_CONTROLS 0x80000000 =20 @@ -1383,6 +1384,7 @@ uint64_t x86_cpu_get_supported_feature_word(X86CPU *c= pu, FeatureWord w); #define VMX_VM_ENTRY_LOAD_BNDCFGS 0x00010000 #define VMX_VM_ENTRY_PT_CONCEAL_PIP 0x00020000 #define VMX_VM_ENTRY_LOAD_IA32_RTIT_CTL 0x00040000 +#define VMX_VM_ENTRY_LOAD_CET 0x00100000 #define VMX_VM_ENTRY_LOAD_IA32_PKRS 0x00400000 =20 /* Supported Hyper-V Enlightenments */ diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 6774f662342..4e0c5cf9997 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -1221,7 +1221,7 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] =3D { .type =3D CPUID_FEATURE_WORD, .feat_names =3D { NULL, "avx512vbmi", "umip", "pku", - NULL /* ospke */, "waitpkg", "avx512vbmi2", NULL, + NULL /* ospke */, "waitpkg", "avx512vbmi2", "cet-ss", "gfni", "vaes", "vpclmulqdq", "avx512vnni", "avx512bitalg", NULL, "avx512-vpopcntdq", NULL, "la57", NULL, NULL, NULL, @@ -1244,7 +1244,7 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] =3D { "avx512-vp2intersect", NULL, "md-clear", NULL, NULL, NULL, "serialize", NULL, "tsx-ldtrk", NULL, NULL /* pconfig */, "arch-lbr", - NULL, NULL, "amx-bf16", "avx512-fp16", + "cet-ibt", NULL, "amx-bf16", "avx512-fp16", "amx-tile", "amx-int8", "spec-ctrl", "stibp", "flush-l1d", "arch-capabilities", "core-capability", "ssbd", }, @@ -1666,7 +1666,7 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] =3D { "vmx-exit-save-efer", "vmx-exit-load-efer", "vmx-exit-save-preemption-timer", "vmx-exit-clear-bndcfgs", NULL, "vmx-exit-clear-rtit-ctl", NULL, NULL, - NULL, "vmx-exit-load-pkrs", NULL, "vmx-exit-secondary-ctls", + "vmx-exit-save-cet", "vmx-exit-load-pkrs", NULL, "vmx-exit-sec= ondary-ctls", }, .msr =3D { .index =3D MSR_IA32_VMX_TRUE_EXIT_CTLS, @@ -1681,7 +1681,7 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] =3D { NULL, "vmx-entry-ia32e-mode", NULL, NULL, NULL, "vmx-entry-load-perf-global-ctrl", "vmx-entry-load-pat",= "vmx-entry-load-efer", "vmx-entry-load-bndcfgs", NULL, "vmx-entry-load-rtit-ctl", NUL= L, - NULL, NULL, "vmx-entry-load-pkrs", "vmx-entry-load-fred", + "vmx-entry-load-cet", NULL, "vmx-entry-load-pkrs", "vmx-entry-= load-fred", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, }, --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829244; cv=none; d=zohomail.com; s=zohoarc; b=a3Mm9PV8DSHl3Lkj1eFg1SniUBlGDT5FfOd3Q37v5c/C/+wM6YRtwimnwveXSdZ+nuYX+oaQcvG7MvvrWsAwXYKEyRgz9yeVHEE9AUiWPzgo4FwXLt6MrEdfxH0o0Q28NAZwC37h+wnT5Poq5/OXgnxtpaXVV7RF7mG1JeYScg4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829244; 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=HvCNkrkwm5oju3Qltr+xjIhdiJ/CblJ6mMW0QdxQLnc=; b=B1WXp9axHNT+w7HwwhK1a+WU0FmoDJpCnHv36DkZJ0D+Kj2x9fyDhjMlKex+wPFmUHmDgKQtsDlmDtcyNuOeXPWSF13eKncVLhkW+gZUP091wkHMG0xRtrCRaTU0IhLFVssFP06WnoTKgpgMdm1K3HdojlZ9iUJxgpqq9xZLUo4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17668292442651015.6154441971547; Sat, 27 Dec 2025 01:54:04 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQuo-0002dB-Th; Sat, 27 Dec 2025 04:48:51 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQum-0002Tv-0G for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:48 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuj-0006vX-Rp for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:47 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-600-8LQ_bHqDP1uUBHqQ5CGS2A-1; Sat, 27 Dec 2025 04:48:42 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-47a97b785bdso55687765e9.3 for ; Sat, 27 Dec 2025 01:48:42 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea830f3sm48756233f8f.22.2025.12.27.01.48.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:48:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828924; 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=HvCNkrkwm5oju3Qltr+xjIhdiJ/CblJ6mMW0QdxQLnc=; b=Lm2YdwtwGSAVkX9GLaiyVzNor8zOmbHo//1IX2useh8bMbuCabdL209Syqpp4s4C3NGlJh Fg5a8x1Kr++cfCjnfL3CGjy6fPxOnPT263cVf7wAh3Tn/nAUvCuv3cpZLnIGq1JfCTiPn+ fmXYiXPjYUyEweuonRbyXMxQaSfB8w4= X-MC-Unique: 8LQ_bHqDP1uUBHqQ5CGS2A-1 X-Mimecast-MFC-AGG-ID: 8LQ_bHqDP1uUBHqQ5CGS2A_1766828921 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828920; x=1767433720; 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; bh=HvCNkrkwm5oju3Qltr+xjIhdiJ/CblJ6mMW0QdxQLnc=; b=lG6Cr/GcA1P17KM0mJk6W2EpDG0vWI6VfdXNn3zogzCeGxZmt5Qy1JX8dfItZq1Wvy hLyKG5GXPi4oHG4fl5WipUrWQrGtTeqKi7HyDM6ZTvBMFquW9pipKMhf8jjDMKzhpvs2 ih9rXKO6Y7+DqA9/HQwzRfFVJDkhcbU6DpQR9IucuAl0uiBXLPm0Q0Koa4EjWu7rpgv0 oaErwPW5X0+sXYwvspBdJWfs2CEby5rz1cqNKuiOfr3dv7FL6f8aM+AHQjE6jeeSksIX Qnw9Xg7MtJ8T7aNcPtQ+jTh1OCU0sseEJkP0uqOiGMIgWhc2jadbRvlnhBcOQ1ampgu3 /xgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828920; x=1767433720; 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; bh=HvCNkrkwm5oju3Qltr+xjIhdiJ/CblJ6mMW0QdxQLnc=; b=vAedPtntfRmXs1POp44lQ2EE72Q7i4q0cz/MByuKoA2piG0k3lg5BFw7A9eTfJ9Nn6 9KprMWlDju6vx+TCfLUEcpJmLmis+b99Pdp7iVDaRuejiyOusRp178xjvYDtxgcNcREB 9fAfpdJB23mHYbFB3Pm9yuNiNTibE/1532xmee4HWlAYZ6ab/RO43cvLtBUa8XWXQPt8 FwLkovicWmZBdBlMFxyeLsXOD+JFbq6qwVxYvmuE/NAvRv01G9R24rnHtLUifGyr7DtR 19I2XD1qGuvzl1QMjNLCVl3cxCw7N440HN6ILWQktT0/Q4h3JiSBQ9jEoPrcIiJ59LFD SSDw== X-Gm-Message-State: AOJu0YzXjAc3zDG5ekz6GNevUsX4bfuHTGjPZzMvajMWKF/4is6z6WSk BAokcx/UAKjagrGA52VF6WsmcCxL9ISkQ3x1efmMKZ7WZ390Qa9eZCg1rUidp0Uha0OrxipX1z7 YFb5maSBP4b5nsnADMA8Umk4pYT/D28graYUAh/VCDH7yYr/jNtl4ylGVuu3wTO8rM3GydqpchU sSamhVa27UbrIaIAv1b1A/qL7uDSkisUNgLAbk0O80 X-Gm-Gg: AY/fxX57AIgj5D0x4MGZ3hsj4y7mtRXM7b+QO8lvCOdQ/MBvzQkJCHRJ8RhVzbcTHhr 2UC0DdB8Q/J5JiJ7NlXgTVkCAfmIi2eSyOUxH92XVJ/8WgQW+Ti7UsF5vPFS7m0tOfLSGSCX51o DWjuZKUROcfoAyeQ372xd7C5ZP8CavRKrf0xDpdLH8MDIIE1vtC+6um2WeOoOKYMByJcwVe0Z6H RA7qSbXKnuYNgZZTyPsa32wp3rgdIGlaMFlF2RuBzClo6ixpvZBRvjiajhuCQB5wsmXUbHp7fhE ApgYXYm33IafkMqvCtDY8emnzTPUszKa2bQn0LOcixZGonRsxaTyM6qut2iNeQE7zGnt20dREZb g72YjCyZUhWpelrkRdfQ3RwcOaVMQLVM4Mcs3q17OJhVYQp5LHrOKhi/tfe3HMeVLaIXKUCDFtb lOyqSRbLFlujYmCyU= X-Received: by 2002:a05:600c:1d0b:b0:477:b0b9:312a with SMTP id 5b1f17b1804b1-47d195498a2mr244369575e9.7.1766828920639; Sat, 27 Dec 2025 01:48:40 -0800 (PST) X-Google-Smtp-Source: AGHT+IFiy9XXrlexPv0yEZDohqAIwqWya6Hzo3VP8GdFEI5r0AyZCjKAk3AvMsBP6ZK2+Sc391nn5w== X-Received: by 2002:a05:600c:1d0b:b0:477:b0b9:312a with SMTP id 5b1f17b1804b1-47d195498a2mr244369455e9.7.1766828920267; Sat, 27 Dec 2025 01:48:40 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 092/153] i386/cpu: Enable cet-ss & cet-ibt for supported CPU models Date: Sat, 27 Dec 2025 10:46:57 +0100 Message-ID: <20251227094759.35658-18-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829245570158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Add new versioned CPU models for Sapphire Rapids, Sierra Forest, Granite Rapids and Clearwater Forest, to enable shadow stack and indirect branch tracking. Tested-by: Farrah Chen Reviewed-by: Xiaoyao Li Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211060801.3600039-21-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- target/i386/cpu.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 4e0c5cf9997..a9f38f4020f 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -5166,6 +5166,17 @@ static const X86CPUDefinition builtin_x86_defs[] =3D= { { /* end of list */ }, } }, + { + .version =3D 5, + .note =3D "with cet-ss and cet-ibt", + .props =3D (PropValue[]) { + { "cet-ss", "on" }, + { "cet-ibt", "on" }, + { "vmx-exit-save-cet", "on" }, + { "vmx-entry-load-cet", "on" }, + { /* end of list */ }, + } + }, { /* end of list */ } } }, @@ -5328,6 +5339,17 @@ static const X86CPUDefinition builtin_x86_defs[] =3D= { { /* end of list */ }, } }, + { + .version =3D 4, + .note =3D "with cet-ss and cet-ibt", + .props =3D (PropValue[]) { + { "cet-ss", "on" }, + { "cet-ibt", "on" }, + { "vmx-exit-save-cet", "on" }, + { "vmx-entry-load-cet", "on" }, + { /* end of list */ }, + } + }, { /* end of list */ }, }, }, @@ -5482,6 +5504,17 @@ static const X86CPUDefinition builtin_x86_defs[] =3D= { { /* end of list */ }, } }, + { + .version =3D 4, + .note =3D "with cet-ss and cet-ibt", + .props =3D (PropValue[]) { + { "cet-ss", "on" }, + { "cet-ibt", "on" }, + { "vmx-exit-save-cet", "on" }, + { "vmx-entry-load-cet", "on" }, + { /* end of list */ }, + } + }, { /* end of list */ }, }, }, @@ -5617,6 +5650,17 @@ static const X86CPUDefinition builtin_x86_defs[] =3D= { .model_id =3D "Intel Xeon Processor (ClearwaterForest)", .versions =3D (X86CPUVersionDefinition[]) { { .version =3D 1 }, + { + .version =3D 2, + .note =3D "with cet-ss and cet-ibt", + .props =3D (PropValue[]) { + { "cet-ss", "on" }, + { "cet-ibt", "on" }, + { "vmx-exit-save-cet", "on" }, + { "vmx-entry-load-cet", "on" }, + { /* end of list */ }, + } + }, { /* end of list */ }, }, }, --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766828977; cv=none; d=zohomail.com; s=zohoarc; b=lHMYAgf0iSuUrJoG0BKM7DljwEsQlnIQQLI2NONirH0CosKarNBZ4zYBCLpxT/PaNaXGAZbXVHlDxZMCNIOgOihfsTV1jNgTgvB6FUOnwPKHCk7D3qkNGPY4RxeMhfZVGHZZzWbia+2IeqKkMY6PVU+pyPRDNzLwVK4h7F5JGAA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766828977; 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=xtYUxkEggFbHj5Y/79Ax3d/pR31qDvGvynv0eJHHmV4=; b=Z61DN8ADAe3HkLNgRF4aDvpQfzN8Pp7Fs03J9I5DJV37++1SJA2mXsscjjKXswbkcV0Bg60CrhuWvXjFg2uW+Q3Oh5VahVzqJxvqwLvjLPfI8sU0j8sCyNchDpaPAUGTBoCKmtnbOHVaDbr85P6ANQYMX0pXsaphqUQq6SmriFA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766828977751617.538852224835; Sat, 27 Dec 2025 01:49:37 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQus-0003Ae-S6; Sat, 27 Dec 2025 04:48:54 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQun-0002W6-RV for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:49 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQul-0006vy-K2 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:48 -0500 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-614-mVH7fOMvP6u-1icGR42qQA-1; Sat, 27 Dec 2025 04:48:44 -0500 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-43101a351c7so6166618f8f.2 for ; Sat, 27 Dec 2025 01:48:44 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa4749sm50761655f8f.37.2025.12.27.01.48.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:48:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828926; 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=xtYUxkEggFbHj5Y/79Ax3d/pR31qDvGvynv0eJHHmV4=; b=UlQFbRuHS/ZY8UR44+yhzzJy0tzDk/Se2xE1ZvLBks6VMWuWStXpW/Vo0AzI5V52/EUP/V m/8m4aWU3D8Iw7IK94EcF3rv7wUpTQZfMmpbOficC03279YUc1HsBoZVphv6g1G8/zAuYa x/wn37qDnz2vQkBnZ+LKY2gvW8hPHcE= X-MC-Unique: mVH7fOMvP6u-1icGR42qQA-1 X-Mimecast-MFC-AGG-ID: mVH7fOMvP6u-1icGR42qQA_1766828924 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828923; x=1767433723; 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; bh=xtYUxkEggFbHj5Y/79Ax3d/pR31qDvGvynv0eJHHmV4=; b=TN7Gf+YQJuNxJMfsXI7rcePDNtB3xlPluqJLIf9/BbddWBtMiVmymnEYlUYjAs4hR6 53UNOIXr8BeUcCuw21mNQicqyTgNKmMf7NVK4ydEFBW9OxF+zTA9s9tng+kLSADMRdHs 74D2N0tPl8DgdRHl2+CXtr7wXz6yPaDDHKf16Xu+5wDf6UjzZ0cK4D1Pc3VRPTgI4wa0 3o48NjuA21wWG6gnQ7QK+35WfxcU8e6LpWLMbYKHfsZRNQuhOmIYJY8q/8gK9Es3bWJc HfgC4R53O0KkXpeeXQAtIlM/ZoDvC3nTvW1kDrK5UXV7bKaTTbkTIjWVilrEIdNrsyPQ Z9KA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828923; x=1767433723; 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; bh=xtYUxkEggFbHj5Y/79Ax3d/pR31qDvGvynv0eJHHmV4=; b=Zmb27DcPB4HmmGlunKusAu805ARkZxNGUtg6/7URy4v7AKcMkdEAtBu8FwDExyoFPL v2A5GObpVagwGEqRSUnwk75OTlMWDe1rQ+ws0MaqhVpqNEDuAt/mesb7s1LQFtgnSBIW hI0fbnElR0g4LBqdQbmeTu6BbE62Wvhs1NymWMn3qiCJ7DOH/5pyxWOkI2DzJo9R42m0 VjYrFJsSOtaKYGZ1RPf6ln00yv6XQ+co54BmJl84V3QETODmEgIFrIlb9tHv4rzHhh7o AQEynY/cMbvI0KHi5K1+CcNjrDz80ND2/jd2fp0OvdDL/pL20P47wwwpxcJxwm5fiIMN K+DQ== X-Gm-Message-State: AOJu0YzZKSageLwf2EkV2flZ/gxCbT1OnV99J6GzBc8qzRwoYKIKp5i+ IRxgzcJDFtYGV2XPyVMAQkr4MJqZFuopXvS1zN/+HfJV9QSLkNstlZ8AUTyypP+A6JMkaI2NWVa YWSCDS7cqLFapWvfIX9sN1qDRKGQSTN6iYLAJ0dBDPmt+JXqC6L6D9gNQpPvRfYCmkPPsjpmiDk nlIPERINcf6K2eAZjjtKHMcwVVxbvvmfBy0iv1hBh7 X-Gm-Gg: AY/fxX4r1oQaOCiRF6Oie0wCHWgm5hhSRgs2+y0EIULKPmNGtrHxAZpcNje49d9EO48 P/exxMku78P6iGUxl0AWtoUlf1wAaYF1Y41UIf3ajsXspRvMNksOdOmFyDiOWVYRuJHLyLBzRWW I97x1N+bXyoIL9fWTlCD2/lO7RNvHjIQuvtqUknVeZkocVidaDvOVkiNGFGWBaLQJX6Fbsowtqb U/+aiWAXOQvahx1AgVgSqUp/RudcUneWKQuMqdvCReLUUaKxhkcHwPKUp+0f30CQQprB7idb50K CXR23280y9yybtkW6dtjvcDaOHLLMB9lZIRsM8h6ysgPHCQm3sSD0LHL0eyHA3zEchSsTpdrXLI 8HuVkPDZxIAsHtZN7VscSnMH415/3qn6USkz+Av5VmvzcjqEbv/0KgAuAb5WLlh3Gmua6sQBMcs 8PwdQELQ4U8gSPauQ= X-Received: by 2002:a5d:58e5:0:b0:431:771:a51f with SMTP id ffacd0b85a97d-4324e50ada8mr24088188f8f.49.1766828922827; Sat, 27 Dec 2025 01:48:42 -0800 (PST) X-Google-Smtp-Source: AGHT+IECn7mIIMG7uvcp+0t9ppY/rvMthGSWFtHmi0Rp+hHxsiXiYBom11/zROU1DFq/AZgg5UiWxQ== X-Received: by 2002:a5d:58e5:0:b0:431:771:a51f with SMTP id ffacd0b85a97d-4324e50ada8mr24088167f8f.49.1766828922351; Sat, 27 Dec 2025 01:48:42 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 093/153] i386/tdx: Fix missing spaces in tdx_xfam_deps[] Date: Sat, 27 Dec 2025 10:46:58 +0100 Message-ID: <20251227094759.35658-19-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766828978743158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu The checkpatch.pl always complains: "ERROR: space required after that close brace '}'". Fix this issue. Tested-by: Farrah Chen Reviewed-by: Xiaoyao Li Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211060801.3600039-22-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- target/i386/kvm/tdx.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/target/i386/kvm/tdx.c b/target/i386/kvm/tdx.c index dbf0fa2c918..a3444623657 100644 --- a/target/i386/kvm/tdx.c +++ b/target/i386/kvm/tdx.c @@ -520,15 +520,15 @@ typedef struct TdxXFAMDep { * supported. */ TdxXFAMDep tdx_xfam_deps[] =3D { - { XSTATE_YMM_BIT, { FEAT_1_ECX, CPUID_EXT_FMA }}, - { XSTATE_YMM_BIT, { FEAT_7_0_EBX, CPUID_7_0_EBX_AVX2 }}, - { XSTATE_OPMASK_BIT, { FEAT_7_0_ECX, CPUID_7_0_ECX_AVX512_VBMI}}, - { XSTATE_OPMASK_BIT, { FEAT_7_0_EDX, CPUID_7_0_EDX_AVX512_FP16}}, - { XSTATE_PT_BIT, { FEAT_7_0_EBX, CPUID_7_0_EBX_INTEL_PT}}, - { XSTATE_PKRU_BIT, { FEAT_7_0_ECX, CPUID_7_0_ECX_PKU}}, - { XSTATE_XTILE_CFG_BIT, { FEAT_7_0_EDX, CPUID_7_0_EDX_AMX_BF16 }}, - { XSTATE_XTILE_CFG_BIT, { FEAT_7_0_EDX, CPUID_7_0_EDX_AMX_TILE }}, - { XSTATE_XTILE_CFG_BIT, { FEAT_7_0_EDX, CPUID_7_0_EDX_AMX_INT8 }}, + { XSTATE_YMM_BIT, { FEAT_1_ECX, CPUID_EXT_FMA } }, + { XSTATE_YMM_BIT, { FEAT_7_0_EBX, CPUID_7_0_EBX_AVX2 } }, + { XSTATE_OPMASK_BIT, { FEAT_7_0_ECX, CPUID_7_0_ECX_AVX512_VBMI } }, + { XSTATE_OPMASK_BIT, { FEAT_7_0_EDX, CPUID_7_0_EDX_AVX512_FP16 } }, + { XSTATE_PT_BIT, { FEAT_7_0_EBX, CPUID_7_0_EBX_INTEL_PT } }, + { XSTATE_PKRU_BIT, { FEAT_7_0_ECX, CPUID_7_0_ECX_PKU } }, + { XSTATE_XTILE_CFG_BIT, { FEAT_7_0_EDX, CPUID_7_0_EDX_AMX_BF16 } }, + { XSTATE_XTILE_CFG_BIT, { FEAT_7_0_EDX, CPUID_7_0_EDX_AMX_TILE } }, + { XSTATE_XTILE_CFG_BIT, { FEAT_7_0_EDX, CPUID_7_0_EDX_AMX_INT8 } }, }; =20 static struct kvm_cpuid_entry2 *find_in_supported_entry(uint32_t function, --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829217; cv=none; d=zohomail.com; s=zohoarc; b=XE7Cx7iVvzwssuN1kHZZbWVBYZqvWQ6wZ/+hYhVQsaQiT95onwznNC5rbZjuaPa0JWeWYDhaV2IAxtBndFLc+Rz0Yxs8whse92RGWPxi5X1FGmKGqnCCYYMeIUQhaQRo8VddsGVMceaXkod2Hvix3ahppG2QXUsDrEuxIRSjiog= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829217; 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=nXFtxzkCb7r/jg5V57qKi5t8O7nwjlm+HAbQXnotv4M=; b=T8f7BzCSXskbg3LOBlCn/DUcNMKSIOMUNCg/FY0yMt/eT6PmGbI5oqhaTfSb6tgzUYQGPz6IcgUR6Yc5/S7+OBKLFTuqClbYV//GLJ35TyepYab9RF5pJQtyDbPMt2zYAtj4NhtHkXmL5NJTkRWiT9y455SY5K+EP1b5PglbdQ8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17668292172471018.5971097666503; Sat, 27 Dec 2025 01:53:37 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQus-0003Ag-TD; Sat, 27 Dec 2025 04:48:54 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQup-0002gZ-4Q for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:51 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQun-0006wE-Jv for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:50 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-606-z-wKu-onOaCiuOWcipudUg-1; Sat, 27 Dec 2025 04:48:47 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-4779edba8f3so56178585e9.3 for ; Sat, 27 Dec 2025 01:48:47 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d19346e48sm424236605e9.2.2025.12.27.01.48.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:48:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828928; 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=nXFtxzkCb7r/jg5V57qKi5t8O7nwjlm+HAbQXnotv4M=; b=Tu9yq910Zoloc4GK/X6udgtR/Zqbh3Yf3hGblkff0333BXzaWywrYyIcsHyVOhDj0Siv3U SnCOLsy3AcwsqtilejeV25w5+88OYJ0RX4vrfBy/akjZ/1uGpbUOxLzcJ9FB1zVz2SGn7T KqcgRI7hgDowxPlKiF3jE+Jz4CxB29w= X-MC-Unique: z-wKu-onOaCiuOWcipudUg-1 X-Mimecast-MFC-AGG-ID: z-wKu-onOaCiuOWcipudUg_1766828926 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828925; x=1767433725; 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; bh=nXFtxzkCb7r/jg5V57qKi5t8O7nwjlm+HAbQXnotv4M=; b=JisyoMVNBCNPviO5R7SG+J2DqeeuTImTGEejtRVeZtYFQDhbb5FbnDz7hebyumyKou PoLjA4CEK1WKb6noymaJdEpsYv/+9kqx1tBXsY/Y6qlrfaUr6rp4lS7Tz4xl7GGI7Sww q1ai0dmF0vhA2HLDvl0JC1h0h8qGhnwrz002dBB3+zLcw3ojM9JxTbZ2j7RY6TNSrkRV mM0velpyNeQfpZL5AQArpoW563jF3ChjcCG8yTgx9X73rgV/i71t1GdfdfWWAwwEFF5L 6A9TKTVK3LOspyi08dMDyn20VOVQisg7NQ2P8hCeA5yvCE9AOIr2lTEcCmBsZu0oMorW 9Yiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828925; x=1767433725; 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; bh=nXFtxzkCb7r/jg5V57qKi5t8O7nwjlm+HAbQXnotv4M=; b=sPSa4ZYuuoSKfd6tXCwFqWQUp3YQEnpZF9FYVaP1UgJXHTBb0Vi41YbfuvsWtHnNVc QlBrOW7Un4iwJBKq/gNwYvT2YeRNDBrwDp2ch+CW+JgkdsZ3JJga7YYPemeZNxt7u2kM KsoOC2x2Nmva4qtyoHtvaq4Q4Xfc95Iz2MDbMwIoGrusns2X4Oh0NDQKzDsWHjMAw1Ik q7U72fhRTgWucX9SYDBUyLU31uyrcSjwgF0NAzRkEsvEk9bhxIlAky/WgOe8vIztj6Tp UXAUhhRTx/CA67o8mM5gaQ2PID/VonoxDUgX9vYVQGv5bGPIKPrEyz+ZUEIf8JFz4NXq yXOQ== X-Gm-Message-State: AOJu0Yz1coGARk33jH3dSl8r3Dc9Lnpp43LVyYFJE3kHBWO1Btg5HrlW yNwQCXI+ujdsTXdNIxo+3J0/UqHyv4dCyMmrr4WwN8KJm37NwKoB6ymwJxcIwK3xLDlYvwESigz iNYSSYnf+Lh8oFn7SZGjx84OWk8LkTJQx+WPRUAuYaFpnoERgJhjf9NDnUEtJ5/upPoWOFA+ooA RBybZzf01owQUM1FKRngo40Yic5X0gcQdMZ/b7Bk/D X-Gm-Gg: AY/fxX7TQkkd2QjVwJIvjjVr/mbqIfBJX3GGTxuXzY/8sA0z4BzYb2jmh8nRkmqiduv iblxWPd5FCTKzvoiAqzRCptFEWnC9lfumioPKgph2mdsj7JPrRrn/qRS4dYNHPHBovjd12zcbVd sq1DoTHz+se5ZH6jFC9S+Gmlse+I+lCTs5MJzjO65yk8NcVjedKJ7fKh0t+Yvhl+F7ZtdqHZi8j Rq9KxkkiFWgskbiW4QiBs7OGKfYmNijwWrWZVXzHUeEo+iT7EDipHfusECWGuSkC0Xo9klAY5pS 6wy9DhO/lSycCnlMwpDnNX8JEuv3aRpj6BbgZSBChCOLYma3jsVMA24a0TVFfDp9SYkkxhkM6FV jaGohPEdSgoP1iaS9xxIoc/f67D6id7q75VJmXFJJUk0BSx6LhPjbaJiihh6GAH5KgJR/RiXfVS YBVpnC6p/0P3woK74= X-Received: by 2002:a05:600c:4e01:b0:477:3e0b:c0e3 with SMTP id 5b1f17b1804b1-47d19582bcbmr287094155e9.32.1766828925335; Sat, 27 Dec 2025 01:48:45 -0800 (PST) X-Google-Smtp-Source: AGHT+IEV6DiKb805bip74YUyS+lCXJftPejteewMRLTp7/75DdcMiAp1qGEVAGaMNmlBTmFtwsLu+A== X-Received: by 2002:a05:600c:4e01:b0:477:3e0b:c0e3 with SMTP id 5b1f17b1804b1-47d19582bcbmr287093975e9.32.1766828924944; Sat, 27 Dec 2025 01:48:44 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Chenyi Qiang Subject: [PULL 094/153] i386/tdx: Add CET SHSTK/IBT into the supported CPUID by XFAM Date: Sat, 27 Dec 2025 10:46:59 +0100 Message-ID: <20251227094759.35658-20-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829219492158500 Content-Type: text/plain; charset="utf-8" From: Chenyi Qiang So that it can be configured in TD guest. And considerring CET_U and CET_S bits are always same in supported XFAM reported by TDX module, i.e., either 00 or 11. So, only need to choose one of them. Tested-by: Farrah Chen Reviewed-by: Xiaoyao Li Signed-off-by: Chenyi Qiang Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211060801.3600039-23-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- target/i386/kvm/tdx.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/i386/kvm/tdx.c b/target/i386/kvm/tdx.c index a3444623657..01619857685 100644 --- a/target/i386/kvm/tdx.c +++ b/target/i386/kvm/tdx.c @@ -526,6 +526,8 @@ TdxXFAMDep tdx_xfam_deps[] =3D { { XSTATE_OPMASK_BIT, { FEAT_7_0_EDX, CPUID_7_0_EDX_AVX512_FP16 } }, { XSTATE_PT_BIT, { FEAT_7_0_EBX, CPUID_7_0_EBX_INTEL_PT } }, { XSTATE_PKRU_BIT, { FEAT_7_0_ECX, CPUID_7_0_ECX_PKU } }, + { XSTATE_CET_U_BIT, { FEAT_7_0_ECX, CPUID_7_0_ECX_CET_SHSTK } }, + { XSTATE_CET_U_BIT, { FEAT_7_0_EDX, CPUID_7_0_EDX_CET_IBT } }, { XSTATE_XTILE_CFG_BIT, { FEAT_7_0_EDX, CPUID_7_0_EDX_AMX_BF16 } }, { XSTATE_XTILE_CFG_BIT, { FEAT_7_0_EDX, CPUID_7_0_EDX_AMX_TILE } }, { XSTATE_XTILE_CFG_BIT, { FEAT_7_0_EDX, CPUID_7_0_EDX_AMX_INT8 } }, --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829083; cv=none; d=zohomail.com; s=zohoarc; b=mHLXMl+/+Nh0E5xRKAfbX86NWmeDD0ZxzdZSzl9A3YRL53cNvTCi8T3kpapa49+wowIRG/v8uEQvHZ0xPDPACCFtQ8Z8fjMJJKIRJ5Rhfo8yXpI/Lm2StyDK5nbM/0gfnSQ2kuCzcBtvq69ZpU0+i2Y+6fMRi86qEQACGdb9HhM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829083; 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=Mr0sHsjWlRUGVEaNrcZQI5hWjbJ7RlXggB2aVoEiszU=; b=JsmuCjvlT7Nkc8RsPibJ22bUzjIbqQfEAPlKsmmMSPh1lW3JVikj3GLaD1bhw2U61IoESJgvQTgn24S5sgKkye3bpMqJC+cdRdHa+N4sfWg2H81MFnJJYPNVnrNmeyDLt3+hkWCo/eiNW6KrZpyrNPLaqrmX0JSMFhD+i581rO8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829083163187.1169406635778; Sat, 27 Dec 2025 01:51:23 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQux-0003cW-1p; Sat, 27 Dec 2025 04:48:59 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQur-0002ym-9P for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:53 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQup-0006wX-ER for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:53 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-662-nc2SwQuCNZy7ui7rpk7kRQ-1; Sat, 27 Dec 2025 04:48:49 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-477cf2230c8so78146995e9.0 for ; Sat, 27 Dec 2025 01:48:49 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be27b749esm489734145e9.14.2025.12.27.01.48.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:48:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828930; 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=Mr0sHsjWlRUGVEaNrcZQI5hWjbJ7RlXggB2aVoEiszU=; b=LUsehdQu5YZW8fPHMpxWAcWx5v8gbYABwz14N3son584IRuUTcIgMScG3OXo04YjtbYNdH vS7wGEqjq8sofEMYMlJ2qqqznfIggoJqqCBHJ5f94voCbtaUD87pjb/J3vcAgF0PlTpapW z4YG1ZvBISHieVWcjTBHDtOoLfFPdO8= X-MC-Unique: nc2SwQuCNZy7ui7rpk7kRQ-1 X-Mimecast-MFC-AGG-ID: nc2SwQuCNZy7ui7rpk7kRQ_1766828928 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828927; x=1767433727; 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; bh=Mr0sHsjWlRUGVEaNrcZQI5hWjbJ7RlXggB2aVoEiszU=; b=LP6Ie2KT5RSCK9aLmfXJEeDXaMWUJKzo4Bqq5s5zx4Tx2JW/65Egi1LozzquihmvHn NcRC332ECZjUOBMo7YxDXQlshBr+3ykmH/OM0kemf9kaEnFOwxMvLz1EysdCXlskOiwl I828rZ6tPhxtaWf8h85hB3uoX/WXOiKKXK+JGXCWm91Q4Tqg6Hlh+NeiZulEArvv0Ebq IAOxBibBhX6O65FOgMSUw5T4KbjZrKhCjb058mqdTnCLkOHW/HC4u4bUPwZnTmrITZ9X sM21Mk8URsq8Fzb5kGUJWyss1gtoYcBMYhdYKwHouiqd0r0G6EWXoaGzEkr76Gn4IWFG 58TQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828927; x=1767433727; 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; bh=Mr0sHsjWlRUGVEaNrcZQI5hWjbJ7RlXggB2aVoEiszU=; b=e3gsGy7FSGlP0jFKnzLzSY7cE8tuupecNAIhGKGqDTqFmbYBdrVCyhr4Nl/I1JNUXI bEHbeSMju9hBfdActNfYdyr6P49CgkNZRacZgvLmzbeYWR4NCK4u/18EfK24Y+/7pghJ aZg7r0qoLQvOtCxg0L3hMJUHQj8Df/YMoqlrHYgdU9JscXGahlD0hJeSAVszl7f/UzIR bYNDHpNL4/DMjuRTFNlp/0mf3cdY64cvonWLA44N092oKS5cUUD2U+kwsEfiS9pARosi AB/i9JSwZLkW7B7RE7m7FOM8A24D7hUCH9gHonnBhaHfoDPL/9uZajW7gJx8+sZMiQBc tqKg== X-Gm-Message-State: AOJu0Yxhmtht6w/0nrTl3RMH1Mac4ou7euGiXOZwFNU7TclWBFMYwDCL BLfgwXafNKUPSPhlcDsjKoSYRDQoE1ADPU3bzubGXv3m3RfL+MbWHSZm2xcY+oVtj7ARt+oS3xr zH4++MAAnESOj+iG5BcOWZONuTArI+XdcwYOpURMi6fwds03FO4+Wlu4PiyJJeH62TObCc7Fhy1 BgB8a8T0U4L+0WF/Uprn8DxSh/EWo9YZfK91vmuuNU X-Gm-Gg: AY/fxX5huMYI2U/lFwFp6het4CPRDgf1Z7jIdbiioMwBEQb2NxLQMD7YWxVfKyaMfZw W2j+U2G3EUMBmGtKHAZF+ouqgpsuoH1xJkc8s4iTj7HGiCWuykN2d6fpc21ye/6/HN+BF63TL+A gnkLvp12ygs7cPh/pG/tegKa3arl7EMNnmd8f8CLZUPBx2QrekHjYJBFX8jaeZ2/KeiS4kUIKIt YEhpO395V679NoqI3B/TvFNrOrN98C26ZxzFVu1rZprtfurbabVAFaRlMgqv0NKak28b0nsfm0E E+mJWirbpzyhqqtZ0pGiz7XfMxuXSkhbYfft1b77XrM8bpVNIxECt2WkHgzDZEpo5fJ9da3HmAW ptjdxlWh7T0b+AdMb/YauaCNZrgo7C3vb7+KWP+P+cYObrAZBpZbjriePgTgL9FgNz0ZixkmNAC AT4vMfLIrN9DribJQ= X-Received: by 2002:a05:600c:4f4a:b0:477:58:7cf4 with SMTP id 5b1f17b1804b1-47d1953b79dmr319528285e9.4.1766828927391; Sat, 27 Dec 2025 01:48:47 -0800 (PST) X-Google-Smtp-Source: AGHT+IER/G+HyZn9l1auJUQiSz3CFkpizB/FYyg01dOBSfoW8yQgnTbi3JwCP8pGRJpXNG1yE7ZB+w== X-Received: by 2002:a05:600c:4f4a:b0:477:58:7cf4 with SMTP id 5b1f17b1804b1-47d1953b79dmr319527995e9.4.1766828926921; Sat, 27 Dec 2025 01:48:46 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Xudong Hao Subject: [PULL 095/153] i386/cpu: Add APX EGPRs into xsave area Date: Sat, 27 Dec 2025 10:47:00 +0100 Message-ID: <20251227094759.35658-21-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829085100158500 Content-Type: text/plain; charset="utf-8" From: Zide Chen APX feature bit is in CPUID_7_1_EDX[21], and APX has EGPR component with index 19 in xstate area, EGPR component has 16 64bit regs. Add EGRP component into xstate area. Note, APX re-uses the 128-byte XSAVE area that had been previously allocated by MPX which has been deprecated on Intel processors, so check whether APX and MPX are set at the same for Guest, if this case happens, mask off them both to avoid conflict for xsave area. Tested-by: Xudong Hao Signed-off-by: Zide Chen Co-developed-by: Zhao Liu Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211070942.3612547-2-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- target/i386/cpu.h | 17 +++++++++++++++-- target/i386/cpu.c | 25 +++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 33350602edd..05e297e6bb5 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -604,6 +604,7 @@ typedef enum X86Seg { #define XSTATE_ARCH_LBR_BIT 15 #define XSTATE_XTILE_CFG_BIT 17 #define XSTATE_XTILE_DATA_BIT 18 +#define XSTATE_APX_BIT 19 =20 #define XSTATE_FP_MASK (1ULL << XSTATE_FP_BIT) #define XSTATE_SSE_MASK (1ULL << XSTATE_SSE_BIT) @@ -620,6 +621,7 @@ typedef enum X86Seg { #define XSTATE_ARCH_LBR_MASK (1ULL << XSTATE_ARCH_LBR_BIT) #define XSTATE_XTILE_CFG_MASK (1ULL << XSTATE_XTILE_CFG_BIT) #define XSTATE_XTILE_DATA_MASK (1ULL << XSTATE_XTILE_DATA_BIT) +#define XSTATE_APX_MASK (1ULL << XSTATE_APX_BIT) =20 #define XSTATE_DYNAMIC_MASK (XSTATE_XTILE_DATA_MASK) =20 @@ -636,7 +638,8 @@ typedef enum X86Seg { XSTATE_BNDCSR_MASK | XSTATE_OPMASK_MASK |= \ XSTATE_ZMM_Hi256_MASK | \ XSTATE_Hi16_ZMM_MASK | XSTATE_PKRU_MASK |= \ - XSTATE_XTILE_CFG_MASK | XSTATE_XTILE_DATA= _MASK) + XSTATE_XTILE_CFG_MASK | \ + XSTATE_XTILE_DATA_MASK | XSTATE_APX_MASK) =20 /* CPUID feature bits available in XSS */ #define CPUID_XSTATE_XSS_MASK (XSTATE_ARCH_LBR_MASK | XSTATE_CET_U_MASK = | \ @@ -1039,6 +1042,8 @@ uint64_t x86_cpu_get_supported_feature_word(X86CPU *c= pu, FeatureWord w); #define CPUID_7_1_EDX_PREFETCHITI (1U << 14) /* Support for Advanced Vector Extensions 10 */ #define CPUID_7_1_EDX_AVX10 (1U << 19) +/* Support for Advanced Performance Extensions */ +#define CPUID_7_1_EDX_APXF (1U << 21) =20 /* Indicate bit 7 of the IA32_SPEC_CTRL MSR is supported */ #define CPUID_7_2_EDX_PSFD (1U << 0) @@ -1681,6 +1686,8 @@ typedef struct { =20 #define ARCH_LBR_NR_ENTRIES 32 =20 +#define EGPR_NUM 16 + /* CPU can't have 0xFFFFFFFF APIC ID, use that value to distinguish * that APIC ID hasn't been set yet */ @@ -1791,6 +1798,11 @@ typedef struct XSaveXTILEDATA { uint8_t xtiledata[8][1024]; } XSaveXTILEDATA; =20 +/* Ext. save area 19: APX state */ +typedef struct XSaveAPX { + uint64_t egprs[EGPR_NUM]; +} XSaveAPX; + QEMU_BUILD_BUG_ON(sizeof(XSaveAVX) !=3D 0x100); QEMU_BUILD_BUG_ON(sizeof(XSaveBNDREG) !=3D 0x40); QEMU_BUILD_BUG_ON(sizeof(XSaveBNDCSR) !=3D 0x40); @@ -1803,6 +1815,7 @@ QEMU_BUILD_BUG_ON(sizeof(XSaveCETS) !=3D 0x18); QEMU_BUILD_BUG_ON(sizeof(XSaveArchLBR) !=3D 0x328); QEMU_BUILD_BUG_ON(sizeof(XSaveXTILECFG) !=3D 0x40); QEMU_BUILD_BUG_ON(sizeof(XSaveXTILEDATA) !=3D 0x2000); +QEMU_BUILD_BUG_ON(sizeof(XSaveAPX) !=3D 0x80); =20 typedef struct ExtSaveArea { uint32_t offset, size; @@ -1817,7 +1830,7 @@ typedef struct ExtSaveArea { const FeatureMask features[2]; } ExtSaveArea; =20 -#define XSAVE_STATE_AREA_COUNT (XSTATE_XTILE_DATA_BIT + 1) +#define XSAVE_STATE_AREA_COUNT (XSTATE_APX_BIT + 1) =20 extern ExtSaveArea x86_ext_save_areas[XSAVE_STATE_AREA_COUNT]; =20 diff --git a/target/i386/cpu.c b/target/i386/cpu.c index a9f38f4020f..3c9ed7cd5f7 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -2111,6 +2111,12 @@ ExtSaveArea x86_ext_save_areas[XSAVE_STATE_AREA_COUN= T] =3D { { FEAT_7_0_EDX, CPUID_7_0_EDX_AMX_TILE }, }, }, + [XSTATE_APX_BIT] =3D { + .size =3D sizeof(XSaveAPX), + .features =3D { + { FEAT_7_1_EDX, CPUID_7_1_EDX_APXF }, + }, + }, }; =20 uint32_t xsave_area_size(uint64_t mask, bool compacted) @@ -9116,6 +9122,25 @@ void x86_cpu_expand_features(X86CPU *cpu, Error **er= rp) env->features[FEAT_KVM] =3D 0; } =20 + /* + * Since Intel MPX had been previously deprecated, APX re-purposes the + * 128-byte XSAVE area that had been previously allocated by MPX (state + * component indices 3 and 4, making up a 128-byte area located at an + * offset of 960 bytes into an un-compacted XSAVE buffer), as a single + * state component housing 128-bytes of storage for EGPRs (8-bytes * 16 + * registers). + * + * Check the conflict between MPX and APX before initializing xsave + * components. + */ + if ((env->features[FEAT_7_0_EBX] & CPUID_7_0_EBX_MPX) && + (env->features[FEAT_7_1_EDX] & CPUID_7_1_EDX_APXF)) { + mark_unavailable_features(cpu, FEAT_7_0_EBX, CPUID_7_0_EBX_MPX, + "this feature is conflict with APX"); + mark_unavailable_features(cpu, FEAT_7_1_EDX, CPUID_7_1_EDX_APXF, + "this feature is conflict with MPX"); + } + x86_cpu_enable_xsave_components(cpu); =20 /* CPUID[EAX=3D7,ECX=3D0].EBX always increased level automatically: */ --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829113; cv=none; d=zohomail.com; s=zohoarc; b=UcSjbrV2YO51j5p+z0abc7M4J2tY5hd/Xu+AdP3EgzxBPFajvK3GeM6GLhXV0Nu2Tj8PJSKsPCWDxOYkSMFTcjDR6wnrj49i+r+QYwnJFhLeep7O17Rvc3G17WQrXYrMOCilXYzkdGBGBYkVxgRZ2rAyvUfy6gs1MmAIMzmUZvY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829113; 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=9ocvxYMYuNSsUpmOns6DvRZCKhkSVyDlBFI5rejQcdc=; b=CjkRcS1aaLa6wxfWBMnI+IesdFW7m8+71FE0OckvzFHV/O89/fxaqF5tvtHc1csn7KgldnAsGmLA5kpYcenE8xHi0/dapmRtc3N0gMeZwBkXgez5s1IF6/aKIUptzA3O5MYbKXK7OZiqeDQ+cJTj5r+JiAtzl4o2GcKdf8XtI3I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176682911307738.741822875176695; Sat, 27 Dec 2025 01:51:53 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQuv-0003VP-QV; Sat, 27 Dec 2025 04:48:57 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQut-0003H0-UY for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:56 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQus-0006xG-EL for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:48:55 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-612-SRws8fYFPzeFaAT-nocVmQ-1; Sat, 27 Dec 2025 04:48:52 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-47d17fff653so26752485e9.0 for ; Sat, 27 Dec 2025 01:48:52 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa08efsm50570613f8f.29.2025.12.27.01.48.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:48:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828933; 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=9ocvxYMYuNSsUpmOns6DvRZCKhkSVyDlBFI5rejQcdc=; b=RRMI/UIVIMpwUer+1o5OHB/cFzAxMzNxW8QLAk8WTwB49+3xENTjdg1DSzsJn5F6Zmr/sf /l/w3CNSBdAA8x/6xuZpELOjz7UkVWETEe3MGBkzhGLb+sAw0oYEehiwA9nfVWT1fWOjUc 2fAahUIQpzZqy3lASVp2g/G3pN2P7SA= X-MC-Unique: SRws8fYFPzeFaAT-nocVmQ-1 X-Mimecast-MFC-AGG-ID: SRws8fYFPzeFaAT-nocVmQ_1766828931 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828930; x=1767433730; 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; bh=9ocvxYMYuNSsUpmOns6DvRZCKhkSVyDlBFI5rejQcdc=; b=qPRfygVs/bOX1RoqKmMZvnPQfmrs6qTzPAASNw9/ebiPLWk1Mc8mI8k4kVyhKtoRGN 42GLcvSVMsrAqLLRRZxwQqO5cC+b4M7nIfjPDMprn/o0PTg+SE3go7AuwDJO+yikk6m7 c3UwEogRmG4lzW1gpJtZV+Q6+d2a33FPC7YqY7Uq71HzNmFAcoisauhRghD8IiWLIugp ZPGZms+hRocZZzjnB7uftGKgvQc4kiVCvd6gRXPlDZHjPmZ+p3zpRKyo1Q8ZxgGEa+Tu JBg9Q0+0A7sZlEQeYyQX4b1xsCkGxfAM6bAqPZIjy34E2vZDbxL/qgBYSHbbfdFcrdw5 yeVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828930; x=1767433730; 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; bh=9ocvxYMYuNSsUpmOns6DvRZCKhkSVyDlBFI5rejQcdc=; b=eVktSPVAtepe6IzUxkWwyKVKXnVTU6FUfNqcJb9ZGnJYwCm59eLzgBtf+fIOgEm4vN IwVxp6hK0QjIZQORxRBhrB5yUNRyIkHOOyWxbsbIznkStAzjBXVj5iwqPKhaBxyFi/Y4 ugu4AA3xGV0tn2U2JjkUI4TA4EDQ+HXI+k9IOOAHsmSbtrpjMNjE9bkclHatI4w/bo2x bUe6xZgHkGEFU41wpg61euRSy6+yX9XA2foMuKGzOCVqFKHyCMsQGjTRseG++AVG1w5P ZN3Gei6PCmFZF5YdJ7qAGfmjBvK/VSgQru3EFb0F6rlrmFer/fRD5m8dekK96/klYDvp r5vA== X-Gm-Message-State: AOJu0YzFEPGQOGpHqa3yH8jLrrTqkB94wkvZEfG9VFYfbaO0nKont1Gj Q4MyvXg8/ck+A7NBM6k3eJRT0sTXbRbdtzXjTGDRS+femr9rm9XNheTDeu3nFhhB+KlhhN6F+s9 Y4PJEn/Umv3hDvC6XXy6nmcGxpNilbxTC2ucL71GZiDHW7j82P7iInaTa6wsCS1yd3uXZW04fZ9 WpONob0fAp/9tJt4mTbUMGQrbpxqSFqfu/WyL3oD1W X-Gm-Gg: AY/fxX6C0KzLXXmhQBDSv4uBgmltSyDP7Q1cOtcL0X9BenPFRRhTM/ULdmIt0fqjED+ TVfyZQp52pgIez2orITwQjBobudhdDWTnrF4WcaWWUX0arpsMZarGkR0twf4o5+q/gz1DgMjz+X Lzq5vwlG+ii+/YK6PV3qaT/emOZB3g1yyR+MA6hWhHMe64mZcH8vw6oqzpU7fCLB+JuBeZx2/ub bNUlfdmmXDb6440zW+c09+uLXgrNMRQ6eE3K7z4wwlKEi7Q3LHLARFWMeHzSFeO9bci2x+uffZe 3MJdFzeB63NSXn8u+BGAzKZ1NTMJTyvK0DgpqUvov4n55B2R8+5aHXFgs2frX5yjtQxKEN2Df/G w7Qb3RRwBgg1RN3DgT61gMc+IpZKnmf7w4bQVPmVoKV3SoOpFqHIo6biquKDdmuEUkSeMwpYeBo P5HqXL85rF7Pt6Ws0= X-Received: by 2002:a05:600c:859c:b0:47d:25ac:3a94 with SMTP id 5b1f17b1804b1-47d25ac3acfmr201655435e9.17.1766828930103; Sat, 27 Dec 2025 01:48:50 -0800 (PST) X-Google-Smtp-Source: AGHT+IGouZoqF9H9Vin6fUZSFoXZ+ARcei2IT6BGynIKvp0zukdF3hs0TXpG6KT1J5Mf7uJGGto3QQ== X-Received: by 2002:a05:600c:859c:b0:47d:25ac:3a94 with SMTP id 5b1f17b1804b1-47d25ac3acfmr201655165e9.17.1766828929681; Sat, 27 Dec 2025 01:48:49 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Xudong Hao Subject: [PULL 096/153] i386/machine: Use VMSTATE_UINTTL_SUB_ARRAY for vmstate of CPUX86State.regs Date: Sat, 27 Dec 2025 10:47:01 +0100 Message-ID: <20251227094759.35658-22-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829115148158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Before expanding the number of elements in the CPUX86State.regs array, first use VMSTATE_UINTTL_SUB_ARRAY for the regs' vmstate to avoid the type_check_array failure. VMSTATE_UINTTL_SUB_ARRAY will also be used for subsequently added elements in regs array. Tested-by: Xudong Hao Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211070942.3612547-3-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- include/migration/cpu.h | 4 ++++ target/i386/machine.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/include/migration/cpu.h b/include/migration/cpu.h index ca7cc0479e7..1335abe2230 100644 --- a/include/migration/cpu.h +++ b/include/migration/cpu.h @@ -21,6 +21,8 @@ VMSTATE_UINT64_V(_f, _s, _v) #define VMSTATE_UINTTL_ARRAY_V(_f, _s, _n, _v) \ VMSTATE_UINT64_ARRAY_V(_f, _s, _n, _v) +#define VMSTATE_UINTTL_SUB_ARRAY(_f, _s, _start, _num) \ + VMSTATE_UINT64_SUB_ARRAY(_f, _s, _start, _num) #define VMSTATE_UINTTL_2DARRAY_V(_f, _s, _n1, _n2, _v) \ VMSTATE_UINT64_2DARRAY_V(_f, _s, _n1, _n2, _v) #define VMSTATE_UINTTL_TEST(_f, _s, _t) \ @@ -40,6 +42,8 @@ VMSTATE_UINT32_V(_f, _s, _v) #define VMSTATE_UINTTL_ARRAY_V(_f, _s, _n, _v) \ VMSTATE_UINT32_ARRAY_V(_f, _s, _n, _v) +#define VMSTATE_UINTTL_SUB_ARRAY(_f, _s, _start, _num) \ + VMSTATE_UINT32_SUB_ARRAY(_f, _s, _start, _num) #define VMSTATE_UINTTL_2DARRAY_V(_f, _s, _n1, _n2, _v) \ VMSTATE_UINT32_2DARRAY_V(_f, _s, _n1, _n2, _v) #define VMSTATE_UINTTL_TEST(_f, _s, _t) \ diff --git a/target/i386/machine.c b/target/i386/machine.c index 57a968c30db..0882dc3eb09 100644 --- a/target/i386/machine.c +++ b/target/i386/machine.c @@ -1748,7 +1748,7 @@ const VMStateDescription vmstate_x86_cpu =3D { .pre_save =3D cpu_pre_save, .post_load =3D cpu_post_load, .fields =3D (const VMStateField[]) { - VMSTATE_UINTTL_ARRAY(env.regs, X86CPU, CPU_NB_REGS), + VMSTATE_UINTTL_SUB_ARRAY(env.regs, X86CPU, 0, CPU_NB_REGS), VMSTATE_UINTTL(env.eip, X86CPU), VMSTATE_UINTTL(env.eflags, X86CPU), VMSTATE_UINT32(env.hflags, X86CPU), --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766828969; cv=none; d=zohomail.com; s=zohoarc; b=Dw47ciwJ/emHhC+PvNU7ue8o5Ugyd+4Cq6xYxjkbm3IPJKvfnPzN+0cJ1U8VoOGrM0txr13eqAScsR8+Mlsq5mkqfPATQPb1AtDb50Xh2Zf3MT7JJanFPiAPFWigtzfpzJUdDO6YEm06FwOGxoo3LQUVeoujs0qls467QTHGjsA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766828969; 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=i6Mev8YzRHp6WV8Umh9a3vKCUUeFnkL4NvERv9PBdwQ=; b=kVVPKsfOrYa5uXXjXvlLs2SlmoMEeL9QT9xSSpZpJk8j6dRWLfeiD+wX9bSc1O+qQAEE7LN64eeThGrxD8r3Dv9Sh/MairvutmxHrh+62OPeyV/kZF75DBfnz6UHjndUUPjF7CC9qDpq90MgNXfrGVp336FCiNXh6rH5BGu5QJs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766828969349685.8391162997623; Sat, 27 Dec 2025 01:49:29 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQv1-0003nR-VZ; Sat, 27 Dec 2025 04:49:04 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuy-0003g2-NH for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:00 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQux-0006y5-5M for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:00 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-569-Ht4vUt1UN3ilzabit3M7iA-1; Sat, 27 Dec 2025 04:48:54 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4775e00b16fso19454515e9.2 for ; Sat, 27 Dec 2025 01:48:54 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa46c0sm50545558f8f.34.2025.12.27.01.48.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:48:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828938; 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=i6Mev8YzRHp6WV8Umh9a3vKCUUeFnkL4NvERv9PBdwQ=; b=fMW7P0FaoY4NRWTqo+n0vxINLLZQuiGsJ2sURU95wS3aiPUh6FdUeMz/NmsoXE/hzucElW xeH19HW8j3Wo3q1bvreXWzVdVoTTtzv7TeD1rykaHpY+7N9ipM/hv/+1YjJuRi+InI8B8X KeIEzTpWiEnDfwVf9N/e+IDPVNRgBVA= X-MC-Unique: Ht4vUt1UN3ilzabit3M7iA-1 X-Mimecast-MFC-AGG-ID: Ht4vUt1UN3ilzabit3M7iA_1766828934 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828933; x=1767433733; 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; bh=i6Mev8YzRHp6WV8Umh9a3vKCUUeFnkL4NvERv9PBdwQ=; b=Pw5mCEq2B0zSujjRJwRfFX8+xlhmCyMFGU3ocrwt2vmXgxKslZstkAXw8h+MR3Zz8z Z6NZlST4hig1rHPgeNFlPcmbN1JALZ2WK3B3yjiaY7XvvoAKymdH5SUH97YHflytGwdv tVAwEnsD7d7bt3s+XZXlLb5h1LBObDGAICcs2pgCoNVdd420cTRoGGTGJ4ZlFdRyiHR0 R/6nRZM65ghHW1pu+v8Yg8MEW3gD6hADM1x8xEovC9SJoJmunuoLUXqyXH2cKMF4iVfW amWkBHQGLXSrcN62xVCuuQtHoDBmpbEVyr7awF7wDGthJg+IrxHT36DUMMzMTh6KSc00 iYzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828933; x=1767433733; 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; bh=i6Mev8YzRHp6WV8Umh9a3vKCUUeFnkL4NvERv9PBdwQ=; b=bE+VMQOG/iOLkO4ngokZuFJnn27Fo0gKHkm9EHicBkENv/6iof11wA64nYX5/SZL0b uWWzS2fJRktrQBn51g9ewaTBSFsH8te5z+7U1Z0wIoSNdNbfT3knxEacO/iyfYKgxIIn VmnhURiYsFDjgr4ozQNwPpMsSHw+QwLy1WFlSycRe1E7ZhwpvcIxV44piBjSw/c2yEIi UtIATdbiHYtZD0kmUPi8OuU8oO6Gd0QB7KQofuBpSauSLEEpT36LKyYl9+IU/yx9q5Pi 4fjk/UP1DxNsngHjl1ic6+z4w0z7FXM+ma0uDN17bH39C02wC1+H/+j4NM+nfcCkYPm+ lRrQ== X-Gm-Message-State: AOJu0YylJRRY/v0zs7SeeZvGYDy7QbvUW3MP0XUVV7NCkivghbhqtubK 0Qg30AYz+YF7cpW4i3PybReANPfIQadtsjgcSoM4rO37xBsOaqgiztc9zxfOktPN5ce+YVTosmu ToMjbHBwi9vsQMAaHBMDuvtLSrlvAK9U1wsgYXrvYaJgMGE5Ud6UVMGjbpI2qcgrV6vlrIUUATS M4S6zGMn/E4jMUBm6QmYpMJqh2i68gozXSz11YI2fj X-Gm-Gg: AY/fxX7o4w8mrUkahzzsPv3gG9eFvdhIQMmWCE/YaWU3Rq1xAZPOTW75IZG982k24rG KL08Eqyjq+NVymiutuRQXPMto8Rq4FKxjNQdzB6xZHerndki2BCac1ei2XqO6gwJCh2AOmNVzfb HkobACTM5UHiR6m5c38nGc9NIW8XGhdQIROai6I/qp52k1QcIZPho6xHBgkF61aXjXtcH9aeQ9I wClz6EqWSGXV/jHLjsRTk9519aDmrj+pBet1HDA//6bOOzbKC0mCi6R5nDtX089bZ5Rr6KVZ2XY HrCLsBJivP7Fw+Se4VR4s2JracyUuoYl9QTJlTDX22V+D4NC+7hmOYzqLHCW7DCi8bd49w2593I BbBdsGAWulmXHpJ7BopBe8qFx1YAAVxQ8ue5dvJnVU9JoXyRwPbVXT42ghp/prDNfYbWVKWR20q 60yA7v1nMR9KTK/88= X-Received: by 2002:a05:600c:154b:b0:458:a7fa:211d with SMTP id 5b1f17b1804b1-47d1958fd40mr260786455e9.29.1766828932817; Sat, 27 Dec 2025 01:48:52 -0800 (PST) X-Google-Smtp-Source: AGHT+IFFRcfLAS0r1FKE/66bgkCdoDHK3lcsa+a1y+vuEsLeKKx+K20YUrQk1CUJ0p3W6aTTItKkuA== X-Received: by 2002:a05:600c:154b:b0:458:a7fa:211d with SMTP id 5b1f17b1804b1-47d1958fd40mr260786225e9.29.1766828932307; Sat, 27 Dec 2025 01:48:52 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Xudong Hao Subject: [PULL 097/153] i386/cpu: Cache EGPRs in CPUX86State Date: Sat, 27 Dec 2025 10:47:02 +0100 Message-ID: <20251227094759.35658-23-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766828970764158500 Content-Type: text/plain; charset="utf-8" From: Zide Chen Expend general registers array "regs" of CPUX86State to cache entended GPRs. Tested-by: Xudong Hao Signed-off-by: Zide Chen Co-developed-by: Zhao Liu Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211070942.3612547-4-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- target/i386/cpu.h | 7 +++++-- target/i386/xsave_helper.c | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 05e297e6bb5..471d3931056 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -1664,12 +1664,15 @@ typedef struct { uint64_t mask; } MTRRVar; =20 +#define CPU_NB_EREGS64 32 #define CPU_NB_REGS64 16 #define CPU_NB_REGS32 8 =20 #ifdef TARGET_X86_64 +#define CPU_NB_EREGS CPU_NB_EREGS64 #define CPU_NB_REGS CPU_NB_REGS64 #else +#define CPU_NB_EREGS CPU_NB_REGS32 #define CPU_NB_REGS CPU_NB_REGS32 #endif =20 @@ -1901,7 +1904,7 @@ typedef struct CPUCaches { =20 typedef struct CPUArchState { /* standard registers */ - target_ulong regs[CPU_NB_REGS]; + target_ulong regs[CPU_NB_EREGS]; target_ulong eip; target_ulong eflags; /* eflags register. During CPU emulation, CC flags and DF are set to zero because they are @@ -1958,7 +1961,7 @@ typedef struct CPUArchState { float_status mmx_status; /* for 3DNow! float ops */ float_status sse_status; uint32_t mxcsr; - ZMMReg xmm_regs[CPU_NB_REGS =3D=3D 8 ? 8 : 32] QEMU_ALIGNED(16); + ZMMReg xmm_regs[CPU_NB_EREGS] QEMU_ALIGNED(16); ZMMReg xmm_t0 QEMU_ALIGNED(16); MMXReg mmx_t0; =20 diff --git a/target/i386/xsave_helper.c b/target/i386/xsave_helper.c index 996e9f3bfef..bab22587320 100644 --- a/target/i386/xsave_helper.c +++ b/target/i386/xsave_helper.c @@ -140,6 +140,14 @@ void x86_cpu_xsave_all_areas(X86CPU *cpu, void *buf, u= int32_t buflen) =20 memcpy(tiledata, &env->xtiledata, sizeof(env->xtiledata)); } + + e =3D &x86_ext_save_areas[XSTATE_APX_BIT]; + if (e->size && e->offset && buflen) { + XSaveAPX *apx =3D buf + e->offset; + + memcpy(apx, &env->regs[CPU_NB_REGS], + sizeof(env->regs[CPU_NB_REGS]) * (CPU_NB_EREGS - CPU_NB_REG= S)); + } #endif } =20 @@ -275,5 +283,13 @@ void x86_cpu_xrstor_all_areas(X86CPU *cpu, const void = *buf, uint32_t buflen) =20 memcpy(&env->xtiledata, tiledata, sizeof(env->xtiledata)); } + + e =3D &x86_ext_save_areas[XSTATE_APX_BIT]; + if (e->size && e->offset) { + const XSaveAPX *apx =3D buf + e->offset; + + memcpy(&env->regs[CPU_NB_REGS], apx, + sizeof(env->regs[CPU_NB_REGS]) * (CPU_NB_EREGS - CPU_NB_REG= S)); + } #endif } --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829313; cv=none; d=zohomail.com; s=zohoarc; b=m8vuy9a7w7EW7GtqpuDJIeCt8yXgxw5wcnHSpZIWdDIEsC4pMHtfHN+3VE8WuYCU59R+J0yjfzTGuxZK0/AOiRpsv96GGRzKRwA2TW9jY2tP5c7JkP3MaAUTQ1QOhP/RF5yeb1y92/7YBWvtaFj2qfp6ZQcsNVZrdpwRaKRewTU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829313; 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=LCrPm+mupOMDZG9CEqWstk/Ar+Uz/0tVlPBTLpw4mAQ=; b=bM/siOp4ZqxJ3cC6nL2cpoS8DzumxMjZyfzcfsmMuvkp90FVF5ezPYZmY4bS5O73e/zuJQPF/tru/XFhP8AsUGzYZTsF8E8RifzoCdRZ2s5P0KLc/ep7Xb62DONf3P21IiHiFtfH7uYvDEDK0vX7hwv+4+plZIWEjOfG7yl+uIw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829313099874.0606315373744; Sat, 27 Dec 2025 01:55:13 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQv0-0003hP-HL; Sat, 27 Dec 2025 04:49:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuy-0003g1-Ld for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:00 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQuw-0006y3-QM for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:00 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-682-VGcFBOp1OC25AJ2MA61S4g-1; Sat, 27 Dec 2025 04:48:56 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-47d3ba3a49cso30836595e9.2 for ; Sat, 27 Dec 2025 01:48:56 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be395d9cfsm199728055e9.0.2025.12.27.01.48.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:48:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828938; 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=LCrPm+mupOMDZG9CEqWstk/Ar+Uz/0tVlPBTLpw4mAQ=; b=RcWKminAJI4yRwMi+u/W7GAAro2Od1jzMS0sv/X9JUNM+0Ub4wa5wesq08uRKNWmtPHjsW zlSa6x7GC9LjdGh3UU6dvBvOP03gQtCvVdzC3dzP/0gLYiLDmVde8CkXtCHe1kHJd35Vn9 c3LX8Ch1CXze9ywyf8wihH4V0np+5Rs= X-MC-Unique: VGcFBOp1OC25AJ2MA61S4g-1 X-Mimecast-MFC-AGG-ID: VGcFBOp1OC25AJ2MA61S4g_1766828936 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828935; x=1767433735; 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; bh=LCrPm+mupOMDZG9CEqWstk/Ar+Uz/0tVlPBTLpw4mAQ=; b=g4HaaZ4+GaN2j6BbfmWxY3nmMi5EveAW8KtD5jgOeayahmp/2vK/4b4eg9d7ongDT9 slUXvc4HQyLfviG/EBDSBlDsplZwq1Tj7I6MgO2wHPzeXvGmTofOGGMfXhoaNji8o+Ie I+B1BOZd1mGz3ZCdCHFsTzfNmooWoTVog92Y/bxka99b0GTqb1aybnKPsdyvbfXy6cQB xGxWChDDig15XAjSZXr6W8Dr2gq6wzZ/ISgNSHeTu/wPHXslbT+g0UADphWIuW4o9dWx qqTnjwePYlfKG81a4lSVx7xOvV/gFQ2g9FfbZu0KBKH3wbL3tH7ZUiAX3Ldohek2FE0t Nb5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828935; x=1767433735; 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; bh=LCrPm+mupOMDZG9CEqWstk/Ar+Uz/0tVlPBTLpw4mAQ=; b=mzJ+wsIvfQl9HhddkxVNvBFCz+Z2sGDxrGivCCicB9xFN8kIfWf5kB+Cy/jXjU4a4S vLFX09PMvLAkxG9Tq45xv2lowjWvtixGMmyON1Hicv+NSJ83K8O1FTnFpuWcL75/XQAB zhpy3vjb4x9Qmde1KQE5w1kMZGkLIWCg6ZDCwimqPSn3FRUSiEBp1Ah8aczeYCaevael uGLGS9ZrrIkyOLEXhnatfaWiRFJwuMztUuAjcYEs5smaBkZL+kj2XiVhiTp4ax8HyU6E roPOtjErdyidHI9Zkx+71qD+LvRXYgTgLvv4CBlrYOF6n1cHgi000/k70XTsNMkDMhrm z7Og== X-Gm-Message-State: AOJu0YytRZC6X9FSPe9QFALT3ag6vfXvs6p+68V8gNa6PFK9jLMF4S4y SM55u5BbIPwyAs3I+sV+u6r+1W7rBC213CH3oOrLLGYr4fEeqhbLfXXF4NQtJQU111vWVEk8snG /FvOB+cH8/ChC+in5CrCHhwmgkjbFAP6w8lLCnQrPXvEKWTzSc2FY9nd+5YaAX8wpTC4eef7xqo u3gp5LHiuFJP/HL8/wvXdj8h0qzLam0oSzXS4BfbQ5 X-Gm-Gg: AY/fxX7PWYJPuqYdlv+UKM9IDR93hgnZrJDarQN3AWNx6UbpoEccAjm3MdoXpiZYXyr GvMPl4udQy1EHWlf9dXvRsVXaUCllCxSdm6S/MASmIfASJ5illjJx1X4oTu+I0oNOw6XA17SHPv u03paPjU9HvOrLap136WUXeUK00ySV3zpmbhw3u3tAytF5QLJbdDbzAePQdtFkvlPB/DPbeud2T SmIvx4/7ObUWrvFRLZKxuuLwyPt9Qv7ZfWaa675nzZkYyz8LjwCHm3TZVG3zMauSrVR4RcXSkzQ dm7kT3YWPIRe1Vt4nc8/iGmbXoiKiwQbio1NBFrIjgY39Hf4T61mxy8vEJRTHSmgf/UHf65b2g6 149t7+ZcDeNiro/2+FuYbP4rb/7ZCa5HHS7v/k2UALz/3+Ijkq/WE3lRquNbotXORe8JCYkJn0q /wnKgEYTAvZfuYjgE= X-Received: by 2002:a05:600c:4711:b0:47a:9560:5944 with SMTP id 5b1f17b1804b1-47d195c1a71mr306892365e9.34.1766828934810; Sat, 27 Dec 2025 01:48:54 -0800 (PST) X-Google-Smtp-Source: AGHT+IEfcOYJlqUAF9e9uJYTi/XgJW0tStHVgkxGL+th2WeRl/AOYC6hzBFIqZHt01gRnqXNK7oDdw== X-Received: by 2002:a05:600c:4711:b0:47a:9560:5944 with SMTP id 5b1f17b1804b1-47d195c1a71mr306892035e9.34.1766828934325; Sat, 27 Dec 2025 01:48:54 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Xudong Hao Subject: [PULL 098/153] i386/gdbstub: Add APX support for gdbstub Date: Sat, 27 Dec 2025 10:47:03 +0100 Message-ID: <20251227094759.35658-24-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829313837158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Add i386-64bit-apx.xml from gdb to allow QEMU gdbstub parse APX EGPRs, and implement the callbacks to allow gdbstub access EGPRs of guest. Suggested-by: Paolo Bonzini Tested-by: Xudong Hao Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211070942.3612547-5-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- configs/targets/x86_64-softmmu.mak | 2 +- target/i386/cpu.h | 16 +++++++ target/i386/gdbstub.c | 69 +++++++++++++++++++++++++++++- gdb-xml/i386-64bit-apx.xml | 26 +++++++++++ 4 files changed, 110 insertions(+), 3 deletions(-) create mode 100644 gdb-xml/i386-64bit-apx.xml diff --git a/configs/targets/x86_64-softmmu.mak b/configs/targets/x86_64-so= ftmmu.mak index 5619b2bc686..5180560d4d6 100644 --- a/configs/targets/x86_64-softmmu.mak +++ b/configs/targets/x86_64-softmmu.mak @@ -2,5 +2,5 @@ TARGET_ARCH=3Dx86_64 TARGET_BASE_ARCH=3Di386 TARGET_KVM_HAVE_GUEST_DEBUG=3Dy TARGET_KVM_HAVE_RESET_PARKED_VCPU=3Dy -TARGET_XML_FILES=3D gdb-xml/i386-64bit.xml +TARGET_XML_FILES=3D gdb-xml/i386-64bit.xml gdb-xml/i386-64bit-apx.xml TARGET_LONG_BITS=3D64 diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 471d3931056..691ed974684 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -61,6 +61,22 @@ enum { R_R13 =3D 13, R_R14 =3D 14, R_R15 =3D 15, + R_R16 =3D 16, + R_R17 =3D 17, + R_R18 =3D 18, + R_R19 =3D 19, + R_R20 =3D 20, + R_R21 =3D 21, + R_R22 =3D 22, + R_R23 =3D 23, + R_R24 =3D 24, + R_R25 =3D 25, + R_R26 =3D 26, + R_R27 =3D 27, + R_R28 =3D 28, + R_R29 =3D 29, + R_R30 =3D 30, + R_R31 =3D 31, =20 R_AL =3D 0, R_CL =3D 1, diff --git a/target/i386/gdbstub.c b/target/i386/gdbstub.c index 04c49e802d7..be41601cffc 100644 --- a/target/i386/gdbstub.c +++ b/target/i386/gdbstub.c @@ -27,9 +27,11 @@ #endif =20 #ifdef TARGET_X86_64 -static const int gpr_map[16] =3D { +static const int gpr_map[CPU_NB_EREGS] =3D { R_EAX, R_EBX, R_ECX, R_EDX, R_ESI, R_EDI, R_EBP, R_ESP, - 8, 9, 10, 11, 12, 13, 14, 15 + R_R8, R_R9, R_R10, R_R11, R_R12, R_R13, R_R14, R_R15, + R_R16, R_R17, R_R18, R_R19, R_R20, R_R21, R_R22, R_R23, + R_R24, R_R25, R_R26, R_R27, R_R28, R_R29, R_R30, R_R31, }; #else #define gpr_map gpr_map32 @@ -444,8 +446,71 @@ static int x86_cpu_gdb_write_linux_register(CPUState *= cs, uint8_t *mem_buf, =20 #endif =20 +#ifdef TARGET_X86_64 +static int i386_cpu_gdb_get_egprs(CPUState *cs, GByteArray *mem_buf, int n) +{ + CPUX86State *env =3D &X86_CPU(cs)->env; + + if (n >=3D 0 && n < EGPR_NUM) { + /* EGPRs can be only directly accessible in 64-bit mode. */ + if (env->hflags & HF_CS64_MASK) { + return gdb_get_reg64(mem_buf, env->regs[gpr_map[n + CPU_NB_REG= S]]); + } else { + return gdb_get_regl(mem_buf, 0); + } + } + + return 0; +} + +static int i386_cpu_gdb_set_egprs(CPUState *cs, uint8_t *mem_buf, int n) +{ + CPUX86State *env =3D &X86_CPU(cs)->env; + + if (n >=3D 0 && n < EGPR_NUM) { + /* + * EGPRs can be only directly accessible in 64-bit mode, and requi= re + * XCR0[APX_F] (at least for modification in gdbstub) to be enable= d. + */ + if (env->hflags & HF_CS64_MASK && env->xcr0 & XSTATE_APX_MASK) { + env->regs[gpr_map[n + CPU_NB_REGS]] =3D ldtul_p(mem_buf); + + /* + * Per SDM Vol 1, "Processor Tracking of XSAVE-Managed State", + * XSTATE_BV[i] *may* be either 0 or 1 if the state component = is + * in its initial configuration. + * + * However, it is observed on Diamond Rapids (DMR) that + * XSTATE_BV[APX_F] is set whenever EGPRs are modified, regard= less + * of the value written (even if zero). + * + * Since GDB modifies the software register cache directly, + * manually force the bit set to emulate this behavior observed + * on hardware. + */ + if (!(env->xstate_bv & XSTATE_APX_MASK)) { + env->xstate_bv |=3D XSTATE_APX_MASK; + } + } + return sizeof(target_ulong); + } + return 0; +} +#endif + void x86_cpu_gdb_init(CPUState *cs) { +#ifdef TARGET_X86_64 + CPUX86State *env =3D &X86_CPU(cs)->env; + + if (env->features[FEAT_7_1_EDX] & CPUID_7_1_EDX_APXF) { + gdb_register_coprocessor(cs, i386_cpu_gdb_get_egprs, + i386_cpu_gdb_set_egprs, + gdb_find_static_feature("i386-64bit-apx.x= ml"), + 0); + } +#endif + #ifdef CONFIG_LINUX_USER gdb_register_coprocessor(cs, x86_cpu_gdb_read_linux_register, x86_cpu_gdb_write_linux_register, diff --git a/gdb-xml/i386-64bit-apx.xml b/gdb-xml/i386-64bit-apx.xml new file mode 100644 index 00000000000..11a4ec67cae --- /dev/null +++ b/gdb-xml/i386-64bit-apx.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766828979; cv=none; d=zohomail.com; s=zohoarc; b=Nb2rxhv0hwUoaDuKMA1hUvVAJ8BT6sNiBJHoMloTZdCj+IL5UAN61UVtvZt8QdWi74UhdY7pvFlFWMq9K+juHT42D3x0BufhtG4NLzqT27Y4ZI+IhObeiwf5vZcQb/On6q6Y8nPJRO9dr7adQmxZqMdfrvq2feTrRUlXByIO/yM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766828979; 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=hIaH610boA68Cw25EB3fW2+vUx9RyZV3yzcJ036ng3M=; b=A7roH30dIKz5ggYPK3l1rYAtPJqMraRn2C7b+HgSJwmvWRejR6zn1wlDlDLpfvzpw29vlfRtJSI87BBE6cNB/cNdwavu8JNO0uALTpaoAxQjsfonyZ+ZV2fexvjX7C93UdJ+XbkO6DDCq9bNulKkNlZYOhI/gEiUOGie2S4Y0iY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17668289793281020.2558016214174; Sat, 27 Dec 2025 01:49:39 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQv6-0004CX-HX; Sat, 27 Dec 2025 04:49:08 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQv4-0003za-OL for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:06 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQv3-0006yi-70 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:06 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-122-AvYUGmFiPxqQzwsNXOAcpw-1; Sat, 27 Dec 2025 04:49:02 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-4775d110fabso65567095e9.1 for ; Sat, 27 Dec 2025 01:49:01 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-432613f7e6esm38863255f8f.21.2025.12.27.01.48.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:48:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828944; 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=hIaH610boA68Cw25EB3fW2+vUx9RyZV3yzcJ036ng3M=; b=HF6hHLsExwOPTPcUnj4qwMfdKT+xQ+a4lLsZ3GHnHL1BKp5nVscKNJyAZMVgfZ8Oz1GeDp ORTXp5Be09EV8gNdBMJm09XA/RSFrkEt7AQtF99y/UpnBPsTIcntGdrFJZDn8sANUNAE2+ iWOMvjEMdFl+JXDtkDN28n/eZZeGbmk= X-MC-Unique: AvYUGmFiPxqQzwsNXOAcpw-1 X-Mimecast-MFC-AGG-ID: AvYUGmFiPxqQzwsNXOAcpw_1766828941 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828940; x=1767433740; 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; bh=hIaH610boA68Cw25EB3fW2+vUx9RyZV3yzcJ036ng3M=; b=nw1RqtDWxxk10uUurnY1bYJePt7mXn0wbL6iOIzkRZr7+p2BKkbo/Pi8HEmOywfv2H fCF1bosoI1v2Bp55umk1QeQCz98wQIMBNR8VfGXQ4p3S9VaFL0TBikQTY5e4mLw2IGQo qgmx+ZzDHw7+5ImyjGpV4AlF+JLY5AZ4qeax+cjDIF/jbkvCIzKKlbK67cGZPgZ4EtKv lnACfgJ8pbtGotS5KXKQCkmDcIv26JiAB1X8DzjbMWJIAc9xt7qmjKfbmjBiGNNoSkqs V8Dk7IWu84TTq7ml1xJ//x9lS+4QpXQAy82Pe4x9Ox6jTRbuaxQctajEK3OTuMIRn8jp 2O4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828940; x=1767433740; 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; bh=hIaH610boA68Cw25EB3fW2+vUx9RyZV3yzcJ036ng3M=; b=PDnajlRsRgZnQ8/AGI2w8+QnhHSilFQpUCKcleZ7KttaS+et6ME775qKCe0FlncF3C eMoTur2T7NZ2wNqWEl9vWHybD/x/PjCxzAob0OgJbp3RCWs4W5Vdg9jLbqf0qj5cpoBz IVKyoisV05eE22sWE175O62II+Y/+uWcVpUzkYFoZnFcZe7JYldNdulDUjzh3GwIORCS EJC1+86pIjv0lGe5f1uXLhXTZxCE38PJsuyCuH8Z9bRN1m2uEqKH8+r1lEkGPRrfBhIz Vdxw6QxJ6WYsXwJrhsbIkFt3BwclFBDpovaCZgkZKWOSj78WXQUmlyZhQX04F8N6zzqr Be2g== X-Gm-Message-State: AOJu0YwWZeHdcK39F+YeClfa8gBm7e/LMgA1LF9pIY5s+JDiPj81OqHM NrOJ2EejfiekRL+Pde40PVhC68u9Cczr6WZ+1kTPx843O5tDyDmi8y6giJW/1sIHGSJLj7UEAqi I7XYTJHoh/uRHwDRX+VphVTJd/ZVfNDVmx45jCAjtjOBAa8vsVLxKtSxEhHTInBKWbkqRMSIGWu Sjqz4lQUoSmty2ZHQynn9d0nAeKQhTdKjiLoCGL22q X-Gm-Gg: AY/fxX5tIMzMlsC+ht+THpJ9pHyKInmZmH/DFA82/WZkpjylrOo6OmQwY53RjXY8lTu egUzR6FJIYS4vnxaQuNmfe72dA4dbYbR1RWvPDQBLHLICNR6Kx5cMQRcbfJDoQiF+bwysoHLLv7 kAsRciL7roft1NOTTCqUI+aL8mOruHxTydIyoG0YJN5WSClYrezUv0GvFQ+r+P7sJT+R+zopsYM Md2bgWF1GXnr8mSxo7928gkAjIbmeugyFb+32zVfLZCMLAJO1xknx7tS4RkECUDcExmYM0IdMnz I4D2oJbJpXs9aVGorUzhjwzXUzwXtZsOHaF0fIAjfpDVEciizGhJwQawQMRwuyM0rCjQ7jWgC66 iETBLykhzjm3gcgc49S8DQ5SeW/rLeMLsoUOrLlWgzxnu56zpDtWrK/+/FEY1f2s0nJypESVvKq L6ZqPGXgRQ/Z+s6jY= X-Received: by 2002:a05:600c:8107:b0:477:7f4a:44b0 with SMTP id 5b1f17b1804b1-47d1959441fmr284150325e9.33.1766828940110; Sat, 27 Dec 2025 01:49:00 -0800 (PST) X-Google-Smtp-Source: AGHT+IH2hfAu96aEX0mwkZfxPViwFEbMDzY7xfr2oY7jQhh83oApdRpcTn+kl34I1reovWlz+REdxg== X-Received: by 2002:a05:600c:8107:b0:477:7f4a:44b0 with SMTP id 5b1f17b1804b1-47d1959441fmr284149895e9.33.1766828939113; Sat, 27 Dec 2025 01:48:59 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Xudong Hao Subject: [PULL 099/153] i386/cpu-dump: Dump entended GPRs for APX supported guest Date: Sat, 27 Dec 2025 10:47:04 +0100 Message-ID: <20251227094759.35658-25-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766828980686158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Dump EGPRs when guest supports APX. Suggested-by: Paolo Bonzini Tested-by: Xudong Hao Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211070942.3612547-6-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- target/i386/cpu-dump.c | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/target/i386/cpu-dump.c b/target/i386/cpu-dump.c index 67bf31e0caa..ed8fd363c6b 100644 --- a/target/i386/cpu-dump.c +++ b/target/i386/cpu-dump.c @@ -354,8 +354,7 @@ void x86_cpu_dump_state(CPUState *cs, FILE *f, int flag= s) qemu_fprintf(f, "RAX=3D%016" PRIx64 " RBX=3D%016" PRIx64 " RCX=3D%= 016" PRIx64 " RDX=3D%016" PRIx64 "\n" "RSI=3D%016" PRIx64 " RDI=3D%016" PRIx64 " RBP=3D%016= " PRIx64 " RSP=3D%016" PRIx64 "\n" "R8 =3D%016" PRIx64 " R9 =3D%016" PRIx64 " R10=3D%016= " PRIx64 " R11=3D%016" PRIx64 "\n" - "R12=3D%016" PRIx64 " R13=3D%016" PRIx64 " R14=3D%016= " PRIx64 " R15=3D%016" PRIx64 "\n" - "RIP=3D%016" PRIx64 " RFL=3D%08x [%c%c%c%c%c%c%c] CPL= =3D%d II=3D%d A20=3D%d SMM=3D%d HLT=3D%d\n", + "R12=3D%016" PRIx64 " R13=3D%016" PRIx64 " R14=3D%016= " PRIx64 " R15=3D%016" PRIx64 "\n", env->regs[R_EAX], env->regs[R_EBX], env->regs[R_ECX], @@ -371,7 +370,32 @@ void x86_cpu_dump_state(CPUState *cs, FILE *f, int fla= gs) env->regs[12], env->regs[13], env->regs[14], - env->regs[15], + env->regs[15]); + + if (env->features[FEAT_7_1_EDX] & CPUID_7_1_EDX_APXF) { + qemu_fprintf(f, "R16=3D%016" PRIx64 " R17=3D%016" PRIx64 " R18= =3D%016" PRIx64 " R19=3D%016" PRIx64 "\n" + "R20=3D%016" PRIx64 " R21=3D%016" PRIx64 " R22=3D= %016" PRIx64 " R23=3D%016" PRIx64 "\n" + "R24=3D%016" PRIx64 " R25=3D%016" PRIx64 " R26=3D= %016" PRIx64 " R27=3D%016" PRIx64 "\n" + "R28=3D%016" PRIx64 " R29=3D%016" PRIx64 " R30=3D= %016" PRIx64 " R31=3D%016" PRIx64 "\n", + env->regs[16], + env->regs[17], + env->regs[18], + env->regs[19], + env->regs[20], + env->regs[21], + env->regs[22], + env->regs[23], + env->regs[24], + env->regs[25], + env->regs[26], + env->regs[27], + env->regs[28], + env->regs[29], + env->regs[30], + env->regs[31]); + } + + qemu_fprintf(f, "RIP=3D%016" PRIx64 " RFL=3D%08x [%c%c%c%c%c%c%c] = CPL=3D%d II=3D%d A20=3D%d SMM=3D%d HLT=3D%d\n", env->eip, eflags, eflags & DF_MASK ? 'D' : '-', eflags & CC_O ? 'O' : '-', --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829292; cv=none; d=zohomail.com; s=zohoarc; b=aGVnv8vPoNxM01mlpMWYHWRWL7ND1QYWV1AaX1QJGSMj7WC5+hTUOqfV9nIQEwR7ilJONj2JSB3bkAKvaEG5Vo7SOFdhKicSW1CetJA+onZ3BnjZhfoca8VRAD3FkxsArqNukWxm1uS4+XhgLMO0rcX2AXHycsDCX4Mx19UMaLQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829292; 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=DxnDfLQvdu3TSi/2oTj0ek4cmNNQ1H4hkvCMk+FPjfk=; b=A4HU4YJ6emNSDoiFdSLfKFQmWcYbeHcS6ORH1BF9qiRSPZ4vLeO1fp/6n6QLRtzRWXeo1MyRbw8+tNPVoxn8QiaS5meWh6mxtW6J6nxnA2M+9J6TDI3NAKPtohyH9kKwKCH2fL8rxHNmTq+NKBk+P60sbjctFIiWowjpcOW7Fqo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829292605821.9045280293753; Sat, 27 Dec 2025 01:54:52 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQv7-0004KT-Jp; Sat, 27 Dec 2025 04:49:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQv6-00048G-0h for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:08 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQv4-0006yn-18 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:07 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-20-Z6gY1cOROuOZjjZiB2FaPg-1; Sat, 27 Dec 2025 04:49:04 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-4325ddc5babso2696575f8f.0 for ; Sat, 27 Dec 2025 01:49:03 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea1b36fsm49869093f8f.5.2025.12.27.01.49.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:49:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828945; 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=DxnDfLQvdu3TSi/2oTj0ek4cmNNQ1H4hkvCMk+FPjfk=; b=RzhCKZA7Pvir+nQPyJnLRJI/QpM0qZC6RIfK5QSxOIIPtc/q4Tziz4FpSx/HWVM4snIcSP rKBJb8u8zPC0Z58uxDfYuELq3uEg2EP97e46Rml2qOWlJ9qqh4R1W0vWzKPCcKYZZQODHJ 1PVoeJQ1RxmrVLQ7fZjZZ6fo0DlIgTg= X-MC-Unique: Z6gY1cOROuOZjjZiB2FaPg-1 X-Mimecast-MFC-AGG-ID: Z6gY1cOROuOZjjZiB2FaPg_1766828943 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828942; x=1767433742; 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; bh=DxnDfLQvdu3TSi/2oTj0ek4cmNNQ1H4hkvCMk+FPjfk=; b=DmOwr7dVkcdS31O0oI35PFFuFiL9MnR2I+DFgq5RaC4XuW3it5hVohXcjJpK4h+MfP G1mTL1w5JMsina8Tvs8p3LnKe9ek6cdFNZViELQgaLeBuH0EOQGmUs99UttjmeuQTQWt /hYFDsdGxtuBFTZKjJnoCGaGrBi5to1pEnZ3u2lMtodlz2E3LApMIXqiMlm/OR8Ezifc 8OmV5I1Z5pcITXzBw7YZfV0zoK31SMgiirTA4dPmEBboHo2bvqTftEByB+7PeI1o+XC0 bKtlwbpWeh6fesk4maernMhXojZwawa3v7E9P2Clpb/bsrRj8qAUj2pQOG5Z0cgYaFRN kYtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828942; x=1767433742; 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; bh=DxnDfLQvdu3TSi/2oTj0ek4cmNNQ1H4hkvCMk+FPjfk=; b=q4+9uHFLyfHyoLsWGw1UdrRbOn+CA9On/wLF5wD7u9n4ZpHEdhKhNCJ8S2L2HJ1aJW VFbJGJc36aLoK51o79Qvtf3tkCHWq633dDV769ocNHbx3KuvdQYeGj/NGRCLmxua+sNy 5lzO/X5h4Cf5A7zFO9TOsBoMEQIc/s2yo2diULF9t5XibxxIjAtw7lsKukrlI3kO1yQA 4onctgCWTQNIzDIFJ7iPo4KFAncuLDAb3wXx5HtZAyY32FdTRrV0r7s/oxP+WFqpPBvz xw5oOe2upUxKL+zSDZQTcPVhnFsj0OR+4e7wVGxZ3HoOUmptM4FW5bZ3EWQ0n9B0BETM 1G1A== X-Gm-Message-State: AOJu0YxsLVtrwPNh8x/B/FQPyRcdqw8hhdeRS2AG4gflM5gyMfu3+b4o 3qoCVyh6dSsQBDcvVKZW2ZZ89COypS7wV0AMFXwF3wQ/Q91kS+JPLk5ik8vrv6Zo60YRbZejMCR M24K4DvnH7ljSVVOJzC3BQY9nDe7Tm0tSN/n5pju+aiucZHUU0Tto6AP0Y+xRY9Gla3k6aVrziu 4WbvLEdOennFf0fh80WGcIRzNoKyBzFSmMjnoAvz7g X-Gm-Gg: AY/fxX6C835IZk+pgsfqHmAf7TkcNe9QTr0CgZYxWgl8OmnNwezNYXdjsJ7AbVC1zV3 0niToPZxRQixEgko38OQFO1HdHzUhLhwDnCyPPokujyDj7mFSKAYKZSZ2LiovBfX4+bD4V973cL a2WrGiVoLXfDpFgxJOv9xOpGT9WY7VNISBlkrDCDFM823M2bkbgdfKLQv0mkhl3K2q0uts3sK6Z AyIf50s8hiBXxLwMFkbbV86bOgX/wcjUiNpZq5DOF1hGgExnB/zFlIB75FqL0d532qjld33zW+2 CDBm7i3LB9LEJtP4oLzmgI+PQ9jI8toqjTPMoApgHhoDGVwA61GgyC9N0C9F0Z6SzCDuUm42UV/ h/85GQ4kFL5MExY/R7Lm3T5fn7mWjBkhrvu8ZTKRIIJ+qDWPsdyXL4JQAT5ICDtcVX8SqLntrG+ i29pjJlDmlTFlahfA= X-Received: by 2002:a05:6000:26d0:b0:430:fd84:3175 with SMTP id ffacd0b85a97d-4324e503ec6mr30504327f8f.38.1766828942113; Sat, 27 Dec 2025 01:49:02 -0800 (PST) X-Google-Smtp-Source: AGHT+IEbnaaZNWBa9BENaOGla9HJ1J0/EyvKnGMH7WYRPVI7pELzCQQv7qM0RNNTIaNGpqjvcoE9CA== X-Received: by 2002:a05:6000:26d0:b0:430:fd84:3175 with SMTP id ffacd0b85a97d-4324e503ec6mr30504308f8f.38.1766828941683; Sat, 27 Dec 2025 01:49:01 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Xudong Hao Subject: [PULL 100/153] i386/monitor: Support EGPRs in hmp_print Date: Sat, 27 Dec 2025 10:47:05 +0100 Message-ID: <20251227094759.35658-26-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829293689158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Add EGPRs in monitor_defs[] to allow HMP to access EGPRs. For example, (qemu) print $r16 Since monitor_defs[] is used for read-only case, no need to consider xstate synchronization issues that might be caused by modifying EGPRs (like what gdbstub did). Suggested-by: Paolo Bonzini Tested-by: Xudong Hao Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211070942.3612547-7-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- target/i386/monitor.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/target/i386/monitor.c b/target/i386/monitor.c index d2bb873d494..99b32cb7b0f 100644 --- a/target/i386/monitor.c +++ b/target/i386/monitor.c @@ -623,6 +623,22 @@ const MonitorDef monitor_defs[] =3D { { "r13", offsetof(CPUX86State, regs[13]) }, { "r14", offsetof(CPUX86State, regs[14]) }, { "r15", offsetof(CPUX86State, regs[15]) }, + { "r16", offsetof(CPUX86State, regs[16]) }, + { "r17", offsetof(CPUX86State, regs[17]) }, + { "r18", offsetof(CPUX86State, regs[18]) }, + { "r19", offsetof(CPUX86State, regs[19]) }, + { "r20", offsetof(CPUX86State, regs[20]) }, + { "r21", offsetof(CPUX86State, regs[21]) }, + { "r22", offsetof(CPUX86State, regs[22]) }, + { "r23", offsetof(CPUX86State, regs[23]) }, + { "r24", offsetof(CPUX86State, regs[24]) }, + { "r25", offsetof(CPUX86State, regs[25]) }, + { "r26", offsetof(CPUX86State, regs[26]) }, + { "r27", offsetof(CPUX86State, regs[27]) }, + { "r28", offsetof(CPUX86State, regs[28]) }, + { "r29", offsetof(CPUX86State, regs[29]) }, + { "r30", offsetof(CPUX86State, regs[30]) }, + { "r31", offsetof(CPUX86State, regs[31]) }, #endif { "eflags", offsetof(CPUX86State, eflags) }, { "eip", offsetof(CPUX86State, eip) }, --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829236; cv=none; d=zohomail.com; s=zohoarc; b=HbLEprjBozTwe/KKA7F6YM/AmDTDR5zQ6Ai6dVkdBmWhPXYYrAj+IHoDRoe9f9Ew78+lALft5U+btROsUtE2uZJpw1L0FYL7cAOtVfC/XW46dntjstJYlrr4IChl0WpJjXs6OHwKE5EEMGmpraJRCqWE4ealAWih55c0UPXvi1k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829236; 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=tX8rMfJf3i4TUGuBky3KUxKbjgf7gMEJ2PzJvdcKBtc=; b=fSAgfuEhC6qIdn4cRoEY3+IQ1v6H87JPE2upsxZLwQhSH4vspFc61RMJzRBYK123KFp5Zf+ZKBAsBFPiAMVSeB527gGatcVubUdYoxTjMg+XkaYQ2SxVYA1ctmbo5txhVZ8o/KijBx+PncM7et5yUMXvxh0Cq58G1lP6wEcS9sU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829236568174.8225998816207; Sat, 27 Dec 2025 01:53:56 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQvA-0004Xa-BV; Sat, 27 Dec 2025 04:49:12 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQv8-0004VY-VU for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:10 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQv7-0006zP-9q for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:10 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-547--U-gxSjPPvOw6zDhi1brcg-1; Sat, 27 Dec 2025 04:49:07 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-4792bd2c290so73503705e9.1 for ; Sat, 27 Dec 2025 01:49:06 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be27b0d5asm490545865e9.13.2025.12.27.01.49.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:49:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828948; 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=tX8rMfJf3i4TUGuBky3KUxKbjgf7gMEJ2PzJvdcKBtc=; b=Tr2kG9fzG+6kI5E40PZl38lP1gxkOd2WV7467xTYUrgUsrEYQ8T+3fdRFll4g0ftxs8S6k UHx55HcPf7o2BphE5gxMm91a6uX4D7ODZ/h9IHvQjWa9vMdYmQdGvqMayAiE/aeJsDki73 v8CgvSEyNEY8rdBSuj/SBwPL64LzbXQ= X-MC-Unique: -U-gxSjPPvOw6zDhi1brcg-1 X-Mimecast-MFC-AGG-ID: -U-gxSjPPvOw6zDhi1brcg_1766828946 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828944; x=1767433744; 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; bh=tX8rMfJf3i4TUGuBky3KUxKbjgf7gMEJ2PzJvdcKBtc=; b=VMGv7EommblJjXh0gVM1OZ0+5/pNgxCfaysa7lPD2nTEWBlyVGdx0ibGrfDOfoUUfh 28YwBhRmAg+uOCFH6ZxNM43/r1OoPXpbn3grgHG7RJdpphSa18l3z2OwQZY2UOz4lrYC 1Ij6Ejgwpx/PVPtt2/X9aehuXqdhkgm107id/WZGTafgq74coNM88ihI1wJXPUvU9Mli 6XUdPMVd/ef/XZJlteLSBb9NK/NoPTCJ3bmbmsAunujpuGYaxte7rr4OQOBPVve7emLm /qGKWDSTAf0z/l4qPPSXK6YWpCIHNnMEu25gFJZSAK076UwkgUJPqCx1XxwEt8dcMpMy VDcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828944; x=1767433744; 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; bh=tX8rMfJf3i4TUGuBky3KUxKbjgf7gMEJ2PzJvdcKBtc=; b=DNVXw35sMe3wpC5MCn8Wpl679r+b8HxEGg6qjP2o/q0cATg3vSro0THVkb6UKLrtCG Dge6Cn5Qi2ErAx1j0doovA6Brv1JRqh+Mihwwp02t0BO1aKV9zFR8V3H/kQvqKMoPzNO CHNbtq5wZpeKw3FGPqZBFgM/CAZAJij+raXTtDmQke/y6d0GzUM/p8Bynk+HIRPy+Mxi 5qI/l3sQik93el8OljgziShQtCxh8G2bjN1BKufuv9O5SwN9T8Oejo+aLd/t6BgJAUK+ YNEMn6j0I43LWEGyuQbG0yCAjN4KUszsjrYsOVJXc6xSPkbYUdL3kZbBo0LQw3X7bjUR sqoA== X-Gm-Message-State: AOJu0Yxm1ClyaPd2Bzz/R+vqYf1yMJtyE/KlsntGgJXXKXiSkbtdTloo 55UTNNEWViWaL3dIneND5BF8olKae6bEeBdzH62vIPanlWF7BBZm7JdR0vuLoVpWof9auYHNwgv lmst/qVUbe/chqtZFjHnJFVs0Uoav5YD/DTnN2YRZhxv7d3STpnoDxiLKl/n271yUenr3YwCnJ1 eHyrhchOR2PO7sMXwhG982oxULzKEvpsdJ7gp7RXGS X-Gm-Gg: AY/fxX5s6tcEBZy8iDM38+5IlJU/NdeG/c4tA/tco/aHf+y3Wep/a1zo37EjADAw2dE MOI9+suf8C4lh0+SIHbV2smhyvAKyu4jWFNceFQWZVF91ipdIptEgtbuIdfITLaB9w8/lJYpweL uvFIHEcvFqpuld5OImgz3oqCkWoHW1+//m6qVmpKkQ7OyedDoCXMe4HIQZL1WaRpV5Nt2J6ehvv 6KEcXGs4CIRtJUPTWGmZQmKv9SItgE2k49Q6RxzZb8kfOotXIMw+pKC/EdRZ3ngWXnXDss3Wc7o gdIZlkMUarixNJcEdww4oxemkHh07r+uAy0m7o6ONw29x8plOQrWhC2WO8prjDhU5DJ47oZVfhM hQEKzQ30IxWxznTa1+nkV7lJyqFIqdLkd9dsBrTrgs9SHSpTQJo6+CjkqBbwphBPPD2kvWT3ORj 2+/z/M+tY3j5WySNI= X-Received: by 2002:a05:600c:4f09:b0:477:7bca:8b2b with SMTP id 5b1f17b1804b1-47d195672d1mr274919605e9.15.1766828944078; Sat, 27 Dec 2025 01:49:04 -0800 (PST) X-Google-Smtp-Source: AGHT+IFqCW1jNqtu1NSlWtDmTxZGatj49K6GWHWJz/AJUqh08cTySxz5I7JoicTxnq5eo+EE5DsOdQ== X-Received: by 2002:a05:600c:4f09:b0:477:7bca:8b2b with SMTP id 5b1f17b1804b1-47d195672d1mr274919415e9.15.1766828943666; Sat, 27 Dec 2025 01:49:03 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Xudong Hao Subject: [PULL 101/153] i386/cpu: Add APX migration support Date: Sat, 27 Dec 2025 10:47:06 +0100 Message-ID: <20251227094759.35658-27-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829237558158500 Content-Type: text/plain; charset="utf-8" From: Zide Chen Add a VMStateDescription to migrate APX EGPRs. Tested-by: Xudong Hao Signed-off-by: Zide Chen Co-developed-by: Zhao Liu Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211070942.3612547-8-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- target/i386/machine.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/target/i386/machine.c b/target/i386/machine.c index 0882dc3eb09..c9139612813 100644 --- a/target/i386/machine.c +++ b/target/i386/machine.c @@ -1741,6 +1741,28 @@ static const VMStateDescription vmstate_cet =3D { }, }; =20 +#ifdef TARGET_X86_64 +static bool apx_needed(void *opaque) +{ + X86CPU *cpu =3D opaque; + CPUX86State *env =3D &cpu->env; + + return !!(env->features[FEAT_7_1_EDX] & CPUID_7_1_EDX_APXF); +} + +static const VMStateDescription vmstate_apx =3D { + .name =3D "cpu/apx", + .version_id =3D 1, + .minimum_version_id =3D 1, + .needed =3D apx_needed, + .fields =3D (VMStateField[]) { + VMSTATE_UINTTL_SUB_ARRAY(env.regs, X86CPU, CPU_NB_REGS, + CPU_NB_EREGS - CPU_NB_REGS), + VMSTATE_END_OF_LIST() + } +}; +#endif + const VMStateDescription vmstate_x86_cpu =3D { .name =3D "cpu", .version_id =3D 12, @@ -1892,6 +1914,9 @@ const VMStateDescription vmstate_x86_cpu =3D { &vmstate_triple_fault, &vmstate_pl0_ssp, &vmstate_cet, +#ifdef TARGET_X86_64 + &vmstate_apx, +#endif NULL } }; --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829168; cv=none; d=zohomail.com; s=zohoarc; b=AsNDliUevErssRluG9tc45T6WPI3FuqRdGTu7FbTiEhnYaGALmv4eUDXcUAgrTmqERTuz4u4Th/8iinmGHOA/9VKbqhMFhkkJH5Si3VOlq7OJ2/eRpG3d2sNJBcvuz9bL+ia1AV5EfQwJMPGGx3xVF5jCXTLxlFmZgVo3yVW17g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829168; 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=DCo0WW35FwlSIdHbwn+36kcSmEpNticlzRreJHisgYM=; b=C3tWKRSsYz0n7VW/1ttCRljquuKAHg+TlyfZLsSYNpJFQyrsVKjs84eQBI9Sov3vK0hem/HKJD3y2W0cSliuOXaLMmnx8zDFwlWe+ncd4A5JUMY57ziTi5l4NyY3zxM1fCMVjYmy1eE0HQdhXGTWA5UKTB6170kooMs0JX75/dY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829168942959.8665985656922; Sat, 27 Dec 2025 01:52:48 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQvE-0004eK-QA; Sat, 27 Dec 2025 04:49:16 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvD-0004bh-Fq for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:15 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvB-0006zf-Dw for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:15 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-633-VkSZEnxoNFWzTUGzrp_FEw-1; Sat, 27 Dec 2025 04:49:11 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-47a83800743so43407965e9.0 for ; Sat, 27 Dec 2025 01:49:11 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be26a81b6sm499566245e9.0.2025.12.27.01.49.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:49:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828952; 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=DCo0WW35FwlSIdHbwn+36kcSmEpNticlzRreJHisgYM=; b=Sm1uaBYSa2zDgDDnwDRNaVFZ0yz1xww2dzX+eR0g02gwJJ7bxS2lqYZ/L6TFynbdXcNYBI J95mLnzo79/vWwfFXw8RfRZ1niuMuqkU8UBwzlRg3DEG7+qVm1E+t7G8yN0TzW/l0raoyX 2a5GI6oe26LI4oH6jwQx5Ea/m/MhAKg= X-MC-Unique: VkSZEnxoNFWzTUGzrp_FEw-1 X-Mimecast-MFC-AGG-ID: VkSZEnxoNFWzTUGzrp_FEw_1766828950 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828949; x=1767433749; 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; bh=DCo0WW35FwlSIdHbwn+36kcSmEpNticlzRreJHisgYM=; b=Jy8+Dl1maT6GrD6rHxv3J2oVJmSVwXasJj++udYhwGwQBlyPMGv46cnjTssOp2ACYA RuFQBCYpsVSlDvD5ejJlB34BaK+sXZB6RVjYzdUBT5FCrjSHG/CoNwLACCDI8Y344ys4 5S38KtFi/iuuLngRVV3Beoy+Dg87EP5ENDjD3krtGjN6iSpZ1jWgY1isKuKuO0+45qRT KHbR1kd+knB8hYsMt6npvrnM3sdxCryZXloweGI06Zphsx+ef8DKtlIYKJxrqGc4x/Rq bZ/6c1nY8BOkKHU4vHH4wIzE1Sr/EHAQ1TvC8vmDjOX061zqyH7DZh2A9gYFgpXXsS+k EuRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828949; x=1767433749; 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; bh=DCo0WW35FwlSIdHbwn+36kcSmEpNticlzRreJHisgYM=; b=ZMo1POsB3FjeEGhb6EAVgGbg4QIBP5cghcq86WXiittwFKx1XtHtv40Orh+G7Yy5q9 cN2zHIHfRSO6TgPKsPxHOwHJONoRhO6ZI6Ohrp3ptWXm/SkYxkVRf3LRoUxqKds+hIXY 8LHoqCsVXeGTVlkb+PJBHCyG+9MuwjX9iCLISLIL10sKj2LRqcBkpmwXE07cxba1X5Dp /CrdubQ8sLu+T5ch144hWo41MLfDqLaCK8zCoGs4VKBiJevHa9SNhexBTEEwzuJY3RBe cs3i/p9sK7Vud3arUS1RDo+ttyrLRQmtCxFpUDOEKob0qnBPcAfQfaQgrfEYpx3UFFv8 N2Vg== X-Gm-Message-State: AOJu0YyVR3/VgmuUdELHiyDCReWvrXuggNPgopWilCTGrGkm0O7A9sje Lky3NCKnaxaANqI2YW24maVRA8v0NgH2NmzCsVnaDNoTg8SmfgWiofIGPa4DqXMkY5X5UWBQFcr iItD/sfNW0mD4QVoZAaRr8yh9H+J5A6JVXbzeNqtipR29+dLJld4DMx162+u7ClNXLH1WC32bd4 33J+3K1u42XRmVZCmIm0jgVQLLP4L/fbJsTVf1otPx X-Gm-Gg: AY/fxX5YL7HW7EQOmZv0ZZoUF2DwYP3o+LQCCGDSaVJmOsyu81CxzCV1rVt3ixDDK8K imcxdIdRuY9+I9nK8vWNlT27P7FwC8xOHyWo3JbDXshBlbiPpQksJ1aFgn9YYEYvslfMgy3+sWt O3VqPLSZscmleXlKl5GWDu545y3BRnVzZr4drzJfV3/9uAGmmD8C22qhDwaubNliysv6Uk22CFk FFy+7PfVOjnq+BAixbSRKw1coCiRY1Q7JetlCEDAV0WmZ1gEoMmApP2yH/oHDuxRg8pLpyHuIm+ Iivs2Izin6THNP0cxWomV0PcJQJei5JW4BFvKxPNodpsr80AHOQ1XDNxo07H4FjxTQFFF3Pnfpf rPNa9Up0vbvRgFW71HGbuQ8999K625Ro17PGZ3cCMR5PflSEWfKs6aO9Hhd6WEZ4k4R2YPLALyF VCbt8NUC8IBnMrhpY= X-Received: by 2002:a05:600c:8b82:b0:47b:deb9:163d with SMTP id 5b1f17b1804b1-47d18b99b99mr262142495e9.7.1766828948834; Sat, 27 Dec 2025 01:49:08 -0800 (PST) X-Google-Smtp-Source: AGHT+IErKeyc4GIUQr2bEY7GdiO3LuoT+sQ2Qbc9eFpOCuNjKYa2268P8sjkr1sSqmHIwKDMMgweVA== X-Received: by 2002:a05:600c:8b82:b0:47b:deb9:163d with SMTP id 5b1f17b1804b1-47d18b99b99mr262142305e9.7.1766828948414; Sat, 27 Dec 2025 01:49:08 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Xudong Hao , Peter Fang Subject: [PULL 102/153] i386/cpu: Support APX CPUIDs Date: Sat, 27 Dec 2025 10:47:07 +0100 Message-ID: <20251227094759.35658-28-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829169385158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu APX is enumerated by CPUID.(EAX=3D0x7, ECX=3D1).EDX[21]. And this feature bit also indicates the existence of dedicated CPUID leaf 0x29, called the Intel APX Advanced Performance Extensions Leaf. This new CPUID leaf now is populated with enumerations for a select set of Intel APX sub-features. CPUID.(EAX=3D0x29, ECX=3D0) - EAX * Maximum Subleaf CPUID.(EAX=3D0x29, ECX=3D0).EAX[31:0] =3D 0 - EBX * Reserved CPUID.(EAX=3D0x29, ECX=3D0).EBX[31:1] =3D 0 * APX_NCI_NDD_NF CPUID.(EAX=3D0x29, ECX=3D0).EBX[0:0] =3D 1, which enumerates the presence of New Conditional Instructions (NCIs), explicit New Data Destination (NDD) controls, and explicit Flags Suppression (NF) controls for select sets of EVEX-encoded Intel APX instructions (present in EVEX map=3D4, and EVEX map=3D2 0x0F38). - ECX * Reserved CPUID.(EAX=3D0x29, ECX=3D0).ECX[31:0] =3D 0 - EDX * Reserved CPUID.(EAX=3D0x29, ECX=3D0).EDX[31:0] =3D 0 Note, APX_NCI_NDD_NF is documented as always enabled for Intel processors since APX spec (revision v7.0). Now any Intel processor that enumerates support for APX_F (CPUID.(EAX=3D0x7, ECX=3D1).EDX[21]) will also enumerate support for APX_NCI_NDD_NF. Tested-by: Xudong Hao Co-developed-by: Zide Chen Signed-off-by: Zide Chen Co-developed-by: Peter Fang Signed-off-by: Peter Fang Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211070942.3612547-9-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- target/i386/cpu.h | 8 ++++++++ target/i386/cpu.c | 40 +++++++++++++++++++++++++++++++++++++++- 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 691ed974684..fc634883649 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -710,6 +710,7 @@ typedef enum FeatureWord { FEAT_7_1_EDX, /* CPUID[EAX=3D7,ECX=3D1].EDX */ FEAT_7_2_EDX, /* CPUID[EAX=3D7,ECX=3D2].EDX */ FEAT_24_0_EBX, /* CPUID[EAX=3D0x24,ECX=3D0].EBX */ + FEAT_29_0_EBX, /* CPUID[EAX=3D0x29,ECX=3D0].EBX */ FEATURE_WORDS, } FeatureWord; =20 @@ -1092,6 +1093,13 @@ uint64_t x86_cpu_get_supported_feature_word(X86CPU *= cpu, FeatureWord w); CPUID_24_0_EBX_AVX10_256 | \ CPUID_24_0_EBX_AVX10_512) =20 +/* + * New Conditional Instructions (NCIs), explicit New Data Destination (NDD) + * controls, and explicit Flags Suppression (NF) controls for select sets = of + * EVEX-encoded Intel APX instructions + */ +#define CPUID_29_0_EBX_APX_NCI_NDD_NF (1U << 0) + /* RAS Features */ #define CPUID_8000_0007_EBX_OVERFLOW_RECOV (1U << 0) #define CPUID_8000_0007_EBX_SUCCOR (1U << 1) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 3c9ed7cd5f7..c9efd3a9d46 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -1036,6 +1036,7 @@ void x86_cpu_vendor_words2str(char *dst, uint32_t ven= dor1, #define TCG_SGX_12_0_EBX_FEATURES 0 #define TCG_SGX_12_1_EAX_FEATURES 0 #define TCG_24_0_EBX_FEATURES 0 +#define TCG_29_0_EBX_FEATURES 0 =20 #if defined CONFIG_USER_ONLY #define CPUID_8000_0008_EBX_KERNEL_FEATURES (CPUID_8000_0008_EBX_IBPB | \ @@ -1301,7 +1302,7 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] =3D { "amx-complex", NULL, "avx-vnni-int16", NULL, NULL, NULL, "prefetchiti", NULL, NULL, NULL, NULL, "avx10", - NULL, NULL, NULL, NULL, + NULL, "apxf", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, }, @@ -1345,6 +1346,25 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] =3D= { }, .tcg_features =3D TCG_24_0_EBX_FEATURES, }, + [FEAT_29_0_EBX] =3D { + .type =3D CPUID_FEATURE_WORD, + .feat_names =3D { + "apx-nci-ndd-nf", NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + }, + .cpuid =3D { + .eax =3D 0x29, + .needs_ecx =3D true, .ecx =3D 0, + .reg =3D R_EBX, + }, + .tcg_features =3D TCG_29_0_EBX_FEATURES, + }, [FEAT_8000_0007_EDX] =3D { .type =3D CPUID_FEATURE_WORD, .feat_names =3D { @@ -1996,6 +2016,10 @@ static FeatureDep feature_dependencies[] =3D { .from =3D { FEAT_7_1_EDX, CPUID_7_1_EDX_AVX10 }, .to =3D { FEAT_24_0_EBX, ~0ull }, }, + { + .from =3D { FEAT_7_1_EDX, CPUID_7_1_EDX_APXF }, + .to =3D { FEAT_29_0_EBX, ~0ull }, + }, }; =20 typedef struct X86RegisterInfo32 { @@ -8411,6 +8435,15 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index,= uint32_t count, } break; } + case 0x29: + *eax =3D 0; + *ebx =3D 0; + *ecx =3D 0; + *edx =3D 0; + if ((env->features[FEAT_7_1_EDX] & CPUID_7_1_EDX_APXF) && count = =3D=3D 0) { + *ebx =3D env->features[FEAT_29_0_EBX]; + } + break; case 0x40000000: /* * CPUID code in kvm_arch_init_vcpu() ignores stuff @@ -9190,6 +9223,11 @@ void x86_cpu_expand_features(X86CPU *cpu, Error **er= rp) x86_cpu_adjust_level(cpu, &env->cpuid_min_level, 0x24); } =20 + /* Advanced Performance Extensions (APX) requires CPUID[0x29] */ + if (env->features[FEAT_7_1_EDX] & CPUID_7_1_EDX_APXF) { + x86_cpu_adjust_level(cpu, &env->cpuid_min_level, 0x29); + } + /* SVM requires CPUID[0x8000000A] */ if (env->features[FEAT_8000_0001_ECX] & CPUID_EXT3_SVM) { x86_cpu_adjust_level(cpu, &env->cpuid_min_xlevel, 0x8000000A); --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829036; cv=none; d=zohomail.com; s=zohoarc; b=C2Y9w8mfCQ4HwPVQTVeE6CJkvxmp9Mvr3MVskapgEaEPnxzNks+lTkbOmH0VhOXCZg8nKQUbV/h9dBcInOvi/v+ssODu3BcpgojZqhju2X2RH2fc2iHdkzaPJs/Rz0X0f0IRgZM9rDrNy48fqmb/RrneSBwZxeGb6NESe/8mx7U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829036; 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=QWE7+QagFTlCLC+13BlNUnTL03oJZAhW49htiMppSVI=; b=Vxe9tRyIfTKF+C3nLq0S3aY77QdB/9xr2SN4KLZhVNy9NF8rwChmc3DI0hpeKUzjJk46w7hSCuszh/l0EMAxQlkaiORmEEypItzSb86X334j+IN//sqJbI2fk2duz5NExNeqKkXKG7fdjvFlWuPCAXtRX5MZ9f52Y5H8Iqmgnoc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829036122942.2136867173773; Sat, 27 Dec 2025 01:50:36 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQvH-0004jc-G9; Sat, 27 Dec 2025 04:49:19 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvF-0004fd-K4 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:17 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvE-000707-6f for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:17 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-522-DHMFtUhGONOoM-QHuCw7kA-1; Sat, 27 Dec 2025 04:49:14 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-432488a0ce8so6229129f8f.2 for ; Sat, 27 Dec 2025 01:49:14 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa0908sm49662334f8f.31.2025.12.27.01.49.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:49:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828955; 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=QWE7+QagFTlCLC+13BlNUnTL03oJZAhW49htiMppSVI=; b=VgrduATeOq2ACpY0S6SQaeFv7+dGQ+A1tO3HDjRBg5CP7gpipJgodZBTu3HlYu1FvZfwRr aDoRwDTxdLesKX9vzCLg0gbUJhUvE5zo2/SJa/Letv9SPaq1o+6hUYVSYiKQ41cTQLnQtQ axmy5BJhAmPG4UrIX2A+/TDd3EhVH9c= X-MC-Unique: DHMFtUhGONOoM-QHuCw7kA-1 X-Mimecast-MFC-AGG-ID: DHMFtUhGONOoM-QHuCw7kA_1766828953 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828952; x=1767433752; 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; bh=QWE7+QagFTlCLC+13BlNUnTL03oJZAhW49htiMppSVI=; b=Fq+3IDvEt9dXfsmqMWHP199tg68uMCaSm9YYodyxq8E4W9uwbYbBDJVkFBEkrfyg8f ixjeQm+ENl3u3w2F6akbZgQWrW/HoriU3twwbUNbpH6qcAyYeG/eaDPjWdtMATPn+H4F UpX7UJW/gSGu75rcroorDsqhcQgrDLPv20ZUbM+2eBm8oJWf42RZuRGb31Szzu4Mzvfv gkPvXgL4jdElXI/goBHpJYrVKwIXpiNRoF7eTx1Rtw89KkQ8/Y3cP+BilzvLAW/nsRMX RQcXkt8O2FgyiKM6at647hOeq4L3Iu5sMxbmBW7y/USsiXuogbZRXYl2SJXg9XJcxt0V Lb+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828952; x=1767433752; 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; bh=QWE7+QagFTlCLC+13BlNUnTL03oJZAhW49htiMppSVI=; b=kKu56PC87502QKWOJ5MB4wA3ejJiW205VCBMm8yZolRpPRIMV41Vafmw6gfpcA9Hw0 GT+Vmu4gI4OblZEMaFBIXG6BYCTMtuMQdUoDzHIO58rjfpvUwjJjiB0C885w7l9WXfXI LeR9/POqPBCC5chJddgznfGWEjMd+8WycSyrC0QLtyt/kCmxYfsZBy0v8i261Po5AB8Y eeFCeUCCZSnpQ9+DJRYaab1JKHewmJd7VLFESVwrIILbFzUPGE02yqRb0RZtxUZVOfnU IStfDChmRQ+0OuXx3hPCpNSXjmHpa/toE44nnOlpGmMxXU4JSO8OLW5URpx5GpU6E0bI Ikdg== X-Gm-Message-State: AOJu0YyjUF8emgPuAk2+gkDh29ahWBPS3TNwitKbo9+TPTWAHtvZJVa3 wSN9r21MsTdM7TX7OclVPtlB/UNMELOa+RQeg66t5i64ar9XZe5YlzKsCK4JBoYyABgmKsTePcI Yzxveuuyn1GAQbWmIKqaBBKzve6NdRGXxnBfqR06ygfiV4a9vDc9JQd+ApelATvmpXq0rT2Rka7 QkcIXFWmp2frnt6YW3u+7YNwg946reps+tz0VsYDJp X-Gm-Gg: AY/fxX6zYJ3+hLqChJCvDx9w1wzcxmgPvqnAfnTCVsdvVcOO30VoEtkVJwBby1JZ/b5 mFbjVCWU/9qQfnqB/qxwSL+sUx8Gt3/QtlCwyXmc1fK7J9ojnbSuOJDjjxLxxnQNU210A0Q3uQY g16ZvvcYssdAk+Lh/Ker5puZ9G3yCy4YmJuUa14pDWm+uDk8TJeP1PMzK/1mVNBJDNHpAjXvavk bHFLLzv137l0ffaq28B2QjaEFhrPv5FOnbAWkgZJK+z6+VEdpcgYd36cWMh/qxeYCRuGyHWb/OL C01abPpMnu1ZogvT370609ksTPdHiWoGwjzUmSJOycC/tv6YlQhtxrw+E5G+XdoZXhmufK0Mnfp IXXbHLL06dzbOMjVEtj7lxYL9pUY5OMPnXdqQcElpOP0wotaG4CSBCoDyLFfUFOQRXvYNDYIRaN opFltfwUH9CAXkJ/k= X-Received: by 2002:a05:6000:2890:b0:430:f23f:4bc9 with SMTP id ffacd0b85a97d-4324e7092e0mr31952021f8f.62.1766828951778; Sat, 27 Dec 2025 01:49:11 -0800 (PST) X-Google-Smtp-Source: AGHT+IHhOZiofwFkNOHJFg80feApbiaGaXqp10tUPjGFfGoKj839kTXLfyHVGz8iDz+Qgz++b8lE4w== X-Received: by 2002:a05:6000:2890:b0:430:f23f:4bc9 with SMTP id ffacd0b85a97d-4324e7092e0mr31952004f8f.62.1766828951337; Sat, 27 Dec 2025 01:49:11 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Xudong Hao Subject: [PULL 103/153] i386/cpu: Mark APX xstate as migratable Date: Sat, 27 Dec 2025 10:47:08 +0100 Message-ID: <20251227094759.35658-29-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829037032158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu APX xstate is user xstate. The related registers are cached in X86CPUState. And there's a vmsd "vmstate_apx" to migrate these registers. Thus, it's safe to mark it as migratable. Tested-by: Xudong Hao Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251211070942.3612547-10-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- target/i386/cpu.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index c9efd3a9d46..0f618ffb03d 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -1544,7 +1544,8 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] =3D { .migratable_flags =3D XSTATE_FP_MASK | XSTATE_SSE_MASK | XSTATE_YMM_MASK | XSTATE_BNDREGS_MASK | XSTATE_BNDCSR_MASK | XSTATE_OPMASK_MASK | XSTATE_ZMM_Hi256_MASK | XSTATE_Hi16_ZMM_M= ASK | - XSTATE_PKRU_MASK | XSTATE_XTILE_CFG_MASK | XSTATE_XTILE_DATA_M= ASK, + XSTATE_PKRU_MASK | XSTATE_XTILE_CFG_MASK | XSTATE_XTILE_DATA_M= ASK | + XSTATE_APX_MASK, }, [FEAT_XSAVE_XCR0_HI] =3D { .type =3D CPUID_FEATURE_WORD, --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829015; cv=none; d=zohomail.com; s=zohoarc; b=nMcUZFlY3xKWWeHlAWRucpz56F72wUJ2v3d6tVHGE8U+OYzF2zY3o/RT8kqGE8BEH7IyCDAdxJMeB3Es2EatGiOGg71bcXuW8DtVaHzo7cflXy6HA5kpM5dRNi7Hjj/ZYGapQ4rxp/eSnR5CSx9St1od+J61MpBU0r3t4waqx1I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829015; 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=jkqwtBez6ruMhapFvtBLLST/9OLLA0Ok8S5sc7t4FZ8=; b=Ro4HKWwukd/L8wh/oNlEzJlqOsRgazznxQpJ3oKg3Ozxg17/Zb87uQOHOTYg37U6/g4D3KrVvzJ5LDAbnm1xSWc6U04bX34QDhh4RnvURY3eriKn8eM2OctM2wkYzREyLU9RU/mhCMKWXS2BXiYB62Ok4aeB3QZisVd3yXdD5QY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829015708593.4114767591851; Sat, 27 Dec 2025 01:50:15 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQvK-00050p-4C; Sat, 27 Dec 2025 04:49:22 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvI-0004ox-AM for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:20 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvG-00070W-Sd for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:20 -0500 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-568-x_kAw1gYNDScCCTCcYwV2Q-1; Sat, 27 Dec 2025 04:49:16 -0500 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-43284edbbc8so552203f8f.0 for ; Sat, 27 Dec 2025 01:49:16 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea1afbfsm50784861f8f.9.2025.12.27.01.49.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:49:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828958; 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=jkqwtBez6ruMhapFvtBLLST/9OLLA0Ok8S5sc7t4FZ8=; b=XHXuhX/rz7Pb7Aq5+rZLxz3Ac79/KCiOReb01PhcXxojb7shxpYfDzw9IkxuKcKwdqqtRi vO0yBYhncx4AiIC3pBPzgNQ5Rbz3HwPqJ4Taq92WfXGGfCtDyFofD4u4IfkFhK003f0+Hf vNUNqxZj2le3JNZU9HdnsqgDLTDj200= X-MC-Unique: x_kAw1gYNDScCCTCcYwV2Q-1 X-Mimecast-MFC-AGG-ID: x_kAw1gYNDScCCTCcYwV2Q_1766828955 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828954; x=1767433754; 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; bh=jkqwtBez6ruMhapFvtBLLST/9OLLA0Ok8S5sc7t4FZ8=; b=DWLVIHAHn4lYuyqTJAId0+5IdA2v/qXpVlZqNc7tUhwMqK69uHryWUAM/Z0898RxX5 TCzTJA28cuZm73xbQ2PuBc5HT229GR9SjiCq+iN5QFII/Yz/REqMJ4MRmCYOwH4/+SAS Eu3/8PP0nYTxNgcrfXGAUFPaUxkV1rRVd9Ej72zKYYgrIIYQb+u9Nmi/qYMDlSDOvGvv 11stxZNoxlhQif1ETJQwTB+tzhtwMWlQsDknfHwqIrB0zlbvwZn3TDt3K7RbZR73oA79 JL6DDHlxu5Qq6Dwf+XPhqKmBz6aBVscuZ+qNPzE+KP7qLHEvXJSr4hmOwZVU26swS3st VJtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828954; x=1767433754; 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; bh=jkqwtBez6ruMhapFvtBLLST/9OLLA0Ok8S5sc7t4FZ8=; b=COoIiPLJUgh2lfjsfc1N/pCEce3tlgKZuVzrAYLkovWy1YG21L88+kb6gr5hVmirGb Sqf3UFBSV9pVAEC+4ZFfEU21VkcMnazaVnh31cdx656kke8pmuAvFuoEfICr2NMAqQaw jrxDODfagp+0LXYgyLYZOW04g37JNv3OxmI22yqizZJ/4bnnj8lBu6OXOuvMzWtiBf97 e9jAJ56YGHR5DwEfLem93wr6sL2GjJxRbXoZhPmbAASP2Fkqz6/MIzmcHERHMiL/W6+w pNVD7aoCZZPSeGiN2TTCRDI0FAVldpyEGWbRaahu7LGDfYKhV9jRvQ9rQQBiGgrW9JOw tIfA== X-Gm-Message-State: AOJu0YxDGjkvN3CUB8UYfokiC3Q8qogRRUWG7AT9KMI6N7yFArNoKeMR I+rKquwCXCXJei7de9z/hfXZOQEhsRYURevPiy/VSy/GsHmbwcbJTqmSjACzilviguLEnbnvRlB g1zOGmnvcRXZTRndBlT9PUBkGAgGjuIXLuwPfaOD/BXPf2460KPkCsGm9rD19xPHy4/DpOzjw4v huhzq+f9kAU+nIvBwECd9ugkZJxsb45BwWVCY6Nyn0 X-Gm-Gg: AY/fxX6516vHYxieN/XyFIuvAXeBae4H/QAYg3ENBgkGdBpsmXBJflw9TFAAZnQZXeW 0zK2yRy45DYdej5F/g6pip5zrBxWNE9iXhlJMiKqU8ySm5QHoQUQkZN9hoQGfcRy9P3Q3MUgcPG rMDh7ufT4m6xhI86ryDlDOyhjz8LULoNNMms2u9dn1q50Mc7GLyaS8OwKkiq7IT0HoZDqAAWlc5 ZfJANNFgEy9gSnYG+efTKX0lKw+hU9ZZoIYtyfEhOQZ59308nvzD9PWz1mfD10T8M8IbXrMdw1M i6IrlGCOM4GRt0f/JuPVhbeb22oUxxsRS7S7B+kxQFwMVwhCp0trdTj7g4NAeAG+LTNVl4xgyVk wGQFKJKs543P/YjvUAcoTLJx00LmyUVzpnjI+3RjTxT41mDnzApbz1dSlt4qRsERYIMjMV3gLbj dgSlIofn91Qfsgsss= X-Received: by 2002:a05:6000:420c:b0:431:855:c79a with SMTP id ffacd0b85a97d-4324e4d3497mr30805390f8f.27.1766828954373; Sat, 27 Dec 2025 01:49:14 -0800 (PST) X-Google-Smtp-Source: AGHT+IEZnQi5tAiBHeXCWDImYWjbjobYpsux3c9+8TSXbKgiHckqS/lPlJEu8CNyBdEO2yi9EAs8cQ== X-Received: by 2002:a05:6000:420c:b0:431:855:c79a with SMTP id ffacd0b85a97d-4324e4d3497mr30805363f8f.27.1766828953848; Sat, 27 Dec 2025 01:49:13 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 104/153] build: do not include @block.syms/@qemu.sys with modules disabled Date: Sat, 27 Dec 2025 10:47:09 +0100 Message-ID: <20251227094759.35658-30-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829016825158500 Content-Type: text/plain; charset="utf-8" Including specific symbols used by modules is not necessary for monolithic executables. This avoids a failure where emcc does not support @file syntax inside a response file---which in turn breaks the WebAssembly build if the command line is long enough that meson decides to use a response file. Signed-off-by: Paolo Bonzini --- meson.build | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/meson.build b/meson.build index e6a11cefdb7..02738c9765f 100644 --- a/meson.build +++ b/meson.build @@ -4270,7 +4270,7 @@ foreach target : target_dirs =20 c_args +=3D ['-DCONFIG_DEVICES=3D"@0@-config-devices.h"'.format(target= )] arch_srcs +=3D config_devices_h[target] - link_args +=3D ['@block.syms', '@qemu.syms'] + link_args +=3D enable_modules ? ['@block.syms', '@qemu.syms'] : [] else abi =3D config_target['TARGET_ABI_DIR'] target_type=3D'user' @@ -4499,14 +4499,15 @@ if xkbcommon.found() endif =20 if have_tools + link_args =3D enable_modules ? ['@block.syms'] : [] qemu_img =3D executable('qemu-img', [files('qemu-img.c'), hxdep], - link_args: '@block.syms', link_depends: block_syms, + link_args: link_args, link_depends: block_syms, dependencies: [authz, block, crypto, io, qom, qemuutil], inst= all: true) qemu_io =3D executable('qemu-io', files('qemu-io.c'), - link_args: '@block.syms', link_depends: block_syms, + link_args: link_args, link_depends: block_syms, dependencies: [block, qemuutil], install: true) qemu_nbd =3D executable('qemu-nbd', files('qemu-nbd.c'), - link_args: '@block.syms', link_depends: block_syms, + link_args: link_args, link_depends: block_syms, dependencies: [blockdev, qemuutil, selinux], install: true) =20 --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766828994; cv=none; d=zohomail.com; s=zohoarc; b=g8AZ0HYNxxEC0jAhqTmVoO8Wkq0AKotVGc3ueyUVJ3r650X7X29O2fYoju39RV97uKV3NSaygOjZ/iQN3dnOmoflI2Lv5jrG7dK/1ySHIhYyMfEWn7v8f6KXKfqZGAYopbByvrw6aCom0TzGeXEypyBCAgJBl+LneYIa4PRKJfU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766828994; 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=nDqBb+howVc6cd7uGoknJH0PjirYFJJey/1eAuvkVIA=; b=XY8e7jkpkq1hqyGjmvD2noEtc27rAS7T+eMR1OiP71dxpqOnixFZS0gM7cOZiBWUxdEOwYCpAM/5xC2GM8wPVsRfjmjWkIfto8A4fCEelXbwwG8y5jVoGqupUVU5MDYDcZ2lti5YzHVbgsoCkmq5H5ZMbIcByvdPLd0iVw8tDv4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766828994891841.8431721928195; Sat, 27 Dec 2025 01:49:54 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQvM-0005Mq-L7; Sat, 27 Dec 2025 04:49:24 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvK-00055r-KJ for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:22 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvJ-00070x-8p for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:22 -0500 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-150-wP5dkUQ7PM2eynb5VNmFYw-1; Sat, 27 Dec 2025 04:49:19 -0500 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-430ffa9fccaso6154130f8f.1 for ; Sat, 27 Dec 2025 01:49:18 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa2beasm49024115f8f.33.2025.12.27.01.49.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:49:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828960; 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=nDqBb+howVc6cd7uGoknJH0PjirYFJJey/1eAuvkVIA=; b=RUi+UXpVd3durU6vxncyeKlnlWj7qyA+5hDYexBPk1szBsxTVP5Ab+EmSXf3qEd1QYm8y3 NeHr3KwYMb7cCLaalkMeVxAWvubtWe6eZ7hELWLVxKQyG82OBoGBGNU9d6y+VxDmiMsR/I DjwcF2REJLYsVigof61s4FL5b7szhj0= X-MC-Unique: wP5dkUQ7PM2eynb5VNmFYw-1 X-Mimecast-MFC-AGG-ID: wP5dkUQ7PM2eynb5VNmFYw_1766828958 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828957; x=1767433757; 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; bh=nDqBb+howVc6cd7uGoknJH0PjirYFJJey/1eAuvkVIA=; b=BaNoW8QZvdPBxdPV1q+0jWX99gTxBI3fgbj3ziGWmuPPP4rsQa/k1u2Az7um1Xyix7 FlILtXX7s6wRqx+BiVMlRaL6Fi4yRPpduLdyEJhu9v6H9VT76yEHrRQWp0gQlb/nHEAQ xxKoISZq0ntK/50H6+RSBjA+tyHHJoi9Nvm68KLndAYCSdPSKbDB+/zsl+KVQtHqs0/v UgBvxPrVNWr0CQz3/1kOmifl4j3NCi1lscPGo81l8qoY9AKt7ASlc5QgOh1RPx+E7cYw 1Iy+sCWpOWBHFyqr2nIYXIvmMvbDB0ZrgO1ANyCvKRqR8tq++Xbedr8Ep/zRYOqGxYxX hK1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828957; x=1767433757; 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; bh=nDqBb+howVc6cd7uGoknJH0PjirYFJJey/1eAuvkVIA=; b=Sek0v64OcbQ0br8bS5+kttwBB7OEqP1A8XJOoKyULkLOJpOdh4xJ6+O8fPEHQWNieM OFtnqw13ZJ7j/3ZJkXVmGZTN/GyYWVgPya3vZnR3cgUqqJBWvKUGKMlHqFVyzmDcAopg aQ9pqsDf5bT+BN9TqIuGbt9TGL30DnjMSkuZY9jfeYKbkD5/h4NNfobNBARsl5PSpSVx lG7lsGJC/uwIXj4j0rAgZHtgPGG5Re2xoDP9/VtzoZ+6CFlPTN++RjZrbf8Ms8vvbHjN JjIQ+j3dQB0jjO/ySE5/rlsDpVNqNMbHldIhRsNGHoFwRdWi9lwoy02A6807amn0n2fv hPXQ== X-Gm-Message-State: AOJu0YzuQ8gAiF+mOVFv5elBrrNI7eGSYiqhtqL/Ys5M7cJ4j8R0cd2A MiRB956476ux0plelYgsnNTtSjQT+WWfAa4MhXVNxjWkJtrCIpIud1KpIerhjRk9BBTeq+mFzMn 3wn4WOAEdiJaj+Au6iExmz3TGV7OgE8ZexIKcAvMBllRJ7DnBydYsRMFfMsaCAWdw0GGsSYXKhu GEs/BoF7HRiwb2Qo7EcJVPKwPBLf5X6PieWGiiQyAe X-Gm-Gg: AY/fxX5gmm298xbkcBqiR42OYJ/xVVMS/YQGkRitI9RquAbDfn1lUYF6Ye4zLs0707y A2dCUvGDA5LqPHerGBDn3UrAhnCJfpkGWvfFkD2yK+BUuhse3mDTZ1JgEfK6XJqZdsUnWRhTdOd vhCSUmB4pbc+1cepJ1eEeFlfkZyxa5wXSG8Ir8oLeCY0ghlDMLDf12q0zLjv4KUSGg8532erIFo DgmHWoWp7ltlOKHwtJF0i0IQjv7v4voHyj2ZdjCxCTEUB8mudW3KmP/kQT+GjSPWzlk8NHJ291w JUxVM2e2j3VHtK4umVeDMTlUmj3z9WENs0foln17lFXGwlP7C6tKNHTQMHKef4+2KhX9y/Wiutt ogbPInsT1WXofcvi+d/rNixJxOHeMQX0Wd+2O+0KZd7WlTCQEcj+dGhu/H686j1ogaCBmDWtc4y eVdq899DTeZbhV2oA= X-Received: by 2002:a05:6000:2890:b0:431:266:d135 with SMTP id ffacd0b85a97d-4324e50afd0mr29948186f8f.52.1766828957159; Sat, 27 Dec 2025 01:49:17 -0800 (PST) X-Google-Smtp-Source: AGHT+IHbYOGmbQtRYsxxsXtTtPpHAvQE4yWvODrLkYtKxxT6OKeQ1Wehqn/P29YaeXTCda+qv9jQUQ== X-Received: by 2002:a05:6000:2890:b0:431:266:d135 with SMTP id ffacd0b85a97d-4324e50afd0mr29948159f8f.52.1766828956646; Sat, 27 Dec 2025 01:49:16 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 105/153] tests/meson: do not reuse migration_files variable Date: Sat, 27 Dec 2025 10:47:10 +0100 Message-ID: <20251227094759.35658-31-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766828996723158500 Content-Type: text/plain; charset="utf-8" The variable is defined in migration/meson.build, reusing it is confusing. Signed-off-by: Paolo Bonzini Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- tests/qtest/meson.build | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build index 669d07c06bd..08fba9695b9 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build @@ -343,7 +343,7 @@ endif =20 tpmemu_files =3D ['tpm-emu.c', 'tpm-util.c', 'tpm-tests.c'] =20 -migration_files =3D [files( +test_migration_files =3D [files( 'migration/bootfile.c', 'migration/framework.c', 'migration/migration-qmp.c', @@ -377,7 +377,7 @@ qtests =3D { 'migration/migration-util.c') + dbus_vmstate1, 'erst-test': files('erst-test.c'), 'ivshmem-test': [rt, '../../contrib/ivshmem-server/ivshmem-server.c'], - 'migration-test': migration_files + migration_tls_files, + 'migration-test': test_migration_files + migration_tls_files, 'pxe-test': files('boot-sector.c'), 'pnv-xive2-test': files('pnv-xive2-common.c', 'pnv-xive2-flush-sync.c', 'pnv-xive2-nvpg_bar.c'), @@ -389,7 +389,7 @@ qtests =3D { 'tpm-tis-i2c-test': [io, tpmemu_files, 'qtest_aspeed.c'], 'tpm-tis-device-swtpm-test': [io, tpmemu_files, 'tpm-tis-util.c'], 'tpm-tis-device-test': [io, tpmemu_files, 'tpm-tis-util.c'], - 'virtio-net-failover': migration_files, + 'virtio-net-failover': test_migration_files, 'vmgenid-test': files('boot-sector.c', 'acpi-utils.c'), 'netdev-socket': files('netdev-socket.c', '../unit/socket-helpers.c'), } --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829331; cv=none; d=zohomail.com; s=zohoarc; b=e0xJCiS7qnFMf+HbwG9lumBgkB/ouIDBrouJNP3/Q62uL0MCH/aH82Rw8ZmcHhMsy6UzZbPW1KftIBLqxdpkqM994nXFB8FQ10YPIwAjOx3OvhNAZBw+L6r2DI+W8GiI6iidmjXHI/eX+hqXR7BHLr6hdTC0dyJ66i09gnQFdWk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829331; 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=/3wZOZ6rcW3c9FwUClBkgJHdrBPvLyZXJnr8atyhTcQ=; b=ZzN4V+5ItYg0JNxFG4DSPE+m4RH8aDoprDvU6IEtcpnHbc0+1Q7ns0tLmWsW3qtCyuK+mg9ZEJzF7/YAcd8CZpTIfB5gSJxC78Ics/5inTIDLXiG1pJD23VnuVfQeKeE7Eemv060+HKW6uL8glnlVICbc9snEp1xMzaQupAf4Rk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829331064241.44382536447665; Sat, 27 Dec 2025 01:55:31 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQvr-0007XN-8b; Sat, 27 Dec 2025 04:49:55 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvn-00079p-H8 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:51 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvf-00073P-Qp for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:51 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-225-M7YYGnbBNg2yj8yfkaKngA-1; Sat, 27 Dec 2025 04:49:29 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-477563e531cso51755855e9.1 for ; Sat, 27 Dec 2025 01:49:29 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea2253csm50803616f8f.14.2025.12.27.01.49.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:49:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828982; 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=/3wZOZ6rcW3c9FwUClBkgJHdrBPvLyZXJnr8atyhTcQ=; b=NTzb53Tw9j+w9WpDzFx7EjuYN6CWgCr15qMeMIACf1gAP+IpB0KUnlb7+8K5/xeNYAeY+4 81AOwHaH7xpbu+vRVIdkwcEJR5IVbyX/AkdqeKa4uywCYeal9wgK3ppBkM+EOjvFYFy/cY m0whZIG6QK6ESADE6bcN5AT5roILMM4= X-MC-Unique: M7YYGnbBNg2yj8yfkaKngA-1 X-Mimecast-MFC-AGG-ID: M7YYGnbBNg2yj8yfkaKngA_1766828968 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828966; x=1767433766; 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; bh=/3wZOZ6rcW3c9FwUClBkgJHdrBPvLyZXJnr8atyhTcQ=; b=peILJWIbcrGRpX/Uv7yb09zJCvmM0thhZXT7HugiQ0afHwedqxi2THtt6mNxWUqKee BtWfIOItMhMpjLHunU9bfUCkY6O5aCV7WQXsTzL5JznT0g/kAtilawx3PP1R/fcvG8ry tr1SSTGDHHkfJKVHYvDKxnXLZkDKdfCtyEIZUtQ4D/v6R+k3OMikPqlGM6YKLxizyCkJ wbZTOIhWadX0gGwOw27a6ldp2W67OH3Uzpn/AaGM3STRTr+wklrJMr91Mmzj6LybJwEu 0nrKs7+lhB2Yaaq5j2bu4iJsMTBqg8SWcgX2SMiSpM+HZNCBKtLbwSvx7L1TJ8mWfVGz VTdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828966; x=1767433766; 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; bh=/3wZOZ6rcW3c9FwUClBkgJHdrBPvLyZXJnr8atyhTcQ=; b=OwIsHuVvs3kBrBuweohVXEBruux1C5flgi4tmiVR3LbG8Ub37idBOFs1isZeBu4pa1 9J61Y8+rDpctIJ+QJMEsv2hqRoM/A6ZMovrody8L3AHVkgH044FTUKR6yElt4Y1w/HsH TgIZYlM0F41OHEBe+clnmZhmumcywLJ70/CoTd7oD7FGNCjmsjlMTx4daKaYlkrd7rx7 9eP+nSiSaV+19BR0s2X/pwNSZ5X2/JuBYEDJH6aamd9HDRVGKH9rw57Ts2upM2Du/xX3 1cekzU8LNWeWiDNi9JeuXNNafCS4dwQk3DTZeXlAnrZZ/OAjIoA0iWa2S9iWEeHXGNF2 QFgg== X-Gm-Message-State: AOJu0Ywk2PQ7v1EMOOTiMZnyLyfh4P1NUHoqxx9mnjrDep5qp+n4PWr5 qLmK1d22EOQdV26hDmJcAFixYPlXTunubhQjbzqvp6qYWpON0Z64oq2/7IX0JuYE8KmqbmLursn Fm+Jef7Fs6daf76St/RA3AzV3RozcinHHLPan1RgSS4YAhsmfiExfGFg4fd2ZlIUXIy0kSysdAf 5+0ENGl9jzoPFWL1Ri9bU7KUeXP92TYMdMSyptGpX/ X-Gm-Gg: AY/fxX6IC9BGTUQ9Ad/DRyZC6reKSOVmbzIDB/z9tJn3ryFjKwWMNvSQkNPBQ9jMKT5 UkZ/iclyXzyp7XtvhxSOrsXDAW0Fy8fqAehcsSms0V5ngyBucl59cxAYDtjo7YaVL+wkzouE3Fn chtnXcgciJvYbQorhTNwKFxavSfu1hX3xXnLJsQtoTjOjSiQlAGO8G30JI54279BKyDq8fRkY8m P+ND/qi/xRziil3D+H4FvmZ+KbFK0YEFhqW9Zy+upxL3xhdNc3tLWZyiHYV4Ku+ni+LGJ6p7D9H F9YFpNrgAiuZ5YNtRHiSH7RyoTApE29o3swproT0YrnGWCDtXOO6xYIAFAcN3DsivGRMRJ/6amn qjKVb8rMQYg+B+4jIiHbyeE9+3HrLuxsavT54v4+7qZHNpXVpWtGGjMO7oj8DoBU2M37XRDpjp/ spZ3/Bvss40cAjY6c= X-Received: by 2002:a05:600c:8b0c:b0:475:dcbb:7903 with SMTP id 5b1f17b1804b1-47d19555796mr258581785e9.9.1766828963703; Sat, 27 Dec 2025 01:49:23 -0800 (PST) X-Google-Smtp-Source: AGHT+IE+09YuNEVC4fGctSKLWWJ1jz771+2s1SecRZvFFCVLland4VK/N8bSUIVOYmCcErj5F1TNig== X-Received: by 2002:a05:600c:8b0c:b0:475:dcbb:7903 with SMTP id 5b1f17b1804b1-47d19555796mr258580565e9.9.1766828960950; Sat, 27 Dec 2025 01:49:20 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 106/153] bump meson wheel to 1.10.0 Date: Sat, 27 Dec 2025 10:47:11 +0100 Message-ID: <20251227094759.35658-32-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829333187158500 Content-Type: text/plain; charset="utf-8" This version includes several improvements and bugfixes for Rust. Signed-off-by: Paolo Bonzini --- configure | 4 ++-- python/scripts/vendor.py | 4 ++-- python/wheels/meson-1.10.0-py3-none-any.whl | Bin 0 -> 1057029 bytes pythondeps.toml | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 python/wheels/meson-1.10.0-py3-none-any.whl diff --git a/configure b/configure index 82cace1bc95..55e0bd34256 100755 --- a/configure +++ b/configure @@ -1180,12 +1180,12 @@ fi # detect rust triple =20 meson_version=3D$($meson --version) -if test "$rust" !=3D disabled && ! version_ge "$meson_version" 1.9.0; then +if test "$rust" !=3D disabled && ! version_ge "$meson_version" 1.10.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.9.0, disabling" 2>&1 + echo "Rust needs Meson 1.10.0, disabling" 2>&1 rust=3Ddisabled fi fi diff --git a/python/scripts/vendor.py b/python/scripts/vendor.py index 33ac7a45de0..33b9b0b92b7 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.9.0": - "45e51ddc41e37d961582d06e78c48e0f9039011587f3495c4d6b0781dad92357", + "meson=3D=3D1.10.0": + "4b27aafce281e652dcb437b28007457411245d975c48b5db3a797d3e93ae1585", } =20 vendor_dir =3D Path(__file__, "..", "..", "wheels").resolve() diff --git a/python/wheels/meson-1.10.0-py3-none-any.whl b/python/wheels/me= son-1.10.0-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..2b4a73a5ffa758584f36275f2d6= 2f19625b7900e GIT binary patch literal 1057029 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 >AC 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
xUtvlwnnidT`5~V`uSktO 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%0Ap;g`<7}V7 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�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

?_WeNfdl=3D0 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 z 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 OrR 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

OaI(paJ%YzKgPvS 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

ji~&X;;ZVN%2%@W#rRL_zLSUEj& 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 z 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

>qde^X`h@+3h4fBJ*_CWag#@ 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%0AAn=3D-j!~N3O?t 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�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%0A7&+eJ0(**Io0f2(V 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≀Sm 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 8q* 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

!%8C6; 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 H0090U!=3D)bF literal 0 HcmV?d00001 diff --git a/pythondeps.toml b/pythondeps.toml index 98e99e79005..9a096160e62 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.9.0", canary =3D "m= eson" } +meson =3D { accepted =3D ">=3D1.5.0", installed =3D "1.10.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.9.0", installed =3D "1.9.0", canary =3D "m= eson" } +meson =3D { accepted =3D ">=3D1.10.0", installed =3D "1.10.0", canary =3D = "meson" } =20 [docs] # Please keep the installed versions in sync with docs/requirements.txt --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766828984; cv=none; d=zohomail.com; s=zohoarc; b=Kkulg6V17YEJ9rtL3Lkd6MBnxbr+ziYb9P/DPwgBTm9QiYNGx4x6QA5Sg5HXj7aoKej4k6SXETcKZoanJTcFDnC1ozAUclJ88KCmmIVH6I2HWJfmXJlMzcmtzexZAEA9+mIp2M/2JWoPNqABthn6zJS+h6b03lznyeGba0QuQF0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766828984; 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=TlW7wtP3S7BSZhssQjq1auHlBWMlcMZTjjKdz6k84jU=; b=AbBu9C/jOf6RX2Tjd02UR0Q1g2B0BJzdmNkGRUSEy+6LLoCl/vdzbDA0Fu38vcdFWABbAkekoBNnUtPNjPsLqUM47at8XIbizYBTwj3fkO5FJjqC16Iw4JsKwtBlTekAWgFb8m+8IZRt0I+lMTh3HNRABdHb+vUm1AgNbZAqTBk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176682898462913.804000595372031; Sat, 27 Dec 2025 01:49:44 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQvT-0005sI-0m; Sat, 27 Dec 2025 04:49:31 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvR-0005n7-CF for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:29 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvP-00071X-Jf for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:29 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-459-_lkaos3SMW2H37-_mUh4MA-1; Sat, 27 Dec 2025 04:49:25 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-47910af0c8bso53729675e9.2 for ; Sat, 27 Dec 2025 01:49:25 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea2253csm50803908f8f.14.2025.12.27.01.49.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:49:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828966; 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=TlW7wtP3S7BSZhssQjq1auHlBWMlcMZTjjKdz6k84jU=; b=giilRezEO2Md3QzC1bwmHhxhUSCUkkBGpa8CzXv85BzLhT0VwuQc0Zz2NJF7c/zTezKX00 kSzmPRb2sD0Xc5qNlMDZR908NdhgSLRNcJReck6dY69spogjZBf0ZeFZqHasq8NQV8UHg0 kiFZdy4skBcdgKTNUwGld8UxBFX9lMI= X-MC-Unique: _lkaos3SMW2H37-_mUh4MA-1 X-Mimecast-MFC-AGG-ID: _lkaos3SMW2H37-_mUh4MA_1766828964 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828963; x=1767433763; 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; bh=TlW7wtP3S7BSZhssQjq1auHlBWMlcMZTjjKdz6k84jU=; b=VWrUzf0SsvT6bHmIBM8o7u3CDMWhnR0aXWfWoUc9ck1vuDXXLDO0tSfSA3/4Eeg7G5 dUq/GNjHR5hkbDTJEKW+ebcZ71eXSOveqG0GU8Ut56yD6tDUmNGFm6RiX2BCvc7FNmOz HcB1+/vA/8gx/gsgKX63HY94miCNnr/iZwItG6YPtSq+Fx8n1Sbs/kLzNmfDINvKyG5I VGGvms0ROS+09vXR4HPXrJIOo3/f2Kdq8hzemzi1gxPPADA5G7T5GgZ3vG2Dhct1eO6t W/wKulFKPKDar+9+M2meKy0rK1Rzw3AYQB+NZSUR+ltJ0Y5qOwa8e9E5hYKPp6X+jisI H09Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828963; x=1767433763; 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; bh=TlW7wtP3S7BSZhssQjq1auHlBWMlcMZTjjKdz6k84jU=; b=nUT2zKYMZuxvjcdsmJNACXsKb2fkAWYM/16x701I/vZRzLDbPfzF7lCi15B9CSq0J+ akYIBLsn8A3j0LSAkXIPEEhTDI4tB8ophsJU1YjOsjyOXzPsP6+eK7XWonp2ZSiF5m8D l77IiJOhGa08n+d+GMETXSm1lfEROK5W/yQifaeROLy2bSnihaFPLc8DLZjQVpEBIhY2 zoG6/jb+3jBqlH6Gs87XKnLgGUdAARP04lTSSkJaT8thHTu/elBHSU+hyBcjy8KtPi5q Zu52t4Iz/p2/+JQtWkij4/DO7XGFl5P29b/sNwVDdrdswQDngxfNkL0xF6kTP9gWdchd phHw== X-Gm-Message-State: AOJu0Yx+UobyEMca7KyzzrspBNo0rOGxkHHV0uSGVuj3LEGoXEp1wIs7 Q844AEWkBhfZAVNyqrPWcfQ1HDgZGtC9cI7jfxXn85u0TBYgHcHvcdATDAbpgVHSOqxM8ymLj3I ePqUITJl9l8X4S6bQ/ClcjQnxDKE34noH2zt1Ttq30DW+pzf6WcpBSsNTjVMo8iJhQOSvV4hpOY 28w6nzrcszfZ077svSTSJpGzdswj/dqOptgOunhCMw X-Gm-Gg: AY/fxX5iUnnkxCN4ICOee7Lb9t+3LE4mm4ffdX1jMZA/yMQ6fBhNVJekuBvw+yjsKq1 ZvC3KGNu2wzXjoQJ8z331QJP5WxN8Pppn1oOdmswS5kHT9HA2uHHqvrBV+DhgWWeYBQzjQwlDo9 cjOLynzr7ZSVA32T8nSK0XGGyu8Hhylcuw42q5VqaWhFAUTPo9tAgNii9eHT8VelGJv82e4I62u usFFDGIZPlzUWwaryXAO7cRYu4kY2YuydCq8YdSWs8inT1oEh7Oe2e1GY8BArrhWUqcW05vbZEv hH4+a53n9PAa3uCzX4DgaFSwB5FOMPZA5PisqCmF0SRzcr2eMsuVlQzaLgypa6LjRcs8EjweZAJ 2osXrLicfvO3RPPYX9Y/RctspNmGfM9BhW3chvXCbk5+HURbPuWbKMVI8OJOOkXEVFLfftHpRl4 pnTBIc/yKPhN7nW2I= X-Received: by 2002:a05:600c:c05b:b0:45b:7d77:b592 with SMTP id 5b1f17b1804b1-47d1c03867amr202464205e9.12.1766828963182; Sat, 27 Dec 2025 01:49:23 -0800 (PST) X-Google-Smtp-Source: AGHT+IFTOqNPEUAnV+SrkuR1C2RHdhjIElAAqPcfi9+BeOCXal0UHYwVj/NHoF9i2PrVxbqh7vxO8w== X-Received: by 2002:a05:600c:c05b:b0:45b:7d77:b592 with SMTP id 5b1f17b1804b1-47d1c03867amr202464015e9.12.1766828962705; Sat, 27 Dec 2025 01:49:22 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Martin Kletzander Subject: [PULL 107/153] rust: Do not link qemuutil into Rust rlibs Date: Sat, 27 Dec 2025 10:47:12 +0100 Message-ID: <20251227094759.35658-33-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766828986776158500 Content-Type: text/plain; charset="utf-8" From: Martin Kletzander Commit de037ab8d83d removed qemuutil dependency from chardev and util rust crates. However it stayed in the _util_rs static library. The dependency is also defined as `link_with`, which is fine for C targets, where the resulting archive gets linked as another parameter on the command line when it is a static library. However, when a C library is linked into a Rust rlib, rustc remembers the dependency into the metadata and adds the library to the linker command line. Unfortunately, static libraries are sensitive to their position on the command line and rustc does not always get it right. Fortunately, simply removing it from dependencies of any rust libraries and instead adding them into the dependencies of executables and doctests fixes the behaviour. Without this patch the error I get is: FAILED: [code=3D1] rust/tests/rust-integration ... =3D note: rust-lld: error: unable to find library -l:libqemuutil.a rust-lld: error: unable to find library -l:libvhost-user-glib.a rust-lld: error: unable to find library -l:libvhost-user.a rust-lld: error: unable to find library -l:libqemuutil.a rust-lld: error: unable to find library -l:libvhost-user-glib.a rust-lld: error: unable to find library -l:libvhost-user.a rust-lld: error: unable to find library -l:libqemuutil.a rust-lld: error: unable to find library -l:libvhost-user-glib.a rust-lld: error: unable to find library -l:libvhost-user.a rust-lld: error: unable to find library -l:libqemuutil.a rust-lld: error: unable to find library -l:libvhost-user-glib.a rust-lld: error: unable to find library -l:libvhost-user.a rust-lld: error: unable to find library -l:libqemuutil.a rust-lld: error: unable to find library -l:libvhost-user-glib.a rust-lld: error: unable to find library -l:libvhost-user.a rust-lld: error: unable to find library -l:libqemuutil.a rust-lld: error: unable to find library -l:libvhost-user-glib.a rust-lld: error: unable to find library -l:libvhost-user.a collect2: error: ld returned 1 exit status Meson could work around it itself by never adding these static libraries to the rlibs (after all, Meson tracks the transitive dependencies already and knows how to add them to dependents of those rlibs); at least for now, do it in QEMU: never link C libraries into Rust rlibs, and add them to the final build products only. Signed-off-by: Martin Kletzander Signed-off-by: Paolo Bonzini --- rust/chardev/meson.build | 2 +- rust/qom/meson.build | 2 +- rust/util/meson.build | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/rust/chardev/meson.build b/rust/chardev/meson.build index 54bb2962528..2e4f4670bd8 100644 --- a/rust/chardev/meson.build +++ b/rust/chardev/meson.build @@ -38,4 +38,4 @@ _chardev_rs =3D static_library( dependencies: [glib_sys_rs, common_rs, qemu_macros], ) =20 -chardev_rs =3D declare_dependency(link_with: [_chardev_rs], dependencies: = [chardev]) +chardev_rs =3D declare_dependency(link_with: [_chardev_rs], dependencies: = [chardev, qemuutil]) diff --git a/rust/qom/meson.build b/rust/qom/meson.build index 551c4f0bf5f..dda26c3f981 100644 --- a/rust/qom/meson.build +++ b/rust/qom/meson.build @@ -30,7 +30,7 @@ _qom_rs =3D static_library( dependencies: [common_rs, glib_sys_rs, qemu_macros], ) =20 -qom_rs =3D declare_dependency(link_with: [_qom_rs], dependencies: [qemu_ma= cros, qom]) +qom_rs =3D declare_dependency(link_with: [_qom_rs], dependencies: [qemu_ma= cros, qom, qemuutil]) =20 # Doctests are essentially integration tests, so they need the same depend= encies. # Note that running them requires the object files for C code, so place th= em diff --git a/rust/util/meson.build b/rust/util/meson.build index 95b44f7c670..98629394afb 100644 --- a/rust/util/meson.build +++ b/rust/util/meson.build @@ -39,10 +39,10 @@ _util_rs =3D static_library( ], {'.': _util_bindings_inc_rs} ), - dependencies: [anyhow_rs, libc_rs, foreign_rs, glib_sys_rs, common_rs, q= om, qemuutil], + dependencies: [anyhow_rs, libc_rs, foreign_rs, glib_sys_rs, common_rs], ) =20 -util_rs =3D declare_dependency(link_with: [_util_rs]) +util_rs =3D declare_dependency(link_with: [_util_rs], dependencies: [qemuu= til, qom]) =20 rust.test('rust-util-tests', _util_rs, dependencies: [qemuutil, qom], --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829046; cv=none; d=zohomail.com; s=zohoarc; b=JEDAgRqEvtCHbIYKy0/JO79bwLgreEwtClfvzThlpK2NQVFjKwR2qtHZWvQOvbZUfuRNz42WOme1mMsN2qyhPm0KBXC2XGfrvEAXjd9g/JALXIEe4mit1s7EErb1EQl3cyVW2APlVWRyEoXU8ujCOrx4fU3HZZodSWlvuJi3qho= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829046; 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=DPzOYGOdSS2nqdUVmE3Appt8FioAsNxMPjypO5wkIkE=; b=Ry44luWUsrpDGDCdPwnNRc/oE1fM1rjMlr7st0DT5oo1Zv33Y9tzWpxENpCbJ3y14u+iM4TXTu8kN8+CXxVlMGlQNpbnxDCvSHFi7SWYHTshMvicOmchbLVQ7NCqhO/oXOW3tBVJvcPF93wKFBUTocclGVN882POsziv2YyZADg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829045966212.0510784204389; Sat, 27 Dec 2025 01:50:45 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQva-0006QZ-DJ; Sat, 27 Dec 2025 04:49:38 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvY-0006J9-Aa for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:36 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvW-00072F-Sj for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:36 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-509-AwhGFw_dPq-GY6yKpSHJNg-1; Sat, 27 Dec 2025 04:49:32 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-430ffa9fccaso6154212f8f.1 for ; Sat, 27 Dec 2025 01:49:32 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea1aee5sm51014785f8f.4.2025.12.27.01.49.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:49:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828974; 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=DPzOYGOdSS2nqdUVmE3Appt8FioAsNxMPjypO5wkIkE=; b=RMWhCKRh1Z6VUlrcLCZzO5fUV1AbdoU2yA+yx4y2UmUDoN8dXSL23SDgQzsho2UTg9Z5M8 zSuUCAPBlAMJ9P9kparXYXDj3efJFDAocEUDEMNIki8w2/alPpmsYYBM6HHpHPhzaCKlAe S8d++STp5f9TgVIiKz/O+iJ+SCe1+Lw= X-MC-Unique: AwhGFw_dPq-GY6yKpSHJNg-1 X-Mimecast-MFC-AGG-ID: AwhGFw_dPq-GY6yKpSHJNg_1766828972 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828971; x=1767433771; 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; bh=DPzOYGOdSS2nqdUVmE3Appt8FioAsNxMPjypO5wkIkE=; b=EcVa91GColmydsUuSbcx1YTKCOxY0/dSJfev55Qkqp1McYffhaIlSLHWOTWG8VevC/ AnZ5dizacZN9RCgDlbGiYa646ILcoYdYqxTe6mMksXuxp3tj+vYEbasDD0TpwmChowXf yNBngusC0f71qOfRn6FicL13IM7Inl1kse1EdlZPTnH8IUFaL2lc2kRPWxKp3DAcKR9I xfcl7evtBgrBQpA+97gx+Gt+qnTMXBaLCmDPtMF8Dim+XfmWg4+w/sZ5N+ORmi24L/Ja JzyA2ELdB/9GH5k8QXmTAr1FKzcEYOJJp+jOu7U4nRTTWlXvxn1947tQfXpOX3dfiiQv snKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828971; x=1767433771; 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; bh=DPzOYGOdSS2nqdUVmE3Appt8FioAsNxMPjypO5wkIkE=; b=AXgRNbbbZ+qk6UrUG/eosJ3etTod8SxpNfkSEY4u2HkoGnQBBlYkwMHTxaUv4xE+z6 nJe1Sb3Ptk2S5Pgjb/uXwJIxkk3Topvs5Vr6efaFTi6TC0hMn5T+frh0rC6Nu/jM6ALF aShI9hRizAOASHL4a5T+0n3ZrrRjadqvZbu4D41yfnjCybIF9IOVBcXPnKwyD0BhEkw3 S2bUqNH2o3z1fHmW0p5065+7qqUUtQ9wykpAcP2XVzKjBhJ6yca6ZvVC08yvlFBUNXTN 2RhSxbhKEePA4HHO8bdhT2r34ueGzoVJBRdmiavK/hllesnm4vQwAbJpwKKBroxU+MpS K+Vw== X-Gm-Message-State: AOJu0YxHDUNQIJGbvEtPHpxvjwZSAn7yzRVNnx4Z1RBq9Or0c4UAd/ug 8iEbOfR1JmwZMEJ++ARDKzxbYlqQQzhrcF6jdEgeWRnMrmNlJGLp9LPZl3cjpSqB3tJjBqor9Gf hV52cEmrVGQDwPPiyxBGWxytSO8Kp+aTfvnfbSJ5kfo75ugKO6+Ja9Kh5E5dSL0UThDid+86I5f ik7y7MQzqZn68tj1+FnodBUmQZcgQNJTvr4qsmiHZb X-Gm-Gg: AY/fxX7UDhi9TG8d2jUpVN1VplSFsCO1QfrdlMGemjEfLpMAcsjyLTTGB5vhcV74vE1 xMNXj356t9IcvS+xM1tWyD3oo5h39o9om9U8a9gZaOBu1kGNN9fsT/p3C2lj1IIbGZFlXsgVlPb 3/uXH/9KOOLJfHE1JrZrg3+PAr+8szFtAwMMEYF0iTFZk0ry8WMkbcDs13PxpyeIJaxkCAIpYR1 9+JJUkN1hURT168nBdmvO/z81i1Aipj50gFAu7oAYMYKTwx+5C2QJYidQggsZKidEslRp8FzjVG hb8++E0pAD5dgsk3w0HdeaWcSixU5dJfh0CTIwla0JBmutF+ua+KHDkKyPoSTypelA85HJ3S0x4 OFckYrB689LVrCTpVpNkM7XhRNXvf03Ycb5mrcBW9p6oRshYmQWQ4nStblL4MR0iQLKpPyDpfqp rNV6dt+n+EV3nuO4k= X-Received: by 2002:a05:6000:2907:b0:432:8504:f67a with SMTP id ffacd0b85a97d-4328504f681mr4683017f8f.20.1766828970638; Sat, 27 Dec 2025 01:49:30 -0800 (PST) X-Google-Smtp-Source: AGHT+IGjk40KXb1wQn8A1xo5TRacyxCwhjiCnpqo3VSKY01UcG7TIWj068rCu672UAkhOwcHtjAYvw== X-Received: by 2002:a05:6000:2907:b0:432:8504:f67a with SMTP id ffacd0b85a97d-4328504f681mr4682990f8f.20.1766828970124; Sat, 27 Dec 2025 01:49:30 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 108/153] rust: only link the Rust part of the code into devices Date: Sat, 27 Dec 2025 10:47:13 +0100 Message-ID: <20251227094759.35658-34-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829046971158500 Content-Type: text/plain; charset="utf-8" Do not include libqemuutil in the device crates for the same reason as in the previous commit. Static libraries like qemuutil are sensitive to their position on the command line and rustc does not always get it right. If rustc places the library too early on the command line, the stubs are included in the final link product, which results in duplicate symbols. Signed-off-by: Paolo Bonzini --- rust/hw/char/pl011/meson.build | 18 ++++++++++-------- rust/hw/timer/hpet/meson.build | 18 +++++++++--------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/rust/hw/char/pl011/meson.build b/rust/hw/char/pl011/meson.build index 33b91f21911..9c0e8290e9a 100644 --- a/rust/hw/char/pl011/meson.build +++ b/rust/hw/char/pl011/meson.build @@ -28,20 +28,22 @@ _libpl011_rs =3D static_library( ), 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, - util_rs, - migration_rs, - bql_rs, - qom_rs, - chardev_rs, - system_rs, - hwcore_rs, - trace_rs ], ) =20 diff --git a/rust/hw/timer/hpet/meson.build b/rust/hw/timer/hpet/meson.build index 9a3dd62caa3..3bb7ce2a6ca 100644 --- a/rust/hw/timer/hpet/meson.build +++ b/rust/hw/timer/hpet/meson.build @@ -3,16 +3,16 @@ _libhpet_rs =3D static_library( files('src/lib.rs'), override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_abi: 'rust', - dependencies: [ - common_rs, - util_rs, - migration_rs, - bql_rs, - qom_rs, - system_rs, - hwcore_rs, - trace_rs, + link_with: [ + _util_rs, + _migration_rs, + _bql_rs, + _qom_rs, + _system_rs, + _hwcore_rs, + _trace_rs, ], + dependencies: [common_rs], ) =20 rust_devices_ss.add(when: 'CONFIG_X_HPET_RUST', if_true: [declare_dependen= cy( --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829304; cv=none; d=zohomail.com; s=zohoarc; b=Qs5jGE4eA88I/hi38AuQcHzWSLBnjuRYAbRsRitlUNcVsYC8cOXNneICjebjxJYhmABlM5fkHnarE9SvhCUjxqErn9iYR2JSzNE+Q/OnoXWV/ITjcRxLO+eueA6hv2mLQ4aI3pOnZDSuSC6mWEUWnySqa84dMrIKXSsaaBd93Z4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829304; 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=+0bWfEi5YvsxXPan+R5X2P9dFKSiDKmgH0HJ5Od8B3k=; b=g3WpHQxmMirA4sG2XV2HVwlRO/MvN7gy4ri5Ew4vbtoXv8EKvVxb0yzO0EaQ2xLWliRnGaCKsCBAL8LYQGlgSkQc5PTxQIVCF7OsWiguv6oprl5+BhK9kjiTyN9zqxpO0aWF2F1V4MobTWbkFuepmbpSU4nHT532N+iCsjfCtOE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829304633696.4018795552474; Sat, 27 Dec 2025 01:55:04 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQvd-0006VX-Gj; Sat, 27 Dec 2025 04:49:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvb-0006U3-JF for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:39 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvZ-00072g-V2 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:39 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-664-sdlLkZHLMhSoQbIEyZMIJg-1; Sat, 27 Dec 2025 04:49:35 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-477cf2230c8so78151035e9.0 for ; Sat, 27 Dec 2025 01:49:35 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea1af20sm47315517f8f.2.2025.12.27.01.49.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:49:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828977; 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=+0bWfEi5YvsxXPan+R5X2P9dFKSiDKmgH0HJ5Od8B3k=; b=gT3ZTZwc9NHbhRsK1mjuXqdhKfLPws7p4QW0XDARRR6YaeamPbePipJ73xyotRPuAw5lbi 4yRQFT5D/QY38MJiO81qJW+6QaQqJszA7Fvb1SKRRHQzSx5nKEtaB7ZZuuHPCO4bRbNQHK tyLXujuNFBYTpzYmA4sakb5wZyHt2z0= X-MC-Unique: sdlLkZHLMhSoQbIEyZMIJg-1 X-Mimecast-MFC-AGG-ID: sdlLkZHLMhSoQbIEyZMIJg_1766828974 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828973; x=1767433773; 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; bh=+0bWfEi5YvsxXPan+R5X2P9dFKSiDKmgH0HJ5Od8B3k=; b=lEQyELETDjIgmUtCXxgvjCLREsh5kesG8YMrhYkhe4tNG7SXQFPf/g0u0FBfD+gOkr ciIQm4OP6l+yqQ1K3dm+yAQ+AKSB0NL0ZSw5K7UvorYQjaFnW/vYhsln8Z2SqPb1EDrv zhr4MB0CJNYQP6qtf1f8PGDmfG1JBmeWOxjFbw0HFdXg0zDE/GUk2gO3B0hSN7a8xC58 wUl4JjlYLnzlTLwBOYsWuiyRbOmCajbdVdiVUbRNN239AnqGS3B0JyrgYkigk5AT8w+0 emTWIUwYeQTPBSlNW7kSZK3NfecCG86ADkfH27wPVBS/1LM9RAbA5ZoHeB7RcXmx4I1g JoWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828973; x=1767433773; 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; bh=+0bWfEi5YvsxXPan+R5X2P9dFKSiDKmgH0HJ5Od8B3k=; b=paHMAaNQaRpG0gYGOQXt/DYbKPBV48Bpgw2HNxmdrwOpBwUQdcRJCLBIp3nXm6XFOQ BtjB/d/Ch2wCvsWVb6t/dgksm6dnzcSu4F+SZSwDiOi7Fj78O2n4OrGkjLjrwIrAC3vb 7Q5RLL9nEO/8ScJ/5Z04+qF5MN28kyHM73JlxuaSnQyc+2d4r7zfo1oD+y5q6C+0sdPt PqIvLSXwH4rXMtvJlazRgLm12bFDb65y6BNHADBpa8A1PLPmyicnzyACJ6NGRPlw9sjP cb5QGUBinr7qtfKNyb0mm19QEszeeH0UWAdAZOYUgM9YhekTOfPdDxsbW4SLe62gs2P8 B2pA== X-Gm-Message-State: AOJu0YwTL1pTrLKAOXU6dzDULfh/ThAnhwLtGRg60/QxzZYrB0JwhWMa 1xMb/X8vu2FAFjbnlT7Ua4qr5OHDTC7oDamOUWRnOwJ1NEWn7zL4MsfquyjyeiW7h02FsixbfWI u63GGvXdS1T1Sr9cDyvAH5YsWBw+lROl+s3tJIC7GZmgwoZ85Is2q2aAg0CVARBGwGmU00lwv+o nJ86NJDMvpokhbKlpJb8eVMSimCO4SMZfLx9OdauO2 X-Gm-Gg: AY/fxX5zxvgalgiyHT3zNemRBCEx5v4eWuiNG67BVkQjzP1Z6MqBcHxQneCmpqAhzCe 1AFT199onLbT8ie7zcPaGC9x9+u4i+pyOZPNgoWnjxPAtkduqpvASnrmLyb4bRW3SXb+YovI3gf gzmjoAwvho8nog8S1Chq5+9NgtnEUP1OJrflyPH8cgWESadeX2eH6SWkw8t/q/HgO4pS/Pef7Me uvJTuR3oFsUDwXZPtH6gmUuibWrqeXrn0lBoFaE76msyyOO3IDypEOTeTgAC+bJZ3vUjX05ubKs QEdprlid3OJ31KjHIkL8sIKnslxN+Ubu5yeCpUkS9XkPUX4cqW76Rq0S6GNgqHlF5nn7rBYfMtB GBzlqSjcw6v3zgy2DRqllNTtI8h+YULUXT9vZQw0px7IPv9ZlSP3G8bdtjtq8b9okXCS7IPdt8+ 2O5UN2yBOZU+G9FSA= X-Received: by 2002:a05:6000:2303:b0:430:fdb8:8516 with SMTP id ffacd0b85a97d-4324e506039mr30790673f8f.35.1766828973594; Sat, 27 Dec 2025 01:49:33 -0800 (PST) X-Google-Smtp-Source: AGHT+IGICzT7ij9aA5fzIIvS1TMixAA16ETdMeOCS2yKrIlr6Y139X5eiemr4rOmQdNohDKbEK2UPw== X-Received: by 2002:a05:6000:2303:b0:430:fdb8:8516 with SMTP id ffacd0b85a97d-4324e506039mr30790652f8f.35.1766828973184; Sat, 27 Dec 2025 01:49:33 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 109/153] lcitool: enable Rust for Windows cross targets Date: Sat, 27 Dec 2025 10:47:14 +0100 Message-ID: <20251227094759.35658-35-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829305752158500 Content-Type: text/plain; charset="utf-8" The issue that is mentioned in the comment has been fixed. Signed-off-by: Paolo Bonzini --- tests/docker/dockerfiles/fedora-win64-cross.docker | 2 ++ tests/lcitool/refresh | 5 +---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/tests/docker/dockerfiles/fedora-win64-cross.docker b/tests/doc= ker/dockerfiles/fedora-win64-cross.docker index 4f743c00434..c5e1fcebf51 100644 --- a/tests/docker/dockerfiles/fedora-win64-cross.docker +++ b/tests/docker/dockerfiles/fedora-win64-cross.docker @@ -120,3 +120,5 @@ ARG USER ARG UID RUN if [ "${USER}" ]; then \ id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi + +ENV ENABLE_RUST 1 diff --git a/tests/lcitool/refresh b/tests/lcitool/refresh index 9df607a55f8..01a71929542 100755 --- a/tests/lcitool/refresh +++ b/tests/lcitool/refresh @@ -291,10 +291,7 @@ try: project=3D'qemu,qemu-win-installer', cross=3D"mingw64", trailer=3Dcross_build("x86_64-w64-mingw32-", - "x86_64-softmmu"), - # linking with rust is buggy: - # https://github.com/mesonbuild/meson/pull/14991 - enable_rust=3DFalse) + "x86_64-softmmu")) =20 # We also generate some docker files with minimal dependencies and # as many cross-compilers as Debian will package for building TCG --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829221; cv=none; d=zohomail.com; s=zohoarc; b=cWSFIyYPGV5g6LGRYFrwfDExPj15c0pR9K5MB4HUXHXYfTjEEU02Uf1aRkCjlQnS7vafoIJa8ayAoE9jAgtU8DtNM2dKV4i10jndpq9KXBOq37RKTK2TXtZHUQs6vSeR6rXilwkMdhyltRe+a3w3RmZPVxo1Jj7aOAd7pKcb4u8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829221; 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=+obehD/6XgLBmBbpDgAeb1sGrtgaFddAnzlpY2bxiQA=; b=YaU+xFkFMDndSR6XLw1/Q6FFKT9evMCEOz4QgBXTgIXh3QpH3Sb5yk1OEvHXWP4hkhMVIlOSTuHaJAIUMB0yc2LWaQ6tQadooeEDKp8IccBClVpe1FSF9rg/hSDEnUGo9ryqPCV8C0XuAVPMJKUjyqCTdnPWuiyb/Lm9RJdHk5w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829221573702.052044747278; Sat, 27 Dec 2025 01:53:41 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQvf-0006WM-4v; Sat, 27 Dec 2025 04:49:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvd-0006Vb-H1 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:41 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvc-000735-0q for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:41 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-253-vF_NFMNNOD2--M12j2QpuA-1; Sat, 27 Dec 2025 04:49:37 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4792bd2c290so73505975e9.1 for ; Sat, 27 Dec 2025 01:49:37 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d193d4e91sm422511075e9.13.2025.12.27.01.49.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:49:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828979; 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=+obehD/6XgLBmBbpDgAeb1sGrtgaFddAnzlpY2bxiQA=; b=JwFrHneMrbbxUp/+vXjhqPpxj9JI95eaVyFYoUlJYGGjtZsf4vKwiuMRxyjSjJm875gICB mN64SGw8JjySgHhqwxFI8q4cXyPO3JAXZAddl9zQE9J7V+++8LzAxc18pTErq3FFFMtVTY 8uQpL0CMG7LBzii1upk7IN3um5I7/gw= X-MC-Unique: vF_NFMNNOD2--M12j2QpuA-1 X-Mimecast-MFC-AGG-ID: vF_NFMNNOD2--M12j2QpuA_1766828977 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828976; x=1767433776; 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; bh=+obehD/6XgLBmBbpDgAeb1sGrtgaFddAnzlpY2bxiQA=; b=TdHrZfuV6de8Td9JzloAq7B0/NBGm8yMd6OXdnZjxTkzl0sV4/AU31edGRxK8+viHN hherkt369doPcIBmkY+Ue3T5heIx61QtZ2FSKLpWNush1dg2CYvhV0bjJWCOuAgfCEIi uHRdpNT0DT5L1Rrw5OVOmbXV5oaK222YbMOcv+/iab3ZMWgaavG9DrMATqFS53aaOUP+ HZipSMHc6hQDdmLrnSwvZJEkgnzD78YhMNHbAtMjXuBdCSxa/gQVSHB6kgQHIQUbZ4+E e2f5fU9c8W31ssGCNh/x7hUXlXjutxeQsRfo6R+4hnML8CxkfyJxwo0rlaIEnH2R6Czb VQKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828976; x=1767433776; 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; bh=+obehD/6XgLBmBbpDgAeb1sGrtgaFddAnzlpY2bxiQA=; b=umpJXuUCAAd+c6ZGLsqSHTZYIA8ev6U7xlydgjwxLjH+Pt95uBtdkDXnyRGNSFN2Oa lfIHog369PPYgNLK/exshVVlp5wA4VZxYIwKof9toPpSiBtBsMLwUXTmyRRdu5DCgAFM x7p4rgzHViyxyi/hn82KUOi6B4zfPIQXMSYIbKZblQuI2kO6pvgs55fcA/508LbfqASR ABzA1/LK46Z+JXHwRbGRwjpkQD8lIfDPGrX2UJZBK/hhnmljeZJolaD0yY44rIFpbIkb tsESefxCvk8SQAnJfSqKk0awsndjQUzNn8p+dPhTa+Jt7NhIBpbLfrgyLJ3HDbiJRf// V9og== X-Gm-Message-State: AOJu0Yz66U4RSiGBQSSVrmL2O1ZiEXSdgN4lk/RsFXNsA/SyrMzWaNFA CZft+YtrvM+vRXF5sQ1NngQuX4q9iUctuTYOCtnCLlUjLF8k58gMbLluiZAgm3PFSGsUaVZ/ede FCcylUDHi562G7nlnDgHmbQtO9PlR6kZe+7M5zzEuVk1b91XRE9ZVNHsWG5/jgpPMp8bxNzAC+B +G08PhXX+0fOWQIlKWB42lleoAwfTYjjcoXFFq5Cv3 X-Gm-Gg: AY/fxX4DEhxTrea/tpCHnVvqOd1ZIKmVOQZLCa5tIiWW62NYaulGGwj1coOyrRRR/gE tDm5T0B1GtIBCOuZRJAszlQJqH/S2R1kTdPCQDw4Im8a/FUAjEQvw1LM6U+eQICUF8OTS8qMIvZ q36+AjfgNzuCgt98x7AGRnkLF5PKEdtGyB93qr3YB+o1rWL1JhrX2qUs0jsJdWqZvHC1BapeKA6 6DVSRxx8TNnUDBdt37udBogTRiyo/8h6iUeGTHB98BiHauEpCEmOJ+dQy8QjW8xmpXV4yOvFqgh fZ0IWcgGRKuJlwHESFwSKEeyWsWjf8fQrMo6UaOULr/xqqR40TYDEWEXiD7I82oauXFR49xRxlX eIjzR5/QqHJ+oEA1lOMOdwFGm3uxC9tU4qeN9T6+96c//vnhNTQXxhI538Ho4F0CFCvC/YVb68B rvq4vKA80VvWPB1sc= X-Received: by 2002:a05:600c:6812:b0:477:63b5:7148 with SMTP id 5b1f17b1804b1-47d1955b97cmr294928285e9.6.1766828975969; Sat, 27 Dec 2025 01:49:35 -0800 (PST) X-Google-Smtp-Source: AGHT+IHtCex/Vs3RYDuRfkoHScDwXAlBgN8l0dmFpWVQZMwQuBRjAgnUJYDDrtER3EiXVQKiyjLwSg== X-Received: by 2002:a05:600c:6812:b0:477:63b5:7148 with SMTP id 5b1f17b1804b1-47d1955b97cmr294928115e9.6.1766828975580; Sat, 27 Dec 2025 01:49:35 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 110/153] cirrus/macos: enable Rust Date: Sat, 27 Dec 2025 10:47:15 +0100 Message-ID: <20251227094759.35658-36-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829223575158500 From: Marc-Andr=C3=A9 Lureau Signed-off-by: Marc-Andr=C3=A9 Lureau Link: https://lore.kernel.org/r/20250924120426.2158655-25-marcandre.lureau@= redhat.com Signed-off-by: Paolo Bonzini --- .gitlab-ci.d/cirrus.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.d/cirrus.yml b/.gitlab-ci.d/cirrus.yml index 0d66a14186a..177bd684ef5 100644 --- a/.gitlab-ci.d/cirrus.yml +++ b/.gitlab-ci.d/cirrus.yml @@ -56,5 +56,5 @@ aarch64-macos-build: INSTALL_COMMAND: brew install PATH_EXTRA: /opt/homebrew/ccache/libexec:/opt/homebrew/gettext/bin PKG_CONFIG_PATH: /opt/homebrew/curl/lib/pkgconfig:/opt/homebrew/ncurse= s/lib/pkgconfig:/opt/homebrew/readline/lib/pkgconfig - CONFIGURE_ARGS: --target-list-exclude=3Darm-softmmu,i386-softmmu,micro= blazeel-softmmu,mips64-softmmu,mipsel-softmmu,mips-softmmu,ppc-softmmu,sh4-= softmmu,xtensaeb-softmmu + CONFIGURE_ARGS: --target-list-exclude=3Darm-softmmu,i386-softmmu,micro= blazeel-softmmu,mips64-softmmu,mipsel-softmmu,mips-softmmu,ppc-softmmu,sh4-= softmmu,xtensaeb-softmmu --enable-rust TEST_TARGETS: check-unit check-block check-qapi-schema check-softfloat= check-qtest-x86_64 --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829218; cv=none; d=zohomail.com; s=zohoarc; b=iTinX7ODtsRmHskoa928s4RkamZ6YZaoep3260p7sO4vWnz/+nyUhdWbuCCQecuNWM4e3VbLXWqCLkTiViAOPemBd5lDiM1bmBKJEONWlrC4V/1tV+1lz0EgEg0usOvAXzqQGttcqtL7aJo8fYbwADZU6X8gA3LtbGxBzymZOS0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829218; 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=Rh8EAU3Vu8iISu05eCtJPhE7/fLdZf4qcNAXE0aot+8=; b=bnwwiTFugHU/jqIxabwqrg94XGX3oTohrHEih+nuneHU14rNXroyVJRuMHy50Nou0wcaoMiY16QV+ijg+SMAg267zbG/3CotKIqJvWVkd7hy0fvlJcNEWJ/MqS32hwdNP402+PLBxSXzw549oLvEbWSyV4xsr5XMNb4mQnEY9c8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829218233708.2892032572619; Sat, 27 Dec 2025 01:53:38 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQvh-0006ed-Jm; Sat, 27 Dec 2025 04:49:45 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvf-0006Wf-Lt for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:43 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQve-00073K-3u for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:43 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-353-Yo7y93CVPpGAUpqAXLEl6w-1; Sat, 27 Dec 2025 04:49:39 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-47a83800743so43408715e9.0 for ; Sat, 27 Dec 2025 01:49:39 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d193d5372sm453474415e9.14.2025.12.27.01.49.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:49:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828981; 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=Rh8EAU3Vu8iISu05eCtJPhE7/fLdZf4qcNAXE0aot+8=; b=f2D6WDed+m2HT13V4obzDkiELk3FNGFhHN8zdQBGDc9zvL7WLzH8/zEGzMK/AEfek4Vmp1 iohEfd2liR5w96TQyyHIWAtDyM4QzLdsBwicISK134s49K4NUjuEoAOZluWlxImbcjymbJ /v5iCSueTEJibOW9at/jtlOJDX7cFFA= X-MC-Unique: Yo7y93CVPpGAUpqAXLEl6w-1 X-Mimecast-MFC-AGG-ID: Yo7y93CVPpGAUpqAXLEl6w_1766828979 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828978; x=1767433778; 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; bh=Rh8EAU3Vu8iISu05eCtJPhE7/fLdZf4qcNAXE0aot+8=; b=dDU2GfEVAFul4kn/O9dnAJ2Q7sLWKdnzPPbqscXTKAqCV3GVJUIRGDeIjZjQxwOnLf JqvVdVG+FbSY8PNaZuTtUEua7kURck2H+Uf7aj0O5gH4zIiWZeheWYYh1PH6fuu347aR yZRB/p8rSlGWAfVSaGK1omB7oe4BFt5Mup97MMI4hMuWJ1wrgCPXH5ZB871lgfHX1P8g wxNEr5u08mWT0+3VOyzSpFfhFAVvc9We0N9xdiMVjGkokBx5Cq9ja3z1Nlojqy5D7YWO 7Uc1x+dmBkVDKRaXZkAflIiBmhKQKs9JAWuhBs/z+7czAISp2WNsqAxYdqsuyGF1O66l /+Lw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828978; x=1767433778; 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; bh=Rh8EAU3Vu8iISu05eCtJPhE7/fLdZf4qcNAXE0aot+8=; b=VfvYoKaMmWQDYb3sE7WPUJkJEQn/LdTNbvbWFO75uidEnyRtuQB/0HF1JTgWdZLDU7 1sLHLFt/pSRT0uUUlh6MnZFf+GtZ7tZcDO7xe/ICkVxQkbVljA9prsLtoKzT2HzjKrZX LaAwyIAird9U3GEM/ZS6gSo/X1cGJOnWxbTRF/bYQ/8l/j63FzopWUSwSOGYTHgHYOkZ huiwTUAFY4I9IWPS3mSI2fyfjzermD1WKG6YLWd1JDfxPMsuePTxndSAxS8TttiOAxjW fBqPoNTNWxX8uOa68ThOPNT2sGvz8JsOL1tFDadwHmVEPrYBILZsYzr0bwPqtTr/ZnlD pt3A== X-Gm-Message-State: AOJu0YxutD5DHPsRZnuuuwJ/dnmUXgQMqzKuMl/mq2bjV/4QQwoWpif1 /C/qGwvMi82z4yoVlFl6auuOGOo0OCiMtD169+xW3s+d+dnFBGPEAqTOoAGmC1XizkO4Tn8iRnK 4Vt8YgtzEW9SnlW/vz3t7TOR1QAR5DwExfVZ7sidwxoG73W43YzpOv7GKUFNxEi4MlidXEw/Jq0 GyDYAJAWYtxbYDp+xX+ROBkNnViW1P+2qT/d7UiIMb X-Gm-Gg: AY/fxX6Xp0TeE2+xsv+jqz9WdyLQHtwEULNITeJFj8mj8JTLhypfuirmUd0zTIORQkP BR45W9L5nvErKFaVN9mLS2gdO8lPnAuWsEsQeaEFXx4k6g4AeEr6Doe1BHaW4ueb5oMgbpmCPLm tXiAa3yAUf6ia/fteI3FCVfHqamqS1uRVrVgxLn0R0XK6oMoE/qsN3KTEYKPhqPYHOIj3TH63A3 jhveAHUT5dxsfMwtqzqTeZXz+1uVkZlIcIeHxid1x6D166qo0RSzTNpmEVpZDOoMKgOlrKzhZIY 8Dwisq5C4GiukzRqB/aSxt8UfrLfRUTVOYjXLQQ628EOGUkQ0vdROZwvKbp35V7UTXPgllGuRHx 6WBmnTWZJXH697Az//h66AYLufTqVpyEp+cnSW0lbuL4mOTRgH01CVmUuOyPq7Vj8T35l5pHz2o +lcm+fLbqKb5962jE= X-Received: by 2002:a05:600c:4746:b0:477:9fa0:7495 with SMTP id 5b1f17b1804b1-47d18be144fmr247925385e9.14.1766828977874; Sat, 27 Dec 2025 01:49:37 -0800 (PST) X-Google-Smtp-Source: AGHT+IEPrVhcMLPVwypXBmPE4HZStT44PLN1/1SjH6Euq3upZZzmTmO46k9mHVdN41bW+olRNlquew== X-Received: by 2002:a05:600c:4746:b0:477:9fa0:7495 with SMTP id 5b1f17b1804b1-47d18be144fmr247925205e9.14.1766828977493; Sat, 27 Dec 2025 01:49:37 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 111/153] rust: Meson now adds -Cdefault-linker-libraries Date: Sat, 27 Dec 2025 10:47:16 +0100 Message-ID: <20251227094759.35658-37-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829219481158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- meson.build | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/meson.build b/meson.build index 02738c9765f..e2de3832ac3 100644 --- a/meson.build +++ b/meson.build @@ -136,13 +136,7 @@ if have_rust rustc_lint_args +=3D ['-Dwarnings', '-Funknown_lints'] endif =20 - # Apart from procedural macros, our Rust executables will often link - # with C code, so include all the libraries that C code needs. This - # is safe; https://github.com/rust-lang/rust/pull/54675 says that - # passing -nodefaultlibs to the linker "was more ideological to - # start with than anything". - add_project_arguments(rustc_lint_args + - ['--cfg', 'MESON', '-C', 'default-linker-libraries'], + add_project_arguments(rustc_lint_args + ['--cfg', 'MESON'], native: false, language: 'rust') add_project_arguments(rustc_lint_args + ['--cfg', 'MESON'], native: true, language: 'rust') --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829097; cv=none; d=zohomail.com; s=zohoarc; b=lQd/X5d/ea7WMKJcoFxYA95vn1u804q/jIhBO8V2D7LuG43kXd4J/Xny6ebppOt8RrqV1K/lBi9VSsQUFQ16MsbCcd51tgnYxvA7TkgkDyb6WzoGTxyWNSLH+z3W4FmPlKdhR3C8GhBMWuP8A3TY+KWjxS+F12vwesJWypmdMS0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829097; 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=vEafbVoFGYyLMte4h/94bksiLJPMQ531LWBYvtDlkGg=; b=KlfvRgFze+SE7eZvrzOwgpzKhJJzN+RxW0zBzMCd215oyV23hnfeNWfUy8RS8xen++UWCmVhDPJg/jfs/0sIjpeJtmI9HLcYJfkm2xcimESXNZiAH+FusjTkOEFgPa1dNaI8mt8lpP7n5KJ73MEfh7asPR+O8y8satE9x4XYHAc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829097410491.51414581816516; Sat, 27 Dec 2025 01:51:37 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQvj-0006lv-1d; Sat, 27 Dec 2025 04:49:47 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvh-0006bO-9Q for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:45 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvf-00073T-JY for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:45 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-399-7MGo14YDORSsuUPtginSlA-1; Sat, 27 Dec 2025 04:49:41 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-477c49f273fso99684525e9.3 for ; Sat, 27 Dec 2025 01:49:41 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa4749sm50765730f8f.37.2025.12.27.01.49.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:49:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828982; 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=vEafbVoFGYyLMte4h/94bksiLJPMQ531LWBYvtDlkGg=; b=GnSvCC+uS37lwg1szejW2NHFLMZkzjFab83yOzlyB+IKzo2HveepEnpcvKJKMk4aSifpH/ sVRVUuCLlDRN/extV013nn7XLrAMSePvRylvaV8CtDhy/j+8d2WKu5wQae2zECzKRI0t57 z5ggSKnNxy7wUwMMGI7N8iaXwkfDQT4= X-MC-Unique: 7MGo14YDORSsuUPtginSlA-1 X-Mimecast-MFC-AGG-ID: 7MGo14YDORSsuUPtginSlA_1766828980 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828980; x=1767433780; 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; bh=vEafbVoFGYyLMte4h/94bksiLJPMQ531LWBYvtDlkGg=; b=jQGbxDFs2ZfsYePPGiR3Q0SpKNpTX9Y/OwtYYXWYeNQ5le4DIorT9UBDY+gmWeioCN EC4b4xr7YfBU9jUAAk66zOkBepI8dRV6/Nf+fNTW+yCa1T/ibbXPR3hSmAb2rMm+Y1ym yKYNOwFGm3vbcCTQ0l85aPdutjUEW7kjRkmGMJK9FxYLZzY6Bt2/JIc/ZDDd6fUa90XC 3bGJTdd7Gmgyu8ivKEYOw9InDR+RjNoHLALmX9djwurBrpAzIyINNBJgHK+eL95gpoO/ PS3L5T+I7CStXxchNHvGqxeIHVfZZynlRoO0egI7NDniPLGbBAkdmny6bBJLlDqF7mAq NQtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828980; x=1767433780; 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; bh=vEafbVoFGYyLMte4h/94bksiLJPMQ531LWBYvtDlkGg=; b=cF3/0CHnZL3i0e5sRXlMq3m6a0RxuSOvlJnLMPziaOwi1bd7RKZ/IIN+J3s4/o+8HM eQZtsv/V6Us2kN00M0TMtWMT/rkXOkIP0NziXmN1syrFNlucIu8FQyp3NCNhsnORtu2W Ydj4R3miAP+et9MXg+6olcvrMxlCMxG17U53UVqifICU7UX2/T+6q9EU9Vd4fmtfCXCs j1W6TI8bhqcW3AJiFfLr2VIUWClP2EF5KgCctx549PlELsrfOCEmX7BlettZf21/5wwf zvXHD5LrL9CekOi5QOLqgf2bEkXCz/zV4nkk/c7l20QGg2HzyYzSrT5A8BunAKJiDGYE wecw== X-Gm-Message-State: AOJu0YxGAIfq0pNc1jTN4TySOIiXUHK7DqYZ2jHmEKpWaJ0gd7ZYmUnJ G/WwEaLxePIkGvg0sP6gcOGamxQF9c9lvX29WgOwqDrVhPwu4Nan8+LI19VupHTJQ0l+eIsKWIx UK6uxl1OyzlF1UiY7JZzfwjxycjwPpJ0GViguO6cZfWYAT1p04E4ijpbfGjb2sNzqkPT0M7JOdd Bw7t/I6vEu++ZOgKxf5KLevFcDRWo3CRssVvsb+3tJ X-Gm-Gg: AY/fxX49U1NvyhYBlMyBaW7YkPDE41kZTSdxUbnZe4f3QvhhRhpiS4naiGnfaWnPPN8 JGzvd5DSdsBDZSC04A0DEI25xmap+0Rn5FS3Y0DyVU4dnXGCuSgGKzV4zR4LiHRwa8/wwi08EMA M9qmWQ23KGIzEIr0Ul8dgttuV2cyJ3rrRDMbEi9XhloUbo0QwxQL4w7DkxmbP/+hJSp4rn/YLdP FJSeshuKgAvcIpNAJ1Gr5kIt+2vsL8On3z3BvqC7mVg8oRyrzcJIm1qzSlNkMhionJUGH5N6dOJ 1pIcRzJtsz116vcRVcW4bZ9lIryferWx/+CFT48cqeW8pExurLGg6XKA5ukI/BqiH77mrhO5ljt ZyLs4G+F+YcT3I+ybs3rpNEU3IVM8EDLFsLuwFVRJ/RX0UlmU3Ve2z0exJQXTBcZ/nL0MnFPd3h mOcDIdUBS5jLwIE/I= X-Received: by 2002:a05:600c:8208:b0:47b:d949:9ba9 with SMTP id 5b1f17b1804b1-47d19566f0dmr280439665e9.13.1766828979928; Sat, 27 Dec 2025 01:49:39 -0800 (PST) X-Google-Smtp-Source: AGHT+IEq40utbYsa880r+AQWCp4ZfyIsSsvFGDfikbrf+5XXfHgQDBH5f0pqJFPome/MU8jVCNaFDw== X-Received: by 2002:a05:600c:8208:b0:47b:d949:9ba9 with SMTP id 5b1f17b1804b1-47d19566f0dmr280439455e9.13.1766828979473; Sat, 27 Dec 2025 01:49:39 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 112/153] meson: let Meson handle mixed-language linking of Rust and C objects Date: Sat, 27 Dec 2025 10:47:17 +0100 Message-ID: <20251227094759.35658-38-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829099122158500 Content-Type: text/plain; charset="utf-8" With the bump to Meson 1.10.0, C objects can be passed to rust targets. This way, the Rust libstd will be added by rustc itself in its final linker invocation. Use that to eliminate the staticlib and allow dynamic linking with libstd (also introduced by Meson 1.9.0, but not for staticlib crates due to lack of support in rustc). The main() function is still provided by C, which is possible by declaring the main source file of the Rust executable (which is still created by scripts/rust/rust_root_crate.sh) as #![no_main]. Signed-off-by: Paolo Bonzini --- meson.build | 19 ++++++++----------- scripts/rust/rust_root_crate.sh | 1 + 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/meson.build b/meson.build index e2de3832ac3..3790cf15f51 100644 --- a/meson.build +++ b/meson.build @@ -4352,25 +4352,22 @@ foreach target : target_dirs arch_srcs +=3D target_specific.sources() arch_deps +=3D target_specific.dependencies() =20 + main_rs =3D [] + crates =3D [] if have_rust and target_type =3D=3D 'system' target_rust =3D rust_devices_ss.apply(config_target, strict: false) - crates =3D [] + arch_deps +=3D target_rust.dependencies() foreach dep : target_rust.dependencies() crates +=3D dep.get_variable('crate') endforeach if crates.length() > 0 - rlib_rs =3D custom_target('rust_' + target.underscorify() + '.rs', + main_rs =3D custom_target('rust_' + target.underscorify() + '.rs', output: 'rust_' + target.underscorify() + '.= rs', command: [rust_root_crate, crates], capture: true, build_by_default: true, build_always_stale: true) - rlib =3D static_library('rust_' + target.underscorify(), - structured_sources([], {'.': rlib_rs}), - dependencies: target_rust.dependencies(), - override_options: ['rust_std=3D2021', 'build.r= ust_std=3D2021'], - rust_abi: 'c') - arch_deps +=3D declare_dependency(link_whole: [rlib]) + main_rs =3D structured_sources(main_rs) endif endif =20 @@ -4394,14 +4391,14 @@ foreach target : target_dirs execs =3D [{ 'name': 'qemu-system-' + target_name, 'win_subsystem': 'console', - 'sources': files('system/main.c'), + 'sources': [main_rs, files('system/main.c')], 'dependencies': [sdl] }] if host_os =3D=3D 'windows' and (sdl.found() or gtk.found()) execs +=3D [{ 'name': 'qemu-system-' + target_name + 'w', 'win_subsystem': 'windows', - 'sources': files('system/main.c'), + 'sources': [main_rs, files('system/main.c')], 'dependencies': [sdl] }] endif @@ -4410,7 +4407,7 @@ foreach target : target_dirs execs +=3D [{ 'name': 'qemu-fuzz-' + target_name, 'win_subsystem': 'console', - 'sources': specific_fuzz.sources(), + 'sources': [main_rs, specific_fuzz.sources()], 'dependencies': specific_fuzz.dependencies(), }] endif diff --git a/scripts/rust/rust_root_crate.sh b/scripts/rust/rust_root_crate= .sh index f05b8d02108..13ef7c1be5d 100755 --- a/scripts/rust/rust_root_crate.sh +++ b/scripts/rust/rust_root_crate.sh @@ -6,6 +6,7 @@ cat < (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829135468343.4654317141766; Sat, 27 Dec 2025 01:52:15 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQvl-0006wi-5T; Sat, 27 Dec 2025 04:49:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvj-0006pF-IM for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:47 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvh-00073o-VN for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:47 -0500 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-672-wjBOOtO6OMaABeu34GKOWA-1; Sat, 27 Dec 2025 04:49:44 -0500 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-431026b6252so7793599f8f.1 for ; Sat, 27 Dec 2025 01:49:43 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa2bdfsm51169621f8f.32.2025.12.27.01.49.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:49:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828985; 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=c6horWdf4WOLTTFYACcVVUN9syUzKw8SDpdBCerOzuM=; b=Vf4qRBfFBH+rsouKlMatZcAyxGqa8V3IIBivWapOrzj2NNmSFRDmonMz/PCGLzPsQARd5U WJ0fBn2l9k5fULxFOVf4Ll2BgyHQuK+zOxEzxiyMbcSLiBYb3eHNjL33elYeEy+HgcEd/W Xx4bV0pfoC3w5BIwKOpn24DqCBshJHE= X-MC-Unique: wjBOOtO6OMaABeu34GKOWA-1 X-Mimecast-MFC-AGG-ID: wjBOOtO6OMaABeu34GKOWA_1766828983 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828982; x=1767433782; 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; bh=c6horWdf4WOLTTFYACcVVUN9syUzKw8SDpdBCerOzuM=; b=G2+LxT4y4bHNRdNGABLXETE9SlYfJRU9D8IAHzB3of1yjZs4AQIV8bFwEsrVVob6yd B9KN3AQjxZIghjAmL90qMtHN8hWmlElXp0Y7vgIZlF07hXhHZ5HLNaw1TjyuEiqsx+zl xALprHlsNLHkzc4K2l37p6/lRMNj6gC7FFVS9A4NlkDzD9K/gQr7DAsgN8q1X4bHtZpI IVnRJv8aKE3HPAHyY8dQ5QP71gZvziR6fJNQGKyS10VMK+gHx32i+r6jEJBT3cLNjD/h OO0OGfSnb5Ok+Z2NcMJxXun1KN60RXqW/6JcOd7rroAMCeP9NF1TFxl4drRuR8Pmj2sz xoZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828982; x=1767433782; 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; bh=c6horWdf4WOLTTFYACcVVUN9syUzKw8SDpdBCerOzuM=; b=nXcuuQHq1dWTG70SXe92hq+d99jKn56ARTujOZATHDRzcQV3NhkmEarKwLgUT23F2t PWVbyQt1kEOAqwEnIyJyogGymlqPsjxnUtYDVK1p7FKgLl9t0iVIHSSViHKYD2UDjeAa ne/p3LVHZz/d4LFu7q6cRCDTxkQ8QQoVWMspUSJRy/zt3bUe7K3Vv7Q0LTQShoeoLjLL QinKS7jVOVi0pXXi8+e6l3FxfWPU837N9ScaFKxLO+nvdN7zfwnpKOTolucqD0QOZdk4 HBWdkevly2tk8QC41X9meC/EfWyvOJKVNZ71HCya+Wy34hZQ1Oa8EJCJ6KyT753KWzQQ VznQ== X-Gm-Message-State: AOJu0Yzj9EsQ7T2dxP2pQdCVWyBrjN3GJb6lwn7S5aNf0FaING9CtPXy 649iCke7y67KQQnBjQmANbOXSjqYPaLVCLW3b7wgW67neRB0heOXdzbc8VFw7BIPJO/gGRp9Jm2 vOJYtV0wyc7ug8biPNhoB8vusw8WMAB8DWwsxsGV/OvVusMPzb2AfUcL3pC9vIsVYYfslTAIfTK aZwKPkkl+HlNjOAlanZsRpgN1q/4UsnHZXOJHPPsqO X-Gm-Gg: AY/fxX7tds6zmuHnSt0PQRkEWMbGDpx7oH+z3d8IGSTDLL+m0sUOYsgx+gjHNyXhJxN 2ug8TOPzLMthOShRctW9jPCBZfQjq+HiMgAxQNlXbcfWcLfN+xD79I9HzCf3UFUqsM1dgpn3Ypj StDlTv5qoKpXt2rhuqJiPtbSjGvikdZl5lDL9rTdOstR9zJw8Wbo8CKVZbhFQZHtCt432AHwYsA OcXTAIN/Lyq6pr9oJ0EL4e7vZemcuOKDmj9Y9iArj3sxIzUnp5r0HXzGr5QyBV/JkzySmS/f30g aDQTmzKMUG0aHdfLBDOCiJCJEBknpocFhWxWCEF0XIaKBRc81Fvo3T3Ln7dw/cuzwo8WwdKv9Rf HOCQXVAss0aRNYmgBZ3uOQdy+ZKCr0ndW2vZQWRSkveyBuHvzvihHx7g5mSQVbsAEJKdjvly293 OWmnV3HB5787yJ3Ho= X-Received: by 2002:a5d:51cc:0:b0:430:f7bc:4d0c with SMTP id ffacd0b85a97d-4324e4d5102mr22441229f8f.28.1766828981977; Sat, 27 Dec 2025 01:49:41 -0800 (PST) X-Google-Smtp-Source: AGHT+IHHp0v+nlh2bn/w80acaEiwFahOktKmyib5jKkUZLpWcs1nnXwpzsWgyqyVv32cWYRHEpjJcg== X-Received: by 2002:a5d:51cc:0:b0:430:f7bc:4d0c with SMTP id ffacd0b85a97d-4324e4d5102mr22441214f8f.28.1766828981456; Sat, 27 Dec 2025 01:49:41 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 113/153] i386/cpu: Drop incorrect comment for CPUID 0x1D Date: Sat, 27 Dec 2025 10:47:18 +0100 Message-ID: <20251227094759.35658-39-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829141302158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu The information in CPUID 0x1D.0x1 is for tile palette 1, and is not SPR-specific. This is to say, these "hardcoded" values won't change in future. If the palette needs to be extended, a new tile palette (maybe in a new subleaf) will be introduced instead of changing current information of tile palette 1. Furthermore, the previous attempt [*] to make the 0x1D.0x1 fields user-configurable is incorrect and unnecessary. Therefore, drop the incorrect and misleading comment. [*]: https://lore.kernel.org/qemu-devel/20230106083826.5384-2-lei4.wang@int= el.com/ Signed-off-by: Zhao Liu Reviewed-by: Xiaoyao Li Link: https://lore.kernel.org/r/20251118080837.837505-2-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- target/i386/cpu.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 0f618ffb03d..4421c458498 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -8381,7 +8381,7 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, = uint32_t count, *edx =3D 0; /* EDX is reserved. */ break; case 0x1D: { - /* AMX TILE, for now hardcoded for Sapphire Rapids*/ + /* AMX TILE */ *eax =3D 0; *ebx =3D 0; *ecx =3D 0; @@ -8394,6 +8394,7 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, = uint32_t count, /* Highest numbered palette subleaf */ *eax =3D INTEL_AMX_TILE_MAX_SUBLEAF; } else if (count =3D=3D 1) { + /* Tile palette 1 */ *eax =3D INTEL_AMX_TOTAL_TILE_BYTES | (INTEL_AMX_BYTES_PER_TILE << 16); *ebx =3D INTEL_AMX_BYTES_PER_ROW | (INTEL_AMX_TILE_MAX_NAMES <= < 16); --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829224; cv=none; d=zohomail.com; s=zohoarc; b=aIh4vS1XfhEuYWOIX/GUfOW6t2zI/kS+iUWEoLEal+FPT+Pnd56B5QVjPlmObGiQsx3FpK/eeTXBTDT1W0vW3qKUvT0OhOF2XAASpSNXGRuqfEcsdQ0TJSkDGvItPIFQQFVh5OE8+PjRYVde/c5hha141Jw5qHkR0Mg2aEd8+4Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829224; 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=EH6Qg1VTw6AKfKDVywah0DcEUcfi1K/cKzxM043Y9m4=; b=K7OT2MZOUlsxeaLC7Qh8bS/RJlq+v0pM+8Q6UM4tm5353lwh+tnjuYSC2F0smhnhcnHxaQDqNSg7RM0py/lRUYj8bq/g6MYKL1CsBmsdY/gGQAu4jN7FbbLjygFeXvZSLwvZVL/YHSpN03wrhGtrCgqoPrFa8e/164kgN+m0WSA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829224861415.76795545283824; Sat, 27 Dec 2025 01:53:44 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQvo-0007Ev-46; Sat, 27 Dec 2025 04:49:52 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvm-00073N-EI for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:50 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvk-00074C-RM for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:50 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-435-aW-IDefcOpi27FnqufNiCQ-1; Sat, 27 Dec 2025 04:49:46 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-4779edba8f3so56181765e9.3 for ; Sat, 27 Dec 2025 01:49:46 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be27b0d5asm490570095e9.13.2025.12.27.01.49.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:49:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828988; 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=EH6Qg1VTw6AKfKDVywah0DcEUcfi1K/cKzxM043Y9m4=; b=IHEAcOZ4PamSYJL4M7MKOOgcwKniPZ77s0JEFZpDiV8qIsqYZdvLtGczn5eIzSzLVOJ1zg zyvLwuLmzLk+z6Icl5mRECCZUg9xZYzYW2idht0zmngg7i4Do5CnqtKoqHSFyp0gUmjMxT qOGabcRaJ2OYD2J1sZZx8JOSiNX0JkA= X-MC-Unique: aW-IDefcOpi27FnqufNiCQ-1 X-Mimecast-MFC-AGG-ID: aW-IDefcOpi27FnqufNiCQ_1766828985 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828984; x=1767433784; 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; bh=EH6Qg1VTw6AKfKDVywah0DcEUcfi1K/cKzxM043Y9m4=; b=I31tIhaCLs6MALJaaEG9V+Gx4Cy7sCNNdrqrAS5Q8d5EjHFI5MKMd9otcAYMU28Lp7 aoAQPVC3ZCsx06vmSZ21uzDRm63cYqGZ+HgQUstf7An0dBJIDoydXtCJktC+MMezXKpg N0QxKE268oFEgYPuRsTG1donb5WZVi8bbyoTNoje1p1DfLUdXzlXM2JEgoQ2K9mwyvCM w9D/5kTpfUm0Srbg9CtKmhQ6GSgDihgV5V8Yeb/G4948bU9djSugjeR8oGLDmL6+xFbX SxUJEV6mJCnzikusPjqk1eoVnS5j8ldiT/d3vzXEPc2GjYZCkOQF06w2zkZdIyZpKxVV hhqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828984; x=1767433784; 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; bh=EH6Qg1VTw6AKfKDVywah0DcEUcfi1K/cKzxM043Y9m4=; b=S/6hXTbeKX4VCyTLD4iMFsw6PZMwvxSVcnQePc1XaPCyjAfVKlum4O0VFKhADYdEBQ 3WXCV0xPL7hJSW1vOsnrYnHbdADqDVQy2N3QCsIy8Fxd3+h3XlSB3DdNgk1IT2LkS/ML XpD1Yg12n6PX/7+1SFoId4VRDktDCtls6Gh115pIJ0wpntvHvdXmiwCi0W8m8dLmlua/ K+LsBeuf5Y/pLdoaUNMf57ItpjFxmDu/rkhE+1IcBsHkTj1qm32oVJsLkY7Q/ioPJBfz frGkegp8Q+O3ez6gqTMrX9Ffoo6ZqErZV8VLS4TKPAnDLevezNU5XdSKm+MEqmTstnsj jwyA== X-Gm-Message-State: AOJu0YwJSmRhU14gfQJlqMHJYVMHyN5EV3figDJNz9Hsx2LFf49h4C/d W9ntfsFnpEYqFpJGT6KCixW4WoaVaDyrUsn6bc8AmDD2ApZwCOArxQVFRrV0yjtf4JlwrkgKHu6 9IEfJrp4o3K9CH9zZBGrvy7OAPMrGcOedN3MbWc3Mmvp12ilqUW2ksfEOJG/LPpZlTfM8ApoMz3 jLqC7fZHwMwRgH01yBSp/J57Apmkqdi9beIyFEM9p/ X-Gm-Gg: AY/fxX4lIwtrt+kEFd7sPTO++oO6AxL3qTdfms3M2GwZweAiFrjiVrSx86pMAD1W5BF RaSVMRPmL/CMw0t5RSd7gfiz3Ez/xZCuQ47GdSAxXBChcva6+JdTVRBt7MybzGa3/4lYfJVtHNp W7Y6vDYIz1jtuG/7mMehpJhovZkSdBbbXruEjPL8qzh8xm1R7tmN0Kgx68EjzXG820/nWVRQz/4 6JRJ/xtKhBavl7N4KspvlP/BGYx7NQ33ugmmowE5itQK+v0aR9IRaKFei4+JksaOr8WVlSvb6j0 ES4lH5BTLgY02jjE2ZpAMkZdE7TP1MgMUsi/FrNBLZD6AEA9Do5uYlmZqSQL/sUb5pVqAB0D1nb mQ/xuiesb5B9zG1bMQ1OFxSKfOpsrWxnx04hKzvEarF5vTFu6ogNDDBV04/yvImTTWht4GRnXIS pf20m3RgeqY61qnDg= X-Received: by 2002:a05:600c:3ba7:b0:477:7af8:c88b with SMTP id 5b1f17b1804b1-47d1953d798mr285457995e9.11.1766828984685; Sat, 27 Dec 2025 01:49:44 -0800 (PST) X-Google-Smtp-Source: AGHT+IHmNi0Dq1zPjCEZ+ZVOFhnCuvMg4/I4fpcMXbhlBzTkybkn/9sS9pv8N7KpmuZKspgLvGHn0Q== X-Received: by 2002:a05:600c:3ba7:b0:477:7af8:c88b with SMTP id 5b1f17b1804b1-47d1953d798mr285457795e9.11.1766828984307; Sat, 27 Dec 2025 01:49:44 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 114/153] i386/cpu: Drop incorrect comment for CPUID 0x1E Date: Sat, 27 Dec 2025 10:47:19 +0100 Message-ID: <20251227094759.35658-40-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829225516158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu The information (tmul_maxk and tmul_maxn) in CPUID 0x1E.0x0.EBX is defined for architecture, not for SPR. This is to say, these "hardcoded" values won't change in future. If the TMUL component needs to be extended for new palettes, there'll likely be the new TMUL instructions, or new types of AMX instructions that are _parallel_ to TMUL that operate in particular palettes, instead of changing current tmul_maxk and tmul_maxn fields in CPUID 0x1E.0x0.EBX. Furthermore, the previous attempt [*] to make the 0x1E.0x0.EBX fields user-configurable is incorrect and unnecessary. Therefore, drop the incorrect and misleading comment. [*]: https://lore.kernel.org/qemu-devel/20230106083826.5384-2-lei4.wang@int= el.com/ Signed-off-by: Zhao Liu Reviewed-by: Xiaoyao Li Link: https://lore.kernel.org/r/20251118080837.837505-3-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- target/i386/cpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 4421c458498..67769200d0d 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -8403,7 +8403,7 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, = uint32_t count, break; } case 0x1E: { - /* AMX TMUL, for now hardcoded for Sapphire Rapids */ + /* AMX TMUL */ *eax =3D 0; *ebx =3D 0; *ecx =3D 0; --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829234; cv=none; d=zohomail.com; s=zohoarc; b=Qjnth7uw7wKVpQ1OTA2otdpZj5LO47WF4qRM0VRVEI1A/0U2m7DDQI3wjrKtG/d9QzfvFb/xonSHoZkNxLtDrKuRAisNmpfv1dFEaU7Y0f71WHOZglfMcZD/aujbb44DRKsP4zl2T7K6xGaUuNekQQlxWFDceoB2ctsWiWEHeMk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829234; 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=3jOxG/lOFaEuwFZnYy+B7I3hVFT1ihE0fudAiQRzeD0=; b=cRT0T9+f7QFYOn4oW6rm4TfSu8tC0r8aO9EcxKu32kD7GuL4BqKDpIt0MkoxkaAaEPfwc5m2XnyEM1ZJNYRYWUF+uk9LNQq8Ee4V5DE9PSOFOu93yjwp5kgrWWuZRvCZsgNElYr+Ptsfx3Vb41dtqnlyU/YAORnDNd2/BE4+99E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829234136467.52256866861876; Sat, 27 Dec 2025 01:53:54 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQvs-0007kx-HV; Sat, 27 Dec 2025 04:49:56 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvp-0007Tb-Rs for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:53 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvn-00074i-UT for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:53 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-300-ZdBaFzp1NiOPMGRBeRrw0A-1; Sat, 27 Dec 2025 04:49:49 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-47918084ac1so65317465e9.2 for ; Sat, 27 Dec 2025 01:49:49 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eab257asm50748292f8f.38.2025.12.27.01.49.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:49:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828991; 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=3jOxG/lOFaEuwFZnYy+B7I3hVFT1ihE0fudAiQRzeD0=; b=CTQ9Uwc+K+hi+aNK+Zwb7F5odCi+RCabOdbUmdw5cr5xrEKc2vKT+xqHX0JH0PFDrIVvew okqCxorLdIVHJ2/rP0h0ey1MAQw4YVgeV19dcm1vnd4s+fyIlEh3jnQRZd+a9fmXvhpcEU XHL3Fo1YuZ+xmPqJWT7GsaIF/5VleGA= X-MC-Unique: ZdBaFzp1NiOPMGRBeRrw0A-1 X-Mimecast-MFC-AGG-ID: ZdBaFzp1NiOPMGRBeRrw0A_1766828988 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828987; x=1767433787; 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; bh=3jOxG/lOFaEuwFZnYy+B7I3hVFT1ihE0fudAiQRzeD0=; b=WvTYXNnEaHTlYnUlJY3Vue+5d56CM8OzBQ0u4xS+Nr4zqlJ9KO1/25by5oJCQ4n0Dr wcvkEtGeMVMlSlO7MBKKMbONJus7oSwWQYwDR/wkvcRo9rE9w8fRCKdTkVuz2IIa+jgb HUNf8sK1cKNT0RzzQtyciICpKZsLgD0hsDr+B9K9evFRwuplIMMmUXALjpUFs+LKZ9ty DdkInGPqE1s0eFjy8mXBJgmmN95K7YjgDTluBH20o9XpQk1pMwy5KFm6IWoVUiTeoo6l REpC60FUSn60hqf49ZyAJCN7KGC21sWAWpnS36CLVLstrI48Cc2ibg2ALjZoXyzVuTmi 24XA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828987; x=1767433787; 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; bh=3jOxG/lOFaEuwFZnYy+B7I3hVFT1ihE0fudAiQRzeD0=; b=ATvjY4HJOErvRNuC2BxYJAX3VMEUmOewV1ElLcjyZ27HqNMlR6iOAQDv83ZZkFnn+b RLQM6IdMKFoMDkaxJ8dYS4/oKlVjTYXab9efiY908hNsjb9LCs1kL4kFAVFhH4uDSPq5 hzWfkQMqCtcpJ52BDa5JLZquDgFOGRKtYBGQgqdGTEAhWilJZRPKeI/HYIfTQ817Chzs /iRT6EiVa5czPeV5+shfHSLPuVHBi8P/CUtLM3K3Yf14Cm/mDsFKbNRZg3amHq0giRBR P5cznR1BQvkF9jn5JSz4jmZuQ+ccotDVXTN8JE73B+6Ox0sWWEqOSoW4PMYwaAn3I+j6 8gPw== X-Gm-Message-State: AOJu0YxRBnZ7r1ntGHuTA10QIQaxbeZDYhSOweTN+s5MfITJTh3EIo0o gmLeEC4x3ulAp2xPp+/M23Q1qP+M/G52+3/ZNdA48nx9wzkBw4B1AtPx3XEvzQi70Y3Got8qewK jdbM1c4EDouyaQuvq0v/zK5Cb6ON4fCdMhP0OHuD3jr0eo+wHOQJNxDxW0E8jaypdg2FJ0e+kge aXFluz//OBdGvuJnyYRZAAa753kIFmNn6dcs83W0r3 X-Gm-Gg: AY/fxX4XDgzrAOVfSIu35tMHCPw61wp9sRRN+82+IP3ssMylyjXaOZIcpBIatvtnrCm jEN5fJHvikWTMqsj3h7FLgKnExjYv7HAL3RbgUTFxr2xLqwOnyuYiozN680w9aApBVBfz2bpnjo yPvqwv5UFPuAA1FjiINWn/sCRiprdwlPR02FQzOi6epR/wSeIvR16LdirIgDxYcm+KDUQiBtGv0 3GpZ4f+z1CmGN793gt1yzsZffsH+SLssWfg3fD4LJnQHdsx7sY0QODuk4D2luiO/PK+DlRtSTry bbV4oLCK7zcmSDk3Tqj8ksG7oiHGlK6YzmXZgy1c4xUx29SVskPX4opinGifPeQC7dF22ySzrUf hG0BTZUo08ulzMJb63iiwkrLSsW68eUV9Q3yJkbkjqJ7fwP4YpIfUmoP47hkCAI8bdTvpS3djVd OKEDX0BzZPfiyDvwc= X-Received: by 2002:a05:600c:4fd4:b0:46e:4a13:e6c6 with SMTP id 5b1f17b1804b1-47d1958a43fmr253930975e9.19.1766828987102; Sat, 27 Dec 2025 01:49:47 -0800 (PST) X-Google-Smtp-Source: AGHT+IHlUtzGZB/fDzWHiJRtNB3M/iBhV0vvxyMtNC+pvM4WjUprd3LC0IhCS4uq9OAf6Qc6vBgz4w== X-Received: by 2002:a05:600c:4fd4:b0:46e:4a13:e6c6 with SMTP id 5b1f17b1804b1-47d1958a43fmr253930645e9.19.1766828986651; Sat, 27 Dec 2025 01:49:46 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Andrew Cooper , qemu-stable@nongnu.org Subject: [PULL 115/153] target/i386: Fix #GP error code for INT instructions Date: Sat, 27 Dec 2025 10:47:20 +0100 Message-ID: <20251227094759.35658-41-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829235542158500 Content-Type: text/plain; charset="utf-8" From: Andrew Cooper While the (intno << shift) expression is correct for indexing the IDT based= on whether Long Mode is active, the error code itself was unchanged with AMD64, and is still the index with 3 bits of metadata in the bottom. Found when running a Xen unit test, all under QEMU. The unit test objected= to being told there was an error with IDT index 256 when INT $0x80 (128) was t= he problem instruction: ... Error: Unexpected fault 0x800d0802, #GP[IDT[256]] ... Fixes: d2fd1af76777 ("x86_64 linux user emulation") Signed-off-by: Andrew Cooper Link: https://lore.kernel.org/r/20250312000603.3666083-1-andrew.cooper3@cit= rix.com Cc: qemu-stable@nongnu.org Resolves: https://gitlab.com/qemu-project/qemu/-/issues/3160 Signed-off-by: Paolo Bonzini --- target/i386/tcg/user/seg_helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/i386/tcg/user/seg_helper.c b/target/i386/tcg/user/seg_h= elper.c index 263f59937fe..28bbef1bbae 100644 --- a/target/i386/tcg/user/seg_helper.c +++ b/target/i386/tcg/user/seg_helper.c @@ -63,7 +63,7 @@ static void do_interrupt_user(CPUX86State *env, int intno= , int is_int, cpl =3D env->hflags & HF_CPL_MASK; /* check privilege if software int */ if (dpl < cpl) { - raise_exception_err(env, EXCP0D_GPF, (intno << shift) + 2); + raise_exception_err(env, EXCP0D_GPF, intno * 8 + 2); } } =20 --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829249; cv=none; d=zohomail.com; s=zohoarc; b=CMWp3BsacCm78FI8v5bjEnzo9IQYlbcw41zMzemUW5lhc8zxiq1fNkntLL/vuBdJLa7Rr/RaPkwH+zJs1uDCHw9DvG8uCXxNVF3Im3wzemZadoSOeMjf8xJ/56PeiTaqURv2KO7uFCDFdh3FY/3dukpqAQ+8TDWQc7KH5xaEHUs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829249; 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=gev2NNF2dqiftBJvy8sN3F/ml1DsaMn3F4NJUClQyYI=; b=JiRGgQxWznrcT67q5Peg5lGvYYY6xljHHuPIAstICXM+Ofsn0SEVSdIVcrLvhuNav2pJPdNdNMUxY0d961TDf5tYmeC7rh9ePOYpW4Pq4CG1lcxbG3vn0aRo5AIxEHe/IDs9QTrLhVMJbHk+xCENnsWv1L0uPIbJZfZNvUF6DNE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829249245823.9917965260311; Sat, 27 Dec 2025 01:54:09 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQvt-0007sa-J5; Sat, 27 Dec 2025 04:49:57 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvr-0007a9-BS for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:55 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvp-00075A-PH for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:54 -0500 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-554-kJwGelpNM8OwdIE0jJ1BuA-1; Sat, 27 Dec 2025 04:49:52 -0500 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-430f527f5easo4798781f8f.1 for ; Sat, 27 Dec 2025 01:49:51 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea227casm50090292f8f.15.2025.12.27.01.49.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:49:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828993; 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=gev2NNF2dqiftBJvy8sN3F/ml1DsaMn3F4NJUClQyYI=; b=WIy/KOQhejQBxU9Gz5VyyL82wOK4ePYqbqNgzMBZJfUEDTkBdGhZ4AuXyNIOwDFkCTA7Ze 1qg0vBsRAGg+3CnpViPP16hpLzAqcJdWPlG19gAIwaFAwSOMJhvyF4aRln1fNSnFcSSNH/ tSGYCJh/P3nW62yKqgLhJ7MJry81uaQ= X-MC-Unique: kJwGelpNM8OwdIE0jJ1BuA-1 X-Mimecast-MFC-AGG-ID: kJwGelpNM8OwdIE0jJ1BuA_1766828991 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828990; x=1767433790; 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; bh=gev2NNF2dqiftBJvy8sN3F/ml1DsaMn3F4NJUClQyYI=; b=B6oBI3aJddpmq7kLN3eeX8Ikw6Ca5CWrCFybct/GZKyy53u6Ff+EXps3KvMYHWuVOT KY83YHSysu7/DOiI5HIeF2YTalK9xFZgnxKgGgbUk3Y5jaRitfOYNhwg2ch/869Q348a 9y2Ps1xTroS8syzNapaLny47jdgnemox/IhIovlOrH+3/j7IMeBc3nYPcnqqwT2TRdP8 +fPgXdms7IZuqQf+FfHuNY9kEYafHgOTkAQGbldzbboSK0teE90Xmv7DjbyDe3707LZY 85ytMSDaDJY8lf7T6FHpESKsg+1KUKRIOrE4pC+dz+2MqLZoYg198Ng67Gu0NyoK4jmp qZ5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828990; x=1767433790; 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; bh=gev2NNF2dqiftBJvy8sN3F/ml1DsaMn3F4NJUClQyYI=; b=i+oJuRKdSEM/y1ZM98CD8GvjyH86+eD0ZY7EYOoOXr0gBz9g3PsAgw10HUqlL9+JSk bEVxqFh2DvqwWSJF4ud8BTTg1unelOeaUlFgBE33W3lNvZsE+6eHFmqGYx/FQgHDn4vY BSGho6Gmzhid624C3Zza6yHwNqmzBBv9MABOfjv21r6frwAxWhbM7lwsBveB1rtq3s8I f+u2S0wgeaLCzfijk2S71nf0jMETVbcIX+tmJw5BdHZ/e4jdRH4we5PuMOuKBFBvlfUL +aK3ThQ2JLuRc804Qr8PCZrswo9+EgaheLDkGJ51s0Ip0gcGuNG8dxGRsHMHzG9FK0gN yi6g== X-Gm-Message-State: AOJu0YyAkcPxe1SOAoBymPRW27dpthOPDKbD/fU2LbHqGg0ClEzby3jT 7em5bSMjdQkoMgSt7E6exbjou+lWdiksV7U6mIsAPwDALg4Iq6V+Ywkp+vUL4BgCKvpGg90bW21 z+Dl0FD85m6qgRq2QLmTsl09IvL3OAzK8KZDmUI9+i8pwiX1hBjusvvN60Q6LvgeLInKKtN07QE rG294OxdTVBB2VJdnmGfNcehmOj2qbnuOb4OV2vURB X-Gm-Gg: AY/fxX4MHNKNCudGxpYT6e13LSLIh25wHZ3n9/Kg7AOGG962oL1ezM+ANQmv7Xpux0h XfyaxafbLU32yg9Ij448InjZfVq5jVPogYOP8scrnuIZf5qZV4Abujsi1Z9b7w01pJWzKma4jdB oulqViygyx9EYEVccqGi3mp3rFvvqRr3oGGZNMf5fWxFyBzgMSOiVGq37IjIAKdk8gkeDdnzflJ irL/cxhmIgTiZQkeNn4RGmMGTRLUuBiLVjqdHOBnfEYpIEw7EEBDOGsYwDwNoZBiTLilGrGPoNk YkfntapDu4TM9k8xPdw58siArj5BDL/hySJHoqv7Uf8DtwYjX9MdTvT4763bM+hdjZAQzPyhjZw +7BBWFyyyp0oaQ3wlNp1CMopBv4Z4bvM5jwCrLYCGuPhc5CxWjFULRXXNfTfacLGZOJxuuDHRgy UYx2jLCs2p2CDJv+0= X-Received: by 2002:a05:6000:2389:b0:430:fe6c:b1aa with SMTP id ffacd0b85a97d-432448c9ddemr36031553f8f.26.1766828990142; Sat, 27 Dec 2025 01:49:50 -0800 (PST) X-Google-Smtp-Source: AGHT+IEleZCevkbjb051zoC+8Zgwj0IrR/HhCsUJ56HfpB8U4F03xMGoTf+8uWaRHJVjEPc+cTQaag== X-Received: by 2002:a05:6000:2389:b0:430:fe6c:b1aa with SMTP id ffacd0b85a97d-432448c9ddemr36031527f8f.26.1766828989707; Sat, 27 Dec 2025 01:49:49 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , qemu-stable@nongnu.org, Richard Henderson Subject: [PULL 116/153] target/i386/tcg: ignore V3 in 32-bit mode Date: Sat, 27 Dec 2025 10:47:21 +0100 Message-ID: <20251227094759.35658-42-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829249582158500 Content-Type: text/plain; charset="utf-8" From the manual: "In 64-bit mode all 4 bits may be used. [...] In 32-bit and 16-bit modes bit 6 must be 1 (if bit 6 is not 1, the 2-byte VEX version will generate LDS instruction and the 3-byte VEX version will ignore this bit)." Cc: qemu-stable@nongnu.org Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- target/i386/tcg/decode-new.c.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/i386/tcg/decode-new.c.inc b/target/i386/tcg/decode-new.= c.inc index 0f8c5d16938..dfaffec599e 100644 --- a/target/i386/tcg/decode-new.c.inc +++ b/target/i386/tcg/decode-new.c.inc @@ -2665,7 +2665,7 @@ static void disas_insn(DisasContext *s, CPUState *cpu) goto unknown_op; } } - s->vex_v =3D (~vex3 >> 3) & 0xf; + s->vex_v =3D (~vex3 >> 3) & (CODE64(s) ? 15 : 7); s->vex_l =3D (vex3 >> 2) & 1; s->prefix |=3D pp_prefix[vex3 & 3] | PREFIX_VEX; } --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829020; cv=none; d=zohomail.com; s=zohoarc; b=HW+7X05EVbTe+r+qJNMQ5PlksCgG32+skAOzfxW+1pdCuF+igT7DmK/4Zp5iuNCwwmLso3+fuHpWXj9Wf4j4OXhlqNs732MoDxaQb++ateSXHA/0uubR6ck0pcLagDqSHjEh8g1fxs1CIvqMx/y+mkQBvWRaMTMHQqx7glnL3qk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829020; 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=PMU0TbzHVCICIeQUh7syleLCdQedbGHpfCrxxYMN8JI=; b=c8MRe7rL1i6sjhn62gQ7inUY1Vd7ESJTZ3NTYZ3aBsPzR8m04D0DDjXjHN3cDbW8GNpjQzp3TAY1+uvBkjmE2+o7h3BloihMKZq5XJ+XnB+tg7pmnIbubV0M2T279VXkx7T/eOsQeE94k9i6PwOUuvjsaFVqPHtpCC7wawBKLqY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829020843515.3379571357086; Sat, 27 Dec 2025 01:50:20 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQvw-0008Kb-5C; Sat, 27 Dec 2025 04:50:00 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvu-00084g-M1 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:58 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvt-00075t-7z for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:49:58 -0500 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-558-rpS8eLaEPrejxk36jAVEKg-1; Sat, 27 Dec 2025 04:49:55 -0500 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-430fcf10280so5703746f8f.0 for ; Sat, 27 Dec 2025 01:49:54 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eab33f5sm50352349f8f.41.2025.12.27.01.49.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:49:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766828996; 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=PMU0TbzHVCICIeQUh7syleLCdQedbGHpfCrxxYMN8JI=; b=fooZQ6I8QtwVd7vELPrpdUOkr/Z61ruih4tGPmNoptesYgLHrng9PxdUoPyo8zxafHjAiV kXvvsmvAz5zDNONQUzSqrKMT3cxcPbxLR59XbkGOkdKPh6gAgUOeU7B/EkThU87cTGfkkb uBQ5RiTLxhhhonThU4ckMlGzYBUqApY= X-MC-Unique: rpS8eLaEPrejxk36jAVEKg-1 X-Mimecast-MFC-AGG-ID: rpS8eLaEPrejxk36jAVEKg_1766828994 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828993; x=1767433793; 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; bh=PMU0TbzHVCICIeQUh7syleLCdQedbGHpfCrxxYMN8JI=; b=a95G8cSkKTG6XTKFUBSZs+qNlfNFhprO8wZIFcwViObny/YXNAbPVLOGFIGCiQicMM qHZ+8te2hFLdbmU0/derN2rhTzeU9oZYVXX4Qe1EWGEC0ze620A56gFLf/MTM8HSyzLX 49BKnPg6x73wbjMnhluupN1+3RzJrDWd/rJZqANQMXnkPvKku9MrbcGnaIYJ6XbevHXC 1Osrj6GyaWDU3/sxF5nw97Ek4pDVkQII48Q+WU63pmC+Jo21q+wIHlw9m20gbfnvSaPf 3WIUrxNDYkr9PBfnOMn6rAXIreCaS9M7lh2YN/CvDG6Vc6mzQMtV/wcnBwiqnNRiso1i RKfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828993; x=1767433793; 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; bh=PMU0TbzHVCICIeQUh7syleLCdQedbGHpfCrxxYMN8JI=; b=E68Xjd/PQZ+cfmqyeeqKwQq7zVf1vlpZC6luJ3zxBxqydf9htM2/ZnxnoR8fkKlaED 9th8lYXQRCKIs44eFGxZU3YlsNm1MFU2cRbfRzlZqLYxsIqRD+eOiXXZOpurvQRiJDkV hKt/+wvQx7xoXXM1KH99a5F1OHdEgC1dl7QZco7or99S/ax8WY8qsjovTLao34grgxwL RhHArmtFBau37mnLPMwWRto1rFSGqe8C3tIU6E70lTbcV4radNSNyfenSorlmCMr0ANq PKBTPH5yYUy67vGEjMnCAn/5F1eujo4QE2J4wdkr3FN9woHuk6ZqxPOrbbPSrZMCptW9 RQ0Q== X-Gm-Message-State: AOJu0YyPD6LEw2OpNnLGHsyr6IsL7DyrJC+cenxvqj+JC2gX9COgLGk8 bH9fRnECOG22hmo3WySgCGkfKnZlzTmnAFWjf5F3F2EEwQRr0yw75eqEkINuEOjrD7e5xxD9msi DXYb1cUbnadrlwz6ufQEZ4mD6VZVpNOYmiQPlw5UjtnlYrhvOVR2SIkPxLzBPviabJZzh5w6VVI gq8bpIe22Jwak8BBunIKQe0xcpxWaRLuaz63wMX+5M X-Gm-Gg: AY/fxX4T+v6TwN4Yu9cQkbsDBvtyLINWTGLyvAn4deH0D4zzKL5FngZyDKmB02E56N6 o9sHGMdCm5rqCjOKsIntFjWM84dWn0rQpWHhND1U8SNdymSLLcjGvjXCp3EasVd4gEjMhGoQCES sg/wL6Xb6zMH7tPLOKKM/IR8+Zz6j7B8VsGkflJ4JwGnPKQs/6PWVZmwbVjG6xsKHF8m8NZwes1 lorjH5HBftO2LZeu4cz/PtJmbYbgeEwDmuSrUW3eGlAClBIj4bLrVV5s9ktZZKRsU6DatSXVzt9 +H2Uod/TsQ+X8hxbfmlVyS/uyFAmSrjwA2ZC6cRsfUJ4zljd+8YXHJzV4zjBzXni3jiYEYbwY7d usWFsOHEZZ+i+4HycWTr3otwP3HWwJv9i4l7HB0m47rWrCUIOwKCkMeCdUBN8/SaaSpgGq5RRQ+ ShOF49/XAvJSdbe64= X-Received: by 2002:a05:6000:24c9:b0:430:fc0f:8fb3 with SMTP id ffacd0b85a97d-4324e506148mr32426808f8f.38.1766828992667; Sat, 27 Dec 2025 01:49:52 -0800 (PST) X-Google-Smtp-Source: AGHT+IEJXFnpu0JbO/6cFU3CuXRVr1tAiNx2eE8D8T+K2bq1tymmqAAiNjqCCXWJwrYn7I+UNa0R+A== X-Received: by 2002:a05:6000:24c9:b0:430:fc0f:8fb3 with SMTP id ffacd0b85a97d-4324e506148mr32426785f8f.38.1766828992175; Sat, 27 Dec 2025 01:49:52 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Richard Henderson Subject: [PULL 117/153] target/i386/tcg: update cc_op after PUSHF Date: Sat, 27 Dec 2025 10:47:22 +0100 Message-ID: <20251227094759.35658-43-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829022852158500 Content-Type: text/plain; charset="utf-8" PUSHF already needs to compute the full eflags; set the cc_op to CC_OP_EFLAGS to avoid duplicate computation in subsequent code. Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- target/i386/tcg/emit.c.inc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/i386/tcg/emit.c.inc b/target/i386/tcg/emit.c.inc index 1a7fab9333a..22e53f5b000 100644 --- a/target/i386/tcg/emit.c.inc +++ b/target/i386/tcg/emit.c.inc @@ -3250,6 +3250,8 @@ static void gen_PUSHF(DisasContext *s, X86DecodedInsn= *decode) gen_update_cc_op(s); gen_helper_read_eflags(s->T0, tcg_env); gen_push_v(s, s->T0); + decode->cc_src =3D s->T0; + decode->cc_op =3D CC_OP_EFLAGS; } =20 static MemOp gen_shift_count(DisasContext *s, X86DecodedInsn *decode, --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829224; cv=none; d=zohomail.com; s=zohoarc; b=Mqbae8uNF6f3Br6ug0jSuoYB0y9Nxdx7tyj/g6NhU1Dj55F9Qgsv6V1Yn0SjDA65GCCp+maeJwTT6ca1BDVu7j3e3q4pYiZR3e+Hat4nVvXZJmHnscErdpKOZkdyEtyU+H4/ocJko0YAUqQYVSiLi77w5SzD6bJvoNv29OIsqnY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829224; 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=UMX6XGLgAoHmFfL2qR77G3yc1UxcsxwMbqixV2REwfU=; b=QAbrE5C185VrmqWbyvvWTmAgfg3F1eoAaHCs36oHvcBFx6WNoUv2TgAYZFVmmgCauhVMPrKEF2eyaI3g/V2NctlogQPT71aWrEGnIp57iVc7afFqfAX2xkqdRjz9lXgwyBFuFfDoMzZzpKHhEFB8oyhNRL8+9VAhpdYwftw9RsA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829224455728.9406304568839; Sat, 27 Dec 2025 01:53:44 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQw0-00007c-FP; Sat, 27 Dec 2025 04:50:04 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvy-0008Sv-4r for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:02 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQvw-00076c-MQ for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:01 -0500 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-168-_ZxInSJhOQeIzvKPudWkBg-1; Sat, 27 Dec 2025 04:49:59 -0500 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-4325aa61c6bso2502834f8f.0 for ; Sat, 27 Dec 2025 01:49:58 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eab2ebfsm49665631f8f.40.2025.12.27.01.49.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:49:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829000; 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=UMX6XGLgAoHmFfL2qR77G3yc1UxcsxwMbqixV2REwfU=; b=bgvqBUOHFp/VaEUfLUXiV0tw4eKWRivvlUyLh4UXm1kgqNfXHt1fznzGl+xoq4kctfuCZA e6rLQgS8iIQyzQmAorz6UHQLeypWb+kNG7gB/AmmgCQuTYXJvMG09bRoi1+mTQQ6NCtyCd ddQkXP70X0RrD+6PI6Vj5uZtzWntwJs= X-MC-Unique: _ZxInSJhOQeIzvKPudWkBg-1 X-Mimecast-MFC-AGG-ID: _ZxInSJhOQeIzvKPudWkBg_1766828998 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766828996; x=1767433796; 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; bh=UMX6XGLgAoHmFfL2qR77G3yc1UxcsxwMbqixV2REwfU=; b=FgNAFFd8KIJhVShNTIrjXJ9DZnnEYjkXmHDtChYPGIaaXO8Y3hGCMWVNz27SG5VYiT Ny2RB0pc2feyw1VOxFsEN3w0a8YAdUyFIKDaLVqzXnYWt6Oy5pfO7IOTCyAc8RS0VZws 9hJQjxwTY4dZTwX6c8OFqR/rAZ2MAXW35s83m/BnaNOGj1wuWFpc1sO1VT/S8k2Cbt4u /fbOZDOqweJxfJw6Qy6S3nj4QqowjniKVEMUFVyeZfVJDP7XL+HFC1RFcZ6p5gFV6C/i e2GDu0uRMM+3s/hHOJkHIo9vMDFwu5XUixnt9axh4bTsLEh8Urm9wQ/liiqTZQo1vlyz i7gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766828996; x=1767433796; 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; bh=UMX6XGLgAoHmFfL2qR77G3yc1UxcsxwMbqixV2REwfU=; b=OOFBsegW2JeMhnA3p0h4uIecACH+JoID+NDVqltcv3jlmoYuCXMKNrlkBAf3Wpp9Y3 Dr8ncNuWCzDuOILa24jJNdfRSr0mRGb6TD/wbJqw2XFAGuRpTpBur7TfVOgQyGYhEObQ dqnckbb/bA+QLMfOtn6JPuEehL2F3M3DC2qHzY/zFxHnbAq3Ty92Vl6WLjb6fvIpOMAv pQhkgnj653XFe8DGFRJupf1M8ZDPHtC4Vt6Mayvhj5u23v83NtJeKuC1Ta3+UeDggjNx EJTad9g5Y1jdbZc4Pfj6KJOwy8nlTb/Vbiij0/o9T4kKxk6c1hEDbDeyxtEwPI6YNgP4 Mj9w== X-Gm-Message-State: AOJu0Yw1QmcyJS1RVAl0xlHavFe6r7abjm3LFnkfyGk10Mti7WHAnfmE fkyQ5Lz/0MhdbP5WmmHHDn8lwNZNB6LB8qh3onOSMd8PPJPKjfk6KmXk2Q7FFEAuB+9B8oRUgSO mGUL7CK879UC+/vvr5CohjXtHc4OmryY+DMAIzLYag4ng5fBAljlv3VfmAQmnsBzOYuPUQ4mlEq joqL6co5z8Tg1Vs8+ohW47PKbuQrpQ8DEG7B2NhWyY X-Gm-Gg: AY/fxX44vReRQKo0+o6pAN2H68Z4UcTh4a8McQ6XAzvWrBKIRs1aY5gdOvUA3jobzLc fvZPFDXMfNVvU7oq/rxSPsDOi7JJjhzIVYt0u+NeOZWRvDD5lvErP5NkOYcUNR2CMmoXUfOw+X3 DfxHnlGl4UqBSDPzTNVofgM9vnXPjQ/KmZKieaTaVPQ5obV3iJ/D6KTwb/TKVVYaBPP56cJ+10r ZLbhLi+Xm92j2bh8xmjzh/uQMmndDgmGyuptl5DHop/99FH1EGcsYIc1H2tOXCvQo6Wtw/RUedQ SGK6JWHu19QBJFcv3LkjWfJyHSd549Ypeoq3Af5/Nh+MwL+mGYZ0aubGuopaoTOBX0ObtX42uYg 6G24AxgyZm4kQoaaOkLAKvs2D3s6g1abGut5V4Vi5DXbh97GfOA9rzGAH5k5bP+k/I+BObEJcRR VonmbPQ9/LVwQhXKM= X-Received: by 2002:a05:6000:2301:b0:431:266:d134 with SMTP id ffacd0b85a97d-4324e50c2ccmr30009753f8f.53.1766828996390; Sat, 27 Dec 2025 01:49:56 -0800 (PST) X-Google-Smtp-Source: AGHT+IEpQEWs0Nss3GVFySYRyf72A6ZT6AvrIt/x7fCJ6PP7FfQ8xxT0YsYqY2tF4t+/dbq5veA6IA== X-Received: by 2002:a05:6000:2301:b0:431:266:d134 with SMTP id ffacd0b85a97d-4324e50c2ccmr30009726f8f.53.1766828995912; Sat, 27 Dec 2025 01:49:55 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Richard Henderson Subject: [PULL 118/153] target/i386/tcg: mark more instructions that are invalid in 64-bit mode Date: Sat, 27 Dec 2025 10:47:23 +0100 Message-ID: <20251227094759.35658-44-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829225484158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- target/i386/tcg/decode-new.c.inc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/target/i386/tcg/decode-new.c.inc b/target/i386/tcg/decode-new.= c.inc index dfaffec599e..8a1fb2855d5 100644 --- a/target/i386/tcg/decode-new.c.inc +++ b/target/i386/tcg/decode-new.c.inc @@ -1698,9 +1698,9 @@ static const X86OpEntry opcodes_root[256] =3D { [0xD1] =3D X86_OP_GROUP1(group2, E,v), [0xD2] =3D X86_OP_GROUP2(group2, E,b, 1,b), /* CL */ [0xD3] =3D X86_OP_GROUP2(group2, E,v, 1,b), /* CL */ - [0xD4] =3D X86_OP_ENTRY2(AAM, 0,w, I,b), - [0xD5] =3D X86_OP_ENTRY2(AAD, 0,w, I,b), - [0xD6] =3D X86_OP_ENTRYw(SALC, 0,b), + [0xD4] =3D X86_OP_ENTRY2(AAM, 0,w, I,b, chk(i64)), + [0xD5] =3D X86_OP_ENTRY2(AAD, 0,w, I,b, chk(i64)), + [0xD6] =3D X86_OP_ENTRYw(SALC, 0,b, chk(i64)), [0xD7] =3D X86_OP_ENTRY1(XLAT, 0,b, zextT0), /* AL read/written */ =20 [0xE0] =3D X86_OP_ENTRYr(LOOPNE, J,b), /* implicit: CX with aflag size= */ @@ -1834,7 +1834,7 @@ static const X86OpEntry opcodes_root[256] =3D { [0xCB] =3D X86_OP_ENTRY0(RETF), [0xCC] =3D X86_OP_ENTRY0(INT3), [0xCD] =3D X86_OP_ENTRYr(INT, I,b, chk(vm86_iopl)), - [0xCE] =3D X86_OP_ENTRY0(INTO), + [0xCE] =3D X86_OP_ENTRY0(INTO, chk(i64)), [0xCF] =3D X86_OP_ENTRY0(IRET, chk(vm86_iopl) svm(IRET)), =20 /* --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829053; cv=none; d=zohomail.com; s=zohoarc; b=grj6l9A+gn0yHFV6R4jwgfbH4vrvENZuLpWfU1qI5t9XborwUGvYH5ea5sOGvfwurn4F3h2E5QmtqBMVrzu+c63IdckNC0zYX/oWTCVI49l3WZLWaEXSwINE16AtzVsLVt6bvMfBFQxzK2/pZuvQhxflQj4snZ9PTvUFSUuPD1A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829053; 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=PkQKI9pL9QEKwisRnbeQa466UkPQngXQc9/Gw/kxCsU=; b=n4g/+jrFYiIE5xWrvhdvDLB6rL5w6qhnRMVrfiqQlxa74LzknogLvQxfyTWpvF0NU6O++nmEcbAV/RxDe5XZNFO7/xG+ckIh812RKDOkDGieAJGfYrQW3nzKMq6K+/iA0BvtwFdalKbDnloSPiPcmMyxs17HZAfRwgsGjZcQKlk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829053787374.2614650883677; Sat, 27 Dec 2025 01:50:53 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQw6-0000PF-Tb; Sat, 27 Dec 2025 04:50:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQw4-0000C9-8B for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:08 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQw2-0007JK-NT for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:08 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-139-HAUPgw_eNPWKKPszY1iLgg-1; Sat, 27 Dec 2025 04:50:03 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-47a97b785bdso55692735e9.3 for ; Sat, 27 Dec 2025 01:50:02 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea830f3sm48761867f8f.22.2025.12.27.01.49.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:49:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829004; 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=PkQKI9pL9QEKwisRnbeQa466UkPQngXQc9/Gw/kxCsU=; b=EvpviqUy7ciLZQU5D7akS822TE1wHJD8+4JkFnSk69xHUBqTXbe+PGUqCtC1/Hl/dVeKNh iSM28iKBM6m86AHv84aU/5ZBsIFpCC65h6MJZRmPz9pPxKUqwBPCzEq68qnxU7U5pBJeWH Eg26441IhbWcOOTz8tmMZxEDzmPmDW0= X-MC-Unique: HAUPgw_eNPWKKPszY1iLgg-1 X-Mimecast-MFC-AGG-ID: HAUPgw_eNPWKKPszY1iLgg_1766829002 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829000; x=1767433800; 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; bh=PkQKI9pL9QEKwisRnbeQa466UkPQngXQc9/Gw/kxCsU=; b=ExrLAXbOBO6N1hLTCcdi+p8f1Cy6LIQNZTKhfbt+XFpcFyXFLYEhVf+obiko0yn5KU zu22+mCe+RLagXjDIcGvLuL8JYS8I8+PX6EdXfyuyfstCG2zBIidG9wiwcOknNYTdshS pSk/q+80r+elxwrJTE9eDA3slo3XM/gNUSKC3mJkebAfHpAe37yCZiYRN0KXE0cfT99o 7SHNLEU0Gt6wvDMm7jCtrT+62RSJtZjHwLJgRGQ44m0BZ1Cv21T7ZRqJS9yhWU3fniK0 Pf1Had4P9tvPAUbnM8vLykDglkanwxGXA9267QfvDsacq+iRt8hBF+iCONBnIR2li8q9 f+eQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829000; x=1767433800; 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; bh=PkQKI9pL9QEKwisRnbeQa466UkPQngXQc9/Gw/kxCsU=; b=dQtPe5T2gkVFT9ydHWV+D50v3L46DsFWCg1cfLw8mII3oMRf9nyKOrpY99aZUJ9UZy vC//vmIEIACYSM/D2khvrcFISbUfL/4qqbavlevyjzZ/Nrgdkv6NM6YBuey2hJJClUnz f03PMXnucgQesW33nVhAJfauBzqbkQg9gvlSgmC91QHT+op6wLWY1KH68QQO58LHpMfY hZUK9REbUVWP9iFClqdtaPoO2N14b6I58aEI9/GoLBHPmBUnWz/UBYrZneXAMdSwixKb YE3cKTXOGWrjBpVb+MGKIPxdcSQqGOdEQhMWV+lGbCHcL3MH4T+q9z9IeBycxfm7Vvb4 pjXQ== X-Gm-Message-State: AOJu0YxSFkhaaqfzuhx8TeCB+kgt15qXOZ42cayMUieE0+Ng1UIrdrsb 1F7QoH0lTNFTC3FXRIrW/QmruYmyhzxHyTUH7UalGH7EUT5EMaudh7LIuiPEUjfpYG9NPU0m1Zj NHDHw0SS0MitcXr+cAuUXiDmQp7JUPo+EHGve2wb0cm4wUD9lT71TUfeTRKU7uVQFrhbEdAmzZw dqeSv1C7I1jek+v+F2ybQmCJ322QPgCFtI/9j59dBI X-Gm-Gg: AY/fxX7ptCIPsKg0tKsXEqKFZbFNN7Tc/y1sIZYOWi7EVlT9/vV5eUMHjyXcIWhhm5i e6QvGXWzCgXwBZHXNl3YlLIs3MxvSr7fPY/eSYxaqq6plwWgBW47dTSKfhmJb5i+esC5bPx4cK/ fZ2Y9PDxXomFLBi22BMwWvhFE2YWbijEeGqOKuanqxaSGRDkDHh6qw7+EVJvWT9rxnaOUNNIu1h xDS2OpysnHudCfDFm0SqbQYsOgXfaQfYraM8VC2TihACPiphPI4gQj77DG2gzMmACv4L7a/Ghl8 wXq6W9UvUG2Wrzxadc2eQRnjUFs78AEK4vioCdxOOqpuV+FWWmXTvmgYOVTNoAdyGeOPPaFCPIQ aup9KQxYPNbmAHaO7rPPto6XpWhUhT3Vr2HfV8yk1kxWoueZpN31Ta215EJ0ZefBk8LIGFK5r+C RAL5UriGLUjgFDoRI= X-Received: by 2002:a05:600c:444b:b0:477:561f:6fc8 with SMTP id 5b1f17b1804b1-47d19549625mr246540175e9.5.1766829000370; Sat, 27 Dec 2025 01:50:00 -0800 (PST) X-Google-Smtp-Source: AGHT+IGC8ZN1aBo8QJMzQeftFctozI86cnqOWjj1zSFB2NRhjJkGrAwb8k242bCnrf3RwdEDvn4wxw== X-Received: by 2002:a05:600c:444b:b0:477:561f:6fc8 with SMTP id 5b1f17b1804b1-47d19549625mr246539905e9.5.1766828999884; Sat, 27 Dec 2025 01:49:59 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Richard Henderson Subject: [PULL 119/153] target/i386/tcg: do not compute all flags for SAHF Date: Sat, 27 Dec 2025 10:47:24 +0100 Message-ID: <20251227094759.35658-45-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829055025158500 Content-Type: text/plain; charset="utf-8" Only OF is needed, the others are overwritten. Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- target/i386/tcg/emit.c.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/i386/tcg/emit.c.inc b/target/i386/tcg/emit.c.inc index 22e53f5b000..131aefce53c 100644 --- a/target/i386/tcg/emit.c.inc +++ b/target/i386/tcg/emit.c.inc @@ -3778,7 +3778,7 @@ static void gen_SAHF(DisasContext *s, X86DecodedInsn = *decode) return gen_illegal_opcode(s); } tcg_gen_shri_tl(s->T0, cpu_regs[R_EAX], 8); - gen_compute_eflags(s); + gen_neg_setcc(s, JCC_O << 1, cpu_cc_src); tcg_gen_andi_tl(cpu_cc_src, cpu_cc_src, CC_O); tcg_gen_andi_tl(s->T0, s->T0, CC_S | CC_Z | CC_A | CC_P | CC_C); tcg_gen_or_tl(cpu_cc_src, cpu_cc_src, s->T0); --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829179; cv=none; d=zohomail.com; s=zohoarc; b=NXxlo9KtZ+6HsLeJ47d4j2VfxE29Q2o2paS7sRq04+4Y+u6lNzjwE8Z6vFu/PAHq5WtUot2jM8Wfi2WAgqp6tsRFQ12gN6KjMAovMa5kcvbbj51v6ZC6yjERY/20y1GfFQnzVV7R5Cp7Qiz7z3DbZgiHp7csoF9hQTMMPp16lRM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829179; 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=t744vUWy2Ee77dP49UO1E2no25c9JrA3rvTNF0iTUl0=; b=AYmo5mGfH5wBypZZS6PS+hdecyLk1cstuJr81mDgQYCVRBpOcngYfyhJiQ82ej7yQvpxVNF0eG4LHwSyct0D1RkvbruVDoqOuZyes8WCrcdyTYyfzqGQR8XcH8+rEab79mfpRTibm8rkVvExj864XS6eR9mQWxKkWG3qRSUdm6Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829179600146.49414546674927; Sat, 27 Dec 2025 01:52:59 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQw9-0000Xv-0p; Sat, 27 Dec 2025 04:50:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQw6-0000PS-TD for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:10 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQw5-0007Jw-05 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:10 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-465-wITtALy0Ny6dQuLgbk0A5Q-1; Sat, 27 Dec 2025 04:50:07 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-4779b432aecso45665695e9.0 for ; Sat, 27 Dec 2025 01:50:06 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be26a81b6sm499601285e9.0.2025.12.27.01.50.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:50:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829008; 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=t744vUWy2Ee77dP49UO1E2no25c9JrA3rvTNF0iTUl0=; b=Wu0nrk0cHNpPJqAO6ZDxeO7UPGtyPjoUU2TlHQHGtgK2jFPWbWzGztoP/gKo6XbvxIgJPA oXXBpgNd/JUQSJcCQFAiNzdMchh8R1OXk07hAZDUC/IwWnFo8DDoISbzh+US0BI9rLvy6c Vc94ZNoABihvsFCujQq8HAllI7uaQoY= X-MC-Unique: wITtALy0Ny6dQuLgbk0A5Q-1 X-Mimecast-MFC-AGG-ID: wITtALy0Ny6dQuLgbk0A5Q_1766829006 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829005; x=1767433805; 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; bh=t744vUWy2Ee77dP49UO1E2no25c9JrA3rvTNF0iTUl0=; b=Fmqz5lCyyZfdp/VA8Aov5wU5U2KOE2Vvy0p3szXzILGfZ/a/CZNY6S6UvUSg624K6H /jjD6RA8ODmS1yxazb7nJNKUjzlcbzLNiBTqNu3wHu42Kn5QTDLr6d1MtWEZoPlIKaXD tyPseOpigtpcmXf+1m2tdAUZeQOxH33ZYgo7KQCqChcM1sB6cGKOxiW3loLqilRjPGEh QWqVdP46VlRPR1fb7dWxi7MxGEDaQaYZCYDAyGTm5WHtQxgqTS5PzpdSWLN46CeJJ8n+ JC+9bDJtkwPv1581eW0QRdhJG/9dvtZxaXta7MTEjSgmbFHl5Y7TSQXoRD69URuBP8Rf 0a/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829005; x=1767433805; 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; bh=t744vUWy2Ee77dP49UO1E2no25c9JrA3rvTNF0iTUl0=; b=GFgbVBNx3whgw0mqUvzsUnz2gJU/2fHXeQM0gxHtjvDPN8TI/INaSqw82jUn2AxRc0 KLbybVRaUTOmBObS6oE2wWd1L8zSI6ihfbkS3DXEEXccoqiFJsJUxRkySeYtI0PJjnwH K7j1wH0AFv1F7PN/DIzudSMG4G3Bo2xnaVyHg8nXjQftMcFXpGwVxamIitfK6GXV5iiB 2ttWe+EI49T7HRtfunO96o4Ry3fZ0bEHidM6roCoI+dJUBh9tk2jngHwlbkaFvSVsPaP dDk528j4Zso8kb/sQo9R+ekJqZUPAvami5vHYbdY+Gi9Fk8IDojLO8q3u5Y/HpFbhUy7 0UDw== X-Gm-Message-State: AOJu0YzlzQaXLINO3VYQx0GdRTJiRRWFSG9lkbUc7V++Vt1uBfo9U3fs fbcg2c+N0bJE9izyw61F4wD93Y+I/6ZmAvJCVk4dQ0cyxigquLD2y5jpf9Hq1lef2ms2nnZGwuM /DCP5nYPe2RTGmOU1Ep8WoYjgxT3SsbZo0cEQNxAFleh4QesUY0ljHqDDyj+f3UHmpHi30rw+EL LLupFu75g6/rU11571VmNWP9sZC/4/wGWubqagXBL3 X-Gm-Gg: AY/fxX6klfWfSFSUqwZue+9lrJJPRZzU0YTS1IwktgxxpN8xYT9Kc6s2qaXwyD0KKXr bjnFTEQGu1vyfsSnxjg7PRA05jG0P3dJ/FNkUBSMbnQHNVd0mf/UkkUhbFTGXtH+52gO6NcwvCy DQJrnn68PTLz0+5ilYh7CjAVjk9BO0D+FdJ+FLD6UshClVfNGL+vQg1Lvqt2YinaqDvDtB/MF68 mkbHVN+2qPCVbTgkchNwP1O7o1EP7WL3k82uE7tmcSMiiy3yZw/JBztzpFyeHhQjCccy20qP+dz HrjzUgMe3Z9w2K5ex4pk5EcY/hW/AayZ/WEutp+VMlI2ErbMsN2x9rhCLONTbxoaXqykV/ghdAT wD2a59GffH+jZWfwagRd66eI5I83YAbTlOPx+DodS+sWGeZPvIkED8M34J44CfQXXfDxdIZGj7T m8Xv2iyKPo7rPCnxY= X-Received: by 2002:a05:600c:1d1d:b0:477:632a:fd67 with SMTP id 5b1f17b1804b1-47d19546487mr276574735e9.12.1766829004933; Sat, 27 Dec 2025 01:50:04 -0800 (PST) X-Google-Smtp-Source: AGHT+IE5kzhMDqxTj3/SmGWLuzKPFTtxuWKd2dXVg6OMyG1px2W6Nyka7Yd07keEvstCbgIosCP2IA== X-Received: by 2002:a05:600c:1d1d:b0:477:632a:fd67 with SMTP id 5b1f17b1804b1-47d19546487mr276574535e9.12.1766829004522; Sat, 27 Dec 2025 01:50:04 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Richard Henderson Subject: [PULL 120/153] target/i386/tcg: remove do_decode_0F Date: Sat, 27 Dec 2025 10:47:25 +0100 Message-ID: <20251227094759.35658-46-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829181345158500 Content-Type: text/plain; charset="utf-8" It is not needed anymore since all prefixes are handled by the new decoder. Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- target/i386/tcg/decode-new.c.inc | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/target/i386/tcg/decode-new.c.inc b/target/i386/tcg/decode-new.= c.inc index 8a1fb2855d5..d2c024ea342 100644 --- a/target/i386/tcg/decode-new.c.inc +++ b/target/i386/tcg/decode-new.c.inc @@ -1430,15 +1430,10 @@ static const X86OpEntry opcodes_0F[256] =3D { [0xff] =3D X86_OP_ENTRYr(UD, nop,v), /* UD0= */ }; =20 -static void do_decode_0F(DisasContext *s, CPUX86State *env, X86OpEntry *en= try, uint8_t *b) -{ - *entry =3D opcodes_0F[*b]; -} - static void decode_0F(DisasContext *s, CPUX86State *env, X86OpEntry *entry= , uint8_t *b) { *b =3D x86_ldub_code(env, s); - do_decode_0F(s, env, entry, b); + *entry =3D opcodes_0F[*b]; } =20 static void decode_63(DisasContext *s, CPUX86State *env, X86OpEntry *entry= , uint8_t *b) --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829249; cv=none; d=zohomail.com; s=zohoarc; b=SgWwJNE1nbchj41nKbW4mbrHGA2guJXpB8ZTygBxJAxl6fqv9i3mc5B9OhU0J5P1C/3gTm40+hcZ7Jx+CHydeERO0btssJGojO60iH1vCk8gVuUWA+R1CnUSxUaj1d68oicxyF4ahdvFhb3otKF+MC0kVmBAY6oiiYTYbtWx6n0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829249; 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=zUwtoIClAP7zN2ld+NydAiQdZPk655xB1d8oj28AgHs=; b=VrL9NgT4dV3jPOWdKK1j1goqcIZVZgyk4FwdAtNuXpae1VA2MYh1SKIwlCDeCskCF2WIyeNzi/tDXt/pQ1alf7+4ggMinauId9ET4TkTJKXFohidpxHpda82wKMbt6TXvBRBc3Z9LsjbHxPs/LrdDPBN24UyAUH6IjQYzVaDUco= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829249745240.3012472088559; Sat, 27 Dec 2025 01:54:09 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQwL-0000sX-Jk; Sat, 27 Dec 2025 04:50:26 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQwB-0000kY-Dl for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:15 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQw9-0007Kl-UZ for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:15 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-671-QLq-gvSmP5-RsUPJTMPuaQ-1; Sat, 27 Dec 2025 04:50:11 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-4775e00b16fso19457455e9.2 for ; Sat, 27 Dec 2025 01:50:11 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa477bsm50144147f8f.36.2025.12.27.01.50.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:50:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829013; 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=zUwtoIClAP7zN2ld+NydAiQdZPk655xB1d8oj28AgHs=; b=IqvkTyM+Wc7mLWS84Ej2iPWcOAZkTIZt6lwK/+fUZ9fPg3SJjraFmWAw7abUIPwaflJlNl /ndXYnuY2LQ/wCBttBJD/Y4ZsEYqjqn58EMlUOv3mlqI7PeyCUeoVodhRX18NMpe/sGTv5 ajDW6hnaaAxds6+EffL1sTkMLv3r1pw= X-MC-Unique: QLq-gvSmP5-RsUPJTMPuaQ-1 X-Mimecast-MFC-AGG-ID: QLq-gvSmP5-RsUPJTMPuaQ_1766829011 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829009; x=1767433809; 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; bh=zUwtoIClAP7zN2ld+NydAiQdZPk655xB1d8oj28AgHs=; b=cZG5cfP2rHisO/oWZRScz/F4URuVquxLXXplDocRSIBomjNy+sxSyxd0RfSVfK+A8R TZiTx1Xl6vStjrmUG2U8LzoqOW8Scn9sb4vJUtldCrkAVBIkRZJENo8xIyzzSp2mAXSK F+ydmqvlTICkNwrov3ye2Whq10sIe3E+gzsDVGxoxjbhe7Dhv5hDEub8ogd4+uIQ/pzY 7//pBcskIzCCTXPTv0HHj4pLjdDqduqjoWuUF7OT2TPC5jNwGdMGkJ6g2QzUSUQQRCZw gu3iMtuw7+aDfK7lxqCPbRkc8IJEAbyCojAE9GqVwXgJhcrZI/5MY/dkuCfZ4IUKYQmq bYBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829009; x=1767433809; 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; bh=zUwtoIClAP7zN2ld+NydAiQdZPk655xB1d8oj28AgHs=; b=fkMEEJxniLCEsaqcBJfDIKH3OSdxU6irXcosflKrJkNmplWFLPGcpj7degwexLXEMW XyEQAyyBGb1yo5r6zZB1C0CqhWyeA3EsHpI2qZVwpW3iAoHZEucLfYWOVOl5ZD570424 OCj63SCImFC5hUAaYbZm2yUg3VI3NDPA3LGntxL1QMrLM7sbLdBXNAfkJVttg1VbxX6J LOcPvRNY4YxERl70cU+RTN03Y/SH6u/rfS6D9TOkpqXigK4Ko0L4Enjx8WT/SjDlWWy/ aRBLFs/YiXvptj6zGfKzuD5RfzG7JQVqnVmAt8iQByJ4z/L+k+b4LS6rykYJvx5qlY1/ 5EMA== X-Gm-Message-State: AOJu0YwsK2ByU2x7HpkQr5ZmJatCsnV9ChunfjtnaL4o7yJGKtkZEKt3 BdRt2IIw7Tq9w9TcAEap3z9frmrPy+FOSFoGPSccEBvzwt13ai1bGkplA4CSEFBTpo2y8xs7bGq loFbFnzRgjXWoqjBWms8O2F4SxCwYMTTHr18ieKXKft4iUkc2iMbgtx/ev4VWJXW5Ty/LJ4dAf1 0XLdBb7i3rQHsMVkdmAWXoKHI4qutz9NfgpTIxQ/a0 X-Gm-Gg: AY/fxX4+iHPd/+16yBKhhmKF79Ksp1cfaU+ntciGgxLzC+3cWuL6kmExqh5qHMZhCfq puVHbefh4jtVLv2qK99AzoI43M9b1x/wx47NKu0/kbX6qE3g51zcWM/u7VE0G2ICFIddUzrkyQs ihP4SmFH/RDxcWGUwS8hH+eNjlsYVqFg26SHBiJQ/V9Kmi3JK1KwFWQFztQg9bssBS2w581Zf0R 0dM/SaDWBrjc9g4CP5B7bSeK6KAhsqD9CR17ePhExx6WlVqUsgtTVvwwo5SsRmNmjYO6RVdLnxs b4H2PqxgkWBm0eI/s3bqT250h3lAPqbcsAvqGzyiKXf/+dxT21Ib3fLO6yRg8KzF1aWvQv+oBRF Hx5g79cwYsGu83uHUUEbODK6YHACcQ7CyHk7WxrYrCjsp8EI93Fbku24MzPIip7fUr+7mbw+pFJ vQcUUZErWnethOs2E= X-Received: by 2002:a05:600c:5251:b0:477:8a29:582c with SMTP id 5b1f17b1804b1-47d195a425bmr280359915e9.34.1766829009575; Sat, 27 Dec 2025 01:50:09 -0800 (PST) X-Google-Smtp-Source: AGHT+IHCo+BS7wftrSDLGYgiIVFFNnXSt1gd38ZN1R7VTxsGumcxQELrKWxPSSxvARQbmm8udhVB3g== X-Received: by 2002:a05:600c:5251:b0:477:8a29:582c with SMTP id 5b1f17b1804b1-47d195a425bmr280359645e9.34.1766829009131; Sat, 27 Dec 2025 01:50:09 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Richard Henderson Subject: [PULL 121/153] target/i386/tcg: move and expand misplaced comment Date: Sat, 27 Dec 2025 10:47:26 +0100 Message-ID: <20251227094759.35658-47-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829251567158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- target/i386/tcg/decode-new.c.inc | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/target/i386/tcg/decode-new.c.inc b/target/i386/tcg/decode-new.= c.inc index d2c024ea342..e7ffd3a9848 100644 --- a/target/i386/tcg/decode-new.c.inc +++ b/target/i386/tcg/decode-new.c.inc @@ -1878,16 +1878,11 @@ static const X86OpEntry opcodes_root[256] =3D { #undef vex12 #undef vex13 =20 -/* - * Decode the fixed part of the opcode and place the last - * in b. - */ static void decode_root(DisasContext *s, CPUX86State *env, X86OpEntry *ent= ry, uint8_t *b) { *entry =3D opcodes_root[*b]; } =20 - static int decode_modrm(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode, X86DecodedOp *op) { @@ -2222,6 +2217,10 @@ static bool decode_insn(DisasContext *s, CPUX86State= *env, X86DecodeFunc decode_ { X86OpEntry *e =3D &decode->e; =20 + /* + * Each step decodes part of the opcode and leaves the last not-fully-= decoded + * byte in decode->b. If the modrm byte is read, it is placed in s->m= odrm. + */ decode_func(s, env, e, &decode->b); while (e->is_decode) { e->is_decode =3D false; --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829127; cv=none; d=zohomail.com; s=zohoarc; b=dBkrIQdRAnkDg4Ufq2JpzjFoeP7gaGHYyxqduCQrfC7cZkp92+4f6ArlRWpJZ0sFPr4IZIBbesDlUQwbmIX/jJ70S9GWig9ZQt7VnO2sGtSCQlMPvIjb1RkIci/uDxQwZBJRYIdUUtoRxDe3yXgW4Vls96LO+rsudH56ZQhRobo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829127; 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=iJyEkR86rzlM/d8GgTLDqMukBuix21+dQiXIBZzjT04=; b=n2A1gPEml98YHcTJa0Wdcgr6mcSBwAYzigXfU5OQLbbDU0IdJg2e7VtyqS8d6cizzDqL88znxneFz/+RDfw1puPGxcJK7dchiea9DO13LNtmCPad5VsXV2Dn2VdVRTaGCN2jkJ5poxlro3XtHgAByqSe6Bw6ieg/EAFYRdMuR7U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829127330974.0562277039369; Sat, 27 Dec 2025 01:52:07 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQwU-00017E-Mu; Sat, 27 Dec 2025 04:50:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQwF-0000sr-Nw for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:21 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQwD-0007L5-Or for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:19 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-137-8efl6s5JPFeEEzoCBqmUjg-1; Sat, 27 Dec 2025 04:50:15 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-4779d8fd4ecso39609595e9.1 for ; Sat, 27 Dec 2025 01:50:15 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be27b749esm489786665e9.14.2025.12.27.01.50.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:50:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829016; 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=iJyEkR86rzlM/d8GgTLDqMukBuix21+dQiXIBZzjT04=; b=T7+RV9Di1NA0ZHwKJZGilbArLgqf+0Z/1llv1uHncFcbq27h9oManYfzqjuD8JkC0RBI22 eIKGqFOSdD0yUj0Yq6KTLCe1LhBkbRz8Iu7zPahN16f6sgzhTUQYrnMNhnC9Zpl+oo86QX X6Dwc6eswSq79aZPx/RcvZjL9t/9FEY= X-MC-Unique: 8efl6s5JPFeEEzoCBqmUjg-1 X-Mimecast-MFC-AGG-ID: 8efl6s5JPFeEEzoCBqmUjg_1766829014 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829013; x=1767433813; 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; bh=iJyEkR86rzlM/d8GgTLDqMukBuix21+dQiXIBZzjT04=; b=dCmi980oNUO8rv3yPUBWBsLbzu8rf2J2u26Z2Z2+mt2EXu8efDaAkw1AbFEAflF10E dbDt8cJm/OJ4voz9W3lshb9Si21sIgUOtSV8hEHbrv00NYjOfUYJqw7JK9GD5k3rhBmi vX3R/YHdoVkYrJK0XWLxffyT/uLLQE575TgGzU/Fsv7vISltiyT4RHIvfgX7er5i2teJ 4EPCUSffsqW6D/zEtNasEdprt8ZneL0soJWsEVR8FOxGPmJZ+ChYzlhj6aOn7x+q2eU/ LnNfmii4YSG5pO4rGTWVAsLwJNvkIfg4qlK6mtC24e6LGTT3Ar7+RHEPiwGMpttu1b5A n8UA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829013; x=1767433813; 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; bh=iJyEkR86rzlM/d8GgTLDqMukBuix21+dQiXIBZzjT04=; b=uddOaDjSh3vgbWoaA9P4orXBGUZQhtim2GmDz+bRquiRg8zMT7YOAS+V0jXEWzrevk oEdHf3h7qUxdWDshwUppXqL6/1Ah9wWSc33wlic/kCKyrTSF+QYeoWgh7+9CtfF9cjSW uNMTCzGwGlWYcs95Qj/d/1IivwkaFbZeBxcsTf75Gw2H2CtCERM7tcRvxLn2hLQtUbxi MXnKbfm3Fx6dRUnZ0B265X0Kn59VKzRzxPCrWtHkpxiLOJHfc1L47SbwN4PBn/nn4sZh vgV9c2h0cUNka9ZJwOmJgmsnsePKMbkmfWbLTZGO0ZsSGI1MKQRzD0xlU63J9ighZEZM Ys2g== X-Gm-Message-State: AOJu0YwJBzWiDWP1ZiyEzomW8Y7f/iK4aS0HokfxSo5F5nrpDU+tFwum 0UoGnv5tXYb07yr7fXolbNhz3emEIX0hVR3Xj/ZWxRqnDMKtSAuRWYXytD2l0CUVK5FLpRqQYKY UN7+4HC4EZGxpG/ZdVLRju9G4B5ifdbOTl6tPuif754b5D8HUUiJvQD0ombOSPTvUGU7lhb37b5 JPKPSaLPpITQDan9osfo3w0slXGfzdth8pUFyXE41X X-Gm-Gg: AY/fxX73bOVKGiN0YSxOZ/RTPMLgUT5q5baiNPVUwe1PwosIG7/yQXf6DE1KlSEbLDY VPVXeg/yKAGmj76G5Ggky6fLjsU0kj4MUlNWTjlf8VbMeXIxt2jMGFsbM/wC0O+eutC1JGyKRjI QmJr4plEIZUrE1SdHxNBreDMp/t0ReDgT5YBhD1Zqp8EFBEely8xx315Aa2HyT1QyHOneAfJi+/ my2D8h99DfkcI2DuEsvZtuenikY7dkBrkts5p1MFLm0V86ktu0WNfcYIax4qUlfUzkNVujjpp5d CZhsmrWm8A87v7VbEAEDaicPKaZYAF1xzRWY6nYPn9+n1x5FvbVTB0o8ribyjqYGgsO4BI5XBgo Nq9oEZIVUUfgckwkeX93w0sG4Q1wirOAigbSQNWpk5lzYQWn73iQlxIdF4jZhD4b8JokLqd4lgh yNo3YZFVNeNMv93xA= X-Received: by 2002:a05:600c:4f08:b0:475:d9de:952e with SMTP id 5b1f17b1804b1-47d18b83218mr274675995e9.1.1766829013547; Sat, 27 Dec 2025 01:50:13 -0800 (PST) X-Google-Smtp-Source: AGHT+IHZaKPzCKcLuF2mOYRYzhfgiDmh8r+Sn770aeozDEJghwuwFm6LXpOzuRo5A9H0WdWUgONamg== X-Received: by 2002:a05:600c:4f08:b0:475:d9de:952e with SMTP id 5b1f17b1804b1-47d18b83218mr274675755e9.1.1766829013171; Sat, 27 Dec 2025 01:50:13 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Richard Henderson Subject: [PULL 122/153] target/i386/tcg: simplify effective address calculation Date: Sat, 27 Dec 2025 10:47:27 +0100 Message-ID: <20251227094759.35658-48-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829129195158500 Content-Type: text/plain; charset="utf-8" Split gen_lea_v_seg_dest into three simple phases (extend from 16 bits, add, final extend), with optimization for known-zero bases to avoid back-to-back extensions. Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- target/i386/tcg/translate.c | 64 ++++++++++++------------------------- 1 file changed, 20 insertions(+), 44 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 0cb87d02012..20cc49a9742 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -627,54 +627,30 @@ static TCGv eip_cur_tl(DisasContext *s) static void gen_lea_v_seg_dest(DisasContext *s, MemOp aflag, TCGv dest, TC= Gv a0, int def_seg, int ovr_seg) { - switch (aflag) { -#ifdef TARGET_X86_64 - case MO_64: - if (ovr_seg < 0) { - tcg_gen_mov_tl(dest, a0); - return; + int easize; + bool has_base; + + if (ovr_seg < 0) { + ovr_seg =3D def_seg; + } + + has_base =3D ovr_seg >=3D R_FS || (ovr_seg >=3D 0 && ADDSEG(s)); + easize =3D CODE64(s) ? MO_64 : MO_32; + + if (has_base) { + if (aflag < easize) { + /* Truncate before summing base. */ + tcg_gen_ext_tl(dest, a0, aflag); + a0 =3D dest; } - break; -#endif - case MO_32: - /* 32 bit address */ - if (ovr_seg < 0 && ADDSEG(s)) { - ovr_seg =3D def_seg; - } - if (ovr_seg < 0) { - tcg_gen_ext32u_tl(dest, a0); - return; - } - break; - case MO_16: - /* 16 bit address */ - tcg_gen_ext16u_tl(dest, a0); + tcg_gen_add_tl(dest, a0, cpu_seg_base[ovr_seg]); a0 =3D dest; - if (ovr_seg < 0) { - if (ADDSEG(s)) { - ovr_seg =3D def_seg; - } else { - return; - } - } - break; - default: - g_assert_not_reached(); + } else { + /* Possibly one extension, but that's it. */ + easize =3D aflag; } =20 - if (ovr_seg >=3D 0) { - TCGv seg =3D cpu_seg_base[ovr_seg]; - - if (aflag =3D=3D MO_64) { - tcg_gen_add_tl(dest, a0, seg); - } else if (CODE64(s)) { - tcg_gen_ext32u_tl(dest, a0); - tcg_gen_add_tl(dest, dest, seg); - } else { - tcg_gen_add_tl(dest, a0, seg); - tcg_gen_ext32u_tl(dest, dest); - } - } + tcg_gen_ext_tl(dest, a0, easize); } =20 static void gen_lea_v_seg(DisasContext *s, TCGv a0, --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829095; cv=none; d=zohomail.com; s=zohoarc; b=SbHUI9XU7BisGIQtpJd8W0KVZ+nltBJ5NQQOE6T9W6FN1F9wJW6QtEfskHa5+zidIxSnSd/Xdixnz3s9xwYSPD+zl1jFvD1JFWfc50LjuFTOJoPUWoU6tvLQ/CorwW9l2tTP6dnIXLYRuNHbdDlYwqHj3yvD44hv68Nvpq/s5Ik= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829095; 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=GSAnya0ioVYFN8GbctSXaaX16HhFqXFP7TwvUwwLfLw=; b=lq7LtpL0qC5B5gNwCZYDl6sGEq+88W3TqFAoAmoGHOJgIiGKZXoeLm9ZADV1Nq32CPFlDZk9WVIBgvieHaeOMMtlFRhEZvY5/hzvaTREeJJrkAPIgFP/sHx4lKaPveWidvx1kyydOeGNReI76KjYu+8vxJ6FKAL87fkAYU4mM+c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829095702278.42321153701334; Sat, 27 Dec 2025 01:51:35 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQwe-0001OA-BJ; Sat, 27 Dec 2025 04:50:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQwN-000126-4x for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:30 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQwH-0007LZ-Th for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:26 -0500 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-225-2B5RQh50OgKtDopyIUpmyA-1; Sat, 27 Dec 2025 04:50:19 -0500 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-430fc83f58dso4353918f8f.2 for ; Sat, 27 Dec 2025 01:50:19 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea226d1sm50836418f8f.13.2025.12.27.01.50.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:50:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829021; 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=GSAnya0ioVYFN8GbctSXaaX16HhFqXFP7TwvUwwLfLw=; b=EzIVMPCdqDDSAoFSkAlgxzzfbphkeNr1QOBeCvAcYZMvVQUWuFgVQSXfcCEWLQ0IwNUtqI wZo4rZ3/4UgXAG7SKFH6pmTRhhkFWZ7n0SE6PhUoEw3RNLTFQU7jhoDY7aYD8wqVRceio2 5f8PQFRHz6hewPQdLuvHa+0bt97yZwg= X-MC-Unique: 2B5RQh50OgKtDopyIUpmyA-1 X-Mimecast-MFC-AGG-ID: 2B5RQh50OgKtDopyIUpmyA_1766829019 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829017; x=1767433817; 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; bh=GSAnya0ioVYFN8GbctSXaaX16HhFqXFP7TwvUwwLfLw=; b=D5R1P85VGALtJdQrqLqf0YnTaUnKVytOCurq/YMitWspC+xsRTb/tm9bNz4ooS/0hb Twmdx5Ffsfx38cvFC5n9qf7pf4H16XgpQmdz1hoh4+C+sbrhghBOIk2K2SEWxyFfPqGW Lagn+tz0AQJODgHshkR0oMqtto+B6NnpQPX7qlj3XImjdialgUi4owTn8idsZk02Y/Kf Ti9zdt+2W2/aMH47omMTLqCU4FbUxa6kFYqxGY0TfuLRxPY+ULXjFn2SM+2Pm9JOB98e w8TEp3EeEtGIZI2d/Qw3aeev/H3wJ9pxXGjl5fdYur6tDF4wknHx8ViledPZALsA9xGF k2Jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829017; x=1767433817; 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; bh=GSAnya0ioVYFN8GbctSXaaX16HhFqXFP7TwvUwwLfLw=; b=mobsd3ew23A8gFQ+uRFAn16LkgfYCEOZC8oKpLq0jiqC7+4Nnw2+4hTNfUHf6PFh1K xUUYIccyMRadWHNoWAMzATy4Y9A8HjWM5qO3I+Z1Uamy9EzUU5P0CJaI+Oq4Qta48fbp sgrcWrWiM5n5lKrlwpt9/2/7mqLLDqXKbckENKeFMGAzYowZzrnW4DGxt8r9mI4vXHDX Xa9WGuAunZ0JMB5VYf4WMwV1WHp7o1Wc9yqY0CMhS8+9T3SP8Am8G7M3Iz3gASIoH/qg WU8NuiNVtQruEouQWeANb6zEWdVk/r400/zI32GYQAS6I+hZGeMfGUCdZdH8NpOjOL+j CLBQ== X-Gm-Message-State: AOJu0YwICy8c+d5RrMASxMuhufWEcWQfNIdefp9oi+k5BcJUU2heVJ5t xCEOsKIwgLdjcrKbSDI0OeUMMah1nONlI/QZpCrM9QHyA74/PSZfurCHvlAhDCtxpwn3unE3JR1 si7YYAVgJZwZ9EwcbhHHdUb04kY91tQxPN0fA+8fKN297VPJS3ZsTLHf2MjxsFVb2MVrK8PuLYo o3FB0eJB6e6ZFiFbZ8gOSpztuzMxdDKLFTGfwBUNxK X-Gm-Gg: AY/fxX6R6PTIZigQX32pSHcQkrG0DFwG7aHVyWN5q1GwoQS5Fdca6TlGz2wIMxcWh9k 9/6UMnG/ciGiWuEr6Jf4kAmJIkd5D/JuRbE2AUHNz2l2lgO3XDUUHImiN1Ibc6G0olACQk+iT3e 0vZSdO5h2BAojPteeZjFzDkBWb95zR/yQA6I/0/mUvXwdMUGhrZ3RwCj6VS48+PKCb46o807xBi 5JoRFKcZvz57XjqD+mEFqQDGfstfOJROX/bRYz6xSpGRy6XnSNyYXs4IEsxQz1Sktsl2qO+Sh8E ILNZmNsMgdcMbFfGALJZRpzfyB/nFd5cNN8+EoDWPWztIkSplSV7NBRUp+trCS82tAs6XgBtzN+ doa+k8cagZr2o2qZn4+kBct4p1iJ8ZpalBHsC+AZl1vFTH1JBG8KINVxBOxDeLPXbGw03vwRx+0 2MKd4ljFPHnEjFzDQ= X-Received: by 2002:a05:6000:22c4:b0:431:a50:6e9e with SMTP id ffacd0b85a97d-4324e4f926emr34551179f8f.38.1766829017431; Sat, 27 Dec 2025 01:50:17 -0800 (PST) X-Google-Smtp-Source: AGHT+IED/HsaTs/ujt1wyBH+IT2rjRVdAxMAP9NnKkuoNrQ2cmhch8zZQQqqe7hERJIr7Ng+0s7I5A== X-Received: by 2002:a05:6000:22c4:b0:431:a50:6e9e with SMTP id ffacd0b85a97d-4324e4f926emr34551155f8f.38.1766829016949; Sat, 27 Dec 2025 01:50:16 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Richard Henderson Subject: [PULL 123/153] target/i386/tcg: unnest switch statements in disas_insn_x87 Date: Sat, 27 Dec 2025 10:47:28 +0100 Message-ID: <20251227094759.35658-49-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829097204158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- target/i386/tcg/translate.c | 290 +++++++++++++++++------------------- 1 file changed, 134 insertions(+), 156 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 20cc49a9742..68f41b37423 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -2457,36 +2457,32 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) =20 switch (op) { case 0x00 ... 0x07: /* fxxxs */ - case 0x10 ... 0x17: /* fixxxl */ - case 0x20 ... 0x27: /* fxxxl */ - case 0x30 ... 0x37: /* fixxx */ - { - int op1; - op1 =3D op & 7; + tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + s->mem_index, MO_LEUL); + gen_helper_flds_FT0(tcg_env, s->tmp2_i32); + goto fp_arith_ST0_FT0; =20 - switch (op >> 4) { - case 0: - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, - s->mem_index, MO_LEUL); - gen_helper_flds_FT0(tcg_env, s->tmp2_i32); - break; - case 1: - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, - s->mem_index, MO_LEUL); - gen_helper_fildl_FT0(tcg_env, s->tmp2_i32); - break; - case 2: - tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, - s->mem_index, MO_LEUQ); - gen_helper_fldl_FT0(tcg_env, s->tmp1_i64); - break; - case 3: - default: - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, - s->mem_index, MO_LESW); - gen_helper_fildl_FT0(tcg_env, s->tmp2_i32); - break; - } + case 0x10 ... 0x17: /* fixxxl */ + tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + s->mem_index, MO_LEUL); + gen_helper_fildl_FT0(tcg_env, s->tmp2_i32); + goto fp_arith_ST0_FT0; + + case 0x20 ... 0x27: /* fxxxl */ + tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, + s->mem_index, MO_LEUQ); + gen_helper_fldl_FT0(tcg_env, s->tmp1_i64); + goto fp_arith_ST0_FT0; + + case 0x30 ... 0x37: /* fixxx */ + tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + s->mem_index, MO_LESW); + gen_helper_fildl_FT0(tcg_env, s->tmp2_i32); + goto fp_arith_ST0_FT0; + +fp_arith_ST0_FT0: + { + int op1 =3D op & 7; =20 gen_helper_fp_arith_ST0_FT0(op1); if (op1 =3D=3D 3) { @@ -2495,88 +2491,78 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) } } break; + case 0x08: /* flds */ - case 0x0a: /* fsts */ - case 0x0b: /* fstps */ - case 0x18 ... 0x1b: /* fildl, fisttpl, fistl, fistpl */ - case 0x28 ... 0x2b: /* fldl, fisttpll, fstl, fstpl */ - case 0x38 ... 0x3b: /* filds, fisttps, fists, fistps */ - switch (op & 7) { - case 0: - switch (op >> 4) { - case 0: - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, - s->mem_index, MO_LEUL); - gen_helper_flds_ST0(tcg_env, s->tmp2_i32); - break; - case 1: - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, - s->mem_index, MO_LEUL); - gen_helper_fildl_ST0(tcg_env, s->tmp2_i32); - break; - case 2: - tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, - s->mem_index, MO_LEUQ); - gen_helper_fldl_ST0(tcg_env, s->tmp1_i64); - break; - case 3: - default: - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, - s->mem_index, MO_LESW); - gen_helper_fildl_ST0(tcg_env, s->tmp2_i32); - break; - } - break; - case 1: - /* XXX: the corresponding CPUID bit must be tested ! */ - switch (op >> 4) { - case 1: - gen_helper_fisttl_ST0(s->tmp2_i32, tcg_env); - tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, - s->mem_index, MO_LEUL); - break; - case 2: - gen_helper_fisttll_ST0(s->tmp1_i64, tcg_env); - tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0, - s->mem_index, MO_LEUQ); - break; - case 3: - default: - gen_helper_fistt_ST0(s->tmp2_i32, tcg_env); - tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, - s->mem_index, MO_LEUW); - break; - } + tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + s->mem_index, MO_LEUL); + gen_helper_flds_ST0(tcg_env, s->tmp2_i32); + break; + case 0x18: /* fildl */ + tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + s->mem_index, MO_LEUL); + gen_helper_fildl_ST0(tcg_env, s->tmp2_i32); + break; + case 0x28: /* fldl */ + tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, + s->mem_index, MO_LEUQ); + gen_helper_fldl_ST0(tcg_env, s->tmp1_i64); + break; + case 0x38: /* filds */ + tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + s->mem_index, MO_LESW); + gen_helper_fildl_ST0(tcg_env, s->tmp2_i32); + break; + + case 0x19: /* fisttpl */ + gen_helper_fisttl_ST0(s->tmp2_i32, tcg_env); + tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, + s->mem_index, MO_LEUL); + gen_helper_fpop(tcg_env); + break; + case 0x29: /* fisttpll */ + gen_helper_fisttll_ST0(s->tmp1_i64, tcg_env); + tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0, + s->mem_index, MO_LEUQ); + gen_helper_fpop(tcg_env); + break; + case 0x39: /* fisttps */ + gen_helper_fistt_ST0(s->tmp2_i32, tcg_env); + tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, + s->mem_index, MO_LEUW); + gen_helper_fpop(tcg_env); + break; + + case 0x0a: case 0x0b: /* fsts, fstps */ + gen_helper_fsts_ST0(s->tmp2_i32, tcg_env); + tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, + s->mem_index, MO_LEUL); + if ((op & 7) =3D=3D 3) { + gen_helper_fpop(tcg_env); + } + break; + case 0x1a: case 0x1b: /* fistl, fistpl */ + gen_helper_fistl_ST0(s->tmp2_i32, tcg_env); + tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, + s->mem_index, MO_LEUL); + if ((op & 7) =3D=3D 3) { + gen_helper_fpop(tcg_env); + } + break; + case 0x2a: case 0x2b: /* fstl, fstpl */ + gen_helper_fstl_ST0(s->tmp1_i64, tcg_env); + tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0, + s->mem_index, MO_LEUQ); + if ((op & 7) =3D=3D 3) { + gen_helper_fpop(tcg_env); + } + break; + + case 0x3a: case 0x3b: /* fists, fistps */ + gen_helper_fist_ST0(s->tmp2_i32, tcg_env); + tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, + s->mem_index, MO_LEUW); + if ((op & 7) =3D=3D 3) { gen_helper_fpop(tcg_env); - break; - default: - switch (op >> 4) { - case 0: - gen_helper_fsts_ST0(s->tmp2_i32, tcg_env); - tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, - s->mem_index, MO_LEUL); - break; - case 1: - gen_helper_fistl_ST0(s->tmp2_i32, tcg_env); - tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, - s->mem_index, MO_LEUL); - break; - case 2: - gen_helper_fstl_ST0(s->tmp1_i64, tcg_env); - tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0, - s->mem_index, MO_LEUQ); - break; - case 3: - default: - gen_helper_fist_ST0(s->tmp2_i32, tcg_env); - tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, - s->mem_index, MO_LEUW); - break; - } - if ((op & 7) =3D=3D 3) { - gen_helper_fpop(tcg_env); - } - break; } break; case 0x0c: /* fldenv mem */ @@ -2707,39 +2693,37 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) } break; case 0x0d: /* grp d9/5 */ - { - switch (rm) { - case 0: - gen_helper_fpush(tcg_env); - gen_helper_fld1_ST0(tcg_env); - break; - case 1: - gen_helper_fpush(tcg_env); - gen_helper_fldl2t_ST0(tcg_env); - break; - case 2: - gen_helper_fpush(tcg_env); - gen_helper_fldl2e_ST0(tcg_env); - break; - case 3: - gen_helper_fpush(tcg_env); - gen_helper_fldpi_ST0(tcg_env); - break; - case 4: - gen_helper_fpush(tcg_env); - gen_helper_fldlg2_ST0(tcg_env); - break; - case 5: - gen_helper_fpush(tcg_env); - gen_helper_fldln2_ST0(tcg_env); - break; - case 6: - gen_helper_fpush(tcg_env); - gen_helper_fldz_ST0(tcg_env); - break; - default: - goto illegal_op; - } + switch (rm) { + case 0: + gen_helper_fpush(tcg_env); + gen_helper_fld1_ST0(tcg_env); + break; + case 1: + gen_helper_fpush(tcg_env); + gen_helper_fldl2t_ST0(tcg_env); + break; + case 2: + gen_helper_fpush(tcg_env); + gen_helper_fldl2e_ST0(tcg_env); + break; + case 3: + gen_helper_fpush(tcg_env); + gen_helper_fldpi_ST0(tcg_env); + break; + case 4: + gen_helper_fpush(tcg_env); + gen_helper_fldlg2_ST0(tcg_env); + break; + case 5: + gen_helper_fpush(tcg_env); + gen_helper_fldln2_ST0(tcg_env); + break; + case 6: + gen_helper_fpush(tcg_env); + gen_helper_fldz_ST0(tcg_env); + break; + default: + goto illegal_op; } break; case 0x0e: /* grp d9/6 */ @@ -2801,22 +2785,16 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) } break; case 0x00: case 0x01: case 0x04 ... 0x07: /* fxxx st, sti */ + gen_helper_fmov_FT0_STN(tcg_env, + tcg_constant_i32(opreg)); + gen_helper_fp_arith_ST0_FT0(op & 7); + break; + case 0x20: case 0x21: case 0x24 ... 0x27: /* fxxx sti, st */ case 0x30: case 0x31: case 0x34 ... 0x37: /* fxxxp sti, st */ - { - int op1; - - op1 =3D op & 7; - if (op >=3D 0x20) { - gen_helper_fp_arith_STN_ST0(op1, opreg); - if (op >=3D 0x30) { - gen_helper_fpop(tcg_env); - } - } else { - gen_helper_fmov_FT0_STN(tcg_env, - tcg_constant_i32(opreg)); - gen_helper_fp_arith_ST0_FT0(op1); - } + gen_helper_fp_arith_STN_ST0(op & 7, opreg); + if (op >=3D 0x30) { + gen_helper_fpop(tcg_env); } break; case 0x02: /* fcom */ --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829095; cv=none; d=zohomail.com; s=zohoarc; b=dbFrvT8+FOIdGLVhCdLJV3xTaG4hb0a66TvZ9yEXznxeCZPUZNGYkQ/fx9rspPN+WO+wz5EVR6W1ocA1kEuSCtKH0IEZouen2Zw80OlcKdaqicVnxMK9fJqqvCjX4edPIL7gihf4g3t4pwM29xkJvc/2hsPf7CtGApt4qIasp20= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829095; 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=eKHoNurpS4l/QRtRAHMouDHzhO86MaAyXIj0ZA/L8fY=; b=iNztwSVVXJ6SGgOdDDGmKa6rcvK6vyGWHO77OQBJQ+t4F1VWzTLURmlvOH59yKGqi8z/xgdKhpyVAL0Jxuc8ZqaWRsABNPlynPx9zONDcfBvy6UcDc+S6Nvod12LhTVanbYOmmuEBz6gKZk/8T90lzLUhCBxFR8WDQNiFDDbcI8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829095913597.5587612396388; Sat, 27 Dec 2025 01:51:35 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQwl-0001WW-PL; Sat, 27 Dec 2025 04:50:52 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQwQ-00016Y-Rd for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:34 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQwM-0007Lo-S9 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:28 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-136-xpbGBX83PNSVC88RrA1S8A-1; Sat, 27 Dec 2025 04:50:22 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-47a83800743so43410435e9.0 for ; Sat, 27 Dec 2025 01:50:22 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d192e88f5sm428347115e9.0.2025.12.27.01.50.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:50:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829023; 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=eKHoNurpS4l/QRtRAHMouDHzhO86MaAyXIj0ZA/L8fY=; b=Ubvs1sCBdRhk6ULhIb6ni948b4gWUMMMjmOWIWpI8yZWRSR8EJ4KZbUiQNHqD/x4ynXQHd HI17YH5mr1NoxMD070jMLNQ7nmUbevPZgMnfvyS+qVTfpT9RoAh0v/UbQBESkZTEeEZjBd LGGAUqt59WFbcnYU7vQ59zPQLMOm+g8= X-MC-Unique: xpbGBX83PNSVC88RrA1S8A-1 X-Mimecast-MFC-AGG-ID: xpbGBX83PNSVC88RrA1S8A_1766829021 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829020; x=1767433820; 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; bh=eKHoNurpS4l/QRtRAHMouDHzhO86MaAyXIj0ZA/L8fY=; b=Xz0cGFXyyYjcyozzt9sgpVhPKpy3WfwbtokxAkZ8hu2x6v4NpUPgXX46NA3LZcwend vzkCi98e1AIDu5M8U+QRpMh/gg9CzCsBcOk+HOScksweyekucskCajKb5nDqVq5qra+t w3d6nNweUyHmnjm5FvU7tQeMAjHQcrcG3cbrW08yj1XAhX2dy4hr5E6UgDjOOur8CcoQ GjqhYJKc/p7u3WmbthpYwf7h/S6SXJbrFFBZME7TWaMUefDlBXTUQCNzrd5NjipICTBD nSiGWdWDxnqKlX+l8zzfIF7JSIp1A7U9KQJHx4qHtuYf/S747q/7Wo8zdbRxkA128SBY 01Rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829020; x=1767433820; 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; bh=eKHoNurpS4l/QRtRAHMouDHzhO86MaAyXIj0ZA/L8fY=; b=iixf96WFxDnBXI/sn0OWQc3tC4Dj2TT6ZlAXQcipQSx3872Ra9rFxHGhYMWkLzY2Dm GepwYL4o6nSgM6lQAB6OVTrWeUta8vELI4D4ugUKpTmxIX6HMAYxRvl8LmHyb18mA7/P 7IIlIosNCfPzs2uBm9LYGCgcc0s2RA+NyVj6WvhP9G/6QUz5mTttDeL1TAFxap0szMrw 9p6DDKOzsTFcc1XqBiU7Lam6Q1JyVzia4Ffgc+32J1W0RzmDW8AUvu7GzLdWbUQuiQRc aTKcwH0g3mwlPA0AG970gif5CSQnE3m/kIWqjJ3SMWAndV21ONRjpp5h8tAqjXN4Y0oN pFWw== X-Gm-Message-State: AOJu0YwL/ZEUnXzBQS29ZI/0mtOISPG+m9dZjttRYvU/kMbueN/lUcLI Py2ByupbaPAbg52nG8u/pUpOAaFdsBIAW5SLbSrI0vqjgsK+hDGw5CAS0ZMTlJcHAdxaVE8Vrsr q3sIsPKCaOgcvxMQB8xvWvtXM8pCU1aYmoU+eikDnXUKizrYi4VfAxc2gAQq9USNrIjVyMMrcl/ 7JUXVRnRqbH9yNuVKbkbeFYy4ZCh/2mtg8dI1PE+NH X-Gm-Gg: AY/fxX5szP7dJYig69S/3DMEJNIZYcuk5O2mbcc1QL7WK7Ri9FznIsKvJkOOLakU6YE lPRTpBtkmRoKLesuRdJ46JPJOB4YeM/PvmZ1QQEHULsSyhW/LGJLIxxrZ18d/Uo6oXBiqlBT3Qg 5AH1o53jQrV0b3QQsSgM0mT5f1C20BxdH+mmPrxFtO89CFn/apxZnD5QYyNkAwBOJyNwe+GLeAj AP4EIR84NWMHYZ5qTGhLfTZ0dnsXF+U1QwoEJplEJXnhjGJn+EZfXhCMlvnnPqU+wB/dPz94H8d XIv1DKWbakSYVTkOqQx7kMwKSp1K/azwIHJTxuETbDMC+/8dGS7CH2XYQzgT63ecl7YIWC79hEZ fIh8tRvQHoM9NBaxNCD3xiYTWS1qlflYejSwv1UnBnL1vHdfrChbEG5K+1UOW3MNLhb8MiXlbEK F1OMoD2350OnvPKa4= X-Received: by 2002:a05:600c:3508:b0:479:1348:c63e with SMTP id 5b1f17b1804b1-47d18bd57bemr249037195e9.9.1766829020450; Sat, 27 Dec 2025 01:50:20 -0800 (PST) X-Google-Smtp-Source: AGHT+IH0UOJDQ56WkO/Zma6fQ+LJoUeBM6HCk448YqLCW9pViD5zdrx+LvrB1QQhg99avziuORAzjA== X-Received: by 2002:a05:600c:3508:b0:479:1348:c63e with SMTP id 5b1f17b1804b1-47d18bd57bemr249036995e9.9.1766829020048; Sat, 27 Dec 2025 01:50:20 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Richard Henderson Subject: [PULL 124/153] target/i386/tcg: move fcom/fcomp differentiation to gen_helper_fp_arith_ST0_FT0 Date: Sat, 27 Dec 2025 10:47:29 +0100 Message-ID: <20251227094759.35658-50-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829097228158500 Content-Type: text/plain; charset="utf-8" There is only one call site for gen_helper_fp_arith_ST0_FT0(), therefore there is no need to check the op1 =3D=3D 3 in the caller. Once this is don= e, eliminate the goto to that call site. Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- target/i386/tcg/translate.c | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 68f41b37423..4b77cff8ee7 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -1485,6 +1485,7 @@ static void gen_helper_fp_arith_ST0_FT0(int op) break; case 3: gen_helper_fcom_ST0_FT0(tcg_env); + gen_helper_fpop(tcg_env); break; case 4: gen_helper_fsub_ST0_FT0(tcg_env); @@ -2460,36 +2461,28 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, s->mem_index, MO_LEUL); gen_helper_flds_FT0(tcg_env, s->tmp2_i32); - goto fp_arith_ST0_FT0; + gen_helper_fp_arith_ST0_FT0(op & 7); + break; =20 case 0x10 ... 0x17: /* fixxxl */ tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, s->mem_index, MO_LEUL); gen_helper_fildl_FT0(tcg_env, s->tmp2_i32); - goto fp_arith_ST0_FT0; + gen_helper_fp_arith_ST0_FT0(op & 7); + break; =20 case 0x20 ... 0x27: /* fxxxl */ tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, s->mem_index, MO_LEUQ); gen_helper_fldl_FT0(tcg_env, s->tmp1_i64); - goto fp_arith_ST0_FT0; + gen_helper_fp_arith_ST0_FT0(op & 7); + break; =20 case 0x30 ... 0x37: /* fixxx */ tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, s->mem_index, MO_LESW); gen_helper_fildl_FT0(tcg_env, s->tmp2_i32); - goto fp_arith_ST0_FT0; - -fp_arith_ST0_FT0: - { - int op1 =3D op & 7; - - gen_helper_fp_arith_ST0_FT0(op1); - if (op1 =3D=3D 3) { - /* fcomp needs pop */ - gen_helper_fpop(tcg_env); - } - } + gen_helper_fp_arith_ST0_FT0(op & 7); break; =20 case 0x08: /* flds */ --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829292; cv=none; d=zohomail.com; s=zohoarc; b=N2aoqY6/AATsZLtnbqm7Xvj6euayVigkcsi8flNkKinot7FcnTDzfgZi64SG6euOntwD6+wcczCoqG1Rc171LSwtVjJPo5AFwXHGRxdBh0v3qmy8R602RYEX72l6LDK/TsZBgAH+L0KBZxahJePLkBkuLAXVtYp+YNxHkGmZuCs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829292; 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=G9TptaX08wUl7FPReV+B8RM7uBdS9EZmZexlTsKMa84=; b=P43GwnbMQ65jwAeaRUkTbuLZLND6ddkga/80D78bKQw9NXoNRwLL9UcpiVEdIM7iE9pPTDh/c9KaOkXZ1VIzMrBA+0uzloPz5o/YXANxSsU51npkF1KoXe5Y3bia8qZZqUIe1270S3oY/PpKmKCGXw1QquPlIiyb4v9Luca/fVE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829292421589.6884077220102; Sat, 27 Dec 2025 01:54:52 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQwv-0001kz-Sd; Sat, 27 Dec 2025 04:51:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQwU-00019v-Rk for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:34 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQwQ-0007M4-KP for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:31 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-166-VAT3ejKUNhul-OQhcrz9Ow-1; Sat, 27 Dec 2025 04:50:25 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-47d3ba3a49cso30843015e9.2 for ; Sat, 27 Dec 2025 01:50:25 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa08efsm50577615f8f.29.2025.12.27.01.50.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:50:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829027; 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=G9TptaX08wUl7FPReV+B8RM7uBdS9EZmZexlTsKMa84=; b=CyjNt19Rdm9axEx/FC5B3O1w36NA5Xpt2BDI5jQixY2KrgBdCnkJ1b/mi6N078zEpC4aXl N/5vR6iThATUY+ideMsEmajL21refaTvLQ0WCrYhtT6l4+/ks3QoaFvBj0ehe2KeUXOP9K C4heHho9HztP3eVy1AdSMDN08I9ZBSI= X-MC-Unique: VAT3ejKUNhul-OQhcrz9Ow-1 X-Mimecast-MFC-AGG-ID: VAT3ejKUNhul-OQhcrz9Ow_1766829024 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829023; x=1767433823; 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; bh=G9TptaX08wUl7FPReV+B8RM7uBdS9EZmZexlTsKMa84=; b=rv9AxCm4zZocQszUM8R5dLkXdBdVuTW5/6RL33tedxOgfAYH4NtZVP1KgKHxd30jiK k/1Nwz7a201opULVvzkU5Hyw438wKHMgFRrPGATvMrePLMatBduw8SrZJfuqJJHKHGaG o6dOyrrHna2MM18Eu9tQyTZNxqqtPftdZQKTtaqj7+tA6azmdL8IyNybS1EmViILQzeR zK/K9jrgg3d7XtgCrsQyU8p/9ri9g4AKSQrOab0urVfzmGHuyU97BpS9QqulGv8/YBmD HR+VbgqHDMeP0DlIwv4GgHFX7Qu8b66Enxtv4VRZNE3yQfYvkBQpT7DKcn5kIaA+eVf/ aIww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829023; x=1767433823; 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; bh=G9TptaX08wUl7FPReV+B8RM7uBdS9EZmZexlTsKMa84=; b=Upn2E5xT/BFm0ozqprEm3eqiCq8YyC06Tn2UTMjGM8CCVbHxomlMQ8/MxTJLfnYULZ y5ad6vasv7F3e4sEMbYNXjJsPev/8lU2zgx7sgHU99ZrPHkfdoPcVr2DFA5Ag9io4xbX QsR99oLwotTZ/ZrWVgewYxC679jMDVE/OLG0LqFqQc2YnkwFinIjmmKhF5Hhk5s8/eJl WfkUlZdHdPoRV4/xnIT9b7jC+80F1qSXawIII4F7lbTb4iWqY4EtWSTh6Zxh+ZA5nm7S NKWdkyCkmQFUUjmlmTQTQfoQ08yjzas2/C80kAsAkSSmxj/VmjU+gkB19lyxcYkQNaFj ZtHQ== X-Gm-Message-State: AOJu0YwtT4mHOxFMUOKkhjW+FGLcki1RzNmPkLz1JEvGh/1m5FMoOWRx G7d7SiOIv+kUFTdnjMjkZAA/zJjrPLelhMt11OJ9IYyb5pQDrwSeg0QWB8r2hVi9GWa+fmh47A/ qryaTK+wzTvKtRhm6dbZlgoSiuIuqgwSXjePs8K0eUFKqLB+wzP08BhnTniFxSUn3AsGH93S5jw 79g4d1G5dVNq1TFLgGnRGF6pufqU9Y/XQWSRUL2XSX X-Gm-Gg: AY/fxX6AWhk7S7hCcF1y1+xN2ZaXp23JvEHCgD4Yo8452mPfTtIkXZNmIbEoSjFe12q cw5ZhxfEh5fb7CVj9DPB6/GQs53BVeGGlMBObmrf0yzRhDccWs4fFCp+wJ12IyV3AWcxAJ58gh+ 1fZqoJFXZQSSEwFqifOEWcA68S7GAMKT58SO8LQMwWawXxsyw171zbneRu9bCqFiJoeFEggIwol USX3+GoFHTq00kcc95NysHXS8Cx3ATOCK5zNmgvWk6a0EBSXf0SW0uJxUO77UGiMGvgjVRUuSVQ xZBn5WbzLde3+cpT1W2lIaqbpxLRZE5reDbxzLcboWxdaFV+mfOtzfMMMV3NRzGXA0FlOd7b2ZF nfN7tHtRyU9ftuqglzg0NtNcpeYa9pFohISgJgu03R5hvhVynf9deUFU1CvCit+7y4Z80I96b/l l2+9+Iic6wI7j1Mmk= X-Received: by 2002:a05:600c:1394:b0:47d:3ead:7440 with SMTP id 5b1f17b1804b1-47d3ed097f8mr126744145e9.32.1766829023649; Sat, 27 Dec 2025 01:50:23 -0800 (PST) X-Google-Smtp-Source: AGHT+IExz3/WdrcA0j1Ln8EV9m15w85gv09+f9qgZ0DTj0EeD0360mBRNYwpH95doEv8i8f/UmXjeA== X-Received: by 2002:a05:600c:1394:b0:47d:3ead:7440 with SMTP id 5b1f17b1804b1-47d3ed097f8mr126743925e9.32.1766829023266; Sat, 27 Dec 2025 01:50:23 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Richard Henderson Subject: [PULL 125/153] target/i386/tcg: reuse gen_helper_fp_arith_ST0_FT0 for fcom STn and fcomp STn Date: Sat, 27 Dec 2025 10:47:30 +0100 Message-ID: <20251227094759.35658-51-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829293685158500 Content-Type: text/plain; charset="utf-8" Treat specially the undocumented ops, instead of treating specially the two d8/0 opcodes that have undocumented variants: just call gen_helper_fp_arith_ST0_FT0 for all opcodes in the d8/0 encoding. Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- target/i386/tcg/translate.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 4b77cff8ee7..32a371e2d99 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -2777,7 +2777,7 @@ static void gen_x87(DisasContext *s, X86DecodedInsn *= decode) break; } break; - case 0x00: case 0x01: case 0x04 ... 0x07: /* fxxx st, sti */ + case 0x00 ... 0x07: /* fxxx st, sti */ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); gen_helper_fp_arith_ST0_FT0(op & 7); @@ -2790,12 +2790,10 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) gen_helper_fpop(tcg_env); } break; - case 0x02: /* fcom */ case 0x22: /* fcom2, undocumented op */ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); gen_helper_fcom_ST0_FT0(tcg_env); break; - case 0x03: /* fcomp */ case 0x23: /* fcomp3, undocumented op */ case 0x32: /* fcomp5, undocumented op */ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829338; cv=none; d=zohomail.com; s=zohoarc; b=Y2KgmwnEQX7tLmV6UUYm71ratn/nAcvt896vOr6Tknt/mFPLhxuxJglhJMWFNs0Z4M+6TTNkgN49sy9dqaIOsU4cZO8I68xwMPqoeHZuFbsuW71PHXRhxuBr5+jyQQ/8umey7P6kPEiWMjI/Do9m0aMTPjo+6ZUz11CVs0O7Y1w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829338; 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=XfTcb5DkM47QaQaWUoerV2EwCv6n/G+WapDxLoIPaQo=; b=dYCzlgEol1p3/NaaEecxPCPz4iYuLNpe6GtMdcDV+apX8hiTw7yq6Y7JGWmmq/sJVoN6w896ViNEBbBu2waewCNZAwIea7FPJiQAW3N9IOsagF2+YL2ADnDEN9RcW2JUQheNaQFluWGYid2NdRlgm5VYFpQSZlcl+VNR1emwQ8Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176682933890874.0757520496403; Sat, 27 Dec 2025 01:55:38 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQx6-0002R1-7n; Sat, 27 Dec 2025 04:51:12 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQwc-0001Sf-K4 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:44 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQwY-0007NK-N8 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:41 -0500 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-515-JSi9VhT_Nr67x3aw5jGzVg-1; Sat, 27 Dec 2025 04:50:28 -0500 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-430fdaba167so4122725f8f.3 for ; Sat, 27 Dec 2025 01:50:28 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea1b1bdsm49214662f8f.8.2025.12.27.01.50.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:50:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829037; 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=XfTcb5DkM47QaQaWUoerV2EwCv6n/G+WapDxLoIPaQo=; b=JQFqYVA9LXE/afoEpBopgaH+L5Eqr89DjZO7bJn7HKf2KWhHnUbXbBc+CxMTcFeuP+u+/G i6f6c4PNlx0bXtHVlDvQQ9F+exYZ9KxX+6emNjq1RRDhuvL2iJJtJ+ZNGpx/Snew9b9jt8 5TB8f9Kg85wAhQQnzKHoVcuSYlj34ds= X-MC-Unique: JSi9VhT_Nr67x3aw5jGzVg-1 X-Mimecast-MFC-AGG-ID: JSi9VhT_Nr67x3aw5jGzVg_1766829028 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829027; x=1767433827; 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; bh=XfTcb5DkM47QaQaWUoerV2EwCv6n/G+WapDxLoIPaQo=; b=m6OPlXfnU6wGR1qybhJAqqg6myHYsWBMfUrJMWrpLAEYGdYj+cMxuv6ga1ixzHOf99 JXp2HXhthfdRIaLiW2qBuQA13GfZeKLq6hV+sdX3kvUgk6Fv0lUydBn2R1CLyY6PrOSI gv6TU6nEOiM96Y0XRMCZQ2WFtP2RR2uBqYW2yf4arJZLGCjF29fT4ZRqo3E6phWXF89w fe8WAhGKTTz7PMJxfuDiyNeoMTBDsBljltY/KtJACa3bNHhW2g4Rii/DeOJQQHowgmlo LXmXgSAup39PIt6De+kN7O6lIfleylAGcPT3fPd3ndg+WnzPLS43c+8ZjpeTuokgv5eV JDmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829027; x=1767433827; 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; bh=XfTcb5DkM47QaQaWUoerV2EwCv6n/G+WapDxLoIPaQo=; b=WP23aEZmmrNGuEuAKxT8oQc0Q67v239FU+dGwhRhoMuY8VmNeFZ9n6M68grj575ndr TzUkqaFwEfbRKA6IEH24cXVvYc+SpfrtN+hQBp76BrpdQ8K8jO2vHjAiWA/rImsGWfM8 65xoVJoSGMKM1fGfMLd2SB4UU6eygE4H6PwnN27t9zVzD5/O42CpurED7ysk27emKB3q a/gXbtahWuc1FaKGKw5AIO2M03ckF8W/V3sn3XwK12XS2AkNVBy42f4TGMyuXvogAJeH WpclqaPiwPc4tCZ19ovpvVf3lV53gcQirD6vBwzFrCNoY93iJ2s0xO8rdua2+eUIqWPT 8z2Q== X-Gm-Message-State: AOJu0Yzr8WRq5LZ4kHBoPPwVgzWSsiF7R5HXX3lq1jF9QLOV3H7c4dtE R42071iUkV1jnRWzRaiC27FwGwiyNEKkRVlWu5g6BgaD+KNThmcVGJkmqbEecj7xTc1SxDPWKRU TAth597q5wH2KN3T+oJz2KrnOF/3S7pFB5pPmjz24avGm1H8nPiiFG/nNYfgqBAdAbGhIhahe5Z KfIVWJtqY4aIOaKTBbzB/qr1w1qqahJDvJRNjEOpJl X-Gm-Gg: AY/fxX6SgRBmSoB6+BWWaCWR92XqwguklsRGNBR2s4Kl2Wr9u4HCI8EkwDdpF9YwAkC dH6l36Rf9gwwjVeJ+nHUSFmy4xynCCqhEE3TQ4Pm+F6Xk2BFzJ/U8xyxYYnt2orWmWL0h97z2uD fgdqnyOwElPKpZT8y1d2PwbWkS923PHNk9qC9rBus8ksk0TWY2wOhv7XsF/MbN4IUMHR6nLhdoT DQwmWE79Rs3PeISLQHMVcria5QvkDVeZTo5PsUkZr0aAeq1AEtx++fe3eGADkWk4CJSZ20H0ws0 6hIl6NKjxmgMQSTh3JeM19Y++SVKYujPNGdV3EewhwZJEf88vaTxG34q5CCm4m2vqp3xXaOzLBb fIw+WkSYmLJgDnlXumNxesDgj1vpwlGhjQBHNQSBESptSdKGWrfTFjL3aOmijg7VebGpXYVfdpn LPm6G3qAeo19OUUcQ= X-Received: by 2002:a5d:5887:0:b0:431:3bd:3781 with SMTP id ffacd0b85a97d-4324e4f935bmr31095525f8f.37.1766829026583; Sat, 27 Dec 2025 01:50:26 -0800 (PST) X-Google-Smtp-Source: AGHT+IEYrl8cO+x5JXmJo+sTISWxRgHF5g9lJDGpWGrECTfWcTLZXttbEe8zX5Tx71JF0BLQn7vUbg== X-Received: by 2002:a5d:5887:0:b0:431:3bd:3781 with SMTP id ffacd0b85a97d-4324e4f935bmr31095493f8f.37.1766829026130; Sat, 27 Dec 2025 01:50:26 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 126/153] target/i386/tcg: reuse gen_helper_fp_arith_ST0_FT0 for undocumented fcom/fcomp variants Date: Sat, 27 Dec 2025 10:47:31 +0100 Message-ID: <20251227094759.35658-52-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829339852158500 Content-Type: text/plain; charset="utf-8" For 0x32 hack the op to be fcomp; for the others there isn't even anything = special to do. Signed-off-by: Paolo Bonzini --- target/i386/tcg/translate.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 32a371e2d99..cf5e2c158cb 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -2777,10 +2777,18 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) break; } break; + /* map to fcomp; op & 7 =3D=3D 2 would not pop */ + op =3D 0x03; + /* fallthrough */ case 0x00 ... 0x07: /* fxxx st, sti */ + case 0x22 ... 0x23: /* fcom2 and fcomp3, undocumented ops */ + case 0x32: /* fcomp5, undocumented op */ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); gen_helper_fp_arith_ST0_FT0(op & 7); + if (op >=3D 0x30) { + gen_helper_fpop(tcg_env); + } break; =20 case 0x20: case 0x21: case 0x24 ... 0x27: /* fxxx sti, st */ @@ -2790,16 +2798,6 @@ static void gen_x87(DisasContext *s, X86DecodedInsn = *decode) gen_helper_fpop(tcg_env); } break; - case 0x22: /* fcom2, undocumented op */ - gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); - gen_helper_fcom_ST0_FT0(tcg_env); - break; - case 0x23: /* fcomp3, undocumented op */ - case 0x32: /* fcomp5, undocumented op */ - gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); - gen_helper_fcom_ST0_FT0(tcg_env); - gen_helper_fpop(tcg_env); - break; case 0x15: /* da/5 */ switch (rm) { case 1: /* fucompp */ --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829306; cv=none; d=zohomail.com; s=zohoarc; b=hWNjZevNlp8/hwA2MziERd+1ErFi6lROc3x2eClrguI0Vx6m9fPfJco9M5M995vT2ylmrPTZFNMPhadIKbWUiVKvoNQNFPR9okXv33NZd7E32mNteWzalfUQJXMQsKrn7V3c+aaTBFMHLmbi7hvSgSZHXkMyI5Cyk31XpcrMUoE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829306; 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=yAqc8N4nPFsDV6Po1paZbP4Wm2G773jg1VYzIMgqmbw=; b=I4eGdbF52qj60S1GZBZWRdojcn3BQ74yq2RxE6a8hTH+enHfL4dKi9goR7sVEd7kfS9wtCV6xS5iA2FiBDIN/IZcG5clTPTSJuk9VpiStNyJ5FFJHR2RgHXiLBk1VUknN5SKnzhUSFdHuNcPQEkJNv3rJU6+zkJ4zbfqnTyDoyM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829306265403.78678350051507; Sat, 27 Dec 2025 01:55:06 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQx4-0002Dv-RP; Sat, 27 Dec 2025 04:51:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQwY-0001OB-UJ for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:40 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQwU-0007Mh-GX for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:35 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-650-2huq74y0OwuDk5YEctgDXA-1; Sat, 27 Dec 2025 04:50:32 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-47d1622509eso44630045e9.3 for ; Sat, 27 Dec 2025 01:50:32 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d192e88f5sm428352625e9.0.2025.12.27.01.50.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:50:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829034; 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=yAqc8N4nPFsDV6Po1paZbP4Wm2G773jg1VYzIMgqmbw=; b=DA2njfMXkJXdLdwYucsWi+OgCH0X4mYomjtg2b25CZYZqAf7zi1g+K5CWq5gX91F7jCipx 0ZNtrQfs3OB/bcinkmDE8BhN5AmQHh7aVPcpDoyIXEj6+X0AheZcTejTPRtuHr44I3JVdg ouu3611KGLqfr6iPJZBH8BKMHAJcwu8= X-MC-Unique: 2huq74y0OwuDk5YEctgDXA-1 X-Mimecast-MFC-AGG-ID: 2huq74y0OwuDk5YEctgDXA_1766829031 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829031; x=1767433831; 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; bh=yAqc8N4nPFsDV6Po1paZbP4Wm2G773jg1VYzIMgqmbw=; b=MTyg91ipE0JikJuWdgScoXcUAb4dHGQQpNz4iaIJc+64TrBUPxkrOsSNyeIlujs331 8+3/H/nzYFts9ShFw1jAFBUz/0TE0uGdEuKgDyUl1BhfUZaqfjD9jLKwgZys5v1t485k R+lMyV+c31hk449TdEBt01B6eHP5qRM6E5/x21G18cT3w7HB14M+Ol39f2aXHb6TG4Sq bCVrhQvIQ7zRyvkhjv6kqu+iAuL0/oPIxj9KL+SpczaRs4G3SbKmhuCyz2LN7KMQbgDB kzX1a84sRJPFSzC6pM/J7A9u0iUpfmCH97JtSZyZoFE4KvrOqfjLne1vbklNqVWRhkVX sjKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829031; x=1767433831; 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; bh=yAqc8N4nPFsDV6Po1paZbP4Wm2G773jg1VYzIMgqmbw=; b=Pvd7DqD6LY/5mvC1TDMaS4ewkaJnQPJ13XJvJ+8g/97UYzmXfIuVsp4/dNT/VKRX4L tfROVQOtl43wVmg+5ZwjgcVAhCZXimmVIdHj9lLfbXdCDwgruYZ8kyQ5F0TuKhcr0uAf wrFshg2nMJjX2bfkNZV60Wk1K7sS/O43KI1ircpIXY0qqS4OXpTvnf11cvtfalx5bNKK 6+vGDr4ClLYUkY7wgTpkjn0sufUy2pnCmFExAk75mqWpAmusbJNOtJIIY6CJnQq57iwm qmCNhrsxQ4FzueU85wgn4EONmD6bo1qhOqHvFBaemY5mdl2Httv8tLkmOoqtuu0RABXT DOzA== X-Gm-Message-State: AOJu0YyU3flsUjsqdTcK+v80LPTqH3dhsoG62Jq9bWn1wUCj4NEaRBB5 Bxxp14ncKZbX+tUKG32ptkX9I/iK4lfeDVzCtVQFL5mDOnIQltANoMd7s5rZPBOcrDtVtqybCUY 8KLOnai4Sg7+56t3C41hP4NxQF4U0qsfA5Ze4rX4xxRoG58wPYpfbZzEOW6VAmtgmm2OvViBWRH 4bS5mcj43d0CZRB6pHjAXJRfCdapazaRLCGhLISEK9 X-Gm-Gg: AY/fxX6P2noQ3nJwEJA5WpB4Qng94LV63ysf9LXglQ+Mbq8DUMzAivTdXswnUylITry sQW0ChXP62EPjDXBOFbPrX+PMofhMhwTty1SpnJVHnNnWZjceYxAaXQo5ltP38P5n4Z2N7onyBs U+V5WduYacueJ8BF62O7rpDV8N0JNJr7RJGacHwRnSlOa3VgJLyBSEdyxKF4xXAzbHN9zEyD/VG XzGvTq0km7iUGBNmduiyhWquJ/Q07lg6BhRaYMAA6/p7DPXxepsarjVlQ3C9tSR0rdlS3hiGfzG HYp/1NzcjZCDRV9H7hM3L23ZFFUr1Bb4llnBu86dYUIVfqkg42JEZtMRH3MCLlGQxD9cmsDz2lo ULpBGLJGLCWEKEvStDco7COesvKkW9z4HUiNvzXnVLn0rXneuw74pHNxsC9RPa7PIpCMPJxcoNx 5pRhU4y3BwYEUrbOs= X-Received: by 2002:a05:600c:5249:b0:456:1a69:94fa with SMTP id 5b1f17b1804b1-47d1954a128mr286194275e9.13.1766829030424; Sat, 27 Dec 2025 01:50:30 -0800 (PST) X-Google-Smtp-Source: AGHT+IHfT+dEfD1BQJYQ3tYfI/0Xzcu6dnupwv6HNXXKDxnluPDvdhyrO0GUBqAMBoMzUhtkbkP0BA== X-Received: by 2002:a05:600c:5249:b0:456:1a69:94fa with SMTP id 5b1f17b1804b1-47d1954a128mr286194065e9.13.1766829029986; Sat, 27 Dec 2025 01:50:29 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Richard Henderson Subject: [PULL 127/153] target/i386/tcg: unify more pop/no-pop x87 instructions Date: Sat, 27 Dec 2025 10:47:32 +0100 Message-ID: <20251227094759.35658-53-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829307960158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- target/i386/tcg/translate.c | 54 ++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 31 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index cf5e2c158cb..bdaa436feac 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -2831,46 +2831,62 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) } break; case 0x1d: /* fucomi */ + case 0x3d: /* fucomip */ if (!(s->cpuid_features & CPUID_CMOV)) { goto illegal_op; } gen_update_cc_op(s); gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); gen_helper_fucomi_ST0_FT0(tcg_env); + if (op >=3D 0x30) { + gen_helper_fpop(tcg_env); + } assume_cc_op(s, CC_OP_EFLAGS); break; case 0x1e: /* fcomi */ + case 0x3e: /* fcomip */ if (!(s->cpuid_features & CPUID_CMOV)) { goto illegal_op; } gen_update_cc_op(s); gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); gen_helper_fcomi_ST0_FT0(tcg_env); + if (op >=3D 0x30) { + gen_helper_fpop(tcg_env); + } assume_cc_op(s, CC_OP_EFLAGS); break; case 0x28: /* ffree sti */ + case 0x38: /* ffreep sti, undocumented op */ gen_helper_ffree_STN(tcg_env, tcg_constant_i32(opreg)); + if (op >=3D 0x30) { + gen_helper_fpop(tcg_env); + } break; case 0x2a: /* fst sti */ - gen_helper_fmov_STN_ST0(tcg_env, tcg_constant_i32(opreg)); - break; case 0x2b: /* fstp sti */ case 0x0b: /* fstp1 sti, undocumented op */ case 0x3a: /* fstp8 sti, undocumented op */ case 0x3b: /* fstp9 sti, undocumented op */ gen_helper_fmov_STN_ST0(tcg_env, tcg_constant_i32(opreg)); - gen_helper_fpop(tcg_env); + if (op !=3D 0x2a) { + gen_helper_fpop(tcg_env); + } break; case 0x2c: /* fucom st(i) */ - gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); - gen_helper_fucom_ST0_FT0(tcg_env); - break; case 0x2d: /* fucomp st(i) */ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); gen_helper_fucom_ST0_FT0(tcg_env); - gen_helper_fpop(tcg_env); + if (op =3D=3D 0x2d) { + gen_helper_fpop(tcg_env); + } break; case 0x33: /* de/3 */ + /* + * TODO: does 0x32 also have the same limitation of requiring + * rm =3D=3D 1? If so, worth bundling it here and switch the fcom + * helper to gen_helper_fp_arith_ST0_FT0(op & 7). + */ switch (rm) { case 1: /* fcompp */ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(1)); @@ -2882,10 +2898,6 @@ static void gen_x87(DisasContext *s, X86DecodedInsn = *decode) goto illegal_op; } break; - case 0x38: /* ffreep sti, undocumented op */ - gen_helper_ffree_STN(tcg_env, tcg_constant_i32(opreg)); - gen_helper_fpop(tcg_env); - break; case 0x3c: /* df/4 */ switch (rm) { case 0: @@ -2897,26 +2909,6 @@ static void gen_x87(DisasContext *s, X86DecodedInsn = *decode) goto illegal_op; } break; - case 0x3d: /* fucomip */ - if (!(s->cpuid_features & CPUID_CMOV)) { - goto illegal_op; - } - gen_update_cc_op(s); - gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); - gen_helper_fucomi_ST0_FT0(tcg_env); - gen_helper_fpop(tcg_env); - assume_cc_op(s, CC_OP_EFLAGS); - break; - case 0x3e: /* fcomip */ - if (!(s->cpuid_features & CPUID_CMOV)) { - goto illegal_op; - } - gen_update_cc_op(s); - gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); - gen_helper_fcomi_ST0_FT0(tcg_env); - gen_helper_fpop(tcg_env); - assume_cc_op(s, CC_OP_EFLAGS); - break; case 0x10 ... 0x13: /* fcmovxx */ case 0x18 ... 0x1b: { --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829290; cv=none; d=zohomail.com; s=zohoarc; b=aBDsTvvZwDrty0B0xF8fcLhqPSsC3+KdZrVqLZwChwVafCeyDKcI1KlZxTkcYPs2JMj8JtUwUu1qJiEONIo5sfczVtvRe3yROeuIRhwXWefIjWpSMeXd0rKYt6/cgq9w5PUcY6Cnu5ESG7UL9AFBvrBonTOLtkWhAxfYeUpI/GI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829290; 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=hm/lI/FfjtZ1ql0Pt/4H0tYHsMAbjqQJRNvT37Y3wEk=; b=lISCdHIxaO4yZwrPigcmF0oUKTAORMTcuZG/HuKZbOi0k0nernLRRRN7H1OnRDsc+3XTKS3H6fVgQFyylwTkgmFUOeRxExDaghYC3CSNTrdynPlkkKYh7Ju81YGFIHHxfAmcOgqrSx+esaO8ExFISi3kNiMXt5MILLgj+0ByyAg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829290046945.6561919673607; Sat, 27 Dec 2025 01:54:50 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQwu-0001j4-1S; Sat, 27 Dec 2025 04:51:00 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQwe-0001Uc-Gm for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:46 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQwa-0007NQ-Hw for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:44 -0500 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-591-A6Q95GrBM2aEXRvWcT9TPQ-1; Sat, 27 Dec 2025 04:50:36 -0500 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-4325ddc5babso2696854f8f.0 for ; Sat, 27 Dec 2025 01:50:36 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea2278dsm50754437f8f.18.2025.12.27.01.50.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:50:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829038; 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=hm/lI/FfjtZ1ql0Pt/4H0tYHsMAbjqQJRNvT37Y3wEk=; b=jT8+qvhWvRBrUGkwxI3gPypn68nOoWfIgOn9AHvl7f3KX4li0YlWEE4YbHZURJHigvLjl5 dCUcy5VFLF9uGBOwZ3OUVbWULANf/Fj8ToSmwcu5kivc1opKlY6NEK2xxgcfTI6ubc8RA0 Ooeh0qiCX12W5RSmaua7EYmd/UkdHWo= X-MC-Unique: A6Q95GrBM2aEXRvWcT9TPQ-1 X-Mimecast-MFC-AGG-ID: A6Q95GrBM2aEXRvWcT9TPQ_1766829035 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829034; x=1767433834; 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; bh=hm/lI/FfjtZ1ql0Pt/4H0tYHsMAbjqQJRNvT37Y3wEk=; b=MRFbGgCPjp89waubvNBgf2PThOFgo/eDAAw5kuGAx2X9Dt1K+1agMmahDk0XKRP+ho RBaFp1OW3XpzixXqU2tijZ+VvsMHkLfrmljA8+qemVejyFm3HMpbuSZY8VWlihSJ+lio cimwO5QB4/7tuD1cbKiCrTG7Enmtx6HSR980Bdn05D8yryAkPRvEyROW+Yb+0pM5BmZ8 7r+oupyy9TjiP4FWRir/OUZ+aqPUOKh27SvusZYQJUgvFZTjV17Rkk7ODiTHbWlUC7ig FkTjIGePwPYbvLJuTT7Pod+SwNCUmdmde0lbshK9wSEKa+rP5RKSVvKl/0bA6ZNHdc0+ OM2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829034; x=1767433834; 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; bh=hm/lI/FfjtZ1ql0Pt/4H0tYHsMAbjqQJRNvT37Y3wEk=; b=AR8yCTG6KAJoHbHG/z+vD33RWcHMnf5wZTHaiTpftgZ6xJZwXj9zKYqpzBQCUhaYAc FyrdDnzg2ZvBk0MXGB/y6ODgfrrtvqGflqhUAuYgXtzoBXPttL7nq338si17d0pnHut8 8nHZPCzyUrYeWAQ24As/msI8rHQte46TzVclIvYqBdB+n/6aGp6PzUOTFtRcXSBPvOTE tQWZ2EOUH5KC1TYwpvazinIFHRw3NFQ3JpeCqpfkIA3mXlndK4rtwYuQs9D2cEuOfb15 OoNL/LCTmoze2fyEf8Mev7MZlyYwUK2aCz2cARWfG/GISgRcDhV99f4rUHhGwNXjsUYK SSQA== X-Gm-Message-State: AOJu0Yw387mqoyMBBeT+y5wLg34JaquG5oHyHEeVrUoUKWGuwKNH7rgw Yq/+rWmO6vx/gQ2i4olLVARbXfwJ8/XXv4EbGszTS93CpSPiUf7v9oWHNrJILohYI4+GC76cCej Py0nUBIVSDuCnAA+sgdNTIJC0kUuo0SRLBXqdtcERork1Oma1tooKBw49vp8x9mpub3l26vraWT s9yqcaTwZoePp9iEz1b/wNywg8PweLS9kUY7vsOn/K X-Gm-Gg: AY/fxX72jXKntXbo0kysivnxKsLYUk0WHFTSda+yCEn3Yomi6anind73tCOjBXfCTyS bmXfIlff3/DRhSupO703dZWNoVNMWLAhYYmPWCScFjv2U+k9MEwfm6IM6Pl891Jy1j3t879v3jc X1k/rDNgwg3AIc3z8TXZDkreiv1SqXffGjDpa7s3YFR0eYrRpuDWHvIy8YOit09ITyQ9pf9At8U BYVhMBv1ekTofqelUQf8U/hHiqGsMeKXzdskjVyeL6kKqZuw1TuXu+J9i10L/RnuJj0Cqw1Tlym YKGg0ejzfNKLz3KiHVGnKpFCkfa5DmwjhdTurfPT/6mm3RuugXyBNjK1xnxo8b2asZk+0Oqt3Dc fgNYlJOx12JEnoh3zML1U0tlfrgTQmmSDDdgMZkJ6+PA92A53I9rUxa2H2rhdQ/KFdiIRKGMmeK RKvTtcku8BGs4Hl0I= X-Received: by 2002:a05:6000:3103:b0:432:88bd:df44 with SMTP id ffacd0b85a97d-43288bde3d7mr1407820f8f.0.1766829034056; Sat, 27 Dec 2025 01:50:34 -0800 (PST) X-Google-Smtp-Source: AGHT+IFyzopux4oBUDcSo86RI01aPGOAw88QQgfroacpwA1dn7lPe6XmGbwcUM8glbxZz9I7ahKLjw== X-Received: by 2002:a05:6000:3103:b0:432:88bd:df44 with SMTP id ffacd0b85a97d-43288bde3d7mr1407793f8f.0.1766829033455; Sat, 27 Dec 2025 01:50:33 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Richard Henderson Subject: [PULL 128/153] target/i386/tcg: kill tmp1_i64 Date: Sat, 27 Dec 2025 10:47:33 +0100 Message-ID: <20251227094759.35658-54-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829291672158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- target/i386/tcg/translate.c | 66 ++++++++++++++++++++-------------- target/i386/tcg/emit.c.inc | 72 ++++++++++++++++++++++--------------- 2 files changed, 84 insertions(+), 54 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index bdaa436feac..dff7b615ef0 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -136,7 +136,6 @@ typedef struct DisasContext { =20 /* TCG local register indexes (only used inside old micro ops) */ TCGv_i32 tmp2_i32; - TCGv_i64 tmp1_i64; =20 sigjmp_buf jmpbuf; TCGOp *prev_insn_start; @@ -2365,14 +2364,18 @@ static void gen_jmp_rel_csize(DisasContext *s, int = diff, int tb_num) =20 static inline void gen_ldq_env_A0(DisasContext *s, int offset) { - tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, s->mem_index, MO_LEUQ); - tcg_gen_st_i64(s->tmp1_i64, tcg_env, offset); + TCGv_i64 t =3D tcg_temp_new_i64(); + + tcg_gen_qemu_ld_i64(t, s->A0, s->mem_index, MO_LEUQ); + tcg_gen_st_i64(t, tcg_env, offset); } =20 static inline void gen_stq_env_A0(DisasContext *s, int offset) { - tcg_gen_ld_i64(s->tmp1_i64, tcg_env, offset); - tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0, s->mem_index, MO_LEUQ); + TCGv_i64 t =3D tcg_temp_new_i64(); + + tcg_gen_ld_i64(t, tcg_env, offset); + tcg_gen_qemu_st_i64(t, s->A0, s->mem_index, MO_LEUQ); } =20 static inline void gen_ldo_env_A0(DisasContext *s, int offset, bool align) @@ -2452,6 +2455,7 @@ static void gen_x87(DisasContext *s, X86DecodedInsn *= decode) TCGv ea =3D gen_lea_modrm_1(s, decode->mem, false); TCGv last_addr =3D tcg_temp_new(); bool update_fdp =3D true; + TCGv_i64 t64; =20 tcg_gen_mov_tl(last_addr, ea); gen_lea_v_seg(s, ea, decode->mem.def_seg, s->override); @@ -2472,9 +2476,10 @@ static void gen_x87(DisasContext *s, X86DecodedInsn = *decode) break; =20 case 0x20 ... 0x27: /* fxxxl */ - tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, + t64 =3D tcg_temp_new_i64(); + tcg_gen_qemu_ld_i64(t64, s->A0, s->mem_index, MO_LEUQ); - gen_helper_fldl_FT0(tcg_env, s->tmp1_i64); + gen_helper_fldl_FT0(tcg_env, t64); gen_helper_fp_arith_ST0_FT0(op & 7); break; =20 @@ -2496,9 +2501,10 @@ static void gen_x87(DisasContext *s, X86DecodedInsn = *decode) gen_helper_fildl_ST0(tcg_env, s->tmp2_i32); break; case 0x28: /* fldl */ - tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, + t64 =3D tcg_temp_new_i64(); + tcg_gen_qemu_ld_i64(t64, s->A0, s->mem_index, MO_LEUQ); - gen_helper_fldl_ST0(tcg_env, s->tmp1_i64); + gen_helper_fldl_ST0(tcg_env, t64); break; case 0x38: /* filds */ tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, @@ -2513,8 +2519,9 @@ static void gen_x87(DisasContext *s, X86DecodedInsn *= decode) gen_helper_fpop(tcg_env); break; case 0x29: /* fisttpll */ - gen_helper_fisttll_ST0(s->tmp1_i64, tcg_env); - tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0, + t64 =3D tcg_temp_new_i64(); + gen_helper_fisttll_ST0(t64, tcg_env); + tcg_gen_qemu_st_i64(t64, s->A0, s->mem_index, MO_LEUQ); gen_helper_fpop(tcg_env); break; @@ -2542,8 +2549,9 @@ static void gen_x87(DisasContext *s, X86DecodedInsn *= decode) } break; case 0x2a: case 0x2b: /* fstl, fstpl */ - gen_helper_fstl_ST0(s->tmp1_i64, tcg_env); - tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0, + t64 =3D tcg_temp_new_i64(); + gen_helper_fstl_ST0(t64, tcg_env); + tcg_gen_qemu_st_i64(t64, s->A0, s->mem_index, MO_LEUQ); if ((op & 7) =3D=3D 3) { gen_helper_fpop(tcg_env); @@ -2611,13 +2619,15 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) gen_helper_fpop(tcg_env); break; case 0x3d: /* fildll */ - tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, + t64 =3D tcg_temp_new_i64(); + tcg_gen_qemu_ld_i64(t64, s->A0, s->mem_index, MO_LEUQ); - gen_helper_fildll_ST0(tcg_env, s->tmp1_i64); + gen_helper_fildll_ST0(tcg_env, t64); break; case 0x3f: /* fistpll */ - gen_helper_fistll_ST0(s->tmp1_i64, tcg_env); - tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0, + t64 =3D tcg_temp_new_i64(); + gen_helper_fistll_ST0(t64, tcg_env); + tcg_gen_qemu_st_i64(t64, s->A0, s->mem_index, MO_LEUQ); gen_helper_fpop(tcg_env); break; @@ -2959,6 +2969,7 @@ static void gen_multi0F(DisasContext *s, X86DecodedIn= sn *decode) int modrm =3D s->modrm; MemOp ot; int reg, rm, mod, op; + TCGv_i64 t64; =20 /* now check op code */ switch (b) { @@ -3150,9 +3161,10 @@ static void gen_multi0F(DisasContext *s, X86DecodedI= nsn *decode) || (s->prefix & (PREFIX_DATA | PREFIX_REPZ | PREFIX_REPNZ)= )) { goto illegal_op; } + t64 =3D tcg_temp_new_i64(); tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_ECX]); - gen_helper_xgetbv(s->tmp1_i64, tcg_env, s->tmp2_i32); - tcg_gen_extr_i64_tl(cpu_regs[R_EAX], cpu_regs[R_EDX], s->tmp1_= i64); + gen_helper_xgetbv(t64, tcg_env, s->tmp2_i32); + tcg_gen_extr_i64_tl(cpu_regs[R_EAX], cpu_regs[R_EDX], t64); break; =20 case 0xd1: /* xsetbv */ @@ -3164,10 +3176,11 @@ static void gen_multi0F(DisasContext *s, X86Decoded= Insn *decode) if (!check_cpl0(s)) { break; } - tcg_gen_concat_tl_i64(s->tmp1_i64, cpu_regs[R_EAX], + t64 =3D tcg_temp_new_i64(); + tcg_gen_concat_tl_i64(t64, cpu_regs[R_EAX], cpu_regs[R_EDX]); tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_ECX]); - gen_helper_xsetbv(tcg_env, s->tmp2_i32, s->tmp1_i64); + gen_helper_xsetbv(tcg_env, s->tmp2_i32, t64); /* End TB because translation flags may change. */ s->base.is_jmp =3D DISAS_EOB_NEXT; break; @@ -3327,18 +3340,20 @@ static void gen_multi0F(DisasContext *s, X86Decoded= Insn *decode) if (s->prefix & (PREFIX_DATA | PREFIX_REPZ | PREFIX_REPNZ)) { goto illegal_op; } + t64 =3D tcg_temp_new_i64(); tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_ECX]); - gen_helper_rdpkru(s->tmp1_i64, tcg_env, s->tmp2_i32); - tcg_gen_extr_i64_tl(cpu_regs[R_EAX], cpu_regs[R_EDX], s->tmp1_= i64); + gen_helper_rdpkru(t64, tcg_env, s->tmp2_i32); + tcg_gen_extr_i64_tl(cpu_regs[R_EAX], cpu_regs[R_EDX], t64); break; case 0xef: /* wrpkru */ if (s->prefix & (PREFIX_DATA | PREFIX_REPZ | PREFIX_REPNZ)) { goto illegal_op; } - tcg_gen_concat_tl_i64(s->tmp1_i64, cpu_regs[R_EAX], + t64 =3D tcg_temp_new_i64(); + tcg_gen_concat_tl_i64(t64, cpu_regs[R_EAX], cpu_regs[R_EDX]); tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_ECX]); - gen_helper_wrpkru(tcg_env, s->tmp2_i32, s->tmp1_i64); + gen_helper_wrpkru(tcg_env, s->tmp2_i32, t64); break; =20 CASE_MODRM_OP(6): /* lmsw */ @@ -3730,7 +3745,6 @@ static void i386_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cpu) dc->T1 =3D tcg_temp_new(); dc->A0 =3D tcg_temp_new(); =20 - dc->tmp1_i64 =3D tcg_temp_new_i64(); dc->tmp2_i32 =3D tcg_temp_new_i32(); dc->cc_srcT =3D tcg_temp_new(); } diff --git a/target/i386/tcg/emit.c.inc b/target/i386/tcg/emit.c.inc index 131aefce53c..8dac4d09da1 100644 --- a/target/i386/tcg/emit.c.inc +++ b/target/i386/tcg/emit.c.inc @@ -521,10 +521,12 @@ static void gen_3dnow(DisasContext *s, X86DecodedInsn= *decode) =20 gen_helper_enter_mmx(tcg_env); if (fn =3D=3D FN_3DNOW_MOVE) { - tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[1].offset); - tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset); + TCGv_i64 t =3D tcg_temp_new_i64(); + + tcg_gen_ld_i64(t, tcg_env, decode->op[1].offset); + tcg_gen_st_i64(t, tcg_env, decode->op[0].offset); } else { - fn(tcg_env, OP_PTR0, OP_PTR1); + fn(tcg_env, OP_PTR0, OP_PTR1); } } =20 @@ -2596,10 +2598,11 @@ static void gen_MOVQ(DisasContext *s, X86DecodedIns= n *decode) { int vec_len =3D vector_len(s, decode); int lo_ofs =3D vector_elem_offset(&decode->op[0], MO_64, 0); + TCGv_i64 t =3D tcg_temp_new_i64(); =20 - tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[2].offset); + tcg_gen_ld_i64(t, tcg_env, decode->op[2].offset); if (decode->op[0].has_ea) { - tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0, s->mem_index, MO_LEUQ); + tcg_gen_qemu_st_i64(t, s->A0, s->mem_index, MO_LEUQ); } else { /* * tcg_gen_gvec_dup_i64(MO_64, op0.offset, 8, vec_len, s->tmp1_64)= would @@ -2610,7 +2613,7 @@ static void gen_MOVQ(DisasContext *s, X86DecodedInsn = *decode) * it disqualifies using oprsz < maxsz to emulate VEX128. */ tcg_gen_gvec_dup_imm(MO_64, decode->op[0].offset, vec_len, vec_len= , 0); - tcg_gen_st_i64(s->tmp1_i64, tcg_env, lo_ofs); + tcg_gen_st_i64(t, tcg_env, lo_ofs); } } =20 @@ -4505,10 +4508,12 @@ static void gen_VMASKMOVPS_st(DisasContext *s, X86D= ecodedInsn *decode) =20 static void gen_VMOVHPx_ld(DisasContext *s, X86DecodedInsn *decode) { + TCGv_i64 t =3D tcg_temp_new_i64(); + gen_ldq_env_A0(s, decode->op[0].offset + offsetof(XMMReg, XMM_Q(1))); if (decode->op[0].offset !=3D decode->op[1].offset) { - tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[1].offset + offset= of(XMMReg, XMM_Q(0))); - tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset + offset= of(XMMReg, XMM_Q(0))); + tcg_gen_ld_i64(t, tcg_env, decode->op[1].offset + offsetof(XMMReg,= XMM_Q(0))); + tcg_gen_st_i64(t, tcg_env, decode->op[0].offset + offsetof(XMMReg,= XMM_Q(0))); } } =20 @@ -4519,33 +4524,39 @@ static void gen_VMOVHPx_st(DisasContext *s, X86Deco= dedInsn *decode) =20 static void gen_VMOVHPx(DisasContext *s, X86DecodedInsn *decode) { + TCGv_i64 t =3D tcg_temp_new_i64(); + if (decode->op[0].offset !=3D decode->op[2].offset) { - tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[2].offset + offset= of(XMMReg, XMM_Q(1))); - tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset + offset= of(XMMReg, XMM_Q(1))); + tcg_gen_ld_i64(t, tcg_env, decode->op[2].offset + offsetof(XMMReg,= XMM_Q(1))); + tcg_gen_st_i64(t, tcg_env, decode->op[0].offset + offsetof(XMMReg,= XMM_Q(1))); } if (decode->op[0].offset !=3D decode->op[1].offset) { - tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[1].offset + offset= of(XMMReg, XMM_Q(0))); - tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset + offset= of(XMMReg, XMM_Q(0))); + tcg_gen_ld_i64(t, tcg_env, decode->op[1].offset + offsetof(XMMReg,= XMM_Q(0))); + tcg_gen_st_i64(t, tcg_env, decode->op[0].offset + offsetof(XMMReg,= XMM_Q(0))); } } =20 static void gen_VMOVHLPS(DisasContext *s, X86DecodedInsn *decode) { - tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[2].offset + offsetof(X= MMReg, XMM_Q(1))); - tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset + offsetof(X= MMReg, XMM_Q(0))); + TCGv_i64 t =3D tcg_temp_new_i64(); + + tcg_gen_ld_i64(t, tcg_env, decode->op[2].offset + offsetof(XMMReg, XMM= _Q(1))); + tcg_gen_st_i64(t, tcg_env, decode->op[0].offset + offsetof(XMMReg, XMM= _Q(0))); if (decode->op[0].offset !=3D decode->op[1].offset) { - tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[1].offset + offset= of(XMMReg, XMM_Q(1))); - tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset + offset= of(XMMReg, XMM_Q(1))); + tcg_gen_ld_i64(t, tcg_env, decode->op[1].offset + offsetof(XMMReg,= XMM_Q(1))); + tcg_gen_st_i64(t, tcg_env, decode->op[0].offset + offsetof(XMMReg,= XMM_Q(1))); } } =20 static void gen_VMOVLHPS(DisasContext *s, X86DecodedInsn *decode) { - tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[2].offset); - tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset + offsetof(X= MMReg, XMM_Q(1))); + TCGv_i64 t =3D tcg_temp_new_i64(); + + tcg_gen_ld_i64(t, tcg_env, decode->op[2].offset); + tcg_gen_st_i64(t, tcg_env, decode->op[0].offset + offsetof(XMMReg, XMM= _Q(1))); if (decode->op[0].offset !=3D decode->op[1].offset) { - tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[1].offset + offset= of(XMMReg, XMM_Q(0))); - tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset + offset= of(XMMReg, XMM_Q(0))); + tcg_gen_ld_i64(t, tcg_env, decode->op[1].offset + offsetof(XMMReg,= XMM_Q(0))); + tcg_gen_st_i64(t, tcg_env, decode->op[0].offset + offsetof(XMMReg,= XMM_Q(0))); } } =20 @@ -4557,34 +4568,39 @@ static void gen_VMOVLHPS(DisasContext *s, X86Decode= dInsn *decode) static void gen_VMOVLPx(DisasContext *s, X86DecodedInsn *decode) { int vec_len =3D vector_len(s, decode); + TCGv_i64 t =3D tcg_temp_new_i64(); =20 - tcg_gen_ld_i64(s->tmp1_i64, tcg_env, decode->op[2].offset + offsetof(X= MMReg, XMM_Q(0))); + tcg_gen_ld_i64(t, tcg_env, decode->op[2].offset + offsetof(XMMReg, XMM= _Q(0))); tcg_gen_gvec_mov(MO_64, decode->op[0].offset, decode->op[1].offset, ve= c_len, vec_len); - tcg_gen_st_i64(s->tmp1_i64, tcg_env, decode->op[0].offset + offsetof(X= MMReg, XMM_Q(0))); + tcg_gen_st_i64(t, tcg_env, decode->op[0].offset + offsetof(XMMReg, XMM= _Q(0))); } =20 static void gen_VMOVLPx_ld(DisasContext *s, X86DecodedInsn *decode) { int vec_len =3D vector_len(s, decode); + TCGv_i64 t =3D tcg_temp_new_i64(); =20 - tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, s->mem_index, MO_LEUQ); + tcg_gen_qemu_ld_i64(t, s->A0, s->mem_index, MO_LEUQ); tcg_gen_gvec_mov(MO_64, decode->op[0].offset, decode->op[1].offset, ve= c_len, vec_len); - tcg_gen_st_i64(s->tmp1_i64, OP_PTR0, offsetof(ZMMReg, ZMM_Q(0))); + tcg_gen_st_i64(t, OP_PTR0, offsetof(ZMMReg, ZMM_Q(0))); } =20 static void gen_VMOVLPx_st(DisasContext *s, X86DecodedInsn *decode) { - tcg_gen_ld_i64(s->tmp1_i64, OP_PTR2, offsetof(ZMMReg, ZMM_Q(0))); - tcg_gen_qemu_st_i64(s->tmp1_i64, s->A0, s->mem_index, MO_LEUQ); + TCGv_i64 t =3D tcg_temp_new_i64(); + + tcg_gen_ld_i64(t, OP_PTR2, offsetof(ZMMReg, ZMM_Q(0))); + tcg_gen_qemu_st_i64(t, s->A0, s->mem_index, MO_LEUQ); } =20 static void gen_VMOVSD_ld(DisasContext *s, X86DecodedInsn *decode) { TCGv_i64 zero =3D tcg_constant_i64(0); + TCGv_i64 t =3D tcg_temp_new_i64(); =20 - tcg_gen_qemu_ld_i64(s->tmp1_i64, s->A0, s->mem_index, MO_LEUQ); + tcg_gen_qemu_ld_i64(t, s->A0, s->mem_index, MO_LEUQ); tcg_gen_st_i64(zero, OP_PTR0, offsetof(ZMMReg, ZMM_Q(1))); - tcg_gen_st_i64(s->tmp1_i64, OP_PTR0, offsetof(ZMMReg, ZMM_Q(0))); + tcg_gen_st_i64(t, OP_PTR0, offsetof(ZMMReg, ZMM_Q(0))); } =20 static void gen_VMOVSS(DisasContext *s, X86DecodedInsn *decode) --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829108; cv=none; d=zohomail.com; s=zohoarc; b=hNkGL76KAGu9iC9Fy2fnqlOhkgmQxdNtqEncrySCbe7Cp86MXdNtgxRGTM8Dd5+9S5V7xkHZxGZUiGuJISZNgUUBcBj71hYc84aufG3DvU3wA9985TkieXOSHnr/FUScdQgn6fO9bYtyNos4d3PJm7wA7f3XKuZo/LIXT8BpOA4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829108; 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=5I0xhi7xPfrYLsntJee5CeQ2dsdoBMj/DSXi3sRSBhc=; b=TuGdpnJeGLkNRs17e4T0OZeYzeGq0f4MbZ3nc6VNHgMxRyM49TAIxfFPw173ZWCCw0JE9l9u8hlsBmYsOWAqURi3VUWzvhxzHpmknD1BvQG1qr27IOrXpwAqZmPb4nUCqk55kivXp4bXY/mubM9UIoJ4odfVpQwI2S4qesUnIjg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17668291081931005.8717769284865; Sat, 27 Dec 2025 01:51:48 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQwz-0001rV-VY; Sat, 27 Dec 2025 04:51:07 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQwg-0001a7-Dm for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:51 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQwc-0007Nd-FZ for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:45 -0500 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-599-D6MZhz3wPFK8R1TQtIkLww-1; Sat, 27 Dec 2025 04:50:40 -0500 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-4325b81081aso3890060f8f.3 for ; Sat, 27 Dec 2025 01:50:40 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea2253csm50809253f8f.14.2025.12.27.01.50.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:50:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829041; 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=5I0xhi7xPfrYLsntJee5CeQ2dsdoBMj/DSXi3sRSBhc=; b=XUOSQBdgRXCSPB+efVm1iBe6za0ky0fyoPEY7iLibmkOBFm5Drs5qepZEOYwUTIRi+lWGY ZwCLnyeebq1YbWz7WVf2LdHaGAG1t0gVD72xPVob5pEvuQr5mWyh8RaK0o1Us5KtIpEZs8 0ROZswHyPgC9t1XCHymdJWg23mQuKfk= X-MC-Unique: D6MZhz3wPFK8R1TQtIkLww-1 X-Mimecast-MFC-AGG-ID: D6MZhz3wPFK8R1TQtIkLww_1766829039 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829038; x=1767433838; 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; bh=5I0xhi7xPfrYLsntJee5CeQ2dsdoBMj/DSXi3sRSBhc=; b=CAho7ysR351nVYiBb2yw3WXK/2OdtnHP8ZFB5tB0W6PuzPq6/5b3/o9VlG+dYYOkfC EvB8gboGzjy4/BAEk8W06POJDm5zb+BurHDdQqikygaW06rH+LBLxvfvUnSQGEjhz3QV mDV6XbkHB6X3YUpaKT5HgEoAI1wIZ6uloo3izmitWx+qibLzW62eiA47+OzRWbTuYAIs vjL9v6U4yHo9Y7tLtGa3Djwgfa910gTTKGDTQCxdeJzliBfv3STSweB6C8/j8AUE8qsy kQtSe3cd6/lOgunzK25suOT+oMdD6Us/ehMPwBmXhjLq2UhaiCcWCO6ojkoi3xSN2+ok QZqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829038; x=1767433838; 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; bh=5I0xhi7xPfrYLsntJee5CeQ2dsdoBMj/DSXi3sRSBhc=; b=a1/3XJHV9ato5ydlTu/ro21fthX0FuLygqk0cH6pSXQeopj8YNRuVu2rn7Ll04EWpI TMPU7ssDXFpCxjF58vniUnnlmJ5yOwAdfakUa9/A4hnpQDFGGHOkW7YhIR6NVwT+WTge ZipLPEs7GiG4bqIQbB02qQIUHzXgUqP15oHO9dAatc7ZjTSC1mIyhveQSatswQh3ZhNk zJTHDTsKXQoVds1cxxtyPkiw6udr4hnDjAVZoPN9fBISsOaivgWrC3IQrSThcr0wIlh7 1hzKrqDoaPqUY/G+nA3I2K9pMokYJIAmOKslFJXALPK5kJ8ebscReIMdfh4Dhtgt3WjY ivKw== X-Gm-Message-State: AOJu0YwhCG/53oPP9Qm4NK+rJnv7xgQMgzt/SqwYHKnOojaDEIQDlF2P m3/kbs7+KWdY5LGI+yMLjnOSUiI5qi11Qpwerefa+ihWwADBU+o2u7EsWhcNDouHEJyBiwQn0qY vE0JN2HPDfnFHpVOYHYBMT+ONBEo6l7KDGhjpy/hvJkn46XioVNnHXNSCx5g1ARHs+pksYsU+6y Dv3SOu2XffNMRmK5JNFHjLiBAcJ96spaNonx9HWUX6 X-Gm-Gg: AY/fxX4IqDjy8hIQq0VMSOvVIT824hvyYohTH2G/HC5xqxunuIAxLKhA8TE2HLj51+O NPTxCp7j1BSBrnCTKagDUDUTakHGu5/1rO67mnfDE4g2qdM50HOFfsXLr3KguIREy9FyTTYD6Wt QtqtYR0Tu+qr/DFM4lvAEMVx7EJZvl/o1pe8T2X/3Z2FtgXGnrwzvXgscGengJM02bpkWxRjOp5 p52P8jl8IgiwFqkYkNbwpUFdJ4IgxilAgya28oIfrWKXu6e3Vl4PcoS3LuY8U5SwTXaEp0+mKBA sFOOZ3EyLOm/IcnHkYU8tnPnpG7x/1UhN8tltITX0iiuJsSadxeid0J0XDOr+EgQ80rQkzyZAoW 5bNqm9fX+J2pEQ3GlGlobJbpth6h/5IieQ6g64WlJ4zfVVXLzpwneqVP7XexYoobLViSMjWElCU tU8N16Bu89m1I2PTc= X-Received: by 2002:a05:6000:26d1:b0:430:f463:b6a7 with SMTP id ffacd0b85a97d-4324e50ec19mr32696656f8f.45.1766829037800; Sat, 27 Dec 2025 01:50:37 -0800 (PST) X-Google-Smtp-Source: AGHT+IHn+tVyfg9aBVxb40nwnEzdGsTuptiqJq0rsRAqxUD34bFM/+/k2M24QPqwCMwJjy5PGCw8pg== X-Received: by 2002:a05:6000:26d1:b0:430:f463:b6a7 with SMTP id ffacd0b85a97d-4324e50ec19mr32696620f8f.45.1766829037262; Sat, 27 Dec 2025 01:50:37 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Richard Henderson Subject: [PULL 129/153] target/i386/tcg: kill tmp2_i32 Date: Sat, 27 Dec 2025 10:47:34 +0100 Message-ID: <20251227094759.35658-55-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829109170158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- target/i386/tcg/translate.c | 122 +++++++++++++++++++++--------------- 1 file changed, 72 insertions(+), 50 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index dff7b615ef0..d3e5e4d8edb 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -134,9 +134,6 @@ typedef struct DisasContext { TCGv T0; TCGv T1; =20 - /* TCG local register indexes (only used inside old micro ops) */ - TCGv_i32 tmp2_i32; - sigjmp_buf jmpbuf; TCGOp *prev_insn_start; TCGOp *prev_insn_end; @@ -2455,6 +2452,7 @@ static void gen_x87(DisasContext *s, X86DecodedInsn *= decode) TCGv ea =3D gen_lea_modrm_1(s, decode->mem, false); TCGv last_addr =3D tcg_temp_new(); bool update_fdp =3D true; + TCGv_i32 t32; TCGv_i64 t64; =20 tcg_gen_mov_tl(last_addr, ea); @@ -2462,16 +2460,18 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) =20 switch (op) { case 0x00 ... 0x07: /* fxxxs */ - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + tcg_gen_qemu_ld_i32(t32, s->A0, s->mem_index, MO_LEUL); - gen_helper_flds_FT0(tcg_env, s->tmp2_i32); + gen_helper_flds_FT0(tcg_env, t32); gen_helper_fp_arith_ST0_FT0(op & 7); break; =20 case 0x10 ... 0x17: /* fixxxl */ - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + tcg_gen_qemu_ld_i32(t32, s->A0, s->mem_index, MO_LEUL); - gen_helper_fildl_FT0(tcg_env, s->tmp2_i32); + gen_helper_fildl_FT0(tcg_env, t32); gen_helper_fp_arith_ST0_FT0(op & 7); break; =20 @@ -2484,21 +2484,24 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) break; =20 case 0x30 ... 0x37: /* fixxx */ - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + tcg_gen_qemu_ld_i32(t32, s->A0, s->mem_index, MO_LESW); - gen_helper_fildl_FT0(tcg_env, s->tmp2_i32); + gen_helper_fildl_FT0(tcg_env, t32); gen_helper_fp_arith_ST0_FT0(op & 7); break; =20 case 0x08: /* flds */ - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + tcg_gen_qemu_ld_i32(t32, s->A0, s->mem_index, MO_LEUL); - gen_helper_flds_ST0(tcg_env, s->tmp2_i32); + gen_helper_flds_ST0(tcg_env, t32); break; case 0x18: /* fildl */ - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + tcg_gen_qemu_ld_i32(t32, s->A0, s->mem_index, MO_LEUL); - gen_helper_fildl_ST0(tcg_env, s->tmp2_i32); + gen_helper_fildl_ST0(tcg_env, t32); break; case 0x28: /* fldl */ t64 =3D tcg_temp_new_i64(); @@ -2507,14 +2510,16 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) gen_helper_fldl_ST0(tcg_env, t64); break; case 0x38: /* filds */ - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + tcg_gen_qemu_ld_i32(t32, s->A0, s->mem_index, MO_LESW); - gen_helper_fildl_ST0(tcg_env, s->tmp2_i32); + gen_helper_fildl_ST0(tcg_env, t32); break; =20 case 0x19: /* fisttpl */ - gen_helper_fisttl_ST0(s->tmp2_i32, tcg_env); - tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + gen_helper_fisttl_ST0(t32, tcg_env); + tcg_gen_qemu_st_i32(t32, s->A0, s->mem_index, MO_LEUL); gen_helper_fpop(tcg_env); break; @@ -2526,23 +2531,26 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) gen_helper_fpop(tcg_env); break; case 0x39: /* fisttps */ - gen_helper_fistt_ST0(s->tmp2_i32, tcg_env); - tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + gen_helper_fistt_ST0(t32, tcg_env); + tcg_gen_qemu_st_i32(t32, s->A0, s->mem_index, MO_LEUW); gen_helper_fpop(tcg_env); break; =20 case 0x0a: case 0x0b: /* fsts, fstps */ - gen_helper_fsts_ST0(s->tmp2_i32, tcg_env); - tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + gen_helper_fsts_ST0(t32, tcg_env); + tcg_gen_qemu_st_i32(t32, s->A0, s->mem_index, MO_LEUL); if ((op & 7) =3D=3D 3) { gen_helper_fpop(tcg_env); } break; case 0x1a: case 0x1b: /* fistl, fistpl */ - gen_helper_fistl_ST0(s->tmp2_i32, tcg_env); - tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + gen_helper_fistl_ST0(t32, tcg_env); + tcg_gen_qemu_st_i32(t32, s->A0, s->mem_index, MO_LEUL); if ((op & 7) =3D=3D 3) { gen_helper_fpop(tcg_env); @@ -2559,8 +2567,9 @@ static void gen_x87(DisasContext *s, X86DecodedInsn *= decode) break; =20 case 0x3a: case 0x3b: /* fists, fistps */ - gen_helper_fist_ST0(s->tmp2_i32, tcg_env); - tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + gen_helper_fist_ST0(t32, tcg_env); + tcg_gen_qemu_st_i32(t32, s->A0, s->mem_index, MO_LEUW); if ((op & 7) =3D=3D 3) { gen_helper_fpop(tcg_env); @@ -2572,9 +2581,10 @@ static void gen_x87(DisasContext *s, X86DecodedInsn = *decode) update_fip =3D update_fdp =3D false; break; case 0x0d: /* fldcw mem */ - tcg_gen_qemu_ld_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + tcg_gen_qemu_ld_i32(t32, s->A0, s->mem_index, MO_LEUW); - gen_helper_fldcw(tcg_env, s->tmp2_i32); + gen_helper_fldcw(tcg_env, t32); update_fip =3D update_fdp =3D false; break; case 0x0e: /* fnstenv mem */ @@ -2583,8 +2593,9 @@ static void gen_x87(DisasContext *s, X86DecodedInsn *= decode) update_fip =3D update_fdp =3D false; break; case 0x0f: /* fnstcw mem */ - gen_helper_fnstcw(s->tmp2_i32, tcg_env); - tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + gen_helper_fnstcw(t32, tcg_env); + tcg_gen_qemu_st_i32(t32, s->A0, s->mem_index, MO_LEUW); update_fip =3D update_fdp =3D false; break; @@ -2606,8 +2617,9 @@ static void gen_x87(DisasContext *s, X86DecodedInsn *= decode) update_fip =3D update_fdp =3D false; break; case 0x2f: /* fnstsw mem */ - gen_helper_fnstsw(s->tmp2_i32, tcg_env); - tcg_gen_qemu_st_i32(s->tmp2_i32, s->A0, + t32 =3D tcg_temp_new_i32(); + gen_helper_fnstsw(t32, tcg_env); + tcg_gen_qemu_st_i32(t32, s->A0, s->mem_index, MO_LEUW); update_fip =3D update_fdp =3D false; break; @@ -2638,10 +2650,11 @@ static void gen_x87(DisasContext *s, X86DecodedInsn= *decode) if (update_fdp) { int last_seg =3D s->override >=3D 0 ? s->override : decode->me= m.def_seg; =20 - tcg_gen_ld_i32(s->tmp2_i32, tcg_env, + t32 =3D tcg_temp_new_i32(); + tcg_gen_ld_i32(t32, tcg_env, offsetof(CPUX86State, segs[last_seg].selector)); - tcg_gen_st16_i32(s->tmp2_i32, tcg_env, + tcg_gen_st16_i32(t32, tcg_env, offsetof(CPUX86State, fpds)); tcg_gen_st_tl(last_addr, tcg_env, offsetof(CPUX86State, fpdp)); @@ -2649,6 +2662,7 @@ static void gen_x87(DisasContext *s, X86DecodedInsn *= decode) } else { /* register float ops */ int opreg =3D rm; + TCGv_i32 t32; =20 switch (op) { case 0x08: /* fld sti */ @@ -2911,8 +2925,9 @@ static void gen_x87(DisasContext *s, X86DecodedInsn *= decode) case 0x3c: /* df/4 */ switch (rm) { case 0: - gen_helper_fnstsw(s->tmp2_i32, tcg_env); - tcg_gen_extu_i32_tl(s->T0, s->tmp2_i32); + t32 =3D tcg_temp_new_i32(); + gen_helper_fnstsw(t32, tcg_env); + tcg_gen_extu_i32_tl(s->T0, t32); gen_op_mov_reg_v(s, MO_16, R_EAX, s->T0); break; default: @@ -2948,9 +2963,10 @@ static void gen_x87(DisasContext *s, X86DecodedInsn = *decode) } =20 if (update_fip) { - tcg_gen_ld_i32(s->tmp2_i32, tcg_env, + TCGv_i32 t32 =3D tcg_temp_new_i32(); + tcg_gen_ld_i32(t32, tcg_env, offsetof(CPUX86State, segs[R_CS].selector)); - tcg_gen_st16_i32(s->tmp2_i32, tcg_env, + tcg_gen_st16_i32(t32, tcg_env, offsetof(CPUX86State, fpcs)); tcg_gen_st_tl(eip_cur_tl(s), tcg_env, offsetof(CPUX86State, fpip)); @@ -2969,6 +2985,7 @@ static void gen_multi0F(DisasContext *s, X86DecodedIn= sn *decode) int modrm =3D s->modrm; MemOp ot; int reg, rm, mod, op; + TCGv_i32 t32; TCGv_i64 t64; =20 /* now check op code */ @@ -3035,10 +3052,11 @@ static void gen_multi0F(DisasContext *s, X86Decoded= Insn *decode) if (!PE(s) || VM86(s)) goto illegal_op; if (check_cpl0(s)) { + t32 =3D tcg_temp_new_i32(); gen_svm_check_intercept(s, SVM_EXIT_LDTR_WRITE); gen_ld_modrm(s, decode, MO_16); - tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); - gen_helper_lldt(tcg_env, s->tmp2_i32); + tcg_gen_trunc_tl_i32(t32, s->T0); + gen_helper_lldt(tcg_env, t32); } break; case 1: /* str */ @@ -3057,10 +3075,11 @@ static void gen_multi0F(DisasContext *s, X86Decoded= Insn *decode) if (!PE(s) || VM86(s)) goto illegal_op; if (check_cpl0(s)) { + t32 =3D tcg_temp_new_i32(); gen_svm_check_intercept(s, SVM_EXIT_TR_WRITE); gen_ld_modrm(s, decode, MO_16); - tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0); - gen_helper_ltr(tcg_env, s->tmp2_i32); + tcg_gen_trunc_tl_i32(t32, s->T0); + gen_helper_ltr(tcg_env, t32); } break; case 4: /* verr */ @@ -3161,9 +3180,10 @@ static void gen_multi0F(DisasContext *s, X86DecodedI= nsn *decode) || (s->prefix & (PREFIX_DATA | PREFIX_REPZ | PREFIX_REPNZ)= )) { goto illegal_op; } + t32 =3D tcg_temp_new_i32(); t64 =3D tcg_temp_new_i64(); - tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_ECX]); - gen_helper_xgetbv(t64, tcg_env, s->tmp2_i32); + tcg_gen_trunc_tl_i32(t32, cpu_regs[R_ECX]); + gen_helper_xgetbv(t64, tcg_env, t32); tcg_gen_extr_i64_tl(cpu_regs[R_EAX], cpu_regs[R_EDX], t64); break; =20 @@ -3176,11 +3196,12 @@ static void gen_multi0F(DisasContext *s, X86Decoded= Insn *decode) if (!check_cpl0(s)) { break; } + t32 =3D tcg_temp_new_i32(); t64 =3D tcg_temp_new_i64(); tcg_gen_concat_tl_i64(t64, cpu_regs[R_EAX], cpu_regs[R_EDX]); - tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_ECX]); - gen_helper_xsetbv(tcg_env, s->tmp2_i32, t64); + tcg_gen_trunc_tl_i32(t32, cpu_regs[R_ECX]); + gen_helper_xsetbv(tcg_env, t32, t64); /* End TB because translation flags may change. */ s->base.is_jmp =3D DISAS_EOB_NEXT; break; @@ -3340,20 +3361,22 @@ static void gen_multi0F(DisasContext *s, X86Decoded= Insn *decode) if (s->prefix & (PREFIX_DATA | PREFIX_REPZ | PREFIX_REPNZ)) { goto illegal_op; } + t32 =3D tcg_temp_new_i32(); t64 =3D tcg_temp_new_i64(); - tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_ECX]); - gen_helper_rdpkru(t64, tcg_env, s->tmp2_i32); + tcg_gen_trunc_tl_i32(t32, cpu_regs[R_ECX]); + gen_helper_rdpkru(t64, tcg_env, t32); tcg_gen_extr_i64_tl(cpu_regs[R_EAX], cpu_regs[R_EDX], t64); break; case 0xef: /* wrpkru */ if (s->prefix & (PREFIX_DATA | PREFIX_REPZ | PREFIX_REPNZ)) { goto illegal_op; } + t32 =3D tcg_temp_new_i32(); t64 =3D tcg_temp_new_i64(); tcg_gen_concat_tl_i64(t64, cpu_regs[R_EAX], cpu_regs[R_EDX]); - tcg_gen_trunc_tl_i32(s->tmp2_i32, cpu_regs[R_ECX]); - gen_helper_wrpkru(tcg_env, s->tmp2_i32, t64); + tcg_gen_trunc_tl_i32(t32, cpu_regs[R_ECX]); + gen_helper_wrpkru(tcg_env, t32, t64); break; =20 CASE_MODRM_OP(6): /* lmsw */ @@ -3745,7 +3768,6 @@ static void i386_tr_init_disas_context(DisasContextBa= se *dcbase, CPUState *cpu) dc->T1 =3D tcg_temp_new(); dc->A0 =3D tcg_temp_new(); =20 - dc->tmp2_i32 =3D tcg_temp_new_i32(); dc->cc_srcT =3D tcg_temp_new(); } =20 --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829072; cv=none; d=zohomail.com; s=zohoarc; b=WHPGbhjsaL7ACd2pSLHQk88+eUsqTyXUeiNTJ/1MgJ6sa3naqGncAIn9tE/gp+widtlZ5YCDh3+n/798BZ9roA2FQG7SEwLYnh/+DV2asnii66n8iYxQQ5DmtF2CXrnNEIPWLo2aS2F81TaoUCxQhnyuFMtQXoz+CUpknIoK0P0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829072; 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=zGKQcTYH8NslXOFyWO8VlfRFFvEFNB+uFId5LqaXI7k=; b=YLsFx1/nmj1PZAbAfJRjjYHGmddq1+dY8egsAuE0wsC7lJbJ8zAARWMiC7DyhxgGR3mH5pKvT3M5NqJLnhs1P3+jtIyuB0OzKVp2fTyKm0ZBRhFTxXEiINSHL6L5SHkppQoeporIcsRV1V0GmP5R3cs4+k8UXx1pD2opm1aOt08= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829072274883.7394160960662; Sat, 27 Dec 2025 01:51:12 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQww-0001nU-4G; Sat, 27 Dec 2025 04:51:03 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQwi-0001b5-BT for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:51 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQwg-0007Nz-6Z for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:47 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-473-hDH96O2qNyyexJstnGpFKg-1; Sat, 27 Dec 2025 04:50:43 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-430f4609e80so3984504f8f.3 for ; Sat, 27 Dec 2025 01:50:43 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea1b1bdsm49215690f8f.8.2025.12.27.01.50.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:50:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829045; 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=zGKQcTYH8NslXOFyWO8VlfRFFvEFNB+uFId5LqaXI7k=; b=gtmG7ZE1C/2R0HmPcFo4ubSQxySn11MH/2PE4xDN9TIpg0Y2hgv5xQ8tB4SCZgGzOxN0xE UmRp1Fs0QmUea0+EwPRk5xLKKpwHsY0aDW3XGvDN8qj8QvhWP/SuoKIp/k04FLkfC4gmoE rfGEtG7akYqfzIibthoteodmoT0S2hY= X-MC-Unique: hDH96O2qNyyexJstnGpFKg-1 X-Mimecast-MFC-AGG-ID: hDH96O2qNyyexJstnGpFKg_1766829043 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829041; x=1767433841; 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; bh=zGKQcTYH8NslXOFyWO8VlfRFFvEFNB+uFId5LqaXI7k=; b=L7PVAuCE6/4sgH83knuHX6YM1yt9Av9KY09AH9iLgsMklDv5F9ykMH3zRRHeh3A+cB ZybZKdR8+q/nbULBY8QJLQWHnGTJYU44nlC1b1q9IcT82Pq0YRE6Zqo60EqW03pEbUH2 MJ9k1yXqO/eEvg0lQ4Te8GimHabJXuWXJbSXMXw/DMGfnLfZ3uXyZaCqutfPHy716SAc nEwo8e4mz2NAI3kF44o08CCOGc4yQdT+tSQd/fqHuU/Kw7vC1lbO0K138yBPJXb6LDZg Iajd6EKgZtv0sJPDnDDZxyAGPhZ5lxbOGroFzhAFHMChdJzxm6qTkJ6FJroFiFT+n28R PWPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829041; x=1767433841; 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; bh=zGKQcTYH8NslXOFyWO8VlfRFFvEFNB+uFId5LqaXI7k=; b=LDCuIHkJO4oZ5Gpxm1vVxlVYz5PUjqntYTgJ6xlOQkUvykK7YG8qIDwJ6dcQuZNqH7 kXKsBw4OxM0bMO1URLwDSQXHJ7XdXIm6elsQoqsM5sHYLWxKOSK/vh2ans3m1sAA90MR Zv99coj2zKQKVd5JNDN8Ouxc9r09PtGnv2gGpVUQlG9JhofoiOLFUwFbTxYWKFBTZkR+ DrzgeJ8W33vKtFU/i2HrWk1NsqN3xEj0VrZ4h9cprV2my224SSTJuLHvTp6rufI6mKeZ Vg8fs1gw88TviqHZWXP4X+sIuFJD5WumiOJ1JFwdQcdHoVS0Wi3agHYf+/S541RKiHr7 6UzQ== X-Gm-Message-State: AOJu0YxggdSfuXNyGdaKawYJaL/9wn3hlS3pVGB8JAhJGKtr3yHTCmeC Vn0IID0TqK1i2pM+QGTrBUvW+LHOVIr1IXJfVFc8T2LXtnaDsmiX64pB7z4kX/Quczo9BWXOlAJ t0MTmwE0H+WTBeN+c1gPWSc659D/4stVv+6+vQmuGz7865z9ORYJdsu6vV53x+7vYD2oiLlPjgB MP+WtZAScwtz+pDRJM2VT1ACfs7A2qaKBJpt9+eoPK X-Gm-Gg: AY/fxX5KLWWoSmw89SeALXgEHJbA9ybgIWh8y2lo7bYPqXmL+iPENhYFhPg/hAGByGK DKbNYzNlb5RcG83wvz+vFJXPa5Fdq5YvSndoBkU4gr73RoJL5uKkrxoduVQLxdEwlNBEtuO52jK dDniOLwqlnFBV6upYUrT48CqffmYoyCIFVnxNO1j20as1972zRmm9ZMcoyz0mM9q1YsBmao49cY 4Kq9r/Avf/7G0HoxRZorspXoTIs5uug/3+GZ4kKS1J/beYM+PCpvEsU1er8bF6yeXO7s8SAOHFK /S67Nh43TwWSEJoALaZQm+5cP4IZ6+gzMeda/gFw/pGaij7dimmDpg56j2NY6SgG5RySvQt4pc/ /SD+SNSwO6jjjmkMkcPfTfit+ZfrsJzpBW93YdBQYzJ87CFECUmbLol5kkH8CI2x6WfUnO6Xu01 KGFOY1WOg2vOgYlNE= X-Received: by 2002:a05:6000:402b:b0:430:f6c0:6c5e with SMTP id ffacd0b85a97d-4324e4d013cmr26755165f8f.28.1766829041324; Sat, 27 Dec 2025 01:50:41 -0800 (PST) X-Google-Smtp-Source: AGHT+IGlG9oVmfpeGCQmN23pt/pr4g7uDeJNmyQmcCnH+Yw+SOyTFiWrgMhzvt3zQv3Nj47CRhxLlQ== X-Received: by 2002:a05:6000:402b:b0:430:f6c0:6c5e with SMTP id ffacd0b85a97d-4324e4d013cmr26755144f8f.28.1766829040764; Sat, 27 Dec 2025 01:50:40 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 130/153] target/i386/tcg: add a CCOp for SBB x,x Date: Sat, 27 Dec 2025 10:47:35 +0100 Message-ID: <20251227094759.35658-56-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829072983158500 Content-Type: text/plain; charset="utf-8" This is more efficient both when generating code and when testing flags. Signed-off-by: Paolo Bonzini --- target/i386/cpu.h | 13 ++++++++++++- target/i386/cpu-dump.c | 2 ++ target/i386/tcg/cc_helper.c | 6 ++++++ target/i386/tcg/translate.c | 13 +++++++++++++ target/i386/tcg/emit.c.inc | 33 ++++++--------------------------- 5 files changed, 39 insertions(+), 28 deletions(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index fc634883649..697dde375c6 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -1565,7 +1565,18 @@ typedef enum { CC_OP_POPCNTL__, CC_OP_POPCNTQ__, CC_OP_POPCNT =3D sizeof(target_ulong) =3D=3D 8 ? CC_OP_POPCNTQ__ : CC_= OP_POPCNTL__, -#define CC_OP_LAST_BWLQ CC_OP_POPCNTQ__ + + /* + * Note that only CC_OP_SBB_SELF (i.e. the one with MO_TL size) + * is used or implemented, because the translator sign-extends + * the -1 or 0 value that is written in CC_DST. + */ + CC_OP_SBB_SELFB__, /* S/Z/C/A via CC_DST, O clear, P set. */ + CC_OP_SBB_SELFW__, + CC_OP_SBB_SELFL__, + CC_OP_SBB_SELFQ__, + CC_OP_SBB_SELF =3D sizeof(target_ulong) =3D=3D 8 ? CC_OP_SBB_SELFQ__ := CC_OP_SBB_SELFL__, +#define CC_OP_LAST_BWLQ CC_OP_SBB_SELFQ__ =20 CC_OP_DYNAMIC, /* must use dynamic code to get cc_op */ } CCOp; diff --git a/target/i386/cpu-dump.c b/target/i386/cpu-dump.c index ed8fd363c6b..9e290c0b9b4 100644 --- a/target/i386/cpu-dump.c +++ b/target/i386/cpu-dump.c @@ -91,6 +91,8 @@ static const char * const cc_op_str[] =3D { [CC_OP_BMILGQ] =3D "BMILGQ", =20 [CC_OP_POPCNT] =3D "POPCNT", + + [CC_OP_SBB_SELF] =3D "SBBx,x", }; =20 static void diff --git a/target/i386/tcg/cc_helper.c b/target/i386/tcg/cc_helper.c index f1940b40927..1e022da7b02 100644 --- a/target/i386/tcg/cc_helper.c +++ b/target/i386/tcg/cc_helper.c @@ -84,6 +84,9 @@ target_ulong helper_cc_compute_all(target_ulong dst, targ= et_ulong src1, return src1; case CC_OP_POPCNT: return dst ? 0 : CC_Z; + case CC_OP_SBB_SELF: + /* dst is either all zeros (--Z-P-) or all ones (-S-APC) */ + return (dst & (CC_Z|CC_A|CC_C|CC_S)) ^ (CC_P | CC_Z); =20 case CC_OP_MULB: return compute_all_mulb(dst, src1); @@ -246,6 +249,9 @@ target_ulong helper_cc_compute_c(target_ulong dst, targ= et_ulong src1, case CC_OP_MULQ: return src1 !=3D 0; =20 + case CC_OP_SBB_SELF: + return dst & 1; + case CC_OP_ADCX: case CC_OP_ADCOX: return dst; diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index d3e5e4d8edb..5aa38a912bd 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -304,6 +304,7 @@ static const uint8_t cc_op_live_[] =3D { [CC_OP_ADOX] =3D USES_CC_SRC | USES_CC_SRC2, [CC_OP_ADCOX] =3D USES_CC_DST | USES_CC_SRC | USES_CC_SRC2, [CC_OP_POPCNT] =3D USES_CC_DST, + [CC_OP_SBB_SELF] =3D USES_CC_DST, }; =20 static uint8_t cc_op_live(CCOp op) @@ -938,6 +939,9 @@ static CCPrepare gen_prepare_eflags_c(DisasContext *s, = TCGv reg) size =3D cc_op_size(s->cc_op); return gen_prepare_val_nz(cpu_cc_src, size, false); =20 + case CC_OP_SBB_SELF: + return (CCPrepare) { .cond =3D TCG_COND_NE, .reg =3D cpu_cc_dst }; + case CC_OP_ADCX: case CC_OP_ADCOX: return (CCPrepare) { .cond =3D TCG_COND_NE, .reg =3D cpu_cc_dst, @@ -999,6 +1003,7 @@ static CCPrepare gen_prepare_eflags_o(DisasContext *s,= TCGv reg) case CC_OP_ADCOX: return (CCPrepare) { .cond =3D TCG_COND_NE, .reg =3D cpu_cc_src2, .no_setcond =3D true }; + case CC_OP_SBB_SELF: case CC_OP_LOGICB ... CC_OP_LOGICQ: case CC_OP_POPCNT: return (CCPrepare) { .cond =3D TCG_COND_NEVER }; @@ -1078,6 +1083,14 @@ static CCPrepare gen_prepare_cc(DisasContext *s, int= b, TCGv reg) } break; =20 + case CC_OP_SBB_SELF: + /* checking for nonzero is usually the most efficient */ + if (jcc_op =3D=3D JCC_L || jcc_op =3D=3D JCC_B || jcc_op =3D=3D JC= C_S) { + jcc_op =3D JCC_Z; + inv =3D !inv; + } + goto slow_jcc; + case CC_OP_LOGICB ... CC_OP_LOGICQ: /* Mostly used for test+jump */ size =3D s->cc_op - CC_OP_LOGICB; diff --git a/target/i386/tcg/emit.c.inc b/target/i386/tcg/emit.c.inc index 8dac4d09da1..0fde3d669d9 100644 --- a/target/i386/tcg/emit.c.inc +++ b/target/i386/tcg/emit.c.inc @@ -3876,37 +3876,16 @@ static void gen_SBB(DisasContext *s, X86DecodedInsn= *decode) return; } =20 - c_in =3D tcg_temp_new(); - gen_compute_eflags_c(s, c_in); - - /* - * Here the change is as follows: - * CC_SBB: src1 =3D T0, src2 =3D T0, src3 =3D c_in - * CC_SUB: src1 =3D 0, src2 =3D c_in (no src3) - * - * The difference also does not matter: - * - AF is bit 4 of dst^src1^src2, but bit 4 of src1^src2 is zero in b= oth cases - * therefore AF comes straight from dst (in fact it is c_in) - * - for OF, src1 and src2 have the same sign in both cases, meaning t= here - * can be no overflow - */ + /* SBB x,x has its own CCOp so that's even easier. */ if (decode->e.op2 !=3D X86_TYPE_I && !decode->op[0].has_ea && decode->= op[0].n =3D=3D decode->op[2].n) { - if (s->cc_op =3D=3D CC_OP_DYNAMIC) { - tcg_gen_neg_tl(s->T0, c_in); - } else { - /* - * Do not negate c_in because it will often be dead and only t= he - * instruction generated by negsetcond will survive. - */ - gen_neg_setcc(s, JCC_B << 1, s->T0); - } - tcg_gen_movi_tl(s->cc_srcT, 0); - decode->cc_src =3D c_in; - decode->cc_dst =3D s->T0; - decode->cc_op =3D CC_OP_SUBB + ot; + gen_neg_setcc(s, JCC_B << 1, s->T0); + prepare_update1_cc(decode, s, CC_OP_SBB_SELF); return; } =20 + c_in =3D tcg_temp_new(); + gen_compute_eflags_c(s, c_in); + if (s->prefix & PREFIX_LOCK) { tcg_gen_add_tl(s->T0, s->T1, c_in); tcg_gen_neg_tl(s->T0, s->T0); --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829290; cv=none; d=zohomail.com; s=zohoarc; b=d6NRkNrqBywwbNEmXyUH8o6NWv4J77TsUnyc0r+d/u79A5ORjEcuu8ocYNOFfifGfpPZxAbjE6upSxXUv9Tl+Q15sKfXNE0U0mlEHQQFQxNHqdDF9km9DxGI2D1ZOv0wQ+t8MatJ2/dkBSJ9XCRUfsnwNbEyGN9sGmb3OuleuGo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829290; 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=1FZx9Nl+YQr8c0N/oMECmr2x670zCf+DgIR5LLmJeBo=; b=VWNvGcsbhn9VbW7b3aH6O1RXGoPPxulg9EfsRUKwrF7e0+kDE3RiQHgQs8WWg/lCO6HBBiyXS0Izjrc4RsyP10p61ai7iCozlbhV0WbBRL55U6YPpV5XlxafcQgte0LHH6ALNbhGzRi+EleNJS8QyaFA4FnjZUsSZ1Ns/U8BhPQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829290034219.62615371171898; Sat, 27 Dec 2025 01:54:50 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQx4-0002AX-6J; Sat, 27 Dec 2025 04:51:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQwp-0001gi-0d for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:56 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQwk-0007Oc-5q for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:54 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-91-4nDGAa1kNKWZmMbPpVIVeA-1; Sat, 27 Dec 2025 04:50:47 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-477cf25ceccso85673095e9.0 for ; Sat, 27 Dec 2025 01:50:47 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa46c0sm50554055f8f.34.2025.12.27.01.50.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:50:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829049; 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=1FZx9Nl+YQr8c0N/oMECmr2x670zCf+DgIR5LLmJeBo=; b=E27DAvsxPmgOtryAfqfcB6jRBuXX74yzxXd4MIk72RZqBTRSBKbFHF0+8eVRTLPC5fIXyK EXNHf+ROogxsB4H+JRBGIwM/wSNuoc1RjuIBHZMoitOpbjiqyGAxAD15RA7UVzAt9fCzPV 5MaKdJcwfhSfiHe9hVHHBWIXbbhpsRc= X-MC-Unique: 4nDGAa1kNKWZmMbPpVIVeA-1 X-Mimecast-MFC-AGG-ID: 4nDGAa1kNKWZmMbPpVIVeA_1766829047 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829046; x=1767433846; 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; bh=1FZx9Nl+YQr8c0N/oMECmr2x670zCf+DgIR5LLmJeBo=; b=XL1vKoP9RdqklXAY9FI2JcfTD7akEKoEmY1xNDmloo2o3CTvE0785SuBBoVUpu4bsF aw/yr9wVcDtoKZuHSYq4LA+jJjZ7tny7BM8rD2cd0sEkXaJCAPbGQRjsL/vMymV1Id1f YDz+9EdwwJus2pf7UoMmRplNCZuVSHaXt7c6E/0UJ7JzCkQ8y6fXleG56+plIGct/DFm /GwVQD5pgt5VLjFM80gXW31PjHTerBQ9fnHeBpbFVNgK7UHqUWjQs+DDkANL5l/cYqBT EqdLagFvuYRN5zfWBwb/1wpSpGjqmYD2XnVYCHDDsmwbeKdMAagClDqo6eqHWr7Vl7ps eHHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829046; x=1767433846; 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; bh=1FZx9Nl+YQr8c0N/oMECmr2x670zCf+DgIR5LLmJeBo=; b=Vmg6E5O6JIS2oS0dbWMVJtFaeVNW96dWAFD4T+vnagfPqtJE86TLFzhn/WVM+sZII0 inX1+YiL9pCR5IlmPPVWYsRgokErG95f6AmljAvA1zhPFiIXzPWfMxAqHir9TLTWLp+F 1wdzKvLZ4pZQmyvqjQWRFyD4ZI7ZaXCXoAltHgHCmyPGnn/FWAuQi3aIjtiwJkRfsekv ZtjAojqVEd2ZiwZ2C+BxFq5b9eRhUGlX6zpKA8zoThStd08xdYSHfYOMNqUb3hpmPxhs lmOZ7jwKtbx9hJmoXbHvI61984+63z/o86LKPTRUYXKPMlTMccbpGvjbFPLh9C6Rz+P2 b3kg== X-Gm-Message-State: AOJu0YxSYa1/So48gU8BbgZjKIhScPojzJlg4BpSqiYmQzDcBgHDtOlR PQrrAAuYMVaYnFLpc5YxEUSqTMKy9VGR4g1RjeQ5vT/P1Burcshucu4vtOwXkldOVxBZUpfBL6l Drg+MDhGH/WqZ653xNA/DNrD3kyy4TIMiZlXGHzlLOvc7JU5f0Ylku1UjoeBawHKdEEdZs4i3SM MgEAQCGqijf5v0bxMnd7IB75AS/VRSRlvH2tLch/NM X-Gm-Gg: AY/fxX5stw/8SH/mu7DeScfkbtOTf1xyTtlGnpp7yc5CEku0Vgd37TXiyQXQXU9O0hh eznvX6iwICuY1mZG0qCZeBZBViQx5Tjs3LUhi6Pr36HrjJEnmfMwUkN+EX2KTwYy+EKAmNNbNLz WIZAX8W3XyCZSZip2Lca2bMa/EmGLD77E248XLQA6M1bGyuSvCD8cSgpzcathWZZsafckzp3rft EsySFXUtmY+81l1FwNSvqJnGE47tLwjAaULsWREOMg3q/Eg+py0Pf9jP7Eg4MH+1jjjNUcQivFZ 0FzUqYxOdbZAbnxoCDOcIfrcMthVU3PSHUo/+1jWoHFCMX/c2XeGze1VcBGpDvP0wGPYOjyujgV BZ0Y4Z8XZrgJLlswn5BdNV4xggTK8uRuhO0i2PzMWAP+UcxtyN274B9iYY8TgUrLVp7ltr88aKz Z6VTRudBR7mYuzSW8= X-Received: by 2002:a05:600c:64cd:b0:477:fcb:2256 with SMTP id 5b1f17b1804b1-47d19595042mr273373255e9.17.1766829045620; Sat, 27 Dec 2025 01:50:45 -0800 (PST) X-Google-Smtp-Source: AGHT+IE37jNDLGJMJp1r4dZYmRiQJ6SFHG7/88VE+jAs4zbxHc9XxjIsS3PZjGTWI0hR2d0XbA+k7w== X-Received: by 2002:a05:600c:64cd:b0:477:fcb:2256 with SMTP id 5b1f17b1804b1-47d19595042mr273372965e9.17.1766829045089; Sat, 27 Dec 2025 01:50:45 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 131/153] target/i386/tcg: move fetch code out of translate.c Date: Sat, 27 Dec 2025 10:47:36 +0100 Message-ID: <20251227094759.35658-57-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829291673158500 Content-Type: text/plain; charset="utf-8" Let translate.c only concern itself with TCG code generation. Move everyth= ing that uses CPUX86State*, as well as gen_lea_modrm_0 now that it is only used to fill decode->mem, to decode-new.c.inc. While at it also rename gen_lea_modrm_0. Signed-off-by: Paolo Bonzini --- target/i386/tcg/translate.c | 271 ------------------------------ target/i386/tcg/decode-new.c.inc | 277 ++++++++++++++++++++++++++++++- 2 files changed, 274 insertions(+), 274 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 5aa38a912bd..7c444d5006d 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -1644,182 +1644,6 @@ static TCGv gen_shiftd_rm_T1(DisasContext *s, MemOp= ot, return cc_src; } =20 -#define X86_MAX_INSN_LENGTH 15 - -static uint64_t advance_pc(CPUX86State *env, DisasContext *s, int num_byte= s) -{ - uint64_t pc =3D s->pc; - - /* This is a subsequent insn that crosses a page boundary. */ - if (s->base.num_insns > 1 && - !translator_is_same_page(&s->base, s->pc + num_bytes - 1)) { - siglongjmp(s->jmpbuf, 2); - } - - s->pc +=3D num_bytes; - if (unlikely(cur_insn_len(s) > X86_MAX_INSN_LENGTH)) { - /* If the instruction's 16th byte is on a different page than the = 1st, a - * page fault on the second page wins over the general protection = fault - * caused by the instruction being too long. - * This can happen even if the operand is only one byte long! - */ - if (((s->pc - 1) ^ (pc - 1)) & TARGET_PAGE_MASK) { - (void)translator_ldub(env, &s->base, - (s->pc - 1) & TARGET_PAGE_MASK); - } - siglongjmp(s->jmpbuf, 1); - } - - return pc; -} - -static inline uint8_t x86_ldub_code(CPUX86State *env, DisasContext *s) -{ - return translator_ldub(env, &s->base, advance_pc(env, s, 1)); -} - -static inline uint16_t x86_lduw_code(CPUX86State *env, DisasContext *s) -{ - return translator_lduw(env, &s->base, advance_pc(env, s, 2)); -} - -static inline uint32_t x86_ldl_code(CPUX86State *env, DisasContext *s) -{ - return translator_ldl(env, &s->base, advance_pc(env, s, 4)); -} - -#ifdef TARGET_X86_64 -static inline uint64_t x86_ldq_code(CPUX86State *env, DisasContext *s) -{ - return translator_ldq(env, &s->base, advance_pc(env, s, 8)); -} -#endif - -/* Decompose an address. */ - -static AddressParts gen_lea_modrm_0(CPUX86State *env, DisasContext *s, - int modrm, bool is_vsib) -{ - int def_seg, base, index, scale, mod, rm; - target_long disp; - bool havesib; - - def_seg =3D R_DS; - index =3D -1; - scale =3D 0; - disp =3D 0; - - mod =3D (modrm >> 6) & 3; - rm =3D modrm & 7; - base =3D rm | REX_B(s); - - if (mod =3D=3D 3) { - /* Normally filtered out earlier, but including this path - simplifies multi-byte nop, as well as bndcl, bndcu, bndcn. */ - goto done; - } - - switch (s->aflag) { - case MO_64: - case MO_32: - havesib =3D 0; - if (rm =3D=3D 4) { - int code =3D x86_ldub_code(env, s); - scale =3D (code >> 6) & 3; - index =3D ((code >> 3) & 7) | REX_X(s); - if (index =3D=3D 4 && !is_vsib) { - index =3D -1; /* no index */ - } - base =3D (code & 7) | REX_B(s); - havesib =3D 1; - } - - switch (mod) { - case 0: - if ((base & 7) =3D=3D 5) { - base =3D -1; - disp =3D (int32_t)x86_ldl_code(env, s); - if (CODE64(s) && !havesib) { - base =3D -2; - disp +=3D s->pc + s->rip_offset; - } - } - break; - case 1: - disp =3D (int8_t)x86_ldub_code(env, s); - break; - default: - case 2: - disp =3D (int32_t)x86_ldl_code(env, s); - break; - } - - /* For correct popl handling with esp. */ - if (base =3D=3D R_ESP && s->popl_esp_hack) { - disp +=3D s->popl_esp_hack; - } - if (base =3D=3D R_EBP || base =3D=3D R_ESP) { - def_seg =3D R_SS; - } - break; - - case MO_16: - if (mod =3D=3D 0) { - if (rm =3D=3D 6) { - base =3D -1; - disp =3D x86_lduw_code(env, s); - break; - } - } else if (mod =3D=3D 1) { - disp =3D (int8_t)x86_ldub_code(env, s); - } else { - disp =3D (int16_t)x86_lduw_code(env, s); - } - - switch (rm) { - case 0: - base =3D R_EBX; - index =3D R_ESI; - break; - case 1: - base =3D R_EBX; - index =3D R_EDI; - break; - case 2: - base =3D R_EBP; - index =3D R_ESI; - def_seg =3D R_SS; - break; - case 3: - base =3D R_EBP; - index =3D R_EDI; - def_seg =3D R_SS; - break; - case 4: - base =3D R_ESI; - break; - case 5: - base =3D R_EDI; - break; - case 6: - base =3D R_EBP; - def_seg =3D R_SS; - break; - default: - case 7: - base =3D R_EBX; - break; - } - break; - - default: - g_assert_not_reached(); - } - - done: - return (AddressParts){ def_seg, base, index, scale, disp }; -} - /* Compute the address, with a minimum number of TCG ops. */ static TCGv gen_lea_modrm_1(DisasContext *s, AddressParts a, bool is_vsib) { @@ -1904,79 +1728,6 @@ static void gen_st_modrm(DisasContext *s, X86Decoded= Insn *decode, MemOp ot) } } =20 -static target_ulong insn_get_addr(CPUX86State *env, DisasContext *s, MemOp= ot) -{ - target_ulong ret; - - switch (ot) { - case MO_8: - ret =3D x86_ldub_code(env, s); - break; - case MO_16: - ret =3D x86_lduw_code(env, s); - break; - case MO_32: - ret =3D x86_ldl_code(env, s); - break; -#ifdef TARGET_X86_64 - case MO_64: - ret =3D x86_ldq_code(env, s); - break; -#endif - default: - g_assert_not_reached(); - } - return ret; -} - -static inline uint32_t insn_get(CPUX86State *env, DisasContext *s, MemOp o= t) -{ - uint32_t ret; - - switch (ot) { - case MO_8: - ret =3D x86_ldub_code(env, s); - break; - case MO_16: - ret =3D x86_lduw_code(env, s); - break; - case MO_32: -#ifdef TARGET_X86_64 - case MO_64: -#endif - ret =3D x86_ldl_code(env, s); - break; - default: - g_assert_not_reached(); - } - return ret; -} - -static target_long insn_get_signed(CPUX86State *env, DisasContext *s, MemO= p ot) -{ - target_long ret; - - switch (ot) { - case MO_8: - ret =3D (int8_t) x86_ldub_code(env, s); - break; - case MO_16: - ret =3D (int16_t) x86_lduw_code(env, s); - break; - case MO_32: - ret =3D (int32_t) x86_ldl_code(env, s); - break; -#ifdef TARGET_X86_64 - case MO_64: - ret =3D x86_ldq_code(env, s); - break; -#endif - default: - g_assert_not_reached(); - } - return ret; -} - static void gen_conditional_jump_labels(DisasContext *s, target_long diff, TCGLabel *not_taken, TCGLabel *tak= en) { @@ -2221,28 +1972,6 @@ static void gen_leave(DisasContext *s) gen_op_mov_reg_v(s, a_ot, R_ESP, s->T1); } =20 -/* Similarly, except that the assumption here is that we don't decode - the instruction at all -- either a missing opcode, an unimplemented - feature, or just a bogus instruction stream. */ -static void gen_unknown_opcode(CPUX86State *env, DisasContext *s) -{ - gen_illegal_opcode(s); - - if (qemu_loglevel_mask(LOG_UNIMP)) { - FILE *logfile =3D qemu_log_trylock(); - if (logfile) { - target_ulong pc =3D s->base.pc_next, end =3D s->pc; - - fprintf(logfile, "ILLOPC: " TARGET_FMT_lx ":", pc); - for (; pc < end; ++pc) { - fprintf(logfile, " %02x", translator_ldub(env, &s->base, p= c)); - } - fprintf(logfile, "\n"); - qemu_log_unlock(logfile); - } - } -} - /* an interrupt is different from an exception because of the privilege checks */ static void gen_interrupt(DisasContext *s, uint8_t intno) diff --git a/target/i386/tcg/decode-new.c.inc b/target/i386/tcg/decode-new.= c.inc index e7ffd3a9848..9d3a7c0d426 100644 --- a/target/i386/tcg/decode-new.c.inc +++ b/target/i386/tcg/decode-new.c.inc @@ -279,6 +279,130 @@ =20 #define UNKNOWN_OPCODE ((X86OpEntry) {}) =20 +#define X86_MAX_INSN_LENGTH 15 + +static uint64_t advance_pc(CPUX86State *env, DisasContext *s, int num_byte= s) +{ + uint64_t pc =3D s->pc; + + /* This is a subsequent insn that crosses a page boundary. */ + if (s->base.num_insns > 1 && + !translator_is_same_page(&s->base, s->pc + num_bytes - 1)) { + siglongjmp(s->jmpbuf, 2); + } + + s->pc +=3D num_bytes; + if (unlikely(cur_insn_len(s) > X86_MAX_INSN_LENGTH)) { + /* If the instruction's 16th byte is on a different page than the = 1st, a + * page fault on the second page wins over the general protection = fault + * caused by the instruction being too long. + * This can happen even if the operand is only one byte long! + */ + if (((s->pc - 1) ^ (pc - 1)) & TARGET_PAGE_MASK) { + (void)translator_ldub(env, &s->base, + (s->pc - 1) & TARGET_PAGE_MASK); + } + siglongjmp(s->jmpbuf, 1); + } + + return pc; +} + +static inline uint8_t x86_ldub_code(CPUX86State *env, DisasContext *s) +{ + return translator_ldub(env, &s->base, advance_pc(env, s, 1)); +} + +static inline uint16_t x86_lduw_code(CPUX86State *env, DisasContext *s) +{ + return translator_lduw(env, &s->base, advance_pc(env, s, 2)); +} + +static inline uint32_t x86_ldl_code(CPUX86State *env, DisasContext *s) +{ + return translator_ldl(env, &s->base, advance_pc(env, s, 4)); +} + +#ifdef TARGET_X86_64 +static inline uint64_t x86_ldq_code(CPUX86State *env, DisasContext *s) +{ + return translator_ldq(env, &s->base, advance_pc(env, s, 8)); +} +#endif + +static target_ulong insn_get_addr(CPUX86State *env, DisasContext *s, MemOp= ot) +{ + target_ulong ret; + + switch (ot) { + case MO_8: + ret =3D x86_ldub_code(env, s); + break; + case MO_16: + ret =3D x86_lduw_code(env, s); + break; + case MO_32: + ret =3D x86_ldl_code(env, s); + break; +#ifdef TARGET_X86_64 + case MO_64: + ret =3D x86_ldq_code(env, s); + break; +#endif + default: + g_assert_not_reached(); + } + return ret; +} + +static inline uint32_t insn_get(CPUX86State *env, DisasContext *s, MemOp o= t) +{ + uint32_t ret; + + switch (ot) { + case MO_8: + ret =3D x86_ldub_code(env, s); + break; + case MO_16: + ret =3D x86_lduw_code(env, s); + break; + case MO_32: +#ifdef TARGET_X86_64 + case MO_64: +#endif + ret =3D x86_ldl_code(env, s); + break; + default: + g_assert_not_reached(); + } + return ret; +} + +static target_long insn_get_signed(CPUX86State *env, DisasContext *s, MemO= p ot) +{ + target_long ret; + + switch (ot) { + case MO_8: + ret =3D (int8_t) x86_ldub_code(env, s); + break; + case MO_16: + ret =3D (int16_t) x86_lduw_code(env, s); + break; + case MO_32: + ret =3D (int32_t) x86_ldl_code(env, s); + break; +#ifdef TARGET_X86_64 + case MO_64: + ret =3D x86_ldq_code(env, s); + break; +#endif + default: + g_assert_not_reached(); + } + return ret; +} + static uint8_t get_modrm(DisasContext *s, CPUX86State *env) { if (!s->has_modrm) { @@ -1883,6 +2007,130 @@ static void decode_root(DisasContext *s, CPUX86Stat= e *env, X86OpEntry *entry, ui *entry =3D opcodes_root[*b]; } =20 +/* Decompose an address. */ +static AddressParts decode_modrm_address(CPUX86State *env, DisasContext *s, + int modrm, bool is_vsib) +{ + int def_seg, base, index, scale, mod, rm; + target_long disp; + bool havesib; + + def_seg =3D R_DS; + index =3D -1; + scale =3D 0; + disp =3D 0; + + mod =3D (modrm >> 6) & 3; + rm =3D modrm & 7; + base =3D rm | REX_B(s); + + if (mod =3D=3D 3) { + /* Normally filtered out earlier, but including this path + simplifies multi-byte nop, as well as bndcl, bndcu, bndcn. */ + goto done; + } + + switch (s->aflag) { + case MO_64: + case MO_32: + havesib =3D 0; + if (rm =3D=3D 4) { + int code =3D x86_ldub_code(env, s); + scale =3D (code >> 6) & 3; + index =3D ((code >> 3) & 7) | REX_X(s); + if (index =3D=3D 4 && !is_vsib) { + index =3D -1; /* no index */ + } + base =3D (code & 7) | REX_B(s); + havesib =3D 1; + } + + switch (mod) { + case 0: + if ((base & 7) =3D=3D 5) { + base =3D -1; + disp =3D (int32_t)x86_ldl_code(env, s); + if (CODE64(s) && !havesib) { + base =3D -2; + disp +=3D s->pc + s->rip_offset; + } + } + break; + case 1: + disp =3D (int8_t)x86_ldub_code(env, s); + break; + default: + case 2: + disp =3D (int32_t)x86_ldl_code(env, s); + break; + } + + /* For correct popl handling with esp. */ + if (base =3D=3D R_ESP && s->popl_esp_hack) { + disp +=3D s->popl_esp_hack; + } + if (base =3D=3D R_EBP || base =3D=3D R_ESP) { + def_seg =3D R_SS; + } + break; + + case MO_16: + if (mod =3D=3D 0) { + if (rm =3D=3D 6) { + base =3D -1; + disp =3D x86_lduw_code(env, s); + break; + } + } else if (mod =3D=3D 1) { + disp =3D (int8_t)x86_ldub_code(env, s); + } else { + disp =3D (int16_t)x86_lduw_code(env, s); + } + + switch (rm) { + case 0: + base =3D R_EBX; + index =3D R_ESI; + break; + case 1: + base =3D R_EBX; + index =3D R_EDI; + break; + case 2: + base =3D R_EBP; + index =3D R_ESI; + def_seg =3D R_SS; + break; + case 3: + base =3D R_EBP; + index =3D R_EDI; + def_seg =3D R_SS; + break; + case 4: + base =3D R_ESI; + break; + case 5: + base =3D R_EDI; + break; + case 6: + base =3D R_EBP; + def_seg =3D R_SS; + break; + default: + case 7: + base =3D R_EBX; + break; + } + break; + + default: + g_assert_not_reached(); + } + + done: + return (AddressParts){ def_seg, base, index, scale, disp }; +} + static int decode_modrm(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode, X86DecodedOp *op) { @@ -1895,8 +2143,8 @@ static int decode_modrm(DisasContext *s, CPUX86State = *env, } else { op->has_ea =3D true; op->n =3D -1; - decode->mem =3D gen_lea_modrm_0(env, s, modrm, - decode->e.vex_class =3D=3D 12); + decode->mem =3D decode_modrm_address(env, s, get_modrm(s, env), + decode->e.vex_class =3D=3D 12); } return modrm; } @@ -2516,6 +2764,23 @@ illegal: return false; } =20 +static void dump_unknown_opcode(CPUX86State *env, DisasContext *s) +{ + if (qemu_loglevel_mask(LOG_UNIMP)) { + FILE *logfile =3D qemu_log_trylock(); + if (logfile) { + target_ulong pc =3D s->base.pc_next, end =3D s->pc; + + fprintf(logfile, "ILLOPC: " TARGET_FMT_lx ":", pc); + for (; pc < end; ++pc) { + fprintf(logfile, " %02x", translator_ldub(env, &s->base, p= c)); + } + fprintf(logfile, "\n"); + qemu_log_unlock(logfile); + } + } +} + /* * Convert one instruction. s->base.is_jmp is set if the translation must * be stopped. @@ -2903,5 +3168,11 @@ static void disas_insn(DisasContext *s, CPUState *cp= u) gen_illegal_opcode(s); return; unknown_op: - gen_unknown_opcode(env, s); + /* + * Similarly, except that the assumption here is that we don't decode + * the instruction at all -- either a missing opcode, an unimplemented + * feature, or just a bogus instruction stream. + */ + gen_illegal_opcode(s); + dump_unknown_opcode(env, s); } --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829337; cv=none; d=zohomail.com; s=zohoarc; b=VojkCk4kp7SbmPwl8OKnIVuE7fLCHEhJAsSz1mXvGw/XqhlbMzWJWItVPKpTVgAKVItdbL7d9vPkEGE0HPWamknVZMQiW/VR3L88UbIW5WCJaEtrATeu1r+fZUHoqYZKb/Wn864iESG0wLJpIcVpmgWrQl5o4Ll4K/oJxxWcpxw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829337; 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=FkqLYZdxMyiZBSvnV+ZNXRw0jq8CRpO1QE/2y5O+8is=; b=NuL0wHahFmpDENSdXgrYjnXOtkyskGYd0MAlJeDyTnw8NQ6ohtGOqvk9f+Iyi64eRs9xQWr7u4cyDVsJvC0bwA9PMy1EZtEh2MFLorkCdqLmx7tZRRy2ttxd7FXkRTsbW0CvUAXYFVgWzXDjftshdI15bti1i2hOsuOCNZmVRqU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829337604146.25428613455585; Sat, 27 Dec 2025 01:55:37 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQx6-0002V8-QX; Sat, 27 Dec 2025 04:51:12 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQws-0001jJ-Ka for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:59 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQwq-0007Pp-AG for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:58 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-584-gU_y4yWtPC-ukFCp_VbgfA-1; Sat, 27 Dec 2025 04:50:53 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-47d28e7960fso20651775e9.0 for ; Sat, 27 Dec 2025 01:50:53 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be2723b2bsm488404095e9.3.2025.12.27.01.50.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:50:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829055; 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=FkqLYZdxMyiZBSvnV+ZNXRw0jq8CRpO1QE/2y5O+8is=; b=AYTIqwqF8NC+L0Kjwb+X0zkcGCSZUqLM78gEty0GNcTIAX17UU1srUsPlLaPXrPErdZq4G wzLD1Rixigziihg9fnsJ4na7xVb/Xp6tr/EMk0jmN+0GmFA/GbR6KptBK8PJiG4Qob1iKS 9dBBm8TgEzlvLdldkMdHjq2QDsESnZ0= X-MC-Unique: gU_y4yWtPC-ukFCp_VbgfA-1 X-Mimecast-MFC-AGG-ID: gU_y4yWtPC-ukFCp_VbgfA_1766829051 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829050; x=1767433850; 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; bh=FkqLYZdxMyiZBSvnV+ZNXRw0jq8CRpO1QE/2y5O+8is=; b=FjQCQVQI7GeT8Q5hTA2ear2lrzlykRCTjvTFmug5KOgmR2SzvIHhi3FYVWcq+sFz9N lo7nn+PXvNgAiyJr8HUtuMign6rpCTAXguNOoGhxJBgW1yvqnxswrxR5opoMacgiAj3q 4fv3E5ABRDCFk9h2ehLB2mAKiJBQ9dIdHdYxuoN1MIquot5VsK5z8F/scoWKWEEudDq8 sRl2WfwMJ/dR85KbEikUwnmLo+4LJ3DlA33PAsMxMo2gvyNsjqnyu3xbOH7yoEjNk9Dw Zf7ru+/xsUczjOlevAl3v4OKoQbE/iKJjnW/AKlp29YHKFy6eDZtpvb7+EZ6D5bQ1rHT 4nrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829050; x=1767433850; 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; bh=FkqLYZdxMyiZBSvnV+ZNXRw0jq8CRpO1QE/2y5O+8is=; b=oFhw7iTdi/HNvvVxS1Q3+U32a3IXdU1X/II2cj08fKhLFo2z0lCoGKRlFWkTfM9uxd kMp+HeHG/fjNSqKq7JVKIXRQ4k1s06L28UcIwee8CVgvKg7t9KDIlMes9KoK6LUTSLmZ wnXJbtP+m/uJwUz35UT23mA9EYB9W+p1knND3T3dzj0ib8G7JKbCwamv1n4QL0JFknDW VMzVQaCu6sWRk8wa9zqEdGjw3BKrJeZ1DeeHAKQ5WtfYx1rfDVVdDas+I1/Rxp7QnooW mRwZRBUi6u21CFo3KR5/xTqFsrgmhlBlM0aMvr1ChhG2gEwF0jUcmmuW8sLxkr8sPvTN dDpA== X-Gm-Message-State: AOJu0YxwfZyvpKWq+mSCfGvabQB4/8rlURjLcqe5vqkHXiIh9yR7jHXB PBFGri2xmnRopJTaDwdJKSpXOkPaa7TRbHdJgTVLdD96Vi2sJhKe72pH4qvXDTHey5yxE/s3OvL w7I4K3G/lfIxupjZOBVeczkQ/MCUCPZK0y/Vbb3g5PwKUG4b9NBVqaJxTXEfxUBgbrmBCf/51bu DmNCOwHb2qMK0Yf3hfWemBGdRIJd5RFS2pFjbepssr X-Gm-Gg: AY/fxX5VR98RnbMmvH/UJoUOtegPnohzAl7w7uKApsBvyc5tP/DGGY4zWJcqlWB0ntG LLGFwU3YZ3lotUtDWRXzVBaXXTWwQznvnZnojIL+3vx3JlnJsUPwEXGOvWLhSU9tYiPBbI4v3Uh z+7uPjyw+hGqXkY9W3S4TPyAaRZnSIq4OMK2AuOE9PVsLLMkjzN382WzOomP5odumN1tmOEleX7 zxBJVDMcVSje2AMlVrhFf5V2RpV44gnZHV4BsS2uKregjju4yeuHqUdcI3sHjUHwd8JxEpn0Oxv r0HIcW6Jf+p35FmazOMe3w37olEuxRjWYEYR1qQpqD+8XFxwqA71+I9lciDoMovy7cGVXZv8BNy MZ74O0naJEhpCTwleHcMxLZyTG7KPfZnKEBioivh7drdx8TrArZnh8luzd9C5mHV9B16Oiu76pl kH6jTypbqUWZoYtew= X-Received: by 2002:a05:600c:4746:b0:479:33be:b23e with SMTP id 5b1f17b1804b1-47d34de4cacmr170020975e9.17.1766829049662; Sat, 27 Dec 2025 01:50:49 -0800 (PST) X-Google-Smtp-Source: AGHT+IELCb0xGzNbVfXWJqexvw2QCwDKO7ybwj6Pd3I3hI/mwdjt9MlLew6NSeSJBJtz2xHhePhjxg== X-Received: by 2002:a05:600c:4746:b0:479:33be:b23e with SMTP id 5b1f17b1804b1-47d34de4cacmr170020795e9.17.1766829049141; Sat, 27 Dec 2025 01:50:49 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 132/153] target/i386/tcg: commonize code to compute SF/ZF/PF Date: Sat, 27 Dec 2025 10:47:37 +0100 Message-ID: <20251227094759.35658-58-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829337939158500 Content-Type: text/plain; charset="utf-8" PF/ZF/SF are computed the same way for almost all CC_OP values (depending only on the operand size in the case of ZF and SF). The only exception is PF for CC_OP_BLSI* and CC_OP_BMILG*; but AMD documents that PF should be computed normally (rather than being undefined) so that is a kind of bug fix. Put the common code at the end of helper_cc_compute_all, shaving another kB from its text. Signed-off-by: Paolo Bonzini --- target/i386/cpu.h | 4 +- target/i386/tcg/cc_helper_template.h.inc | 112 +++------ target/i386/tcg/cc_helper.c | 274 +++++++++++++++-------- 3 files changed, 209 insertions(+), 181 deletions(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 697dde375c6..c0bf51448e2 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -1545,12 +1545,12 @@ typedef enum { CC_OP_SARL, CC_OP_SARQ, =20 - CC_OP_BMILGB, /* Z,S via CC_DST, C =3D SRC=3D=3D0; O=3D0; P,A undefine= d */ + CC_OP_BMILGB, /* P,Z,S via CC_DST, C =3D SRC=3D=3D0; A=3DO=3D0 */ CC_OP_BMILGW, CC_OP_BMILGL, CC_OP_BMILGQ, =20 - CC_OP_BLSIB, /* Z,S via CC_DST, C =3D SRC!=3D0; O=3D0; P,A undefined */ + CC_OP_BLSIB, /* P,Z,S via CC_DST, C =3D SRC!=3D0; A=3DO=3D0 */ CC_OP_BLSIW, CC_OP_BLSIL, CC_OP_BLSIQ, diff --git a/target/i386/tcg/cc_helper_template.h.inc b/target/i386/tcg/cc_= helper_template.h.inc index d8fd976ca15..af58c2409f7 100644 --- a/target/i386/tcg/cc_helper_template.h.inc +++ b/target/i386/tcg/cc_helper_template.h.inc @@ -1,5 +1,5 @@ /* - * x86 condition code helpers + * x86 condition code helpers for AF/CF/OF * * Copyright (c) 2008 Fabrice Bellard * @@ -44,14 +44,9 @@ =20 /* dynamic flags computation */ =20 -static uint32_t glue(compute_all_cout, SUFFIX)(DATA_TYPE dst, DATA_TYPE ca= rries) +static uint32_t glue(compute_aco_cout, SUFFIX)(DATA_TYPE carries) { - uint32_t af_cf, pf, zf, sf, of; - - /* PF, ZF, SF computed from result. */ - pf =3D compute_pf(dst); - zf =3D (dst =3D=3D 0) * CC_Z; - sf =3D lshift(dst, 8 - DATA_BITS) & CC_S; + uint32_t af_cf, of; =20 /* * AF, CF, OF computed from carry out vector. To compute AF and CF, r= otate it @@ -62,14 +57,14 @@ static uint32_t glue(compute_all_cout, SUFFIX)(DATA_TYP= E dst, DATA_TYPE carries) */ af_cf =3D ((carries << 1) | (carries >> (DATA_BITS - 1))) & (CC_A | CC= _C); of =3D (lshift(carries, 12 - DATA_BITS) + CC_O / 2) & CC_O; - return pf + zf + sf + af_cf + of; + return af_cf + of; } =20 -static uint32_t glue(compute_all_add, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 1) +static uint32_t glue(compute_aco_add, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 1) { DATA_TYPE src2 =3D dst - src1; DATA_TYPE carries =3D ADD_COUT_VEC(src1, src2, dst); - return glue(compute_all_cout, SUFFIX)(dst, carries); + return glue(compute_aco_cout, SUFFIX)(carries); } =20 static int glue(compute_c_add, SUFFIX)(DATA_TYPE dst, DATA_TYPE src1) @@ -77,12 +72,12 @@ static int glue(compute_c_add, SUFFIX)(DATA_TYPE dst, D= ATA_TYPE src1) return dst < src1; } =20 -static uint32_t glue(compute_all_adc, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 1, +static uint32_t glue(compute_aco_adc, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 1, DATA_TYPE src3) { DATA_TYPE src2 =3D dst - src1 - src3; DATA_TYPE carries =3D ADD_COUT_VEC(src1, src2, dst); - return glue(compute_all_cout, SUFFIX)(dst, carries); + return glue(compute_aco_cout, SUFFIX)(carries); } =20 static int glue(compute_c_adc, SUFFIX)(DATA_TYPE dst, DATA_TYPE src1, @@ -97,11 +92,11 @@ static int glue(compute_c_adc, SUFFIX)(DATA_TYPE dst, D= ATA_TYPE src1, #endif } =20 -static uint32_t glue(compute_all_sub, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 2) +static uint32_t glue(compute_aco_sub, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 2) { DATA_TYPE src1 =3D dst + src2; DATA_TYPE carries =3D SUB_COUT_VEC(src1, src2, dst); - return glue(compute_all_cout, SUFFIX)(dst, carries); + return glue(compute_aco_cout, SUFFIX)(carries); } =20 static int glue(compute_c_sub, SUFFIX)(DATA_TYPE dst, DATA_TYPE src2) @@ -111,12 +106,12 @@ static int glue(compute_c_sub, SUFFIX)(DATA_TYPE dst,= DATA_TYPE src2) return src1 < src2; } =20 -static uint32_t glue(compute_all_sbb, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 2, +static uint32_t glue(compute_aco_sbb, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 2, DATA_TYPE src3) { DATA_TYPE src1 =3D dst + src2 + src3; DATA_TYPE carries =3D SUB_COUT_VEC(src1, src2, dst); - return glue(compute_all_cout, SUFFIX)(dst, carries); + return glue(compute_aco_cout, SUFFIX)(carries); } =20 static int glue(compute_c_sbb, SUFFIX)(DATA_TYPE dst, DATA_TYPE src2, @@ -134,57 +129,35 @@ static int glue(compute_c_sbb, SUFFIX)(DATA_TYPE dst,= DATA_TYPE src2, #endif } =20 -static uint32_t glue(compute_all_logic, SUFFIX)(DATA_TYPE dst, DATA_TYPE s= rc1) +static uint32_t glue(compute_aco_inc, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 1) { - uint32_t cf, pf, af, zf, sf, of; - - cf =3D 0; - pf =3D compute_pf(dst); - af =3D 0; - zf =3D (dst =3D=3D 0) * CC_Z; - sf =3D lshift(dst, 8 - DATA_BITS) & CC_S; - of =3D 0; - return cf + pf + af + zf + sf + of; -} - -static uint32_t glue(compute_all_inc, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 1) -{ - uint32_t cf, pf, af, zf, sf, of; + uint32_t cf, af, of; =20 cf =3D src1; - pf =3D compute_pf(dst); af =3D (dst ^ (dst - 1)) & CC_A; /* bits 0..3 are all clear */ - zf =3D (dst =3D=3D 0) * CC_Z; - sf =3D lshift(dst, 8 - DATA_BITS) & CC_S; of =3D (dst =3D=3D SIGN_MASK) * CC_O; - return cf + pf + af + zf + sf + of; + return cf + af + of; } =20 -static uint32_t glue(compute_all_dec, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 1) +static uint32_t glue(compute_aco_dec, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 1) { - uint32_t cf, pf, af, zf, sf, of; + uint32_t cf, af, of; =20 cf =3D src1; - pf =3D compute_pf(dst); af =3D (dst ^ (dst + 1)) & CC_A; /* bits 0..3 are all set */ - zf =3D (dst =3D=3D 0) * CC_Z; - sf =3D lshift(dst, 8 - DATA_BITS) & CC_S; of =3D (dst =3D=3D SIGN_MASK - 1) * CC_O; - return cf + pf + af + zf + sf + of; + return cf + af + of; } =20 -static uint32_t glue(compute_all_shl, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 1) +static uint32_t glue(compute_aco_shl, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 1) { - uint32_t cf, pf, af, zf, sf, of; + uint32_t cf, af, of; =20 cf =3D (src1 >> (DATA_BITS - 1)) & CC_C; - pf =3D compute_pf(dst); af =3D 0; /* undefined */ - zf =3D (dst =3D=3D 0) * CC_Z; - sf =3D lshift(dst, 8 - DATA_BITS) & CC_S; /* of is defined iff shift count =3D=3D 1 */ of =3D lshift(src1 ^ dst, 12 - DATA_BITS) & CC_O; - return cf + pf + af + zf + sf + of; + return cf + af + of; } =20 static int glue(compute_c_shl, SUFFIX)(DATA_TYPE dst, DATA_TYPE src1) @@ -192,47 +165,25 @@ static int glue(compute_c_shl, SUFFIX)(DATA_TYPE dst,= DATA_TYPE src1) return (src1 >> (DATA_BITS - 1)) & CC_C; } =20 -static uint32_t glue(compute_all_sar, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 1) +static uint32_t glue(compute_aco_sar, SUFFIX)(DATA_TYPE dst, DATA_TYPE src= 1) { - uint32_t cf, pf, af, zf, sf, of; + uint32_t cf, af, of; =20 cf =3D src1 & 1; - pf =3D compute_pf(dst); af =3D 0; /* undefined */ - zf =3D (dst =3D=3D 0) * CC_Z; - sf =3D lshift(dst, 8 - DATA_BITS) & CC_S; /* of is defined iff shift count =3D=3D 1 */ of =3D lshift(src1 ^ dst, 12 - DATA_BITS) & CC_O; - return cf + pf + af + zf + sf + of; + return cf + af + of; } =20 -/* NOTE: we compute the flags like the P4. On olders CPUs, only OF and - CF are modified and it is slower to do that. Note as well that we - don't truncate SRC1 for computing carry to DATA_TYPE. */ -static uint32_t glue(compute_all_mul, SUFFIX)(DATA_TYPE dst, target_long s= rc1) +static uint32_t glue(compute_aco_bmilg, SUFFIX)(DATA_TYPE dst, DATA_TYPE s= rc1) { - uint32_t cf, pf, af, zf, sf, of; - - cf =3D (src1 !=3D 0); - pf =3D compute_pf(dst); - af =3D 0; /* undefined */ - zf =3D (dst =3D=3D 0) * CC_Z; - sf =3D lshift(dst, 8 - DATA_BITS) & CC_S; - of =3D cf * CC_O; - return cf + pf + af + zf + sf + of; -} - -static uint32_t glue(compute_all_bmilg, SUFFIX)(DATA_TYPE dst, DATA_TYPE s= rc1) -{ - uint32_t cf, pf, af, zf, sf, of; + uint32_t cf, af, of; =20 cf =3D (src1 =3D=3D 0); - pf =3D 0; /* undefined */ af =3D 0; /* undefined */ - zf =3D (dst =3D=3D 0) * CC_Z; - sf =3D lshift(dst, 8 - DATA_BITS) & CC_S; of =3D 0; - return cf + pf + af + zf + sf + of; + return cf + af + of; } =20 static int glue(compute_c_bmilg, SUFFIX)(DATA_TYPE dst, DATA_TYPE src1) @@ -240,17 +191,14 @@ static int glue(compute_c_bmilg, SUFFIX)(DATA_TYPE ds= t, DATA_TYPE src1) return src1 =3D=3D 0; } =20 -static int glue(compute_all_blsi, SUFFIX)(DATA_TYPE dst, DATA_TYPE src1) +static int glue(compute_aco_blsi, SUFFIX)(DATA_TYPE dst, DATA_TYPE src1) { - uint32_t cf, pf, af, zf, sf, of; + uint32_t cf, af, of; =20 cf =3D (src1 !=3D 0); - pf =3D 0; /* undefined */ af =3D 0; /* undefined */ - zf =3D (dst =3D=3D 0) * CC_Z; - sf =3D lshift(dst, 8 - DATA_BITS) & CC_S; of =3D 0; - return cf + pf + af + zf + sf + of; + return cf + af + of; } =20 static int glue(compute_c_blsi, SUFFIX)(DATA_TYPE dst, DATA_TYPE src1) diff --git a/target/i386/tcg/cc_helper.c b/target/i386/tcg/cc_helper.c index 1e022da7b02..91e492196af 100644 --- a/target/i386/tcg/cc_helper.c +++ b/target/i386/tcg/cc_helper.c @@ -73,9 +73,25 @@ target_ulong helper_cc_compute_nz(target_ulong dst, targ= et_ulong src1, } } =20 +/* NOTE: we compute the flags like the P4. On olders CPUs, only OF and + CF are modified and it is slower to do that. Note as well that we + don't truncate SRC1 for computing carry to DATA_TYPE. */ +static inline uint32_t compute_aco_mul(target_long src1) +{ + uint32_t cf, af, of; + + cf =3D (src1 !=3D 0); + af =3D 0; /* undefined */ + of =3D cf * CC_O; + return cf + af + of; +} + target_ulong helper_cc_compute_all(target_ulong dst, target_ulong src1, target_ulong src2, int op) { + uint32_t flags =3D 0; + int shift =3D 0; + switch (op) { default: /* should never happen */ return 0; @@ -88,90 +104,6 @@ target_ulong helper_cc_compute_all(target_ulong dst, ta= rget_ulong src1, /* dst is either all zeros (--Z-P-) or all ones (-S-APC) */ return (dst & (CC_Z|CC_A|CC_C|CC_S)) ^ (CC_P | CC_Z); =20 - case CC_OP_MULB: - return compute_all_mulb(dst, src1); - case CC_OP_MULW: - return compute_all_mulw(dst, src1); - case CC_OP_MULL: - return compute_all_mull(dst, src1); - - case CC_OP_ADDB: - return compute_all_addb(dst, src1); - case CC_OP_ADDW: - return compute_all_addw(dst, src1); - case CC_OP_ADDL: - return compute_all_addl(dst, src1); - - case CC_OP_ADCB: - return compute_all_adcb(dst, src1, src2); - case CC_OP_ADCW: - return compute_all_adcw(dst, src1, src2); - case CC_OP_ADCL: - return compute_all_adcl(dst, src1, src2); - - case CC_OP_SUBB: - return compute_all_subb(dst, src1); - case CC_OP_SUBW: - return compute_all_subw(dst, src1); - case CC_OP_SUBL: - return compute_all_subl(dst, src1); - - case CC_OP_SBBB: - return compute_all_sbbb(dst, src1, src2); - case CC_OP_SBBW: - return compute_all_sbbw(dst, src1, src2); - case CC_OP_SBBL: - return compute_all_sbbl(dst, src1, src2); - - case CC_OP_LOGICB: - return compute_all_logicb(dst, src1); - case CC_OP_LOGICW: - return compute_all_logicw(dst, src1); - case CC_OP_LOGICL: - return compute_all_logicl(dst, src1); - - case CC_OP_INCB: - return compute_all_incb(dst, src1); - case CC_OP_INCW: - return compute_all_incw(dst, src1); - case CC_OP_INCL: - return compute_all_incl(dst, src1); - - case CC_OP_DECB: - return compute_all_decb(dst, src1); - case CC_OP_DECW: - return compute_all_decw(dst, src1); - case CC_OP_DECL: - return compute_all_decl(dst, src1); - - case CC_OP_SHLB: - return compute_all_shlb(dst, src1); - case CC_OP_SHLW: - return compute_all_shlw(dst, src1); - case CC_OP_SHLL: - return compute_all_shll(dst, src1); - - case CC_OP_SARB: - return compute_all_sarb(dst, src1); - case CC_OP_SARW: - return compute_all_sarw(dst, src1); - case CC_OP_SARL: - return compute_all_sarl(dst, src1); - - case CC_OP_BMILGB: - return compute_all_bmilgb(dst, src1); - case CC_OP_BMILGW: - return compute_all_bmilgw(dst, src1); - case CC_OP_BMILGL: - return compute_all_bmilgl(dst, src1); - - case CC_OP_BLSIB: - return compute_all_blsib(dst, src1); - case CC_OP_BLSIW: - return compute_all_blsiw(dst, src1); - case CC_OP_BLSIL: - return compute_all_blsil(dst, src1); - case CC_OP_ADCX: return compute_all_adcx(dst, src1, src2); case CC_OP_ADOX: @@ -179,33 +111,181 @@ target_ulong helper_cc_compute_all(target_ulong dst,= target_ulong src1, case CC_OP_ADCOX: return compute_all_adcox(dst, src1, src2); =20 + case CC_OP_MULB: + flags =3D compute_aco_mul(src1); + goto psz_b; + case CC_OP_MULW: + flags =3D compute_aco_mul(src1); + goto psz_w; + case CC_OP_MULL: + flags =3D compute_aco_mul(src1); + goto psz_l; + + case CC_OP_ADDB: + flags =3D compute_aco_addb(dst, src1); + goto psz_b; + case CC_OP_ADDW: + flags =3D compute_aco_addw(dst, src1); + goto psz_w; + case CC_OP_ADDL: + flags =3D compute_aco_addl(dst, src1); + goto psz_l; + + case CC_OP_ADCB: + flags =3D compute_aco_adcb(dst, src1, src2); + goto psz_b; + case CC_OP_ADCW: + flags =3D compute_aco_adcw(dst, src1, src2); + goto psz_w; + case CC_OP_ADCL: + flags =3D compute_aco_adcl(dst, src1, src2); + goto psz_l; + + case CC_OP_SUBB: + flags =3D compute_aco_subb(dst, src1); + goto psz_b; + case CC_OP_SUBW: + flags =3D compute_aco_subw(dst, src1); + goto psz_w; + case CC_OP_SUBL: + flags =3D compute_aco_subl(dst, src1); + goto psz_l; + + case CC_OP_SBBB: + flags =3D compute_aco_sbbb(dst, src1, src2); + goto psz_b; + case CC_OP_SBBW: + flags =3D compute_aco_sbbw(dst, src1, src2); + goto psz_w; + case CC_OP_SBBL: + flags =3D compute_aco_sbbl(dst, src1, src2); + goto psz_l; + + case CC_OP_LOGICB: + flags =3D 0; + goto psz_b; + case CC_OP_LOGICW: + flags =3D 0; + goto psz_w; + case CC_OP_LOGICL: + flags =3D 0; + goto psz_l; + + case CC_OP_INCB: + flags =3D compute_aco_incb(dst, src1); + goto psz_b; + case CC_OP_INCW: + flags =3D compute_aco_incw(dst, src1); + goto psz_w; + case CC_OP_INCL: + flags =3D compute_aco_incl(dst, src1); + goto psz_l; + + case CC_OP_DECB: + flags =3D compute_aco_decb(dst, src1); + goto psz_b; + case CC_OP_DECW: + flags =3D compute_aco_decw(dst, src1); + goto psz_w; + case CC_OP_DECL: + flags =3D compute_aco_decl(dst, src1); + goto psz_l; + + case CC_OP_SHLB: + flags =3D compute_aco_shlb(dst, src1); + goto psz_b; + case CC_OP_SHLW: + flags =3D compute_aco_shlw(dst, src1); + goto psz_w; + case CC_OP_SHLL: + flags =3D compute_aco_shll(dst, src1); + goto psz_l; + + case CC_OP_SARB: + flags =3D compute_aco_sarb(dst, src1); + goto psz_b; + case CC_OP_SARW: + flags =3D compute_aco_sarw(dst, src1); + goto psz_w; + case CC_OP_SARL: + flags =3D compute_aco_sarl(dst, src1); + goto psz_l; + + case CC_OP_BMILGB: + flags =3D compute_aco_bmilgb(dst, src1); + goto psz_b; + case CC_OP_BMILGW: + flags =3D compute_aco_bmilgw(dst, src1); + goto psz_w; + case CC_OP_BMILGL: + flags =3D compute_aco_bmilgl(dst, src1); + goto psz_l; + + case CC_OP_BLSIB: + flags =3D compute_aco_blsib(dst, src1); + goto psz_b; + case CC_OP_BLSIW: + flags =3D compute_aco_blsiw(dst, src1); + goto psz_w; + case CC_OP_BLSIL: + flags =3D compute_aco_blsil(dst, src1); + goto psz_l; + #ifdef TARGET_X86_64 case CC_OP_MULQ: - return compute_all_mulq(dst, src1); + flags =3D compute_aco_mul(src1); + goto psz_q; case CC_OP_ADDQ: - return compute_all_addq(dst, src1); + flags =3D compute_aco_addq(dst, src1); + goto psz_q; case CC_OP_ADCQ: - return compute_all_adcq(dst, src1, src2); + flags =3D compute_aco_adcq(dst, src1, src2); + goto psz_q; case CC_OP_SUBQ: - return compute_all_subq(dst, src1); + flags =3D compute_aco_subq(dst, src1); + goto psz_q; case CC_OP_SBBQ: - return compute_all_sbbq(dst, src1, src2); - case CC_OP_LOGICQ: - return compute_all_logicq(dst, src1); + flags =3D compute_aco_sbbq(dst, src1, src2); + goto psz_q; case CC_OP_INCQ: - return compute_all_incq(dst, src1); + flags =3D compute_aco_incq(dst, src1); + goto psz_q; case CC_OP_DECQ: - return compute_all_decq(dst, src1); + flags =3D compute_aco_decq(dst, src1); + goto psz_q; + case CC_OP_LOGICQ: + flags =3D 0; + goto psz_q; case CC_OP_SHLQ: - return compute_all_shlq(dst, src1); + flags =3D compute_aco_shlq(dst, src1); + goto psz_q; case CC_OP_SARQ: - return compute_all_sarq(dst, src1); + flags =3D compute_aco_sarq(dst, src1); + goto psz_q; case CC_OP_BMILGQ: - return compute_all_bmilgq(dst, src1); + flags =3D compute_aco_bmilgq(dst, src1); + goto psz_q; case CC_OP_BLSIQ: - return compute_all_blsiq(dst, src1); + flags =3D compute_aco_blsiq(dst, src1); + goto psz_q; #endif } + +psz_b: + shift +=3D 8; +psz_w: + shift +=3D 16; +psz_l: +#ifdef TARGET_X86_64 + shift +=3D 32; +psz_q: +#endif + + flags +=3D compute_pf(dst); + dst <<=3D shift; + flags +=3D dst =3D=3D 0 ? CC_Z : 0; + flags +=3D (target_long)dst < 0 ? CC_S : 0; + return flags; } =20 uint32_t cpu_cc_compute_all(CPUX86State *env) --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829289; cv=none; d=zohomail.com; s=zohoarc; b=nh61tgVyV9yxLVZBzK9MfA+5Y2yX5poUaCEJsuw+gQfneaGZiZJTOSzEMspHJKJVtEwNyJSeOno8bS4NGhwQ+pe6Iwu23JXjNoh+Y10bzTv5hQQf6gtz6sTLpjnOo2JoBEhyfEEdAQF3uOj9n9ccjNW/QRvzgFolaVT9Oy6DCPU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829289; 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=DpAQdRPaPKRyiOmMwXXRBfnRYyd2O+ap7Xt42yFHf5I=; b=EmqBPyWno9GeHnyF+ub86biUByxr+4pju9BWh8u9CHpGxOMzAYGd46KhdDsEzurL5FGmRgHPQgqcg0cRUU4Y/5fMco0b8QOSM/x1Ppl7Q93qkP5ySiVVJ+Phg+OHmY/FkOpzkMCMhhVAO/LS8fmViqE2XSrlSpZHsaTf05Gt82M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829289921226.1094171993392; Sat, 27 Dec 2025 01:54:49 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQx4-0002AO-6Y; Sat, 27 Dec 2025 04:51:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQwt-0001kL-Ox for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:59 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQws-0007Q2-Gb for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:50:59 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-607-AFC8PDljPIm83cFy8_MT9g-1; Sat, 27 Dec 2025 04:50:56 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-47910af0c8bso53737455e9.2 for ; Sat, 27 Dec 2025 01:50:56 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be395d9cfsm199755305e9.0.2025.12.27.01.50.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:50:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829057; 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=DpAQdRPaPKRyiOmMwXXRBfnRYyd2O+ap7Xt42yFHf5I=; b=Nk4pfqVnfrpDcneH5p8xQ8TO8UjLrV3LU6A0Iy0vGSxNWB/mNVBTKS5H4DoCr0IRbIF3HA LqWPjh7/48hqcrdEaZOrDKQSYq1u/AnHmVzMp7qq4O/l1ZEJiWjKq+aYxWvs8ucdI828pY bFn14OGSjF5PXgpGGY8g9dIRjlPF1vc= X-MC-Unique: AFC8PDljPIm83cFy8_MT9g-1 X-Mimecast-MFC-AGG-ID: AFC8PDljPIm83cFy8_MT9g_1766829056 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829055; x=1767433855; 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; bh=DpAQdRPaPKRyiOmMwXXRBfnRYyd2O+ap7Xt42yFHf5I=; b=Tb9O3K+q5q7ip9hfIKyKp7baCcraw73uBz288WTjCfbY0VDYT3M+TagNbHRZ4zuK11 PxuJ1yYCq2dC0y9pn8cUE03cdvHOhSjuzV5ptFDIcVR1Q5o8UKx4HC/1WiqlbyMRc141 Y/8NePHrp+NbsaXAYuyfeww/c/E8/YXdVfZWbMoO2Y+BhXMb7zznKosd4f5czwI1yrwk AGTr023LL/sruWOq0RgPgYYO78XxkoLl0yx3A+62SA6Au7e6alcqudCNeSe//h1OV++K hWccCIVr+jVxnlDoHSOyiDmBSu3V44ejhE9eJRQldEuLmnFuGesskV5f/6aWE48su9IU AhjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829055; x=1767433855; 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; bh=DpAQdRPaPKRyiOmMwXXRBfnRYyd2O+ap7Xt42yFHf5I=; b=pbVWz/jVPIVC1qfDin98v3WvoqAP6cPqX7IU34GkkXykp8i91UmfE6RAc/aCJhmFoJ VIXjDLK7u6yZRjchAIPvGvMS3LkFtntnlAwBk7uql+AHIafogiQkwzIkyLbvejIQVBcx 8tvmzxHLwCrKZgmbCe6w2b5hOIBJyJOhUuC1qU5NKpA1XvYAO+AwpP9b45PeoaSnxDau LwEZcN2hcslRlo+RU9Su1XJsSnQP0FNOrk4rWZ9AZqXx6nP/pYWy12QTtZ7IT93NHuvX XiNhhDKmwajfnlLN71w4HGyrblhbiPe7KoFdnyK5H0p4IKKRknORV4lpzLuFv2Z3NvPi 3jhA== X-Gm-Message-State: AOJu0YykJ6g2PKhRW3sVo2AIJa8owBY7djzewDgdGadjw/Ni6tlynN8X nLsjVVeYw50QgS83MRWxXHJs4DjYv0ZuBXy5Ww8XXPiz7CEEu355oSSXAg3LlzfwWyIAzYivrro Z0YOxWxAq37MRP2UpQGLemNv61pFJICLhBfz2RCE0A64ISe0hiBjICv8mMe1zYkW2EvVB/Wkt3Y PxlhpwX+gqQ2F5O+8WdQxvWddU1nLNjBLUAZBkTyAe X-Gm-Gg: AY/fxX6KBqC2sF2atKvIzk6g6hREec0SsmObcVAh/vGXJHIzFZoW8uwuvTshR9ZwkaR Q9aUErXZC2oyhGASjk5K9ozgcfC2QjsDmGZArXWQeyKMR/8f9fV1fyt5+KfOtkaE0pacUzU8Czr 235sktujdv1nkLXYSJGG6RVuKZyB8cpP3m4Zy4EbsWg6GFa0oKzwZmRbP4BUkDgonjhiKsYZuyf c+Tc6zSidd+XjbAD64bEeFHRh5EC/hqJ6el7qjZWWWDb3VAdtPaZbzhqaHYM5sZdgzEW9RNMh1C 0kxrkPkSVUbG3/gaGz3Kxr1zfCztQY0cqXRbI2qh/3HaX+CtqJWNhatwhtQ+Zxv6aLzWApHhQ7x zCX6FOgJkZnLn09IIURRkNbJGhC8XcgwfkRGoWFF4FsYcqEVS7N5FxC8ZKIX7gonwUdlI4zv7uB v15aY5sagz1Juii6I= X-Received: by 2002:a05:600c:8287:b0:477:76bf:e1fb with SMTP id 5b1f17b1804b1-47d1955578bmr327635215e9.16.1766829054883; Sat, 27 Dec 2025 01:50:54 -0800 (PST) X-Google-Smtp-Source: AGHT+IFI+DN2pO1c5bQG2hAXX0w9ude8mPCpP0RKLBxXRQAqFr8/3qw0MuJc7wWa5CCCqbw0ZzcDrA== X-Received: by 2002:a05:600c:8287:b0:477:76bf:e1fb with SMTP id 5b1f17b1804b1-47d1955578bmr327634955e9.16.1766829054386; Sat, 27 Dec 2025 01:50:54 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 133/153] rust: skip compilation if there are no system emulators Date: Sat, 27 Dec 2025 10:47:38 +0100 Message-ID: <20251227094759.35658-59-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829291782158500 Content-Type: text/plain; charset="utf-8" Otherwise, the Rust crates require the corresponding C code (e.g. migration/ for rust/migration/) but the dependencies of that C code, for example the trace files, have not been built. Signed-off-by: Paolo Bonzini --- rust/meson.build | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/rust/meson.build b/rust/meson.build index afbeeeb47a7..bacb7879102 100644 --- a/rust/meson.build +++ b/rust/meson.build @@ -1,3 +1,9 @@ +if not have_system + subdir_done() +else + message('Rust enabled but it is only used by system emulators.') +endif + subproject('anyhow-1-rs', required: true) subproject('bilge-0.2-rs', required: true) subproject('bilge-impl-0.2-rs', required: true) @@ -30,6 +36,7 @@ subdir('qemu-macros') =20 subdir('common') subdir('bits') + subdir('util') subdir('bql') subdir('migration') --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829323; cv=none; d=zohomail.com; s=zohoarc; b=GS5S5zxyCXye8+NgmZCaAbXiMPHl13miETsRZ7qw8qhUtvxOfgILAo2TAv0PrcSVNf1VPMnyga2Qy4V4GMXOMhFxbWMUlVM5QLvr9QknI8TW0n83+sG406eB7toJ4JPyh2PVXNbvYY5My+D4fBWQNZcXUhlcJz/JwBt3/fmESaQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829323; 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=6rcicS41+qZo6n74DEZ5xaoulNPDZhEO4rXTcSSbca0=; b=PEft5MzKbi1vSp/JT3IXV1o2KKc3EQFJIyaV/nh+HeQk3qKctClOT13GC/eyKAK66Qw1e4d+GFZNJiXTLISOdo6du9k3qrgeCqG0+qwWgQFT07BWHGqXmvmbTMHQYGRGfqo3WbFJHfocyZq+HyUFlbrsyzeSwohX9gerE+L8xUM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829323314225.36809369187802; Sat, 27 Dec 2025 01:55:23 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQx5-0002PS-Uj; Sat, 27 Dec 2025 04:51:11 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQx2-00025F-0Z for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:09 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQwx-0007RG-Oh for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:07 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-658-ZkcYquXuP7K0b-pw0wcnTA-1; Sat, 27 Dec 2025 04:51:01 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-47a83800743so43411895e9.0 for ; Sat, 27 Dec 2025 01:51:00 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be3a0fb9asm200927465e9.2.2025.12.27.01.50.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:50:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829063; 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=6rcicS41+qZo6n74DEZ5xaoulNPDZhEO4rXTcSSbca0=; b=bmkKLF80bu32sp1mODNzFcSD9hz0U3eShPPsKYV7lNJOBRWZ37/2R1CjQSe6utXqPXxzdy H6PT0ui0Bj8zyl5o0mB73K7z5LBE6wpT4yNHzAcMmUzUcB36rsd95nnpwEf0Y2FojJVKrK J/uugPsJRGKreL0XwaJcz4D87firE8k= X-MC-Unique: ZkcYquXuP7K0b-pw0wcnTA-1 X-Mimecast-MFC-AGG-ID: ZkcYquXuP7K0b-pw0wcnTA_1766829060 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829058; x=1767433858; 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; bh=6rcicS41+qZo6n74DEZ5xaoulNPDZhEO4rXTcSSbca0=; b=PnAdxgHbjr4VEQSd88/P6z9CQ6OzhsMs3ypwRpDgucW8p6iHP9PRVQNo+/RTqu+w2o GgOZqfxwvYsHVy478PScSXmO5z3KSbXhXIzfnOyWlTUNeBFcS/eeC/IfJZcPzodcypcR leRSC1SPS7oZ/BsvD5xGAqwNOpE5rvCSkOGV6kJgkti+3RgAe16dRRg++dv6gkrUF69s VV4/uytPxMz5PLT4gSFZQLy6trMsQUUXIJ/Y6o+Sdyesboy9rIbXVFegpDBh3pZN6xl3 xchQj6hn5q2CTFuPRle5kCRoQfIS7HI3DXJGfGB84YJTHlGtI+BrAvUBPphjPQyflRWV SAcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829058; x=1767433858; 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; bh=6rcicS41+qZo6n74DEZ5xaoulNPDZhEO4rXTcSSbca0=; b=Q3VATkckpb2no3q+vbumBuDNZjO225DoUxrRuwBG15pAjbCNo9o2PonppbunCdV5ei pJCGSt88L0Og5GLjwXNVvsVh8ACbcAJjKShK302IBmAmMlhqAPJ3QbEFD7c4hMCmKXVa /gM2ib/XAdxEfGypcR/iYbdb77mrEW1w60NFPYm8WIOgx95QJ/8THhyzqFyXlXLZBPej JDTio8L9KLz2bJzc8yhvppPBmw1Qkl7PqAPHYIgE4/NTVc8fzOYGKCzIOQy5X1FNOWvB GjycYHGvFh9YacHa73Sp7aZaVxpDIjdbTZ5e9Ku1Tf42hbP9tDSZxS7q9pbgMUffVJUE RanQ== X-Gm-Message-State: AOJu0YzJEw1Mk/fCES/ChJB9PwA69gdOH5PBhtZu1x5sj7AZRee8ycCA 9BStmrlWSjMSx02Y1wIKGcJsiEQYFt1SCUBaqkGxDcG7XA/OXOdf+vnQZBr7PMMUuIS3nWbvYkD Lxl3IhDKudo0SmScY72p8z6TITi09ibGz72Y1f4yn7540UR3DgW+Au8LxMl+XDFXchVlBfYMt6u rHkGSpNcB6FWYg+lRY+Ga62EmWx9JLyozt6r1Rdoj9 X-Gm-Gg: AY/fxX4xluV2ZImPjz3qS6iHthkXwzFOIXDph5Uq2ZBClfVj3WKSLYjoyh9P7Tg2O/x iaRm48Xh6Cdxdb042Jsb74sNxROlBZg7KiGowM0hacJcElAcwXg5G0CgYFjV44u4/IpNOkjnK7P gfySgRiy+eAm0L7SHbsUVH7PnLPsDdhw7xdTXVXOg3WJBctwj7DlyH0IBzmkq4JiDeCGD6ICKSr DqIpA9+zhdmy5QnertDVUuQtSw+MoHSoopN2MjO/NHJgG9OlPu11EL75kjqbZTcQDHWY4jlnQj2 48uvkmp0xqHcwGEDEsFaUVvRzJcxT8zV6LdLd1smWsPtfcLSi0jMzKPi3T0CEhjb422RbMT1lcu t2h8aTf24n40/2HQb0ciqnqKd9n4NkgXkAjGI3PttzqZfo1QITwqlsn9WuA085uyb4qbViLKp80 l2Ct5F7BgZ5PxfB8Q= X-Received: by 2002:a05:600c:5489:b0:46e:59bd:f7e2 with SMTP id 5b1f17b1804b1-47d18bd5651mr282250565e9.11.1766829058424; Sat, 27 Dec 2025 01:50:58 -0800 (PST) X-Google-Smtp-Source: AGHT+IEFqVfpTc1t9DrHwKVyRC1R1qHKNPpijawDYxEXpXcUmAfKqI1cfd/I6r0fH0liziwBf1humg== X-Received: by 2002:a05:600c:5489:b0:46e:59bd:f7e2 with SMTP id 5b1f17b1804b1-47d18bd5651mr282250315e9.11.1766829057926; Sat, 27 Dec 2025 01:50:57 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 134/153] gitlab-ci: enable rust for msys2-64bit Date: Sat, 27 Dec 2025 10:47:39 +0100 Message-ID: <20251227094759.35658-60-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829323806158500 From: Marc-Andr=C3=A9 Lureau Signed-off-by: Marc-Andr=C3=A9 Lureau Link: https://lore.kernel.org/r/20250924120426.2158655-24-marcandre.lureau@= redhat.com Signed-off-by: Paolo Bonzini --- .gitlab-ci.d/windows.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.d/windows.yml b/.gitlab-ci.d/windows.yml index 5dbdabfbec0..5ef4d34d1ea 100644 --- a/.gitlab-ci.d/windows.yml +++ b/.gitlab-ci.d/windows.yml @@ -17,7 +17,7 @@ msys2-64bit: # This feature doesn't (currently) work with PowerShell, it stops # the echo'ing of commands being run and doesn't show any timing FF_SCRIPT_SECTIONS: 0 - CONFIGURE_ARGS: --disable-system --enable-tools -Ddebug=3Dfalse -Dopti= mization=3D0 + CONFIGURE_ARGS: --disable-system --enable-tools -Ddebug=3Dfalse -Dopti= mization=3D0 --enable-rust # The Windows git is a bit older so override the default GIT_FETCH_EXTRA_FLAGS: --no-tags --prune --quiet artifacts: @@ -77,6 +77,7 @@ msys2-64bit: bison diffutils flex git grep make sed mingw-w64-x86_64-binutils + mingw-w64-x86_64-ca-certificates mingw-w64-x86_64-ccache mingw-w64-x86_64-curl-winssl mingw-w64-x86_64-gcc @@ -87,6 +88,9 @@ msys2-64bit: mingw-w64-x86_64-pixman mingw-w64-x86_64-pkgconf mingw-w64-x86_64-python + mingw-w64-x86_64-python-certifi + mingw-w64-x86_64-rust + mingw-w64-x86_64-rust-bindgen mingw-w64-x86_64-zstd" - .\msys64\usr\bin\bash -lc "pacman -Sc --noconfirm" - Write-Output "Running build at $(Get-Date -Format u)" @@ -98,6 +102,7 @@ msys2-64bit: - $env:CCACHE_MAXSIZE =3D "180M" - $env:CCACHE_DEPEND =3D 1 # cache misses are too expensive with preproc= essor mode - $env:CC =3D "ccache gcc" + - $env:LIBCLANG_PATH =3D Join-Path -Path $PWD.Path -ChildPath "msys64/mi= ngw64/bin" - mkdir build - cd build - ..\msys64\usr\bin\bash -lc "ccache --zero-stats" --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829343; cv=none; d=zohomail.com; s=zohoarc; b=fykMsCRjdagv0TzA7O+ixp0CqEkOIXie2OenMl2L1WEgNlOCseIaWuDMS6oDZ/3LU5v7KZI10w490blWbRDKcwLRu50GWq8xnHe8RXFirJb3vaLS9CSfTlCkvUOZg6UsHl1ZkjNZpvVMHFrOqbeaK/UHy2AwAJWmjasGewgL5bM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829343; 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=VM5PP8BC0XUA3zL5E654yr1w20Sx2lVssb+lqRE2aqU=; b=UlP3jQVQR0jt7uiPPKoyvJNwdfOWRu7emTYZgij5uj3vfd/c3DdcFMUXjbWoZUA9uDi+xYkBlFK9fdkfyXfk7ZGqI3BtW2WE7yBNl1/d3dW52T1OxUNTBLIOYVIzaBxakTAM4rJR0jM3zb/8u+CNvgvLufuw/CGiBO83zk0QDGw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829343858488.87193353123007; Sat, 27 Dec 2025 01:55:43 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQx7-0002bs-E0; Sat, 27 Dec 2025 04:51:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQx3-00029H-VY for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:10 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQx1-0007Rj-Ou for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:09 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-670-SUOexRxaNuGcYUqP2ihMGA-1; Sat, 27 Dec 2025 04:51:04 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-4775d8428e8so65083705e9.0 for ; Sat, 27 Dec 2025 01:51:04 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be272e46fsm476183045e9.4.2025.12.27.01.50.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:50:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829066; 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=VM5PP8BC0XUA3zL5E654yr1w20Sx2lVssb+lqRE2aqU=; b=eq0T5kPn1ZzF8L2AEP1ct+ze6W0bR3yEsfUwlN3t1LahixuWNUmhFKunDK5GUEp/iZdsBl 97K4nx81NyDgtDp6tx1Ook+q+Lt/vJgT5DZQhHwrkKkgZ7+ldL757iGnZFkEgh2H8nG4xi nuA5ZUnxFPnTGBvQg8vJ2JfoQZXeFiA= X-MC-Unique: SUOexRxaNuGcYUqP2ihMGA-1 X-Mimecast-MFC-AGG-ID: SUOexRxaNuGcYUqP2ihMGA_1766829063 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829062; x=1767433862; 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; bh=VM5PP8BC0XUA3zL5E654yr1w20Sx2lVssb+lqRE2aqU=; b=S1ULp+LL19pB1C47Rc20wZWZcG9uS15RLyGZ5cpUgErR7oBydGPn/DvhjgOOkuEFZ5 n5WQvqVl2Fe/xiK3rXLVgtBQ1sHecX60iRKzRRaZ/KW7H5vV1dMEOdrAZRAeBDyeYV2g R4Tsr6inJFVXTA959Fa2r/LJmecarYoEvx2v0hjt5uZ/bWbuNfsUuagWJ6ROXFyBB9QX OkYj0qQZsk4qSjN8iDB434KazTqN7NTjqShOCpyKmsb/z20yOEtowz0TcC5Ba/BU1PZr UcAN+pAbZ55hT2QODIZTB+TeFK7a5j77BWhpsnemFUg5deL4BuNqLiCrDKhUfYnzJVpA UbOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829062; x=1767433862; 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; bh=VM5PP8BC0XUA3zL5E654yr1w20Sx2lVssb+lqRE2aqU=; b=MsmUUCsnRCh0ITqU2YqKoTuFaY1nILaILxrAUGNMB4Lpevve1oVel9d+NzXFSjA9fI 7qRqYZaQ/4Kns7I1H3HPJOwNEZHBoLViTZTGpUWMuOsxKpqcE/r3DFo2OASX07W42l+v I8wc9O53zMHbgBuym0MlylSD1wRogb1v3gPjpuspbZQ0yqCfC0WlFgVjDyJKlj+GptH9 dOZthl7fsG4l3CfcXdtEh1+z9i7uD5GUbpMJ4VgGmTnvDo/l5aG4xcJdBRc1BVamMcP8 rXu3s9Cip7qwpWVYmo8k9MJ3D1FJJcYpPTlYzTFHmO4fuZa/ig1zHY3p2WXAniLe4twX Nkxg== X-Gm-Message-State: AOJu0YynbMTaWASWkxoBz8A8h2agJ/QxABzF0CCJspZ4dB7mI6et1sB3 BEtJOCKfQJMI075WYtVQ57pqliyBwnkpgbY36fc+IyMC1ZsrJlIkpSzp/srbdRIUBWx25Gh9GAD QEknXDf/RO5Yr4QlJPOISzwXpkG+/ma15kIW8y8z0gdAN+b9QMvwgGJI9QYyh+Nv3us8lscXuJX QjN7tJLfBPXtHYLw8MyPG9iBc3r9jwlw19cqIifTlh X-Gm-Gg: AY/fxX7634EzNLoE50fZO2VNkG26WKLcJlYmH+ULgVLFR1+8BUljZgJuq03j+E1J6Hs M8B+Qk8+H2fZjKigXTbpEO+mOsbxWNZcKWjvlXtiL/eZi7SBNhDLBsKM1ptP45cAtkN+jB2OZEE FKlzqKqyNG1PM5e7JdEadr37VVET0guoQ3quvwpugAkYlPNUr/APipSagUrk9OW6x2v4iYYoXEx iIYPcYvWWtDpGrrwXIvYeJGv8YLhSBgvS+doaqixY7iNFNaYADlKl0QGpBH94klfSS5kZeB647i pVFumNvWCPTZncctoRbSCmXUdjGXDg+pb5/5SzCbB8EIBSkt/titGNJW4m7dlSnDoODUmyQxPHk Cx1jQmgCgv9rBMlza/zWoJYYmXLpCXs5R1FEV3IVdqlxBaxzzDneUrYtrEv/nTjxk4pa+1sOdDx RH3WvYf4GY+aBvxQk= X-Received: by 2002:a05:600c:4711:b0:477:9caa:1a26 with SMTP id 5b1f17b1804b1-47d1959fadbmr275471605e9.29.1766829062167; Sat, 27 Dec 2025 01:51:02 -0800 (PST) X-Google-Smtp-Source: AGHT+IFtVN7G88XsQBl9m1DaxuMPV4s6zu+pdSnKuoG/lXkdU1CnoMpsveLXbGweMtDog6XV4HtJTg== X-Received: by 2002:a05:600c:4711:b0:477:9caa:1a26 with SMTP id 5b1f17b1804b1-47d1959fadbmr275471365e9.29.1766829061618; Sat, 27 Dec 2025 01:51:01 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Subject: [PULL 135/153] run: introduce a script for running devel commands Date: Sat, 27 Dec 2025 10:47:40 +0100 Message-ID: <20251227094759.35658-61-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829345964158500 From: Daniel P. Berrang=C3=A9 Various aspects of the development workflow are complicated by the need to set env variables ahead of time, or use specific paths. Meson provides a 'devenv' command that can be used to launch a command with a number of appropriate project specific environment variables preset. By default it will modify $PATH to point to any build directory that contains a binary built by the project. This further augments that to replicate the venv 'activate' script: * Add $BUILD_DIR/pyvenv/bin to $PATH * Set VIRTUAL_ENV to $BUILD_DIR/pyvenv And then makes functional tests more easily executable * Add $SRC_DIR/tests/functional and $SRC_DIR/python to $PYTHONPATH To see the benefits of this consider this command: $ source ./build/pyvenv/bin/activate $ ./scripts/qmp/qmp-shell-wrap ./build/qemu-system-x86_64 which is now simplified to $ ./build/run ./scripts/qmp/qmp-shell-wrap qemu-system-x86_64 [args..] This avoids the need repeat './build' several times and avoids polluting the current terminal's environment and/or avoids errors from forgetting to source the venv settings. As another example running functional tests $ export PYTHONPATH=3D./python:./tests/functional $ export QEMU_TEST_QEMU_BINARY=3D./build/qemu-system-x86_64 $ build/pyvenv/bin/python3 ./tests/functional/x86_64/test_virtio_version.= py which is now simplified to $ export QEMU_TEST_QEMU_BINARY=3Dqemu-system-x86_64 $ ./build/run ./tests/functional/x86_64/test_virtio_version.py This usefulness of this will be further enhanced with the pending removal of the QEMU python APIs from git, as that will require the use of the python venv in even more scenarios that today. The 'run' script does not let 'meson devenv' directly launch the command to be run because it always requires $BUILD_DIR as the current working directory. It is desired that 'run' script always honour the current working directory of the terminal that invokes is. Thus the '--dump' flag is used to export the devenv variables into the 'run' script's shell. This takes the liberty to assign 'run.in' to the "Build system" section in the MAINTAINERS file, given that it leverages meson's 'devenv' feature. Signed-off-by: Daniel P. Berrang=C3=A9 Link: https://lore.kernel.org/r/20251222113859.182395-1-berrange@redhat.com Signed-off-by: Paolo Bonzini --- MAINTAINERS | 1 + docs/devel/build-system.rst | 12 ++++++++++++ docs/devel/testing/functional.rst | 15 +++++++-------- meson.build | 16 ++++++++++++++-- run.in | 4 ++++ 5 files changed, 38 insertions(+), 10 deletions(-) create mode 100644 run.in diff --git a/MAINTAINERS b/MAINTAINERS index a03898ccb63..81f48f0709c 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4479,6 +4479,7 @@ R: Philippe Mathieu-Daud=C3=A9 S: Maintained F: meson.build F: meson_options.txt +F: run.in F: scripts/check_sparse.py F: scripts/symlink-install-tree.py =20 diff --git a/docs/devel/build-system.rst b/docs/devel/build-system.rst index 6204aa6a72e..b9797a374c7 100644 --- a/docs/devel/build-system.rst +++ b/docs/devel/build-system.rst @@ -515,6 +515,18 @@ generates ``Makefile`` from ``Makefile.in``. =20 Built by configure: =20 +``run`` + Used to run commands / scripts from the git checkout. Sets ``$PATH`` + to point to locally built binaries, and activates the python venv + before running the requested command. Pass the command to run as + args, for example:: + + $ ./build/run ./script/qmp/qmp-shell-wrap qemu-system-x86_64 + + will use the ``python3`` binary and site-packages from the local + venv to run ``qmp-shell-wrap`` and spawn the QEMU emulator from + the build directory. + ``config-host.mak`` When configure has determined the characteristics of the build host it will write the paths to various tools to this file, for use in ``Makefil= e`` diff --git a/docs/devel/testing/functional.rst b/docs/devel/testing/functio= nal.rst index fdeaebaadcb..1978f96eba1 100644 --- a/docs/devel/testing/functional.rst +++ b/docs/devel/testing/functional.rst @@ -53,15 +53,14 @@ the following line will only run the tests for the x86_= 64 target: make check-functional-x86_64 =20 To run a single test file without the meson test runner, you can also -execute the file directly by specifying two environment variables first, -the PYTHONPATH that has to include the python folder and the tests/functio= nal -folder of the source tree, and QEMU_TEST_QEMU_BINARY that has to point -to the QEMU binary that should be used for the test. The current working -directory should be your build folder. For example:: +execute the file directly by specifying the name of the emulator target +binary as an env variable. =20 - $ export PYTHONPATH=3D../python:../tests/functional - $ export QEMU_TEST_QEMU_BINARY=3D$PWD/qemu-system-x86_64 - $ pyvenv/bin/python3 ../tests/functional/test_file.py +Assuming the current working directory is the top level source checkout +and the build directory is './build':: + + $ export QEMU_TEST_QEMU_BINARY=3Dqemu-system-x86_64 + $ ./build/run tests/functional/x86_64/test_virtio_version.py =20 The test framework will automatically purge any scratch files created duri= ng the tests. If needing to debug a failed test, it is possible to keep these diff --git a/meson.build b/meson.build index 3790cf15f51..14b1160c15d 100644 --- a/meson.build +++ b/meson.build @@ -4,8 +4,6 @@ project('qemu', ['c'], meson_version: '>=3D1.5.0', 'rust_std=3D2021', 'build.rust_std=3D2021'], version: files('VERSION')) =20 -meson.add_devenv({ 'MESON_BUILD_ROOT' : meson.project_build_root() }) - add_test_setup('quick', exclude_suites: ['slow', 'thorough'], is_default: = true, env: ['RUST_BACKTRACE=3D1']) add_test_setup('slow', exclude_suites: ['thorough'], @@ -3501,6 +3499,20 @@ endif config_host_h =3D configure_file(output: 'config-host.h', configuration: c= onfig_host_data) genh +=3D config_host_h =20 +devenv =3D environment() +devenv.set('MESON_BUILD_ROOT', meson.project_build_root()) +devenv.set('VIRTUAL_ENV', meson.project_build_root() / 'pyvenv') +devenv.prepend('PATH', meson.project_build_root() / 'pyvenv'/ 'bin') +devenv.prepend('PYTHONPATH', meson.current_source_dir() / 'tests' / 'funct= ional') +devenv.prepend('PYTHONPATH', meson.current_source_dir() / 'python') +meson.add_devenv(devenv) + +run_config =3D configuration_data({'build_dir': meson.current_build_dir()}) +run =3D configure_file(input: 'run.in', + output: 'run', + configuration: run_config) +run_command('chmod', 'a+x', meson.current_build_dir() / 'run', check: true) + hxtool =3D find_program('scripts/hxtool') shaderinclude =3D find_program('scripts/shaderinclude.py') qapi_gen =3D find_program('scripts/qapi-gen.py') diff --git a/run.in b/run.in new file mode 100644 index 00000000000..1bb12272a72 --- /dev/null +++ b/run.in @@ -0,0 +1,4 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later + +exec @build_dir@/pyvenv/bin/meson devenv -C @build_dir@ -w "$PWD" "$@" --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829324; cv=none; d=zohomail.com; s=zohoarc; b=LKi0gdCINSjhSl3KH5fl20qD2xvsFZO3hbzniY+BizJOY5YkzBPPh23RnvhLAtweIvy7BCe7D/LpBjJaqJ9+AyQELO8vp0ynsvkXRWUlh7h6V0hPlVuyBSSK5GCsdiSp3CIr7MBF1xu7j6gXFjNowNaxxvk+i38Xfp5ZA4E/a4o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829324; 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=Q9gjyL8USiwzdUn7oC+UbtyBicl+JcEyV9qqRSLygs8=; b=hK33VBbFxVa1fEBlG2my9Qn0N4qt5myJJk47lL9RDaUx7/FsMXGXd+xDxlBmk+p7GyVlnzGYysOT/lgyB2OLZm83iDVgLHfrLvJARKODjFT/BacSB53Fb7wJqHo0b5EKP9EbyDyhTheqqY55NRiJU9ebg/hFXSlRn/vuF3QDXys= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829324406753.2632977308103; Sat, 27 Dec 2025 01:55:24 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQx7-0002cX-G7; Sat, 27 Dec 2025 04:51:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQx5-0002Lf-CT for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:11 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQx3-0007SC-Mx for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:11 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-530-dvCoQyZXNECuTafGZMYgGQ-1; Sat, 27 Dec 2025 04:51:07 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-47910af0c8bso53737875e9.2 for ; Sat, 27 Dec 2025 01:51:07 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be26a81b6sm499639985e9.0.2025.12.27.01.51.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:51:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829069; 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=Q9gjyL8USiwzdUn7oC+UbtyBicl+JcEyV9qqRSLygs8=; b=LY23Q0ztVsjDR1VkUamU4ekCbUb081ZpwMt1g9agL85V/jIxkf2rGuWWwoTXYIbY/BDlDy p+RHOnb9hGQkt7ynRWbsQNWZ8yh0XF46AHLTc/Qu8a8ZammWMmCshqHCf4cdSuYzOyH8R/ U9SMRizvxF5Ew5OQP0P7rKVToPnv7mE= X-MC-Unique: dvCoQyZXNECuTafGZMYgGQ-1 X-Mimecast-MFC-AGG-ID: dvCoQyZXNECuTafGZMYgGQ_1766829066 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829065; x=1767433865; 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; bh=Q9gjyL8USiwzdUn7oC+UbtyBicl+JcEyV9qqRSLygs8=; b=OhWwISX0QuZf0AFSalOZlTOxiekvwBHq+GOoWL6dYQ5wrODkBuG/AlP7/odT/j/N2q X86YVLWFjt6j1iK98HKDl5paR46LzD/TxmJzVyM7gwWpVTxLEbr1U3PI6rT0Yzyly8yw HIMbd9QXk49FSaF1OG+9kLEx9t6gQwob1hW3lWtGVS4lANLDNKq9d4vOKvG5PsBcfU51 FFiQv6mJCfIJjQYgQPwSoCf/u/gi1RXhHlFjaLRCz2yOy0UarOxhvTQVZu8uUAWZzgYs Cj9J+DFM+F1+fh8DYWS53y/vC69a9Eq0z4CGEy+9hOkmV0vEJMrG0ZRQUrMceo8R+wpX K+1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829065; x=1767433865; 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; bh=Q9gjyL8USiwzdUn7oC+UbtyBicl+JcEyV9qqRSLygs8=; b=og7Il60vTG8v4Pwd+O1S2F0azqjXa6H8/TFcoQOD+iplzwqgHNEBVq6QuA2Sw5JHiD BZFDJK9GCS/ykllkwTEXfRvf8bTVwY/vzD/OsWtweIfOfLc2+BogztTnPDZOo4h8DWyh RV+CM7Z5smVGD76hzD9uFe3sRZRmI8oNoSP6MoHwL9wvi2oefwCZOUbPow7tfYZm4zvk 6XGbNJqY34S2nBaIaIRkCAzTW5tXrP5/QiSTa2Cqfq8Rmjt6TNAqrHKb0vN9H4jTeqce 2k5k0Hk1LoHAHgRCo1vJwtileHLnph8Z7RLzGqMm3RvRxc9U5VI1lkcV8FHOwXtxojdh VeiA== X-Gm-Message-State: AOJu0YzKsVJ9XfIPUKnJhS3E8X4I/iIdgJ2fR3SnPlRg+afvBA1YDnQc Sc5GB+hyONyW/I4hmuEl/chge142US/PvaTeN3NeoRapMgtkeS0gw4AAVuPOpCdpi3duiADjdi7 Y1X7xo2vQP4Ql2c3SEwRT7fydVPJWPQZlV8/fncRp/30JF8WIUV40+wqfXcObnNhqtmcrN6fe0L r/ZWU54y/t3A1JN/+pgZ74zd6CmEXI6vt+rdls0O3H X-Gm-Gg: AY/fxX4Y7DexuA2nQOeXHbKwJJpGAYdk7USC5EpwlHfwSOp3P9wQzqYEmZ89Y5k/Foi WbhdPUHg2FgWj0jsOxQxJtOqNBZCKg60oas1cHdG4Ne77vnMXY+bjO4pS5ns+Wx8dB+gRST9pZp eQupyqnHD91YE34h2Gzkkp7JJr8xGyGAtJc2D6m8nLfDe8l8c40nxDx8oTIcz4lsJKJesMVKTl8 0nNNut/Pvy0fGIIsmZ59b+euxomZaQk2jfo48uFBREahWSZpZdgjrGGLTRE4nVOLAXdNltzWjBY MLZ7r8tBUS8cM0XzuhP7QzwadcK39h40DfdojBsO94/Sg8X+qSkRTb0PCV7CEm+F1b+JU83ZLEH YA9BlO+/zYdrpvPCb8IfE3eTBI0L/ez1FLwQadbqYPTSVOdlYZvixNfGNJG0kMtLBkwpXfHxcFW D/tsmrHJUHTrkz+nc= X-Received: by 2002:a05:600c:3ba3:b0:46e:761b:e7ff with SMTP id 5b1f17b1804b1-47d1958c90cmr284205675e9.28.1766829065222; Sat, 27 Dec 2025 01:51:05 -0800 (PST) X-Google-Smtp-Source: AGHT+IFAZNBMuSIwCI1paZYa8PAhN+YkhoKV04J2hhHIWfd9mlUAeA72TwfydfMqJyD7dm1vSAFhsQ== X-Received: by 2002:a05:600c:3ba3:b0:46e:761b:e7ff with SMTP id 5b1f17b1804b1-47d1958c90cmr284205405e9.28.1766829064684; Sat, 27 Dec 2025 01:51:04 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Xudong Hao Subject: [PULL 136/153] i386/cpu: Add support for MOVRS in CPUID enumeration Date: Sat, 27 Dec 2025 10:47:41 +0100 Message-ID: <20251227094759.35658-62-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829325823158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu MOVRS is a new set of instructions introduced in the Intel platform Diamond Rapids, to load instructions that carry a read-shared hint. Functionally, MOVRS family is equivalent to existing load instructions, but its read-shared hint indicates the source memory location is likely to become read-shared by multiple processors, i.e., read in the future by at least one other processor before it is written (assuming it is ever written in the future). It could optimize the behavior of the caches, especially shared caches, for this data for future reads by multiple processors. Additionally, MOVRS family also includes a software prefetch instruction, PREFETCHRST2, that carries the same read-shared hint. [*] MOVRS family is enumerated by CPUID single-bit (0x7.0x1.EAX[bit 31]). Add its enumeration support. [*]: Intel Architecture Instruction Set Extensions and Future Features (rev.059). Tested-by: Xudong Hao Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251215073743.4055227-2-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- target/i386/cpu.h | 2 ++ target/i386/cpu.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index c0bf51448e2..be430a73bdd 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -1043,6 +1043,8 @@ uint64_t x86_cpu_get_supported_feature_word(X86CPU *c= pu, FeatureWord w); #define CPUID_7_1_EAX_AVX_IFMA (1U << 23) /* Linear Address Masking */ #define CPUID_7_1_EAX_LAM (1U << 26) +/* MOVRS Instructions */ +#define CPUID_7_1_EAX_MOVRS (1U << 31) =20 /* The immediate form of MSR access instructions */ #define CPUID_7_1_ECX_MSR_IMM (1U << 5) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 67769200d0d..817f78a0c20 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -1266,7 +1266,7 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] =3D { NULL, "fred", "lkgs", "wrmsrns", NULL, "amx-fp16", NULL, "avx-ifma", NULL, NULL, "lam", NULL, - NULL, NULL, NULL, NULL, + NULL, NULL, NULL, "movrs", }, .cpuid =3D { .eax =3D 7, --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829292; cv=none; d=zohomail.com; s=zohoarc; b=fmFoiPfD3qpj45fv+ngUs+oa7wlYhqOfoNd+St7QZvVMPDB+wyU1a45nUncePR/QGkcomhBUYb611dF629U2HKDTaUYe/k7Blgwv5p/RlXFjL+DjkrLq31UPnjwuhY0Of1EyO8AnKz8Wekuu/q5NHy/gyW5sgFs0eR050VxuwhU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829292; 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=9Pdru0MfLIqHbpQU13WkMnFJzrHGBb8pb6UyfGGGtrg=; b=j1RplWo44gVqTQ51fE0Na54V7qvkIsieHk24KzrxO5kFryxiOV4sons4Dfu0xKxhWV8E3iJIk/KQFtC0+lZWDZfklxv18zpzfSyv74GvQ08hjxY6z7tXl9e9IdFGALc9B87BOuYFOLagkcZp64xAe6oejECtW09zHMzSvagHkno= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829292685998.7062607578796; Sat, 27 Dec 2025 01:54:52 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQxA-00031Q-6U; Sat, 27 Dec 2025 04:51:16 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQx8-0002l3-BL for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:14 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQx6-0007Sb-HT for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:14 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-548-p1M8PQHSPpqmZHKTB_gOrQ-1; Sat, 27 Dec 2025 04:51:10 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-431054c09e3so4775880f8f.0 for ; Sat, 27 Dec 2025 01:51:10 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea82feasm50243853f8f.24.2025.12.27.01.51.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:51:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829072; 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=9Pdru0MfLIqHbpQU13WkMnFJzrHGBb8pb6UyfGGGtrg=; b=HY57LwHjAifNcKD4Ttj5n/Yo6466Lq8tAb2nmdts0FsSAX/WQTG5jQLUAtJvjeC6wz9Tqq QH2QKGP3xh3zbvmJt7PmFpUSeSWewd0iRhQgsPscm/Y+zQjZd9lNDwVzsQ6gwliX84naDT V4wDDdUtQgCio2Ticccda48Rnb2QaoI= X-MC-Unique: p1M8PQHSPpqmZHKTB_gOrQ-1 X-Mimecast-MFC-AGG-ID: p1M8PQHSPpqmZHKTB_gOrQ_1766829070 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829069; x=1767433869; 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; bh=9Pdru0MfLIqHbpQU13WkMnFJzrHGBb8pb6UyfGGGtrg=; b=f57WaOQSm1650RsHEbbrJlkc7Hn6JfR9ixlB5lgPcGHwOVWzN9DqzAIp6xVhcAeHdQ x08Kv3cGvvf2xKh0z4n8EcQR4X4eW4UjCrIzEUjk/MjsaE5VreeWNhjU2BrheZm5LR3u hpUiwKas4KSM2Pu5xP7aahU/45yTQ4Yq7ZvDa3GW/HXBu58YY+YV+syeT9wk0xTLrl7g kPSFnJzzU0WO3ONC+dkNDmFJI8e7vacg6Bnh/KDBqH4N2dZLJP90OF3Jn4KOan9J+Okh tyT7jPx4iL2ds9lZdGRdjluDOwU00w/kR3RBO0E0rHYcrRwrE07RCOmG8PkZCWpKDewF XxkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829069; x=1767433869; 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; bh=9Pdru0MfLIqHbpQU13WkMnFJzrHGBb8pb6UyfGGGtrg=; b=Ml8CM0fWS9Ln4J1Bwc6RIJau8K3E73KwhuFx1K57oaisejhSzSZ2CtvcgOUHCQKQOK 7c+l46Ltdg9iqBGVESnrj3L2xVEz3BlXwcOrWPAubr+u7uwVYRZqZ3w7MFyxn+OGRLNC Z7P+HLB1uWcx4MOGLz+te69vIlwxsMh2r6ky8de42HTFuiHtZ8uF4iTt2N8g64Xkqxbh x+j4mrpm+XMEeELRinvQDgGAqa+MoDyqVTB1A5Nu0GE/gUF1DvGVWK1KsoxCHpE1lUh+ eqTMFyMpFnn4JFsFIVcyW3SppNCNYgYUlmlwJyBHxoqQBMstTWz72KacqD7qw3fxwdZ3 J+dA== X-Gm-Message-State: AOJu0YxuCMLH7HogM5Gf+MMdO3R75uwQ4tJ9fD20Ob1dO9Ti+VXx3Sg5 z0gBjqokTnRQPhgKw9KaMMKI+vWNsvxo5eB6LzBYi0chGcRvHuDjkKEYcIcSY2fyuqZh3BrtOzf rq4RJ9XrdFajEAIAwSy51ZtNEXVpnTh9Q827kpT83ksGADIh3Eeyx5/NtFGcEavKrKLckOT7VzL m4O90QIIgRYOIOgFHij6WyS39iRt67z41+3Dfk7Nmb X-Gm-Gg: AY/fxX5rgTZ4nhJhBFsGHrmKfWUeOgoegc9RkfYrS+IqSvcKSRSHuzxTZXTK0BIHP4Q cRsLMf8rGJoa8KIOMD/kMQzar0jskqtPmW29mzg/nY4jP/i6pOy2qiuSU4EU0hrRsh53VbM5OMV 3MmX7hZh8Ky0JO6C+rRuEreGN5B0zm4VcTwo6mKXs5woV05jq+LG+w58Ig05vA6MVkFdowvt/i8 5Hgb89n6tUcCRF2DLtQUBWw8nqVpAOT1BcytQOdi/ZGwPaxVje5IAO4RvSxi6AfPOrMu7Xen7N9 2oGMjnL7zc0trnV8doVqIJCvOzrmEBvfGoXMbU1sQSeTaxVmaQq8/wl0kXtkVLt+S9ve+LbGZSI tZm5YBR9SSZJPqvRm3TnKGdVQV1usMsIDOcSjG4E9med7198tVJgTQOCZ1rLGZtnwTvHWuSRZqz lSlV4TDlXGNaWXilw= X-Received: by 2002:a05:6000:2089:b0:430:f449:5f0e with SMTP id ffacd0b85a97d-4324e4c8efemr25992726f8f.16.1766829069119; Sat, 27 Dec 2025 01:51:09 -0800 (PST) X-Google-Smtp-Source: AGHT+IGsS34CJGdZ+xIjgOLEqv9y/QKxx4mI7B05z77snjRxnf/yJJtO40BY2BBNaR29tyc9euOCqQ== X-Received: by 2002:a05:6000:2089:b0:430:f449:5f0e with SMTP id ffacd0b85a97d-4324e4c8efemr25992701f8f.16.1766829068681; Sat, 27 Dec 2025 01:51:08 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Xudong Hao Subject: [PULL 137/153] i386/cpu: Add CPUID.0x1E.0x1 subleaf for AMX instructions Date: Sat, 27 Dec 2025 10:47:42 +0100 Message-ID: <20251227094759.35658-63-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829295732158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Intel Diamond Rapids adds new AMX instructions to support new formats and memory operations [*]. And it introduces the CPUID subleaf 0x1E.0x1 to centralize the discrete AMX feature bits within EAX. For new feature bits (CPUID 0x1E.0x1.EAX[bits 4,6-8]), it's straightforward to add their enurmeration support. In addition to the new features, CPUID 0x1E.0x1.EAX[bits 0-3] are mirrored positions of existing AMX feature bits distributing across the 0x7 leaves. It's not flexible to make these mirror bits have the same names as existing ones, because QEMU would try to set both original bit and mirror bit which would cause warning if host doesn't support 0x1E.0x1 subleaf. Thus, name these mirror bits with "*-mirror" suffix. [*]: Intel Architecture Instruction Set Extensions and Future Features (rev.059). Tested-by: Xudong Hao Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251215073743.4055227-3-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- target/i386/cpu.h | 18 ++++++++++++++++++ target/i386/cpu.c | 25 +++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index be430a73bdd..7b002962e23 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -711,6 +711,7 @@ typedef enum FeatureWord { FEAT_7_2_EDX, /* CPUID[EAX=3D7,ECX=3D2].EDX */ FEAT_24_0_EBX, /* CPUID[EAX=3D0x24,ECX=3D0].EBX */ FEAT_29_0_EBX, /* CPUID[EAX=3D0x29,ECX=3D0].EBX */ + FEAT_1E_1_EAX, /* CPUID[EAX=3D0x1E,ECX=3D1].EAX */ FEATURE_WORDS, } FeatureWord; =20 @@ -1084,6 +1085,23 @@ uint64_t x86_cpu_get_supported_feature_word(X86CPU *= cpu, FeatureWord w); /* Packets which contain IP payload have LIP values */ #define CPUID_14_0_ECX_LIP (1U << 31) =20 +/* AMX_INT8 instruction (mirror of CPUID_7_0_EDX_AMX_INT8) */ +#define CPUID_1E_1_EAX_AMX_INT8_MIRROR (1U << 0) +/* AMX_BF16 instruction (mirror of CPUID_7_0_EDX_AMX_BF16) */ +#define CPUID_1E_1_EAX_AMX_BF16_MIRROR (1U << 1) +/* AMX_COMPLEX instruction (mirror of CPUID_7_1_EDX_AMX_COMPLEX) */ +#define CPUID_1E_1_EAX_AMX_COMPLEX_MIRROR (1U << 2) +/* AMX_FP16 instruction (mirror of CPUID_7_1_EAX_AMX_FP16) */ +#define CPUID_1E_1_EAX_AMX_FP16_MIRROR (1U << 3) +/* AMX_FP8 instruction */ +#define CPUID_1E_1_EAX_AMX_FP8 (1U << 4) +/* AMX_TF32 instruction */ +#define CPUID_1E_1_EAX_AMX_TF32 (1U << 6) +/* AMX_AVX512 instruction */ +#define CPUID_1E_1_EAX_AMX_AVX512 (1U << 7) +/* AMX_MOVRS instruction */ +#define CPUID_1E_1_EAX_AMX_MOVRS (1U << 8) + /* AVX10 128-bit vector support is present */ #define CPUID_24_0_EBX_AVX10_128 (1U << 16) /* AVX10 256-bit vector support is present */ diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 817f78a0c20..1246a9af4a3 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -1037,6 +1037,7 @@ void x86_cpu_vendor_words2str(char *dst, uint32_t ven= dor1, #define TCG_SGX_12_1_EAX_FEATURES 0 #define TCG_24_0_EBX_FEATURES 0 #define TCG_29_0_EBX_FEATURES 0 +#define TCG_1E_1_EAX_FEATURES 0 =20 #if defined CONFIG_USER_ONLY #define CPUID_8000_0008_EBX_KERNEL_FEATURES (CPUID_8000_0008_EBX_IBPB | \ @@ -1332,6 +1333,25 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] =3D= { }, .tcg_features =3D TCG_7_2_EDX_FEATURES, }, + [FEAT_1E_1_EAX] =3D { + .type =3D CPUID_FEATURE_WORD, + .feat_names =3D { + "amx-int8-mirror", "amx-bf16-mirror", "amx-complex-mirror", "a= mx-fp16-mirror", + "amx-fp8", NULL, "amx-tf32", "amx-avx512", + "amx-movrs", NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + }, + .cpuid =3D { + .eax =3D 0x1e, + .needs_ecx =3D true, .ecx =3D 1, + .reg =3D R_EAX, + }, + .tcg_features =3D TCG_1E_1_EAX_FEATURES, + }, [FEAT_24_0_EBX] =3D { .type =3D CPUID_FEATURE_WORD, .feat_names =3D { @@ -8413,8 +8433,13 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index,= uint32_t count, } =20 if (count =3D=3D 0) { + uint32_t unused; + x86_cpu_get_supported_cpuid(0x1E, 0, eax, &unused, + &unused, &unused); /* Highest numbered palette subleaf */ *ebx =3D INTEL_AMX_TMUL_MAX_K | (INTEL_AMX_TMUL_MAX_N << 8); + } else if (count =3D=3D 1) { + *eax =3D env->features[FEAT_1E_1_EAX]; } break; } --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829179; cv=none; d=zohomail.com; s=zohoarc; b=fibH/wXRuNw/N5CYuE9Sb1Yb7HghOqG8JSrr9hEdyagO6olK0p7HmLYTHmo6I7k9luvhNXQphYFOLJx6if8eILlUQhgjwfX1Z0KKUd8ospldErtHkd5t2rCMoXhkvbHfwSKtjl1fUmZUwqcbKHaVaFQNxE1Ca21XIBRpZ3x9Kw4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829179; 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=n1F1HkDukR+wivvRioDvk1EBDQ43e9rqantGbZSklj4=; b=b0RfnsUvFbXXgcgt2/s3F/joByn3G2HtwMtJN3tCSRZYZugvQAiKmXjGrHHtGBEhDKq41/0y2+MMxYRomDVhjxRDFyoitAKdQCR26AALW/q68Kya4TCYctmdatDItCuapWYNaiES2DJW1UUlGFMIrdi9lWiSNZp5pavmXob2gAk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829179476394.13588286884294; Sat, 27 Dec 2025 01:52:59 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQxE-0003ma-Gt; Sat, 27 Dec 2025 04:51:20 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxD-0003il-5z for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:19 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxB-0007TL-3I for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:18 -0500 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-626-ZyF5mJCHPNm8IuISKRz8yA-1; Sat, 27 Dec 2025 04:51:15 -0500 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-42fd46385c0so4267402f8f.0 for ; Sat, 27 Dec 2025 01:51:14 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be395d9cfsm199760545e9.0.2025.12.27.01.51.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:51:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829076; 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=n1F1HkDukR+wivvRioDvk1EBDQ43e9rqantGbZSklj4=; b=YuVH4aRuupa6/yp6YHUkSn6GoSwJ+alDFXPgcdVB2SYfvObxMNQR97d5CJEKn2b52jHM7P xtgNwvNq8KteG8tQRswxTC3uo4kRuSgocUYe4R3FyItXgwS2JeIyyyDPQn3qTsTjHPrIBm kLFuo2UD6f0m5JO5Xuy6tlJvA20u/MA= X-MC-Unique: ZyF5mJCHPNm8IuISKRz8yA-1 X-Mimecast-MFC-AGG-ID: ZyF5mJCHPNm8IuISKRz8yA_1766829074 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829073; x=1767433873; 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; bh=n1F1HkDukR+wivvRioDvk1EBDQ43e9rqantGbZSklj4=; b=FIa/Ds4c2ka0GjQrsooiBZxojGmOLjsAw2/dQx6R6jhYbSyNu+tnV/Ce8qUJ0cKWxY 9OalSGWNYfZHAiuGqaejYey1zQOVog77X0N2ej0SlnoRdbzAg08THDI1v0ahtdImNDD2 so+vGoUkDxW+nFbyrCcMHxRY5EIe8QNisUAsvTPBBFdAKF7YSmGRxKtumgNYQa/Y4vdA bM1IoxuFLmgVR4KUcTNUU/Vpx2Z5kYkvXwokQLBZUV+XcavXW6+k3tsM2Qv7cAXXmONT zqq4z3ryxA5HnqUwCLjpXHrnq1IIZUU4v9bzkrnr/4MdnngJF3lle58Vws8ib2GkYWWi ZkIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829073; x=1767433873; 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; bh=n1F1HkDukR+wivvRioDvk1EBDQ43e9rqantGbZSklj4=; b=J70xc7ehO8xtc1P47zMdxD+WNaNiHZJMfLaB/HL64J1PyeoIkHcrzr6nl08Cic32nF ckv176eQ7TGoCQJzyTx3cQ4OYFxyL4PZraQsu+c2JVQd7y59AQPwtQxrjx9q1/L2gt+e aqgwEM1E7mCz+4T9a4WPuUfecuisgyld0mryaozPcNehWzaZgiDO6GalN7QOqbf+R8ea u3U7Fy0zZAg2ZF9oktQ81rwOHhaBVhNQVcdpqswN+w2typ3g3UD+PrzJu9eyQciUSBW7 GG4OkZ3HBKie26kcFPqqYsmKS8sFSAaRPlN723EeO3wEB06p0JmLrlyQfXZb2Eq4Epcj n7XA== X-Gm-Message-State: AOJu0YzDqLcSyCZrhSiCa2IIRCa8X7diaNlDUyo3XcY7MNZcpjflRHrY VAqGEZj0peusxOjgiH1zy5zSdBf8294Bndlv2l3eIDuXvyYd+aGSw3VMfjyV5MSE7XmITT4iI1N suUrbPtUhP1tnWq+oH2thdUxm1gupvr4fJd7Z22Qp0LeUKk5tcgo3JYSSe1xJPb+h6RF9LSLDr/ c7oxgTLxO6h5RfvIrEIp0SQQjP+LT13IytLuDDEWrP X-Gm-Gg: AY/fxX7c5wsmMArCpdxrhlv5HibUrMIfjg5vj6FHlPsToUoiv2gYotbqJrzXpG2HBOh OuAMuMMSF07u1f7YqkYRO4nHuYDcofkmw1N33HWqZlaGCIUvDs8NSyTwZv0v1Y2aWNOHmEN1+0e QiSt6GSAp48H9HN7sVGvOklCq+eEIaQsShvPvPasYGD8NyOdqb1Hsrecdv1NQfL0X+2GmwQYaax dVXgy4KAZhGmkXfQB424XSfymvigMoA5pgCdNrw8xK8kb4jInvBZ+YWbwywzAWwN08BuQeY2eHY S+R/Kcx0wtPoHTsPRn5hLZIfDTGGgUZ1EGiuYoxkZzO0o+8NUFjAJ1zGjQvQyw2s9dxpEoA4SUm qHWGcIps9qrnYwk1cvImLoip2Bd4d7aXVQmUybGoqWLFB8Z/sVy+jWvHErvrqnPz37wdtQsaP1C 75JYgivawE3XnnngY= X-Received: by 2002:a05:600c:35d1:b0:479:2f95:5179 with SMTP id 5b1f17b1804b1-47d1954a165mr326559955e9.15.1766829072671; Sat, 27 Dec 2025 01:51:12 -0800 (PST) X-Google-Smtp-Source: AGHT+IEgb70Q01MYg55cs9CHh+PyisjLCGWxvtQFRs+opIO9eqt6gTcv5fHqyezkFGRyMig0qYcDXg== X-Received: by 2002:a05:600c:35d1:b0:479:2f95:5179 with SMTP id 5b1f17b1804b1-47d1954a165mr326559615e9.15.1766829072216; Sat, 27 Dec 2025 01:51:12 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Xudong Hao Subject: [PULL 138/153] i386/cpu: Add support for AVX10_VNNI_INT in CPUID enumeration Date: Sat, 27 Dec 2025 10:47:43 +0100 Message-ID: <20251227094759.35658-64-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829181395158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu AVX10_VNNI_INT (0x24.0x1.ECX[bit 2]) is a discrete feature bit introduced on Intel Diamond Rapids, which enumerates the support for EVEX VPDP* instructions for INT8/INT16 [*]. Although Intel AVX10.2 has already included new VPDP* INT8/INT16 VNNI instructions, a bit - AVX10_VNNI_INT - is still be separated. Relevant new instructions can be checked by either CPUID AVX10.2 OR AVX10_VNNI_INT (e.g., VPDPBSSD). Support CPUID 0x24.0x1 subleaf with AVX10_VNNI_INT enumeration for Guest. [*]: Intel Advanced Vector Extensions 10.2 Architecture Specification (rev 5.0). Tested-by: Xudong Hao Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251215073743.4055227-4-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- target/i386/cpu.h | 4 ++++ target/i386/cpu.c | 29 ++++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 7b002962e23..653f14e516c 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -712,6 +712,7 @@ typedef enum FeatureWord { FEAT_24_0_EBX, /* CPUID[EAX=3D0x24,ECX=3D0].EBX */ FEAT_29_0_EBX, /* CPUID[EAX=3D0x29,ECX=3D0].EBX */ FEAT_1E_1_EAX, /* CPUID[EAX=3D0x1E,ECX=3D1].EAX */ + FEAT_24_1_ECX, /* CPUID[EAX=3D0x24,ECX=3D0].ECX */ FEATURE_WORDS, } FeatureWord; =20 @@ -1113,6 +1114,9 @@ uint64_t x86_cpu_get_supported_feature_word(X86CPU *c= pu, FeatureWord w); CPUID_24_0_EBX_AVX10_256 | \ CPUID_24_0_EBX_AVX10_512) =20 +/* AVX10_VNNI_INT instruction */ +#define CPUID_24_1_ECX_AVX10_VNNI_INT (1U << 2) + /* * New Conditional Instructions (NCIs), explicit New Data Destination (NDD) * controls, and explicit Flags Suppression (NF) controls for select sets = of diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 1246a9af4a3..e0d75d170fa 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -1038,6 +1038,7 @@ void x86_cpu_vendor_words2str(char *dst, uint32_t ven= dor1, #define TCG_24_0_EBX_FEATURES 0 #define TCG_29_0_EBX_FEATURES 0 #define TCG_1E_1_EAX_FEATURES 0 +#define TCG_24_1_ECX_FEATURES 0 =20 #if defined CONFIG_USER_ONLY #define CPUID_8000_0008_EBX_KERNEL_FEATURES (CPUID_8000_0008_EBX_IBPB | \ @@ -1385,6 +1386,18 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] =3D= { }, .tcg_features =3D TCG_29_0_EBX_FEATURES, }, + [FEAT_24_1_ECX] =3D { + .type =3D CPUID_FEATURE_WORD, + .feat_names =3D { + [2] =3D "avx10-vnni-int", + }, + .cpuid =3D { + .eax =3D 0x24, + .needs_ecx =3D true, .ecx =3D 1, + .reg =3D R_ECX, + }, + .tcg_features =3D TCG_24_1_ECX_FEATURES, + }, [FEAT_8000_0007_EDX] =3D { .type =3D CPUID_FEATURE_WORD, .feat_names =3D { @@ -2041,6 +2054,11 @@ static FeatureDep feature_dependencies[] =3D { .from =3D { FEAT_7_1_EDX, CPUID_7_1_EDX_APXF }, .to =3D { FEAT_29_0_EBX, ~0ull }, }, + + { + .from =3D { FEAT_7_1_EDX, CPUID_7_1_EDX_AVX10 }, + .to =3D { FEAT_24_1_ECX, ~0ull }, + }, }; =20 typedef struct X86RegisterInfo32 { @@ -8457,8 +8475,17 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index,= uint32_t count, *ebx =3D 0; *ecx =3D 0; *edx =3D 0; - if ((env->features[FEAT_7_1_EDX] & CPUID_7_1_EDX_AVX10) && count = =3D=3D 0) { + + if (!(env->features[FEAT_7_1_EDX] & CPUID_7_1_EDX_AVX10)) { + break; + } + if (count =3D=3D 0) { + uint32_t unused; + x86_cpu_get_supported_cpuid(0x1E, 0, eax, &unused, + &unused, &unused); *ebx =3D env->features[FEAT_24_0_EBX] | env->avx10_version; + } else if (count =3D=3D 1) { + *ecx =3D env->features[FEAT_24_1_ECX]; } break; } --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829098; cv=none; d=zohomail.com; s=zohoarc; b=C2dOMUGgCLJd4qbb4PXOa88cn2dnCRkeeK52TldZKUS/Q3dKmNMyfO0XlCRxtKlxM/PNCwkHV7BjLWmKRidVUhHCvOumUhmzc19Rh8vlO+u2UgrZeF8a+lw/Dn2KAfe8IWeTIVFCiB31r6LtqfoLZSmG0QsUzLE7v7F6LY+Lu7s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829098; 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=10lokxWFZGMcqdpqlElNknUBRptLojUTP6HtAnxwNgg=; b=DtyHYGbCntvpfKRIxab4CGToKEc+1iL2l6jjV22S8vBh4WRbDSgnEiIhZeHYCP+9Go4sk5yd4W6iqoBTvKkZKvEI/Dth8pA7qlUoraWVyLzXIPIIah1utli9lPxVHmL+7w5a5oXw16jBa98uiaTh6zmfUOq1CVFtCrJ1rFCReZ8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829098067442.04346829037524; Sat, 27 Dec 2025 01:51:38 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQxJ-0003wb-RG; Sat, 27 Dec 2025 04:51:25 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxI-0003vv-Nb for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:24 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxG-0007Tx-T6 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:24 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-301-z4HL9WSRPASGhQ_jvH8-vg-1; Sat, 27 Dec 2025 04:51:19 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-4779b3749a8so54955855e9.1 for ; Sat, 27 Dec 2025 01:51:18 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa08d9sm50899132f8f.30.2025.12.27.01.51.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:51:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829082; 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=10lokxWFZGMcqdpqlElNknUBRptLojUTP6HtAnxwNgg=; b=UORLUJEhHIOqgcYhQXdaYlO+F4wIrlfZmxrr5tZqPD9QFAOAov7IGEU+QqZVexDO1KOeFj AsEbHnSULmrjRSJgnsA0sQf/wuGWKN9/lhg6Qi05I/XJT589+ot3tkx5OTOPwCQQs8tufT YR3RCrT0/OdnmmKHmDVfniP+x+3zes4= X-MC-Unique: z4HL9WSRPASGhQ_jvH8-vg-1 X-Mimecast-MFC-AGG-ID: z4HL9WSRPASGhQ_jvH8-vg_1766829078 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829076; x=1767433876; 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; bh=10lokxWFZGMcqdpqlElNknUBRptLojUTP6HtAnxwNgg=; b=D87gBlQodmF1/NxDw6n8wftdHjM3aYI6Dm75VChpW0SP3gVji2DpUK68XnHPe+XjG9 y+EPf0VwaIA9N8yxnHdlKrbCyaxNfhTM1NMX3GTq03kT+BdITWWOe0Ii03126TyztDKb WSeX0EIc78u9dDgUTbqC4x+bDe6U5qfuh3YaBGBJLMk7FdpgBR0UZwM0fbV8xjJhLDrT CsWYFF7ZGQabC9uguc6tKoveb+KwdV/slBCKeqNbpP6gC3l2r1PYisoXM8ZNYpZpg80J AmaGN8ZM0+yuWKaWcozu7rUMM5D4ZblYOhIQtmfuWf0wLxM5u0A4zKRB+71UetMCBgNS 1YtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829076; x=1767433876; 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; bh=10lokxWFZGMcqdpqlElNknUBRptLojUTP6HtAnxwNgg=; b=N4P1oJ9u/pG7dz0aS45datgXNluh8mZ9NpShU5Bw80nZdc3Aq4UFvPLOv1kBh5L6BA eoQcQBl13OzNvoixbfVxedZLFXmdv47RGnIGOvvhyhpZcyLM1ryqi3oWSMK8KLrsxB4b tfrJSHQYqLWf8OnNMMptnjzBAojcOp1BMhvUsCtrBrEBaevJ0+LtC7HB5LRtWbGZbOwe 3St5lDSuJ1/WaU7HCH6Do3VsmWgxCkpJnNv4tXQwqbAQVXWX1qQYRo8WcdfLNcabfMF3 XEKPfN88fzes8QQHQZHLX0W4l/JL45o6cnmVJGIcfkWN+uJ6EiIpadJKm6iOtO6hf5TE vzIQ== X-Gm-Message-State: AOJu0YyCaOIFJT9rtbybQ0QeGA9n4gbZ/AY0bTQkSJBV/UdxKfULF5Oo pbNZKFu+PGdyD/PeN3KTXjuuTdK1VQSdRtkbynD/j1NWF+mn+FVp4/Zlu0jBtKN++64Xa3qJkUk mIbZ1y4tFxty6E2fokdE1gxcB4D6fAVc199O+gAnkKLxNAvvEDTkSgSUr8iWoLyIFdRVzLaaDr/ ph6uqPKBS3V7/g68nQrdC/svYamguozwlNQSJZsRdf X-Gm-Gg: AY/fxX5GC64mZcsG8pK5RqAMrggs58B3C4hReONrCC7Y6vvyq/n4JSjwW8kz3ELCXiR 5xr9gBwndZaq5yKZDSoClP5CeMM1FLG/OcglIHPI5keKjSNsV7879khMLtAhu/Xp1n+BC+cSwfH mzb42Pv79jYInNWpff7WwxGqAnXV+qLPrtxwRNu3Ba+wuvrvhl1qCZ969iLww6fUskjztwPLv6U kyNu4PZO8iTyqv25c0K8IB9oX4TfyoGAQqx8EguxsA9hp19/REIVZo5jA0O7bZNtwZHdJBVElp2 2P8Mbt8xFD34inm1Ab3QqH+gaQUIq5gAbjcjCAOri+jWuGtSy+GIIT7KKqgsSJulmeQslgWUVlE efntFc4fkDTawU/+ncdUGzt2wsDII4h6WaGnXYIGyG2UOdsHR5xdJD/HCUZ0L0pghwjMyNOSm// JQachYdO97Q/80/qY= X-Received: by 2002:a05:600c:1c13:b0:477:63dc:be00 with SMTP id 5b1f17b1804b1-47d195893d6mr275423165e9.25.1766829076577; Sat, 27 Dec 2025 01:51:16 -0800 (PST) X-Google-Smtp-Source: AGHT+IEk+IxJ9khSoPgVmJLFyilGLqqG/nBetPJDxN6bL0VSQZ54fG1CFC4Zo7hWQ3PluJ4gkB2DHA== X-Received: by 2002:a05:600c:1c13:b0:477:63dc:be00 with SMTP id 5b1f17b1804b1-47d195893d6mr275422935e9.25.1766829076129; Sat, 27 Dec 2025 01:51:16 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Xudong Hao Subject: [PULL 139/153] i386/cpu: Support AVX10.2 with AVX10 feature models Date: Sat, 27 Dec 2025 10:47:44 +0100 Message-ID: <20251227094759.35658-65-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829099195158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Intel AVX10 Version 2 (Intel AVX10.2) includes a suite of new instructions delivering new AI features and performance, accelerated media processing, expanded Web Assembly, and Cryptography support, along with enhancements to existing legacy instructions for completeness and efficiency, and it is enumerated as version 2 in CPUID 0x24.0x0.EBX[bits 0-7] [*]. Considerring "Intel CPUs which support Intel AVX10.2 will include an enumeration for AVX10_VNNI_INT (CPUID.24H.01H:ECX.AVX10_VNNI_INT[2])" [*] and EVEX VPDP* instructions for INT8/INT16 (AVX10_VNNI_INT) are detected by either AVX10.2 OR AVX10_VNNI_INT, AVX10_VNNI_INT is part of AVX10.2, so any Intel AVX10.2 implementation lacking the AVX10_VNNI_INT enumeration should be considered buggy hardware. Therefore, it's necessary to set AVX10_VNNI_INT enumeration for Guest when the user specifies AVX10 version 2. For this, introduce AVX10 models to explicitly define the feature bits included in different AVX10 versions. [*]: Intel Advanced Vector Extensions 10.2 Architecture Specification (rev 5.0). Tested-by: Xudong Hao Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251215073743.4055227-5-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- target/i386/cpu.h | 2 + target/i386/cpu.c | 120 +++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 115 insertions(+), 7 deletions(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 653f14e516c..a4a8bc61a99 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -2211,6 +2211,8 @@ typedef struct CPUArchState { FeatureWordArray features; /* AVX10 version */ uint8_t avx10_version; + /* AVX10 (CPUID 0x24) maximum supported sub-leaf. */ + uint8_t avx10_max_subleaf; /* Features that were explicitly enabled/disabled */ FeatureWordArray user_features; uint32_t cpuid_model[12]; diff --git a/target/i386/cpu.c b/target/i386/cpu.c index e0d75d170fa..9c81e4e1f5a 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -2382,6 +2382,40 @@ x86_cpu_def_get_versions(const X86CPUDefinition *def) return def->versions ?: default_version_list; } =20 +/* CPUID 0x24.0x0 (EAX, EBX, ECX, EDX) and 0x24.0x1 (EAX, EBX, ECX, EDX) */ +#define AVX10_FEATURE_WORDS 8 + +typedef struct AVX10VersionDefinition { + const char *name; + /* AVX10 version */ + uint8_t version; + /* AVX10 (CPUID 0x24) maximum supported sub-leaf. */ + uint8_t max_subleaf; + FeatureMask *features; +} AVX10VersionDefinition; + +static const AVX10VersionDefinition builtin_avx10_defs[] =3D { + { + .name =3D "avx10.1", + .version =3D 1, + .max_subleaf =3D 0, + .features =3D (FeatureMask[]) { + { FEAT_7_1_EDX, CPUID_7_1_EDX_AVX10 }, + { FEAT_24_0_EBX, CPUID_24_0_EBX_AVX10_VL_MASK }, + { /* end of list */ } + } + }, + { + .name =3D "avx10.2", + .version =3D 2, + .max_subleaf =3D 1, + .features =3D (FeatureMask[]) { + { FEAT_24_1_ECX, CPUID_24_1_ECX_AVX10_VNNI_INT }, + { /* end of list */ } + } + }, +}; + static const CPUCaches epyc_cache_info =3D { .l1d_cache =3D &(CPUCacheInfo) { .type =3D DATA_CACHE, @@ -7242,6 +7276,65 @@ static void x86_cpuid_set_tsc_freq(Object *obj, Visi= tor *v, const char *name, cpu->env.tsc_khz =3D cpu->env.user_tsc_khz =3D value / 1000; } =20 +static void x86_cpuid_get_avx10_version(Object *obj, Visitor *v, + const char *name, void *opaque, + Error **errp) +{ + X86CPU *cpu =3D X86_CPU(obj); + uint8_t value; + + value =3D cpu->env.avx10_version; + visit_type_uint8(v, name, &value, errp); +} + +static bool x86_cpu_apply_avx10_features(X86CPU *cpu, uint8_t version, + Error **errp) +{ + const AVX10VersionDefinition *def; + CPUX86State *env =3D &cpu->env; + + if (!version) { + env->avx10_version =3D 0; + env->avx10_max_subleaf =3D 0; + return true; + } + + for (int i =3D 0; i < ARRAY_SIZE(builtin_avx10_defs); i++) { + FeatureMask *f; + + def =3D &builtin_avx10_defs[i]; + for (f =3D def->features; f && f->mask; f++) { + env->features[f->index] |=3D f->mask; + } + + if (def->version =3D=3D version) { + env->avx10_version =3D version; + env->avx10_max_subleaf =3D def->max_subleaf; + break; + } + } + + if (def->version < version) { + error_setg(errp, "avx10-version can be at most %d", def->version); + return false; + } + return true; +} + +static void x86_cpuid_set_avx10_version(Object *obj, Visitor *v, + const char *name, void *opaque, + Error **errp) +{ + X86CPU *cpu =3D X86_CPU(obj); + uint8_t value; + + if (!visit_type_uint8(v, name, &value, errp)) { + return; + } + + x86_cpu_apply_avx10_features(cpu, value, errp); +} + /* Generic getter for "feature-words" and "filtered-features" properties */ static void x86_cpu_get_feature_words(Object *obj, Visitor *v, const char *name, void *opaque, @@ -7932,8 +8025,10 @@ static void x86_cpu_load_model(X86CPU *cpu, const X8= 6CPUModel *model) */ object_property_set_str(OBJECT(cpu), "vendor", def->vendor, &error_abo= rt); =20 - object_property_set_uint(OBJECT(cpu), "avx10-version", def->avx10_vers= ion, - &error_abort); + if (def->avx10_version) { + object_property_set_uint(OBJECT(cpu), "avx10-version", + def->avx10_version, &error_abort); + } =20 x86_cpu_apply_version_props(cpu, model); =20 @@ -8480,9 +8575,7 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, = uint32_t count, break; } if (count =3D=3D 0) { - uint32_t unused; - x86_cpu_get_supported_cpuid(0x1E, 0, eax, &unused, - &unused, &unused); + *eax =3D env->avx10_max_subleaf; *ebx =3D env->features[FEAT_24_0_EBX] | env->avx10_version; } else if (count =3D=3D 1) { *ecx =3D env->features[FEAT_24_1_ECX]; @@ -9164,7 +9257,11 @@ void x86_cpu_expand_features(X86CPU *cpu, Error **er= rp) if ((env->features[FEAT_7_1_EDX] & CPUID_7_1_EDX_AVX10) && !env->a= vx10_version) { uint32_t eax, ebx, ecx, edx; x86_cpu_get_supported_cpuid(0x24, 0, &eax, &ebx, &ecx, &edx); - env->avx10_version =3D ebx & 0xff; + + if (!object_property_set_uint(OBJECT(cpu), "avx10-version", + ebx & 0xff, errp)) { + return; + } } } =20 @@ -9393,6 +9490,11 @@ static bool x86_cpu_filter_features(X86CPU *cpu, boo= l verbose) warn_report("%s: avx10.%d. Adjust to avx10.%d", prefix, env->avx10_version, version); } + /* + * Discrete feature bits have been checked and filtered based = on + * host support. So it's safe to change version without revert= ing + * other feature bits. + */ env->avx10_version =3D version; have_filtered_features =3D true; } @@ -10229,7 +10331,6 @@ static const Property x86_cpu_properties[] =3D { DEFINE_PROP_UINT32("min-level", X86CPU, env.cpuid_min_level, 0), DEFINE_PROP_UINT32("min-xlevel", X86CPU, env.cpuid_min_xlevel, 0), DEFINE_PROP_UINT32("min-xlevel2", X86CPU, env.cpuid_min_xlevel2, 0), - DEFINE_PROP_UINT8("avx10-version", X86CPU, env.avx10_version, 0), DEFINE_PROP_UINT64("ucode-rev", X86CPU, ucode_rev, 0), DEFINE_PROP_BOOL("full-cpuid-auto-level", X86CPU, full_cpuid_auto_leve= l, true), DEFINE_PROP_STRING("hv-vendor-id", X86CPU, hyperv_vendor), @@ -10371,6 +10472,11 @@ static void x86_cpu_common_class_init(ObjectClass = *oc, const void *data) x86_cpu_get_unavailable_features, NULL, NULL, NULL); =20 + object_class_property_add(oc, "avx10-version", "uint8", + x86_cpuid_get_avx10_version, + x86_cpuid_set_avx10_version, + NULL, NULL); + #if !defined(CONFIG_USER_ONLY) object_class_property_add(oc, "crash-information", "GuestPanicInformat= ion", x86_cpu_get_crash_info_qom, NULL, NULL, NULL= ); --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829236; cv=none; d=zohomail.com; s=zohoarc; b=JBpZuEaMr58i0mjXa3/sQCFINJp/0hESgFULDsdIgojRb2DE6MN1BUUFi+kXRzKCPBG0BdB30eA/6u2cW5FsAj+0NYZTx+jsYYYvExNH5rru2mnPjCXiuZTePgRt+2rEJoeA+2rnsRK7+qt1kIlt0ToVEu+NhE1aa4dfgy31Fqw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829236; 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=FcJUvHmJ46TsExg3IDNJH3LUWy0R3ZpUqKzgmh9etUA=; b=IJ2IS7jeHPA2adJdg5lGk+YxZYP8IVkT3rZMJAx9uXkalGOzt1H8AoYpbXhvRIAWD6EZskCxc1QjT//jMDbb/VEAajK6LOGfiwPNPwzEgbxtvmeVe1ue0ZqoKi6u3o0eeTWaJDEavS7DZObeugp1W37I6Ucn2rt673SZC12lHqg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829236701950.8900620209724; Sat, 27 Dec 2025 01:53:56 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQxL-0003zc-EK; Sat, 27 Dec 2025 04:51:27 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxJ-0003wf-UH for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:25 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxI-0007U3-Az for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:25 -0500 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-387-V8D80GWmNF-jda9TqvLWRA-1; Sat, 27 Dec 2025 04:51:22 -0500 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-4325ddc5babso2697060f8f.0 for ; Sat, 27 Dec 2025 01:51:22 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be2723d19sm522660055e9.2.2025.12.27.01.51.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:51:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829083; 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=FcJUvHmJ46TsExg3IDNJH3LUWy0R3ZpUqKzgmh9etUA=; b=WPDLPhMhtF/Nsao/SBKKGzxp2TSxWHvnCp0rfJTiDzfH+sB4tnHZhlhTTYEXoQx5eY58S3 kbxI7MGQ+7P1PBfRalia07lctQBbjheyPuG6vwdnf6lokD3YWv3T3CUTzpzcGWc1lY7M6N sERLDUvMFkiG9LbKSjqr/KwOmAjltR4= X-MC-Unique: V8D80GWmNF-jda9TqvLWRA-1 X-Mimecast-MFC-AGG-ID: V8D80GWmNF-jda9TqvLWRA_1766829081 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829080; x=1767433880; 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; bh=FcJUvHmJ46TsExg3IDNJH3LUWy0R3ZpUqKzgmh9etUA=; b=NnEyg7Mv943j+JsDuFM+VDg2SC9T11eO8JmhVU8qvnGRZ265V3Sv5EcffSzEBfP8g1 AjXXJhbxxBmG7ddQUto+Cq9lut0cwUjFkI8n3Mow/nTWKDING9PTaPp7UGOc5p/pyDms M6DEKCS4DxV0ILECoCVkh2Fj6ebbdIzbD31Qt7dTMkD5lnW3S3oQNzD2TmnF4NzL7UY+ RLCTCbrfdS8Pd9XV8mzze+jVpjAuZWwCbKI/NByWk8eUz0z20FvKQPX5inQrfgZA/Bqx yT8wc5JAmxDkgOeKYmqqH2H+PC+KKEir9CEEZWPNLXCrynqPSjEoWv/tgt+9JwhYA1Lh Bz+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829080; x=1767433880; 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; bh=FcJUvHmJ46TsExg3IDNJH3LUWy0R3ZpUqKzgmh9etUA=; b=hWAZlpPdfWZvmnLgdN5z1Qd+Ep65WReEXANI0dLX0iiDV9NSq2rTYk8BwoyrsRV/H2 mzL6TNynCXJQUjhkQpLZfdQWEKx5UlAaoEMNAKojZKf1B2buQh8V6QksdquRXH8fkG5L owS6xmjN5oIHe9xByJdmyc/uNZnIuNLbjyEUy1UAdbkjw80NZOLh57JfjhD+DXcQlVJk 6sXvEBGXVhsww2wLoVv9ztHpz+tF8onCHbQ/A8C+4vcKZ6geVvtn8wBV9KNCwE2ZVWJ5 LRlcMUlBVXSmyT3sMqns8Hqabir5VbMo0JAZgMMTDvsyt96Srr11r9SgxWFFu565DyPt Y1ow== X-Gm-Message-State: AOJu0Yw58z5sO8+974MhTrETmjCcptlPTTn3II4katAunhL/a4rDchL7 VfJhODXeqBwa6LJ4SVvIiT9NGjElTQzA2mBnQaG7EGaWAsN3TfAZfNsGwEs0E6MZ5y5phKoSMrk QACFh0nMCQy2f7g/5QI2lbck8nYg00E5Gf39QiV9faiIecbMuDlgNE2p+D5aQD2CfJ/ctinszDy hm1VZclyxRw7TDpd22x1NOeIYE63st2KtpAxCU/26O X-Gm-Gg: AY/fxX4yg8ZStfSLsBO+pu86hUOKj29EN83clIjjkljRUEuzqBdoUe7HDLelh+vBAVU ghHFe3WOrabA0zFQkhRQHMDF9jbSqod3kFYvop9J154OI80V3vg3tUuKR4n+lCyPmhTxOzGx4oS Wf8a+wWjHcMwwUQHJPJmQ51sNtqBWj1In6uncxj/CI7mJ8u4I3K9RXy43vgZ++nHhBxNaG8RerB ynAM4O5XXVSbMe4IIkf4UeXNAFp0izBet9MdtIg/R32AHucOknJJxVHCNo6wog6lNCNI5GpcmKk Oql11KCeC9Y2CD8NS54xZxyapkUhTH25HvMwP90ct8MR/j53NOPsEtpd9ErECkn9Jg1LG0MJ1qS 6ZVwYDQe3h/t5tJCMtP1FBui+CJjPDYjBTCQowdWpKvuoJAkrkJx7s6twJSc8u/ReNjbZSWrWtV gLjZvYFQSDUyrZVMk= X-Received: by 2002:a05:600c:4fd3:b0:477:a9e:859a with SMTP id 5b1f17b1804b1-47d1958443emr284469735e9.22.1766829080305; Sat, 27 Dec 2025 01:51:20 -0800 (PST) X-Google-Smtp-Source: AGHT+IHH09QZu0KVvsdGTIx1iaGVQarb5V2wVlqvaPCn6AKzK13VObPh3WkEdnkeMGOW6fU0pTkgKQ== X-Received: by 2002:a05:600c:4fd3:b0:477:a9e:859a with SMTP id 5b1f17b1804b1-47d1958443emr284469555e9.22.1766829079913; Sat, 27 Dec 2025 01:51:19 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Xudong Hao Subject: [PULL 140/153] i386/cpu: Add a helper to get host avx10 version Date: Sat, 27 Dec 2025 10:47:45 +0100 Message-ID: <20251227094759.35658-66-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829237519158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Factor out a helper to get host avx10 version, to reduce duplicate codes. Tested-by: Xudong Hao Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251215073743.4055227-6-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- target/i386/cpu.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 9c81e4e1f5a..c460e3bec7c 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -7757,6 +7757,13 @@ CpuDefinitionInfoList *qmp_query_cpu_definitions(Err= or **errp) =20 #endif /* !CONFIG_USER_ONLY */ =20 +static uint8_t x86_cpu_get_host_avx10_version(void) +{ + uint32_t eax, ebx, ecx, edx; + x86_cpu_get_supported_cpuid(0x24, 0, &eax, &ebx, &ecx, &edx); + return ebx & 0xff; +} + uint64_t x86_cpu_get_supported_feature_word(X86CPU *cpu, FeatureWord w) { FeatureWordInfo *wi =3D &feature_word_info[w]; @@ -9255,11 +9262,10 @@ void x86_cpu_expand_features(X86CPU *cpu, Error **e= rrp) } =20 if ((env->features[FEAT_7_1_EDX] & CPUID_7_1_EDX_AVX10) && !env->a= vx10_version) { - uint32_t eax, ebx, ecx, edx; - x86_cpu_get_supported_cpuid(0x24, 0, &eax, &ebx, &ecx, &edx); + uint8_t version =3D x86_cpu_get_host_avx10_version(); =20 if (!object_property_set_uint(OBJECT(cpu), "avx10-version", - ebx & 0xff, errp)) { + version, errp)) { return; } } @@ -9481,9 +9487,7 @@ static bool x86_cpu_filter_features(X86CPU *cpu, bool= verbose) have_filtered_features =3D x86_cpu_have_filtered_features(cpu); =20 if (env->features[FEAT_7_1_EDX] & CPUID_7_1_EDX_AVX10) { - x86_cpu_get_supported_cpuid(0x24, 0, - &eax_0, &ebx_0, &ecx_0, &edx_0); - uint8_t version =3D ebx_0 & 0xff; + uint8_t version =3D x86_cpu_get_host_avx10_version(); =20 if (version < env->avx10_version) { if (prefix) { --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829187; cv=none; d=zohomail.com; s=zohoarc; b=bqVzB4I8zSZbFo1INmeJbLTMC+wMaVpKIr7jSg75HHE4ZdhQTe+cdU8dLcybJ1+Iw+79UhdrAnR9lSm5dPLZveZjB2rykEM2S07Yjh60tI5qUf37pd/lT2lMaU69prUHetujaRyHP7mUymICsgfgtWApVVtGsldIpJXXp4hFg/k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829187; 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=NMfeC1qlGyQBU+oYdudT1wA8cDp85oJp5sp29r1hMGw=; b=k29nIiBKXfIpW5nBA8v/3DJgDEmoadutfymHaGKATyD6bDlsnPYeB6qxT/+HGJQgqe2jJyOZIgmvNzG1OYhPSrvIZtntDvL1UeAhiFnYL2JJZFjKtLfDIvJstAwbXTmAoYHGBDVIh8GEF9lKJEFIrZNkCB8+UWDoSYEVjA2MPVA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829187086155.35092091087813; Sat, 27 Dec 2025 01:53:07 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQxS-00047F-EW; Sat, 27 Dec 2025 04:51:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxO-00042B-6K for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:30 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxM-0007UT-Ll for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:29 -0500 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-477-Xq9W42MgOr2b2o305_2TlA-1; Sat, 27 Dec 2025 04:51:26 -0500 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-430f57cd2caso7690434f8f.0 for ; Sat, 27 Dec 2025 01:51:26 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa2beasm49032870f8f.33.2025.12.27.01.51.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:51:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829088; 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=NMfeC1qlGyQBU+oYdudT1wA8cDp85oJp5sp29r1hMGw=; b=X5C99Zr+cjAmANcDSBX9e/5xi/qHOEVTXuk9Z+G0pPqtSS4qoWhd92VX0tOKDrg5zPbmfX rou6tidbO5ttMvDIxIqRx3QXtIAbvrLLXyWaDs88Ygc4X2MygWXoMu8qN3y/I1rvrlXsvW U3kOwAUmR8Ebkbd+OJb+/YWtNxuArg0= X-MC-Unique: Xq9W42MgOr2b2o305_2TlA-1 X-Mimecast-MFC-AGG-ID: Xq9W42MgOr2b2o305_2TlA_1766829085 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829084; x=1767433884; 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; bh=NMfeC1qlGyQBU+oYdudT1wA8cDp85oJp5sp29r1hMGw=; b=Flei8qsKhJOFSd1Nhzdo2s9rxBnDBFWDhDlPiCGVtiOe6+CGJT5oHGoy2pRoNBZkyF vOO701HllRR0N8Mt7H+yXE5XeFGzACUIiVl6QJvR3uijSycaEWloHutIOy/5uig0wEU8 MJceTIF/B882An8x5dPBVWiKB36p/7xwNVzVBpCYzb9tTT/F1oUdi8qjqkVlnwIyip6N LYdKKLdNs/Y+ikn4Zc7/Zywt46ESnhfuNVtIe9hDe7tCvDv8zMsyCB+DV13/FiaBjom1 JYznewkHK7oALEOFTC1cqNmplhdY5Vkm57psnDgaxZouQg7m4RdDmxHKLotTOaByUNbI t/zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829084; x=1767433884; 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; bh=NMfeC1qlGyQBU+oYdudT1wA8cDp85oJp5sp29r1hMGw=; b=U6rYBQ7AOkTFAjQIpqOY+JFJCoqKful9zDPzeaQQ9iM6PU1LHWeJEy4rpX5VMOIN81 fywpwCfEk5C87X6RR0g2lXIssem3qHdv5wxLutPHxRN8LXBLKvK66JTgb4Xd+N+eRx5C dDVJxt2pulKLSdRpOM40Yc5FunOU0xuxB4wv0oc4+Jo4/bv2pR1NZGbCQI7TYO8SUxR5 qsrY6QKf7PvPm57y3mGE47E6yLRz5CSi4FS9HP6NBOh+DHPteMaZ/hByd0uDazl1Rond sQQWHfTPds9MjZOhxTYDWuTiJW4iUmRFMxlq45NkkK1PaksP7NcqZt4Ftj4Qg6X6aViG npOQ== X-Gm-Message-State: AOJu0YzSrBsClnudr5DtrhCHHs8eVgY5dzBcQF8RWdo2AOOna0kM33rS tPhSxmoLsrXHuRBPGjUQSSTSeFQh3Tug8vK6OSwVMkChXRCINuWTl5VszcTTsBC963Pxs1lH0Y2 cWossHDYo3dkf8AiNVKV5CfhBApoxlQMGyD8jGVKeCVeDC1s+qQg+8tnjTEoCC5yh8SoOqbhTv4 ukg3oa/y2Amp3k/An8chRhntvv4GJREEBCIlDkEp6D X-Gm-Gg: AY/fxX4WctT2DvZf/0+jegb9AaZkR0uS5r2q01nqEmzXs72e1BQDoZ1UYmBQaCZMujp 2HaTi4eGW84HscNUmVxZ4l0BroDCz+Et11HCO/CksR7oXYWs1HkICcYzG9q4KVUvYe67CdHg2h3 IB4D/kEgskbEYf0kDqmSIlFzruzFIEt9q7PnG3hZTL/trapV5fkMOiXv+ry18TtPM+Q8UDWUhdn M8x1gGoRRKI1esg7KC87xs4hEHH17p0jNqlPHKnLnIvwRg+4rM2Hx1KPsEjHmU/xtO4Rce4Q1Mx Uzf2/+VXzcYcXOk65hVxhDHWSXv1izu5/Q11qDFpIK0lDwVoVVNsOotj+lhCeXyA3Bk+9aeHiF+ CcDaXIvi2lZfsyQzFHY6Fs0wrLs/7JujoEc1qByBci57N+2i1TerMKRZ4xOhEDZxsQKC2SAmpvy qeKByxZlL9wB8+R7I= X-Received: by 2002:a5d:58e9:0:b0:432:5b81:480 with SMTP id ffacd0b85a97d-4325b810a80mr18706711f8f.24.1766829083870; Sat, 27 Dec 2025 01:51:23 -0800 (PST) X-Google-Smtp-Source: AGHT+IFd3Wt98qUIwz/sQy4OqXdV8R0vtPiYE39vdb56TeZqYjOLazBmxyoqQkgWex7kXwAciA1cHw== X-Received: by 2002:a5d:58e9:0:b0:432:5b81:480 with SMTP id ffacd0b85a97d-4325b810a80mr18706693f8f.24.1766829083343; Sat, 27 Dec 2025 01:51:23 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Xudong Hao Subject: [PULL 141/153] i386/cpu: Allow unsupported avx10_version with x-force-features Date: Sat, 27 Dec 2025 10:47:46 +0100 Message-ID: <20251227094759.35658-67-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829187391158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu The "force_features" ("x-force-features" property) forces setting feature even if host doesn't support, but also reports the warning. Given its function, it's useful for debug, so even if the AVX10 version is unsupported by host, force to set this AVX10 version if x-force-features=3Don. Tested-by: Xudong Hao Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251215073743.4055227-7-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- target/i386/cpu.c | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index c460e3bec7c..f62bd48d4b0 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -9490,16 +9490,27 @@ static bool x86_cpu_filter_features(X86CPU *cpu, bo= ol verbose) uint8_t version =3D x86_cpu_get_host_avx10_version(); =20 if (version < env->avx10_version) { - if (prefix) { - warn_report("%s: avx10.%d. Adjust to avx10.%d", - prefix, env->avx10_version, version); - } /* - * Discrete feature bits have been checked and filtered based = on - * host support. So it's safe to change version without revert= ing - * other feature bits. + * With x-force-features=3Don, CPUID_7_1_EDX_AVX10 will not be= masked + * off, so there's no need to zero avx10 version. */ - env->avx10_version =3D version; + if (!cpu->force_features) { + if (prefix) { + warn_report("%s: avx10.%d. Adjust to avx10.%d", + prefix, env->avx10_version, version); + } + /* + * Discrete feature bits have been checked and filtered ba= sed + * on host support. So it's safe to change version without + * reverting other feature bits. + */ + env->avx10_version =3D version; + } else { + if (prefix) { + warn_report("%s: avx10.%d.", + prefix, env->avx10_version); + } + } have_filtered_features =3D true; } } else if (env->avx10_version) { --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829336; cv=none; d=zohomail.com; s=zohoarc; b=AHYFM5DMvAvPxK3SXMo2k53/gd5wWBPhOH/UYSYIxoZ4zTAuDFbEbIwfGzKLhd4btLI7gB8Ter50fkjgS3jz05rDEsRX2aul1EBZ2iM/1hVANJBwZsBpspXpxgkncBMRDb2rw7/WNI8MwPa3aVlJt7DQEeQFwCc6cs9wLCL/kNE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829336; 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=hkizW9CIJa8Y7ebeAJUdAOMzr6q4+NzvoTNqdXU8uVk=; b=U98abvuI5CX+oHcTTwwuHtPNlJ5vrKqlsb/z033txxBIlK+cQg6I5xvbDZ9Av9Pfs/Mn3s04+g0G+WG1P4Sg8V71XMxSajoiHeW9F6Lzg/ykmt0WmEXTxitH3vbt1pWVAHSVX4AawqWR8EGwgUSJwQNOJO/cDCCLufnLQFPTi3I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829336297446.7638899977752; Sat, 27 Dec 2025 01:55:36 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQxT-0004C7-2k; Sat, 27 Dec 2025 04:51:35 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxS-000473-B8 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:34 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxQ-0007V0-9h for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:33 -0500 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-215-dI3KJ3q9NVG0rvGeRF7g1Q-1; Sat, 27 Dec 2025 04:51:30 -0500 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-4325ddc5babso2697081f8f.0 for ; Sat, 27 Dec 2025 01:51:29 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea1aee5sm51028869f8f.4.2025.12.27.01.51.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:51:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829091; 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=hkizW9CIJa8Y7ebeAJUdAOMzr6q4+NzvoTNqdXU8uVk=; b=d3kNY5xODoFakyyKguLG3Syxnee28osV/8MqWrIxDxaIT0rFsXiLyuALRo5vODqAHtdFCE BlHSMWWK6tBLQtFYI1Sz8TOlJNL89lvujkepcmf6M77iW692LdSrmprzlv3/g132EI/v37 ksjrwm203GkQ4PDhxOQj4Op8+YtxB+Q= X-MC-Unique: dI3KJ3q9NVG0rvGeRF7g1Q-1 X-Mimecast-MFC-AGG-ID: dI3KJ3q9NVG0rvGeRF7g1Q_1766829089 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829088; x=1767433888; 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; bh=hkizW9CIJa8Y7ebeAJUdAOMzr6q4+NzvoTNqdXU8uVk=; b=WbaVvuZcfCn7tQpKerHlnAObCjBV0xzQmTTXcS8wq0REI9EY1TtgXjvQ0d1XFdhHUr metI/bhhZJlB42UhcySC42FQZsqlDBQi5Gs71bq2RGpTmLWfrZ1/kMez5kschhFT61v1 KbolpJUlopmNGrbX5u4ApgA1XineGPl6mfGF0VeaJSzid2L2b3qv0CyjwNYz0OWEiAOu klAfFQJt5T1mmzD5XdDPDy29nxbyT+V/Ljr10tLurUdD2Nfj3usfyoPgZkT+Zyz89+2N jQLmRYWDuMYcatue8UURHvbfW5ugj5V/nPUFFa6koDyrJIMsH12HvkMUe5mfkqoTGBbI X+tA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829088; x=1767433888; 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; bh=hkizW9CIJa8Y7ebeAJUdAOMzr6q4+NzvoTNqdXU8uVk=; b=bXfRCpHxxNXMu3Q5UpdCVE9F/9yZsMdev0GEALugnGTHLKwjSHytD/z8On8Rr3lQbu wZ2JTC2tM7i7012cbXs3AnCtOYgmWNRfu2vCAGN/hmJ602yvDxVqlsYrL9cF3tOryJVH B+WPdchvxgHeNOhOFpRDp8PaWlnGrBVQGmj5gnn/IXbiTOS+pbY8+y3o2X4PrCcV5WZe Ualyz2O831WpzWLDUz3ouxp2+wj1ypErlM9iQISWqcC6o3wCPYWeC6k5C0B6L81B00fj s9mPfoXoMJg/XiTmZR1GUl4EiGEWfsbQTDNH2qmlUNOzAVmbFumWe6O3T9pVLZ3r2cJu U6iQ== X-Gm-Message-State: AOJu0YzduUVLYWPVbfmcb/lad3sTIHfot1nBKBA/cH+5m4ADv2eSTkUv GhKF2cGHVJds/HsfOhNcaA4JykCSdxl2cK6a3+9FJcJC4CQt8fkPi115R/aImpmBzhF+1IMvkOM MjT4kUWPpfH3hIQe/crqaF1xpkbMTejV1cSW2JupcfJACuxO4xkQOFevFIMhXnQpBwX7bWZIocT 7KsCmLlxQ/hSoS1MZ//TjzeQOstOsRVruzRhFLpQqc X-Gm-Gg: AY/fxX7R3iILnOsJR7EfP6LeQ9Xh7vqfhDGZeBZrvNcA3EL8/MNfNbX3Rb8ylddrZ/A gtku7EbXb/3uljiRRZD32vL1OP28GI26Ph3RI18V2dY/0aZTFqvZu8Ql0d2k2Cz+HXGr9SWzK4p K/CudSArnH/N+Y3lF5MqwfqeVl7ITrdFC4Wr5MSm47f4KvfGNIG42eJWPPbfrb+JiDvDOB13fSd 0GoLPfbsFzOFPzlFCeJDmB6vlDbZhO9vipm+OrgNxfQ4IpNR1duXZxriotKkIsVeZpAVCW5voGt kllKXNrBAUWKa7FIkkPEjA5fv/aie/r/q4VNz5eoVj/ZnqUxZvBO7IGpOZkNYZMkTa1ZTkce+IB 7JNJNTYBwZw8oLbHtG3HfOM0IH3jfSBxRXNcaA/9lPjtwGeHv0RIFxkFs43p+eX0D4t1UvxpQxd GGG7Bv1v4jBMcjpQ4= X-Received: by 2002:a05:6000:1ac7:b0:432:84f9:9802 with SMTP id ffacd0b85a97d-43284f99837mr4743816f8f.49.1766829087958; Sat, 27 Dec 2025 01:51:27 -0800 (PST) X-Google-Smtp-Source: AGHT+IGDAudvPclDrAayeF22lRCBKqgs/WFCCVLnOyuMv+2UEMvAZ/Cu2TraGkumcrFo94Za4/PUPw== X-Received: by 2002:a05:6000:1ac7:b0:432:84f9:9802 with SMTP id ffacd0b85a97d-43284f99837mr4743788f8f.49.1766829087476; Sat, 27 Dec 2025 01:51:27 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Xudong Hao Subject: [PULL 142/153] i386/cpu: Allow cache to be shared at thread level Date: Sat, 27 Dec 2025 10:47:47 +0100 Message-ID: <20251227094759.35658-68-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829337885158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu In CPUID 0x4 leaf, it's possible to make the cache privated at thread level when there's no HT within the core. In this case, while cache per thread and cache per core are essentially identical, their topology information differs in CPUID 0x4. Diamond Rapids assigns the L1 i/d cache at the thread level. To allow accurate emulation of DMR cache topology, remove the cache-per-thread restriction in max_thread_ids_for_cache(), which enables CPUID 0x4 to support cache per thread topology. Given that after adding thread-level support, the topology offset information required by max_thread_ids_for_cache() can be sufficiently provided by apicid_offset_by_topo_level(), so it's straightforward to re-implement max_thread_ids_for_cache() based on apicid_offset_by_topo_level() to reduce redundant duplicate codes. Tested-by: Xudong Hao Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251215073743.4055227-8-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- target/i386/cpu.c | 65 +++++++++++++++-------------------------------- 1 file changed, 21 insertions(+), 44 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index f62bd48d4b0..4ed7f4f1c99 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -304,33 +304,30 @@ static void encode_cache_cpuid2(X86CPU *cpu, ((t) =3D=3D UNIFIED_CACHE) ? CACHE_TYPE_UNIFIED : \ 0 /* Invalid value */) =20 +static uint32_t apicid_offset_by_topo_level(X86CPUTopoInfo *topo_info, + enum CpuTopologyLevel topo_lev= el) +{ + switch (topo_level) { + case CPU_TOPOLOGY_LEVEL_THREAD: + return 0; + case CPU_TOPOLOGY_LEVEL_CORE: + return apicid_core_offset(topo_info); + case CPU_TOPOLOGY_LEVEL_MODULE: + return apicid_module_offset(topo_info); + case CPU_TOPOLOGY_LEVEL_DIE: + return apicid_die_offset(topo_info); + case CPU_TOPOLOGY_LEVEL_SOCKET: + return apicid_pkg_offset(topo_info); + default: + g_assert_not_reached(); + } + return 0; +} + static uint32_t max_thread_ids_for_cache(X86CPUTopoInfo *topo_info, enum CpuTopologyLevel share_level) { - uint32_t num_ids =3D 0; - - switch (share_level) { - case CPU_TOPOLOGY_LEVEL_CORE: - num_ids =3D 1 << apicid_core_offset(topo_info); - break; - case CPU_TOPOLOGY_LEVEL_MODULE: - num_ids =3D 1 << apicid_module_offset(topo_info); - break; - case CPU_TOPOLOGY_LEVEL_DIE: - num_ids =3D 1 << apicid_die_offset(topo_info); - break; - case CPU_TOPOLOGY_LEVEL_SOCKET: - num_ids =3D 1 << apicid_pkg_offset(topo_info); - break; - default: - /* - * Currently there is no use case for THREAD, so use - * assert directly to facilitate debugging. - */ - g_assert_not_reached(); - } - - return num_ids - 1; + return (1 << apicid_offset_by_topo_level(topo_info, share_level)) - 1; } =20 static uint32_t max_core_ids_in_package(X86CPUTopoInfo *topo_info) @@ -398,26 +395,6 @@ static uint32_t num_threads_by_topo_level(X86CPUTopoIn= fo *topo_info, return 0; } =20 -static uint32_t apicid_offset_by_topo_level(X86CPUTopoInfo *topo_info, - enum CpuTopologyLevel topo_lev= el) -{ - switch (topo_level) { - case CPU_TOPOLOGY_LEVEL_THREAD: - return 0; - case CPU_TOPOLOGY_LEVEL_CORE: - return apicid_core_offset(topo_info); - case CPU_TOPOLOGY_LEVEL_MODULE: - return apicid_module_offset(topo_info); - case CPU_TOPOLOGY_LEVEL_DIE: - return apicid_die_offset(topo_info); - case CPU_TOPOLOGY_LEVEL_SOCKET: - return apicid_pkg_offset(topo_info); - default: - g_assert_not_reached(); - } - return 0; -} - static uint32_t cpuid1f_topo_type(enum CpuTopologyLevel topo_level) { switch (topo_level) { --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829293; cv=none; d=zohomail.com; s=zohoarc; b=KOyaSNMXVzUD0yQUwUu52uS/yzD9QzwW7VWuQ2S6LWcqrJ0Jl1KHaH/95sGAmngAXeP3vAzfri4meCGTrrGbVGcdenRCqzCkdvfob1fTnt6cFQURI0A4VlUrU+OtqIzPAil+BsjxjQJL96dXAMTETtf5biW2PTXjLbZwIhATGyg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829293; 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=XCaG1nwgpbXIQ3m8UmXg5hYwFvm7L1S7HW3EI+DXVS0=; b=TdA+vweyNF15RfDL1y237FnaYMBnarq7swzdzeRZrfh742knYKrcuI8DsiZ669dtP72ueKncLZ3rRssq2PsokKPzo+jWTSf/J2WcTzvnEZr2M9kG3AV78hCZ/y2tkPPregenTaJpELZTcCR/V4JbguPZfJHnpyYuqqaYDGrc3LQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829293928289.670431358746; Sat, 27 Dec 2025 01:54:53 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQxW-0004gI-Vq; Sat, 27 Dec 2025 04:51:39 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxV-0004UQ-Dk for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:37 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxT-0007VN-RY for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:37 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-518-Ukb74MjcOAuldMS2cAQYxQ-1; Sat, 27 Dec 2025 04:51:33 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-477c49f273fso99694635e9.3 for ; Sat, 27 Dec 2025 01:51:33 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be272eaf8sm483489325e9.5.2025.12.27.01.51.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:51:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829095; 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=XCaG1nwgpbXIQ3m8UmXg5hYwFvm7L1S7HW3EI+DXVS0=; b=UzuPnwDJ4QXD5gHOylb1D/ygUtbTERkUf0HAX6M9VDo1SeFgPc9ACcdqq6MC7/xMh4cuVQ SiwNGw7McAh7IEnmbbK25B3gIfn+lGBJwFXy2qr5APolf0vDSJ9MNvvPJVytCtK/oHIEBx LEQEH3g1TlbDsBHQIEVGfOnF3yH/fBE= X-MC-Unique: Ukb74MjcOAuldMS2cAQYxQ-1 X-Mimecast-MFC-AGG-ID: Ukb74MjcOAuldMS2cAQYxQ_1766829092 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829091; x=1767433891; 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; bh=XCaG1nwgpbXIQ3m8UmXg5hYwFvm7L1S7HW3EI+DXVS0=; b=c0orhhwpcWeYZRXuRu8v9/7jchnQKyokR9x++K0H05tWm4r+1iTKTZAy1oYF4tl/Mi 5bQ0rubrYEFsQcCTV1GKY4uHDqwg1ly6/ZDfJbBh1GHiQHu0DYJXjmDVwH8Jxl1B3TSn 9S47sG5e/UGMu2BZ60EHcAfczLJkLc3/sj88nuX/ShpUv1aS5f8swc1E/3Gcyx6lrGlY YLiW3DMtyvyC7AVtaB0dyf5S1ZG7ZG/5m80fIIdDqKMOV/4VhTxJU1bSRtJ7O341aiAR jbbW3wrWUSAbIDetGFTCUk+4Luq/BEBQD6XzBWOHkmi2wfR562weEsbkV8IG9JTzGWqH GcSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829091; x=1767433891; 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; bh=XCaG1nwgpbXIQ3m8UmXg5hYwFvm7L1S7HW3EI+DXVS0=; b=gytTmRRHy6gZpG9Q/TNfG4bxS7HPbRH3PU4MJQKweRNbjhpWZzs4QRh9WVa7BXAu+s 3gpytXkIwNWDzJtj0TiNfK1X/dazZ3R+28lHthT49025b2mTzIih8ln3aKsN0+AXsB1z yebY/1omIsoN7JkkXFEbhDvbqoYZJB/x3shmNw5QNJURjF11vl43kritFQXfzAvPOvab JktnDWTFZefsOFK3k3jYc94dRJVzJ8y3H5+8KHjncgsZUR5f97L5Ax/WeuWpbnt9qUQa wj1xC0FcBX1DMfq1d1Wx7pkd5pDiCvDV28eu+yKJY/74ihrJt2J0JTgbx9UZbjUO4LMw p3hA== X-Gm-Message-State: AOJu0YzJoR6bY0eZONpkfwJ/e2DLEGigGrbsTeU68DCNdv8zoS17HRxa BzxRgwnuIimpW5oI+TAlxmMe8V6gU1iFGJLPpOuoVKsMJthnf5cyk3/XF8QWYGTd2o/GG4iJlZW 6wNcN0Rv4GEOnfzBYHlleTeouYzWpMb9ALX8jFdENiLX+LJ62xlczi6G3urWPiyWnh4G5vnA9AN Csk5uvui+oq0TVyAgCvSHyoBTERaLvN7JeQcix0C1i X-Gm-Gg: AY/fxX79XnFOm4vLDBgqTzqVUctnQgSD+fO4EQzvpbri6U/cwss7wufanqxR0FNJtEZ 4ITYBUYJt/SM+43LZxtIMRGt8owFCFr8vtWqSxLLvvyGUPhbgm2LxKhZFTLQY4aTI39X7PsBwBS ifjy2RLa/Mms7sXU+0dJX4TYp+9QvcHW+KcVAyUEfICMwfkFbXErGa0bX/RewH7QjT/EJvVrNfX iklX2HecFmPDfEcWM5hl8HX/4vDlHsXD6RV4Aoc+YESVLXAslqZzGucemKLpLmF+wtK1pXmJ8Vo Be9Ijn6PAiyQsE10zNTpYT5KuYNurDkp10JZWBeyq+J3Qq9Dl3QKUYZ4/9rXlQEncV682yO/BH4 f8naFCnK5xkA90U7km/BbmiJJ82jQeQUV0szGbVg65MTSD5VuTEhy3MzdPwSh/yUYDc4GWTNp/R VWZYj7ZlFmg4ihYQU= X-Received: by 2002:a05:600c:3b94:b0:471:13fa:1b84 with SMTP id 5b1f17b1804b1-47d19566b00mr331933865e9.12.1766829091447; Sat, 27 Dec 2025 01:51:31 -0800 (PST) X-Google-Smtp-Source: AGHT+IG02vpVJgDbUimjNabSyJZPvaoG7yRAQGXLwNRPfgnubTF/oCuQlpDmdtegaGiY8SIoshRHhA== X-Received: by 2002:a05:600c:3b94:b0:471:13fa:1b84 with SMTP id 5b1f17b1804b1-47d19566b00mr331933595e9.12.1766829091003; Sat, 27 Dec 2025 01:51:31 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Xudong Hao Subject: [PULL 143/153] i386/cpu: Add an option in X86CPUDefinition to control CPUID 0x1f Date: Sat, 27 Dec 2025 10:47:48 +0100 Message-ID: <20251227094759.35658-69-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829295689158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Many Intel CPUs enable CPUID 0x1f by default to encode CPU topology information. Add the "cpuid_0x1f" option to X86CPUDefinition to allow named CPU models to configure CPUID 0x1f from the start, thereby forcing 0x1f to be present for guest. With this option, there's no need to explicitly add v1 model to an unversioned CPU model for explicitly enabling the x-force-cpuid-0x1f property. Tested-by: Xudong Hao Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251215073743.4055227-9-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- target/i386/cpu.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 4ed7f4f1c99..49a8f30feb1 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -2313,6 +2313,12 @@ typedef struct X86CPUDefinition { int model; int stepping; uint8_t avx10_version; + /* + * Whether to present CPUID 0x1f by default. + * If true, encode CPU topology in 0x1f leaf even if there's no + * extended topology levels. + */ + bool cpuid_0x1f; FeatureWordArray features; const char *model_id; const CPUCaches *const cache_info; @@ -8014,6 +8020,10 @@ static void x86_cpu_load_model(X86CPU *cpu, const X8= 6CPUModel *model) def->avx10_version, &error_abort); } =20 + if (def->cpuid_0x1f) { + object_property_set_bool(OBJECT(cpu), "x-force-cpuid-0x1f", + def->cpuid_0x1f, &error_abort); + } x86_cpu_apply_version_props(cpu, model); =20 /* --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829142; cv=none; d=zohomail.com; s=zohoarc; b=fkXDGldzNM7Puw4Q/lUQqRsupnG4de1q0OkQgwnZp7bk8znQsKx/8epZw+a/80I5Q9nDpX2FR+dRpz5+pMu6ZCK1eqrIwvqYP/wIHjD45qbKO24WEY/pAbs3YdlnnWdM1iQoTXFrWXVCQ36tvxMtg574dtBhrebjFxhzxSK+IBo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829142; 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=U3gJ7NVwC86I3OXasFD21/vObhIQMzDU+Tc8ShgNyik=; b=R7yBaWKg7KTY3feKcgKa3twMDKlGTzYmfxQf/72Y8hI37w3Of46JeS0Zp9Qt3aRwyt3BBYkZ1kHqiY9YnzmMZSQdcDSucwrutCYSAZLXyov7CsneastXkAMfZZ1KOBaHh4pF5dLacKuIqXRAe26TTpfFMGBWFW1GEB74ibw32Ow= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829142615238.01745503273162; Sat, 27 Dec 2025 01:52:22 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQxc-0005XY-RE; Sat, 27 Dec 2025 04:51:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxb-0005Hn-0X for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:43 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxZ-0007Vj-B9 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:42 -0500 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-588-1dJ-rgLhN_a4P8JFYSsbxw-1; Sat, 27 Dec 2025 04:51:37 -0500 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-42fdbba545fso4752751f8f.0 for ; Sat, 27 Dec 2025 01:51:37 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-432613f7e6esm38875648f8f.21.2025.12.27.01.51.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:51:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829100; 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=U3gJ7NVwC86I3OXasFD21/vObhIQMzDU+Tc8ShgNyik=; b=YXeA9xwLE6dEPO6IuexxESl+TKKa9M2mCFXgEZak7UTYOKVP2+OkyeaOV6+INsiB9PRsyt eQ0aIyLRCfEB+H27j+KC/L6gqcG2MiOYldinzajajTM+s9F55dMU74WGwENgUjYYWpOrcb Dq2AGRNJA0K5Ox0WjYXKXvEd4KzKCs8= X-MC-Unique: 1dJ-rgLhN_a4P8JFYSsbxw-1 X-Mimecast-MFC-AGG-ID: 1dJ-rgLhN_a4P8JFYSsbxw_1766829096 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829095; x=1767433895; 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; bh=U3gJ7NVwC86I3OXasFD21/vObhIQMzDU+Tc8ShgNyik=; b=posfjjo1dzXHDMO9iKYBFKi1mwUH3mnhgJ+PSUPaAM95W6NPwi0X7y4oMoib7du+sd I47WQUs8n44vOA57wpesUNMnfvpeg9yqTYdlLO9HC21JNXEW2Ly/Jc8qdqtBA6Rew1qE MHePLo9NknvX+ZwlysRKOfzuTk5DXiIDtUW72iSvbOmSC/XNbNodeyxh1/zQPpddHBNq 8PkT586jNCmNnNaROxFeVG4m8I93JYwkliegNP31lZtDbBwOdEhSvq/XKgzcBYuVFpSl dcihesPQWNbRPCPngTUdi4DQjAMLwrGKi/Phdh7aodRdUV+Vs8IA9gWVDktq8uwWoTZ4 jkfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829095; x=1767433895; 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; bh=U3gJ7NVwC86I3OXasFD21/vObhIQMzDU+Tc8ShgNyik=; b=cBTcG8QiryLHzn3DgMlotcTFWYDvB21w7StbPnU374SbXCEMAbB6XEXp1gvKvot+gF OJ/AiZX2j/aYEDPUT7EE7+jkijcAXdJTIFnKzKAiA3llgsAZr3xJej++/o3xh86MXc8c bgv+vmMWsYXMrXNT+pO2m4/b4IPzf7b5BlwtKicUMns+YK5kCuTjWUKM7jgJvgoWij2E Y0kOKYqwuEek8rIzTcGh4ZDvdarqoVFgJnEYlIPGYLb97HRZM572teTmwGvoszUr9E59 2C6X8Es1FRuZZNxipKfxXXi1un8XNM2rpUhNAo2CvMM8rjowuJ+ndoUAl0jy+s8xiYS/ DgvA== X-Gm-Message-State: AOJu0YxAYL2DLu55TXmux7F4N+HWZeDOmAQjTElXHzraLMjxsIQRjHgr tG0/wAzQrC30D4zKWV+Wd2t175GDXVZe7tJfzbJRI4lBH+O7exAaIp8b0YJLPYqd5ES2rMMLqqS ZSdFK0R2ux/6NxsK+2EMu+ZkqiOtuFNqdqZg9vFTieyg+CE1+C7h413sJWb2ql8GPZ6MY61X6WN j7mvOi9W0XQLJrdVXcPmUxDzpMTANR1VG9mnAXj5Gy X-Gm-Gg: AY/fxX4OEE7Ot+ogLI1J3UflmH1+8SR+M/u+9W4sIvaXbnMTFMFRFUtsZ1/Nkx+iEsK Pz1qfw01mafLNwhevru2sDnK/lyAZIZ/KwSNMpQDPJpA0Su+sxXd9LLGQi1kQEhhJ4bVBBXXEp7 71IXV2dSOgDCEayjuKllEMVx2ThuunDdnNdOAFZ90Vm5C/vOaPWkqC+NsCtYiVITx/no67fqsBr 2IY6v5VFJeJ17j7AmKwLTPkMMAJpIM+LNV0SE5aGFO5+jryo9Q0Z0w4uc/guw8Si6patlPW36PN JeHWbCy1ajcr5kZWMHQOn9ccMnStmg8VrbCMujY69p+f2tYSCC9EV4+RsskevM4Gw0wP8iqcAkR HJOo6Gojup8Y5LanJJGTHySpEfV5UYRs4Qy9VI5XNpNKmMItPnYB+E2VG6Y8DWaqn7XcZHQ5pp0 pTFb6fNld7TiTXgfM= X-Received: by 2002:a05:6000:601:b0:430:fd0e:a502 with SMTP id ffacd0b85a97d-432448bf4f7mr33923741f8f.22.1766829095031; Sat, 27 Dec 2025 01:51:35 -0800 (PST) X-Google-Smtp-Source: AGHT+IH90IUEVNbEUmkHnK1VYQsKbQZ/J5o3iDmpTROLusgFtyYB+7Hyr0h+BZSq9+SIwZibAskjcw== X-Received: by 2002:a05:6000:601:b0:430:fd0e:a502 with SMTP id ffacd0b85a97d-432448bf4f7mr33923720f8f.22.1766829094560; Sat, 27 Dec 2025 01:51:34 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Xudong Hao Subject: [PULL 144/153] i386/cpu: Define dependency for VMX_VM_ENTRY_LOAD_IA32_FRED Date: Sat, 27 Dec 2025 10:47:49 +0100 Message-ID: <20251227094759.35658-70-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829143217158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu VMX_VM_ENTRY_LOAD_IA32_FRED depends on FRED. Define this dependency relationship. Tested-by: Xudong Hao Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251215073743.4055227-10-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- target/i386/cpu.h | 1 + target/i386/cpu.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index a4a8bc61a99..41ea04099b2 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -1439,6 +1439,7 @@ uint64_t x86_cpu_get_supported_feature_word(X86CPU *c= pu, FeatureWord w); #define VMX_VM_ENTRY_LOAD_IA32_RTIT_CTL 0x00040000 #define VMX_VM_ENTRY_LOAD_CET 0x00100000 #define VMX_VM_ENTRY_LOAD_IA32_PKRS 0x00400000 +#define VMX_VM_ENTRY_LOAD_IA32_FRED 0x00800000 =20 /* Supported Hyper-V Enlightenments */ #define HYPERV_FEAT_RELAXED 0 diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 49a8f30feb1..3440a70852d 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -2036,6 +2036,10 @@ static FeatureDep feature_dependencies[] =3D { .from =3D { FEAT_7_1_EDX, CPUID_7_1_EDX_AVX10 }, .to =3D { FEAT_24_1_ECX, ~0ull }, }, + { + .from =3D { FEAT_7_1_EAX, CPUID_7_1_EAX_FRED }, + .to =3D { FEAT_VMX_ENTRY_CTLS, VMX_VM_ENTRY_LOAD_IA32_FRED = }, + }, }; =20 typedef struct X86RegisterInfo32 { --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829178; cv=none; d=zohomail.com; s=zohoarc; b=KEQGT7/1RYg5pZOBWDUobIzhq43zqBejpcvd+LsX/3edJFXiKDx/QzEwvCCD/LSqMw3bb1LhoSuGNFFuMeuoE+OxdvxmSTgXGGL5qlwYkRXcOOGtrVvd/4wmFhlbOiPoreflVUhiPt3sFgpYkTdp1gLOS5RPgj2ptsVXE5TKlC0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829178; 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=JMcTna4Pd4l5Ct+ykWJLm//LQtzcLJUerHKSxe/7YXA=; b=Cxmy9EnzLZpDSSNx6RLK9PypyiugGiyBumw7YXARq15IVYEZs59ioA2ZXtLf9E2+GMNxGS2Mf9ic5xInImhWI9l0aJCZVwjWIBVmX4GIuIiuXE0YyBprX48tkLytpr5VSprfukH142RpL29OgMmcpbWJDulLHbA2Q7xrPg8zevU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829178922162.66621952164564; Sat, 27 Dec 2025 01:52:58 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQxe-0005lP-E7; Sat, 27 Dec 2025 04:51:46 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxc-0005Wy-EO for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:44 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxa-0007Vu-8X for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:44 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-660-V5F5sPHYOY2yyltICxXnwA-1; Sat, 27 Dec 2025 04:51:40 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-4775e00b16fso19460375e9.2 for ; Sat, 27 Dec 2025 01:51:39 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea2253csm50813815f8f.14.2025.12.27.01.51.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:51:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829101; 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=JMcTna4Pd4l5Ct+ykWJLm//LQtzcLJUerHKSxe/7YXA=; b=gnCOmy8oUYAi+bDglxpGv/YyO0Nq0FJwsF/KkZM+uVv93vWnn1bEaRLfjcknh5JgEKTmFB r/UGMotBVm3jslCCEeD5prZULHpW59v7NkCggZoiNvS0aQhO/7MEafrOFp3aX7h9PkGm32 3RTCd4HwjHa/LIEJIUc+gcjB9Vyqvfg= X-MC-Unique: V5F5sPHYOY2yyltICxXnwA-1 X-Mimecast-MFC-AGG-ID: V5F5sPHYOY2yyltICxXnwA_1766829099 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829098; x=1767433898; 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; bh=JMcTna4Pd4l5Ct+ykWJLm//LQtzcLJUerHKSxe/7YXA=; b=bjf1WGRUUfXyJ8niGN043/S+zvDA14wuI6jLKk0r5md9HbSX8s8aHX/2XNgZDD7SzV jbiDQNut9c1146KNPU3Fv7VUCfxm6CHUGaVKcEY19mUR8cTgJZeea0+H6OSl66gSmFam /lPhOKzCf9rbQS4ozchPLoMNjq6UG/MuUV5P041Hn+pdDirEaN2rFWxxTGHCjgX6yOae jgIe2Z9vPnKfgFYMrPjIPX6n7BCJ2vjuC+UJWja011qJEo84pNlx1w9Hkp5BiR7Rc5/i LUFohZ/A2e1GkBfJewGd+IJBcHzvf7Hx+abMyVpC+l3Lq42mHd7+xiA0W8gYltkSQ/G1 vUNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829098; x=1767433898; 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; bh=JMcTna4Pd4l5Ct+ykWJLm//LQtzcLJUerHKSxe/7YXA=; b=RTWYmfjO7+1WjWa2uFsU/HMXj4dQc0Xsj70KKEgtvlKhqelSrmjS3LCWvHzYATRRFs dDJczKADgGNjaVbUbOpNeVmsHmlg7NCQLfPrUY5L0Yrt147uiOH4xONJ3uJIUOdrFimF BXKOGJlljiT+Zee+U/2oKF9Cj3lJWIy7bj3HXbFmop5amJdXPqTYU815ns1F08i1Sygh UjXE9t2S33JZMFdpzHqqFxW9KENNVIVU8FH6NWUxjiJWbaJjv6a6swb+sL3bjvRZjH+0 tQILv4ii6s58FRKmtRAijJ60W/UC+55hfc9TdsU9bz1R+49xjQEjjCv6cCGHAaHyTOzT Zjtw== X-Gm-Message-State: AOJu0YynDgDpeL07tG/sOeTi7vZzRL2cA6lUVXkQQZELbdbEjBNxklzF PkEZ0C8Xs/AbaC3qFXsZ4FM1LrBKG7HWSTP6rb7t1pvCryD17PO6dxbyz45pecelO2dcY4j1bIw Pu0M61YkL0hwPudY7Xp1iyTM9Y8tDC+l/VOL4yhU0IfMOiKsie/lPjUjtSj/FTyXAtrWw/xM9mZ L0fGvXQx40gHZ/FDxHwCNgmcTysGOCCdoGJswi/A5k X-Gm-Gg: AY/fxX4L2EROZBtPywedBpo1GCS6PnHVqhJvVvhRKq5oCycPg+YIQUBpwrA3dlGs2nC nz/Pls/cbuEWX1i/DaV11k8G4bioBTSOWKRYLZia3M8UorYeFHfmAprAXnS79sIQJvsdPqA27dw K6tMoMCRb38OH1yVw4yTCNgEovx1IqW1rqY0P2ZJBs3Cb6ebr6F5ocANc2NAv/zqBClvrWu8WRf qRxkuOVg5oG9nYcG3Ibs9OVFPHGQmUyd/zUMs3PPEwNenfBi0TJ5yIHgjr3988irZ0p0Vofkw+l 6lTIxF/4JAPWQyCxzHkOOnPXWa6iBTXADUyBsfUwTZzXMAMVIC0rKpRf9xp/bE8sC3ohqH3INjb 25emgjN9ozS+G0QoOWcOl/ZSoirwpgKbE4tSEHT7yeipi8qVM9SxltddjT1icuvGKmwgYD37beR 5lc6/bZ+oz0p0Leo4= X-Received: by 2002:a05:600c:828d:b0:477:73cc:82c2 with SMTP id 5b1f17b1804b1-47d1954a14dmr284074375e9.9.1766829097936; Sat, 27 Dec 2025 01:51:37 -0800 (PST) X-Google-Smtp-Source: AGHT+IF7wjzsEhSIGQLSNW6I+u469gOU38imzhpZCZV66zljLHR5KMwyyYupzchhBc77xoro4ccAoQ== X-Received: by 2002:a05:600c:828d:b0:477:73cc:82c2 with SMTP id 5b1f17b1804b1-47d1954a14dmr284074115e9.9.1766829097444; Sat, 27 Dec 2025 01:51:37 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Xudong Hao Subject: [PULL 145/153] i386/cpu: Add CPU model for Diamond Rapids Date: Sat, 27 Dec 2025 10:47:50 +0100 Message-ID: <20251227094759.35658-71-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, UPPERCASE_50_75=0.008 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829179550158500 Content-Type: text/plain; charset="utf-8" From: Zhao Liu According to table 1-2 in Intel Architecture Instruction Set Extensions and Future Features (rev 059), Diamond Rapids has the following new features which have already been supported for guest: * SM4 (EVEX) * Intel Advanced Vector Extensions 10 Version 2 (Intel AVX10.2) * MOVRS and the PREFETCHRST2 instruction * AMX-MOVRS, AMX-AVX512, AMX-FP8, AMX-TF32 * Intel Advanced Performance Extensions And FRED - Flexible Return and Event Delivery (FRED) and the LKGS instruction (introduced since Clearwater Forest & Diamond Rapids) - is included in Diamond Rapids CPU model. In addition, the following features are added into Diamond Rapids CPU model: * CET: Control-flow Enforcement Technology (introduced since Sapphire Rapids & Sierra Forest). Tested-by: Xudong Hao Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251215073743.4055227-11-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- target/i386/cpu.c | 192 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 192 insertions(+) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 3440a70852d..37803cd7249 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -5443,6 +5443,198 @@ static const X86CPUDefinition builtin_x86_defs[] = =3D { { /* end of list */ }, }, }, + { + .name =3D "DiamondRapids", + .level =3D 0x29, + .vendor =3D CPUID_VENDOR_INTEL, + .family =3D 0x13, /* family: 0xf, extended famil: 0x4 */ + .model =3D 0x1, /* model: 0x1, extended model: 0x0 */ + .stepping =3D 0, + .avx10_version =3D 2, /* avx10.2 */ + .cpuid_0x1f =3D true, + /* + * Please keep the ascending order so that we can have a clear vie= w of + * bit position of each feature. + * + * Missing: CPUID_EXT_DTES64, CPUID_EXT_MONITOR, CPUID_EXT_DSCPL, + * CPUID_EXT_VMX, CPUID_EXT_SMX, CPUID_EXT_EST, CPUID_EXT_TM2, + * CPUID_EXT_XTPR, CPUID_EXT_PDCM, CPUID_EXT_DCA, CPUID_EXT_OSXSAVE + */ + .features[FEAT_1_ECX] =3D + CPUID_EXT_SSE3 | CPUID_EXT_PCLMULQDQ | CPUID_EXT_SSSE3 | + CPUID_EXT_FMA | CPUID_EXT_CX16 | CPUID_EXT_PCID | CPUID_EXT_SS= E41 | + CPUID_EXT_SSE42 | CPUID_EXT_X2APIC | CPUID_EXT_MOVBE | + CPUID_EXT_POPCNT | CPUID_EXT_TSC_DEADLINE_TIMER | CPUID_EXT_AE= S | + CPUID_EXT_XSAVE | CPUID_EXT_AVX | CPUID_EXT_F16C | CPUID_EXT_R= DRAND, + /* Missing: CPUID_DTS, CPUID_ACPI, CPUID_HT, CPUID_TM, CPUID_PBE */ + .features[FEAT_1_EDX] =3D + CPUID_FP87 | CPUID_VME | CPUID_DE | CPUID_PSE | CPUID_TSC | + CPUID_MSR | CPUID_PAE | CPUID_MCE | CPUID_CX8 | CPUID_APIC | + CPUID_SEP | CPUID_MTRR | CPUID_PGE | CPUID_MCA | CPUID_CMOV | + CPUID_PAT | CPUID_PSE36 | CPUID_CLFLUSH | CPUID_MMX | CPUID_FX= SR | + CPUID_SSE | CPUID_SSE2 | CPUID_SS, + .features[FEAT_6_EAX] =3D CPUID_6_EAX_ARAT, + /* + * Missing: CPUID_7_0_EBX_SGX, "cqm" Cache QoS Monitoring, + * "rdt_a" Resource Director Technology Allocation, + * CPUID_7_0_EBX_INTEL_PT, + */ + .features[FEAT_7_0_EBX] =3D + CPUID_7_0_EBX_FSGSBASE | CPUID_7_0_EBX_TSC_ADJUST | + CPUID_7_0_EBX_BMI1 | CPUID_7_0_EBX_HLE | CPUID_7_0_EBX_AVX2 | + CPUID_7_0_EBX_FDP_EXCPTN_ONLY | CPUID_7_0_EBX_SMEP | + CPUID_7_0_EBX_BMI2 | CPUID_7_0_EBX_ERMS | CPUID_7_0_EBX_INVPCI= D | + CPUID_7_0_EBX_RTM | CPUID_7_0_EBX_ZERO_FCS_FDS | + CPUID_7_0_EBX_AVX512F | CPUID_7_0_EBX_AVX512DQ | + CPUID_7_0_EBX_RDSEED | CPUID_7_0_EBX_ADX | CPUID_7_0_EBX_SMAP | + CPUID_7_0_EBX_AVX512IFMA | CPUID_7_0_EBX_CLFLUSHOPT | + CPUID_7_0_EBX_CLWB | CPUID_7_0_EBX_AVX512CD | + CPUID_7_0_EBX_SHA_NI | CPUID_7_0_EBX_AVX512BW | + CPUID_7_0_EBX_AVX512VL, + /* + * Missing: CPUID_7_0_ECX_OSPKE, CPUID_7_0_ECX_WAITPKG, TME, ENQCM= D, + * CPUID_7_0_ECX_SGX_LC, CPUID_7_0_ECX_PKS + */ + .features[FEAT_7_0_ECX] =3D + CPUID_7_0_ECX_AVX512_VBMI | CPUID_7_0_ECX_UMIP | + CPUID_7_0_ECX_PKU | CPUID_7_0_ECX_AVX512_VBMI2 | + CPUID_7_0_ECX_CET_SHSTK | CPUID_7_0_ECX_GFNI | CPUID_7_0_ECX_V= AES | + CPUID_7_0_ECX_VPCLMULQDQ | CPUID_7_0_ECX_AVX512VNNI | + CPUID_7_0_ECX_AVX512BITALG | CPUID_7_0_ECX_AVX512_VPOPCNTDQ | + CPUID_7_0_ECX_LA57 | CPUID_7_0_ECX_RDPID | + CPUID_7_0_ECX_BUS_LOCK_DETECT | CPUID_7_0_ECX_CLDEMOTE | + CPUID_7_0_ECX_MOVDIRI | CPUID_7_0_ECX_MOVDIR64B, + /* + * Missing: SGX-KEYS, UINTR, PCONFIG, ARCH LBR, + * CPUID_7_0_EDX_CORE_CAPABILITY + */ + .features[FEAT_7_0_EDX] =3D + CPUID_7_0_EDX_FSRM | CPUID_7_0_EDX_MD_CLEAR | + CPUID_7_0_EDX_SERIALIZE | CPUID_7_0_EDX_TSX_LDTRK | + CPUID_7_0_EDX_CET_IBT | CPUID_7_0_EDX_AMX_BF16 | + CPUID_7_0_EDX_AVX512_FP16 | CPUID_7_0_EDX_AMX_TILE | + CPUID_7_0_EDX_AMX_INT8 | CPUID_7_0_EDX_SPEC_CTRL | + CPUID_7_0_EDX_STIBP | CPUID_7_0_EDX_FLUSH_L1D | + CPUID_7_0_EDX_ARCH_CAPABILITIES | CPUID_7_0_EDX_SPEC_CTRL_SSBD, + /* Missing: CPUID_7_1_EAX_LASS, ArchPerfmonExt (0x23 leaf), MSRLIS= T */ + .features[FEAT_7_1_EAX] =3D + CPUID_7_1_EAX_AVX_VNNI | CPUID_7_1_EAX_AVX512_BF16 | + CPUID_7_1_EAX_CMPCCXADD | CPUID_7_1_EAX_FZRM | + CPUID_7_1_EAX_FSRS | CPUID_7_1_EAX_FSRC | CPUID_7_1_EAX_FRED | + CPUID_7_1_EAX_LKGS | CPUID_7_1_EAX_WRMSRNS | + CPUID_7_1_EAX_AMX_FP16 | CPUID_7_1_EAX_AVX_IFMA | + CPUID_7_1_EAX_LAM | CPUID_7_1_EAX_MOVRS, + /* Missing: CET_SSS */ + .features[FEAT_7_1_EDX] =3D + CPUID_7_1_EDX_AVX_VNNI_INT8 | CPUID_7_1_EDX_AVX_NE_CONVERT | + CPUID_7_1_EDX_AMX_COMPLEX | CPUID_7_1_EDX_PREFETCHITI | + CPUID_7_1_EDX_AVX10 | CPUID_7_1_EDX_APXF, + /* Missing: UC-lock disable */ + .features[FEAT_7_2_EDX] =3D + CPUID_7_2_EDX_PSFD | CPUID_7_2_EDX_IPRED_CTRL | + CPUID_7_2_EDX_RRSBA_CTRL | CPUID_7_2_EDX_DDPD_U | + CPUID_7_2_EDX_BHI_CTRL | CPUID_7_2_EDX_MCDT_NO, + .features[FEAT_XSAVE] =3D + CPUID_XSAVE_XSAVEOPT | CPUID_XSAVE_XSAVEC | + CPUID_XSAVE_XGETBV1 | CPUID_XSAVE_XSAVES | CPUID_D_1_EAX_XFD, + .features[FEAT_1E_1_EAX] =3D + CPUID_1E_1_EAX_AMX_INT8_MIRROR | CPUID_1E_1_EAX_AMX_BF16_MIRRO= R | + CPUID_1E_1_EAX_AMX_COMPLEX_MIRROR | + CPUID_1E_1_EAX_AMX_FP16_MIRROR | CPUID_1E_1_EAX_AMX_FP8 | + CPUID_1E_1_EAX_AMX_TF32 | CPUID_1E_1_EAX_AMX_AVX512 | + CPUID_1E_1_EAX_AMX_MOVRS, + .features[FEAT_29_0_EBX] =3D CPUID_29_0_EBX_APX_NCI_NDD_NF, + /* + * Though this bit will be set by avx_version=3D2, it's better to + * explicitly enumerate this feature here. + */ + .features[FEAT_24_1_ECX] =3D CPUID_24_1_ECX_AVX10_VNNI_INT, + .features[FEAT_8000_0001_ECX] =3D + CPUID_EXT3_LAHF_LM | CPUID_EXT3_ABM | CPUID_EXT3_3DNOWPREFETCH, + .features[FEAT_8000_0001_EDX] =3D + CPUID_EXT2_SYSCALL | CPUID_EXT2_NX | CPUID_EXT2_PDPE1GB | + CPUID_EXT2_RDTSCP | CPUID_EXT2_LM, + .features[FEAT_8000_0008_EBX] =3D CPUID_8000_0008_EBX_WBNOINVD, + /* + * Missing: ARCH_CAP_RRSBA (KVM bit 19), ARCH_CAP_RFDS_CLEAR (KVM = bit + * 28), MCU_CONTROL (bit 9), MISC_PACKAGE_CTLS (bit 10), + * ENERGY_FILTERING_CTL (bit 11), DOITM (bit 12), MCU_ENUMERATION = (bit + * 16), RRSBA (bit 19), XAPIC_DISABLE_STATUS (bit 21), + * OVERCLOCKING_STATUS (bit 23). + */ + .features[FEAT_ARCH_CAPABILITIES] =3D + MSR_ARCH_CAP_RDCL_NO | MSR_ARCH_CAP_IBRS_ALL | + MSR_ARCH_CAP_SKIP_L1DFL_VMENTRY | MSR_ARCH_CAP_MDS_NO | + MSR_ARCH_CAP_PSCHANGE_MC_NO | MSR_ARCH_CAP_TAA_NO | + MSR_ARCH_CAP_SBDR_SSDP_NO | MSR_ARCH_CAP_FBSDP_NO | + MSR_ARCH_CAP_PSDP_NO | MSR_ARCH_CAP_BHI_NO | + MSR_ARCH_CAP_PBRSB_NO | MSR_ARCH_CAP_GDS_NO | + MSR_ARCH_CAP_RFDS_NO, + .features[FEAT_VMX_BASIC] =3D + MSR_VMX_BASIC_INS_OUTS | MSR_VMX_BASIC_TRUE_CTLS | + MSR_VMX_BASIC_NESTED_EXCEPTION, + .features[FEAT_VMX_ENTRY_CTLS] =3D + VMX_VM_ENTRY_LOAD_DEBUG_CONTROLS | VMX_VM_ENTRY_IA32E_MODE | + VMX_VM_ENTRY_LOAD_IA32_PERF_GLOBAL_CTRL | + VMX_VM_ENTRY_LOAD_IA32_PAT | VMX_VM_ENTRY_LOAD_IA32_EFER | + VMX_VM_ENTRY_LOAD_CET | VMX_VM_ENTRY_LOAD_IA32_FRED, + .features[FEAT_VMX_EPT_VPID_CAPS] =3D + MSR_VMX_EPT_EXECONLY | + MSR_VMX_EPT_PAGE_WALK_LENGTH_4 | MSR_VMX_EPT_PAGE_WALK_LENGTH_= 5 | + MSR_VMX_EPT_WB | MSR_VMX_EPT_2MB | MSR_VMX_EPT_1GB | + MSR_VMX_EPT_INVEPT | MSR_VMX_EPT_AD_BITS | + MSR_VMX_EPT_INVEPT_SINGLE_CONTEXT | MSR_VMX_EPT_INVEPT_ALL_CON= TEXT | + MSR_VMX_EPT_INVVPID | MSR_VMX_EPT_INVVPID_SINGLE_ADDR | + MSR_VMX_EPT_INVVPID_SINGLE_CONTEXT | + MSR_VMX_EPT_INVVPID_ALL_CONTEXT | + MSR_VMX_EPT_INVVPID_SINGLE_CONTEXT_NOGLOBALS, + .features[FEAT_VMX_EXIT_CTLS] =3D + VMX_VM_EXIT_SAVE_DEBUG_CONTROLS | VMX_VM_EXIT_HOST_ADDR_SPACE_= SIZE, + VMX_VM_EXIT_LOAD_IA32_PERF_GLOBAL_CTRL | + VMX_VM_EXIT_ACK_INTR_ON_EXIT | VMX_VM_EXIT_SAVE_IA32_PAT | + VMX_VM_EXIT_LOAD_IA32_PAT | VMX_VM_EXIT_SAVE_IA32_EFER | + VMX_VM_EXIT_LOAD_IA32_EFER | VMX_VM_EXIT_SAVE_VMX_PREEMPTION_T= IMER | + VMX_VM_EXIT_SAVE_CET | VMX_VM_EXIT_ACTIVATE_SECONDARY_CONTROLS, + .features[FEAT_VMX_MISC] =3D + MSR_VMX_MISC_STORE_LMA | MSR_VMX_MISC_ACTIVITY_HLT | + MSR_VMX_MISC_ACTIVITY_SHUTDOWN | MSR_VMX_MISC_ACTIVITY_WAIT_SI= PI | + MSR_VMX_MISC_VMWRITE_VMEXIT, + .features[FEAT_VMX_PINBASED_CTLS] =3D + VMX_PIN_BASED_EXT_INTR_MASK | VMX_PIN_BASED_NMI_EXITING | + VMX_PIN_BASED_VIRTUAL_NMIS | VMX_PIN_BASED_VMX_PREEMPTION_TIME= R | + VMX_PIN_BASED_POSTED_INTR, + .features[FEAT_VMX_PROCBASED_CTLS] =3D + VMX_CPU_BASED_VIRTUAL_INTR_PENDING | + VMX_CPU_BASED_USE_TSC_OFFSETING | VMX_CPU_BASED_HLT_EXITING | + VMX_CPU_BASED_INVLPG_EXITING | VMX_CPU_BASED_MWAIT_EXITING | + VMX_CPU_BASED_RDPMC_EXITING | VMX_CPU_BASED_RDTSC_EXITING | + VMX_CPU_BASED_CR3_LOAD_EXITING | VMX_CPU_BASED_CR3_STORE_EXITI= NG | + VMX_CPU_BASED_CR8_LOAD_EXITING | VMX_CPU_BASED_CR8_STORE_EXITI= NG | + VMX_CPU_BASED_TPR_SHADOW | VMX_CPU_BASED_VIRTUAL_NMI_PENDING | + VMX_CPU_BASED_MOV_DR_EXITING | VMX_CPU_BASED_UNCOND_IO_EXITING= | + VMX_CPU_BASED_USE_IO_BITMAPS | VMX_CPU_BASED_MONITOR_TRAP_FLAG= | + VMX_CPU_BASED_USE_MSR_BITMAPS | VMX_CPU_BASED_MONITOR_EXITING | + VMX_CPU_BASED_PAUSE_EXITING | + VMX_CPU_BASED_ACTIVATE_SECONDARY_CONTROLS, + .features[FEAT_VMX_SECONDARY_CTLS] =3D + VMX_SECONDARY_EXEC_VIRTUALIZE_APIC_ACCESSES | + VMX_SECONDARY_EXEC_ENABLE_EPT | VMX_SECONDARY_EXEC_DESC | + VMX_SECONDARY_EXEC_RDTSCP | + VMX_SECONDARY_EXEC_VIRTUALIZE_X2APIC_MODE | + VMX_SECONDARY_EXEC_ENABLE_VPID | VMX_SECONDARY_EXEC_WBINVD_EXI= TING | + VMX_SECONDARY_EXEC_UNRESTRICTED_GUEST | + VMX_SECONDARY_EXEC_APIC_REGISTER_VIRT | + VMX_SECONDARY_EXEC_VIRTUAL_INTR_DELIVERY | + VMX_SECONDARY_EXEC_RDRAND_EXITING | + VMX_SECONDARY_EXEC_ENABLE_INVPCID | + VMX_SECONDARY_EXEC_ENABLE_VMFUNC | VMX_SECONDARY_EXEC_SHADOW_V= MCS | + VMX_SECONDARY_EXEC_RDSEED_EXITING | VMX_SECONDARY_EXEC_ENABLE_= PML | + VMX_SECONDARY_EXEC_XSAVES | VMX_SECONDARY_EXEC_TSC_SCALING | + VMX_SECONDARY_EXEC_ENABLE_USER_WAIT_PAUSE, + .features[FEAT_VMX_VMFUNC] =3D MSR_VMX_VMFUNC_EPT_SWITCHING, + .xlevel =3D 0x80000008, + .model_id =3D "Intel Xeon Processor (DiamondRapids)", + }, { .name =3D "SierraForest", .level =3D 0x23, --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829124; cv=none; d=zohomail.com; s=zohoarc; b=mFDBITdHTO4FgpKFUubBEnXsrCQvg+bibYHnf8Mjv5dQR8jfwWW9T16X4rMpQyLvQO84Br9Mbtm+C/mvjvwAwtpi3SBK3X1rhzL2nS64xpjD6RGNGFdnO0lRPICKVXahFEcAEkWjTylIfpsm6TpchCBg7Szw2hJm3P1sM+lCcj4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829124; 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=6WuNs2w9txl5m4wEfxZiVSZfBD4Gfk5ARbpTQPjey28=; b=dC5AW8IL8r2nNc5M9m2WYgYi41sspQ9yz8AiNqKwm7Ysj5pUGwoEIyGolww/ZxdEtp8dhvGKFsSibPgVe6h7fxTKHtlI+/u2k3aZflHgx91Hndr60U/zsfOnwlpHmPtsDs6Hn9vhUoFeXGQ2vlim928lGWPsjx6rcAlD7RakMoo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829124256936.8261542254447; Sat, 27 Dec 2025 01:52:04 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQxf-0005rK-OP; Sat, 27 Dec 2025 04:51:47 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxe-0005k9-5B for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:46 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxc-0007WT-D3 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:45 -0500 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-513-dkESxMJSOFKJEsshrsOJ_g-1; Sat, 27 Dec 2025 04:51:42 -0500 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-430fd96b2f5so6789931f8f.3 for ; Sat, 27 Dec 2025 01:51:42 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4325b6bfe88sm41939069f8f.19.2025.12.27.01.51.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:51:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829103; 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=6WuNs2w9txl5m4wEfxZiVSZfBD4Gfk5ARbpTQPjey28=; b=SAdWfbuTm6VV5x1Fvaw4Vfnl3cesogektWRhzEvp3T5vs7kzx+PT3mI8VxfgKgsq7VUDiE EMqQGYYUW2PpOVAWPA+ipENTwbLDRPChhXqRVHt/Vk+duoggUlhVxO6BF9HnRb41Co1UP2 mv2NYZnuO6TAifxIsT38KY/1/kxb914= X-MC-Unique: dkESxMJSOFKJEsshrsOJ_g-1 X-Mimecast-MFC-AGG-ID: dkESxMJSOFKJEsshrsOJ_g_1766829101 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829100; x=1767433900; 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; bh=6WuNs2w9txl5m4wEfxZiVSZfBD4Gfk5ARbpTQPjey28=; b=fScxaVfzPFlte2aR0A1Xiudh3qJa796uYkeDpdi2hJp7SOYPMu7Mh4fyhefEF7+Zaz mYH6UursVgX99HGGie3oG9a3I01gAcMnCge1yrRQwC8v1e9DwpspWvMlsaCBfjwonvJ2 2cvYB0IJKPY3i7nuPloTRrKr+dAXz0f9DApcF86F7HP86HeuHSwsYRYR9O7oEcIeqWql Lfy+XZt38cwNpiKRzWO61Zl6fWlCgchZ0nKn/69Lae1w94pNyA89YGiNfj1/TSN3gTUC OgMU6Pu+icdaBLQLLY4FUlimP0pe8DlmGKsZA60ul90r5gKataFtl3y3LUWON3eAs6ej JwdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829100; x=1767433900; 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; bh=6WuNs2w9txl5m4wEfxZiVSZfBD4Gfk5ARbpTQPjey28=; b=agN37Hhy4VNOBmyE3VytPocLV6i52IU/F7baL4X1k7Ch13vPH1LO5mwAbm9CYIz27F On3fBiL6Q5N3muETogRbtTrsCbwtaz8fhIhTJw0sO5x1T4GYiXrtGpFP5iDyN0nlmCsG Bk8vwsKPv5W0wEV5hvw2XQECq7nR0VdkbLkydZcwR+q/q5EpZR0Ptz60WIn0DnjOUEWF jvvShW0cqR6mptB/izDk2hNJugXNA3J11U0M/YX2XnRM4PMJE2icFhgKNdO9iO7Oe5eQ GCu7WKQp8tmvt/N4JlPxk3rWWNH2IcRvhIxrxVxlfcWjDquUYL8/eOS6pWiaOhb8iDgH 1sNQ== X-Gm-Message-State: AOJu0YzMFE+59L8+qxwxWWxBYZ3SkMvFPBGN5irj2BN3+W/G12/0mr28 WK15bp8lEL1XRB97EcK5odUjp/9bW82hqOOZphGzWSdpr+IuZP6KqGYEumx6nMdsOcx1t2XPOmD oDEYte+XsODGqBMX4lNLu/IoEf69WVijWNleEiznfK7K5Y1a1QUpKh1geFCcv1AUWYX9VaxDJL8 W9pOxbLPf08dGIqoyQ196UnVbgCdtC62QKhlq4r+Q3 X-Gm-Gg: AY/fxX7TNkwZQeieqbnLQD9TWrt5OE9XDqlRAvwPGYFLwkh0Qo6Jnj5R3tWsHc6QJGJ uuapRpzaJaDsaxZ8HZEmqO5esaMfIFxrdkMumDvaYO2SyIeUo67cMhfu3f3lnzWXFsTa0wEcG4t lNjKbiByGkGPGvhu2SXYLx6w9U8LdhoTYLNCPtBWaMvDCXCVGQ1rR3Zj+2HSrkRYdBbiido3ZyZ 45+s0kle5K1Qev1bhcxxzZMGw5moH8kvM9CK80FZ+cOQXYcEBnzhR+JxVTYP4EeEJSWDHbaT2+M C92lAt8z5QnLkyNzpyTek5IZF5J1M13GvrmhF1pt55kgegom/ZKPCX4Mewx31ni97B86S1CvLsX ci5FDIK1A5suAJIJk5mU6ocu+/2/RpkXkYUBp2QqAnJjqKhtRvBtefwLd960nIclU/xc/DjVkOR Pp8Pfmej8jZmUo9xM= X-Received: by 2002:a05:6000:7:b0:431:3a5:d9c1 with SMTP id ffacd0b85a97d-4324e4fd96emr22656037f8f.30.1766829100219; Sat, 27 Dec 2025 01:51:40 -0800 (PST) X-Google-Smtp-Source: AGHT+IGEY31mxmfCWucBpyKHqFftrJiaElJQsYiHv8K6zcwNmqy3Xepah1QX0RpQRFzNvdWR+8CxMA== X-Received: by 2002:a05:6000:7:b0:431:3a5:d9c1 with SMTP id ffacd0b85a97d-4324e4fd96emr22656020f8f.30.1766829099708; Sat, 27 Dec 2025 01:51:39 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Yu Chen Subject: [PULL 146/153] dosc/cpu-models-x86: Add documentation for DiamondRapids Date: Sat, 27 Dec 2025 10:47:51 +0100 Message-ID: <20251227094759.35658-72-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829125161158501 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Current DiamondRapids hasn't supported cache model. Instead, document its special CPU & cache topology to allow user emulate with "-smp" & "-machine smp-cache". Reviewed-by: Yu Chen Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20251215073743.4055227-12-zhao1.liu@intel.c= om Signed-off-by: Paolo Bonzini --- docs/system/cpu-models-x86.rst.inc | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/docs/system/cpu-models-x86.rst.inc b/docs/system/cpu-models-x8= 6.rst.inc index 6a770ca8351..3605d05a8c4 100644 --- a/docs/system/cpu-models-x86.rst.inc +++ b/docs/system/cpu-models-x86.rst.inc @@ -71,6 +71,26 @@ mixture of host CPU models between machines, if live mig= ration compatibility is required, use the newest CPU model that is compatible across all desired hosts. =20 +``DiamondRapids`` + Intel Xeon Processor. + + Diamond Rapids product has a topology which differs from previous Xeon + products. It does not support SMT, but instead features a dual core + module (DCM) architecture. It also has core building blocks (CBB - die + level in CPU topology). The cache hierarchy is organized as follows: + L1 i/d cache is per thread, L2 cache is per DCM, and L3 cache is per + CBB. This cache topology can be emulated for DiamondRapids CPU model + using the smp-cache configuration as shown below: + + Example: + + :: + + -machine smp-cache.0.cache=3Dl1d,smp-cache.0.topology=3Dthread= ,\ + smp-cache.1.cache=3Dl1i,smp-cache.1.topology=3Dthread= ,\ + smp-cache.2.cache=3Dl2,smp-cache.2.topology=3Dmodule,\ + smp-cache.3.cache=3Dl3,smp-cache.3.topology=3Ddie + ``ClearwaterForest`` Intel Xeon Processor (ClearwaterForest, 2025) =20 --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829257; cv=none; d=zohomail.com; s=zohoarc; b=mMHgSILwQdcaFINLSoy5F+x5HIRYnzAnlxBUA5skmJxSskgOptIqmv43pbfr97BF0qYFzsgHX9IY0IgDk9lGCvK5hMaoRJZVOSPz3S9kBdmhhnnoREBCLTyK+ezmN7pDqlm7G1jPKhtkYv6CLCHXxz+5YKF48z97mYfVvIwhEpQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829257; 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=Deewm7Dlj2izzGqvYhNToDgUlCdOD6wk8rZjXJhmSHg=; b=KYALliRLvXmiQYPbYAiMkgNO2GKmu+06rlRSFWSjTVFFsVrn/Ph8MXvyProliqAiR+mM6tkgPXruAF4sT3yrhlolzs9TZlpvlU+kb5IZnMXWTa2akHkSY5Ul8o9JeiN6ijk6wo60V2oxXywqgVdviWt/jSz7dJZlo8m99ZpOglM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829257054457.7223980953719; Sat, 27 Dec 2025 01:54:17 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQxh-0005xs-4h; Sat, 27 Dec 2025 04:51:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxg-0005uQ-CE for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:48 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxe-0007Wp-Hu for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:48 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-176-N3rJuE1rNICL8wlmf-TARw-1; Sat, 27 Dec 2025 04:51:44 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-47918084ac1so65324005e9.2 for ; Sat, 27 Dec 2025 01:51:44 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be3a4651bsm191597025e9.7.2025.12.27.01.51.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:51:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829106; 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=Deewm7Dlj2izzGqvYhNToDgUlCdOD6wk8rZjXJhmSHg=; b=eAnZNuRaxEYx4vW753H5sZxa1mv/jDzkub1FKSBteRum0grfMxo0BlM3qIul7wBWNlEOZO En8fcjm98Y4K+1ZQ4crCUmODTgYixYUw9xBw56AJmtkym5jpMHcv1L2yNwJ1r89g7y62Nr AUN/tRRvuihpdbj4AkiiWpGDmpCaZeQ= X-MC-Unique: N3rJuE1rNICL8wlmf-TARw-1 X-Mimecast-MFC-AGG-ID: N3rJuE1rNICL8wlmf-TARw_1766829103 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829103; x=1767433903; 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; bh=Deewm7Dlj2izzGqvYhNToDgUlCdOD6wk8rZjXJhmSHg=; b=Jo4gsEZHa7LbTb59Bkar+QCSeqKbxj2hVOKEIt7Q65ny4ZGuQ+xrnYiLAFgK1yggJJ FnOojzAhN1hS4B+1DwAsT/1nxYmQCNr30DR2/JqZ/1xg5KAcNEqq+5lYx/0qIZggX5M0 gkdW/5i41kHfJjnELa4pfH9XMdMEs1pD9yDT6w02J1Q+9+6cqR5mUZbfIIAtSNI9F2WE c5FR2gCM/7+aiD3jocPpE8Mlt29gaYofnRDIV+tR7Szwn8spq2L0Gwqs9gzo/4SOHjgJ zi500WA+vH6P151IJO+lg/pKEFMdV7BuntH8ofIDfIlWvCwotmVef7Tw+/FoaqvaVXmd lgzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829103; x=1767433903; 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; bh=Deewm7Dlj2izzGqvYhNToDgUlCdOD6wk8rZjXJhmSHg=; b=B91v7vUbda1TUz+0asNfy12BBOOS4wN0a4Dleoox7fqWUcyMAaPCBUxHKiLKmQ3J+5 H9zHac/nilMR6EeedvAb3lFEjX80x3me8rAXCBur7AfFFmedLokBbiDLKKXyZkAD4MNr TB2Lpn60WjL1V4mEXwbLAfvPxU0+KYJRmmTA9gA+EaByXJaA+7n8FroVuWarq77WMgIK c7xzsRRbc8DXlJFFhA1//Qoy1Vprd2SvUA2F+ak/XLHkMJAzog6zksOsAyFii+J4Gid9 H8sTYPDhObZBJpDTAHrTWFgH3RyMLbbModB1rjl0SNCT+ZU9w1Qw3Kl5s4txnb8S/diO qIag== X-Gm-Message-State: AOJu0YwRDzMpSxZdCzx0kzf6hAIqOBaHE59XeOWNd1KZu8ZhFP6ANyyh cAQTEk9xHCiWHHI/ARaB2kOdHiftRL9y8DLyVrbwpFUGxLgp9E0eI2sXzcBCVoxHB8JJ/L4DwmE gNg4qeVmKq3ou155UF9Q06BX48THCqWWpusghh+eUb8P0kDr+wANKtBcRKnrl78/NfgMbwl6qjl cTGgjdGRelaVwSQwamMNLWvyVEAytHoly1avRw4wug X-Gm-Gg: AY/fxX4AtRKjDDVl+qeYIdUDRbL0knx2JnMTq3fvzAWAiTqXfXIWtkQZ5clkHDpWR5k 9nkDNMxe+Q/sxhjyft1OxLxIPZaDpc+Gi39PueVFuLftTg39HuZxJ91JdNksN1eGINSAZJJX8iB IMc12OSKmFqGYw5fvsOVPSWORl0Zq0j5nkhD4yE2wXRLLH4+Xfq6p1C/QxpLtRj7CVwajEL5bzG MFSPQKZFjfVIYOtlBiv4PBHO5chCt8UPo5yxuA6LTfLUwejA/Yjzge60bVweyeW24vkY2nOiZTX 42cWeVQOsQ4PlO46DOXEVTRcFAtiABIkQtwKUkYsZteS2n6xj/yRy1iYdpdcqo8ngXBOtnp5AKM 3iGRvY7qze3e1MXPBejqCW/QBJA+h8lSP6XXqp/J2i1lj0wtzfFajFOl2U4/rAeyrvVXQrace26 svgmK4aMp0NtzpAzo= X-Received: by 2002:a05:600c:4fd4:b0:46e:4a13:e6c6 with SMTP id 5b1f17b1804b1-47d1958a43fmr253977995e9.19.1766829102705; Sat, 27 Dec 2025 01:51:42 -0800 (PST) X-Google-Smtp-Source: AGHT+IFbs/wWIFhT6w4/c8ZjB8Ygc85ji3nN7bKqfrLGkQ2SAA/sXcIM6e9awGz39CbVekA3EyPB7Q== X-Received: by 2002:a05:600c:4fd4:b0:46e:4a13:e6c6 with SMTP id 5b1f17b1804b1-47d1958a43fmr253977735e9.19.1766829102247; Sat, 27 Dec 2025 01:51:42 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Marc Morcos Subject: [PULL 147/153] thread-pool: Fix thread race Date: Sat, 27 Dec 2025 10:47:52 +0100 Message-ID: <20251227094759.35658-73-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829257618158500 Content-Type: text/plain; charset="utf-8" From: Marc Morcos Fix a data race occurred between `worker_thread()` writing and `thread_pool_completion_bh()` reading shared data in `util/thread-pool.c`. Signed-off-by: Marc Morcos Link: https://lore.kernel.org/r/20251213001443.2041258-3-marcmorcos@google.= com [Use qatomic_set for writes to ret->ret. - Paolo] Signed-off-by: Paolo Bonzini --- util/thread-pool.c | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/util/thread-pool.c b/util/thread-pool.c index d2ead6b7285..8f8cb38d5ce 100644 --- a/util/thread-pool.c +++ b/util/thread-pool.c @@ -18,6 +18,7 @@ #include "qemu/defer-call.h" #include "qemu/queue.h" #include "qemu/thread.h" +#include "qemu/atomic.h" #include "qemu/coroutine.h" #include "trace.h" #include "block/thread-pool.h" @@ -39,9 +40,13 @@ struct ThreadPoolElementAio { ThreadPoolFunc *func; void *arg; =20 - /* Moving state out of THREAD_QUEUED is protected by lock. After - * that, only the worker thread can write to it. Reads and writes - * of state and ret are ordered with memory barriers. + /* + * Accessed with atomics. Moving state out of THREAD_QUEUED is + * protected by pool->lock and only the worker thread can move + * the state from THREAD_ACTIVE to THREAD_DONE. + * + * When state is THREAD_DONE, ret must have been written already. + * Use acquire/release ordering when reading/writing ret as well. */ enum ThreadState state; int ret; @@ -105,15 +110,14 @@ static void *worker_thread(void *opaque) =20 req =3D QTAILQ_FIRST(&pool->request_list); QTAILQ_REMOVE(&pool->request_list, req, reqs); - req->state =3D THREAD_ACTIVE; + qatomic_set(&req->state, THREAD_ACTIVE); qemu_mutex_unlock(&pool->lock); =20 ret =3D req->func(req->arg); =20 - req->ret =3D ret; - /* Write ret before state. */ - smp_wmb(); - req->state =3D THREAD_DONE; + qatomic_set(&req->ret, ret); + /* _release to write ret before state. */ + qatomic_store_release(&req->state, THREAD_DONE); =20 qemu_bh_schedule(pool->completion_bh); qemu_mutex_lock(&pool->lock); @@ -180,7 +184,8 @@ static void thread_pool_completion_bh(void *opaque) =20 restart: QLIST_FOREACH_SAFE(elem, &pool->head, all, next) { - if (elem->state !=3D THREAD_DONE) { + /* _acquire to read state before ret. */ + if (qatomic_load_acquire(&elem->state) !=3D THREAD_DONE) { continue; } =20 @@ -189,9 +194,6 @@ restart: QLIST_REMOVE(elem, all); =20 if (elem->common.cb) { - /* Read state before ret. */ - smp_rmb(); - /* Schedule ourselves in case elem->common.cb() calls aio_poll= () to * wait for another request that completed at the same time. */ @@ -223,12 +225,12 @@ static void thread_pool_cancel(BlockAIOCB *acb) trace_thread_pool_cancel_aio(elem, elem->common.opaque); =20 QEMU_LOCK_GUARD(&pool->lock); - if (elem->state =3D=3D THREAD_QUEUED) { + if (qatomic_read(&elem->state) =3D=3D THREAD_QUEUED) { QTAILQ_REMOVE(&pool->request_list, elem, reqs); qemu_bh_schedule(pool->completion_bh); =20 - elem->state =3D THREAD_DONE; - elem->ret =3D -ECANCELED; + qatomic_set(&elem->ret, -ECANCELED); + qatomic_store_release(&elem->state, THREAD_DONE); } =20 } --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829145; cv=none; d=zohomail.com; s=zohoarc; b=T3X7px6HNqwBMnmQqBDjsp8StC24o8JlO1GKVwqWRvYSrvcQJbw8E86ENWxg/OpcZKJVGP/rIbQwceiTKyVfFVkbFU1vEPgxx71K6c7LGCxtzPVz6irHbhO14UYRhUxuOdbhy+KHnUzMT7HFNMFzuPFT7M5LZxv/2eOE2XQLvP8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829145; 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=Z0o903Dc2qu1dTRcXlXDrKlZDWfP3LsB5Y748CsL1HI=; b=gx8KeVNZ2VjPNIC2Vzh8GIxS68IBuRZjplH9KXkjjF++fMBu7skhWzDIJex3Kzngpw2Rr6fh3r7XyJ/Nw3SVuZGQR+02mgOIlgecp0cdk9XQ6pLTv8bBOXaTVnea7UUoPTbkS2YNUHI436+X4JqYLZLCftAYgmB7mOq/FkZUsXw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829145384708.6359573679671; Sat, 27 Dec 2025 01:52:25 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQxm-0006Hb-M9; Sat, 27 Dec 2025 04:51:55 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxj-00065o-Lh for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:51 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxi-0007XN-0c for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:51 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-427-jW6IK-0sM1a04RHTtYFvOg-1; Sat, 27 Dec 2025 04:51:47 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-4325cc15176so3163262f8f.1 for ; Sat, 27 Dec 2025 01:51:47 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea82f6asm51627902f8f.27.2025.12.27.01.51.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:51:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829109; 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=Z0o903Dc2qu1dTRcXlXDrKlZDWfP3LsB5Y748CsL1HI=; b=VD3xolqRKIGZkW1MNEws0C8A6zqNiQdoxG+X2upJEYfDyCQZ8ZnUKHCxg14NlmZudm3IxA WzRRfknBQScrzAB/TEc83/ULqiBTmfYqg5uFdx5ygsiA/aXqHyrLDISx19x4lVFXetqnH6 H6vGOZghci/xEj+fdj4dGdimqMwNIO8= X-MC-Unique: jW6IK-0sM1a04RHTtYFvOg-1 X-Mimecast-MFC-AGG-ID: jW6IK-0sM1a04RHTtYFvOg_1766829106 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829105; x=1767433905; 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; bh=Z0o903Dc2qu1dTRcXlXDrKlZDWfP3LsB5Y748CsL1HI=; b=bGb6KU8mz1xqTgQhKwWdoHo3+IK6htzf+li29dLNgdICw16jxxojYWD1taGkgYdPUZ scYOqepPrUVAqF57YMcZroEcKQHS+5heInzl0Ey04azZ9q24hyaRxrWwCALMsAr4jG82 cAED1ZAcXefLeRb7EwYjOKEKuqucAtsMj9ii9sztCYcE0fBJoATDXsfrw2pXj7We1sDB z1hnfV+p75yTYKPuOZZiaYWQswlEV24vwsYVNOez+ntIuKKouhqxvOkmZamZA6x6JFco it/CyoJRdm4p45YuC2Z+VVCfhMCGYIShHTGKYpMsabZsm+eyDZxOZsx13ZOo8hqKDZ5z 8J2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829105; x=1767433905; 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; bh=Z0o903Dc2qu1dTRcXlXDrKlZDWfP3LsB5Y748CsL1HI=; b=gNQS39ctZgWOd3Ye2Hryom6yHL9ZiDZFZeO+CroO1bGsAjS/Cku9SaykFBa/ahWMtq +ACZS/z9rv+K5l3e1gYs8zQLeVfXKMzYFgPiFzL5UnnHBnc6GwNljMsLxlOBWaO6nbxP o6ZSs/2C7HU4ZNLQaw6RUp8qXFS9KpfTlS4g4nmjV7GBTbe2qc8GS+ZgSbXaMriQY7Nu QFB/Nn9rRcNgfTMxR+QoabQwNUhHY03HH8lvviAdwAD9peeU+YdfuryKftFWT0SRj0oh qmpW2UlKrE7SMz44KBWoNod1h8FAV3DeQW/f1BIuL7ju8S7tY7Eax38lL6LfC0bTHHzf tu3w== X-Gm-Message-State: AOJu0YxU7oD5csn5gXzKStTmZ7+kNjhzFrjn2mWhRrDkvVOeABLYItK+ hvMKrtIczCFQ3uHFJh1KJrgvc+0k/FxSVEd61FbHGn/PrWg09SvG/8CnDuYbre66jHf72bR+tZl 9YR94S2Jl6RmKvOckFTn0ySohIkwPxt6kTdaJP13UrnlanWpPZ4y+7kkDTpnF3R/ujxUBwM1dSW QrbmKm/cVGIjvbwxQBkuKItNNPZMrSXXkz1nHMJG5U X-Gm-Gg: AY/fxX4Cm/G4odAewaTC1YJ/NZSqb56SET/3j9JU/vvyfw40q8ldqOaRG2sg8cb4pXK BSMX/xeDJo/iF8+VV5DzFB9lCE/DQ9mvZPJjqzt8nr/LsyS3mZZRw4oEQszxowkThpdXG3WhWyr iI0d/3m24tnJwlrJ4rxogrweiEE3hvxEYL4todbzp6nCbJ0R1QxlS6U728kqqysP3rfr4BavSfm HnmIOchkUb4ZNZ0++G3Pvo6lX5w2y/hGl6VHloqEmzES3tMWuJFM91h4cAfz4Z4iK0Wb8wFmdxB MnSnvcUP5DME4GgiJtD9aPHbS0o2KfLGwygOglQ/AZQk86mXdM4LAhFIQzJzYVUzUVgCmnCB6G9 FqFfihaKUNZLiQm9B/RZPLI3gyE/2Z19P/KDWp4bcO3VAc99SO/VQfk1pSH79/uaszQ2REi1brr vSnBsV6TopUjzNOh0= X-Received: by 2002:a5d:5f51:0:b0:429:ba48:4d8 with SMTP id ffacd0b85a97d-4324e4d27b3mr32374534f8f.25.1766829105544; Sat, 27 Dec 2025 01:51:45 -0800 (PST) X-Google-Smtp-Source: AGHT+IFBUaRu73ct84RjgxYRULxBvA7yHcq9pISyCGPzNs0toPA/ZR4Q9osS2P8d6LNVVN8t1BlXYg== X-Received: by 2002:a5d:5f51:0:b0:429:ba48:4d8 with SMTP id ffacd0b85a97d-4324e4d27b3mr32374511f8f.25.1766829105162; Sat, 27 Dec 2025 01:51:45 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li , Marc Morcos Subject: [PULL 148/153] qmp: Fix thread race Date: Sat, 27 Dec 2025 10:47:53 +0100 Message-ID: <20251227094759.35658-74-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829147204158500 Content-Type: text/plain; charset="utf-8" From: Marc Morcos This fixes a thread race involving the monitor in monitor_qmp_event and mon= itor_qapi_event_emit . Signed-off-by: Marc Morcos Link: https://lore.kernel.org/r/20251213001443.2041258-4-marcmorcos@google.= com [Use QEMU_LOCK_GUARD and "continue". - Paolo] Signed-off-by: Paolo Bonzini --- monitor/monitor.c | 8 ++++++-- monitor/qmp.c | 6 ++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/monitor/monitor.c b/monitor/monitor.c index c5a5d308774..1273eb72605 100644 --- a/monitor/monitor.c +++ b/monitor/monitor.c @@ -346,9 +346,13 @@ static void monitor_qapi_event_emit(QAPIEvent event, Q= Dict *qdict) } =20 qmp_mon =3D container_of(mon, MonitorQMP, common); - if (qmp_mon->commands !=3D &qmp_cap_negotiation_commands) { - qmp_send_response(qmp_mon, qdict); + { + QEMU_LOCK_GUARD(&mon->mon_lock); + if (qmp_mon->commands =3D=3D &qmp_cap_negotiation_commands) { + continue; + } } + qmp_send_response(qmp_mon, qdict); } } =20 diff --git a/monitor/qmp.c b/monitor/qmp.c index cb99a12d941..e1419a9efa3 100644 --- a/monitor/qmp.c +++ b/monitor/qmp.c @@ -462,8 +462,10 @@ static void monitor_qmp_event(void *opaque, QEMUChrEve= nt event) =20 switch (event) { case CHR_EVENT_OPENED: - mon->commands =3D &qmp_cap_negotiation_commands; - monitor_qmp_caps_reset(mon); + WITH_QEMU_LOCK_GUARD(&mon->common.mon_lock) { + mon->commands =3D &qmp_cap_negotiation_commands; + monitor_qmp_caps_reset(mon); + } data =3D qmp_greeting(mon); qmp_send_response(mon, data); qobject_unref(data); --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829337; cv=none; d=zohomail.com; s=zohoarc; b=Ek++KMJ/pAUoIYdgYX6GbrkLOr7ebhJfcTGXM00ZYkxScEbQSef1H8KuvkfGYc6JlLAm1s24QtItz5+ZHhP+A2G6BnKfhKxlR2bqqTRP2v044DF44oPMo8LYh7M/aWvoU9pE8RfiDLzusJ6d9DZ3lJXogHgOrltOhbdmQtrwM/Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829337; 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=cXebI6NrLoDz4RV0wSCSw2yTB6kyWf9EWw7Kp6QRaIY=; b=NSXT7AMAOryc25I60OSpjGrFl7Zp8RUijEYryfrqYlrlHuoXO8LLl8iJph5V3LBoqihoH5ZzhDDs5DjxyK/dH8oCIb1AK54wgv13bnSWTxQyObCLNwdG/QrOZ8HJXu6nq70Fx9cjpRjcXB+FAnIJKdJZapWRjsF5fw8reuPjMYo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829337269651.1416731948377; Sat, 27 Dec 2025 01:55:37 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQxn-0006PO-UM; Sat, 27 Dec 2025 04:51:55 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxk-000681-5y for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:52 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxi-0007XV-Pl for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:51 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-424-K5hvCHM3MNWgTVV_V5LFyw-1; Sat, 27 Dec 2025 04:51:49 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-47d40e8a588so11337675e9.3 for ; Sat, 27 Dec 2025 01:51:48 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eab2721sm49528254f8f.39.2025.12.27.01.51.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:51:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829110; 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=cXebI6NrLoDz4RV0wSCSw2yTB6kyWf9EWw7Kp6QRaIY=; b=jWdqjHuD66y0vmuKcu66HuLB20pD9UCaB1yIjq3fVphebvfAZuojrAf4Vd0LZime0OeQ/n lMKSGFr6MBLvl8CZXw4i2OgpO58ccrXo52oImkZzDC2W68Yhyiusop8gA3MF4KdHjU1DMN C5/0+QR55/sOFC/N9tfsbJTKmyixKbI= X-MC-Unique: K5hvCHM3MNWgTVV_V5LFyw-1 X-Mimecast-MFC-AGG-ID: K5hvCHM3MNWgTVV_V5LFyw_1766829108 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829107; x=1767433907; 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; bh=cXebI6NrLoDz4RV0wSCSw2yTB6kyWf9EWw7Kp6QRaIY=; b=IkegWEKn8RAwzGphAWFTnN9U3XMuhwc0adjRJ8z9H10bzdHb1KkG6SPEw75NU7vIom xHRaoiSHNgxdheKPGppPHFP7BnTTFtPTfRfdaPfwSeJlEfQBe4EE/2FqUUqJ+WIsQdlF zN77U6k/rao7mfJ+FhH4f3xEAimeOEBg9qAr0oB1wPZAAlup83IV1fitA+tWy2MaXEfb 9Zh9t/qC5pO8/jylkXGX8brkhg6CTUl2Ouig0VMRLF8+/1BTZzhaoYcppGaqZPkruzGT zc5vyKiLYNXldx+Dfen5o+jfDolBx+z7QFXrAFzKQXPs9GiyqNngy6CroyBLY/FSOF9m Pulw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829107; x=1767433907; 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; bh=cXebI6NrLoDz4RV0wSCSw2yTB6kyWf9EWw7Kp6QRaIY=; b=rTsIR5vPCW0GWqrjqGOBYES8LJ9aFH3OI3cxSM36z3cIe3EU+6Oe/TGxzihsr6wK8M jtJUCQ92fNjzl4ocGqkluhHayO3yvyTg2lTKt2yTRit0gaTlXSxAOIzNrrZucRZN/GBu CAn/jhza3Sztq5v9rmZYZv3KaYzbX+MnMmSKTID7ef/5/ZsQGaJUls6s+CclkF/CApIJ RuLtvZcEslIEaX56u0fYHziUp8B8f6k9JgqmARtwNn2Sz4CyyhhwQomb61ZjTtegVusP eHPSHkBVktDIjYeIMOpWXrI3NaOPJqM3qvLIKcQIpTeDAJDS0epc7S+Fy+p6kBuZLYl1 upBQ== X-Gm-Message-State: AOJu0YwYIZYdNnkeqjoBdfhVFPiRgPCiEDy9tBEF8BVpDXIfim4K4ne+ zr8ocpKhVLulxE8KtkFJ7kHMxzEQpP6YUqXqfIrj6Jn3Zf/rc6rLjCfA1tN8qRhf8l8vve4c/b4 eAHKrhgMXs3tQjJEcwpVWeQktGb8+oMB3ZQc5qYXRLxoNRzo1jzxywYTq+O6OAVasqlHRcsNheZ CZWM88cH2N8Alu922Q5qs5C20IAb4qic3X18C3PyJ7 X-Gm-Gg: AY/fxX7bQ4N4Sb42txbnlBV1gqPiRVGniT8UjQEytTmpYNFjRwpwCbRvAaZ4oBl7YNw sWVylAkSEJgpUMdoLthJxju65VB9ftiZfW4KrIBXsOMOr9iWzXONtuBokmwFV942gUheczjGvWp UchnS6ff4RHOp1j3cBkuhJa3xBwKSda9L58wQCviWRqr5Yt4BrNHHU/ncCQ1g8h0706TfNwuHF7 GeXoW05gQd2x2sCoCiyQGy9ReNsXmp+jA+UbSj6eG5z7DOXdyOr9Du+T0Ma6RZ2SuC4IyetDT39 /p4sMXkoXLktCN3rOOYNibRLaSH7N7de1xjVNkBFAf8GWRqVupqpGw5Kum9Q05XBDGeJ/O5eVZm 5VipWhHMttQCZ+ZIeSedngKSNIPFepc2Gqdg3/Bm2Kbrewd9K2N8gu4N/lkY9zw2JDN74PqaG51 NfqmtVmhtY0I2Aep4= X-Received: by 2002:a05:600c:a11a:b0:47d:3690:7387 with SMTP id 5b1f17b1804b1-47d3690750amr139924355e9.23.1766829107497; Sat, 27 Dec 2025 01:51:47 -0800 (PST) X-Google-Smtp-Source: AGHT+IHMb+iGpuAlpkaUDyqOUTvXcqoXSKg6Cu9edJtGxxJuIwI6PHONS1LUGZphqlsSdTcJKGCwqQ== X-Received: by 2002:a05:600c:a11a:b0:47d:3690:7387 with SMTP id 5b1f17b1804b1-47d3690750amr139924165e9.23.1766829107128; Sat, 27 Dec 2025 01:51:47 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 149/153] hw: add missing includes hidden by block/aio.h Date: Sat, 27 Dec 2025 10:47:54 +0100 Message-ID: <20251227094759.35658-75-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829337841158500 Content-Type: text/plain; charset="utf-8" hw/qdev/core.h being included by core headers means that it was quite easy to forget including it, or anything that hw/qdev/core.h included. Add the missing inclusions. Signed-off-by: Paolo Bonzini --- include/hw/char/serial.h | 1 + hw/virtio/iothread-vq-mapping.c | 1 + 2 files changed, 2 insertions(+) diff --git a/include/hw/char/serial.h b/include/hw/char/serial.h index b804e225886..ea82ffac476 100644 --- a/include/hw/char/serial.h +++ b/include/hw/char/serial.h @@ -26,6 +26,7 @@ #ifndef HW_SERIAL_H #define HW_SERIAL_H =20 +#include "hw/core/qdev.h" #include "chardev/char-fe.h" #include "system/memory.h" #include "qemu/fifo8.h" diff --git a/hw/virtio/iothread-vq-mapping.c b/hw/virtio/iothread-vq-mappin= g.c index 15909eb9332..55ce62986c7 100644 --- a/hw/virtio/iothread-vq-mapping.c +++ b/hw/virtio/iothread-vq-mapping.c @@ -8,6 +8,7 @@ =20 #include "qemu/osdep.h" #include "system/iothread.h" +#include "qemu/bitmap.h" #include "hw/virtio/iothread-vq-mapping.h" =20 static bool --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829292; cv=none; d=zohomail.com; s=zohoarc; b=cJAeA9Tb+hUAs59AxdANT2fXXrn7jWhdlBy2Cxp7mqGoA4AL4/kRAqHaai6gbs78idRtkLfppC9f604w4xsYzMBfLP1j8jv6hGEnCt2BxIidrY3deXpbrWB3oJ6vFU39pSLhO0NOeLjd4C/biMcF6X65oBtH3nHxl4pNcWfOtfs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829292; 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=aHNzjllbBUzUbH3e9EozX0+yCDvl12oO5bAZL6BQpCU=; b=e3qz5us2Aw2vSFb7hieaf2xTxKuvo8/YvQZO5g96o1gDCX+vc2IbW9cEzMydp9mcEh+Wb4ey3bvZdt40t+RK16MZTxbRfXhrDQg3RmVNSAqoZg49sLOT/IqfGIM7qfYPSRDEG3fuVXHVFpRKHIBrPmen4jOhAntrt7axAzidwys= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829292291138.53592640921352; Sat, 27 Dec 2025 01:54:52 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQyN-0006yQ-CO; Sat, 27 Dec 2025 04:52:33 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxp-0006a8-Fh for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:58 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxn-0007Xs-C3 for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:57 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-623-kAZyYZcVPbmRb6N2LffOEQ-1; Sat, 27 Dec 2025 04:51:51 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-4775d110fabso65577715e9.1 for ; Sat, 27 Dec 2025 01:51:51 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43277b82a58sm16563587f8f.6.2025.12.27.01.51.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:51:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829113; 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=aHNzjllbBUzUbH3e9EozX0+yCDvl12oO5bAZL6BQpCU=; b=UbdN0goK2MpChVRY1xX200M5DrXroClSdXCn6mWfRKfwQggaumRViHjMM4JBrnLVDkD0vK ZfeSHpwCrgVTkYZA8bph/lhaY+CdXSu4K7LPJ6aZXers33ECg5bpxcYDnMPQDskPmiU0oC IPH+XPjnrCs8aodXW7ZN0hyJJV68LJY= X-MC-Unique: kAZyYZcVPbmRb6N2LffOEQ-1 X-Mimecast-MFC-AGG-ID: kAZyYZcVPbmRb6N2LffOEQ_1766829111 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829110; x=1767433910; 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; bh=aHNzjllbBUzUbH3e9EozX0+yCDvl12oO5bAZL6BQpCU=; b=UF4g0IObtA77O044zzcGHpcEC9tk+yx+79XAE0PHnhGJpCMtQvFU1mO1BwOuRtnZn9 g9WRb5S0h+ry3jIk5MngSpO08AbyOil5aThXN4QAwQoRx36rfT8RK4Yd8YyzLdAfqy35 02KRLJ1Q4GMnt4bTf1bYqm3kUbec8/glaBFn3/t5wXj0NG2byvvjClUG61MlDnVXRufl UpTl8lRjY+mUDebXTlg6SxVb7crXdr03Eu9EMfAF4E+hpDfv4EPH/AxHcItvzxd0rF+b cR+C07kP91JCrrRZBGLKo9z2qPbILuRcA52R5qZRISWHuSoq0OprbBMOv7M3rCDxq71M OI8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829110; x=1767433910; 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; bh=aHNzjllbBUzUbH3e9EozX0+yCDvl12oO5bAZL6BQpCU=; b=L1DRF7+Tkl81kGhdlV6/O3ESwOvG83tYNr6n0Gti20OTzM3yyJzZeW7R1A+u1NqiPx +KP9tJNjUoIyPF3xERoMtoj3uZTX2cTlU/hHuoE9WJ7TE37DSREZXwGNUWBvvfOFnsyl t6uUmfsCuwInUvrepuAvuzDutqNu8VAcbUEltozRyHXvKl4dzk1PlLcqC9rqFTv8taaB 4ImDMQqb+nDIV23n2PiDrOIp1/4zsXo6vcSexuXxm9QBtNGkqXKq0w6lwGAVngip2Inw nXdnV5Zaz/4FS0B+/UhZOfJ69fO3hVlVaHe8bYKMxKtg+u0yeGYsxweleVD5/m9SOwPF 0+UQ== X-Gm-Message-State: AOJu0Yz9ixaXVWziyPxnTljxpQmoUWqX8I/56myG3LMlwH5knyWVUOR2 f8wfpw3Q0rkcgNzmXT0G3m+Xp/jg3ExXbWE5RgPx7wtVEOUevEzH7VsUvzBBooYlRy0jn50Ry3z 4+NUvMTzjWCluPv6U/71o9rUCu364WMCm2dqmiKE1r/Jt5KXvEFRg/rNqN1rIN0Q3DlVVpaI67d ndpGNuWVhy3vYwNhvDZBzW13evI2EGkCjfDlKeg2E3 X-Gm-Gg: AY/fxX5ddBwrzr5Pf7Whk17PNssi8sFZKOZQxReguM6G+GMOIAqws1s8lJgplyXzYxE 6AiE8+s3uFM7h22Wpj2LFcP2JdwbHPYzJiek0vjJ2bl9et478yNOwkNGCNSwzILPW3u16jZJwM3 XNN4kb8CLKbwQsPuAxTBpGNetLntqthhVNrYsmEoWcapcUbkGz6E3ZXWeWDsLNoZ2LX024419hh 1kBjLYeKgNi4VPftEIu0TJbmUR3fCTbXWvfqzDAPI09zhYYwWtXiTNpAL/rIOlDzL6v6yBmDwMW bS44Tyiz+wbeHFrnpOYjS4xfAodd7kS2Gpcz0HoXj7i6I0KAa6nWVjy+Vs4y5aeOOmNGv7AZtDy 0W6sxCjoz2iE7/jqPF8OJoC4ox+/Sf49agnFohgf5MJCnTXXdPiWp7d9YWPQo6UqCbtB+3Samkg sWM/W6iAPLIERxKRc= X-Received: by 2002:a05:6000:200f:b0:431:8f8:7f2e with SMTP id ffacd0b85a97d-4324e50615emr33865542f8f.33.1766829109784; Sat, 27 Dec 2025 01:51:49 -0800 (PST) X-Google-Smtp-Source: AGHT+IHZyr2RkcDx+6mcd68hLCgSVgMVYXHKjJl9oMSMCmwhTuKkT4MrQgryGptXqkUkrqHx1z0hmQ== X-Received: by 2002:a05:6000:200f:b0:431:8f8:7f2e with SMTP id ffacd0b85a97d-4324e50615emr33865508f8f.33.1766829109129; Sat, 27 Dec 2025 01:51:49 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 150/153] block: extract include/qemu/aiocb.h out of include/block/aio.h Date: Sat, 27 Dec 2025 10:47:55 +0100 Message-ID: <20251227094759.35658-76-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829293805158500 Content-Type: text/plain; charset="utf-8" Create a new header corresponding to functions defined in util/aiocb.c, and include it whenever AIOCBs are used but AioContext is not. Signed-off-by: Paolo Bonzini --- fsdev/qemu-fsdev-throttle.h | 1 - include/block/aio.h | 21 ----------------- include/block/block-global-state.h | 1 + include/block/block-io.h | 1 + include/block/block_int-common.h | 2 +- include/block/raw-aio.h | 1 + include/block/thread-pool.h | 1 + include/hw/ide/ide-dma.h | 2 +- include/hw/scsi/scsi.h | 1 + include/qemu/aiocb.h | 38 ++++++++++++++++++++++++++++++ include/qemu/job.h | 1 + include/qemu/throttle.h | 1 + block/win32-aio.c | 1 + hw/core/ptimer.c | 1 - hw/misc/i2c-echo.c | 1 - hw/virtio/virtio-pmem.c | 1 - scsi/qemu-pr-helper.c | 1 - tests/unit/test-thread-pool.c | 1 + ui/input-linux.c | 1 - ui/vnc-jobs.c | 1 - util/aiocb.c | 2 +- 21 files changed, 50 insertions(+), 31 deletions(-) create mode 100644 include/qemu/aiocb.h diff --git a/fsdev/qemu-fsdev-throttle.h b/fsdev/qemu-fsdev-throttle.h index daa8ca2494d..a1dc0307903 100644 --- a/fsdev/qemu-fsdev-throttle.h +++ b/fsdev/qemu-fsdev-throttle.h @@ -15,7 +15,6 @@ #ifndef QEMU_FSDEV_THROTTLE_H #define QEMU_FSDEV_THROTTLE_H =20 -#include "block/aio.h" #include "qemu/coroutine.h" #include "qemu/throttle.h" =20 diff --git a/include/block/aio.h b/include/block/aio.h index cc3d5f25a24..59c56d695ee 100644 --- a/include/block/aio.h +++ b/include/block/aio.h @@ -27,27 +27,6 @@ #include "hw/core/qdev.h" =20 =20 -typedef struct BlockAIOCB BlockAIOCB; -typedef void BlockCompletionFunc(void *opaque, int ret); - -typedef struct AIOCBInfo { - void (*cancel_async)(BlockAIOCB *acb); - size_t aiocb_size; -} AIOCBInfo; - -struct BlockAIOCB { - const AIOCBInfo *aiocb_info; - BlockDriverState *bs; - BlockCompletionFunc *cb; - void *opaque; - int refcnt; -}; - -void *qemu_aio_get(const AIOCBInfo *aiocb_info, BlockDriverState *bs, - BlockCompletionFunc *cb, void *opaque); -void qemu_aio_unref(void *p); -void qemu_aio_ref(void *p); - typedef struct AioHandler AioHandler; typedef QLIST_HEAD(, AioHandler) AioHandlerList; typedef void QEMUBHFunc(void *opaque); diff --git a/include/block/block-global-state.h b/include/block/block-globa= l-state.h index 479ca2858e1..c2127f17249 100644 --- a/include/block/block-global-state.h +++ b/include/block/block-global-state.h @@ -24,6 +24,7 @@ #ifndef BLOCK_GLOBAL_STATE_H #define BLOCK_GLOBAL_STATE_H =20 +#include "qemu/aiocb.h" #include "block/block-common.h" #include "qemu/coroutine.h" #include "qemu/transactions.h" diff --git a/include/block/block-io.h b/include/block/block-io.h index 4cf83fb3674..e5efe0efb2f 100644 --- a/include/block/block-io.h +++ b/include/block/block-io.h @@ -24,6 +24,7 @@ #ifndef BLOCK_IO_H #define BLOCK_IO_H =20 +#include "qemu/aiocb.h" #include "block/aio-wait.h" #include "block/block-common.h" #include "qemu/coroutine.h" diff --git a/include/block/block_int-common.h b/include/block/block_int-com= mon.h index cb0143ea77b..6d0898e53d1 100644 --- a/include/block/block_int-common.h +++ b/include/block/block_int-common.h @@ -24,10 +24,10 @@ #ifndef BLOCK_INT_COMMON_H #define BLOCK_INT_COMMON_H =20 -#include "block/aio.h" #include "block/block-common.h" #include "block/block-global-state.h" #include "block/snapshot.h" +#include "qemu/aiocb.h" #include "qemu/iov.h" #include "qemu/rcu.h" #include "qemu/stats64.h" diff --git a/include/block/raw-aio.h b/include/block/raw-aio.h index 30e5fc9a9fd..d568b887f1c 100644 --- a/include/block/raw-aio.h +++ b/include/block/raw-aio.h @@ -16,6 +16,7 @@ #ifndef QEMU_RAW_AIO_H #define QEMU_RAW_AIO_H =20 +#include "qemu/aiocb.h" #include "block/aio.h" #include "block/block-common.h" #include "qemu/iov.h" diff --git a/include/block/thread-pool.h b/include/block/thread-pool.h index dd48cf07e85..65cabfc1388 100644 --- a/include/block/thread-pool.h +++ b/include/block/thread-pool.h @@ -18,6 +18,7 @@ #ifndef QEMU_THREAD_POOL_H #define QEMU_THREAD_POOL_H =20 +#include "qemu/aiocb.h" #include "block/aio.h" =20 #define THREAD_POOL_MAX_THREADS_DEFAULT 64 diff --git a/include/hw/ide/ide-dma.h b/include/hw/ide/ide-dma.h index d0b19ac9c57..296010a4e0d 100644 --- a/include/hw/ide/ide-dma.h +++ b/include/hw/ide/ide-dma.h @@ -1,7 +1,7 @@ #ifndef HW_IDE_DMA_H #define HW_IDE_DMA_H =20 -#include "block/aio.h" +#include "qemu/aiocb.h" #include "qemu/iov.h" =20 typedef struct IDEState IDEState; diff --git a/include/hw/scsi/scsi.h b/include/hw/scsi/scsi.h index 83782339d4b..75b4d781a5c 100644 --- a/include/hw/scsi/scsi.h +++ b/include/hw/scsi/scsi.h @@ -1,6 +1,7 @@ #ifndef QEMU_HW_SCSI_H #define QEMU_HW_SCSI_H =20 +#include "qemu/aiocb.h" #include "block/aio.h" #include "hw/block/block.h" #include "hw/core/qdev.h" diff --git a/include/qemu/aiocb.h b/include/qemu/aiocb.h new file mode 100644 index 00000000000..0622646f31d --- /dev/null +++ b/include/qemu/aiocb.h @@ -0,0 +1,38 @@ +/* + * Data structures representing asynchronous I/O operations + * + * Copyright IBM, Corp. 2008 + * + * Authors: + * Anthony Liguori + * + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. + * + */ + +#ifndef QEMU_AIOCB_H +#define QEMU_AIOCB_H + +typedef struct BlockAIOCB BlockAIOCB; +typedef void BlockCompletionFunc(void *opaque, int ret); + +typedef struct AIOCBInfo { + void (*cancel_async)(BlockAIOCB *acb); + size_t aiocb_size; +} AIOCBInfo; + +struct BlockAIOCB { + const AIOCBInfo *aiocb_info; + BlockDriverState *bs; + BlockCompletionFunc *cb; + void *opaque; + int refcnt; +}; + +void *qemu_aio_get(const AIOCBInfo *aiocb_info, BlockDriverState *bs, + BlockCompletionFunc *cb, void *opaque); +void qemu_aio_unref(void *p); +void qemu_aio_ref(void *p); + +#endif diff --git a/include/qemu/job.h b/include/qemu/job.h index ead31578d3d..af29b8c6531 100644 --- a/include/qemu/job.h +++ b/include/qemu/job.h @@ -27,6 +27,7 @@ #define JOB_H =20 #include "qapi/qapi-types-job.h" +#include "qemu/aiocb.h" #include "qemu/queue.h" #include "qemu/progress_meter.h" #include "qemu/coroutine.h" diff --git a/include/qemu/throttle.h b/include/qemu/throttle.h index 181245d29bc..8fa2b29452a 100644 --- a/include/qemu/throttle.h +++ b/include/qemu/throttle.h @@ -25,6 +25,7 @@ #ifndef THROTTLE_H #define THROTTLE_H =20 +#include "block/aio.h" #include "qapi/qapi-types-block-core.h" #include "qemu/timer.h" =20 diff --git a/block/win32-aio.c b/block/win32-aio.c index f0689f3ee95..539f1c81c65 100644 --- a/block/win32-aio.c +++ b/block/win32-aio.c @@ -28,6 +28,7 @@ #include "block/block_int.h" #include "block/aio.h" #include "block/raw-aio.h" +#include "qemu/aiocb.h" #include "qemu/event_notifier.h" #include "qemu/iov.h" #include "qemu/memalign.h" diff --git a/hw/core/ptimer.c b/hw/core/ptimer.c index e42e06fa4de..0cbe1ed5787 100644 --- a/hw/core/ptimer.c +++ b/hw/core/ptimer.c @@ -13,7 +13,6 @@ #include "exec/replay-core.h" #include "exec/icount.h" #include "system/qtest.h" -#include "block/aio.h" #include "hw/core/clock.h" =20 #define DELTA_ADJUST 1 diff --git a/hw/misc/i2c-echo.c b/hw/misc/i2c-echo.c index 2bb99ec0dbf..54d07db6fae 100644 --- a/hw/misc/i2c-echo.c +++ b/hw/misc/i2c-echo.c @@ -11,7 +11,6 @@ #include "qemu/osdep.h" #include "qemu/timer.h" #include "qemu/main-loop.h" -#include "block/aio.h" #include "hw/i2c/i2c.h" #include "trace.h" =20 diff --git a/hw/virtio/virtio-pmem.c b/hw/virtio/virtio-pmem.c index 854d08abf6e..5381d592824 100644 --- a/hw/virtio/virtio-pmem.c +++ b/hw/virtio/virtio-pmem.c @@ -22,7 +22,6 @@ #include "standard-headers/linux/virtio_ids.h" #include "standard-headers/linux/virtio_pmem.h" #include "system/hostmem.h" -#include "block/aio.h" #include "block/thread-pool.h" #include "trace.h" =20 diff --git a/scsi/qemu-pr-helper.c b/scsi/qemu-pr-helper.c index 074b4db4720..9dcd3ec7111 100644 --- a/scsi/qemu-pr-helper.c +++ b/scsi/qemu-pr-helper.c @@ -52,7 +52,6 @@ #include "trace/control.h" #include "qemu-version.h" =20 -#include "block/aio.h" #include "block/thread-pool.h" =20 #include "scsi/constants.h" diff --git a/tests/unit/test-thread-pool.c b/tests/unit/test-thread-pool.c index 33407b595d3..ea5234f9f48 100644 --- a/tests/unit/test-thread-pool.c +++ b/tests/unit/test-thread-pool.c @@ -3,6 +3,7 @@ #include "block/thread-pool.h" #include "block/block.h" #include "qapi/error.h" +#include "qemu/aiocb.h" #include "qemu/timer.h" #include "qemu/error-report.h" #include "qemu/main-loop.h" diff --git a/ui/input-linux.c b/ui/input-linux.c index 44d0c15a9b7..c16726a3b79 100644 --- a/ui/input-linux.c +++ b/ui/input-linux.c @@ -13,7 +13,6 @@ #include "ui/input.h" #include "qom/object_interfaces.h" #include "system/iothread.h" -#include "block/aio.h" =20 #include #include "standard-headers/linux/input.h" diff --git a/ui/vnc-jobs.c b/ui/vnc-jobs.c index bed33950a87..b296d19e089 100644 --- a/ui/vnc-jobs.c +++ b/ui/vnc-jobs.c @@ -31,7 +31,6 @@ #include "vnc-jobs.h" #include "qemu/sockets.h" #include "qemu/main-loop.h" -#include "block/aio.h" #include "trace.h" =20 /* diff --git a/util/aiocb.c b/util/aiocb.c index 5aef3a069c8..d1a581080d3 100644 --- a/util/aiocb.c +++ b/util/aiocb.c @@ -23,7 +23,7 @@ */ =20 #include "qemu/osdep.h" -#include "block/aio.h" +#include "qemu/aiocb.h" =20 void *qemu_aio_get(const AIOCBInfo *aiocb_info, BlockDriverState *bs, BlockCompletionFunc *cb, void *opaque) --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829303; cv=none; d=zohomail.com; s=zohoarc; b=eT0Mnctsk6ALsxGQClIxDcJ+MQ47lorI4ElN3M4oWDjfByrOCxbdYrRPRDgxd2efPApzbM/lb7MPlCU9BV/GKItVFS+Tp8fX+PL6tA708Kp/gPXV/d6y/ZPMrAHVe+D7WxhGxMTswuFZAfuItBgKJkbHhm1Cdxa4T60RI08YQzk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829303; 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=6mA9qiVHrcRk5ept2GBYRaDPsRAZx+xjC+RZbHBMI2k=; b=kHvbqTEd6As7AHogZl2tQsZz1ts2frl1gydvqtdYwTFZphxY4AerSI6h3zEyhxXEnqvFKWcrsbr53WUJ5pjOk/9gLfBpDyP2PjIW3PnHKLOT+8SSCQlT/ZR6hLyuOpMS6hsS6WzV+Haf9N1TC+XF9nBAtm0a0THeZTBlDdu/50w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829303795294.202732461819; Sat, 27 Dec 2025 01:55:03 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQyP-00075v-9r; Sat, 27 Dec 2025 04:52:33 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxp-0006Yp-9L for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:58 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxn-0007Xw-CE for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:51:57 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-631-K58UxYnZOZmjrD0cP1xz1A-1; Sat, 27 Dec 2025 04:51:53 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-477563a0c75so17865465e9.1 for ; Sat, 27 Dec 2025 01:51:53 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be272e46fsm476214485e9.4.2025.12.27.01.51.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:51:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829114; 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=6mA9qiVHrcRk5ept2GBYRaDPsRAZx+xjC+RZbHBMI2k=; b=WD6QCp00C+W1jB+MpZbdQmBSpF8xkCyBWcKp8AbNIQv6U+/vJB/CAnaX6HMaokWT1NNl91 bDg2tX50As+5Z++wKPvlPfqzSyWlS/sBm3H6bv9j1xHaR834Lj7h0PEay2xdqdjy9kzzGH oqj85k3LJiL0tVf6c3k48P+mKH+IkpM= X-MC-Unique: K58UxYnZOZmjrD0cP1xz1A-1 X-Mimecast-MFC-AGG-ID: K58UxYnZOZmjrD0cP1xz1A_1766829112 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829112; x=1767433912; 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; bh=6mA9qiVHrcRk5ept2GBYRaDPsRAZx+xjC+RZbHBMI2k=; b=h/dAQLmWIPvV8az8mgcQaL7QhHSmmimmJiEo6EGTqkj4YZdCh8zgQed4GkhKgE8+5s 0DTEnKa/OczUUNfoSEjlrBG70FtER1In6icvb/y4+dsXcmbM6u/R3czzqBWWChr1/7yY NWK+her/3rQZ7cs/D/MlEWzG1ObWge3QQ8Bbyr0IhB4ODqBXbDmCmX6I+WzRGrFmbwAJ IwDax52O97bAIYZaZBtVOjoZ/G3VqZ30I4pvYCU/UvFKU4kI+yvKpVMu+spmqKie0t1u oFLB/ZfuGJHAdGPqhqorU7Ks3Y09HtIHPqLKX4GfqAwbVMTJfrd3ScV0+Rq7OIfk7Nx+ 6sMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829112; x=1767433912; 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; bh=6mA9qiVHrcRk5ept2GBYRaDPsRAZx+xjC+RZbHBMI2k=; b=IeFicE4uMx50plRxmlFQOtbk1QN2fjS0N2swXeZz/jK5JTHaiCiDlrdDtTIGpTuxQq V1NbA3ZoIzRehe/oqFmlNTjtQJLNUoQhUD2yLGhFs8fYe4PLYWLjRMfHeLLeBbRGW6Fp 0CO6WmAff4PSXeHaEEvm+zFTjQ5uQBYYVL59uKydJR04A46IrmWecXg3l+XBjbsL3vIZ wzFvfwzdnnIiclrRakh0f+YkL0VR9rOdyW2vJFGDYOdIhnfsOeaaqIZzDtdTzolu08mf pv9ISoZS2jAgStjuJkjPfpa/6BxnitoFqbY+7XxlTjqhjlKQ4waOp15p0uWFBVnNcmDc ws0A== X-Gm-Message-State: AOJu0YybgijultWbVEswvxOKrf5YT4nz0cdd09l1cwtnb0KzRNT1gSrr BqOhxouZ314W88h8G2zJ3gToGux/3cCKPQNQi1aXIWj7odFhQH+3rOtZctrGxxgh0DbK8MjGo61 W+HjBW4u8ti0QcQF980iaCyuZ8yTjZHpahFjFMh58/0/ixEEY6F09djRp8t+qpDUJiObWuHbVmS sXFlr9pL3qBDe/If63dxeHqLtqAdsovdw4P+s809dt X-Gm-Gg: AY/fxX6h+WkwH6QMNgiWNWDwPAITGEjIaZ//rQSSDDdeDxPznMcyxLtlcIWMqbM3mKd lJahyTHzNDbP6PHcEtnxYXSKvRsXhQFim6T0SpXhVvOlgNiF48NJ0VztOq2EKLnOzVNU2V+HiNe FYVZhvvWZpg1fj6U9kpSAcZDTbbl6KpAhDtQoYhRyyrL7FaQe8/eDMA+Uva6LYPC/6ti+tJVFii eHNbfAPPooISBuFMPM22m/xYRUZt3EY05+unTxsrNbwY7W/kRdTQLb4Ya0Q9BC4FuT/oDaHUMtH w34LmujAeylHO8q/dEZDscUMIS1aN1xLFfs9nNSvlqqV9qb5FJP6KdPI36f4Ydn8oZ25ybtLywh D4AX2Sw4dLOFIDI7njmEH1+GFzNieHPt7LXbgn0Z2gKgyjzmnecMBrNXfLEINxRB2REaggzkomf S0JwWPq4rexZTpjjw= X-Received: by 2002:a05:600c:a31a:b0:477:b48d:ba7a with SMTP id 5b1f17b1804b1-47d1afcd9e2mr214702685e9.32.1766829111958; Sat, 27 Dec 2025 01:51:51 -0800 (PST) X-Google-Smtp-Source: AGHT+IGM25jueoOtnYSnik6LR9Hu476CqEkd3h+jmCQKAQz7FAHYXW1+wq5GfuFPpgti3pfsDTGs6A== X-Received: by 2002:a05:600c:a31a:b0:477:b48d:ba7a with SMTP id 5b1f17b1804b1-47d1afcd9e2mr214702505e9.32.1766829111495; Sat, 27 Dec 2025 01:51:51 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 151/153] block: reduce files included by block/aio.h Date: Sat, 27 Dec 2025 10:47:56 +0100 Message-ID: <20251227094759.35658-77-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829305847158500 Content-Type: text/plain; charset="utf-8" Avoid including all of qdev everywhere (the hw/core/qdev.h header in fact brings in a lot more headers too), instead declare a couple structs for which only a pointer type is needed. Signed-off-by: Paolo Bonzini --- include/block/aio.h | 7 +++---- include/block/block-copy.h | 1 + include/block/block-global-state.h | 1 + include/block/block-io.h | 1 + include/block/dirty-bitmap.h | 1 + include/hw/core/qdev.h | 6 +----- include/qemu/job.h | 1 + include/qemu/main-loop.h | 2 +- include/qemu/mem-reentrancy.h | 10 ++++++++++ net/net.c | 1 + tests/unit/ptimer-test-stubs.c | 2 +- util/async.c | 1 + 12 files changed, 23 insertions(+), 11 deletions(-) create mode 100644 include/qemu/mem-reentrancy.h diff --git a/include/block/aio.h b/include/block/aio.h index 59c56d695ee..8cca2360d1a 100644 --- a/include/block/aio.h +++ b/include/block/aio.h @@ -23,9 +23,8 @@ #include "qemu/lockcnt.h" #include "qemu/thread.h" #include "qemu/timer.h" -#include "block/graph-lock.h" -#include "hw/core/qdev.h" =20 +struct MemReentrancyGuard; =20 typedef struct AioHandler AioHandler; typedef QLIST_HEAD(, AioHandler) AioHandlerList; @@ -211,7 +210,7 @@ struct AioContext { * of nodes and edges from block graph while some * other thread is traversing it. */ - BdrvGraphRWlock *bdrv_graph; + struct BdrvGraphRWlock *bdrv_graph; =20 /* The list of registered AIO handlers. Protected by ctx->list_lock. = */ AioHandlerList aio_handlers; @@ -393,7 +392,7 @@ void aio_bh_schedule_oneshot_full(AioContext *ctx, QEMU= BHFunc *cb, void *opaque, * device-reentrancy issues */ QEMUBH *aio_bh_new_full(AioContext *ctx, QEMUBHFunc *cb, void *opaque, - const char *name, MemReentrancyGuard *reentrancy_g= uard); + const char *name, struct MemReentrancyGuard *reent= rancy_guard); =20 /** * aio_bh_new: Allocate a new bottom half structure diff --git a/include/block/block-copy.h b/include/block/block-copy.h index dd5cc82f3b2..0df2771181b 100644 --- a/include/block/block-copy.h +++ b/include/block/block-copy.h @@ -16,6 +16,7 @@ #define BLOCK_COPY_H =20 #include "block/block-common.h" +#include "block/graph-lock.h" #include "qemu/progress_meter.h" =20 /* All APIs are thread-safe */ diff --git a/include/block/block-global-state.h b/include/block/block-globa= l-state.h index c2127f17249..ed89999f0fb 100644 --- a/include/block/block-global-state.h +++ b/include/block/block-global-state.h @@ -25,6 +25,7 @@ #define BLOCK_GLOBAL_STATE_H =20 #include "qemu/aiocb.h" +#include "block/graph-lock.h" #include "block/block-common.h" #include "qemu/coroutine.h" #include "qemu/transactions.h" diff --git a/include/block/block-io.h b/include/block/block-io.h index e5efe0efb2f..7925e2241e6 100644 --- a/include/block/block-io.h +++ b/include/block/block-io.h @@ -27,6 +27,7 @@ #include "qemu/aiocb.h" #include "block/aio-wait.h" #include "block/block-common.h" +#include "block/graph-lock.h" #include "qemu/coroutine.h" #include "qemu/iov.h" =20 diff --git a/include/block/dirty-bitmap.h b/include/block/dirty-bitmap.h index fa956debfb2..28029bbc2bc 100644 --- a/include/block/dirty-bitmap.h +++ b/include/block/dirty-bitmap.h @@ -2,6 +2,7 @@ #define BLOCK_DIRTY_BITMAP_H =20 #include "block/block-common.h" +#include "block/graph-lock.h" #include "qapi/qapi-types-block-core.h" #include "qemu/hbitmap.h" =20 diff --git a/include/hw/core/qdev.h b/include/hw/core/qdev.h index e211d807e82..4b2730e9d8e 100644 --- a/include/hw/core/qdev.h +++ b/include/hw/core/qdev.h @@ -4,6 +4,7 @@ #include "qemu/atomic.h" #include "qemu/queue.h" #include "qemu/bitmap.h" +#include "qemu/mem-reentrancy.h" #include "qemu/rcu.h" #include "qemu/rcu_queue.h" #include "qom/object.h" @@ -208,11 +209,6 @@ struct NamedClockList { QLIST_ENTRY(NamedClockList) node; }; =20 -typedef struct MemReentrancyGuard { - bool engaged_in_io; -} MemReentrancyGuard; - - typedef QLIST_HEAD(, NamedGPIOList) NamedGPIOListHead; typedef QLIST_HEAD(, NamedClockList) NamedClockListHead; typedef QLIST_HEAD(, BusState) BusStateHead; diff --git a/include/qemu/job.h b/include/qemu/job.h index af29b8c6531..2b163602c56 100644 --- a/include/qemu/job.h +++ b/include/qemu/job.h @@ -32,6 +32,7 @@ #include "qemu/progress_meter.h" #include "qemu/coroutine.h" #include "block/aio.h" +#include "block/graph-lock.h" =20 typedef struct JobDriver JobDriver; typedef struct JobTxn JobTxn; diff --git a/include/qemu/main-loop.h b/include/qemu/main-loop.h index 0d55c636b21..241dc87be50 100644 --- a/include/qemu/main-loop.h +++ b/include/qemu/main-loop.h @@ -431,7 +431,7 @@ void qemu_cond_timedwait_bql(QemuCond *cond, int ms); #define qemu_bh_new(cb, opaque) \ qemu_bh_new_full((cb), (opaque), (stringify(cb)), NULL) QEMUBH *qemu_bh_new_full(QEMUBHFunc *cb, void *opaque, const char *name, - MemReentrancyGuard *reentrancy_guard); + struct MemReentrancyGuard *reentrancy_guard); void qemu_bh_schedule_idle(QEMUBH *bh); =20 enum { diff --git a/include/qemu/mem-reentrancy.h b/include/qemu/mem-reentrancy.h new file mode 100644 index 00000000000..07cafd47179 --- /dev/null +++ b/include/qemu/mem-reentrancy.h @@ -0,0 +1,10 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#ifndef QEMU_MEM_REENTRANCY_H +#define QEMU_MEM_REENTRANCY_H 1 + +typedef struct MemReentrancyGuard { + bool engaged_in_io; +} MemReentrancyGuard; + +#endif diff --git a/net/net.c b/net/net.c index 4930b573ed3..a176936f9bc 100644 --- a/net/net.c +++ b/net/net.c @@ -39,6 +39,7 @@ #include "qobject/qdict.h" #include "qapi/qmp/qerror.h" #include "qemu/error-report.h" +#include "qemu/mem-reentrancy.h" #include "qemu/sockets.h" #include "qemu/cutils.h" #include "qemu/config-file.h" diff --git a/tests/unit/ptimer-test-stubs.c b/tests/unit/ptimer-test-stubs.c index 8c9407c560a..da46dda32d2 100644 --- a/tests/unit/ptimer-test-stubs.c +++ b/tests/unit/ptimer-test-stubs.c @@ -108,7 +108,7 @@ int64_t qemu_clock_deadline_ns_all(QEMUClockType type, = int attr_mask) } =20 QEMUBH *qemu_bh_new_full(QEMUBHFunc *cb, void *opaque, const char *name, - MemReentrancyGuard *reentrancy_guard) + struct MemReentrancyGuard *reentrancy_guard) { QEMUBH *bh =3D g_new(QEMUBH, 1); =20 diff --git a/util/async.c b/util/async.c index 48f88286369..39f391fb71a 100644 --- a/util/async.c +++ b/util/async.c @@ -29,6 +29,7 @@ #include "block/thread-pool.h" #include "block/graph-lock.h" #include "qemu/main-loop.h" +#include "qemu/mem-reentrancy.h" #include "qemu/atomic.h" #include "qemu/lockcnt.h" #include "qemu/rcu_queue.h" --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829291; cv=none; d=zohomail.com; s=zohoarc; b=XOkc7odtouEdVF0WAUy3ROVBHQN/X2umEjPxfDiux46Ho+uqgyIgEJ1u+5qMgkJAzR4PnuSx/o3zq6GnuYaeX9RP2UfKQREGvA8RS8vc0B0jY7ENhFvL8b2GMqOq2jWoWIAi/+4SHmmiDriynlNqIIZwirKnDl9PLKTxzkNiYQI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829291; 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=kI7Ens2iUFj6+g0CAWOKjGlJK4R7nHbTYZmOISHQub8=; b=cU3jFUzqE7oloEZqql+u9h1xPsMW+KB3edR4nqYYaSDDwIPKpOavNLCEWMSHzI3dV7HWgy7h6aGyMgClLrIrFR0coTFBooW3aX7/2DpA7w5j1+TC0mHVJIn5j+32XV+b4e/fpF7HLAJpXXZxIzC+nXPkN7z/fojKLEQSO1kQ4Ao= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829291630228.85574974619817; Sat, 27 Dec 2025 01:54:51 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQyT-0007TH-Hv; Sat, 27 Dec 2025 04:52:38 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQy1-0006oK-Es for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:52:14 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxy-0007Yf-7j for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:52:09 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-452-CvsEPy_-OH6hAluqAK2lkA-1; Sat, 27 Dec 2025 04:51:57 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-477cf2230c8so78162955e9.0 for ; Sat, 27 Dec 2025 01:51:57 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be2723b2bsm488443555e9.3.2025.12.27.01.51.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:51:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829119; 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=kI7Ens2iUFj6+g0CAWOKjGlJK4R7nHbTYZmOISHQub8=; b=R3EDk+kh5K0xP8Koz+pGwCX9szfUOqkwS9C+s733Qk4IGk/tvs+c5D8Iyl/6i3lZD/eTaC tZUKtJk0mngpe++/+7TMtTNu4M6m6XFg3r7yXW7rWHnyqBGBOMWGXP1bhjTxJJ9oTl2oxq xI257z1NdoWtquXCjDRfJDGZzVjOZ94= X-MC-Unique: CvsEPy_-OH6hAluqAK2lkA-1 X-Mimecast-MFC-AGG-ID: CvsEPy_-OH6hAluqAK2lkA_1766829117 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829115; x=1767433915; 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; bh=kI7Ens2iUFj6+g0CAWOKjGlJK4R7nHbTYZmOISHQub8=; b=qOfsjBVzQWXEsmlTiFnOrICTwsdeEjYRQve41qVhx4NpIUYcQnpfumqVYK3UQb6j3/ 1h848XaLei82VUwwO6QDzbdTq4jXy2j3x/Wdh0uBuNIOdeVAu8PmAOQhPLEX3gRE3Wb6 oWZiOxfOybMQYz1zPKUe81WepdPSuHw/AGK4ANTltm5aHlry6LbajbHFGgmWX0c40+SD ZtzYH3Hd8qyqbknMoVM5tBAl8faK/LTr7k5oEAZnoPaf526LJ8szEJBW3Tf+UEYUaIRF sgOHZ61Em6/UeNNxw6MbQa2jV26irV7H6O80WR1sbVrdf6BLl4u3Op2Ub84JqJ10iGf0 O/+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829115; x=1767433915; 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; bh=kI7Ens2iUFj6+g0CAWOKjGlJK4R7nHbTYZmOISHQub8=; b=aqYU7Ztf1hxqxbBENen6PMa3TdyACXmlGoA3bUV28MEp8U9brc2wvVr4JgQeG33tx6 CVTnvy2MuQ8NrGXX5slOrrydmOpVL/Vy9HhZNXcW2iRPOs6njFXJ7bfxAZ/wx3bEZjz6 +nYpZBzE0+rMtNs0ot8EiRaemBraRi6EYXiX7uTuyEGB9ZmeZDYbV6wZtdY4scUKkG2e /mQDi+CQTNg/Y4f9FpRZa2RCz1osS9v+lUbUzypKnEhFRaZSS1mlzbqlUz9gk+hwD759 MuotsuxRepxtLYORXA26v3ud5JGV/5Xsv8AsP6Bk5yaJyd8MfR6aLP8CusE1sfyaAie3 wRiQ== X-Gm-Message-State: AOJu0Yxa8PvOqa+2s0Zc/0dwd/JmjuwZI2/5/sSRyA8/l7Lym/pQqak6 u1w0TQdZ1HnUN+xuxxKGsZEGinv4L0f7S/aC6H+syIYtZ/2ECJqYE4Lwv4dMEyR/8txLjx2EMmY xdBnTEr0hnKK85IzKKPuZPZD3Yh2DHqokYin5BJxMrAvYhlKgGnozJrHisydz4ILmgdt4LgbAaG WRMpBnwwMOqMbfRoVh5z4aQZ0hRdRocfRr1m0d8gZ+ X-Gm-Gg: AY/fxX7JfOcvGz3ev8oDE83hzi79JSR3hCM1DbO2HDfjYLevFua9/h/T+S1gCBZM0I6 DpZcgrs7dFYTvhXA0oet/w+pLxDkHsZlG+y26XiTIk66tf3rRg4AjUgfq4dZ551QYZx/SzjhP15 KFCYRn9rWk9r5bMI70ikAZ892rvFlbCcWNgOldvVtR/kWpu3S2Bx4lS+TmjSOg/N3E3X3IYdm4o Rv71nmo3d6xLB+YkwvOmvsvoKqiBjPGO4BUH/wmaJ3XUjFGg+Mxgvz2atvV7IxBKRlI/44QB7ET hFteEP8ndngmlMYSR5K/Kg88cU6NoMdU28TOEGhrtYuJK3SuSDxKOFEdux/5Or34v6NMQ1Ww381 2SmzgQm3b7tXG+nXenhqblWOnPl4Gt+PRhbDs8zVBYsmPl/b5EXeb26Mjd2Zu8T2Nhya0sqDg1W p9N7A9Bhdpyjpa/jw= X-Received: by 2002:a05:600c:314f:b0:47d:4fbe:e6cc with SMTP id 5b1f17b1804b1-47d4fbee749mr18982355e9.13.1766829114334; Sat, 27 Dec 2025 01:51:54 -0800 (PST) X-Google-Smtp-Source: AGHT+IEyH+rngQmnvQQ5IYrFGR7PqUG4DRz8FqvwvdWsqInRMsLYHwauldLt0PR8sHC62P4OWZ2Lzw== X-Received: by 2002:a05:600c:314f:b0:47d:4fbe:e6cc with SMTP id 5b1f17b1804b1-47d4fbee749mr18982055e9.13.1766829113769; Sat, 27 Dec 2025 01:51:53 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 152/153] block: rename block/aio.h to qemu/aio.h Date: Sat, 27 Dec 2025 10:47:57 +0100 Message-ID: <20251227094759.35658-78-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829293851158500 Content-Type: text/plain; charset="utf-8" AioContexts are used as a generic event loop even outside the block layer; move the header file out of block/ just like the implementation is in util/. Signed-off-by: Paolo Bonzini --- MAINTAINERS | 2 +- docs/devel/multiple-iothreads.rst | 4 ++-- include/block/aio-wait.h | 2 +- include/block/raw-aio.h | 2 +- include/block/thread-pool.h | 2 +- include/hw/scsi/scsi.h | 2 +- include/hw/virtio/virtio.h | 2 +- include/io/channel.h | 2 +- include/{block =3D> qemu}/aio.h | 0 include/qemu/job.h | 2 +- include/qemu/main-loop.h | 2 +- include/qemu/throttle.h | 2 +- include/scsi/pr-manager.h | 2 +- include/system/event-loop-base.h | 2 +- include/system/iothread.h | 2 +- include/system/replay.h | 2 +- tests/unit/iothread.h | 2 +- util/aio-posix.h | 2 +- block/aio_task.c | 2 +- block/export/fuse.c | 2 +- block/io_uring.c | 2 +- block/linux-aio.c | 2 +- block/win32-aio.c | 2 +- iothread.c | 2 +- qapi/qmp-dispatch.c | 2 +- replay/replay-events.c | 2 +- scsi/pr-manager.c | 2 +- stubs/linux-aio.c | 2 +- stubs/replay-tools.c | 2 +- tests/unit/iothread.c | 2 +- tests/unit/test-aio-multithread.c | 2 +- tests/unit/test-aio.c | 2 +- tests/unit/test-nested-aio-poll.c | 2 +- tests/unit/test-thread-pool.c | 2 +- tests/unit/test-throttle.c | 2 +- util/async.c | 2 +- util/main-loop.c | 2 +- util/qemu-co-timeout.c | 2 +- util/qemu-coroutine-lock.c | 2 +- util/qemu-coroutine-sleep.c | 2 +- util/qemu-coroutine.c | 2 +- util/throttle.c | 2 +- scripts/analyze-inclusions | 2 +- 43 files changed, 43 insertions(+), 43 deletions(-) rename include/{block =3D> qemu}/aio.h (100%) diff --git a/MAINTAINERS b/MAINTAINERS index 81f48f0709c..efceed9fe52 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3071,7 +3071,7 @@ F: util/aio-*.h F: util/defer-call.c F: util/fdmon-*.c F: block/io.c -F: include/block/aio.h +F: include/qemu/aio.h F: include/block/aio-wait.h F: include/qemu/defer-call.h F: scripts/qemugdb/aio.py diff --git a/docs/devel/multiple-iothreads.rst b/docs/devel/multiple-iothre= ads.rst index d1f3fc4510a..a6eb0462673 100644 --- a/docs/devel/multiple-iothreads.rst +++ b/docs/devel/multiple-iothreads.rst @@ -52,7 +52,7 @@ How to program for ``IOThread``\ s ---------------------------------- The main difference between legacy code and new code that can run in an ``IOThread`` is dealing explicitly with the event loop object, ``AioContex= t`` -(see ``include/block/aio.h``). Code that only works in the main loop +(see ``include/qemu/aio.h``). Code that only works in the main loop implicitly uses the main loop's ``AioContext``. Code that supports running in ``IOThread``\ s must be aware of its ``AioContext``. =20 @@ -74,7 +74,7 @@ Since they implicitly work on the main loop they cannot b= e used in code that runs in an ``IOThread``. They might cause a crash or deadlock if called f= rom an ``IOThread`` since the BQL is not held. =20 -Instead, use the ``AioContext`` functions directly (see ``include/block/ai= o.h``): +Instead, use the ``AioContext`` functions directly (see ``include/qemu/aio= .h``): * ``aio_set_fd_handler()`` - monitor a file descriptor * ``aio_set_event_notifier()`` - monitor an event notifier * ``aio_timer_new()`` - create a timer diff --git a/include/block/aio-wait.h b/include/block/aio-wait.h index cf5e8bde1ca..57ebe21b31f 100644 --- a/include/block/aio-wait.h +++ b/include/block/aio-wait.h @@ -25,7 +25,7 @@ #ifndef QEMU_AIO_WAIT_H #define QEMU_AIO_WAIT_H =20 -#include "block/aio.h" +#include "qemu/aio.h" #include "qemu/main-loop.h" =20 /** diff --git a/include/block/raw-aio.h b/include/block/raw-aio.h index d568b887f1c..256d0468a88 100644 --- a/include/block/raw-aio.h +++ b/include/block/raw-aio.h @@ -17,7 +17,7 @@ #define QEMU_RAW_AIO_H =20 #include "qemu/aiocb.h" -#include "block/aio.h" +#include "qemu/aio.h" #include "block/block-common.h" #include "qemu/iov.h" =20 diff --git a/include/block/thread-pool.h b/include/block/thread-pool.h index 65cabfc1388..e9ddb2b6d3c 100644 --- a/include/block/thread-pool.h +++ b/include/block/thread-pool.h @@ -19,7 +19,7 @@ #define QEMU_THREAD_POOL_H =20 #include "qemu/aiocb.h" -#include "block/aio.h" +#include "qemu/aio.h" =20 #define THREAD_POOL_MAX_THREADS_DEFAULT 64 =20 diff --git a/include/hw/scsi/scsi.h b/include/hw/scsi/scsi.h index 75b4d781a5c..d26f1127bb5 100644 --- a/include/hw/scsi/scsi.h +++ b/include/hw/scsi/scsi.h @@ -2,7 +2,7 @@ #define QEMU_HW_SCSI_H =20 #include "qemu/aiocb.h" -#include "block/aio.h" +#include "qemu/aio.h" #include "hw/block/block.h" #include "hw/core/qdev.h" #include "scsi/utils.h" diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h index 91ff2fa21a5..27cd98d2fe1 100644 --- a/include/hw/virtio/virtio.h +++ b/include/hw/virtio/virtio.h @@ -23,7 +23,7 @@ #include "standard-headers/linux/virtio_config.h" #include "standard-headers/linux/virtio_ring.h" #include "qom/object.h" -#include "block/aio.h" +#include "qemu/aio.h" =20 /* * A guest should never accept this. It implies negotiation is broken diff --git a/include/io/channel.h b/include/io/channel.h index f42be760f9f..1b02350437d 100644 --- a/include/io/channel.h +++ b/include/io/channel.h @@ -23,7 +23,7 @@ =20 #include "qom/object.h" #include "qemu/coroutine-core.h" -#include "block/aio.h" +#include "qemu/aio.h" =20 #define TYPE_QIO_CHANNEL "qio-channel" OBJECT_DECLARE_TYPE(QIOChannel, QIOChannelClass, diff --git a/include/block/aio.h b/include/qemu/aio.h similarity index 100% rename from include/block/aio.h rename to include/qemu/aio.h diff --git a/include/qemu/job.h b/include/qemu/job.h index 2b163602c56..0e40e8b4570 100644 --- a/include/qemu/job.h +++ b/include/qemu/job.h @@ -31,7 +31,7 @@ #include "qemu/queue.h" #include "qemu/progress_meter.h" #include "qemu/coroutine.h" -#include "block/aio.h" +#include "qemu/aio.h" #include "block/graph-lock.h" =20 typedef struct JobDriver JobDriver; diff --git a/include/qemu/main-loop.h b/include/qemu/main-loop.h index 241dc87be50..8c1241a2c11 100644 --- a/include/qemu/main-loop.h +++ b/include/qemu/main-loop.h @@ -25,7 +25,7 @@ #ifndef QEMU_MAIN_LOOP_H #define QEMU_MAIN_LOOP_H =20 -#include "block/aio.h" +#include "qemu/aio.h" #include "qom/object.h" #include "system/event-loop-base.h" =20 diff --git a/include/qemu/throttle.h b/include/qemu/throttle.h index 8fa2b29452a..06b6589c946 100644 --- a/include/qemu/throttle.h +++ b/include/qemu/throttle.h @@ -25,7 +25,7 @@ #ifndef THROTTLE_H #define THROTTLE_H =20 -#include "block/aio.h" +#include "qemu/aio.h" #include "qapi/qapi-types-block-core.h" #include "qemu/timer.h" =20 diff --git a/include/scsi/pr-manager.h b/include/scsi/pr-manager.h index 45de28d3542..5045d115c44 100644 --- a/include/scsi/pr-manager.h +++ b/include/scsi/pr-manager.h @@ -4,7 +4,7 @@ #include "qom/object.h" #include "qapi/visitor.h" #include "qom/object_interfaces.h" -#include "block/aio.h" +#include "qemu/aio.h" =20 #define TYPE_PR_MANAGER "pr-manager" =20 diff --git a/include/system/event-loop-base.h b/include/system/event-loop-b= ase.h index a6c24f13513..130629e7f31 100644 --- a/include/system/event-loop-base.h +++ b/include/system/event-loop-base.h @@ -13,7 +13,7 @@ #define QEMU_EVENT_LOOP_BASE_H =20 #include "qom/object.h" -#include "block/aio.h" +#include "qemu/aio.h" =20 #define TYPE_EVENT_LOOP_BASE "event-loop-base" OBJECT_DECLARE_TYPE(EventLoopBase, EventLoopBaseClass, diff --git a/include/system/iothread.h b/include/system/iothread.h index d95c17a6456..e26d13c6c71 100644 --- a/include/system/iothread.h +++ b/include/system/iothread.h @@ -14,7 +14,7 @@ #ifndef IOTHREAD_H #define IOTHREAD_H =20 -#include "block/aio.h" +#include "qemu/aio.h" #include "qemu/thread.h" #include "qom/object.h" #include "system/event-loop-base.h" diff --git a/include/system/replay.h b/include/system/replay.h index 68f91bdfbf2..f8715ca9feb 100644 --- a/include/system/replay.h +++ b/include/system/replay.h @@ -15,7 +15,7 @@ #include "qapi/qapi-types-misc.h" #include "qapi/qapi-types-run-state.h" #include "qapi/qapi-types-ui.h" -#include "block/aio.h" +#include "qemu/aio.h" #include "qemu/audio.h" =20 /* replay clock kinds */ diff --git a/tests/unit/iothread.h b/tests/unit/iothread.h index 4877cea6a31..eb4d0c77f86 100644 --- a/tests/unit/iothread.h +++ b/tests/unit/iothread.h @@ -13,7 +13,7 @@ #ifndef TEST_IOTHREAD_H #define TEST_IOTHREAD_H =20 -#include "block/aio.h" +#include "qemu/aio.h" #include "qemu/thread.h" =20 typedef struct IOThread IOThread; diff --git a/util/aio-posix.h b/util/aio-posix.h index babbfa83141..0cedb8d1891 100644 --- a/util/aio-posix.h +++ b/util/aio-posix.h @@ -17,7 +17,7 @@ #ifndef AIO_POSIX_H #define AIO_POSIX_H =20 -#include "block/aio.h" +#include "qemu/aio.h" #include "qapi/error.h" =20 struct AioHandler { diff --git a/block/aio_task.c b/block/aio_task.c index bb5c05f455d..21b68a9fc02 100644 --- a/block/aio_task.c +++ b/block/aio_task.c @@ -23,7 +23,7 @@ */ =20 #include "qemu/osdep.h" -#include "block/aio.h" +#include "qemu/aio.h" #include "block/aio_task.h" =20 struct AioTaskPool { diff --git a/block/export/fuse.c b/block/export/fuse.c index 465cc9891d6..8cf4572f78d 100644 --- a/block/export/fuse.c +++ b/block/export/fuse.c @@ -20,7 +20,7 @@ =20 #include "qemu/osdep.h" #include "qemu/memalign.h" -#include "block/aio.h" +#include "qemu/aio.h" #include "block/block_int-common.h" #include "block/export.h" #include "block/fuse.h" diff --git a/block/io_uring.c b/block/io_uring.c index f1514cf024a..cb131d3b8b5 100644 --- a/block/io_uring.c +++ b/block/io_uring.c @@ -10,7 +10,7 @@ */ #include "qemu/osdep.h" #include -#include "block/aio.h" +#include "qemu/aio.h" #include "block/block.h" #include "block/raw-aio.h" #include "qemu/coroutine.h" diff --git a/block/linux-aio.c b/block/linux-aio.c index c200e7ad20f..53c3e9af8ae 100644 --- a/block/linux-aio.c +++ b/block/linux-aio.c @@ -8,7 +8,7 @@ * See the COPYING file in the top-level directory. */ #include "qemu/osdep.h" -#include "block/aio.h" +#include "qemu/aio.h" #include "qemu/queue.h" #include "block/block.h" #include "block/raw-aio.h" diff --git a/block/win32-aio.c b/block/win32-aio.c index 539f1c81c65..6e1b34fb95f 100644 --- a/block/win32-aio.c +++ b/block/win32-aio.c @@ -26,7 +26,7 @@ #include "qemu/timer.h" #include "block/block-io.h" #include "block/block_int.h" -#include "block/aio.h" +#include "qemu/aio.h" #include "block/raw-aio.h" #include "qemu/aiocb.h" #include "qemu/event_notifier.h" diff --git a/iothread.c b/iothread.c index 8810376dcea..caf68e07645 100644 --- a/iothread.c +++ b/iothread.c @@ -15,7 +15,7 @@ #include "qom/object.h" #include "qom/object_interfaces.h" #include "qemu/module.h" -#include "block/aio.h" +#include "qemu/aio.h" #include "block/block.h" #include "system/event-loop-base.h" #include "system/iothread.h" diff --git a/qapi/qmp-dispatch.c b/qapi/qmp-dispatch.c index e569224eaea..9bb1e6a9f4a 100644 --- a/qapi/qmp-dispatch.c +++ b/qapi/qmp-dispatch.c @@ -13,7 +13,7 @@ =20 #include "qemu/osdep.h" =20 -#include "block/aio.h" +#include "qemu/aio.h" #include "qapi/compat-policy.h" #include "qapi/error.h" #include "qapi/qmp-registry.h" diff --git a/replay/replay-events.c b/replay/replay-events.c index a96e47e7740..9e5af5e8495 100644 --- a/replay/replay-events.c +++ b/replay/replay-events.c @@ -13,7 +13,7 @@ #include "qemu/error-report.h" #include "system/replay.h" #include "replay-internal.h" -#include "block/aio.h" +#include "qemu/aio.h" #include "ui/input.h" #include "hw/core/cpu.h" =20 diff --git a/scsi/pr-manager.c b/scsi/pr-manager.c index 40e1210eb21..fec0d68c4cc 100644 --- a/scsi/pr-manager.c +++ b/scsi/pr-manager.c @@ -13,7 +13,7 @@ #include =20 #include "qapi/error.h" -#include "block/aio.h" +#include "qemu/aio.h" #include "block/thread-pool.h" #include "scsi/pr-manager.h" #include "trace.h" diff --git a/stubs/linux-aio.c b/stubs/linux-aio.c index 84d1f784aed..b1a27e926e3 100644 --- a/stubs/linux-aio.c +++ b/stubs/linux-aio.c @@ -8,7 +8,7 @@ * See the COPYING file in the top-level directory. */ #include "qemu/osdep.h" -#include "block/aio.h" +#include "qemu/aio.h" #include "block/raw-aio.h" =20 void laio_detach_aio_context(LinuxAioState *s, AioContext *old_context) diff --git a/stubs/replay-tools.c b/stubs/replay-tools.c index c537485f401..17dc3babd9b 100644 --- a/stubs/replay-tools.c +++ b/stubs/replay-tools.c @@ -1,6 +1,6 @@ #include "qemu/osdep.h" #include "system/replay.h" -#include "block/aio.h" +#include "qemu/aio.h" =20 bool replay_events_enabled(void) { diff --git a/tests/unit/iothread.c b/tests/unit/iothread.c index f9b0791084e..a363bf8f709 100644 --- a/tests/unit/iothread.c +++ b/tests/unit/iothread.c @@ -14,7 +14,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "block/aio.h" +#include "qemu/aio.h" #include "qemu/main-loop.h" #include "qemu/rcu.h" #include "iothread.h" diff --git a/tests/unit/test-aio-multithread.c b/tests/unit/test-aio-multit= hread.c index c24200a7121..9179cdc6a32 100644 --- a/tests/unit/test-aio-multithread.c +++ b/tests/unit/test-aio-multithread.c @@ -11,7 +11,7 @@ */ =20 #include "qemu/osdep.h" -#include "block/aio.h" +#include "qemu/aio.h" #include "qemu/coroutine.h" #include "qemu/thread.h" #include "qemu/error-report.h" diff --git a/tests/unit/test-aio.c b/tests/unit/test-aio.c index 010d65b79a5..b3ca4d8a596 100644 --- a/tests/unit/test-aio.c +++ b/tests/unit/test-aio.c @@ -11,7 +11,7 @@ */ =20 #include "qemu/osdep.h" -#include "block/aio.h" +#include "qemu/aio.h" #include "qapi/error.h" #include "qemu/timer.h" #include "qemu/sockets.h" diff --git a/tests/unit/test-nested-aio-poll.c b/tests/unit/test-nested-aio= -poll.c index d13ecccd8c0..9ab1ad08a79 100644 --- a/tests/unit/test-nested-aio-poll.c +++ b/tests/unit/test-nested-aio-poll.c @@ -13,7 +13,7 @@ * aio_poll() calls. This test case checks that this is indeed what happen= s. */ #include "qemu/osdep.h" -#include "block/aio.h" +#include "qemu/aio.h" #include "qapi/error.h" #include "util/aio-posix.h" =20 diff --git a/tests/unit/test-thread-pool.c b/tests/unit/test-thread-pool.c index ea5234f9f48..1e2f05f8416 100644 --- a/tests/unit/test-thread-pool.c +++ b/tests/unit/test-thread-pool.c @@ -1,5 +1,5 @@ #include "qemu/osdep.h" -#include "block/aio.h" +#include "qemu/aio.h" #include "block/thread-pool.h" #include "block/block.h" #include "qapi/error.h" diff --git a/tests/unit/test-throttle.c b/tests/unit/test-throttle.c index dfa61c75ea4..52eb8966b3f 100644 --- a/tests/unit/test-throttle.c +++ b/tests/unit/test-throttle.c @@ -14,7 +14,7 @@ =20 #include "qemu/osdep.h" #include -#include "block/aio.h" +#include "qemu/aio.h" #include "qapi/error.h" #include "qemu/throttle.h" #include "qemu/error-report.h" diff --git a/util/async.c b/util/async.c index 39f391fb71a..80d6b01a8aa 100644 --- a/util/async.c +++ b/util/async.c @@ -25,7 +25,7 @@ =20 #include "qemu/osdep.h" #include "qapi/error.h" -#include "block/aio.h" +#include "qemu/aio.h" #include "block/thread-pool.h" #include "block/graph-lock.h" #include "qemu/main-loop.h" diff --git a/util/main-loop.c b/util/main-loop.c index b462598f76e..ad8645c30a4 100644 --- a/util/main-loop.c +++ b/util/main-loop.c @@ -30,7 +30,7 @@ #include "exec/icount.h" #include "system/replay.h" #include "qemu/main-loop.h" -#include "block/aio.h" +#include "qemu/aio.h" #include "block/thread-pool.h" #include "qemu/error-report.h" #include "qemu/queue.h" diff --git a/util/qemu-co-timeout.c b/util/qemu-co-timeout.c index 00cd335649f..6774440b287 100644 --- a/util/qemu-co-timeout.c +++ b/util/qemu-co-timeout.c @@ -25,7 +25,7 @@ =20 #include "qemu/osdep.h" #include "qemu/coroutine.h" -#include "block/aio.h" +#include "qemu/aio.h" =20 typedef struct QemuCoTimeoutState { CoroutineEntry *entry; diff --git a/util/qemu-coroutine-lock.c b/util/qemu-coroutine-lock.c index 2534435388f..fac91582b5f 100644 --- a/util/qemu-coroutine-lock.c +++ b/util/qemu-coroutine-lock.c @@ -30,7 +30,7 @@ #include "qemu/coroutine_int.h" #include "qemu/processor.h" #include "qemu/queue.h" -#include "block/aio.h" +#include "qemu/aio.h" #include "trace.h" =20 void qemu_co_queue_init(CoQueue *queue) diff --git a/util/qemu-coroutine-sleep.c b/util/qemu-coroutine-sleep.c index af59f9af984..edef1172844 100644 --- a/util/qemu-coroutine-sleep.c +++ b/util/qemu-coroutine-sleep.c @@ -14,7 +14,7 @@ #include "qemu/osdep.h" #include "qemu/coroutine_int.h" #include "qemu/timer.h" -#include "block/aio.h" +#include "qemu/aio.h" =20 static const char *qemu_co_sleep_ns__scheduled =3D "qemu_co_sleep_ns"; =20 diff --git a/util/qemu-coroutine.c b/util/qemu-coroutine.c index 64d6264fc74..d17135f585a 100644 --- a/util/qemu-coroutine.c +++ b/util/qemu-coroutine.c @@ -19,7 +19,7 @@ #include "qemu/coroutine_int.h" #include "qemu/coroutine-tls.h" #include "qemu/cutils.h" -#include "block/aio.h" +#include "qemu/aio.h" =20 enum { COROUTINE_POOL_BATCH_MAX_SIZE =3D 128, diff --git a/util/throttle.c b/util/throttle.c index 9582899da3e..8044f04ffc9 100644 --- a/util/throttle.c +++ b/util/throttle.c @@ -26,7 +26,7 @@ #include "qapi/error.h" #include "qemu/throttle.h" #include "qemu/timer.h" -#include "block/aio.h" +#include "qemu/aio.h" =20 /* This function make a bucket leak * diff --git a/scripts/analyze-inclusions b/scripts/analyze-inclusions index 50a7d95d9e7..c30e44f02ec 100644 --- a/scripts/analyze-inclusions +++ b/scripts/analyze-inclusions @@ -52,7 +52,7 @@ echo $(grep_include -F 'qapi-types.h') files include qapi= -types.h echo $(grep_include -F 'trace/generated-tracers.h') files include generate= d-tracers.h echo $(grep_include -F 'qapi/error.h') files include qapi/error.h echo $(grep_include -F 'qom/object.h') files include qom/object.h -echo $(grep_include -F 'block/aio.h') files include block/aio.h +echo $(grep_include -F 'qemu/aio.h') files include block/aio.h echo $(grep_include -F 'system/memory.h') files include system/memory.h echo $(grep_include -F 'fpu/softfloat.h') files include fpu/softfloat.h echo $(grep_include -F 'qemu/bswap.h') files include qemu/bswap.h --=20 2.52.0 From nobody Wed Jan 7 09:26:49 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=1766829179; cv=none; d=zohomail.com; s=zohoarc; b=az2NOY32+s6OXA7vVZzBm7PfQoRuVz/M8jv4qlQMOgIBdk941GnoJ+1SJDEojguk1CLk89zC89yMsuaE2yiDzRRZBxwe19hJcCAddI9kTPAyQ16k2C5L/vkT8F+M69yBstHZpIIhtW9cJgYV/jmVhaF5INqGVgG5sbJ9KTMB7oQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766829179; 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=eS1GeSZ0xe9AFhAHjPjntAzyLnEM9NmXyPjZRoek4o8=; b=LqJ/5D7M0MoqaN9nE9yWOAHcIDAIzf+wyoG6MP8bUXrdWKD6hsa3ez27DByQhf/SkabDsh3ctTO0pJCPHE5uGrcJc/1A559uHEEBIiC/Psb9VbcIHoijDaOe6FEMFNZPfDNFlYeqJbrdPzmlOEkh2BC565g9oZn75Ii3UjtD4+o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1766829179606412.1567370345891; Sat, 27 Dec 2025 01:52:59 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vZQyR-0007Oi-J7; Sat, 27 Dec 2025 04:52:35 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQy1-0006oJ-5O for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:52:14 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vZQxy-0007Yt-SE for qemu-devel@nongnu.org; Sat, 27 Dec 2025 04:52:08 -0500 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-160-_qGNQqDzPsSPZtimfaB4hQ-1; Sat, 27 Dec 2025 04:52:01 -0500 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-4325b81081aso3890525f8f.3 for ; Sat, 27 Dec 2025 01:52:01 -0800 (PST) Received: from [192.168.10.48] ([151.95.145.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa64cesm50754325f8f.35.2025.12.27.01.51.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Dec 2025 01:51:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766829123; 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=eS1GeSZ0xe9AFhAHjPjntAzyLnEM9NmXyPjZRoek4o8=; b=GwEPylT59l+LbF2G3NDw5uZ9+2eEEQNgLhCAjMpHSBBoOWiJgpdLN0NzfR2zqHbV1e3ZDN tOnVRqyxhFuIWJMAdjOjuM5f879qxrIUhMV3PZYzI1nneuxf39ETUQhow655cb87MZ8iqS bcP2hdU/R5vVpm/Qu7aTlc235R5X/Gw= X-MC-Unique: _qGNQqDzPsSPZtimfaB4hQ-1 X-Mimecast-MFC-AGG-ID: _qGNQqDzPsSPZtimfaB4hQ_1766829120 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1766829118; x=1767433918; 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; bh=eS1GeSZ0xe9AFhAHjPjntAzyLnEM9NmXyPjZRoek4o8=; b=ADjFiuA/6oIjwga3B86MTN0/ogeu3OsWNVXfXX6XY6rYs7ZfgphRgggrRxEZEBquiU 0+QoWSUQbYlo9FvKHQe5uWAxzCmfvoAKQsWVA0Ayasm3nueaHbXhqqK4qGrjpXuBUbP0 mE22XUC7HZAxuLhCggI5h+IoKWljVqetJaM95LynYpBxF9RjEWxtYEkQW8Dha1P6hJbq r/aqfDXkHUnONXImNJIjdvmupDyZp8ANC/4W1p3UUHP2G7JLUJpdngk+dMWTPadD4c0v gOAIeCpeH6ItgwkPGEP+1hQrlQp5ISYo7ZkuU0A9X4ri/DwSvdb4Yhxo3tPFjjbgyryg RMGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766829118; x=1767433918; 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; bh=eS1GeSZ0xe9AFhAHjPjntAzyLnEM9NmXyPjZRoek4o8=; b=g596A9k+PhVrp8m0M/pnh6h+IXvGlLxb4i90wSy3OTZsee3tlm5EFYiPcuhahxdFXi LyqGZviGnnNZTsFQKwfzOHsha4l4miJhH8VhD3w5bePdrQq4IqQA4a+IA1Vx8sBmPCgx dHa3FQdyZq7lGExDlEkYqhj8dUL99qxxucMbTdoqfHOx/NrckJU1XE2ltoQ7P+Z/DSJ6 KUw8X01h/OTGP5aCb4ozUXpd12JJyJAFw+MBlHcc+TThj25Wyf2LMCBxMAkWe3o15ZTN JkTaSVgzSCf/kWVTKPAjdNlv7S0Zx/6cphc7iy9FlDtO/b/tvu8YMoTAwlBWyv+MG5Tj yJrg== X-Gm-Message-State: AOJu0YzVZu6hTYUxR+Oaaq16isd4NLiHQzgHCRZ9AcpdZQzpsWn0NfJG T/2XXBEOU2tWDpdpZcz3dhGzATzE8aii9I/o8zIG75MbJtdQ5UTDeUsSKVLk+rABpmdp6RKvK/b fYou0TiVwcZT/iXiSYZXShZ74Iyztafz2ijcFptfBA04/M+3BvHuipkSCII9wJZ+ICFsH63j0CS GYLT/rq/sRdK1A8SHktx3m98SZqifJ8SBzjJ8uAbUe X-Gm-Gg: AY/fxX54YXxbr8mVrpydmTf0gp0aHGAC1buX5W2ubnP4MoGfg/BEAdIFncQatjRDUga ghyiBhU3sHmVVzlSqklBpUdVSq7JLiaZOzoplg6+ErgPPlwwo4U6vG/jqyb5EJAexRjNGPYl42P dJ4OH+MNIdb+dzuaJ9IurI3d9R2/AyYkzp/5+9DULdpzt58I9tjlkmyE2XedPenvnSrcnM4V1z2 OaCyZyBFHtf+09Wt3fe0ThZMsNUpXWec37iGSSqp6qv8NZrAZRjj16zZEEb3NAj5Bjc1jJvXTik pwIawQIwsfFXV+gpRGzY762Z5olaHUN+wXVm3R5k9mz1qk9oBCRcbY+vWK4TZjNcugRcu4au4vf xFQmNN+f3/5TQwglcV+DUryQhPBgzAAP9liTMHHAWOAfYyr0oNUuI0A/q7PgPAdjZfNFPfwtnq0 3lNqElz5u1fjrFRGI= X-Received: by 2002:a05:6000:420a:b0:431:864:d492 with SMTP id ffacd0b85a97d-4324e50600dmr28887764f8f.36.1766829118374; Sat, 27 Dec 2025 01:51:58 -0800 (PST) X-Google-Smtp-Source: AGHT+IG0xA6nGHJ/NHqEKKKIymO+eyyOIqalkg235ZTkV0WAtD2zOJHU/uJwmCWxAZslhSf40Lt1wg== X-Received: by 2002:a05:6000:420a:b0:431:864:d492 with SMTP id ffacd0b85a97d-4324e50600dmr28887743f8f.36.1766829117942; Sat, 27 Dec 2025 01:51:57 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu , Farrah Chen , Zide Chen , Xiaoyao Li Subject: [PULL 153/153] block: rename block/aio-wait.h to qemu/aio-wait.h Date: Sat, 27 Dec 2025 10:47:58 +0100 Message-ID: <20251227094759.35658-79-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251227091622.20725-1-pbonzini@redhat.com> References: <20251227091622.20725-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=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1766829181406158500 Content-Type: text/plain; charset="utf-8" AIO_WAIT_WHILE is used even outside the block layer; move the header file out of block/ just like the implementation is in util/. Signed-off-by: Paolo Bonzini Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- MAINTAINERS | 2 +- include/block/block-io.h | 2 +- include/{block =3D> qemu}/aio-wait.h | 0 block/io.c | 2 +- blockjob.c | 2 +- io/channel.c | 2 +- job.c | 2 +- net/colo-compare.c | 2 +- net/filter-mirror.c | 2 +- util/aio-wait.c | 2 +- util/vhost-user-server.c | 2 +- hw/display/apple-gfx-mmio.m | 2 +- hw/display/apple-gfx.m | 2 +- 13 files changed, 12 insertions(+), 12 deletions(-) rename include/{block =3D> qemu}/aio-wait.h (100%) diff --git a/MAINTAINERS b/MAINTAINERS index efceed9fe52..2f34b921784 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3072,7 +3072,7 @@ F: util/defer-call.c F: util/fdmon-*.c F: block/io.c F: include/qemu/aio.h -F: include/block/aio-wait.h +F: include/qemu/aio-wait.h F: include/qemu/defer-call.h F: scripts/qemugdb/aio.py F: tests/unit/test-fdmon-epoll.c diff --git a/include/block/block-io.h b/include/block/block-io.h index 7925e2241e6..d34d846bb2a 100644 --- a/include/block/block-io.h +++ b/include/block/block-io.h @@ -25,7 +25,7 @@ #define BLOCK_IO_H =20 #include "qemu/aiocb.h" -#include "block/aio-wait.h" +#include "qemu/aio-wait.h" #include "block/block-common.h" #include "block/graph-lock.h" #include "qemu/coroutine.h" diff --git a/include/block/aio-wait.h b/include/qemu/aio-wait.h similarity index 100% rename from include/block/aio-wait.h rename to include/qemu/aio-wait.h diff --git a/block/io.c b/block/io.c index c4a43013210..cace297f226 100644 --- a/block/io.c +++ b/block/io.c @@ -25,7 +25,7 @@ #include "qemu/osdep.h" #include "trace.h" #include "system/block-backend.h" -#include "block/aio-wait.h" +#include "qemu/aio-wait.h" #include "block/blockjob.h" #include "block/blockjob_int.h" #include "block/block_int.h" diff --git a/blockjob.c b/blockjob.c index db7c3a69a0c..f3b11cc7a19 100644 --- a/blockjob.c +++ b/blockjob.c @@ -24,7 +24,7 @@ */ =20 #include "qemu/osdep.h" -#include "block/aio-wait.h" +#include "qemu/aio-wait.h" #include "block/block.h" #include "block/blockjob_int.h" #include "block/block_int.h" diff --git a/io/channel.c b/io/channel.c index b7966abc4f0..cc02d997a4d 100644 --- a/io/channel.c +++ b/io/channel.c @@ -19,7 +19,7 @@ */ =20 #include "qemu/osdep.h" -#include "block/aio-wait.h" +#include "qemu/aio-wait.h" #include "io/channel.h" #include "qapi/error.h" #include "qemu/main-loop.h" diff --git a/job.c b/job.c index 0653bc2ba69..e7479084726 100644 --- a/job.c +++ b/job.c @@ -28,7 +28,7 @@ #include "qemu/job.h" #include "qemu/id.h" #include "qemu/main-loop.h" -#include "block/aio-wait.h" +#include "qemu/aio-wait.h" #include "trace/trace-root.h" #include "qapi/qapi-events-job.h" =20 diff --git a/net/colo-compare.c b/net/colo-compare.c index 95018b47049..c356419d6a8 100644 --- a/net/colo-compare.c +++ b/net/colo-compare.c @@ -30,7 +30,7 @@ #include "migration/colo.h" #include "util.h" =20 -#include "block/aio-wait.h" +#include "qemu/aio-wait.h" #include "qemu/coroutine.h" =20 #define TYPE_COLO_COMPARE "colo-compare" diff --git a/net/filter-mirror.c b/net/filter-mirror.c index 8e01e98f405..d2bfde42e85 100644 --- a/net/filter-mirror.c +++ b/net/filter-mirror.c @@ -20,7 +20,7 @@ #include "chardev/char-fe.h" #include "qemu/iov.h" #include "qemu/sockets.h" -#include "block/aio-wait.h" +#include "qemu/aio-wait.h" =20 #define TYPE_FILTER_MIRROR "filter-mirror" typedef struct MirrorState MirrorState; diff --git a/util/aio-wait.c b/util/aio-wait.c index b5336cf5fd2..53913c4bd1b 100644 --- a/util/aio-wait.c +++ b/util/aio-wait.c @@ -24,7 +24,7 @@ =20 #include "qemu/osdep.h" #include "qemu/main-loop.h" -#include "block/aio-wait.h" +#include "qemu/aio-wait.h" =20 AioWait global_aio_wait; =20 diff --git a/util/vhost-user-server.c b/util/vhost-user-server.c index 1dbe409f829..1536d97baf8 100644 --- a/util/vhost-user-server.c +++ b/util/vhost-user-server.c @@ -11,7 +11,7 @@ #include "qemu/error-report.h" #include "qemu/main-loop.h" #include "qemu/vhost-user-server.h" -#include "block/aio-wait.h" +#include "qemu/aio-wait.h" =20 /* * Theory of operation: diff --git a/hw/display/apple-gfx-mmio.m b/hw/display/apple-gfx-mmio.m index 983fc1724a0..58beaadd1f1 100644 --- a/hw/display/apple-gfx-mmio.m +++ b/hw/display/apple-gfx-mmio.m @@ -14,7 +14,7 @@ =20 #include "qemu/osdep.h" #include "qemu/log.h" -#include "block/aio-wait.h" +#include "qemu/aio-wait.h" #include "hw/core/sysbus.h" #include "hw/core/irq.h" #include "apple-gfx.h" diff --git a/hw/display/apple-gfx.m b/hw/display/apple-gfx.m index 174d56ae05b..e0a765fcb1f 100644 --- a/hw/display/apple-gfx.m +++ b/hw/display/apple-gfx.m @@ -17,7 +17,7 @@ #include "qemu/log.h" #include "qapi/visitor.h" #include "qapi/error.h" -#include "block/aio-wait.h" +#include "qemu/aio-wait.h" #include "system/address-spaces.h" #include "system/dma.h" #include "migration/blocker.h" --=20 2.52.0

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 bi_ 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