:: commit 3b7c85ff7142a1317f2d12e339bd7664b0922bd1

Mintsuki <mintsuki@protonmail.com> — 2026-04-04 12:37

parents: 4034c13379

drivers/disk: Add disk_create_index() workaround for optical drive on VMware/BIOS

diff --git a/common/drivers/disk.s2.c b/common/drivers/disk.s2.c
index 2bb4fff4..ba772f00 100644
--- a/common/drivers/disk.s2.c
+++ b/common/drivers/disk.s2.c
@@ -266,6 +266,13 @@ void disk_create_index(void) {
         bool is_atapi = (dpte != NULL && (dpte->flags & (1 << 6)));
         block->is_optical = is_atapi || (block->sector_size == 2048 && is_removable);
 
+        // Ugly workaround for VMware, because it puts the optical drive at 0x9f but does
+        // not expose DPTE.
+        if (drive == 0x9f && block->sector_size == 2048) {
+            is_removable = true;
+            block->is_optical = true;
+        }
+
         if (!is_removable && !block->is_optical) {
             if (consumed_bda_disks == bda_disk_count) {
                 pmm_free(block, sizeof(struct volume));
tab: 248 wrap: offon