Will it possible to isolate HD-audio on Skylake in the future?


theGrok

Recommended Posts

I posted this in the 6.3 announcement thread, but figured I might as well ask the question in this subforum.

 

I upgraded to 6.3 and wanted to try IGD passthrough. I do see the GPU as a pass through option, however, I see nothing in the sound section. I remember reading a thread that it was not possible to isolate HD-audio into its own group on the Skylake platform, but that it was being worked on.

 

Does this seem feasible at some point in the future?

 

Here are my IO-MMU groups for illustration:

 

IOMMU group 0

00:00.0 Host bridge [0600]: Intel Corporation Skylake Host Bridge/DRAM Registers [8086:191f] (rev 07)

IOMMU group 1

00:01.0 PCI bridge [0604]: Intel Corporation Skylake PCIe Controller (x16) [8086:1901] (rev 07)

IOMMU group 2

00:01.1 PCI bridge [0604]: Intel Corporation Skylake PCIe Controller (x8) [8086:1905] (rev 07)

IOMMU group 3

00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics 530 [8086:1912] (rev 06)

IOMMU group 4

00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller [8086:a12f] (rev 31)

00:14.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-H Thermal subsystem [8086:a131] (rev 31)

IOMMU group 5

00:16.0 Communication controller [0780]: Intel Corporation Sunrise Point-H CSME HECI #1 [8086:a13a] (rev 31)

IOMMU group 6

00:17.0 SATA controller [0106]: Intel Corporation Sunrise Point-H SATA controller [AHCI mode] [8086:a102] (rev 31)

IOMMU group 7

00:1b.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Root Port #17 [8086:a167] (rev f1)

IOMMU group 8

00:1b.2 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Root Port #19 [8086:a169] (rev f1)

IOMMU group 9

00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #1 [8086:a110] (rev f1)

IOMMU group 10

00:1c.4 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #5 [8086:a114] (rev f1)

IOMMU group 11

00:1d.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #9 [8086:a118] (rev f1)

IOMMU group 12

00:1d.4 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #13 [8086:a11c] (rev f1)

IOMMU group 13

00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-H LPC Controller [8086:a145] (rev 31)

00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-H PMC [8086:a121] (rev 31)

00:1f.3 Multimedia audio controller [0401]: Intel Corporation Sunrise Point-H HD Audio [8086:a170] (rev 31)

00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-H SMBus [8086:a123] (rev 31)

IOMMU group 14

01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] [10de:1c82] (rev a1)

01:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:0fb9] (rev a1)

IOMMU group 15

02:00.0 Serial Attached SCSI controller [0107]: LSI Logic / Symbios Logic SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] [1000:0072] (rev 02)

IOMMU group 16

04:00.0 Ethernet controller [0200]: Qualcomm Atheros Killer E220x Gigabit Ethernet Controller [1969:e091] (rev 10)

IOMMU group 17

05:00.0 PCI bridge [0604]: Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015] [8086:1578]

IOMMU group 18

06:00.0 PCI bridge [0604]: Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015] [8086:1578]

IOMMU group 19

06:01.0 PCI bridge [0604]: Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015] [8086:1578]

IOMMU group 20

06:02.0 PCI bridge [0604]: Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015] [8086:1578]

IOMMU group 21

06:04.0 PCI bridge [0604]: Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015] [8086:1578]

IOMMU group 22

09:00.0 USB controller [0c03]: Intel Corporation DSL6540 USB 3.1 Controller [Alpine Ridge] [8086:15b6]

Link to comment

Should audio over HDMI work, display in VM settings as a separate audio device to select or installed within Windows with GPU drivers? Nothing is showing for it.

 

I tried iGPU for graphics last night and works pretty well although I get micro pauses in Windows, once that and Audio sorted it should be very nice solution.

Link to comment

