x86_64 BSP : Status Update [ticket #2898]
karel.gardas at centrum.cz
Mon Mar 29 18:35:40 UTC 2021
On 3/29/21 6:20 PM, Shashvat wrote:
> I don't know if it changes the answer to the question but it was not
> intended as a GSOC application.
> I just needed a project to spend some time learning about the
> architecture and how BSPs are built in general.
Well, if you have spare cycles, then amd64 bsp screams for attention. If
you like reading about architectures then amd64 will provide you with a
plenty of documentation to deal with. If you like elegant architecture,
then it would not be your cup of tea probably. If you like architecture
history, then it'll be probably as it's rooted in early '80s.
Also it's not easy architecture like some armv7 board. It's architecture
tuned for server usage too and hence quite complex. On the other hand
it's not architecture which would not innovate at all. Two examples:
(1) interrupt controller: first PIC then two PICs together, then APIC,
later xAPIC and even later x2APIC and even later some peripherals just
give up and use MSI(-X). From RTEMS point of view MSI-X is most
interesting due to lowest latency, but amd64 BSP will need to deal
with x(2)APIC too just to be able to fire all the cores/threads anyway
and due to some peripherals not supporting MSI(-X).
(2) firmware: first it was BIOS, then BIOS cloned into various forms.
Later with 80386 IBM come with idea to have OS booted right into 32bit
(protected mode of the new 386 CPU). It happened on a few IBM PS/2
models and IBM even promised to fully document this which I'm not sure
if happened at all since market was flowing in different way. Much later
Intel came and did what IBM promised long time ago by porting their EFI
(from Itanium) to x86 and this allows modern PCs to look like real 64bit
machines from the startup -- except few exceptions you will be able to
forget about all those 8086isms and 80386isms since you are right into
long mode of blessed AMD64. :-)
But or so, even if x86 is quite complex, there are still people
tinkering with it and writing toy/example OSes, so this is certainly
manageable. Hobby site known for x86 support is osdev.org, so
definitely a lot of resources available and happy to be consumed if you
have just some free time...
More information about the devel