A lot of early UART code has hardcoded MMIO addresses right now, just to get visibility of things before the right MMIO address is known.
Make the loader64.efi port populate environment variables to communicate this information (bcons-mmio-base, bcons-mmio-size, bcons-type)
Use the memory mapping code to ensure that the boot console region is mapped
Have the EFI shim examine these variables from the environment module and set them in _xbootinfo
Use _xbootinfo to fire up the early UART in the shim
Update the inetboot loaders to set the correct bcons_mmio_base, bcons_mmio_size and bcons_type in _xbootinfo.
Have kobj debugging code and prom use the _xbootinfo to set up the UART, or have no output otherwise. These could technically be the same code, but there are some comments in the prom code that it should live in genunix, which we should not preclude.
Have the BOP console UART code forward out to prom, which will be usable at this early stage.
Both the kobj code and the prom code will need to be aware of the presence of a proper driver and use polledio once that attaches. This part is much more complicated, so simply respect the current state of the art here.
A lot of early UART code has hardcoded MMIO addresses right now, just to get visibility of things before the right MMIO address is known.
loader64.efi
port populate environment variables to communicate this information (bcons-mmio-base
,bcons-mmio-size
,bcons-type
)Update the
inetboot
loaders to set the correctbcons_mmio_base
,bcons_mmio_size
andbcons_type
in _xbootinfo.Have kobj debugging code and prom use the _xbootinfo to set up the UART, or have no output otherwise. These could technically be the same code, but there are some comments in the prom code that it should live in
genunix
, which we should not preclude.Have the BOP console UART code forward out to prom, which will be usable at this early stage.
Both the kobj code and the prom code will need to be aware of the presence of a proper driver and use
polledio
once that attaches. This part is much more complicated, so simply respect the current state of the art here.