[Barrelfish-users] [Barrelfish] Hagfish kernel image structure and latest version
David Cock
david.cock at inf.ethz.ch
Thu Apr 15 19:28:09 CEST 2021
I don't see anything that should cause a problem if you increase the
value. Did you do a clean build after changing it? I don't quite trust
the UEFI build system. What size did you set it to?
David
On 15/4/21 7:20 pm, David Cock wrote:
>
> 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
>
> _______________________________________________
> 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/b5d675ef/attachment-0001.html>
More information about the Barrelfish-users
mailing list