summaryrefslogtreecommitdiff
path: root/Kernel/CommandLine.h
AgeCommit message (Collapse)Author
2021-04-03Kernel/PCI: Introduce a new ECAM access mechanismLiav A
Now the kernel supports 2 ECAM access methods. MMIOAccess was renamed to WindowedMMIOAccess and is what we had until now - each device that is detected on boot is assigned to a memory-mapped window, so IO operations on multiple devices can occur simultaneously due to creating multiple virtual mappings, hence the name is a memory-mapped window. This commit adds a new class called MMIOAccess (not to be confused with the old MMIOAccess class). This class creates one memory-mapped window. On each IO operation on a configuration space of a device, it maps the requested PCI bus region to that window. Therefore it holds a SpinLock during the operation to ensure that no other PCI bus region was mapped during the call. A user can choose to either use PCI ECAM with memory-mapped window for each device, or for an entire bus. By default, the kernel prefers to map the entire PCI bus region.
2021-04-03Kernel: Enable PCI ECAM method again if availableLiav A
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.
2021-03-23Revert "Kernel/AHCI: Add a boot argument to force AHCI to operate on IRQ 11"Liav A
This reverts commit cfc2f33dcba18e2afaeeba6c6158269cb9abea30. We can't actually change the IRQ line value and expect the device to work with it (this was my mistake). That register is R/W so the firmware can figure out IRQ routing and put the correct value and write it to the Interrupt line register.
2021-03-21Kernel/AHCI: Add a boot argument to force AHCI to operate on IRQ 11Liav A
As a compromise, if the fimrware decided to set the IRQ line to be 7, or something else we can't deal with, the user can simply force the code to work with IRQ 11, with the boot argument "force_ahci_irq_11" being set to "on".
2021-03-13Kernel: Don't reset AHCI ports during boot unless requestedLiav A
Instead of blindly resetting every AHCI port, let's just reset only the controller by default. The user can still request to reset everything with a new kernel boot argument called ahci_reset_mode which is set by default to "controller", so the code will only invoke an HBA reset. This kernel boot argument can be set to 3 different values: 1. "controller" - reset the HBA and skip resetting AHCI ports 2. "none" - don't reset anything, so we rely on the firmware to initialize the AHCI HBA and ports for us. 3. "complete" - reset the AHCI HBA and ports.
2021-03-03Kernel: Add 'boot_prof' option to enable full system profiling on bootBrian Gianforcaro
The full system profiling functionality is useful for profiling the boot performance of the system. Add a new kernel boot option to start the system with profiling enabled. This lets you disable and view a profile once the system is booted. You can use it by running: ``` $ run.sh qcmd boot_prof ```
2021-03-03Kernel: Move Kernel CommandLine parsing to strongly typed API.Brian Gianforcaro
Previously all of the CommandLine parsing was spread out around the Kernel. Instead move it all into the Kernel CommandLine class, and expose a strongly typed API for querying the state of options.
2020-08-25Kernel: Copy command line to a safe placeTom
This avoids kmalloc overwriting it because it may be within the kmalloc or eternal pool.
2020-08-22Revert "Kernel: Copy command line to a safe place"Andreas Kling
This reverts commit 41c005cb140c8a9ae94e6b68456d8d6f1d925a8f.
2020-08-22Kernel: Copy command line to a safe placeTom
This avoids kmalloc overwriting it because it may be within the kmalloc or eternal pool.
2020-04-18Kernel: Remove CommandLine::get() in favor of lookup()Andreas Kling
lookup() returns an Optional<String> which allows us to implement easy default values using lookup(key).value_or(default_value);
2020-04-08Kernel: Simplify VMWareBackdoor somewhatAndreas Kling
- If there is no VMWare backdoor, don't allocate memory for it. - Remove the "unsupported" state, instead just don't instantiate. - Move the command-line parsing from init to the driver. - Move mouse packet reception from PS2MouseDevice to VMWareBackdoor.
2020-04-08Kernel: Rename KParams => Kernel::CommandLineAndreas Kling
Let's make this read more like English.