[gPXE-devel] [PULL] ipxe-sync

Marty Connor mdc at etherboot.org
Tue Jul 6 11:37:20 EDT 2010


Stefan Hajnoczi wrote on 7/6/10 4:33 AM:
> I have merged most commits from Michael Brown's tree.  It includes a
> revamp of the prefix code for better BIOS compatibility (at the same
> time memory restrictions are eliminated), the QLogic 7322 HCA
> infiniband driver, EFI updates, an accurate error code database which
> should replace contrib/errcode, and a number of bug fixes.

Stefan, thanks for creating this branch. It contains some nice 
enhancements and fixes. Thanks also to Michael for the work he put in 
on writing this code.

It is a good time to integrate these changes now that gPXE-1.0.1 is 
released, and before we start merging another round of GSoC work.

Since code review is central and important part of our development 
process I ask and encourage everyone to examine these commits and 
report any concerns that you may have about them to this list.

Given the source of most of the work, I expect most changes to be 
uncontroversial, but mistakes and unintended side-effects do happen 
even in well-written code, so let's take a careful look before we
commit it.

> If you run under KVM you will notice that it now takes longer to
> "gPXE initialising devices...". This performance regression is
> introduced by commit "[prefix] Use flat real mode for access to high
> memory" 5dfcac56. I haven't looked yet but suspect the root cause
> lies in KVM and not gPXE since -no-kvm avoids the slowdown.

Interesting.  I am curious about what causes this.  I think 
what we're seeing recently is that some operations that are 
relatively fast on real hardware are much mre expensive on emulated 
hardware. (we had some fun tuning the pcnet32 driver to avoid 
unnecessary register reads not long ago).

> Outstandinding commits for another pull:
> 
> [script] Accept "#!gpxe" as well as "#!ipxe" as a script magic marker
> 
>    I think gPXE should accept both #!gpxe and #!ipxe for compatibility.
>    Thoughts?

As long as we have script compatibility this makes sense to me.

> [tcp] Update received sequence number before delivering received data
> 
>    Piotr and Guo-Fu had a concern about this fix.  Comments?

I seem to recall some discussion about this on IRC.  I think we can 
hold off on this one until we do a bit more analysis.  
 

This may also be part of the TCP performance improvements Guo-fu is 
working on. Holding off for now on this fix seems fine, though we 
should note it so we don't forget.

> [interface]-related changes
> 
>    Haven't had time to look yet.

Josh may have some thoughts on these changes, since he has been doing 
work related to interfaces.  Josh?

> Possibly sync up baseXX encoding changes that differ in gPXE and iPXE.

I think Piotr said on IRC that these are alright.  Piotr?

> Without further ado, here are the details:
> 
> The following changes since commit e9d7419f1c4795e8c53630121cad86247ffa522f:
> 
>    [tls] Handle multiple handshake records (2010-06-29 08:07:02 +0100)
> 
> are available in the git repository at:
>    git://git.etherboot.org/scm/people/stefanha/gpxe.git ipxe-sync

gitweb convenience link:

http://git.etherboot.org/?p=people/stefanha/gpxe.git;a=shortlog;h=refs/heads/ipxe-sync

