The NetBSD Project

CVS log for src/sys/arch/riscv/riscv/riscv_machdep.c

[BACK] Up to [cvs.NetBSD.org] / src / sys / arch / riscv / riscv

Request diff between arbitrary revisions


Default branch: MAIN
Current tag: MAIN


Revision 1.37 / (download) - annotate - [select for diffs], Tue Mar 5 14:15:34 2024 UTC (6 weeks, 2 days ago) by thorpej
Branch: MAIN
CVS Tags: HEAD
Changes since 1.36: +2 -4 lines
Diff to previous 1.36 (colored)

Move the at-shutdown call to resettodr() from cpu_reboot() to kern_reboot().

It's a small step, but it's a step.

Revision 1.36 / (download) - annotate - [select for diffs], Thu Jan 18 07:41:50 2024 UTC (3 months ago) by skrll
Branch: MAIN
Changes since 1.35: +2 -14 lines
Diff to previous 1.35 (colored)

Provide a working delay(9)

Revision 1.35 / (download) - annotate - [select for diffs], Fri Dec 22 08:41:59 2023 UTC (3 months, 3 weeks ago) by skrll
Branch: MAIN
Changes since 1.34: +4 -4 lines
Diff to previous 1.34 (colored)

Minor stylistic changes. NFCI.

Revision 1.34 / (download) - annotate - [select for diffs], Sun Sep 3 08:48:20 2023 UTC (7 months, 2 weeks ago) by skrll
Branch: MAIN
CVS Tags: thorpej-ifq-base, thorpej-ifq, thorpej-altq-separation-base, thorpej-altq-separation
Changes since 1.33: +4 -4 lines
Diff to previous 1.33 (colored)

Fix and enable MULTIPROCESSOR

Revision 1.33 / (download) - annotate - [select for diffs], Thu Aug 24 05:46:55 2023 UTC (7 months, 3 weeks ago) by rin
Branch: MAIN
Changes since 1.32: +7 -3 lines
Diff to previous 1.32 (colored)

riscv: cpu_setmcontext: Do not unconditionally update tp register

Conserve tp register for _UC_CPU and update later if _UC_TLSBASE is
specified. This is what powerpc does, which also uses a general
purpose register for TLS pointer.

Found by tests/lib/libpthread/t_swapcontext:swapcontext1, which
successfully passes now.

Revision 1.32 / (download) - annotate - [select for diffs], Fri Aug 4 09:06:33 2023 UTC (8 months, 2 weeks ago) by mrg
Branch: MAIN
Changes since 1.31: +3 -3 lines
Diff to previous 1.31 (colored)

avoid comparing arrays directly, compare the address of their first element.

found by GCC 12.

Revision 1.31 / (download) - annotate - [select for diffs], Mon Jul 10 07:04:20 2023 UTC (9 months, 1 week ago) by rin
Branch: MAIN
Changes since 1.30: +13 -2 lines
Diff to previous 1.30 (colored)

riscv: Add FDT-based initrd, rndseed, and efirng support.

Can be used from our in-tree bootrisv64.efi.

Revision 1.30 / (download) - annotate - [select for diffs], Mon Jul 10 07:01:48 2023 UTC (9 months, 1 week ago) by rin
Branch: MAIN
Changes since 1.29: +4 -11 lines
Diff to previous 1.29 (colored)

fdt(4): Factor out bootargs support from evbarm and riscv.

Revision 1.29 / (download) - annotate - [select for diffs], Mon Jun 12 19:04:14 2023 UTC (10 months, 1 week ago) by skrll
Branch: MAIN
Changes since 1.28: +36 -7 lines
Diff to previous 1.28 (colored)

risc-v: MULTIPROCESSOR support

Add MULTIPROCESSOR support for RISC-V, but leave disabled for the moment
as it's not 100% stable.

Some other improvements to spl and cpu identification / reporting.

Revision 1.28 / (download) - annotate - [select for diffs], Sun May 28 12:56:56 2023 UTC (10 months, 3 weeks ago) by skrll
Branch: MAIN
Changes since 1.27: +3 -3 lines
Diff to previous 1.27 (colored)

Second arg to fdt_memory_remove_range is a size so pass dtbsize and not
dtb + dtbsize

