[Barrelfish-users] [Barrelfish] Hagfish kernel image structure and latest version
David Cock
david.cock at inf.ethz.ch
Thu Apr 15 19:20:50 CEST 2021
That's a bit odd. It ought to be as simple as increasing the size of
the table - I don't think there's anything fundamental about it. I'm
pretty sure I just wanted to avoid dynamic allocation at that point in
the code. Let me have a look at it.
David
On 15/4/21 6:08 pm, sebastian.scherbel at fau.de wrote:
> Hi,
>
> >The memory map is 17952B, but MEM_MAP_SIZE is 8192.
> > This is compile-time limit in Hagfish - please report this overflow,
> it's a bug.
>
> I have stumbled across a limitation in Hagfish. 8192B is not enough on
> a HPE Apollo 70 with 256 cores and 256 GB RAM and 374 entries of 48B
> each. I tried to just increase the value, but now I crash somewhere
> between exiting the UEFI boot services and jumping to my ELFs
> entrypoint. Without any output.
>
> Do you happen to have an educated guess what the problem could
> possibly be? I don't have a hardware debugger, unfortunately, which
> makes it somewhat challenging. And limits me to printk debugging.
>
> >We'd be happy to integrate a patch if you wanted to modify it.
> I'll do that after i have finished my project.
>
> Regards Sebastian
>
>
> Am Freitag, 12. März 2021, 12:08:39 MEZ hat David Cock
> <david.cock at inf.ethz.ch> Folgendes geschrieben:
>
>
> Sebastian
>
> It looks like what's going on is as Daniel described. Hagfish seems
> to use an API call (get_file_size) that's supported by EDK2, but not
> by many commercial offerings. I think it'd almost certainly be
> possible to update Hagfish such that it doesn't depend on it -
> something like preallocating a "reasonably-sized" buffer, and if it
> turns out it wasn't big enough trying again with a larger one. It's
> been a few years since I wrote this stuff, but I think you'll get back
> an EFI_BUFFER_TOO_SMALL if it was too small, and *BufferSize will be
> filled with the actual size so that you can reallocate the buffer.
> We'd be happy to integrate a patch if you wanted to modify it.
>
> David
>
> On 11/3/21 2:19 pm, Schwyn Daniel wrote:
>
> Hi Sebastian,
>
> David and I are both part of the Barrelfish core team at ETH so our
> setup is the same😉We do load Hagfish over PXE but as far as I know
> always directly with the PXE implementation in EDK2. Hagfish is
> theoretically designed to be flexible and cover as many EFI based boot
> environments as possible. In practice it’s only tested on the machines
> we have. Those are EDK2 based and the PXE implementation in there
> supports the two MTFTP opcodes we use. It should be possible to either
> implement support in iPXE or make Hagfish not use the get_file_size
> e.g. by allocating a large enough buffer and make sure the read_file
> doesn’t overflow it.
>
> Regards,
>
> Daniel
>
> *Von:*sebastian.scherbel at fau.de <mailto:sebastian.scherbel at fau.de>
> <sebastian.scherbel at fau.de> <mailto:sebastian.scherbel at fau.de>
> *Gesendet:* Mittwoch, 10. März 2021 16:38
> *An:* Schwyn Daniel <daniel.schwyn at inf.ethz.ch>
> <mailto:daniel.schwyn at inf.ethz.ch>
> *Cc:* barrelfish-users at lists.inf.ethz.ch
> <mailto:barrelfish-users at lists.inf.ethz.ch>
> *Betreff:* Re: AW: [Barrelfish-users] [Barrelfish] Hagfish kernel
> image structure and latest version
>
> Hi Daniel,
>
> thank you for your reply. That's what I already suspected.
>
> I'm waiting to hear back from David about his setup. He seemed quite
> sure that chainloading works, so I was a bit surprised that neither
> iPXE nor Grub did work for me on EDK2.
>
> Otherwise, I'll fix iPXE myself.
>
> Regards Sebastian
>
> Am Mittwoch, 10. März 2021, 10:59:48 MEZ hat Schwyn Daniel
> <daniel.schwyn at inf.ethz.ch <mailto:daniel.schwyn at inf.ethz.ch>>
> Folgendes geschrieben:
>
> Hi Sebastian,
>
> I have seen this error before with iPXE when I tried chainloading
> Hagfish with iPXE on top of U-Boot with EFI support. U-Boot’s EFI
> support is rather minimalistic so I’m not sure the cause was the same
> in my case. Looking at the iPXE source code though it looks to me as
> if it only supports the EFI_PXE_BASE_CODE_MTFTP_READ_FILE opcode while
> Hagfish also needs the EFI_PXE_BASE_CODE_MTFTP_GET_FILE_SIZE operation
> to allocate appropriately sized buffers for the files it wants to load.
>
> Regards,
>
> Daniel
>
> *Von:*Barrelfish-users <barrelfish-users-bounces at lists.inf.ethz.ch
> <mailto:barrelfish-users-bounces at lists.inf.ethz.ch>> *Im Auftrag von
> *sebastian.scherbel at fau.de <mailto:sebastian.scherbel at fau.de>
> *Gesendet:* Dienstag, 2. März 2021 22:56
> *An:* Cock David <david.cock at inf.ethz.ch <mailto:david.cock at inf.ethz.ch>>
> *Cc:* barrelfish-users at lists.inf.ethz.ch
> <mailto:barrelfish-users at lists.inf.ethz.ch>
> *Betreff:* Re: [Barrelfish-users] [Barrelfish] Hagfish kernel image
> structure and latest version
>
> Hello,
>
> >Hagfish definitely supports chainloading over PXE - that's exactly what it was designed for.
>
> Which bootloaders have you tested? What does your setup look like?
>
> I have tried:
>
> EDK2 -> iPXE -> Hagfish
>
> /iPXE> chain tftp://x.x.x.x/Hagfish_ETHZ.efi/
>
> /...
> Hagfish UEFI loader starting
> UEFI vendor: EDK II
> Hagfish loaded at 402D9000, size 147456B, by handle 41839B98
> Could not connect to shell or not enough parameters, assuming PXE boot.
> Connecting to the PXE service that loaded me.
> PXE loader at 403ED660, revision 10000, running
> Loading "hagfish.cfg.10.0.0.10"
> *Mtftp: Unsupported,
> file size: Unsupported*/
>
> EDK2 -> Grub2 -> Hagfish
>
> /grub> boot
> Status: 0x0000000E
> Failed to initialize ShellLib, aborting.
> Hagfish UEFI loader starting
> UEFI vendor: EDK II
> Hagfish loaded at 402DA000, size 147456B, by handle 41862A18
> Could not connect to shell or not enough parameters, assuming PXE boot.
> Connecting to the PXE service that loaded me.
> *OpenProtocol: Unsupported
> Failed to initialize loader: Load Error*/
>
> > The error there seems to be the UEFI implementation not supporting TFTP - did you
> compile it in?
>
> When I load Hagfish directly, everything works fine. On American
> Megatrends Aptio V and EDK2.
>
> Regards Sebastian
>
> Am Donnerstag, 28. Januar 2021, 16:36:02 MEZ hat David Cock
> <david.cock at inf.ethz.ch <mailto:david.cock at inf.ethz.ch>> Folgendes
> geschrieben:
>
> What you're seeing there is Hagfish trying to load its configuration
> file over TFTP as it's figured out that it was itself loaded over
> PXE. The README might be inconsistent wrt filenames - if in doubt,
> trust the code. Hagfish definitely supports chainloading over PXE -
> that's exactly what it was designed for.
>
> The error there seems to be the UEFI implementation not supporting
> TFTP - did you compile it in?
>
> David
>
> On 28/1/21 3:53 pm, sebastian.scherbel at fau.de
> <mailto:sebastian.scherbel at fau.de> wrote:
>
> Hello,
>
> sounds good. I have tried to chainload Hagfish after iPXE. However,
> loading of the cfg fails on QEMU and on the real hardware with the
> same error.
>
> /Hagfish UEFI loader starting
> UEFI vendor: American Megatrends
> Hagfish loaded at F951D000, size 143360B, by handle F6EA1D18
> Could not connect to shell or not enough parameters, assuming PXE boot.
> Connecting to the PXE service that loaded me.
> PXE loader at F5EE1840, revision 10000, running
> Loading "hagfish.cfg.A.B.C.D"*(shouldn't the cfg name be
> hafish.A.B.C.D.cfg according to the readme?)*
> *Mtftp: Unsupported, */
>
> */file size: Unsupported/*
>
> Is this a known bug? Is chainloading unsupported? Your setup is
> directly booting into Hagfish?
>
> Regards Sebastian
>
> Am Donnerstag, 28. Januar 2021, 14:03:36 MEZ hat David Cock
> <david.cock at inf.ethz.ch> <mailto:david.cock at inf.ethz.ch> Folgendes
> geschrieben:
>
> Sebastian,
>
> Hagfish is a custom loader for the Barrelfish CPU driver, which
> operates under a few unusual assumptions: Mainly, the CPU driver
> (kernel) itself is not self-relocating, but relies on the bootloader
> (Hagfish) to do the relocation for it.
>
> It would definitely be possible to modify Hagfish to load an arbitrary
> ELF, however. You'd have to make a few changes in the relocation code
> to not look for Barrelfish-specific segments and so on, but there's
> nothing particularly weird or non-standard about it.
>
> Hagfish is pretty static, and doesn't change much from version to
> version. We'll update the repository shortly (which we should have
> done together with the release). Feel free to ask more specific
> questions if you decide to use it - we're happy to help.
>
> David
>
> On 27/1/21 5:41 pm, sebastian.scherbel at fau.de
> <mailto:sebastian.scherbel at fau.de> wrote:
>
> Hello,
>
> I'm a CS student trying to port an research operating system from
> x86_64 to ARMv8 and stumbled across Hagfish.
>
> Hagfish should basically be able to load any ELF with its sections
> into memory with minor modifications? Or is there certain requirement
> for the kernel image structure that I didn't notice while reading your
> publication [1] and skimming the source code?
>
> The last commit in the public repository is from March 2017. But in
> the changelog of your last Barrelfish release from 2020 states "Update
> Hagfish to latest version". Have there been any bigger changes or
> improvements in the meantime?
>
> Regards Sebastian
>
> [0]
> https://lists.inf.ethz.ch/pipermail/barrelfish-users/2020-March/001597.html
> <https://lists.inf.ethz.ch/pipermail/barrelfish-users/2020-March/001597.html>
>
> [1] http://www.barrelfish.org/publications/TN-022-ARMv8.pdf
> <http://www.barrelfish.org/publications/TN-022-ARMv8.pdf>
>
> _______________________________________________
>
> Barrelfish-users mailing list
>
> Barrelfish-users at lists.inf.ethz.ch
> <mailto:Barrelfish-users at lists.inf.ethz.ch>
>
> https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users
> <https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users>
>
> _______________________________________________
> Barrelfish-users mailing list
> Barrelfish-users at lists.inf.ethz.ch
> <mailto:Barrelfish-users at lists.inf.ethz.ch>
> https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users
> <https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users>
>
> _______________________________________________
>
> Barrelfish-users mailing list
>
> Barrelfish-users at lists.inf.ethz.ch
> <mailto:Barrelfish-users at lists.inf.ethz.ch>
>
> https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users
> <https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users>
>
> _______________________________________________
> Barrelfish-users mailing list
> Barrelfish-users at lists.inf.ethz.ch
> <mailto:Barrelfish-users at lists.inf.ethz.ch>
> https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users
> <https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users>
>
>
> _______________________________________________
> Barrelfish-users mailing list
> Barrelfish-users at lists.inf.ethz.ch <mailto:Barrelfish-users at lists.inf.ethz.ch>
> https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users <https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users>
>
> _______________________________________________
> Barrelfish-users mailing list
> Barrelfish-users at lists.inf.ethz.ch
> https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.inf.ethz.ch/pipermail/barrelfish-users/attachments/20210415/8d64d3f1/attachment-0001.html>
More information about the Barrelfish-users
mailing list