From patchwork Mon Mar 18 21:02:04 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 1058094 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=busybox.net (client-ip=140.211.166.137; helo=fraxinus.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="Er1AmZ2w"; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=sharedspace.onmicrosoft.com header.i=@sharedspace.onmicrosoft.com header.b="EBUgEqLi"; dkim-atps=neutral Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 44NTCH1PyTz9ryj for ; Tue, 19 Mar 2019 08:02:19 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 7DF1185F71; Mon, 18 Mar 2019 21:02:16 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nCcGxZLURVIy; Mon, 18 Mar 2019 21:02:12 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by fraxinus.osuosl.org (Postfix) with ESMTP id D36DE85F67; Mon, 18 Mar 2019 21:02:11 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id B70221BF29C for ; Mon, 18 Mar 2019 21:02:07 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id AFEE686DB2 for ; Mon, 18 Mar 2019 21:02:07 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jhjlzIPUZAed for ; Mon, 18 Mar 2019 21:02:06 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from esa3.hgst.iphmx.com (esa3.hgst.iphmx.com [216.71.153.141]) by whitealder.osuosl.org (Postfix) with ESMTPS id EC8C786FA6 for ; Mon, 18 Mar 2019 21:02:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1552942927; x=1584478927; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=2y9jKhafS1WZeyonwFL3654JwdTKh8JQ70EsvfxMdUQ=; b=Er1AmZ2wphVekf6MklU9smbLFT9TQQi2ODuaqY42G18/NlUoNi3qD/yM PAwxjCCOICbda6UmkKh16/ZyEpxEilmmJ1WM8rYfrUdwWWCc9OGtKFk4S oVf3868DqgNx/a2p3TYemMIf+qMBcK2pTDMlDSxdoz+ThHM5uJRUxEfct tIDSk+TpPaCZv67yGCNpU9ggAWwmbQqJICnEN3h0vJ/CueajyJs/9mihX px40N7kEZq2D44toXrD/J4aEfodvedlZPP0Z0JidQObBbqcK6Vkh3ieh1 SIzv8MpNU8RucVqZt9+yEJs9c7JaujuXkEhGRlc26bft4UTRy6n38zSKd Q==; X-IronPort-AV: E=Sophos;i="5.58,494,1544457600"; d="scan'208";a="108737345" Received: from mail-by2nam01lp2053.outbound.protection.outlook.com (HELO NAM01-BY2-obe.outbound.protection.outlook.com) ([104.47.34.53]) by ob1.hgst.iphmx.com with ESMTP; 19 Mar 2019 05:02:06 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-wdc-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7ZpKpn/wkjTRMbBt5WL4nmTcscAQSakgYiLJ20hVCR0=; b=EBUgEqLiSbFh7m7T9cTzDy8jJo+Nwe21b6/vjFh87nopt8vgmvitc8lNXhrN8d+QszM0/hPLXMstNg9P3bUeiuVvpctGvueb8zeZqa0Ts2kNfdOC71xWC/Cj/J4lIbSzX8bTpclZiEjIaZwWk/B690DbI5GElVKZMonq8MEOz+k= Received: from BYAPR04MB4901.namprd04.prod.outlook.com (52.135.232.206) by BYAPR04MB4518.namprd04.prod.outlook.com (52.135.238.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1709.13; Mon, 18 Mar 2019 21:02:05 +0000 Received: from BYAPR04MB4901.namprd04.prod.outlook.com ([fe80::1c45:32d7:98ed:4cd7]) by BYAPR04MB4901.namprd04.prod.outlook.com ([fe80::1c45:32d7:98ed:4cd7%6]) with mapi id 15.20.1709.015; Mon, 18 Mar 2019 21:02:05 +0000 From: Alistair Francis To: "mark.corbin@embecosm.com" , "buildroot@buildroot.org" Thread-Topic: [PATCH v2 5/5] boot: riscv: Initial commit of OpenSBI Thread-Index: AQHU3c3X8VxxXIwV1kGog7BHyEiiPQ== Date: Mon, 18 Mar 2019 21:02:04 +0000 Message-ID: <20190318210106.6347-5-alistair.francis@wdc.com> References: <20190318210106.6347-1-alistair.francis@wdc.com> In-Reply-To: <20190318210106.6347-1-alistair.francis@wdc.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.21.0 x-clientproxiedby: BYAPR05CA0051.namprd05.prod.outlook.com (2603:10b6:a03:74::28) To BYAPR04MB4901.namprd04.prod.outlook.com (2603:10b6:a03:4f::14) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alistair.Francis@wdc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [199.255.44.250] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 20d659a5-3aa3-4d4c-7fe5-08d6abe4f953 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020); SRVR:BYAPR04MB4518; x-ms-traffictypediagnostic: BYAPR04MB4518: x-ms-exchange-purlcount: 1 wdcipoutbound: EOP-TRUE x-microsoft-antispam-prvs: x-forefront-prvs: 098076C36C x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(376002)(136003)(396003)(366004)(346002)(39860400002)(189003)(199004)(44832011)(4326008)(76176011)(105586002)(386003)(256004)(2501003)(54906003)(110136005)(68736007)(316002)(6436002)(26005)(476003)(2616005)(102836004)(11346002)(106356001)(186003)(486006)(6506007)(86362001)(71200400001)(71190400001)(99286004)(52116002)(36756003)(446003)(25786009)(8936002)(81166006)(81156014)(97736004)(8676002)(2906002)(66066001)(1076003)(5660300002)(305945005)(7736002)(6486002)(53936002)(14454004)(72206003)(6116002)(50226002)(966005)(478600001)(6306002)(3846002)(6512007); DIR:OUT; SFP:1102; SCL:1; SRVR:BYAPR04MB4518; H:BYAPR04MB4901.namprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: gW+rVkOsZnIDkP109F2phnp7p+hn1fVSwkvQNS81Jz8jEg8oSi2tOu/6VKpwIzCcGsQnsM0MICK4FDUtOOOld0ocVKk5ZGIEBY3Z2+1H/mibUAsN6HTpv801CxUBllpTgzo7/andRgJ5ITuOycfae5tLe+M7nhaZgv7FXOEm50wZs2bZiVTi4hWTL7XnMfNHDrH5Jrkkbr1IiBPyJrU1vBCSrmPWQvCbjmDO6ErLWiGr8CiX5aCPNlwu+R6C75Nph6kzb9vg3IvmrwXMyn44xZBPHatc9wyUnrk2ZVHsXUeYJhurMjNd5B2HYQ61YBsLkoZ4B6yHFfgoBtt4M7p8p21q8PHxchM64IGzrsM08tRvXMKMa/kXUPMyACqeaddwhK0JJqOZvYRqbiiMBO8C9nhcBODQ53vEwuWCFiBpn0w= MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 20d659a5-3aa3-4d4c-7fe5-08d6abe4f953 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Mar 2019 21:02:04.6788 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR04MB4518 Subject: [Buildroot] [PATCH v2 5/5] boot: riscv: Initial commit of OpenSBI X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Atish Patra , Alistair Francis , "alistair23@gmail.com" Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" OpenSBI is a much improved alternative to BBL (riscv-pk). Add OpenSBI support to buildroot. OpenSBI is also set as the default boot loader for RISC-V. Signed-off-by: Alistair Francis --- DEVELOPERS | 1 + board/qemu/riscv32-virt/readme.txt | 10 ++++++--- board/qemu/riscv64-virt/readme.txt | 10 ++++++--- boot/Config.in | 1 + boot/opensbi/Config.in | 23 +++++++++++++++++++++ boot/opensbi/opensbi.mk | 32 +++++++++++++++++++++++++++++ configs/qemu_riscv32_virt_defconfig | 4 +++- configs/qemu_riscv64_virt_defconfig | 4 +++- 8 files changed, 77 insertions(+), 8 deletions(-) create mode 100644 boot/opensbi/Config.in create mode 100644 boot/opensbi/opensbi.mk diff --git a/DEVELOPERS b/DEVELOPERS index c91325e284..72aca1a342 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -123,6 +123,7 @@ F: package/kvazaar/ F: package/v4l2loopback/ N: Alistair Francis +F: boot/opensbi/ F: package/xen/ N: Alvaro G. M diff --git a/board/qemu/riscv32-virt/readme.txt b/board/qemu/riscv32-virt/readme.txt index 2da99580e5..f73f4278de 100644 --- a/board/qemu/riscv32-virt/readme.txt +++ b/board/qemu/riscv32-virt/readme.txt @@ -1,7 +1,11 @@ -Run the emulation with: +Run Linux in emulation with: - qemu-system-riscv32 -M virt -kernel output/images/bbl -append "root=/dev/vda ro console=ttyS0" -drive file=output/images/rootfs.ext2,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -netdev user,id=net0 -device virtio-net-device,netdev=net0 -nographic + qemu-system-riscv32 -M virt -kernel output/images/fw_jump.elf -device loader,file=output/images/Image,addr=0x80400000 -append "root=/dev/vda ro console=ttyS0" -drive file=output/images/rootfs.ext2,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -netdev user,id=net0 -device virtio-net-device,netdev=net0 -nographic The login prompt will appear in the terminal that started Qemu. -Tested with QEMU 2.12.1 +It is also possible to boot u-boot in QEMU. Although at the time of testing there were some issues with the OpenSBI to u-boot hand off. Run u-boot in emulation with: + + qemu-system-riscv32 -M virt -kernel output/images/fw_jump.elf -device loader,file=output/images/u-boot,addr=0x80400000 -append "root=/dev/vda ro console=ttyS0" -drive file=output/images/rootfs.ext2,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -netdev user,id=net0 -device virtio-net-device,netdev=net0 -nographic + +Tested with QEMU 3.1 diff --git a/board/qemu/riscv64-virt/readme.txt b/board/qemu/riscv64-virt/readme.txt index 9f6e35c867..02b6fe0506 100644 --- a/board/qemu/riscv64-virt/readme.txt +++ b/board/qemu/riscv64-virt/readme.txt @@ -1,7 +1,11 @@ -Run the emulation with: +Run Linux in emulation with: - qemu-system-riscv64 -M virt -kernel output/images/bbl -append "root=/dev/vda ro console=ttyS0" -drive file=output/images/rootfs.ext2,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -netdev user,id=net0 -device virtio-net-device,netdev=net0 -nographic + qemu-system-riscv64 -M virt -kernel output/images/fw_jump.elf -device loader,file=output/images/Image,addr=0x80200000 -append "root=/dev/vda ro console=ttyS0" -drive file=output/images/rootfs.ext2,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -netdev user,id=net0 -device virtio-net-device,netdev=net0 -nographic The login prompt will appear in the terminal that started Qemu. -Tested with QEMU 2.12.1 +It is also possible to boot u-boot in QEMU. Although at the time of testing there were some issues with the OpenSBI to u-boot hand off. Run u-boot in emulation with: + + qemu-system-riscv64 -M virt -kernel output/images/fw_jump.elf -device loader,file=output/images/u-boot,addr=0x80200000 -append "root=/dev/vda ro console=ttyS0" -drive file=output/images/rootfs.ext2,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -netdev user,id=net0 -device virtio-net-device,netdev=net0 -nographic + +Tested with QEMU 3.1 diff --git a/boot/Config.in b/boot/Config.in index 74481e7545..97bd3de6e9 100644 --- a/boot/Config.in +++ b/boot/Config.in @@ -14,6 +14,7 @@ source "boot/lpc32xxcdl/Config.in" source "boot/mv-ddr-marvell/Config.in" source "boot/mxs-bootlets/Config.in" source "boot/optee-os/Config.in" +source "boot/opensbi/Config.in" source "boot/riscv-pk/Config.in" source "boot/s500-bootloader/Config.in" source "boot/shim/Config.in" diff --git a/boot/opensbi/Config.in b/boot/opensbi/Config.in new file mode 100644 index 0000000000..65d39aa664 --- /dev/null +++ b/boot/opensbi/Config.in @@ -0,0 +1,23 @@ +config BR2_TARGET_OPENSBI + bool "opensbi" + depends on BR2_riscv + help + OpenSBI aims to provide an open-source and extensible + implementation of the RISC-V SBI specification for a platform + specific firmware (M-mode) and a general purpose OS, hypervisor + or bootloader (S-mode or HS-mode). OpenSBI implementation can + be easily extended by RISC-V platform or System-on-Chip vendors + to fit a particular hadware configuration. + + https://github.com/riscv/opensbi.git + +if BR2_TARGET_OPENSBI +config BR2_TARGET_OPENSBI_PLAT + string "OpenSBI Platform" + default "" + help + Specifies the OpenSBI platform to build. If no platform is specified only + the OpenSBI platform independent static library libsbi.a is built. If a + platform is specified then the platform specific static library libplatsbi.a + and firmware examples are built. +endif diff --git a/boot/opensbi/opensbi.mk b/boot/opensbi/opensbi.mk new file mode 100644 index 0000000000..ac4b70d8a8 --- /dev/null +++ b/boot/opensbi/opensbi.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# OpenSBI +# +################################################################################ + +OPENSBI_VERSION = ca20ac0cd4c099006d4eea4d9ac7bd7b58e2ae0f +OPENSBI_SITE = git://github.com/riscv/opensbi.git +OPENSBI_LICENSE = BSD-2-Clause +OPENSBI_LICENSE_FILES = COPYING.BSD +OPENSBI_INSTALL_IMAGES = YES + +OPENSBI_MAKE_ENV = \ + CROSS_COMPILE=$(TARGET_CROSS) + +OPENSBI_PLAT = $(call qstrip,$(BR2_TARGET_OPENSBI_PLAT)) +ifneq ($(OPENSBI_PLAT),) + OPENSBI_MAKE_ENV += PLATFORM=$(OPENSBI_PLAT) +endif + +define OPENSBI_BUILD_CMDS + $(TARGET_MAKE_ENV) $(OPENSBI_MAKE_ENV) $(MAKE) -C $(@D) +endef + +ifneq ($(OPENSBI_PLAT),) +define OPENSBI_INSTALL_IMAGES_CMDS + $(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_jump.bin $(BINARIES_DIR)/fw_jump.bin + $(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_jump.elf $(BINARIES_DIR)/fw_jump.elf +endef +endif + +$(eval $(generic-package)) diff --git a/configs/qemu_riscv32_virt_defconfig b/configs/qemu_riscv32_virt_defconfig index f7e9a23106..96d971333a 100644 --- a/configs/qemu_riscv32_virt_defconfig +++ b/configs/qemu_riscv32_virt_defconfig @@ -23,4 +23,6 @@ BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/riscv32-virt/linux.config" BR2_LINUX_KERNEL_IMAGE=y # Bootloader -BR2_TARGET_RISCV_PK=y +BR2_TARGET_OPENSBI=y +BR2_TARGET_OPENSBI_USE_PLAT=y +BR2_TARGET_OPENSBI_PLAT="qemu/virt" diff --git a/configs/qemu_riscv64_virt_defconfig b/configs/qemu_riscv64_virt_defconfig index ae67979d29..05d2764003 100644 --- a/configs/qemu_riscv64_virt_defconfig +++ b/configs/qemu_riscv64_virt_defconfig @@ -22,4 +22,6 @@ BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y BR2_LINUX_KERNEL_IMAGE=y # Bootloader -BR2_TARGET_RISCV_PK=y +BR2_TARGET_OPENSBI=y +BR2_TARGET_OPENSBI_USE_PLAT=y +BR2_TARGET_OPENSBI_PLAT="qemu/virt"