Revision 1.27 / (download) - annotate - [select for diffs], Sun May 14 09:14:30 2023 UTC (11 months ago) by skrll
Branch: MAIN
Changes since 1.26: +18 -3 lines
Diff to previous 1.26 (colored)

Check for RB_HALT in cpu_reboot.

Revision 1.26 / (download) - annotate - [select for diffs], Sun May 7 12:41:49 2023 UTC (11 months, 1 week ago) by skrll
Branch: MAIN
Changes since 1.25: +452 -56 lines
Diff to previous 1.25 (colored)

RISC-V support that works on QEMU with a single hart.

Thanks for Simon Burge for plic(4).

Revision 1.25 / (download) - annotate - [select for diffs], Thu Nov 17 13:11:08 2022 UTC (17 months ago) by simonb
Branch: MAIN
CVS Tags: netbsd-10-base, netbsd-10-0-RELEASE, netbsd-10-0-RC6, netbsd-10-0-RC5, netbsd-10-0-RC4, netbsd-10-0-RC3, netbsd-10-0-RC2, netbsd-10-0-RC1, netbsd-10
Changes since 1.24: +3 -3 lines
Diff to previous 1.24 (colored)

Use updated defines for the user-mode sstatus value.

Revision 1.24 / (download) - annotate - [select for diffs], Tue Nov 15 14:33:33 2022 UTC (17 months ago) by simonb
Branch: MAIN
Changes since 1.23: +4 -4 lines
Diff to previous 1.23 (colored)

Use similar macro-magic to aarch64 armreg.h to add per-csr
read/write/set-bits/clear-bits inline functions.  Keep the
open-coded 32-bit version of riscvreg_cycle_read() than reads
a 64-bit cycle counter values.

Added benefit of fixing these so that the inline asm uses __volatile
and aren't opmtimised to nops by the compiler.

Revision 1.23 / (download) - annotate - [select for diffs], Tue Oct 18 04:24:54 2022 UTC (18 months ago) by skrll
Branch: MAIN
Changes since 1.22: +2 -4 lines
Diff to previous 1.22 (colored)

remove a stray comment

Revision 1.22 / (download) - annotate - [select for diffs], Sun Oct 16 06:19:16 2022 UTC (18 months ago) by skrll
Branch: MAIN
Changes since 1.21: +6 -6 lines
Diff to previous 1.21 (colored)

Re-orgnaise a litte.  From Simon.

Revision 1.21 / (download) - annotate - [select for diffs], Sun Oct 16 06:14:53 2022 UTC (18 months ago) by skrll
Branch: MAIN
Changes since 1.20: +5 -4 lines
Diff to previous 1.20 (colored)

Map the DTB using VM_KERNEL_DTB_BASE and CONSADDR using VM_KERNEL_IO_BASE

Revision 1.20 / (download) - annotate - [select for diffs], Sat Oct 15 06:41:43 2022 UTC (18 months ago) by simonb
Branch: MAIN
Changes since 1.19: +6 -6 lines
Diff to previous 1.19 (colored)

#define<tab>

Revision 1.19 / (download) - annotate - [select for diffs], Wed Sep 28 06:05:28 2022 UTC (18 months, 3 weeks ago) by skrll
Branch: MAIN
CVS Tags: bouyer-sunxi-drm-base, bouyer-sunxi-drm
Changes since 1.18: +3 -3 lines
Diff to previous 1.18 (colored)

Use legacy SBI Console GetChar for earlycons.  It works on qemu.

Revision 1.18 / (download) - annotate - [select for diffs], Tue Sep 20 07:18:24 2022 UTC (18 months, 4 weeks ago) by skrll
Branch: MAIN
Changes since 1.17: +237 -9 lines
Diff to previous 1.17 (colored)

Checkpoint WIP.

QEMU RV64 virt can boot into virtual mode

OpenSBI v1.0
   ____                    _____ ____ _____
  / __ \                  / ____|  _ \_   _|
 | |  | |_ __   ___ _ __ | (___ | |_) || |
 | |  | | '_ \ / _ \ '_ \ \___ \|  _ < | |
 | |__| | |_) |  __/ | | |____) | |_) || |_
  \____/| .__/ \___|_| |_|_____/|____/_____|
        | |
        |_|

