if (err < 0)
                return err;
 
-       /* Only create debugfs entries during the initial setup
-        * phase and not every time the controller gets powered on.
+       /* This function is only called when the controller is actually in
+        * configured state. When the controller is marked as unconfigured,
+        * this initialization procedure is not run.
+        *
+        * It means that it is possible that a controller runs through its
+        * setup phase and then discovers missing settings. If that is the
+        * case, then this function will not be called. It then will only
+        * be called during the config phase.
+        *
+        * So only when in setup phase or config phase, create the debugfs
+        * entries and register the SMP channels.
         */
-       if (!test_bit(HCI_SETUP, &hdev->dev_flags))
+       if (!test_bit(HCI_SETUP, &hdev->dev_flags) &&
+           !test_bit(HCI_CONFIG, &hdev->dev_flags))
                return 0;
 
        hci_debugfs_create_common(hdev);