<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=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Apr 13, 2021, at 9:53 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="">Would it be possible for us to conduct discussion on the UEFI talkbox?</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="">I don't mind using email, but things could definitely get moving</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="">quicker over there (though its not a requirement obviously).</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=""></div></blockquote><div><br class=""></div><div>Sure, don’t think I’ve really used that but as long as I get pointed int he right direction I can make it work.</div><div><br class=""></div><div>For a device driver the general UEFI model is for the Entry point of the driver to publish a <span style="background-color: rgb(255, 255, 255);" class=""><font color="#24292e" face="SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace" class=""><span style="caret-color: rgb(36, 41, 46); white-space: pre;" class="">EFI_DRIVER_BINDING_PROTOCOL[1]. The Supported() function matches on the PCI devices. The Start() function installs the Protocols to do work, and the Stop() undoes the Start(). </span></font></span></div><div><br class=""></div><div>Mike Kinney started this back in the day and it describes how to write UEFI drivers: <a href="https://github.com/tianocore/tianocore.github.io/wiki/UEFI-Driver-Writer%27s-Guide" class="">https://github.com/tianocore/tianocore.github.io/wiki/UEFI-Driver-Writer%27s-Guide</a></div><div><br class=""></div><div><span style="caret-color: rgb(36, 41, 46); color: rgb(36, 41, 46); font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; white-space: pre; background-color: rgb(255, 255, 255);" class="">[1]</span><font color="#24292e" face="SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace" class=""><span style="caret-color: rgb(36, 41, 46); white-space: pre;" class=""><a href="https://github.com/tianocore/edk2/blob/master/MdePkg/Include/Protocol/DriverBinding.h#L157" class="">https://github.com/tianocore/edk2/blob/master/MdePkg/Include/Protocol/DriverBinding.h#L157</a></span></font></div><div><br class=""></div><div>Thanks,</div><div><br class=""></div><div>Andrew Fish</div><br class=""><blockquote type="cite" class=""><div 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="">Here's how I generally envision the driver functioning:</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="">1. Firmware/platform code calls InitaudioOutput() or something like</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="">it. This function scans the PCIe bus and scans for one of the</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="">following:</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="">- Vendor ID 0x1AF4, device ID 0x1059: VirtIO sound 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="">- PCI class 0x0C, subclass 0x03, program interface 0x30 or 0x40: for</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 audio interface (I'm only thinking of targeting XHCI and USB 4,</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="">and not UHCI, OHCI or EHCI). But maybe EDK2 will take that out of my</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="">hands. If so, it will make things easier.</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="">- For USB audio devices I'm not quite sure what to look for; I'm</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="">definitely unused to 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="">2. If any of the above cases are found, appropriate driver</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="">initialization occurs. Since for the time being I am solely focusing</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="">on VirtIO sound devices, the VirtIO general initialization sequence</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="">will occur as outlined in sec. 3 of the VirtIO specification available</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="">at<span class="Apple-converted-space"> </span></span><a href="https://www.kraxel.org/virtio/virtio-v1.1-cs01-sound-v7.html" 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="">https://www.kraxel.org/virtio/virtio-v1.1-cs01-sound-v7.html</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="">.</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="">As for actual protocol exposure that would be spec-worthy, for</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="">EFI_AUDIO_OUTPUT_PROTOCOL, I'm not quite sure what to expose. VirtIO</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="">is rather simple: there's a buffer for sending and receiving 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="">data in PCM streams. So for that we could expose a Reset(),</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="">RemapJack(), GetJackConfig(), GetPcmConfig(), SetPcmParams(),</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="">Prepare(), Release(), Start(), and Stop() function for the</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="">corresponding request types VIRTIO_SND_R_JACK_GET_CONFIG,</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="">VIRTIO_SND_R_JACK_REMAP, VIRTIO_SND_R_PCM_GET_CONFIG,</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="">VIRTIO_SND_R_PCM_SET_PARAMS, VIRTIO_SND_R_PCM_PREPARE,</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="">VIRTIO_SND_R_PCM_RELEASE, VIRTIO_SND_R_PCM_START, and</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="">VIRTIO_SND_R_PCM_STOP control requests. However, for HDA things are a</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="">lot more complex, so I'm not sure how that should work.</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="">For VirtIO -- which is what I'll focus on for now -- everything 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="">described, in excellent detail, in sec. 5.14 of the above-linked</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="">document. What are your guys's thoughts thus far and how should</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="">everything be mapped to UEFI interfaces?</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 4/13/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="">Leif,<br class=""><br class="">Since I have put some brain cells around this area in the past I can be the<br class="">backup and help out too.<br class=""><br class="">I’d also point out if you are having issues building or have general<br class="">questions on how things work it is fine to use the mailing list. I’ve got a<br class="">lot of feedback that folks read or search the mailing list looking for<br class="">answer to their questions so one person asking can help out a lot of other<br class="">people.<br class=""><br class="">Thanks,<br class=""><br class="">Andrew Fish<br class=""><br class=""><blockquote type="cite" class="">On Apr 13, 2021, at 5:28 AM, Leif Lindholm <<a href="mailto:leif@nuviainc.com" class="">leif@nuviainc.com</a>> wrote:<br class=""><br class="">Hi all, especially Ethin.<br class=""><br class="">Apologies for radio silence - last week I was off on holiday, and before<br class="">that ... let's just say corporate acquisitions generate some<br class="">distractions.<br class="">Anyway, I'm back, and since I'm down as the mentor for this task, feel<br class="">free to spam me with any remaining/new questions.<br class=""><br class="">/<br class="">   Leif<br class=""><br class="">On Tue, Apr 6, 2021 at 4:17 PM Ethin Probst <<a href="mailto:harlydavidsen@gmail.com" class="">harlydavidsen@gmail.com</a><br class=""><<a href="mailto:harlydavidsen@gmail.com" class="">mailto:harlydavidsen@gmail.com</a>>> wrote:<br class="">I'll attach the bug for the build tools to the BZ shortly.<br class="">Laszlo, thanks for that. I don't know their email addresses though.<br class="">And yes, I was going to make it device independent, as the majority<br class="">(if not all) of UEFI protocols are.<br class=""><br class="">On 4/6/21, Laszlo Ersek <<a href="mailto:lersek@redhat.com" class="">lersek@redhat.com</a><span class="Apple-converted-space"> </span><<a href="mailto:lersek@redhat.com" class="">mailto:lersek@redhat.com</a>>><br class="">wrote:<br class=""><blockquote type="cite" class="">On 03/31/21 08:41, Nate DeSimone wrote:<br class=""><blockquote type="cite" class="">Another option is to put the protocol definition in MdeModulePkg and<br class="">mark it with the EDKII_ prefix. For my last “code first” UEFI spec<br class="">contribution I did this with the PPI that added up getting added.<br class=""></blockquote><br class="">The new audio protocol should be generic, only its implementation in<br class="">question should be virtio specific.<br class=""><br class="">Please include Gerd Hoffmann (CC'd) in the protocol design, as well as<br class="">the developers of the virtio-sound device model in QEMU.<br class=""><br class="">Thanks<br class="">Laszlo<br class=""><br class=""><br class=""><blockquote type="cite" class=""><br class=""><br class=""><br class="">Thanks,<br class=""><br class="">Nate<br class=""><br class=""><br class=""><br class="">*From: *<<a href="mailto:devel@edk2.groups.io" class="">devel@edk2.groups.io</a><span class="Apple-converted-space"> </span><<a href="mailto:devel@edk2.groups.io" class="">mailto:devel@edk2.groups.io</a>>> on behalf<br class="">of "Andrew Fish via<span class="Apple-converted-space"> </span><a href="http://groups.io/" class="">groups.io</a><span class="Apple-converted-space"> </span><<a href="http://groups.io/" class="">http://groups.io/</a>>"<br class=""><<a href="mailto:afish=apple.com@groups.io" class="">afish=apple.com@groups.io</a><span class="Apple-converted-space"> </span><<a href="mailto:apple.com@groups.io" class="">mailto:apple.com@groups.io</a>>><br class="">*Reply-To: *"<a href="mailto:devel@edk2.groups.io" class="">devel@edk2.groups.io</a><span class="Apple-converted-space"> </span><<a href="mailto:devel@edk2.groups.io" class="">mailto:devel@edk2.groups.io</a>>"<br class=""><<a href="mailto:devel@edk2.groups.io" class="">devel@edk2.groups.io</a><span class="Apple-converted-space"> </span><<a href="mailto:devel@edk2.groups.io" class="">mailto:devel@edk2.groups.io</a>>>,<br class="">"<a href="mailto:afish@apple.com" class="">afish@apple.com</a><span class="Apple-converted-space"> </span><<a href="mailto:afish@apple.com" class="">mailto:afish@apple.com</a>>" <<a href="mailto:afish@apple.com" class="">afish@apple.com</a><br class=""><<a href="mailto:afish@apple.com" class="">mailto:afish@apple.com</a>>><br class="">*Date: *Tuesday, March 30, 2021 at 10:54 PM<br class="">*To: *edk2-devel-groups-io <<a href="mailto:devel@edk2.groups.io" class="">devel@edk2.groups.io</a><br class=""><<a href="mailto:devel@edk2.groups.io" class="">mailto:devel@edk2.groups.io</a>>>,<br class="">"<a href="mailto:harlydavidsen@gmail.com" class="">harlydavidsen@gmail.com</a><span class="Apple-converted-space"> </span><<a href="mailto:harlydavidsen@gmail.com" class="">mailto:harlydavidsen@gmail.com</a>>"<br class=""><<a href="mailto:harlydavidsen@gmail.com" class="">harlydavidsen@gmail.com</a><span class="Apple-converted-space"> </span><<a href="mailto:harlydavidsen@gmail.com" class="">mailto:harlydavidsen@gmail.com</a>>><br class="">*Cc: *Rafael Rodrigues Machado <<a href="mailto:rafaelrodrigues.machado@gmail.com" class="">rafaelrodrigues.machado@gmail.com</a><br class=""><<a href="mailto:rafaelrodrigues.machado@gmail.com" class="">mailto:rafaelrodrigues.machado@gmail.com</a>>><br class="">*Subject: *Re: [edk2-devel] VirtIO Sound Driver (GSoC 2021)<br class=""><br class=""><br class=""><br class=""><br class=""><br class="">   On Mar 30, 2021, at 5:01 PM, Ethin Probst <<a href="mailto:harlydavidsen@gmail.com" class="">harlydavidsen@gmail.com</a><br class=""><<a href="mailto:harlydavidsen@gmail.com" class="">mailto:harlydavidsen@gmail.com</a>><br class="">   <<a href="mailto:harlydavidsen@gmail.com" class="">mailto:harlydavidsen@gmail.com</a><span class="Apple-converted-space"> </span><<a href="mailto:harlydavidsen@gmail.com" class="">mailto:harlydavidsen@gmail.com</a>>>><br class="">wrote:<br class=""><br class=""><br class=""><br class="">   I'm wondering where exactly I should add the VirtIO sound protocol.<br class="">I<br class="">   just familiarized myself with the build system and am about to<br class="">test<br class="">it<br class="">   by building OVMF if possible, but I'm wondering where I should<br class="">   actually put the protocol and all that stuff. Maybe there's<br class="">   documentation I've missed as well.<br class=""><br class=""><br class=""><br class="">Ethin,<br class=""><br class=""><br class=""><br class="">For the driver I’d match the patter of OVMF [1] and use<br class="">OvmfPkg/VirtioSoundDxe/. Maybe even use one of the other drivers as a<br class="">template.<br class=""><br class=""><br class=""><br class="">The protocol is more of a public thing. I think eventually we would<br class="">like<br class="">to publish the protocol in the UEFI Spec (I can help with that part)<br class="">and<br class="">that would mean we put the Protocol definition in<br class="">MdePkg/Include/Protocol, but we don’t want to do that before it is<br class="">standardized as that causes compatibility issues. So this is a “code<br class="">first project” (code prototype and then contribute to the UEFI Forum<br class="">for<br class="">inclusion in the specification) so we need to follow some code first<br class="">rules that I don’t remember of the top of my head? So why not start<br class="">out<br class="">the protocol definition OvmfPkg/Include/Protocol. You can also add a<br class="">test application looks like you can just use the root [2] of OVMF for<br class="">that. That way the project is not blocked.<br class=""><br class=""><br class=""><br class="">We can have a conversation on the mailing list about better places to<br class="">put stuff, and it should be easy enough to move stuff around if<br class="">everything else is working.<br class=""><br class=""><br class=""><br class="">[1] find OvmfPkg  -iname '*Virtio*.inf'<br class=""><br class="">OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf<br class=""><br class="">OvmfPkg/VirtioScsiDxe/VirtioScsi.inf<br class=""><br class="">OvmfPkg/Library/VirtioMmioDeviceLib/VirtioMmioDeviceLib.inf<br class=""><br class="">OvmfPkg/Library/VirtioLib/VirtioLib.inf<br class=""><br class="">OvmfPkg/VirtioGpuDxe/VirtioGpu.inf<br class=""><br class="">OvmfPkg/VirtioBlkDxe/VirtioBlk.inf<br class=""><br class="">OvmfPkg/Virtio10Dxe/Virtio10.inf<br class=""><br class="">OvmfPkg/VirtioNetDxe/VirtioNet.inf<br class=""><br class="">OvmfPkg/VirtioRngDxe/VirtioRng.inf<br class=""><br class=""><br class=""><br class="">[2] /Volumes/Case/edk2-github/OvmfPkg>git grep APPLICATION -- *.inf |<br class="">grep MODULE_TYPE<br class=""><br class="">EnrollDefaultKeys/EnrollDefaultKeys.inf:13:  MODULE_TYPE<br class="">   = UEFI_APPLICATION<br class=""><br class=""><br class=""><br class="">Thanks,<br class=""><br class=""><br class=""><br class="">Andrew Fish<br class=""><br class=""><br class=""><br class=""><br class=""><br class=""><br class="">   On 3/30/21, Ethin Probst via<span class="Apple-converted-space"> </span><a href="http://groups.io/" class="">groups.io</a><span class="Apple-converted-space"> </span><<a href="http://groups.io/" class="">http://groups.io/</a>><br class=""><<a href="http://groups.io/" class="">http://groups.io/</a><span class="Apple-converted-space"> </span><<a href="http://groups.io/" class="">http://groups.io/</a>>><br class="">   <<a href="mailto:harlydavidsen=gmail.com@groups.io" class="">harlydavidsen=gmail.com@groups.io</a><span class="Apple-converted-space"> </span><<a href="mailto:gmail.com@groups.io" class="">mailto:gmail.com@groups.io</a>><br class="">   <mailto:harlydavidsen <mailto:harlydavidsen>=<a href="mailto:gmail.com@groups.io" class="">gmail.com@groups.io</a><br class=""><<a href="mailto:gmail.com@groups.io" class="">mailto:gmail.com@groups.io</a>>>> wrote:<br class=""><br class="">       I agree. Plus, it gives me a chance to finally learn the EDK2<br class="">build<br class="">       system and how it works! I've been working on a hobby OS as a<br class="">side<br class="">       project and, though learning from other code examples from<br class="">OSes<br class="">is<br class="">       fun, I have to say that learning from the firmware code like<br class="">from<br class="">       SeaBIOS has been some of the most enlightening and interesting<br class="">times<br class="">       thus far.<br class="">       Thanks for the link to your code, Rafael; once I get virtIO<br class="">support<br class="">       in, I can work on HDA support, though I might tackle USB<br class="">support<br class="">       second and HDA third. We'll see, but VirtIO definitely is<br class="">coming<br class="">       first.<br class=""><br class="">       As I said before, I look forward to working with all of you<br class="">       wonderful<br class="">       people!<br class=""><br class="">       On 3/30/21, Rafael Rodrigues Machado<br class="">       <<a href="mailto:rafaelrodrigues.machado@gmail.com" class="">rafaelrodrigues.machado@gmail.com</a><br class=""><<a href="mailto:rafaelrodrigues.machado@gmail.com" class="">mailto:rafaelrodrigues.machado@gmail.com</a>><br class="">       <<a href="mailto:rafaelrodrigues.machado@gmail.com" class="">mailto:rafaelrodrigues.machado@gmail.com</a><br class=""><<a href="mailto:rafaelrodrigues.machado@gmail.com" class="">mailto:rafaelrodrigues.machado@gmail.com</a>>>><br class="">       wrote:<br class=""><br class="">           This would be amazing so people can continue my work<br class="">related<br class="">to<br class="">           accessibility at BIOS. Something desired by the blind<br class="">people<br class="">           since the<br class="">           90's<br class="">           Just for reference, this is what I have done:<br class=""><br class=""><br class=""><a href="https://github.com/RafaelRMachado/Msc_UefiHda_PreOs_Accessibility" class="">https://github.com/RafaelRMachado/Msc_UefiHda_PreOs_Accessibility</a><br class=""><<a href="https://github.com/RafaelRMachado/Msc_UefiHda_PreOs_Accessibility" class="">https://github.com/RafaelRMachado/Msc_UefiHda_PreOs_Accessibility</a>><br class=""><br class="">           Thanks<br class="">           Rafael<br class=""><br class="">           Em seg, 29 de mar de 2021 20:24, Ethin Probst<br class="">           <<a href="mailto:harlydavidsen@gmail.com" class="">harlydavidsen@gmail.com</a><span class="Apple-converted-space"> </span><<a href="mailto:harlydavidsen@gmail.com" class="">mailto:harlydavidsen@gmail.com</a>>><br class="">           escreveu:<br class=""><br class=""><br class="">               Hello everyone,<br class=""><br class="">               This is the first time I've ever contributed to EDK2.<br class="">As<br class="">               part of GSoC<br class="">               2021, I have submitted a proposal to implement a UEFI<br class="">               audio output<br class="">               protocol that will utilize the VirtIO sound driver.<br class="">I've<br class="">               already<br class="">               submitted a draft proposal, and apologize if I've done<br class="">               things out of<br class="">               order. This is my first time doing GSoC 2021, and<br class="">               contributing to EDK2<br class="">               felt like a really fun thing to do!<br class=""><br class="">               I look forward to working with you guys on this and<br class="">any<br class="">               future projects!<br class="">               :-)<br class=""><br class="">               --<br class="">               Signed,<br class="">               Ethin D. Probst<br class=""><br class=""><br class=""><br class=""><br class=""><br class=""><br class=""><br class=""><br class=""><br class="">       --<br class="">       Signed,<br class="">       Ethin D. Probst<br class=""><br class=""><br class=""><br class=""><br class=""><br class=""><br class=""><br class="">   --<br class="">   Signed,<br class="">   Ethin D. Probst<br class=""><br class=""><br class=""><br class=""><br class=""><br class=""><br class=""></blockquote><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=""><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=""></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/74064">View/Reply Online (#74064)</a> |    |  <a target="_blank" href="https://groups.io/mt/81710286/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>