Platform Name             : riscv-virtio,qemu
Platform Features         : medeleg
Platform HART Count       : 1
Platform IPI Device       : aclint-mswi
Platform Timer Device     : aclint-mtimer @ 10000000Hz
Platform Console Device   : uart8250
Platform HSM Device       : ---
Platform Reboot Device    : sifive_test
Platform Shutdown Device  : sifive_test
Firmware Base             : 0x80000000
Firmware Size             : 252 KB
Runtime SBI Version       : 0.3

Domain0 Name              : root
Domain0 Boot HART         : 0
Domain0 HARTs             : 0*
Domain0 Region00          : 0x0000000002000000-0x000000000200ffff (I)
Domain0 Region01          : 0x0000000080000000-0x000000008003ffff ()
Domain0 Region02          : 0x0000000000000000-0xffffffffffffffff (R,W,X)
Domain0 Next Address      : 0x0000000080200000
Domain0 Next Arg1         : 0x00000000bfe00000
Domain0 Next Mode         : S-mode
Domain0 SysReset          : yes

Boot HART ID              : 0
Boot HART Domain          : root
Boot HART ISA             : rv64imafdcsuh
Boot HART Features        : scounteren,mcounteren,mcountinhibit,time
Boot HART PMP Count       : 16
Boot HART PMP Granularity : 4
Boot HART PMP Address Bits: 54
Boot HART MHPM Count      : 16
Boot HART MIDELEG         : 0x0000000000001666
Boot HART MEDELEG         : 0x0000000000f0b509

------------
NetBSD start

sp:      0x0000_0000_80a0_2000
pc:      0x0000_0000_8020_0090
hart:    0x0000_0000_0000_0000
dtb:     0x0000_0000_bfe0_0000
l1:      0x0000_0000_80a0_2000
l2:      0x0000_0000_80a0_3000
uspace:  0x0000_0000_80a0_0000
bootstk: 0x0000_0000_80a0_2000
vtopdiff:0xffff_ffbf_7fe0_0000

bss:     0x0000_0000_808a_8bdc - 0x0000_0000_80a0_4000

0x0000_0000_80a0_3800: 0x0000_0000_2028_0821

kern 0x0000_0000_80a0_2000: 0x0000_0000_2008_002f
kern 0x0000_0000_80a0_2008: 0x0000_0000_2010_002f
kern 0x0000_0000_80a0_2010: 0x0000_0000_2018_002f
kern 0x0000_0000_80a0_2018: 0x0000_0000_2020_002f
kern 0x0000_0000_80a0_2020: 0x0000_0000_2028_002f
kern 0x0000_0000_80a0_2028: 0x0000_0000_2030_002f
kern 0x0000_0000_80a0_2030: 0x0000_0000_2038_002f
kern 0x0000_0000_80a0_2038: 0x0000_0000_2040_002f
kern 0x0000_0000_80a0_2040: 0x0000_0000_2048_002f
kern 0x0000_0000_80a0_2048: 0x0000_0000_2050_002f
kern 0x0000_0000_80a0_2050: 0x0000_0000_2058_002f
kern 0x0000_0000_80a0_2058: 0x0000_0000_2060_002f
kern 0x0000_0000_80a0_2060: 0x0000_0000_2068_002f
kern 0x0000_0000_80a0_2068: 0x0000_0000_2070_002f
kern 0x0000_0000_80a0_2070: 0x0000_0000_2078_002f
kern 0x0000_0000_80a0_2078: 0x0000_0000_2080_002f
dtb  0x0000_0000_80a0_2080: 0x0000_0000_2ff8_0027
PM
[   1.0000000] FDT<0xffffffc002000000>
[   1.0000000] consinit ok
[   1.0000000] NetBSD/riscv (fdt) booting ...
[   1.0000000] FDT /memory @ 0x80000000 size 0x40000000
[   1.0000000] init_riscv: memory start 80000000 end c0000000 (len 40000000)
[   1.0000000] bootargs: root=ld4a -v -x
[   1.0000000] bootflag 'r' not recognised
[   1.0000000] bootflag 'o' not recognised
[   1.0000000] bootflag 'o' not recognised
[   1.0000000] bootflag 't' not recognised
[   1.0000000] bootflag '=' not recognised
[   1.0000000] bootflag 'l' not recognised
[   1.0000000] bootflag ' ' not recognised
[   1.0000000] bootflag ' ' not recognised
[   1.0000000] ------------------------------------------
[   1.0000000]            kern_vtopdiff = 0xffffffbf7fe00000
[   1.0000000]             memory_start = 0x        80000000
[   1.0000000]               memory_end = 0x        c0000000
[   1.0000000]              memory_size = 0x        40000000
[   1.0000000]           kernstart_phys = 0x        80200000
[   1.0000000]             kernend_phys = 0x        80a00000
[   1.0000000]    VM_MIN_KERNEL_ADDRESS = 0xffffffc000000000
[   1.0000000]           kernstart_mega = 0xffffffc000000000
[   1.0000000]                kernstart = 0xffffffc000000000
[   1.0000000]                  kernend = 0xffffffc000800000
[   1.0000000]             kernend_mega = 0xffffffc000800000
[   1.0000000]    VM_MAX_KERNEL_ADDRESS = 0xffffffd000000000
[   1.0000000] ------------------------------------------
[   1.0000000] panic: kernel diagnostic assertion "msgbufaddr != 0" failed: file "/home/nick/netbsd/nbcvs/src/sys/arch/riscv/riscv/riscv_machdep.c", line 564

