515 Commits

Author SHA1 Message Date
ps
35656a3e2f Make PXE do a dhcp request to find out where its files are. The
DHCP server is no longer required to also act as the NFS/TFTP
server.
2000-04-27 12:30:28 +00:00
ps
4ff5ca59a7 Don't report errors when we UDP_WRITE fails with a status of 1. 2000-04-27 03:23:50 +00:00
jhb
25830f96c9 Now that we are compiling PXE into libi386, we don't need ../libi386 in
.PATH anymore.
2000-04-26 19:54:49 +00:00
ps
fbbbd99774 Bring support in for Intel Wired for Management 1.1 (PXE 0.99 and
below).  This did not work previously because interrupts were
disabled when PXE calls were being made, and they must be enabled.
This should also allow us to be compliant with all newer PXE rom's
from Intel.

For PXE 0.99, this has been tested using the Intel N440BX motherboard
and I am confident it will work on the Intel L440GX motherboard.

Lots of help/information from: jhb, peter

I would like to thank Michael Johnston <michael.johnston@intel.com>,
Mike Henry <mike.henry@intel.com>, and all the other PXE developers
at Intel for their help, and information in helping solve this
problem.
2000-04-26 07:38:40 +00:00
jhb
85e4002ebb Don't disable interrupts when calling a vm86 mode interrupt or routine
from user mode.  Don't disable interrupts when returning from vm86 mode
to user mode either.  Now, we only disable interrupts before calling a
hardware interrupt handler, which is the only time we _should_ be
disabling interrupts.

Because of this, err, feature, any routine that one called in vm86 mode
had to re-enable interrupts by setting the interrupt flag or interrupts
would remain disabled even after the routine returned.  For example, I
have a simple debugging routine that uses a vm86 mode function to dump
any arbitrary memory word that I use to read the BIOS timer or any other
memory location.  This function does 1 load instruction from memory and
then returns.  Since it didn't re-enable interrupts, the first time I
called it to read the BIOS timer, it disabled interrupts.   This also
affected the PXE bootstrap as it needs interrupts enabled while it is
processing.  This patch fixes both of those situations so that those
functions do not worry about having to enable interrupts.  Hardware
interrupt handlers worked fine with the old code because they always
enable interrupts as part of their routine.

If you have any problems with the loader after this commit, please
let me know.  I'd like to MFC it in a week or two since PXE support
needs it.

Noticed by:	ps, Michael Johnston <michael.johnston@intel.com>
2000-04-26 04:35:25 +00:00
nyan
26cbedd66b Sync with the following changes.
sys/boot/i386/libi386/Makefile	1.16 and 1.17
sys/boot/i386/loader/Makefile	1.44
sys/boot/i386/loader/main.c	1.20
2000-04-23 09:33:31 +00:00
ps
f81c72613c Move the building of the PXE module into libi386. 2000-04-21 22:06:02 +00:00
ps
6675396374 Make the loader a little smarter about when it is and is not allowed
to call PXE.
2000-04-21 04:58:51 +00:00
ps
b181e7c260 Don't call the PXE cleanup routine if PXE is not enabled. This
should fix the "Invalid partition table" error people were seeing.
2000-04-21 03:04:16 +00:00
ps
4422f2d83b Add a cleanup function. This is needed for PXE where you should
shutdown the UNDI and unload the stack.
2000-04-20 00:06:15 +00:00
ps
bdc51eda06 Use !PXE api over PXENV+ api.
Magic trampoline by: peter (at 4am and after a good whipping at airhockey)
Do a better job of returning and detecting errors.
2000-04-19 11:22:38 +00:00
msmith
087c82acdb Some more i386-only BIOS-friendliness:
- Add support for using the PCI BIOS functions for configuration space
   accesses, and make this the default.

 - Make PNPBIOS the default (obsoletes the PNPBIOS config option).

 - Add two new boot-time tunables to disable each of the above.
2000-04-16 20:48:33 +00:00
nyan
41a5f6cba7 The printf function of boot2 can't recognize "%lx" format.
Submitted by:	Nobuyuki Koganemaru <kogane@koganemaru.co.jp>
2000-04-14 14:25:13 +00:00
nyan
241fa1a8d5 Merged from sys/boot/i386/loader/Makefile revision 1.43. 2000-04-14 13:51:14 +00:00
kato
da90280d53 Merged from sys/boot/i386/loader/main.c rev 1.19. 2000-04-12 11:17:08 +00:00
jhb
2ac8d6674b Add a missing dependency: boot2 depends on the BTX kernel. 2000-04-11 14:49:13 +00:00
jkh
c5bf423390 Nuke duplicate struct declaration from somebody's paste-o 2000-04-08 22:50:18 +00:00
ps
baa52b87aa Make PXE use the UDP API. This allows for both TFTP and NFS support.
You may specify TFTP or NFS via compile time options in the loader,
but not both at this time.

