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

Marc Kleine-Budde mkl at pengutronix.de
Tue Oct 20 07:56:40 PDT 2026


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 at vger.kernel.org list, where I'm
not subscribed:

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

> 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   |
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20261020/6dca4244/attachment.sig>


More information about the linux-arm-kernel mailing list