From patchwork Thu Aug 24 05:42:57 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hoeun Ryu X-Patchwork-Id: 9919087 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 0996760353 for ; Thu, 24 Aug 2017 05:49:55 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EEEAD28B5C for ; Thu, 24 Aug 2017 05:49:54 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id DFE7928B65; Thu, 24 Aug 2017 05:49:54 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.6 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, DKIM_VALID, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 7240128B5C for ; Thu, 24 Aug 2017 05:49:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=H0Dw5GtD1fp+yAGCK2ANYuAdhOfJXZ8/rPpQOrAy6kU=; b=RNX11zNqaqtf09lBO+1s/ppGpP J2cWlk/Pyb9fL4USQvMmoxD6izd/jafmRI8w2EfDlPKh4sIezR5MPDBevKEeLdRKAF5RTt+ZRr5UH eGpCDnzqNhdIQ9HR+XTjDuMGBjHsNzawwIE6+McMBouQkkx6XtAK2XbKfLwMlP6o/Y4s3LOScrhBe 5yIkM5QNb7jBUlOgaWE10DlugiroE4XWndjy7vAv3iWI2TNBEcPsq60yK6QatOO3XvVyCkjqS+Q3C zW7vPzkXljZbK+dxYWJ4i2gI1fP49Bn09UDzZzYE5lAOln5QcLficrt0JBhB2Ii08udiqQ6Jkz0ja MSDtiU/w==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1dkl1a-0000Td-MK; Thu, 24 Aug 2017 05:49:50 +0000 Received: from mail-pg0-x242.google.com ([2607:f8b0:400e:c05::242]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1dkl04-0007va-2t for linux-arm-kernel@lists.infradead.org; Thu, 24 Aug 2017 05:48:18 +0000 Received: by mail-pg0-x242.google.com with SMTP id u9so2402009pgn.5 for ; Wed, 23 Aug 2017 22:47:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=M84HOqtNLfTHLHroH6I3u+OlHiW9AmBg3YZNcgHYMOg=; b=S3QjyLKarSrjmcOabm3aDqZMhMF7zECTnBneHKhoGnrGdOUAXxB1yRYV1HnlRukh45 Pgr1CE5A6jox8U4dqpeDEklDN2d5zsb17uGisTZneV0I6gmtid+WRs57D1QW7k8tugmq MuKJMnyRk4YOWSfizZLeS0x8vcHWxbdZrG5P6RLoG5Wf1LF+2Bq33o3FVb2FKN7SNdv+ bVHlrCD3CTDSStaiQdZ3Cmsr8tO/JuBUHtdMvRbq1OUODbubtfgAGhGNMUOtY8S11smd hDtHVbMwJj+MLw4Hp8Ou0PyOcQYZFjnml2uYUcqkZVLlQu2G4l2DcUvhyzPJIFOyG4EE J4hA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=M84HOqtNLfTHLHroH6I3u+OlHiW9AmBg3YZNcgHYMOg=; b=Odrm7x/cciR5yLNsPNqx8Yf+0F285CL0OAB4Qv8Nbw2zaun7zaG491C4J0yfM5wj7t UjaHVxQfHyaMI536lPl4t03nBsAGHFpkR4ZpH+bHgsFthZk0kEwYSeG6ssVlDAtpVgkG QEz4qT9AU37xcC5VUkz2yMnqwlbDBK6M5hV1q2gVeDRdnhciTmGOO7TKHtXtz5if3+6l gYVLkykDzkMz6gOO/Alv5u2k7zq5eUhwLe6N1cdphd8xNUpv1YPyxu5/x44lb4PBm/6t kzca/dlBGK9Di9l7HUYvQGsJjUmeZlbx90jfDx+GbdIxqF/wXBGjGet3VC9CsYCYEM9m F6aA== X-Gm-Message-State: AHYfb5hUGz6sy1GR4uWrz3+ocH3hVEeq3IkoIG2lICYamrq1MZiw+Ahp qzMqKZa5MKeVwg== X-Received: by 10.84.143.100 with SMTP id 91mr5701907ply.32.1503553675472; Wed, 23 Aug 2017 22:47:55 -0700 (PDT) Received: from hryu-OptiPlex-9020.corp.ad.wrs.com ([61.107.31.52]) by smtp.gmail.com with ESMTPSA id 63sm5728500pgg.44.2017.08.23.22.47.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 23 Aug 2017 22:47:54 -0700 (PDT) From: Hoeun Ryu To: Kees Cook , Andrew Morton , Nicholas Piggin , Ingo Molnar , Michal Marek , Laura Abbott , Al Viro , Andy Lutomirski , mic@digikod.net, Russell King , Vladimir Murzin , Heiko Carstens , Jonathan Austin , Masahiro Yamada , Mark Rutland , Peter Zijlstra Subject: [RFC 3/3] sched: depend on 64BIT_ATOMIC_ACCESS to determine if to use min_vruntime_copy Date: Thu, 24 Aug 2017 14:42:57 +0900 Message-Id: <1503553377-3646-4-git-send-email-hoeun.ryu@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1503553377-3646-1-git-send-email-hoeun.ryu@gmail.com> References: <1503553377-3646-1-git-send-email-hoeun.ryu@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170823_224816_189987_DF0738A9 X-CRM114-Status: GOOD ( 12.77 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-arch@vger.kernel.org, hoeun.ryu@gmail.com, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP 'min_vruntime_copy' is copied when 'min_vruntime' is updated for cfq_rq and used to check if updating 'min_vruntime' is completed on reader side. Because 'min_vruntime' variable is 64bit, we need a mimic of seqlock to check if the variable is not being updated on 32bit machines. On 64BIT_ATOMIC_ACCESS enabled machines, 64bit accesses are atomic even though the machines are 32bit, so we can directly access 'min_vruntime' on the architectures. Depend on CONFIG_64BIT_ATOMIC_ACCESS instead of CONFIG_64BIT to determine whether 'min_vruntime_copy' variable is used for synchronization or not. And align 'min_vruntime' by 8 if 64BIT_ATOMIC_ALIGNED_ACCESS is true because 64BIT_ATOMIC_ALIGNED_ACCESS enabled system can access the variable atomically only when it' aligned. Signed-off-by: Hoeun Ryu --- kernel/sched/fair.c | 6 +++--- kernel/sched/sched.h | 6 +++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index c95880e..840658f 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -536,7 +536,7 @@ static void update_min_vruntime(struct cfs_rq *cfs_rq) /* ensure we never gain time by being placed backwards. */ cfs_rq->min_vruntime = max_vruntime(cfs_rq->min_vruntime, vruntime); -#ifndef CONFIG_64BIT +#ifndef CONFIG_64BIT_ATOMIC_ACCESS smp_wmb(); cfs_rq->min_vruntime_copy = cfs_rq->min_vruntime; #endif @@ -5975,7 +5975,7 @@ static void migrate_task_rq_fair(struct task_struct *p) struct cfs_rq *cfs_rq = cfs_rq_of(se); u64 min_vruntime; -#ifndef CONFIG_64BIT +#ifndef CONFIG_64BIT_ATOMIC_ACCESS u64 min_vruntime_copy; do { @@ -9173,7 +9173,7 @@ void init_cfs_rq(struct cfs_rq *cfs_rq) { cfs_rq->tasks_timeline = RB_ROOT; cfs_rq->min_vruntime = (u64)(-(1LL << 20)); -#ifndef CONFIG_64BIT +#ifndef CONFIG_64BIT_ATOMIC_ACCESS cfs_rq->min_vruntime_copy = cfs_rq->min_vruntime; #endif #ifdef CONFIG_SMP diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index eeef1a3..870010b 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -421,8 +421,12 @@ struct cfs_rq { unsigned int nr_running, h_nr_running; u64 exec_clock; +#ifndef CONFIG_64BIT_ATOMIC_ALIGNED_ACCESS u64 min_vruntime; -#ifndef CONFIG_64BIT +#else + u64 min_vruntime __attribute__((aligned(sizeof(u64)))); +#endif +#ifndef CONFIG_64BIT_ATOMIC_ACCESS u64 min_vruntime_copy; #endif