Estou com dificuldade para entender o que o U-Boot e/ou Coreboot faz que um RISC-V SBI (Supervisor Binary Interface) não faz. Entendo que a função do SBI é abstrair recursos, mas não entendo o que precisa ser inicializado que um SBI não faz. Vi alguns exemplos (slide 9) dos tipos de processos de inicialização que você pode ter, mas não entendo por que qual deles é necessário em cada caso.
O processo de inicialização poderia ser?: ZSBL (Zero-Stage bootloader) -> SBI -> Kernel
E se for esse o caso, qual é o sentido de ter Coreboot ou U-Boot? Eu entendo que um bootloader de primeiro estágio pode precisar ser carregado na RAM estática primeiro para inicializar a RAM dinâmica e então mover para um SBI, mas qual seria o sentido de ter o SBI carregado no U-Boot depois do SBI então? Só para o gerenciador de boot?
No caso teórico de o RISC-V chegar ao mercado de PCs, qual seria uma configuração de inicialização rápida ideal?
Sim. Funciona perfeitamente bem no QEMU dessa forma, mas somente porque o QEMU já carrega o kernel na RAM. O OpenSBI ("fw_jump") nesse caso apenas faz alguma configuração de firmware e simplesmente salta para o kernel.
Em dispositivos normais, seu kernel provavelmente está localizado em um sistema de arquivos. O OpenSBI não tem drivers para ler esse sistema de arquivos e não pode carregar o kernel. Aqui você precisa de algo como o U-Boot que vem com os drivers necessários.
Acho que esses slides (da página 14) são um bom recurso.