Restricting the IntelHDA PCI match to subclass 0x03 (e0c02f7) hid the
speakers on modern laptops, where the same HDA controller enumerates
as 0x01 (Multimedia audio controller) when the Smart Sound DSP is
enabled. Match any multimedia subclass instead; legacy AC'97 devices
also report 0x01 but expose an I/O-space BAR0, which Probe already
rejects via the ReadBar0 check.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
VirtualBox default VMs expose an AC'97 audio controller (8086:2415,
class 04/subclass 01) whose BAR0 is an I/O-space BAR. The IntelHDA
driver matched any Intel multimedia subclass, and ReadBar0 masked the
I/O BAR's port number into a bogus 'physical address' that MapMMIO
panicked on (non-page-aligned), halting boot.
Two fixes:
- IntelHDA now matches only subclass 0x03 (HD Audio); AC'97 (0x01) is
a different programming model and is not claimed.
- ReadBar0 returns 0 (no usable MMIO BAR) for I/O-space BARs instead
of handing a port number to MapMMIO.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>