Exposing new block IO handle to Platform BIOS


sanket.goswami@...
 

I'm working on a drivers for a storage controller. In it I install block IO protocol on each drive connected to the controller. Some of these drives may have OS in them.
These block IO handles are child handles of the controller handle.

In some scenarios I need to reinstall block IO protocol on the drives. This happens after boot when user changes the driver's configuration from BIOS menu.
Once I uninstall a block IO handle any driver using this block IO handle(e.g. Disk IO driver) with EFI_OPEN_PROTOCOL_BY_DRIVER attribute will be disconnected from this device.

1. when I install block IO again then Should I call boot service ConnectController to connect this block IO handle to all drivers in system?
I tried calling ConnectController service with recursive flag '-r' but it takes very long to complete the operation. So don't want to do it if it's not necessary.

2. If I want to do connect controller for only some specific drivers like disk IO driver, Is it ok to do it?
Because some drivers like partition driver use Disk IO handle to created child handle for each partition.
So if I connect to just Disk IO driver will the Partition driver and FAT system driver discover this new DiskIO handle and create partition handles and file system for it?

If I don't call connect controller service after reinstallation of Block IO protocol, the platform BIOS doesn't install partitions and file system on the bootable drive.

Thanks,
Sanket

Join discuss@edk2.groups.io to automatically receive all group messages.