Also, remove a warning about not knowing how to boot from network
devices.  We can obviously do that now.
2000-04-08 01:22:14 +00:00
ps
4cd167b447 Add a missing PXE API call and structure. 2000-04-04 07:28:54 +00:00
ps
0ddd73d45f Add all the PXE related structures from the 2.1 PXE spec from Intel.
Fix exsisting code to match the spec.
2000-04-04 00:38:59 +00:00
kato
f6d236e3a2 Synced with following files:
src/sys/boot/i386/Makefile.inc	1.1
  src/sys/boot/i386/btx/btx/btx.s	1.15
  src/sys/boot/i386/btx/btxldr/Makefile	1.8
  src/sys/boot/i386/btx/btxldr/btxldr.s	1.9
  src/sys/boot/i386/libi386/biosdisk.c	1.29
  src/sys/boot/i386/loader/Makefile	1.42
  src/sys/boot/i386/loader/main.c	1.18
(entry point address of loader was not changed.)

Reviewed by:	nyan
2000-03-31 16:03:02 +00:00
kato
1f650b7e9c Separated serial boot block interface routine into NS16550 stuff and
i8251 stuff.
2000-03-30 09:25:03 +00:00
jhb
528aa61b66 Mega i386 loader commit.
- Don't hard code 0x10000 as the entry point for the loader.  Instead add
  src/sys/boot/i386/Makefile.inc which defines a make variable with the
  entry point for the loader.  Move the loader's entry point up to
  0x20000, which makes PXE happy.
- Don't try to use cpp to parse btxldr for the optional BTXLDR_VERBOSE,
  instead use m4 to achieve this.  Also, add a BTXLDR_VERBOSE knob in the
  btxldr Makefile to turn this option on.
- Redo parts of cdldr's Makefile so that it now builds and installs cdboot
  instead of having i386/loader/Makefile do that.  Also, add in some more
  variables to make the pxeldr Makefile almost identical and thus to ease
  maintainability.
- Teach cdldr about the a.out format.  Cdldr now parsers the a.out header
  of the loader binary and relocates it based on that.  The entry point of
  the loader no longer has to be hardcoded into cdldr.  Also, the boot
  info table from mkisofs is no longer required to get a useful cdboot.
- Update the lsdev function for BIOS disks to parse other file systems
  (such as DOS FAT) that we currently support.  This is still buggy as
  it assumes that a floppy with a DOS boot sector actually has a MBR and
  parses it as such.  I'll be fixing this in the future.
- The biggie:  Add in support for booting off of PXE-enabled network
  adapters.  Currently, we use the TFTP API provided by the PXE BIOS.
  Eventually we will switch to using the low-level NIC driver thus
  allowing both TFTP and NFS to be used, but for now it's just TFTP.

Submitted by:	ps, alfred
Testing by:	Benno Rice <benno@netizen.com.au>
2000-03-28 01:19:53 +00:00
nyan
f64cb112ed Sync with sys/boot/i386/libi386/biosdisk.c revision 1.27 and 1.28.
Submitted by:	Kaho Toshikazu <kaho@elam.kais.kyoto-u.ac.jp>
2000-03-17 12:38:36 +00:00
jhb
0615421c40 Remove some extra spammage that made it into this commit. This will be
revisited later with a better fix, or at least one that compiles. :)

Approved by:	dcs
2000-03-15 16:36:55 +00:00
dcs
a18025220f Pass an unit number to bcache_strategy, so it can flush the cache when
necessary. Pass an absolute block number too, instead of receiving a
relative one in realstrategy(), as bcache_strategy() requires this.

The fix is sligthly different from the one in the PR.

PR:		17098
Submitted by:	John Hood <jhood@sitaranetworks.com>
2000-03-15 01:58:45 +00:00
dcs
24a0d62243 bcache_strategy() now receives an unit number, and keep track of what
was the last unit number received. If it changes, it flushes the cache.
Add bcache_flash().

The actual fix is sligthly different from the one in the PR.

