Commit Graph

32 Commits

Author SHA1 Message Date
Kacper Słomiński
945c43de0d lib: Move DTB_PATH handling logic into common code 2024-12-24 17:10:47 +01:00
mintsuki
0ba9919ed3 protos/limine: Rename SMP feature to MP feature 2024-11-30 02:19:31 +01:00
mintsuki
21056a3211 sys/smp: Ensure machines with pre-enabled x2APIC are properly supported 2024-11-25 12:58:48 +01:00
mintsuki
0c2f0ddebe build: Remove custom __riscv64 define in favour of built-in __riscv define
We do not support non-64-bit RISC-V anyways
2024-08-11 20:25:01 +02:00
mintsuki
21d3d7f3f2 sys/smp: Obtain LAPIC ID from LAPIC instead of CPUID 2024-08-11 19:32:22 +02:00
mintsuki
6eecac7049 riscv64: Use rdcycle instead of rdtime for rdtsc(); add delay to SMP startup like 530e28e846 2024-08-09 14:45:21 +02:00
Kacper Słomiński
530e28e846 smp: Fix BSP timing out while waiting for APs on AArch64
When running with KVM, the BSP seems to time out while waiting for APs
to come up, which leads to the OS only being told about 1 AP, and
all the APs using the same info struct and stack pointer.
2024-08-09 08:21:15 +02:00
Keegan Saunders
d9a2fb95a9 Add LoongArch support 2024-07-31 23:05:27 -04:00
Kacper Słomiński
8de8ee1573 sys/smp: Add support for SMP on non-ACPI AArch64 systems 2024-07-12 05:03:54 +02:00
Kacper Słomiński
fd2ad70604 PROTOCOL: Get rid of unreliable gic_iface_no field on AArch64 2024-07-12 04:58:30 +02:00
mintsuki
9b2ae5be47 smp: Return NULL instead of 0 CPU count if no processors were started 2024-07-01 00:21:24 +02:00
48cf
6374a0027b smp/aarch64: Fix trampoline alignment and allocation size 2023-11-24 03:15:33 +01:00
mintsuki
54f3118f4c sys/smp: Synchronise AP MTRRs with the BSP 2023-11-14 08:32:48 +01:00
mintsuki
2c8c0c3deb Revert "misc: Converge with 5.x"
This reverts commit f9682543fd.
2023-11-03 06:24:58 +01:00
mintsuki
87a88bf565 smp: Remove dead 32-bit trampoline code 2023-09-23 17:37:38 -05:00
mintsuki
5f7bcc0b1d riscv: Fix cherry-picking issue introduced in e3d65aa628 2023-09-16 11:35:43 -05:00
xvanc
e3d65aa628 riscv: refactor smp init 2023-09-16 11:28:15 -05:00
xvanc
2200161e7d acpi: move acpi structure defs to lib/acpi.h 2023-09-16 11:21:17 -05:00
Kacper Słomiński
50dab6c2f1 smp: aarch64: Don't needlessly invalidate the data cache
Also get rid of the function to do clean + invalidate as not to be
tempted by it.
2023-08-18 13:38:14 -05:00
xvanc
9274ee656e Initial riscv64 port (#274)
* initial riscv64 port

* enable Paging Mode feature for all architectures

* riscv: add missing protocol docs

* riscv: fix tests

* docs: clarify `LIMINE_PAGING_MODE_DEFAULT` macro

* build: fix whitespace in common/GNUmakefile

* riscv: default to Sv48 paging when supported

* vmm: make `VMM_MAX_LEVEL` 1-indexed

* limine: do not call `reported_addr()` before finaling paging mode

smp/riscv: do not overwrite the argument passed to APs

* limine/riscv: update default paging mode in limine.h

* test/riscv: pad OVMF.fd when downloading it
2023-06-04 01:36:06 +02:00
mintsuki
1258f01bc2 Revert "smp/x86: Free up trampoline memory after use"
This reverts commit ae771dd8a1.
2022-11-02 15:28:07 +01:00
mintsuki
ae771dd8a1 smp/x86: Free up trampoline memory after use 2022-10-29 16:17:57 +02:00
mintsuki
26f6ac3bb2 smp: Fix indentation 2022-09-18 11:30:21 +02:00
mintsuki
2b71eaedb6 smp: Fix aarch64 issue introduced in 0f04f686 2022-09-14 15:39:52 +02:00
mintsuki
0f04f6860a smp: Remove hacks needed for stivale 2022-09-14 14:54:55 +02:00
mintsuki
07080dcbc2 misc: blib.h -> misc.h 2022-08-26 23:44:47 +02:00
Kacper Słomiński
e1f6ac8860 Initial AArch64 port (#205)
* Initial aarch64 port

* Enable chainload on aarch64

No changes necessary since it's all UEFI anyway.

* Add specification for Limine protocol for aarch64

* PROTOCOL: Specify state of information in DT /chosen node

* common: Add spinup code for aarch64

* common: Port elf and term to aarch64

* common: Port vmm to aarch64

Also prepare to drop VMM_FLAG_PRESENT on x86.

* protos: Port limine boot protocol to aarch64

Also drop VMM_FLAG_PRESENT since we never unmap pages anyway.

* test: Add DTB request

* PROTOCOL: Port SMP request to aarch64

* cpu: Add cache maintenance functions for aarch64

* protos/limine, sys: Port SMP to aarch64

Also move common asm macros into a header file.

* test: Start up APs

* vmm: Unify get_next_level and implement large page splitting

* protos/limine: Map framebuffer using correct caching mode on AArch64

* CI: Fix GCC build for aarch64

* entry, menu: Replace uses of naked attribute with separate asm file

GCC does not understand the naked attribute on aarch64, and didn't
understand it for x86 in older versions.
2022-08-18 17:32:54 +02:00
mintsuki
ff7d9502e5 smp: Make smp_trampoline_size variable instead of symbol 2022-07-28 22:30:26 +02:00
mintsuki
ccdd1ca642 smp: Do not calculate trampoline size in C file 2022-07-28 22:23:12 +02:00
mintsuki
15f111f5c3 limine: Make WP flag enabled as per spec 2022-03-31 13:33:18 +02:00
mintsuki
9f44fe6c4e smp: Make it higher half aware 2022-03-18 01:47:04 +01:00
mintsuki
400202d926 misc: stage23 -> common 2022-02-03 10:38:43 +01:00