From ac50cdf6a815b02c674b302e70bf8333775d65f4 Mon Sep 17 00:00:00 2001 From: plusOneSecond Date: Mon, 22 Jan 2024 04:10:14 +0000 Subject: [PATCH 1/3] =?UTF-8?q?BeginFrameFreq=E5=92=8CSetMinUtil=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E4=BC=A0=E5=85=A5=E9=9D=9E=E6=B3=95=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E5=80=BC=E8=BF=9B=E8=A1=8C=E6=8B=A6=E6=88=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: plusOneSecond --- kernel/sched/rtg/rtg_ctrl.c | 40 ++++++++++++++++++++++--------------- kernel/sched/rtg/rtg_ctrl.h | 1 + 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/kernel/sched/rtg/rtg_ctrl.c b/kernel/sched/rtg/rtg_ctrl.c index 7ad3290b5890..2d65bc149577 100644 --- a/kernel/sched/rtg/rtg_ctrl.c +++ b/kernel/sched/rtg/rtg_ctrl.c @@ -374,47 +374,57 @@ static void start_frame_freq(struct frame_info *frame_info) } } -static void set_frame(struct frame_info *frame_info, int margin) +static int set_frame(struct frame_info *frame_info, int margin) { + int ret; if (!frame_info) - return; + return -INVALID_RTG_ID; atomic_set(&frame_info->frame_state, FRAME_DRAWING); - if (set_frame_margin(frame_info, margin) == SUCC) - set_frame_timestamp(frame_info, FRAME_START); + ret = set_frame_margin(frame_info, margin); + if (ret) + goto out; + + ret = set_frame_timestamp(frame_info, FRAME_START); + if (ret) + goto out; + +out: + return ret; } -static void reset_frame(struct frame_info *frame_info) +static int reset_frame(struct frame_info *frame_info) { if (!frame_info) - return; + return -INVALID_RTG_ID; if (atomic_read(&frame_info->frame_state) == FRAME_END_STATE) { pr_debug("[SCHED_RTG]: Frame state is already reset\n"); - return; + return -INVALID_PROC_STATE; } atomic_set(&frame_info->frame_state, FRAME_END_STATE); - set_frame_timestamp(frame_info, FRAME_END); + return set_frame_timestamp(frame_info, FRAME_END); } int update_frame_state(int grp_id, int margin, bool in_frame) { + int ret; struct frame_info *frame_info = NULL; - frame_info = lookup_frame_info_by_grp_id(grp_id); + frame_info = lookup_frame_info_by_task(current); if (!frame_info || !frame_info->rtg) return -INVALID_RTG_ID; if (in_frame) { start_frame_freq(frame_info); - set_frame(frame_info, margin); - trace_rtg_frame_sched(grp_id, "margin", margin); + ret = set_frame(frame_info, margin); + trace_perf(rtg_frame_sched, grp_id, "margin", margin); } else { - reset_frame(frame_info); + ret = reset_frame(frame_info); } - return SUCC; + return ret; } static inline int curr_grp_id() @@ -484,9 +494,7 @@ static int set_min_util(int gid, int min_util) if (!frame_info) return -FRAME_ERR_PID; - set_frame_min_util(frame_info, min_util, false); - - return SUCC; + return set_frame_min_util(frame_info, min_util, false); } static long ctrl_set_min_util(int abi, void __user *uarg) diff --git a/kernel/sched/rtg/rtg_ctrl.h b/kernel/sched/rtg/rtg_ctrl.h index e13ff51deb45..6fe3d9d399d9 100644 --- a/kernel/sched/rtg/rtg_ctrl.h +++ b/kernel/sched/rtg/rtg_ctrl.h @@ -67,6 +67,7 @@ enum rtg_err_no { NOT_MULTI_FRAME, INVALID_RTG_ID, NO_RT_FRAME, + INVALID_PROC_STATE, }; struct rtg_grp_data { -- Gitee From b15c9ab680f6b2d710ac3088237b1f28ec83adce Mon Sep 17 00:00:00 2001 From: Brian Date: Mon, 22 Jan 2024 17:08:42 +0800 Subject: [PATCH 2/3] --amend Signed-off-by: Brian --- kernel/sched/rtg/rtg_ctrl.c | 36 ++++++++++++++++++++++-------------- kernel/sched/rtg/rtg_ctrl.h | 1 + 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/kernel/sched/rtg/rtg_ctrl.c b/kernel/sched/rtg/rtg_ctrl.c index 7ad3290b5890..164f1b2373b9 100644 --- a/kernel/sched/rtg/rtg_ctrl.c +++ b/kernel/sched/rtg/rtg_ctrl.c @@ -374,32 +374,42 @@ static void start_frame_freq(struct frame_info *frame_info) } } -static void set_frame(struct frame_info *frame_info, int margin) +static int set_frame(struct frame_info *frame_info, int margin) { + int ret; if (!frame_info) - return; + return -INVALID_RTG_ID; atomic_set(&frame_info->frame_state, FRAME_DRAWING); - if (set_frame_margin(frame_info, margin) == SUCC) - set_frame_timestamp(frame_info, FRAME_START); + ret = set_frame_margin(frame_info, margin); + if (ret) + goto out; + + ret = set_frame_timestamp(frame_info, FRAME_START); + if (ret) + goto out; + +out: + return ret; } -static void reset_frame(struct frame_info *frame_info) +static int reset_frame(struct frame_info *frame_info) { if (!frame_info) - return; + return -INVALID_RTG_ID; if (atomic_read(&frame_info->frame_state) == FRAME_END_STATE) { pr_debug("[SCHED_RTG]: Frame state is already reset\n"); - return; + return -INVALID_PROC_STATE; } atomic_set(&frame_info->frame_state, FRAME_END_STATE); - set_frame_timestamp(frame_info, FRAME_END); + return set_frame_timestamp(frame_info, FRAME_END); } int update_frame_state(int grp_id, int margin, bool in_frame) { + int ret; struct frame_info *frame_info = NULL; frame_info = lookup_frame_info_by_grp_id(grp_id); @@ -408,13 +418,13 @@ int update_frame_state(int grp_id, int margin, bool in_frame) if (in_frame) { start_frame_freq(frame_info); - set_frame(frame_info, margin); + ret = set_frame(frame_info, margin); trace_rtg_frame_sched(grp_id, "margin", margin); } else { - reset_frame(frame_info); + ret = reset_frame(frame_info); } - return SUCC; + return ret; } static inline int curr_grp_id() @@ -484,9 +494,7 @@ static int set_min_util(int gid, int min_util) if (!frame_info) return -FRAME_ERR_PID; - set_frame_min_util(frame_info, min_util, false); - - return SUCC; + return set_frame_min_util(frame_info, min_util, false); } static long ctrl_set_min_util(int abi, void __user *uarg) diff --git a/kernel/sched/rtg/rtg_ctrl.h b/kernel/sched/rtg/rtg_ctrl.h index e13ff51deb45..6fe3d9d399d9 100644 --- a/kernel/sched/rtg/rtg_ctrl.h +++ b/kernel/sched/rtg/rtg_ctrl.h @@ -67,6 +67,7 @@ enum rtg_err_no { NOT_MULTI_FRAME, INVALID_RTG_ID, NO_RT_FRAME, + INVALID_PROC_STATE, }; struct rtg_grp_data { -- Gitee From d8838f88b87bdf53a0e6658221d4991afc51d472 Mon Sep 17 00:00:00 2001 From: plusOneSecond Date: Mon, 22 Jan 2024 09:11:17 +0000 Subject: [PATCH 3/3] =?UTF-8?q?Revert=20"BeginFrameFreq=E5=92=8CSetMinUtil?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BC=A0=E5=85=A5=E9=9D=9E=E6=B3=95=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E5=80=BC=E8=BF=9B=E8=A1=8C=E6=8B=A6=E6=88=AA"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit ac50cdf6a815b02c674b302e70bf8333775d65f4. --- kernel/sched/rtg/rtg_ctrl.c | 40 +++++++++++++++---------------------- kernel/sched/rtg/rtg_ctrl.h | 1 - 2 files changed, 16 insertions(+), 25 deletions(-) diff --git a/kernel/sched/rtg/rtg_ctrl.c b/kernel/sched/rtg/rtg_ctrl.c index 2d65bc149577..7ad3290b5890 100644 --- a/kernel/sched/rtg/rtg_ctrl.c +++ b/kernel/sched/rtg/rtg_ctrl.c @@ -374,57 +374,47 @@ static void start_frame_freq(struct frame_info *frame_info) } } -static int set_frame(struct frame_info *frame_info, int margin) +static void set_frame(struct frame_info *frame_info, int margin) { - int ret; if (!frame_info) - return -INVALID_RTG_ID; + return; atomic_set(&frame_info->frame_state, FRAME_DRAWING); - ret = set_frame_margin(frame_info, margin); - if (ret) - goto out; - - ret = set_frame_timestamp(frame_info, FRAME_START); - if (ret) - goto out; - -out: - return ret; + if (set_frame_margin(frame_info, margin) == SUCC) + set_frame_timestamp(frame_info, FRAME_START); } -static int reset_frame(struct frame_info *frame_info) +static void reset_frame(struct frame_info *frame_info) { if (!frame_info) - return -INVALID_RTG_ID; + return; if (atomic_read(&frame_info->frame_state) == FRAME_END_STATE) { pr_debug("[SCHED_RTG]: Frame state is already reset\n"); - return -INVALID_PROC_STATE; + return; } atomic_set(&frame_info->frame_state, FRAME_END_STATE); - return set_frame_timestamp(frame_info, FRAME_END); + set_frame_timestamp(frame_info, FRAME_END); } int update_frame_state(int grp_id, int margin, bool in_frame) { - int ret; struct frame_info *frame_info = NULL; - frame_info = lookup_frame_info_by_task(current); + frame_info = lookup_frame_info_by_grp_id(grp_id); if (!frame_info || !frame_info->rtg) return -INVALID_RTG_ID; if (in_frame) { start_frame_freq(frame_info); - ret = set_frame(frame_info, margin); - trace_perf(rtg_frame_sched, grp_id, "margin", margin); + set_frame(frame_info, margin); + trace_rtg_frame_sched(grp_id, "margin", margin); } else { - ret = reset_frame(frame_info); + reset_frame(frame_info); } - return ret; + return SUCC; } static inline int curr_grp_id() @@ -494,7 +484,9 @@ static int set_min_util(int gid, int min_util) if (!frame_info) return -FRAME_ERR_PID; - return set_frame_min_util(frame_info, min_util, false); + set_frame_min_util(frame_info, min_util, false); + + return SUCC; } static long ctrl_set_min_util(int abi, void __user *uarg) diff --git a/kernel/sched/rtg/rtg_ctrl.h b/kernel/sched/rtg/rtg_ctrl.h index 6fe3d9d399d9..e13ff51deb45 100644 --- a/kernel/sched/rtg/rtg_ctrl.h +++ b/kernel/sched/rtg/rtg_ctrl.h @@ -67,7 +67,6 @@ enum rtg_err_no { NOT_MULTI_FRAME, INVALID_RTG_ID, NO_RT_FRAME, - INVALID_PROC_STATE, }; struct rtg_grp_data { -- Gitee