PR:		17098
Submitted by:	John Hood <jhood@sitaranetworks.com>
2000-03-15 01:56:12 +00:00
dcs
0edaa7aeae Pass unit number to bcache_strategy(), so that the cache can be
flushed if the unit changes. Compute the absolute offset before
bcache_strategy() instead of after.

The actual fix is sligthly different for the one in the PR.

PR:		17098
Submitted by:	John Hood <jhood@sitaranetworks.com>
2000-03-15 01:53:34 +00:00
bp
6ed9854c48 Fix the loader to handle module dependencies properly. More fixes
will be provided after modmetadata appears in the kernel.

Reviewed by:	msmith
Approved by:	jkh
2000-02-25 05:10:44 +00:00
msmith
8564307eff Close a file descriptor leak in the code which loads file objects.
Submitted by:	Paul Saab <paul@mu.org>
Approved by:	jkh
2000-02-17 02:19:19 +00:00
jhb
05ac7ac6bf This patch to BTX fixes several small things:
1) Fix a bug in the int15 function 87 emulation where we only copied half
   of what the BIOS asked for.  This caused the Mylex RAID adapter to go
   haywire and start trashing memory when you tried to boot from it.
2) Don't use interrupt 19 to reboot.  Instead, set the reboot flag to a warm
   boot and jump to the BIOS's reboot handler.  int 19 doesn't clear memory
   or restore the interrupt vector table, and thus really isn't safe.  For
   example, when booting off of PXE, the PXE BIOS eats up a chunk of memory
   for its internal data and structures.  Since we rebooted via int 19,
   using the 'reboot' command in the loader resulted in that memory not
   being reclaimed by the BIOS.  Thus, after a few PXE boots, the system
   was out of lower memory.
3) Catch any int 19 calls made by a BTX client or a user pressing
   Ctrl-Alt-Delete and shutdown BTX and reboot the machine cleanly.  This
   fixes Ctrl-Alt-Delete in the loader and in boot2 instead of presenting
   the user with a BTX fault.

Approved by:	jkh
Found by:	1) by msmith
2000-02-16 07:00:16 +00:00
ru
4b1fee2e59 Support the new ata(4) syntax, while providing backward compatibility for wd(4).
Reviewed by:	jkh, msmith, sos
Approved by:	jkh
2000-02-09 19:23:46 +00:00
kato
1ed4e27f18 Synced with sys/boot/i386/loader/Makefile rev 1.41. 2000-02-05 02:21:31 +00:00
luigi
0e62e2011b Add a NOFORTH variable so we can build a smaller loader without
Forth support, for use with PicoBSD

Approved-By: jordan
2000-02-04 20:57:09 +00:00
jhb
f14425e1c7 Fix bogon in previous commit. Re-enable Forth in the loader.
Noticed by:	dcs
Approved by:	jkh
2000-01-30 06:56:27 +00:00
kato
ac9d6cb3b4 Synced with sys/boot/i386/btx/btx/btx.s rev 1.14. 2000-01-29 13:48:36 +00:00
jhb
ecc56c784b Allow for cdldr to be built in ${.OBJDIR}/../cdldr/cdldr instead of
only looking for it in ${.CURDIR}/../cdldr/cdldr.  This fixes world.
2000-01-28 15:19:22 +00:00
dcs
1413d2c5ed Implement a machine-independent (word size-independent) FICL_TRUE. 2000-01-28 03:59:12 +00:00
dcs
22631e4b23 ANS Forth for logical not is 0=, not invert. Replace wrong usage. 2000-01-28 03:41:39 +00:00
dcs
675514383d Add testmain.o to CLEANFILES. 2000-01-28 03:07:25 +00:00
dcs
da94ddfd7a Try my hand again at removing ugly testmain target. 2000-01-28 02:40:23 +00:00
jhb
372aab7cb7 Add the new cdldr CD bootstrap loader. This patch includes the following:
- Fix btxldr to preserve a NULL bootinfo pointer when it copies the kernel
  arguments.
- Add the cdldr bootstrap program.  This program is tacked onto the
  beginning of the standard 3rd stage boot loader (/boot/loader) to form
  the CD boot loader (/boot/cdboot).  When a CD is booted, the cdboot file
  is copied into memory instead and executed.  The cdldr stub emulates the
  environment normally provided by boot2 and then starts the loader.  This
  booting method does not emulate a floppy drive, but boots directly off of
  the CD.  This should fix the problems some BIOS's have with emulating a
  2.88 MB floppy image.
