Goldfish64 / AudioPkg

Audio stack for UEFI. Currently supports HD audio controllers/codecs. WIP

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

BootChimeDxe.efi prevents other EFI drivers after loading itself

MacNB opened this issue · comments

commented

I was testing NdkBootPicker.efi by adding it the end of Drivers list the OpenCore config.plist.
It was place after BootChimeDxe.efi.
But OC hangs.
I reported the issue to the author of NdkBootPicker here.

It transpires that the issue was not with the Boot Picker but with the boot chime EFI.
See the issue report in that link.

Basically, anything attempted to be loaded after bootchime efi, hangs the system.
BootChimeDxe.efi seems to leave "bomb" after loading.

Temporary Workaround:
Put BootChimeDxe.efi at the end of the Drivers list in OC config.plist

commented

Recompiled a debug version of AudioPkg
With other drivers listed AFTER BootChimeDxe.efi in OpenCore's config.plist, the system hangs and shows the following screen dump:

IMG_1604

This is the Function that is causing the ASSERT is IsDevicePathEnd

Here's code snippet that causing an ASSERT:

/**
Determines if a device path node is an end node of an entire device path.

Determines if a device path node specified by Node is an end node of an entire
device path. If Node represents the end of an entire device path, then TRUE is
returned. Otherwise, FALSE is returned.

If Node is NULL, then ASSERT().

@param Node A pointer to a device path node data structure.

@RetVal TRUE The device path node specified by Node is the end of an entire
device path.
@RetVal FALSE The device path node specified by Node is not the end of an
entire device path.

**/
BOOLEAN
EFIAPI
IsDevicePathEnd (
IN CONST VOID *Node
)
{
ASSERT (Node != NULL);
return (BOOLEAN) (IsDevicePathEndType (Node) && DevicePathSubType(Node) == END_ENTIRE_DEVICE_PATH_SUBTYPE);
}

commented

See comment here by @Download-Fritz