diff --git a/src/dev/arm/smmu_v3_slaveifc.cc b/src/dev/arm/smmu_v3_slaveifc.cc
index 72c319d..48b1141 100644
--- a/src/dev/arm/smmu_v3_slaveifc.cc
+++ b/src/dev/arm/smmu_v3_slaveifc.cc
@@ -157,7 +157,6 @@
         return false;
     }
 
-    xlateSlotsRemaining--;
     if (pkt->isWrite())
         wrBufSlotsRemaining -= nbeats;
 
@@ -203,8 +202,6 @@
         return false;
     }
 
-    xlateSlotsRemaining--;
-
     std::string proc_name = csprintf("%s.atsport", name());
     const bool ats_request = true;
     SMMUTranslationProcess *proc =
diff --git a/src/dev/arm/smmu_v3_transl.cc b/src/dev/arm/smmu_v3_transl.cc
index 4a3efc6..6e0dacb 100644
--- a/src/dev/arm/smmu_v3_transl.cc
+++ b/src/dev/arm/smmu_v3_transl.cc
@@ -78,6 +78,24 @@
     return req;
 }
 
+SMMUTranslationProcess::SMMUTranslationProcess(const std::string &name,
+    SMMUv3 &_smmu, SMMUv3SlaveInterface &_ifc)
+  :
+    SMMUProcess(name, _smmu),
+    ifc(_ifc)
+{
+    // Decrease number of pending translation slots on the slave interface
+    assert(ifc.xlateSlotsRemaining > 0);
+    ifc.xlateSlotsRemaining--;
+    reinit();
+}
+
+SMMUTranslationProcess::~SMMUTranslationProcess()
+{
+    // Increase number of pending translation slots on the slave interface
+    ifc.xlateSlotsRemaining++;
+}
+
 void
 SMMUTranslationProcess::beginTransaction(const SMMUTranslRequest &req)
 {
@@ -1173,8 +1191,6 @@
     if (!ifc.prefetchEnable || ifc.xlateSlotsRemaining == 0)
         return;
 
-    ifc.xlateSlotsRemaining--;
-
     std::string proc_name = csprintf("%sprf", name());
     SMMUTranslationProcess *proc =
         new SMMUTranslationProcess(proc_name, smmu, ifc);
@@ -1201,7 +1217,6 @@
 
 
     smmu.translationTimeDist.sample(curTick() - recvTick);
-    ifc.xlateSlotsRemaining++;
     if (!request.isAtsRequest && request.isWrite)
         ifc.wrBufSlotsRemaining +=
             (request.size + (ifc.portWidth-1)) / ifc.portWidth;
@@ -1249,8 +1264,6 @@
 void
 SMMUTranslationProcess::completePrefetch(Yield &yield)
 {
-    ifc.xlateSlotsRemaining++;
-
     SMMUAction a;
     a.type = ACTION_TERMINATE;
     a.pkt = NULL;
diff --git a/src/dev/arm/smmu_v3_transl.hh b/src/dev/arm/smmu_v3_transl.hh
index ac0dc77..6a69460 100644
--- a/src/dev/arm/smmu_v3_transl.hh
+++ b/src/dev/arm/smmu_v3_transl.hh
@@ -173,15 +173,9 @@
 
   public:
     SMMUTranslationProcess(const std::string &name, SMMUv3 &_smmu,
-        SMMUv3SlaveInterface &_ifc)
-      :
-        SMMUProcess(name, _smmu),
-        ifc(_ifc)
-    {
-        reinit();
-    }
+        SMMUv3SlaveInterface &_ifc);
 
-    virtual ~SMMUTranslationProcess() {}
+    virtual ~SMMUTranslationProcess();
 
     void beginTransaction(const SMMUTranslRequest &req);
     void resumeTransaction();
