mirror of
https://github.com/SerenityOS/serenity
synced 2024-10-16 21:04:20 +00:00
40de84ba67
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. |
||
---|---|---|
.. | ||
Partition | ||
IDEChannel.cpp | ||
IDEChannel.h | ||
IDEController.cpp | ||
IDEController.h | ||
PATADiskDevice.cpp | ||
PATADiskDevice.h | ||
RamdiskController.cpp | ||
RamdiskController.h | ||
RamdiskDevice.cpp | ||
RamdiskDevice.h | ||
StorageController.h | ||
StorageDevice.cpp | ||
StorageDevice.h | ||
StorageManagement.cpp | ||
StorageManagement.h |