Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp4007292imm; Mon, 30 Jul 2018 07:11:01 -0700 (PDT) X-Google-Smtp-Source: AAOMgpebd7uew8vKNFC0cSg9Dv8J+V7BKGAufhk4RUYcBr2OWg1dZ3/ZeWXAwMcqJCWWoWDge89C X-Received: by 2002:a17:902:26c:: with SMTP id 99-v6mr16253004plc.341.1532959861137; Mon, 30 Jul 2018 07:11:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532959861; cv=none; d=google.com; s=arc-20160816; b=gKANFG6WuscApkZZhULKuiFW2QKadOyjk1kQZsHyNoBTRsbNzuqu3KP1FNMZa7Dq71 KtWjyFAPmM8hvhI7UMAMoiK81DpQy4QJzNMALdjJ39yNwNukUAueXHg8cogJv+sVxrB8 /Fdwr3MzHLvy88Wcb3BagdQh3HYO1+gk7NJXTXhc40BvVU5qlL2ndSjt7NuB7l8Oi/qk pBVXPt2Q/z+Iqj/cQ0F9EyFAqJBz514F3x36f42BY9YxwXm5ckrUuSnstLaL1uRRV/iq Rcq9RoqZxRW0++LPb7xBdipBW3rxIAxTbTOZTqcneEJqah6ckqNbppCLWdaRAbohSB9q 0PIg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature :arc-authentication-results; bh=aEYywBpLuJb06lebWVOkgljrAav/y+L2dQUSu2nsXR0=; b=QS/FyiZOr2Y3e5iPkr6uLT42/q+AiDluSrwv64SwU8Tpd7K+DG0grWZmlffw8RSF8m KayNl7t7pYuki/i4EcSkxwfdX2I/mrwGPiK6C3N7OoID5ToM/ak85vPblirF+0ihQ1ZX 0QhAsxtetTnCJPldx56+cnmnQN+GN+kZN/pbJDZijaLSWi0yKH4+raWlpAeBVpHHVKgj IQt5x/jKz8Zcb8io+nRVwgA+4qNmsN8m8PDMtGd9GcsctLFmeN5r9unkVs2wi78Kw01P eFokJrjdDegDTiQgunAhQbXjGw3jQGJ5iPVujcvbj5JaUxtnzr0UtxgR59p/o/CMsnbg p34w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2018-07-02 header.b=vqkYY8pz; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o126-v6si11203197pfb.20.2018.07.30.07.10.46; Mon, 30 Jul 2018 07:11:01 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2018-07-02 header.b=vqkYY8pz; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727057AbeG3Po6 (ORCPT + 99 others); Mon, 30 Jul 2018 11:44:58 -0400 Received: from aserp2130.oracle.com ([141.146.126.79]:35370 "EHLO aserp2130.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726740AbeG3Po5 (ORCPT ); Mon, 30 Jul 2018 11:44:57 -0400 Received: from pps.filterd (aserp2130.oracle.com [127.0.0.1]) by aserp2130.oracle.com (8.16.0.22/8.16.0.22) with SMTP id w6UE8wMS014091 for ; Mon, 30 Jul 2018 14:09:46 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=mime-version : references : in-reply-to : from : date : message-id : subject : to : cc : content-type; s=corp-2018-07-02; bh=aEYywBpLuJb06lebWVOkgljrAav/y+L2dQUSu2nsXR0=; b=vqkYY8pzAWi0lT0QFyglPZIUXOtQ7+BXW4DqgfpVA2Sb9nXD2Y++4jO35FrpO6SMvQLy cM60bGVwL8FcPaIVVGQU+LvCD1N6+yBerx+xN7iSEnQivvK3ZEj0UMj/ihxrU/CoyFCT oEF1K+9o875vv9rm+dGq7hEXtdrE2WdUe8hV0/yki5QWEqt0pxFH/0jf0yvx63bE2gT2 AUvkvkyVDRYaKWejw4c8v4fNfItlLjRxxsgLHhob2+zI0lw/LXNoV8k5sLjlr3YAhXXj LzTgTHYxtGBH80/Bcw4qENo1bF8D3ysMucxF1mYcJQoPdoZhkjS20UPTITLavzMKXOCo IQ== Received: from userv0021.oracle.com (userv0021.oracle.com [156.151.31.71]) by aserp2130.oracle.com with ESMTP id 2kge0cvsn0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 30 Jul 2018 14:09:46 +0000 Received: from userv0121.oracle.com (userv0121.oracle.com [156.151.31.72]) by userv0021.oracle.com (8.14.4/8.14.4) with ESMTP id w6UE9itq018900 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 30 Jul 2018 14:09:44 GMT Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by userv0121.oracle.com (8.14.4/8.13.8) with ESMTP id w6UE9iD2000320 for ; Mon, 30 Jul 2018 14:09:44 GMT Received: from mail-oi0-f44.google.com (/209.85.218.44) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 30 Jul 2018 07:09:44 -0700 Received: by mail-oi0-f44.google.com with SMTP id s198-v6so21451705oih.11 for ; Mon, 30 Jul 2018 07:09:44 -0700 (PDT) X-Gm-Message-State: AOUpUlGZ4PNknANq/ZWS1viVCBNXzy/dgH4kg7yGXXU/GJy9JZrEDAfQ 9+3YO5mrXDYnzgCyIir8FlEWm2dEPb1g8OFx1pc= X-Received: by 2002:aca:db09:: with SMTP id s9-v6mr19391498oig.339.1532959783786; Mon, 30 Jul 2018 07:09:43 -0700 (PDT) MIME-Version: 1.0 References: <20180730075421.22830-1-douly.fnst@cn.fujitsu.com> <20180730075421.22830-2-douly.fnst@cn.fujitsu.com> In-Reply-To: <20180730075421.22830-2-douly.fnst@cn.fujitsu.com> From: Pavel Tatashin Date: Mon, 30 Jul 2018 10:09:07 -0400 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH 1/2] x86/tsc: Avoid a double call if TSC initializes earlier. To: douly.fnst@cn.fujitsu.com Cc: LKML , x86@kernel.org, tglx@linutronix.de, mingo@redhat.com, hpa@zytor.com, peterz@infradead.org Content-Type: text/plain; charset="UTF-8" X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=8969 signatures=668706 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=3 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1806210000 definitions=main-1807300157 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Jul 30, 2018 at 3:55 AM Dou Liyang wrote: > > static_branch_enable(&__use_tsc) may be called twice in common case, that > is redundant. And there are also some common functions both in > tsc_early_init() and tsc_init(). > > Move them into a separate helper function, only call it once. > Also fix comments: > -s/authorative/authoritative > -s/cyc2ns_init/tsc_init > > Cc: Thomas Gleixner > Cc: Ingo Molnar > Cc: "H. Peter Anvin" > Cc: Peter Zijlstra > Cc: Pavel Tatashin > Signed-off-by: Dou Liyang Hi Dou, Nice cleanup. Reviewed-by: Pavel Tatashin Thank you, Pavel > --- > arch/x86/kernel/tsc.c | 22 ++++++++++++---------- > 1 file changed, 12 insertions(+), 10 deletions(-) > > diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c > index 02e416b87ac1..ba0a6b6e0726 100644 > --- a/arch/x86/kernel/tsc.c > +++ b/arch/x86/kernel/tsc.c > @@ -182,7 +182,7 @@ static void __init cyc2ns_init_boot_cpu(void) > } > > /* > - * Secondary CPUs do not run through cyc2ns_init(), so set up > + * Secondary CPUs do not run through tsc_init(), so set up > * all the scale factors for all CPUs, assuming the same > * speed as the bootup CPU. (cpufreq notifiers will fix this > * up if their speed diverges) > @@ -1389,7 +1389,7 @@ static bool __init determine_cpu_tsc_frequencies(bool early) > } > > /* > - * Trust non-zero tsc_khz as authorative, > + * Trust non-zero tsc_khz as authoritative, > * and use it to sanity check cpu_khz, > * which will be off if system timer is off. > */ > @@ -1421,6 +1421,14 @@ static unsigned long __init get_loops_per_jiffy(void) > return lpj; > } > > +static void __init enable_use_tsc(void) > +{ > + /* Sanitize TSC ADJUST before cyc2ns gets initialized */ > + tsc_store_and_check_tsc_adjust(true); > + cyc2ns_init_boot_cpu(); > + static_branch_enable(&__use_tsc); > +} > + > void __init tsc_early_init(void) > { > if (!boot_cpu_has(X86_FEATURE_TSC)) > @@ -1429,10 +1437,7 @@ void __init tsc_early_init(void) > return; > loops_per_jiffy = get_loops_per_jiffy(); > > - /* Sanitize TSC ADJUST before cyc2ns gets initialized */ > - tsc_store_and_check_tsc_adjust(true); > - cyc2ns_init_boot_cpu(); > - static_branch_enable(&__use_tsc); > + enable_use_tsc(); > } > > void __init tsc_init(void) > @@ -1456,13 +1461,10 @@ void __init tsc_init(void) > setup_clear_cpu_cap(X86_FEATURE_TSC_DEADLINE_TIMER); > return; > } > - /* Sanitize TSC ADJUST before cyc2ns gets initialized */ > - tsc_store_and_check_tsc_adjust(true); > - cyc2ns_init_boot_cpu(); > + enable_use_tsc(); > } > > cyc2ns_init_secondary_cpus(); > - static_branch_enable(&__use_tsc); > > if (!no_sched_irq_time) > enable_sched_clock_irqtime(); > -- > 2.14.3 > > >