Commit Graph

2352 Commits (3e781eb87f7b5bfa638f94234bb5e9d64508b0a4)

Author SHA1 Message Date
Michael Brown 7e8624a26f Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe 2007-12-15 19:37:44 +00:00
Michael Brown 5172d7b266 Autodetect whether or not we need to be using -fno-stack-protector. 2007-12-15 19:37:21 +00:00
Michael Brown 1d7974182e Overwrite the device descriptor's IRQ number with whatever the legacy
driver's probe() routine fills in in nic->irqno.  This is so that
non-interrupt-capable legacy drivers which set nic->irqno=0 will end
up reporting IRQ#0 via PXENV_UNDI_GET_INFORMATION; this in turn means
that the calling PXE NBP will (should) hook the timer interrupt, and
everything will sort of work.
2007-12-15 19:32:32 +00:00
Marty Connor bd2607305c Correct e1000 interrupt routine to enable on 1 disable on 0. duh.
The e1000_irq() routine should (per mcb30) do enable on non-zero,
disable on zero.  This is not consistent in all drivers, so I'll
wait to update it when doing a global sweep.
2007-12-13 11:20:45 -05:00
Marty Connor 1a867bfb39 Remove *_fill_nic() calls, and directly set nic->ioaddr and nic->irqno .
This needs to be done manually because if the irq() routine is
implemented then we want something like "nic->irqno = pci->irqno;",
else we do "nic->irqno = 0;" nic->ioaddr may also need to be set
carefully.

Also added local variables to end of many files, for emacs indentation
to match kernel style (tab does 8 space indent).
2007-12-13 11:08:40 -05:00
Michael Brown 9747c1a486 Remove the obsolete pre-aBFT AoE boot table. 2007-12-12 14:32:02 +00:00
Michael Brown 3ab571006e Yet another attempt to autodetect an appropriate "echo -e". 2007-12-07 14:25:02 -06:00
Michael Brown 27b414da81 Ignore .echocheck internal housekeeping file. 2007-12-08 00:51:24 +00:00
Michael Brown a8bddfe153 Another (hopefully more robust) attempt to find a usable substitute
for "echo -e" on the host system.
2007-12-08 00:50:57 +00:00
Michael Brown 2c7a9e803c Remove the (unused) option to override _prefix_link_addr,
_textdata_link_addr, _load_addr and _max_align in the linker scripts.
A bug in some versions of ld causes segfaults if the DEFINED() macro
is used in a linker script *and* the -Map option to ld is present.

We don't currently need to override any of these values; if we need to
do so in future then the solution will probably be to always specify
the values on the ld command line, and have the linker script not
define them at all.
2007-12-07 01:34:11 -06:00
Michael Brown cf895a8c7c Avoid Makefile syntax that requires make >= 3.81. 2007-12-07 04:14:06 +00:00
Michael Brown 3b58fc0baf Try to fix echo-detection to work on all systems that provide any
suitable "echo -e" substitute.
2007-12-07 03:35:32 +00:00
Michael Brown 1949641d10 Fix compiler warnings that appear only on OpenBSD. 2007-12-06 14:16:46 -06:00
Michael Brown 798f7f6b8e Kill off some warnings-problematic debug statements in ndp.c; the code
is non-functional anyway.
2007-12-07 01:51:08 +00:00
Michael Brown 6b0e147e0d Don't complain when callers provide too-short buffers for
PXENV_GET_CACHED_INFO.  NTLDR does this.
2007-12-07 01:06:37 +00:00
Michael Brown 698b5bc887 Fix a minor logical error in posix_io.c 2007-12-07 00:52:48 +00:00
Michael Brown df868476e7 Various warnings fixups for OpenBSD with gcc-3.3.5. 2007-12-07 00:11:43 +00:00
Michael Brown 64787bad29 Fix prototype mismatch. 2007-12-06 23:35:37 +00:00
Michael Brown be6ada2b7b Add missing format qualifier 2007-12-06 21:38:23 +00:00
Marty Connor 82a3e80645 Add copyright, clean up comments a bit, remove unnecessary code.
Cleanups for e1000.c.
2007-12-03 01:17:41 -05:00
Michael Brown 1de705e30f Reallocate memory for bitmaps only when necessary. 2007-11-29 19:10:10 +00:00
Michael Brown 423e9d72f3 udp_open_promisc() calls udp_open_common() with peer==NULL. 2007-11-28 11:56:14 +00:00
Michael Brown 3b1efba864 Add RFC2090 TFTP multicast support. 2007-11-28 10:57:26 +00:00
Michael Brown f770744ee0 Quick hack to be able to accept transfers from servers that don't
supply options.
2007-11-25 16:06:29 +00:00
Michael Brown 838ecba131 Provide individually cached constructed copies of DHCP packets via
PXENV_GET_CACHED_INFO.  If we dont do this, Altiris' NBP screws up; it
relies on being able to grab pointers to each of the three packets and
then read them at will later.
2007-11-22 04:43:11 +00:00
Michael Brown 3a2473f123 Do not fill in the BufferLimit field in struct
s_PXENV_GET_CACHED_INFO, because this field doesn't exist in earlier
versions of the PXE spec, and some callers don't allocate space for it.
2007-11-22 00:31:21 +00:00
Michael Brown b3abf25e3c Allow DHCP server to instruct gPXE to ignore ProxyDHCP (which will
also avoid waiting for ProxyDHCP offers).

