← Back to team overview

ubuntu-phone team mailing list archive

Re: Using 64bit Android BSPs with Ubuntu

 

On 14.09.2015 14:26, Alfonso Sanchez-Beato wrote:
On Mon, Sep 14, 2015 at 1:55 PM, Simon Fels <simon.fels@xxxxxxxxxxxxx>
wrote:

On 14.09.2015 13:12, John McAleely wrote:

I like the sound of multiarch for two reasons:

   - It trivially guarantees compatibility for all the apps in the store
today
   - It allows us to make use of 64 bit whenever it is useful

If we forgo the second advantage, we could just boot the kernel & android
container in 64 bit, and continue booting Ubuntu as a 32bit system. I've
documented this in a diagram here:

https://wiki.ubuntu.com/Touch/ContainerArchitecture

in the section: "mixed-containers, 32bit Ubuntu, 64bit Android". It seems
this would enable us to start using 64bit Android BSPs as a device
specific
feature of the device tarball, and then we can migrate Ubuntu to 64bit or
multiarch at a time of our own choosing (ie, we're not dictated to by the
availability of android BSPs).

Unless there's any reason this scheme shouldn't work, I would like to
propose it as the initial way we use 64bit android BSPs.


That is fine for me.

However as soon as we can't provide something we have to load through
hybris and don't provide as a binder-accessible service on the container
side we need a 64-bit version of libhybris and also 64 bit versions of
those services on the Ubuntu side which are using those bits.

Small example (not very likely to happen but to highlight what we might
end up with):

Android has a HAL lights module which is loaded by our powerd through
libhybris. Means once the lights module is only available as 64 bit only
(we only get a binary from the vendor, ...) we have to load it as 64 bit
through hybris into powerd which brings us to the multiarch system with a
64 bit powerd.


One option we have in case we are very unlucky and one end *really* needs
to be 64 bits and the other end *really* needs to be 32 bits is to have a
daemon that would act as a proxy and that would communicate via DBus or
other IPC with the Ubuntu end (and would link with libhybris).

Yeah, that would be really what we have to do then.

In fact most of the libhybris users are system daemons that use DBus as
communication mean, so we could install a 64 bit version of, say, powerd,
without affecting the rest of the system.

The only downside of this would be that we then have to build multiple ubuntu rootfs images rather than just one we can share on all devices and also have to double our QA efforts (which we would have to do anyway as soon as we have a 32bit-only and a 64bit-only image). It might be better to cut those dependencies via an IPC mechanism already on the container border so that the Ubuntu system isn't affected by this at all and we can either provide a pure 32bit or 64bit image (leaving app support aside).

regards,
Simon


References