Commit Graph

1352 Commits

Author SHA1 Message Date
Bananymous 658ea68d04 Kernel: Check max packet size for all USB devices
Spec says that this has to be done. Most cases can be probably skipped
as I used to do, but this is less error prone and adds practically no
overhead
2024-11-21 13:46:42 +02:00
Bananymous 5750f87396 Kernel: Fix unaligned access in xHCI controller initialization 2024-11-21 13:46:09 +02:00
Bananymous 1253e2a458 Kernel: Add support for bulk endpoints and update endpoint API
USB device now sets its own data buffers for IN/OUT endpoints. This
allows more customization and parallelism as data buffer does not have
to be shared.
2024-11-21 13:44:21 +02:00
Bananymous 857b3e92f8 Kernel: Support initializing USB 3 devices 2024-11-21 13:40:16 +02:00
Bananymous 8bf14d542e Kernel: Move SCSI device rdev allocation out of ATA code 2024-11-21 13:36:59 +02:00
Bananymous 97718b4046 Kernel: Don't launch init process twice
I had accidentrally left the old init process launch in when replacing
it with the new one.
2024-11-19 20:43:38 +02:00
Bananymous c07fd265f0 Kernel: Add support for ATA CHS addressing and cleanup code
I thought that I had an PC without LBA support so I implement support
for CHS. Turns out that my ATA device detection was broken and was no
device on that port and initialize data was just garbage.

Now that I added CHS, I guess I should just keep it in :)

Both ATA read and write are now combined into a single function to avoid
code duplication.
2024-11-19 20:39:32 +02:00
Bananymous 1de50a2a94 Kernel: Improve ATA device initialization
This does better detection of empty ports and fixes floating bus
read-value from 0x00 to 0xFF.
2024-11-19 00:25:42 +02:00
Bananymous 627ca432cc Kernel: Make PS/2 controller not hang if device keeps sending resend 2024-11-19 00:18:48 +02:00
Bananymous 71563034a7 Kernel: Remove accidentally left debug prints 2024-11-18 03:45:07 +02:00
Bananymous aaff5a65e1 Kernel/init: /dev/tty is now custom symlink to controlling terminal
kernel now passes the name of default console to init process so init
knows which file to open as stdio. before /dev/tty was referencing the
system wide current terminal which was inherited from cmdline. This
doesn't work anymore as we have pseudo terminals implemented that can
chage the current terminal during runtime :D
2024-11-17 22:38:52 +02:00
Bananymous 458a362f98 Kernel: Allow kernel to pass arguments to init process 2024-11-17 22:38:02 +02:00
Bananymous f206e72447 Kernel: Don't require msync addresses to be page aligned
Inodes implementing msync can require page aligned addresses, but are
also allowed to not :) This reduces sizes of framebuffer msyncs!
2024-11-17 20:15:28 +02:00
Bananymous 58e45fb394 Kernel: Print process name on exceptions if it is available 2024-11-17 20:15:28 +02:00
Bananymous 5e8fdc997a Kernel: Prevent userspace from overwriting CPU load memory 2024-11-17 20:15:28 +02:00
Bananymous 0228cd4f31 Kernel: Increase userspace stack size and decrease kernel stack
Quake II needs a lot of stack, it was overflowing my 256 KiB stack so
this patch doubles that, so Quake II can run!

Also every thread had 256 KiB kernel stack. This is unnecessarily large
and now dropped to 32 KiB.
2024-11-14 21:03:04 +02:00
Bananymous 64c52012df Kernel: Fix MemoryRegion overlap comparison
This made some calls to `munmap` unmap extra regions.
2024-11-13 17:26:42 +02:00
Bananymous 1838ea5c30 Kernel: Fix pseudo terminal leaks 2024-11-04 15:35:07 +02:00
Bananymous a3f41fd4d9 Kernel: Cleanup disk cache
Add missing include and cleanup code calling automatic disk sync.
2024-11-03 20:28:15 +02:00
Bananymous f4be37700f Kernel/userspace: rework floating point math
SSE is now unconditionally enabled any where and most of math.h is now
actually implemented. using __builtin_<func> lead to many hangs where
the builtin function would just call itself.
2024-11-03 20:28:15 +02:00
Bananymous ed19bb11fe Kernel: Cleanup thread default sse initialization 2024-11-03 20:22:28 +02:00
Bananymous 8fd0162393 Kernel: Rewrite x86_64 page tables to use HHDM instead of kmalloc
This allows page tables to not crash the kernel once kmalloc runs out of
its (limited) static memory.
2024-10-14 11:40:30 +03:00
Bananymous f0b18da881 Kernel: Add kmalloc helper APIs 2024-10-14 11:39:04 +03:00
Bananymous 5f63ea8f8a Kernel: Add CPUID check for 1 GiB page support 2024-10-14 11:38:03 +03:00
Bananymous 2b43569927 Kernel: Use enums in boot info instead of magic values 2024-10-14 11:36:51 +03:00
Bananymous 4ba33175cf Kernel: Don't leak memory when preparing fast page
For some reason I was allocating memory for page table entry...
2024-10-14 11:34:48 +03:00
Bananymous 3edc1af560 Kernel: Don't map main bios area in page table initialization
This is only needed for RSDP lookup so it can be done with fast pages
2024-10-14 11:32:54 +03:00
Bananymous 55fbd09e45 Kernel: Rewrite physical memory allocation with PageTable::fast_pages 2024-10-14 11:32:54 +03:00
Bananymous 166550fbba Kernel: Ext2 check if file exists before creating it 2024-10-07 18:21:05 +03:00
Bananymous b6e040dfc2 Kernel/Shell: Fix backspace and delete key byte sequences 2024-10-04 04:14:47 +03:00
Bananymous 2d11ce9669 Kernel: Fix interrupt system
I had not understood how MSIs work and I was unnecessarily routing them
through IOAPIC. This is not necessary and should not be done :D