> Geoff Lywood (1):
>        [efi] Build iPXE script support into EFI binaries by default
> 
> Joshua Oreman (1):
>        [refcnt] Add ref_no_free handler
> 
> Michael Brown (40):
>        [romprefix] Remove .xrom prefix
>        [romprefix] Remove .hrom prefix
>        [prefix] Use flat real mode instead of real mode
>        [prefix] Use flat real mode for access to high memory
>        [prefix] Add .text16.early section
>        [prefix] Move flatten_real_mode to .text16.early
>        [prefix] Move flatten_real_mode to libflat.S
>        [prefix] Add A20-enabling code in libflat
>        [librm] Use libflat to enable A20 line on each real-to-protected transition
>        [relocate] Remove the even megabyte constraint
>        [prefix] Default to 1MB mark as fallback high memory load point
>        [romprefix] Provide indication of successful call to install_prealloc
>        [build] Generate random build identifier
>        [pcbios] Always show INT 15,88 result under DEBUG=memmap
>        [prefix] Use area at top of INT 15,88 memory map for temporary decompression
>        [romprefix] Split PMM allocations for image source and decompression area
>        [romprefix] Inhibit the use of relocation during POST
>        [main] Match "starting execution" and "initialising devices" message style
>        [build] Replace obsolete makerom.pl with quick script using Option::ROM
>        [romprefix] Add .mrom format, allowing loading of large ROMs
>        [build] Fix building with binutils 2.16
>        [lacp] Add simple LACP implementation
>        [pxe] Treat PXENV_RESTART_TFTP as unreturnable
>        [qib7322] Add support for QLogic 7322 HCA
>        [build] Inhibit "skipping incompatible" message from ld
>        [build] Add rtl8139.rom to the default build target list
>        [build] Remove PACKED macro
>        [efi] Synchronise EFI header files
>        [legal] Add FILE_LICENCE declarations to EFI header files
>        [efi] Tidy up output of EFI header import script
>        [pxe] Remove obsolete pxe_errortab.c
>        [qib7322] Fix whitespace errors
>        [process] Hold reference to process during call to step()
>        [libc] Enable automated extraction of error usage reports
>        [errdb] Add errdb.pl script to build error database
>        [refcnt] Add ref_init() wrapper function
>        [retry] Add timer_init() wrapper function
>        [retry] Use start_timer_fixed() instead of direct timeout manipulation
>        [build] Avoid hard-coding the path to perl
>        [romprefix] Do not check for BBS compatibility
> 
> Shao Miller (1):
>        [qib7322] Fix uninitialized variables warning
> 
>   contrib/errdb/.gitignore                           |    1 +
>   contrib/errdb/errdb.pl                             |  108 +
>   src/Makefile                                       |   18 +-
>   src/Makefile.housekeeping                          |   68 +-
>   src/arch/i386/Makefile.pcbios                      |   17 +-
>   src/arch/i386/core/relocate.c                      |   56 +-
>   src/arch/i386/drivers/net/undiload.c               |   10 -
>   src/arch/i386/firmware/pcbios/gateA20.c            |  176 -
>   src/arch/i386/firmware/pcbios/memmap.c             |   10 +-
>   src/arch/i386/image/nbi.c                          |    7 -
>   src/arch/i386/include/gateA20.h                    |    7 -
>   src/arch/i386/include/librm.h                      |    5 -
>   src/arch/i386/include/pxe.h                        |    8 +-
>   src/arch/i386/include/pxe_api.h                    |  104 +-
>   src/arch/i386/include/pxe_call.h                   |    4 +
>   src/arch/i386/include/pxe_types.h                  |    4 +-
>   src/arch/i386/include/registers.h                  |   24 +-
>   src/arch/i386/interface/pxe/pxe_call.c             |   10 +
>   src/arch/i386/interface/pxe/pxe_errors.c           |  103 -
>   src/arch/i386/interface/pxe/pxe_preboot.c          |   10 +-
>   src/arch/i386/interface/pxeparent/pxeparent.c      |   10 -
>   src/arch/i386/prefix/hromprefix.S                  |   12 -
>   src/arch/i386/prefix/libprefix.S                   |  436 +-
>   src/arch/i386/prefix/mromprefix.S                  |  428 ++
>   src/arch/i386/prefix/romprefix.S                   |  676 +--
>   src/arch/i386/prefix/undiloader.S                  |    1 +
>   src/arch/i386/prefix/xromprefix.S                  |    9 -
>   src/arch/i386/scripts/i386.lds                     |   30 +-
>   src/arch/i386/transitions/libflat.S                |  419 ++
>   src/arch/i386/transitions/librm.S                  |   40 +-
>   src/arch/x86/scripts/efi.lds                       |    2 +
>   src/config/defaults/efi.h                          |    1 +
>   src/core/downloader.c                              |    2 +-
>   src/core/hw.c                                      |    1 +
>   src/core/image.c                                   |    2 +-
>   src/core/main.c                                    |    4 +-
>   src/core/posix_io.c                                |    2 +-
>   src/core/process.c                                 |    2 +
>   src/core/proto_eth_slow.c                          |  406 --
>   src/core/refcnt.c                                  |   12 +
>   src/core/resolv.c                                  |    3 +
>   src/doxygen.cfg                                    |    1 -
>   src/drivers/block/srp.c                            |    1 +
>   src/drivers/infiniband/qib7322.c                   | 2433 +++++++
>   src/drivers/infiniband/qib7322.h                   |  364 +
>   src/drivers/infiniband/qib_7322_regs.h             | 7261 ++++++++++++++++++++
>   src/drivers/net/ipoib.c                            |    6 +-
>   src/hci/strerror.c                                 |   34 +-
>   src/hci/wireless_errors.c                          |  164 +-
>   src/image/embedded.c                               |   12 +-
>   src/image/segment.c                                |   25 +-
>   src/include/compiler.h                             |    3 -
>   src/include/errno.h                                |  567 ++-
>   src/include/gpxe/efi/Base.h                        |   12 +
>   src/include/gpxe/efi/Guid/HiiFormMapMethodGuid.h   |    2 +
>   src/include/gpxe/efi/Guid/PcAnsi.h                 |    2 +
>   src/include/gpxe/efi/Guid/SmBios.h                 |    2 +
>   src/include/gpxe/efi/Guid/WinCertificate.h         |    2 +
>   src/include/gpxe/efi/Ia32/ProcessorBind.h          |    2 +
>   src/include/gpxe/efi/IndustryStandard/Pci22.h      |    2 +
>   src/include/gpxe/efi/IndustryStandard/PeImage.h    |    2 +
>   src/include/gpxe/efi/Pi/PiBootMode.h               |    2 +
>   src/include/gpxe/efi/Pi/PiDependency.h             |    2 +
>   src/include/gpxe/efi/Pi/PiDxeCis.h                 |    2 +
>   src/include/gpxe/efi/Pi/PiFirmwareFile.h           |    2 +
>   src/include/gpxe/efi/Pi/PiFirmwareVolume.h         |    2 +
>   src/include/gpxe/efi/Pi/PiHob.h                    |    2 +
>   src/include/gpxe/efi/Pi/PiMultiPhase.h             |    2 +
>   src/include/gpxe/efi/Pi/PiS3BootScript.h           |    2 +
>   src/include/gpxe/efi/Pi/PiStatusCode.h             |    2 +
>   src/include/gpxe/efi/PiDxe.h                       |    3 +-
>   src/include/gpxe/efi/ProcessorBind.h               |    5 +
>   src/include/gpxe/efi/Protocol/ComponentName2.h     |    2 +
>   src/include/gpxe/efi/Protocol/Cpu.h                |    2 +
>   src/include/gpxe/efi/Protocol/CpuIo.h              |    2 +
>   src/include/gpxe/efi/Protocol/CpuIo2.h             |    2 +
>   src/include/gpxe/efi/Protocol/DebugSupport.h       |    2 +
>   src/include/gpxe/efi/Protocol/DevicePath.h         |    2 +
>   src/include/gpxe/efi/Protocol/DriverBinding.h      |    2 +
>   .../gpxe/efi/Protocol/NetworkInterfaceIdentifier.h |    2 +
>   src/include/gpxe/efi/Protocol/PciIo.h              |    2 +
>   src/include/gpxe/efi/Protocol/PciRootBridgeIo.h    |    2 +
>   src/include/gpxe/efi/Protocol/SimpleNetwork.h      |    2 +
>   src/include/gpxe/efi/Protocol/SimpleTextIn.h       |    2 +
>   src/include/gpxe/efi/Protocol/SimpleTextOut.h      |    2 +
>   src/include/gpxe/efi/Uefi.h                        |    2 +
>   src/include/gpxe/efi/Uefi/UefiBaseType.h           |    2 +
>   src/include/gpxe/efi/Uefi/UefiGpt.h                |    2 +
>   .../gpxe/efi/Uefi/UefiInternalFormRepresentation.h |    2 +
>   src/include/gpxe/efi/Uefi/UefiMultiPhase.h         |    2 +
>   src/include/gpxe/efi/Uefi/UefiPxe.h                |    2 +
>   src/include/gpxe/efi/Uefi/UefiSpec.h               |    3 +-
>   src/include/gpxe/efi/X64/ProcessorBind.h           |    2 +
>   src/include/gpxe/efi/efi.h                         |   13 +-
>   src/include/gpxe/efi/import.pl                     |   89 +-
>   src/include/gpxe/errfile.h                         |    2 +
>   src/include/gpxe/errortab.h                        |    5 +
>   src/include/gpxe/eth_slow.h                        |  255 +
>   src/include/gpxe/ieee80211.h                       |    1 +
>   src/include/gpxe/net80211_err.h                    |  633 ++
>   src/include/gpxe/refcnt.h                          |   36 +
>   src/include/gpxe/retry.h                           |   12 +
>   src/net/80211/net80211.c                           |   56 +-
>   src/net/80211/sec80211.c                           |   16 +-
>   src/net/aoe.c                                      |    4 +-
>   src/net/dhcppkt.c                                  |    1 +
>   src/net/eth_slow.c                                 |  267 +
>   src/net/ethernet.c                                 |    3 +
>   src/net/infiniband.c                               |   12 +-
>   src/net/infiniband/ib_cmrc.c                       |    1 +
>   src/net/infiniband/ib_mi.c                         |    2 +-
>   src/net/infiniband/ib_srp.c                        |   13 +-
>   src/net/ipv4.c                                     |    5 +-
>   src/net/netdevice.c                                |   22 +-
>   src/net/tcp.c                                      |    6 +-
>   src/net/tcp/ftp.c                                  |    2 +-
>   src/net/tcp/http.c                                 |    2 +-
>   src/net/tcp/iscsi.c                                |   57 +-
>   src/net/tls.c                                      |    2 +-
>   src/net/udp.c                                      |    1 +
>   src/net/udp/dhcp.c                                 |    8 +-
>   src/net/udp/dns.c                                  |    3 +-
>   src/net/udp/slam.c                                 |    6 +-
>   src/net/udp/tftp.c                                 |   77 +-
>   src/usr/iwmgmt.c                                   |   18 -
>   src/util/.gitignore                                |    1 +
>   src/util/Option/ROM.pm                             |    3 +-
>   src/util/einfo.c                                   |  167 +
>   src/util/fixrom.pl                                 |   34 +
>   src/util/makerom.pl                                |  232 -
>   src/util/zbin.c                                    |   61 +-
>   131 files changed, 13953 insertions(+), 2389 deletions(-)
>   create mode 100644 contrib/errdb/.gitignore
>   create mode 100755 contrib/errdb/errdb.pl
>   delete mode 100644 src/arch/i386/firmware/pcbios/gateA20.c
>   delete mode 100644 src/arch/i386/include/gateA20.h
>   delete mode 100644 src/arch/i386/interface/pxe/pxe_errors.c
>   delete mode 100644 src/arch/i386/prefix/hromprefix.S
>   create mode 100644 src/arch/i386/prefix/mromprefix.S
>   delete mode 100644 src/arch/i386/prefix/xromprefix.S
>   create mode 100644 src/arch/i386/transitions/libflat.S
>   delete mode 100644 src/core/proto_eth_slow.c
>   create mode 100644 src/drivers/infiniband/qib7322.c
>   create mode 100644 src/drivers/infiniband/qib7322.h
>   create mode 100644 src/drivers/infiniband/qib_7322_regs.h
>   create mode 100644 src/include/gpxe/eth_slow.h
>   create mode 100644 src/include/gpxe/net80211_err.h
>   create mode 100644 src/net/eth_slow.c
>   create mode 100644 src/util/einfo.c
>   create mode 100755 src/util/fixrom.pl
>   delete mode 100755 src/util/makerom.pl



More information about the gPXE-devel mailing list