mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 17:32:44 +00:00 
			
		
		
		
	Kernel: Enable PCI ECAM method again if available
Apparently we don't enable PCI ECAM (MMIO access to the PCI configuration space) even if we can. This is a regression, as it was enabled in the past and in unknown time it was regressed. The CommandLine::is_mmio_enabled method was renamed to CommandLine::is_pci_ecam_enabled to better represent the meaning of this method and what it determines. Also, an UNMAP_AFTER_INIT macro was removed from a method in the MMIOAccess class as it halted the system when the kernel tried to access devices after the boot process.
This commit is contained in:
		
							parent
							
								
									d09cd85b6c
								
							
						
					
					
						commit
						441e374396
					
				
					 4 changed files with 10 additions and 5 deletions
				
			
		|  | @ -108,9 +108,14 @@ UNMAP_AFTER_INIT bool CommandLine::is_vmmouse_enabled() const | ||||||
|     return lookup("vmmouse").value_or("on") == "on"; |     return lookup("vmmouse").value_or("on") == "on"; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| UNMAP_AFTER_INIT bool CommandLine::is_mmio_enabled() const | UNMAP_AFTER_INIT bool CommandLine::is_pci_ecam_enabled() const | ||||||
| { | { | ||||||
|     return lookup("pci_mmio").value_or("off") == "on"; |     auto value = lookup("pci_ecam").value_or("on"); | ||||||
|  |     if (value == "on") | ||||||
|  |         return true; | ||||||
|  |     if (value == "off") | ||||||
|  |         return false; | ||||||
|  |     PANIC("Unknown PCI ECAM setting: {}", value); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| UNMAP_AFTER_INIT bool CommandLine::is_legacy_time_enabled() const | UNMAP_AFTER_INIT bool CommandLine::is_legacy_time_enabled() const | ||||||
|  |  | ||||||
|  | @ -71,7 +71,7 @@ public: | ||||||
|     [[nodiscard]] bool is_ide_enabled() const; |     [[nodiscard]] bool is_ide_enabled() const; | ||||||
|     [[nodiscard]] bool is_smp_enabled() const; |     [[nodiscard]] bool is_smp_enabled() const; | ||||||
|     [[nodiscard]] bool is_vmmouse_enabled() const; |     [[nodiscard]] bool is_vmmouse_enabled() const; | ||||||
|     [[nodiscard]] bool is_mmio_enabled() const; |     [[nodiscard]] bool is_pci_ecam_enabled() const; | ||||||
|     [[nodiscard]] bool is_legacy_time_enabled() const; |     [[nodiscard]] bool is_legacy_time_enabled() const; | ||||||
|     [[nodiscard]] bool is_text_mode() const; |     [[nodiscard]] bool is_text_mode() const; | ||||||
|     [[nodiscard]] bool is_force_pio() const; |     [[nodiscard]] bool is_force_pio() const; | ||||||
|  |  | ||||||
|  | @ -50,7 +50,7 @@ UNMAP_AFTER_INIT static Access::Type detect_optimal_access_type(bool mmio_allowe | ||||||
| 
 | 
 | ||||||
| UNMAP_AFTER_INIT void initialize() | UNMAP_AFTER_INIT void initialize() | ||||||
| { | { | ||||||
|     bool mmio_allowed = kernel_command_line().is_mmio_enabled(); |     bool mmio_allowed = kernel_command_line().is_pci_ecam_enabled(); | ||||||
| 
 | 
 | ||||||
|     if (detect_optimal_access_type(mmio_allowed) == Access::Type::MMIO) |     if (detect_optimal_access_type(mmio_allowed) == Access::Type::MMIO) | ||||||
|         MMIOAccess::initialize(ACPI::Parser::the()->find_table("MCFG")); |         MMIOAccess::initialize(ACPI::Parser::the()->find_table("MCFG")); | ||||||
|  |  | ||||||
|  | @ -126,7 +126,7 @@ UNMAP_AFTER_INIT MMIOAccess::MMIOAccess(PhysicalAddress p_mcfg) | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| UNMAP_AFTER_INIT Optional<VirtualAddress> MMIOAccess::get_device_configuration_space(Address address) | Optional<VirtualAddress> MMIOAccess::get_device_configuration_space(Address address) | ||||||
| { | { | ||||||
|     dbgln_if(PCI_DEBUG, "PCI: Getting device configuration space for {}", address); |     dbgln_if(PCI_DEBUG, "PCI: Getting device configuration space for {}", address); | ||||||
|     for (auto& mapping : m_mapped_device_regions) { |     for (auto& mapping : m_mapped_device_regions) { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Liav A
						Liav A