Re: [PATCH v1 1/2] vdso: Add VDSO_UNALIGNED_PACKED config option for ARMv5

From: Marc Kleine-Budde

Date: Tue Oct 20 2026 - 10:58:40 EST


On 20.10.2026 10:24:51, Arnd Bergmann wrote:
> > FYI: there is the kconfig Symbol HAVE_EFFICIENT_UNALIGNED_ACCESS. Can we
> > make use of it?

Just noticed that sashiko's review contained the same remark, but the
bot only posts to the linux-perf-users@xxxxxxxxxxxxxxx list, where I'm
not subscribed:

https://lore.kernel.org/all/sashiko-outbox-178182@xxxxxxxxxx/

> That would be better, but I still hope we can just get back to the
> portable code across all architectures for the in-kernel version.
>
> I have one more request for you: can you check /proc/cpu/alignment
> on the system that shows the performance regression with and without
> the patch?

When booted via NFS-root to the login prompt, we have about 570k System
alignment fixups, all in the IP stack: :/

__udp4_lib_rcv+0x78/0xc6c
icmpv6_echo_reply+0x160/0x504
ip_send_unicast_reply+0xf0/0x3f8
ndisc_send_skb+0x15c/0x40c
rawv6_recvmsg+0x114/0x3b4
tcp_rcv_established+0x3ec/0xba0
tcp_v4_fill_cb+0x70/0xec
tcp_validate_incoming+0x540/0x868

Comparing v7.0.12 with mainline "unaligned.h" and reverting commit
a339671db64b ("vdso: Switch get/put_unaligned() from packed struct to
memcpy()") brings no difference with respect to alignment problems. But
I see the increase in I/O performance (measured with "fio" [1]) on a
UBIFS/NAND file system:

- v7.0.12 NFS root
User: 0
System: 573956 (tcp_measure_rcv_mss+0xe4/0x1e0)
Skipped: 0
Half: 4
Word: 573940
DWord: 0
Multi: 34
User faults: 0 (ignored)

WRITE: bw=272KiB/s (278kB/s), 272KiB/s-272KiB/s (278kB/s-278kB/s), io=32.0MiB (33.6MB), run=120532-120532msec

- v7.0.12 NFS root, reverted
User: 0
System: 574214 (tcp_measure_rcv_mss+0xe4/0x1e0)
Skipped: 0
Half: 4
Word: 574183
DWord: 0
Multi: 27
User faults: 0 (ignored)

WRITE: bw=343KiB/s (352kB/s), 343KiB/s-343KiB/s (352kB/s-352kB/s), io=32.0MiB (33.6MB), run=95439-95439msec


Booting from UBIFS, so only the lab background IP noise...

- v7.0.12 UBIFS/NAND root, reverted
User: 0
System: 164 (rawv6_recvmsg+0x114/0x3b4)
Skipped: 0
Half: 0
Word: 127
DWord: 0
Multi: 37
User faults: 0 (ignored)

regards,
Marc

[1] fio --name=rw \
--filename=/var/stat/testfile \
--size=8M \
--rw=randwrite \
--bs=4k \
--direct=0 \
--fsync=1 \
--numjobs=4 \
--group_reporting

FYI: disabling CONFIG_FTRACE brings +8% compared to v7.0.12, reverted:

- v7.0.12 NFS root, reverted, w/o tracers

WRITE: bw=371KiB/s (380kB/s), 371KiB/s-371KiB/s (380kB/s-380kB/s), io=32.0MiB (33.6MB), run=88411-88411msec

--
Pengutronix e.K. | Marc Kleine-Budde |
Embedded Linux | https://www.pengutronix.de |
Vertretung Nürnberg | Phone: +49-5121-206917-129 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-9 |

Attachment: signature.asc
Description: PGP signature