Revision 1.17 / (download) - annotate - [select for diffs], Tue Sep 20 06:53:36 2022 UTC (18 months, 4 weeks ago) by skrll
Branch: MAIN
Changes since 1.16: +4 -4 lines
Diff to previous 1.16 (colored)

Whitespace

Revision 1.16 / (download) - annotate - [select for diffs], Tue Sep 20 06:48:29 2022 UTC (18 months, 4 weeks ago) by skrll
Branch: MAIN
Changes since 1.15: +5 -5 lines
Diff to previous 1.15 (colored)

KNF

Revision 1.15 / (download) - annotate - [select for diffs], Thu Oct 7 07:13:35 2021 UTC (2 years, 6 months ago) by skrll
Branch: MAIN
Changes since 1.14: +4 -2 lines
Diff to previous 1.14 (colored)

Hacky build fixes

Revision 1.14 / (download) - annotate - [select for diffs], Sat May 1 06:53:08 2021 UTC (2 years, 11 months ago) by skrll
Branch: MAIN
CVS Tags: thorpej-i2c-spi-conf2-base, thorpej-i2c-spi-conf2, thorpej-i2c-spi-conf-base, thorpej-futex2-base, thorpej-futex2, thorpej-cfargs2-base, thorpej-cfargs2, cjep_sun2x-base1, cjep_sun2x-base, cjep_sun2x, cjep_staticlib_x-base1, cjep_staticlib_x-base, cjep_staticlib_x
Changes since 1.13: +4 -2 lines
Diff to previous 1.13 (colored)

Sprinkle #ifdef FPE for now

Revision 1.13 / (download) - annotate - [select for diffs], Wed Nov 4 20:05:47 2020 UTC (3 years, 5 months ago) by skrll
Branch: MAIN
CVS Tags: thorpej-futex-base, thorpej-cfargs-base, thorpej-cfargs
Branch point for: thorpej-i2c-spi-conf
Changes since 1.12: +4 -2 lines
Diff to previous 1.12 (colored)

Miscellaneous updates to reflect riscv-privileged-20190608.pdf

Some from zmcgrew@

Revision 1.12 / (download) - annotate - [select for diffs], Wed Nov 4 07:09:46 2020 UTC (3 years, 5 months ago) by skrll
Branch: MAIN
Changes since 1.11: +3 -1 lines
Diff to previous 1.11 (colored)

RCSID and whitespace police...

Revision 1.11 / (download) - annotate - [select for diffs], Thu Jun 11 19:20:45 2020 UTC (3 years, 10 months ago) by ad
Branch: MAIN
Branch point for: thorpej-futex
Changes since 1.10: +2 -2 lines
Diff to previous 1.10 (colored)

uvm_availmem(): give it a boolean argument to specify whether a recent
cached value will do, or if the very latest total must be fetched.  It can
be called thousands of times a second and fetching the totals impacts not
only the calling LWP but other CPUs doing unrelated activity in the VM
system.

