On 12/17/13 15:47, Michael Lorer wrote:
> Hello,
> 
>  
> 
> Short information on what I want to do:
> 
> During UEFI boot I’m downloading a small complete partition image
> (including a MBR and a bootmanager) and place that image in allocated
> runtime space.
> 
> After that I want to start the bootmanger inside of that image.
> 
>  
> 
> What I’m doing so far:
> 
> // Here we are in the middle of a UEFI boot during DXE phase and way
> before runtime just after all necessary network protocols were installed.
> 
>  
> 
> // We have sucessfully downloaded a small HDD parition Image (including
> a MBR and a boot loader)
> 
> // That images resides in runtime memory I have a pointer to and I know
> the size of the image.
> 
>  
> 
> // Now we're doing the following steps:
> 
> Status = pBS->InstallMultipleProtocolInterfaces(
> 
>                            &gImageHandle,
> 
>                            &EfiComponentNameProtocolGuid,
> &RomDiskComponentName,       //Initialize driver NAME protocol
> 
>                            NULL
> 
>                            );
> 
>  
> 
> // Setting up all variables for a Memory Map device path structure as
> mentioned in UEFI spec here.
> 
> Status = pBS->InstallMultipleProtocolInterfaces(
> 
>                            &gImageHandle,
> 
>                            &RomDiskDevicePathGuid,
> pRomDiskDevicePathProtocol,         //Initialize device PATH protocol
> 
>                            NULL
> 
>                            );
> 
>  
> 
> // And as a last step we're setting up the EFI_BLOCK_IO_MEDIA structure
> and do:
> 
> Status = pBS->InstallMultipleProtocolInterfaces(
> 
>                           &gImageHandle,
> 
>                            &RomDiskBlockIoProtocolGuid,
> &RomDiskBlockIoProtocol,       //Initialize BLOCKIO protocol
> 
>                            NULL
> 
>                            );
> 
>  
> 
> That is working fine so far. After the DXE phase I can find the BlockIO
> protocol as blk0 in my UEFI Shell. If I do
> 
> Ø  dblk blk0
> 
> I can see the correct content of my partition image.
> 
>  
> 
> But what I’m missing now is that there is no Disk I/O protocol installed
> up on my Block I/O protocol.
> 
> Regarding UEFI specification 12.7 I thought that the
> EFI_DISK_IO_PROTOCOL is automatically installed on all available Block
> I/O protocols.
> 
> Any clue why that is not done in that case? And what I can do about it?

I think you need to call gBS->ConnectController() so that the rest of
the driver stack is recursively installed on top of BlockIo. Normally,
BDS code issues such calls.

Laszlo

------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to