From 15315be55c8b8e5a3b0952dda5c0111123861c60 Mon Sep 17 00:00:00 2001 From: Liav A Date: Thu, 17 Feb 2022 22:10:59 +0200 Subject: [PATCH] Kernel/Audio: Don't try to enumerate PCI adapters if PCI is disabled --- Kernel/Devices/Audio/Management.cpp | 30 +++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/Kernel/Devices/Audio/Management.cpp b/Kernel/Devices/Audio/Management.cpp index 3628671176..e444d3351f 100644 --- a/Kernel/Devices/Audio/Management.cpp +++ b/Kernel/Devices/Audio/Management.cpp @@ -38,21 +38,23 @@ UNMAP_AFTER_INIT AudioManagement::AudioManagement() UNMAP_AFTER_INIT void AudioManagement::enumerate_hardware_controllers() { - PCI::enumerate([&](PCI::DeviceIdentifier const& device_identifier) { - // Note: Only consider PCI audio controllers - if (device_identifier.class_code().value() != to_underlying(PCI::ClassID::Multimedia) - || device_identifier.subclass_code().value() != to_underlying(PCI::Multimedia::SubclassID::AudioController)) - return; + if (!PCI::Access::is_disabled()) { + PCI::enumerate([&](PCI::DeviceIdentifier const& device_identifier) { + // Note: Only consider PCI audio controllers + if (device_identifier.class_code().value() != to_underlying(PCI::ClassID::Multimedia) + || device_identifier.subclass_code().value() != to_underlying(PCI::Multimedia::SubclassID::AudioController)) + return; - dbgln("AC97: found audio controller at {}", device_identifier.address()); - auto ac97_device = AC97::try_create(device_identifier); - if (ac97_device.is_error()) { - // FIXME: Propagate errors properly - dbgln("AudioManagement: failed to initialize AC97 device: {}", ac97_device.error()); - return; - } - m_controllers_list.append(ac97_device.release_value()); - }); + dbgln("AC97: found audio controller at {}", device_identifier.address()); + auto ac97_device = AC97::try_create(device_identifier); + if (ac97_device.is_error()) { + // FIXME: Propagate errors properly + dbgln("AudioManagement: failed to initialize AC97 device: {}", ac97_device.error()); + return; + } + m_controllers_list.append(ac97_device.release_value()); + }); + } } UNMAP_AFTER_INIT void AudioManagement::enumerate_hardware_audio_channels()