Revision 1.10 / (download) - annotate - [select for diffs], Sat Mar 14 16:12:16 2020 UTC (4 years, 1 month ago) by skrll
Branch: MAIN
CVS Tags: phil-wifi-20200421, phil-wifi-20200411, phil-wifi-20200406, bouyer-xenpvh-base2, bouyer-xenpvh-base1, bouyer-xenpvh-base, bouyer-xenpvh
Changes since 1.9: +3 -3 lines
Diff to previous 1.9 (colored)

Trailing whitespace

Revision 1.9 / (download) - annotate - [select for diffs], Wed Mar 11 13:30:31 2020 UTC (4 years, 1 month ago) by thorpej
Branch: MAIN
Changes since 1.8: +4 -1 lines
Diff to previous 1.8 (colored)

With DEBUG defined, it's possible to execute a TLB-vs-segmap consistency
check from a (soft) interrupt handler.  But if a platform does not otherwise
require the pmap_tlb_miss_lock, then where will be a brief window of
inconsistency that, while harmless, will still fire an assertion in the
consistency check.

Fix this with the following changes:
1- Refactor the pmap_tlb_miss_lock into MI code and rename it from
   pmap_tlb_miss_lock_{enter,exit}() to pmap_tlb_miss_lock_{enter,exit}().
   MD code can still define the "md" hooks as necessary, and if so, will
   override the common implementation.
2- Provde a pmap_bootstrap_common() function to perform common pmap bootstrap
   operations, namely initializing the pmap_tlb_miss_lock if it's needed.
   If MD code overrides the implementation, it's responsible for initializing
   its own lock.
3- Call pmap_bootstrap_common() from the mips, powerpc booke, and riscv
   pmap_bootstrap() routines.  (This required adding one for riscv.)
4- Switch powerpc booke to the common pmap_tlb_miss_lock.
5- Enable pmap_tlb_miss_lock if DEBUG is defined, even if it's not otherwise
   required.

PR port-mips/55062 (Failed assertion in pmap_md_tlb_check_entry())

Revision 1.8 / (download) - annotate - [select for diffs], Tue Dec 31 13:07:12 2019 UTC (4 years, 3 months ago) by ad
Branch: MAIN
CVS Tags: is-mlppp-base, is-mlppp, ad-namecache-base3, ad-namecache-base2, ad-namecache-base1, ad-namecache-base, ad-namecache
Changes since 1.7: +2 -2 lines
Diff to previous 1.7 (colored)

Rename uvm_free() -> uvm_availmem().

Revision 1.7 / (download) - annotate - [select for diffs], Sat Dec 21 13:00:23 2019 UTC (4 years, 3 months ago) by ad
Branch: MAIN
Changes since 1.6: +2 -2 lines
Diff to previous 1.6 (colored)

uvmexp.free -> uvm_free()

Revision 1.6 / (download) - annotate - [select for diffs], Sat Nov 23 19:40:36 2019 UTC (4 years, 4 months ago) by ad
Branch: MAIN
Changes since 1.5: +18 -48 lines
Diff to previous 1.5 (colored)

cpu_need_resched():

- Remove all code that should be MI, leaving the bare minimum under arch/.
- Make the required actions very explicit.
- Pass in LWP pointer for convenience.
- When a trap is required on another CPU, have the IPI set it locally.
- Expunge cpu_did_resched().

Revision 1.5 / (download) - annotate - [select for diffs], Thu Nov 21 19:57:24 2019 UTC (4 years, 4 months ago) by ad
Branch: MAIN
Changes since 1.4: +1 -9 lines
Diff to previous 1.4 (colored)

mi_userret(): take care of calling preempt(), set spc_curpriority directly,
and remove MD code that does the same.

Revision 1.4 / (download) - annotate - [select for diffs], Sat Apr 6 11:54:20 2019 UTC (5 years ago) by kamil
Branch: MAIN
CVS Tags: phil-wifi-20191119, phil-wifi-20190609, netbsd-9-base, netbsd-9-3-RELEASE, netbsd-9-2-RELEASE, netbsd-9-1-RELEASE, netbsd-9-0-RELEASE, netbsd-9-0-RC2, netbsd-9-0-RC1, netbsd-9, isaki-audio2-base, isaki-audio2
Changes since 1.3: +2 -16 lines
Diff to previous 1.3 (colored)

