Revision tags: release/14.2.0 |
|
#
def7999c |
| 08-Oct-2024 |
Mitchell Horne <mhorne@FreeBSD.org> |
riscv: enable cpufreq_dt driver
Implement the small amount of MD code required; copied from arm/arm64.
One tweak is made to cpufreq_dt itself: if the opp-shared property is missing, but there is on
riscv: enable cpufreq_dt driver
Implement the small amount of MD code required; copied from arm/arm64.
One tweak is made to cpufreq_dt itself: if the opp-shared property is missing, but there is only one CPU, then we can still attach. This is relevant for the single-core Allwinner D1.
Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D48124
show more ...
|
Revision tags: release/13.4.0, release/14.1.0, release/13.3.0, release/14.0.0 |
|
#
2ff63af9 |
| 16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: one-line .h pattern
Remove /^\s*\*+\s*\$FreeBSD\$.*$\n/
|
#
1083a8cd |
| 24-Jul-2023 |
Mark Johnston <markj@FreeBSD.org> |
pcpu: Remove unused definitions of ALT_STACK_SIZE
This was added originally for the sparc64 port and apparently copied to other platforms. No functional change intended.
MFC after: 1 week
|
Revision tags: release/13.2.0, release/12.4.0, release/13.1.0, release/12.3.0 |
|
#
4fffc56c |
| 04-Oct-2021 |
Mitchell Horne <mhorne@FreeBSD.org> |
riscv: implement db_show_mdpcpu()
This prints the machine-dependent members of struct pcpu when executing the 'show pcpu' or 'show all pcpu' ddb(4) commands.
MFC after: 3 days
|
Revision tags: release/13.0.0 |
|
#
d22883d7 |
| 10-Mar-2021 |
Jason A. Harmening <jah@FreeBSD.org> |
Remove PCPU_INC
e4b8deb22227 removed the last in-tree uses of PCPU_INC(). Its potential benefit is also practically nonexistent. Non-x86 platforms already implement it as PCPU_ADD(..., 1), and acc
Remove PCPU_INC
e4b8deb22227 removed the last in-tree uses of PCPU_INC(). Its potential benefit is also practically nonexistent. Non-x86 platforms already implement it as PCPU_ADD(..., 1), and according to [0] there are no recent x86 processors for which the 'inc' instruction provides a performance benefit over the equivalent memory-operand form of the 'add' instruction. The only remaining benefit of 'inc' is smaller instruction size, which in this case is inconsequential given the limited number of per-CPU data consumers.
[0]: https://www.agner.org/optimize/instruction_tables.pdf
Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D29308
show more ...
|
Revision tags: release/12.2.0 |
|
#
e2515283 |
| 27-Aug-2020 |
Glen Barber <gjb@FreeBSD.org> |
MFH
Sponsored by: Rubicon Communications, LLC (netgate.com)
|
#
de6fc2e3 |
| 15-Aug-2020 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r364082 through r364250.
|
#
90699f2a |
| 12-Aug-2020 |
John Baldwin <jhb@FreeBSD.org> |
Correct padding length for RISC-V PCPU data.
There was an additional 7 bytes of compiler-inserted padding at the end of the structure visible via 'ptype /o' in gdb.
Reviewed by: mhorne Obtained fro
Correct padding length for RISC-V PCPU data.
There was an additional 7 bytes of compiler-inserted padding at the end of the structure visible via 'ptype /o' in gdb.
Reviewed by: mhorne Obtained from: CheriBSD Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D25867
show more ...
|
Revision tags: release/11.4.0 |
|
#
44e86fbd |
| 13-Feb-2020 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r357662 through r357854.
|
#
3acb6572 |
| 12-Feb-2020 |
Mateusz Guzik <mjg@FreeBSD.org> |
Store offset into zpcpu allocations in the per-cpu area.
This shorten zpcpu_get and allows more optimizations.
Reviewed by: jeff Differential Revision: https://reviews.freebsd.org/D23570
|
Revision tags: release/12.1.0, release/11.3.0 |
|
#
e532a999 |
| 20-Jun-2019 |
Alan Somers <asomers@FreeBSD.org> |
MFHead @349234
Sponsored by: The FreeBSD Foundation
|
#
6ae48dd8 |
| 09-Jun-2019 |
Mitchell Horne <mhorne@FreeBSD.org> |
Fix global pointer relaxations in the RISC-V kernel
The gp register is intended to used by the linker as another means of performing relaxations, and should point to the small data section (.sdata).
Fix global pointer relaxations in the RISC-V kernel
The gp register is intended to used by the linker as another means of performing relaxations, and should point to the small data section (.sdata).
Currently gp is being used as the pcpu pointer within the kernel, but the more appropriate choice for this is the tp register, which is unused.
Swap existing usage of gp with tp within the kernel, and set up gp properly at boot with the value of __global_pointer$ for all harts.
Additionally, remove some cases of accessing tp from the PCB, as it is not part of the per-thread state. The user's tp and gp should be tracked only through the trapframe.
Reviewed by: markj, jhb Approved by: markj (mentor) MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D19893
show more ...
|
#
7648bc9f |
| 13-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
MFHead @347527
Sponsored by: The FreeBSD Foundation
|
#
b803d0b7 |
| 12-May-2019 |
Ruslan Bukin <br@FreeBSD.org> |
Add support for HiFive Unleashed -- the board with a multi-core RISC-V SoC from SiFive, Inc.
The first core on this SoC (hart 0) is a 64-bit microcontroller.
o Pick a hart to run boot process using
Add support for HiFive Unleashed -- the board with a multi-core RISC-V SoC from SiFive, Inc.
The first core on this SoC (hart 0) is a 64-bit microcontroller.
o Pick a hart to run boot process using hart lottery. This allows to exclude hart 0 from running the boot process. (BBL releases hart 0 after the main harts, so it never wins the lottery). o Renumber CPUs early on boot. Exclude non-MMU cores. Store the original hart ID in struct pcpu. This allows to find out the correct destination for IPIs and remote sfence calls.
Thanks to SiFive, Inc for the board provided.
Reviewed by: markj Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D20225
show more ...
|
#
e196d237 |
| 07-Apr-2019 |
Mitchell Horne <mhorne@FreeBSD.org> |
RISC-V: initialize pcpu slightly earlier
In certain scenarios, it is possible for PCPU data to be accessed before it has been initialized (e.g. during printf if the kernel was built with the TSLOG o
RISC-V: initialize pcpu slightly earlier
In certain scenarios, it is possible for PCPU data to be accessed before it has been initialized (e.g. during printf if the kernel was built with the TSLOG option).
Initialize the PCPU pointer for hart 0 at the beginning of initriscv() rather than near the end.
Reviewed by: markj Approved by: markj (mentor) Differential Revision: https://reviews.freebsd.org/D19726
show more ...
|
#
30e009fc |
| 19-Feb-2019 |
Enji Cooper <ngie@FreeBSD.org> |
MFhead@r344270
|
#
c981cbbd |
| 15-Feb-2019 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r343956 through r344177.
|
#
35c91b0c |
| 13-Feb-2019 |
Mark Johnston <markj@FreeBSD.org> |
Implement per-CPU pmap activation tracking for RISC-V.
This reduces the overhead of TLB invalidations by ensuring that we only interrupt CPUs which are using the given pmap. Tracking is performed i
Implement per-CPU pmap activation tracking for RISC-V.
This reduces the overhead of TLB invalidations by ensuring that we only interrupt CPUs which are using the given pmap. Tracking is performed in pmap_activate(), which gets called during context switches: from cpu_throw(), if a thread is exiting or an AP is starting, or cpu_switch() for a regular context switch.
For now, pmap_sync_icache() still must interrupt all CPUs.
Reviewed by: kib (earlier version), jhb Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D18874
show more ...
|
Revision tags: release/12.0.0, release/11.2.0, release/10.4.0, release/11.1.0 |
|
#
554491ff |
| 20-Apr-2017 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r316992 through r317215.
|
#
4d3b6bd5 |
| 19-Apr-2017 |
Ruslan Bukin <br@FreeBSD.org> |
Follow r317061 "Remove struct vmmeter from struct pcpu" with MD changes for RISC-V.
This unbreaks RISC-V build.
Sponsored by: DARPA, AFRL
|
Revision tags: release/11.0.1, release/11.0.0 |
|
#
27067774 |
| 16-Aug-2016 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r303250 through r304235.
|
#
569e9018 |
| 13-Aug-2016 |
Enji Cooper <ngie@FreeBSD.org> |
MFhead @ r304038
|
#
5f8228b2 |
| 10-Aug-2016 |
Ruslan Bukin <br@FreeBSD.org> |
o Remove operation in machine mode. Machine privilege level was specially designed to use in vendor's firmware or bootloader. We have implemented operation in machine mode in FreeBSD as part of
o Remove operation in machine mode. Machine privilege level was specially designed to use in vendor's firmware or bootloader. We have implemented operation in machine mode in FreeBSD as part of understanding RISC-V ISA, but it is time to remove it. We now use BBL (Berkeley Boot Loader) -- standard RISC-V firmware, which provides operation in machine mode for us. We now use standard SBI calls to machine mode, instead of handmade 'syscalls'. o Remove HTIF bus. HTIF bus is now legacy and no longer exists in RISC-V specification. HTIF code still exists in Spike simulator, but BBL do not provide raw interface to it. Memory disk is only choice for now to have multiuser booted in Spike, until Spike has implemented more devices (e.g. Virtio, etc).
Sponsored by: DARPA, AFRL Sponsored by: HEIF5
show more ...
|
#
02a37128 |
| 25-Apr-2016 |
Ruslan Bukin <br@FreeBSD.org> |
o Implement shared pagetables and switch from 4 to 3 levels page memory system.
RISC-V ISA has only single page table base register for both kernel and user addresses translation. Before this commit
o Implement shared pagetables and switch from 4 to 3 levels page memory system.
RISC-V ISA has only single page table base register for both kernel and user addresses translation. Before this commit we were using an extra (4th) level of pagetables for switching between kernel and user pagetables, but then realized FPGA hardware has 3-level page system hardcoded. It is also become clear that the bitfile synthesized for 4-level system is untested/broken, so we can't use extra level for switching.
We are now share level 1 of pagetables between kernel and user VA. This requires to keep track of all the user pmaps created and once we adding L1 page to kernel pmap we have to add it to all the user pmaps.
o Change the VM layout as we must have topmost bit to be 1 in the selected page system for kernel addresses and 0 for user addresses. o Implement pmap_kenter_device(). o Create the l3 tables for the early devmap.
Sponsored by: DARPA, AFRL Sponsored by: HEIF5
show more ...
|
Revision tags: release/10.3.0 |
|
#
52259a98 |
| 02-Mar-2016 |
Glen Barber <gjb@FreeBSD.org> |
MFH
Sponsored by: The FreeBSD Foundation
|