History log of /haiku/src/system/boot/platform/efi/arch/arm/arch_start.cpp
Revision Date Author Comments
# b965b55d 12-Mar-2023 Alexander von Gluck IV <kallisti5@unixzen.com>

efi/serial: re-init serial after efi detatchment

* This prevents haiku from "messing" with the gUART until
EFI boot services are exiting.
* The previous design meant that our loader started fiddling
with the gUART while EFI BIOS services were still being
used. On the SiFive, this broke serial output.
* Now, we guard on serial_init if EFI is unavailable, and
only fallback to direct UART usage when EFI is no longer
available.
* tldr; we're more closely managing serial across architectures
* serial_init use EFI and init it
* kernel_serial_handoff, stop using EFI
* serial_init, oh no EFI. Use gUART and Init it
* one gap is likely if no serial is available in EFI, but I
haven't seen that yet.

Change-Id: I644b51e4912272110435d288a95517d43a76740d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6200
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>


# 81a892ed 04-Jan-2023 Alexander von Gluck IV <kallisti5@unixzen.com>

efi/serial: Refactor EFI bios serial services

* Convert x86 direct port I/O to our standard gUART.
* sSerial is plainly EFI Serial or EFI Stdout
* gUART is plainly hardware serial now

Change-Id: I5730fbc0ce3427851e4e2d1d0aa8c55f7765e444
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5982
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# a3c9f71e 25-Sep-2022 David Karoly <karolyd577@gmail.com>

boot/efi: factor out generic mmu functions

This change moves the common functions related to EFI memory map
to arch/generic for arm, arm64, x86.

riscv64 and x86_64 shall be handled separately as they use some
more architecture-specific logic:
* riscv64 needs special treatment for the M-mode resident code
located at 0x80000000 which is reported as available in the
EFI memory map provided by u-boot.
* x86_64 has a slightly different logic for building the
memory regions list so some additional rework and testing will be
needed before it can be unified with the generic mmu functions.

Change-Id: I430c84dfc693c5b6f04c170dec8ffb1db2c2ace1
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5694
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# 68861140 11-Apr-2022 David Karoly <karolyd577@gmail.com>

boot/efi/arm: flush caches before jump to trampoline

Change-Id: Ia7af285f1c3b988828482ff0cd78a416cf51c2c2
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5196
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# d232643e 26-Mar-2022 David Karoly <karolyd577@gmail.com>

boot/efi/arm: add debug logs for initial CPU state

Change-Id: I08df563ef6967f5f9734bbe11ac643c3b68f504f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5151
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 7fdf6e86 27-Mar-2022 David Karoly <karolyd577@gmail.com>

boot/efi/arm: switch serial output to legacy after exiting EFI boot servieces

Change-Id: If7ba007d24cc95ce0a43adc320932e3e1678c25b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5159
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# fdb45913 29-Jan-2022 David Karoly <karolyd577@gmail.com>

boot/efi/x86: implement SMP detection and bootup

* move common SMP initialization code to x86/arch_smp.cpp

* factor out arch-specific SMP initialization to
arch_smp_32.cpp resp arch_smp_64.cpp

* implement smp_trampoline for x86 32-bit EFI loader

* rename SMP trampoline for x86_64 to long_smp_trampoline

* add new argument virtKernelArgs to arch_smp_boot_other_cpus
as the kernel args are not identity mapped on 32-bit architectures

Change-Id: I30d0bb1fa9bfb08f6784a2af34eb83d6b64afa57
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4869
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>


# a2d52824 27-Jan-2022 David Karoly <karolyd577@gmail.com>

boot/efi/arm: code cleanup

* Use TRACE() for logging
* Use B_PRI format strings
* Reformat local variables and function arguments to use camelCase
* Remove comment related to ConvertPointer
* Fix indentation for switch statements
* Remove variable sFirstPageTable as it's not really used

Change-Id: Iace275e5a3311f13a5018f497c3132e472a20848
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4885
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>


# cc69b20b 21-Jan-2022 David Karoly <karolyd577@gmail.com>

boot/efi/arm: move arch_enter_kernel to identity mapped region

First try to allocate a page below 2GB.

If it fails, try to allocate a physical page at the address
returned by get_next_virtual_address so that we get an address
that is available in both virtual and physical space.

Finally try to allocate any available page. At this point
it's highly likely that it will be above 0x88000000 so it can be
used for trampoline code.

Change-Id: I3100a3e09efcd938bc630a52dcce74dc5f24beb5
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4878
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 933430df 14-Jan-2022 David Karoly <karolyd577@gmail.com>

boot/efi/arm: remove identity mapping for EFI code and data segments

All the regions allocated via platform_allocate_region() are mapped to a
high virtual address so there's no need to do identity mapping for them
any more.

Copy kernel_args to a region allocated via platform_allocate_region() so it
will be mapped similarly.

Identity mapping is still needed for trampoline code for jumping to the kernel

Change-Id: I844a7a789b440a38521db49adc077bb77e658ddf
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4865
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>


# af90bfd3 15-Dec-2021 David Karoly <karolyd577@gmail.com>

boot/efi: introduce arch_convert_kernel_args

Change-Id: Iabb321564d6733c6cf481ec2548fa287e308ae89
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4796
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 20efe26d 13-Dec-2021 David Karoly <karolyd577@gmail.com>

boot/efi/arm: fix printout of kernel entry address on startup

Change-Id: If3d592983e1c22210c6b4d3a6ceaf2a7641e7e7a
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4785
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>


# 9aba9395 23-Oct-2021 David Karoly <karolyd577@gmail.com>

boot/efi: fix alignment exception on arm

Change-Id: I8384433c4bed474c3cb82bc8451ecde9a47bcff8
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4656
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 5ac73692 20-Oct-2021 David Karoly <karolyd577@gmail.com>

boot/efi: better logging for system memory map

Change-Id: Ie35061f5c80f8b82071bbbf6fdaa006aca50a8a2
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4651
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# 4d81ddab 20-Oct-2021 David Karoly <karolyd577@gmail.com>

boot/efi: initialize mmu for arm

Change-Id: I918a459dfb4e5d0864ae4c8b806df059248d43b6
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4630
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# e6520f90 20-Oct-2021 David Karoly <karolyd577@gmail.com>

boot/efi: generate memory map for arm

Change-Id: I02a7f8c27187f6375dd4deeeaf3587dad1e3349c
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4631
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 6c32d3c9 29-Jul-2020 Alexander von Gluck IV <kallisti5@unixzen.com>

boot/efi: Begin working on loading kernel_arm

Change-Id: I5c71f061fab2215f3978a39d87c2d2a686a2c7bc
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3107
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 82a7c739 22-Feb-2020 Alexander von Gluck IV <kallisti5@unixzen.com>

efi/arm: Begin stubbing out the essentials, add fdt library

* We *might* no longer need FDT knowledge in the bootloader?
* For now though, arm sources reference gFDT, so we need it.
* Need to move away from lazy gFDT and store in arch_kernel_args.
(which is next and will be a larger commit)

Change-Id: I77cce0fc645143b78a7fd9f50ac8b96c97b5c862
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2268
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>