ATI SB600 Sata controler isn't detected as such.

Andrey V. Elsukov bu7cher at yandex.ru
Thu Apr 17 11:59:12 UTC 2008


Arnaud Houdelette wrote:
> I removed the jumpers, and drives are recognised as sata300.
> But I still get the "atacontrol: ioctl(IOCATADEVICES): Device not 
> configured" message.
> Thanks anyway. It doesn't really bothers me as long as the controler 
> works fine.

Try this patch.

-- 
WBR, Andrey V. Elsukov
-------------- next part --------------
Index: src/sbin/atacontrol/atacontrol.c
===================================================================
RCS file: /ncvs/src/sbin/atacontrol/atacontrol.c,v
retrieving revision 1.47
diff -u -p -r1.47 atacontrol.c
--- src/sbin/atacontrol/atacontrol.c	17 Mar 2008 10:33:23 -0000	1.47
+++ src/sbin/atacontrol/atacontrol.c	17 Apr 2008 11:56:18 -0000
@@ -259,15 +259,17 @@ ata_cap_print(int fd)
 }
 
 static void
-info_print(int fd, int channel, int prchan)
+info_print(int fd, int channel, int prchan, int quiet)
 {
 	struct ata_ioc_devices devices;
 
 	devices.channel = channel;
 
-	if (ioctl(fd, IOCATADEVICES, &devices) < 0)
-		err(1, "ioctl(IOCATADEVICES)");
-
+	if (ioctl(fd, IOCATADEVICES, &devices) < 0) {
+		if (!quiet)
+			err(1, "ioctl(IOCATADEVICES)");
+		return;
+	}
 	if (prchan)
 		printf("ATA channel %d:\n", channel);
 	printf("%sMaster: ", prchan ? "    " : "");
@@ -392,12 +394,12 @@ main(int argc, char **argv)
 		if (ioctl(fd, IOCATAGMAXCHANNEL, &maxchannel) < 0)
 			err(1, "ioctl(IOCATAGMAXCHANNEL)");
 		for (channel = 0; channel < maxchannel; channel++)
-			info_print(fd, channel, 1);
+			info_print(fd, channel, 1, 1);
 		exit(EX_OK);
 	}
 	if (!strcmp(argv[1], "info") && argc == 3) {
 		channel = ata_arg(argv[2]);
-		info_print(fd, channel, 0);
+		info_print(fd, channel, 0, 0);
 		exit(EX_OK);
 	}
 	if (!strcmp(argv[1], "detach") && argc == 3) {
@@ -410,14 +412,14 @@ main(int argc, char **argv)
 		channel = ata_arg(argv[2]);
 		if (ioctl(fd, IOCATAATTACH, &channel) < 0)
 			err(1, "ioctl(IOCATAATTACH)");
-		info_print(fd, channel, 0);
+		info_print(fd, channel, 0, 0);
 		exit(EX_OK);
 	}
 	if (!strcmp(argv[1], "reinit") && argc == 3) {
 		channel = ata_arg(argv[2]);
 		if (ioctl(fd, IOCATAREINIT, &channel) < 0)
 			warn("ioctl(IOCATAREINIT)");
-		info_print(fd, channel, 0);
+		info_print(fd, channel, 0, 0);
 		exit(EX_OK);
 	}
 	if (!strcmp(argv[1], "create")) {


More information about the freebsd-stable mailing list