On Mon, Jan 31, 2022 at 03:57:04PM +0100, Takashi Iwai wrote:
IO_PAGE_FAULTs go away with CONFIG_IOMMU_DEFAULT_PASSTHROUGH enabled. As I understand, this leads to reduced DMA device isolation which is generally not desirable. I was initially thinking about races between some delayed code and io-memory pages unmapping, but first IO_PAGE_FAULTs (running non-passthrough iommu) happen during bind operations as well.
I still don't get what really triggers it. This won't happen when you build modules and load/unload the driver instead of dynamic binding?
I've built snd_hda_intel as a module, everything else is left built-in. The initial modprobe and rmmod were clean, but the subsequent modprobe gave IO_PAGE_FAULT.
# modprobe snd-hda-intel snd_hda_intel 0000:05:00.1: bound 0000:05:00.0 (ops amdgpu_dm_audio_component_bind_ops) input: HD-Audio Generic HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:08.1/0000:05:00.1/sound/card0/input24 input: HD-Audio Generic HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:08.1/0000:05:00.1/sound/card0/input25 input: HD-Audio Generic HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:08.1/0000:05:00.1/sound/card0/input26 input: HD-Audio Generic HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:08.1/0000:05:00.1/sound/card0/input27 snd_hda_codec_realtek hdaudioC1D0: autoconfig for ALC285: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker snd_hda_codec_realtek hdaudioC1D0: speaker_outs=0 (0x0/0x0/0x0/0x0/0x0) snd_hda_codec_realtek hdaudioC1D0: hp_outs=1 (0x21/0x0/0x0/0x0/0x0) snd_hda_codec_realtek hdaudioC1D0: mono: mono_out=0x0 snd_hda_codec_realtek hdaudioC1D0: inputs: snd_hda_codec_realtek hdaudioC1D0: Mic=0x19 snd_hda_codec_realtek hdaudioC1D0: Internal Mic=0x12 snd_hda_intel 0000:05:00.6: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0015 address=0x1fffff800 flags=0x0020]