diff --git a/feed/kernel/crypto-eip/src/ddk/device/dmares_gen.c b/feed/kernel/crypto-eip/src/ddk/device/dmares_gen.c
index 7c2c8a5..27472b3 100644
--- a/feed/kernel/crypto-eip/src/ddk/device/dmares_gen.c
+++ b/feed/kernel/crypto-eip/src/ddk/device/dmares_gen.c
@@ -4,20 +4,16 @@
  */
 
 /*****************************************************************************
-* Copyright (c) 2012-2020 by Rambus, Inc. and/or its subsidiaries.
+* Copyright (c) 2012-2024 by Rambus, Inc. and/or its subsidiaries
+* All rights reserved. Unauthorized use (including, without limitation,
+* distribution and copying) is strictly prohibited. All use requires,
+* and is subject to, explicit written authorization and nondisclosure
+* Rambus, Inc. and/or its subsidiaries
 *
-* This program is free software: you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published by
-* the Free Software Foundation, either version 2 of the License, or
-* any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
+* For more information or support, please go to our online support system at
+* https://sipsupport.rambus.com.
+* In case you do not have an account for this system, please send an e-mail
+* to sipsupport@rambus.com.
 *****************************************************************************/
 
 /*----------------------------------------------------------------------------
@@ -784,6 +780,7 @@
     List_Status_t List_rc1, List_rc2;
     List_Element_t * LE_p;
     unsigned long Flags = 0;
+    void *Address;
 
     // Pool list access protected by lock
     HWPAL_DMAResource_Lock_Acquire(Bank_p->Lock_p, &Flags);
@@ -805,6 +802,7 @@
         return -1;
     }
 
+    Address = LE_p->DataObject_p;
     List_rc2 = List_AddToHead(Bank_p->DanglingListID, NULL, LE_p);
 
     HWPAL_DMAResource_Lock_Release(Bank_p->Lock_p, &Flags);
@@ -816,7 +814,7 @@
         return -1;
     }
 
-    *Addr_pp = LE_p->DataObject_p;
+    *Addr_pp = Address;
 
     return 0;
 }
@@ -1081,6 +1079,8 @@
         LOG_CRIT("DMAResource_SG_Release: static banks not supported\n");
         return -1;
     }
+#else
+    return HWPAL_DMAResource_Release(Handle);
 #endif // HWPAL_DMARESOURCE_BANKS_ENABLE
 }
 
@@ -1157,6 +1157,7 @@
                     LOG_CRIT("DMAResource_Release: "
                              "put to DMA pool failed for handle %p\n",
                              Handle);
+                    HWPAL_DMAResource_Release(Handle);
                     return -1;
                 }
             }
@@ -1281,7 +1282,6 @@
 #endif
 
     Pair_p = DMAResourceLib_LookupDomain(Rec_p, DMARES_DOMAIN_HOST);
-#ifndef HWPAL_DMARESOURCE_OPT1
     if (Pair_p == NULL)
     {
         LOG_WARN(
@@ -1291,8 +1291,7 @@
 
         return 0;
     }
-#endif
-
+    else
     {
         uint32_t * Address_p = Pair_p->Address_p;
         uint32_t Value = read32_volatile(Address_p + WordOffset);
@@ -1359,7 +1358,6 @@
 #endif
 
     Pair_p = DMAResourceLib_LookupDomain(Rec_p, DMARES_DOMAIN_HOST);
-#ifndef HWPAL_DMARESOURCE_OPT1
     if (Pair_p == NULL)
     {
         LOG_WARN(
@@ -1369,23 +1367,21 @@
 
         return;
     }
-#endif
-
-#ifdef HWPAL_TRACE_DMARESOURCE_WRITE
-    Log_FormattedMessage(
-        "DMAResource_Write32: "
-        "(handle %p) "
-        "[%u] = 0x%08x "
-        "(swap=%d)\n",
-        Handle,
-        WordOffset,
-        Value,
-        Rec_p->fSwapEndianness);
-#endif
-
+    else
     {
         uint32_t * Address_p = Pair_p->Address_p;
         uint32_t WriteValue = Value;
+#ifdef HWPAL_TRACE_DMARESOURCE_WRITE
+        Log_FormattedMessage(
+            "DMAResource_Write32: "
+            "(handle %p) "
+            "[%u] = 0x%08x "
+            "(swap=%d)\n",
+            Handle,
+            WordOffset,
+            Value,
+            Rec_p->fSwapEndianness);
+#endif
 
 #ifndef HWPAL_DMARESOURCE_OPT2
         // swap endianness, if required
@@ -1446,7 +1442,7 @@
 
         return;
     }
-
+    else
     {
         uint32_t * Address_p = Pair_p->Address_p;
         unsigned int i;
@@ -1461,11 +1457,7 @@
 
             Values_p[i] = Value;
         } // for
-    }
-
 #ifdef HWPAL_TRACE_DMARESOURCE_READ
-    {
-        uint32_t * Address_p = Pair_p->Address_p;
         if (Values_p == Address_p + StartWordOffset)
         {
             Log_FormattedMessage(
@@ -1490,8 +1482,8 @@
                 StartWordOffset + WordCount - 1,
                 Rec_p->fSwapEndianness);
         }
-    }
 #endif
+    }
 }
 
 
@@ -1543,7 +1535,7 @@
 
         return;
     }
-
+    else
     {
         uint32_t * Address_p = Pair_p->Address_p;
         unsigned int i;
@@ -1558,11 +1550,7 @@
 
             write32_volatile(Value, Address_p + StartWordOffset + i);
         } // for
-    }
-
 #ifdef HWPAL_TRACE_DMARESOURCE_WRITE
-    {
-        uint32_t * Address_p = Pair_p->Address_p;
         if (Values_p == Address_p + StartWordOffset)
         {
             Log_FormattedMessage(
@@ -1587,8 +1575,8 @@
                 StartWordOffset + WordCount - 1,
                 Rec_p->fSwapEndianness);
         }
-    }
 #endif /* HWPAL_TRACE_DMARESOURCE_WRITE */
