From mboxrd@z Thu Jan 1 00:00:00 1970 Received: by 2002:a17:504:17c4:b0:1be9:327d:8ee3 with SMTP id o4csp3532743njd; Thu, 24 Apr 2025 00:52:26 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVTOeYSEzqvl05CJcmJeNEht7B0QyYzD8rCZpF0YffRwaMwzHFVgCsBBy1JxsWa3mVmwZWaIMjKjOYxmg==@linaro.org X-Google-Smtp-Source: AGHT+IFO65K8fCvxmhxBfWY971aUD+rDwtyDxHank1qh/2pYGKY6h9OAfBAcbkViypqyiuYhGiPg X-Received: by 2002:a05:620a:24ce:b0:7c5:5d4b:e63c with SMTP id af79cd13be357-7c956f463ccmr286493385a.47.1745481146588; Thu, 24 Apr 2025 00:52:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1745481146; cv=none; d=google.com; s=arc-20240605; b=SV7ZXETDH28s5xS/Ea6TKz+865cFcZmuk/xWSxqVZI1z1le5bLTCAG1KSZHJZ57rce PE93wGB/pvTuSeFg4J4XU9qhRMZ5DX/9WLUTGpqWoXnKvyOkMusbgQtqf3cZguyHiqdk dtjWr8SQl+6SytQb5pu0YkBGKpAJOgRVT1wAZcKyLF8DqBbLy8saJp8ZP7nJeX4xvIeO CN4uuZKD2vso1oiP+xGaI5wQIW75NGUL3SWOf2XpNjqSwBu6V4ZXEM1+6lL21/lehIdX PfYDpWxQSPmXXGP8JFaw8lYyqCQhuENl9NH88usr+32caqdTwguuPNlp5PisMFm0DzkR 0JkQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:from:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to; bh=2yJsQ0SuQ8IKRi4f1YoX4MNwHWK1kc3WrgZuN1vxnI8=; fh=9slMQvAVAaDbZF94sUZsatNqTIKawFKtbOHuc7HAk0w=; b=VuX9TSJw6IJPHbSPJZK4ZlcCFccN0TnPghSi6nFaDhZ33xlJejw7Gl1+VAe8t5SaqG OhuT42tYFh7OiwDnKmGnMMY0ATxSFtIIKt81q+CpWXognNLBxRNk/6sX8AKHBWKDA0Fe qllUJZkKe2tT69Y5puyHeWDXKZ0PQSyoLvN13UFynjS1JncyQLb3aOvkcnR61VglQ3cm Yx99k8teCsmZ9v2sauOAiw7VXDrvomRnZW6/2ssMZw3zf23EcUtfET680vqSBeE76RvC 1yPu2OlPwLA+PlgjFuEXfqGxJP85I873fb2U1h0JcdMW4Dr76YLXfkozRJo7uLhGZiz/ EoYw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+alex.bennee=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+alex.bennee=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id af79cd13be357-7c958d85910si82509685a.199.2025.04.24.00.52.26 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Thu, 24 Apr 2025 00:52:26 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+alex.bennee=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+alex.bennee=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+alex.bennee=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nongnu.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u7rNF-0001Ll-Cc; Thu, 24 Apr 2025 03:51:57 -0400 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 1u7rNE-0001LC-83; Thu, 24 Apr 2025 03:51:56 -0400 Received: from mail.aspeedtech.com ([211.20.114.72] helo=TWMBX01.aspeed.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u7rNB-0006ez-Hl; Thu, 24 Apr 2025 03:51:55 -0400 Received: from TWMBX01.aspeed.com (192.168.0.62) by TWMBX01.aspeed.com (192.168.0.62) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.10; Thu, 24 Apr 2025 15:51:36 +0800 Received: from mail.aspeedtech.com (192.168.10.10) by TWMBX01.aspeed.com (192.168.0.62) with Microsoft SMTP Server id 15.2.1748.10 via Frontend Transport; Thu, 24 Apr 2025 15:51:36 +0800 To: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Peter Maydell , Steven Lee , Troy Lee , Andrew Jeffery , "Joel Stanley" , "open list:All patches CC here" , "open list:ASPEED BMCs" CC: , , Subject: [PATCH v6 2/6] pc-bios: Add AST27x0 vBootrom Date: Thu, 24 Apr 2025 15:51:30 +0800 Message-ID: <20250424075135.3715128-3-jamin_lin@aspeedtech.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250424075135.3715128-1-jamin_lin@aspeedtech.com> References: <20250424075135.3715128-1-jamin_lin@aspeedtech.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain Received-SPF: pass client-ip=211.20.114.72; envelope-from=jamin_lin@aspeedtech.com; helo=TWMBX01.aspeed.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_FAIL=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Jamin Lin From: Jamin Lin via Errors-To: qemu-devel-bounces+alex.bennee=linaro.org@nongnu.org Sender: qemu-devel-bounces+alex.bennee=linaro.org@nongnu.org X-TUID: pGBQ3GNfLDQq The boot ROM is a minimal implementation designed to load an AST27x0 boot image. Its source code is available at: https://github.com/google/vbootrom Commit id: 82bed5ca62295228ea7bcdc721b63db178f686e8 Signed-off-by: Jamin Lin Reviewed-by: Nabih Estefan Tested-by: Nabih Estefan --- MAINTAINERS | 1 + pc-bios/README | 6 ++++++ pc-bios/ast27x0_bootrom.bin | Bin 0 -> 15424 bytes pc-bios/meson.build | 1 + 4 files changed, 8 insertions(+) create mode 100644 pc-bios/ast27x0_bootrom.bin diff --git a/MAINTAINERS b/MAINTAINERS index d54b5578f8..70ab0d0afa 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1163,6 +1163,7 @@ F: docs/system/arm/fby35.rst F: tests/*/*aspeed* F: tests/*/*ast2700* F: hw/arm/fby35.c +F: pc-bios/ast27x0_bootrom.bin NRF51 M: Joel Stanley diff --git a/pc-bios/README b/pc-bios/README index f0f13e15f2..d009c37895 100644 --- a/pc-bios/README +++ b/pc-bios/README @@ -89,6 +89,12 @@ more features over time as needed. The source code is available at: https://github.com/google/vbootrom +- ast27x0_bootrom.bin is a simplified, free (Apache 2.0) boot ROM for + ASPEED AST27x0 BMC SOC. It currently implements the bare minimum to + load, parse, initialize and run boot images stored in SPI flash, but may grow + more features over time as needed. The source code is available at: + https://github.com/google/vbootrom + - hppa-firmware.img (32-bit) and hppa-firmware64.img (64-bit) are firmware files for the HP-PARISC (hppa) architecture. They are built form the SeaBIOS-hppa sources, which is a fork of SeaBIOS diff --git a/pc-bios/ast27x0_bootrom.bin b/pc-bios/ast27x0_bootrom.bin new file mode 100644 index 0000000000000000000000000000000000000000..d46403b023c00f989b6facb397d57bea7e5c583a GIT binary patch literal 15424 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