summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* [efi] Provide component name protocol and device path protocol interfacesMichael Brown2009-01-122-22/+325
| | | | | | | | | | | | | | Include a minimal component name protocol so that the driver name shows up as something other than "<UNKNOWN>" in the driver list, and a device path protocol so that the network interface shows up as a separate device in the device list, rather than being attached directly to the PCI device. Incidentally, the EFI component name protocol reaches new depths for signal-to-noise ratio in program code. A typical instance within the EFI development kit will use an additional 300 lines of code to provide slightly less functionality than GNU gettext achieves with three additional characters.
* [efi] Ensure EFI ROM checksum is zeroMichael Brown2009-01-091-101/+60Star
| | | | | | | The UEFI specification does not mention ROM checksums, and reassigns the field typically used as a checksum byte. The UEFI shell "loadpcirom" utility does not verify ROM checksums, but it seems that some UEFI BIOSes do.
* [util] Tidy up output of disrom.plMichael Brown2009-01-091-21/+26
|
* [dhcp] Include gPXE version number within DHCP requestMichael Brown2009-01-084-10/+21
|
* [main] Print an "initialising devices" bannerMichael Brown2009-01-081-0/+3
| | | | | | | | | | | Some devices take a very long time to initialise. This can make it difficult to visually distinguish between the error cases of failing to start executing C code and failing to initialise a device. Add a "gPXE initialising devices..." message. The trailing ellipsis indicates to the user that this may take some time, and the presence of the message indicates to the developer that relocation etc. all succeeded.
* [efi] Add efirom utility and .efirom image formatMichael Brown2009-01-087-44/+939
|
* [efi] Allow for .efidrv images as well as .efi imagesMichael Brown2009-01-087-43/+172
| | | | | | Merge in the changes that allow for building EFI driver images (that can be loaded using the EFI shell's "load" command) as well as EFI applications.
* [efi] Use elf2efi utility in place of efilinkMichael Brown2009-01-0716-1258/+939Star
| | | | | | | | | | | elf2efi converts a suitable ELF executable (containing relocation information, and with appropriate virtual addresses) into an EFI executable. It is less tightly coupled with the gPXE build process and, in particular, does not require the use of a hand-crafted PE image header in efiprefix.S. elf2efi correctly handles .bss sections, which significantly reduces the size of the gPXE EFI executable.
* [build] Avoid strict-aliasing warnings when building with gcc 4.4Michael Brown2009-01-066-7/+6Star
| | | | | | | Conventional usage of the various struct sockaddr_xxx types involves liberal use of casting, which tends to trigger strict-aliasing warnings from gcc. Avoid these now and in future by marking all the relevant types with __attribute__((may_alias)).
* [efi] Inhibit harmless ld warning on unresolved symbol checkMichael Brown2009-01-052-2/+4
| | | | | | | | The check for unresolved symbols does not explicitly specify an output architecture format, and so causes a warning when building an i386 EFI binary on an x86_64 platform. This warning is harmless, and specifying the output architecture in multiple places is cumbersome, so just inhibit the warning.
* [infiniband] Call ib_open() only when opening the IPoIB net deviceMichael Brown2009-01-025-28/+60
| | | | | Defer the call to ib_open() until we want to actually open the device, rather than when the device is registered.
* [pcbios] Add additional sanity check for bogus e820 mapMarty Connor2008-12-181-0/+7
| | | | | | | | | | At POST time some BIOSes return invalid e820 maps even though they indicate that the data is valid. We add a check that the first region returned by e820 is RAM type and declare the map to be invalid if it is not. This extends the sanity checks from 8b20e5d ("[pcbios] Sanity-check the INT15,e820 and INT15,e801 memory maps").
* [etherfabric] Make use of pci_bar_start() 64-bit cleanMichael Brown2008-12-121-2/+3
| | | | | | | | Driver was storing the result of pci_bar_start() and pci_bar_size() in an int, rather than an unsigned long. (Bug was introduced in the vendor's tree in commit eac85cd "Port etherfabric driver to net_device api".)
* [pci] Enable memory cycles in adjust_pci_device()Michael Brown2008-12-121-1/+2
| | | | | | | adjust_pci_device() has historically enabled bus-mastering and I/O cycles, but has never previously needed to enable memory cycles. Some EFI systems seem not to enable memory cycles by default, so add that to the list of PCI command register bits that we force on.
* [e1000] Use PCI_BASE_ADDRESS_* symbols instead of integersMarty Connor2008-12-051-2/+2
| | | | | | | | | | | When compiling for the Linux kernel, PCI_BASE_ADDRESS_0 == 0, and PCI_BASE_ADDRESS_1 == 1. This is not so when compiling for gPXE. We must use the symbolic names rather than integers to get the correct values. Bug identified and patch supplied by: George Chou <george.chou@advantech.com>
* [x86_64] Add support for compilation as an x86_64 binaryMichael Brown2008-12-0534-51/+997
| | | | | | | | | | | | Currently the only supported platform for x86_64 is EFI. Building an EFI64 gPXE requires a version of gcc that supports __attribute__((ms_abi)). This currently means a development build of gcc; the feature should be present when gcc 4.4 is released. In the meantime; you can grab a suitable gcc tree from git://git.etherboot.org/scm/people/mcb30/gcc/.git
* [hermon] Fix permissions broken in 3a799e9 ("Add PCI ID for ConnectX QDR card")Michael Brown2008-12-051-0/+0
| | | | | | The patch file supplied for commit 3a799e9 ("[hermon] Add PCI ID for ConnectX QDR card") accidentally marked drivers/infiniband/hermon.c as being executable.
* [efi] Use EFI-native mechanism for accessing SMBIOS tableMichael Brown2008-12-0515-180/+376
| | | | | | EFI provides a copy of the SMBIOS table accessible via the EFI system table, which we should use instead of manually scanning through the F000:0000 segment.
* [efi] Allow use of EFI configuration tablesMichael Brown2008-12-052-4/+78
| | | | | | | EFI passes in copies of SMBIOS and other system configuration tables via the EFI system table. Allow configuration tables to be requested using a mechanism similar to the current method for requesting EFI protocols.
* [hermon] Add PCI ID for ConnectX QDR cardMichael Brown2008-12-041-0/+1
| | | | Patch provided by Itay Gazit <itaygazit@gmail.com>.
* [romprefix] Change from opt-in to opt-out when booting via INT19Michael Brown2008-12-041-3/+3
| | | | | | | | | | | | | | | | | | | On non-BBS systems, we have to hook INT 19 in order to be able to boot from the gPXE ROM at all. However, doing this unconditionally will prevent the user from booting via any other devices. Previously, the INT 19 entry point would prompt the user to press B in order to boot from gPXE, which makes it impossible to perform an unattended network boot. We now prompt the user to press N to skip booting from gPXE, which allows for unattended operation. This should be a better match for most real-world scenarios. Most modern systems support BBS and so are unaffected by this change. Very old (non-BBS) systems tend not to have PXE ROMs by default anyway; if the user has added a gPXE ROM then they probably do want to boot from the network. Newer non-BBS systems are essentially limited to IBM servers, which will recapture the INT 19 vector anyway and implement their own boot-ordering selection mechanism.
* [release] Update version to 0.9.6+ post releaseMarty Connor2008-11-231-1/+1
|
* [release] Update version to 0.9.6 for releasev0.9.6Marty Connor2008-11-231-2/+2
|
* [b44] Add driver for Broadcom bcm44xx cardsPantelis Koukousoulas2008-11-223-0/+1417
| | | | | | | | | | | | | | | | | | This driver is based on Stefan Hajnoczi's summer work, which is in turn based on version 1.01 of the linux b44 driver. I just assembled the pieces and fixed/added a few pieces here and there to make it work for my hardware. The most major limitation is that this driver won't work on systems with >1GB RAM due to the card not having enough address bits for that and gPXE not working around this limitation. Still, other than that the driver works well enough for at least 2 users :) and the above limitation can always be fixed when somebody wants it bad enough :) Signed-off-by: Pantelis Koukousoulas <pktoss@gmail.com>
* [netdevice] Kill off the various guess_boot_netdev() functionsMichael Brown2008-11-214-62/+5Star
| | | | | | | | Remove the assortment of miscellaneous hacks to guess the "network boot device", and replace them each with a call to last_opened_netdev(). It still isn't guaranteed correct, but it won't be any worse than before, and it will at least be consistent.
* [netdevice] Provide function to retrieve the most recently opened net deviceMichael Brown2008-11-212-0/+29
| | | | | | | | | | There are currently four places within the codebase that use a heuristic to guess the "boot network device", with varying degrees of success. Add a feature to the net device core to maintain a list of open network devices, in order of opening, and provide a function last_opened_netdev() to retrieve the most recently opened net device. This should do a better job than the current assortment of guess_boot_netdev() functions.
* [pxe] Select the correct network device on multiport cardsMichael Brown2008-11-211-2/+4
| | | | | When trying to find the "first open network device", it helps to actually check the NETDEV_OPEN flag.
* [aoe] Use an AoE config query to identify the target MAC addressMichael Brown2008-11-192-56/+173
| | | | | | | | | | | | | | | | The AoE spec does not specify that the source MAC address of a received packet actually matches the MAC address of the AoE target. In principle an AoE server can respond to an AoE request on any interface available to it, which may not be an address configured to accept AoE requests. This issue is resolved by implementing AoE device discovery. The purpose of AoE discovery is to find out which addresses an AoE target can use for requests. An AoE configuration command is sent when the AoE attach is attempted. The AoE target must respond to that configuration query from an interface that can accept requests. Based on a patch from Ryan Thomas <ryan@coraid.com>
* [blockdev] Move block device operations to structure block_device_operationsLaurent Vivier2008-11-195-20/+44
| | | | Signed-off-by: Laurent Vivier <Laurent.Vivier@bull.net>
* [virtio] Split virtio-net.c into several files.Laurent Vivier2008-11-195-207/+252
| | | | Signed-off-by: Laurent Vivier <Laurent.Vivier@bull.net>
* [virtio] Consolidate virtio-net static data into a struct vring_virtqueueLaurent Vivier2008-11-191-55/+64
| | | | Signed-off-by: Laurent Vivier <Laurent.Vivier@bull.net>
* [virtio] Remove dependency on nic for virtio PCI functionsLaurent Vivier2008-11-192-32/+32
| | | | Signed-off-by: Laurent Vivier <Laurent.Vivier@bull.net>
* [virtio] Consolidate vring_get_buf() by using a buffer list to add to the vringLaurent Vivier2008-11-192-41/+50
| | | | Signed-off-by: Laurent Vivier <Laurent.Vivier@bull.net>
* [virtio] Move virtio-pci.h and virtio-ring.h to include/gpxeLaurent Vivier2008-11-193-2/+2
| | | | Signed-off-by: Laurent Vivier <Laurent.Vivier@bull.net>
* [x86_64] Fix assorted 64-bit compilation errors and warningsMichael Brown2008-11-1916-70/+88
| | | | | | Remove various 32-bit assumptions scattered throughout the codebase. The code is still not necessarily 64-bit clean, but will at least compile.
* [build] Explicitly link efilink against -libertyMichael Brown2008-11-191-1/+1
| | | | | On some systems, libbfd is supplied only as a static library; linking will fail unless -liberty is also specified.
* [efi] Add efi_strerror()Michael Brown2008-11-199-31/+81
| | | | | | | | | EFI_STATUS is defined as an INTN, which maps to UINT32 (i.e. unsigned int) on i386 and UINT64 (i.e. unsigned long) on x86_64. This would require a cast each time the error status is printed. Add efi_strerror() to avoid this ickiness and simultaneously enable prettier reporting of EFI status codes.
* [i386] Move iSCSI and AoE boot code to arch/i386/interface/pcbiosMichael Brown2008-11-196-0/+0
|
* [i386] Change [u]int32_t to [unsigned] int, rather than [unsigned] longMichael Brown2008-11-1945-157/+157
| | | | | | This brings us in to line with Linux definitions, and also simplifies adding x86_64 support since both platforms have 2-byte shorts, 4-byte ints and 8-byte long longs.
* [libgcc] Make __libgcc architecture-specificMichael Brown2008-11-197-23/+25
|
* [i386] Rename __cdecl to __asmcallMichael Brown2008-11-1914-22/+32
| | | | | __cdecl is a misleading name, since it currently encapsulates both cdecl and regparm(0) attributes. Rename to __asmcall.
* [pxe] Move all PXE files to arch/i386Michael Brown2008-11-1810-0/+0
| | | | | The initial PXE implementation in Etherboot had the goal of being architecture-agnostic, but this goal has not been realised.
* [elf] Kill off unused <bits/elf.h> and <bits/elf_x.h> header filesMichael Brown2008-11-183-100/+0Star
|
* [efi] Update to latest UEFI headersMichael Brown2008-11-1826-1973/+1889Star
|
* [i386] Free allocated base memory on exit, if possibleMichael Brown2008-11-189-29/+133
| | | | | | | | | | | Code paths that automatically allocate memory from the FBMS at 40:13 should also free it, if possible. Freeing this memory will not be possible if either 1. The FBMS has been modified since our allocation, or 2. We have not been able to unhook one or more BIOS interrupt vectors.
* [r8169] New rtl8169 family driverMarty Connor2008-11-182-1070/+2595
| | | | | This is a completely rewritten version of the rtl8169 family driver using the gPXE driver API.
* [build] Fix calculation of _fileszMichael Brown2008-11-181-6/+6
| | | | | | _filesz was incorrectly forced to be aligned up to MAX_ALIGN. In a non-compressed build, this would cause a build failure unless _filesz happened to already be aligned to MAX_ALIGN.
* [build] Discard junk sections created by newer gcc versionsMichael Brown2008-11-182-0/+12
|
* [build] Keep gcc 4.4 happyMichael Brown2008-11-185-30/+49
| | | | | gcc 4.4 adds another few warnings, and also seems to complain if we place %ebp in the clobber list for any inline asm.
* [linda] Add missing copyright noticesMichael Brown2008-11-182-0/+34
|