Also reduce the ProxyDHCP timeout, because it's already irritating me.
2007-11-21 22:10:04 +00:00
Michael Brown 0becbf5fba Add ProxyDHCP support. 2007-11-21 21:51:43 +00:00
Marty Connor fa0bd77270 Added netdev_nullify to natsemi_remove() 2007-11-21 15:45:08 +00:00
Michael Brown de329a36d0 Removed old e1000 driver. 2007-11-21 15:37:58 +00:00
Michael Brown b53ee1eb16 Merge commit 'origin/mdc-working' 2007-11-21 15:35:08 +00:00
Michael Brown fb809da2df Remove some assumptions about DHCP obtaining only a single options block. 2007-11-21 04:48:18 +00:00
Michael Brown 8d18338ae7 Add PXE-required DHCP options to DHCPDISCOVER and DHCPREQUEST packets. 2007-11-21 03:57:30 +00:00
Michael Brown 26f3a09ccf Add UUID to DHCP request as option 97 (if available). 2007-11-21 03:29:53 +00:00
Marty Connor 2d60a3963f Fixed receive instability by not enabling interrupts. duh.
I have successfully booted DOS via iSCSI and PXELINUX via TFTP with this
version of the e1000 driver.
2007-11-20 21:33:42 -05:00
Michael Brown 899f5b8ab2 Added definition of a UUID and uuid_ntoa() (for debugging), and
implemented smbios_get_uuid().
2007-11-21 02:27:07 +00:00
Michael Brown 68c438954d Update SMBIOS internal API to be easier to use, and not to require
potentially exorbitant amounts of stack space.
2007-11-21 01:58:27 +00:00
Marty Connor 645a752bc2 This version now transmits and receives.
There may still be an issue with memory handling, since it seems to
die ungracefully when ARP packets come in after loading a kernel.
Something to debug.
2007-11-20 16:23:12 -05:00
Marty Connor 8973caa1e6 Autonegotiation fixes. NIC now autonegotiates to whatever the switch supports. 2007-11-20 12:06:22 -05:00
Marty Connor e41550b0ba A version of the new e1000 driver that transmits.
autonegotiation still needs work.  receive is not working yet.
2007-11-20 10:23:32 -05:00
Michael Brown 89eaab79c8 Replace "Etherboot" strings with "gPXE". 2007-11-20 02:00:54 +00:00
Michael Brown 6855c357a5 Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe 2007-11-19 20:14:49 +00:00
Michael Brown a1e243d504 Add bin/pci_VVVV_DDDD target to allow building ROM images without
needing to know the gPXE internal ROM name.
2007-11-19 20:14:20 +00:00
Marty Connor 8ce93f0876 Fix typo. 2007-11-18 11:12:54 -05:00
Marty Connor e21391d7b5 Add e1000 directory to build, since the driver compiles cleanly. 2007-11-18 10:57:20 -05:00
Marty Connor 8b0d86914b Rename e1000_main.c to e1000.c to so we can type 'make bin/e1000.dsk' instead of 'make bin/e1000_main.dsk' 2007-11-18 10:54:42 -05:00
Marty Connor 048a234dce Add errfile definition for new e1000.c 2007-11-18 10:45:20 -05:00
Marty Connor 0fea19c398 Introduce files for new e1000 driver 2007-11-18 10:31:00 -05:00
Marty Connor 2b8f77aca1 Add src/drivers/net/e1000 as home of new e1000 driver 2007-11-18 10:28:25 -05:00
Marty Connor 8564711c20 Move current e1000 driver files to e1000-old/ directory to avoid collisions 2007-11-18 09:58:28 -05:00
Marty Connor 8bd670301c Add ERRFILE information for e1000_main and e1000_hw, part of the new e1000 driver
It is likely we will rename e1000_main to e1000 when the new e1000 driver is debugged.
2007-11-18 09:51:21 -05:00
Marty Connor 9a4ed0f2d5 Remove unnecessary variable. 2007-11-18 03:11:02 -05:00
Michael Brown c194b0c4bf Work around a bug in the OpenSolaris iSCSI target.
We didn't specify values for MaxRecvDataSegmentLength and
MaxBurstLength (to save space, since we were happy with the
RFC-defined default values of 8kB and 256kB respectively).  However,
the OpenSolaris target (incorrectly) assumes default values of zero
for these parameters.

