}
-static void print_imsm_capability(const struct imsm_orom *orom)
+static void print_imsm_capability(const struct orom_entry *entry)
{
+ const struct imsm_orom *orom = &entry->orom;
+
printf(" Platform : Intel(R) ");
+
if (orom->capabilities == 0 && orom->driver_features == 0)
printf("Matrix Storage Manager\n");
else if (imsm_orom_is_enterprise(orom) && orom->major_ver >= 6)
else
printf("Rapid Storage Technology%s\n",
imsm_orom_is_enterprise(orom) ? " enterprise" : "");
+
if (orom->major_ver || orom->minor_ver || orom->hotfix_ver || orom->build) {
if (imsm_orom_is_vmd_without_efi(orom))
printf(" Version : %d.%d\n", orom->major_ver, orom->minor_ver);
printf("\n");
printf(" 2TB volumes :%s supported\n", (orom->attr & IMSM_OROM_ATTR_2TB) ? "" : " not");
+
printf(" 2TB disks :%s supported\n",
(orom->attr & IMSM_OROM_ATTR_2TB_DISK) ? "" : " not");
+
printf(" Max Disks : %d\n", orom->tds);
+
printf(" Max Volumes : %d per array, %d per %s\n", orom->vpa, orom->vphba,
imsm_orom_is_nvme(orom) ? "platform" : "controller");
+
+ if (entry->type == SYS_DEV_VMD || entry->type == SYS_DEV_NVME)
+ /* This is only meaningful for controllers with nvme support */
+ printf(" 3rd party NVMe :%s supported\n",
+ imsm_orom_has_tpv_support(&entry->orom) ? "" : " not");
return;
}
* platform capabilities. If raid support is disabled in the BIOS the
* option-rom capability structure will not be available.
*/
+ const struct orom_entry *entry;
struct sys_dev *list, *hba;
- int host_base = 0;
+ struct devid_list *devid;
int port_count = 0;
- int result=1;
+ int host_base = 0;
+ int result = 1;
if (enumerate_only) {
if (check_no_platform())
return 0;
+
list = find_intel_devices();
if (!list)
return 2;
- for (hba = list; hba; hba = hba->next) {
- if (find_imsm_capability(hba)) {
- result = 0;
- break;
- }
- else
- result = 2;
- }
- return result;
+
+ for (hba = list; hba; hba = hba->next)
+ if (find_imsm_capability(hba))
+ return 0;
+ return 2;
}
list = find_intel_devices();
continue;
if (!find_imsm_capability(hba)) {
char buf[PATH_MAX];
+
pr_err("imsm capabilities not found for controller: %s (type %s)\n",
hba->type == SYS_DEV_VMD || hba->type == SYS_DEV_SATA_VMD ?
vmd_domain_to_controller(hba, buf) :
return result;
}
- const struct orom_entry *entry;
-
for (entry = orom_entries; entry; entry = entry->next) {
- if (entry->type == SYS_DEV_VMD) {
- print_imsm_capability(&entry->orom);
- printf(" 3rd party NVMe :%s supported\n",
- imsm_orom_has_tpv_support(&entry->orom)?"":" not");
+ print_imsm_capability(entry);
+
+ if (entry->type == SYS_DEV_VMD || entry->type == SYS_DEV_NVME) {
for (hba = list; hba; hba = hba->next) {
- if (hba->type == SYS_DEV_VMD) {
- char buf[PATH_MAX];
+ char buf[PATH_MAX];
+
+ if (hba->type != entry->type)
+ continue;
+
+ if (hba->type == SYS_DEV_VMD)
printf(" I/O Controller : %s (%s)\n",
- vmd_domain_to_controller(hba, buf), get_sys_dev_type(hba->type));
- if (print_nvme_info(hba)) {
- if (verbose > 0)
- pr_err("failed to get devices attached to VMD domain.\n");
- result |= 2;
- }
- }
- }
- printf("\n");
- continue;
- }
+ vmd_domain_to_controller(hba, buf),
+ get_sys_dev_type(hba->type));
- print_imsm_capability(&entry->orom);
- if (entry->type == SYS_DEV_NVME) {
- for (hba = list; hba; hba = hba->next) {
- if (hba->type == SYS_DEV_NVME)
- print_nvme_info(hba);
+ print_nvme_info(hba);
}
printf("\n");
continue;
}
- struct devid_list *devid;
for (devid = entry->devid_list; devid; devid = devid->next) {
hba = device_by_id(devid->devid);
if (!hba)
pr_err("%s controller supports Multi-Path I/O, Intel (R) VROC does not support multipathing\n",
basename(cntrl_path));
- if (super->hba->type == SYS_DEV_VMD && super->orom &&
- !imsm_orom_has_tpv_support(super->orom)) {
+ if (super->orom && !imsm_orom_has_tpv_support(super->orom)) {
pr_err("\tPlatform configuration does not support non-Intel NVMe drives.\n"
"\tPlease refer to Intel(R) RSTe/VROC user guide.\n");
goto error;