From patchwork Mon Feb 10 15:49:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 863775 Delivered-To: patch@linaro.org Received: by 2002:a5d:4e42:0:b0:385:e875:8a9e with SMTP id r2csp1661044wrt; Mon, 10 Feb 2025 07:50:28 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCVunhtth/vvzN5TpjYKtoGn/3ugGV0ob2n7yjliVclEPaqD5AEkP+HU8+zlfLsmQAwV9+d6FQ==@linaro.org X-Google-Smtp-Source: AGHT+IE4TkrJ4uHRQCg1a5vSRSlYESF7PvR7P8NAJ5r0/PdouYl+wO0mYo7w5ElGwgUiWVt1ZGah X-Received: by 2002:a05:620a:258b:b0:7b6:e9be:97dc with SMTP id af79cd13be357-7c047ba498bmr2079326585a.8.1739202628380; Mon, 10 Feb 2025 07:50:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1739202628; cv=none; d=google.com; s=arc-20240605; b=AcjVsmdefugjeCnhgSF8yX3uMbJigvzEEDeoxy7HRd+B7CsCdpABV6PnXD2By+YHWe CB+QoRa3DpQuF2sTUGVfz057lGAkXDxM9DTsYah4ALhnCDMsb46eJsXFE2ZGzt7GWqRl uMt47qI9APFg1FvD6Xvn9K/+uFW55m81liStufzNFlPMcxk/HjXN7xpFyBfey82maF9K QPVYz4moh+0iGRnEL8FR+mETDx+45ggiZmUVMhk5Q9qTuHfooWmWxt8wVBxPfJ2H/bBP NNMZ+/UQ7yBPxEBIFJMU3GsqbHFwgCdYRX3oAn3dV4t/SCt7/MUy5xuE1NWxKbl1DpTc LItQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=IGNfUIMYIOgUqQfFd3Qg3rwrH8g27uWdTaX61sS+BTY=; fh=PnYt+qEB9tAfMKoqBm2xjKOFpYyFFGPudh5cVIoieJM=; b=I0uYA6J1+YQIB1ORd1CH/0wPDJbQa8OVEeHyGMitPCYNFcu8yfqOFoGcnsk0jba8WL 2OGyAcUSv9jG6cR6oQPD3J/xgyGX0wq/mvTqWPwAUrjImFV4ITiKUirQwQA+jrUPqNCP 9G8huUA2ech44S0EvJ6mhVSOqDOq+E7+rDiawON2g0TFzuYj+z37Knm/+ihSk749ETnc EiBoga9q9bf0c3HWFQvzwsYoPg1xY58cTGwd3W+VrIZgPemIpFuwsBP7gNLX6qpzKwYS ZN7YutWiv3pO3qS2cJMcsxI48tMpBX4cYB1ZO5b1g6REsAbUevwGcYXYA1/W5YrzprcO 7W8w==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=QtJNYVpp; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id af79cd13be357-7c041df5c66si945528685a.125.2025.02.10.07.50.28 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 10 Feb 2025 07:50:28 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=QtJNYVpp; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1thW2j-0007DW-Jv; Mon, 10 Feb 2025 10:49: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 1thW2f-0007CQ-6f for qemu-devel@nongnu.org; Mon, 10 Feb 2025 10:49:49 -0500 Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1thW2d-0004gY-DH for qemu-devel@nongnu.org; Mon, 10 Feb 2025 10:49:48 -0500 Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-4394345e4d5so8810535e9.0 for ; Mon, 10 Feb 2025 07:49:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1739202585; x=1739807385; 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=IGNfUIMYIOgUqQfFd3Qg3rwrH8g27uWdTaX61sS+BTY=; b=QtJNYVppSuhvE5NwxTHWXrmguUi0voFKwcaymZpBKbiGxSXUvgIUuIRt3pIjdb7IBD j3mkTNWxlhvFkx0R9bLFQZqNtlR3cv3JbHRVvsB+z2b7b5QoauHGYYDKJmYCmt/aeb27 xXKZcMR7THtdjN51A7zk0Kz5t1tijC9UA3A5+qtQrLIxHNoizbRiunD2H9e9IvuDojrP 4FnefA/hisojeQohlb2GgwkhqB/W9/G/ZpRNKQ0EAwzdJOjlVltGWsKGZr16YA+4eZr7 QIfQ89MF4g2A5kf1mZTzmWaHYrlbhryrs0SsFzirnDheoFGgpZdum5voFbFPEDwKzigF /agQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739202585; x=1739807385; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=IGNfUIMYIOgUqQfFd3Qg3rwrH8g27uWdTaX61sS+BTY=; b=VZblSZ7uhucprS5BR7ebVKgxlof9KfzSnxjs/l2/4CT0OYcm8IH6I9dp2kwZ2qxgBp vJ2sVZef//WvhFQ2oxQnd3tnr9tZagAp7AyCCVjHTYzJXUqYToasbSSt72SB5ERiWLJP qDSF/DRDZB6FdXPoIUpu9kBqM4LdbKinY0/lQ3q7tRuX8ug5gcnJTrnANa5U9mENUmZn kIsX18SZpK2mV5qxlvj6nHiEwfuNrxDX8B7+PLMQEX5kO7l9kE2E/OTbfsyRnytbDQS8 0Gx4aqmRwIZ5Rml0AqhzANCs1cg58F9rX9j/s680bFJx4E+ieXygwCVR5sRlqCaBSxTC +zgg== X-Gm-Message-State: AOJu0Yw2PW4S7JD0dd14WrvnTgY3oiIGFEL9hAh0qSzhGqf63z1SG1+y mHhMSb/IqMHR8ZT8OqTaiH9Kq1ctSEcoyaSHfVWVQyBFIvg5h0lsxImCegvm2sYBwXWJh8WQlpQ m X-Gm-Gg: ASbGnct0hiXTGHOdYa9bEEMb2mpDB4v+oNdYkKK/GvyKxCUpqshQRz3Q0cPpwKxaFF5 EJvB/SQvuNvo5mmznMPsy+Sbu1iO2+EDkNpszDuBUJftD1WE4Y2NsqAPZuwI1HhlqfImRnn6PLy jg1G/H+ZkalWwtwyPSOk3RZdriCSlkJocO/p+4Z56kQYbYiZlgOqOPx3EgN+/ntgRXKODyPVI// 4Ak4/Y8/hiTvsuhD1T2+4yYpj8lZRlFL4t4JBSyYY0RKcYVw7co5sg6grqVlc6Lexefh6yT+0WK QnlqkqT3m6sI7c9H+ANt X-Received: by 2002:a05:600c:1e1f:b0:439:4293:c581 with SMTP id 5b1f17b1804b1-4394293c8bemr43427105e9.19.1739202585606; Mon, 10 Feb 2025 07:49:45 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4391dfd8448sm150612845e9.38.2025.02.10.07.49.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Feb 2025 07:49:45 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 01/12] target/arm: deprecate the pxa2xx CPUs and iwMMXt emulation Date: Mon, 10 Feb 2025 15:49:31 +0000 Message-Id: <20250210154942.3634878-2-peter.maydell@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250210154942.3634878-1-peter.maydell@linaro.org> References: <20250210154942.3634878-1-peter.maydell@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::32d; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org The pxa2xx CPUs are now only useful with user-mode emulation, because we dropped all the machine types that used them in 9.2. (Technically you could alse use "-cpu pxa270" with a board model like versatilepb which doesn't sanity-check the CPU type, but that has never been a supported config.) To use them (or iwMMXt emulation) with QEMU user-mode you would need to explicitly select them with the -cpu option or the QEMU_CPU environment variable. A google search finds no examples of anybody doing this in the last decade; I don't believe the GCC folks are using QEMU to test their iwMMXt codegen either. In fact, GCC is in the process of dropping support for iwMMXT entirely. The iwMMXt emulation is thousands of lines of code in QEMU, and is now the only bit of Arm insn decode which doesn't use decodetree. We have no way to test or validate changes to it. This code is just dead weight that is almost certainly not being used by anybody. Mark it as deprecated. Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daudé Message-id: 20250127112715.2936555-2-peter.maydell@linaro.org --- docs/about/deprecated.rst | 21 +++++++++++++++++++++ target/arm/cpu.h | 1 + target/arm/cpu.c | 3 +++ target/arm/tcg/cpu32.c | 36 ++++++++++++++++++++++++------------ 4 files changed, 49 insertions(+), 12 deletions(-) diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst index 4a3c302962a..29de49351d1 100644 --- a/docs/about/deprecated.rst +++ b/docs/about/deprecated.rst @@ -204,6 +204,27 @@ is going to be so much slower it wouldn't make sense for any serious instrumentation. Due to implementation differences there will also be anomalies in things like memory instrumentation. +linux-user mode CPUs +-------------------- + +iwMMXt emulation and the ``pxa`` CPUs (since 10.0) +'''''''''''''''''''''''''''''''''''''''''''''''''' + +The ``pxa`` CPU family (``pxa250``, ``pxa255``, ``pxa260``, +``pxa261``, ``pxa262``, ``pxa270-a0``, ``pxa270-a1``, ``pxa270``, +``pxa270-b0``, ``pxa270-b1``, ``pxa270-c0``, ``pxa270-c5``) are no +longer used in system emulation, because all the machine types which +used these CPUs were removed in the QEMU 9.2 release. These CPUs can +now only be used in linux-user mode, and to do that you would have to +explicitly select one of these CPUs with the ``-cpu`` command line +option or the ``QEMU_CPU`` environment variable. + +We don't believe that anybody is using the iwMMXt emulation, and we do +not have any tests to validate it or any real hardware or similar +known-good implementation to test against. GCC is in the process of +dropping their support for iwMMXt codegen. These CPU types are +therefore deprecated in QEMU, and will be removed in a future release. + System emulator CPUs -------------------- diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 2213c277348..c2d2d99b462 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -1118,6 +1118,7 @@ struct ArchCPU { typedef struct ARMCPUInfo { const char *name; + const char *deprecation_note; void (*initfn)(Object *obj); void (*class_init)(ObjectClass *oc, void *data); } ARMCPUInfo; diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 7a83b9ee34f..32dc7c1e692 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -2758,6 +2758,9 @@ static void cpu_register_class_init(ObjectClass *oc, void *data) acc->info = data; cc->gdb_core_xml_file = "arm-core.xml"; + if (acc->info->deprecation_note) { + cc->deprecation_note = acc->info->deprecation_note; + } } void arm_cpu_register(const ARMCPUInfo *info) diff --git a/target/arm/tcg/cpu32.c b/target/arm/tcg/cpu32.c index 2ad21825255..0f1c5bc87e8 100644 --- a/target/arm/tcg/cpu32.c +++ b/target/arm/tcg/cpu32.c @@ -1026,19 +1026,31 @@ static const ARMCPUInfo arm_tcg_cpus[] = { { .name = "ti925t", .initfn = ti925t_initfn }, { .name = "sa1100", .initfn = sa1100_initfn }, { .name = "sa1110", .initfn = sa1110_initfn }, - { .name = "pxa250", .initfn = pxa250_initfn }, - { .name = "pxa255", .initfn = pxa255_initfn }, - { .name = "pxa260", .initfn = pxa260_initfn }, - { .name = "pxa261", .initfn = pxa261_initfn }, - { .name = "pxa262", .initfn = pxa262_initfn }, + { .name = "pxa250", .initfn = pxa250_initfn, + .deprecation_note = "iwMMXt CPUs are no longer supported", }, + { .name = "pxa255", .initfn = pxa255_initfn, + .deprecation_note = "iwMMXt CPUs are no longer supported", }, + { .name = "pxa260", .initfn = pxa260_initfn, + .deprecation_note = "iwMMXt CPUs are no longer supported", }, + { .name = "pxa261", .initfn = pxa261_initfn, + .deprecation_note = "iwMMXt CPUs are no longer supported", }, + { .name = "pxa262", .initfn = pxa262_initfn, + .deprecation_note = "iwMMXt CPUs are no longer supported", }, /* "pxa270" is an alias for "pxa270-a0" */ - { .name = "pxa270", .initfn = pxa270a0_initfn }, - { .name = "pxa270-a0", .initfn = pxa270a0_initfn }, - { .name = "pxa270-a1", .initfn = pxa270a1_initfn }, - { .name = "pxa270-b0", .initfn = pxa270b0_initfn }, - { .name = "pxa270-b1", .initfn = pxa270b1_initfn }, - { .name = "pxa270-c0", .initfn = pxa270c0_initfn }, - { .name = "pxa270-c5", .initfn = pxa270c5_initfn }, + { .name = "pxa270", .initfn = pxa270a0_initfn, + .deprecation_note = "iwMMXt CPUs are no longer supported", }, + { .name = "pxa270-a0", .initfn = pxa270a0_initfn, + .deprecation_note = "iwMMXt CPUs are no longer supported", }, + { .name = "pxa270-a1", .initfn = pxa270a1_initfn, + .deprecation_note = "iwMMXt CPUs are no longer supported", }, + { .name = "pxa270-b0", .initfn = pxa270b0_initfn, + .deprecation_note = "iwMMXt CPUs are no longer supported", }, + { .name = "pxa270-b1", .initfn = pxa270b1_initfn, + .deprecation_note = "iwMMXt CPUs are no longer supported", }, + { .name = "pxa270-c0", .initfn = pxa270c0_initfn, + .deprecation_note = "iwMMXt CPUs are no longer supported", }, + { .name = "pxa270-c5", .initfn = pxa270c5_initfn, + .deprecation_note = "iwMMXt CPUs are no longer supported", }, #ifndef TARGET_AARCH64 { .name = "max", .initfn = arm_max_initfn }, #endif