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
