diff --git a/odoo/addons/base/models/ir_model.py b/odoo/addons/base/models/ir_model.py
index c6a361b88b1de0eeaf9ee27440260594ccd4ce47..4df60c018d80129f2adafa2ea1ccdbe4d3662eb2 100644
--- a/odoo/addons/base/models/ir_model.py
+++ b/odoo/addons/base/models/ir_model.py
@@ -1179,8 +1179,11 @@ class IrModelSelection(models.Model):
 
         result = super().unlink()
 
-        # setup models; this re-initializes model in registry
-        self.pool.setup_models(self._cr)
+        # Reload registry for normal unlink only. For module uninstall, the
+        # reload is done independently in odoo.modules.loading.
+        if not self._context.get(MODULE_UNINSTALL_FLAG):
+            # setup models; this re-initializes model in registry
+            self.pool.setup_models(self._cr)
 
         return result