From patchwork Thu Nov 23 17:47:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Emekcan Aras X-Patchwork-Id: 35146 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 aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 35746C624B4 for ; Thu, 23 Nov 2023 17:47:29 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web10.99069.1700761647751276761 for ; Thu, 23 Nov 2023 09:47:27 -0800 Authentication-Results: mx.groups.io; dkim=none (message not signed); spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: emekcan.aras@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id D98121063; Thu, 23 Nov 2023 09:48:13 -0800 (PST) Received: from cassini-003.cambridge.arm.com (cassini-003.cambridge.arm.com [10.1.198.36]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id ABF333F7A6; Thu, 23 Nov 2023 09:47:26 -0800 (PST) From: emekcan.aras@arm.com To: meta-arm@lists.yoctoproject.org, Ross.Burton@arm.com, Jon.Mason@arm.com Cc: nd@arm.com, Emekcan Aras Subject: [PATCH nanbield 5/5] arm-bsp/u-boot: corstone1000: enable virtio-net support for FVP Date: Thu, 23 Nov 2023 17:47:11 +0000 Message-Id: <20231123174711.2175145-6-emekcan.aras@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231123174711.2175145-1-emekcan.aras@arm.com> References: <20231123174711.2175145-1-emekcan.aras@arm.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 23 Nov 2023 17:47:29 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/meta-arm/message/5270 From: Emekcan Aras Use Ethernet over VirtIO on FVP due to lan91c111 Ethernet driver support dropped from U-Boot. This patch enables virtio-net device in u-boot to pass ACS tests related to NIC and PXE. The current ethernet device still works in linux kernel and corstone1000-mps3 Ethernet device is supported by u-boot, so no change is required regarding existing Ethernet device. Signed-off-by: Emekcan Aras --- .../u-boot/u-boot-corstone1000.inc | 1 + ...rstone1000-enable-virtio-net-support.patch | 97 +++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 meta-arm-bsp/recipes-bsp/u-boot/u-boot/corstone1000/0042-corstone1000-enable-virtio-net-support.patch diff --git a/meta-arm-bsp/recipes-bsp/u-boot/u-boot-corstone1000.inc b/meta-arm-bsp/recipes-bsp/u-boot/u-boot-corstone1000.inc index 01a8683c..b6b7a04f 100644 --- a/meta-arm-bsp/recipes-bsp/u-boot/u-boot-corstone1000.inc +++ b/meta-arm-bsp/recipes-bsp/u-boot/u-boot-corstone1000.inc @@ -49,6 +49,7 @@ SRC_URI:append = " \ file://0039-enables-ondisk-capsule-update-feature.patch \ file://0040-fix-runtime-capsule-update-flags-checks.patch \ file://0041-scatter-gather-flag-workaround.patch \ + file://0042-corstone1000-enable-virtio-net-support.patch \ " do_configure:append(){ diff --git a/meta-arm-bsp/recipes-bsp/u-boot/u-boot/corstone1000/0042-corstone1000-enable-virtio-net-support.patch b/meta-arm-bsp/recipes-bsp/u-boot/u-boot/corstone1000/0042-corstone1000-enable-virtio-net-support.patch new file mode 100644 index 00000000..d94e26a5 --- /dev/null +++ b/meta-arm-bsp/recipes-bsp/u-boot/u-boot/corstone1000/0042-corstone1000-enable-virtio-net-support.patch @@ -0,0 +1,97 @@ +From 2ddd34b6838e836cf94a9da2f65cd01a21252846 Mon Sep 17 00:00:00 2001 +From: Emekcan Aras +Date: Wed, 15 Nov 2023 16:04:06 +0000 +Subject: [PATCH] corstone1000: enable virtio-net support + +Adds virtio-net support in corstone1000-fvp. + +Signed-off-by: Emekcan Aras +Upstream-Status: Pending [Not submitted to upstream yet] +--- + arch/arm/dts/corstone1000-fvp.dts | 6 ++++++ + board/armltd/corstone1000/corstone1000.c | 24 +++++++++++++++++++++++- + configs/corstone1000_defconfig | 2 ++ + 3 files changed, 31 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/dts/corstone1000-fvp.dts b/arch/arm/dts/corstone1000-fvp.dts +index 26b0f1b3ce..8e54a40113 100644 +--- a/arch/arm/dts/corstone1000-fvp.dts ++++ b/arch/arm/dts/corstone1000-fvp.dts +@@ -21,6 +21,12 @@ + reg-io-width = <2>; + }; + ++ virtio: virtio-net@40400000 { ++ compatible = "virtio,mmio"; ++ reg = <0x40400000 0x10000>; ++ interrupts = <145>; ++ }; ++ + vmmc_v3_3d: fixed_v3_3d { + compatible = "regulator-fixed"; + regulator-name = "vmmc_supply"; +diff --git a/board/armltd/corstone1000/corstone1000.c b/board/armltd/corstone1000/corstone1000.c +index e3c0e5bf50..ef74dc9032 100644 +--- a/board/armltd/corstone1000/corstone1000.c ++++ b/board/armltd/corstone1000/corstone1000.c +@@ -18,6 +18,7 @@ + #include + #include + #include ++#include + + /* remove the DT nodes not needed in Linux */ + DT_NON_COMPLIANT_PURGE_LIST(foo) = { +@@ -101,6 +102,14 @@ static struct mm_region corstone1000_mem_map[] = { + .size = 0x80000000UL, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_INNER_SHARE ++ }, { ++ /* ethernet */ ++ .virt = 0x40400000UL, ++ .phys = 0x40400000UL, ++ .size = 0x00100000UL, ++ .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | ++ PTE_BLOCK_NON_SHARE | ++ PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, { + /* List terminator */ + 0, +@@ -150,10 +159,23 @@ void fwu_plat_get_bootidx(uint *boot_idx) + int board_late_init(void) + { + struct disk_partition part_info; +- struct udevice *dev, *bdev; ++ struct udevice *dev, *bdev,*virtio_bus, *virtio_child;; + struct nvmxip_plat *plat; + struct blk_desc *desc; + int ret; ++ const char *cmp_dtb = DEVICE_TREE; ++ ++ if (!strcmp(cmp_dtb, "corstone1000-fvp")) { ++ ret = uclass_first_device_err(UCLASS_VIRTIO, &virtio_bus); ++ if (!virtio_bus){ ++ log_err("Cannot find virtio device\n"); ++ return ret; ++ } ++ while (virtio_bus) { ++ device_foreach_child_probe(virtio_child, virtio_bus); ++ uclass_next_device(&virtio_bus); ++ } ++ } + + ret = uclass_first_device_err(UCLASS_NVMXIP, &dev); + if (ret < 0) { +diff --git a/configs/corstone1000_defconfig b/configs/corstone1000_defconfig +index 2de3f5d7b3..8770b474e2 100644 +--- a/configs/corstone1000_defconfig ++++ b/configs/corstone1000_defconfig +@@ -78,3 +78,5 @@ CONFIG_DM_GPIO=y + CONFIG_SYSRESET_PSCI=y + CONFIG_EFI_SET_TIME=y + CONFIG_EFI_GET_TIME=y ++CONFIG_VIRTIO_NET=y ++CONFIG_VIRTIO_MMIO=y +-- +2.25.1 +