Thank you for your reply. I have gone through the thread and I am still a little bit confused on what I need to do. I am looking to use the HDMI audio from my iGPU in a Libreelec VM. With 6.3, it is now possible to passthrough the iGPU but I assume that I will have no sound because the audio is located in a different IOMMU group, or am I mistaken? In the thread you posted, that user also has a Skylake system and has the same contents in his IOMMU group as I do: 

 

MMU group 13

  00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-H LPC Controller [8086:a145] (rev 31)

  00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-H PMC [8086:a121] (rev 31)

  00:1f.3 Multimedia audio controller [0401]: Intel Corporation Sunrise Point-H HD Audio [8086:a170] (rev 31)

  00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-H SMBus [8086:a123] (rev 31)

 

I figured since the audio controller is not by itself that it would not be possible to passthrough. I am already passing through my nvidia card successfully in a separate VM and in that one, I can choose the nvidia audio in the soundcard section of the VM config. I thought that I read somewhere that with skylake there was a probblem in isolating audio to be in it's own group to be able to be passed through, but that they were working on a workaround. I am far from an expert on any of this so perhaps I am mistaken.

 

Link to comment

Thank you for your reply. I have gone through the thread and I am still a little bit confused on what I need to do. I am looking to use the HDMI audio from my iGPU in a Libreelec VM. With 6.3, it is now possible to passthrough the iGPU but I assume that I will have no sound because the audio is located in a different IOMMU group, or am I mistaken? In the thread you posted, that user also has a Skylake system and has the same contents in his IOMMU group as I do: 

 

MMU group 13

  00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-H LPC Controller [8086:a145] (rev 31)

  00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-H PMC [8086:a121] (rev 31)

  00:1f.3 Multimedia audio controller [0401]: Intel Corporation Sunrise Point-H HD Audio [8086:a170] (rev 31)

  00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-H SMBus [8086:a123] (rev 31)

 

I figured since the audio controller is not by itself that it would not be possible to passthrough. I am already passing through my nvidia card successfully in a separate VM and in that one, I can choose the nvidia audio in the soundcard section of the VM config. I thought that I read somewhere that with skylake there was a probblem in isolating audio to be in it's own group to be able to be passed through, but that they were working on a workaround. I am far from an expert on any of this so perhaps I am mistaken.

 

This is a quote from the link above.

 

And added the line: modprobe.blacklist=i2c_i801,i2c_smbus to my syslinux.cfg to stub what I believe is the SMBus.
Link to comment

Thank you for your reply. I have gone through the thread and I am still a little bit confused on what I need to do. I am looking to use the HDMI audio from my iGPU in a Libreelec VM. With 6.3, it is now possible to passthrough the iGPU but I assume that I will have no sound because the audio is located in a different IOMMU group, or am I mistaken? In the thread you posted, that user also has a Skylake system and has the same contents in his IOMMU group as I do: 

 

MMU group 13

  00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-H LPC Controller [8086:a145] (rev 31)

  00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-H PMC [8086:a121] (rev 31)

  00:1f.3 Multimedia audio controller [0401]: Intel Corporation Sunrise Point-H HD Audio [8086:a170] (rev 31)

  00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-H SMBus [8086:a123] (rev 31)

 

I figured since the audio controller is not by itself that it would not be possible to passthrough. I am already passing through my nvidia card successfully in a separate VM and in that one, I can choose the nvidia audio in the soundcard section of the VM config. I thought that I read somewhere that with skylake there was a probblem in isolating audio to be in it's own group to be able to be passed through, but that they were working on a workaround. I am far from an expert on any of this so perhaps I am mistaken.

 

This is a quote from the link above.

 

And added the line: modprobe.blacklist=i2c_i801,i2c_smbus to my syslinux.cfg to stub what I believe is the SMBus.

 

So If I stub the SMBus by adding this in linux sysconfig I will then be able to passthrough audio?

Link to comment

