Changeset View
Changeset View
Standalone View
Standalone View
sys/cam/ata/ata_xpt.c
Show First 20 Lines • Show All 831 Lines • ▼ Show 20 Lines | case PROBE_RESET: | ||||
int sign = (done_ccb->ataio.res.lba_high << 8) + | int sign = (done_ccb->ataio.res.lba_high << 8) + | ||||
done_ccb->ataio.res.lba_mid; | done_ccb->ataio.res.lba_mid; | ||||
CAM_DEBUG(path, CAM_DEBUG_PROBE, | CAM_DEBUG(path, CAM_DEBUG_PROBE, | ||||
("SIGNATURE: %04x\n", sign)); | ("SIGNATURE: %04x\n", sign)); | ||||
if (sign == 0x0000 && | if (sign == 0x0000 && | ||||
done_ccb->ccb_h.target_id != 15) { | done_ccb->ccb_h.target_id != 15) { | ||||
path->device->protocol = PROTO_ATA; | path->device->protocol = PROTO_ATA; | ||||
PROBE_SET_ACTION(softc, PROBE_IDENTIFY); | PROBE_SET_ACTION(softc, PROBE_IDENTIFY); | ||||
if (vm_guest == VM_GUEST_HV) { | |||||
/* | |||||
* XXX: VM for Hyper-V should ignore ATA | |||||
*/ | |||||
goto device_fail; | |||||
} | |||||
} else if (sign == 0x9669 && | } else if (sign == 0x9669 && | ||||
done_ccb->ccb_h.target_id == 15) { | done_ccb->ccb_h.target_id == 15) { | ||||
/* Report SIM that PM is present. */ | /* Report SIM that PM is present. */ | ||||
bzero(&cts, sizeof(cts)); | bzero(&cts, sizeof(cts)); | ||||
xpt_setup_ccb(&cts.ccb_h, path, CAM_PRIORITY_NONE); | xpt_setup_ccb(&cts.ccb_h, path, CAM_PRIORITY_NONE); | ||||
cts.ccb_h.func_code = XPT_SET_TRAN_SETTINGS; | cts.ccb_h.func_code = XPT_SET_TRAN_SETTINGS; | ||||
cts.type = CTS_TYPE_CURRENT_SETTINGS; | cts.type = CTS_TYPE_CURRENT_SETTINGS; | ||||
cts.xport_specific.sata.pm_present = 1; | cts.xport_specific.sata.pm_present = 1; | ||||
▲ Show 20 Lines • Show All 1,328 Lines • Show Last 20 Lines |