The upshot was that the OpenSolaris target would get stuck in an
endless loop trying to send us the first 512-byte sector, zero bytes
at a time, and would eventually run out of memory and core-dump.

Fixed by explicitly specifying the default values for these two
parameters.
2007-11-05 13:29:05 +00:00
Michael Brown 755cb8379d Allow space for the kernel's real-mode .bss. Previously we weren't
allowing any space for this, which makes it surprising that bzImage
loading ever worked.
2007-11-04 04:27:38 +00:00
Michael Brown c482fef058 Add missing attribute(packed) to two structures. 2007-10-29 21:22:00 +00:00
Michael Brown 82124ea688 Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe 2007-10-29 17:22:27 +00:00
Michael Brown 1620b3512c Merge branch '3leaf' 2007-10-29 17:21:58 +00:00
Michael Brown be7d32396f Added one more PCI ID 2007-10-22 16:24:09 +01:00
Michael Brown 338d45a61e Change ROM names to lower case. 2007-10-11 00:43:21 +01:00
Michael Brown 35ee7e4479 Ensure that empty e820 regions are skipped even at the end of the
memory map.  (We achieve this by setting CF on the last entry if it is
zero-length; this avoids the need to look ahead to see at each entry
if the *next* entry would be both the last entry and zero-length).

This fixes the "0kB base memory" error message upon starting Windows
2003 on a SunFire X2100.
2007-10-10 20:13:34 +01:00
Michael Brown e445c2c07c Ensure that empty e820 regions are skipped even at the end of the
memory map.  (We achieve this by setting CF on the last entry if it is
zero-length; this avoids the need to look ahead to see at each entry
if the *next* entry would be both the last entry and zero-length).

This fixes the "0kB base memory" error message upon starting Windows
2003 on a SunFire X2100.
2007-10-10 20:12:25 +01:00
Michael Brown 8069598a99 Add a missing PCI ID that is tested as working. 2007-10-10 02:07:18 +01:00
Michael Brown 9ac0377fbb Force a netdevice poll in net_tx() before attempting to transmit
packet, to work around the problem whereby small TX rings get backed
up because we haven't yet poll()ed for TX completions.
2007-10-04 14:57:33 +01:00
Michael Brown 2303c45d65 Force a netdevice poll in net_tx() before attempting to transmit
packet, to work around the problem whereby small TX rings get backed
up because we haven't yet poll()ed for TX completions.
2007-10-04 14:46:56 +01:00
Michael Brown 56550e400e Redefine bzimage_exec_context::mem_limit to be the highest permissible
byte, rather than the number of permissible bytes (i.e. subtract one
from the value under the previous definition to get the value under
the new definition).