Thank you for your reply. I have gone through the thread and I am still a little bit confused on what I need to do. I am looking to use the HDMI audio from my iGPU in a Libreelec VM. With 6.3, it is now possible to passthrough the iGPU but I assume that I will have no sound because the audio is located in a different IOMMU group, or am I mistaken? In the thread you posted, that user also has a Skylake system and has the same contents in his IOMMU group as I do: 

 

MMU group 13

  00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-H LPC Controller [8086:a145] (rev 31)

  00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-H PMC [8086:a121] (rev 31)

  00:1f.3 Multimedia audio controller [0401]: Intel Corporation Sunrise Point-H HD Audio [8086:a170] (rev 31)

  00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-H SMBus [8086:a123] (rev 31)

 

I figured since the audio controller is not by itself that it would not be possible to passthrough. I am already passing through my nvidia card successfully in a separate VM and in that one, I can choose the nvidia audio in the soundcard section of the VM config. I thought that I read somewhere that with skylake there was a probblem in isolating audio to be in it's own group to be able to be passed through, but that they were working on a workaround. I am far from an expert on any of this so perhaps I am mistaken.

 

This is a quote from the link above.

 

And added the line: modprobe.blacklist=i2c_i801,i2c_smbus to my syslinux.cfg to stub what I believe is the SMBus.

 

So If I stub the SMBus by adding this in linux sysconfig I will then be able to passthrough audio?

 

Yes, that's what worked for others.

Link to comment

Thank you for your reply. I have gone through the thread and I am still a little bit confused on what I need to do. I am looking to use the HDMI audio from my iGPU in a Libreelec VM. With 6.3, it is now possible to passthrough the iGPU but I assume that I will have no sound because the audio is located in a different IOMMU group, or am I mistaken? In the thread you posted, that user also has a Skylake system and has the same contents in his IOMMU group as I do: 

 

MMU group 13

  00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-H LPC Controller [8086:a145] (rev 31)

  00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-H PMC [8086:a121] (rev 31)

  00:1f.3 Multimedia audio controller [0401]: Intel Corporation Sunrise Point-H HD Audio [8086:a170] (rev 31)

  00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-H SMBus [8086:a123] (rev 31)

 

I figured since the audio controller is not by itself that it would not be possible to passthrough. I am already passing through my nvidia card successfully in a separate VM and in that one, I can choose the nvidia audio in the soundcard section of the VM config. I thought that I read somewhere that with skylake there was a probblem in isolating audio to be in it's own group to be able to be passed through, but that they were working on a workaround. I am far from an expert on any of this so perhaps I am mistaken.

 

This is a quote from the link above.

 

And added the line: modprobe.blacklist=i2c_i801,i2c_smbus to my syslinux.cfg to stub what I believe is the SMBus.

 

So If I stub the SMBus by adding this in linux sysconfig I will then be able to passthrough audio?

 

Yes, that's what worked for others.

 

 

Ok, I added the line to my sysconfig file, but I still do not see HD audio as an option for passthrough under soundcard in the VM tmeplate.

 

here is my file:

 

default /syslinux/menu.c32

menu title Lime Technology, Inc.

prompt 0

timeout 50

label unRAID OS

  menu default

  kernel /bzimage

  append pcie_acs_override=downstream vfio-pci.ids=8086:a170 modprobe.blacklist=i2c_i801,i2c_smbus initrd=/bzroot

label unRAID OS GUI Mode

  kernel /bzimage

  append initrd=/bzroot,/bzroot-gui

label unRAID OS Safe Mode (no plugins, no GUI)

  kernel /bzimage

  append initrd=/bzroot unraidsafemode

label Memtest86+

  kernel /memtest

 

 

have I done something wrong? Thank you.

Link to comment

I will answer my own question.

 

1) This solution worked (adding the line to syslinux config). I did not realize that the audio controller would show up under Other PCI devices at the bottom of the VM template. I kept trying to find it under sound card section. Once i found it at the bottom of the template I passed it through without incident.

 

