summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-12-22platform: Remove PLAT_HART_COUNT and PLAT_HART_STACK_SIZEAnup Patel
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]>
2018-12-22firmware: Don't depend on PLAT_HART_COUNT and PLAT_HART_STACK_SIZEAnup Patel
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]>
2018-12-22firmware: Remove stack section from common linker scriptAnup Patel
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]>
2018-12-22platform: Remove PLAT_NAME from all platformsAnup Patel
The PLAT_NAME is used only in platform.c for all platforms hence remove it. Signed-off-by: Anup Patel <[email protected]>
2018-12-22Merge pull request #3 from riscv/unleashed_working_12_21Anup Patel
Unleashed working 12 21
2018-12-21Disable all interrupts during warm irqchip init.Atish Patra
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]>
2018-12-21Introduce hart disabled parameter in platform.Atish Patra
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]>
2018-12-21Fix plic warm init in platform code.Anup Patel
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]>
2018-12-21Fix plic warm init in common code.Anup Patel
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]>
2018-12-21Move hardcoded uart constant to macros.Atish Patra
Signed-off-by: Atish Patra <[email protected]>
2018-12-21Introduce HAS_MFAULTS_DELEGATION featureDamien Le Moal
Conditionnally delegate page fault exceptions from M mode to S mode based on the platform features. Signed-off-by: Damien Le Moal <[email protected]>
2018-12-21platform: kendryte/k210: Don't include math.hAnup Patel
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]>
2018-12-21firmware: Remove redundant write to mideleg and medelegAnup Patel
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]>
2018-12-21Revert "Fix FDT relocation"Anup Patel
This patch reverts "Fix FDT relocation" because it breaks fw_jump firmware. Signed-off-by: Anup Patel <[email protected]>
2018-12-21lib: Remove prints from sbi_hart_switch_mode()Anup Patel
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]>
2018-12-21lib: Fix delegate_traps() for Linux bootAnup Patel
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]>
2018-12-21console: protect output with a spinlockDamien Le Moal
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]>
2018-12-21Kendryte-k210: Remove unnecessary asm functionsDamien Le Moal
Use functions defined in sbi/riscv_asm.h. Signed-off-by: Damien Le Moal <[email protected]>
2018-12-21Introduce sbi_current_hartid()Damien Le Moal
Use this helper instead of hardcoding csr_read(mhartid). Signed-off-by: Damien Le Moal <[email protected]>
2018-12-21Cleanup and rename sbi_hart_boot_next()Damien Le Moal
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]>
2018-12-21Fiw comment typoDamien Le Moal
Signed-off-by: Damien Le Moal <[email protected]>
2018-12-21Update Kendryte k210 supportDamien Le Moal
Booting now. Signed-off-by: Damien Le Moal <[email protected]>
2018-12-21Fix interrupt and exception delegationDamien Le Moal
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]>
2018-12-21Add a hang messageDamien Le Moal
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]>
2018-12-21Add a bannerDamien Le Moal
Signed-off-by: Damien Le Moal <[email protected]>
2018-12-21fw: Disable delegationDamien Le Moal
Also disable interrupts and exceptions delegation when clearing mie and mip. Signed-off-by: Damien Le Moal <[email protected]>
2018-12-21Fix FDT relocationDamien Le Moal
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]>
2018-12-21Refine platform features controlDamien Le Moal
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]>
2018-12-21lib: Hang in sbi_hart_boot_next() if next mode is not supportedAtish Patra
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]>
2018-12-21top: Rename "plat" to "platform" everywhereAnup Patel
This patch renames "plat" to "platform" everywhere for better readablility. Signed-off-by: Anup Patel <[email protected]>
2018-12-21lib: Introduce bitmap to track HARTs waiting for coldbootAnup Patel
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]>
2018-12-21top: Rename "blob" to "firmware" everywhereAnup Patel
This patch renames "blob" to "firmware" everywhere for better and intutive naming. Signed-off-by: Anup Patel <[email protected]>
2018-12-21lib: sbi_hart: Remove unwanted sbi_printf()Anup Patel
This patch removes unwanted sbi_printf() from sbi_hart_wait_for_coldboot(). Signed-off-by: Anup Patel <[email protected]>
2018-12-21docs: Add documentation for firmware blobsAnup Patel
This patch adds documentation for fw_jump and fw_payload firmware blobs. Signed-off-by: Anup Patel <[email protected]>
2018-12-21top: More detailed top-level README.mdAnup Patel
This patch adds more details to top-level README.md based on current state of OpenSBI. Signed-off-by: Anup Patel <[email protected]>
2018-12-21Merge pull request #1 from riscv/atish_fix_1Anup Patel
Various fixes for unleashed board
2018-12-20Support unsigned long in sbi_printfAtish Patra
Signed-off-by: Atish Patra <[email protected]>
2018-12-20Use wfi for coldboot finish call.Atish Patra
Signed-off-by: Atish Patra <[email protected]>
2018-12-20Fix baud rate divisor computation for U540.Atish Patra
Signed-off-by: Atish Patra <[email protected]>
2018-12-20Support /r/n as newline character.Atish Patra
Signed-off-by: Atish Patra <[email protected]>
2018-12-20HiFive Unleashed has 5 harts. Fix the config to reflect that.Atish Patra
Signed-off-by: Atish Patra <[email protected]>
2018-12-20plat: kendryte/k210: Enable fw_payload in config.mkAnup Patel
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]>
2018-12-20plat: Add Kendryte k210 initial supportDamien Le Moal
Only compiles for now, completely untested. Signed-off-by: Damien Le Moal <[email protected]>
2018-12-20blob: Fix commentsDamien Le Moal
Add comments to assembler (not trivial to follow). Signed-off-by: Damien Le Moal <[email protected]>
2018-12-20Added .gitignoreDamien Le Moal
Ignore build and install directories Signed-off-by: Damien Le Moal <[email protected]>
2018-12-19blob: payload: Add FW_PAYLOAD_FDT_PATH optionAnup Patel
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]>
2018-12-19blob: Rename FW_xyz_FDT_OFFSET to FW_xyz_FDT_ADDRAnup Patel
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]>
2018-12-19blob: Rename PLAT_TEXT_START to FW_TEXT_STARTAnup Patel
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]>
2018-12-19blob: payload: Introduce FW_PAYLOAD_OFFSET compile time optionAnup Patel
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]>
2018-12-19blob: Fix comment typosDamien Le Moal
Various typos fix. Signed-off-by: Damien Le Moal <[email protected]>