Devices with FMP instances below version 3 do not support a HardwareInstance so they can only support single device for each GUID. FMP implementations with versions below 3 that want to support multiple devices need to use multiple GUIDs. The ASSERT() is still be correct if there are multiple FMP instances with the same GUID and their version is below 3 that uses an assumed HardwareInstance of 0. Mike From: devel@edk2.groups.io On Behalf Of scott.wiginton@hpe.com Sent: Friday, October 18, 2019 2:52 PM To: Kinney, Michael D ; devel@edk2.groups.io Subject: Re: [edk2-devel] Recent changes to EsrtFmp causing ASSERTs Hi Michael, I'm not sure that I agree with your last statement. The says that HardwareInstance is "Only present in version 3 or higher" in reference to the EFI_FIRMWARE_IMAGE_DESCRIPTOR. Isn't that the point of the DescriptorVersion parameter in FMP.GetImageInfo? To know if that field is event valid or not. The function in question even looks at this passed in FW image descriptor version (though the parameter is called FmpVersion). The code just sets it to 0 if the FmpVersion is < 3. If one or more devices producing FMPs in the system do not support FW image descriptor 3 or later, then this will cause an ASSERT. Thanks, SWig