From 8bb6422546d25b00e439c88fc869532d6f1b8800 Mon Sep 17 00:00:00 2001 From: Satya Durga Srinivasu Prabhala Date: Fri, 6 Mar 2020 09:51:53 -0800 Subject: [PATCH] virt/haven: populate VCPU resources VCPU resources provides virtual CPU's affinity index which can be used to set or change the physical CPU affinity of a VCPU thread. Change-Id: I4889ed29ae71b828676e14d39a2e99eddd304add Signed-off-by: Satya Durga Srinivasu Prabhala --- drivers/virt/haven/hh_rm_core.c | 4 ++++ drivers/virt/haven/hh_rm_drv_private.h | 1 + include/linux/sched.h | 9 +++++++++ 3 files changed, 14 insertions(+) diff --git a/drivers/virt/haven/hh_rm_core.c b/drivers/virt/haven/hh_rm_core.c index 6be1b9e17924..25d0ff88dde5 100644 --- a/drivers/virt/haven/hh_rm_core.c +++ b/drivers/virt/haven/hh_rm_core.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -667,6 +668,9 @@ static int hh_rm_populate_hyp_res(void) ret = hh_msgq_populate_cap_info(label, cap_id, HH_MSGQ_DIRECTION_RX, linux_irq); break; + case HH_RM_RES_TYPE_VCPU: + ret = hh_vcpu_populate_affinity_info(label, cap_id); + break; case HH_RM_RES_TYPE_DB_TX: break; case HH_RM_RES_TYPE_DB_RX: diff --git a/drivers/virt/haven/hh_rm_drv_private.h b/drivers/virt/haven/hh_rm_drv_private.h index 4aa68ef98ddb..b71d59353559 100644 --- a/drivers/virt/haven/hh_rm_drv_private.h +++ b/drivers/virt/haven/hh_rm_drv_private.h @@ -139,6 +139,7 @@ struct hh_vm_console_write_resp_payload { #define HH_RM_RES_TYPE_DB_RX 1 #define HH_RM_RES_TYPE_MQ_TX 2 #define HH_RM_RES_TYPE_MQ_RX 3 +#define HH_RM_RES_TYPE_VCPU 4 struct hh_vm_get_hyp_res_req_payload { u16 vmid; diff --git a/include/linux/sched.h b/include/linux/sched.h index 5b68f8f56b60..c129efc6cc0f 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -540,6 +540,15 @@ struct cpu_cycle_counter_cb { DECLARE_PER_CPU_READ_MOSTLY(int, sched_load_boost); +#ifdef CONFIG_QCOM_HYP_CORE_CTL +extern int hh_vcpu_populate_affinity_info(u32 cpu_index, u64 cap_id); +#else +static inline int hh_vcpu_populate_affinity_info(u32 cpu_index, u64 cap_id) +{ + return 0; +} +#endif /* CONFIG_QCOM_HYP_CORE_CTL */ + #ifdef CONFIG_SCHED_WALT extern void sched_exit(struct task_struct *p); extern int __weak