Re: Summary of the Arm ports BoF at DC17

2017-09-18 Thread Lennart Sorensen
On Mon, Sep 18, 2017 at 10:50:39AM +0100, Ian Campbell wrote:
> On Mon, 2017-09-18 at 10:15 +0100, Edmund Grimley Evans wrote:
> > > But it did remind me that on some platforms writing "2" to
> > > /proc/sys/abi/cp15_barrier will enable hw support for these
> > > instructions, since some platforms do support them even thought
> > > they
> > > are deprecated. It's certainly worth investigating what your
> > > hardware
> > > supports.
> > 
> > Not necessarily disagreeing with the content of that but the
> > terminology seems wrong: I don't have a reference to hand but I'm
> > fairly sure that hardware is *required* to support a "deprecated"
> > instruction. "Deprecated" usually means something like: unless you
> > know what you're doing you probably shouldn't use this feature
> > because
> > it might perform badly and it might not be available in a future
> > version (of the Arm architecture in this case).
> 
> In principal I agree with your interpretation of "Deprecated" but the
> wording in Linux's Documentation/arm64/legacy_instructions.txt which
> documents this stuff is:
> 
> * Hardware Execution
>   Value: 2
>   Although marked as deprecated, some implementations may support the
>   enabling/disabling of hardware support for the execution of these
>   instructions. Using hardware execution generally provides better
>   performance, but at the loss of ability to gather runtime statistics
>   about the use of the deprecated instructions.
> 
> Which in "some implementations may" at least implies the possibility
> that some hardware may not support these instructions. I don't seem to
> be able to download an ARM ARM right now to see what the actual wording
> used there is.

I believe it says some hardware might support disabling the support
for the deprecated instruction.  It does not say they don't support the
deprecated instruction.  Having the ability to disable a feature that
you ideally shouldn't use can be very helpful to make sure you aren't
accidentally using it after all.

Nothing in that text says that some hardware might not implement the
deprecated instruction.  The might is talking about the ability to turn
off deprecated instructions.

-- 
Len Sorensen



Re: Summary of the Arm ports BoF at DC17

2017-09-18 Thread Ian Campbell
On Mon, 2017-09-18 at 10:15 +0100, Edmund Grimley Evans wrote:
> > But it did remind me that on some platforms writing "2" to
> > /proc/sys/abi/cp15_barrier will enable hw support for these
> > instructions, since some platforms do support them even thought
> > they
> > are deprecated. It's certainly worth investigating what your
> > hardware
> > supports.
> 
> Not necessarily disagreeing with the content of that but the
> terminology seems wrong: I don't have a reference to hand but I'm
> fairly sure that hardware is *required* to support a "deprecated"
> instruction. "Deprecated" usually means something like: unless you
> know what you're doing you probably shouldn't use this feature
> because
> it might perform badly and it might not be available in a future
> version (of the Arm architecture in this case).

In principal I agree with your interpretation of "Deprecated" but the
wording in Linux's Documentation/arm64/legacy_instructions.txt which
documents this stuff is:

* Hardware Execution
  Value: 2
  Although marked as deprecated, some implementations may support the
  enabling/disabling of hardware support for the execution of these
  instructions. Using hardware execution generally provides better
  performance, but at the loss of ability to gather runtime statistics
  about the use of the deprecated instructions.

Which in "some implementations may" at least implies the possibility
that some hardware may not support these instructions. I don't seem to
be able to download an ARM ARM right now to see what the actual wording
used there is.

Ian.



Re: Summary of the Arm ports BoF at DC17

2017-09-18 Thread Edmund Grimley Evans
> But it did remind me that on some platforms writing "2" to
> /proc/sys/abi/cp15_barrier will enable hw support for these
> instructions, since some platforms do support them even thought they
> are deprecated. It's certainly worth investigating what your hardware
> supports.

Not necessarily disagreeing with the content of that but the
terminology seems wrong: I don't have a reference to hand but I'm
fairly sure that hardware is *required* to support a "deprecated"
instruction. "Deprecated" usually means something like: unless you
know what you're doing you probably shouldn't use this feature because
it might perform badly and it might not be available in a future
version (of the Arm architecture in this case).