2) I did not realize that I could have passed on-board audio in versions earlier than 6.3. I thought it went hand in hand with passing through the iGPU which required 6.3.

 

So now I have my iGPU as well as on-board HDMI audio passed through and working perfectly (in limited testing) to my libreelec VM on a Skylake i7-6700.

 

I already had another libreelec VM using my nvidia 1050ti. I had to enable ACS override on that one to put the GPU in its own group.

 

I did not think any of this would be possible with a Skylake CPU but it all seems to working. A big thanks as usual to incredibly patient unRaid community for their help. It took me a while to figure it all out, but as always, a fun learning experience.

Link to comment
  • 2 months later...

@theGrok I followed your steps and still haven't been able to get my Skylake's  i7-6700K Intel audio to passthrough the VM. I'm on 6.3.3. The Intel audio does appear on the Soundcard options. Never showed under "Other PCI Devices" despite adding the line to my Flash. 

 

Any thoughts?

 

Below is my setup:

IOMMU group 0
	[8086:191f] 00:00.0 Host bridge: Intel Corporation Skylake Host Bridge/DRAM Registers (rev 07)
IOMMU group 1
	[8086:1901] 00:01.0 PCI bridge: Intel Corporation Skylake PCIe Controller (x16) (rev 07)
	[10de:1b81] 01:00.0 VGA compatible controller: NVIDIA Corporation GP104 [GeForce GTX 1070] (rev a1)
	[10de:10f0] 01:00.1 Audio device: NVIDIA Corporation GP104 High Definition Audio Controller (rev a1)
IOMMU group 2
	[8086:1912] 00:02.0 VGA compatible controller: Intel Corporation HD Graphics 530 (rev 06)
IOMMU group 3
	[8086:a135] 00:13.0 Non-VGA unclassified device: Intel Corporation Sunrise Point-H Integrated Sensor Hub (rev 31)
IOMMU group 4
	[8086:a12f] 00:14.0 USB controller: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller (rev 31)
	[8086:a131] 00:14.2 Signal processing controller: Intel Corporation Sunrise Point-H Thermal subsystem (rev 31)
IOMMU group 5
	[8086:a13a] 00:16.0 Communication controller: Intel Corporation Sunrise Point-H CSME HECI #1 (rev 31)
IOMMU group 6
	[8086:a102] 00:17.0 SATA controller: Intel Corporation Sunrise Point-H SATA controller [AHCI mode] (rev 31)
IOMMU group 7
	[8086:a114] 00:1c.0 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #5 (rev f1)
IOMMU group 8
	[8086:a115] 00:1c.5 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #6 (rev f1)
IOMMU group 9
	[8086:a149] 00:1f.0 ISA bridge: Intel Corporation Sunrise Point-H LPC Controller (rev 31)
	[8086:a121] 00:1f.2 Memory controller: Intel Corporation Sunrise Point-H PMC (rev 31)
	[8086:a170] 00:1f.3 Audio device: Intel Corporation Sunrise Point-H HD Audio (rev 31)
	[8086:a123] 00:1f.4 SMBus: Intel Corporation Sunrise Point-H SMBus (rev 31)
IOMMU group 10
	[8086:1533] 02:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
IOMMU group 11
	[8086:1533] 03:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)

 

Link to comment
On 4/26/2017 at 1:47 PM, drzaph said:

@theGrok I followed your steps and still haven't been able to get my Skylake's  i7-6700K Intel audio to passthrough the VM. I'm on 6.3.3. The Intel audio does appear on the Soundcard options. Never showed under "Other PCI Devices" despite adding the line to my Flash. 

 

Any thoughts?

 

Below is my setup:


IOMMU group 0
	[8086:191f] 00:00.0 Host bridge: Intel Corporation Skylake Host Bridge/DRAM Registers (rev 07)
