> Am 19.08.2016 um 14:14 schrieb Tom Rini <tr...@konsulko.com>:
> 
>> On Fri, Aug 12, 2016 at 08:19:42PM +0200, Alexander Graf wrote:
>> 
>> 
>>> 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.
> 
> OK, that is a lot of boards and such.  And yes, I see both of these
> features / projects as important to the long-term health of U-Boot.
> 
> So, Alex, when we've got storage converted fully to DM, you're willing
> to do further clean-ups to make it DM-better, yes?  Thanks!

I don't understand the question. Eventually I agree with Simon that we should 
have only a single object list and type, but with the state dm is in, I 
definitely will not require any of the efi code on dm.

Having said that, I am definitely making sure things work with dm and as soon 
as a non-dm subsystem drops, I will happily integrate the efi onject hierarchy 
into the dm one for that class of objects.


Alex


_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to