RE: [PATCH] x86 64: Add new device Cordoba Edge Platform
Hi, Thank you for your guide! I will resubmit it. -Original Message- From: Paul Spooren Sent: Tuesday, October 31, 2023 1:18 AM To: Xiaojun Liu Cc: Philip Prindeville ; openwrt-devel Subject: Re: [PATCH] x86 64: Add new device Cordoba Edge Platform Hi, We kind of don’t add image just to contain extra drivers. Extra UCI defaults for eth ordering are fine but please don’t add an extra image if it just contains 1-2 extra packages, installable via the ImageBuilder or OPKG. > >> On Oct 23, 2023, at 8:52 PM, Xiaojun Liu wrote: >> >> Add new device Cordoba Edge Platform >> Device name:Cordoba Edge Platform >> hardware specifications: CPU - Intel Atom C3000 >> WiFi - mt7915e >> >> Signed-off-by: Xiaojun Liu mailto:xiaojun@silicom.co.il >> --- >> >> target/linux/x86/base-files/etc/board.d/02_network | 11 +++ >> target/linux/x86/image/64.mk | 10 ++ >> 2 files changed, 21 insertions(+) >> >> >> diff --git a/target/linux/x86/base-files/etc/board.d/02_network >> b/target/linux/x86/base-files/etc/board.d/02_network >> index e00e8c04dd..be56153695 100644 >> --- a/target/linux/x86/base-files/etc/board.d/02_network >> +++ b/target/linux/x86/base-files/etc/board.d/02_network >> @@ -75,6 +75,17 @@ traverse-technologies-geos) >>macaddr="$(cat /sys/class/net/eth0/address)" 2>/dev/null >>[ -n "$macaddr" ] && ucidef_set_interface_macaddr "wan" "$macaddr" >>;; >> +silicom-80500-0214-e53) >> +ucidef_set_network_device_path "wan0" >> "pci:00/:00:16.0/:03:00.0" >> +ucidef_set_network_device_path "wan1" >> "pci:00/:00:16.0/:03:00.1" >> +ucidef_set_network_device_path "media0" >> "pci:00/:00:17.0/:02:00.0" >> +ucidef_set_network_device_path "media1" >> "pci:00/:00:17.0/:02:00.1" >> +ucidef_set_network_device_path "eth0" >> "pci:00/:00:0c.0/:04:00.0" >> +ucidef_set_network_device_path "eth1" >> "pci:00/:00:0e.0/:05:00.0" >> +ucidef_set_network_device_path "eth2" >> "pci:00/:00:0f.0/:06:00.0" >> +ucidef_set_network_device_path "eth3" >> "pci:00/:00:10.0/:07:00.0" >> +ucidef_set_interfaces_lan_wan "eth0 eth1 eth2 eth3" "wan0" >> +;; >> esac >> board_config_flush >> >> diff --git a/target/linux/x86/image/64.mk >> b/target/linux/x86/image/64.mk index 5ec9978b66..4aeb98 100644 >> --- a/target/linux/x86/image/64.mk >> +++ b/target/linux/x86/image/64.mk >> @@ -8,3 +8,13 @@ define Device/generic >> GRUB2_VARIANT := generic >> endef >> TARGET_DEVICES += generic >> + >> +define Device/cordoba >> + DEVICE_VENDOR := Cordoba >> + DEVICE_MODEL := x86/64 >> + DEVICE_PACKAGES += \ >> +kmod-igc kmod-ixgbe \ >> +kmod-mt7915-firmware >> + GRUB2_VARIANT := generic >> +endef >> +TARGET_DEVICES += cordoba Please remove those lines in 64.mk. Thanks for you work and interest in OpenWrt support for your device. Best, Paul ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel
Re: Adding a new platform: renesas rz
Hi Robert, thanks for the encouragement. I'll go for plain "renesas" then. I am a bit hesitating on when / how to submit patches. At the moment the image generated is for the sd card (similar to Raspberry Pi) and for a single device (RZ/G2L) However I am planning to support more boot memories (definitely QSPI NOR) and more device from the same "family", i.e. very similar and from OpenWRT point of view probably it's just a device tree change. Shall I focus on one device first and later on submit the rest? I am still a newbie, I might discover that things should have been done in a specific way only after the first review, that I know it will be a disaster... :) Regards, Michele On Mon, 30 Oct 2023 at 21:40, Robert Marko wrote: > > On Mon, 30 Oct 2023 at 10:40, Michele Bisogno > wrote: > > > > Hi, > > > > I've been a happy OpenWRT user for many years now, always buying > > routers that could allow me to run it easily. > > Hi, nice to hear this. > > > > > I've been working (actually only in my free time as a hobby) on > > porting OpenWRT onto this Renesas board: > > https://www.renesas.com/eu/en/products/microcontrollers-microprocessors/rz-mpus/rzg2l-evkit-rzg2l-evaluation-board-kit > > which features this Arm Cortex-A55 based device: > > https://www.renesas.com/eu/en/products/microcontrollers-microprocessors/rz-mpus/rzg2l-general-purpose-microprocessors-dual-core-arm-cortex-a55-12-ghz-cpus-and-single-core-arm-cortex-m33 > > > > I guess this is a new platform, since it does not really fit in any of > > the already supported ones. > > > > I got it working and I am polishing the patch before submitting it. > > The support of this device is already mainlined in the Linux kernel, > > so I am using 6.1 as is with the appropriate config. > > Arm Trusted Firmware and u-boot are instead taken from the respective > > Renesas forks, available on github. > > Great, these Reneas SoC-s are rather well supported in respective > upstream projects. > > > > > However this is the first time I do that, and I am still reading and > > learning, so I would like to get opinions, hints, why not constructive > > criticism and hopefully encouragement. > > I definitively encourage people to contribute towards more HW support, > especially HW which is mostly upstream. > > > > > For example, naming (renesas? renesas-rz? rz?) and structure of the > > subfolders. There are other variants I would like to add: RZ/G2LC, > > RZ/G2UL and maybe others. > > To me, just "renesas" sounds good and then you can introduce the individual > SoC families as subtargets. > > Regards, > Robert > > > > System > > > > HostnameOpenWrt > > ModelRenesas SMARC EVK based on r9a07g044l2 > > ArchitectureARMv8 Processor rev 0 > > Target Platformrz/g2l > > Firmware VersionOpenWrt SNAPSHOT r24187-bb8fd41f9a / LuCI Master > > git-23.294.26440-30a8a0d > > Kernel Version6.1.59 > > Local Time2023-10-29 07:44:17 > > Uptime0h 9m 11s > > Load Average0.13, 0.08, 0.05 > > > > ___ > > openwrt-devel mailing list > > openwrt-devel@lists.openwrt.org > > https://lists.openwrt.org/mailman/listinfo/openwrt-devel ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel
Re: [PATCH] Deactivate _FORTIFY_SOURCE in jitterentropy-base.c
Hi, On Mon, 30 Oct 2023 at 23:11, Hauke Mehrtens wrote: > > This fixes compilation with glibc. > > _FORTIFY_SOURCE only works with compiler optimizations activated. > We have to deactivate it when we set -O0. > > This fixes the following error message with glibc: > error: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) > [-Werror=cpp] > > musl libc does not show an error message in this case, but has the same > internal problems. > > Signed-off-by: Hauke Mehrtens > --- > CMakeLists.txt | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/CMakeLists.txt b/CMakeLists.txt > index a1ee0c1..78954c0 100644 > --- a/CMakeLists.txt > +++ b/CMakeLists.txt > @@ -22,8 +22,9 @@ ADD_EXECUTABLE(urngd > ) > TARGET_LINK_LIBRARIES(urngd ${ubox}) > > -# jitter RNG must not be compiled with optimizations > +# jitter RNG must not be compiled with optimizations, _FORTIFY_SOURCE needs > optimizations > SET_SOURCE_FILES_PROPERTIES(${JTEN_DIR}/jitterentropy-base.c PROPERTIES > COMPILE_FLAGS -O0) > +SET_SOURCE_FILES_PROPERTIES(${JTEN_DIR}/jitterentropy-base.c PROPERTIES > COMPILE_FLAGS -U_FORTIFY_SOURCE) You dropped the -O0 here, that needs to stay to disable optimizations. Regards, Jonas ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel
Re: Adding a new platform: renesas rz
On Tue, 31 Oct 2023 at 09:56, Michele Bisogno wrote: > > Hi Robert, > > thanks for the encouragement. > I'll go for plain "renesas" then. > > I am a bit hesitating on when / how to submit patches. > At the moment the image generated is for the sd card (similar to > Raspberry Pi) and for a single device (RZ/G2L) > However I am planning to support more boot memories (definitely QSPI > NOR) and more device from the same "family", i.e. very similar and > from OpenWRT point of view probably it's just a device tree change. > > Shall I focus on one device first and later on submit the rest? > I am still a newbie, I might discover that things should have been > done in a specific way only after the first review, that I know it > will be a disaster... :) To me, the most sense would be to provide one or 2 boards as part of the initial target but with multiple boot options supported so later boards can be easily added. Personally, GH PR-s are rather good for adding new stuff as it makes commenting on things much easier and cleaner, and we can let CI do its thing as well. Regards, Robert > > Regards, > Michele > > On Mon, 30 Oct 2023 at 21:40, Robert Marko wrote: > > > > On Mon, 30 Oct 2023 at 10:40, Michele Bisogno > > wrote: > > > > > > Hi, > > > > > > I've been a happy OpenWRT user for many years now, always buying > > > routers that could allow me to run it easily. > > > > Hi, nice to hear this. > > > > > > > > I've been working (actually only in my free time as a hobby) on > > > porting OpenWRT onto this Renesas board: > > > https://www.renesas.com/eu/en/products/microcontrollers-microprocessors/rz-mpus/rzg2l-evkit-rzg2l-evaluation-board-kit > > > which features this Arm Cortex-A55 based device: > > > https://www.renesas.com/eu/en/products/microcontrollers-microprocessors/rz-mpus/rzg2l-general-purpose-microprocessors-dual-core-arm-cortex-a55-12-ghz-cpus-and-single-core-arm-cortex-m33 > > > > > > I guess this is a new platform, since it does not really fit in any of > > > the already supported ones. > > > > > > I got it working and I am polishing the patch before submitting it. > > > The support of this device is already mainlined in the Linux kernel, > > > so I am using 6.1 as is with the appropriate config. > > > Arm Trusted Firmware and u-boot are instead taken from the respective > > > Renesas forks, available on github. > > > > Great, these Reneas SoC-s are rather well supported in respective > > upstream projects. > > > > > > > > However this is the first time I do that, and I am still reading and > > > learning, so I would like to get opinions, hints, why not constructive > > > criticism and hopefully encouragement. > > > > I definitively encourage people to contribute towards more HW support, > > especially HW which is mostly upstream. > > > > > > > > For example, naming (renesas? renesas-rz? rz?) and structure of the > > > subfolders. There are other variants I would like to add: RZ/G2LC, > > > RZ/G2UL and maybe others. > > > > To me, just "renesas" sounds good and then you can introduce the individual > > SoC families as subtargets. > > > > Regards, > > Robert > > > > > > System > > > > > > HostnameOpenWrt > > > ModelRenesas SMARC EVK based on r9a07g044l2 > > > ArchitectureARMv8 Processor rev 0 > > > Target Platformrz/g2l > > > Firmware VersionOpenWrt SNAPSHOT r24187-bb8fd41f9a / LuCI Master > > > git-23.294.26440-30a8a0d > > > Kernel Version6.1.59 > > > Local Time2023-10-29 07:44:17 > > > Uptime0h 9m 11s > > > Load Average0.13, 0.08, 0.05 > > > > > > ___ > > > openwrt-devel mailing list > > > openwrt-devel@lists.openwrt.org > > > https://lists.openwrt.org/mailman/listinfo/openwrt-devel ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel
Re: Adding a new platform: renesas rz
On Tue, 31 Oct 2023 at 10:06, Robert Marko wrote: > > To me, the most sense would be to provide one or 2 boards as part of the > initial > target but with multiple boot options supported so later boards can be > easily added. > > Personally, GH PR-s are rather good for adding new stuff as it makes > commenting on > things much easier and cleaner, and we can let CI do its thing as well. > OK, then 2 boards, sd card + QSPI and use github pull requests. Thanks, Michele ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel
[PATCH v2] Deactivate _FORTIFY_SOURCE in jitterentropy-base.c
This fixes compilation with glibc. _FORTIFY_SOURCE only works with compiler optimizations activated. We have to deactivate it when we set -O0. This fixes the following error message with glibc: error: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Werror=cpp] musl libc does not show an error message in this case, but has the same internal problems. Signed-off-by: Hauke Mehrtens --- CMakeLists.txt | 7 +-- 1 file changed, 5 insertions(+), 2 deletions(-) Changelog: v2: Use SET_PROPERTY and COMPILE_OPTIONS diff --git a/CMakeLists.txt b/CMakeLists.txt index a1ee0c1..f415f87 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,8 +22,11 @@ ADD_EXECUTABLE(urngd ) TARGET_LINK_LIBRARIES(urngd ${ubox}) -# jitter RNG must not be compiled with optimizations -SET_SOURCE_FILES_PROPERTIES(${JTEN_DIR}/jitterentropy-base.c PROPERTIES COMPILE_FLAGS -O0) +# jitter RNG must not be compiled with optimizations, _FORTIFY_SOURCE needs optimizations +SET_PROPERTY( + SOURCE ${JTEN_DIR}/jitterentropy-base.c + APPEND PROPERTY COMPILE_OPTIONS -U_FORTIFY_SOURCE -O0 +) INSTALL(TARGETS urngd RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR}) -- 2.39.2 ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel
[PATCH] ipq8074: add YUNCORE AX880 BDF
This patch add yuncore ax880 from stock fw (bdwlan.b290). This bdf file was generated with ath11k-bdencoder stock fw bdf and board-2.json ``` [ { "board": [ { "names": [ "bus=ahb,qmi-chip-id=0,qmi-board-id=255,variant=Yuncore-AX880" ], "data": "bus=ahb,qmi-chip-id=0,qmi-board-id=255,variant=Yuncore-AX880.bin" } ], "regdb": [] } ] ``` Signed-off-by: Isaev Ruslan --- board-yuncore_ax880.ipq8074 | Bin 0 -> 131176 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 board-yuncore_ax880.ipq8074 diff --git a/board-yuncore_ax880.ipq8074 b/board-yuncore_ax880.ipq8074 new file mode 100644 index ..e4b0f4af3a76b440b39dc83763d0e5977554353c GIT binary patch literal 131176 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