int hda_dsp_enable_core(struct snd_sof_dev *sdev, unsigned int core_mask)
 {
+       struct sof_intel_hda_dev *hda = sdev->pdata->hw_pdata;
+       const struct sof_intel_dsp_desc *chip = hda->desc;
        int ret;
 
-       /* return if core is already enabled */
-       if (hda_dsp_core_is_enabled(sdev, core_mask))
+       /* restrict core_mask to host managed cores mask */
+       core_mask &= chip->host_managed_cores_mask;
+
+       /* return if core_mask is not valid or cores are already enabled */
+       if (!core_mask || hda_dsp_core_is_enabled(sdev, core_mask))
                return 0;
 
        /* power up */
 int hda_dsp_core_reset_power_down(struct snd_sof_dev *sdev,
                                  unsigned int core_mask)
 {
+       struct sof_intel_hda_dev *hda = sdev->pdata->hw_pdata;
+       const struct sof_intel_dsp_desc *chip = hda->desc;
        int ret;
 
+       /* restrict core_mask to host managed cores mask */
+       core_mask &= chip->host_managed_cores_mask;
+
+       /* return if core_mask is not valid */
+       if (!core_mask)
+               return 0;
+
        /* place core in reset prior to power down */
        ret = hda_dsp_core_stall_reset(sdev, core_mask);
        if (ret < 0) {