Michael Brown
55e6d7b70c
Use debug autocolourisation.
...
Shut down before jumping to the multiboot image.
2007-01-14 00:57:43 +00:00
Michael Brown
dca369ddc3
Call hide_etherboot() from startup(), rather than requiring the prefix to
...
do it.
2007-01-14 00:53:56 +00:00
Michael Brown
ece4ff929e
Use _text, rather than assuming _text==0.
2007-01-14 00:03:07 +00:00
Michael Brown
f547f148d3
Use {get,set}_fbms() so that allocated base memory is correctly hidden.
2007-01-14 00:01:16 +00:00
Michael Brown
0b0e34e667
Provide {get,set}_fbms() in basemem.h.
...
set_fbms() will also update the E820 hidden region.
2007-01-13 23:57:31 +00:00
Michael Brown
aaed3d50a8
Some operating systems get a nasty shock if a region of the E820 map seems
...
to start on a non-page boundary. Make life safer by rounding out our
edited regions.
2007-01-13 23:38:33 +00:00
Michael Brown
d0f4e9a54b
Add some trace messages for important events
2007-01-13 17:54:41 +00:00
Michael Brown
f11900a9c6
I prefer IMAGE_XXX to XXX_IMAGE.
...
Add IMAGE_PXE to use the new image format framework. "kernel pxelinux.0"
now works.
2007-01-13 17:28:51 +00:00
Michael Brown
bd863e4112
Add header for pxe_boot()
2007-01-13 17:23:44 +00:00
Michael Brown
4b77061881
Pick up the return status code from the correct place now that we
...
don't overwrite the parameter block until *after* the debug code.
2007-01-13 16:55:57 +00:00
Michael Brown
5817c9f114
When an UNDI API call fails, print everything there is to know about it.
2007-01-13 16:53:55 +00:00
Michael Brown
6a3c76c8e0
Always send EOI. We can't feasibly share interrupts (since we have no
...
clue what the "previous" interrupt handler will do, which could range
from "just an iret" to "disable the interrupt"), and that means that
we have to take responsibility for ACKing all interrupts. Joy.
2007-01-13 14:45:26 +00:00
Michael Brown
86171c53f4
Damn Broadcom and their damned incorrect assumptions about x86 memory
...
allocation.
2007-01-13 01:48:12 +00:00
Michael Brown
bcd6ca3291
Place multiboot tables in base memory; at least some OSes won't see it
...
if we don't.
2007-01-12 16:25:05 +00:00
Michael Brown
0f29e0e46e
Ensure multiboot modules are in ascending order of memory start
...
address, to work around OS bugs.
2007-01-12 12:03:19 +00:00
Michael Brown
53e948bba8
Fix the memory map.
2007-01-12 11:38:04 +00:00
Michael Brown
6fdc6c81a6
Force probing of multiboot before ELF.
2007-01-12 08:10:35 +00:00
Michael Brown
9debfed07a
Place command-line inline, to save on memory allocation hassles.
2007-01-12 05:26:19 +00:00
Michael Brown
77b7640af4
Fix the only bug (which was to use DBGC() in place of DBG()!) and add 4kB
...
alignment.
2007-01-12 03:28:03 +00:00
Michael Brown
45ec9c907e
First version of an external memory allocator (not tested)
2007-01-12 03:15:29 +00:00
Michael Brown
1d313234b3
Rename copy_user() to memcpy_user(). Add memmove_user() and
...
userptr_add().
2007-01-12 03:14:15 +00:00
Michael Brown
859da6bd32
Allow external code to update hidden memory regions.
2007-01-12 03:13:04 +00:00
Michael Brown
687c1e3227
Nothing (not even hidemem.c) uses this file!
2007-01-12 02:45:46 +00:00
Michael Brown
39a8ed827c
Long since obsoleted by arch/i386/scripts/i386.lds
2007-01-12 02:43:10 +00:00
Michael Brown
2e088d9afc
Obsoleted by arch/i386/interface/pxe/pxe_call.c
2007-01-12 02:42:14 +00:00
Michael Brown
f81bf3bc52
We *do* have a __data16_array after all!
2007-01-12 02:37:47 +00:00
Michael Brown
e4c6418ac0
We may be required to page-align modules, so let's make sure we catch
...
it if we don't.
2007-01-12 00:09:16 +00:00
Michael Brown
f59ad50504
Provide registration mechanism for loaded images, so that we can e.g.
...
refer to them by name from the command line, or build them into a
multiboot module list.
Use setting image->type to disambiguate between "not my image" and "bad
image"; this avoids relying on specific values of the error code.
2007-01-11 23:43:29 +00:00
Michael Brown
f31d91bce5
Populate multiboot information structure before calling OS.
2007-01-11 21:21:02 +00:00
Michael Brown
ddbc60b5ae
Whoever put together the grub multiboot.h header is insane.
2007-01-11 21:20:27 +00:00
Michael Brown
200d92c76d
Avoid namespace clashes
2007-01-11 19:42:26 +00:00
Michael Brown
bcc98c78b8
Added fields present in the documentation but not in the header file.
2007-01-11 19:41:13 +00:00
Michael Brown
dc51af59a4
Capable of starting a multiboot kernel (albeit without the multiboot
...
information table yet).
2007-01-11 18:41:15 +00:00
Michael Brown
9196e9069c
Add PHYS_CODE, for use as in __asm__ ( PHYS_CODE ( ... ) ), comparable
...
to the REAL_CODE interface.
2007-01-11 18:40:46 +00:00
Michael Brown
d488a172eb
Capable of loading a multiboot image into memory
2007-01-11 17:44:42 +00:00
Michael Brown
143e3b84a4
Downloaded from current grub CVS.
2007-01-11 16:22:03 +00:00
Michael Brown
4fc9333159
Move include/image.h to include/gpxe/image.h
2007-01-11 16:04:36 +00:00
Michael Brown
7ad1c2eaa8
Removed the Etherboot-specific ELF-image code and replaced it with a
...
generic ELF loader, to be used by the multiboot code.
2007-01-11 14:44:03 +00:00
Michael Brown
3634e705b7
Remove osloader.c and replace with a prep_segment() that uses userptr_t
...
and get_memmap() in image/segment.c
2007-01-11 14:32:26 +00:00
Michael Brown
ceca6b185c
Added user_to_phys() and memset_user().
2007-01-11 14:27:27 +00:00
Michael Brown
c980cdd0aa
Move memmap.h out of arch/i386; it no longer contains anything
...
architecture-dependent and is needed by the ELF code.
2007-01-11 14:08:44 +00:00
Michael Brown
c6a4055fae
Add phys_to_user() and copy_user().
2007-01-11 14:01:20 +00:00
Michael Brown
e2dcd05b67
Update buffer-handling code to enable expandable buffers.
2007-01-11 03:50:47 +00:00
Michael Brown
fdc97499bf
Add device description fields to struct device.
2007-01-10 15:27:48 +00:00
Michael Brown
489a4004d7
Give UNDI device a more meaningful name.
2007-01-10 05:52:04 +00:00
Michael Brown
dad5274522
Add "name" field to struct device to allow human-readable hardware device
...
names.
Add "dev" pointer in struct net_device to tie network interfaces back to a
hardware device.
Force natural alignment of data types in __table() macros. This seems to
prevent gcc from taking the unilateral decision to occasionally increase
their alignment (which screws up the table packing).
2007-01-10 04:22:09 +00:00
Michael Brown
c65fae2475
Add RX quotas to the net device poll() method. This avoids the problem
...
of alloc_pkb() exhaustion when e.g. an iSCSI-booted DOS session is left
idle for a long time at the C:\ prompt and builds up a huge packet
backlog.
2007-01-09 21:47:01 +00:00
Michael Brown
18e5353bed
Rename pkb_available() to pkb_tailroom() for consistency with Linux's
...
skb_tailroom(). Add pkb_headroom().
2007-01-09 20:56:31 +00:00
Michael Brown
b7fcfe8ece
Added net device TX queue; this will be needed to support the PXE UNDI API
...
(which will need us to wait for TX completions).
Added debug autocolourisation to netdevice.c
2007-01-09 20:18:31 +00:00
Michael Brown
3c2cc59d25
Added ability to break ISR processing over several calls to poll().
...
This will allow us to implement RX quotas.
2007-01-09 17:04:10 +00:00
Michael Brown
aa7bda7b47
Send EOI after enabling interrupt, in case the device had asserted IRQ
...
to the PIC while it was disabled.
2007-01-09 14:53:19 +00:00
Michael Brown
a2ffe8c123
Allow boot sector to completely destroy real-mode stack, but still
...
manage to return control.
2007-01-09 14:13:59 +00:00
Michael Brown
a9369bb503
Leave protected-mode return address on PM stack when issuing a
...
real_call(), rather than moving it to the RM stack and back again.
This allows the real-mode function to completely destroy the stack
contents, provided that it manages to return to real_call().
2007-01-09 14:13:06 +00:00
Michael Brown
2738bdf74b
Obsoleted by drivers/net/undionly.c
2007-01-09 03:22:11 +00:00
Michael Brown
d606edb41d
Added UNDI root bus driver (which saves including all the PCI bus code,
...
UNDI ROM code etc. when you just want a "undi.kpxe"-type image).
This driver cannot be used in conjunction with any other driver (it will
crash), or in any other format than .kpxe (it just won't find any network
devices).
2007-01-09 03:20:22 +00:00
Michael Brown
159930862f
Added missing call to undinet_remove()
2007-01-09 03:08:01 +00:00
Michael Brown
6b09dd8244
undipci_probe() has to calculate busdevfn anyway, so we may as well pass
...
it directly to undi_load_pci().
2007-01-09 02:58:07 +00:00
Michael Brown
ed44e3730d
Avoid erasing non-existent signatures in undi_unload()
2007-01-09 02:53:24 +00:00
Michael Brown
a2be828a33
Avoid leaving preloaded_undi with invalid PXENV+/!PXE structure
...
addresses if the signature checks fail.
2007-01-09 02:52:28 +00:00
Michael Brown
697bcc9d24
Since we now always unload the base code stack (even if we keep UNDI),
...
we can never return to the PXE stack and must always use INT 18.
2007-01-09 02:46:58 +00:00
Michael Brown
f2f492a536
If preloaded device matches, use that rather than going via the UNDI
...
loader.
2007-01-09 02:32:06 +00:00
Michael Brown
2436dac281
Populate preloaded_undi device when applicable.
2007-01-09 02:29:54 +00:00
Michael Brown
937289cdc8
Provide storage for an undi_device structure representing the preloaded
...
UNDI stack.
2007-01-09 02:29:18 +00:00
Michael Brown
47222d5ed8
Call PXENV_UNDI_GET_NIC_TYPE to identify NIC physical device.
...
Record all information required for populating a struct undi_device.
Make debugging output more human-readable.
2007-01-09 01:42:28 +00:00
Michael Brown
cea2221737
Use fixed-width fields in struct undi_device, so that pxeprefix.S will be
...
able to populate the structure.
2007-01-09 01:41:26 +00:00
Michael Brown
fbdebac5f4
Copy pxelinux's shutdown sequence: use UNLOAD_STACK without STOP_BASE,
...
and call UNDI_SHUTDOWN first to make sure the NIC is in a safe state.
2007-01-08 05:06:26 +00:00
Michael Brown
8f8af10b22
New strategy: always stop both base code and UNDI. Always free base code
...
memory (unless we get an error while stopping the base code). Leave UNDI
resident (though stopped) for .kpxe.
Still need to add code to record the device identification parameters
prior to stopping UNDI.
2007-01-08 03:48:26 +00:00
Michael Brown
075d79f6d4
Checking in obsolete but working memory-scanning code just for the record
2007-01-08 03:45:00 +00:00
Michael Brown
67e824b539
Neaten up debug messages
2007-01-08 03:42:19 +00:00
Michael Brown
f08093b0d9
Remove spurious debug message
2007-01-08 03:37:32 +00:00
Michael Brown
f0edd11c7d
Now split out into undirom.c and undiload.c
2007-01-08 03:35:51 +00:00
Michael Brown
07e5d4e3dc
Added any-PCI-device UNDI driver
2007-01-08 03:34:47 +00:00
Michael Brown
66f7bcc785
Tidied up debug messages
2007-01-08 03:34:06 +00:00
Michael Brown
a6ba48e51e
Added debugging statements
2007-01-08 03:04:54 +00:00
Michael Brown
239965ff3b
Added missing includes
2007-01-08 03:03:42 +00:00
Michael Brown
6115356859
Added missing declarations
2007-01-08 02:51:27 +00:00
Michael Brown
aff96c13d2
Added missing include
2007-01-08 02:51:04 +00:00
Michael Brown
afc01a1a7f
Split UNDI load/unload out into undiload.c.
2007-01-08 02:48:17 +00:00
Michael Brown
359c888aec
Remove obsolete includes
2007-01-08 02:39:56 +00:00
Michael Brown
6fc75f659b
Separated out UNDI ROM location code into undirom.c, and use struct
...
undi_rom rather than struct pxe_driver. (This is part of the naming
consistency fixes).
2007-01-08 02:38:10 +00:00
Michael Brown
675fe200e5
Use "struct undi_device" instead of "struct pxe_device", and use the
...
function prefix "undinet_" and the variable name "undinic" in undinet.c,
so that we can reserve the variable name "undi" for a struct undi_device.
The idea is that we preserve the Etherboot 5.4 convention that the "UNDI"
code refers to our using an underlying UNDI stack, while the "PXE" code
refers to our providing a PXE API.
2007-01-08 02:24:53 +00:00
Michael Brown
36c1e1aa57
Renamed undi.c to undinet.c. (undi.c will become the UNDI PCI driver)
2007-01-08 02:02:07 +00:00
Michael Brown
234d81728a
Obsolete
2007-01-08 02:00:55 +00:00
Michael Brown
d3558fdd3a
Remove accidentally checked-in code
2007-01-07 19:05:28 +00:00
Michael Brown
85a41b25fe
Move START_UNDI, UNDI_STARTUP, UNDI_INITIALIZE and
...
UNDI_GET_INFORMATION calls into drivers/net/undi.c. undi_probe() now
gets given a pxe_device representing a PXE stack that has been loaded
into memory but not initialised in any way.
2007-01-07 19:02:17 +00:00
Michael Brown
23cb837951
Remember to enable/disable the interrupt at the PIC.
...
Handle failures in undi_open() properly.
2007-01-07 13:31:39 +00:00
Michael Brown
9ab5c0dde7
Remove redundant debug message
2007-01-05 16:15:50 +00:00
Michael Brown
fa9055197d
UNDI loader routine now works
2007-01-05 16:11:05 +00:00
Michael Brown
477a70697a
Added PnP BIOS scanning code, separated out from the UNDI driver
2007-01-05 16:10:03 +00:00
Marty Connor
7dee2556f4
Fixed typo
2007-01-05 16:09:47 +00:00
Michael Brown
9780fef360
Partial implementation of UNDI loader caller.
2007-01-05 03:24:39 +00:00
Michael Brown
0638945c7e
Add PXE driver-scanning code, capable of locating all PXE ROMs in a system
...
and matching them up to (e.g. PCI) devices.
2007-01-05 01:52:06 +00:00
Michael Brown
ef50ea0b2b
Renamed undi_net.c to undi.c.
2007-01-04 19:43:35 +00:00
Michael Brown
6cf488dcf7
Obsolete; net driver functionality is now in undi_net.c and bus driver
...
functionality is now in pxebus.c. (Not all bus functionality is ported
across yet.)
2007-01-04 19:42:05 +00:00
Michael Brown
7e07dfb2f4
Added PXE bus driver (with support only for using PXE structures found
...
lying about in memory, not for loading from ROM), and UNDI net driver.
2007-01-04 19:38:34 +00:00
Michael Brown
e28db95de6
Obsolete
2007-01-04 19:37:31 +00:00
Michael Brown
70acce06e4
This file is no longer used
2007-01-04 19:36:31 +00:00
Michael Brown
b12cd68726
Ripped out everything except the ability to send EOI to the PIC.
2007-01-04 19:36:18 +00:00
Michael Brown
de2fc50f4c
Add as a separate file so that we can do "make bin/xxxx.kpxe" rather than
...
having to edit PXELOADER_KEEP_ALL as a config option.
2007-01-04 19:35:10 +00:00
Michael Brown
290c5ee779
Don't automatically call gateA20_set() when returning from a real-mode
...
call.
2007-01-04 04:32:18 +00:00