<div dir="ltr"><div>Hi Nico,<br><br></div>Please see my inline response below.<br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, May 11, 2017 at 4:57 PM, Nico Huber <span dir="ltr"><<a href="mailto:nico.h@gmx.de" target="_blank">nico.h@gmx.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-">On 11.05.2017 22:43, Joshua Pincus wrote:<br>
> Hey Folks,<br>
><br>
><br>
> I've been smacking my head against the wall for 2 weeks.  I can't smack it<br>
> anymore.  There's not much brain left at this point.  Here's my issue:<br>
><br>
><br>
> I have a Broadwell system with HD Video/Audio support.  When Windows 10<br>
> runs native (without a Hypervisor), Windows correctly finds the DisplayPort<br>
> adapter and correctly probes whatever it is that it needs to probe to<br>
> determine that the adapter in question supports both audio and video<br>
> output.  When Windows 10 is executed as a guest on top of a Hypervisor, it<br>
> correctly finds both the video device @ 0/2/0 and the audio device @ 0/3/0<br>
> but it is unable to detect that the DisplayPort supports audio.<br>
<br>
</span>Generally, I'd check what Linux does. Since it's open source, it's much<br>
easier to spot the difference between running natively and running as a<br>
guest. If it doesn't work in a Linux guest you can try to find the first<br>
thing that goes wrong in the i915 driver (booting with drm.debug=0x6<br>
could already give some hints in the kernel log).<br>
<span class="gmail-"><br></span></blockquote><div><br></div><div>[JP] Good idea.  I've looked at the FreeBSD and Linux implementations.  It's very hard to follow what's going on, but the code has given me some hints.  Your suggestion of trying to run Linux as a VM and seeing if it similarly barfs trying to talk to the audio device is a great idea.  As I said, I haven't got much brain left from smacking my head, hence I would have done that already!  The code, I think, relies very much on the extracted EDID, whereas I'm fairly sure that Windows ignores the EDID for the purposes of tracking audio support.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-">
><br>
><br>
><br>
> I can confirm that both the Intel drivers for video and audio correctly<br>
> attach and seem to be running perfectly inside the guest VM.  All of the<br>
> PCI BARs associated with both devices are correctly being mapped to the<br>
> Windows 10 guest.  It is my guess that Windows is looking at something<br>
> other than the EDID extracted from the attached monitor or the MMIO BAR for<br>
> the PCI audio or video devices to determine that audio is supported by the<br>
> attached hardware.  Indeed, if I probe the EDID information from the guest,<br>
> I see that the attached monitor supports audio.<br>
><br>
><br>
><br>
> My question is this: Is there something else other than the PCI BARs<br>
> associated with the onboard HD graphics and HD audio devices that are<br>
> required for a Windows or a Linux guest to detect the physical presence of<br>
> audio hardware associated with an attached monitor via HDMI or DP?  Is<br>
> there an MCH or PCH register?  My guess is that I am not mapping ALL of the<br>
> BARs or IO ports into the guest to allow Windows to probe the hardware<br>
> properly.  Something is missing.  I can’t figure out what that something is.<br>
<br>
</span>Probably something in the VBT (Video BIOS Table). It's a configuration<br>
structure for Intel video drivers used to pass information from the<br>
firmware to the OS. In your case the hypervisor might have to pass the<br>
VBT (or not hide the original). Just a guess.<br>
<br></blockquote><div><br></div><div>[JP] That's a great idea.  I'll take a look.  Your reference to the VBT helped me find <br></div><div>this: <a href="https://01.org/linuxgraphics/gfx-docs/drm/ch04s02.html">https://01.org/linuxgraphics/gfx-docs/drm/ch04s02.html</a>.  Can you think of any <br></div><div>other useful resources I should tap?<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Hope that helps,<br>
Nico<br>
<br></blockquote><div><br></div><div>[JP] This definitely helps.  I really appreciate it.<br><br></div><div>JP<br></div><div> </div></div><br></div></div>