IOMMU group 1
	[8086:1901] 00:01.0 PCI bridge: Intel Corporation Skylake PCIe Controller (x16) (rev 07)
	[10de:1b81] 01:00.0 VGA compatible controller: NVIDIA Corporation GP104 [GeForce GTX 1070] (rev a1)
	[10de:10f0] 01:00.1 Audio device: NVIDIA Corporation GP104 High Definition Audio Controller (rev a1)
IOMMU group 2
	[8086:1912] 00:02.0 VGA compatible controller: Intel Corporation HD Graphics 530 (rev 06)
IOMMU group 3
	[8086:a135] 00:13.0 Non-VGA unclassified device: Intel Corporation Sunrise Point-H Integrated Sensor Hub (rev 31)
IOMMU group 4
	[8086:a12f] 00:14.0 USB controller: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller (rev 31)
	[8086:a131] 00:14.2 Signal processing controller: Intel Corporation Sunrise Point-H Thermal subsystem (rev 31)
IOMMU group 5
	[8086:a13a] 00:16.0 Communication controller: Intel Corporation Sunrise Point-H CSME HECI #1 (rev 31)
IOMMU group 6
	[8086:a102] 00:17.0 SATA controller: Intel Corporation Sunrise Point-H SATA controller [AHCI mode] (rev 31)
IOMMU group 7
	[8086:a114] 00:1c.0 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #5 (rev f1)
IOMMU group 8
	[8086:a115] 00:1c.5 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #6 (rev f1)
IOMMU group 9
	[8086:a149] 00:1f.0 ISA bridge: Intel Corporation Sunrise Point-H LPC Controller (rev 31)
	[8086:a121] 00:1f.2 Memory controller: Intel Corporation Sunrise Point-H PMC (rev 31)
	[8086:a170] 00:1f.3 Audio device: Intel Corporation Sunrise Point-H HD Audio (rev 31)
	[8086:a123] 00:1f.4 SMBus: Intel Corporation Sunrise Point-H SMBus (rev 31)
IOMMU group 10
	[8086:1533] 02:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
IOMMU group 11
	[8086:1533] 03:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)

 

 

It has been a while since I messed with this.

 

What happens when you try to pass it through? Do you simply hear no sound?

 

Does it show up as:  Intel Sunrise Point-H HD Audio | Multimedia audio controller (00:1f.3)?

 

This is the line that I added to my syslinux config:

append pcie_acs_override=downstream vfio-pci.ids=8086:a170 modprobe.blacklist=i2c_i801,i2c_smbus initrd=/bzroot

 

note that this include the acs override option.

Link to comment

This works well for my system, Thanks.

 

Prior to adding the line (modprobe.blacklist=i2c_i801,i2c_smbus ) to my syslinux.cfg i could choose Intel sunrise HD audio from the drop down menu along with my Intel 530 iGPU but the VM wouldn't start when selecting the Sunrise point HD audio.

 

Adding the line of code gets the VM started and everything runs very well.

 

Thanks again

Link to comment

Thanks @theGrok and @raidserver. I was able to boot up OpenPHT and get audio/visual via the iGPU!

 

Now the only problem is OpenPHT won't play some media citing the file doesn't exist - even though it's on the same system. It played a music album, but no TV shows or movies. It's not loading poster art. Thought it was a permissions issue with the caching, so I ran the Tools/New Permissions command and no luck. Maybe I need to "remove" the installation drive of OpenPHT image and make vdisk1 primary...

 

Either way, thanks again for the above help. So close...

Link to comment
  • 3 months later...

Man I must have been asleep for the last year. Just found out about this! :D 

Kept getting and error when starting a VM with iGPU and integrated soundcard. Was thinking it was igpu related, and that it wasn't possible to pass it. Then, after reading the error properly :D , found out it was the soundcard it had problems with. 

 

Applied the append to syslinux.cfg and it just works! Great stuff, thanks guys! 

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.