PATCH 4/5] imsm: detail_platform_imsm supports Intel SAS controller (isci driver)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>From 3b9e73baf8c3015f08219658b04808319f79b2a4 Mon Sep 17 00:00:00 2001
From: Marcin Labun <marcin.labun@xxxxxxxxx>
Date: Wed, 19 Jan 2011 12:18:48 +0100
Subject: [PATCH 4/5] imsm: detail_platform_imsm supports Intel SAS controller (isci driver)

Added support in detail_platform_imsm for Intel (R) SAS controller.
Function supports AHCI and ISCI controllers. RAID properties are derived
from common OROM for both types.

Based on code From: Artur Wojcik <artur.wojcik@xxxxxxxxx>
Signed-off-by: Marcin Labun <marcin.labun@xxxxxxxxx>
---
 super-intel.c |   28 ++++++++++++++++------------
 1 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/super-intel.c b/super-intel.c
index d77d61c..8f8e062 100644
--- a/super-intel.c
+++ b/super-intel.c
@@ -1288,12 +1288,15 @@ static int ahci_enumerate_ports(const char *hba_path, int port_count, int host_b
 }
 
 
+
 static void print_found_intel_controllers(struct sys_dev *elem)
 {
 	for (; elem; elem = elem->next) {
 		fprintf(stderr, Name ": found Intel(R) ");
 		if (elem->type == SYS_DEV_SATA)
 			fprintf(stderr, "SATA ");
+		else if (elem->type == SYS_DEV_SAS)
+			fprintf(stderr, "SAS ");
 		fprintf(stderr, "RAID controller");
 		if (elem->pci_id)
 			fprintf(stderr, " at %s", elem->pci_id);
@@ -1302,7 +1305,6 @@ static void print_found_intel_controllers(struct sys_dev *elem)
 	fflush(stderr);
 }
 
-
 static int ahci_get_port_count(const char *hba_path, int *port_count)
 {
 	struct dirent *ent;
@@ -1355,22 +1357,19 @@ static int detail_platform_imsm(int verbose, int enumerate_only)
 		return 2;
 	}
 
-	list = find_driver_devices("pci", "ahci");
-	for (hba = list; hba; hba = hba->next)
-		if (devpath_to_vendor(hba->path) == 0x8086)
-			break;
-
-	if (!hba) {
+	list = find_intel_devices();
+	if (!list) {
 		if (verbose)
-			fprintf(stderr, Name ": unable to find active ahci controller\n");
+			fprintf(stderr, Name ": no active Intel(R) RAID "
+				"controller found.\n");
 		free_sys_dev(&list);
 		return 2;
 	} else if (verbose)
-		fprintf(stderr, Name ": found Intel SATA AHCI Controller\n");
+		print_found_intel_controllers(list);
 
-	print_found_intel_controllers(list);
 	orom = find_imsm_orom();
 	if (!orom) {
+		free_sys_dev(&list);
 		if (verbose)
 			fprintf(stderr, Name ": imsm option-rom not found\n");
 		return 2;
@@ -1405,7 +1404,6 @@ static int detail_platform_imsm(int verbose, int enumerate_only)
 	printf("      Max Disks : %d\n", orom->tds);
 	printf("    Max Volumes : %d\n", orom->vpa);
 
-
 	for (hba = list; hba; hba = hba->next) {
 		printf(" I/O Controller : %s (%s)\n",
 			hba->path, get_sys_dev_type(hba->type));
@@ -1418,8 +1416,14 @@ static int detail_platform_imsm(int verbose, int enumerate_only)
 						"ports on SATA controller at %s.", hba->pci_id);
 				result |= 2;
 			}
+		} else if (hba->type == SYS_DEV_SAS) {
+				if (verbose)
+					fprintf(stderr, Name ": failed to enumerate "
+						"devices on SAS controller at %s.", hba->pci_id);
+				result |= 2;
 		}
 	}
+
 	free_sys_dev(&list);
 	return result;
 }
@@ -2701,7 +2705,7 @@ static void __free_imsm(struct intel_super *super, int free_disks)
 		next = elem->next;
 		free(elem);
 		elem = next;
- 	}
+	}
 	super->hba = NULL;
 }
 
-- 
1.6.4.2

--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux