UEFI: Block I/O Protocol Availability #1134
-
Is the Block I/O protocol accessible after boot services are exited, seeing as though the Graphics Output Protocol definitely is? Or do I have to load some external binary (e.g. an init process) from the disk while boot services are still active and store it in a global for later execution if I want to use the Block I/O protocol to load it? |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 3 replies
-
I believe the Graphics Output Protocol isn't actually available after exiting boot services. Or to be precise you can't change any settings of it anymore. Only write to a framebuffer that has already been setup before exiting boot services. As for block IO I expect it to be entirely unavailable after exiting boot services. Before exiting boot services UEFI is in control of all devices and it can for example change page tables as necessary. After exiting boot services the OS is in full control of all devices and UEFI can't change page tables anymore. For all UEFI knows you have already configured the AHCI/NVMe/USB controller backing the block device and messing around with it would cause problems. As such I don't expect block IO to be working after boot services are exited. |
Beta Was this translation helpful? Give feedback.
I believe the Graphics Output Protocol isn't actually available after exiting boot services. Or to be precise you can't change any settings of it anymore. Only write to a framebuffer that has already been setup before exiting boot services. As for block IO I expect it to be entirely unavailable after exiting boot services. Before exiting boot services UEFI is in control of all devices and it can for example change page tables as necessary. After exiting boot services the OS is in full control of all devices and UEFI can't change page tables anymore. For all UEFI knows you have already configured the AHCI/NVMe/USB controller backing the block device and messing around with it would cause p…