diff --git a/libpldmresponder/bios_config.cpp b/libpldmresponder/bios_config.cpp
index b3d827f..c7c408e 100644
--- a/libpldmresponder/bios_config.cpp
+++ b/libpldmresponder/bios_config.cpp
@@ -683,7 +683,7 @@
     };
 }
 
-int BIOSConfig::setAttrValue(const void* entry, size_t size,
+int BIOSConfig::setAttrValue(const void* entry, size_t size, bool updateDBus,
                              bool updateBaseBIOSTable)
 {
     auto attrValueTable = getBIOSTable(PLDM_BIOS_ATTR_VAL_TABLE);
@@ -735,7 +735,11 @@
         {
             return PLDM_ERROR;
         }
-        (*iter)->setAttrValueOnDbus(attrValueEntry, attrEntry, biosStringTable);
+        if (updateDBus)
+        {
+            (*iter)->setAttrValueOnDbus(attrValueEntry, attrEntry,
+                                        biosStringTable);
+        }
     }
     catch (const std::exception& e)
     {
@@ -838,10 +842,11 @@
         storeTable(tableDir / attrValueTableFile, *destTable);
     }
 
-    rc = setAttrValue(newValue.data(), newValue.size());
+    rc = setAttrValue(newValue.data(), newValue.size(), false);
     if (rc != PLDM_SUCCESS)
     {
-        std::cerr << "could not setAttrValue on base bios table and dbus \n";
+        std::cerr << "could not setAttrValue on base bios table and dbus, rc = "
+                  << rc << "\n";
     }
 }
 
@@ -912,7 +917,7 @@
 
         (*iter)->generateAttributeEntry(attributevalue, attrValueEntry);
 
-        setAttrValue(attrValueEntry.data(), attrValueEntry.size(), false);
+        setAttrValue(attrValueEntry.data(), attrValueEntry.size());
     }
 
     if (listOfHandles.size())
@@ -925,7 +930,6 @@
             return;
         }
 #endif
-        updateBaseBIOSTableProperty();
     }
 }
 
