Menu

[r7012]: / trunk / patches / freebsd-cam.patch  Maximize  Restore  History

Download this file

58 lines (57 with data), 1.9 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
Index: sys/cam/ata/ata_xpt.c
===================================================================
--- sys/cam/ata/ata_xpt.c (revision 224228)
+++ sys/cam/ata/ata_xpt.c (working copy)
@@ -727,6 +727,7 @@ probedone(struct cam_periph *periph, union ccb *do
struct ata_params *ident_buf;
probe_softc *softc;
struct cam_path *path;
+ cam_status status;
u_int32_t priority;
u_int caps;
int found = 1;
@@ -751,6 +752,7 @@ probedone(struct cam_periph *periph, union ccb *do
xpt_release_devq(done_ccb->ccb_h.path, /*count*/1,
/*run_queue*/TRUE);
}
+ status = done_ccb->ccb_h.status & CAM_STATUS_MASK;
if (softc->restart) {
softc->faults++;
if ((done_ccb->ccb_h.status & CAM_STATUS_MASK) ==
@@ -760,13 +762,33 @@ probedone(struct cam_periph *periph, union ccb *do
goto done;
else
softc->restart = 0;
- } else
+
/* Old PIO2 devices may not support mode setting. */
- if (softc->action == PROBE_SETMODE &&
+ } else if (softc->action == PROBE_SETMODE &&
+ status == CAM_ATA_STATUS_ERROR &&
ata_max_pmode(ident_buf) <= ATA_PIO2 &&
- (ident_buf->capabilities1 & ATA_SUPPORT_IORDY) == 0)
+ (ident_buf->capabilities1 & ATA_SUPPORT_IORDY) == 0) {
goto noerror;
+
/*
+ * Some old WD SATA disks report supported and enabled
+ * device-initiated interface power management, but return
+ * ABORT on attempt to disable it.
+ */
+ } else if (softc->action == PROBE_SETPM &&
+ status == CAM_ATA_STATUS_ERROR) {
+ goto noerror;
+
+ /*
+ * Some HP SATA disks report supported DMA Auto-Activation,
+ * but return ABORT on attempt to enable it.
+ */
+ } else if (softc->action == PROBE_SETDMAAA &&
+ status == CAM_ATA_STATUS_ERROR) {
+ goto noerror;
+ }
+
+ /*
* If we get to this point, we got an error status back
* from the inquiry and the error status doesn't require
* automatically retrying the command. Therefore, the
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.