Commit Graph

2306 Commits (af56768e98559ef0766e51c8e7a9eca1567720a9)

Author SHA1 Message Date
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
Michael Brown f3fcb53faf Don't use the mailboxless version of the HW2SW_CQ command; it seems to
crash the machine.
2007-09-17 19:47:19 +01:00
Michael Brown 12b4cb964b Removed more hacks, and adjusted number of queue entries for likely usage. 2007-09-17 19:17:55 +01:00
Michael Brown 11541b1e01 Remove hacks, and fix leaving the multicast GID. 2007-09-17 19:12:06 +01:00
Michael Brown 267a4483ab Added an almost obscene amount of debugging and assertion code while
tracking down a bug that turned out to be a free_iob() used where I
needed a netdev_tx_complete().  This left the freed I/O buffer on the
net device's TX list, with bad, bad consequences later.

Also fixed the bug in question.
2007-09-17 19:01:10 +01:00
Michael Brown 387a1a8556 Minor debug message improvement. 2007-09-17 18:57:32 +01:00
Michael Brown 2c56ede6f8 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-17 18:38:04 +01:00
Michael Brown bdac591726 Some interesting packet corruption happening now. 2007-09-17 13:31:13 +01:00
Michael Brown 2ed1acb9e9 Broadcast GID is now calculated by IPoIB layer. 2007-09-17 11:50:25 +01:00
Michael Brown 32a7bbb1e3 Cleaned up some debug messages. 2007-09-17 10:56:21 +01:00
Michael Brown ab191e45db Unicasts seem to be working. :) 2007-09-17 10:39:30 +01:00
Michael Brown 2209090120 Dead code disabling 2007-09-17 08:41:06 +01:00
Michael Brown b3d3814c17 Obtains a response to the get path record! 2007-09-17 08:36:56 +01:00
Michael Brown e05a8cd4de Use pkey table access to determine broadcast GID directly. 2007-09-17 06:35:21 +01:00
Michael Brown f6f1f2b7bb Prepare for adding a metadata queue to IPoIB 2007-09-17 06:12:33 +01:00
Michael Brown 440e7926fb Dead code removal 2007-09-17 05:12:47 +01:00
Michael Brown 4e78a53cf2 IPoIB code separated out to ipoib.c. 2007-09-17 05:04:58 +01:00
Michael Brown 67836430e6 Read port GID directly using MAD IFC. 2007-09-17 02:54:15 +01:00
Michael Brown 3c6a6bdc5d Multicast join now works. 2007-09-17 00:24:44 +01:00
Michael Brown 96d0c75c00 Now transmits packets on our own allocated IPoIB queue pair. :) 2007-09-16 22:53:57 +01:00
Michael Brown 4ddb6570f8 Almost working with own-queue allocation. 2007-09-16 22:47:45 +01:00
Michael Brown 7e85f0d296 create_qp() and destroy_qp() now written (but not tested). 2007-09-16 20:54:21 +01:00
Michael Brown 251cc84ed6 Started implementing create_qp() and destroy_qp(). 2007-09-16 19:03:24 +01:00
Michael Brown 83a6cc8c9b Don't get stuck in an infinite loop on negative integers! 2007-09-16 17:39:29 +01:00
Michael Brown 6d15a193aa Add fls() for non-constant values. 2007-09-16 17:36:40 +01:00
Michael Brown b21d4ca21e Revert to dev_priv/owner_priv scheme, rather than container_of; it
makes it easier to put the generic allocation code into infiniband.c
2007-09-16 17:25:15 +01:00
Michael Brown e238bb1e43 destroy_cq() now implemented (not tested). 2007-09-16 14:39:51 +01:00
Michael Brown 18edcf6634 create_cq() implemented (but not tested). 2007-09-16 14:18:17 +01:00
Michael Brown 725a574042 Match doorbell layout to expected usage. 2007-09-16 13:10:15 +01:00
Michael Brown 5a43293c38 Started to add code for CQ creation 2007-09-16 12:52:58 +01:00
Michael Brown 156b409ccc Rearrange data structures to maximise embedding (and hence minimise
the number of separate allocations that need to be done).
2007-09-16 04:02:20 +01:00
Michael Brown 791f992657 Command interface now reasonably friendly. 2007-09-16 03:13:25 +01:00
Michael Brown bf9bd93856 First (working) draft of command interface. 2007-09-16 01:44:57 +01:00
Michael Brown baa885ee8e Kill off more dead code. 2007-09-15 23:36:41 +01:00
Michael Brown 37fc40bc8c post_recv() now works, and we can pass data on the IPoIB queue pair
using entirely our own code.
2007-09-15 23:33:25 +01:00
Michael Brown 838b972cd3 Kill off some dead code 2007-09-15 21:26:14 +01:00
Michael Brown 31b82ea1dd Hack up IB structures at start-of-day, instead of on each use. 2007-09-15 21:23:34 +01:00
Michael Brown 8deef093d9 Direct polling of TX completion queue now works. 2007-09-15 20:58:29 +01:00
Michael Brown 687afdcdd9 Add const attribute to byte-swapping functions 2007-09-15 18:44:35 +01:00
Michael Brown 6a791649f0 Updated MLX_* accessor macros to use implicit type information. 2007-09-15 18:44:09 +01:00
Michael Brown a3a91fedc1 Started added poll_cq() verb.
Started reworking MLX_EXTRACT(), MLX_POPULATE() etc. to automatically
determine type information.
2007-09-15 15:40:35 +01:00
Michael Brown 37a036bd48 Map the whole of physical memory 2007-09-15 03:22:04 +01:00
Michael Brown 970951666f arbel_post_send() has been observed to transmit a packet! 2007-09-15 02:53:05 +01:00
Michael Brown 8b27da9de1 Gets a response out of the hardware. (An error completion, to be precise.) 2007-09-15 01:35:07 +01:00
Michael Brown 21d4ab3ce2 Prefix arbel-specific functions etc. with arbel_ 2007-09-15 00:27:09 +01:00
Michael Brown 38a73b55c4 Now at least compiles 2007-09-15 00:19:38 +01:00
Michael Brown 9d08b7c692 Starting to introduce an Infiniband device abstraction 2007-09-14 20:29:44 +01:00