summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-12-24include: Bump-up version to 1.6v1.6Anup Patel
Update the OpenSBI version to 1.6 as part of release preparation. Signed-off-by: Anup Patel <[email protected]> Signed-off-by: Anup Patel <[email protected]>
2024-12-24lib: utils: Fix irqchip registration for PLIC and APLICAnup Patel
Currently, the same irqchip instance is registered for multiple PLIC and APLIC instances which causes the sbi_list_for_each_entry() loop in the sbi_irqchip_init() to hang at boot-time. To address the above issue, register a separate irqchip instance for each PLIC and APLIC instance. Fixes: 2dd6eaf68055 ("lib: sbi_irqchip: Call driver warm_init from SBI core") Reported-by: Himanshu Chauhan <[email protected]> Signed-off-by: Anup Patel <[email protected]> Reviewed-by: Himanshu Chauhan <[email protected]>
2024-12-24lib: sbi: Improve the alignment of boot-time printsAnup Patel
Addition of "Experimental SBI Extensions" to the boot-time prints disturbs the alignment of other prints so adjust all boot-time prints accordingly. Signed-off-by: Anup Patel <[email protected]>
2024-12-22lib: sbi: Print list of available SBI extensions at boot-timeAnup Patel
Add boot-time prints for list of available standard and experimental SBI extensions. Signed-off-by: Anup Patel <[email protected]>
2024-12-21include: sbi: Fix compiling with C23 enabled compilersMichael Neuling
C23 pre-defines bool so we need to gate our defines. Signed-off-by: Michael Neuling <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-12-21inclue: sbi_utils: Cleanup int vs bool in semihosting_init() definitionsMichael Neuling
This is needed for a future patches to enable the new C23 language dialect. Signed-off-by: Michael Neuling <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-12-21lib: utils: Mark RPMI drivers as experimentalSamuel Holland
These drivers were merged on an experimental basis without the RPMI specification being frozen. As a result, they may not be compatible with the frozen version of the RPMI protocol. Additionally, their devicetree bindings have not been reviewed and are subject to change. Warn the user that these drivers make no compatibility guarantees, and that their behavior and devicetree bindings may change incompatibly in future versions of OpenSBI. Signed-off-by: Samuel Holland <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-12-21platform: generic: Initialize console before other driversSamuel Holland
Initialize serial drivers first, so messages printed by other drivers do not need to use the early console buffer. Suggested-by: Anup Patel <[email protected]> Signed-off-by: Samuel Holland <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-12-19lib: utils: Improve rpmi_cppc_fc_db_trigger() for RV32Xiang W
Improve 64-bit operation under rv32 and remove db_val_u32_hi in rpmi_cppc_fc_db_trigger(). Signed-off-by: Xiang W <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-12-15lib: sbi_pmu: Verify the raw events first during event infoAtish Patra
The raw events have same event_idx. Thus, the event info sanity check only relies on the select mask. The raw event check should be done first so that regular hardware events can be verified using event idx range check. Fixes: e4345842168b ("lib: sbi_pmu: Implement SBI PMU event info function") Signed-off-by: Atish Patra <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-12-15lib: sbi_pmu: Fix the sanity check condition for hw event mapAtish Patra
The hardware event map function invoked from platform code should exclude any raw events as there is a separate function for the raw events. Fixes: d8a483fc7fd0 ("lib: sbi_pmu: PMU raw event v2 support") Signed-off-by: Atish Patra <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-12-15scripts/carray: change to using single awk invocation to generate .cBen Dooks
The shell script makes multiple call-outs to awk to get information from the configuration file. It would be easier to just write the whole thing in one .awk script and have the makefile altered to call that instead. There should be no functional difference other than the script type and has been tested with PLATFORM=generic build. This should be both quicker and easier to understand. Signed-off-by: Ben Dooks <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-12-15script/carry.sh: send error to stderrBen Dooks
Send the errors to stderr, otherwise they end up being written to the file the script was redirecting to in the Makefile Also, use EOF block to make it easier to redirect Signed-off-by: Ben Dooks <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-12-15Makefile: remove carry output if scripts/carray.sh failsBen Dooks
If the script fails, we end up trying to build either an empty or damaged .c file. Just remove it and let gcc fail on non-existent file. Signed-off-by: Ben Dooks <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-12-15top: add ~ files to .gitignoreBen Dooks
Ignore temporary files, and avoid accidentally adding them to a commit. Signed-off-by: Ben Dooks <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-12-15lib: sbi: sse: Fix a6 and a7 register content upon injectionClément Léger
The specification states that a6 contains the current hart id and a7 contains the entry argument. This was inverted in the current implementation. Reported-by: Andrew Jones <[email protected]> Signed-off-by: Clément Léger <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-12-15lib: sbi: fix GLOBAL_PLAT_DEFINEClément Léger
Fix GLOBAL_PLAT_0_START/END definitions. The specification states that the beginning of the range is 0xc000 and the end is 0xffff. Reported-by: Andrew Jones <[email protected]> Signed-off-by: Clément Léger <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-12-15Makefile: Don't enable V-extension using -march optionAnup Patel
Enabling V-extension using -march option causes OpenSBI boot-time hang with LLVM compiler. As a work-around, don't enable V-extension using -march option and instead use a custom OpenSBI specific define inform availability of V-extension to lib/sbi/sbi_trap_v_ldst.c. Fixes: c2acc5e5b0d8 ("lib: sbi_misaligned_ldst: Add handling of vector load/store") Signed-off-by: Anup Patel <[email protected]> Reviewed-by: Samuel Holland <[email protected]>
2024-12-15lib: utils/fdt_cppc_rpmi: Fix compile error with LLVMAnup Patel
The following error is observed when compiling fdt_cppc_rpmi driver using LLVM: lib/utils/cppc/fdt_cppc_rpmi.c:87:3: error: label followed by a declaration is a C23 extension [-Werror,-Wc23-extensions] 87 | u64 db_val_u64 = 0; To fix the above issue, move the variable declaration at the start of function. Fixes: 591a98bdd549 ("lib: utils/cppc: Add RPMI CPPC driver") Signed-off-by: Anup Patel <[email protected]> Reviewed-by: Samuel Holland <[email protected]>
2024-12-06lib: sbi_misaligned_ldst: Add handling of vector load/storeNylon Chen
Add misaligned load/store handling for the vector extension to the sbi_misaligned_ldst library. This implementation is inspired from the misaligned_vec_ldst implementation in the riscv-pk project. Co-developed-by: Zong Li <[email protected]> Signed-off-by: Zong Li <[email protected]> Signed-off-by: Nylon Chen <[email protected]> Reviewed-by: Andy Chiu <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-12-06lib: utils/mpxy: Add RPMI client driver for MPXYRahul Pathak
Add a generic RPMI mailbox client driver which provides a MPXY channel. Initially, this driver only supports RPMI clock service group but can be extended to support multiple RPMI service groups. Signed-off-by: Rahul Pathak <[email protected]> Co-developed-by: Anup Patel <[email protected]> Signed-off-by: Anup Patel <[email protected]>
2024-12-06lib: utils: Add simple FDT based MPXY driver frameworkAnup Patel
The generic platform can have multiple MPXY drivers so add a simple FDT based MPXY driver framework. Signed-off-by: Anup Patel <[email protected]>
2024-12-06lib: sbi: Implement SBI MPXY extensionAnup Patel
Implement the SBI MPXY extension which provides an SBI interface to the supervisor software for send messages via MPXY framework. Signed-off-by: Rahul Pathak <[email protected]> Co-developed-by: Anup Patel <[email protected]> Signed-off-by: Anup Patel <[email protected]>
2024-12-06lib: sbi: Add SBI Message Proxy (MPXY) frameworkRahul Pathak
Introduce SBI Message Proxy (MPXY) framework which allows platform specific code or drivers to register message protocol specific channels. This framework enables the supervisor software to send messages belonging to different message protocols via OpenSBI firmware. Signed-off-by: Rahul Pathak <[email protected]> Co-developed-by: Himanshu Chauhan <[email protected]> Signed-off-by: Himanshu Chauhan <[email protected]> Co-developed-by: Anup Patel <[email protected]> Signed-off-by: Anup Patel <[email protected]>
2024-12-06lib: utils/cppc: Add RPMI CPPC driverSubrahmanya Lingappa
Add RPMI based driver for CPPC register read, write and probe. Signed-off-by: Subrahmanya Lingappa <[email protected]> Co-developed-by: Rahul Pathak <[email protected]> Signed-off-by: Rahul Pathak <[email protected]> Co-developed-by: Sunil V L <[email protected]> Signed-off-by: Sunil V L <[email protected]> Signed-off-by: Anup Patel <[email protected]>
2024-12-06lib: utils: Add simple FDT based CPPC driver frameworkAnup Patel
The generic platform can have multiple CPPC drivers so add a simple FDT based CPPC driver framework. Signed-off-by: Anup Patel <[email protected]>
2024-12-06lib: utils/hsm: Add RPMI HSM driverSubrahmanya Lingappa
The RPMI HSM service group provides set of routine to query and control power states of a Hart. Add RPMI based Hart State Management (HSM) driver. Signed-off-by: Subrahmanya Lingappa <[email protected]> Signed-off-by: Anup Patel <[email protected]>
2024-12-06lib: utils: Add simple FDT based HSM driver frameworkAnup Patel
The generic platform can have multiple HSM drivers so add a simple FDT based HSM driver framework. Signed-off-by: Anup Patel <[email protected]>
2024-12-06lib: utils/fdt: Allow dynamic registration of FDT fixup callbacksAnup Patel
It should possible to fixup FDT from any part of OpenSBI so add fdt_register_general_fixup() which allows dynamic registration of FDT fixup callbacks. Signed-off-by: Anup Patel <[email protected]>
2024-12-06lib: sbi: Add optional resume address to hart suspendSubrahmanya Lingappa
Add an optional resume address to the platform specific hart suspend call. Signed-off-by: Subrahmanya Lingappa <[email protected]> Signed-off-by: Anup Patel <[email protected]>
2024-12-06lib: utils/suspend: Add RPMI system suspend driverSubrahmanya Lingappa
Add RPMI based system suspend driver. To test this, execute the follwoing in Linux: $ echo mem > /sys/power/state To wake up, execute the following command on qemu monitor terminal: (qemu) system_wakeup Signed-off-by: Subrahmanya Lingappa <[email protected]> Signed-off-by: Anup Patel <[email protected]>
2024-12-06lib: utils: Add simple FDT based system suspend driver frameworkAnup Patel
The generic platform can have multiple system suspend drivers so add a simple FDT based system suspend driver framework. Signed-off-by: Anup Patel <[email protected]>
2024-12-06lib/utils: reset: Add RPMI System Reset driverRahul Pathak
Add RPMI based driver for system reset and enable it in the generic platform defconfig Signed-off-by: Rahul Pathak <[email protected]> Signed-off-by: Anup Patel <[email protected]>
2024-12-06lib/utils: Add RPMI messaging protocol and shared memory transport supportRahul Pathak
The RISC-V Platform Management Interface (RPMI) defines a messaging protocol and shared memory based transport for bi-directional communication with an on-chip or external microcontroller. To support RPMI in OpenSBI, add: 1) The RPMI messaging protocol defines and helper macros 2) A FDT mailbox driver for the RPMI shared memory transport Signed-off-by: Rahul Pathak <[email protected]> Co-developed-by: Subrahmanya Lingappa <[email protected]> Signed-off-by: Subrahmanya Lingappa <[email protected]> Co-developed-by: Anup Patel <[email protected]> Signed-off-by: Anup Patel <[email protected]>
2024-12-06lib: utils/mailbox: Add simple FDT based mailbox frameworkAnup Patel
Add a simple FDT based mailbox framework which is built on top of the generic mailbox library. The phandle of FDT mailbox DT node is treated as the unique mailbox controller ID which is required by the generic mailbox library. The FDT based mailbox drivers will be probed on-demand from fdt_mailbox_request_chan() called by the mailbox client drivers. Signed-off-by: Anup Patel <[email protected]>
2024-12-06lib: utils/mailbox: Add generic mailbox libraryAnup Patel
Add generic mailbox library which is independent of hardware description format. The OpenSBI platform support or mailbox drivers can register mailbox controller instances which can be discovered and used by different mailbox client drivers. Each mailbox controller instance has a unique ID which can be used by mailbox client drivers for find the mailbox controller instance. The mailbox client drivers will typically request a mailbox channel from the mailbox controller and use it to do data transfer with the remote end of mailbox channel. Signed-off-by: Anup Patel <[email protected]>
2024-12-06lib: Increase ROOT_REGION_MAX to accomodate more memregionsRahul Pathak
As more drivers adding memregions into root domain, the current static limit of ROOT_REGION_MAX is not sufficient. Increase the limit to accomodate more memregions. Signed-off-by: Rahul Pathak <[email protected]> Signed-off-by: Anup Patel <[email protected]>
2024-12-02lib: sbi_pmu: Implement SBI PMU event info functionAtish Patra
Allow the supervisor software to query about the event using the new function. This supports both firmware and hardware events. The hardware event presence is verified hw_event_map which is populated via PMU device tree node. The firmware event presence is checked through event validation function which should take care of both standard and platform firmware events. Signed-off-by: Atish Patra <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-12-02lib: sbi_pmu: Add SBI PMU event info function details.Atish Patra
The SBI v3.0 introduced a new function to query about the events without invoking CFG_MATCH. This allows supervisor software to identify which events are supported on the platform with single SBI call instead of a CFG_MATCH for each event. Signed-off-by: Atish Patra <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-12-02lib: sbi_pmu: Remove redundant check for fw eventsAtish Patra
The pmu_validate_event already has the same check for fw events. The validate function is called prior to the current function to find a counter for firmware. That's why, the redudant check can be removed from the find counter function. Signed-off-by: Atish Patra <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-12-02lib: sbi_pmu: PMU raw event v2 supportAtish Patra
As per the updated ISA specification and SBI PMU v3.0, lower 56 bits are available for the platform to implement mhpmeventX encoding. Implement the PMU raw event V2 support defined in SBI v3.0 which allows more bits for platforms to encode the raw events. Signed-off-by: Atish Patra <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-12-01Makefile: Fix POSIX grep for multiple patternsIgor Melnikov
grep -e "-mstrict-align\|-mno-unaligned-access" makes use of GNU grep's backslash-escaped alternation operator \| which is available in basic regular expression syntax (BRE) mode. However, in POSIX grep's BRE mode | is an ordinary character which, when backslash-escaped, matches itself. Therefore, the search pattern becomes a plain string '-mstrict-align|-mno-unaligned-access' which obviously never matches the expected error and CC_SUPPORT_STRICT_ALIGN is always set to y. When cross-compiling with LLVM on amd64-unknown-openbsd7.6 host for riscv64-unknown-elf target this results in a compilation error: clang: error: unsupported option '-mno-unaligned-access' for target 'riscv64-unknown-elf' Using multiple -e options for this case maintains consistent behaviour across different grep implementations and fixes the issue. Signed-off-by: Igor Melnikov <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-11-28lib: utils/timer: Use fdt_driver for initializationSamuel Holland
The timer driver subsystem does not need any extra data, so it can use `struct fdt_driver` directly. The generic fdt_timer_init() performs a best-effort initialization of all matching DT nodes. Signed-off-by: Samuel Holland <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-11-28lib: utils/serial: Use fdt_driver for initializationSamuel Holland
The serial driver subsystem does not need any extra data, so it can use `struct fdt_driver` directly. The generic fdt_serial_init() first attempts to match the chosen stdout device, and upon failure matches the first available serial device in the DT. It is a fatal error if no such device is found. This matches the behavior of fdt_driver_init_one(). Signed-off-by: Samuel Holland <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-11-28lib: utils/reset: Use fdt_driver for initializationSamuel Holland
The reset driver subsystem does not need any extra data, so it can use `struct fdt_driver` directly. The generic fdt_reset_init() performs a best-effort initialization of all matching DT nodes. Platform-specific logic expects exactly one DT node to match a single driver. This is accomplished by using fdt_driver_init_one() with a local list containing that one driver. Signed-off-by: Samuel Holland <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-11-28lib: utils/regmap: Use fdt_driver for initializationSamuel Holland
The regmap driver subsystem does not need any extra data, so it can use `struct fdt_driver` directly. It always initializes the driver for a specific DT node. Signed-off-by: Samuel Holland <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-11-28lib: utils/ipi: Use fdt_driver for initializationSamuel Holland
The ipi driver subsystem does not need any extra data, so it can use `struct fdt_driver` directly. The generic fdt_ipi_init() performs a best-effort initialization of all matching DT nodes. Signed-off-by: Samuel Holland <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-11-28lib: utils/i2c: Use fdt_driver for initializationSamuel Holland
The i2c driver subsystem does not need any extra data, so it can use `struct fdt_driver` directly. It always initializes the driver for a specific DT node. Signed-off-by: Samuel Holland <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-11-28lib: utils/gpio: Use fdt_driver for initializationSamuel Holland
FDT gpio drivers have an extra .xlate operation, so they need to embed the `struct fdt_driver` inside the subsystem-specific type. The gpio subsystem always initializes the driver for a specific DT node. Signed-off-by: Samuel Holland <[email protected]> Reviewed-by: Anup Patel <[email protected]>
2024-11-28scripts/carray.sh: Allow referencing a struct memberSamuel Holland
It can be useful to embed the objects referenced by a carray inside another struct. To avoid type punning, the generated carray code must use the correct type for the enclosing struct and member access to compute the desired object address. Signed-off-by: Samuel Holland <[email protected]> Reviewed-by: Anup Patel <[email protected]>