Re: Summary of the Arm ports BoF at DC17

2017-09-18 Thread Ian Campbell
On Sun, 2017-09-17 at 12:59 -0700, Vagrant Cascadian wrote:
> On 2017-09-15, Ben Hutchings wrote:
> > On Thu, 2017-09-14 at 03:40 +0100, Steve McIntyre wrote:
> > [...]
> >> There is optional kernel support to trap the exceptions here
> >> and emulate the instructions, but it's really not recommended for
> >> serious use (e.g. on a build machine!).
> > [...]
> >
> > Why is it not recommended?  Terrible performance, or known bugs?
> 
> On arm64 kernels building armhf packages for the reproducible builds
> builders, I'm seeing hundreds or even thousands of kernel log warnings
> per second when building anything that makes use of
> CP15_BARRIER_EMULATION (e.g. anything using ghc):
> 
>   [85740.553537] cp15barrier_handler: 115316 callbacks suppressed
>   [85740.559358] "ghc-pkg" (29572) uses deprecated CP15 Barrier instruction 
> at 0xf5beaa7c
>   [85740.567344] "ghc-pkg" (29572) uses deprecated CP15 Barrier instruction 
> at 0xf5beaa9c
> 
> That *might* be sufficient to actually impact performance; it certainly
> makes it hard to read other kernel log messages on those machines...

I bet it does!

I was a bit surprised to find in the docs that there was no "silently
emulate" option in the proc interface, seems my memory was faulty
there.

But it did remind me that on some platforms writing "2" to
/proc/sys/abi/cp15_barrier will enable hw support for these
instructions, since some platforms do support them even thought they
are deprecated. It's certainly worth investigating what your hardware
supports.

Ian.



Re: Summary of the Arm ports BoF at DC17

2017-09-17 Thread Ben Hutchings
On Sun, 2017-09-17 at 21:30 +0100, Colin Watson wrote:
> On Sun, Sep 17, 2017 at 12:59:04PM -0700, Vagrant Cascadian wrote:
> > On 2017-09-15, Ben Hutchings wrote:
> > > On Thu, 2017-09-14 at 03:40 +0100, Steve McIntyre wrote:
> > > [...]
> > > > There is optional kernel support to trap the exceptions here
> > > > and emulate the instructions, but it's really not recommended for
> > > > serious use (e.g. on a build machine!).
> > > 
> > > [...]
> > > 
> > > Why is it not recommended?  Terrible performance, or known bugs?
> > 
> > On arm64 kernels building armhf packages for the reproducible builds
> > builders,
> 
> Steve was mostly talking about armel, I thought?
[...]
> I can't really speak for how it would be on armel, but I rather suspect
> that decent ARMv8 hardware would be sufficiently much faster than
> ARMv7-or-earlier kit to more than cancel out performance losses from
> instruction emulation.

For armel, we can't assume there *are* any memory barrier instructions.
 Instead, atomic operations libraries or code generators should use the
kuser helper memory_barrier(), which will do the right thing on an SMP
system and nothing on a UP system.  (kuser helpers are user-mode
functions exposed by the kernel.)

So far as I can see, there are three sets of deprecated and emulated
instructions and I think they should be replaced as follows:

 min. arch   armelarmhf
 -   --
swp/swpb ARMv4?  kuser cmpxchg()  ldrex+strex
cp15 memory barrier  ARMv6   N/A  dmb/dsb/isb
setend   ARMv6   N/A  rev/rev16

(I think swp/swpb were originally specified to bypass the data cache,
which meant they was never useful in user mode armel code.)

Ben.

-- 
Ben Hutchings
friends: People who know you well, but like you anyway.



signature.asc
Description: This is a digitally signed message part


Re: Summary of the Arm ports BoF at DC17

2017-09-17 Thread Steve McIntyre
On Fri, Sep 15, 2017 at 07:11:38PM +0100, Ben Hutchings wrote:
>On Thu, 2017-09-14 at 03:40 +0100, Steve McIntyre wrote:
>[...]
>> There is optional kernel support to trap the exceptions here
>> and emulate the instructions, but it's really not recommended for
>> serious use (e.g. on a build machine!).
>[...]
>
>Why is it not recommended?  Terrible performance, or known bugs?

