| Age | Commit message (Collapse) | Author |
|
The PLAT_HART_COUNT and PLAT_HART_STACK_SIZE are only used
by platform code so no need of exposing these to everyone
by adding it to platform-cppflags-y.
Signed-off-by: Anup Patel <[email protected]>
|
|
The hart_count and hart_stack_size information is already available
in "struct sbi_platform" so we use that instead of depending on
PLAT_HART_COUNT and PLAT_HART_STACK_SIZE.
Signed-off-by: Anup Patel <[email protected]>
|
|
We don't need a separate stack section for per-HART stack
instead we create per-HART stack at the end of firmware
(i.e. after _fw_end symbol).
Signed-off-by: Anup Patel <[email protected]>
|
|
The PLAT_NAME is used only in platform.c for all platforms hence
remove it.
Signed-off-by: Anup Patel <[email protected]>
|
|
Unleashed working 12 21
|
|
M mode is not expected to recieve any interrupts.
S mode interrupts shouldn't be enabled in M mode.
Signed-off-by: Atish Patra <[email protected]>
|
|
As of now, uboot doesn't have support for SMP.
Moreover, unleashed board has a E51 hart which
doesn't not support S mode.
We should only boot only 1 non-zero hart.
Signed-off-by: Atish Patra <[email protected]>
|
|
Pass S-Mode and M-mode context id separately to common warm init.
Signed-off-by: Atish Patra <[email protected]>
Signed-off-by: Anup Patel <[email protected]>
|
|
Unleashed doesn't have S mode for hart 0.
PLIC register base calculation is current wrong because of that.
Signed-off-by: Atish Patra <[email protected]>
Signed-off-by: Anup Patel <[email protected]>
|
|
Signed-off-by: Atish Patra <[email protected]>
|
|
Conditionnally delegate page fault exceptions from M mode to S mode
based on the platform features.
Signed-off-by: Damien Le Moal <[email protected]>
|
|
The math.h is not required anymore and it also gives
compile error for certain toolchains hence thsi patch
removes math.h include from kendryte/k210/sysctl.c.
Signed-off-by: Anup Patel <[email protected]>
|
|
The mideleg and medeleg are already programmed in delegate_traps()
so no need to set it here.
Any CSR setup in our reference firmware becomes a requirement
for bootloader linking to libsbi.a so we should have minimum
possible CSR setup in our reference firmware.
Signed-off-by: Anup Patel <[email protected]>
|
|
This patch reverts "Fix FDT relocation" because it breaks
fw_jump firmware.
Signed-off-by: Anup Patel <[email protected]>
|
|
The sbi_hart_switch_mode() will be used by CPU hotplug. This means
if we have prints in sbi_hart_switch_mode() then these prints will
mix with Linux prints.
Being a runtime firmware, we should be verbose only at coldboot
time and error situations.
Signed-off-by: Anup Patel <[email protected]>
|
|
commit d403c70fb11fb55042ca3cef0dbe399ed87cc79b breaks Linux
booting because of fewer exceptions delegated to S-mode. This
patch fixes Linux booting by having all required exceptions
delegated to S-mode.
Signed-off-by: Anup Patel <[email protected]>
|
|
Avoid getting messages from multiple harts mingled into garbage text
with a spinlock serializing calls to sbi_puts() and sbi_printf().
Signed-off-by: Damien Le Moal <[email protected]>
|
|
Use functions defined in sbi/riscv_asm.h.
Signed-off-by: Damien Le Moal <[email protected]>
|
|
Use this helper instead of hardcoding csr_read(mhartid).
Signed-off-by: Damien Le Moal <[email protected]>
|
|
Cleanup sbi_hart_boot_nexti() code, adding messages for clarity and
rename the function to sbi_hart_switch_mode() to reflect what the
function actually does.
Signed-off-by: Damien Le Moal <[email protected]>
|
|
Signed-off-by: Damien Le Moal <[email protected]>
|
|
Booting now.
Signed-off-by: Damien Le Moal <[email protected]>
|
|
When S mode is not supported, simply clear mideleg and medeleg.
Otherwise, set delegation from M-mode to S-mode, removing the page
fault exceptions as those would not happen in M-mode.
Signed-off-by: Damien Le Moal <[email protected]>
|
|
Make it clear that the end of the FW execution was reached without the
hand being passed to any payload.
Signed-off-by: Damien Le Moal <[email protected]>
|
|
Signed-off-by: Damien Le Moal <[email protected]>
|
|
Also disable interrupts and exceptions delegation when clearing mie and
mip.
Signed-off-by: Damien Le Moal <[email protected]>
|
|
Or rather, disable it if FW_PAYLOAD_FDT_ADDR is not defined. This
correspond to cases where the underlying FW that loaded and started
opensbi did not provide any FDT. In such case, the platform code will
need to prepare one.
Signed-off-by: Damien Le Moal <[email protected]>
|
|
Allow a platform to report its supported features in more details.
The new features defined are:
* SBI_PLATFORM_HAS_PMP
* SBI_PLATFORM_HAS_SCOUNTEREN
* SBI_PLATFORM_HAS_MCOUNTEREN
In addition, define the macro SBI_PLATFORM_DEFAULT_FEATURES as the set
of features that are generally expected to be supported by a Linux
capable platform.
Operations touching the features controlled with these falgs are not
executed if the platform does not set the corresponding feature flags.
Signed-off-by: Damien Le Moal <[email protected]>
|
|
We should not jump to next stage if next mode (S-mode or U-mode)
is not supported by HART.
Signed-off-by: Atish Patra <[email protected]>
Signed-off-by: Anup Patel <[email protected]>
|
|
This patch renames "plat" to "platform" everywhere for better
readablility.
Signed-off-by: Anup Patel <[email protected]>
|
|
On QEMU Virt, max supported HARTs are 8 but number of HARTs
actually depend on "-smp" command-line parameter passed to
QEMU. This creates problems in sbi_hart_wake_coldboot_harts()
because when number of HARTs are less than 8.
To tackle this, we introduce a bitmap to track HARTs waiting
for coldboot to finish. We wake only those HARTs who have
set their bit in coldboot bitmap.
Signed-off-by: Anup Patel <[email protected]>
|
|
This patch renames "blob" to "firmware" everywhere for better
and intutive naming.
Signed-off-by: Anup Patel <[email protected]>
|
|
This patch removes unwanted sbi_printf() from
sbi_hart_wait_for_coldboot().
Signed-off-by: Anup Patel <[email protected]>
|
|
This patch adds documentation for fw_jump and fw_payload
firmware blobs.
Signed-off-by: Anup Patel <[email protected]>
|
|
This patch adds more details to top-level README.md based on
current state of OpenSBI.
Signed-off-by: Anup Patel <[email protected]>
|
|
Various fixes for unleashed board
|
|
Signed-off-by: Atish Patra <[email protected]>
|
|
Signed-off-by: Atish Patra <[email protected]>
|
|
Signed-off-by: Atish Patra <[email protected]>
|
|
Signed-off-by: Atish Patra <[email protected]>
|
|
Signed-off-by: Atish Patra <[email protected]>
|
|
We can only use fw_payload blob on Kendryte K210 board
because there is no previous booting stage hence this
patch enables fw_payload for Kendryte K210 board.
Signed-off-by: Anup Patel <[email protected]>
|
|
Only compiles for now, completely untested.
Signed-off-by: Damien Le Moal <[email protected]>
|
|
Add comments to assembler (not trivial to follow).
Signed-off-by: Damien Le Moal <[email protected]>
|
|
Ignore build and install directories
Signed-off-by: Damien Le Moal <[email protected]>
|
|
This patch extends fw_payload blob to provide FW_PAYLOAD_FDT_PATH
option using which we can embed custom FDT in .text section of
fw_payload blob. In other words, FW_PAYLOAD_FDT_PATH is an option
to forcefully override FDT passed by previous booting stage in
a1 register.
Signed-off-by: Anup Patel <[email protected]>
|
|
Instead of placing FDT (passed by previous booting stage) at a
location relative to next address we should have absolute
location of placing FDT so that we more freedom of placing FDT.
This will be particularly useful for platforms/boards with
very less RAM (such as Kendryte board).
Due to above motivation, we rename FW_xyz_FDT_OFFSET options
to FW_xyz_FDT_ADDR options and use FW_xyz_FDT_ADDR options as
absolute address for placing FDT.
Signed-off-by: Anup Patel <[email protected]>
|
|
The PLAT_TEXT_START is only used by our firmware blobs hence
rename it to FW_TEXT_START.
Signed-off-by: Anup Patel <[email protected]>
|
|
This patch remove hard-coding of payload location in
fw_payload.elf.ldS by adding compile-time option
FW_PAYLOAD_OFFSET.
With the new compile-time option, payload will be placed
at PLAT_TEXT_START + FW_PAYLOAD_OFFSET address.
Signed-off-by: Anup Patel <[email protected]>
|
|
Various typos fix.
Signed-off-by: Damien Le Moal <[email protected]>
|