]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - platform-intel.c
Add missing 'continue' in Grow_restart.
[thirdparty/mdadm.git] / platform-intel.c
index 03e4ba79608ba694d6e80c1733bbf1ffaba80d8b..d568ca614887bf154adb6a6206115ce462c24f7c 100644 (file)
@@ -90,7 +90,7 @@ struct sys_dev *find_driver_devices(const char *bus, const char *driver)
                list->path = canonicalize_file_name(path);
                list->next = NULL;
        }
-
+       closedir(driver_dir);
        return head;
 }
 
@@ -157,16 +157,39 @@ static int scan(const void *start, const void *end)
 const struct imsm_orom *find_imsm_orom(void)
 {
        static int populated = 0;
+       unsigned long align;
 
        /* it's static data so we only need to read it once */
        if (populated)
                return &imsm_orom;
 
+       if (check_env("IMSM_TEST_OROM")) {
+               memset(&imsm_orom, 0, sizeof(imsm_orom));
+               imsm_orom.rlc = IMSM_OROM_RLC_RAID0 | IMSM_OROM_RLC_RAID1 |
+                               IMSM_OROM_RLC_RAID10 | IMSM_OROM_RLC_RAID5;
+               imsm_orom.sss = IMSM_OROM_SSS_4kB | IMSM_OROM_SSS_8kB |
+                               IMSM_OROM_SSS_16kB | IMSM_OROM_SSS_32kB |
+                               IMSM_OROM_SSS_64kB | IMSM_OROM_SSS_128kB |
+                               IMSM_OROM_SSS_256kB | IMSM_OROM_SSS_512kB |
+                               IMSM_OROM_SSS_1MB | IMSM_OROM_SSS_2MB;
+               imsm_orom.dpa = 6;
+               imsm_orom.tds = 6;
+               imsm_orom.vpa = 2;
+               imsm_orom.vphba = 4;
+               imsm_orom.attr = imsm_orom.rlc | IMSM_OROM_ATTR_ChecksumVerify;
+               populated = 1;
+               return &imsm_orom;
+       }
+
        if (!platform_has_intel_ahci())
                return NULL;
 
        /* scan option-rom memory looking for an imsm signature */
-       if (probe_roms_init() != 0)
+       if (check_env("IMSM_SAFE_OROM_SCAN"))
+               align = 2048;
+       else
+               align = 512;
+       if (probe_roms_init(align) != 0)
                return NULL;
        probe_roms();
        populated = scan_adapter_roms(scan);