static int acpi_nfit_register_regions(struct acpi_nfit_desc *acpi_desc)
 {
        struct nfit_spa *nfit_spa;
-       int rc;
 
-       list_for_each_entry(nfit_spa, &acpi_desc->spas, list)
-               if (nfit_spa_type(nfit_spa->spa) == NFIT_SPA_DCR) {
-                       /* BLK regions don't need to wait for ars results */
-                       rc = acpi_nfit_register_region(acpi_desc, nfit_spa);
-                       if (rc)
-                               return rc;
-               }
+       list_for_each_entry(nfit_spa, &acpi_desc->spas, list) {
+               int rc, type = nfit_spa_type(nfit_spa->spa);
+
+               /* PMEM and VMEM will be registered by the ARS workqueue */
+               if (type == NFIT_SPA_PM || type == NFIT_SPA_VOLATILE)
+                       continue;
+               /* BLK apertures belong to BLK region registration below */
+               if (type == NFIT_SPA_BDW)
+                       continue;
+               /* BLK regions don't need to wait for ARS results */
+               rc = acpi_nfit_register_region(acpi_desc, nfit_spa);
+               if (rc)
+                       return rc;
+       }
 
        acpi_desc->ars_start_flags = 0;
        if (!acpi_desc->cancel)