Skip to content
Permalink
Branch: master
Commits on Jan 2, 2020
  1. [travis] Ensure that most recent tag is always available

    mcb30 committed Jan 2, 2020
    Remove clone depth limit, to ensure that the most recent tag (from
    which the version should be constructed) is always present.
    
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
  2. [build] Construct full version number automatically from git revision

    mcb30 committed Jan 2, 2020
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
Commits on Dec 15, 2019
  1. [peerdist] Allow for the use of a hosted cache server

    mcb30 committed Dec 15, 2019
    Allow a PeerDist hosted cache server to be specified via the
    ${peerhost} setting, e.g.:
    
      # Use 192.168.0.1 as hosted cache server
      set peerhost 192.168.0.1
    
    Note that this simply treats the hosted cache server as a permanently
    discovered peer for all segments.
    
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
Commits on Dec 13, 2019
  1. [peerdist] Allow PeerDist to be globally enabled or disabled

    mcb30 committed Dec 13, 2019
    Allow the use of PeerDist content encoding to be enabled or disabled
    via the ${peerdist} setting, e.g.:
    
      # Disable PeerDist
      set peerdist 0
    
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
Commits on Sep 29, 2019
  1. [lan78xx] Always enable automatic speed and duplex detection

    mcb30 committed Sep 29, 2019
    On devices with no EEPROM or OTP, the MAC_CR register defaults to not
    using automatic link speed detection, with the result that no packets
    are successfully sent or received.
    
    Fix by always enabling automatic speed and duplex detection, since
    iPXE provides no mechanism for manual configuration of either link
    speed or duplex.
    
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
Commits on Sep 15, 2019
  1. [efi] Do not attempt EFI_USB_IO_PROTOCOL transfers during shutdown

    mcb30 committed Sep 15, 2019
    On at least some platforms (observed with a Raspberry Pi), any attempt
    to perform USB transfers via EFI_USB_IO_PROTOCOL during EFI shutdown
    will lock up the system.  This is quite probably due to the already
    documented failure of all EFI timers when ExitBootServices() is
    called: see e.g. commit 5cf5ffe "[efi] Work around temporal anomaly
    encountered during ExitBootServices()".
    
    Work around this problem by refusing to poll endpoints if shutdown is
    in progress, and by immediately failing any attempts to enqueue new
    transfers.
    
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
  2. [efi] Report failed control transfers as expected by the USB core

    mcb30 committed Sep 15, 2019
    The USB core reuses the I/O buffer space occupied by the USB setup
    packet to hold the completion status for message transfers, assuming
    that the message() method will always strip the setup packet before
    returning.  This assumption is correct for all of the hardware
    controller drivers (XHCI, EHCI, and UHCI), since these drivers are
    able to enqueue the transfer as a separate action from waiting for the
    transfer to complete.
    
    The EFI_USB_IO_PROTOCOL does not allow us to separate actions in this
    way: there is only a single blocking method that both enqueues and
    waits for completion.  Our usbio driver therefore currently defers
    stripping the setup packet until the control endpoint is polled.
    
    This causes a bug if a message transfer is enqueued but never polled
    and is subsequently cancelled, since the cancellation will be reported
    with the I/O buffer still containing the setup packet.  This breaks
    the assumption that the setup packet has been stripped, and triggers
    an assertion failure in usb_control_complete().
    
    Fix by always stripping the setup packet in usbio_endpoint_message(),
    and adjusting usbio_control_poll() to match.
    
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
Commits on Aug 17, 2019
  1. [golan] Fix address-of-pointer bug for multicast attach/detach

    mcb30 committed Aug 17, 2019
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
  2. [ethernet] Avoid false positive Coverity warning

    mcb30 committed Aug 17, 2019
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
  3. [coverity] Override assumptions about wcrtomb() and hmac_init()

    mcb30 committed Aug 17, 2019
    Newer versions of Coverity use built-in models for wcrtomb() and
    hmac_init() that are capable of returning errors, and reports defects
    due to code failing to check for these errors.  The actual iPXE
    implementations are simpler than Coverity's models and can never
    return errors, so these defects are false positives.
    
    Fix by overriding Coverity's built-in models for these functions.
    
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
  4. [crypto] Profile the various stages of modular multiplication

    mcb30 committed Aug 17, 2019
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
  5. [crypto] Drag in configured digestInfo prefixes for any use of RSA

    mcb30 committed Aug 17, 2019
    Ensure that the configured RSA digestInfo prefixes are included in any
    build that includes rsa.o (rather than relying on x509.o or tls.o also
    being present in the final binary).
    
    This allows the RSA self-tests to be run in isolation.
    
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
Commits on Aug 16, 2019
  1. [tls] Add missing call to tls_tx_resume() when restarting negotiation

    mcb30 committed Aug 16, 2019
    The restart of negotiation triggered by a HelloRequest currently does
    not call tls_tx_resume() and so may end up leaving the connection in
    an idle state in which the pending ClientHello is never sent.
    
    Fix by calling tls_tx_resume() as part of tls_restart(), since the
    call to tls_tx_resume() logically belongs alongside the code that sets
    bits in tls->tx_pending.
    
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
  2. [peerdist] Limit number of concurrent raw block downloads

    mcb30 committed Aug 16, 2019
    Raw block downloads are expensive if the origin server uses HTTPS,
    since each concurrent download will require local TLS resources
    (including potentially large received encrypted data buffers).
    
    Raw block downloads may also be prohibitively slow to initiate when
    the origin server is using HTTPS and client certificates.  Origin
    servers for PeerDist downloads are likely to be running IIS, which has
    a bug that breaks session resumption and requires each connection to
    go through the full client certificate verification.
    
    Limit the total number of concurrent raw block downloads to ameliorate
    these problems.
    
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
  3. [peerdist] Start block download timers from within opener methods

    mcb30 committed Aug 16, 2019
    Move the responsibility for starting the block download timers from
    peerblk_expired() to peerblk_raw_open() and peerblk_retrieval_open(),
    in preparation for adding the ability to defer calls to
    peerblk_raw_open() via a block download queue.
    
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
  4. [process] Add PROC_INIT() for initialising static processes

    mcb30 committed Aug 16, 2019
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
Commits on Aug 2, 2019
  1. [build] Add predefined shortcut for Raspberry Pi builds

    mcb30 committed Aug 2, 2019
    Add a build shortcut "rpi", allowing for e.g.
    
      make CONFIG=rpi CROSS=aarch64-linux-gnu- bin-arm64-efi/rpi.efi
    
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
  2. [build] Move predefined all-drivers build shortcut to Makefile

    mcb30 committed Aug 2, 2019
    The (very approximate) split between Makefile.housekeeping and
    Makefile is that the former provides mechanism and the latter provides
    policy.
    
    Provide a section within Makefile as a home for predefined build
    shortcuts such as the existing all-drivers build.
    
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
Commits on Jul 22, 2019
  1. [build] Do not apply WORKAROUND_CFLAGS for host compiler

    mcb30 committed Jul 22, 2019
    The WORKAROUND_CFLAGS list is constructed based on running tests on
    the target compiler, and the results may not be valid for the host
    compiler.
    
    The only relevant workaround required for the host compiler is
    -Wno-stringop-truncation, which is needed to avoid a spurious compiler
    warning for a totally correct usage of strncpy() in util/elf2efi.c.
    
    Duplicating the workaround tests for the host compiler is messy, as is
    conditionally applying __attribute__((nonstring)).  Fix instead by
    disapplying WORKAROUND_CFLAGS for the host compiler, and using
    memcpy() with an explicitly calculated length instead of strncpy() in
    util/elf2efi.c.
    
    Reported-by: Ignat Korchagin <ignat@cloudflare.com>
    Reported-by: Christopher Clark <christopher.w.clark@gmail.com>
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
Commits on Jul 19, 2019
  1. [smscusb] Fetch MAC from device tree for Raspberry Pi Model B+

    mcb30 committed Jul 19, 2019
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
  2. [build] Add named configuration for Raspberry Pi

    mcb30 committed Jul 19, 2019
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
  3. [smsc95xx] Fetch MAC from device tree for Raspberry Pi

    mcb30 committed Jul 19, 2019
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
  4. [efi] Register a device tree if provided by the platform firmware

    mcb30 committed Jul 19, 2019
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
  5. [fdt] Add ability to parse a MAC address from a flattened device tree

    mcb30 committed Jul 19, 2019
    The Raspberry Pi NIC has no EEPROM to hold the MAC address.  The
    platform firmware (e.g. UEFI or U-Boot) will typically obtain the MAC
    address from the VideoCore firmware and add it to the device tree,
    which is then made available to subsequent programs such as iPXE or
    the Linux kernel.
    
    Add the ability to parse a flattened device tree and to extract the
    MAC address.
    
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
Commits on Jul 15, 2019
  1. [efi] Return only registered EFI devices from efidev_parent()

    mcb30 committed Jul 15, 2019
    efidev_parent() currently assumes that any device with BUS_TYPE_EFI is
    part of a struct efi_device.  This assumption is not valid, since the
    code in efi_device_info() may also create a device with BUS_TYPE_EFI.
    
    Fix by searching through the list of registered EFI devices when
    looking for a match, instead of relying on the bus type value.
    
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
Commits on Jul 14, 2019
  1. [arm] Provide dummy implementations for {in,out}[s]{b,w,l}

    mcb30 committed Jul 14, 2019
    It is currently not possible to build the all-drivers iPXE binaries
    for ARM, since there is no implementation for inb(), outb(), etc.
    
    There is no common standard for accessing I/O space on ARM platforms,
    and there are almost no ARM-compatible peripherals that actually
    require I/O space accesses.
    
    Provide dummy implementations that behave as though no device is
    present (i.e. ignore writes, return all bits high for reads).  This is
    sufficient to allow the all-drivers binaries to link, and should cause
    drivers to behave as though no I/O space peripherals are present in
    the system.
    
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
  2. [build] Fix use of inline assembly on GCC 8 ARM64 builds

    mcb30 committed Jul 14, 2019
    Commit 1a77466 ("[build] Fix use of inline assembly on GCC 4.8 ARM64
    builds") switched from using "%c0" to "%a0" in order to avoid an
    "invalid operand prefix" error on the ARM64 version of GCC 4.8.
    
    It appears that the ARM64 version of GCC 8 now produces an "invalid
    address mode" error for the "%a0" form, but is happy with the original
    "%c0" form.
    
    Switch back to using the "%c0" form, on the assumption that the
    requirement for "%a0" was a temporary aberration.
    
    Originally-fixed-by: John L. Jolly <jjolly@suse.com>
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
Commits on Apr 27, 2019
  1. [intelxl] Add driver for Intel 40 Gigabit Ethernet NIC virtual functions

    mcb30 committed Apr 24, 2019
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
  2. [intelxl] Choose to operate in non-PXE mode

    mcb30 committed Apr 24, 2019
    The physical function defaults to operating in "PXE mode" after a
    power-on reset.  In this mode, receive descriptors are fetched and
    written back as single descriptors.  In normal (non-PXE mode)
    operation, receive descriptors are fetched and written back only as
    complete cachelines unless an interrupt is raised.
    
    There is no way to return to PXE mode from non-PXE mode, and there is
    no way for the virtual function driver to operate in PXE mode.
    
    Choose to operate in non-PXE mode.  This requires us to trick the
    hardware into believing that it is raising an interrupt, so that it
    will not defer writing back receive descriptors until a complete
    cacheline (i.e. four packets) have been consumed.  We do so by
    configuring the hardware to use MSI-X with a dummy target location in
    place of the usual APIC register.
    
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
  3. [intelxl] Expose functions required by virtual function driver

    mcb30 committed Apr 24, 2019
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
  4. [intelxl] Allow for arbitrary placement of interrupt control register

    mcb30 committed Apr 24, 2019
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
  5. [intelxl] Split out ring creation from context programming

    mcb30 committed Apr 24, 2019
    The virtual function driver will use the same transmit and receive
    descriptor ring structures, but will not itself construct and program
    the ring context.  Split out ring creation and destruction from the
    programming of the ring context, to allow code to be shared between
    physical and virtual function drivers.
    
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
  6. [intelxl] Allow for arbitrary placement of ring tail registers

    mcb30 committed Apr 24, 2019
    The virtual function transmit and receive ring tail register offsets
    do not match those of the physical function.  Allow the tail register
    offsets to be specified separately.
    
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
  7. [intelxl] Use 32-byte receive descriptors

    mcb30 committed Apr 24, 2019
    The physical function driver does not allow the virtual function to
    request the use of 16-byte receive descriptors.  Switch to using
    32-byte receive descriptors.
    
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
  8. [intelxl] Provide a mechanism for handling "send to VF" events

    mcb30 committed Apr 24, 2019
    Provide a weak stub function for handling the "send to VF" event used
    for communications between the physical and virtual function drivers.
    
    Signed-off-by: Michael Brown <mcb30@ipxe.org>
Older
You can’t perform that action at this time.