#
56bb1bd5 |
|
20-Feb-2020 |
Jérôme Duval <jerome.duval@gmail.com> |
kernel: load cpu microcode update if loaded by the bootloader add optional fields for microcode in kernel_args. Change-Id: Ic5fb54cf6c9f489a2d1cdda00f63980c11dcdaeb Reviewed-on: https://review.haiku-os.org/c/haiku/+/2264 Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
|
#
5c0f8450 |
|
14-Apr-2014 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Boot loader: Add support for choosing an old packages state For potential boot volumes with older packages states the respective item in the boot volume menu now has a sub menu for selecting a state. The boot loader functionality for this feature is complete -- i.e. the respective kernel is loaded and the name of the old state is added to the kernel args -- but kernel packagefs and package daemon support is still missing.
|
#
8540ec24 |
|
19-Jan-2014 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Save previous session's debug syslog during boot Add boot loader debug menu option "Save syslog from previous session during boot". If enabled (defaults to true), the previous session's debug syslog data is copy to a separate buffer and passed to the kernel, which writes it back to the file /var/log/previous_syslog. As long as Haiku still boots, this should now be the most convenient way to retrieve the output from a kernel crash.
|
#
3e0e3be7 |
|
06-Dec-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
boot, kernel: Replace MAX_BOOT_CPUS with SMP_MAX_CPUS
|
#
f1244978 |
|
22-Jun-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Added an ELF64 version of preloaded_image. * There is now 2 structures, preloaded_elf32_image and preloaded_elf64_image, which both inherit from preloaded_image. * For now I've just hardcoded in use of preloaded_elf32_image, but the bootloader ELF code will shortly be converted to use templates which use the appropriate structure. The kernel will be changed later when I add ELF64 support to it. * All kernel_args data is now compatible between 32-bit and 64-bit kernels.
|
#
17a33898 |
|
21-Jun-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Remove phys_addr_range, just use addr_range for both virtual and physical address ranges (as requested by Ingo).
|
#
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.
|
#
192af9e0 |
|
20-Jun-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Changed addr_range to use uint64. I've tested this change on x86, causing no issues. I've checked over the code for all other platforms and made the necessary changes and to the best of my knowledge they should also still work, but I haven't actually built and tested them. Once I've completed the kernel_args changes the other platforms will need testing.
|
#
93cb9538 |
|
20-Jun-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Don't store a KMessage in kernel_args for the boot volume, only the buffer address/size. Pointers in kernel_args are going to be changed to unconditionally use 64-bit storage (to make kernel_args compatible with both the x86 and x86_64 kernels). KMessage stores a pointer to its buffer, however since KMessage is used outside of the boot code it is undesirable to change it to use 64-bit storage for the pointer as it may add additional overhead on 32-bit builds. Therefore, only store the buffer address and size and then construct a KMessage from those in the kernel.
|
#
533833f6 |
|
19-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add kernel args boot volume "packaged" flag * Add BOOT_VOLUME_PACKAGED boot volume message field name constant. * register_boot_file_system(): - Now takes a BootVolume& parameter. - If the boot volume is packaged, add that info to the boot volume message.
|
#
84e9db7f |
|
12-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
x86 mmu_init(): Sum up the physical memory we ignore for whatever reason -- stored in kernel_args::ignored_physical_memory. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37116 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d73ddac5 |
|
27-May-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Introduced phys_addr_range type, an equivalent to addr_range for physical address ranges, and a set of support functions working with it. * Changed the type of the kernel_args physical address range arrays to phys_addr_range and adjusted the code working with those. * Removed a bunch of duplicated address range code in the PPC's mmu.cpp. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36947 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
28a2172c |
|
11-Mar-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
kernel: * The kernel syslog ring buffer is no longer emptied by the syslog sender thread. Instead we only drop the oldest data from the buffer when we're writing to it and there's not enough free space in it. Advantages: We drop old data rather than the most recent data when the buffer is full. The "syslog" KDL command has more data available now. So the odds are that kernel syslog messages not written to disk yet are at least still in the kernel buffer. * Changed dprintf_no_syslog() semantics: Now it writes to the syslog, but doesn't notify the syslog sender thread. boot loader: * Added the ring_buffer implementation and a dummy user_memcpy(). * bios_x86: Moved the syslog stuff from serial.{cpp,h} to debug.{cpp.h}. * Moved the debug options from the "Select safe mode options" menu to a new "Select debug options" menu. * Added option "Enable debug syslog" to the new menu (ATM available on x86 only). It allocates a 1 MB in-memory buffer for the syslog for this session in such a way that it can be accessed by the boot loader after a reset. * Added item "Display syslog from previous session" to the new menu, doing what its name suggests. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35816 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
bb693d77 |
|
14-Aug-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Added VESA capabilities field to the kernel args. * The vesa driver no longer uses VGA programming if the chip does not support VGA compatibility. * The VESA driver now tries to set the DAC to 8 bits per color gun. * In VESA modes, the driver no longer tries to use VGA programming; introduced the new vesa_set_indexed_colors() that is now used for palette programming. This should fix wrong colors of 8 bit BWindowScreen users with VESA on real hardware (emulators usually didn't mind either way). * Note that the app_server needs to maintain a palette per 8 bit screen, as right now, the colors are garbled after a workspace switch. Stefano, are you looking into that already? git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32347 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8166e6e4 |
|
13-Aug-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Enlarged kernel_args array even more, as network boot needs this with all the extra kernel drivers. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32303 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4a47b14e |
|
22-Sep-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Enlarged a single kernel_args chunk to 32 KB (was 16 KB). * Reduced the kernel_args array size from 32 to 16 (7 are used on a normal build). * Cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27690 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d16ddc57 |
|
03-Jun-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* The boot loader now passes on its EDID info to the kernel, and that will be put into a boot_item in frame_buffer_console_init(). * The VESA driver now supports gettings the EDID information as well; this is necessary now, since the app_server no longer takes over the mode the boot loader had chosen. * Note, we might want to do this via vm86 instead in the future, and remove the kernel part again. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25786 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d0fc7c65 |
|
05-Apr-2008 |
Stephan Aßmus <superstippi@gmx.de> |
Patch by Philippe Saint-Pierre: * Implemented RLE compression for the boot splash images, resulting in smaller kernel and boot loader. * Only the boot loader contains the RLE compressed images, the decompressed buffer for the icons is passed to the kernel via kernel args. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24812 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6328832f |
|
30-Mar-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Changed get_boot_item() API: it now also can retrieve the size of the boot item entry. * The bios_ia32 video platform code now stores the available VESA modes in the new vesa_modes kernel_args field. * When configuring a VESA mode via settings file, it's no longer needed to specify the exact mode - the closest available mode is now used. This should help with bug #1962. * frame_buffer_console_init() now also creates a boot_item for the VESA modes in the kernel_args. * The VESA accelerant now filters the mode list to only contain modes that are actually supported. * Moved non-shared vesa driver data into its own file vesa_private.h. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24675 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5845b6ec |
|
27-Nov-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* The boot loader now remembers the bytes per row as told by the graphics card, and passes that information on to the kernel. This should fix wrong bytes per row with certain resolutions and graphics cards. * The boot loader now recognizes 15 bit modes that are advertised as 16 bit modes. This should fix wrong colors in 16 bit modes on some cards. * Reenabled setting MTRR for VESA mode - don't remember why I disabled it, but it works fine on my test machines. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23006 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3ae3b04b |
|
26-Nov-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* The boot loader (bios_ia32 only) now duplicates everything that goes to the serial output, and puts it into the new kernel_args::debug_output field. * syslog_init() will now check if there is anything in kernel_args::debug_output and will put that into the syslog buffer. * dump_block() now also prints an offset. * Fixed warning in mmu.cpp. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23003 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9e8dc2a9 |
|
14-Jul-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
[Sorry, couldn't split this one up any further.] * Images preloaded by the boot loader had to be modules to be of any use to the kernel. Extended the mechanism so that any images not accepted by the module code would later be tried to be added as drivers by the devfs. This is a little hacky ATM, since the devfs manages the drivers using a hash map keyed by the drivers inode ID, which those drivers obviously don't have. * The devfs emulates read_pages() using read(), if the device driver doesn't implement the former (all old-style drivers), thus making it possible to BFS, which uses the file cache which in turn requires read_pages(), on the device. write_pages() emulation is still missing. * Replaced the kernel_args::boot_disk structure by a KMessage, which can more flexibly be extended and deals more gracefully with arbitrarily-size data. The disk_identifier structure still exists, though. It is added as message field in cases where needed (non net boot). Moved the boot_drive_number field of the bios_ia32 platform specific args into the message. * Made the stage 1 PXE boot loader superfluous. Moved the relevant initialization code into the stage 2 loader, which can now be loaded directly via PXE. * The PXE boot loader does now download a boot tgz archive via TFTP. It does no longer use the RemoteDisk protocol (it could actually be removed from the boot loader). It also parses the DHCP options in the DHCPACK packet provided by PXE and extracts the root path to be mounted by the kernel. * Reorganized the boot volume search in the kernel (vfs_boot.cpp) and added support for network boot. In this case the net stack is initialized and the network interface the boot loader used is brought up and configured. Since NBD and RemoteDisk are our only options for net boot (and those aren't really configurable dynamically) ATM, the the boot device is found automatically by the disk device manager. Booting via PXE does work to some degree now. The most grievous problem is that loading certain drivers or kernel modules (or related activity) causes a reboot (likely a triple fault, though one wonders where our double fault handler is on vacation). Namely the keyboard and mouse input server add-ons need to be deactivated as well as the media server. A smaller problem is the net server, which apparently tries to (re-)configure the network interface we're using to boot, which obviously doesn't work out that well. So, if all this stuff is disabled Haiku does fully boot, when using the RemoteDisk protocol (not being able to use keyboard or mouse doesn't make this a particular fascinating experience, though ;-)). I had no luck with NBD -- it seemed to have protocol problems with the servers I tried. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21611 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
43792b9e |
|
12-Jan-2007 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
propagate required settings for the remote disk from boot loader to kernel (client-ip, server-ip, server-port) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19780 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
35d3421d |
|
17-Nov-2006 |
Axel Dörfler <axeld@pinc-software.de> |
Greatly enlarged the number of possible kernel_arg ranges as we were already pretty close, and the number of loaded modules have a direct influence on this (even though we're currently loading the symbols by default). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19320 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
be950af4 |
|
30-Dec-2005 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Removed unused kernel_args fields. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15746 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5ea23bb0 |
|
14-Oct-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Removed platform_boot_device_is_image() again; it's now replaced by a field "booted_from_image" in the kernel_args' boot_disk structure. Also, added fields "cd" and "user_selected". A CHOICE_MENU menu can now have a choice text - this is automatically updated as entries in the menu get selected. The boot volume menu now has the initial choice text "CD-ROM or hard drive" in case the boot loader was loaded from an image. The "Rescan volumes" item is no longer selected by default (only if there was no boot volume found) - but it's still functionless anyway. The TAR fs will now appear as "Boot from CD-ROM" in the boot volume menu. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14388 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0d4ea07b |
|
10-Jan-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Added driver_settings support to the kernel_args structure. The driver settings are put into the kernel_args memory section and copied on kernel startup. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10635 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b193fcc7 |
|
15-Nov-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Some work on the boot disk identification: the kernel_args structure has now fields that carry information about the boot disk and partition. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9956 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
107f1a6a |
|
19-Oct-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Added an addr_range array for kernel_args. Removed the "str" field I have no idea what it could have been useful for. Changed the frame buffer part of the kernel args - "already_mapped" is no longer there, as it doesn't make a lot of sense. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9413 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2158ae19 |
|
15-Jun-2004 |
Axel Dörfler <axeld@pinc-software.de> |
The kernel_args structure version and size can now be checked and identified in the kernel. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7986 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
78f42e3f |
|
31-May-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Moved the addr_range struct to a separate header. Changed the kernel image data to a preloaded image as well, to simplify handling in the kernel. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7704 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
95bd98d9 |
|
20-Apr-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed addr_range structure: struct name didn't match typedef name, now uses addr_t for the address base/size instead of (the non-portable) uint32. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7277 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b73b3e5a |
|
16-Oct-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Changes for the ELF loader in the boot loader. Removed the arch_mmu_alloc() function, added (empty) arch_mmu_free() function. Added platform prototypes for allocating and freeing a region. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5044 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5028c449 |
|
07-Oct-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Now includes <platform_kernel_args.h> as well as <arch_kernel_args.h> git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4976 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
79dd9caf |
|
07-Oct-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Moved the kernel_args structure to the new kernel_args.h header file. stage2.h is now of interest for the stage2 boot loader only. stage2_struct.h is no longer needed. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4959 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5c0f8450acfa799aaf13a0e86ba8941212a6bfb3 |
|
14-Apr-2014 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Boot loader: Add support for choosing an old packages state For potential boot volumes with older packages states the respective item in the boot volume menu now has a sub menu for selecting a state. The boot loader functionality for this feature is complete -- i.e. the respective kernel is loaded and the name of the old state is added to the kernel args -- but kernel packagefs and package daemon support is still missing.
|
#
8540ec2446d1fda22904ace548570b73d91f4726 |
|
19-Jan-2014 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Save previous session's debug syslog during boot Add boot loader debug menu option "Save syslog from previous session during boot". If enabled (defaults to true), the previous session's debug syslog data is copy to a separate buffer and passed to the kernel, which writes it back to the file /var/log/previous_syslog. As long as Haiku still boots, this should now be the most convenient way to retrieve the output from a kernel crash.
|
#
3e0e3be7604ed12ab61b58789c44bc6d7333f48b |
|
06-Dec-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
boot, kernel: Replace MAX_BOOT_CPUS with SMP_MAX_CPUS
|
#
f1244978152350f9cc010e766d09c2e9ad34dfce |
|
22-Jun-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Added an ELF64 version of preloaded_image. * There is now 2 structures, preloaded_elf32_image and preloaded_elf64_image, which both inherit from preloaded_image. * For now I've just hardcoded in use of preloaded_elf32_image, but the bootloader ELF code will shortly be converted to use templates which use the appropriate structure. The kernel will be changed later when I add ELF64 support to it. * All kernel_args data is now compatible between 32-bit and 64-bit kernels.
|
#
17a3389882cee19532ddc99bc1f9aa1efd296749 |
|
21-Jun-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Remove phys_addr_range, just use addr_range for both virtual and physical address ranges (as requested by Ingo).
|
#
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.
|
#
192af9e0afd2f3d0cbaf5c935480343a70c8ff53 |
|
20-Jun-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Changed addr_range to use uint64. I've tested this change on x86, causing no issues. I've checked over the code for all other platforms and made the necessary changes and to the best of my knowledge they should also still work, but I haven't actually built and tested them. Once I've completed the kernel_args changes the other platforms will need testing.
|
#
93cb9538be54a2dd4ab6097453ac7d521a9a0b6c |
|
20-Jun-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Don't store a KMessage in kernel_args for the boot volume, only the buffer address/size. Pointers in kernel_args are going to be changed to unconditionally use 64-bit storage (to make kernel_args compatible with both the x86 and x86_64 kernels). KMessage stores a pointer to its buffer, however since KMessage is used outside of the boot code it is undesirable to change it to use 64-bit storage for the pointer as it may add additional overhead on 32-bit builds. Therefore, only store the buffer address and size and then construct a KMessage from those in the kernel.
|
#
533833f646106f4d14f8329ea7773b42c7e45682 |
|
19-Jun-2011 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Add kernel args boot volume "packaged" flag * Add BOOT_VOLUME_PACKAGED boot volume message field name constant. * register_boot_file_system(): - Now takes a BootVolume& parameter. - If the boot volume is packaged, add that info to the boot volume message.
|
#
84e9db7fb7fe41dca80582ce8ed5e676bb51ceb4 |
|
12-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
x86 mmu_init(): Sum up the physical memory we ignore for whatever reason -- stored in kernel_args::ignored_physical_memory. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37116 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d73ddac5bfe4a2d7d1c7f602e475879832fbaa87 |
|
27-May-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Introduced phys_addr_range type, an equivalent to addr_range for physical address ranges, and a set of support functions working with it. * Changed the type of the kernel_args physical address range arrays to phys_addr_range and adjusted the code working with those. * Removed a bunch of duplicated address range code in the PPC's mmu.cpp. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36947 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
28a2172c3f19a34e31ba20085148e5428544823a |
|
11-Mar-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
kernel: * The kernel syslog ring buffer is no longer emptied by the syslog sender thread. Instead we only drop the oldest data from the buffer when we're writing to it and there's not enough free space in it. Advantages: We drop old data rather than the most recent data when the buffer is full. The "syslog" KDL command has more data available now. So the odds are that kernel syslog messages not written to disk yet are at least still in the kernel buffer. * Changed dprintf_no_syslog() semantics: Now it writes to the syslog, but doesn't notify the syslog sender thread. boot loader: * Added the ring_buffer implementation and a dummy user_memcpy(). * bios_x86: Moved the syslog stuff from serial.{cpp,h} to debug.{cpp.h}. * Moved the debug options from the "Select safe mode options" menu to a new "Select debug options" menu. * Added option "Enable debug syslog" to the new menu (ATM available on x86 only). It allocates a 1 MB in-memory buffer for the syslog for this session in such a way that it can be accessed by the boot loader after a reset. * Added item "Display syslog from previous session" to the new menu, doing what its name suggests. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35816 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
bb693d77643c7bc4b2b10847007a94af5e84b953 |
|
14-Aug-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Added VESA capabilities field to the kernel args. * The vesa driver no longer uses VGA programming if the chip does not support VGA compatibility. * The VESA driver now tries to set the DAC to 8 bits per color gun. * In VESA modes, the driver no longer tries to use VGA programming; introduced the new vesa_set_indexed_colors() that is now used for palette programming. This should fix wrong colors of 8 bit BWindowScreen users with VESA on real hardware (emulators usually didn't mind either way). * Note that the app_server needs to maintain a palette per 8 bit screen, as right now, the colors are garbled after a workspace switch. Stefano, are you looking into that already? git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32347 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8166e6e477a65d3ce88f65e361ab8a0e0036c04d |
|
13-Aug-2009 |
Axel Dörfler <axeld@pinc-software.de> |
* Enlarged kernel_args array even more, as network boot needs this with all the extra kernel drivers. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32303 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4a47b14ea4354bb62f7bf1d3e83bda0c75cbdd9c |
|
22-Sep-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Enlarged a single kernel_args chunk to 32 KB (was 16 KB). * Reduced the kernel_args array size from 32 to 16 (7 are used on a normal build). * Cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27690 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d16ddc579cc378b230e7782b82e6007063d1442d |
|
03-Jun-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* The boot loader now passes on its EDID info to the kernel, and that will be put into a boot_item in frame_buffer_console_init(). * The VESA driver now supports gettings the EDID information as well; this is necessary now, since the app_server no longer takes over the mode the boot loader had chosen. * Note, we might want to do this via vm86 instead in the future, and remove the kernel part again. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25786 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d0fc7c65c615c56e6571049df8ef6efec3204793 |
|
05-Apr-2008 |
Stephan Aßmus <superstippi@gmx.de> |
Patch by Philippe Saint-Pierre: * Implemented RLE compression for the boot splash images, resulting in smaller kernel and boot loader. * Only the boot loader contains the RLE compressed images, the decompressed buffer for the icons is passed to the kernel via kernel args. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24812 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6328832fba8f149074dbe7502dc0c180ff013263 |
|
30-Mar-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Changed get_boot_item() API: it now also can retrieve the size of the boot item entry. * The bios_ia32 video platform code now stores the available VESA modes in the new vesa_modes kernel_args field. * When configuring a VESA mode via settings file, it's no longer needed to specify the exact mode - the closest available mode is now used. This should help with bug #1962. * frame_buffer_console_init() now also creates a boot_item for the VESA modes in the kernel_args. * The VESA accelerant now filters the mode list to only contain modes that are actually supported. * Moved non-shared vesa driver data into its own file vesa_private.h. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24675 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5845b6ecc55d00e5f222d73646947f0187269a76 |
|
27-Nov-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* The boot loader now remembers the bytes per row as told by the graphics card, and passes that information on to the kernel. This should fix wrong bytes per row with certain resolutions and graphics cards. * The boot loader now recognizes 15 bit modes that are advertised as 16 bit modes. This should fix wrong colors in 16 bit modes on some cards. * Reenabled setting MTRR for VESA mode - don't remember why I disabled it, but it works fine on my test machines. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23006 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3ae3b04bce8c481442bd3ff42c6d57d1417374c6 |
|
26-Nov-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* The boot loader (bios_ia32 only) now duplicates everything that goes to the serial output, and puts it into the new kernel_args::debug_output field. * syslog_init() will now check if there is anything in kernel_args::debug_output and will put that into the syslog buffer. * dump_block() now also prints an offset. * Fixed warning in mmu.cpp. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23003 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9e8dc2a9bbbe768acdfd224a6a4af01918bb4ce0 |
|
14-Jul-2007 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
[Sorry, couldn't split this one up any further.] * Images preloaded by the boot loader had to be modules to be of any use to the kernel. Extended the mechanism so that any images not accepted by the module code would later be tried to be added as drivers by the devfs. This is a little hacky ATM, since the devfs manages the drivers using a hash map keyed by the drivers inode ID, which those drivers obviously don't have. * The devfs emulates read_pages() using read(), if the device driver doesn't implement the former (all old-style drivers), thus making it possible to BFS, which uses the file cache which in turn requires read_pages(), on the device. write_pages() emulation is still missing. * Replaced the kernel_args::boot_disk structure by a KMessage, which can more flexibly be extended and deals more gracefully with arbitrarily-size data. The disk_identifier structure still exists, though. It is added as message field in cases where needed (non net boot). Moved the boot_drive_number field of the bios_ia32 platform specific args into the message. * Made the stage 1 PXE boot loader superfluous. Moved the relevant initialization code into the stage 2 loader, which can now be loaded directly via PXE. * The PXE boot loader does now download a boot tgz archive via TFTP. It does no longer use the RemoteDisk protocol (it could actually be removed from the boot loader). It also parses the DHCP options in the DHCPACK packet provided by PXE and extracts the root path to be mounted by the kernel. * Reorganized the boot volume search in the kernel (vfs_boot.cpp) and added support for network boot. In this case the net stack is initialized and the network interface the boot loader used is brought up and configured. Since NBD and RemoteDisk are our only options for net boot (and those aren't really configurable dynamically) ATM, the the boot device is found automatically by the disk device manager. Booting via PXE does work to some degree now. The most grievous problem is that loading certain drivers or kernel modules (or related activity) causes a reboot (likely a triple fault, though one wonders where our double fault handler is on vacation). Namely the keyboard and mouse input server add-ons need to be deactivated as well as the media server. A smaller problem is the net server, which apparently tries to (re-)configure the network interface we're using to boot, which obviously doesn't work out that well. So, if all this stuff is disabled Haiku does fully boot, when using the RemoteDisk protocol (not being able to use keyboard or mouse doesn't make this a particular fascinating experience, though ;-)). I had no luck with NBD -- it seemed to have protocol problems with the servers I tried. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21611 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
43792b9eeda5ba6d5fc57b0779537681a022cfeb |
|
12-Jan-2007 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
propagate required settings for the remote disk from boot loader to kernel (client-ip, server-ip, server-port) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19780 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
35d3421dc5886faaf8eeaa7fa888f7d5ed416236 |
|
17-Nov-2006 |
Axel Dörfler <axeld@pinc-software.de> |
Greatly enlarged the number of possible kernel_arg ranges as we were already pretty close, and the number of loaded modules have a direct influence on this (even though we're currently loading the symbols by default). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19320 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
be950af4dfb36cd7fa263bc498ed362046765295 |
|
30-Dec-2005 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Removed unused kernel_args fields. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15746 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5ea23bb0a3c0abdd8494122942c1327e5734d959 |
|
14-Oct-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Removed platform_boot_device_is_image() again; it's now replaced by a field "booted_from_image" in the kernel_args' boot_disk structure. Also, added fields "cd" and "user_selected". A CHOICE_MENU menu can now have a choice text - this is automatically updated as entries in the menu get selected. The boot volume menu now has the initial choice text "CD-ROM or hard drive" in case the boot loader was loaded from an image. The "Rescan volumes" item is no longer selected by default (only if there was no boot volume found) - but it's still functionless anyway. The TAR fs will now appear as "Boot from CD-ROM" in the boot volume menu. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14388 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0d4ea07bd750a17583af949eb22a31a5d5f99a19 |
|
10-Jan-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Added driver_settings support to the kernel_args structure. The driver settings are put into the kernel_args memory section and copied on kernel startup. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10635 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b193fcc7165ddd6fef10e48c8b19a4b23e7908d5 |
|
15-Nov-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Some work on the boot disk identification: the kernel_args structure has now fields that carry information about the boot disk and partition. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9956 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
107f1a6a3f5ae5b71f6c4dac2dd84e6f3d023a89 |
|
19-Oct-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Added an addr_range array for kernel_args. Removed the "str" field I have no idea what it could have been useful for. Changed the frame buffer part of the kernel args - "already_mapped" is no longer there, as it doesn't make a lot of sense. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9413 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2158ae19ee8b766e4c26c187a23a6c9b23a04c01 |
|
15-Jun-2004 |
Axel Dörfler <axeld@pinc-software.de> |
The kernel_args structure version and size can now be checked and identified in the kernel. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7986 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
78f42e3f3395d0ca11d8d8cc1c361303c9661927 |
|
31-May-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Moved the addr_range struct to a separate header. Changed the kernel image data to a preloaded image as well, to simplify handling in the kernel. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7704 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
95bd98d938591bef2a3fd8b1be31ff2179978351 |
|
20-Apr-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed addr_range structure: struct name didn't match typedef name, now uses addr_t for the address base/size instead of (the non-portable) uint32. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7277 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b73b3e5a2d7168411b3db36c9a08570feefc83a4 |
|
16-Oct-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Changes for the ELF loader in the boot loader. Removed the arch_mmu_alloc() function, added (empty) arch_mmu_free() function. Added platform prototypes for allocating and freeing a region. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5044 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5028c44913030a095a15a5d072ff3d5ad05c3feb |
|
07-Oct-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Now includes <platform_kernel_args.h> as well as <arch_kernel_args.h> git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4976 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
79dd9caf61ca8dd4146b5fffa808636439fe7537 |
|
07-Oct-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Moved the kernel_args structure to the new kernel_args.h header file. stage2.h is now of interest for the stage2 boot loader only. stage2_struct.h is no longer needed. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4959 a95241bf-73f2-0310-859d-f6bbb57e9c96
|