History log of /seL4-test-master/tools/riscv-pk/machine/minit.c
Revision Date Author Comments
# d3293c7c 10-Jul-2019 Yanyan Shen <yanyan.shen@data61.csiro.au>

bbl: redirect traps to HS mode


# f4c34d86 14-May-2019 Siwei Zhuang <siwei.zhuang@data61.csiro.au>

Add ns16750 driver for ariane.


# 815050f0 19-Dec-2018 Andrew Waterman <andrew@sifive.com>

Set up PMP earlier, so it can be overridden later


# f579c48e 02-Dec-2018 Andrew Waterman <andrew@sifive.com>

Revert "Avoid writing reserved values to pmpaddr CSR"

This reverts commit 7bee30c1ff56975041ffc67cd0170d7477aba865.

All ones is no longer "reserved", so the old code is OK.


# 23de87d8 20-Nov-2018 Logan Gunthorpe <logang@deltatee.com>

Fix the calculation for the number of interrupt enable words

The number of interrupt enable words should be the number of devices
divided by the number of bits per word (not the number of bytes per
word) and it should round up.

Without this fix, when using a larger number of interrupts,
the user will see a number of errors in qemu of the form:

plic: invalid register write: %08x

Signed-off-by: Logan Gunthorpe <logang@deltatee.com>


# 7bee30c1 23-Sep-2018 Andrew Waterman <andrew@sifive.com>

Avoid writing reserved values to pmpaddr CSR


# 165c85ca 12-Jul-2018 Hesham Almatary <Hesham.Almatary@cl.cam.ac.uk>

minit: Move pmp setup code to a separate function to avoid duplicating code

Currently it's being used by both enter_supervisor_mode and enter_machine_mode


# 72672f9a 14-May-2018 Hesham Almatary <Hesham.Almatary@cl.cam.ac.uk>

bbl: boot payload in machine mode when --enable-boot-machine is passed


# 16476bd8 09-Jul-2018 Andrew Waterman <andrew@sifive.com>

Properly license all nontrivial files


# 474ee5a8 20-May-2018 Michael Clark <michaeljclark@mac.com>

RISC-V: Support separate firmware and kernel payload

Support for separate firmware and kernel payload is added
by updating BBL to read optional preloaded kernel address
attributes from device-tree using a similar mechanism to
that used to pass init ramdisk addresses to linux kernel.

chosen {
riscv,kernel-start = <0x00000000 0x80200000>;
riscv,kernel-end = <0x00000000 0x80590634>;
};

These attributes are added by QEMU and read by BBL when combining
-bios <firmware-image> and -kernel <kernel-image> options. e.g.

$ qemu-system-riscv64 -machine virt -bios bbl -kernel vmlinux

With this change, bbl can be compiled without --with-payload
and the dummy payload alignment is altered to make the memory
footprint of the firmware-only bbl smaller. The dummy payload
message is updated to indicate the alternative load method.

This load method could also be supported by a first stage boot
loader that reads seperate firmware and kernel from SPI flash.
The main advantage of this new mechanism is that it eases kernel
development by avoiding the riscv-pk packaging step after kernel
builds, makes building per repository artefacts for CI simpler,
and mimics bootloaders on other platforms that can load a kernel
image file directly. Ultimately BBL should use an SPI driver to
load the kernel image however this mechanism supports use cases
such such as QEMU's -bios, -kernel and -initrd options following
examples from other platforms that pass kernel entry to firmware
via device-tree.

Cc: Palmer Dabbelt <palmer@sifive.com>
Cc: Alistair Francis <Alistair.Francis@wdc.com>
Signed-off-by: Michael Clark <mjc@sifive.com>


# 9ffedde3 21-May-2018 Zihao Yu <19884013+sashimi-yzh@users.noreply.github.com>

