On Wed, Jul 04, 2018 at 10:57:16AM +0100, Grant Likely wrote:
It would be reasonable for one or more LUNs to be dedicated to firmware which gets us out of the shared ESP scenario and the OS can do what it wants with the GPT in the 'general-purpose' LUN.
Actually reading the UFS spec helps a lot! :-)
https://www.jedec.org/system/files/docs/JESD220D.pdf
Right, so UFS seems to support up to 128 partitions, or LUNs. It appears that each LUN can be treated as an separate block device. Up to 2 can be configured as boot LUNs (boot A and B), and one can be an RPMB. Size of the boot and RPMB regions is not fixed, so as much space as needed for firmware could be allocated.
I'm going to rework the text to talk about shared storage in terms of a single device or LUN. If firmware is contained in a separate LUN (one of the boot partitions), then it is outside the scope of EBBR.
Thanks for summary!
It would be possible for separate LUNs to be allocated for each OS partition, but I don't think EBBR needs to tackle that. In that scenario each LUN would probably still need to have a GPT partition table, (or at the very least the LUN containing the ESP would). Each LUN would show up as a separate block device in Linux (I think).
Given the "I think" here is a quick grep over the Dragonboard 820C boot logs to confirm that... you will see most of the LUNs (those that aren't special) being allocated their own block device:
https://gist.github.com/daniel-thompson/45275d0667bf93581703ad0dbc867a29
I've also learned that removable UFS cards exist. If the platform strictly requires a UFS boot partition on the removable media, then that could be an issue for the firmware for multiple platforms on a single card use case. We could mitigate this by recommending a filesystem be used on the boot partition. I'm concerned about overreaching though.
We are certainly approaching aspirational with things like that ;-) .
No objections on my side but I'd like it to be very clearly separated from level 0 requirements.
Daniel.