Centralized shared part of child_return() into MI part

Add a new function md_child_return() for MD specific bits only.

New child_return() is now part of MI and central code that handles
uniformly tracing code (KTR and ptrace(2)).

Synchronize value passed to ktrsysret() among ports to SYS_fork. This is
a traditional value and accessing p_lflag to check for PL_PPWAIT shall
use locking against proc_lock. Returning SYS_fork vs SYS_vfork still isn't
correct enough as there are more entry points to forking code. Instead of
making it too good, just settle with plain SYS_fork for all ports.

Revision 1.3 / (download) - annotate - [select for diffs], Wed Apr 3 08:08:00 2019 UTC (5 years ago) by kamil
Branch: MAIN
Changes since 1.2: +13 -1 lines
Diff to previous 1.2 (colored)

Rework the fork(2)/vfork(2) event signalling under ptrace(2)

Remove the constraint of SIGTRAP event being maskable by a tracee.

Now all SIGTRAP TRAP_CHLD events are delivered to debugger.

This code touches MD specific logic and the child_return routine.
It's an intermediate step with a room for refactoring in future and
right now the least invasive approach. This allows to assert expected
behavior in already existing ATF tests and make the code prettier
in future keeping the same semantics. Probably there is a need for a MI
wrapper of child_return for shared functionality between ports.

Revision 1.2 / (download) - annotate - [select for diffs], Thu Mar 16 16:13:21 2017 UTC (7 years, 1 month ago) by chs
Branch: MAIN
CVS Tags: tls-maxphys-base-20171202, prg-localcount2-base3, prg-localcount2-base2, prg-localcount2-base1, prg-localcount2-base, prg-localcount2, phil-wifi-base, pgoyette-localcount-20170426, pgoyette-localcount-20170320, pgoyette-compat-merge-20190127, pgoyette-compat-base, pgoyette-compat-20190127, pgoyette-compat-20190118, pgoyette-compat-1226, pgoyette-compat-1126, pgoyette-compat-1020, pgoyette-compat-0930, pgoyette-compat-0906, pgoyette-compat-0728, pgoyette-compat-0625, pgoyette-compat-0521, pgoyette-compat-0502, pgoyette-compat-0422, pgoyette-compat-0415, pgoyette-compat-0407, pgoyette-compat-0330, pgoyette-compat-0322, pgoyette-compat-0315, pgoyette-compat, perseant-stdc-iso10646-base, perseant-stdc-iso10646, nick-nhusb-base-20170825, netbsd-8-base, netbsd-8-2-RELEASE, netbsd-8-1-RELEASE, netbsd-8-1-RC1, netbsd-8-0-RELEASE, netbsd-8-0-RC2, netbsd-8-0-RC1, netbsd-8, matt-nb8-mediatek-base, matt-nb8-mediatek, jdolecek-ncq-base, jdolecek-ncq, bouyer-socketcan-base1
Branch point for: tls-maxphys, phil-wifi
Changes since 1.1: +4 -4 lines
Diff to previous 1.1 (colored)

allow pcu_save() and pcu_discard() to be called on other threads,
ptrace needs to use it that way.

Revision 1.1 / (download) - annotate - [select for diffs], Sat Mar 28 16:13:56 2015 UTC (9 years ago) by matt
Branch: MAIN
CVS Tags: pgoyette-localcount-base, pgoyette-localcount-20170107, pgoyette-localcount-20161104, pgoyette-localcount-20160806, pgoyette-localcount-20160726, nick-nhusb-base-20170204, nick-nhusb-base-20161204, nick-nhusb-base-20161004, nick-nhusb-base-20160907, nick-nhusb-base-20160529, nick-nhusb-base-20160422, nick-nhusb-base-20160319, nick-nhusb-base-20151226, nick-nhusb-base-20150921, nick-nhusb-base-20150606, nick-nhusb-base-20150406, localcount-20160914, bouyer-socketcan-base
Branch point for: pgoyette-localcount, nick-nhusb, bouyer-socketcan

Beginnings of RISCV kernel support.  Note that the pmap support is not yet
committed and probably won't be for awhile.  This is mostly preliminary
waiting for the supervisor specification to come out.  Lots of missing pieces
but it mostly builds.

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.




CVSweb <webmaster@jp.NetBSD.org>