From 925fb31f78050b2232d19e802cc8fcd7dc4caef4 Mon Sep 17 00:00:00 2001 From: Huzhaodong Date: Sun, 21 May 2023 08:38:27 -0700 Subject: [PATCH] sched: add qos ctrl and authority ctrl for FFRT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ohos inclusion category: feature issue: #I76RYD CVE:NA Signed-off-by: Huzhaodong --- LICENSE | 1 + OAT.xml | 3 + qos_auth/README_zh.md | 71 ++ qos_auth/apply_qos_auth.sh | 31 + qos_auth/auth_ctl/Kconfig | 55 ++ qos_auth/auth_ctl/Makefile | 5 + qos_auth/auth_ctl/auth_ctrl.c | 588 ++++++++++++++++ qos_auth/auth_ctl/auth_ctrl.h | 52 ++ qos_auth/auth_ctl/auth_qos_debug.c | 157 +++++ qos_auth/auth_ctl/qos_ctrl.c | 662 ++++++++++++++++++ qos_auth/auth_ctl/qos_ctrl.h | 40 ++ ...s\346\236\266\346\236\204\345\233\276.png" | Bin 0 -> 112381 bytes ...1\346\216\247\346\236\266\346\236\204.png" | Bin 0 -> 234362 bytes qos_auth/include/auth_ctrl.h | 116 +++ qos_auth/include/qos_auth.h | 33 + qos_auth/include/qos_ctrl.h | 119 ++++ qos_auth/include/rtg_auth.h | 33 + 17 files changed, 1966 insertions(+) create mode 100644 qos_auth/README_zh.md create mode 100644 qos_auth/apply_qos_auth.sh create mode 100644 qos_auth/auth_ctl/Kconfig create mode 100644 qos_auth/auth_ctl/Makefile create mode 100644 qos_auth/auth_ctl/auth_ctrl.c create mode 100644 qos_auth/auth_ctl/auth_ctrl.h create mode 100644 qos_auth/auth_ctl/auth_qos_debug.c create mode 100644 qos_auth/auth_ctl/qos_ctrl.c create mode 100644 qos_auth/auth_ctl/qos_ctrl.h create mode 100644 "qos_auth/figures/\345\244\232\347\272\247qos\346\236\266\346\236\204\345\233\276.png" create mode 100644 "qos_auth/figures/\350\275\273\351\207\217\345\214\226\346\235\203\351\231\220\347\256\241\346\216\247\346\236\266\346\236\204.png" create mode 100644 qos_auth/include/auth_ctrl.h create mode 100644 qos_auth/include/qos_auth.h create mode 100644 qos_auth/include/qos_ctrl.h create mode 100644 qos_auth/include/rtg_auth.h diff --git a/LICENSE b/LICENSE index 62471c6..fc48fd2 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,6 @@ (1) The directories below are licensed under GPL-2.0-or-later. ./newip/ ./xpm/ + ./qos_auth/ As for the specific use of the licenses, please refer to the relevant description in the documents. diff --git a/OAT.xml b/OAT.xml index 6056c1f..9de7aac 100644 --- a/OAT.xml +++ b/OAT.xml @@ -59,8 +59,10 @@ Note:If the text contains special characters, please escape them according to th + + @@ -78,6 +80,7 @@ Note:If the text contains special characters, please escape them according to th + diff --git a/qos_auth/README_zh.md b/qos_auth/README_zh.md new file mode 100644 index 0000000..6fb66b5 --- /dev/null +++ b/qos_auth/README_zh.md @@ -0,0 +1,71 @@ +## 背景 + +为支持并发编程框架FFRT的底层调度能力而设计,允许app侧根据业务逻辑在线程间分配调度资源,保障关键任务时延达标,保障用户体验。 + +涉及到权限下放和调度资源分配,需要内核实现: + +1. 高效的能感知状态的app权限管控机制(轻量化权限管控) +2. 动态的调度资源分配机制(动态多级qos) + +## auth_ctrl(Authority Control)模块 + +轻量化权限管控模块,uid粒度的权限管控,根据app前后台状态动态管控对内核feature接口的访问权限 + +![轻量化权限管控架构](figures/轻量化权限管控架构.png) + +## qos_ctrl(Qos Control)模块 + +动态多级qos模块,提供多种policy(前台/后台/system等),每个policy包含6个qos等级,可以从时间片、调度时延、供给3个维度去更改线程调度行为 + +![多级qos架构图](figures/多级qos架构图.png) + +## 目录 + +``` +├── README_zh.md +├── apply_qos_auth.sh +├── figures # ReadMe 内嵌图例 +├── auth_ctl +│ ├── Kconfig +│ ├── Makefile +│ ├── auth_ctrl.c #权限管控主体代码 +│ ├── auth_ctrl.h +│ ├── auth_qos_debug.c #debug节点主体 +│ ├── qos_ctrl.c #多级qos主体代码 +│ └── qos_ctrl.h +└── include + ├── auth_ctrl.h + ├── qos_auth.h + ├── qos_ctrl.h + └── rtg_auth.h +``` + +## QOS_AUTH配置指导 + +1. 权限管控使能`CONFIG_AUTHORITY_CTRL=y` +2. 多级qos使能`CONFIG_QOS_CTRL=y` +3. RTG鉴权使能`CONFIG_RTG_AUTHORITY=y` +4. qos鉴权使能`CONFIG_QOS_AUTHORITY=y` +5. Debug节点使能`CONFIG_AUTH_QOS_DEBUG=y` +6. Qos策略数量限制`CONFIG_QOS_POLICY_MAX_NR=5`,范围[5, 20] + +qos成功设置的宏依赖: + +``` +# 时延控制 +CONFIG_SCHED_LATENCY_NICE=y + +# 供给 +CONFIG_UCLAMP_TASK=y +CONFIG_UCLAMP_BUCKETS_COUNT=20 +CONFIG_UCLAMP_TASK_GROUP=y +``` + +## 相关仓 + + +[kernel_linux_5.10](https://gitee.com/openharmony/kernel_linux_5.10) + +[kernel_linux_config](https://gitee.com/openharmony/kernel_linux_config) + +[device_board_hihope](https://gitee.com/openharmony/device_board_hihope)https://gitee.com/openharmony/device_board_hihope) \ No newline at end of file diff --git a/qos_auth/apply_qos_auth.sh b/qos_auth/apply_qos_auth.sh new file mode 100644 index 0000000..77860ca --- /dev/null +++ b/qos_auth/apply_qos_auth.sh @@ -0,0 +1,31 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2023 Huawei Device Co., Ltd. +# + +set -e + +OHOS_SOURCE_ROOT=$1 +KERNEL_BUILD_ROOT=$2 +PRODUCT_NAME=$3 +KERNEL_VERSION=$4 +QOS_AUTH_SOURCE_ROOT=$OHOS_SOURCE_ROOT/kernel/linux/common_modules/qos_auth + +function main() +{ + pushd . + + cd $KERNEL_BUILD_ROOT/include/linux/sched + ln -sf $(realpath --relative-to=$KERNEL_BUILD_ROOT/include/linux/sched $QOS_AUTH_SOURCE_ROOT/include)/*.h ./ + + if [ ! -d "$KERNEL_BUILD_ROOT/drivers/auth_ctl" ]; then + mkdir $KERNEL_BUILD_ROOT/drivers/auth_ctl + fi + + cd $KERNEL_BUILD_ROOT/drivers/auth_ctl + ln -sf $(realpath --relative-to=$KERNEL_BUILD_ROOT/drivers/auth_ctl $QOS_AUTH_SOURCE_ROOT/auth_ctl)/* ./ + + popd +} + +main diff --git a/qos_auth/auth_ctl/Kconfig b/qos_auth/auth_ctl/Kconfig new file mode 100644 index 0000000..84182a2 --- /dev/null +++ b/qos_auth/auth_ctl/Kconfig @@ -0,0 +1,55 @@ +# SPDX-License-Identifier: GPL-2.0 +config AUTHORITY_CTRL + tristate "Authority Control for RTG & QOS" + default n + help + Control thread's authority for specific kenrel feature such as RTG + or QOS. Use uid as the authentication granularity. Status switching + will change uid's authority, and would trigger additional actions + registered by specific kernel feature. + +config QOS_CTRL + bool "Multiple Level Qos Control for thread" + default n + depends on AUTHORITY_CTRL + help + If set, thread can apply qos for less execution latency and get more + cpu supply. Permission and absolute supply aggressiveness was controlled + by AUTHORITY_CTRL. + +config RTG_AUTHORITY + bool "Authority Control for SCHED_RTG_FRAME" + default n + depends on AUTHORITY_CTRL + depends on SCHED_RTG_FRAME + help + Authority control for SCHED_RTG_FRAME. If set, access to SCHED_RTG_FRAME's + ioctl cmd will be restricted. + +config QOS_AUTHORITY + bool "Authority Control for QOS_CTRL" + default n + depends on AUTHORITY_CTRL + depends on QOS_CTRL + help + Authority control for QOS_CTRL. If set, access to QOS_CTRL's ioctl cmd will + be restricted. + +config AUTH_QOS_DEBUG + bool "Debug fs for qos_ctrl and auth_ctrl" + default n + depends on AUTHORITY_CTRL + depends on RTG_AUTHORITY + depends on QOS_AUTHORITY + help + If set, debug node will show auth and qos info + +config QOS_POLICY_MAX_NR + int "Number of supported qos policy" + range 5 20 + default 5 + depends on QOS_CTRL + help + Qos policy number limit. Truly initialized qos policy could small then + this value. + diff --git a/qos_auth/auth_ctl/Makefile b/qos_auth/auth_ctl/Makefile new file mode 100644 index 0000000..548ec45 --- /dev/null +++ b/qos_auth/auth_ctl/Makefile @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: GPL-2.0-only +obj-$(CONFIG_AUTHORITY_CTRL) += auth_qos_ctrl.o +auth_qos_ctrl-$(CONFIG_AUTHORITY_CTRL) += auth_ctrl.o +auth_qos_ctrl-$(CONFIG_QOS_CTRL) += qos_ctrl.o +auth_qos_ctrl-$(CONFIG_AUTH_QOS_DEBUG) += auth_qos_debug.o diff --git a/qos_auth/auth_ctl/auth_ctrl.c b/qos_auth/auth_ctl/auth_ctrl.c new file mode 100644 index 0000000..944535c --- /dev/null +++ b/qos_auth/auth_ctl/auth_ctrl.c @@ -0,0 +1,588 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * drivers/auth_ctl/auth_ctrl.c + * + * Copyright (c) 2022 Huawei Device Co., Ltd. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "auth_ctrl.h" +#ifdef CONFIG_QOS_CTRL +#include "qos_ctrl.h" +#endif + +typedef long (*auth_ctrl_func)(struct file *file, void __user *arg); + +static long ctrl_auth_basic_operation(struct file *file, void __user *uarg); + +static auth_ctrl_func g_func_array[AUTH_CTRL_MAX_NR] = { + NULL, /* reserved */ + ctrl_auth_basic_operation, +}; + +/* + * uid-based authority idr table + */ +static struct idr *ua_idr; + +struct idr *get_auth_ctrl_idr(void) +{ + return ua_idr; +} + +static DEFINE_MUTEX(ua_idr_mutex); + +struct mutex *get_auth_idr_mutex(void) +{ + return &ua_idr_mutex; +} + +static struct auth_struct auth_super; + +/* + * change auth's status to SYSTEM and enable all feature access + */ +static void change_to_super(struct auth_struct *auth) +{ +#ifdef CONFIG_RTG_AUTHORITY + auth->rtg_auth_flag = AF_RTG_ALL; +#endif +#ifdef CONFIG_QOS_AUTHORITY + auth->qos_auth_flag = AF_QOS_ALL; +#endif + auth->status = AUTH_STATUS_SYSTEM_SERVER; +} + +static void init_authority_record(struct auth_struct *auth) +{ +#ifdef CONFIG_QOS_AUTHORITY + int i; +#endif + +#ifdef CONFIG_RTG_AUTHORITY + auth->rtg_auth_flag = 0; +#endif +#ifdef CONFIG_QOS_AUTHORITY + auth->qos_auth_flag = 0; +#endif + auth->status = AUTH_STATUS_DISABLED; + mutex_init(&auth->mutex); + refcount_set(&auth->usage, 1); +#ifdef CONFIG_QOS_CTRL + for (i = QOS_POLICY_MIN_LEVEL; i < NR_QOS; ++i) { + INIT_LIST_HEAD(&auth->tasks[i]); + auth->num[i] = 0; + } +#endif +} + +void get_auth_struct(struct auth_struct *auth) +{ + refcount_inc(&auth->usage); +} + +static void __put_auth_struct(struct auth_struct *auth) + +{ + WARN_ON(auth->status != AUTH_STATUS_DEAD); + WARN_ON(refcount_read(&auth->usage)); + +#ifdef CONFIG_QOS_CTRL + /* refcount is zero here, no contend, no lock. */ + remove_qos_tasks(auth); +#endif + kfree(auth); +} + +void put_auth_struct(struct auth_struct *auth) +{ + if (refcount_dec_and_test(&auth->usage)) + __put_auth_struct(auth); +} + +static int init_authority_control(void) +{ + int ret; + + ua_idr = kzalloc(sizeof(*ua_idr), GFP_ATOMIC); + if (ua_idr == NULL) { + pr_err("[AUTH_CTRL] auth idr init failed, no memory!\n"); + return -ENOMEM; + } + + idr_init(ua_idr); + + init_authority_record(&auth_super); + change_to_super(&auth_super); + + ret = idr_alloc(ua_idr, &auth_super, SUPER_UID, SUPER_UID + 1, GFP_ATOMIC); + if (ret != SUPER_UID) { + pr_err("[AUTH_CTRL] authority for super init failed! ret=%d\n", ret); + goto err; + } + + return 0; + +err: + idr_destroy(ua_idr); + kfree(ua_idr); + + return ret; +} + +int authority_remove_handler(int id, void *p, void *para) +{ + struct auth_struct *auth = (struct auth_struct *)p; + + mutex_lock(&auth->mutex); +#ifdef CONFIG_QOS_CTRL + qos_switch(auth, AUTH_STATUS_DISABLED); +#endif + auth->status = AUTH_STATUS_DEAD; + mutex_unlock(&auth->mutex); + put_auth_struct(auth); + + return 0; +} + +void remove_authority_control(void) +{ + int ret; + + mutex_lock(&ua_idr_mutex); + ret = idr_for_each(ua_idr, authority_remove_handler, NULL); + if (ret < 0) + pr_err("[AUTH_CTRL] authority item remove failed\n"); + + idr_destroy(ua_idr); + kfree(ua_idr); + + mutex_unlock(&ua_idr_mutex); +} + +/* + * constrain user assigned auth_flag to kernel accepted auth_flag + */ +static int generic_auth_trim(unsigned int orig_flag, unsigned int constrain) +{ + return orig_flag & constrain; +} + +static inline void set_auth_flag(struct auth_ctrl_data *data, struct auth_struct *auth_to_enable) +{ +#ifdef CONFIG_RTG_AUTHORITY + auth_to_enable->rtg_auth_flag = generic_auth_trim(data->rtg_ua_flag, AF_RTG_DELEGATED); +#endif +#ifdef CONFIG_QOS_AUTHORITY + auth_to_enable->qos_auth_flag = generic_auth_trim(data->qos_ua_flag, AF_QOS_ALL); +#endif +} + +static int auth_enable(struct auth_ctrl_data *data) +{ + struct auth_struct *auth_to_enable; + unsigned int uid = data->uid; + int status = data->status; + int ret; + + mutex_lock(&ua_idr_mutex); + auth_to_enable = idr_find(ua_idr, uid); + /* auth exist, just resume the task's qos request */ + if (auth_to_enable) { + get_auth_struct(auth_to_enable); + mutex_unlock(&ua_idr_mutex); + + mutex_lock(&auth_to_enable->mutex); + if (auth_to_enable->status == AUTH_STATUS_DEAD) { + mutex_unlock(&auth_to_enable->mutex); + put_auth_struct(auth_to_enable); + return -INVALID_AUTH; + } + + set_auth_flag(data, auth_to_enable); +#ifdef CONFIG_QOS_CTRL + qos_switch(auth_to_enable, status); +#endif + auth_to_enable->status = status; + mutex_unlock(&auth_to_enable->mutex); + ret = 0; + put_auth_struct(auth_to_enable); + goto out; + } + + /* auth not exist, build a new auth, then insert to idr */ + auth_to_enable = kzalloc(sizeof(*auth_to_enable), GFP_ATOMIC); + if (!auth_to_enable) { + mutex_unlock(&ua_idr_mutex); + pr_err("[AUTH_CTRL] alloc auth data failed, no memory!\n"); + ret = -ENOMEM; + goto out; + } + + init_authority_record(auth_to_enable); + + /* no one could get the auth from idr now, no need to lock */ + set_auth_flag(data, auth_to_enable); + auth_to_enable->status = status; + + ret = idr_alloc(ua_idr, auth_to_enable, uid, uid + 1, GFP_ATOMIC); + if (ret < 0) { + pr_err("[AUTH_CTRL] add auth to idr failed, no memory!\n"); + kfree(auth_to_enable); + } + + mutex_unlock(&ua_idr_mutex); + +out: + return ret; +} + +static int auth_delete(struct auth_ctrl_data *data) +{ + struct auth_struct *auth_to_delete; + unsigned int uid = data->uid; + + mutex_lock(&ua_idr_mutex); + auth_to_delete = (struct auth_struct *)idr_remove(ua_idr, uid); + if (!auth_to_delete) { + mutex_unlock(&ua_idr_mutex); + pr_err("[AUTH_CTRL] no auth data for this uid=%d, delete failed\n", uid); + return -UID_NOT_FOUND; + } + mutex_unlock(&ua_idr_mutex); + + mutex_lock(&auth_to_delete->mutex); +#ifdef CONFIG_QOS_CTRL + qos_switch(auth_to_delete, AUTH_STATUS_DISABLED); +#endif + auth_to_delete->status = AUTH_STATUS_DEAD; + mutex_unlock(&auth_to_delete->mutex); + + put_auth_struct(auth_to_delete); + + return 0; +} + +static int auth_get(struct auth_ctrl_data *data) +{ + struct auth_struct *auth_to_get; + unsigned int uid = data->uid; + + mutex_lock(&ua_idr_mutex); + auth_to_get = idr_find(ua_idr, uid); + if (!auth_to_get) { + mutex_unlock(&ua_idr_mutex); + pr_err("[AUTH_CTRL] no auth data for this uid=%d to get\n", uid); + return -UID_NOT_FOUND; + } + get_auth_struct(auth_to_get); + mutex_unlock(&ua_idr_mutex); + + mutex_lock(&auth_to_get->mutex); + if (auth_to_get->status == AUTH_STATUS_DEAD) { + mutex_unlock(&auth_to_get->mutex); + put_auth_struct(auth_to_get); + return -INVALID_AUTH; + } +#ifdef CONFIG_RTG_AUTHORITY + data->rtg_ua_flag = auth_to_get->rtg_auth_flag; +#endif +#ifdef CONFIG_QOS_AUTHORITY + data->qos_ua_flag = auth_to_get->qos_auth_flag; +#endif + data->status = auth_to_get->status; + mutex_unlock(&auth_to_get->mutex); + + put_auth_struct(auth_to_get); + + return 0; +} + +static int auth_switch(struct auth_ctrl_data *data) +{ + struct auth_struct *auth; + unsigned int uid = data->uid; + unsigned int status = data->status; + + if (status == 0 || status >= AUTH_STATUS_MAX_NR) { + pr_err("[AUTH_CTRL] not valied status %d\n", status); + return -ARG_INVALID; + } + + mutex_lock(&ua_idr_mutex); + auth = idr_find(ua_idr, uid); + if (!auth) { + mutex_unlock(&ua_idr_mutex); + pr_err("[AUTH_CTRL] no auth data for this uid to switch=%d\n", uid); + return -UID_NOT_FOUND; + } + get_auth_struct(auth); + mutex_unlock(&ua_idr_mutex); + + mutex_lock(&auth->mutex); + if (auth->status == AUTH_STATUS_DEAD) { + mutex_unlock(&auth->mutex); + put_auth_struct(auth); + return -INVALID_AUTH; + } + + set_auth_flag(data, auth); +#ifdef CONFIG_QOS_CTRL + qos_switch(auth, status); +#endif + auth->status = status; + mutex_unlock(&auth->mutex); + + put_auth_struct(auth); + + return 0; +} + +typedef int (*auth_manipulate_func)(struct auth_ctrl_data *data); + +static auth_manipulate_func auth_func_array[AUTH_MAX_NR] = { + /* + * auth_enable: Start authority control for specific uid. + * auth_delte: End authroity control, remove statistic datas. + * auth_get: Get auth info, deprecated. + * auth_switch: Change authority flag and status for specific uid. + */ + NULL, + auth_enable, + auth_delete, + auth_get, + auth_switch, +}; + +static long do_auth_manipulate(struct auth_ctrl_data *data) +{ + long ret = 0; + unsigned int type = data->type; + + if (type >= AUTH_MAX_NR) { + pr_err("[AUTH_CTRL] BASIC_AUTH_CTRL_OPERATION type not valid\n"); + return -ARG_INVALID; + } + + if (auth_func_array[type]) + ret = (long)(*auth_func_array[type])(data); + + return ret; +} + +static long ctrl_auth_basic_operation(struct file *file, void __user *uarg) +{ + struct auth_ctrl_data auth_data; + long ret; + + if (copy_from_user(&auth_data, uarg, sizeof(struct auth_ctrl_data))) { + pr_err("[AUTH_CTRL] BASIC_AUTH_CTRL_OPERATION copy data failed\n"); + return -ARG_INVALID; + } + + ret = do_auth_manipulate(&auth_data); + if (ret < 0) { + pr_err("[AUTH_CTRL] BASIC_AUTH_CTRL_OPERATION failed\n"); + return ret; + } + + if (copy_to_user(uarg, &auth_data, sizeof(struct auth_ctrl_data))) { + pr_err("[AUTH_CTRL] BASIC_AUTH_CTRL_OPERATION send data failed\n"); + return -ARG_INVALID; + } + + return 0; +} + +long auth_ctrl_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + void __user *uarg = (void __user *)arg; + unsigned int func_cmd = _IOC_NR(cmd); + + if (uarg == NULL) { + pr_err("%s: invalid user uarg\n", __func__); + return -EINVAL; + } + + if (_IOC_TYPE(cmd) != AUTH_CTRL_IPC_MAGIG) { + pr_err("%s: authority ctrl magic fail, TYPE=%d\n", + __func__, _IOC_TYPE(cmd)); + return -EINVAL; + } + + if (func_cmd >= AUTH_CTRL_MAX_NR) { + pr_err("%s: authority ctrl cmd error, cmd:%d\n", + __func__, _IOC_TYPE(cmd)); + return -EINVAL; + } + + if (g_func_array[func_cmd]) + return (*g_func_array[func_cmd])(file, uarg); + + return -EINVAL; +} + +#define get_authority_flag(func_id) (1 << (func_id - 1)) + +static inline unsigned int get_true_uid(struct task_struct *p) +{ + if (!p) + return get_uid(current_user())->uid.val; + + return task_uid(p).val; +} + +/* + * Return 1000 for both SYSTEM and ROOT + * Return current's uid if p is NULL + */ +static inline unsigned int get_authority_uid(struct task_struct *p) +{ + unsigned int uid = get_true_uid(p); + + if (super_uid(uid)) + uid = SUPER_UID; + + return uid; +} + +static unsigned int auth_flag(struct auth_struct *auth, unsigned int type) +{ + switch (type) { +#ifdef CONFIG_RTG_AUTHORITY + case RTG_AUTH_FLAG: + return auth->rtg_auth_flag; +#endif +#ifdef CONFIG_QOS_AUTHORITY + case QOS_AUTH_FLAG: + return auth->qos_auth_flag; +#endif + default: + pr_err("[AUTH_CTRL] not valid auth type\n"); + return INVALIED_AUTH_FLAG; + } +} + +bool check_authorized(unsigned int func_id, unsigned int type) +{ + bool authorized = false; + struct auth_struct *auth; + unsigned int af = get_authority_flag(func_id); + unsigned int uid = get_authority_uid(NULL); + + mutex_lock(&ua_idr_mutex); + if (!ua_idr) { + mutex_unlock(&ua_idr_mutex); + pr_err("[AUTH_CTRL] authority idr table missed, auth failed\n"); + return authorized; + } + + auth = (struct auth_struct *)idr_find(ua_idr, uid); + if (!auth) { + mutex_unlock(&ua_idr_mutex); + pr_err("[AUTH_CTRL] no auth data for this uid=%d\n", uid); + return authorized; + } + get_auth_struct(auth); + mutex_unlock(&ua_idr_mutex); + + mutex_lock(&auth->mutex); + if (auth->status == AUTH_STATUS_DEAD) { + mutex_unlock(&auth->mutex); + pr_info("[AUTH_CTRL] not valied auth for uid %d\n", uid); + put_auth_struct(auth); + return authorized; + } + if (auth && (auth_flag(auth, type) & af)) + authorized = true; + + mutex_unlock(&auth->mutex); + + put_auth_struct(auth); + + return authorized; +} + +/* + * Return authority info for given task + * return current's auth if p is NULL + * recount will inc if this call return the valid auth + * make sure to call put_auth_struct before the calling end + */ +struct auth_struct *get_authority(struct task_struct *p) +{ + unsigned int uid = get_authority_uid(p); + struct auth_struct *auth; + + mutex_lock(&ua_idr_mutex); + auth = idr_find(ua_idr, uid); + if (auth) + get_auth_struct(auth); + mutex_unlock(&ua_idr_mutex); + + return auth; +} + +static const struct file_operations auth_ctrl_fops = { + .owner = THIS_MODULE, + .unlocked_ioctl = auth_ctrl_ioctl, + .compat_ioctl = auth_ctrl_ioctl, +}; + +static struct miscdevice auth_ctrl_device = { + .minor = MISC_DYNAMIC_MINOR, + .name = "auth_ctrl", + .fops = &auth_ctrl_fops, +}; + +static __init int auth_ctrl_init_module(void) +{ + int err; + + err = misc_register(&auth_ctrl_device); + if (err < 0) { + pr_err("auth_ctrl register failed\n"); + return err; + } + + pr_info("auth_ctrl init success\n"); + + BUG_ON(init_authority_control()); + +#ifdef CONFIG_QOS_CTRL + init_qos_ctrl(); +#endif + + init_sched_auth_debug_procfs(); + + return 0; +} + +static void auth_ctrl_exit_module(void) +{ + remove_authority_control(); + misc_deregister(&auth_ctrl_device); +} + +/* module entry points */ +module_init(auth_ctrl_init_module); +module_exit(auth_ctrl_exit_module); + +MODULE_LICENSE("GPL v2"); + diff --git a/qos_auth/auth_ctl/auth_ctrl.h b/qos_auth/auth_ctl/auth_ctrl.h new file mode 100644 index 0000000..e55c39a --- /dev/null +++ b/qos_auth/auth_ctl/auth_ctrl.h @@ -0,0 +1,52 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * drivers/auth_ctl/auth_ctrl.h + * + * Copyright (c) 2022 Huawei Device Co., Ltd. + * + */ + +#ifndef __AUTH_CTRL_H +#define __AUTH_CTRL_H + +#include +#include +#include +#include +#include + +#include + +struct auth_struct { + struct mutex mutex; + refcount_t usage; + unsigned int status; +#ifdef CONFIG_RTG_AUTHORITY + unsigned int rtg_auth_flag; +#endif +#ifdef CONFIG_QOS_AUTHORITY + unsigned int qos_auth_flag; +#endif +#ifdef CONFIG_QOS_CTRL + unsigned int num[NR_QOS]; + struct list_head tasks[NR_QOS]; +#endif +}; + +/* + * for debug fs + */ +struct idr *get_auth_ctrl_idr(void); +struct mutex *get_auth_idr_mutex(void); + +#ifdef CONFIG_AUTH_QOS_DEBUG +int __init init_sched_auth_debug_procfs(void); +#else +static inline int init_sched_auth_debug_procfs(void) +{ + return 0; +} +#endif + +#endif /* __AUTH_CTRL_H */ + diff --git a/qos_auth/auth_ctl/auth_qos_debug.c b/qos_auth/auth_ctl/auth_qos_debug.c new file mode 100644 index 0000000..a627ce4 --- /dev/null +++ b/qos_auth/auth_ctl/auth_qos_debug.c @@ -0,0 +1,157 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * drivers/auth_ctl/auth_qos_debug.c + * + * Copyright (c) 2022 Huawei Device Co., Ltd. + * + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "auth_ctrl.h" +#include "qos_ctrl.h" + +#define seq_printf_auth(m, x...) \ +do { \ + if (m) \ + seq_printf(m, x); \ + else \ + printk(x); \ +} while (0) + +static void print_auth_id(struct seq_file *file, + const int uid) +{ + seq_printf_auth(file, "AUTH_ID :%d\n", uid); +} + +static void print_auth_info(struct seq_file *file, + const struct auth_struct *auth) +{ + seq_printf_auth(file, "AUTH_STATUS :%d\n", auth->status); +#ifdef CONFIG_RTG_AUTHORITY + seq_printf_auth(file, "RTG_FLAG :%04x\n", auth->rtg_auth_flag); +#endif +#ifdef CONFIG_QOS_AUTHORITY + seq_printf_auth(file, "QOS_FLAG :%04x\n", auth->qos_auth_flag); +#endif +} + +static void print_qos_count(struct seq_file *file, + const struct auth_struct *auth) +{ + int i; + + for (i = QOS_POLICY_MIN_LEVEL; i < NR_QOS; ++i) + seq_printf_auth(file, "QOS level %d thread nr :%d\n", i, auth->num[i]); +} + +static void print_qos_thread(struct seq_file *file, + const struct auth_struct *auth) +{ + struct qos_task_struct *tmp, *next; + struct task_struct *p; + int i; + + for (i = QOS_POLICY_MIN_LEVEL; i < NR_QOS; ++i) { + seq_printf_auth(file, "QOS level %d threads:", i); + list_for_each_entry_safe(tmp, next, &auth->tasks[i], qos_list) { + p = container_of(tmp, struct task_struct, qts); + seq_printf_auth(file, "%d ", p->pid); + } + seq_printf_auth(file, "\n"); + } + +} + +static inline void print_auth_struct(struct seq_file *file, struct auth_struct *auth) +{ + print_auth_info(file, auth); + seq_printf_auth(file, "\n"); + print_qos_count(file, auth); + seq_printf_auth(file, "\n"); +#ifdef CONFIG_QOS_CTRL + print_qos_thread(file, auth); +#endif + seq_printf_auth(file, "---------------------------------------------------------\n"); + +} + +int authority_printf_handler(int id, void *p, void *para) +{ + struct auth_struct *auth = (struct auth_struct *)p; + struct seq_file *file = (struct seq_file *)para; + + /* + * data consistency is not that important here + */ + seq_printf_auth(file, "\n\n"); + print_auth_id(file, id); + seq_printf_auth(file, "\n"); + + /* no need to add refcount here, auth must alive in ua_idr_mutex */ + print_auth_struct(file, auth); + + return 0; +} + +static int sched_auth_debug_show(struct seq_file *file, void *param) +{ + struct idr *ua_idr = get_auth_ctrl_idr(); + struct mutex *ua_idr_mutex = get_auth_idr_mutex(); + /* + * NOTICE: + * if mutex in authority_printf_handler, sleep may occur + * change ths spin_lock to mutex, or remove mutex in handler + */ + + mutex_lock(ua_idr_mutex); + /* will never return 0 here, auth in ua_idr must alive */ + idr_for_each(ua_idr, authority_printf_handler, file); + mutex_unlock(ua_idr_mutex); + + return 0; +} + +static int sched_auth_debug_release(struct inode *inode, struct file *file) +{ + seq_release(inode, file); + return 0; +} + +static int sched_auth_debug_open(struct inode *inode, struct file *filp) +{ + return single_open(filp, sched_auth_debug_show, NULL); +} + +static const struct proc_ops sched_auth_debug_fops = { + .proc_open = sched_auth_debug_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, + .proc_release = sched_auth_debug_release, +}; + +int __init init_sched_auth_debug_procfs(void) +{ + struct proc_dir_entry *pe = NULL; + + pe = proc_create("sched_auth_qos_debug", + 0400, NULL, &sched_auth_debug_fops); + if (unlikely(!pe)) + return -ENOMEM; + return 0; +} + diff --git a/qos_auth/auth_ctl/qos_ctrl.c b/qos_auth/auth_ctl/qos_ctrl.c new file mode 100644 index 0000000..a2816d3 --- /dev/null +++ b/qos_auth/auth_ctl/qos_ctrl.c @@ -0,0 +1,662 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * drivers/auth_ctl/auth_ctrl.c + * + * Copyright (c) 2022 Huawei Device Co., Ltd. + * + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "auth_ctrl.h" +#include "qos_ctrl.h" + +typedef long (*qos_ctrl_func)(struct file *file, void __user *uarg); + +static long ctrl_qos_operation(struct file *file, void __user *uarg); +static long ctrl_qos_policy(struct file *file, void __user *uarg); + +static qos_ctrl_func g_func_array[QOS_CTRL_MAX_NR] = { + NULL, /* reserved */ + ctrl_qos_operation, + ctrl_qos_policy, +}; + +static struct qos_policy_map qos_policy_array[QOS_POLICY_MAX_NR]; + +void remove_qos_tasks(struct auth_struct *auth) +{ + int i; + struct qos_task_struct *tmp, *next; + struct task_struct *p; + + mutex_lock(&auth->mutex); + for (i = QOS_POLICY_MIN_LEVEL; i < NR_QOS; ++i) { + list_for_each_entry_safe(tmp, next, &auth->tasks[i], qos_list) { + p = container_of(tmp, struct task_struct, qts); + if (!list_empty(&tmp->qos_list)) { + list_del_init(&tmp->qos_list); + tmp->in_qos = NO_QOS; + put_task_struct(p); + } + } + } + mutex_unlock(&auth->mutex); +} + +static void init_sched_attr(struct sched_attr *attr) +{ + memset(attr, 0, sizeof(struct sched_attr)); +} + +static inline bool is_system(unsigned int uid) +{ + return uid == SYSTEM_UID; +} + +/* This function must be called when p is valid. That means the p's refcount must exist */ +static int sched_set_task_qos_attr(struct task_struct *p, int level, int status) +{ + struct qos_policy_item *item; + struct qos_policy_map *policy_map; + struct sched_attr attr; + + read_lock(&qos_policy_array[status].lock); + if (!qos_policy_array[status].initialized) { + pr_err("[QOS_CTRL] dirty qos policy, pid=%d, uid=%d, status=%d\n", + p->pid, p->cred->uid.val, status); + read_unlock(&qos_policy_array[status].lock); + return -DIRTY_QOS_POLICY; + } + + policy_map = &qos_policy_array[status]; + item = &policy_map->levels[level]; + + init_sched_attr(&attr); + attr.size = sizeof(struct sched_attr); + attr.sched_policy = SCHED_NORMAL; + + if (policy_map->policy_flag & QOS_FLAG_NICE) + attr.sched_nice = item->nice; + + if (policy_map->policy_flag & QOS_FLAG_LATENCY_NICE) { + attr.sched_flags |= SCHED_FLAG_LATENCY_NICE; + attr.sched_latency_nice = item->latency_nice; + } + + if ((policy_map->policy_flag & QOS_FLAG_RT) && item->rt_sched_priority) { + attr.sched_policy = SCHED_FIFO; + attr.sched_flags |= SCHED_FLAG_RESET_ON_FORK; + attr.sched_priority = item->rt_sched_priority; + } + + read_unlock(&qos_policy_array[status].lock); + + if (unlikely(p->flags & PF_EXITING)) { + pr_info("[QOS_CTRL] dying task, no need to set qos\n"); + return -THREAD_EXITING; + } + + return sched_setattr_nocheck(p, &attr); +} + +/* + * Switch qos mode when status changed. + * Lock auth before calling this function + */ +void qos_switch(struct auth_struct *auth, int target_status) +{ + int i; + int ret; + struct task_struct *task; + struct qos_task_struct *qts; + + if (!auth) { + pr_err("[QOS_CTRL] auth no exist, qos switch failed\n"); + return; + } + + lockdep_assert_held(&auth->mutex); + + if (auth->status == target_status) { + pr_info("[QOS_CTRL] same status, no need to switch qos\n"); + return; + } + + for (i = QOS_POLICY_MIN_LEVEL; i < NR_QOS; ++i) { + list_for_each_entry(qts, &auth->tasks[i], qos_list) { + task = container_of(qts, struct task_struct, qts); + ret = sched_set_task_qos_attr(task, i, target_status); + if (ret) + pr_err("[QOS_CTRL] set qos attr failed, qos switch failed\n"); + } + } +} + +static int qos_insert_task(struct task_struct *p, struct list_head *head, unsigned int level) +{ + struct qos_task_struct *qts = &p->qts; + + if (qts->in_qos > NO_QOS) { + pr_err("[QOS_CTRL] qos apply still active, no duplicate add\n"); + return -PID_DUPLICATE; + } + + if (likely(list_empty(&qts->qos_list))) { + get_task_struct(p); + list_add(&qts->qos_list, head); + qts->in_qos = level; + } + + return 0; +} + +static int qos_remove_task(struct task_struct *p) +{ + struct qos_task_struct *qts = (struct qos_task_struct *) &p->qts; + + if (qts->in_qos == NO_QOS) { + pr_err("[QOS_CTRL] task not in qos, no need to remove\n"); + return -PID_NOT_EXIST; + } + + if (likely(!list_empty(&qts->qos_list))) { + list_del_init(&qts->qos_list); + qts->in_qos = NO_QOS; + put_task_struct(p); + } + + return 0; +} + +static inline bool same_uid(struct task_struct *dude, struct task_struct *bro) +{ + return uid_eq(task_uid(dude), task_uid(bro)); +} + +static inline bool super_user(struct task_struct *p) +{ + return super_uid(task_uid(p).val); +} + +/* + * judge permission for changing other tasks' qos + */ +static bool can_change_qos(struct task_struct *p) +{ + if (p != current && !same_uid(current, p) && !super_user(current)) { + pr_err("[QOS_CTRL] %d apply for others not permit\n", p->pid); + return false; + } + + return true; +} + +int qos_apply(struct qos_ctrl_data *data) +{ + unsigned int level = data->level; + struct auth_struct *auth; + struct task_struct *p; + struct qos_task_struct *qts; + int pid = data->pid; + int ret; + + if (level >= NR_QOS || level == NO_QOS) { + pr_err("[QOS_CTRL] no this qos level, qos apply failed\n"); + ret = -ARG_INVALID; + goto out; + } + + p = find_get_task_by_vpid((pid_t)pid); + if (unlikely(!p)) { + pr_err("[QOS_CTRL] no matching task for this pid, qos apply failed\n"); + ret = -ESRCH; + goto out; + } + + if (unlikely(p->flags & PF_EXITING)) { + pr_info("[QOS_CTRL] dying task, no need to set qos\n"); + ret = -THREAD_EXITING; + goto out_put_task; + } + + if (!can_change_qos(p)) { + pr_err("[QOS_CTRL] apply for others not permit\n"); + ret = -ARG_INVALID; + goto out_put_task; + } + + auth = get_authority(p); + if (!auth) { + pr_err("[QOS_CTRL] no auth data for pid=%d(%s) this uid=%d, qos apply failed\n", + p->pid, p->comm, p->cred->uid.val); + put_task_struct(p); + ret = -UID_NOT_FOUND; + goto out; + } + + mutex_lock(&auth->mutex); + if (auth->status == AUTH_STATUS_DEAD) { + pr_err("[QOS_CTRL] this auth data has been deleted\n"); + ret = -INVALID_AUTH; + goto out_unlock; + } + + if (auth->num[level] >= QOS_NUM_MAX) { + pr_err("[QOS_CTRL] qos num exceeds limit, cached only\n"); + ret = -QOS_THREAD_NUM_EXCEED_LIMIT; + goto out_unlock; + } + + qts = (struct qos_task_struct *) &p->qts; + + /* effective qos must in range [NO_QOS, NR_QOS) */ + if (qts->in_qos != NO_QOS) { + if (qts->in_qos == level) { + ret = 0; + goto out_unlock; + } + + --auth->num[qts->in_qos]; + qos_remove_task(p); + } + + ret = qos_insert_task(p, &auth->tasks[level], level); + if (ret < 0) { + pr_err("[QOS_CTRL] insert task to qos list %d failed\n", level); + goto out_unlock; + } + + ++auth->num[level]; + + ret = sched_set_task_qos_attr(p, level, auth->status); + if (ret) { + pr_err("[QOS_CTRL] set qos_level %d for thread %d on status %d failed\n", + level, p->pid, auth->status); + --auth->num[level]; + qos_remove_task(p); + } + +out_unlock: + mutex_unlock(&auth->mutex); + put_auth_struct(auth); +out_put_task: + put_task_struct(p); +out: + return ret; +} + +int qos_leave(struct qos_ctrl_data *data) +{ + unsigned int level; + struct auth_struct *auth; + struct task_struct *p; + struct qos_task_struct *qts; + int pid = data->pid; + int ret; + + p = find_get_task_by_vpid((pid_t)pid); + if (!p) { + pr_err("[QOS_CTRL] no matching task for this pid, qos apply failed\n"); + ret = -ESRCH; + goto out; + } + + if (unlikely(p->flags & PF_EXITING)) { + pr_info("[QOS_CTRL] dying task, no need to set qos\n"); + ret = -THREAD_EXITING; + goto out_put_task; + } + + if (!can_change_qos(p)) { + pr_err("[QOS_CTRL] apply for others not permit\n"); + ret = -ARG_INVALID; + goto out_put_task; + } + + auth = get_authority(p); + if (!auth) { + pr_err("[QOS_CTRL] no auth data for pid=%d(%s) this uid=%d, qos stop failed\n", + p->pid, p->comm, p->cred->uid.val); + put_task_struct(p); + ret = -UID_NOT_FOUND; + goto out; + } + + mutex_lock(&auth->mutex); + + qts = (struct qos_task_struct *) &p->qts; + + level = qts->in_qos; + + if (level == NO_QOS) { + pr_err("[QOS_CTRL] task not in qos list, qos stop failed\n"); + ret = -ARG_INVALID; + goto out_unlock; + } + + if (auth->status == AUTH_STATUS_DEAD) { + pr_err("[QOS_CTRL] this auth data has been deleted\n"); + ret = -INVALID_AUTH; + goto out_unlock; + } + + ret = qos_remove_task(p); + if (ret < 0) { + pr_err("[QOS_CTRL] remove task from qos list %d failed\n", level); + goto out_unlock; + } + + --auth->num[level]; + + /* + * NO NEED to judge whether current status is AUTH_STATUS_DISABLE. + * In the auth destoring context, the removing of thread's sched attr was protected by + * auth->mutex, AUTH_STATUS_DISABLED will never appear here. + * + * The second param 3 means nothing, actually you can use any valid level here, cause the + * policy matching AUTH_STATUS_DISABLED has default parameters for all qos level, which can + * keep a powerful thread to behave like a ordinary thread. + */ + ret = sched_set_task_qos_attr(p, 3, AUTH_STATUS_DISABLED); + if (ret) + pr_err("[QOS_CTRL] set qos_level %d for thread %d on status %d to default failed\n", + level, p->pid, auth->status); + +out_unlock: + mutex_unlock(&auth->mutex); + put_auth_struct(auth); +out_put_task: + put_task_struct(p); +out: + return ret; +} + +void init_task_qos(struct task_struct *p) +{ + struct qos_task_struct *qts = (struct qos_task_struct *) &p->qts; + + INIT_LIST_HEAD(&qts->qos_list); + qts->in_qos = NO_QOS; +} + +/* + * Remove statistic info in auth when task exit + */ +void sched_exit_qos_list(struct task_struct *p) +{ + struct auth_struct *auth; + struct qos_task_struct *qts = (struct qos_task_struct *) &p->qts; + + /* + * For common tasks(the vast majority): + * skip get authority, fast return here. + * + * For qos tasks: + * If contend with auth_delete() happens, + * 1. function return here, auth_delete() will do the clean up + * 2. function go on, either no auth return, either do clean up here + * Both cases guarantee data synchronization + */ + if (likely(qts->in_qos == NO_QOS)) + return; + + auth = get_authority(p); + if (!auth) + goto out; + + mutex_lock(&auth->mutex); + if (qts->in_qos == NO_QOS) { + mutex_unlock(&auth->mutex); + goto out_put_auth; + } + --auth->num[qts->in_qos]; + list_del_init(&qts->qos_list); + qts->in_qos = NO_QOS; + mutex_unlock(&auth->mutex); + +out_put_auth: + put_auth_struct(auth); +out: + return; +} + +typedef int (*qos_manipulate_func)(struct qos_ctrl_data *data); + +static qos_manipulate_func qos_func_array[QOS_OPERATION_CMD_MAX_NR] = { + NULL, + qos_apply, //1 + qos_leave, +}; + +static long do_qos_manipulate(struct qos_ctrl_data *data) +{ + long ret = 0; + unsigned int type = data->type; + + if (type <= 0 || type >= QOS_OPERATION_CMD_MAX_NR) { + pr_err("[QOS_CTRL] CMD_ID_QOS_MANIPULATE type not valid\n"); + return -ARG_INVALID; + } + + if (qos_func_array[type]) + ret = (long)(*qos_func_array[type])(data); + + return ret; +} + +static long ctrl_qos_operation(struct file *file, void __user *uarg) +{ + struct qos_ctrl_data qos_data; + + if (copy_from_user(&qos_data, uarg, sizeof(struct qos_ctrl_data))) { + pr_err("[QOS_CTRL] CMD_ID_QOS_APPLY copy data failed\n"); + return -ARG_INVALID; + } + + /* transfer user space qos level to kernel space qos level */ + qos_data.level -= QOS_LEVEL_INTERVAL; + + return do_qos_manipulate(&qos_data); +} + +#define MAX_LATENCY_NICE 19 +#define MIN_LATENCY_NICE -20 + +static inline bool valid_nice(int nice) +{ + return nice >= MIN_NICE && nice <= MAX_NICE; +} + +static inline bool valid_latency_nice(int latency_nice) +{ + return latency_nice >= MIN_LATENCY_NICE && latency_nice <= MAX_LATENCY_NICE; +} + +static inline bool valid_uclamp(int uclamp_min, int uclamp_max) +{ + if (uclamp_min > uclamp_max) + return false; + if (uclamp_max > SCHED_CAPACITY_SCALE) + return false; + + return true; +} + +static inline bool valid_rt(int sched_priority) +{ + if (sched_priority > MAX_USER_RT_PRIO - 1 || sched_priority < 0) + return false; + + return true; +} + +static bool valid_qos_flag(unsigned int qos_flag) +{ + if (qos_flag & ~QOS_FLAG_ALL) + return false; + + return true; +} + +static inline bool valid_qos_item(struct qos_policy_datas *datas) +{ + int i; + int type = datas->policy_type; + struct qos_policy_data *data; + + if (type <= 0 || type >= QOS_POLICY_MAX_NR) { + pr_err("[QOS_CTRL] not valid qos policy type, policy change failed\n"); + goto out_failed; + } + + if (!valid_qos_flag(datas->policy_flag)) { + pr_err("[QOS_CTRL] not valid qos flag, policy change failed\n"); + goto out_failed; + } + + /* check user space qos polcicy data, level 0 reserved */ + for (i = 0; i <= NR_QOS; ++i) { + data = &datas->policys[i]; + + if (!valid_nice(data->nice)) { + pr_err("[QOS_CTRL] invalid nice, policy change failed\n"); + goto out_failed; + } + + if (!valid_latency_nice(data->latency_nice)) { + pr_err("[QOS_CTRL] invalid latency_nice, policy change failed\n"); + goto out_failed; + } + + if (!valid_uclamp(data->uclamp_min, data->uclamp_max)) { + pr_err("[QOS_CTRL] invalid uclamp, policy change failed\n"); + goto out_failed; + } + + if (!valid_rt(data->rt_sched_priority)) { + pr_err("[QOS_CTRL] invalid rt, policy change failed\n"); + goto out_failed; + } + } + + return true; + +out_failed: + pr_err("[QOS_CTRL] not valid qos policy params\n"); + return false; +} + +static long do_qos_policy_change(struct qos_policy_datas *datas) +{ + long ret = 0; + int i; + struct qos_policy_item *item; + struct qos_policy_data *data; + int type = datas->policy_type; + + if (type >= QOS_POLICY_MAX_NR) { + pr_err("[QOS_CTRL] not valid policy type\n"); + goto out_failed; + } + + if (!valid_qos_item(datas)) + goto out_failed; + + write_lock(&qos_policy_array[type].lock); + for (i = QOS_POLICY_MIN_LEVEL; i < NR_QOS; ++i) { + item = &qos_policy_array[type].levels[i]; + + /* user space policy params */ + data = &datas->policys[i + QOS_LEVEL_INTERVAL]; + + item->nice = data->nice; + item->latency_nice = data->latency_nice; + item->uclamp_min = data->uclamp_min; + item->uclamp_max = data->uclamp_max; + /* only specific qos level could use SCHED_FIFO */ + item->rt_sched_priority = (i < MIN_RT_QOS_LEVEL) ? 0 : + data->rt_sched_priority; + } + qos_policy_array[type].policy_flag = datas->policy_flag; + qos_policy_array[type].initialized = true; + write_unlock(&qos_policy_array[type].lock); + + return ret; + +out_failed: + return -ARG_INVALID; +} + +static long ctrl_qos_policy(struct file *file, void __user *uarg) +{ + struct qos_policy_datas policy_datas; + + if (copy_from_user(&policy_datas, uarg, sizeof(struct qos_policy_datas))) { + pr_err("[QOS_CTRL] CMD_ID_QOS_APPLY copy data failed\n"); + return -ARG_INVALID; + } + + return do_qos_policy_change(&policy_datas); +} + +long do_qos_ctrl_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + void __user *uarg = (void __user *)arg; + unsigned int func_cmd = _IOC_NR(cmd); + + if (uarg == NULL) { + pr_err("%s: invalid user uarg\n", __func__); + return -EINVAL; + } + + if (_IOC_TYPE(cmd) != QOS_CTRL_IPC_MAGIG) { + pr_err("%s: qos ctrl magic fail, TYPE=%d\n", + __func__, _IOC_TYPE(cmd)); + return -EINVAL; + } + + if (func_cmd >= QOS_CTRL_MAX_NR) { + pr_err("%s: qos ctrl cmd error, cmd:%d\n", + __func__, _IOC_TYPE(cmd)); + return -EINVAL; + } + +#ifdef CONFIG_QOS_AUTHORITY + if (!check_authorized(func_cmd, QOS_AUTH_FLAG)) { + pr_err("[QOS_CTRL] %s: uid not authorized\n", __func__); + return -UID_NOT_AUTHORIZED; + } +#endif + + if (g_func_array[func_cmd]) + return (*g_func_array[func_cmd])(file, uarg); + + return -EINVAL; +} + +static void init_qos_policy_array(void) +{ + int i; + + /* index 0 reserved */ + for (i = 1; i < QOS_POLICY_MAX_NR; ++i) + rwlock_init(&qos_policy_array[i].lock); + + pr_info("[QOS_CTRL] lock in qos policy initialized\n"); +} + +int __init init_qos_ctrl(void) +{ + init_qos_policy_array(); + + return 0; +} + diff --git a/qos_auth/auth_ctl/qos_ctrl.h b/qos_auth/auth_ctl/qos_ctrl.h new file mode 100644 index 0000000..301f141 --- /dev/null +++ b/qos_auth/auth_ctl/qos_ctrl.h @@ -0,0 +1,40 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * drivers/auth_ctl/qos_ctrl.h + * + * Copyright (c) 2022 Huawei Device Co., Ltd. + * + */ + +#ifndef __QOS_CTRL_H +#define __QOS_CTRL_H + +#include "../../kernel/sched/sched.h" + +#include + +/* qos level interval between user space and kernel space */ +#define QOS_LEVEL_INTERVAL 1 + +/* min qos level used in kernel space, begin index for LOOP */ +#define QOS_POLICY_MIN_LEVEL (NO_QOS + QOS_LEVEL_INTERVAL) + +struct qos_policy_item { + int nice; + int latency_nice; + int uclamp_min; + int uclamp_max; + int rt_sched_priority; +}; + +struct qos_policy_map { + rwlock_t lock; + bool initialized; + unsigned int policy_flag; + struct qos_policy_item levels[NR_QOS]; +}; + +int __init init_qos_ctrl(void); + +#endif /* __OQS_CTRL_H */ + diff --git "a/qos_auth/figures/\345\244\232\347\272\247qos\346\236\266\346\236\204\345\233\276.png" "b/qos_auth/figures/\345\244\232\347\272\247qos\346\236\266\346\236\204\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..1d92d90990b5065fafa7a1643b09f6e4ccc99671 GIT binary patch literal 112381 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 z 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 z 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 YiSfg*)!I*eA7|>>IFtxv*7t4y1tA)8vj6}9 literal 0 HcmV?d00001 diff --git a/qos_auth/include/auth_ctrl.h b/qos_auth/include/auth_ctrl.h new file mode 100644 index 0000000..6cbc4232 --- /dev/null +++ b/qos_auth/include/auth_ctrl.h @@ -0,0 +1,116 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * include/linux/sched/auth_ctrl.h + * + * Copyright (c) 2022 Huawei Device Co., Ltd. + */ + +#ifndef _AUTH_CTRL_H +#define _AUTH_CTRL_H + +#include + +#define ROOT_UID 0 +#define SYSTEM_UID 1000 + +#define SUPER_UID SYSTEM_UID +#define super_uid(uid) (uid == ROOT_UID || uid == SYSTEM_UID) + +enum auth_ctrl_cmdid { + BASIC_AUTH_CTRL = 1, + AUTH_CTRL_MAX_NR +}; + +#define AUTH_CTRL_IPC_MAGIG 0xCD + +#define BASIC_AUTH_CTRL_OPERATION \ + _IOWR(AUTH_CTRL_IPC_MAGIG, BASIC_AUTH_CTRL, struct auth_ctrl_data) + +enum auth_flag_type { +#ifdef CONFIG_RTG_AUTHORITY + RTG_AUTH_FLAG, +#endif +#ifdef CONFIG_QOS_AUTHORITY + QOS_AUTH_FLAG, +#endif +}; + +#define INVALIED_AUTH_FLAG 0x00000000 + +struct auth_ctrl_data { + unsigned int uid; + + /* + * type: operation type, see auth_manipulate_type, valid range [1, AUTH_MAX_NR) + * + * rtg_ua_flag: authority flag for RTG, see AF_RTG_ALL + * + * qos_ua_flag: authority flag for QOS, see AF_QOS_ALL + * + * status: current status for uid, use to match qos policy, see auth_status and + * qos_policy_type, valid range [1, AUTH_STATUS_MAX_NR - 1) + * + */ + unsigned int type; + unsigned int rtg_ua_flag; + unsigned int qos_ua_flag; + unsigned int status; +}; + +enum auth_err_no { + ARG_INVALID = 1, + THREAD_EXITING, + DIRTY_QOS_POLICY, + UID_NOT_AUTHORIZED, + UID_NOT_FOUND, + PID_DUPLICATE, + PID_NOT_EXIST, + INVALID_AUTH, + QOS_THREAD_NUM_EXCEED_LIMIT, +}; + +enum auth_manipulate_type { + AUTH_ENABLE = 1, + AUTH_DELETE, + AUTH_GET, + AUTH_SWITCH, + AUTH_MAX_NR, +}; + +#ifndef CONFIG_QOS_POLICY_MAX_NR +#define QOS_STATUS_COUNT 5 +#else +#define QOS_STATUS_COUNT CONFIG_QOS_POLICY_MAX_NR +#endif + +/* keep match with qos_policy_type */ +enum auth_status { + /* reserved fo QOS_POLICY_DEFAULT, no qos supply in this status */ + AUTH_STATUS_DISABLED = 1, + + /* reserved for ROOT and SYSTEM */ + AUTH_STATUS_SYSTEM_SERVER = 2, + + /* + * these space for user specific status + * range (AUTH_STATUS_SYSTEM_SERVER, AUTH_STATUS_DEAD) + * + * initial the policy in matching index of qos_policy_array first before use + * see ctrl_qos_policy + */ + + /* reserved for destorying auth_struct*/ + AUTH_STATUS_DEAD = QOS_STATUS_COUNT, + + AUTH_STATUS_MAX_NR = QOS_STATUS_COUNT + 1, +}; + +struct auth_struct; +long auth_ctrl_ioctl(struct file *file, unsigned int cmd, unsigned long arg); +void get_auth_struct(struct auth_struct *auth); +void put_auth_struct(struct auth_struct *auth); +struct auth_struct *get_authority(struct task_struct *p); +bool check_authorized(unsigned int func_id, unsigned int type); + +#endif /* _AUTH_CTRL_H */ + diff --git a/qos_auth/include/qos_auth.h b/qos_auth/include/qos_auth.h new file mode 100644 index 0000000..f89a911 --- /dev/null +++ b/qos_auth/include/qos_auth.h @@ -0,0 +1,33 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * include/linux/sched/qos_auth.h + * + * Copyright (c) 2022 Huawei Device Co., Ltd. + */ + +#ifndef _QOS_AUTH_H +#define _QOS_AUTH_H + +#include +#include + +/* + * QOS authority flags for SYSTEM or ROOT + * + * keep sync with qos_ctrl_cmdid + * when add a new cmd to qos_ctrl_cmdid + * keep new_flag = (old_flag << 1) + 1 + * up to now, next flag value is 0x0007 + */ +#define AF_QOS_ALL 0x0003 + +/* + * delegated authority for normal uid + * trim access range for QOS + */ +#define AF_QOS_DELEGATED 0x0001 + +bool check_authorized(unsigned int func_id, unsigned int type); + +#endif /* _QOS_AUTH_H */ + diff --git a/qos_auth/include/qos_ctrl.h b/qos_auth/include/qos_ctrl.h new file mode 100644 index 0000000..a20d742 --- /dev/null +++ b/qos_auth/include/qos_ctrl.h @@ -0,0 +1,119 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * include/linux/sched/qos_ctrl.h + * + * Copyright (c) 2022 Huawei Device Co., Ltd. + */ + +#ifndef _QOS_CTRL_H +#define _QOS_CTRL_H + +#include +#include + +enum qos_ctrl_cmdid { + QOS_CTRL = 1, + QOS_POLICY, + QOS_CTRL_MAX_NR +}; + +#define QOS_CTRL_IPC_MAGIG 0xCC + +#define QOS_CTRL_BASIC_OPERATION \ + _IOWR(QOS_CTRL_IPC_MAGIG, QOS_CTRL, struct qos_ctrl_data) +#define QOS_CTRL_POLICY_OPERATION \ + _IOWR(QOS_CTRL_IPC_MAGIG, QOS_POLICY, struct qos_policy_datas) + +#define NO_QOS -1 +#define NR_QOS 6 +#define NR_RT_QOS 1 +#define MIN_RT_QOS_LEVEL (NR_QOS - NR_RT_QOS) + +#define QOS_NUM_MAX 2000 + +enum qos_manipulate_type { + QOS_APPLY = 1, + QOS_LEAVE, + QOS_OPERATION_CMD_MAX_NR, +}; + +#ifndef CONFIG_QOS_POLICY_MAX_NR +#define QOS_POLICYS_COUNT 5 +#else +#define QOS_POLICYS_COUNT CONFIG_QOS_POLICY_MAX_NR +#endif + +/* + * keep match with auth_status + * + * range (QOS_POLICY_SYSTEM, QOS_POLICY_MAX_NR) could defined by user + * use ctrl_qos_policy + */ +enum qos_policy_type { + QOS_POLICY_DEFAULT = 1, /* reserved for "NO QOS" */ + QOS_POLICY_SYSTEM = 2, /* reserved for ROOT and SYSTEM */ + QOS_POLICY_MAX_NR = QOS_POLICYS_COUNT, +}; + +struct qos_ctrl_data { + int pid; + + /* + * type: operation type, see qos_manipulate_type + * level: valid from 1 to NR_QOS. Larger value, more aggressive supply + */ + unsigned int type; + + /* + * user space level, range from [1, NR_QOS] + * + * NOTICE!!!: + * minus 1 before use in kernel, so the kernel range is [0, NR_QOS) + */ + unsigned int level; +}; + +struct qos_policy_data { + int nice; + int latency_nice; + int uclamp_min; + int uclamp_max; + int rt_sched_priority; +}; + +#define QOS_FLAG_NICE 0x01 +#define QOS_FLAG_LATENCY_NICE 0x02 +#define QOS_FLAG_UCLAMP 0x04 +#define QOS_FLAG_RT 0x08 + +#define QOS_FLAG_ALL (QOS_FLAG_NICE | \ + QOS_FLAG_LATENCY_NICE | \ + QOS_FLAG_UCLAMP | \ + QOS_FLAG_RT) + +struct qos_policy_datas { + /* + * policy_type: id for qos policy, valid from [1, QOS_POLICY_MAX_NR) + * policy_flag: control valid sched attr for policy, QOS_FLAG_ALL for whole access + * policys: sched params for specific level qos, minus 1 for matching struct in kerenl + */ + int policy_type; + unsigned int policy_flag; + struct qos_policy_data policys[NR_QOS + 1]; +}; + +struct auth_struct; + +int qos_apply(struct qos_ctrl_data *data); +int qos_leave(struct qos_ctrl_data *data); + +void qos_switch(struct auth_struct *auth, int target_status); + +void init_task_qos(struct task_struct *p); +void sched_exit_qos_list(struct task_struct *p); +void remove_qos_tasks(struct auth_struct *auth); + +long do_qos_ctrl_ioctl(struct file *file, unsigned int cmd, unsigned long arg); + +#endif /* _QOS_CTRL_H */ + diff --git a/qos_auth/include/rtg_auth.h b/qos_auth/include/rtg_auth.h new file mode 100644 index 0000000..c9326f7 --- /dev/null +++ b/qos_auth/include/rtg_auth.h @@ -0,0 +1,33 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * include/linux/sched/rtg_auth.h + * + * Copyright (c) 2022 Huawei Device Co., Ltd. + */ + +#ifndef _RTG_AUTH_H +#define _RTG_AUTH_H + +#include +#include + +/* + * RTG authority flags for SYSTEM or ROOT + * + * keep sync with rtg_sched_cmdid + * when add a new cmd to rtg_sched_cmdid + * keep new_flag = (old_flag << 1) + 1 + * up to now, next flag value is 0x3fff + */ +#define AF_RTG_ALL 0x1fff + +/* + * delegated authority for normal uid + * trim access range for RTG + */ +#define AF_RTG_DELEGATED 0x1fff + +bool check_authorized(unsigned int func_id, unsigned int type); + +#endif /* _RTG_AUTH_H */ + -- Gitee