Commit Graph

423 Commits

Author SHA1 Message Date
Michael Brown 2ac7694c3e Improve error reporting for strange length combinations reported by
the UNDI stack.

Ignore obviously invalid length combinations (as returned by
e.g. VMWare's PXE stack).

Limit to one packet per poll to avoid memory exhaustion.
2007-07-10 20:59:21 +01:00
Michael Brown efd322091d Set up %ds *before* testing a value in our data segment (d'oh!).
Always send EOI; do not chain to BIOS's default interrupt handler.
They are just too unpredictable; at least VMware's seems to kill the
machine if you go anywhere near it.

Disable interrupts after return from PXENV_UNDI_ISR, just in case some
dumb PXE stack enables them.
2007-07-10 17:08:32 +01:00
Michael Brown f6f9a3098d Report RX errors via netdev_rx_err() 2007-07-10 17:01:18 +01:00
Michael Brown fb16f90699 Dump first 64 bytes of chained ISR when debugging is enabled. 2007-07-10 16:57:55 +01:00
Michael Brown edc4648c39 Protect ISR against failure to unhook. 2007-07-10 04:34:53 +01:00
Michael Brown 4e14b020a5 Master IRQ should be EOIed first, I think. 2007-07-10 04:33:59 +01:00
Michael Brown 19871cbb96 We probably ought not to call INT13 with interrupts disabled. 2007-07-10 04:32:30 +01:00
Michael Brown 027fed72c1 Working code to call the PXE stack from within the ISR. 2007-07-10 04:21:24 +01:00
Michael Brown cd7e296cbe Always increase number of BIOS drives when registering 2007-07-09 20:42:04 +01:00
Michael Brown b90d321dfb Change %dl fixup rules for INT13:
INT 13,08 : read number of drives from 40:75
INT 13,15 : do nothing
all others : restore original value of %dl
2007-07-09 20:37:39 +01:00
Michael Brown c7d9fdb5b9 Proof of concept; works, but has several hard-coded hacks. 2007-07-09 20:28:40 +01:00
Michael Brown 8bce52d348 Set CF by default, clear on success (rather than clearing and setting
on failure).
2007-07-09 19:02:41 +01:00
Holger Lubitz 4ff85d9f15 Add -mpreferred-stack-boundary=2 to i386 CFLAGS as it's almost always a win. 2007-07-09 03:32:54 +01:00
Michael Brown 4c418d2100 Use net_device_operations structure and netdev_nullify() to allow for
safe dropping of the netdev ref by the driver while other refs still
exist.

Add netdev_irq() method.  Net device open()/close() methods should no
longer enable or disable IRQs.

Remove rx_quota; it wasn't used anywhere and added too much complexity
to implementing correct interrupt-masking behaviour in pxe_undi.c.
2007-07-07 16:43:39 +01:00
Holger Lubitz c7549bcebe convert to zalloc 2007-07-06 20:19:06 +02:00
Holger Lubitz bb61774ee4 convert to zalloc 2007-07-06 20:19:06 +02:00
Michael Brown 311637503d Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe 2007-07-06 13:31:58 +01:00
Michael Brown f660e8ef58 Add strlen_user() (will be needed for PXE API extensions) 2007-07-06 13:07:10 +01:00
Marty Connor 74a1c77820 Merge branch 'master' of /pub/scm/gpxe 2007-07-06 08:04:55 -04:00
Marty Connor 28d8d828b3 Rename .lilo extension to .lkrn and updated dependencies 2007-07-06 08:04:06 -04:00
Michael Brown 763a3eab8a Add .pdsk target (padded .dsk, suitable for qemu). 2007-07-05 23:37:17 +01:00
Michael Brown fbda4837b0 Allocate heap at first usage, rather than assuming we can fit it in
below _text.  This should help with the gPXE-on-gPXE-via-PXE case.
2007-07-05 22:30:34 +01:00
Michael Brown 07ea125213 Use partition type 0xeb ("EtherBoot"), to avoid any attempts to mount
the Etherboot partition.
2007-07-05 14:20:55 +01:00
Michael Brown 6e082c9b81 Add .usb target 2007-07-05 14:15:43 +01:00
Michael Brown a0f078d7f5 Working with multi-sector reads 2007-07-05 13:30:49 +01:00
Michael Brown 66208dd65d hdprefix that works for LBA only 2007-07-05 12:58:16 +01:00
Michael Brown 839960276d Miscellaneous efficiency improvements, and extend read_sectors to
handle multiple sectors.
2007-07-05 12:36:39 +01:00
Michael Brown 3c2d50e5de Added active partition locator, and simple MBR built using it. 2007-07-05 00:21:01 +01:00
Michael Brown 738ebaf4a5 Revert "Added master boot record capable of locating active partition"
This reverts commit 844d088c51.
2007-07-05 00:20:04 +01:00
Michael Brown 844d088c51 Added master boot record capable of locating active partition
(including logical partitions).
2007-07-05 00:05:26 +01:00
Michael Brown 5e3f2247e0 Kill off lots of warnings in via-velocity.c by correcting these definitions. 2007-07-04 23:36:16 +01:00
Michael Brown ac69b85adb UNDI loader entry point implemented; seems to work. 2007-07-04 03:23:02 +01:00
Michael Brown 1ecb9acb87 Fix typo 2007-07-04 02:25:07 +01:00
Michael Brown dca470cb21 Add (untested) UNDI loader C-level implementation. 2007-07-03 23:41:35 +01:00
Michael Brown 7db6b4b79c Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe 2007-07-03 23:10:16 +01:00
Michael Brown 89349d7fad Separated out initialisation functions from startup/shutdown functions. 2007-07-03 23:09:56 +01:00
Marty Connor 79238335b0 remove obsolete file: src/arch/i386/prefix/int19exit.c 2007-07-03 16:24:06 -04:00
Michael Brown cbd4542dc0 Merge branch 'master' of rom.etherboot.org:/pub/scm/gpxe 2007-07-03 21:09:26 +01:00
Marty Connor 9b3c4e4d79 Warnings purge: src/arch/i386, src/core/disk.c, ramdisk, autoboot 2007-07-03 16:02:15 -04:00
Michael Brown fae10a7ca1 We don't actually use the reset functions anywhere, and nothing really
provides them.
2007-07-03 20:34:51 +01:00
Michael Brown 2dc8ed1eb8 Work around Etherboot 5.4 bug when multiple packets are received. 2007-07-03 15:53:29 +01:00
Michael Brown 0958726ebb It's not just Etherboot that fails to generate TX completions. 2007-07-03 14:43:57 +01:00
Michael Brown adb3dd03e5 Document TX completion bug. 2007-07-03 13:17:58 +01:00
Michael Brown 071356d976 Ensure that pxe_netdev is set before starting up PXE NBP. 2007-07-03 00:02:26 +01:00
Michael Brown e42eba4af4 Use a common base-memory packet buffer for DHCP construction (as used
by PXE and NBI) and UNDI packets (as used by undinet and UNDI).
2007-07-02 18:33:41 +01:00
Michael Brown 5f17089b14 pxe_netdev now holds a reference to the network device.
Use generic fields in struct device_description rather than assuming
that the struct device * is contained within a pci_device or
isapnp_device; this assumption is broken when using the undionly
driver.

Add PXENV_UNDI_SET_STATION_ADDRESS.
2007-07-02 17:43:32 +01:00
Michael Brown d5451d210c Add ability to resolve relative symbols as well as locate absolute ones. 2007-06-30 22:59:15 +01:00
Michael Brown 8f6a4e8140 Add gdbsym.c object to help with running gdb-to-qemu 2007-06-30 22:43:31 +01:00
Michael Brown e1646b4080 Place the actual version string in .data16, rather than just the
pointer to it.
2007-06-30 21:36:54 +01:00
Michael Brown 8130443f9f Separate out pxe_start_nbp() from pxe_image.c into pxe_call.c
Implement PXENV_RESTART_TFTP.
2007-06-30 14:56:35 +01:00