From patchwork Tue Feb 4 00:22:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13958434 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 87C49C02192 for ; Tue, 4 Feb 2025 00:23:25 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tf6iM-0008HJ-Pj; Mon, 03 Feb 2025 19:22: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 1tf6iK-0008GX-BN for qemu-devel@nongnu.org; Mon, 03 Feb 2025 19:22:52 -0500 Received: from mail-wr1-x431.google.com ([2a00:1450:4864:20::431]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tf6iI-00070W-Tc for qemu-devel@nongnu.org; Mon, 03 Feb 2025 19:22:52 -0500 Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-38637614567so2222970f8f.3 for ; Mon, 03 Feb 2025 16:22:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738628569; x=1739233369; 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=Az8EPLdbpaM4rrJ7UfHg0zKoQFfHGEeaDufKhZSFa9M=; b=Wb355+44R5wbRQHVdlUmADuEDOQGuqE7WZl230AVRb0jvSsL77OQS4uKWgc26UqwtY q2llNUluOrfFzmEdyNxWzdco7pEqEhek9PwG/AGQ9ma3pevLbAcrhTwGbwdVKZFYMf/a e948WClgD5ydRKEdpZlIjYEHx5k6rzgVOpVBap5t+2Al/LXvLW323mRtSnN3hS3ZuNF9 VfuvcSh2GKkzXkfF/mMqEwKjpOe+m9VKueY/qofcm3RqsQDlRzTDx8zOrB/cqDUYdfch aeWNyZKzdt9bZ/jNzW/FyTcdNpBT+S9opqLF/7kGuuox8fbNLlNlzkDtjQivg+ulBAbI EgSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738628569; x=1739233369; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Az8EPLdbpaM4rrJ7UfHg0zKoQFfHGEeaDufKhZSFa9M=; b=ePEof+eYXsT8yboqmzKvkzm3FrX77YTZkvh4qq/Wsmf6Bz4WxqmYSHXxbW8zWHZv1M 0ZTVJh54mttlJcRB5sGbYTZXWV7PHL0lG0A2U/cScatKTOYO3IvVw8PuFF3Z14rL4ij/ qnuy1uP/IqhOGMIsY3gizVKk5nNPl3fz0ZXbK2ESTx4rSqw++q5ufG9dv8HiOUmdqeMl z32SLeBuBLmqKLBitdLNMrQ+wbirImJWcV7pguzDDFlHXCG3piiZQKjIxz1HSq2lK/6c SYQOkRQ18z34XkmQE5iIXx0pz2zSs6Ffl4uGhzxvQCQljkmJ/Qd950c7sg8+tw6Jj8rF MPnA== X-Gm-Message-State: AOJu0Yxm/I297sJt/7MxqCT1BuOydUqAgqeBTAZN7X1DcZlDwJv5Ctdm NwJdTIQMffyXA4wDLLDV1NUgfEv0ppcnzO+r+gvQVhn7bVz4zemcE+pthCXbnQGPRGEN41/V393 MRpI= X-Gm-Gg: ASbGncv2su3Z4/t3js6BzM7B3EhTFk6fouy/xNakB6if7Ias9jyPrML+6uD/xUuNnKQ B2/vP0SAOrZnTX2gCtT9viCc0VweqAGlRhBPw4/J8LyR0PqE59MiocMFvB0dZW0rzFafd0v6Qar uRpqdgYCRyBkNp7AOsZbiWz1OQ5LBX67qvYFosx+Qvh2wZcu5WCKoI3ydCTBKyLaqA8qMa0uOTf AE++ZhHGphpHh5JwQhrcnIpeEZzvPBYMZgoKGAsBV6MPxfTqGVG+iYTx5CW4hxsrlIb8Hu3vfmZ 1rRXEwHq8UztcioZx6EA6iWqh5v1dSKV+o5QYwNbPvUixQlzCZnvP4WfEQmC62Po/Q== X-Google-Smtp-Source: AGHT+IGehyswMqyU/BOxxk5EPd2/kVZgXrKnQ5/w12TJ2w9ENui2JG35mk6P9Jze2hMJ186vIP0Ceg== X-Received: by 2002:a05:6000:18af:b0:385:e30a:e0f7 with SMTP id ffacd0b85a97d-38c5195e81dmr18362724f8f.22.1738628569093; Mon, 03 Feb 2025 16:22:49 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38c5c1cf2eesm13942861f8f.85.2025.02.03.16.22.47 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 03 Feb 2025 16:22:48 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?utf-8?q?Daniel_P_=2E_Berrang=C3=A9?= , BALATON Zoltan , Peter Maydell , Laurent Vivier , Ovchinnikov Vitalii , =?utf-8?q?Philippe_Ma?= =?utf-8?q?thieu-Daud=C3=A9?= , Jared Mauch , Fabiano Rosas , Paolo Bonzini , qemu-arm@nongnu.org, =?utf-8?q?Alex_Be?= =?utf-8?q?nn=C3=A9e?= , devel@lists.libvirt.org Subject: [PATCH v2 01/12] hw/arm/raspi: Access SoC parent object using BCM283X_BASE() macro Date: Tue, 4 Feb 2025 01:22:29 +0100 Message-ID: <20250204002240.97830-2-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250204002240.97830-1-philmd@linaro.org> References: <20250204002240.97830-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::431; envelope-from=philmd@linaro.org; helo=mail-wr1-x431.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=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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org We shouldn't access a QOM parent object directly. Use the appropriate type-cast macro. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Peter Maydell --- hw/arm/raspi.c | 2 +- hw/arm/raspi4b.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c index a7a662f40db..508f90479e2 100644 --- a/hw/arm/raspi.c +++ b/hw/arm/raspi.c @@ -312,7 +312,7 @@ void raspi_machine_init(MachineState *machine) object_initialize_child(OBJECT(machine), "soc", soc, board_soc_type(mc->board_rev)); - raspi_base_machine_init(machine, &soc->parent_obj); + raspi_base_machine_init(machine, BCM283X_BASE(soc)); } void raspi_machine_class_common_init(MachineClass *mc, diff --git a/hw/arm/raspi4b.c b/hw/arm/raspi4b.c index 1264e0d6eed..9b08a598f39 100644 --- a/hw/arm/raspi4b.c +++ b/hw/arm/raspi4b.c @@ -104,7 +104,7 @@ static void raspi4b_machine_init(MachineState *machine) object_initialize_child(OBJECT(machine), "soc", soc, board_soc_type(mc->board_rev)); - raspi_base_machine_init(machine, &soc->parent_obj); + raspi_base_machine_init(machine, BCM283X_BASE(soc)); } static void raspi4b_machine_class_init(ObjectClass *oc, void *data) From patchwork Tue Feb 4 00:22:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13958435 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 8B6F2C02193 for ; Tue, 4 Feb 2025 00:23:25 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tf6iU-0008OJ-Q6; Mon, 03 Feb 2025 19:23: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 1tf6iR-0008N7-FC for qemu-devel@nongnu.org; Mon, 03 Feb 2025 19:22:59 -0500 Received: from mail-wr1-x434.google.com ([2a00:1450:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tf6iP-00071h-7l for qemu-devel@nongnu.org; Mon, 03 Feb 2025 19:22:59 -0500 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-38da88e6db0so41899f8f.2 for ; Mon, 03 Feb 2025 16:22:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738628575; x=1739233375; 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=vsIKyI+e9av35VOR6IuoP5pHXQj36xoMmsdPAwqdbVY=; b=H8jZvMNT0ko3RG4E9Q7lcZqziviBxuNGG64jYnMhdNi0/VVx7pQE3RfzNn3f4qDq0V AjzioaoVhPY7Wb5wYCyDX6OWDojFAp5yV0VeFjwN9HwgAy3EhewfiEexQu1zNr0uw7pp UdYq6+MRVKQtklq9o5NER+5C7HFZJHIFpanzuXXJv+kNxqOI4KcbPnlKasmP1tsAyGqn dUdsmTvB+ZL9TXJPxYmKYBk80l8bgvcam2Iu8BMq9tis22thrbBmJG2A1Kw38rokYwsR mot4yHN21YhZaHoo6Tv1eoKtOqezLDwdQaHkIbXFots/i0TQZKYN9hIi/422TqFSv7EA kniA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738628575; x=1739233375; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vsIKyI+e9av35VOR6IuoP5pHXQj36xoMmsdPAwqdbVY=; b=PYXzdaalB/xn9O453EAokWeaBycJTWgbb5yC3dJD0RYeAh4g9yAcX4V9lWWLBzluqf pxbqHuROXVW37QD9yj/wegPcwuc2CJgrtCSEQjKJK8c8AVYbr/9t61uokTmRAgKE0Ulg 3drXWZZsgrDOnqfwA5A8hsAUDHQCKzNOMKIaLwfABDr6hzM3iHug6fguG7NsK1ely4gL 2uli/FovSQmewQv8Czb91LiP8YOMhCfGws/a7I90CgbP3Cjz7XGVEO9znXiEBTMoz4Sg W7Tx7rNdbu20fNbhi6vbYkf/Gu9lRnbBNiom3Abe38Ku9oxPYPwgIGKFcblFsroHtYDt HyWg== X-Gm-Message-State: AOJu0YyPQ/j+gwKaLwKQKdtQx0o+I0I42tMG4wb7kStpHeOOWRX/No4P o95DuEYB2qknW1uiV9k9r1LEc7KhwwvcJdbzj/wWLJuAXab2ZcIath73rwKyYcvqWGMzxXCHRGn sLeY= X-Gm-Gg: ASbGnctTdO8FIU6G509qxgjGjECZP2iIHe3pcp5PW/2zwXlSndgAygD6MJcpQ2n3gT2 PySUqScE+EyMNP+cACKUgKoPAmqdPDR6EsoqxjJqyQddZfGqUhC+VdxQmxREtrX5zwfnryQXOHy /roZghWPc/fVsqQ5bykYpeBPt9uuwMD+HB9SwqPhceN+GRm9EAZB2RjSt6FaQfl/71zAt1P7whj gaGfIvgRV1V+ooQ16A2Q0k5lH1VQtM1ue9cEFDsiFOh077gGLNFYblt1lT5jHaGVs2WiMyNa04p h23UC78HLShZrrhh//M5LbREXxZtT6g3d14hCGN0ga3BqY8wsaZq1Kf8Qmjs5fu+3Q== X-Google-Smtp-Source: AGHT+IHjNmmsTMwFvgzRhtIJozEro1HlPr24eqil0s/FSv2CSBrheY5n6kgxKDAO4uVJteUcr+rZ4g== X-Received: by 2002:a05:6000:1942:b0:386:1cd3:8a0e with SMTP id ffacd0b85a97d-38c520b96f8mr16092847f8f.48.1738628575462; Mon, 03 Feb 2025 16:22:55 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-438e23d42d4sm176306255e9.6.2025.02.03.16.22.52 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 03 Feb 2025 16:22:54 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?utf-8?q?Daniel_P_=2E_Berrang=C3=A9?= , BALATON Zoltan , Peter Maydell , Laurent Vivier , Ovchinnikov Vitalii , =?utf-8?q?Philippe_Ma?= =?utf-8?q?thieu-Daud=C3=A9?= , Jared Mauch , Fabiano Rosas , Paolo Bonzini , qemu-arm@nongnu.org, =?utf-8?q?Alex_Be?= =?utf-8?q?nn=C3=A9e?= , devel@lists.libvirt.org Subject: [PATCH v2 02/12] hw/arm/raspi: Merge model 4B with other models Date: Tue, 4 Feb 2025 01:22:30 +0100 Message-ID: <20250204002240.97830-3-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250204002240.97830-1-philmd@linaro.org> References: <20250204002240.97830-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::434; envelope-from=philmd@linaro.org; helo=mail-wr1-x434.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=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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Except we alter the device tree blob, the 4B is just another raspi model. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Peter Maydell --- hw/arm/raspi.c | 114 ++++++++++++++++++++++++++++++++++++- hw/arm/raspi4b.c | 136 --------------------------------------------- hw/arm/meson.build | 2 +- 3 files changed, 114 insertions(+), 138 deletions(-) delete mode 100644 hw/arm/raspi4b.c diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c index 508f90479e2..3fa382d62ce 100644 --- a/hw/arm/raspi.c +++ b/hw/arm/raspi.c @@ -8,6 +8,10 @@ * Raspberry Pi 3 emulation Copyright (c) 2018 Zoltán Baldaszti * Upstream code cleanup (c) 2018 Pekka Enberg * + * Raspberry Pi 4 emulation Copyright (C) 2022 Ovchinnikov Vitalii + * + * SPDX-License-Identifier: GPL-2.0-or-later + * * This work is licensed under the terms of the GNU GPL, version 2 or later. * See the COPYING file in the top-level directory. */ @@ -16,20 +20,27 @@ #include "qemu/units.h" #include "qemu/cutils.h" #include "qapi/error.h" +#include "qapi/visitor.h" #include "hw/arm/boot.h" #include "hw/arm/bcm2836.h" #include "hw/arm/bcm2838.h" #include "hw/arm/raspi_platform.h" +#include "hw/display/bcm2835_fb.h" #include "hw/registerfields.h" #include "qemu/error-report.h" #include "hw/boards.h" #include "hw/loader.h" #include "hw/arm/boot.h" #include "qom/object.h" +#include "system/device_tree.h" +#include #define TYPE_RASPI_MACHINE MACHINE_TYPE_NAME("raspi-common") OBJECT_DECLARE_SIMPLE_TYPE(RaspiMachineState, RASPI_MACHINE) +#define TYPE_RASPI4B_MACHINE MACHINE_TYPE_NAME("raspi4b") +OBJECT_DECLARE_SIMPLE_TYPE(Raspi4bMachineState, RASPI4B_MACHINE) + #define SMPBOOT_ADDR 0x300 /* this should leave enough space for ATAGS */ #define MVBAR_ADDR 0x400 /* secure vectors */ #define BOARDSETUP_ADDR (MVBAR_ADDR + 0x20) /* board setup code */ @@ -44,6 +55,11 @@ struct RaspiMachineState { BCM283XState soc; }; +struct Raspi4bMachineState { + RaspiBaseMachineState parent_obj; + BCM2838State soc; +}; + /* * Board revision codes: * www.raspberrypi.org/documentation/hardware/raspberrypi/revision-codes/ @@ -301,6 +317,83 @@ void raspi_base_machine_init(MachineState *machine, boot_ram_size); } +#ifdef TARGET_AARCH64 +/* + * Add second memory region if board RAM amount exceeds VC base address + * (see https://datasheets.raspberrypi.com/bcm2711/bcm2711-peripherals.pdf + * 1.2 Address Map) + */ +static int raspi4_add_memory_node(void *fdt, hwaddr mem_base, hwaddr mem_len) +{ + int ret; + uint32_t acells, scells; + char *nodename = g_strdup_printf("/memory@%" PRIx64, mem_base); + + acells = qemu_fdt_getprop_cell(fdt, "/", "#address-cells", + NULL, &error_fatal); + scells = qemu_fdt_getprop_cell(fdt, "/", "#size-cells", + NULL, &error_fatal); + if (acells == 0 || scells == 0) { + fprintf(stderr, "dtb file invalid (#address-cells or #size-cells 0)\n"); + ret = -1; + } else { + qemu_fdt_add_subnode(fdt, nodename); + qemu_fdt_setprop_string(fdt, nodename, "device_type", "memory"); + ret = qemu_fdt_setprop_sized_cells(fdt, nodename, "reg", + acells, mem_base, + scells, mem_len); + } + + g_free(nodename); + return ret; +} + +static void raspi4_modify_dtb(const struct arm_boot_info *info, void *fdt) +{ + uint64_t ram_size; + + /* Temporarily disable following devices until they are implemented */ + const char *nodes_to_remove[] = { + "brcm,bcm2711-pcie", + "brcm,bcm2711-rng200", + "brcm,bcm2711-thermal", + "brcm,bcm2711-genet-v5", + }; + + for (int i = 0; i < ARRAY_SIZE(nodes_to_remove); i++) { + const char *dev_str = nodes_to_remove[i]; + + int offset = fdt_node_offset_by_compatible(fdt, -1, dev_str); + if (offset >= 0) { + if (!fdt_nop_node(fdt, offset)) { + warn_report("bcm2711 dtc: %s has been disabled!", dev_str); + } + } + } + + ram_size = board_ram_size(info->board_id); + + if (info->ram_size > UPPER_RAM_BASE) { + raspi4_add_memory_node(fdt, UPPER_RAM_BASE, ram_size - UPPER_RAM_BASE); + } +} + +static void raspi4b_machine_init(MachineState *machine) +{ + Raspi4bMachineState *s = RASPI4B_MACHINE(machine); + RaspiBaseMachineState *s_base = RASPI_BASE_MACHINE(machine); + RaspiBaseMachineClass *mc = RASPI_BASE_MACHINE_GET_CLASS(machine); + BCM2838State *soc = &s->soc; + + s_base->binfo.modify_dtb = raspi4_modify_dtb; + s_base->binfo.board_id = mc->board_rev; + + object_initialize_child(OBJECT(machine), "soc", soc, + board_soc_type(mc->board_rev)); + raspi_base_machine_init(machine, BCM283X_BASE(soc)); +} +#endif /* TARGET_AARCH64 */ + void raspi_machine_init(MachineState *machine) { RaspiMachineState *s = RASPI_MACHINE(machine); @@ -382,6 +475,20 @@ static void raspi3b_machine_class_init(ObjectClass *oc, void *data) rmc->board_rev = 0xa02082; raspi_machine_class_init(mc, rmc->board_rev); }; + +static void raspi4b_machine_class_init(ObjectClass *oc, void *data) +{ + MachineClass *mc = MACHINE_CLASS(oc); + RaspiBaseMachineClass *rmc = RASPI_BASE_MACHINE_CLASS(oc); + +#if HOST_LONG_BITS == 32 + rmc->board_rev = 0xa03111; /* Revision 1.1, 1 Gb RAM */ +#else + rmc->board_rev = 0xb03115; /* Revision 1.5, 2 Gb RAM */ +#endif + raspi_machine_class_common_init(mc, rmc->board_rev); + mc->init = raspi4b_machine_init; +} #endif /* TARGET_AARCH64 */ static const TypeInfo raspi_machine_types[] = { @@ -406,7 +513,12 @@ static const TypeInfo raspi_machine_types[] = { .name = MACHINE_TYPE_NAME("raspi3b"), .parent = TYPE_RASPI_MACHINE, .class_init = raspi3b_machine_class_init, -#endif + }, { + .name = MACHINE_TYPE_NAME("raspi4"), + .parent = TYPE_RASPI_BASE_MACHINE, + .instance_size = sizeof(Raspi4bMachineState), + .class_init = raspi4b_machine_class_init, +#endif /* TARGET_AARCH64 */ }, { .name = TYPE_RASPI_MACHINE, .parent = TYPE_RASPI_BASE_MACHINE, diff --git a/hw/arm/raspi4b.c b/hw/arm/raspi4b.c deleted file mode 100644 index 9b08a598f39..00000000000 --- a/hw/arm/raspi4b.c +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Raspberry Pi 4B emulation - * - * Copyright (C) 2022 Ovchinnikov Vitalii - * - * SPDX-License-Identifier: GPL-2.0-or-later - */ - -#include "qemu/osdep.h" -#include "qemu/units.h" -#include "qemu/cutils.h" -#include "qapi/error.h" -#include "qapi/visitor.h" -#include "hw/arm/raspi_platform.h" -#include "hw/display/bcm2835_fb.h" -#include "hw/registerfields.h" -#include "qemu/error-report.h" -#include "system/device_tree.h" -#include "hw/boards.h" -#include "hw/loader.h" -#include "hw/arm/boot.h" -#include "qom/object.h" -#include "hw/arm/bcm2838.h" -#include - -#define TYPE_RASPI4B_MACHINE MACHINE_TYPE_NAME("raspi4b") -OBJECT_DECLARE_SIMPLE_TYPE(Raspi4bMachineState, RASPI4B_MACHINE) - -struct Raspi4bMachineState { - RaspiBaseMachineState parent_obj; - BCM2838State soc; -}; - -/* - * Add second memory region if board RAM amount exceeds VC base address - * (see https://datasheets.raspberrypi.com/bcm2711/bcm2711-peripherals.pdf - * 1.2 Address Map) - */ -static int raspi_add_memory_node(void *fdt, hwaddr mem_base, hwaddr mem_len) -{ - int ret; - uint32_t acells, scells; - char *nodename = g_strdup_printf("/memory@%" PRIx64, mem_base); - - acells = qemu_fdt_getprop_cell(fdt, "/", "#address-cells", - NULL, &error_fatal); - scells = qemu_fdt_getprop_cell(fdt, "/", "#size-cells", - NULL, &error_fatal); - if (acells == 0 || scells == 0) { - fprintf(stderr, "dtb file invalid (#address-cells or #size-cells 0)\n"); - ret = -1; - } else { - qemu_fdt_add_subnode(fdt, nodename); - qemu_fdt_setprop_string(fdt, nodename, "device_type", "memory"); - ret = qemu_fdt_setprop_sized_cells(fdt, nodename, "reg", - acells, mem_base, - scells, mem_len); - } - - g_free(nodename); - return ret; -} - -static void raspi4_modify_dtb(const struct arm_boot_info *info, void *fdt) -{ - uint64_t ram_size; - - /* Temporarily disable following devices until they are implemented */ - const char *nodes_to_remove[] = { - "brcm,bcm2711-pcie", - "brcm,bcm2711-rng200", - "brcm,bcm2711-thermal", - "brcm,bcm2711-genet-v5", - }; - - for (int i = 0; i < ARRAY_SIZE(nodes_to_remove); i++) { - const char *dev_str = nodes_to_remove[i]; - - int offset = fdt_node_offset_by_compatible(fdt, -1, dev_str); - if (offset >= 0) { - if (!fdt_nop_node(fdt, offset)) { - warn_report("bcm2711 dtc: %s has been disabled!", dev_str); - } - } - } - - ram_size = board_ram_size(info->board_id); - - if (info->ram_size > UPPER_RAM_BASE) { - raspi_add_memory_node(fdt, UPPER_RAM_BASE, ram_size - UPPER_RAM_BASE); - } -} - -static void raspi4b_machine_init(MachineState *machine) -{ - Raspi4bMachineState *s = RASPI4B_MACHINE(machine); - RaspiBaseMachineState *s_base = RASPI_BASE_MACHINE(machine); - RaspiBaseMachineClass *mc = RASPI_BASE_MACHINE_GET_CLASS(machine); - BCM2838State *soc = &s->soc; - - s_base->binfo.modify_dtb = raspi4_modify_dtb; - s_base->binfo.board_id = mc->board_rev; - - object_initialize_child(OBJECT(machine), "soc", soc, - board_soc_type(mc->board_rev)); - - raspi_base_machine_init(machine, BCM283X_BASE(soc)); -} - -static void raspi4b_machine_class_init(ObjectClass *oc, void *data) -{ - MachineClass *mc = MACHINE_CLASS(oc); - RaspiBaseMachineClass *rmc = RASPI_BASE_MACHINE_CLASS(oc); - -#if HOST_LONG_BITS == 32 - rmc->board_rev = 0xa03111; /* Revision 1.1, 1 Gb RAM */ -#else - rmc->board_rev = 0xb03115; /* Revision 1.5, 2 Gb RAM */ -#endif - raspi_machine_class_common_init(mc, rmc->board_rev); - mc->init = raspi4b_machine_init; -} - -static const TypeInfo raspi4b_machine_type = { - .name = TYPE_RASPI4B_MACHINE, - .parent = TYPE_RASPI_BASE_MACHINE, - .instance_size = sizeof(Raspi4bMachineState), - .class_init = raspi4b_machine_class_init, -}; - -static void raspi4b_machine_register_type(void) -{ - type_register_static(&raspi4b_machine_type); -} - -type_init(raspi4b_machine_register_type) diff --git a/hw/arm/meson.build b/hw/arm/meson.build index 490234b3b84..5177260d42b 100644 --- a/hw/arm/meson.build +++ b/hw/arm/meson.build @@ -27,7 +27,7 @@ arm_ss.add(when: 'CONFIG_ALLWINNER_A10', if_true: files('allwinner-a10.c', 'cubi arm_ss.add(when: 'CONFIG_ALLWINNER_H3', if_true: files('allwinner-h3.c', 'orangepi.c')) arm_ss.add(when: 'CONFIG_ALLWINNER_R40', if_true: files('allwinner-r40.c', 'bananapi_m2u.c')) arm_ss.add(when: 'CONFIG_RASPI', if_true: files('bcm2836.c', 'raspi.c')) -arm_ss.add(when: ['CONFIG_RASPI', 'TARGET_AARCH64'], if_true: files('bcm2838.c', 'raspi4b.c')) +arm_ss.add(when: ['CONFIG_RASPI', 'TARGET_AARCH64'], if_true: files('bcm2838.c')) arm_ss.add(when: 'CONFIG_STM32F100_SOC', if_true: files('stm32f100_soc.c')) arm_ss.add(when: 'CONFIG_STM32F205_SOC', if_true: files('stm32f205_soc.c')) arm_ss.add(when: 'CONFIG_STM32F405_SOC', if_true: files('stm32f405_soc.c')) From patchwork Tue Feb 4 00:22:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13958436 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B6989C02194 for ; Tue, 4 Feb 2025 00:23:26 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tf6ic-0008SD-7Y; Mon, 03 Feb 2025 19:23: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 1tf6iW-0008Od-C5 for qemu-devel@nongnu.org; Mon, 03 Feb 2025 19:23:04 -0500 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tf6iU-00072H-TI for qemu-devel@nongnu.org; Mon, 03 Feb 2025 19:23:04 -0500 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-4362f61757fso51266665e9.2 for ; Mon, 03 Feb 2025 16:23:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738628581; x=1739233381; 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=nVNCwynGFIOtISxx5EetqRZMocUYGnGpNyGbXMYbhl0=; b=tMIBcUE2VHK4TgQaIk3UOJ4qm1DHFXc3cS13gKCgnWedNDkRFlhWsYjroaoirAjhy+ KhoppYps7tjst7SMR3SpKb+2kh4jVHDdbOHtPJLYlrLnMei/iKfy2pFhuioaJOTX5EQ0 SOtBMAVP9jWpyefmY68q3q4g0eOuDKBTGC4dQm3O3XRV45TPAsUsxEEYBBkIca51zXFD ZEwuubH0U7qaCPEsABl/gXIksMtzu1CwdU/G4SsZft2JqN11rlLBjpRazuSf2VFQbxcp 9dqVG7i1IuCfI1mFfvP4c47UYIHgc559gI3QVwGLi0ZpbVzsIK0NzFVu7N6/5iklDOJJ e53w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738628581; x=1739233381; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=nVNCwynGFIOtISxx5EetqRZMocUYGnGpNyGbXMYbhl0=; b=AUu1cckLtO2s8X4XM/L/u5ylTLFX+2D0f+Kz2lPLTKfnfxCSwFFeXRQA3btajdd+EP jGbOxUFNqzI7DXn9UgN2b9NgaYpkURuPd18eADSlkXaeinkCJmeHp84XgRnxy7LHJ92R ZF5iUV8ZYxvO8ZlkTebsfxvCIQo54qC3qsdIuXF1hn6p5gbve5dPnECis0AlJxFx99mS 4FCBytqD1eiJr5RsAvJerDEkM2GzBUdg1IyvNMpQmYyguPPCEOWf49CEduIDeNL+RmCb lF0Xv1m+UXN9SCUdP2EdAjQvlQgsyD/OY/hYaa6qdp/KgvS4jot2vwv9ULfrXcYLajpP w7hQ== X-Gm-Message-State: AOJu0YxoZFllkhEeBQ/pRL4CWfFYBTbqD/ATqvFZ7LiTDKCfQ794eAZB Njpa03/ArIXeLb+/lT9Kca4uxFqaXx4PtG3WhnRaGhP4wO6m8kjCxhydy5GTNV5KQ91UmTDo7F7 PrKE= X-Gm-Gg: ASbGncvtBdGxYs6szGFwH7wHZqzu754mEZE9fdlkcRbtURcRZE+b1YprWEWXZGn/GRZ M6Bu5kUhgRMcdaTY5ns2P/NvAm//otgZO3QjKfg5LySMT/yqUapByvAjIWr1ISR4XBjGBuYaFcb v4TP8XRcI77UgfAhQqNkW1EgqZ3X7DYnH8YyFyV4Bpacq3D66xyiBa3ZirK0OpckgrfguoC2fhG ij7iOFL9cFqwoVllupDvfT0eTbrdW22hUKreL8X5AgB1MRHYx9wO6/vbe24KMipT4k5bBuS7XYp H0u+S0T/GeiPtlD2sAZT1EyY5+i+sluKgVmodytA6Hjv0gXo4eLTUNUSUp1UtG1Uqw== X-Google-Smtp-Source: AGHT+IEgsAQgnUdrPCSLWADKulJzu3xBQ6zfJJRjAoGf4pxTEoHxz53Qq3cDLFtkt6vLH27xW1VB3Q== X-Received: by 2002:a05:600c:1e02:b0:434:ffd7:6fd2 with SMTP id 5b1f17b1804b1-438dc3c22d4mr217757185e9.7.1738628581014; Mon, 03 Feb 2025 16:23:01 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-438e244ecd6sm175398995e9.28.2025.02.03.16.22.59 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 03 Feb 2025 16:23:00 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?utf-8?q?Daniel_P_=2E_Berrang=C3=A9?= , BALATON Zoltan , Peter Maydell , Laurent Vivier , Ovchinnikov Vitalii , =?utf-8?q?Philippe_Ma?= =?utf-8?q?thieu-Daud=C3=A9?= , Jared Mauch , Fabiano Rosas , Paolo Bonzini , qemu-arm@nongnu.org, =?utf-8?q?Alex_Be?= =?utf-8?q?nn=C3=A9e?= , devel@lists.libvirt.org Subject: [PATCH v2 03/12] hw/arm/raspi: Unify RASPI_MACHINE types Date: Tue, 4 Feb 2025 01:22:31 +0100 Message-ID: <20250204002240.97830-4-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250204002240.97830-1-philmd@linaro.org> References: <20250204002240.97830-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::32c; envelope-from=philmd@linaro.org; helo=mail-wm1-x32c.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=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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Merge Raspi4bMachineState within RaspiMachineState by using an unnamed union. Signed-off-by: Philippe Mathieu-Daudé --- hw/arm/raspi.c | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c index 3fa382d62ce..ef94d57dab5 100644 --- a/hw/arm/raspi.c +++ b/hw/arm/raspi.c @@ -38,9 +38,6 @@ #define TYPE_RASPI_MACHINE MACHINE_TYPE_NAME("raspi-common") OBJECT_DECLARE_SIMPLE_TYPE(RaspiMachineState, RASPI_MACHINE) -#define TYPE_RASPI4B_MACHINE MACHINE_TYPE_NAME("raspi4b") -OBJECT_DECLARE_SIMPLE_TYPE(Raspi4bMachineState, RASPI4B_MACHINE) - #define SMPBOOT_ADDR 0x300 /* this should leave enough space for ATAGS */ #define MVBAR_ADDR 0x400 /* secure vectors */ #define BOARDSETUP_ADDR (MVBAR_ADDR + 0x20) /* board setup code */ @@ -49,15 +46,12 @@ OBJECT_DECLARE_SIMPLE_TYPE(Raspi4bMachineState, RASPI4B_MACHINE) #define SPINTABLE_ADDR 0xd8 /* Pi 3 bootloader spintable */ struct RaspiMachineState { - /*< private >*/ RaspiBaseMachineState parent_obj; - /*< public >*/ - BCM283XState soc; -}; -struct Raspi4bMachineState { - RaspiBaseMachineState parent_obj; - BCM2838State soc; + union { + BCM283XState soc; + BCM2838State soc4; + }; }; /* @@ -380,10 +374,10 @@ static void raspi4_modify_dtb(const struct arm_boot_info *info, void *fdt) static void raspi4b_machine_init(MachineState *machine) { - Raspi4bMachineState *s = RASPI4B_MACHINE(machine); + RaspiMachineState *s = RASPI_MACHINE(machine); RaspiBaseMachineState *s_base = RASPI_BASE_MACHINE(machine); RaspiBaseMachineClass *mc = RASPI_BASE_MACHINE_GET_CLASS(machine); - BCM2838State *soc = &s->soc; + BCM2838State *soc = &s->soc4; s_base->binfo.modify_dtb = raspi4_modify_dtb; s_base->binfo.board_id = mc->board_rev; @@ -515,8 +509,7 @@ static const TypeInfo raspi_machine_types[] = { .class_init = raspi3b_machine_class_init, }, { .name = MACHINE_TYPE_NAME("raspi4"), - .parent = TYPE_RASPI_BASE_MACHINE, - .instance_size = sizeof(Raspi4bMachineState), + .parent = TYPE_RASPI_MACHINE, .class_init = raspi4b_machine_class_init, #endif /* TARGET_AARCH64 */ }, { From patchwork Tue Feb 4 00:22:32 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13958438 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 4E519C02192 for ; Tue, 4 Feb 2025 00:23:50 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tf6ig-0008Us-Bv; Mon, 03 Feb 2025 19:23: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 1tf6ic-0008SN-Pu for qemu-devel@nongnu.org; Mon, 03 Feb 2025 19:23:11 -0500 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tf6ib-00072x-DQ for qemu-devel@nongnu.org; Mon, 03 Feb 2025 19:23:10 -0500 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-436341f575fso58603925e9.1 for ; Mon, 03 Feb 2025 16:23:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738628586; x=1739233386; 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=qfi4/wO8QElC8iN/q4YQlATETcRX3ZkKT7f3+KqkqnA=; b=JWM6lXGOXl81vdJ8aDXvvO0pDlXKhB+lYKFOueVtl0gAhmarut90mKxz0+qCFbRwWy LbZ1pheEDK92E3Ut0RKm6nbAgQS3WJclkEuf+BlFiAE+S2yVndQfLFa2nS4NiLJgoPbl q6EGTKWi6DerIVvpcN5VWZwnqVoE1h6BnNnHOprIlp6sGeuGGuGX0br+ZyiXPctG5nEV i5pAMMcwbHj6d0U7iG1xmWUI49ZohcFg70h+KDqmNL+Iozx8Vrk/NWaw5z/73g+p5sgr GYUfQ1evr4+9ix6hTJB/z7eG5+QJXNn4L8g7RADNCu5Ey8W9uf5XO/FigJF2dd8IL2c0 Wyng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738628586; x=1739233386; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qfi4/wO8QElC8iN/q4YQlATETcRX3ZkKT7f3+KqkqnA=; b=Ueitm0ndDOn6oNeUtJ9HARuKmsxVnViGyJY3GTSZhmiRPjCPj/zAXvJTn9q9fAhzXw rSxHUCskEtcPilxW/YxX8+XcyiK4eqtfj8eqJcRRiGVtdgDdwE/kLUl//MzJvUfRt1SG MuAUcqw/uCnhYIL9ykaMCi2IpZKSpU41s6V/uXxjyL2isuXeNYRsGYLsG9SVYjuUrCtN eVxJoqZuO0ZEXoOsHJNkc44g53NpqrcgIr3LMvkteW8aPhqWPDAQRI+xqmYN5/AsSlOq SMJfRfkP1UQNYLtE2vNzQwz+NvrjWpzAaXTqYXqkXw8AqnKlfLeg5tYDmHoo1WBbIN8I BFQA== X-Gm-Message-State: AOJu0YycTiaEeVptKjmtYOmCIuMOndfFPFhIa/oaRiuy0jt6g0/1Ohs6 s1aOKF8ioLy2rT3jYRovUTkquDodz6N62kCo2qnbOHf/2ITJTJitzERmw6iXb445hz9zjRudPeI IVDA= X-Gm-Gg: ASbGncs8KFfywsgdYNfpEWUJn7eFgJK6p6Rj0DD6jT/tk0Pww1G346a1g8zC0yvEQ2u MkwiHc94D5MtgsLiXx75gjcVl1FF+70pCegukYiG1pkryt3tg3SdNJq7piS9gJGugEgZValZ7pG 5t/EmLO1HXupVY+8xfMF+BthggicsV9I0UylL8aQtaAOPcsBDv/u+5vYKAgpJvD3L1yKLxUEjed UPE/BiAKCeU9KTJ4yiubarxUg6DJXs8jUGPNTr+2h/kA61/AyFQICFZRulaipUWuzY4v8EnAp7a KZZ+ucbbsl5a9sj7nCa8xPyhaVrPC0Yqq48ntwPV0J+vZUZIfM1JrC9LayWaZ/I2Rg== X-Google-Smtp-Source: AGHT+IGwtOzAO4uoqkoycfQcATaNBoRbxxp90e6mhPZc1FH4wFDyWxxo51d3PVPylF8GUURb7ah17Q== X-Received: by 2002:a05:600c:5027:b0:434:a26c:8291 with SMTP id 5b1f17b1804b1-438dc40d36emr216466915e9.24.1738628586606; Mon, 03 Feb 2025 16:23:06 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-438dcc26d6fsm204375225e9.14.2025.02.03.16.23.04 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 03 Feb 2025 16:23:06 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?utf-8?q?Daniel_P_=2E_Berrang=C3=A9?= , BALATON Zoltan , Peter Maydell , Laurent Vivier , Ovchinnikov Vitalii , =?utf-8?q?Philippe_Ma?= =?utf-8?q?thieu-Daud=C3=A9?= , Jared Mauch , Fabiano Rosas , Paolo Bonzini , qemu-arm@nongnu.org, =?utf-8?q?Alex_Be?= =?utf-8?q?nn=C3=A9e?= , devel@lists.libvirt.org Subject: [PATCH v2 04/12] hw/arm/raspi: Pass board_rev as argument to raspi_base_machine_init() Date: Tue, 4 Feb 2025 01:22:32 +0100 Message-ID: <20250204002240.97830-5-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250204002240.97830-1-philmd@linaro.org> References: <20250204002240.97830-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::32b; envelope-from=philmd@linaro.org; helo=mail-wm1-x32b.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=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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Since callers already have reference to the RaspiBaseMachineClass, directly pass 'board_rev' as argument to raspi_base_machine_init(). Signed-off-by: Philippe Mathieu-Daudé --- include/hw/arm/raspi_platform.h | 2 +- hw/arm/raspi.c | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/include/hw/arm/raspi_platform.h b/include/hw/arm/raspi_platform.h index 7bc4807fa51..defb786153b 100644 --- a/include/hw/arm/raspi_platform.h +++ b/include/hw/arm/raspi_platform.h @@ -58,7 +58,7 @@ void raspi_machine_init(MachineState *machine); typedef struct BCM283XBaseState BCM283XBaseState; void raspi_base_machine_init(MachineState *machine, - BCM283XBaseState *soc); + BCM283XBaseState *soc, const uint32_t board_rev); void raspi_machine_class_common_init(MachineClass *mc, uint32_t board_rev); diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c index ef94d57dab5..571b50bef7e 100644 --- a/hw/arm/raspi.c +++ b/hw/arm/raspi.c @@ -254,10 +254,8 @@ static void setup_boot(MachineState *machine, ARMCPU *cpu, } void raspi_base_machine_init(MachineState *machine, - BCM283XBaseState *soc) + BCM283XBaseState *soc, const uint32_t board_rev) { - RaspiBaseMachineClass *mc = RASPI_BASE_MACHINE_GET_CLASS(machine); - uint32_t board_rev = mc->board_rev; uint64_t ram_size = board_ram_size(board_rev); uint32_t vcram_base, vcram_size; size_t boot_ram_size; @@ -384,7 +382,7 @@ static void raspi4b_machine_init(MachineState *machine) object_initialize_child(OBJECT(machine), "soc", soc, board_soc_type(mc->board_rev)); - raspi_base_machine_init(machine, BCM283X_BASE(soc)); + raspi_base_machine_init(machine, BCM283X_BASE(soc), mc->board_rev); } #endif /* TARGET_AARCH64 */ @@ -399,7 +397,7 @@ void raspi_machine_init(MachineState *machine) object_initialize_child(OBJECT(machine), "soc", soc, board_soc_type(mc->board_rev)); - raspi_base_machine_init(machine, BCM283X_BASE(soc)); + raspi_base_machine_init(machine, BCM283X_BASE(soc), mc->board_rev); } void raspi_machine_class_common_init(MachineClass *mc, From patchwork Tue Feb 4 00:22:33 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13958437 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B4615C02192 for ; Tue, 4 Feb 2025 00:23:28 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tf6ii-00007K-Ub; Mon, 03 Feb 2025 19:23: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 1tf6ii-00006G-0h for qemu-devel@nongnu.org; Mon, 03 Feb 2025 19:23:16 -0500 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tf6ig-00073j-Hl for qemu-devel@nongnu.org; Mon, 03 Feb 2025 19:23:15 -0500 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-436249df846so34231665e9.3 for ; Mon, 03 Feb 2025 16:23:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738628593; x=1739233393; 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=Xv7ipWNRcN94Y6xBwaNhx1NocVKRwkP8HpWZV1TV6v8=; b=YQb49VKlfFoQKQJXUnmUnn4SJYX6Yaef9mri4ah1sZ8d9AtIKnmsVwL3earvL1NtdJ ZMWNcUzRtg4L1NwCp91QA7l0+tCt89Zc2r+Zb71HUEqzuIGGdT+7c0z+vDQxFIvtQ2Am QvHzVB3E2/UqCeZ6hjnOr+QPrMz41ZZfzpLQaibTIbnKLCxx1ddWoQ/JJs8SFuQcsfrr fiu0VGMLetMVAVbOOgsBkwVDqoS4g8N1ol5kYz5FmOD1JNGxzL708zxfMjKm3bfQ9R1K pWfvki+bqHlf8knQkOxaaCw86XzBklpup4vZA4w8Z/QyD827EoYawia0qdF1ZkSBGVwN i5UQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738628593; x=1739233393; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Xv7ipWNRcN94Y6xBwaNhx1NocVKRwkP8HpWZV1TV6v8=; b=CGl10mmoje+UukE3lH4JKJ933sNlbM9uE1lZfPkUvJ423udVH19fYoT1Feaa7xpMuZ ru1YZDr7BIAy9AIOa6+za7/LYGNAuca/JOFXe5CHAUy/uFrUvjBIyQToR6wtlXUUNljq KtpNsulLIqgnOi+8dYaZbwdexS1AKp7UqaQG9wJMOEU6eHlVeDPye44Py904uVw0eiS6 B8PLe4gXkP/3hLkJnmEeYf/7GRUkFDAKer9wbci3fL9QfFwgT5dDBtkIY91XCIWhs+y5 Vq+zR+o+wtLnA5nLASjsZS9Y+og6HfRCKkmI3Evhn7B/VfpA9c6Etz4i4Tl2WuA+V/hj SAww== X-Gm-Message-State: AOJu0Yxc/fsVgA1ZeNvi0o6MeRYe31Hd5FyQYrBHFWPaiLLv+fohIxo3 818bisE1Zof9M2AKwg4vRLobwAtOx+jiJGIjmKQknpytgI53cgFg5SGQfEGp+Uv8BdOr4iVb3s7 nz+g= X-Gm-Gg: ASbGncswBgNrad3OaDl6/KXKd+tONJm5jpQ4dYxlsktjSfXv+4WQKhYf7yudKzGW/VF TmbN9DSRQ9VxtgeGbVqDbTkjYgqkjNG3VSb86uldRjaPMlYjPDu7UYUaXE097eBVHzw5hJkxt57 ZIdPUd2CDb8bWDucf1Vg0caxruziGwBTf7azoY0dMA/4A6RtpXZNuLAgy+GN4P6etq67EEbw4Nh Dr6ZBzImp8L3s2UO2N2ZJnnkQwXbrfvO98XmCjIM+arhPH4W6ypns0nosXFRRIhPAyYdMlW00eJ wv+1e2JZhEY3poxzLf9JI4zz4lmkgvHMKJZUZr8avxIGWL3mrWW/zBUE7G4S42O4Tw== X-Google-Smtp-Source: AGHT+IEShj5+5fuL+Ca7d6FxwDebMD6TRS7A+W6gouISzty2rbwluQWaZ7ht+ESAAxKMO6d+ZuQ0Ew== X-Received: by 2002:a05:600c:470e:b0:431:52f5:f48d with SMTP id 5b1f17b1804b1-438dc436f30mr214083465e9.31.1738628592858; Mon, 03 Feb 2025 16:23:12 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4390692a4bdsm3295685e9.0.2025.02.03.16.23.10 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 03 Feb 2025 16:23:11 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?utf-8?q?Daniel_P_=2E_Berrang=C3=A9?= , BALATON Zoltan , Peter Maydell , Laurent Vivier , Ovchinnikov Vitalii , =?utf-8?q?Philippe_Ma?= =?utf-8?q?thieu-Daud=C3=A9?= , Jared Mauch , Fabiano Rosas , Paolo Bonzini , qemu-arm@nongnu.org, =?utf-8?q?Alex_Be?= =?utf-8?q?nn=C3=A9e?= , devel@lists.libvirt.org Subject: [PATCH v2 05/12] hw/arm/raspi: Consider processor id in types[] array Date: Tue, 4 Feb 2025 01:22:33 +0100 Message-ID: <20250204002240.97830-6-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250204002240.97830-1-philmd@linaro.org> References: <20250204002240.97830-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::32f; envelope-from=philmd@linaro.org; helo=mail-wm1-x32f.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=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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Expand the current type2model array to include the processor id. Since the BCM2838 is indistinctly used as BCM2711 (within the Linux community), add it as alias in RaspiProcessorId. Signed-off-by: Philippe Mathieu-Daudé --- hw/arm/raspi.c | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c index 571b50bef7e..1a6a1f8ff22 100644 --- a/hw/arm/raspi.c +++ b/hw/arm/raspi.c @@ -70,6 +70,7 @@ typedef enum RaspiProcessorId { PROCESSOR_ID_BCM2836 = 1, PROCESSOR_ID_BCM2837 = 2, PROCESSOR_ID_BCM2838 = 3, + PROCESSOR_ID_BCM2711 = 3, } RaspiProcessorId; static const struct { @@ -82,6 +83,30 @@ static const struct { [PROCESSOR_ID_BCM2838] = {TYPE_BCM2838, BCM283X_NCPUS}, }; +static const struct { + RaspiProcessorId proc_id; + const char *model; +} types[] = { + {PROCESSOR_ID_BCM2835, "A"}, + {PROCESSOR_ID_BCM2835, "B"}, + {PROCESSOR_ID_BCM2835, "A+"}, + {PROCESSOR_ID_BCM2835, "B+"}, + {PROCESSOR_ID_BCM2836, "2B"}, + { }, + {PROCESSOR_ID_BCM2835, "CM1"}, + { }, + {PROCESSOR_ID_BCM2837, "3B"}, + {PROCESSOR_ID_BCM2835, "Zero"}, + {PROCESSOR_ID_BCM2837, "CM3"}, + { }, + {PROCESSOR_ID_BCM2835, "ZeroW"}, + {PROCESSOR_ID_BCM2837, "3B+"}, + {PROCESSOR_ID_BCM2837, "3A+"}, + { }, + {PROCESSOR_ID_BCM2837, "CM3+"}, + {PROCESSOR_ID_BCM2711, "4B"}, +}; + uint64_t board_ram_size(uint32_t board_rev) { assert(FIELD_EX32(board_rev, REV_CODE, STYLE)); /* Only new style */ @@ -110,16 +135,12 @@ static int cores_count(uint32_t board_rev) static const char *board_type(uint32_t board_rev) { - static const char *types[] = { - "A", "B", "A+", "B+", "2B", "Alpha", "CM1", NULL, "3B", "Zero", - "CM3", NULL, "Zero W", "3B+", "3A+", NULL, "CM3+", "4B", - }; assert(FIELD_EX32(board_rev, REV_CODE, STYLE)); /* Only new style */ int bt = FIELD_EX32(board_rev, REV_CODE, TYPE); - if (bt >= ARRAY_SIZE(types) || !types[bt]) { + if (bt >= ARRAY_SIZE(types) || !types[bt].model) { return "Unknown"; } - return types[bt]; + return types[bt].model; } static void write_smpboot(ARMCPU *cpu, const struct arm_boot_info *info) From patchwork Tue Feb 4 00:22:34 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13958441 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 938C1C02192 for ; Tue, 4 Feb 2025 00:24:07 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tf6ir-0000Ec-94; Mon, 03 Feb 2025 19:23: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 1tf6io-00009w-Et for qemu-devel@nongnu.org; Mon, 03 Feb 2025 19:23:22 -0500 Received: from mail-wr1-x434.google.com ([2a00:1450:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tf6im-00074i-Uo for qemu-devel@nongnu.org; Mon, 03 Feb 2025 19:23:22 -0500 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-385e27c75f4so4146668f8f.2 for ; Mon, 03 Feb 2025 16:23:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738628599; x=1739233399; 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=7ETuzJ6SLiQ/NiVSSl3xkPrhN42XnijAgudKaENxFFg=; b=hhG/7OZe/znQ5f1S7qyAWD4XACKBwXpdTucUHCSiGpEVqW751yn5jhTti6J9iAkoDc 3luef1D8FvsoEy9AMlzbcqxPZW4mbHRhg2WiatHqlsYa9iVsjQcIapq2pMEGiQ9RRtID UwiKYHj0yocvH5h2V1X7ypAB1K0Yu4YDuXthYw7zfXtUqjJjY3NnsFQXS3oB3MDFvZgd lGZ4OLOvNlSzGLkrQ4lMz/ZcOgBTapg/N3nYHQLWex1QYEBe0KF9tvnhpuQFB9c9sq5p Y5bUNwHXcw3Ohtj/ALGd7De26MHytbcpQjroK7L7cmZmfTU5EsTp4IVlRHrabqzqQI+E 6gaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738628599; x=1739233399; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7ETuzJ6SLiQ/NiVSSl3xkPrhN42XnijAgudKaENxFFg=; b=rmNu/j05tB9hwklJMWG9ttgPBslnPx4a2uzGSvZynawkgNTehjjf8AfTB1thXpwYMS fuN2rG2ko27KWLzkxItTzEFG9BI99mAPoqeTcGDwls8WhV4A+MGYI9z2XrIrBlZcyrEr RwU0sdTf79S1xbQdSDR3WmEjRqmg8fTaCHtXuOVZN7W8tFsa1PkrJA4i7Q213YMuG+b4 yuzgdWn7f1nQOPnJnOuX0NvSuDKVVmykjJ32Ci1hh9T+dWVdpTjD7wRF6XYooNBNqx2D qdaLUv7MW+BAkksvy+3xj+Sztd4CYuAaKZlcwIjMMPS6WE3DwJYnVAAtazo1dYiPbZGO 4feg== X-Gm-Message-State: AOJu0YxmhFKNvzGf/qWtAI/rUDTLYJXgEHmO4ZS8/uZJuVcpgLUa0BNR A63XEmxN4UuN6gWCdky5D91oNLkEHCIFCoLMm2mMvCEv2XGEvjcjYqBxh0G+DBGRWl2EZUt9GiL uArQ= X-Gm-Gg: ASbGnctFPru9CRxPfUUC14hACHLwL+qRfz/Epjmx0n3jNeBNt11x+7iD0NfT/cm5cQc sEubmFAHAjU5raKtzpa9RGHDEbYr/qqnvJcgihF4tJYkL451eSXGCvud/Sc7blNqBCU9MSvAQ2Z q6b+v5/o7o/9QW8qg+xfWI+lM+7gg3YinpGLZmw33B8CzLZL64phj/Za0PPzmiaSxDYW/KEYAxw owL/YDgHO8xo5Dherd28hA3MKyT1z51aX/HuTHC1Kz8we26TPkgW7/NqUZDc2JtqP6AQpvRtj1K gDdLa5YorGyqtEp827Bz1WfquaBHc9g+A22ebQIXUBUkNM5/qc7JTEzCvEBW7y6y5w== X-Google-Smtp-Source: AGHT+IE5eacu+tscRKXYBvGC7D2HiLBrNH0amLlpLTUZJ+7YJSAfPVR1pLS83k8+E9AGhYYQnO6mrQ== X-Received: by 2002:a5d:5988:0:b0:385:fd07:8616 with SMTP id ffacd0b85a97d-38c5167d80bmr20625537f8f.0.1738628599192; Mon, 03 Feb 2025 16:23:19 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-438e245efbcsm168179175e9.33.2025.02.03.16.23.16 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 03 Feb 2025 16:23:18 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?utf-8?q?Daniel_P_=2E_Berrang=C3=A9?= , BALATON Zoltan , Peter Maydell , Laurent Vivier , Ovchinnikov Vitalii , =?utf-8?q?Philippe_Ma?= =?utf-8?q?thieu-Daud=C3=A9?= , Jared Mauch , Fabiano Rosas , Paolo Bonzini , qemu-arm@nongnu.org, =?utf-8?q?Alex_Be?= =?utf-8?q?nn=C3=A9e?= , devel@lists.libvirt.org Subject: [PATCH v2 06/12] hw/arm/raspi: Consider network interface for B models Date: Tue, 4 Feb 2025 01:22:34 +0100 Message-ID: <20250204002240.97830-7-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250204002240.97830-1-philmd@linaro.org> References: <20250204002240.97830-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::434; envelope-from=philmd@linaro.org; helo=mail-wr1-x434.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=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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Raspberry Pi 'B' models have an ethernet chipset (the LAN9512). Since we don't yet model it, add a /* TODO */ comment. Signed-off-by: Philippe Mathieu-Daudé --- hw/arm/raspi.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c index 1a6a1f8ff22..68332fba027 100644 --- a/hw/arm/raspi.c +++ b/hw/arm/raspi.c @@ -143,6 +143,16 @@ static const char *board_type(uint32_t board_rev) return types[bt].model; } +static bool is_model_b(uint32_t board_rev) +{ + return !!strchr(board_type(board_rev), 'B'); +} + +static bool has_enet(uint32_t board_rev) +{ + return is_model_b(board_rev); +} + static void write_smpboot(ARMCPU *cpu, const struct arm_boot_info *info) { static const ARMInsnFixup smpboot[] = { @@ -304,6 +314,10 @@ void raspi_base_machine_init(MachineState *machine, machine->kernel_cmdline, &error_abort); qdev_realize(DEVICE(soc), NULL, &error_fatal); + if (has_enet(board_rev)) { + /* TODO: model LAN9512 and wire over USB2 */ + } + /* Create and plug in the SD cards */ di = drive_get(IF_SD, 0, 0); blk = di ? blk_by_legacy_dinfo(di) : NULL; From patchwork Tue Feb 4 00:22:35 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13958439 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 9B123C02192 for ; Tue, 4 Feb 2025 00:23:53 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tf6j5-0000Qk-NF; Mon, 03 Feb 2025 19:23: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 1tf6iv-0000Nt-SG for qemu-devel@nongnu.org; Mon, 03 Feb 2025 19:23:30 -0500 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tf6iu-00075R-17 for qemu-devel@nongnu.org; Mon, 03 Feb 2025 19:23:29 -0500 Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-38632b8ae71so4204936f8f.0 for ; Mon, 03 Feb 2025 16:23:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738628605; x=1739233405; 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=WpPlnEnDWFC/Ik2Y/thdSUt8XZtZU/cwYbfSseA7YMQ=; b=eJoy79M816f9ircBf3Q3bwRnl1uLFR9VVOFE4GblqE13ZQRmOzZ60qLif/FdUcuLD6 /pnoYVgqsTRJVGgKAVovZavh84CyrRDxtnWxV+ze6nHyQE8l9g4vWtZqCP0VUm7f/KQC t6HfUdH+pS89U4xxq2BsJLHJSomXZLE8kaHBqSN0IVI1gwtib70zhATEwelDRDydAZLp grpeaGXA2EeEvzqFirHVzmcRKnseC3fOoGz+LJHf4PnmGL+XHIBU5UgSW+swmGP+5V7g d+1oKB+YVXrwUUx6LlBh9sbHki6ZnlUk6ybarqzhmJN62LTsPlHTdccUFx6NufB83+OV Ac9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738628605; x=1739233405; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=WpPlnEnDWFC/Ik2Y/thdSUt8XZtZU/cwYbfSseA7YMQ=; b=Ua8/WbP5VNYiRIg+PD4eGv+hdDwnuR/kcnbi2hnRZ+cKfXjFRmcdf22Z5RKO+Ua5OS LRwIAMJSWOwfw9YV9JeByBjIhWlch13/Yu4+i2NeXD2j47rGo8v1nD4i8WtiuIAIl3hF kccTzUQ4IEfq6etEgELN/S5TpqjLD1Iq5rp3ivgp8CUpyogudaaYHRN5A5PKXSf8XZpZ T6b7QrPxQW+WkfMYL4+z+NFhaLunl1kSEm2kkcUCT7zOwRWVrFixtN4rXWUHWQG5iNiU WKQgH5P1MMtwuXjUTvGQYpZK70Sg08p/tAkCR7usYAyFQ9xd6sT+RyQAOpPMrkz5LuzF zqzw== X-Gm-Message-State: AOJu0Yz3ipm3J2MLILp0rljcYx/FG4NLr4u0wOe92c66ViTW7ZkLfsEt AZeK0n8c/H+TQLx/x93UuJgwAewd+mCduTMIxR+GStxacSM42iVr9eGXHUlPrlTjq5Zzv664adO 1G9U= X-Gm-Gg: ASbGncvdAOP0XKLprSVrkc5SIvBX8IbMEdv9bgeCMofuiPZEr6Py/gPMBnlFFETyLeR TBA0bHI6WaLScIODHFqJnk6ajoRSfn6sHox4fufPkcBc6jnu3aZfMyFBrJIr8rWHzRJwmUgHaDV TJjuaTbTTfejOdVAuYzFb3ucsY02fYoRrq5r8NIpbgdQILFYwt25wQVs3d719AnI0RfKuW3533V bvGUG01RboT+2mPE3kGHK2qpuBx5o7KHczjDzawWT4rdVN6F8zdE/1MwMUxPYj87NjFQWF+IPFM Pgiv3HH0HRpNhJ4Z6wJ5gTEMwlc/oU946aPogKmC2SzEb5Uo6K8/HBRprMcXsgjF5g== X-Google-Smtp-Source: AGHT+IFXxjdiX1jXLTjFtTEgAoBvG3NXn1OkUcQYFs5o3H1ayhaOYKZLsiFB8Nd03rQGcAki3/kgcw== X-Received: by 2002:a5d:6d86:0:b0:385:df43:2179 with SMTP id ffacd0b85a97d-38c51967fd9mr16644540f8f.17.1738628605611; Mon, 03 Feb 2025 16:23:25 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-438e245f5a5sm175171855e9.40.2025.02.03.16.23.23 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 03 Feb 2025 16:23:24 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?utf-8?q?Daniel_P_=2E_Berrang=C3=A9?= , BALATON Zoltan , Peter Maydell , Laurent Vivier , Ovchinnikov Vitalii , =?utf-8?q?Philippe_Ma?= =?utf-8?q?thieu-Daud=C3=A9?= , Jared Mauch , Fabiano Rosas , Paolo Bonzini , qemu-arm@nongnu.org, =?utf-8?q?Alex_Be?= =?utf-8?q?nn=C3=A9e?= , devel@lists.libvirt.org Subject: [PATCH v2 07/12] hw/arm/raspi: Check ramsize is within chipset aperture Date: Tue, 4 Feb 2025 01:22:35 +0100 Message-ID: <20250204002240.97830-8-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250204002240.97830-1-philmd@linaro.org> References: <20250204002240.97830-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42d; envelope-from=philmd@linaro.org; helo=mail-wr1-x42d.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=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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Add the 'max_ramsize' field to the soc_property[] array, corresponding to the maximum DRAM size a SoC can map. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Peter Maydell --- hw/arm/raspi.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c index 68332fba027..d44277001ee 100644 --- a/hw/arm/raspi.c +++ b/hw/arm/raspi.c @@ -76,11 +76,12 @@ typedef enum RaspiProcessorId { static const struct { const char *type; int cores_count; + uint64_t max_ramsize; } soc_property[] = { - [PROCESSOR_ID_BCM2835] = {TYPE_BCM2835, 1}, - [PROCESSOR_ID_BCM2836] = {TYPE_BCM2836, BCM283X_NCPUS}, - [PROCESSOR_ID_BCM2837] = {TYPE_BCM2837, BCM283X_NCPUS}, - [PROCESSOR_ID_BCM2838] = {TYPE_BCM2838, BCM283X_NCPUS}, + [PROCESSOR_ID_BCM2835] = {TYPE_BCM2835, 1, 512 * MiB}, + [PROCESSOR_ID_BCM2836] = {TYPE_BCM2836, BCM283X_NCPUS, 1 * GiB}, + [PROCESSOR_ID_BCM2837] = {TYPE_BCM2837, BCM283X_NCPUS, 1 * GiB}, + [PROCESSOR_ID_BCM2838] = {TYPE_BCM2838, BCM283X_NCPUS, 8 * GiB}, }; static const struct { @@ -133,6 +134,11 @@ static int cores_count(uint32_t board_rev) return soc_property[board_processor_id(board_rev)].cores_count; } +static uint64_t ramsize_max(uint32_t board_rev) +{ + return soc_property[board_processor_id(board_rev)].max_ramsize; +} + static const char *board_type(uint32_t board_rev) { assert(FIELD_EX32(board_rev, REV_CODE, STYLE)); /* Only new style */ @@ -294,6 +300,7 @@ void raspi_base_machine_init(MachineState *machine, BlockBackend *blk; BusState *bus; DeviceState *carddev; + uint64_t max_ramsize; if (machine->ram_size != ram_size) { char *size_str = size_to_str(ram_size); @@ -301,6 +308,12 @@ void raspi_base_machine_init(MachineState *machine, g_free(size_str); exit(1); } + max_ramsize = ramsize_max(board_rev); + if (ram_size > max_ramsize) { + g_autofree char *max_ramsize_str = size_to_str(max_ramsize); + error_report("At most %s of RAM can be used", max_ramsize_str); + exit(1); + } /* FIXME: Remove when we have custom CPU address space support */ memory_region_add_subregion_overlap(get_system_memory(), 0, From patchwork Tue Feb 4 00:22:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13958443 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 09DE9C02193 for ; Tue, 4 Feb 2025 00:24:36 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tf6jE-0000ep-Id; Mon, 03 Feb 2025 19:23: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 1tf6j2-0000Q3-6f for qemu-devel@nongnu.org; Mon, 03 Feb 2025 19:23:37 -0500 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tf6iy-00075x-Qa for qemu-devel@nongnu.org; Mon, 03 Feb 2025 19:23:35 -0500 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-43675b1155bso58290005e9.2 for ; Mon, 03 Feb 2025 16:23:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738628611; x=1739233411; 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=pIv2DBodYYA0dRZkz56J6dhWz5LDF9EMp1+oiy+F/vk=; b=iQEkpkLUfGOwQ0mNlpZyUhmr3iT3iHZ78XK987RxNiC6EVk4Y5NDkA0mKxj1a/DRm8 7ea5837C2AMOddf+DsKT2NvZqDhI8fnWdl6k/K8Vhye6LYZBaqtbHO8SKFlacsGsUZJZ RonXuvnHR0TR9tFW9F4Fum5eiWsfuv+5Vg79PecKGddF28qmpWmFAIBDvvSiirWx2Pqx WD/NrZ+R6LjBWb4xZAxNrQPaEEF3ilxysHID7O3SBj+RxLY7X9M0uQymP1Ye9Rt2S9b3 i0X9TfFcrY0zUUsA5FpKpA01vr3MJ9syyqWFwP+PScsp7j33NN0x6gSjC85paWCGCV04 TM+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738628611; x=1739233411; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pIv2DBodYYA0dRZkz56J6dhWz5LDF9EMp1+oiy+F/vk=; b=M+4YyrHzulpeeVSGuIkV4YkaoPqw0PeAxTQfnSMkBJpLQ5tQQGZ3F1chwKPIsgTCZH is4dfe5TuRYGCBXgtQnndZXgdoh14/IpetmdHCr8zG7Z2/YojYlfp8aYSq+S/aioatm2 MNyndur3ClckBtHkgct2GLjFfIc5WoW3uZZ3bGQufMAXATqu9bdXIxJgFb1/r8EuoRW9 BKPjxVyqb4obK7VG6/umJ/FNUijHXOEg1h9NJjMCqPDVQWCEopbrCXRJ/rL88WTw3433 wqmFMaXFAVdTOa2SLOF0UTfIXI+niHT3QlhfBHJeI14urADnP+5UvKp/vJF7Aua7MsBA 1f4Q== X-Gm-Message-State: AOJu0YzQX3kjFKue5mfi6Y7GyNE1rcqS61sjJuiZWaA08Lmu7CSkMFjf KC3Yf8jEfj1gmaeu3bkloshrOYk7zRR+kqZrGQ9/3M/xRAcQe0YNhFgMAhkLs5shGQ6p6CltM3S +B4g= X-Gm-Gg: ASbGncuM1ISgyz3uIUaOfoTLZzy+4DTg+vGQ0K8AEN96rOQpXDh3ewvZHWHyfTGD+NE Pkm2KBZu4+KR2jL9IxV2KyEHGQ+r4zJzC8JTIg71mi1Baw/jfFSb+zhB5LTUxuyLZAfR+bt1kcP dcjMj5LeosCMBIaq/P9eOQIeOlMb0mgH2ajC+aC62Xln3senNmAJcwh+kGD4lFmAceO5oJb4NLS mjt6BdC1DP+bFcqJahtJ+Vfsb7BGaVK29fwusVBQkHqCxbeO1+hB+Z2FqADlQhaYKLg/kdkRrPk ENIxrcp3ScOG51gzxZAiQ5tBxx3u1vX4pOi2D9lBhXc6T4ktOtlTFCyyt+PfGG5qyw== X-Google-Smtp-Source: AGHT+IFOUPAuBUePYklyiQuwsGTbYNQ+OFZucNwNkREnXsqpf8qQTNiP7f8PImZO9S8kkCWx2U14VA== X-Received: by 2002:a05:600c:1ca3:b0:438:a240:c55 with SMTP id 5b1f17b1804b1-438e70d1b20mr112546225e9.1.1738628611126; Mon, 03 Feb 2025 16:23:31 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-438dcc12f88sm206385815e9.2.2025.02.03.16.23.29 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 03 Feb 2025 16:23:29 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?utf-8?q?Daniel_P_=2E_Berrang=C3=A9?= , BALATON Zoltan , Peter Maydell , Laurent Vivier , Ovchinnikov Vitalii , =?utf-8?q?Philippe_Ma?= =?utf-8?q?thieu-Daud=C3=A9?= , Jared Mauch , Fabiano Rosas , Paolo Bonzini , qemu-arm@nongnu.org, =?utf-8?q?Alex_Be?= =?utf-8?q?nn=C3=A9e?= , devel@lists.libvirt.org Subject: [PATCH v2 08/12] hw/arm/raspi: Introduce generic Raspberry Pi machine Date: Tue, 4 Feb 2025 01:22:36 +0100 Message-ID: <20250204002240.97830-9-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250204002240.97830-1-philmd@linaro.org> References: <20250204002240.97830-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::32c; envelope-from=philmd@linaro.org; helo=mail-wm1-x32c.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=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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org The generic 'raspi' machine takes a 'model' argument and create the machine associated with the model, with the RAM size requested (or default to the minimum of 256MB if not precised). Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2797 Signed-off-by: Philippe Mathieu-Daudé --- include/hw/arm/raspi_platform.h | 3 +- hw/arm/raspi.c | 127 ++++++++++++++++++++++++++++---- 2 files changed, 115 insertions(+), 15 deletions(-) diff --git a/include/hw/arm/raspi_platform.h b/include/hw/arm/raspi_platform.h index defb786153b..14cb91e153c 100644 --- a/include/hw/arm/raspi_platform.h +++ b/include/hw/arm/raspi_platform.h @@ -41,7 +41,8 @@ OBJECT_DECLARE_TYPE(RaspiBaseMachineState, RaspiBaseMachineClass, struct RaspiBaseMachineState { /*< private >*/ MachineState parent_obj; - /*< public >*/ + + uint32_t board_rev; struct arm_boot_info binfo; }; diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c index d44277001ee..1dc41701efe 100644 --- a/hw/arm/raspi.c +++ b/hw/arm/raspi.c @@ -300,20 +300,6 @@ void raspi_base_machine_init(MachineState *machine, BlockBackend *blk; BusState *bus; DeviceState *carddev; - uint64_t max_ramsize; - - if (machine->ram_size != ram_size) { - char *size_str = size_to_str(ram_size); - error_report("Invalid RAM size, should be %s", size_str); - g_free(size_str); - exit(1); - } - max_ramsize = ramsize_max(board_rev); - if (ram_size > max_ramsize) { - g_autofree char *max_ramsize_str = size_to_str(max_ramsize); - error_report("At most %s of RAM can be used", max_ramsize_str); - exit(1); - } /* FIXME: Remove when we have custom CPU address space support */ memory_region_add_subregion_overlap(get_system_memory(), 0, @@ -448,6 +434,115 @@ void raspi_machine_init(MachineState *machine) raspi_base_machine_init(machine, BCM283X_BASE(soc), mc->board_rev); } +static void raspi_generic_machine_init(MachineState *ms) +{ + RaspiMachineState *s = RASPI_MACHINE(ms); + RaspiBaseMachineState *s_base = RASPI_BASE_MACHINE(ms); + uint32_t board_rev = s_base->board_rev; + const char *soc_type = board_soc_type(board_rev); + BCM283XBaseState *bsoc; + uint64_t ram_size; + uint64_t max_ramsize; + + if (!board_rev) { + error_report("Missing model"); + exit(1); + } + + ram_size = ROUND_UP(ms->ram_size, 256 * MiB); + if (ram_size != ms->ram_size) { + g_autofree char *ram_size_str = size_to_str(ms->ram_size); + g_autofree char *rounded_size_str = size_to_str(ram_size); + warn_report("Invalid RAM size %s, rounding to %s", + ram_size_str, rounded_size_str); + } + max_ramsize = ramsize_max(board_rev); + if (ram_size > max_ramsize) { + g_autofree char *max_ramsize_str = size_to_str(max_ramsize); + error_report("At most %s of RAM can be used with BCM%s", + max_ramsize_str, soc_type + 3); + exit(1); + } + board_rev = FIELD_DP32(board_rev, REV_CODE, MEMORY_SIZE, + ctz64(ms->ram_size) - 28); + + ms->ram = g_new(MemoryRegion, 1); + memory_region_init(ms->ram, OBJECT(ms), "DRAM", ram_size); + + if (board_processor_id(board_rev) == PROCESSOR_ID_BCM2838) { + BCM2838State *soc = &s->soc4; + bsoc = BCM283X_BASE(soc); + object_initialize_child(OBJECT(ms), "soc", soc, soc_type); + } else { + BCM283XState *soc = &s->soc; + bsoc = BCM283X_BASE(soc); + object_initialize_child(OBJECT(ms), "soc", soc, soc_type); + } + raspi_base_machine_init(ms, bsoc, board_rev); +} + +static void raspi_update_board_rev(RaspiBaseMachineState *s) +{ + MachineState *ms = MACHINE(s); + RaspiProcessorId proc; + unsigned model_index; + + s->board_rev = FIELD_DP32(s->board_rev, REV_CODE, STYLE, 1); + + model_index = FIELD_EX32(s->board_rev, REV_CODE, TYPE); + proc = types[model_index].proc_id; + s->board_rev = FIELD_DP32(s->board_rev, REV_CODE, PROCESSOR, proc); + + ms->smp.max_cpus = soc_property[proc].cores_count; +} + +static void raspi_set_machine_model(Object *obj, const char *value, Error **errp) +{ + for (unsigned i = 0; i < ARRAY_SIZE(types); i++) { + if (types[i].model && !strcmp(value, types[i].model)) { + RaspiBaseMachineState *s = RASPI_BASE_MACHINE(obj); + + s->board_rev = FIELD_DP32(s->board_rev, REV_CODE, TYPE, i); + + return raspi_update_board_rev(s); + } + } + error_setg(errp, "Invalid model"); +} + +static char *raspi_get_machine_model(Object *obj, Error **errp) +{ + RaspiBaseMachineState *s = RASPI_BASE_MACHINE(obj); + + return g_strdup(types[FIELD_EX32(s->board_rev, REV_CODE, TYPE)].model); +} + +static void raspi_generic_machine_class_init(ObjectClass *oc, void *data) +{ + MachineClass *mc = MACHINE_CLASS(oc); + RaspiBaseMachineClass *rmc = RASPI_BASE_MACHINE_CLASS(oc); + + rmc->board_rev = FIELD_DP32(0, REV_CODE, STYLE, 1); + + mc->desc = "Raspberry Pi"; + mc->block_default_type = IF_SD; + mc->no_parallel = 1; + mc->no_floppy = 1; + mc->no_cdrom = 1; + mc->default_cpus = 1; + mc->min_cpus = 1; + mc->max_cpus = 4; + mc->default_ram_size = 0; + mc->default_ram_id = "DRAM"; + mc->init = raspi_generic_machine_init; + + object_class_property_add_str(oc, "model", + raspi_get_machine_model, + raspi_set_machine_model); + object_class_property_set_description(oc, "model", "Set machine model."); +}; + + void raspi_machine_class_common_init(MachineClass *mc, uint32_t board_rev) { @@ -533,6 +628,10 @@ static void raspi4b_machine_class_init(ObjectClass *oc, void *data) static const TypeInfo raspi_machine_types[] = { { + .name = MACHINE_TYPE_NAME("raspi"), + .parent = TYPE_RASPI_MACHINE, + .class_init = raspi_generic_machine_class_init, + }, { .name = MACHINE_TYPE_NAME("raspi0"), .parent = TYPE_RASPI_MACHINE, .class_init = raspi0_machine_class_init, From patchwork Tue Feb 4 00:22:37 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13958446 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A3CE2C02192 for ; Tue, 4 Feb 2025 00:24:55 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tf6jM-0001E4-KT; Mon, 03 Feb 2025 19:23: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 1tf6j5-0000Tp-P5 for qemu-devel@nongnu.org; Mon, 03 Feb 2025 19:23:43 -0500 Received: from mail-wr1-x42e.google.com ([2a00:1450:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tf6j3-00076t-IE for qemu-devel@nongnu.org; Mon, 03 Feb 2025 19:23:39 -0500 Received: by mail-wr1-x42e.google.com with SMTP id ffacd0b85a97d-385e3621518so2398786f8f.1 for ; Mon, 03 Feb 2025 16:23:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738628616; x=1739233416; 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=n6QDpRJ2FlSdxPQFjP8LoBbvp72nwEtWebL/3euq8gE=; b=PGsutE7YGyahRu/ZrVam/1rxYYq9dLJt5zsalWdRXju2kb9LzvJCNCzEbpX2gmyytM boJ/QXos+VvC1tm0fbYG0H1JernPboafglziiqWbhrQ6cNG3a8/A2ilR6jMjLVc9TP40 VZcHYJ3lb0Lg53KY263Ua4PB4Tdeecfd6Rb+yorflLMgpUue74K/OlrpKyyRryG507/e W8CaFeip0f0Mb+GbUeoMxglG9yYa/P3qqLblujIolP+i8FKGGFyXfNep5nvNSkwkkL45 /sj6aInoevmQSGyw5HYs46B4vldQnwvfiMP+dHT6CriBzZ4fvQUus7iQGM5jD+CLOfX+ NZWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738628616; x=1739233416; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=n6QDpRJ2FlSdxPQFjP8LoBbvp72nwEtWebL/3euq8gE=; b=Xxb761hJKIIM1HI6/zH6TLd9yIS2HCOvVNH3EfcPzdbqUMZ4ugPsk8HEkAvYIWseQY 9vxcy2j5TeF43VUkau+HOUMTeWQWtNcxOLUbBNsIhzPWDs5iNwUfWyU1qiDACZ+wxFCn 2b8/DaGhMV3R8N4qtbuhB0tpsETgbcFWnB7sN4ejXqPHvAilZ63BPW3WljL+Ko1vAM3K j05xictjcgrr5Yg0bmZKhzwASfOMGIwY/ekayuiKLD9LeimeBwX+p9g3aUWd8nKDougd +oZjI4o/0pwfvk1OBUjc+rjmfK7wzzYeefaL9l3bDAeO19I5yruH7epQ6EZBUtjrPCyI l4BQ== X-Gm-Message-State: AOJu0Ywd3kSoKQmk8EpCE+Oy9xgufQ2rJR4iLg5BGxx9j5twmote3Xpt /japq2LZ8puMmc9FUs+/u+9Btq/F4TDS17RUzVtZfhOSwuArlV6ngbnhtphlrLK750+MwfgLwM3 aeyc= X-Gm-Gg: ASbGnctpGQH5tLEkZCU9BW4DHZJ1xWr/Lng+gvCjYICkiSWUf1WrSifBu1szPNftlkJ GKO5hhogCSsBgZuWaEaYK3zvdrmDDELPoiQyz/KHYa8qEopgsIrrugMunX+QodoStXjoRDV5+pt tg5HlzYcdrBhSdNTl60fR3LiE9aD5Msd3aH8JgUtEthTNZsaLl/OdVEzM/K2J8ykd53wy6Ti/sN Bg9v7N2+Lc12KMdcwKCVRM7DQ3+GtxfTSafl8jQpruWG/qOcRbznQV9Ju/057yBhdEwee09i4Cd wo8SeO1vxvxELGs5YlEWnAaPOXckwtrOrH4sKivquqiuWdSdIUYXuB4U1gJG1yPhfg== X-Google-Smtp-Source: AGHT+IGvLfzTEpc1pBKpxxVeRx8k046du4w0Is2O3ClvlntW/6wwoH7wrL1zHpqYqwZUy/jy/wfwHw== X-Received: by 2002:adf:f4d2:0:b0:382:5aae:87c7 with SMTP id ffacd0b85a97d-38c51b5d898mr15999565f8f.31.1738628615886; Mon, 03 Feb 2025 16:23:35 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-438e244ecd6sm175409535e9.28.2025.02.03.16.23.34 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 03 Feb 2025 16:23:35 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?utf-8?q?Daniel_P_=2E_Berrang=C3=A9?= , BALATON Zoltan , Peter Maydell , Laurent Vivier , Ovchinnikov Vitalii , =?utf-8?q?Philippe_Ma?= =?utf-8?q?thieu-Daud=C3=A9?= , Jared Mauch , Fabiano Rosas , Paolo Bonzini , qemu-arm@nongnu.org, =?utf-8?q?Alex_Be?= =?utf-8?q?nn=C3=A9e?= , devel@lists.libvirt.org Subject: [PATCH v2 09/12] hw/arm/raspi: Have the generic machine take a 'revision' property Date: Tue, 4 Feb 2025 01:22:37 +0100 Message-ID: <20250204002240.97830-10-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250204002240.97830-1-philmd@linaro.org> References: <20250204002240.97830-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42e; envelope-from=philmd@linaro.org; helo=mail-wr1-x42e.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=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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Add a property to specify the board revision. This allows to create a Raspberry Pi 2B with BCM2836 SoC (rev 1.0 and 1.1) or BCM2837 (rev 1.2 up to 1.5). Signed-off-by: Philippe Mathieu-Daudé --- hw/arm/raspi.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c index 1dc41701efe..b184ac3c446 100644 --- a/hw/arm/raspi.c +++ b/hw/arm/raspi.c @@ -491,6 +491,10 @@ static void raspi_update_board_rev(RaspiBaseMachineState *s) model_index = FIELD_EX32(s->board_rev, REV_CODE, TYPE); proc = types[model_index].proc_id; + if (model_index == 4 && FIELD_EX32(s->board_rev, REV_CODE, REVISION) > 1) { + /* 2B rev 1.0 and 1.1 have BCM2836, 1.2+ have BCM2837 */ + proc = PROCESSOR_ID_BCM2837; + } s->board_rev = FIELD_DP32(s->board_rev, REV_CODE, PROCESSOR, proc); ms->smp.max_cpus = soc_property[proc].cores_count; @@ -517,6 +521,35 @@ static char *raspi_get_machine_model(Object *obj, Error **errp) return g_strdup(types[FIELD_EX32(s->board_rev, REV_CODE, TYPE)].model); } +static void raspi_set_machine_rev(Object *obj, const char *value, Error **errp) +{ + RaspiBaseMachineState *s; + int rev; + + if (strlen(value) != 3 || value[0] != '1' || value[1] != '.') { + error_setg(errp, "Invalid revision"); + return; + } + rev = value[2] - '0'; + if (rev < 0 || rev > 5) { + error_setg(errp, "Invalid revision"); + return; + } + + s = RASPI_BASE_MACHINE(obj); + s->board_rev = FIELD_DP32(s->board_rev, REV_CODE, REVISION, rev); + + return raspi_update_board_rev(s); +} + +static char *raspi_get_machine_rev(Object *obj, Error **errp) +{ + RaspiBaseMachineState *s = RASPI_BASE_MACHINE(obj); + + return g_strdup_printf("1.%u", + FIELD_EX32(s->board_rev, REV_CODE, REVISION)); +} + static void raspi_generic_machine_class_init(ObjectClass *oc, void *data) { MachineClass *mc = MACHINE_CLASS(oc); @@ -540,6 +573,12 @@ static void raspi_generic_machine_class_init(ObjectClass *oc, void *data) raspi_get_machine_model, raspi_set_machine_model); object_class_property_set_description(oc, "model", "Set machine model."); + object_class_property_add_str(oc, "revision", + raspi_get_machine_rev, + raspi_set_machine_rev); + object_class_property_set_description(oc, "revision", + "Set machine revision. " + "Valid values are 1.0 to 1.5"); }; From patchwork Tue Feb 4 00:22:38 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13958445 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2140AC02193 for ; Tue, 4 Feb 2025 00:24:50 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tf6jH-0000sQ-VV; Mon, 03 Feb 2025 19:23: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 1tf6jC-0000aY-4F for qemu-devel@nongnu.org; Mon, 03 Feb 2025 19:23:47 -0500 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tf6j9-00077c-2i for qemu-devel@nongnu.org; Mon, 03 Feb 2025 19:23:45 -0500 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-4361f664af5so58356485e9.1 for ; Mon, 03 Feb 2025 16:23:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738628621; x=1739233421; 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=4BsHBCpnaPz96xyXgY6FPwDTShzZ0gjgpBf5vsUfhxs=; b=UMQ3YQwLsFy9KCH0bwJv1YJrekfy/X1BdHa8hlo2E73bAvXrclnRhBpyE9yM0iSLSA GZOFM3EhxSzzWDwVtCuh8cUohooSJakVT+/Fvcu3Pu4YfR7mZzmj5p1KLCtCp/i8HT+H 0bDJFNQV/yUo+CXKzN6Tz3wWF9NA/InyWHZzi/2SiYjnGIJANAvy2C2JuKaZhnqUql8v 1ongUyqaub8IZoql9qFw/4eCJysaJ7hojwygCA2DYDu8q0ZfqeFfrGIrd2NjXI0ofmUb +m45ZezlpMiztdHnGRJON34KuuKsQLKa46QFLKk59Roau5N2Gn80vpuAUr9MF19W57R5 Hc1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738628621; x=1739233421; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4BsHBCpnaPz96xyXgY6FPwDTShzZ0gjgpBf5vsUfhxs=; b=g8qG3fsUC2IJmlpteUUXesj5nDl+14E20MwvHyRWKF4SbRsYXJHLJAcl16A2cFmVvf EDtcxIWOshs+0Bq3SYnLVYtcgLVNBR6DBcOiK1eT8UuYuXBBlwfH86kBkMIlNlhWa3pt 0KMRsKOWmTGI5aZpzE6tZFND6zbTjX6CljmJz2X7x5L0DacQHm3+3MxfwL2jJYzbOpvh n9b1T4gn5bdNHrgJnsU7TlcOeOLOwcOz0RgTIyDQe9KayMBbJaaZl26kfumfnKpCNlYk bb5y8MN9bCVqjA0pIamv/ShiYiLz2fdV1eWPMHX1U4fFTCJxPqTjfddiYcJGI4G6+vCG f73A== X-Gm-Message-State: AOJu0YzLkYjXMd4HQ8ByEVCLAalr10jWAZ8/TTl0W20IoP9ozaRUfYL3 jq++tN14CvcJ2Q/F1+8MZT+bKK97S/xhwtGeMTtgZVyDqFZDHMtsmUglCRs2IdDEUzF4H9gS3Kh vHsQ= X-Gm-Gg: ASbGncsJFT2ufKMHW5yKsTFkn6sxQSqbSq9qru/BFgILI5g7sO1jEROzjbkXp7gqdjw whhDRX4lI3F3wHvqUX/z/YFmDfNfjpD6F6iTrU6cphrkvK0AQ16QbsHTv79DRIfo5MTeMdgEfra YqrO1/3GwRX239dfdF2/NNu8rbvftyqPNWqqTvPLs8EFe2m1R3k3SYQGAc33zpMduz8RHa1+Wee pKWhmwneib5U/lxNkRFOe3uCvy2eSZJ7pLBDM3XOglY0R18dUzgXGpggMFhHsdQK0+ZHBtBfVJc PuFahYzoaFxkRQUIlxc8qysgPaIIrqt1BymG2bEfDuhy73RGlKqvCmBZHuzdGKjh5w== X-Google-Smtp-Source: AGHT+IG7jWGrmSQyucvp8cl04A0B6GQvyWzANUSPKFJhjeQG53dan6HWFQx2maj55IYQawVpHdmwxA== X-Received: by 2002:a05:600c:1d06:b0:434:fa61:fdfb with SMTP id 5b1f17b1804b1-438e561ceaemr158695135e9.18.1738628620679; Mon, 03 Feb 2025 16:23:40 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38c5c1016a1sm14187863f8f.21.2025.02.03.16.23.39 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 03 Feb 2025 16:23:40 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?utf-8?q?Daniel_P_=2E_Berrang=C3=A9?= , BALATON Zoltan , Peter Maydell , Laurent Vivier , Ovchinnikov Vitalii , =?utf-8?q?Philippe_Ma?= =?utf-8?q?thieu-Daud=C3=A9?= , Jared Mauch , Fabiano Rosas , Paolo Bonzini , qemu-arm@nongnu.org, =?utf-8?q?Alex_Be?= =?utf-8?q?nn=C3=A9e?= , devel@lists.libvirt.org Subject: [PATCH v2 10/12] hw/arm/raspi: List models creatable by the generic 'raspi' machine Date: Tue, 4 Feb 2025 01:22:38 +0100 Message-ID: <20250204002240.97830-11-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250204002240.97830-1-philmd@linaro.org> References: <20250204002240.97830-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::331; envelope-from=philmd@linaro.org; helo=mail-wm1-x331.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=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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org All the following models can be created (with different RAM size): $ qemu-system-aarch64 -M raspi qemu-system-aarch64: Missing model, try -M raspi,model=help $ qemu-system-aarch64 -M raspi,model=help Available models (processor): - A (BCM2835) - B (BCM2835) - A+ (BCM2835) - B+ (BCM2835) - 2B (BCM2836) - CM1 (BCM2835) - 3B (BCM2837) - Zero (BCM2835) - CM3 (BCM2837) - ZeroW (BCM2835) - 3B+ (BCM2837) - 3A+ (BCM2837) - CM3+ (BCM2837) - 4B (BCM2838) Signed-off-by: Philippe Mathieu-Daudé --- hw/arm/raspi.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c index b184ac3c446..8cae1ff6f93 100644 --- a/hw/arm/raspi.c +++ b/hw/arm/raspi.c @@ -445,7 +445,7 @@ static void raspi_generic_machine_init(MachineState *ms) uint64_t max_ramsize; if (!board_rev) { - error_report("Missing model"); + error_report("Missing model, try -M raspi,model=help"); exit(1); } @@ -500,8 +500,33 @@ static void raspi_update_board_rev(RaspiBaseMachineState *s) ms->smp.max_cpus = soc_property[proc].cores_count; } +static void raspi_list_machine_models(void) +{ + printf("Available models (processor):\n"); + + for (unsigned i = 0; i < ARRAY_SIZE(types); i++) { + const char *soc_type; + + if (!types[i].model) { + continue; + } + + soc_type = soc_property[types[i].proc_id].type; + if (!soc_type) { + continue; + } + printf("- %-10s (BCM%s)\n", + types[i].model, + soc_property[types[i].proc_id].type + 3); + } +} + static void raspi_set_machine_model(Object *obj, const char *value, Error **errp) { + if (!strcmp(value, "help")) { + raspi_list_machine_models(); + exit(0); + } for (unsigned i = 0; i < ARRAY_SIZE(types); i++) { if (types[i].model && !strcmp(value, types[i].model)) { RaspiBaseMachineState *s = RASPI_BASE_MACHINE(obj); @@ -512,6 +537,7 @@ static void raspi_set_machine_model(Object *obj, const char *value, Error **errp } } error_setg(errp, "Invalid model"); + error_append_hint(errp, "Use model=help to list models.\n"); } static char *raspi_get_machine_model(Object *obj, Error **errp) From patchwork Tue Feb 4 00:22:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13958440 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3C840C02194 for ; Tue, 4 Feb 2025 00:23:55 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tf6jI-0000sl-0X; Mon, 03 Feb 2025 19:23: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 1tf6jF-0000ha-Ri for qemu-devel@nongnu.org; Mon, 03 Feb 2025 19:23:50 -0500 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tf6jD-000784-E7 for qemu-devel@nongnu.org; Mon, 03 Feb 2025 19:23:49 -0500 Received: by mail-wr1-x42b.google.com with SMTP id ffacd0b85a97d-38633b5dbcfso5215138f8f.2 for ; Mon, 03 Feb 2025 16:23:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738628625; x=1739233425; 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=5hQiwa2G4uGjFgckcI0Yx0+nxXdng0uMBIPPXR9mbN0=; b=KXmV0YLORGdBchskuC28+TKYuHyS+RDSw0/1/1dbNZvMsOvjZPSvn0KQ9En/U/Nyxf u/mAZttXv9BSgadyALVCmwTHuGPDL4w+/lb+112StiNXa9p6H4ovHrdDKC9e8THKVptw OQUZRE4y6BXCi5sCzIEg5i2vbaWKPVY4Z//T24g1oZhCSQBmPOsNgp691C3IFqS2epAG MUI5X00ZMggKZo7VpaituW41A9By39bG/izOqWNMRr+AHaTrnIkF+WCvVHWXEzyrKwJf ewsxg7cgvczrrG7T+32L0HDiwYkwSwFypnxrkVii0smQTLiqokMhpz1YWGz88XGf+GRi r5ig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738628625; x=1739233425; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=5hQiwa2G4uGjFgckcI0Yx0+nxXdng0uMBIPPXR9mbN0=; b=W3VGEnXJbxqp0c22JsaCx8wkjXSIOnmhcOYEFZDyS5lkY3S0ot43VyBnySydueqMse 9/OFo9OBGNOR8DVcwfVFGmyeRJOFY3rYRdPFzLZry5xE5Z2mXdtTKLkVJE/PzfjO0Quw r5Ulv02f+kStiyXvG7J9ybfEsyfwxzOGeuJcbvC28dYBw4o8eFzn1uDatYQ9HWyRy9sV Ivk9+ORXxJHLkKkJ3jHmjJXnfyQJRcDMuoSf4wEUX3Z97O2UX2yEdJzlWB0W9rUN7lbI njiJvLQPcoNvhnnsi5f8tULWP1udX+4YvIm88cqFGBb199iq/Vu3+fITMIp9Shs+L7Zr 4h1Q== X-Gm-Message-State: AOJu0Yx5IZd4F7Ot7VrCWQLrkrhIwemhdz+qLo9s3XObyMqrqz0C0Rlt ts1xxk/uhPocfNOASfoWyQuUQkukb1/s9qZm1HAOLvptT5Sew5VHxt0WNA/Q3DmPuhGt/+jcaDm OWBM= X-Gm-Gg: ASbGncvZW7ftWwnvuc9JzmtP+zuDR4SJ4fvEtUgagDX6lYK9vWptrvto9WlU8QXSE4y sQrBplTtJYDM+wQ66ZVDNyA0RK6VyOJmmWjel+LpiMJu04UYOnIukUvG/8tauXPi52bppM6fnLP mGKKYtgmYWK9uHAEQjWA6clQ3Yblt07w+QUEu1bIhPVl5MwIt9kI6AkkcwC8eGYjPH2le3HI1na VU/w8NTuUpoIbHk8R+hORodhzfiLazBJLoyMjWAxyAg5P5VTGoF+CAK/krSDnDV9PYoOgEhHAok X08apypI1zeYP3dft4cEdtk8vMZL2SY8nCKZ0tnaqg7A6AMyRIobcB2POASIvZ3kAw== X-Google-Smtp-Source: AGHT+IGlQD4ZmGLKUil5WfVZGYdxEsJmCOEa6i0RsnTR0Suea1nAcU2pJ0fJ4ozP82WDv94mnLgENA== X-Received: by 2002:a05:6000:186f:b0:385:d7f9:f16c with SMTP id ffacd0b85a97d-38c520a34b6mr25211298f8f.46.1738628625510; Mon, 03 Feb 2025 16:23:45 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38c5c11fadbsm13895097f8f.44.2025.02.03.16.23.44 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 03 Feb 2025 16:23:45 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?utf-8?q?Daniel_P_=2E_Berrang=C3=A9?= , BALATON Zoltan , Peter Maydell , Laurent Vivier , Ovchinnikov Vitalii , =?utf-8?q?Philippe_Ma?= =?utf-8?q?thieu-Daud=C3=A9?= , Jared Mauch , Fabiano Rosas , Paolo Bonzini , qemu-arm@nongnu.org, =?utf-8?q?Alex_Be?= =?utf-8?q?nn=C3=A9e?= , devel@lists.libvirt.org Subject: [PATCH v2 11/12] hw/arm/raspi: Deprecate old raspiX machine names Date: Tue, 4 Feb 2025 01:22:39 +0100 Message-ID: <20250204002240.97830-12-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250204002240.97830-1-philmd@linaro.org> References: <20250204002240.97830-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42b; envelope-from=philmd@linaro.org; helo=mail-wr1-x42b.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=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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org All previous raspi machines can be created using the generic machine. Deprecate the old names to maintain a single one. Update the tests. Signed-off-by: Philippe Mathieu-Daudé --- QOM HMP introspection test fails because without the 'model' argument set, no machine is created... $ qemu-system-aarch64 -M raspi qemu-system-aarch64: Missing model, try -M raspi,model=help --- docs/about/deprecated.rst | 13 +++++++++++++ hw/arm/raspi.c | 5 +++++ tests/qtest/bcm2835-dma-test.c | 2 +- tests/qtest/bcm2835-i2c-test.c | 2 +- tests/qtest/boot-serial-test.c | 3 ++- tests/functional/test_aarch64_raspi3.py | 5 ++--- tests/functional/test_aarch64_raspi4.py | 4 ++-- tests/functional/test_arm_raspi2.py | 4 ++-- 8 files changed, 28 insertions(+), 10 deletions(-) diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst index 4a3c302962a..c9a11a52f78 100644 --- a/docs/about/deprecated.rst +++ b/docs/about/deprecated.rst @@ -257,6 +257,19 @@ Big-Endian variants of MicroBlaze ``petalogix-ml605`` and ``xlnx-zynqmp-pmu`` ma Both ``petalogix-ml605`` and ``xlnx-zynqmp-pmu`` were added for little endian CPUs. Big endian support is not tested. +ARM ``raspi0``, ``raspi1ap``, ``raspi2b``, ``raspi3ap``, ``raspi3b`` and ``raspi4b`` machines (since 10.0) +'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' + +The Raspberry Pi machines have been unified under the generic ``raspi`` machine, +which takes the model as argument. + + - `raspi0`` is now an alias for ``raspi,model=Zero`` + - `raspi1ap`` is now an alias for ``raspi,model=1A+`` + - `raspi2b`` is now an alias for ``raspi,model=2B`` + - `raspi3ap`` is now an alias for ``raspi,model=3A+`` + - `raspi3b`` is now an alias for ``raspi,model=3B`` + - `raspi4b`` is now an alias for ``raspi,model=4B`` + Backend options --------------- diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c index 8cae1ff6f93..86ecc988e06 100644 --- a/hw/arm/raspi.c +++ b/hw/arm/raspi.c @@ -637,6 +637,7 @@ static void raspi0_machine_class_init(ObjectClass *oc, void *data) rmc->board_rev = 0x920092; /* Revision 1.2 */ raspi_machine_class_init(mc, rmc->board_rev); + mc->deprecation_reason = "-M raspi,model=Zero"; }; static void raspi1ap_machine_class_init(ObjectClass *oc, void *data) @@ -646,6 +647,7 @@ static void raspi1ap_machine_class_init(ObjectClass *oc, void *data) rmc->board_rev = 0x900021; /* Revision 1.1 */ raspi_machine_class_init(mc, rmc->board_rev); + mc->deprecation_reason = "-M raspi,model=A+ (-m 512m)"; }; static void raspi2b_machine_class_init(ObjectClass *oc, void *data) @@ -655,6 +657,7 @@ static void raspi2b_machine_class_init(ObjectClass *oc, void *data) rmc->board_rev = 0xa21041; raspi_machine_class_init(mc, rmc->board_rev); + mc->deprecation_reason = "-M raspi,model=2B -m 1g"; }; #ifdef TARGET_AARCH64 @@ -665,6 +668,7 @@ static void raspi3ap_machine_class_init(ObjectClass *oc, void *data) rmc->board_rev = 0x9020e0; /* Revision 1.0 */ raspi_machine_class_init(mc, rmc->board_rev); + mc->deprecation_reason = "-M raspi,model=3A+ -m 512m"; }; static void raspi3b_machine_class_init(ObjectClass *oc, void *data) @@ -674,6 +678,7 @@ static void raspi3b_machine_class_init(ObjectClass *oc, void *data) rmc->board_rev = 0xa02082; raspi_machine_class_init(mc, rmc->board_rev); + mc->deprecation_reason = "-M raspi,model=3B -m 1g"; }; static void raspi4b_machine_class_init(ObjectClass *oc, void *data) diff --git a/tests/qtest/bcm2835-dma-test.c b/tests/qtest/bcm2835-dma-test.c index 18901b76d21..705e6b2362b 100644 --- a/tests/qtest/bcm2835-dma-test.c +++ b/tests/qtest/bcm2835-dma-test.c @@ -111,7 +111,7 @@ int main(int argc, char **argv) g_test_init(&argc, &argv, NULL); qtest_add_func("/bcm2835/dma/test_interrupts", bcm2835_dma_test_interrupts); - qtest_start("-machine raspi3b"); + qtest_start("-machine raspi,model=3B -m 1g"); ret = g_test_run(); qtest_end(); return ret; diff --git a/tests/qtest/bcm2835-i2c-test.c b/tests/qtest/bcm2835-i2c-test.c index 15991949260..15904abf393 100644 --- a/tests/qtest/bcm2835-i2c-test.c +++ b/tests/qtest/bcm2835-i2c-test.c @@ -104,7 +104,7 @@ int main(int argc, char **argv) } /* Run I2C tests with TMP105 slaves on all three buses */ - qtest_start("-M raspi3b " + qtest_start("-M raspi,model=3B -m 1g " "-device tmp105,address=0x50,bus=i2c-bus.0 " "-device tmp105,address=0x50,bus=i2c-bus.1 " "-device tmp105,address=0x50,bus=i2c-bus.2"); diff --git a/tests/qtest/boot-serial-test.c b/tests/qtest/boot-serial-test.c index a05d26ee996..fbafd73facb 100644 --- a/tests/qtest/boot-serial-test.c +++ b/tests/qtest/boot-serial-test.c @@ -188,7 +188,8 @@ static const testdef_t tests[] = { sizeof(kernel_pls3adsp1800), kernel_pls3adsp1800 }, { "microblazeel", "petalogix-ml605", "", "TT", sizeof(kernel_plml605), kernel_plml605 }, - { "arm", "raspi2b", "", "TT", sizeof(bios_raspi2), 0, bios_raspi2 }, + { "arm", "raspi,model=2B -m 1g", "", "TT", + sizeof(bios_raspi2), 0, bios_raspi2 }, { "aarch64", "virt", "-cpu max", "TT", sizeof(kernel_aarch64), kernel_aarch64 }, { "arm", "microbit", "", "T", sizeof(kernel_nrf51), kernel_nrf51 }, diff --git a/tests/functional/test_aarch64_raspi3.py b/tests/functional/test_aarch64_raspi3.py index 74f6630ed26..05766d93b3f 100755 --- a/tests/functional/test_aarch64_raspi3.py +++ b/tests/functional/test_aarch64_raspi3.py @@ -21,10 +21,9 @@ def test_aarch64_raspi3_atf(self): efi_name = 'RPI_EFI.fd' efi_fd = self.archive_extract(self.ASSET_RPI3_UEFI, member=efi_name) - self.set_machine('raspi3b') + self.set_machine('raspi,model=3B -m 1g') self.vm.set_console(console_index=1) - self.vm.add_args('-cpu', 'cortex-a53', - '-nodefaults', + self.vm.add_args('-nodefaults', '-device', f'loader,file={efi_fd},force-raw=true') self.vm.launch() self.wait_for_console_pattern('version UEFI Firmware v1.15') diff --git a/tests/functional/test_aarch64_raspi4.py b/tests/functional/test_aarch64_raspi4.py index 7a4302b0c5a..3becee9333a 100755 --- a/tests/functional/test_aarch64_raspi4.py +++ b/tests/functional/test_aarch64_raspi4.py @@ -34,7 +34,7 @@ def test_arm_raspi4(self): dtb_path = self.archive_extract(self.ASSET_KERNEL_20190215, member='boot/bcm2711-rpi-4-b.dtb') - self.set_machine('raspi4b') + self.set_machine('raspi,model=4B -m 1g') self.vm.set_console() kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 'earlycon=pl011,mmio32,0xfe201000 ' + @@ -64,7 +64,7 @@ def test_arm_raspi4_initrd(self): member='boot/bcm2711-rpi-4-b.dtb') initrd_path = self.uncompress(self.ASSET_INITRD) - self.set_machine('raspi4b') + self.set_machine('raspi,model=4B -m 1g') self.vm.set_console() kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 'earlycon=pl011,mmio32,0xfe201000 ' + diff --git a/tests/functional/test_arm_raspi2.py b/tests/functional/test_arm_raspi2.py index d3c7aaa39b0..37390a9c360 100755 --- a/tests/functional/test_arm_raspi2.py +++ b/tests/functional/test_arm_raspi2.py @@ -39,7 +39,7 @@ def do_test_arm_raspi2(self, uart_id): dtb_path = self.archive_extract(self.ASSET_KERNEL_20190215, member='boot/bcm2709-rpi-2-b.dtb') - self.set_machine('raspi2b') + self.set_machine('raspi,model=2B -m 1g') self.vm.set_console() kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + serial_kernel_cmdline[uart_id] + @@ -65,7 +65,7 @@ def test_arm_raspi2_initrd(self): member='boot/bcm2709-rpi-2-b.dtb') initrd_path = self.uncompress(self.ASSET_INITRD) - self.set_machine('raspi2b') + self.set_machine('raspi,model=2B -m 1g') self.vm.set_console() kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 'earlycon=pl011,0x3f201000 console=ttyAMA0 ' From patchwork Tue Feb 4 00:22:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13958444 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id F0AB8C02193 for ; Tue, 4 Feb 2025 00:24:46 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tf6jO-0001NP-3Y; Mon, 03 Feb 2025 19:23: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 1tf6jL-00018b-8H for qemu-devel@nongnu.org; Mon, 03 Feb 2025 19:23:55 -0500 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tf6jJ-00079J-JC for qemu-devel@nongnu.org; Mon, 03 Feb 2025 19:23:54 -0500 Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-4363ae65100so58711625e9.0 for ; Mon, 03 Feb 2025 16:23:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738628632; x=1739233432; 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=KA2PPeT4tEXlHcRLWASfffMgNqf9rFhBVYtXHQy1PNU=; b=IQrZrO1QrWQfaoU5XjzGAPz4NFl9cUwXdnIIydOX2I38cPlg3857A6inzBBHKStcDC 8j5O411HG4VWbsOO1ei2dQEMxomlewl12jWDMu3WRSXKPYkfki90YvfCitLkvikyOVlP O4DnkwEJHeRVHAtdUMArDSE8bCLks0p5+l3JkqTsk301ebGa84eDlnR4ox212kk2VzPT X7CjXp0ojGukBWANpfQmyi/UDRKn7Wb/4rvN2doT/uJt/rlpqVUoHPOUJCFMCIxHn1Af aSmnpO//zZqWhbzla+PZ18JT1ae/2SceacKGgJFTBFaOGeTM1Asx5K21zyd0U6NiZyPS z0Gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738628632; x=1739233432; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KA2PPeT4tEXlHcRLWASfffMgNqf9rFhBVYtXHQy1PNU=; b=n0D06qWk9wWzQSgwqq9pO/HGqgJcDfJrIenqYB7uqv/gVkAVR5rOixnyPFz92y/fxv /y1kmt7ENod9bf4qIKcUkefqTpqWK9jGo0EjqSJxJ5NbQF6GrR8sfWkGxmNRI8zkSNmo 67jHIJLhC5Kk9pYjFPz2e7WNOsxp49ESXhUOmEmw6aLIoP51DpqraRM3j6fU655LonRU Zqq0hNOia/bPEc02fdlfHwylXry3TofSm5sC2dm9CitVaPLrNbeTqNj0lwBabf7T6CxA Oij9qQ3o7MKylkDklwFjo3W9FJ0rJ9TBjEooIBFXW3U7PPEYTriqO2lHvrncssWp42+5 oKgQ== X-Gm-Message-State: AOJu0YyhJdITNI1NyytpSNN5VNQYcDvuKHpDYtGIeMEGjK1eQxpqWdnX Y/AHXAcddg7ZJM17wp6mHYnm0geqdk4YsgBvePYeZ87b3YtLKwyxC2aZ/gwweGck0awkeXQngtc m4ac= X-Gm-Gg: ASbGncto/qiAWJpLtAtdzJwoCBJj/JuTED+0u8yilNGIodtTTr6IzFymi8Rn0iX64/1 4l//xJ0OM6Cb7gH1OGkCc4jcd/iG/JBoGKKFGKJ5Yg1rCaPWOetNl9hhnLeZK0Kz1CE8FC7bVdn eK9aui/pyL3oBiEkJSbbPnPg/c6XPyqNGJGempEStrKoKCjDMHHfa5ZZhP2JmnDMh2vhrQ4ci9J jR3qbqWam3o97eiH0+TszJv5IWzY9+DzsAOGBWkx2ky97+4xftREgYL/3I3NqBu9YfDj6aDhpXz eGs6vHS1Vt6ukks9k5YCSKreD136cSpGFX7KGkeu7W9tgu8unIaiSZ6h4sW7ekadwg== X-Google-Smtp-Source: AGHT+IE7Rvp8IWHSG8TN0cuLH5HU1vI0hraFlRdcsxcb82PnxgLdH74SRsYB5zKwwE/skHQ3fqKOMw== X-Received: by 2002:a05:600c:5486:b0:431:5c3d:1700 with SMTP id 5b1f17b1804b1-438dc40d3fdmr219161265e9.21.1738628631843; Mon, 03 Feb 2025 16:23:51 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-438e23d42dfsm174646505e9.4.2025.02.03.16.23.49 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 03 Feb 2025 16:23:50 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?utf-8?q?Daniel_P_=2E_Berrang=C3=A9?= , BALATON Zoltan , Peter Maydell , Laurent Vivier , Ovchinnikov Vitalii , =?utf-8?q?Philippe_Ma?= =?utf-8?q?thieu-Daud=C3=A9?= , Jared Mauch , Fabiano Rosas , Paolo Bonzini , qemu-arm@nongnu.org, =?utf-8?q?Alex_Be?= =?utf-8?q?nn=C3=A9e?= , devel@lists.libvirt.org Subject: [PATCH v2 12/12] hw/arm/raspi: Support more models Date: Tue, 4 Feb 2025 01:22:40 +0100 Message-ID: <20250204002240.97830-13-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250204002240.97830-1-philmd@linaro.org> References: <20250204002240.97830-1-philmd@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::32e; envelope-from=philmd@linaro.org; helo=mail-wm1-x32e.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=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+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Allow to create the following machines: - Zero2W - 400 - CM4 and CM4S Fill the arrays with the BCM2712-based machines (raspi5), but since we don't model the SoC, these machines can't be created (and aren't listed in the 'help' output). List taken from: https://github.com/raspberrypi/documentation/blob/9b126446a5/documentation/asciidoc/computers/raspberry-pi/revision-codes.adoc Signed-off-by: Philippe Mathieu-Daudé --- hw/arm/raspi.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c index 86ecc988e06..2346550eec5 100644 --- a/hw/arm/raspi.c +++ b/hw/arm/raspi.c @@ -71,6 +71,7 @@ typedef enum RaspiProcessorId { PROCESSOR_ID_BCM2837 = 2, PROCESSOR_ID_BCM2838 = 3, PROCESSOR_ID_BCM2711 = 3, + PROCESSOR_ID_BCM2712 = 4, } RaspiProcessorId; static const struct { @@ -82,6 +83,7 @@ static const struct { [PROCESSOR_ID_BCM2836] = {TYPE_BCM2836, BCM283X_NCPUS, 1 * GiB}, [PROCESSOR_ID_BCM2837] = {TYPE_BCM2837, BCM283X_NCPUS, 1 * GiB}, [PROCESSOR_ID_BCM2838] = {TYPE_BCM2838, BCM283X_NCPUS, 8 * GiB}, + [PROCESSOR_ID_BCM2712] = {NULL, BCM283X_NCPUS, 16 * GiB}, }; static const struct { @@ -106,6 +108,17 @@ static const struct { { }, {PROCESSOR_ID_BCM2837, "CM3+"}, {PROCESSOR_ID_BCM2711, "4B"}, + {PROCESSOR_ID_BCM2837, "Zero2W"}, + {PROCESSOR_ID_BCM2711, "400"}, + + {PROCESSOR_ID_BCM2711, "CM4"}, + {PROCESSOR_ID_BCM2711, "CM4S"}, + { }, + {PROCESSOR_ID_BCM2712, "5"}, + {PROCESSOR_ID_BCM2712, "CM5"}, + {PROCESSOR_ID_BCM2712, "500"}, + {PROCESSOR_ID_BCM2712, "CM5lite"}, + { }, }; uint64_t board_ram_size(uint32_t board_rev)