- Add support to the loader to recognize that it has been booted by cdldr
  instead of boot2 and use a simpler method of extracting the BIOS boot
  device.
2000-01-27 21:21:01 +00:00
jhb
30f3b614b3 Fix brokenness introduced with the PAGING conditional variable. The value
of %cr0 wasn't reloaded into %eax before being modified to turn protected
mode off if PAGING was not defined.  The result was that the processor did
not exit protected mode, so when it tried to jump to segment 0x0 in the
next instruction to clear the prefetch cache like one should when leaving
protected mode, it actually tried to jump to a null selector, causing a
GPF.
2000-01-27 21:06:13 +00:00
wpaul
1e2a8041d0 Add driver support for the Aironet 4500/4800 series wireless 802.11
NICs. (Finally!) The PCMCIA, ISA and PCI varieties are all supported,
though only the ISA and PCI ones will work on the alpha for now.
PCCARD, ISA and PCI attachments are all provided. Also provided an
ancontrol(8) utility for configuring the NIC, man pages, and updated
pccard.conf.sample. ISA cards are supported in both ISA PnP and hard-wired
mode, although you must configure the kernel explicitly to support the
hardwired mode since you have to know the I/O address and port ahead
of time.

Special thanks to Doug Ambrisko for doing the initial newbus hackery
and getting it to work in infrastructure mode.
2000-01-14 20:41:03 +00:00
wpaul
25bfa75395 Add device driver support for USB ethernet adapters based on the CATC
USB-EL1202A chipset. Between this and the other two drivers, we should
have support for pretty much every USB ethernet adapter on the market.
The only other USB chip that I know of is the SMC USB97C196, and right
now I don't know of any adapters that use it (including the ones made
by SMC :/ ).

Note that the CATC chip supports a nifty feature: read and write combining.
This allows multiple ethernet packets to be transfered in a single USB
bulk in/out transaction. However I'm again having trouble with large
bulk in transfers like I did with the ADMtek chip, which leads me to
believe that our USB stack needs some work before we can really make
use of this feature. When/if things improve, I intend to revisit the
aue and cue drivers. For now, I've lost enough sanity points.
2000-01-14 03:14:49 +00:00
wpaul
a0156fbe84 Add device driver support for USB ethernet adapters based on the
Kawasaki LSI KL5KUSB101B chip, including the LinkSys USB10T, the
Entrega NET-USB-E45, the Peracom USB Ethernet Adapter, the 3Com
3c19250 and the ADS Technologies USB-10BT. This device is 10mbs
half-duplex only, so there's miibus or ifmedia support. This device
also requires firmware to be loaded into it, however KLSI allows
redistribution of the firmware images (I specifically asked about
this; they said it was ok).

Special thanks to Annelise Anderson for getting me in touch with
KLSI (eventually) and thanks to KLSI for providing the necessary
programming info.

Highlights:
- Add driver files to /sys/dev/usb
- update usbdevs and regenerate attendate files
- update usb_quirks.c
- Update HARDWARE.TXT and RELNOTES.TXT for i386 and alpha
- Update LINT, GENERIC and others for i386, alpha and pc98
- Add man page
- Add module
- Update sysinstall and userconfig.c
2000-01-05 04:27:24 +00:00
nyan
09fefd34d0 Merge from the following changes.
sys/boot/i386/libi386/biosmem.c	Rev 1.4
	sys/boot/i386/libi386/time.c	Rev 1.3
	sys/boot/i386/loader/main.c	Rev 1.16
2000-01-03 15:43:52 +00:00
nyan
1d91115edd Fixed to get the BIOS geometry. 2000-01-03 15:28:05 +00:00
msmith
95aaaf1f16 Substantially revamp the way that we determine the amount of memory available
for our use.  Use the same search order for BIOS memory size functions
as the kernel will later use.

Allow the loader to use all of the detected physical memory (this will
greatly help people trying to load enormous memory disk images).

More correctly handle running out of memory when loading an object.

Use the end of base memory for the top of the heap, rather than
blindly hoping that there is 384k left.

Add copyrights to a couple of files I forgot.
1999-12-29 09:54:46 +00:00
peter
d53e4c1d80 Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL"
is an application space macro and the applications are supposed to be free
to use it as they please (but cannot).  This is consistant with the other
BSD's who made this change quite some time ago.  More commits to come.
1999-12-29 05:07:58 +00:00