mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 15:32:46 +00:00 
			
		
		
		
	Kernel: Make the page table quickmaps per-CPU
While the "regular" quickmap (used to temporarily map a physical page at a known address for quick access) has been per-CPU for a while, we also have the PD (page directory) and PT (page table) quickmaps used by the memory management code to edit page tables. These have been global, which meant that SMP systems had to keep fighting over them. This patch makes *all* quickmaps per-CPU. We reserve virtual addresses for up to 64 CPUs worth of quickmaps for now. Note that all quickmaps are still protected by the MM lock, and we'll have to fix that too, before seeing any real throughput improvements.
This commit is contained in:
		
							parent
							
								
									930dedfbd8
								
							
						
					
					
						commit
						a838fdfd88
					
				
					 3 changed files with 21 additions and 34 deletions
				
			
		|  | @ -17,9 +17,11 @@ | |||
| 
 | ||||
| #define KERNEL_PD_END (kernel_mapping_base + KERNEL_PD_SIZE) | ||||
| #define KERNEL_PT1024_BASE (kernel_mapping_base + 0x3FE00000) | ||||
| #define KERNEL_QUICKMAP_PT (KERNEL_PT1024_BASE + 0x6000) | ||||
| #define KERNEL_QUICKMAP_PD (KERNEL_PT1024_BASE + 0x7000) | ||||
| #define KERNEL_QUICKMAP_PER_CPU_BASE (KERNEL_PT1024_BASE + 0x8000) | ||||
| 
 | ||||
| #define KERNEL_MAX_CPU_COUNT 64 | ||||
| #define KERNEL_QUICKMAP_PT_PER_CPU_BASE (KERNEL_PT1024_BASE + (1 * KERNEL_MAX_CPU_COUNT * PAGE_SIZE)) | ||||
| #define KERNEL_QUICKMAP_PD_PER_CPU_BASE (KERNEL_PT1024_BASE + (2 * KERNEL_MAX_CPU_COUNT * PAGE_SIZE)) | ||||
| #define KERNEL_QUICKMAP_PER_CPU_BASE (KERNEL_PT1024_BASE + (3 * KERNEL_MAX_CPU_COUNT * PAGE_SIZE)) | ||||
| 
 | ||||
| #define USER_RANGE_BASE 0x10000 | ||||
| #define USER_RANGE_CEILING (kernel_mapping_base - 0x2000000) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling