diff --git a/msl_verify.cpp b/msl_verify.cpp
index 1a6234c..36203db 100644
--- a/msl_verify.cpp
+++ b/msl_verify.cpp
@@ -111,18 +111,53 @@
         return true;
     }
 
-    Version minVersion = {0, 0, 0};
-    parse(minShipLevel, minVersion);
+    // Multiple min versions separated by a space can be specified, parse them
+    // into a vector, then sort them in ascending order
+    std::istringstream minStream(minShipLevel);
+    std::vector<std::string> mins(std::istream_iterator<std::string>{minStream},
+                                  std::istream_iterator<std::string>());
+    std::sort(mins.begin(), mins.end());
 
+    // In order to handle non-continuous multiple min versions, need to compare
+    // the major.minor section first, then if they're the same, compare the rev.
+    // Ex: the min versions specified are 2.0.10 and 2.2. We need to pass if
+    // actual is 2.0.11 but fail if it's 2.1.x.
+    // 1. Save off the rev number to compare later if needed.
+    // 2. Zero out the rev number to just compare major and minor.
     Version actualVersion = {0, 0, 0};
     parse(actual, actualVersion);
+    Version actualRev = {0, 0, actualVersion.rev};
+    actualVersion.rev = 0;
 
-    auto rc = compare(actualVersion, minVersion);
+    auto rc = 0;
+    std::string tmpMin{};
+
+    for (auto const& min : mins)
+    {
+        tmpMin = min;
+
+        Version minVersion = {0, 0, 0};
+        parse(min, minVersion);
+        Version minRev = {0, 0, minVersion.rev};
+        minVersion.rev = 0;
+
+        rc = compare(actualVersion, minVersion);
+        if (rc < 0)
+        {
+            break;
+        }
+        else if (rc == 0)
+        {
+            // Same major.minor version, compare the rev
+            rc = compare(actualRev, minRev);
+            break;
+        }
+    }
     if (rc < 0)
     {
         log<level::ERR>(
             "PNOR Mininum Ship Level NOT met",
-            entry("MIN_VERSION=%s", minShipLevel.c_str()),
+            entry("MIN_VERSION=%s", tmpMin.c_str()),
             entry("ACTUAL_VERSION=%s", actual.c_str()),
             entry("VERSION_PURPOSE=%s",
                   "xyz.openbmc_project.Software.Version.VersionPurpose.Host"));
