diff --git a/aosp/dynamic_partition_control_android.cc b/aosp/dynamic_partition_control_android.cc
index c4d6935..a1d5e91 100644
--- a/aosp/dynamic_partition_control_android.cc
+++ b/aosp/dynamic_partition_control_android.cc
@@ -1200,22 +1200,32 @@
 }
 
 bool DynamicPartitionControlAndroid::ListDynamicPartitionsForSlot(
-    uint32_t current_slot, std::vector<std::string>* partitions) {
-  if (!GetDynamicPartitionsFeatureFlag().IsEnabled()) {
-    LOG(ERROR) << "Dynamic partition is not enabled";
-    return false;
+    uint32_t slot,
+    uint32_t current_slot,
+    std::vector<std::string>* partitions) {
+  bool slot_enables_dynamic_partitions =
+      GetDynamicPartitionsFeatureFlag().IsEnabled();
+  // Check if the target slot has dynamic partitions, this may happen when
+  // applying a retrofit package.
+  if (slot != current_slot) {
+    slot_enables_dynamic_partitions =
+        slot_enables_dynamic_partitions && is_target_dynamic_;
+  }
+
+  if (!slot_enables_dynamic_partitions) {
+    LOG(INFO) << "Dynamic partition is not enabled for slot " << slot;
+    return true;
   }
 
   std::string device_dir_str;
   TEST_AND_RETURN_FALSE(GetDeviceDir(&device_dir_str));
   base::FilePath device_dir(device_dir_str);
-  auto super_device =
-      device_dir.Append(GetSuperPartitionName(current_slot)).value();
-  auto builder = LoadMetadataBuilder(super_device, current_slot);
+  auto super_device = device_dir.Append(GetSuperPartitionName(slot)).value();
+  auto builder = LoadMetadataBuilder(super_device, slot);
   TEST_AND_RETURN_FALSE(builder != nullptr);
 
   std::vector<std::string> result;
-  auto suffix = SlotSuffixForSlotNumber(current_slot);
+  auto suffix = SlotSuffixForSlotNumber(slot);
   for (const auto& group : builder->ListGroups()) {
     for (const auto& partition : builder->ListPartitionsInGroup(group)) {
       std::string_view partition_name = partition->name();
@@ -1332,7 +1342,9 @@
     const std::string& partition_name) {
   if (dynamic_partition_list_.empty() &&
       GetDynamicPartitionsFeatureFlag().IsEnabled()) {
-    CHECK(ListDynamicPartitionsForSlot(source_slot_, &dynamic_partition_list_));
+    // Use the DAP config of the target slot.
+    CHECK(ListDynamicPartitionsForSlot(
+        target_slot_, source_slot_, &dynamic_partition_list_));
   }
   return std::find(dynamic_partition_list_.begin(),
                    dynamic_partition_list_.end(),
diff --git a/aosp/dynamic_partition_control_android.h b/aosp/dynamic_partition_control_android.h
index a0d7f30..d7c8781 100644
--- a/aosp/dynamic_partition_control_android.h
+++ b/aosp/dynamic_partition_control_android.h
@@ -58,7 +58,9 @@
   bool ResetUpdate(PrefsInterface* prefs) override;
 
   bool ListDynamicPartitionsForSlot(
-      uint32_t current_slot, std::vector<std::string>* partitions) override;
+      uint32_t slot,
+      uint32_t current_slot,
+      std::vector<std::string>* partitions) override;
 
   bool VerifyExtentsForUntouchedPartitions(
       uint32_t source_slot,
diff --git a/common/dynamic_partition_control_interface.h b/common/dynamic_partition_control_interface.h
index 8368eeb..61127d4 100644
--- a/common/dynamic_partition_control_interface.h
+++ b/common/dynamic_partition_control_interface.h
@@ -134,11 +134,13 @@
   // allocated space for snapshot updates.
   virtual bool ResetUpdate(PrefsInterface* prefs) = 0;
 
-  // Reads the dynamic partitions metadata from the current slot, and puts the
+  // Reads the dynamic partitions metadata from the given slot, and puts the
   // name of the dynamic partitions with the current suffix to |partitions|.
   // Returns true on success.
   virtual bool ListDynamicPartitionsForSlot(
-      uint32_t current_slot, std::vector<std::string>* partitions) = 0;
+      uint32_t slot,
+      uint32_t current_slot,
+      std::vector<std::string>* partitions) = 0;
 
   // Finds a possible location that list all block devices by name; and puts
   // the result in |path|. Returns true on success.
diff --git a/common/dynamic_partition_control_stub.cc b/common/dynamic_partition_control_stub.cc
index b6eff84..7d0ef18 100644
--- a/common/dynamic_partition_control_stub.cc
+++ b/common/dynamic_partition_control_stub.cc
@@ -73,7 +73,9 @@
 }
 
 bool DynamicPartitionControlStub::ListDynamicPartitionsForSlot(
-    uint32_t current_slot, std::vector<std::string>* partitions) {
+    uint32_t slot,
+    uint32_t current_slot,
+    std::vector<std::string>* partitions) {
   return true;
 }
 
diff --git a/common/dynamic_partition_control_stub.h b/common/dynamic_partition_control_stub.h
index 822fa1b..5ab82f5 100644
--- a/common/dynamic_partition_control_stub.h
+++ b/common/dynamic_partition_control_stub.h
@@ -50,7 +50,9 @@
   bool ResetUpdate(PrefsInterface* prefs) override;
 
   bool ListDynamicPartitionsForSlot(
-      uint32_t current_slot, std::vector<std::string>* partitions) override;
+      uint32_t slot,
+      uint32_t current_slot,
+      std::vector<std::string>* partitions) override;
   bool GetDeviceDir(std::string* path) override;
 
   bool VerifyExtentsForUntouchedPartitions(
diff --git a/common/mock_dynamic_partition_control.h b/common/mock_dynamic_partition_control.h
index a00ec61..74f4efc 100644
--- a/common/mock_dynamic_partition_control.h
+++ b/common/mock_dynamic_partition_control.h
@@ -72,8 +72,9 @@
               (override));
   MOCK_METHOD(bool,
               ListDynamicPartitionsForSlot,
-              (uint32_t, std::vector<std::string>*),
+              (uint32_t, uint32_t, std::vector<std::string>*),
               (override));
+
   MOCK_METHOD(bool,
               VerifyExtentsForUntouchedPartitions,
               (uint32_t, uint32_t, const std::vector<std::string>&),
diff --git a/payload_consumer/delta_performer.cc b/payload_consumer/delta_performer.cc
index dbb0f86..c6d6343 100644
--- a/payload_consumer/delta_performer.cc
+++ b/payload_consumer/delta_performer.cc
@@ -641,11 +641,6 @@
     }
   }
 
-  auto dynamic_control = boot_control_->GetDynamicPartitionControl();
-  CHECK_NE(dynamic_control, nullptr);
-  TEST_AND_RETURN_FALSE(dynamic_control->ListDynamicPartitionsForSlot(
-      install_plan_->target_slot, &dynamic_partitions_));
-
   // Partitions in manifest are no longer needed after preparing partitions.
   manifest_.clear_partitions();
   // TODO(xunchang) TBD: allow partial update only on devices with dynamic
@@ -673,6 +668,7 @@
     std::vector<std::string> dynamic_partitions;
     if (!boot_control_->GetDynamicPartitionControl()
              ->ListDynamicPartitionsForSlot(install_plan_->source_slot,
+                                            boot_control_->GetCurrentSlot(),
                                             &dynamic_partitions)) {
       LOG(ERROR) << "Failed to load dynamic partitions from slot "
                  << install_plan_->source_slot;
@@ -1524,9 +1520,8 @@
 }
 
 bool DeltaPerformer::IsDynamicPartition(const std::string& part_name) {
-  return std::find(dynamic_partitions_.begin(),
-                   dynamic_partitions_.end(),
-                   part_name) != dynamic_partitions_.end();
+  return boot_control_->GetDynamicPartitionControl()->IsDynamicPartition(
+      part_name);
 }
 
 std::unique_ptr<PartitionWriter> DeltaPerformer::CreatePartitionWriter(
diff --git a/payload_consumer/delta_performer.h b/payload_consumer/delta_performer.h
index ec23997..31fa6b2 100644
--- a/payload_consumer/delta_performer.h
+++ b/payload_consumer/delta_performer.h
@@ -436,8 +436,6 @@
 
   std::unique_ptr<PartitionWriter> partition_writer_;
 
-  // List of dynamic partitions on device.
-  std::vector<std::string> dynamic_partitions_;
   DISALLOW_COPY_AND_ASSIGN(DeltaPerformer);
 };
 
diff --git a/payload_consumer/filesystem_verifier_action_unittest.cc b/payload_consumer/filesystem_verifier_action_unittest.cc
index e9560f0..658ebe1 100644
--- a/payload_consumer/filesystem_verifier_action_unittest.cc
+++ b/payload_consumer/filesystem_verifier_action_unittest.cc
@@ -426,9 +426,9 @@
       .Times(AtLeast(1));
   EXPECT_CALL(dynamic_control, OpenCowReader(part.name, {part.source_path}, _))
       .Times(1);
-  EXPECT_CALL(dynamic_control, ListDynamicPartitionsForSlot(_, _))
+  EXPECT_CALL(dynamic_control, ListDynamicPartitionsForSlot(_, _, _))
       .WillRepeatedly(
-          DoAll(SetArgPointee<1, std::vector<std::string>>({part.name}),
+          DoAll(SetArgPointee<2, std::vector<std::string>>({part.name}),
                 Return(true)));
 
   BuildActions(install_plan, &dynamic_control);
