Commit Graph

597 Commits

Author SHA1 Message Date
François Revol
ca7ec01422 Use cpu-specific mmu code from arch/m68k.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38911 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-09 23:38:09 +00:00
François Revol
33c4ca7e1d The mmu code is almost not platform specific. Copy it to arch/m68k for now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38910 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-09 22:03:37 +00:00
François Revol
2830084019 More tries at doing something useful in the boot sector... For now it displays a welcome message.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38909 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-09 21:38:50 +00:00
François Revol
646e14e5e9 Clone the atari shell code.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38908 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-09 20:57:39 +00:00
François Revol
408aa82a13 Fix comment.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38906 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-09 20:55:01 +00:00
Philippe Houdoin
64141b1b74 Enable development splash logo for "official" --distro_compatibility.
The official release one stay the well-known one, just renamed to show it's trademarked images.
Fixed #6183.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38891 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-05 10:31:13 +00:00
Andreas Färber
3243de5750 boot_loader_openfirmware: Add iSCSI boot support
If no Haiku remote disk server is found, try an iSCSI discovery session on
the TFTP server, using the IP address from the boot command or OF options.
All available IPv4 targets are considered, Target Portal Groups are ignored.

RFC 4173 suggests a mechanism that avoids a discovery session by using DHCP;
that requires a compatibly configured DHCP server though and we wouldn't have
access to such data currently anyway. iSCSI is currently used as fallback,
and when it doesn't succeed it falls back to the menu as before.

Resolves ticket #5319.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38537 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-05 22:56:22 +00:00
Andreas Färber
5b086e27e8 boot_net: Add iSCSI initiator support
Add support for both discovery and regular iSCSI sessions. Command and status
sequence numbers do differentiate between session and connection but only
one connection per session is currently supported.

Code is Big Endian for now, so compile it for ppc only.

Based on RFC 3720 ff. Tested against OpenSolaris 2009.06.

Resolves most of ticket #5319.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38536 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-05 22:30:41 +00:00
Andreas Färber
eb5e456002 boot_net: Various TCP fixes
Don't enqueue a packet whose sequence number matches the first one in queue
or is between the next and the acknowledged on. This would lead to packet
duplication in the queue and leftovers after dequeuing.

Optimize calculation of acknowledgement number for out-of-order reception.
If a single missing packet arrived, this could have resulted in a timeout
depending on the window size.

In case the connection is closed, do dequeue remaining packets. This would
have caused a read error after a unidirectional FIN.

Prepare a dynamic window size calculation.

Do checksum calculation before attempting to trace packet contents. I have
seen a few and couldn't spot an error in the checksum calculation.

