Andrey Turkin
1b9fcbf593
riscv: Remove SBI logger
...
SBI needs a physical address; it used to work before because of the buggy code by sheer chance.
Rather than trying to fix it the right way (find a mapping from virtual to physical both before
and after RMM) let's just throw it away. Serial logger works just fine for the early init logging.
2025-04-19 10:03:35 +03:00
Jeremy Soller
0140e2a382
Fix compilation of emergency_stop on x86
2025-04-11 20:55:56 -06:00
4lDO2
92fcb4472b
Use more reliable triple fault for emerg..._reset.
2025-03-31 14:58:05 +02:00
4lDO2
3ae117b812
Outsource x86 RTC handling to rtcd.
2025-03-30 15:28:25 +02:00
bjorn3
23fd308745
Reduce verbosity of debug logs during booting
...
A bunch of things are now printed a bit more compactly or without
interleaving of logs on a single line. Also a bunch of not that useful
logs are no longer printed by default at all.
2025-03-15 20:52:06 +01:00
Vincent Berthier
2da88c18c0
Add the sys:stat scheme
2025-02-22 14:27:10 +00:00
4lDO2
f044ffb03b
Remove stable #![feature] and most x86_64 static mut.
2025-02-21 14:16:58 +01:00
Jeremy Soller
668a123b9a
Switch to naked_asm
2025-01-14 15:59:07 -07:00
Andrey Turkin
7db6667e6b
Better parsing of IRQ specifications in DTB
...
Fixes Raspberry 3B+ DTB parsing (as generated by Qemu)
2024-12-18 21:11:46 +03:00
Andrey Turkin
7f38f51b20
dtb: Apply bus mappings
2024-12-18 21:11:46 +03:00
Zhouqi Jiang
52763e7e70
arch: riscv64: use sbi-rt crate to process SBI calls, save code sizes
2024-12-18 14:06:08 +00:00
Andrey Turkin
7af6dd1f88
Restore riscv,plic0 compatible check
2024-11-07 05:09:24 +03:00
Andrey Turkin
9fe8f759af
Fix formatting and a warning
2024-11-06 12:13:13 +03:00
Andrey Turkin
ee89d02282
Change PLIC compatible string from riscv,plic0 to sifive,plic-1.0.0
...
Former one is deprecated and apparently only used by QEMU. Latter is used by QEMU as well as others.
2024-11-06 12:09:36 +03:00
Jeremy Soller
99fbdf426c
Fix assumption that CPU ID must equal APIC ID
2024-11-04 14:46:46 -07:00
Jeremy Soller
4db9673e2a
Support SPCR and clean up device memory allocation
2024-10-31 10:53:58 -06:00
Jeremy Soller
34a6a441f1
Initial aarch64 ACPI support
2024-10-30 16:16:24 -06:00
Jeremy Soller
b221bb6c51
Make it possible to boot aarch64 with invalid DTB
2024-10-30 12:34:50 -06:00
Jeremy Soller
4dd6a26742
Make it possible to compile acpi system on any arch
2024-10-30 11:43:21 -06:00
Jeremy Soller
939c9567ee
Support 16550 uarts for aarch64 debug output
2024-10-29 14:06:00 -06:00
Jeremy Soller
161e578f29
Use null driver for unknown IRQ controllers on aarch64
2024-10-29 08:01:38 -06:00
Jeremy Soller
380532aea5
Improve reliability of aarch64 startup code
2024-10-29 08:00:57 -06:00
Jeremy Soller
15b0133b7b
Add arm,gic-400 support to GIC driver
2024-10-29 08:00:17 -06:00
Jeremy Soller
e4e55103ad
Remove old aarch64 asm code
2024-10-29 07:59:12 -06:00
Andrey Turkin
505425bec9
Expose riscv64/aarch64 legacy irqs (requiring remapping) to the irq scheme
2024-10-22 20:26:40 +03:00
Andrey Turkin
cba02a26fa
Rework irqchip to support risc-v irqs, and add risc-v irq chips handling
2024-10-22 19:16:21 +03:00
Andrey Turkin
906259c024
Pull irqchip from aarch64 code into more generic place
2024-10-21 19:56:32 +03:00
Andrey Turkin
1921c6814b
Initial RISC-V implementation
...
Has no IRQ handling yet
2024-10-20 16:24:21 +03:00
Andrey Turkin
db32f5f7a3
Move some conditionally compiled code from common files into arch-gated files
2024-10-19 21:59:14 +03:00
Andrey Turkin
55041e2eeb
Use a custom config flag to conditionally compile DTB-specific areas
...
Would be great if we could use a feature instead, but Cargo can't do target-specific defaults features
2024-10-19 21:03:43 +03:00
Andrey Turkin
0a6a90415a
Refactor initial memory paging
2024-10-19 08:44:46 +03:00
IncompententPirate
fc5d246b30
remove wrapper functions
2024-09-26 22:34:55 +00:00
Andrey Turkin
14eb140f7a
Refactor panic stack walking
2024-09-26 19:22:21 +03:00
Andrey Turkin
755694494b
Factor KernelMapper out of arch
...
Same implementation on all the platforms. Also remove mutable Deref as it allowed circumventing RO check
2024-09-25 21:51:39 +03:00
Andrey Turkin
d08861e586
Upgrade fdt library to the very latest
...
The new helpers remove a lot of boilerplace. Unfortunately some rough edges still remain (in particular issue gh#12 which renders interrupts() helper useless)
2024-09-25 06:51:02 +03:00
Andrey Turkin
dbbbfcf48a
Update RMM
2024-09-24 19:23:08 +03:00
4lDO2
339271b4d7
Add getdents syscall, and switch schemes to it.
2024-09-11 22:09:26 +02:00
Kamil Koczurek
548fd63264
tsc: calculate elapsed ticks using saturating_sub
...
RDTSC readouts might not actually be monotonically increasing due to
desynchronization between CPU cores, so checked_sub was causing a kernel
panic.
2024-09-10 14:16:38 +02:00
4lDO2
652cdc7ef2
Replace repr(packed) with repr(C, packed).
2024-09-08 20:56:50 +02:00
4lDO2
815ac3da4a
Revert "Fix possible UB in rmm::init."
...
This reverts commit 4626c74b78 .
2024-09-08 20:22:46 +02:00
4lDO2
4626c74b78
Fix possible UB in rmm::init.
...
I tested compiling the kernel with a more recent rustc, and this
triggered UB. Don't know for sure why there was an invalid entry passed
to the kernel, but it did.
2024-09-07 23:14:55 +02:00
Jeremy Soller
0c99e1bd0a
Set xcr0 in all cases
2024-09-06 20:08:40 -06:00
Andrey Turkin
a558860e88
Fix BSS sanity check
...
mark the canaries mutable so they go into data and bss and not in rodata
2024-09-04 10:55:20 +03:00
Andrey Turkin
d2ebc7ff05
Wholesale fix of warnings
...
Pretty straightforward changes. This commit tries to avoid making any non-trivial fixes.
2024-09-04 10:55:01 +03:00
Jacob Lorentzon
643d7400db
Implement paravirtualized KVM TSC support
2024-09-03 21:20:06 +00:00
4lDO2
441385ddb2
Always map the kernel itself using global pages.
...
This avoids TLB stalls after context switching, that are very visible
from flamegraphs.
2024-08-31 10:44:54 +02:00
Jeremy Soller
5cb6af6b8c
Fix aarch64 build
2024-08-01 13:00:59 -06:00
bjorn3
f55da93b33
Fix building for AArch64
...
I broke this in !321
2024-08-01 20:45:59 +02:00
bjorn3
8f186a692f
Allow writing messages to debug: without preserving them in sys:log
...
This would allow logd to write all received log messages to debug:
without causing an infinite loop when it at the same time reads all
messages in sys:log.
2024-07-25 12:49:43 +02:00
bjorn3
e7a46c3422
Let userspace control when graphical_debug gets disabled
...
Rather than disabling it right before entering userspace. This allows
showing debug messages while the graphics subsystem hasn't initialized
yet.
2024-07-24 20:59:40 +02:00