From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 391E1C433F5 for ; Mon, 3 Oct 2022 22:22:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A2EDC8E0003; Mon, 3 Oct 2022 18:21:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9DF7A8E0001; Mon, 3 Oct 2022 18:21:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7957E8E0003; Mon, 3 Oct 2022 18:21:59 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 662D48E0001 for ; Mon, 3 Oct 2022 18:21:59 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 485BB1C5DE2 for ; Mon, 3 Oct 2022 22:21:59 +0000 (UTC) X-FDA: 79981061958.19.2CEBA65 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2102.outbound.protection.outlook.com [40.107.243.102]) by imf05.hostedemail.com (Postfix) with ESMTP id E121F100014 for ; Mon, 3 Oct 2022 22:21:58 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mEE53YJ5kYmxd8rsjV6ZkpKLi/EyQVjAlODnvvehz1n5Px5BCDrIpAK/ohIFrUKFyI6x6axzJ8b0tq7fnBY25WtVNccJyI02+6cpI8B/H+BtVKEoxcgMUPBaJmWyfXROLGZ8AZn9itTkzO4u3tREcxy/LD2g3E9a8/HwgO8nVCa1D9KvnLWyfo6QZEsbmKQqqkpa9bz3DuRH0Mc66HVmnSGkGPbxj2H52dmgKGtcGrtFweBN5KSrl+dFlEeFG88hXmw9g4dqNLO6l4rJ1TIzEZtPKuFzdbdAXy7CAty+MDHSEPkaZwlAvUzKWMYe9h/ZxiwLolwxGUxGhYJ173G4IQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=lZTIAXW3PIYT2vnKgz/NB6QKRzbYwk7TXNTYR7IO2XI=; b=E2CEEQQc/EreV/q+mwSKwcDL43tp787xFZL0THkeSu/F+qBnv5SX3Fhm8WsOrohgHSVBlhCgeISvgzNjNffj9H6OuYvIaucL25pnvC4L8pA8chrq83x36tcKqhdZKIlauz8PBwJeRDewuC3Ede9NMi254HLUuFQm/UDSepHoHPdBz4oo5j/LCS/AxDqbhXOBX4JjwHGswUZ/C7I7sD1kBrLknFxBXtqJIOEMb36pUWrVbUuuWuZ/AhiLdyS9zvPjlydT5Hgji4ShZNMg+qbwqoJnaOs0rQajYyBDK5wR24WPLOBteePA0NOzXzGxk5NJeBD6IdJ7h3GLrAnRTEk11A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=bu.edu; dmarc=pass action=none header.from=bu.edu; dkim=pass header.d=bu.edu; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bu.edu; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lZTIAXW3PIYT2vnKgz/NB6QKRzbYwk7TXNTYR7IO2XI=; b=sNFDzkgxRGYu/Ac/deVfqkjVVAvj9EMO7hsGbREtAm2VexlzUHxe4d3jZd6Ue/39wN+mfCaV3NQNk9aELVqPIC3cd31oPhIYPWC1ZZUAefIeuROAV3Pz8Wjtor5fTEaa+kNeCkqsufS6VG68AvXbwix3S0aOMaG6P2DJzcQ0r+4T4xB7GejUKd7lRHySImSw9ZZAHLF/pCovtplgFn7nXM41PKTHTsC8+5CFNGvtiju/5kXL4tAqIB4dMYd6oCBto3Lc02Eb4AixeJgiTNaypqyT6agmS2PQPWX1LUMiV/ZJsh82LQvoPzv87E3SDuseNAslWMj4hpbOXDwQ84ZBZQ== Received: from BL0PR03MB4129.namprd03.prod.outlook.com (2603:10b6:208:65::33) by MN2PR03MB4928.namprd03.prod.outlook.com (2603:10b6:208:1a7::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24; Mon, 3 Oct 2022 22:21:57 +0000 Received: from BL0PR03MB4129.namprd03.prod.outlook.com ([fe80::9e2b:bf05:79ec:581]) by BL0PR03MB4129.namprd03.prod.outlook.com ([fe80::9e2b:bf05:79ec:581%4]) with mapi id 15.20.5676.030; Mon, 3 Oct 2022 22:21:57 +0000 From: Ali Raza To: linux-kernel@vger.kernel.org Cc: corbet@lwn.net, masahiroy@kernel.org, michal.lkml@markovi.net, ndesaulniers@google.com, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, luto@kernel.org, ebiederm@xmission.com, keescook@chromium.org, peterz@infradead.org, viro@zeniv.linux.org.uk, arnd@arndb.de, juri.lelli@redhat.com, vincent.guittot@linaro.org, dietmar.eggemann@arm.com, rostedt@goodmis.org, bsegall@google.com, mgorman@suse.de, bristot@redhat.com, vschneid@redhat.com, pbonzini@redhat.com, jpoimboe@kernel.org, linux-doc@vger.kernel.org, linux-kbuild@vger.kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-arch@vger.kernel.org, x86@kernel.org, rjones@redhat.com, munsoner@bu.edu, tommyu@bu.edu, drepper@redhat.com, lwoodman@redhat.com, mboydmcse@gmail.com, okrieg@bu.edu, rmancuso@bu.edu, Ali Raza , Daniel Bristot de Oliveira Subject: [RFC UKL 03/10] sched: Add task_struct tracking of kernel or application execution Date: Mon, 3 Oct 2022 18:21:26 -0400 Message-Id: <20221003222133.20948-4-aliraza@bu.edu> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221003222133.20948-1-aliraza@bu.edu> References: <20221003222133.20948-1-aliraza@bu.edu> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: MN2PR04CA0031.namprd04.prod.outlook.com (2603:10b6:208:d4::44) To BL0PR03MB4129.namprd03.prod.outlook.com (2603:10b6:208:65::33) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL0PR03MB4129:EE_|MN2PR03MB4928:EE_ X-MS-Office365-Filtering-Correlation-Id: 24145433-6598-43c4-d244-08daa58daee1 X-LD-Processed: d57d32cc-c121-488f-b07b-dfe705680c71,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tOOEsiurEVHVZPTgyLZHoiALIhwmwQ/3hcPPn/BBLpsFkqCP+lp4XS9yLCwLyFSBx1k/eOKnaqwoaeKBPGLilSG34EZ59ioJRRP/H+Vmj9VDnX+D936CVI17gd+L7xKT2Nu3kFg+no5sQoJV11m3B6duceVWyklNo+XfHpmcgevqgFs+gxl9BlCJG1Jy45kLANWqEZykc/OlWcmbHcS8wFLWdlFysxQGMzbYbXfv0wO0V0RA6rKnFbg+1CQn1rmH1kgsPZQefDcvkiUjmRpAy2CKmUxWsO5sWj6cC8/U+gSOTM6R9qIiEstYyaCmjiTNGgIFyzyTO+YFuNL6E09adqoiSKoV1dXbLENRYGQlPNdbwl33dOyZ6S3KfojdzeijCUjokkU0wjVywpwR1oSMhE01QChkTeHyAAdwUAihji9jv45/V6F3hEIoRJoodJTmCo37CawIUmuQpSgonqrHEjGVClMqwMSyV8MMAnPki+P9b5DWBx+iESYyi2iPGEoSNCGsr3kUKTzUyrACNmzy/5dXJZj+cXnVE+slkI2mFSrQpeCACSFL5MKGlieTmEzl2rwMblCP2seAKeurd8IW86b+cT8BVhe7wAsq0zzAYjF63LgToZVHwOCzwJOOOx4pwClWSGJItyFFLkCmYYJEupKlP0W2+k/nC2msMYiSp1/WkWS7UqHuE0+VWxcm1lBCBlobFBEyDemP8SLc50nH6biwP4kq5wqOVaNTGOfO3EM4rNW9Z687f2FWmPJrdssEO+sy3u/S5tUtreAyJqXpyA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR03MB4129.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(376002)(136003)(346002)(366004)(396003)(39860400002)(451199015)(8936002)(7406005)(41300700001)(6666004)(38350700002)(75432002)(66556008)(66476007)(4326008)(8676002)(1076003)(186003)(6512007)(2906002)(2616005)(66946007)(52116002)(6506007)(36756003)(5660300002)(7416002)(26005)(86362001)(41320700001)(6916009)(54906003)(38100700002)(316002)(6486002)(478600001)(786003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?tpN28o5aaoXqE4QPVDjmZQvWwEwRt/hl6t6pe5o4Av9Pe8nIS/ivtFHMeGTy?= =?us-ascii?Q?wLL2TR5uc54wu2f6dlzi8Cdp+3bamXXwixJAjUTnJgtx25aj0ewisrAeYSCo?= =?us-ascii?Q?fFf0CSn1bDWlfJP9B3kAqhYNTYBKBN0Bp4XwFgrRRFh+Fz4k0nsn7VjmGezL?= =?us-ascii?Q?Eiyf6g1U5Nl8kyvqyWpxIGr5uMZ8G0H8ata5sdpga833dnr+Tx2C6mKET59e?= =?us-ascii?Q?uTuKR5Wgk4Qd/KaumJ0j5IdGiSkWZgp0fNLkJ/YLOsLadCG+0NoqBpZQrg8/?= =?us-ascii?Q?MQjw7eNc7JQs6XgITlN0quDKJixGYcmCWYTESNY5yeRPX7GUWiJLLxc/wwK8?= =?us-ascii?Q?NsC0DdHMZRl6gfpml+QbkhN06AcONV5IKa+5tM0JO2jplQ4FCfTTaLohLmyV?= =?us-ascii?Q?Z9yTXkiQwlgpJc4HHb3tydtGm89MxOlhlBowzrFwCHg/rZiRBKb4JfBz6OoD?= =?us-ascii?Q?lVFi0k8tSUse0hP6RmimC0gfAL1RW0p4LiJQTMu5okvS0EV5f6+5U6SeN8Lj?= =?us-ascii?Q?wX76E/qIOb4nDsCUi4sQTSQ3dLMEGlwAn1O9PpN3X5lISPXnuMY7Itm/3Zll?= =?us-ascii?Q?Wo/ntjb07Iwu7f3dJ138aEoRLgRuErHAvlWjC2HJU1cB370mj9UokoOKK5U6?= =?us-ascii?Q?CQE7WSD1jy1EnqR2Cuih/1leJ1WNrxeJIjAMIHJkWxsXCWEDiQ6ZmUX6sRmn?= =?us-ascii?Q?+fP4uCaBeb8Ln7fyyLfhhKmbUcPIBN4HPuMvaEhHhXBeZczw3/4aGPuYXbW4?= =?us-ascii?Q?j5mpb1Mq0LR+g0QI72iyx6p95X0yksQfqGR6VkT/88agGjz6rMmP2Lqsan4A?= =?us-ascii?Q?/WMBekIJmEcEb/marQJCItskROtfJNBm22DfDGQ6XQLmJ9MltcHflw5jEZWM?= =?us-ascii?Q?it/lgNIC3rzqCDdFXb3qcHiAl/I2C1AC7f5s2T3Q7/Fzgl/2BtFtjpUmhvuF?= =?us-ascii?Q?z9Zi4Ke28bW/8BkyvDSaxTDenQ4g6TqQ2JSeSdb4rKRMU1QKx8I3bse4J6gK?= =?us-ascii?Q?6t7NRcWX3D721SW/COrCVw/MIZi2fSsjbtGTjHe4BF5b84Hg25jdMTXQ8/Lf?= =?us-ascii?Q?yzLpAiIRqFlxlnu/wfaxiWy0YZLuPPfO9veLgGBUQBRqcKZFB9xotr0Jtica?= =?us-ascii?Q?z1fEh/xTM7NPAqPYmOY4oCHmGR463Ch0yrgzKMbg5FZFtm0jtC/5o7la1inH?= =?us-ascii?Q?avonBOpewjZXgPRkpObTBQVGbSZe/no/Po68jMHUo7HPI0WyvUI6rNnCJU4m?= =?us-ascii?Q?BgHCW9p7CLJ8rcNlOuVLvKE6zofubWACyWNUf6i/ke15QsTA+4bXypMbt/hZ?= =?us-ascii?Q?dnnsOoUoEPPFhg00ALgjZDK6NJwy2kQKIehDguZSJqyfyffieV5XsMZZ2TmX?= =?us-ascii?Q?M3IbrPSZzy7vS/SJa+BC7V38BLdHvMAxNxiDVk7n3KIXglR/hVfpSwiKnBDJ?= =?us-ascii?Q?1SCrBHzmQEK/ERrTru07tg5j+uw6HkjMFH4YGTFXp7Cg+vzRAChGcOgQCnMN?= =?us-ascii?Q?gb/JAoK3swfGYZFgWmAKopeMRxVVaDtV/e6PC3unq8zSIdFSMqF7EilZtAwu?= =?us-ascii?Q?+NIoxnBAh4NJQDswI3Pip0UYn4pTx1bwnv75rI+C?= X-OriginatorOrg: bu.edu X-MS-Exchange-CrossTenant-Network-Message-Id: 24145433-6598-43c4-d244-08daa58daee1 X-MS-Exchange-CrossTenant-AuthSource: BL0PR03MB4129.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Oct 2022 22:21:57.2790 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: d57d32cc-c121-488f-b07b-dfe705680c71 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Ff8u7t47tT+cHI7Uzv+saWmkINimrz8m7lftvladVsrm0ZjzohA4Q8XwHGFVOBoF X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR03MB4928 ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1664835719; a=rsa-sha256; cv=pass; b=fI4uGwzzl8QTWdfvNiUAz85CiziZSVTQIKSQpUWSQrHsSPNvJX3+EZc8SficjGGhaMcrgD 6X341hUtp3CGjxp6JHyg6S/yIwtDjAjC9zFW8Pb003VSv8Bd6xvoSlHDtZjap9gqR5ep5n FkSHjRJACUTJZYly8HptDxW6hPNMWb0= ARC-Authentication-Results: i=2; imf05.hostedemail.com; dkim=pass header.d=bu.edu header.s=selector2 header.b=sNFDzkgx; dmarc=pass (policy=none) header.from=bu.edu; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf05.hostedemail.com: domain of aliraza@bu.edu designates 40.107.243.102 as permitted sender) smtp.mailfrom=aliraza@bu.edu ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1664835718; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=lZTIAXW3PIYT2vnKgz/NB6QKRzbYwk7TXNTYR7IO2XI=; b=x9M+0ew8lNIo2amUGCsxEF9s9Ei4fbuRaLjKcVVA8ss6HWdSChkObUn8nALM+jYMTZkh5f f/SJg4qlpnQTnYljHSo1gdQmd9cjiRoEsi3OAvr8Ve9gDwUwdQt4+IRH577w25/9DAP5a7 8P6QyZaQsDJKNBl2jcOU0BZt9A3cJoQ= X-Rspam-User: Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=bu.edu header.s=selector2 header.b=sNFDzkgx; dmarc=pass (policy=none) header.from=bu.edu; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf05.hostedemail.com: domain of aliraza@bu.edu designates 40.107.243.102 as permitted sender) smtp.mailfrom=aliraza@bu.edu X-Stat-Signature: gtoem4ix874qdj89harappemx7e8kxuk X-Rspamd-Queue-Id: E121F100014 X-Rspamd-Server: rspam09 X-HE-Tag: 1664835718-458790 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Because UKL removes the barrier between kernel and user space, we need to track if we are executing application code or kernel code to ensure that we take the appropriate actions on transitions. When we transition to kernel code, we need to handle RCU and on the way to user code we need to check if scheduling needs to happen, etc. We cannot use the CS value from the stack because it will always be set to the kernel value. These functions will be used in a later change to entry_64.S to identify the execution context for the current thread. Cc: Jonathan Corbet Cc: Masahiro Yamada Cc: Michal Marek Cc: Nick Desaulniers Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Cc: Dave Hansen Cc: "H. Peter Anvin" Cc: Andy Lutomirski Cc: Eric Biederman Cc: Kees Cook Cc: Peter Zijlstra Cc: Alexander Viro Cc: Arnd Bergmann Cc: Juri Lelli Cc: Vincent Guittot Cc: Dietmar Eggemann Cc: Steven Rostedt Cc: Ben Segall Cc: Mel Gorman Cc: Daniel Bristot de Oliveira Cc: Valentin Schneider Cc: Paolo Bonzini Cc: Josh Poimboeuf Co-developed-by: Daniel Bristot de Oliveira Signed-off-by: Daniel Bristot de Oliveira Co-developed-by: Ali Raza Signed-off-by: Ali Raza --- arch/x86/kernel/process_64.c | 22 ++++++++++++++++++++++ include/linux/sched.h | 26 ++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c index 1962008fe743..e9e4a2946452 100644 --- a/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c @@ -501,6 +501,28 @@ void x86_gsbase_write_task(struct task_struct *task, unsigned long gsbase) task->thread.gsbase = gsbase; } +#ifdef CONFIG_UNIKERNEL_LINUX +/* + * 0 = Non UKL thread + * 1 = UKL thread - in kernel code + * 2 = UKL thread - in application code + */ +int is_ukl_thread(void) +{ + return current->ukl_thread; +} + +void enter_ukl_user(void) +{ + current->ukl_thread = UKL_APPLICATION; +} + +void enter_ukl_kernel(void) +{ + current->ukl_thread = UKL_KERNEL; +} +#endif + static void start_thread_common(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp, diff --git a/include/linux/sched.h b/include/linux/sched.h index e7b2f8a5c711..b8bf50ae0fda 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -746,6 +746,13 @@ struct task_struct { randomized_struct_fields_start void *stack; +#ifdef CONFIG_UNIKERNEL_LINUX + /* + * Indicator used for threads in a UKL application, 0 means non-UKL thread, 1 is UKL thread + * in kernel text, 2 is UKL thread in application text + */ + int ukl_thread; +#endif refcount_t usage; /* Per task flags (PF_*), defined further below: */ unsigned int flags; @@ -1529,6 +1536,25 @@ struct task_struct { */ }; +/* + * 0 = Non UKL thread + * 1 = UKL thread - in kernel code + * 2 = UKL thread - in application code + */ +#define NON_UKL_THREAD 0 +#define UKL_KERNEL 1 +#define UKL_APPLICATION 2 + +#ifdef CONFIG_UNIKERNEL_LINUX +int is_ukl_thread(void); +void enter_ukl_user(void); +void enter_ukl_kernel(void); +#else +static inline int is_ukl_thread(void) { return NON_UKL_THREAD; } +static inline void enter_ukl_user(void) {} +static inline void enter_ukl_kernel(void) {} +#endif + static inline struct pid *task_pid(struct task_struct *task) { return task->thread_pid; -- 2.21.3