Gunnar Beutner
f56ee10a13
Kernel: Hand out 64-bit addresses to userspace
2021-07-18 17:31:13 +02:00
Liav A
5938d882d8
Kernel: Use a different kernel load address for x86_64
...
Co-authored-by: Gunnar Beutner <gbeutner@serenityos.org>
2021-07-18 17:31:13 +02:00
Gunnar Beutner
7e94b090fe
Kernel: Introduce basic pre-kernel environment
...
This implements a simple bootloader that is capable of loading ELF64
kernel images. It does this by using QEMU/GRUB to load the kernel image
from disk and pass it to our bootloader as a Multiboot module.
The bootloader then parses the ELF image and sets it up appropriately.
The kernel's entry point is a C++ function with architecture-native
code.
Co-authored-by: Liav A <liavalb@gmail.com>
2021-07-18 17:31:13 +02:00
Gunnar Beutner
357ddd393e
Kernel: Make allocate_randomized() work for 64-bit addresses
...
The odds of finding a suitable address in 1000 attempts were not in our
favor given the size of the 64-bit address space.
2021-07-18 17:31:13 +02:00
Gunnar Beutner
f0c4941beb
Kernel: Fix 64-bit address truncation in MemoryManager::ensure_pte()
2021-07-18 17:31:13 +02:00
Gunnar Beutner
98f8ecd9d2
Kernel: Split debug symbols into a separate file
...
This speeds up the boot process considerably when specifying the kernel
image via -initrd.
2021-07-18 17:31:13 +02:00
Gunnar Beutner
b708b23b13
Kernel: Add support for kernel addresses other than 3-4GB
2021-07-18 17:31:13 +02:00
Gunnar Beutner
6c6b778e2e
Kernel: Support 64-bit addresses for kernel thread stacks
2021-07-18 17:31:13 +02:00
Gunnar Beutner
c878054682
Kernel: Make VirtualAddress::page_base() work with 64-bit addresses
2021-07-18 17:31:13 +02:00
Gunnar Beutner
679ae6af81
Kernel: Remove some more hardcoded addresses
2021-07-18 17:31:13 +02:00
Gunnar Beutner
7c3bfde8fd
Kernel: Make SCHEDULER_DEBUG work on x86_64
2021-07-18 17:31:13 +02:00
Gunnar Beutner
741ca5477c
Kernel: Fix {read,write}_gs_ptr() for 64-bit addresses
2021-07-18 17:31:13 +02:00
Gunnar Beutner
294b918e9b
Kernel: Ignore KUBSAN symbols in the kernel symbol map
2021-07-18 17:31:13 +02:00
Sahan Fernando
2845c6753e
Kernel: Clean up VirtIOGPU class interfaces
2021-07-18 19:58:17 +04:30
Sahan Fernando
d9330c42fa
Kernel: Replace VirtIOGPU reinterpret casts with AK::BinaryBufferWriter
2021-07-18 19:58:17 +04:30
Sahan Fernando
04226f0c0a
Kernel: Improve debug prints for VirtIOGPU device config events
2021-07-18 19:58:17 +04:30
Sahan Fernando
4dddc56ad9
Kernel: Rename VirtIOGPU/VirtIOGPU.cpp to VirtIOGPU/GPU.cpp
2021-07-18 19:58:17 +04:30
Sahan Fernando
1c77f80676
Kernel: Put VirtIOGPU related types into a namespace
2021-07-18 19:58:17 +04:30
Andreas Kling
7791f7b9e6
Kernel/TmpFS: Remove some unnecessary includes
2021-07-18 14:29:27 +02:00
Andreas Kling
61e17ed590
Kernel/TmpFS: Use IntrusiveList and KString for OOM safety
...
This patch moves TmpFS to using OOM-safe data types for storing
directory children.
2021-07-18 14:29:27 +02:00
Tom
ae8472f9ca
Kernel: Fix blocking relock of the big_lock while unlocking other Lock
...
When a Thread is being unblocked and we need to re-lock the process
big_lock and re-locking blocks again, then we may end up in
Thread::block again while still servicing the original lock's
Thread::block. So permit recursion as long as it's only the big_lock
that we block on again.
Fixes #8822
2021-07-18 13:08:51 +02:00
Andreas Kling
df5fa8aa39
Kernel/ProcFS: Remove redundant ProcFS& member from ProcFSInode
2021-07-18 02:24:26 +02:00
Andreas Kling
d298de5e09
Kernel/SysFS: Remove redundant SysFS& member from SysFSInode
2021-07-18 02:23:22 +02:00
Andreas Kling
d3cf4cd8f0
Kernel/DevFS: Remove redundant DevFS& member from DevFSInode
...
All Inode subclasses can get to their FileSystem via Inode::fs().
2021-07-18 02:21:34 +02:00
Andreas Kling
bd37840cf5
Kernel/Ext2FS: Surface Vector allocation failures in block allocation
2021-07-18 02:15:56 +02:00
Andreas Kling
1f18558ee2
Kernel: Make FileSystem::root_inode() return a plain Inode&
...
All file system classes are expected to keep their root Inode object
in memory, so this function can safely return an Inode&.
2021-07-18 01:53:04 +02:00
Andreas Kling
58c6d30f6a
Kernel/Ext2FS: Cache the root inode in a member variable
...
We often get queried for the root inode, and it will always be cached
in memory anyway, so let's make Ext2FS::root_inode() fast by keeping
the root inode in a dedicated member variable.
2021-07-18 01:53:04 +02:00
Andreas Kling
9457d83986
Kernel: Rename Locker => MutexLocker
2021-07-18 01:53:04 +02:00
Andreas Kling
ab50a1480f
Kernel/USB: Remove unneeded friend declaration in SysFSUSBBusDirectory
2021-07-18 01:53:04 +02:00
Andreas Kling
b975a74a1d
Kernel/USB: Move USB bus information from /proc to /sys
...
This patch moves all the USB data from /proc/bus/usb to /sys/bus/usb.
2021-07-18 00:55:16 +02:00
Andreas Kling
6fae2a5f9e
Kernel/ProcFS: Remove unused ProcFSExposedComponent::entries_count()
2021-07-17 23:50:01 +02:00
Andreas Kling
d686d2ef18
Kernel/SysFS: Remove unused SysFSComponent::entries_count()
2021-07-17 23:50:01 +02:00
Andreas Kling
2da0581fd2
Kernel: Replace "folder" => "directory" everywhere
...
Folders are a GUI concept. File systems have directories.
2021-07-17 23:50:00 +02:00
Andreas Kling
b8d6c3722d
Kernel: Remove Inode::directory_entry_count()
...
This was only used in one place: VirtualFileSystem::rmdir(), and that
has now been converted to a simple directory traversal.
2021-07-17 22:36:04 +02:00
Andreas Kling
d1bbe8b652
Kernel: Count remaining children in VirtualFileSystem::rmdir() manually
...
To count the remaining children, we simply need to traverse the
directory and increment a counter. No need for a custom virtual that
all file systems have to implement. :^)
2021-07-17 22:34:43 +02:00
Andreas Kling
a3f58a5003
Kernel/DevFS: Use KString for DevFSDeviceInode::m_name
2021-07-17 22:17:07 +02:00
Andreas Kling
0d89cfcd9a
Kernel/DevFS: Use KString for DevFSLinkInode::m_link
2021-07-17 22:11:41 +02:00
Andreas Kling
cd4d73e19e
Kernel: Add an API for turning a UserOrKernelBuffer into a KString
2021-07-17 22:07:49 +02:00
Andreas Kling
dd37d0a327
Kernel/DevFS: Use KString for DevFSLinkInode::m_name
2021-07-17 21:40:32 +02:00
Andreas Kling
61c1937d02
Kernel/DevFS: Make DevFSInode::name() return StringView
2021-07-17 21:36:54 +02:00
Andreas Kling
6766efff9c
Kernel: Make Inode::create_child() take the name as a StringView
...
No sense in forcing callers to construct a String. One more small step
towards not using String in the kernel.
2021-07-17 21:32:59 +02:00
Andreas Kling
9359f7801f
Kernel/DevFS: Remove some unnecessary inode locking
...
Unless we're accessing mutex-guarded metadata, there's no need to
acquire the inode lock.
The file system ID or inode index of a constructed inode will never
change, for example.
2021-07-17 21:26:47 +02:00
Andreas Kling
3b805a57e6
Kernel: Rename Inode::m_lock => m_inode_lock
...
This makes file system code much easier to read since it was hard when
both the file system and inode locks were called "m_lock".
2021-07-17 21:17:39 +02:00
Andreas Kling
63e1423830
Kernel: Remove unused Inode::is_shared_vmobject()
2021-07-17 21:11:12 +02:00
Andreas Kling
cee9528168
Kernel: Rename Lock to Mutex
...
Let's be explicit about what kind of lock this is meant to be.
2021-07-17 21:10:32 +02:00
Andreas Kling
a803c4026c
Kernel: Make FileSystem::class_name() return a StringView
2021-07-17 20:59:48 +02:00
Brian Gianforcaro
c0987453e6
Kernel: Remove double RedBlackTree lookup in VM/Space region removal
...
We should never request a regions removal that we don't currently
own. We currently assert this everywhere else by all callers.
Instead lets just push the assert down into the RedBlackTree removal
and assume that we will always successfully remove the region.
2021-07-17 16:22:59 +02:00
Brian Gianforcaro
d879709ec7
Kernel: Convert the PhysicalPage bool parameter to an enum
2021-07-17 18:38:28 +04:30
Brian Gianforcaro
eb282ad410
Kernel: Declare VM/RangeAllocator trivial destructor as default
...
This is a clang tidy recommendation.
2021-07-17 13:02:09 +02:00
Brian Gianforcaro
24bd664980
Kernel: Remove stale include from VM/RangeAllocator.cpp
...
This was left over after the latest big refactor of the VM subsystem.
2021-07-17 13:02:09 +02:00