<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">If I `OvmfPkg/builds.sh qemu -usb -device usb-audio -device qemu-xhci` I see 2 USB handle?<div class=""><br class=""></div><div class="">When you open EXCLUSIVE you are kicking other people off the handles. I’m not sure that is a good idea for you to do that to every USB handle in the system. If there was a handle that represented a USB to USB bridge seems like you could kick all the children off….</div><div class=""><br class=""></div><div class="">So when you are probing try using GET_PROTOCOL, and only use EXCLUSIVE after you find the device you want to manage. </div><div class=""><br class=""></div><div class="">Thanks,</div><div class=""><br class=""></div><div class="">Andrew Fish<br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Jul 17, 2021, at 11:10 AM, Ethin Probst <<a href="mailto:harlydavidsen@gmail.com" class="">harlydavidsen@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta charset="UTF-8" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Thanks, Andrew. So it appears as though only a single handle exists</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">("AF: DevicePath(..)/Pci(0x1D,0x0)/USB(0x0,0x0)) USBIO") but my app is</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">getting two handles, one of which doesn't actually exist. I still am</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">unsure why though. Getting verbose info about handle AF yields an</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">interface with class 0x01, subclass 0x01, and protocol 0x04, so this</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">appears to match the USB audio control interface. However, no audio</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">streaming device is available, as I would expect. Attempting to set</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">the interface to `1` also fails on the UAC device (though the USB</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">specification does note that this is not necessarily an error and may</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">just indicate that that interface setting is not supported so my app</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">currently just continues on regardless). I am running with qemu args</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">`-usb -device usb-audio,... -audiodev ...`. I've tried with `-device</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">qemu-xhci ...` but I get the same result.</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">On 7/17/21, Andrew Fish <</span><a href="mailto:afish@apple.com" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">afish@apple.com</a><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">> wrote:</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br class=""><br class=""><blockquote type="cite" class="">On Jul 17, 2021, at 10:06 AM, Ethin Probst <<a href="mailto:harlydavidsen@gmail.com" class="">harlydavidsen@gmail.com</a>><br class="">wrote:<br class=""><br class="">Okay, so I just tried dh -v 7EDE4C18 (that was the handle that I'm<br class="">getting from `HandleBuffer()`) and it says "dh: Handle - '7EDE4C18'<br class="">not found". So I'm definitely confused because that's what<br class="">`HandleBuffer()` is getting me. Should I pre-allocate the buffer?<br class=""><br class=""></blockquote><br class="">Ethin,<br class=""><br class="">The UEFI Shell `dh` command  UI uses handle numbers from 0 - N as hex<br class="">digits. You have use these abstract values with the `dh` command. For<br class="">example:  use `dh -v A1` to see the actual handle value for A1 (7EBA9598).<br class="">You can search handles that contain a specific protocol...<br class=""><br class="">Shell> dh -p PciIo<br class="">Handle dump by protocol 'PCIIO'<br class="">A1: PCIIO DevicePath(PciRoot(0x0)/Pci(0x0,0x0))<br class="">A2: PCIIO DevicePath(PciRoot(0x0)/Pci(0x1,0x0))<br class="">A3: PCIIO DevicePath(PciRoot(0x0)/Pci(0x2,0x0))<br class="">A4: PCIIO DevicePath(..0)/Pci(0x2,0x0)/Pci(0x0,0x0))<br class="">A5: PCIIO DevicePath(..0)/Pci(0x2,0x0)/Pci(0x1,0x0))<br class="">A6: PCIIO DevicePath(..0)/Pci(0x2,0x0)/Pci(0x2,0x0))<br class="">A7: PCIIO DevicePath(..0)/Pci(0x2,0x0)/Pci(0x3,0x0))<br class="">A8: PCIIO DevicePath(..0)/Pci(0x2,0x0)/Pci(0x4,0x0))<br class="">A9: PCIIO DevicePath(..0)/Pci(0x2,0x0)/Pci(0x5,0x0))<br class="">AA: PCIIO DevicePath(PciRoot(0x0)/Pci(0x1E,0x0))<br class="">AB: DiskIO BlockIO FA920010-6785-4941-B6EC-498C579F160A PCIIO<br class="">DevicePath(..)/Pci(0x1E,0x0)/Pci(0x0,0x0))<br class="">AC: ISAACPI PCIIO DevicePath(PciRoot(0x0)/Pci(0x1F,0x0))<br class="">AD: PCIIO DevicePath(PciRoot(0x0)/Pci(0x1F,0x3))<br class="">Shell> dh -v A1<br class="">A1: 7EBA9598<br class="">PCIIO(7EBA8AA8)<br class=""> Segment #.....: 00<br class=""> Bus #.........: 00<br class=""> Device #......: 00<br class=""> Function #....: 00<br class=""> ROM Size......: 0<br class=""> ROM Location..: 00000000<br class=""> Vendor ID.....: 8086<br class=""> Device ID.....: 29C0<br class=""> Class Code....: 00 00 06<br class=""> Configuration Header :<br class="">      8680C029070000000000000600000000<br class="">      00000000000000000000000000000000<br class="">      000000000000000000000000F41A0011<br class="">      000000000000000000000000FF000000<br class="">DevicePath(7EBA9E18)<br class=""> PciRoot(0x0)/Pci(0x0,0x0)<br class=""><br class="">Thanks,<br class=""><br class="">Andrew Fish<br class=""><br class=""><blockquote type="cite" class="">On 7/17/21, Ethin Probst <<a href="mailto:harlydavidsen@gmail.com" class="">harlydavidsen@gmail.com</a>> wrote:<br class=""><blockquote type="cite" class="">I mean, possible... The code I'm using to initialize the handle buffer<br class="">is<br class="">this:<br class=""><br class="">```C<br class="">EFI_STATUS EFIAPI UefiMain(IN EFI_HANDLE imageHandle, IN<br class="">EFI_SYSTEM_TABLE*<br class="">st) {<br class="">Print(L"Attempting to find USB IO protocol\n");<br class="">UINTN numHandles = 0;<br class="">UINTN i = 0;<br class="">UINT32 UsbStatus = 0;<br class="">EFI_HANDLE* handles = NULL;<br class="">EFI_USB_IO_PROTOCOL* UsbIo = NULL;<br class="">EFI_STATUS status = st->BootServices->LocateHandleBuffer(ByProtocol,<br class="">&gEfiUsbIoProtocolGuid, NULL, &numHandles, &handles);<br class="">if (EFI_ERROR(status)) {<br class="">  Print(L"Cannot find any handles for USB devices, reason: %r\n",<br class="">status);<br class="">  return EFI_ABORTED;<br class="">}<br class="">Print(L"Found %d USB devices; enumerating\n", numHandles);<br class="">for (; i < numHandles; ++i) {<br class="">  Print(L"Trying to open handle %d (%x)... ", i, handles[i]);<br class="">  status = st->BootServices->OpenProtocol(handles[i],<br class="">&gEfiUsbIoProtocolGuid, (void**)&UsbIo, imageHandle, NULL,<br class="">EFI_OPEN_PROTOCOL_EXCLUSIVE);<br class="">  if (EFI_ERROR(status)) {<br class="">    Print(L"%r, skipping\n", status);<br class="">    continue;<br class="">  }<br class="">  // ...<br class="">```<br class="">I've done my best to follow SEI secure C coding standards, like<br class="">initializing all variables, regardless of type -- e.g. initializing<br class="">pointers to 0/NULL. But I will definitely try that idea.<br class=""><br class="">On 7/17/21, Andrew Fish <<a href="mailto:afish@apple.com" class="">afish@apple.com</a>> wrote:<br class=""><blockquote type="cite" class=""><br class=""><br class=""><blockquote type="cite" class="">On Jul 17, 2021, at 9:41 AM, Ethin Probst <<a href="mailto:harlydavidsen@gmail.com" class="">harlydavidsen@gmail.com</a>><br class="">wrote:<br class=""><br class="">Hey all,<br class=""><br class="">So my UsbAudio.efi app has hit a bit of a roadblock. This code:<br class=""><br class="">```C<br class=""> status = st->BootServices->OpenProtocol(handles[i],<br class="">&gEfiUsbIoProtocolGuid, (void**)&UsbIo, imageHandle, NULL,<br class="">EFI_OPEN_PROTOCOL_EXCLUSIVE);<br class=""> if (EFI_ERROR(status)) {<br class="">   Print(L"%r, skipping\n", status);<br class="">   continue;<br class=""> }<br class="">```<br class=""></blockquote><br class="">How are you constructing handle[]? Could it have gotten stale? You<br class="">could<br class="">print out the value of handle[I] on the failure.<br class=""><br class="">The contents of a handle are not defined, but the current<br class="">implementation<br class="">is<br class="">a pointer to an IHANDLE internal data structure in the DXE Core. If you<br class="">are<br class="">at the UEFI Shell and you `dh -v <handleNum> it will show the<br class=""><handleNum><br class="">and the value.<br class=""><br class="">Shell> dh -v 98<br class="">98: 6d5CF18<br class="">….<br class=""><br class="">I think you can `dh -p UsbIo’ to get the list of the UsbIo handles.<br class=""><br class="">So you can poke around and see what is happening on that handle.<br class=""><br class="">I guess the handle[] array could be getting corrupted? So you could<br class="">check<br class="">for that?<br class=""><br class="">Thanks,<br class=""><br class="">Andrew Fish<br class=""><br class=""><blockquote type="cite" class="">Is giving me EFI_INVALID_PARAMETER and I don’t know why. I don't think<br class="">I'm violating any of its constraints, according to the specification,<br class="">and I haven't touched this code since it was written. It also happens<br class="">irregularly: sometimes it happens on the USB audio streaming device,<br class="">or if I have a device plugged in it might happen on that device, you<br class="">get the idea. But it doesn't consistently fail. Does anybody have any<br class="">idea what's going on?<br class=""><br class="">--<br class="">Signed,<br class="">Ethin D. Probst<br class=""></blockquote><br class=""><br class=""></blockquote><br class=""><br class="">--<br class="">Signed,<br class="">Ethin D. Probst<br class=""><br class=""></blockquote><br class=""><br class="">--<br class="">Signed,<br class="">Ethin D. Probst<br class=""><br class=""><br class=""><br class=""><br class=""><br class=""></blockquote><br class=""><br class=""></blockquote><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">--<span class="Apple-converted-space"> </span></span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Signed,</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Ethin D. Probst</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class=""></span></div></blockquote></div><br class=""></div></body></html>


 <div width="1" style="color:white;clear:both">_._,_._,_</div> <hr>   Groups.io Links:<p>   You receive all messages sent to this group.    <p> <a target="_blank" href="https://edk2.groups.io/g/devel/message/77856">View/Reply Online (#77856)</a> |    |  <a target="_blank" href="https://groups.io/mt/84272862/1813853">Mute This Topic</a>  | <a href="https://edk2.groups.io/g/devel/post">New Topic</a><br>    <a href="https://edk2.groups.io/g/devel/editsub/1813853">Your Subscription</a> | <a href="mailto:devel+owner@edk2.groups.io">Contact Group Owner</a> |  <a href="https://edk2.groups.io/g/devel/unsub">Unsubscribe</a>  [edk2-devel-archive@redhat.com]<br> <div width="1" style="color:white;clear:both">_._,_._,_</div>