awk problem on pistachio (24kc+24kf)
Hauke Mehrtens
hauke at hauke-m.de
Sat Nov 6 09:05:05 PDT 2021
On 11/5/21 2:24 PM, Daniel Golle wrote:
> On Tue, Nov 02, 2021 at 11:49:02PM +0100, Hauke Mehrtens wrote:
>> Hi,
>>
>> On pistachio sysupgrade in master fails and I got down to a problem with
>> awk. This command returns different results on pistachio compared to other
>> targets:
>> echo "mtd2: 00002000 00001000 \"uEnv\"" | awk -F: '{print $1}'
>>
>> When I execute this on an lantiq/xrx200 or mt7622 device I get this:
>> mtd2
>>
>> When I execute this command on pistachio in master I get this:
>> mtd2: 00002000 00001000 "uEnv"
>
> So the separator doesn't match. Maybe another integer bitwidth issue,
> ie. comparing char aka. uint8 with uint16 or uint32 having their upper
> bits not zero'd because only the first 8 bit of the register were
> loaded, leaving old value in the remaining 8 or 24 bits?
>
> Another interesting thing would be to try moving the position of the
> ':' as any variation in the result would be a clear hint towards
> MIPS unaligned access being the problem...
Moving the position of the ":" did not help.
> There are also hints on kernel mailing lists that Ingenic
> implementation of MIPS interAptiv somehow differs in how cpu cache has
> to be dealt with in combination with some memory access instructions
> (I didn't get into the details and can't find it again atm)
I tried this on the InterAptiv core used by Maxlinear in MIPS BE mode
with an OpenWrt 19.07 user space and do not see the problem there.
When I build OpenWrt without floating point and use it on the pistachio
it still fails.
> Does this also happen when using `cut -d: -f1` instead of the `awk`
> call (not that this would solve anything, but if it happens also when
> using `cut` it would be easier to debug as `cut` is much less complex
> than `awk`, both are busybox applets).
With cut I do not see the problem:
root at OpenWrt:/# echo "mtd2: 00002000 00001000 \"uEnv\"" | cut -d: -f1
mtd2
>> This is part of the find_mtd_index() function used for sysupgrade.
>>
>> The pistachio target is MIPS 32 little Endian with hardware floating point
>> activated. This target is not much used, nobody complained that it did not
>> boot for multiple months, but I am interested why it fails.
>
> Unfortunately my pistachio board got stolen from my car 2 years ago
> (among with tons of other equipment I had boxed up there).
>
>> I also see this problem with OpenWrt master from August 2020 which was still
>> on the board.
>
> So at least this is not due to recent GCC or musl updates...
> (that doesn't make it better though)
This could be a CPU problem. I will just ignore this problem for now and
take care of other stuff as pistachio is not used much.
Hauke
More information about the openwrt-devel
mailing list