mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 14:12:44 +00:00 
			
		
		
		
	Kernel: Use RefPtr instead of LockRefPtr for PhysicalPage
I believe this to be safe, as the main thing that LockRefPtr provides over RefPtr is safe copying from a shared LockRefPtr instance. I've inspected the uses of RefPtr<PhysicalPage> and it seems they're all guarded by external locking. Some of it is less obvious, but this is an area where we're making continuous headway.
This commit is contained in:
		
							parent
							
								
									5a804b9a1d
								
							
						
					
					
						commit
						2c72d495a3
					
				
					 33 changed files with 141 additions and 138 deletions
				
			
		|  | @ -152,7 +152,7 @@ UNMAP_AFTER_INIT u32 NVMeController::get_admin_q_dept() | |||
| UNMAP_AFTER_INIT ErrorOr<void> NVMeController::identify_and_init_namespaces() | ||||
| { | ||||
| 
 | ||||
|     LockRefPtr<Memory::PhysicalPage> prp_dma_buffer; | ||||
|     RefPtr<Memory::PhysicalPage> prp_dma_buffer; | ||||
|     OwnPtr<Memory::Region> prp_dma_region; | ||||
|     auto namespace_data_struct = TRY(ByteBuffer::create_zeroed(NVMe_IDENTIFY_SIZE)); | ||||
|     u32 active_namespace_list[NVMe_IDENTIFY_SIZE / sizeof(u32)]; | ||||
|  | @ -259,9 +259,9 @@ UNMAP_AFTER_INIT ErrorOr<void> NVMeController::create_admin_queue(Optional<u8> i | |||
| { | ||||
|     auto qdepth = get_admin_q_dept(); | ||||
|     OwnPtr<Memory::Region> cq_dma_region; | ||||
|     NonnullLockRefPtrVector<Memory::PhysicalPage> cq_dma_pages; | ||||
|     NonnullRefPtrVector<Memory::PhysicalPage> cq_dma_pages; | ||||
|     OwnPtr<Memory::Region> sq_dma_region; | ||||
|     NonnullLockRefPtrVector<Memory::PhysicalPage> sq_dma_pages; | ||||
|     NonnullRefPtrVector<Memory::PhysicalPage> sq_dma_pages; | ||||
|     auto cq_size = round_up_to_power_of_two(CQ_SIZE(qdepth), 4096); | ||||
|     auto sq_size = round_up_to_power_of_two(SQ_SIZE(qdepth), 4096); | ||||
|     if (!reset_controller()) { | ||||
|  | @ -300,9 +300,9 @@ UNMAP_AFTER_INIT ErrorOr<void> NVMeController::create_admin_queue(Optional<u8> i | |||
| UNMAP_AFTER_INIT ErrorOr<void> NVMeController::create_io_queue(u8 qid, Optional<u8> irq) | ||||
| { | ||||
|     OwnPtr<Memory::Region> cq_dma_region; | ||||
|     NonnullLockRefPtrVector<Memory::PhysicalPage> cq_dma_pages; | ||||
|     NonnullRefPtrVector<Memory::PhysicalPage> cq_dma_pages; | ||||
|     OwnPtr<Memory::Region> sq_dma_region; | ||||
|     NonnullLockRefPtrVector<Memory::PhysicalPage> sq_dma_pages; | ||||
|     NonnullRefPtrVector<Memory::PhysicalPage> sq_dma_pages; | ||||
|     auto cq_size = round_up_to_power_of_two(CQ_SIZE(IO_QUEUE_SIZE), 4096); | ||||
|     auto sq_size = round_up_to_power_of_two(SQ_SIZE(IO_QUEUE_SIZE), 4096); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling