Subject: ARM64: Disabling warnings about deprecated armv8 instructions

From: [email-masked] (Michael Zoran)
Date: Sun, 22 Jan 2017 04:21:02 -0800

On Sun, 2017-01-22 at 12:46 +0100, Alexander Stein wrote:
> ?On Sunday, January 22, 2017, 9:09:37 AM CET Ard Biesheuvel wrote:
> > On 22 January 2017 at 08:58, Michael Zoran <[email-masked]>
> > wrote:
> > > On Sun, 2017-01-22 at 09:52 +0100, Alexander Stein wrote:
> > > > Hi Michael,
> > > > 
> > > > On Sunday, January 22, 2017, 12:07:04 AM CET Michael Zoran
> > > > wrote:
> > > > > I'm not sure if this if the correct place to be asking
> > > > > this.???The
> > > > > RPI
> > > > > 3 running ARM64 is slowly reaching the point of being about
> > > > > to
> > > > > seriously run a 32 bit vender OS like Raspbian.??When running
> > > > > Raspbian,
> > > > > I'm seeing a very large number(thousands) of kernel log
> > > > > messages
> > > > > about
> > > > > deprecated instructions especially setend and barrier
> > > > > instuctions.
> > > > > This can be very annoying and is completely filling the
> > > > > kernel log.
> > > > > 
> > > > > I'm considering submitting a patch to add a Kconfig option to
> > > > > disable
> > > > > these warnings with the default being to keep the warnings
> > > > > enabled.??I
> > > > > was wondering if such a patch could be seriously considered.
> > > > 
> > > > Could you please provide an example of those warning an what is
> > > > trigging
> > > > those?
> > > > 
> > > > Thanks and best regards,
> > > > Alexander
> > > 
> > > Sure, here is a snipped from dmesg.??I think this is happening
> > > because
> > > the entire Raspbian OS is compiled with a custom gcc compiler
> > > that is
> > > targeting arm6+VFP.
> > > 
> > > I can double check, but I think the instructions are being
> > > emulated in
> > > hardware so they are just filling the log and slowing things
> > > down.
> > > 
> > > [10685.558480] cp15barrier_handler: 197896 callbacks suppressed
> > > [10685.558487] "Xorg" (656) uses deprecated CP15 Barrier
> > > instruction at
> > > 0xf707fe9c
> > > [10685.558504] "Xorg" (656) uses deprecated CP15 Barrier
> > > instruction at
> > > 0xf7015944
> > > [10685.558511] "Xorg" (656) uses deprecated CP15 Barrier
> > > instruction at
> > > 0xf7012494
> > > [10685.558518] "Xorg" (656) uses deprecated CP15 Barrier
> > > instruction at
> > > 0xf70159b4
> > > [10685.558527] "Xorg" (656) uses deprecated CP15 Barrier
> > > instruction at
> > > 0xf7011478
> > > [10685.558533] "Xorg" (656) uses deprecated CP15 Barrier
> > > instruction at
> > > 0xf70114e8
> > > [10685.558540] "Xorg" (656) uses deprecated CP15 Barrier
> > > instruction at
> > > 0xf7015944
> > > [10685.558547] "Xorg" (656) uses deprecated CP15 Barrier
> > > instruction at
> > > 0xf7012494
> > > [10685.558553] "Xorg" (656) uses deprecated CP15 Barrier
> > > instruction at
> > > 0xf70159b4
> > > [10685.558560] "Xorg" (656) uses deprecated CP15 Barrier
> > > instruction at
> > > 0xf7011478
> > > [10685.559179] compat_setend_handler: 1078 callbacks suppressed
> > > [10685.559188] "systemd-journal" (138) uses deprecated setend
> > > instruction at 0xf76a66f4
> > > [10685.559196] "systemd-journal" (138) uses deprecated setend
> > > instruction at 0xf76a6bd8
> > > [10685.559209] "systemd-journal" (138) uses deprecated setend
> > > instruction at 0xf76a66f4
> > > [10685.559216] "systemd-journal" (138) uses deprecated setend
> > > instruction at 0xf76a6bd8
> > > [10685.559231] "systemd-journal" (138) uses deprecated setend
> > > instruction at 0xf76a66f4
> > > [10685.559237] "systemd-journal" (138) uses deprecated setend
> > > instruction at 0xf76a6bd8
> > > [10685.559246] "systemd-journal" (138) uses deprecated setend
> > > instruction at 0xf76a66f4
> > > [10685.559253] "systemd-journal" (138) uses deprecated setend
> > > instruction at 0xf76a6bd8
> > > [10685.559269] "systemd-journal" (138) uses deprecated setend
> > > instruction at 0xf76a66f4
> > > [10685.559276] "systemd-journal" (138) uses deprecated setend
> > > instruction at 0xf76a6bd8
> > 
> > You can disable the emulation by doing
> > 
> > echo 2 >/proc/sys/abi/setend
> > echo 2 >/proc/sys/abi/cp15_barrier
> 
> This reminds me of /proc/cpu/alignment to detect alignment problems
> in your?
> application. Although armv6+ can handle unaligned access in most (!)
> cases you?
> might want to trap thos cases. I would consider this a similar way.
> IMHO raspbian, still supporting raspberry pi 1 (armv6), should
> silence those?
> warnings.
> 
> Best regards,
> Alexander
> 

Thanks, but I see multiple ways this could be solved which is partially
why I sent out the initial e-mail.

Here are just a few of the options.
1. Add a .config option to silence the warnings.
2. Detect the binary type to detectermine if it should be silenced.
3. #ifdef out the complaining code in downstream sources.
4. Have various distributions write to /proc/sys/abi/* at system boot.

The list is probably endless.

And I think this is closely related to the other topic of setting the
linux personality based on detection of the binary.