Commit Graph

1218 Commits

Author SHA1 Message Date
nyan
864080610e Rename the dos_partition structure for pc98 to pc98_partition. 2003-01-04 08:50:48 +00:00
obrien
cadc439a69 RIP liloldr.
It is not complete (the LILO root= specification isn't passed to our
loader for instance), it has not been touched in over 2 years.  Linux has
moved on to GRUB, so this is OBE now.  If someone creeps up to work on it,
it could become a port.
2002-12-31 02:29:03 +00:00
schweikh
86f7487fb6 Fix typos, mostly s/ an / a / where appropriate and a few s/an/and/
Add FreeBSD Id tag where missing.
2002-12-30 21:18:15 +00:00
obrien
b5dd8790dc -mno-align-long-strings can make things smaller, so lets use it in hopes
that it does here.
2002-12-21 02:03:31 +00:00
imp
caafad42bb Put back the casts to unsigned. While no strictly necessary for its
current uses, the name strcmp has strong connotations that shouldn't
lightly be discarded.  This doesn't cost us anything.

Submitted by: bde
2002-12-20 05:49:40 +00:00
jake
aa8a03363d Fix breakage from earlier inadvertant changes. 2002-12-20 04:32:10 +00:00
jake
081cb688ba Renamed the loader's zipfs to gzipfs. zipfs.c was repo-copied to gzipfs.c. 2002-12-19 19:34:59 +00:00
marcel
61e39e41d0 Add command `hcdp'. This command dumps the DIG64 HCDP table if one
exists.
2002-12-18 08:13:03 +00:00
imp
dbae8d7a6f I didn't intend to delete this rm from the Makefile. It snuck in at
the last second before the commit.

# likely we can remove this hack now that gcc generates better aligned code
# in the align to word case.

Noticed by: bde
2002-12-18 07:13:53 +00:00
imp
a360e4752e Reduce diffs with Peter's expanded diffs:
1) Put back the keyboard printing printf, at the cost of 58 bytes.
2) Minor tweak to getstr at no apparent cost.
2002-12-17 22:00:06 +00:00
imp
1bf3ace0ea Make both UFS1 and UFS2 fit on the same boot blocks. These are a
subset of Peter's patchs that are believed to be safe.

Makefile tweaks:
o -fomit-frame-pointer
o Change default to building both UFS1 and UFS2 bootblocks.

Lots of boot2 tweaks:
o lookup is only ever called with kname, so use it directly.
o inline memsize
o getstr are only ever called with cmd, so hardware that.
o tweaks to the parsing code to test after the conversion rather than
  before since we tested after anyways.
o eliminate support for %x in printf.
o eliminate a few bytes in printfs.
o Tweak the boot banner.
o eliminate support for wd and "  " devices (I might add wd back to
  keep bde happy).
o eliminate support for a few arguments.

This takes us from -162 bytes free to 67 bytes free.

I've tested this only on a few systems, so be careful when updating to
this change.

Submitted by: peter, imp, ian
2002-12-17 21:10:34 +00:00
obrien
1a902e59d0 Remove unneeded casts. Add others to make WARNS=5 happy. 2002-12-15 02:15:19 +00:00
phk
bb0e8ad59a Employ the unused bytes after the disklabel in the second sector. This makes
it possible to make UFS1_ONLY and UFS2_ONLY versions which fit inside the
traditional 16 sectors.

Remove assorted now unneeded hackery.

UFS1_AND_UFS2 still needs another 150 bytes to work, and that is probably
not within our reach, ever.
2002-12-14 19:44:13 +00:00
phk
49ede28a1f Remove unnecessary call to fsread(). 2002-12-14 19:40:35 +00:00
phk
56254fadf2 Restructure so we can compile UFS1_ONLY, UFS2_ONLY or UFS1_AND_UFS2
versions from the same basic function.
2002-12-14 19:39:44 +00:00
phk
6a31ca3bba Always use the smaller GCC builtin memcpy 2002-12-14 19:15:27 +00:00
phk
98d11df096 Remove unused variable. 2002-12-14 19:09:37 +00:00
phk
5e638ceffd Don't fill in the table with the BIOS idea about disk-geometry, we don't
use it.  This saves a surprising number of bytes.
2002-12-14 17:34:28 +00:00
ru
041d1287e8 Uniformly refer to a file system as "file system".
Approved by:	re
2002-12-12 17:26:04 +00:00
marcel
9050c80f1d Pass the HCDP table address to the kernel. If no such table exists,
NULL is passed. The address of the HCDP table can be found by
iterating over the configuration tables in the EFI system table.
To avoid more duplication, a function can be called with the GUID
of interest. The function will do the scanning. Use the function
in all places where we iterate over the configuration tables in
an attempt to find a specific one.

Bump the loader version number as the result of this.

Approved by: re (blanket)
2002-12-10 20:11:20 +00:00
marcel
9ca0668125 The exit() function has been moved to libefi.c to better deal with
cleaning up after ourselves.

Approved by: re (blankoscheck)
German corrections: Alexander (both :-)
2002-12-10 06:27:32 +00:00
marcel
2b58aefd52 Change the startup code to fix a memory leak and to allow us to
accept load options (=command line options).

The call graph changes from *entry*->efi_main->efi_init, where
efi_main is the EFI equivalent of main to *entry*->efi_main->main,
where main is what you'd expect. efi_main now is what efi_init was.
The prototype of main follows that of C. The first argument is argc
and the second is argv. There is no third argument.
Allocation of heap pages is now handled by the EFI library and it
now deallocates the pages when main() returns or when exit() is
called. This allows us to safely return to the boot manager (or
EFI shell) without leaks. EFI applications are responsible to free
all memory themselves.

Handling of the load options is a bit tricky. There are either no
load options, load options in ASCII or load options in Unicode.
The EFI library will translate the ASCII options to Unicode options
as to simplify user code. Since the load options are passed as a
single string (if present) and main() accepts argc and argv, the
startup code also has to split the string into words and build the
argv vector. Here the trickiness starts. When the loader is started
from the EFI shell, argv[0] will automaticly load the program name.
In all other cases (ie through the boot manager), this is not the
case. Unfortunately, there's no trivial way to check. Hence, a
set of conditions is checked to determine if we need to fill in
argv[0] ourselves or not. This checking is not perfect. There are
known cases where it fails to do the right thing. The logic works
for most expected cases, though. This includes the case where no
options are given.

Approved by: re (blanket)
2002-12-10 06:22:25 +00:00
marcel
f4623ed867 o Make all GUID variables global to maximize reuse.
o  Recognize the HCDP configuration table.
o  Dump the GUID of tables we don't recognize.

Approved by: re (carte blanche)
2002-12-10 04:55:25 +00:00
marcel
2d2da6e200 Build EFI with -fshort-wchar so that L"some string" works with the
EFI has defined CHAR16.
2002-12-10 04:20:15 +00:00
marcel
68a001789e Remove _putchar, _puts and _puthex. These functions are unused.
Approved by: re (blanket)
2002-12-10 04:14:01 +00:00
marcel
5745230c62 Add the GUID of the DIG64 HCDP table. 2002-12-08 20:47:44 +00:00
marcel
b6c9fbe053 The boot manager sets the watchdog timer to 5 minutes before invoking
a boot option. When the timer expires the machine is rebooted.
Disable the watchdog timer for 2 reasons:
o  We're an interactive program. We cannot guarantee that we've
   booted the kernel in the time available to us. There have been
   situations where netbooting the right kernel took 2 tries and
   more time than given. Not to speak of the normal behaviour to
   have the loader sitting at the prompt while the user is off
   doing other things (such as figuring out what to type next ;-)
o  We may not boot a kernel at all. We may exit as the result of
   the user typing quit (assuming it took less than 5 minutes to
   type it :-). It is documented that loaders should have disabled
   the watchdog timer if they return to the boot manager. Not doing
   so would cause a reboot while in the boot manager. This appears
   to be harmless, besides of course the actual reboot.

Approved by: re (weisse karte)
2002-12-08 20:04:00 +00:00
marcel
cc1323fd66 In efi_cons_poll we check if a key is present (pending) by checking
the signaled state of the apropriate event. As a side-effect of
checking the event, it's signaled state is cleared if it was set.
In efi_cons_getchar we used to wait for the apropriate event to be
signaled before reading a character. This however does not work if
we poll before reading the characteri, such as during autoboot. On
a more compliant EFI implementation this resulted in the behaviour
that hitting a key during autoboot would stop the countdown, but
would then wait for a new character to arrive instead of reading
the already pending key that stopped the countdown.

The correct behaviour for efi_cons_getchar is to try to read a key
and if none is pending, to wait for the apropriate event to signal
the arrival of a new key.

Note that with the previous behaviour, the second key would determine
how the autoboot was interrupted. This would indicate that the first
key got lost. This indicates that EFI does not necessarily maintain
a queue of pending keys. FWIW...

Approved by: re (carte blanche)
French corrected by: various people :-)
2002-12-08 19:46:11 +00:00
jake
64d3246a13 Fix a dumb bug that broke net booting on sparc64. The wrong length was
passed to strncmp.

Noticed by:	tmm
Approved by:	re
Pointy hat to:	jake
2002-12-02 01:46:22 +00:00
marcel
99d4b2d8ed Remove a left-over virtual mapping of uncached I/O port space.
Previous kernels unwantingly depended on this mapping, but as
of version 1.123 of src/sys/ia64/ia64/machdep.c this dependency
has been removed. Consequently, one has to update the kernel
before updating the loader. The documented/recommended upgrade
will suffice in this case.

Due to a visible (from the kernels point of view) change in
behaviour, bump the loader version number from 0.3 to 1.0.

Approved by: re (carte blanc)
2002-11-28 03:25:51 +00:00
jhb
a31817b547 Enable UFS2 support in boot1. Just as with sparc64 the same boot1 works
great with both UFS1 and UFS2 filesystems.

Approved by:	re
2002-11-27 20:13:15 +00:00
mckusick
9251693096 Create a new 32-bit fs_flags word in the superblock. Add code to move
the old 8-bit fs_old_flags to the new location the first time that the
filesystem is mounted by a new kernel. One of the unused flags in
fs_old_flags is used to indicate that the flags have been moved.
Leave the fs_old_flags word intact so that it will work properly if
used on an old kernel.

Change the fs_sblockloc superblock location field to be in units
of bytes instead of in units of filesystem fragments. The old units
did not work properly when the fragment size exceeeded the superblock
size (8192). Update old fs_sblockloc values at the same time that
the flags are moved.

Suggested by:	BOUWSMA Barry <freebsd-misuser@netscum.dyndns.dk>
Sponsored by:   DARPA & NAI Labs.
2002-11-27 02:18:58 +00:00
yar
eb711f1390 Eliminate references to defunct kernel tunables.
Approved by:	re
PR:		bin/43343
2002-11-26 13:55:50 +00:00
marcel
31a4aeb1f6 MFp4:
o  Show the contents of the AP wakeup descriptor when dumping SAL
   information.
o  Increase S/N ratio when listing the itr and dtr. Only show valid
   mappings and give the total number of TRs.

Approved by: re (blanket)
2002-11-24 19:45:05 +00:00
dcs
d9d90c9b6e The new "all sound drivers" driver name is snd_driver. Loader.conf didn't
knew about it, though. Now it does.

MFC after:	2 weeks
2002-11-22 18:39:30 +00:00
mdodd
69fdcfb883 Document loader tunables hw.pci.enable_io_modes and
hw.pci.allow_unsupported_io_range.

Submitted by:	 Hiten Pandya <hiten@angelica.unixdaemons.com>
Approved by:	 re (murray)
2002-11-13 09:43:53 +00:00
mdodd
07a965e862 Loader tunable 'machdep.disable_mtrrs'.
Sysctl of same name to reflect status.

Submitted by:	 jhb
Approved by:	 re (murray)
MFC after:	 1 day
2002-11-13 09:37:43 +00:00
jake
73d398d702 Change the device path representation in libofw to use the full firmware
path, instead of an internal i386 specific one.  Don't try to interpret
a disklabel in ofw_disk.c, open the partition's device node directly and
let the firmware do it.  This fixes booting from a partition other than 'a'
on sparc64, which is needed to support more installation methods.

No objection:	ppc
2002-11-10 19:17:36 +00:00
phk
b6df9a9c87 Correctly recognize both bogus and genuine BSD disklabels.
Don't expect me to participate in a discussion which is which.

Sponsored by:	DARPA & NAI Labs.
2002-11-03 21:47:55 +00:00
mini
53bdb71e06 Fix indentation of comments. 2002-11-02 08:49:51 +00:00
mini
1e67f1b1da Add loader variables to control the loading of various networking modules.
Submitted by: David Yeske <dyeske@yahoo.com>
2002-11-02 06:52:28 +00:00
marcel
f7ce7ae0be o Fix a size calculation based on a 8KB page, while under EFI
pages are 4KB.
o  As a second order fix, don't assume we have enough space
   after the bootinfo block left in a page to hold the memory
   map.
o  A third order fix as that we removed the assumption that a
   bootinfo block fits in a single 8KB page.

PR: ia64/39415
submitted by: Espen Skoglund <esk@ira.uka.de>
2002-10-24 07:53:12 +00:00
tmm
bef256b79f Pass the right number of tlb slots to the kernel. The allocation scheme
was changed in r1.4, but I neglected to update most of the code in
metadata.c.

Pointy hat to:	tmm
2002-10-18 23:49:18 +00:00
jake
083845b5c0 Compile in support for zipfs and bzipfs so we can load the gzipped mfsroot
that releases use.
2002-10-13 18:52:46 +00:00
nyan
ebafe6791c Remove '-DUFS1_ONLY' from CFLAGS. It is not needed. 2002-10-10 14:03:00 +00:00
jhb
4c2a550344 Revert MEM_USR back to 0xa000 for BTX clients. Instead, adjust boot2
to run at 0xc000 by changing its virtual start address from 0x1000 to
0x2000.

Tested by:	phk
2002-10-08 18:19:02 +00:00
phk
07c608aac1 Now that ufsread.c doesn't do 64bit divide remainder operations,
don't bother with libkern.

Sponsored by:	DARPA & NAI Labs.
2002-10-08 15:49:35 +00:00
phk
a2f1fdc5bf Save a couple of bytes by not returning ints nobody care about.
Sponsored by:	DARPA & NAI labs
2002-10-08 15:48:43 +00:00
phk
8eaa35ca87 It seems that the only problem with UFS2 booting on i386 is the 64bit
divide/remainder calls.  For reasons not resolved, compiling the
relevant routines from libkern into boot2 results in stack corruption.

Do the simple thing: Don't use 64bit divide/remainder operations.

Sponsored by:	DARPA & NAI Labs
2002-10-08 15:46:45 +00:00
green
7a416624c8 Reinstate rev 1.36 with an important line that got missed. Note this
also improves the "random undocumented offsets into various memory
spaces" a little bit.
2002-10-08 12:09:16 +00:00