On 12.08.16 19:20, Simon Glass wrote: > Hi Alex, > > On 10 August 2016 at 13:01, Alexander Graf <ag...@suse.de> wrote: >> >>> On 10 Aug 2016, at 18:25, Tom Rini <tr...@konsulko.com> wrote: >>> >>> On Wed, Aug 10, 2016 at 03:25:16PM +0200, Alexander Graf wrote: >>>> >>>> >>>>> Am 10.08.2016 um 15:16 schrieb Simon Glass <s...@chromium.org>: >>>>> >>>>> Hi Alex, >>>>> >>>>>> On 10 August 2016 at 07:02, Alexander Graf <ag...@suse.de> wrote: >>>>>>> On 08/10/2016 02:56 PM, Simon Glass wrote: >>>>>>> >>>>>>> +Tom >>>>>>> >>>>>>> Hi Alex, >>>>>>> >>>>>>> On 10 August 2016 at 01:47, Alexander Graf <ag...@suse.de> wrote: >>>>>>>>> >>>>>>>>> On 08 Aug 2016, at 23:44, Simon Glass <s...@chromium.org> wrote: >>>>>>>>> >>>>>>>>> Hi Alexander, >>>>>>>>> >>>>>>>>>> On 5 August 2016 at 06:49, Alexander Graf <ag...@suse.de> wrote: >>>>>>>>>> >>>>>>>>>> When using CONFIG_BLK, there were 2 issues: >>>>>>>>>> >>>>>>>>>> 1) The name we generate the device with has to match the >>>>>>>>>> name we set in efi_set_bootdev() >>>>>>>>>> >>>>>>>>>> 2) The device we pass into our block functions was wrong, >>>>>>>>>> we should not rediscover it but just use the already known >>>>>>>>>> pointer. >>>>>>>>>> >>>>>>>>>> This patch fixes both issues. >>>>>>>>>> >>>>>>>>>> Signed-off-by: Alexander Graf <ag...@suse.de> >>>>>>>>>> --- >>>>>>>>>> cmd/bootefi.c | 23 ++++++++++++++++++----- >>>>>>>>>> lib/efi_loader/efi_disk.c | 18 +++++++++++------- >>>>>>>>>> 2 files changed, 29 insertions(+), 12 deletions(-) >>>>>>> [...] >>>>>>> >>>>>>>>>> diff --git a/lib/efi_loader/efi_disk.c b/lib/efi_loader/efi_disk.c >>>>>>>>>> index c434c92..e00a747 100644 >>>>>>>>>> --- a/lib/efi_loader/efi_disk.c >>>>>>>>>> +++ b/lib/efi_loader/efi_disk.c >>>>>>>>>> @@ -31,6 +31,8 @@ struct efi_disk_obj { >>>>>>>>>> struct efi_device_path_file_path *dp; >>>>>>>>>> /* Offset into disk for simple partitions */ >>>>>>>>>> lbaint_t offset; >>>>>>>>>> + /* Internal block device */ >>>>>>>>>> + const struct blk_desc *desc; >>>>>>>>> >>>>>>>>> Rather than storing this, can you store the udevice? >>>>>>>> >>>>>>>> I could, but then I would diverge between the CONFIG_BLK and >>>>>>>> non-CONFIG_BLK path again, which would turn the code into an #ifdef >>>>>>>> mess >>>>>>>> (read: hard to maintain), because the whole device creation path >>>>>>>> relies on >>>>>>>> struct blk_desc * today and doesn’t pass the udevice anywhere. >>>>>>>> >>>>>>>> Do you feel strongly about this? To give you an idea how messy it gets, >>>>>>>> the diff is below. >>>>>>> >>>>>>> Actually I'd like to make this feature depend on CONFIG_BLK. If we add >>>>>>> new features that don't use driver model, and then use the legacy data >>>>>>> structures such that converting to driver model becomes harder, we'll >>>>>>> never be done. >>>>>>> >>>>>>> I did mention this at the beginning and it seems to have come to pass. >>>>>>> >>>>>>> In order of preference from my side: >>>>>>> >>>>>>> 1. Make EFI_LOADER depend on BLK >>>>>> >>>>>> >>>>>> If we make EFI_LOADER depend on BLK, doesn't that break all systems that >>>>>> need storage that isn't converted to device model today? Like the SATA >>>>>> breakage on Xilinx systems, just at a much bigger scale? >>>>> >>>>> No it just means that these platforms need to move to BLK before they >>>>> can use the EFI loader. Given the embryonic nature of this feature, >>>>> that seems reasonable, and the impact would be small. It will also >>>>> encourage conversion and keep the code cleaner. >>>> >>>> No, it will simply make my life harder because I would have to sit >>>> down and vonvert every single board to BLK that I need EFI enabled. >>> >>> Seems like as good a place as any to jump in, of the boards that you >>> need EFI enabled on, what isn't converted today? >> >> I want to make EFI the default boot path in openSUSE, which means any board >> that anyone out there wants to run openSUSE on would be on the list. >> Anything that keeps them from running EFI on a random board is a road block >> that I’d rather not have if I can avoid it. > > Of course, I fully understand that. However as mentioned in this > patch, you are creating future problems.
I don't see how I am creating future problems, really. Passing a udevice* instead of the struct blk_desc* internally doesn't improve the code really at the end of the day. > Can you address Tom's question? I take it that it boots on Raspberry > Pi (which I'd like to try actually - are there instructions > somewhere?). We can easily convert that over. Anything else? For a list of currently available "upstream" openSUSE images, see https://build.opensuse.org/package/view_file/openSUSE:Factory:ARM/JeOS/pre_checkin.sh?expand=1 Every one of those is on the short-term list. Any other board that people want to run on is potentially on the mid-term to long-term list. > >> >> Again, I strongly object any dependency on BLK for EFI. If you want to push >> people to using CONFIG_BLK, make CONFIG_ARM depend on CONFIG_BLK. > > :-) That won't work. If we could wave a magic wand and convert > everything in one day, we would. EFI isn't going to be that magic wand either though :). Most people couldn't care less. It's hard enough to convince people that disabling CONFIG_EFI is a bad idea. Having anyone put effort into it would basically mean the end of the whole idea that uEFI support "just works" with U-Boot (which is the main selling point). Alex _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot