#
6e6efaec |
|
24-Apr-2014 |
Jessica Hamilton <jessica.l.hamilton@gmail.com> |
EFI: add ACPI support Also add support in the kernel to get the ACPI RSDP from the bootloader, and pass onto the ACPI driver using get_boot_item.
|
#
e54df517 |
|
22-Apr-2016 |
Alexander von Gluck IV <kallisti5@unixzen.com> |
x86/kernel: Up kernel max page table to 16 * New Intel SkyLake seems to have 9 mapped ranges at boot. It seems like this define has been creeping up for a while. * Resolves the inital issue reported in #11377 on SkyLake as well. Bonefish mentioned it might need to be raised again... he had some good foresight there :-) * I'm seeing the same no bootable partitions issue though via USB after this raise. (maybe a USB 3.1 thing?)
|
#
fa80e7b2 |
|
27-Oct-2014 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
x86 kernel args: Increase number of page tables
|
#
527da4ca |
|
27-Jan-2014 |
Pawel Dziepak <pdziepak@quarnos.org> |
x86[_64]: Separate bootloader and kernel GDT and IDT logic From now on bootloader sets up its own minimal valid GDT and IDT. Then the kernel replaces them with its own tables.
|
#
3e0e3be7 |
|
06-Dec-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
boot, kernel: Replace MAX_BOOT_CPUS with SMP_MAX_CPUS
|
#
e5fc2bfc |
|
26-Jun-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Implemented long mode setup/switch code, the bootloader can now start the 64-bit kernel! The setup procedure is fairly simple: create a 64-bit GDT and 64-bit page tables that include all kernel mappings from the 32-bit address space, but at the correct 64-bit address, then go through kernel_args and changes all virtual addresses to 64-bit addresses, and finally switch to long mode and jump to the kernel.
|
#
d8efc6ca |
|
21-Jun-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Changes to kernel_args to make it identical for x86 and x86_64. * Added a FixedWidthPointer template class which uses 64-bit storage to hold a pointer. This is used in place of raw pointers in kernel_args. * Added __attribute__((packed)) to kernel_args and all structures contained within it. This is necessary due to different alignment behaviour for 32-bit and 64-bit compilation with GCC. * With these changes, kernel_args will now come out the same size for both the x86_64 kernel and the loader, excluding the preloaded_image structure which has not yet been changed. * Tested both an x86 GCC2 and GCC4 build, no problems caused by these changes.
|
#
9623c482 |
|
11-Jun-2010 |
Travis Geiselbrecht <geist@foobox.com> |
SMP: remove the tracking of apic id -> cpu id. Don't pass between bootloader and kernel. Kernel doesn't use it, and it could be regenerated in the kernel if it did need it. This also unlocks the apic range the bios can use. Previously the apic ids would have to fit within 0..MAX_CPUS or it'd reject the cpu. Some boxes (mine in particular) seem to sparsely populate the apic id so that the range is pretty large. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37108 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d40a9355 |
|
02-Mar-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Boot loader (x86 mmu.cpp): * Made the page table allocation more flexible. Got rid of sMaxVirtualAddress and added new virtual_end address to the architecture specific kernel args. * Increased the virtual space we reserve for the kernel to 16 MB. That should suffice for quite a while. The previous 2 MB were too tight when building the kernel with debug info. * mmu_init(): The way we were translating the BIOS' extended memory map to our physical ranges arrays was broken. Small gaps between usable memory ranges would be ignored and instead marked allocated. This worked fine for the boot loader and during the early kernel initialization, but after the VM has been fully set up it frees all physical ranges that have not been claimed otherwise. So those ranges could be entered into the free pages list and would be used later. This could possibly cause all kinds of weird problems, probably including ACPI issues. Now we add only the actually usable ranges to our list. Kernel: * vm_page_init(): The pages of the ranges between the usable physical memory ranges are now marked PAGE_STATE_UNUSED, the allocated ranges PAGE_STATE_WIRED. * unmap_and_free_physical_pages(): Don't free pages marked as unused. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35726 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6a8cce07 |
|
22-Aug-2008 |
Stefano Ceccherini <stefano.ceccherini@gmail.com> |
add hpet locations to the kernel_args. Patch by Dustin Howett (GSOC) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27129 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a3129fbc |
|
30-Nov-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Added cpu_clock_speed field for now - might either be moved to the main kernel_args; depending on how it'll be done on PPC. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10311 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b4d2f3a8 |
|
07-Oct-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Renamed arch_stage2.h to arch_kernel_args.h. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4972 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
fa80e7b28fda0e9519b0a3ab916d1c338241b4e6 |
|
27-Oct-2014 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
x86 kernel args: Increase number of page tables
|
#
527da4ca8a4c008b58da456c01a49dcf16a98fbc |
|
27-Jan-2014 |
Pawel Dziepak <pdziepak@quarnos.org> |
x86[_64]: Separate bootloader and kernel GDT and IDT logic From now on bootloader sets up its own minimal valid GDT and IDT. Then the kernel replaces them with its own tables.
|
#
3e0e3be7604ed12ab61b58789c44bc6d7333f48b |
|
06-Dec-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
boot, kernel: Replace MAX_BOOT_CPUS with SMP_MAX_CPUS
|
#
e5fc2bfcab8c15a3ff7d33c358f9aa82ed73c823 |
|
26-Jun-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Implemented long mode setup/switch code, the bootloader can now start the 64-bit kernel! The setup procedure is fairly simple: create a 64-bit GDT and 64-bit page tables that include all kernel mappings from the 32-bit address space, but at the correct 64-bit address, then go through kernel_args and changes all virtual addresses to 64-bit addresses, and finally switch to long mode and jump to the kernel.
|
#
d8efc6caf6babe278c48e8aa3277376fb68ff455 |
|
21-Jun-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Changes to kernel_args to make it identical for x86 and x86_64. * Added a FixedWidthPointer template class which uses 64-bit storage to hold a pointer. This is used in place of raw pointers in kernel_args. * Added __attribute__((packed)) to kernel_args and all structures contained within it. This is necessary due to different alignment behaviour for 32-bit and 64-bit compilation with GCC. * With these changes, kernel_args will now come out the same size for both the x86_64 kernel and the loader, excluding the preloaded_image structure which has not yet been changed. * Tested both an x86 GCC2 and GCC4 build, no problems caused by these changes.
|
#
9623c48284a184ff5ef9de6d614a1525ffa79e77 |
|
11-Jun-2010 |
Travis Geiselbrecht <geist@foobox.com> |
SMP: remove the tracking of apic id -> cpu id. Don't pass between bootloader and kernel. Kernel doesn't use it, and it could be regenerated in the kernel if it did need it. This also unlocks the apic range the bios can use. Previously the apic ids would have to fit within 0..MAX_CPUS or it'd reject the cpu. Some boxes (mine in particular) seem to sparsely populate the apic id so that the range is pretty large. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37108 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d40a9355605dff41924273711f9dc9df6da496d2 |
|
02-Mar-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Boot loader (x86 mmu.cpp): * Made the page table allocation more flexible. Got rid of sMaxVirtualAddress and added new virtual_end address to the architecture specific kernel args. * Increased the virtual space we reserve for the kernel to 16 MB. That should suffice for quite a while. The previous 2 MB were too tight when building the kernel with debug info. * mmu_init(): The way we were translating the BIOS' extended memory map to our physical ranges arrays was broken. Small gaps between usable memory ranges would be ignored and instead marked allocated. This worked fine for the boot loader and during the early kernel initialization, but after the VM has been fully set up it frees all physical ranges that have not been claimed otherwise. So those ranges could be entered into the free pages list and would be used later. This could possibly cause all kinds of weird problems, probably including ACPI issues. Now we add only the actually usable ranges to our list. Kernel: * vm_page_init(): The pages of the ranges between the usable physical memory ranges are now marked PAGE_STATE_UNUSED, the allocated ranges PAGE_STATE_WIRED. * unmap_and_free_physical_pages(): Don't free pages marked as unused. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35726 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6a8cce077f4e11902357574a5734c66023c6617a |
|
22-Aug-2008 |
Stefano Ceccherini <stefano.ceccherini@gmail.com> |
add hpet locations to the kernel_args. Patch by Dustin Howett (GSOC) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27129 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a3129fbc3b181a0de9676f632b908d64e8a62eeb |
|
30-Nov-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Added cpu_clock_speed field for now - might either be moved to the main kernel_args; depending on how it'll be done on PPC. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10311 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b4d2f3a8e77bc27a7289e6620571f65f6ff75d13 |
|
07-Oct-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Renamed arch_stage2.h to arch_kernel_args.h. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4972 a95241bf-73f2-0310-859d-f6bbb57e9c96
|