static const struct sof_topology_token ipc4_sched_tokens[] = {
        {SOF_TKN_SCHED_LP_MODE, SND_SOC_TPLG_TUPLE_TYPE_WORD, get_token_u32,
-               offsetof(struct sof_ipc4_pipeline, lp_mode)}
+               offsetof(struct sof_ipc4_pipeline, lp_mode)},
+       {SOF_TKN_SCHED_CORE, SND_SOC_TPLG_TUPLE_TYPE_WORD, get_token_u32,
+               offsetof(struct sof_ipc4_pipeline, core_id)},
 };
 
 static const struct sof_topology_token pipeline_tokens[] = {
                goto err;
        }
 
+       swidget->core = pipeline->core_id;
+
        /* parse one set of pipeline tokens */
        ret = sof_update_ipc_object(scomp, swidget, SOF_PIPELINE_TOKENS, swidget->tuples,
                                    swidget->num_tuples, sizeof(*swidget), 1);
        /* TODO: Get priority from topology */
        pipeline->priority = 0;
 
-       dev_dbg(scomp->dev, "pipeline '%s': id %d pri %d lp mode %d\n",
+       dev_dbg(scomp->dev, "pipeline '%s': id %d, pri %d, core_id %u, lp mode %d\n",
                swidget->widget->name, swidget->pipeline_id,
-               pipeline->priority, pipeline->lp_mode);
+               pipeline->priority, pipeline->core_id, pipeline->lp_mode);
 
        swidget->private = pipeline;
 
        pipeline->msg.primary |= SOF_IPC4_MSG_TARGET(SOF_IPC4_FW_GEN_MSG);
 
        pipeline->msg.extension = pipeline->lp_mode;
+       pipeline->msg.extension |= SOF_IPC4_GLB_PIPE_EXT_CORE_ID(pipeline->core_id);
        pipeline->state = SOF_IPC4_PIPE_UNINITIALIZED;
 
        return 0;
 
  * @priority: Priority of this pipeline
  * @lp_mode: Low power mode
  * @mem_usage: Memory usage
+ * @core_id: Target core for the pipeline
  * @state: Pipeline state
  * @msg: message structure for pipeline
  * @skip_during_fe_trigger: skip triggering this pipeline during the FE DAI trigger
        uint32_t priority;
        uint32_t lp_mode;
        uint32_t mem_usage;
+       uint32_t core_id;
        int state;
        struct sof_ipc4_msg msg;
        bool skip_during_fe_trigger;