Skip to content

Commit 31c4c97

Browse files
Panky-codesIdanHo
authored andcommitted
Kernel: Add UNMAP_AFTER_INIT to NVMe member functions
NVMeController, NVMeQueue and NVMeNameSpace had functions which are not used after init. So add them to UNMAP_AFTER_INIT section.
1 parent 487377d commit 31c4c97

File tree

3 files changed

+12
-12
lines changed

3 files changed

+12
-12
lines changed

Kernel/Storage/NVMe/NVMeController.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,21 @@
1818
namespace Kernel {
1919
Atomic<u8> NVMeController::controller_id {};
2020

21-
ErrorOr<NonnullRefPtr<NVMeController>> NVMeController::try_initialize(const Kernel::PCI::DeviceIdentifier& device_identifier)
21+
UNMAP_AFTER_INIT ErrorOr<NonnullRefPtr<NVMeController>> NVMeController::try_initialize(const Kernel::PCI::DeviceIdentifier& device_identifier)
2222
{
2323
auto controller = TRY(adopt_nonnull_ref_or_enomem(new NVMeController(device_identifier)));
2424
TRY(controller->initialize());
2525
NVMeController::controller_id++;
2626
return controller;
2727
}
2828

29-
NVMeController::NVMeController(const PCI::DeviceIdentifier& device_identifier)
29+
UNMAP_AFTER_INIT NVMeController::NVMeController(const PCI::DeviceIdentifier& device_identifier)
3030
: PCI::Device(device_identifier.address())
3131
, m_pci_device_id(device_identifier)
3232
{
3333
}
3434

35-
ErrorOr<void> NVMeController::initialize()
35+
UNMAP_AFTER_INIT ErrorOr<void> NVMeController::initialize()
3636
{
3737
// Nr of queues = one queue per core
3838
auto nr_of_queues = Processor::count();
@@ -138,7 +138,7 @@ bool NVMeController::start_controller()
138138
return true;
139139
}
140140

141-
u32 NVMeController::get_admin_q_dept()
141+
UNMAP_AFTER_INIT u32 NVMeController::get_admin_q_dept()
142142
{
143143
u32 aqa = m_controller_regs->aqa;
144144
// Queue depth is 0 based
@@ -147,7 +147,7 @@ u32 NVMeController::get_admin_q_dept()
147147
return q_depth;
148148
}
149149

150-
ErrorOr<void> NVMeController::identify_and_init_namespaces()
150+
UNMAP_AFTER_INIT ErrorOr<void> NVMeController::identify_and_init_namespaces()
151151
{
152152

153153
RefPtr<Memory::PhysicalPage> prp_dma_buffer;
@@ -213,7 +213,7 @@ ErrorOr<void> NVMeController::identify_and_init_namespaces()
213213
return {};
214214
}
215215

216-
Tuple<u64, u8> NVMeController::get_ns_features(IdentifyNamespace& identify_data_struct)
216+
UNMAP_AFTER_INIT Tuple<u64, u8> NVMeController::get_ns_features(IdentifyNamespace& identify_data_struct)
217217
{
218218
auto flbas = identify_data_struct.flbas & FLBA_SIZE_MASK;
219219
auto namespace_size = identify_data_struct.nsze;
@@ -253,7 +253,7 @@ void NVMeController::complete_current_request([[maybe_unused]] AsyncDeviceReques
253253
VERIFY_NOT_REACHED();
254254
}
255255

256-
ErrorOr<void> NVMeController::create_admin_queue(u8 irq)
256+
UNMAP_AFTER_INIT ErrorOr<void> NVMeController::create_admin_queue(u8 irq)
257257
{
258258
auto qdepth = get_admin_q_dept();
259259
OwnPtr<Memory::Region> cq_dma_region;
@@ -296,7 +296,7 @@ ErrorOr<void> NVMeController::create_admin_queue(u8 irq)
296296
return {};
297297
}
298298

299-
ErrorOr<void> NVMeController::create_io_queue(u8 irq, u8 qid)
299+
UNMAP_AFTER_INIT ErrorOr<void> NVMeController::create_io_queue(u8 irq, u8 qid)
300300
{
301301
NVMeSubmission sub {};
302302
OwnPtr<Memory::Region> cq_dma_region;

Kernel/Storage/NVMe/NVMeNameSpace.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
namespace Kernel {
1313

14-
ErrorOr<NonnullRefPtr<NVMeNameSpace>> NVMeNameSpace::try_create(NonnullRefPtrVector<NVMeQueue> queues, u8 controller_id, u16 nsid, size_t storage_size, size_t lba_size)
14+
UNMAP_AFTER_INIT ErrorOr<NonnullRefPtr<NVMeNameSpace>> NVMeNameSpace::try_create(NonnullRefPtrVector<NVMeQueue> queues, u8 controller_id, u16 nsid, size_t storage_size, size_t lba_size)
1515
{
1616
auto minor_number = StorageManagement::generate_storage_minor_number();
1717
auto major_number = StorageManagement::storage_type_major_number();
@@ -20,7 +20,7 @@ ErrorOr<NonnullRefPtr<NVMeNameSpace>> NVMeNameSpace::try_create(NonnullRefPtrVec
2020
return device;
2121
}
2222

23-
NVMeNameSpace::NVMeNameSpace(NonnullRefPtrVector<NVMeQueue> queues, size_t max_addresable_block, size_t lba_size, size_t major_number, size_t minor_number, u16 nsid, NonnullOwnPtr<KString> dev_name)
23+
UNMAP_AFTER_INIT NVMeNameSpace::NVMeNameSpace(NonnullRefPtrVector<NVMeQueue> queues, size_t max_addresable_block, size_t lba_size, size_t major_number, size_t minor_number, u16 nsid, NonnullOwnPtr<KString> dev_name)
2424
: StorageDevice(major_number, minor_number, lba_size, max_addresable_block, move(dev_name))
2525
, m_nsid(nsid)
2626
, m_queues(move(queues))

Kernel/Storage/NVMe/NVMeQueue.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ ErrorOr<NonnullRefPtr<NVMeQueue>> NVMeQueue::try_create(u16 qid, u8 irq, u32 q_d
2020
return queue;
2121
}
2222

23-
NVMeQueue::NVMeQueue(u16 qid, u8 irq, u32 q_depth, OwnPtr<Memory::Region> cq_dma_region, NonnullRefPtrVector<Memory::PhysicalPage> cq_dma_page, OwnPtr<Memory::Region> sq_dma_region, NonnullRefPtrVector<Memory::PhysicalPage> sq_dma_page, Memory::TypedMapping<volatile DoorbellRegister> db_regs)
23+
UNMAP_AFTER_INIT NVMeQueue::NVMeQueue(u16 qid, u8 irq, u32 q_depth, OwnPtr<Memory::Region> cq_dma_region, NonnullRefPtrVector<Memory::PhysicalPage> cq_dma_page, OwnPtr<Memory::Region> sq_dma_region, NonnullRefPtrVector<Memory::PhysicalPage> sq_dma_page, Memory::TypedMapping<volatile DoorbellRegister> db_regs)
2424
: IRQHandler(irq)
2525
, m_qid(qid)
2626
, m_admin_queue(qid == 0)
@@ -38,7 +38,7 @@ NVMeQueue::NVMeQueue(u16 qid, u8 irq, u32 q_depth, OwnPtr<Memory::Region> cq_dma
3838
m_cqe_array = { reinterpret_cast<NVMeCompletion*>(m_cq_dma_region->vaddr().as_ptr()), m_qdepth };
3939
}
4040

41-
ErrorOr<void> NVMeQueue::create()
41+
UNMAP_AFTER_INIT ErrorOr<void> NVMeQueue::create()
4242
{
4343
// DMA region for RW operation. For now the requests don't exceed more than 4096 bytes(Storage device takes of it)
4444
auto buffer = TRY(MM.allocate_dma_buffer_page("Admin CQ queue", Memory::Region::Access::ReadWrite, m_rw_dma_page));

0 commit comments

Comments
 (0)