mirror of
https://github.com/RGBCube/serenity
synced 2025-07-24 15:17:45 +00:00
Kernel: Fix deadlock when setting VirtIOGPU resolution
This commit is contained in:
parent
f6f277debd
commit
4587e50b52
1 changed files with 1 additions and 3 deletions
|
@ -84,8 +84,6 @@ ErrorOr<void> FramebufferDevice::set_head_resolution(size_t head, size_t width,
|
||||||
|
|
||||||
auto& info = display_info();
|
auto& info = display_info();
|
||||||
|
|
||||||
SpinlockLocker locker(adapter()->operation_lock());
|
|
||||||
|
|
||||||
info.rect = {
|
info.rect = {
|
||||||
.x = 0,
|
.x = 0,
|
||||||
.y = 0,
|
.y = 0,
|
||||||
|
@ -167,6 +165,7 @@ FramebufferDevice::~FramebufferDevice()
|
||||||
|
|
||||||
ErrorOr<void> FramebufferDevice::create_framebuffer()
|
ErrorOr<void> FramebufferDevice::create_framebuffer()
|
||||||
{
|
{
|
||||||
|
SpinlockLocker locker(adapter()->operation_lock());
|
||||||
// First delete any existing framebuffers to free the memory first
|
// First delete any existing framebuffers to free the memory first
|
||||||
m_framebuffer = nullptr;
|
m_framebuffer = nullptr;
|
||||||
m_framebuffer_sink_vmobject = nullptr;
|
m_framebuffer_sink_vmobject = nullptr;
|
||||||
|
@ -185,7 +184,6 @@ ErrorOr<void> FramebufferDevice::create_framebuffer()
|
||||||
}
|
}
|
||||||
m_framebuffer_sink_vmobject = TRY(Memory::AnonymousVMObject::try_create_with_physical_pages(pages.span()));
|
m_framebuffer_sink_vmobject = TRY(Memory::AnonymousVMObject::try_create_with_physical_pages(pages.span()));
|
||||||
|
|
||||||
SpinlockLocker locker(adapter()->operation_lock());
|
|
||||||
m_current_buffer = &buffer_from_index(m_last_set_buffer_index.load());
|
m_current_buffer = &buffer_from_index(m_last_set_buffer_index.load());
|
||||||
create_buffer(m_main_buffer, 0, m_buffer_size);
|
create_buffer(m_main_buffer, 0, m_buffer_size);
|
||||||
create_buffer(m_back_buffer, m_buffer_size, m_buffer_size);
|
create_buffer(m_back_buffer, m_buffer_size, m_buffer_size);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue