RE: [PATCH] x86 64: Add new device Cordoba Edge Platform

2023-10-31 Thread Xiaojun Liu
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

2023-10-31 Thread Michele Bisogno
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

2023-10-31 Thread Jonas Gorski
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

2023-10-31 Thread Robert Marko
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

2023-10-31 Thread Michele Bisogno
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

2023-10-31 Thread Hauke Mehrtens
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

2023-10-31 Thread Legale Legale
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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