serenity/Kernel/Storage
Luke 40de84ba67 Kernel/Storage: Rewrite IDE disk detection and disk access
This replaces the current disk detection and disk access code with
code based on https://wiki.osdev.org/IDE

This allows the system to boot on VirtualBox with serial debugging
enabled and VMWare Player.

I believe there were several issues with the current code:
- It didn't utilise the last 8 bits of the LBA in 24-bit mode.
- {read,write}_sectors_with_dma was not setting the obsolete bits,
  which according to OSdev wiki aren't used but should be set.
- The PIO and DMA methods were using slightly different copy
  and pasted access code, which is now put into a single
  function called "ata_access"
- PIO mode doesn't work. This doesn't fix that and should
  be looked into in the future.
- The detection code was not checking for ATA/ATAPI.
- The detection code accidentally had cyls/heads/spt as 8-bit,
  when they're 16-bit.
- The capabilities of the device were not considered. This is now
  brought in and is currently used to check if the device supports
  LBA. If not, use CHS.
2021-01-29 21:20:38 +01:00
..
Partition Meta: Split debug defines into multiple headers. 2021-01-26 21:20:00 +01:00
IDEChannel.cpp Kernel/Storage: Rewrite IDE disk detection and disk access 2021-01-29 21:20:38 +01:00
IDEChannel.h Kernel/Storage: Rewrite IDE disk detection and disk access 2021-01-29 21:20:38 +01:00
IDEController.cpp Kernel: Untangle StorageController from PCI::DeviceController 2021-01-22 22:17:39 +01:00
IDEController.h Kernel: Untangle StorageController from PCI::DeviceController 2021-01-22 22:17:39 +01:00
PATADiskDevice.cpp Kernel/Storage: Rewrite IDE disk detection and disk access 2021-01-29 21:20:38 +01:00
PATADiskDevice.h Kernel/Storage: Rewrite IDE disk detection and disk access 2021-01-29 21:20:38 +01:00
RamdiskController.cpp Kernel: Implement RamdiskDevice 2021-01-22 22:17:39 +01:00
RamdiskController.h Kernel: Implement RamdiskDevice 2021-01-22 22:17:39 +01:00
RamdiskDevice.cpp Kernel: Make device generate their own names 2021-01-22 22:17:39 +01:00
RamdiskDevice.h Kernel: Make device generate their own names 2021-01-22 22:17:39 +01:00
StorageController.h Kernel: Implement RamdiskDevice 2021-01-22 22:17:39 +01:00
StorageDevice.cpp Meta: Split debug defines into multiple headers. 2021-01-26 21:20:00 +01:00
StorageDevice.h Kernel: Implement RamdiskDevice 2021-01-22 22:17:39 +01:00
StorageManagement.cpp Kernel: Allow disabling of IDE controllers with disable_ide 2021-01-24 22:16:18 +01:00
StorageManagement.h Kernel: Allow to boot from a partition with partition UUID 2021-01-01 22:59:48 +01:00