Index: /trunk/src/VBox/Devices/PC/BIOS/ahci.c
===================================================================
--- /trunk/src/VBox/Devices/PC/BIOS/ahci.c	(revision 42810)
+++ /trunk/src/VBox/Devices/PC/BIOS/ahci.c	(revision 42811)
@@ -491,5 +491,5 @@
     uint16_t        device_id;
 
-    device_id = bios_dsk->drqp.dev_id - BX_MAX_ATA_DEVICES - BX_MAX_SCSI_DEVICES;
+    device_id = VBOX_GET_AHCI_DEVICE(bios_dsk->drqp.dev_id);
     if (device_id > BX_MAX_AHCI_DEVICES)
         BX_PANIC("%s: device_id out of range %d\n", __func__, device_id);
@@ -520,5 +520,5 @@
     uint16_t        device_id;
 
-    device_id = bios_dsk->drqp.dev_id - BX_MAX_ATA_DEVICES - BX_MAX_SCSI_DEVICES;
+    device_id = VBOX_GET_AHCI_DEVICE(bios_dsk->drqp.dev_id);
     if (device_id > BX_MAX_AHCI_DEVICES)
         BX_PANIC("%s: device_id out of range %d\n", __func__, device_id);
@@ -559,5 +559,5 @@
 
     /* Convert to AHCI specific device number. */
-    device_id = device_id - BX_MAX_ATA_DEVICES - BX_MAX_SCSI_DEVICES;
+    device_id = VBOX_GET_AHCI_DEVICE(device_id);
 
     DBG_AHCI("%s: reading %lu bytes, skip %u/%u, device %d, port %d\n", __func__,
Index: /trunk/src/VBox/Devices/PC/BIOS/scsi.c
===================================================================
--- /trunk/src/VBox/Devices/PC/BIOS/scsi.c	(revision 42810)
+++ /trunk/src/VBox/Devices/PC/BIOS/scsi.c	(revision 42811)
@@ -163,5 +163,5 @@
     uint8_t             device_id;
 
-    device_id = bios_dsk->drqp.dev_id - BX_MAX_ATA_DEVICES;
+    device_id = VBOX_GET_SCSI_DEVICE(bios_dsk->drqp.dev_id);
     if (device_id > BX_MAX_SCSI_DEVICES)
         BX_PANIC("scsi_read_sectors: device_id out of range %d\n", device_id);
@@ -208,5 +208,5 @@
     uint8_t             device_id;
 
-    device_id = bios_dsk->drqp.dev_id - BX_MAX_ATA_DEVICES;
+    device_id = VBOX_GET_SCSI_DEVICE(bios_dsk->drqp.dev_id);
     if (device_id > BX_MAX_SCSI_DEVICES)
         BX_PANIC("scsi_write_sectors: device_id out of range %d\n", device_id);
