1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-28 05:07:35 +00:00

Kernel/PCI: Propagate usage of DeviceIdentifier everywhere

This allows us to remove a bunch of PCI API functions, and instead to
leverage the cached data from DeviceIdentifier object in many places.
This commit is contained in:
Liav A 2021-09-23 10:20:54 +03:00 committed by Andreas Kling
parent da327746a2
commit 057f5a12c2
40 changed files with 150 additions and 186 deletions

View file

@ -46,8 +46,8 @@ void GPU::initialize()
}
}
GPU::GPU(PCI::Address address)
: VirtIO::Device(address)
GPU::GPU(PCI::DeviceIdentifier const& device_identifier)
: VirtIO::Device(device_identifier)
{
auto region_or_error = MM.allocate_contiguous_kernel_region(32 * PAGE_SIZE, "VirtGPU Scratch Space", Memory::Region::Access::ReadWrite);
if (region_or_error.is_error())

View file

@ -40,7 +40,7 @@ class GPU final
friend class FrameBufferDevice;
public:
GPU(PCI::Address);
GPU(PCI::DeviceIdentifier const&);
virtual ~GPU() override;
void create_framebuffer_devices();

View file

@ -13,16 +13,16 @@
namespace Kernel::Graphics::VirtIOGPU {
NonnullRefPtr<GraphicsAdapter> GraphicsAdapter::initialize(PCI::Address base_address)
NonnullRefPtr<GraphicsAdapter> GraphicsAdapter::initialize(PCI::DeviceIdentifier const& device_identifier)
{
VERIFY(PCI::get_hardware_id(base_address).vendor_id == PCI::VendorID::VirtIO);
return adopt_ref(*new GraphicsAdapter(base_address));
VERIFY(device_identifier.hardware_id().vendor_id == PCI::VendorID::VirtIO);
return adopt_ref(*new GraphicsAdapter(device_identifier));
}
GraphicsAdapter::GraphicsAdapter(PCI::Address base_address)
: PCI::Device(base_address)
GraphicsAdapter::GraphicsAdapter(PCI::DeviceIdentifier const& device_identifier)
: PCI::Device(device_identifier.address())
{
m_gpu_device = adopt_ref(*new GPU(base_address)).leak_ref();
m_gpu_device = adopt_ref(*new GPU(device_identifier)).leak_ref();
m_gpu_device->initialize();
}

View file

@ -18,12 +18,12 @@ class GraphicsAdapter final
AK_MAKE_ETERNAL
public:
static NonnullRefPtr<GraphicsAdapter> initialize(PCI::Address);
static NonnullRefPtr<GraphicsAdapter> initialize(PCI::DeviceIdentifier const&);
virtual bool framebuffer_devices_initialized() const override { return m_created_framebuffer_devices; }
private:
explicit GraphicsAdapter(PCI::Address base_address);
explicit GraphicsAdapter(PCI::DeviceIdentifier const&);
virtual void initialize_framebuffer_devices() override;
virtual Type type() const override { return Type::Raw; }