machine,minit: initialize emulated FCSR in enter_supervisor_mode() (#106)

* If BBL emulates the FPU, the trap handler will load emulated FCSR from
x0's save slot into tp. The emulated FCSR should be initialized, else
the field of rounding mode will contain garbage codes. This will
lead to raising SIGABRT for a user mode program which tries to print a
floating point variable. In glibc, __printf_fp_l() (defined in
riscv-glibc/stdio-common/printf_fp.c) will call round_away() (defined
in riscv-glibc/include/rounding-mode.h). With a garbage rounding mode
in emulated FCSR, round_away() may call abort().


# 94bcafff 15-May-2018 Jim Straus <jstraus59@users.noreply.github.com>

Fix for missing supervisor mode when running on E51 (#96)

The E51 core on the U54-MC lacks supervisor mode, thus the plic_s_ie and plic_s_thresh are NULL when running on this core. This adds checks for this case.


# 5a0e3e55 20-Mar-2018 Wesley W. Terpstra <wesley@sifive.com>

minit: insert printm as work-around for a race condition

Reboot does not work reliably without this.


# 3740bc51 09-Jan-2018 Zong Li <zongbox@gmail.com>

Remove the repeating bitmask of medeleg register (#74)


# 132c6292 12-Dec-2017 Palmer Dabbelt <palmer@dabbelt.com>

Add a 16550 UART driver to back the SBI console

QEMU currently provides the console via HTIF and the SBI. That's a bit
messy because BBL polls for serial input, which means that typing too
quickly loses characters. While QEMU has a standard 16550 device model,
there's no way to have two consoles share the console in QEMU (as they'd
step all over each other) so that means we can't have both the HTIF
console and the 16550 console.

With this patch, QEMU can be changed to use a 16650 instead of the HTIF
for serial output. Linux will use the SBI for early printk support
(which is fine, polling for output is stable) and then swap over as soon
as it detects the UART. When Linux swaps it prints out the whole
history, but there's probably a way to get around that. There's a few
lines that are output to both, but it appears the Linux driver is close
enough to ours that nothing catastrophic happens -- there's not much to
the device, so hopefully that pans out on real hardware too.

Once Linux swaps over to natively using the driver we get reliable
console input. If you don't have the in-kernel driver then Linux never
swaps over and keeps using the SBI console just like before.


# d1849cb5 03-Nov-2017 Palmer Dabbelt <palmer@dabbelt.com>

Remove the platform interface

We now automatically detect everything that the platform interface used
to be used for, so it's now obsolete!


# 27498013 02-Nov-2017 Palmer Dabbelt <palmer@dabbelt.com>

Check if we have extensions before using them


# 21209988 02-Nov-2017 Palmer Dabbelt <palmer@dabbelt.com>

Initialize the UART first

Without this I can't get printf to show me debug info during early boot.


# 92047850 02-Nov-2017 Palmer Dabbelt <palmer@dabbelt.com>

Detect harts that can't boot Linux instead of hard-coding them

This checks to see if a hart can't boot Linux by looking for a
compatible "mmu-type" field. If the hart can't boot Linux, then bbl
masks it off.


# 3f20915e 14-Aug-2017 Wesley W. Terpstra <wesley@sifive.com>

finisher: support terminating sifive devices simulation (#61)


# 298984cb 02-Aug-2017 Palmer Dabbelt <palmer@dabbelt.com>

Move DISABLED_HART_MASK to the platform

Some platforms can't boot Linux on all the harts. This commit allows
platforms to define the set of harts that should be prevented from
booting past BBL. This is essentially just a new mechanism for defining
the DISABLED_HART_MASK.


# a2c8937e 05-Apr-2017 Andrew Waterman <andrew@sifive.com>

Remove num_harts; use hart_mask exclusively


# dce2b7dd 05-Apr-2017 Andrew Waterman <andrew@sifive.com>

Rename HART_MASK to DISABLED_HART_MASK to clarify polarity


# 8b4421ba 05-Apr-2017 Wesley W. Terpstra <wesley@sifive.com>

bbl: prevent named cores from booting


# d1200e3a 04-Apr-2017 Andrew Waterman <andrew@sifive.com>

Remove SBI console printm to speed up PK simulation


# 733fae92 31-Mar-2017 Wesley W. Terpstra <wesley@sifive.com>

clint: move hart wakeup till after all FDT parsing

The clint was wiping out information discovered by the plic.
Initialize hart stacks as they are discovered.
Then fill in clint+plic info
Then wake the harts.


# 078ea399 30-Mar-2017 Andrew Waterman <andrew@sifive.com>

New PMP encoding


# 75f1854c 27-Mar-2017 Wesley W. Terpstra <wesley@sifive.com>

plic: discovered via fdt


# 9fa7b308 27-Mar-2017 Wesley W. Terpstra <wesley@sifive.com>

uart: add physical device driver


# 3473915b 27-Mar-2017 Andrew Waterman <andrew@sifive.com>

Separate page faults from physical memory access exceptions


# fc1af65c 23-Mar-2017 Andrew Waterman <andrew@sifive.com>

Set up PMPs, permissively for now


# 23ab37ad 22-Mar-2017 Wesley W. Terpstra <wesley@sifive.com>

SBI: a0+a1 hold hartid+dtb pointer between boot loader stages


# 316f85e9 21-Mar-2017 Wesley W. Terpstra <wesley@sifive.com>

machine: add FDT parser


# 36a5855d 08-Mar-2017 Andrew Waterman <andrew@sifive.com>

Don't rely on config string for basic functionality


# 410fb038 25-Feb-2017 Andrew Waterman <andrew@sifive.com>

New counter-enable scheme

https://github.com/riscv/riscv-isa-manual/issues/10


# 34979b93 22-Feb-2017 Andrew Waterman <andrew@sifive.com>

Fix PK boot


# f6bca6e3 20-Feb-2017 Andrew Waterman <andrew@sifive.com>

Don't block for acks on console writes


# 926b3606 17-Feb-2017 Andrew Waterman <andrew@sifive.com>

WIP towards ECALL interface for SBI


# 4678e84c 15-Feb-2017 Andrew Waterman <andrew@sifive.com>

Incorporate sptbr/sfence.vma changes


# 6c1d0604 25-Oct-2016 Andrew Waterman <waterman@cs.berkeley.edu>

Use __riscv_flen macro to detect FP support


# 8006d004 09-Sep-2016 Andrew Waterman <waterman@cs.berkeley.edu>

Attempt to disable FPU if using no-FPU pk/bbl


# d42f458b 28-Jul-2016 Andrew Waterman <waterman@cs.berkeley.edu>

Don't let other harts boot before HLS is initialized

Use IPIs to signal them.


# 8b41191c 05-Jul-2016 Andrew Waterman <waterman@cs.berkeley.edu>

Initialize timecmp; add PRCI test


# 1e62fdfc 06-Jun-2016 Andrew Waterman <waterman@cs.berkeley.edu>

PLIC registers are 32-bit, not 16-bit


# 771c1163 01-Jun-2016 Andrew Waterman <waterman@cs.berkeley.edu>

Clear IPIs using MMIO, not mip CSR


# e3afbd7c 24-May-2016 Andrew Waterman <waterman@cs.berkeley.edu>

Remove debug printfs


# 113d00e6 22-May-2016 Andrew Waterman <waterman@cs.berkeley.edu>

Add preliminary support for the interrupt controller


# b535cd6d 29-Apr-2016 Andrew Waterman <waterman@cs.berkeley.edu>

ERET -> MRET


# 66776bbc 29-Apr-2016 Andrew Waterman <waterman@cs.berkeley.edu>

Remove mtime/mtimecmp


# d5278834 10-Mar-2016 Andrew Waterman <waterman@cs.berkeley.edu>

Misc improvements


# 469c5f16 10-Mar-2016 Andrew Waterman <waterman@cs.berkeley.edu>

Make num_harts a uintptr_t

Making it a uint32_t is a false economy.


# b94c7a4b 10-Mar-2016 Andrew Waterman <waterman@cs.berkeley.edu>

Refactor pk, bbl, machine into separate libraries

Yuck.