Skip to content

Commit 3b39e16

Browse files
committed
Revert "Kernel: Don't override FramebufferDevice's memory regions on mmap"
This reverts commit 85ba70d.
1 parent 09673e7 commit 3b39e16

File tree

2 files changed

+12
-22
lines changed

2 files changed

+12
-22
lines changed

Kernel/Graphics/FramebufferDevice.cpp

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,11 @@ ErrorOr<Memory::Region*> FramebufferDevice::mmap(Process& process, OpenFileDescr
4040
if (range.size() != framebuffer_length)
4141
return EOVERFLOW;
4242

43-
TRY(try_to_initialize());
44-
45-
if (m_userspace_framebuffer_region)
46-
return m_userspace_framebuffer_region;
43+
m_userspace_real_framebuffer_vmobject = TRY(Memory::AnonymousVMObject::try_create_for_physical_range(m_framebuffer_address, framebuffer_length));
44+
m_real_framebuffer_vmobject = TRY(Memory::AnonymousVMObject::try_create_for_physical_range(m_framebuffer_address, framebuffer_length));
45+
m_swapped_framebuffer_vmobject = TRY(Memory::AnonymousVMObject::try_create_with_size(framebuffer_length, AllocationStrategy::AllocateNow));
46+
m_real_framebuffer_region = TRY(MM.allocate_kernel_region_with_vmobject(*m_real_framebuffer_vmobject, framebuffer_length, "Framebuffer", Memory::Region::Access::ReadWrite));
47+
m_swapped_framebuffer_region = TRY(MM.allocate_kernel_region_with_vmobject(*m_swapped_framebuffer_vmobject, framebuffer_length, "Framebuffer Swap (Blank)", Memory::Region::Access::ReadWrite));
4748

4849
RefPtr<Memory::VMObject> chosen_vmobject;
4950
if (m_graphical_writes_enabled) {
@@ -98,26 +99,16 @@ void FramebufferDevice::activate_writes()
9899
m_graphical_writes_enabled = true;
99100
}
100101

101-
ErrorOr<void> FramebufferDevice::try_to_initialize()
102+
UNMAP_AFTER_INIT ErrorOr<void> FramebufferDevice::try_to_initialize()
102103
{
103-
if (m_initialized)
104-
return {};
105-
104+
// FIXME: Would be nice to be able to unify this with mmap above, but this
105+
// function is UNMAP_AFTER_INIT for the time being.
106106
auto framebuffer_length = TRY(buffer_length(0));
107107
framebuffer_length = TRY(Memory::page_round_up(framebuffer_length));
108-
109-
auto real_framebuffer_vmobject = TRY(Memory::AnonymousVMObject::try_create_for_physical_range(m_framebuffer_address, framebuffer_length));
110-
auto swapped_framebuffer_vmobject = TRY(Memory::AnonymousVMObject::try_create_with_size(framebuffer_length, AllocationStrategy::AllocateNow));
111-
auto real_framebuffer_region = TRY(MM.allocate_kernel_region_with_vmobject(*real_framebuffer_vmobject, framebuffer_length, "Framebuffer", Memory::Region::Access::ReadWrite));
112-
auto swapped_framebuffer_region = TRY(MM.allocate_kernel_region_with_vmobject(*swapped_framebuffer_vmobject, framebuffer_length, "Framebuffer Swap (Blank)", Memory::Region::Access::ReadWrite));
113-
114-
m_real_framebuffer_vmobject = move(real_framebuffer_vmobject);
115-
m_swapped_framebuffer_vmobject = move(swapped_framebuffer_vmobject);
116-
m_real_framebuffer_region = move(real_framebuffer_region);
117-
m_swapped_framebuffer_region = move(swapped_framebuffer_region);
118-
119-
m_initialized = true;
120-
108+
m_real_framebuffer_vmobject = TRY(Memory::AnonymousVMObject::try_create_for_physical_range(m_framebuffer_address, framebuffer_length));
109+
m_swapped_framebuffer_vmobject = TRY(Memory::AnonymousVMObject::try_create_with_size(framebuffer_length, AllocationStrategy::AllocateNow));
110+
m_real_framebuffer_region = TRY(MM.allocate_kernel_region_with_vmobject(*m_real_framebuffer_vmobject, framebuffer_length, "Framebuffer", Memory::Region::Access::ReadWrite));
111+
m_swapped_framebuffer_region = TRY(MM.allocate_kernel_region_with_vmobject(*m_swapped_framebuffer_vmobject, framebuffer_length, "Framebuffer Swap (Blank)", Memory::Region::Access::ReadWrite));
121112
return {};
122113
}
123114

Kernel/Graphics/FramebufferDevice.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ class FramebufferDevice final : public GenericFramebufferDevice {
6767

6868
bool m_graphical_writes_enabled { true };
6969
bool m_write_combine { true };
70-
bool m_initialized { false };
7170

7271
RefPtr<Memory::AnonymousVMObject> m_userspace_real_framebuffer_vmobject;
7372
Memory::Region* m_userspace_framebuffer_region { nullptr };

0 commit comments

Comments
 (0)