Re: [RFC 14/22] dm: blk: call efi's device-probe hook

Simon Glass
2021-11-01T03:04:18Z

Hi Takahiro,

On Mon, 11 Oct 2021 at 08:54, Simon Glass <sjg@chromium.org> wrote:
>
> Hi Takahiro,
>
> On Sun, 10 Oct 2021 at 21:15, AKASHI Takahiro
> <takahiro.akashi@linaro.org> wrote:
> >
> > Hi Simon,
> >
> > On Sun, Oct 10, 2021 at 08:14:23AM -0600, Simon Glass wrote:
> > > Hi Takahiro,
> > >
> > > On Thu, 30 Sept 2021 at 23:04, AKASHI Takahiro
> > > <takahiro.akashi@linaro.org> wrote:
> > > >
> > > > Adding this callback function, efi_disk_create() in block devices's
> > > > post_probe hook will allows for automatically creating efi_disk objects
> > > > per block device.
> > > >
> > > > This will end up not only eliminating efi_disk_register() called in UEFI
> > > > initialization, but also enabling detections of new block devices even
> > > > after the initialization.
> > > >
> > > > Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
> > > > ---
> > > > drivers/block/blk-uclass.c | 10 ++++++++++
> > > > 1 file changed, 10 insertions(+)
> > >
> > > This is where events come in. We need a way to notify things when
> > > devices go through different stages, etc.
> >
> > I favor your idea of event notification to decouple subsystems from
> > the core block layer.
> >
> > > I am thinking of:
> > >
> > > enum dm_event_t {
> > > DMEVT_PROBE,
> > > DMEVT_POST_PROBE,
> > > ...
> > > };
> > >
> > > struct dm_event {
> > > enum dm_event_t type;
> > > union {
> > > // add data for different event types in here
> > > } data;
> > > }
> > >
> > > int (*dm_handler_t)(void *ctx, struct dm_event *event);
> > >
> > > int dm_register(enum dm_event_t evtype, dm_handler_t func, void *ctx)
> > >
> > > int dm_notify(struct udevice *dev, enum dm_event_t type, void *data);
> > >
> > > Then the code below becomes:
> > >
> > > dm_notify(struct udevice *dev, DMEVT_POST_PROBE, NULL);
> > >
> > > the implementation of which will call the handler.
> > >
> > > If you like I could create an impl of the above as a separate patch
> > > for discussion.
> >
> > Yes, please.
> > I'm willing to rebase my code on top of your patch.
>
> OK I will give it a crack, hopefully around the end of the week.

Well that didn't happen as the two things ahead of it expanded.

I'll send a patch with a sketch soon, for you to look at.

Regards,
Simon