From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934311AbbI1PSk (ORCPT ); Mon, 28 Sep 2015 11:18:40 -0400 Received: from mail-am1on0086.outbound.protection.outlook.com ([157.56.112.86]:50518 "EHLO emea01-am1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S934283AbbI1PSZ (ORCPT ); Mon, 28 Sep 2015 11:18:25 -0400 Authentication-Results: spf=fail (sender IP is 12.216.194.146) smtp.mailfrom=ezchip.com; ezchip.com; dkim=none (message not signed) header.d=none;ezchip.com; dmarc=none action=none header.from=ezchip.com; From: Chris Metcalf To: Gilad Ben Yossef , Steven Rostedt , Ingo Molnar , Peter Zijlstra , Andrew Morton , "Rik van Riel" , Tejun Heo , Frederic Weisbecker , Thomas Gleixner , "Paul E. McKenney" , Christoph Lameter , Viresh Kumar , Catalin Marinas , Will Deacon , Andy Lutomirski , CC: Chris Metcalf Subject: [PATCH v7 11/11] arch/tile: enable task isolation functionality Date: Mon, 28 Sep 2015 11:17:26 -0400 Message-ID: <1443453446-7827-12-git-send-email-cmetcalf@ezchip.com> X-Mailer: git-send-email 2.1.2 In-Reply-To: <1443453446-7827-1-git-send-email-cmetcalf@ezchip.com> References: <1443453446-7827-1-git-send-email-cmetcalf@ezchip.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;DB3FFO11FD008;1:EY2mZsqGPC38XF/fiGDNVnd+u8LawbHOegELy2xqfHlIe+cN4OS+mJAxAekTV36p5WksSDMHx2i6WP+DyQf/i4GfjPkVg0FYtsEnMiJ4uQAbAJMsFTD1+lGvExuxIeqJoRuZBsCGg6aM/8UOWZaYvocCF2PwMFGpQJjbLuw2ylwVjuJ0fkPPLjtekl8P3LvgsL0H9rH+rdbczO3TczL9vRotQtbqsnSFowWIl47RukZO6JhXg8peML+4QmjppSPv+JXdZEBkblU1PsFYQalKW6QX2WDlyMXeRCBvxBFGNGsRVGLQDcP8Z19qAJAnB6QyBTocrV9BnkvpPfWn3cStQ0xr0WfBKbCUQDWDKEtVhz0= X-Forefront-Antispam-Report: CIP:12.216.194.146;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(1110001)(1109001)(339900001)(189002)(199003)(5007970100001)(85426001)(575784001)(5003940100001)(87936001)(62966003)(86362001)(5001830100001)(36756003)(5001770100001)(5001860100001)(6806005)(77156002)(104016004)(42186005)(4001540100001)(81156007)(97736004)(68736005)(76176999)(5001920100001)(64706001)(107886002)(2950100001)(106476002)(50986999)(92566002)(5001960100002)(50226001)(19580405001)(19580395003)(106466001)(46102003)(50466002)(189998001)(105606002)(106356001)(48376002)(11100500001)(229853001)(47776003)(33646002)(9376005)(921003)(83996005)(1121003)(4001430100001)(2101003);DIR:OUT;SFP:1101;SCL:1;SRVR:HE1PR02MB0780;H:ld-1.internal.tilera.com;FPR:;SPF:Fail;PTR:InfoNoRecords;MX:1;A:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;HE1PR02MB0780;2:qBSQ/dQzTw7PF3p1DsbDN2+Cgbgu2W13FGFzXg7l3gWnVxCogVLa0vmM0u9+yau5svRRvJTi8Mcu6G+OVMblP97rVg7Rfldax2qX+xmSBPFV6XRHMio1qkHixB1ogh3CVk9ADWp6CyFGQLE59zSf/hf5SaOjDNIiYhC/I8weJ84=;3:fAB/4OmrJRjeiH57FEzYNE3FwqVDUpCUQ0eg/jM8etCYOMYy8E941S/7Mpc0OweC+r1XDCLtmih7RmGHXZhoJ8/Snf4JYsx9DGXUHS4Xlzjj7BcHo0Kr2lidGqJnZa8X6Qtr5X1/uUNQ8TZbtjPh3aAbtDnBlDYHmO0wyDXoxGtM8CwCOPeqbTziaK7+Chcb7Ki5DIIdPSp6JRpFIxVd4BvIU1YZREkXxTWoskJJ/Lvtv5l3Iq6+4dA6Q4lD983l;25:0p+UH3mSl3UVArpWLfE5vIaCgCivD3+WaA9G9mNsMRK2HDd6tTCw8BXZ9ZMkgtLN7MFK/WiucbNIwcxy7hz60IGUD5iusZjRxk72emRwMgDA74RWKt+Pm8WZkxjwTBF0RcTKFPfrYv5E738LtWpWZcAqajIVVqt57zqjAO2lm3P3mOoaSolyPWVWvWwHTehiVERpIiY8AZ39jQ+eHD5rG1+uQRSQmddrtAxvy30+b1pYXWaTc8UBtCJNosffvM1wqDJjXbosMWxJh/CnNEIQlA==;20:ZGzEJRL2m8QmcCVXHXNf1zmMNsQ2EEVvGRzN35ndtbzSJrkBwI3eAQXsmWTD2aOeK9R52Jg7ypqFV32nj9upbfLCsMMNfodLSvICrQ+NnuJbCZXpc20DH3CWlah27LlTddWRxQ3VdatzwWSJOm2gXEmxOgDCc/9jCDX9R0kalWY= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:HE1PR02MB0780; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(520078)(8121501046)(3002001);SRVR:HE1PR02MB0780;BCL:0;PCL:0;RULEID:;SRVR:HE1PR02MB0780; X-Microsoft-Exchange-Diagnostics: 1;HE1PR02MB0780;4:rg6XV1JGFLvlMDOYttfri1chTdFUwJPMxRqXI5OGKVfJFXfbhccj+hTKclUnb6GI2VJdNOTR39bUbgUVOWl/oWVzGlTLggCmFaj7Vuqt9RzZ+QCQtcIyH1AQVyZu6+tTRYbXZA+I0qTiSMTGupyo++u7kNwyAort5ETdo7qas8BnEJ4DoBfAv1a/2slAueKLhCUHExKorYVjTg519ezzcWBExr6L71a34OkCpuc/x7h9nqDVolxkG+0OilracivO53iZTPFdXMTfDtDVY1k/vuZEECccaszH54R+JAX55uELhXcs+23m8HeotyawXj1PBACHtUtsg6TxK8Gas15fpr51+xjMDA8P7BGbe/us1H0= X-Forefront-PRVS: 0713BC207F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;HE1PR02MB0780;23:Cevq9cztbVANUOQ3e7DaHPA85O5bNy0PPOi9zjKJt?= =?us-ascii?Q?E6aHf7BiszUeChf9r2fS8cI5k8F5BIGfpnk+MyESHgW1cyi00d23ZTaqPO7T?= =?us-ascii?Q?wI9gahxmK5Ep4LAAbSkJImGD8wJsN3KjZNPcMRkaMH6NEuP5IEHMBZNE+muG?= =?us-ascii?Q?kqO2mq9I4ZOnn9nFZFyqOC44Xq/f1YQMDgp1pFVXqHK7WbdCsGqOL3L6+4ef?= =?us-ascii?Q?+dkS/PQJ+NeFamKiSCWKiZofyi8msssevR8fWmWMuGCpd4h8nP1ac9LWwFp6?= =?us-ascii?Q?CPqZQdZic5s5fXCnZqj9tK4p8Rg8EuEMg6S2prVRT6X2GzM/XJAtYDKQd6tU?= =?us-ascii?Q?gAK97KO7Ap2WlTgJPWPCt7L4JPgR0JcqeHR7teGWTF0PCH/ZnnToqKwHIWG6?= =?us-ascii?Q?5RdgBrp+AnSU+n1+zAebTns7cvld9qcDh9/4jy+GDHYvTXbPW9Oi+vnWffNm?= =?us-ascii?Q?RvvbEl/AjAe1mcZ4JphkY6g12V+YsuN0uuh9kyut6ooQdgSw1TAIe15qRLQg?= =?us-ascii?Q?t+JoHb2x1zOIi8SPoM3FWsVuH4SuoKwMKhYJdaj0DUbcHs1hO//duOadKjoS?= =?us-ascii?Q?ML0V6db73NIVztm2bxK4IhO9Cw6BHDsTkKHgN2wrsvd92p5vniaRyaDQyMbA?= =?us-ascii?Q?4yqtEEYQab03GuFWkP5cDgUyeti11x0WXSiltZoufuP1ZrJW8sSYl4CjLhvf?= =?us-ascii?Q?AfBH+ANWRKRJ92WGaI5avmUSYDf2iuyctRoaiVrayhrAUdfLkzvI/WqeAMJq?= =?us-ascii?Q?cit6WbLCTkjj4LVbNtXxkXyEOinODahhtE1ISpqycNgXya8xhJgu15f9Kc4m?= =?us-ascii?Q?7sU/UfevE8B5k5Z/GByPd3am43u5uNxJFhhBE8/kK7ZtiPkKl+VMarQa6AgB?= =?us-ascii?Q?vQ8xx5STFyaZ8ddfql2NSgkip2x1WJyjm/Fd5dZG0da4GsAgpwIJFuHqzXBk?= =?us-ascii?Q?IyB15OO8fFmQ5hDAiBAxDPXoSM0rBwoMH1YSbAn4+ZwY9mcmy2yPTHRlpD39?= =?us-ascii?Q?CmmYbx7CaSdnUvkRsXOh9IjGVhB2qgMmLVniRxqAtHBgSRykMA4PpbsP6M6n?= =?us-ascii?Q?71/2/m4RmXvlEiU8niiTvCSWaXnsZCA6sRjKMe2PNYIET3+2c6ewJD0Oto6Q?= =?us-ascii?Q?uNqTrXyna7LPQbLlIY6k5ESf0YHcbKmfMI8A7FteQhmNUbphj8GX2UagAVyq?= =?us-ascii?Q?sRRynUMpE2qGe6fuCp1oHG6orMDd0Er5ZGzUKJp3imweuOhSmh3YbLlMOkoR?= =?us-ascii?Q?yuW4sV7K4eq1Qyho7CSoAB9UNVWLkv722nOH4nNxpH2TlRlSWuQ6D+XDHnu+?= =?us-ascii?Q?zRPZnMTcnsSuj26qVqU9NuCC/71EpjkIAaKJAa17bO7HHagcRX1pdBpXUJwh?= =?us-ascii?Q?IOW2YAtTHE7QRJCxV1kq1dQZfReNmp0YciiVXUPc6EsuOl1prN1roNCJ5KaN?= =?us-ascii?Q?0Z0gomePkPsfvgrnAF7xI8TX5s0ghM=3D?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR02MB0780;5:mYqiXCOmujPJt9NrFJ6/DmksCnjtJit3H3hKMLIoRYj3lEnaWTKF9wrAX90JZhXtEMwIwGOhoPC9FgJ3HiSPaffghC54ir0xi/0tXGDy7PtLvbYE8mftVpJuKOjcpa9N/3Kom4WBg0TqZT9mW/R3Iw==;24:cDbkskyqJqP6BUwRCL4gk5xyvGESG5rb+iEWOwlYbMULp456vHyI/ZjQ+ttyiFPHTQSyue6YMhynkmo3y0wsHQPIJEJKotLm9rJ4k2yzq68=;20:ra1TAsC6To29ofEkA2LXYtM+RWX6/4NktsfgVyE4/IT9SvxslWXBUUmdPS8lEbRWwyXBkFoZ4wBZvgNnV2tBRw== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ezchip.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Sep 2015 15:18:20.6285 (UTC) X-MS-Exchange-CrossTenant-Id: 0fc16e0a-3cd3-4092-8b2f-0a42cff122c3 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=0fc16e0a-3cd3-4092-8b2f-0a42cff122c3;Ip=[12.216.194.146];Helo=[ld-1.internal.tilera.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR02MB0780 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org We add the necessary call to task_isolation_enter() in the prepare_exit_to_usermode() routine. We already unconditionally call into this routine if TIF_NOHZ is set, since that's where we do the user_enter() call. In addition, we add an overriding task_isolation_wait() call that runs a nap instruction while waiting for an interrupt, to make the task_isolation_enter() loop run in a lower-power state. Signed-off-by: Chris Metcalf --- arch/tile/kernel/process.c | 13 +++++++++++++ arch/tile/kernel/ptrace.c | 3 +++ arch/tile/mm/homecache.c | 5 ++++- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/arch/tile/kernel/process.c b/arch/tile/kernel/process.c index b5f30d376ce1..28aa0f8b45ef 100644 --- a/arch/tile/kernel/process.c +++ b/arch/tile/kernel/process.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -70,6 +71,15 @@ void arch_cpu_idle(void) _cpu_idle(); } +#ifdef CONFIG_TASK_ISOLATION +void task_isolation_wait(void) +{ + set_current_state(TASK_INTERRUPTIBLE); + _cpu_idle(); + set_current_state(TASK_RUNNING); +} +#endif + /* * Release a thread_info structure */ @@ -495,6 +505,9 @@ void prepare_exit_to_usermode(struct pt_regs *regs, u32 thread_info_flags) tracehook_notify_resume(regs); } + if (task_isolation_enabled()) + task_isolation_enter(); + local_irq_disable(); thread_info_flags = READ_ONCE(current_thread_info()->flags); diff --git a/arch/tile/kernel/ptrace.c b/arch/tile/kernel/ptrace.c index bdc126faf741..04a7a6bf7d0a 100644 --- a/arch/tile/kernel/ptrace.c +++ b/arch/tile/kernel/ptrace.c @@ -265,6 +265,9 @@ int do_syscall_trace_enter(struct pt_regs *regs) if (secure_computing() == -1) return -1; + if ((work & _TIF_NOHZ) && task_isolation_strict()) + task_isolation_syscall(regs->regs[TREG_SYSCALL_NR]); + if (work & _TIF_SYSCALL_TRACE) { if (tracehook_report_syscall_entry(regs)) regs->regs[TREG_SYSCALL_NR] = -1; diff --git a/arch/tile/mm/homecache.c b/arch/tile/mm/homecache.c index 40ca30a9fee3..a79325113105 100644 --- a/arch/tile/mm/homecache.c +++ b/arch/tile/mm/homecache.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include @@ -83,8 +84,10 @@ static void hv_flush_update(const struct cpumask *cache_cpumask, * Don't bother to update atomically; losing a count * here is not that critical. */ - for_each_cpu(cpu, &mask) + for_each_cpu(cpu, &mask) { ++per_cpu(irq_stat, cpu).irq_hv_flush_count; + task_isolation_debug(cpu); + } } /* -- 2.1.2