I've heard estimates for performance slowdown of a factor of 20 or
more, maybe worse. It's very dependent on the hardware and the code in
question obviously. Sorry, I don't have any references, I'm
afraid. :-/ Of course, the massive log overheard that Vagrant reports
won't help much either!

I'm not aware of any bugs OTTOMH.

-- 
Steve McIntyre, Cambridge, UK.st...@einval.com
There's no sensation to compare with this
Suspended animation, A state of bliss



Re: Summary of the Arm ports BoF at DC17

2017-09-17 Thread Ben Hutchings
On Sun, 2017-09-17 at 12:59 -0700, Vagrant Cascadian wrote:
> On 2017-09-15, Ben Hutchings wrote:
> > On Thu, 2017-09-14 at 03:40 +0100, Steve McIntyre wrote:
> > [...]
> > > There is optional kernel support to trap the exceptions here
> > > and emulate the instructions, but it's really not recommended for
> > > serious use (e.g. on a build machine!).
> > 
> > [...]
> > 
> > Why is it not recommended?  Terrible performance, or known bugs?
> 
> On arm64 kernels building armhf packages for the reproducible builds
> builders, I'm seeing hundreds or even thousands of kernel log warnings
> per second when building anything that makes use of
> CP15_BARRIER_EMULATION (e.g. anything using ghc):
> 
>   [85740.553537] cp15barrier_handler: 115316 callbacks suppressed
>   [85740.559358] "ghc-pkg" (29572) uses deprecated CP15 Barrier instruction 
> at 0xf5beaa7c
>   [85740.567344] "ghc-pkg" (29572) uses deprecated CP15 Barrier instruction 
> at 0xf5beaa9c
>
> That *might* be sufficient to actually impact performance; it certainly
> makes it hard to read other kernel log messages on those machines...

The log rate-limiting is done in the kernel, so the log daemon doesn't
have to process all those messages.  However, the rate-limiting state
is protected with a mutex (actually a spin-lock) so even when the log
message is suppressed it involves an additional two memory barriers.

And I agree that this kind of rate-limiting isn't really sufficient. 
Warning once per process might be more reasonable, but there's
currently no mechanism for that in the kernel.

Ben.

> There was a bug reported on ghc related to this:
> 
>   https://bugs.debian.org/864847
> 
> 
> live well,
>   vagrant
-- 
Ben Hutchings
friends: People who know you well, but like you anyway.



signature.asc
Description: This is a digitally signed message part


Re: Summary of the Arm ports BoF at DC17

2017-09-17 Thread Colin Watson
On Sun, Sep 17, 2017 at 12:59:04PM -0700, Vagrant Cascadian wrote:
> On 2017-09-15, Ben Hutchings wrote:
> > On Thu, 2017-09-14 at 03:40 +0100, Steve McIntyre wrote:
> > [...]
> >> There is optional kernel support to trap the exceptions here
> >> and emulate the instructions, but it's really not recommended for
> >> serious use (e.g. on a build machine!).
> > [...]
> >
> > Why is it not recommended?  Terrible performance, or known bugs?
> 
> On arm64 kernels building armhf packages for the reproducible builds
> builders,

Steve was mostly talking about armel, I thought?

> I'm seeing hundreds or even thousands of kernel log warnings
> per second when building anything that makes use of
> CP15_BARRIER_EMULATION (e.g. anything using ghc):
> 
>   [85740.553537] cp15barrier_handler: 115316 callbacks suppressed
>   [85740.559358] "ghc-pkg" (29572) uses deprecated CP15 Barrier instruction 
> at 0xf5beaa7c
>   [85740.567344] "ghc-pkg" (29572) uses deprecated CP15 Barrier instruction 
> at 0xf5beaa9c
> 
> 
> That *might* be sufficient to actually impact performance; it certainly
> makes it hard to read other kernel log messages on those machines...