+    }
 }
 
 
diff --git a/feed/kernel/crypto-eip/src/ddk/device/lkm/dmares_lkm.c b/feed/kernel/crypto-eip/src/ddk/device/lkm/dmares_lkm.c
index 49d183a..bb11b2f 100644
--- a/feed/kernel/crypto-eip/src/ddk/device/lkm/dmares_lkm.c
+++ b/feed/kernel/crypto-eip/src/ddk/device/lkm/dmares_lkm.c
@@ -185,7 +185,6 @@
 
 static void * HWPAL_Lock_p;
 
-
 /*----------------------------------------------------------------------------
  * DMAResourceLib_IdxPair2RecordPtr
  *
@@ -639,45 +638,14 @@
 
     // Allocate DMA resource
     {
-        struct device * DMADevice_p;
         size_t n = 0;
-        void  * UnalignedAddr_p = NULL;
-        //void * AlignedAddr_p = NULL;
-        //dma_addr_t DMAAddr = 0;
-        //phys_addr_t PhysAddr = 0;
-        Device_Data_t DevData;
-
-        ZEROINIT(DevData);
 
-        // Get device reference for this resource
-        DMADevice_p = Device_GetReference(NULL, &DevData);
-        {
-            gfp_t flags = HWPAL_DMA_FLAGS;
-
-            // Non-fixed dynamic address buffer allocation
-
-            // Align if required
-            n = DMAResourceLib_AlignForAddress(
-                 DMAResourceLib_AlignForSize(RequestedProperties.Size,
-                 AlignTo),
-                 AlignTo);
-
-            if (in_atomic())
-                flags |= GFP_ATOMIC;    // non-sleepable
-            else
-                flags |= GFP_KERNEL;    // sleepable
+        // Align if required
+        n = DMAResourceLib_AlignForAddress(
+             DMAResourceLib_AlignForSize(RequestedProperties.Size,
+             AlignTo),
+             AlignTo);
 
-            UnalignedAddr_p = kmalloc(n, flags);
-            if (UnalignedAddr_p == NULL)
-            {
-                LOG_CRIT("DMAResource_Alloc: failed for handle 0x%p,"
-                        " size %d\n",
-                         Handle,(unsigned int)n);
-                DMAResource_DestroyRecord(Handle);
-                return -1;
-            }
-        }
-        
         DMAResourceLib_Setup_Record(&ActualProperties, 'A', Rec_p, n);
 
         Pair_p = Rec_p->AddrPairs;
@@ -685,7 +653,7 @@
         Pair_p->Domain = DMARES_DOMAIN_BUS;
 
         ++Pair_p;
-        Pair_p->Address_p = UnalignedAddr_p;
+        Pair_p->Address_p = (void *)(uintptr_t) DmaAddress; //UnalignedAddr_p;
         Pair_p->Domain = DMARES_DOMAIN_HOST;
 
         // Return this address
@@ -693,7 +661,7 @@
 
         // This host address will be used for freeing the allocated buffer
         ++Pair_p;
-        Pair_p->Address_p = UnalignedAddr_p;
+        Pair_p->Address_p = (void *)(uintptr_t) DmaAddress; //UnalignedAddr_p;
         Pair_p->Domain = DMARES_DOMAIN_HOST_UNALIGNED;
     }
 
@@ -1082,19 +1050,6 @@
                 Handle);
             return -1;
         }
-
-        Pair_p = DMAResourceLib_LookupDomain(Rec_p,
-                                             DMARES_DOMAIN_HOST_UNALIGNED);
-        if (Pair_p == NULL)
-        {
-            LOG_WARN(
-                "HW_DMAResource_SG_Release: "
-                "No host address found for Handle %p?\n",
-                Handle);
-            return -1;
-        }
-        
-        kfree(Pair_p->Address_p);
     }
     // free administration resources
     Rec_p->Magic = 0;
