Goldfish64 / AudioPkg

Audio stack for UEFI. Currently supports HD audio controllers/codecs. WIP
54 stars 10 forks source link

BootChimeDxe.efi prevents other EFI drivers after loading itself #17

Open MacNB opened 4 years ago

MacNB commented 4 years ago

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

MacNB commented 4 years ago

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); }

MacNB commented 4 years ago

See comment here by @Download-Fritz