return 0;
 }
 
-static int sof_ipc4_query_fw_configuration(struct snd_sof_dev *sdev)
+int sof_ipc4_query_fw_configuration(struct snd_sof_dev *sdev)
 {
        struct sof_ipc4_fw_data *ipc4_data = sdev->private;
        const struct sof_ipc_ops *iops = sdev->ipc->ops;
 const struct sof_ipc_fw_loader_ops ipc4_loader_ops = {
        .validate = sof_ipc4_validate_firmware,
        .parse_ext_manifest = sof_ipc4_fw_parse_basefw_ext_man,
-       .query_fw_configuration = sof_ipc4_query_fw_configuration,
 };
 
 int sof_ipc4_set_pipeline_state(struct snd_sof_dev *sdev, u32 id, u32 state);
 int sof_ipc4_mtrace_update_pos(struct snd_sof_dev *sdev, int core);
 
+int sof_ipc4_query_fw_configuration(struct snd_sof_dev *sdev);
 struct sof_ipc4_fw_module *sof_ipc4_find_module_by_uuid(struct snd_sof_dev *sdev,
                                                        const guid_t *uuid);
 #endif
 
        xa_destroy(&ipc4_data->fw_lib_xa);
 }
 
+static int sof_ipc4_post_boot(struct snd_sof_dev *sdev)
+{
+       if (sdev->first_boot)
+               return sof_ipc4_query_fw_configuration(sdev);
+
+       return 0;
+}
+
 const struct sof_ipc_ops ipc4_ops = {
        .init = sof_ipc4_init,
        .exit = sof_ipc4_exit,
+       .post_fw_boot = sof_ipc4_post_boot,
        .tx_msg = sof_ipc4_tx_msg,
        .rx_msg = sof_ipc4_rx_msg,
        .set_get_data = sof_ipc4_set_get_data,