We've been building armhf packages in arm64 VMs for some time in Ubuntu
and it generally seems to work fine; I haven't looked *very* closely but
I haven't noticed any particularly significant performance difference
between armhf and arm64 builds in that environment, including builds
that use GHC.  (I would have to go to some effort to look at kernel
logs, so I haven't.)

We're using HP ProLiant m400 cartridges running as OpenStack compute
nodes, and I gather that hardware supports a few more ARMv7 instructions
than some ARMv8 hardware does.  We also run with a small kernel tweak
[1] to set "uname -m" output to "armv7l" when running under linux32(1),
which makes some dodgy configure scripts behave themselves a bit better.
But apart from that, it's been a pretty good experience on armhf and
definitely much faster than what we had before.

[1] 
https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/xenial/commit/kernel/sys.c?id=fff84367fa2a19f20c2b9094b47bc3db51fed183

I can't really speak for how it would be on armel, but I rather suspect
that decent ARMv8 hardware would be sufficiently much faster than
ARMv7-or-earlier kit to more than cancel out performance losses from
instruction emulation.

-- 
Colin Watson   [cjwat...@debian.org]



Re: Summary of the Arm ports BoF at DC17

2017-09-17 Thread Vagrant Cascadian
On 2017-09-15, Ben Hutchings wrote:
> On Thu, 2017-09-14 at 03:40 +0100, Steve McIntyre wrote:
> [...]
>> There is optional kernel support to trap the exceptions here
>> and emulate the instructions, but it's really not recommended for
>> serious use (e.g. on a build machine!).
> [...]
>
> Why is it not recommended?  Terrible performance, or known bugs?

On arm64 kernels building armhf packages for the reproducible builds
builders, I'm seeing hundreds or even thousands of kernel log warnings
per second when building anything that makes use of
CP15_BARRIER_EMULATION (e.g. anything using ghc):

  [85740.553537] cp15barrier_handler: 115316 callbacks suppressed
  [85740.559358] "ghc-pkg" (29572) uses deprecated CP15 Barrier instruction at 
0xf5beaa7c
  [85740.567344] "ghc-pkg" (29572) uses deprecated CP15 Barrier instruction at 
0xf5beaa9c


That *might* be sufficient to actually impact performance; it certainly
makes it hard to read other kernel log messages on those machines...


There was a bug reported on ghc related to this:

  https://bugs.debian.org/864847


live well,
  vagrant


signature.asc
Description: PGP signature


Re: Summary of the Arm ports BoF at DC17

2017-09-15 Thread Wookey
On 2017-09-14 12:58 +0800, Paul Wise wrote:
> Wookey, could you add something about the motivation for arm64ilp32 to
> the wiki page about it?

Will do. But the short version is that it's only useful if you need to
run 32-bit code on hardware that only supports the 64-bit execution
mode. Such hardware does exist (Cavium ThunderX), and it can't run
armhf. It's not clear if more manufacturers will make such chips.

And then you need a reason to run as 32-bit, but where you can rebuild
code. So it's no use for old binaries, but it is useful for codebases
that are not 64-bit safe. There might be arguments about memory usage
(as for x32) where 32-bit makes sense, but I've not seen any data on that.

As of today (about 3 hours ago :-), there is an ILP32 debian stable
debootrappable set of packages, so it's possible to do said tests.

Wookey
-- 
Principal hats:  Linaro, Debian, Wookware, ARM
http://wookware.org/


signature.asc
Description: Digital signature


Re: Summary of the Arm ports BoF at DC17

2017-09-15 Thread Ben Hutchings
On Thu, 2017-09-14 at 03:40 +0100, Steve McIntyre wrote:
[...]
> There is optional kernel support to trap the exceptions here
> and emulate the instructions, but it's really not recommended for
> serious use (e.g. on a build machine!).
[...]

Why is it not recommended?  Terrible performance, or known bugs?

Ben.

-- 
Ben Hutchings
Kids!  Bringing about Armageddon can be dangerous.  Do not attempt it in
your own home. - Terry Pratchett and Neil Gaiman, `Good Omens'



signature.asc
Description: This is a digitally signed message part


Re: Summary of the Arm ports BoF at DC17

2017-09-14 Thread Steve McIntyre
On Thu, Sep 14, 2017 at 12:06:13PM +0200, Marco d'Itri wrote:
>On Sep 14, Steve McIntyre  wrote:
>
>> The Pine64 [6] is another alternative, based on a mobile CPU. It's
>> therefore got limited RAM and I/O. Upstreaming has taken a while, but
>> is getting there in current kernel releases. U-Boot head will work on
>> the board, including the UEFI implementation mentioned earlier.
>> There's the related PineBook project [7] too - a small laptop-style
>> machine based around the Pine64 board.
>There are also scary warnings and discussions about the Ethernet port 
>being half-broken at 1 Gbps.
>
>> Answering this question ("I want something that just works, what
>> should I buy?") is always much harder than it should be... :-(
>On the lower end I strongly recommend the Olimex Lime 2, which is open 
>hardware and works well with the mainline kernel and U-Boot from stretch 
>(as long as you do not care about 3D, obviously):
>https://www.armbian.com/olimex-lime-2/

ACK, thanks for the recommendation!

>BTW... I like installing my little ARM systems using debootstrap 
>--foreign, but I am unable to do a 100% self-contained installation 
>(without using qemu, which would be cheating, or copying the initramfs 
>from another system) because the initramfs has not been built yet. 
>Do we distribute anyware one that may be used for the first boot?

Not that I'm aware of, no.

-- 
Steve McIntyre, Cambridge, UK.st...@einval.com
"C++ ate my sanity" -- Jon Rabone



Re: Summary of the Arm ports BoF at DC17

2017-09-14 Thread Steve McIntyre
On Thu, Sep 14, 2017 at 12:58:02PM +0800, Paul Wise wrote:
>On Thu, Sep 14, 2017 at 10:40 AM, Steve McIntyre wrote:
>
>> It's possible to replace the installed U-Boot
>> on many boards, but that depends on hardware support being properly
>> upstreamed; lack of that upstreaming work is another common bugbear in
>> vendor U-Boot binaries. If you want to use your arm64 machine as a
>> *computer*, my recommended route is UEFI; this is why all the server
>> vendors have gone that route.
>
>Doesn't the same problem of u-boot upstreaming also apply to
>UEFI/TianoCore upstreaming (but worse)? AFAICT we do not have *any*
>support in our edk2 source package for anything other than virtual
>machines (x86/ARMv7/ARMv8). It seems to me that u-boot is in a much
>better position wrt upstream support for ARM *and* for support for
>UEFI than TianoCore or other options that aren't in Debian like
>coreboot.

Let's be straight - the UEFI boot support in U-Boot is very much a
limited project to ease booting; it's not *at all* a complete
implementation of UEFI like Tianocore. It doesn't support any of the
runtime interfaces, for example.

I stand by my recommendation: for normal use for an end user on an
arm64 machine, UEFI is a better bet than U-Boot.

...

>> Last question: what should people do to keep armel? Main things:
>>
>> * deal with armel-specific bug reports
>
>For some reason there isn't an armel usertag but there is an eabi one:
>
>https://udd.debian.org/cgi-bin/bts-usertags.cgi?tag=eabi&user=debian-arm%40lists.debian.org
>
>> * get involved in toolchains and make sure they continue to work
>
>Join the #debian-toolchain IRC channel and tell doko you are there to
>support armel.

+1

>Improve the wiki page for armel, move it under the Ports hierarchy and
>base it off the port template:
>
>https://wiki.debian.org/ArmEabiPort
>https://wiki.debian.org/Ports
>https://wiki.debian.org/PortTemplate
>
>Improve the web page for the ARM ports.
>
>https://www.debian.org/ports/arm/

Alternatively, give up on the ports web pages altogether - IMHO
they're massively more effort to maintain than stuff in the wiki and
that's one of the reasons why they're always so out-dated.

-- 
Steve McIntyre, Cambridge, UK.st...@einval.com
You raise the blade, you make the change... You re-arrange me 'til I'm sane...



Re: Summary of the Arm ports BoF at DC17

2017-09-14 Thread Marco d'Itri
On Sep 14, Steve McIntyre  wrote:

> The Pine64 [6] is another alternative, based on a mobile CPU. It's
> therefore got limited RAM and I/O. Upstreaming has taken a while, but
> is getting there in current kernel releases. U-Boot head will work on
> the board, including the UEFI implementation mentioned earlier.
> There's the related PineBook project [7] too - a small laptop-style
> machine based around the Pine64 board.
There are also scary warnings and discussions about the Ethernet port 
being half-broken at 1 Gbps.

> Answering this question ("I want something that just works, what
> should I buy?") is always much harder than it should be... :-(
On the lower end I strongly recommend the Olimex Lime 2, which is open 
hardware and works well with the mainline kernel and U-Boot from stretch 
(as long as you do not care about 3D, obviously):
https://www.armbian.com/olimex-lime-2/

BTW... I like installing my little ARM systems using debootstrap 
--foreign, but I am unable to do a 100% self-contained installation 
(without using qemu, which would be cheating, or copying the initramfs 
from another system) because the initramfs has not been built yet. 
Do we distribute anyware one that may be used for the first boot?

-- 
ciao,
Marco


signature.asc
Description: PGP signature


Re: Summary of the Arm ports BoF at DC17

2017-09-13 Thread Paul Wise
On Thu, Sep 14, 2017 at 10:40 AM, Steve McIntyre wrote:

> It's possible to replace the installed U-Boot
> on many boards, but that depends on hardware support being properly
> upstreamed; lack of that upstreaming work is another common bugbear in
> vendor U-Boot binaries. If you want to use your arm64 machine as a
> *computer*, my recommended route is UEFI; this is why all the server
> vendors have gone that route.

Doesn't the same problem of u-boot upstreaming also apply to
UEFI/TianoCore upstreaming (but worse)? AFAICT we do not have *any*
support in our edk2 source package for anything other than virtual
machines (x86/ARMv7/ARMv8). It seems to me that u-boot is in a much
better position wrt upstream support for ARM *and* for support for
UEFI than TianoCore or other options that aren't in Debian like
coreboot.

> Hector asked about the current state of the less well-known Arm ports:
> big-endian versions and arm64ilp32. Lots of different BE ports have
> happened over the years, for various reasons. arm64ilp32 [8] is the
> arm64 equivalent of x32 on x64-64; IMHO there is no need for it in
> Debian as a mainstream port. Wookey is working on it in Linaro at the
> moment. There is a BE version too. While x32 *might* have some
> performance wins over i386 (depending on code), it's not clear that
> arm64ilp32 is likely to be any better than armhf (A32) in most cases.

Wookey, could you add something about the motivation for arm64ilp32 to
the wiki page about it?

> Last question: what should people do to keep armel? Main things:
>
> * deal with armel-specific bug reports

For some reason there isn't an armel usertag but there is an eabi one:

https://udd.debian.org/cgi-bin/bts-usertags.cgi?tag=eabi&user=debian-arm%40lists.debian.org

> * get involved in toolchains and make sure they continue to work

Join the #debian-toolchain IRC channel and tell doko you are there to
support armel.

Also:

Test that d-i and other installation methods work.

Test that u-boot works for armel devices:

https://packages.debian.org/search?keywords=u-boot

Fix the issues mentioned on the buildd page:

https://buildd.debian.org/status/architecture.php?a=armel&suite=sid

Improve the release team's arch qualification status for armel:

https://release.debian.org/testing/arch_qualify.html

Monitor the rebootstrap for armel and fix any issues that come up,
join #debian-bootstrap and mention your interest to helmut.

https://wiki.debian.org/HelmutGrohne/rebootstrap

Package and test the RPi open firmware:

https://github.com/christinaa/rpi-open-firmware

Improve the wiki page for armel, move it under the Ports hierarchy and
base it off the port template:

https://wiki.debian.org/ArmEabiPort
https://wiki.debian.org/Ports
https://wiki.debian.org/PortTemplate

Improve the web page for the ARM ports.

https://www.debian.org/ports/arm/

Extend architecture support for some services:

https://ci.debian.net/status/
https://tests.reproducible-builds.org/debian/reproducible.html
http://cdimage.debian.org/cdimage/weekly-live-builds/

-- 
bye,
pabs

https://wiki.debian.org/PaulWise



Summary of the Arm ports BoF at DC17

2017-09-13 Thread Steve McIntyre
[ Please note the cross-post and Reply-To ]

Hi folks,

As promised, here's a quick summary of what was discussed at the Arm
ports BoF session in Montréal. Apologies for the delay in posting...

Thanks to the awesome efforts of our video team, the session is
already online [1]. I've taken a copy of the Gobby notes too,
alongside my small set of slides for the session. [2]

We spoke about the past/present/future state of Arm ports in Debian.

arm64
=

Most recent Arm port, first released with Jessie. We're starting to
see more devices becoming available that will run Debian arm64
well. We're also starting to get real server hardware turning
up. arm64 hardware often follows better standards than some of the
older generations of Arm hardware, meaning that most of the machines
coming (assuming kernel support!) should work well out of the box
using device tree or ACPI. Please use ACPI if you can - the two are
mostly equivalent in terms of what they describe, but ACPI is a better
choice for the future where possible, with better standards.

armhf
=

Much as in previous BoFs in terms of support and future!

Current port, first released with Wheezy. Due to cross-distro effort,
this setup (ARMv7 EABI using VFPv3D16) is the default supported 32-bit
Arm architecture in all distros now. This means that there's even a
fair chance of binaries built for one distro running on others!

We've got a couple of multi-platform kernel variants (armmp and
armmp-lpae for large-memory systems) that will support just about any
new devices shipping, given updated drivers and device tree support.

UEFI is now a thing for some ARMv7 platforms. Some people are looking
into using UEFI by default, plus there's also the ongoing work by
Alexander Graf on the UEFI shim layer in modern U-Boot. This allows
for easier, consistent boot support (e.g. booting off USB
automatically for installation).

armel
=

armel is the longest-running of the three current Arm ports in Debian,
starting in 2007 with Lenny.

We've been debating the future of armel for some time in Debian
now. It's typically still supported by most upstreams (Linux kernel,
gcc, etc.), but we're more frequently finding issues with support for
it in newer tools and languages and applications further up the
stack. It's difficult (in some cases almost impossible) to run many
larger applications like browsers on ARMv4t, as the upstream
developers just don't support it any more.

Based on this, I described a plan to drop armel from testing and *not*
release it with Buster. This is *not* a done deal, and there's still
scope for interested developers to step up and make sure that armel is
supported in future. We'd been asking for that for the last couple of
years and it had not happened.

We'd been talking in the past few years about options for armel,
including a partial armel port, dropping support for some packages
that are difficult to port or not considered useful. While that might
sound attractive as a possible way to go, nobody appears to have done
any of the work needed to make it possible.


  In the background, almost in parallel there has been some discussion
  on the mailing list about this topic and it seems we now *do* have
  some developers wanting to keep armel alive. See the thread starting
  at [3] for more information, or if you'd like to help. I still have
  personal concerns about the viability of armel in the future, but I
  wish any other volunteers luck in keeping it alive.


Whether we continue with armel or not, it's probably worthwhile for
users to think about migrating to newer hardware if they care about it
in the longer term.

Buildds and hardware


The existing build machines for armel and armhf are all still ARMv7
based, using donated Marvell Armada XP machines. They're working very
well as build machines - they're quite fast and take a reasonable
amount of memory. Scaleway [4] use similar hardware for Arm-based
hosting. We also still have an older Freescale imx53 porter box for
people on armhf who might need to debug NEON issues, as the Armada XP
machines don't include it.

arm64 gives us more options for sensible build machines: AMD Seattle,
APM Mustang, Arm Junos. We're still looking at more and better
hardware in the future, including potential offers from arm64 server
hardware developers.

We're wanting to move on to more and more arm64 hardware in the future
for build machines, including for building armhf. Using real server
hardware will help us, as the machines will then fit in a rack, with
remote management options too. Unfortunately, you can't rely on these
for building for armel. There are old deprecated instructions (mainly
barriers and atomics) that are no longer supported in the ARMv8
hardware. There is optional kernel support to trap the exceptions here
and emulate the i