Commit Graph
22 Commits
Author SHA1 Message Date
Anup PatelandAtish Patra a6a5bb22a8 Fix plic warm init in platform code.
Pass S-Mode and M-mode context id separately to common warm init.

Signed-off-by: Atish Patra <atish.patra@wdc.com>
Signed-off-by: Anup Patel <anup.patel@wdc.com>
2018-12-21 22:11:21 -08:00
Anup PatelandAtish Patra 5148499e03 Fix plic warm init in common code.
Unleashed doesn't have S mode for hart 0.
PLIC register base calculation is current wrong because of that.

Signed-off-by: Atish Patra <atish.patra@wdc.com>
Signed-off-by: Anup Patel <anup.patel@wdc.com>
2018-12-21 22:11:10 -08:00
Anup PatelandAnup Patel db6c1fe78b platform: kendryte/k210: Don't include math.h
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 <anup.patel@wdc.com>
2018-12-21 15:32:28 +05:30
Anup PatelandAnup Patel ef5f4e149c firmware: Remove redundant write to mideleg and medeleg
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 <anup.patel@wdc.com>
2018-12-21 15:05:59 +05:30
Anup PatelandAnup Patel 4e15d79419 Revert "Fix FDT relocation"
This patch reverts "Fix FDT relocation" because it breaks
fw_jump firmware.

Signed-off-by: Anup Patel <anup.patel@wdc.com>
2018-12-21 15:04:21 +05:30
Anup PatelandAnup Patel a18913200a lib: Remove prints from sbi_hart_switch_mode()
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 <anup.patel@wdc.com>
2018-12-21 14:54:06 +05:30
Anup PatelandAnup Patel 1bfa244505 lib: Fix delegate_traps() for Linux boot
commit d403c70fb1 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 <anup.patel@wdc.com>
2018-12-21 14:54:06 +05:30
Anup PatelandAnup Patel 089f70a179 top: Rename "plat" to "platform" everywhere
This patch renames "plat" to "platform" everywhere for better
readablility.

Signed-off-by: Anup Patel <anup.patel@wdc.com>
2018-12-21 10:35:04 +05:30
Anup PatelandAnup Patel 6f02b6938f lib: Introduce bitmap to track HARTs waiting for coldboot
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 <anup.patel@wdc.com>
2018-12-21 10:09:33 +05:30
Anup PatelandAnup Patel b023176c17 top: Rename "blob" to "firmware" everywhere
This patch renames "blob" to "firmware" everywhere for better
and intutive naming.

Signed-off-by: Anup Patel <anup@brainfault.org>
2018-12-21 09:52:27 +05:30
Anup PatelandAnup Patel ab5b228ff5 lib: sbi_hart: Remove unwanted sbi_printf()
This patch removes unwanted sbi_printf() from
sbi_hart_wait_for_coldboot().

Signed-off-by: Anup Patel <anup.patel@wdc.com>
2018-12-21 07:51:59 +05:30
Anup PatelandAnup Patel 33ec85c9ab docs: Add documentation for firmware blobs
This patch adds documentation for fw_jump and fw_payload
firmware blobs.

Signed-off-by: Anup Patel <anup.patel@wdc.com>
2018-12-21 07:28:33 +05:30
Anup PatelandAnup Patel ef1f669cb7 top: More detailed top-level README.md
This patch adds more details to top-level README.md based on
current state of OpenSBI.

Signed-off-by: Anup Patel <anup.patel@wdc.com>
2018-12-21 07:28:33 +05:30
Anup PatelandAnup Patel a8043647a4 plat: kendryte/k210: Enable fw_payload in config.mk
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 <anup.patel@wdc.com>
2018-12-20 11:51:22 +05:30
Anup PatelandAnup Patel bc4d6108f4 blob: payload: Add FW_PAYLOAD_FDT_PATH option
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 <anup.patel@wdc.com>
2018-12-19 18:32:49 +05:30
Anup PatelandAnup Patel bc99e707cd blob: Rename FW_xyz_FDT_OFFSET to FW_xyz_FDT_ADDR
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 <anup.patel@wdc.com>
2018-12-19 15:47:52 +05:30
Anup PatelandAnup Patel d9c5bea9a2 blob: Rename PLAT_TEXT_START to FW_TEXT_START
The PLAT_TEXT_START is only used by our firmware blobs hence
rename it to FW_TEXT_START.

Signed-off-by: Anup Patel <anup.patel@wdc.com>
2018-12-19 15:38:51 +05:30
Anup PatelandAnup Patel fbb4a52330 blob: payload: Introduce FW_PAYLOAD_OFFSET compile time option
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 <anup.patel@wdc.com>
2018-12-19 15:38:48 +05:30
Anup PatelandAnup Patel 8a4088c3af plat: clint: Reduce use of atomic operation on IPI registers
Currently, we aggresively use atomic operation on CLINT IPI
register. This patch simplify CLINT IPI APIs by reducing use
of atomic operations. In future, we will gradually increase
use of atomic operations for CLINT IPI APIs.

Signed-off-by: Anup Patel <anup.patel@wdc.com>
2018-12-16 13:51:16 +05:30
Anup PatelandAnup Patel 385b5afe7d plat: Add separate platform support for QEMU sifive_u machine
The QEMU sifive_u machine is not excatly same as HiFive Unleashed
board hence we add separate platform support for QEMU sifive_u
machine.

Signed-off-by: Anup Patel <anup.patel@wdc.com>
2018-12-16 10:15:58 +05:30
Anup PatelandAnup Patel 292e6344fa lib: Don't emulate CSR read for misa and mhartid
Emulation of CSR read for misa and mhartid was a workaround for
bootloader accessing these CSRs in S-mode. This patch removes
CSR read emulation for misa and mhartid.

Signed-off-by: Anup Patel <anup.patel@wdc.com>
2018-12-16 10:15:55 +05:30
Anup PatelandAnup Patel 9e8ff05cb6 Initial commit.
Signed-off-by: Anup Patel <anup.patel@wdc.com>
2018-12-11 19:24:06 +05:30