Also MSIs were reserving interrupts that IOAPIC was capable of
generating. Now IOAPIC and MSIs use different set of interrupts so
IOAPIC can use more interrupts if needed.
2024-09-27 15:31:31 +03:00
Bananymous b89fc3fe87 Kernel: Implement ANSI SGR 7 to invert colors
This allows vim's visual selection to show up
2024-09-26 15:08:11 +03:00
Bananymous 39802b56c1 Kernel: Allow SYS_EXEC to fail at any point
This patch builds new executable image to another pml4 structure and
only after everything is validated will current context be replaced.
This allows exec to fail "late" where previously it would panic the
kernel or kill the process. This allows graceful handling of exec
failures in userspace!
2024-09-24 16:29:38 +03:00
Bananymous ebb87ccdde Kernel: Add asserts for overflow checks with ms -> ns conversions 2024-09-24 16:28:44 +03:00
Bananymous f0e55938c1 Kernel: Allow initial binding of threads to specific processor 2024-09-24 16:27:40 +03:00
Bananymous 348d04f7f5 Kernel: Implement static Process::kill()
This allows killing processes even when there does not exist a current
thread.
2024-09-24 13:16:43 +03:00
Bananymous d395cf38b7 Kernel: Binding to port 0 will always find unused port 2024-09-22 17:30:01 +03:00
Bananymous 57aec2a733 Kernel: Validate pointer's when printing stack trace
There was an kernel panic if stack trace contained uncanonical
addresses.
2024-09-22 17:16:01 +03:00
Bananymous ae89237453 Kernel: Disable warning when calling syscall
This warning is only generated when compiling with UBSAN and I don't see
how the value would even be uninitialzed.
2024-09-22 17:15:07 +03:00
Bananymous 60d5257678 Kenrel: Add __builtin_unreachable support for UBSAN 2024-09-22 17:14:36 +03:00
Bananymous d59463d11b Kernel: Fix TTY reading one keyevent after disabling input handling 2024-09-22 17:13:10 +03:00
Bananymous 23d6205659 Kernel: Move DEBUG_* macros to centralized Debug.h
This makes toggling debug info much easier
2024-09-20 11:00:07 +03:00
Bananymous bc0acc6f44 Kernel: Validate network packet sizes before casting
This caused a lot of crashes on invalid packets :D
2024-09-20 10:46:59 +03:00
Bananymous b8622f2b4b Kernel: Implement simple RTL8169 driver
This allows me to use internet when running banan-os on my hardware!
2024-09-19 22:58:03 +03:00
Bananymous 7f0c39fe91 Kernel: Don't crash the kernel if packet is smaller than ethernet hdr 2024-09-19 22:51:55 +03:00
Bananymous a489be0e05 Kernel: Allow parallel LAPIC timer initialization with HPET
HPET supports reading LAPIC counter without locks, so it can be done in
parallel. This makes booting much faster. Previously initializing every
timer took 100 ms, so 16 CPUs took total of 1.6 seconds. This allows
doing it all in 100 ms.
2024-09-19 14:41:59 +03:00
Bananymous 8e08046519 Kernel: Add asserts about having locked TTY's write lock
This for some reason fixes booting on real hardware? :D
2024-09-18 00:56:48 +03:00
Bananymous 999eb53364 Kernel: Release debug lock if its locked during kernel panic
Also kernel panic now prints if it had lock
2024-09-18 00:56:02 +03:00
Bananymous 0620ed3d4f Kernel: Fix file open permissions for some syscalls 2024-09-17 19:11:48 +03:00
Bananymous b779b3cf2d Kernel: Move file finding code to a helper 2024-09-17 18:52:52 +03:00