This avoids integer overflow on 64-bit kernels, where
bzhdr.initrd_addr_max may be 0xffffffffffffffff; under the old
behaviour we set mem_limit equal to initrd_addr_max+1, which meant it
ended up as zero.  Kernel loads would fail with ENOBUFS.
2007-09-28 01:23:06 +01:00
Michael Brown 14fb6ba189 Quick and very dirty hack to get r8169 driver working again, prior to
any rewrite.
2007-09-26 17:58:51 +01:00
Michael Brown ed5ff61790 Standardise DBG_PRINTF()->DBG(), and remove custom definitions for
DBG_PRINTF() and assert().
2007-09-26 17:38:36 +01:00
Michael Brown 881dd8e102 Switch rm_ss and rm_sp back to being words; it'll make it less
confusing to read the code.
2007-09-25 20:16:32 +01:00
Michael Brown 42d96bcb07 Don't use the "rep ss movsb" trick to copy the RM stack to the PM
stack; it breaks vmxassist.
2007-09-25 20:14:20 +01:00
Michael Brown 0ed066bc50 rm_ss, rm_sp, and pm_esp don't need to be accessed from anywhere
outside of librm.S.
2007-09-25 19:20:38 +01:00
Michael Brown b8a8eea850 Minor refactoring to eliminate duplication. 2007-09-25 19:06:38 +01:00
Michael Brown dec325fe43 Use full protected mode for access to high memory within prefix, to
work around limitations in real-mode virtualisation support on Intel
VT-capable chips.
2007-09-25 18:01:15 +01:00
Michael Brown a7eee64506 Added more verbose memory-map debugging.
Added redundant call to get_memmap() in int13_boot() immediately
before jumping to boot sector, to assist in debugging.
2007-09-21 18:33:17 +01:00
Michael Brown 0979e674bb Added more verbose memory-map debugging.
Added redundant call to get_memmap() in int13_boot() immediately
before jumping to boot sector, to assist in debugging.
2007-09-21 18:27:51 +01:00
Michael Brown 44461b1854 Merge branch 'master' into 3leaf-delivery 2007-09-21 01:27:03 +01:00
Michael Brown 1e677b2024 Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe 2007-09-21 01:26:06 +01:00
Michael Brown 5793dbe96f Infinband requires longer link-layer addresses and headers than Ethernet. 2007-09-21 01:23:57 +01:00
Michael Brown 2ee76d0c93 Added defines for Infiniband files (which can't be committed to the
main tree yet, but reserving the error numbers now avoids problems later).
2007-09-21 01:19:04 +01:00
Michael Brown 1af346b531 Minor debug message improvement. 2007-09-21 01:17:46 +01:00
Michael Brown af303db75d Use RFC4390 whenever hardware address exceeds 16 bytes; this allows us
to construct DHCP packets suitable for Infiniband.
2007-09-21 01:15:58 +01:00
Michael Brown 9c264faa0c Add const attribute to byte-swapping functions 2007-09-21 01:15:06 +01:00
Michael Brown 7e3527a658 Don't get stuck in an infinite loop on negative integers! 2007-09-21 01:14:44 +01:00
Michael Brown db124b1255 Add fls() for non-constant values. 2007-09-21 01:14:38 +01:00
Michael Brown f09173326c Moved iobuf.h assertions outside the static inline functions, so that
the assert message's file and line number gives some clue as to the
real location of the problem.

Added similar assertions to list.h.
2007-09-21 01:13:22 +01:00
Michael Brown 0f60150c44 Reverted driver/net/mlx_ipoib to clean master state 2007-09-18 07:07:04 +01:00
Michael Brown 30717896f5 IB can't afford many RX buffers, because the MTU is so large. Reduce
the TCP window to compensate.
2007-09-18 07:02:41 +01:00
Michael Brown 2f23881856 Added arbel.c 2007-09-18 06:37:22 +01:00
Michael Brown 95498fa038 Remove the last remaining visible hack. 2007-09-18 06:26:31 +01:00
Michael Brown 982e4dd101 Separated out to a clean new drivers/infiniband directory. 2007-09-18 06:06:55 +01:00
Michael Brown a5ec029d24 First version that works with SELF_INIT! 2007-09-18 05:46:49 +01:00
Michael Brown 8423b0b109 Gets most of the way through initialisation. 2007-09-18 05:39:34 +01:00
Michael Brown def5ae9127 Added sw2hw_mpt 2007-09-18 04:45:55 +01:00
Michael Brown da014080f9 INIT_HCA block now matches. 2007-09-18 04:20:41 +01:00
Michael Brown 57bf8d9905 Seems to get through the ICM mapping process 2007-09-18 03:58:59 +01:00
Michael Brown 4ea6223f5a ICM allocation code in place; about to start test-and-compare runs. 2007-09-18 02:57:49 +01:00
Michael Brown f20cd6f721 ICM allocation code *should* now be complete. 2007-09-18 02:05:25 +01:00
Michael Brown af88f60228 Started with the ICM partitioning code. 2007-09-18 01:49:39 +01:00
Michael Brown c818d47e25 Restructured bits of initialisation (not testable at present) 2007-09-17 22:25:46 +01:00
Michael Brown dc3165b746 Starting the firmware directly now works. 2007-09-17 21:59:41 +01:00
Michael Brown 0f62bcaa77 Start migrating the remaining initialisation steps. 2007-09-17 21:14:09 +01:00