More fine-grained control over trace output.
Trace the Maximum Segment Size option if present; break after End of Options.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38535 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-05 21:02:38 +00:00
Andreas Färber
040b33980c boot_net: Prepare socket-specific TCP window size
Pass the desired window size from the socket to the service.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38530 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-04 22:36:35 +00:00
Andreas Färber
7d415c01cc boot_net: TCP and UDP style cleanup
Remove superfluous comments.
Adjust spacing and initializer indentation.
Make NULL pointer checks explicit.
Don't assign in if-clause.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38529 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-04 22:14:20 +00:00
Andreas Färber
3bc0fcc66e boot_net: Fix TCP memory leaks
In some error conditions the packet would have been leaked.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38503 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-01 18:19:57 +00:00
Andreas Färber
1f4a2bd985 boot_net: Disable TCP for all archs but ppc
Unbreaks the build until a better solution is found.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38485 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-31 22:57:33 +00:00
Andreas Färber
6c2e0f4377 boot_net: Mute some TCP debug output
Trace packet dequeing only when asked to.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38483 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-31 20:32:50 +00:00
Andreas Färber
6dfef7e9b2 boot_net: Use real_time_clock_usecs() for TCP
Initialize the PRNG seed for the sequence number with real_time_clock_usecs()
rather than system_time(). The remaining uses of system_time() for timeout
calculation match UDP.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38482 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-31 18:51:57 +00:00
Andreas Färber
58b1d4608a boot_loader_openfirmware: Implement real_time_clock_usecs()
Partially revert r38465 and move the code from system_time() into a new
real_time_clock_usecs() function. The system_time() implementation was correct
in relying on of_milliseconds(), as pointed out by Axel. Add the correct
function for the desired functionality.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38481 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-31 18:42:57 +00:00
Andreas Färber
a9e71a07a9 boot_loader_openfirmware: Style cleanup
Fix coding style issues and bump copyright (although there's not much anyway).

No functional changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38480 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-31 17:39:06 +00:00
Andreas Färber
b7e825d6e7 boot_net: Add TCP support
Modelled after UDP, add limited TCP support to the boot net stack. The socket
works by queuing received packets as well as sent packets that have not yet
been ACK'ed. Some known issues are documented, especially there's only limited
congestion control. I.e., we send immediately and in unlimited quantity, thus
its use should be restricted to local networks, and due to a fixed window size
there is potential for our socket being overrun with data packets before they
are read. Some corner cases like wrapping sequence numbers may cause a timeout.

The TCP implementation is based on Andrew S. Tanenbaum's "Computer Networks",
4th ed., as well as lecture notes from Prof. W. Effelsberg, the relevant RFCs
and Wikipedia. The pseudo-random number Galois LFSR used for the sequence
number was suggested by Endre Varga.

Since the code is unlikely to get much smaller, better merge it now so that
subsequent changes get easier to review. No platform actively uses TCP sockets
yet, and the receiving code has been reviewed for endianness issues and should
terminate okay after verifying the checksum if no sockets are open.
Based on a version tested with custom code (#5240) as well as with iSCSI.
Compile-tested boot_loader_openfirmware, pxehaiku-loader with gcc4 and
haiku_loader with gcc2. Closes ticket #5240.

Changes from #5240 proposed patch:
* Various bug fixes related to queuing, some memory leaks fixed.
* Never bump the sequence number when dequeuing a packet. It's done afterwards.
* Don't bump the sequence number again when resending the queue or ACK'ing.
* Aggressively ACK while waiting for packets.
* Don't queue sent ACK-only packets.
* More trace output, esp. for queue inspection.
* Adapted use of TCP header flags to r38434.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38472 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-31 01:00:06 +00:00
Andreas Färber
56f837e265 boot_loader_openfirmware: Fix system_time()
system_time() was based on of_milliseconds(), which returns the number of
milliseconds since power-on. This would produce very similar or identical
results for subsequent boots due to limited clock resolution; therefore it
was unsuited as PRNG seed, e.g., for TCP ports.

Try to inquire the RTC device node with get-time to return an improved time
value, if possible.

Closes ticket #6061.

Changes from proposed patch:
* Obtain the RTC handle once and reuse it for each inquiry.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38465 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-30 21:13:10 +00:00
Andreas Färber
884432c2da boot_loader_openfirmware: Fix style issues
Adjust initializers.
Respect 80-column limit and adjust copyright notice.
Reorder some header groups. Enforce line spacing.

No functional changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38343 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-24 20:03:26 +00:00
Andreas Färber
f5aaa387bd boot_loader_openfirmware: Fetch EDID
Read the EDID from OF and pass it on to the kernel.

Last part of ticket #6105.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38307 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-22 02:38:55 +00:00
Andreas Färber
36ee6a8731 boot_loader_openfirmware: Add frame buffer support
Use the OF "screen" device alias to query frame buffer properties. Postpone
the opening of the device as far as possible as it erases the screen output.
Initialize the kernel arguments and hook into generic code to display the
splash screen.

Like on x86, the frame buffer is enabled by default. To disable it, either
press ESC during early boot or, for debugging, make sure in start.cpp that
platform_boot_options() has the BOOT_OPTION_DEBUG_OUTPUT flag set.

Resolves ticket #6105.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38306 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-22 01:56:40 +00:00
Andreas Färber
3c1cb3fd02 boot_loader_openfirmware: Enable boot options by keyboard
Introduce a non-blocking function for checking keyboard input, and refactor
existing code to share the escape key translations. The comment that key-up and
key-down result in a zero char is confirmed to apply.

If the space bar is pressed, enter the boot menu. If the escape key is pressed,
disable the frame buffer and keep showing the usual debug output. Apparently
the key press must come after console/keyboard initialization but before the
"Welcome to the Haiku bootloader!" line.

Closes ticket #6140.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38304 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-22 00:06:32 +00:00
Andreas Färber
4142bceb25 boot_loader_openfirmware: Refactor Jamfile
The frame buffer will need more generic sources than just the text menu.
Adapted from bios_ia32 platform.

Part of ticket #6105.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38301 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-21 19:52:46 +00:00
Andreas Färber
4d95518e60 boot_loader_openfirmware: Avoid console interference with frame buffer
Debug output calls OpenFirmware methods writing text into the frame buffer.
Depending on the screen mode this leads to garbled display or parts of the
screen overwritten, so mute the output during frame buffer use for now.

A better solution would be to redirect the output elsewhere (e.g., #6168),
so that ConsoleHandle::WriteAt() is not called for the problematic handle
in the first place. That does not work inside the kernel yet.

Part of ticket #6105.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38300 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-21 18:42:25 +00:00
Andreas Färber
0dfe97ade1 boot_loader_openfirmware: Preparations for frame buffer
Initialize the frame buffer as not enabled. Add checks for this condition
and for the debug boot option to the video functions.

Code is adapted from bios_ia32 platform. Part of ticket #6105.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38299 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-21 17:42:28 +00:00
Andreas Färber
3f0a83281f boot_loader_openfirmware: Coding style fixes
Rearrange copyright notice, reorder #includes.

No functional changes yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38298 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-21 17:01:18 +00:00
Andreas Färber
31bce16715 ppc: Keep memory mappings set up by OpenFirmware
Revert r36886 and fix compilation of insert_virtual_range_to_keep().
The use of void* vs. addr_t matches the surrounding boot loader code
but should probably be revised in favour of addr_t.

create_area() in the kernel wrongly assumed a RAM-backed address range,
which was destined to fail since ranges below the kernel address space
were ignored anyway. Use vm_map_physical_memory() instead.

This fixes a hang once the frame buffer and other resources used by OF
get unmapped. Closes ticket #5193 again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38291 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-20 22:22:38 +00:00
François Revol
746efef3d3 Add more debug output to help finding why 16bit modes are broken. Oddly 15bit seems to work.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38003 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-10 11:16:20 +00:00
François Revol
d79351ea5e Attempt to use the framebuffer already set up by U-Boot... doesn't work yet though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37999 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-10 10:01:54 +00:00
Matt Madia
2dc707e529 Utilize HAIKU_DISTRO_COMPATIBILITY for the boot splash. Currently only
'--distro-compatibility official' will result in the HAIKU logo being
displayed. When 'default' or 'compatible', only the icons will display. Due to
issues with generate_boot_screen, the "development" logo is not utilized.

Relates to #6183 and #6255


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37740 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-07-25 20:22:10 +00:00
Oliver Tappe
a3f665982e * reintegrated posix-locale
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37725 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-07-23 23:13:00 +00:00
Axel Dörfler
8a5b57ee47 * Enlarged chunk size to 64k - this fixes boot over the network.
* Fixed typos.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37590 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-07-19 12:19:54 +00:00
François Revol
2f1e7c8aeb Just leave the stubs here and use other cpu-specific files.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37342 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-07-02 16:35:52 +00:00
François Revol
d6e6e36c04 Fork arch_video.cpp into cpu-specific versions.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37341 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-07-02 16:32:50 +00:00
François Revol
dae84707ac Patch by "notzed" (Ticket #5380): Add support for setting video mode for OMAP3.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37321 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-06-30 17:39:36 +00:00
François Revol
9020ce87e6 Patch by "notzed" (ticket #5368) (modified): Add bootloader support for BeagleBoard.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37319 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-06-30 17:24:11 +00:00
François Revol
46f639a821 Add an (unused yet) cylinder count var on sfdisk. We don't have any mean of calculating it from the desired image size in jam anyway.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37318 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-06-30 15:52:54 +00:00
François Revol
2eeee81944 Fix (c) years.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37316 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-06-30 15:46:03 +00:00
François Revol
0a8bfb8353 Cleanup. Use SDRAM_BASE from board_config.h.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37315 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-06-30 15:44:07 +00:00
Andreas Färber
4fa4224a1d OpenFirmware: Assure machine type is initialized
On QEMU's emulation of a PowerPC Old World Mac (g3beige), determine_machine()
returns without setting the machine type to unknown, since the root device
does not provide a device_type property.

Move the variable assignment up a few lines to remedy this.

Closes ticket #6123.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37280 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-06-27 17:56:05 +00:00
Philippe Saint-Pierre
216cd910b6 Fix small typo in safe mode options menu.
"compatibilty" => "compatibility"


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37268 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-06-27 01:36:47 +00:00
Andreas Färber
04ec719a70 Convert line endings to LF
In r33670 the svn:eol-style property was dropped, which took care of
locally converting the line endings to the user's native style.
While most files use Unix-style LF line endings, some files have
Windows-style CR LF line endings.

Assure that the following r37262 directories use Unix-style line endings:

src/system/boot/
src/system/boot/arch/
src/system/boot/arch/ppc/
src/system/boot/loader/
src/system/boot/loader/net/
src/system/boot/platform/
src/system/boot/platform/openfirmware/
src/system/boot/platform/openfirmware/arch/
src/system/boot/platform/openfirmware/arch/ppc/
src/system/kernel/
src/system/kernel/arch/
src/system/kernel/arch/ppc/
src/system/kernel/platform/
src/system/kernel/platform/openfirmware/
headers/private/kernel/
headers/private/kernel/arch/
headers/private/kernel/arch/ppc/
headers/private/kernel/platform/
headers/private/kernel/platform/openfirmware/
headers/private/kernel/boot/
headers/private/kernel/boot/net/
headers/private/kernel/boot/platform/
headers/private/kernel/boot/platform/openfirmware/

This avoids patches containing irrelevant lines unintentionally converted.

No functional changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37265 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-06-26 17:38:03 +00:00
Ingo Weinhold
85db3873a9 find_directory.c, driver_settings.c: Converted to C++.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37256 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-06-25 13:40:51 +00:00
Axel Dörfler
36c80d7002 * Fixed warnings.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37251 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-06-25 08:35:02 +00:00
Axel Dörfler
9209acd256 * Renamed the remaining C files to C++ files.
* Fixed some copyrights.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37250 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-06-25 08:30:17 +00:00
Axel Dörfler
b6add3ffb6 * Renamed remaining .c files to .cpp, and made the necessary changes to let
them compile still.
* Some cleanup in ARM's start2.cpp.
* m68k stuff is still missing, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37249 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-06-25 08:03:58 +00:00
Axel Dörfler
2f0e75de7b * Fixed warnings.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37248 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-06-25 08:02:37 +00:00
Ingo Weinhold
7b1d69ecbb Added safe mode option B_SAFEMODE_4_GB_MEMORY_LIMIT (plus a boot loader menu
item) and kernel settings option "4gb_memory_limit". Enabling either one
causes the memory beyond 4 GB to be ignored.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37225 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-06-23 11:13:39 +00:00
Ingo Weinhold
ff9151d11f Added ignore_physical_memory_ranges_beyond_4gb() which removes the memory
beyond 4 GB from the physical memory ranges.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37224 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-06-23 11:10:01 +00:00