On Fri, Jan 20, 2017 at 4:13 AM, Ken Lin <ken....@hpe.com> wrote: > This RFC patchset is stacked on the previous HTTP boot patchset: > https://lists.gnu.org/archive/html/grub-devel/2016-12/msg00088.html > It re-uses some code from it, e.g. the DCHPACK > with vendor_class_identifier=HTTPClient. > > Instead of implementing HTTP and HTTPS boot totally from software, > UEFI firmware already defines APIs for HTTP(s). > Please check UEFI spec. 2.5 and plus for the detail: > > 28.6 EFI HTTP Protocols >
Without reviewing patches themselves - we usually prefer to rely on firmware as little as possible. We already have HTTP support, so what is missing in grub that requires what amounts to full re-implementation? Cannot we rather fix our HTTP support instead? This will automatically benefit all supported platforms, of which EFI is just one. > Then why two implementations? For older UEFI firmwares (UEFI 2.4 and older), > the HTTP(s) APIs are not available. In the case, > Grub can fall back to the software-based implementation. > In the first patch of this patchset, grub-core/net/drivers/efi/efihttp.c:76 > to 81 > is the code to query if the HTTP Protocol is supported by the UEFI firmware. > > This patchset was tested on QEMU+OVMF and it works flawlessly. > > The main goals of this RFC is to ask for opinions and suggestion to make > the first patch modularized as much as possible. > In the second patch, there is some codes related TCP re-transmission > that need to pass by for the HTTP Boot to work. > > More details are described in the logs of each patch. > > > Ken Lin (2): > net: add efihttp to do HTTP(S) Boot by UEFI HTTP Protocol > net: workaround to bypass corruption of the efihttp function pointer > > grub-core/Makefile.core.def | 1 + > grub-core/net/bootp.c | 6 + > grub-core/net/drivers/efi/efihttp.c | 386 > ++++++++++++++++++++++++++++++++++++ > grub-core/net/drivers/efi/efinet.c | 1 + > grub-core/net/net.c | 39 +++- > include/grub/efi/api.h | 17 ++ > include/grub/efi/http.h | 221 +++++++++++++++++++++ > include/grub/err.h | 3 +- > include/grub/net.h | 1 + > 9 files changed, 672 insertions(+), 3 deletions(-) > create mode 100755 grub-core/net/drivers/efi/efihttp.c > create mode 100755 include/grub/efi/http.h > > -- > 2.7.4 > > > _______________________________________________ > Grub-devel mailing list > Grub-devel@gnu.org > https://lists.gnu.org/mailman/listinfo/grub-devel _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel