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 X-Spam-Level: X-Spam-Status: No, score=-6.9 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 90275C43603 for ; Tue, 17 Dec 2019 14:10:24 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5818F20663 for ; Tue, 17 Dec 2019 14:10:24 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="bf+oLmaP" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728575AbfLQOKX (ORCPT ); Tue, 17 Dec 2019 09:10:23 -0500 Received: from us-smtp-1.mimecast.com ([205.139.110.61]:45009 "EHLO us-smtp-delivery-1.mimecast.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728853AbfLQOKW (ORCPT ); Tue, 17 Dec 2019 09:10:22 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1576591820; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=l+9uMkP5RS2E3iz9PV+jjXlyXbFKuV9GLhcKuu5FhcU=; b=bf+oLmaPduq6BxX6/NiRntDGm8D6SBf12z8x5EMb5bc72yb79/qeJ/hUlRWAI8BN1FoVTs nsN0hx5K6TF1sU334VzlvHwGw8aJsFR4L0TM5dJQqAB7yEx745BSpfyowbkCjcE7abuTks baqZBWbYRgbJ4PMuUCR5tRNO8mK1IOM= Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-46-e-oSPvbxN62ZoThW5f_ciQ-1; Tue, 17 Dec 2019 09:10:19 -0500 X-MC-Unique: e-oSPvbxN62ZoThW5f_ciQ-1 Received: by mail-wm1-f72.google.com with SMTP id q26so600189wmq.8 for ; Tue, 17 Dec 2019 06:10:18 -0800 (PST) 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:in-reply-to:references:date :message-id:mime-version; bh=l+9uMkP5RS2E3iz9PV+jjXlyXbFKuV9GLhcKuu5FhcU=; b=nNLKsLefjCxAoL0Rq900Zaj/HgGVbtBjP12h3s99cFH1ZLGzx0XWJbdg7ih4nouS3h 9wd3TpxE1/tALl/vV+jb4BqG92bA0TuKh+R/Zsns5D2IBaNs7Wyh5wz5qqISMUKAFJ1n bU2IgHI03PmQUJmySZhcwuKsbjoLt4c+MuEcR99i3fFP9wszd5ZASm/h50XvLGBNhbj4 LpNvUO5HgxsgkVe3i/cxJjN++cLjw4X9HNsJ80iLg/tGdKRIf3IJSGLjx6YCsUV0w+7R WVBRHEGYxaKfzPuD7VuGT2tOuAaSf4DbTtc1Q/+pnCkAKclzAzv5MinggO+ChHvcje/c ZHKA== X-Gm-Message-State: APjAAAXBQ2Rgiyz1LV4AWVngB3zs23mpd2C2oNT0s9NOoSxqTHZoYZCB TsUXL11J5ZMZvKdnqWUXBaHV8yJNt6vQw4p85ttI2ahe5i/zAJmRDbL8oHXotejwYBI0Jab2XbP Ga4W0K6yfNNFwJr8EoPSJC3sJ X-Received: by 2002:adf:f2d0:: with SMTP id d16mr38825224wrp.314.1576591817700; Tue, 17 Dec 2019 06:10:17 -0800 (PST) X-Google-Smtp-Source: APXvYqwaELcthklaxQ6wLgDx/YlEXj3opzNJiBv6389QDhORMgwNtbPpUtXb75P8pH2ZWl6IiqNKdg== X-Received: by 2002:adf:f2d0:: with SMTP id d16mr38825179wrp.314.1576591817477; Tue, 17 Dec 2019 06:10:17 -0800 (PST) Received: from vitty.brq.redhat.com (nat-pool-brq-t.redhat.com. [213.175.37.10]) by smtp.gmail.com with ESMTPSA id o194sm3248953wme.45.2019.12.17.06.10.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Dec 2019 06:10:16 -0800 (PST) From: Vitaly Kuznetsov To: Boqun Feng Cc: Michael Kelley , Vincenzo Frascino , Catalin Marinas , Will Deacon , Thomas Gleixner , "K. Y. Srinivasan" , Haiyang Zhang , Stephen Hemminger , Sasha Levin , xen-devel@lists.xenproject.org, Stefano Stabellini , Boqun Feng , linux-hyperv@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [RFC 6/6] arm64: hyperv: Enable vDSO In-Reply-To: <20191216001922.23008-7-boqun.feng@gmail.com> References: <20191216001922.23008-1-boqun.feng@gmail.com> <20191216001922.23008-7-boqun.feng@gmail.com> Date: Tue, 17 Dec 2019 15:10:16 +0100 Message-ID: <87y2vb82lz.fsf@vitty.brq.redhat.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-hyperv-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-hyperv@vger.kernel.org Boqun Feng writes: > Similar to x86, add a new vclock_mode VCLOCK_HVCLOCK, and reuse the > hv_read_tsc_page() for userspace to read tsc page clocksource. > > Signed-off-by: Boqun Feng (Microsoft) > --- > arch/arm64/include/asm/clocksource.h | 3 ++- > arch/arm64/include/asm/mshyperv.h | 2 +- > arch/arm64/include/asm/vdso/gettimeofday.h | 19 +++++++++++++++++++ > 3 files changed, 22 insertions(+), 2 deletions(-) > > diff --git a/arch/arm64/include/asm/clocksource.h b/arch/arm64/include/asm/clocksource.h > index fbe80057468c..c6acd45fe748 100644 > --- a/arch/arm64/include/asm/clocksource.h > +++ b/arch/arm64/include/asm/clocksource.h > @@ -4,7 +4,8 @@ > > #define VCLOCK_NONE 0 /* No vDSO clock available. */ > #define VCLOCK_CNTVCT 1 /* vDSO should use cntvcnt */ > -#define VCLOCK_MAX 1 > +#define VCLOCK_HVCLOCK 2 /* vDSO should use vread_hvclock() */ > +#define VCLOCK_MAX 2 > > struct arch_clocksource_data { > int vclock_mode; > diff --git a/arch/arm64/include/asm/mshyperv.h b/arch/arm64/include/asm/mshyperv.h > index 0afb00e3501d..7c85dd816dca 100644 > --- a/arch/arm64/include/asm/mshyperv.h > +++ b/arch/arm64/include/asm/mshyperv.h > @@ -90,7 +90,7 @@ extern void hv_get_vpreg_128(u32 reg, struct hv_get_vp_register_output *result); > #define hv_set_reference_tsc(val) \ > hv_set_vpreg(HV_REGISTER_REFERENCE_TSC, val) > #define hv_set_clocksource_vdso(val) \ > - ((val).archdata.vclock_mode = VCLOCK_NONE) > + ((val).archdata.vclock_mode = VCLOCK_HVCLOCK) > > #if IS_ENABLED(CONFIG_HYPERV) > #define hv_enable_stimer0_percpu_irq(irq) enable_percpu_irq(irq, 0) > diff --git a/arch/arm64/include/asm/vdso/gettimeofday.h b/arch/arm64/include/asm/vdso/gettimeofday.h > index e6e3fe0488c7..7e689b903f4d 100644 > --- a/arch/arm64/include/asm/vdso/gettimeofday.h > +++ b/arch/arm64/include/asm/vdso/gettimeofday.h > @@ -67,6 +67,20 @@ int clock_getres_fallback(clockid_t _clkid, struct __kernel_timespec *_ts) > return ret; > } > > +#ifdef CONFIG_HYPERV_TIMER > +/* This will override the default hv_get_raw_timer() */ > +#define hv_get_raw_timer() __arch_counter_get_cntvct() > +#include > + > +extern struct ms_hyperv_tsc_page > +_hvclock_page __attribute__((visibility("hidden"))); > + > +static u64 vread_hvclock(void) > +{ > + return hv_read_tsc_page(&_hvclock_page); > +} > +#endif The function is almost the same on x86 (&_hvclock_page -> &hvclock_page), would it maybe make sense to move this to arch neutral clocksource/hyperv_timer.h? > + > static __always_inline u64 __arch_get_hw_counter(s32 clock_mode) > { > u64 res; > @@ -78,6 +92,11 @@ static __always_inline u64 __arch_get_hw_counter(s32 clock_mode) > if (clock_mode == VCLOCK_NONE) > return __VDSO_USE_SYSCALL; > > +#ifdef CONFIG_HYPERV_TIMER > + if (likely(clock_mode == VCLOCK_HVCLOCK)) > + return vread_hvclock(); I'm not sure likely() is justified here: it'll make ALL builds which enable CONFIG_HYPERV_TIMER (e.g. distro kernels) to prefer VCLOCK_HVCLOCK, even if the kernel is not running on Hyper-V. > +#endif > + > /* > * This isb() is required to prevent that the counter value > * is speculated. -- Vitaly 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 X-Spam-Level: X-Spam-Status: No, score=-6.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BA13AC43603 for ; Tue, 17 Dec 2019 14:10:44 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 8B66B20663 for ; Tue, 17 Dec 2019 14:10:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="OEHlrpD3" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8B66B20663 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ihDYX-0001aH-CH; Tue, 17 Dec 2019 14:10:33 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ihDYV-0001Zz-Q1 for xen-devel@lists.xenproject.org; Tue, 17 Dec 2019 14:10:31 +0000 X-Inumbo-ID: f5d0c3c5-20d6-11ea-8ed5-12813bfff9fa Received: from us-smtp-1.mimecast.com (unknown [205.139.110.61]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTP id f5d0c3c5-20d6-11ea-8ed5-12813bfff9fa; Tue, 17 Dec 2019 14:10:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1576591820; h=from:from: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; bh=NU89d8R3gu38BXtEWYFAE1R5MspGNajzMjWsud1XviY=; b=OEHlrpD3CsST22+zUsjz8agT56N4WqeiCJ99jLSIl4QyZOnh9R1xipKAErKoKpb+iGSJD8 oPprrREH24wn9uiIWqn1NMJSnsCYrAotHwjYK86nhYfQlmTkbBUHuC1Bwl/irk4DHjBHao mqVL6XVhMjaurVBqB5fu3Bv0E7z53GQ= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-106-Q9DnBPSVNQ-5DRd2NqAKAg-1; Tue, 17 Dec 2019 09:10:19 -0500 Received: by mail-wm1-f70.google.com with SMTP id 7so599161wmf.9 for ; Tue, 17 Dec 2019 06:10:18 -0800 (PST) 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:in-reply-to:references:date :message-id:mime-version; bh=l+9uMkP5RS2E3iz9PV+jjXlyXbFKuV9GLhcKuu5FhcU=; b=cTnEwmGPC/wKfJDbe2GcNuXHxx40ghJ4d74KhhBH/DhZ9z0UyvECz9ooxQdtg+4wJT hmRz6cy2a++OFLqIVWnYBvXyoXwDCrJTZT7JDwL/e6ijgGLNxJ3e967sseL03e27C1ex HcbJGHDimHhrbzZNzdrnTeZS7AZ1Lof/O6ub+TcYY4hbQPTwI2/QSTOFlRa7zk53LSq8 /Lccfp82SJ1J8DXX/gXARjIT0/cls8/WanN6GxXSn8F8jdTDuAeF51PirZQ3r2or5KFN HG+ZaVVelskoGlMDV9oQN52oKATlMMxdPAF/1m4JEh8d+4lFxkz2dK9+djH1f0xnghXD j+Ng== X-Gm-Message-State: APjAAAUaFtXmvMMBudBpYkS+C4agjNSE99xh99z8iZ/aYRQwmXiFgTdi V2a4sFPUbsSt9TQ6tFm0XIshscSoe7Tl8snfFuZfRZzXWYjVPjGuu5F5KES9jtAJa3Nmk6ILWfn X0fX9gFY+hnSYQ2qbHUpWIRCNCXk= X-Received: by 2002:adf:f2d0:: with SMTP id d16mr38825209wrp.314.1576591817685; Tue, 17 Dec 2019 06:10:17 -0800 (PST) X-Google-Smtp-Source: APXvYqwaELcthklaxQ6wLgDx/YlEXj3opzNJiBv6389QDhORMgwNtbPpUtXb75P8pH2ZWl6IiqNKdg== X-Received: by 2002:adf:f2d0:: with SMTP id d16mr38825179wrp.314.1576591817477; Tue, 17 Dec 2019 06:10:17 -0800 (PST) Received: from vitty.brq.redhat.com (nat-pool-brq-t.redhat.com. [213.175.37.10]) by smtp.gmail.com with ESMTPSA id o194sm3248953wme.45.2019.12.17.06.10.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Dec 2019 06:10:16 -0800 (PST) From: Vitaly Kuznetsov To: Boqun Feng In-Reply-To: <20191216001922.23008-7-boqun.feng@gmail.com> References: <20191216001922.23008-1-boqun.feng@gmail.com> <20191216001922.23008-7-boqun.feng@gmail.com> Date: Tue, 17 Dec 2019 15:10:16 +0100 Message-ID: <87y2vb82lz.fsf@vitty.brq.redhat.com> MIME-Version: 1.0 X-MC-Unique: Q9DnBPSVNQ-5DRd2NqAKAg-1 X-Mimecast-Spam-Score: 0 Subject: Re: [Xen-devel] [RFC 6/6] arm64: hyperv: Enable vDSO X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Sasha Levin , linux-hyperv@vger.kernel.org, Vincenzo Frascino , Stephen Hemminger , Catalin Marinas , Haiyang Zhang , linux-kernel@vger.kernel.org, Michael Kelley , Stefano Stabellini , xen-devel@lists.xenproject.org, Thomas Gleixner , "K. Y. Srinivasan" , Will Deacon , Boqun Feng , linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Qm9xdW4gRmVuZyA8Ym9xdW4uZmVuZ0BnbWFpbC5jb20+IHdyaXRlczoKCj4gU2ltaWxhciB0byB4 ODYsIGFkZCBhIG5ldyB2Y2xvY2tfbW9kZSBWQ0xPQ0tfSFZDTE9DSywgYW5kIHJldXNlIHRoZQo+ IGh2X3JlYWRfdHNjX3BhZ2UoKSBmb3IgdXNlcnNwYWNlIHRvIHJlYWQgdHNjIHBhZ2UgY2xvY2tz b3VyY2UuCj4KPiBTaWduZWQtb2ZmLWJ5OiBCb3F1biBGZW5nIChNaWNyb3NvZnQpIDxib3F1bi5m ZW5nQGdtYWlsLmNvbT4KPiAtLS0KPiAgYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9jbG9ja3NvdXJj ZS5oICAgICAgIHwgIDMgKystCj4gIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbXNoeXBlcnYuaCAg ICAgICAgICB8ICAyICstCj4gIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vdmRzby9nZXR0aW1lb2Zk YXkuaCB8IDE5ICsrKysrKysrKysrKysrKysrKysKPiAgMyBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNl cnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5j bHVkZS9hc20vY2xvY2tzb3VyY2UuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vY2xvY2tzb3Vy Y2UuaAo+IGluZGV4IGZiZTgwMDU3NDY4Yy4uYzZhY2Q0NWZlNzQ4IDEwMDY0NAo+IC0tLSBhL2Fy Y2gvYXJtNjQvaW5jbHVkZS9hc20vY2xvY2tzb3VyY2UuaAo+ICsrKyBiL2FyY2gvYXJtNjQvaW5j bHVkZS9hc20vY2xvY2tzb3VyY2UuaAo+IEBAIC00LDcgKzQsOCBAQAo+ICAKPiAgI2RlZmluZSBW Q0xPQ0tfTk9ORQkwCS8qIE5vIHZEU08gY2xvY2sgYXZhaWxhYmxlLgkJKi8KPiAgI2RlZmluZSBW Q0xPQ0tfQ05UVkNUCTEJLyogdkRTTyBzaG91bGQgdXNlIGNudHZjbnQJCSovCj4gLSNkZWZpbmUg VkNMT0NLX01BWAkxCj4gKyNkZWZpbmUgVkNMT0NLX0hWQ0xPQ0sJMgkvKiB2RFNPIHNob3VsZCB1 c2UgdnJlYWRfaHZjbG9jaygpCSovCj4gKyNkZWZpbmUgVkNMT0NLX01BWAkyCj4gIAo+ICBzdHJ1 Y3QgYXJjaF9jbG9ja3NvdXJjZV9kYXRhIHsKPiAgCWludCB2Y2xvY2tfbW9kZTsKPiBkaWZmIC0t Z2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9tc2h5cGVydi5oIGIvYXJjaC9hcm02NC9pbmNs dWRlL2FzbS9tc2h5cGVydi5oCj4gaW5kZXggMGFmYjAwZTM1MDFkLi43Yzg1ZGQ4MTZkY2EgMTAw NjQ0Cj4gLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9tc2h5cGVydi5oCj4gKysrIGIvYXJj aC9hcm02NC9pbmNsdWRlL2FzbS9tc2h5cGVydi5oCj4gQEAgLTkwLDcgKzkwLDcgQEAgZXh0ZXJu IHZvaWQgaHZfZ2V0X3ZwcmVnXzEyOCh1MzIgcmVnLCBzdHJ1Y3QgaHZfZ2V0X3ZwX3JlZ2lzdGVy X291dHB1dCAqcmVzdWx0KTsKPiAgI2RlZmluZSBodl9zZXRfcmVmZXJlbmNlX3RzYyh2YWwpIFwK PiAgCQlodl9zZXRfdnByZWcoSFZfUkVHSVNURVJfUkVGRVJFTkNFX1RTQywgdmFsKQo+ICAjZGVm aW5lIGh2X3NldF9jbG9ja3NvdXJjZV92ZHNvKHZhbCkgXAo+IC0JCSgodmFsKS5hcmNoZGF0YS52 Y2xvY2tfbW9kZSA9IFZDTE9DS19OT05FKQo+ICsJCSgodmFsKS5hcmNoZGF0YS52Y2xvY2tfbW9k ZSA9IFZDTE9DS19IVkNMT0NLKQo+ICAKPiAgI2lmIElTX0VOQUJMRUQoQ09ORklHX0hZUEVSVikK PiAgI2RlZmluZSBodl9lbmFibGVfc3RpbWVyMF9wZXJjcHVfaXJxKGlycSkJZW5hYmxlX3BlcmNw dV9pcnEoaXJxLCAwKQo+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Zkc28v Z2V0dGltZW9mZGF5LmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Zkc28vZ2V0dGltZW9mZGF5 LmgKPiBpbmRleCBlNmUzZmUwNDg4YzcuLjdlNjg5YjkwM2Y0ZCAxMDA2NDQKPiAtLS0gYS9hcmNo L2FybTY0L2luY2x1ZGUvYXNtL3Zkc28vZ2V0dGltZW9mZGF5LmgKPiArKysgYi9hcmNoL2FybTY0 L2luY2x1ZGUvYXNtL3Zkc28vZ2V0dGltZW9mZGF5LmgKPiBAQCAtNjcsNiArNjcsMjAgQEAgaW50 IGNsb2NrX2dldHJlc19mYWxsYmFjayhjbG9ja2lkX3QgX2Nsa2lkLCBzdHJ1Y3QgX19rZXJuZWxf dGltZXNwZWMgKl90cykKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gKyNpZmRlZiBDT05GSUdf SFlQRVJWX1RJTUVSCj4gKy8qIFRoaXMgd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdCBodl9nZXRf cmF3X3RpbWVyKCkgKi8KPiArI2RlZmluZSBodl9nZXRfcmF3X3RpbWVyKCkgX19hcmNoX2NvdW50 ZXJfZ2V0X2NudHZjdCgpCj4gKyNpbmNsdWRlIDxjbG9ja3NvdXJjZS9oeXBlcnZfdGltZXIuaD4K PiArCj4gK2V4dGVybiBzdHJ1Y3QgbXNfaHlwZXJ2X3RzY19wYWdlCj4gK19odmNsb2NrX3BhZ2Ug X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKTsKPiArCj4gK3N0YXRpYyB1NjQg dnJlYWRfaHZjbG9jayh2b2lkKQo+ICt7Cj4gKwlyZXR1cm4gaHZfcmVhZF90c2NfcGFnZSgmX2h2 Y2xvY2tfcGFnZSk7Cj4gK30KPiArI2VuZGlmCgpUaGUgZnVuY3Rpb24gaXMgYWxtb3N0IHRoZSBz YW1lIG9uIHg4NiAoJl9odmNsb2NrX3BhZ2UgLT4KJmh2Y2xvY2tfcGFnZSksIHdvdWxkIGl0IG1h eWJlIG1ha2Ugc2Vuc2UgdG8gbW92ZSB0aGlzIHRvIGFyY2ggbmV1dHJhbApjbG9ja3NvdXJjZS9o eXBlcnZfdGltZXIuaD8KCj4gKwo+ICBzdGF0aWMgX19hbHdheXNfaW5saW5lIHU2NCBfX2FyY2hf Z2V0X2h3X2NvdW50ZXIoczMyIGNsb2NrX21vZGUpCj4gIHsKPiAgCXU2NCByZXM7Cj4gQEAgLTc4 LDYgKzkyLDExIEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdTY0IF9fYXJjaF9nZXRfaHdfY291 bnRlcihzMzIgY2xvY2tfbW9kZSkKPiAgCWlmIChjbG9ja19tb2RlID09IFZDTE9DS19OT05FKQo+ ICAJCXJldHVybiBfX1ZEU09fVVNFX1NZU0NBTEw7Cj4gIAo+ICsjaWZkZWYgQ09ORklHX0hZUEVS Vl9USU1FUgo+ICsJaWYgKGxpa2VseShjbG9ja19tb2RlID09IFZDTE9DS19IVkNMT0NLKSkKPiAr CQlyZXR1cm4gdnJlYWRfaHZjbG9jaygpOwoKSSdtIG5vdCBzdXJlIGxpa2VseSgpIGlzIGp1c3Rp ZmllZCBoZXJlOiBpdCdsbCBtYWtlIEFMTCBidWlsZHMgd2hpY2gKZW5hYmxlIENPTkZJR19IWVBF UlZfVElNRVIgKGUuZy4gZGlzdHJvIGtlcm5lbHMpIHRvIHByZWZlcgpWQ0xPQ0tfSFZDTE9DSywg ZXZlbiBpZiB0aGUga2VybmVsIGlzIG5vdCBydW5uaW5nIG9uIEh5cGVyLVYuCgo+ICsjZW5kaWYK PiArCj4gIAkvKgo+ICAJICogVGhpcyBpc2IoKSBpcyByZXF1aXJlZCB0byBwcmV2ZW50IHRoYXQg dGhlIGNvdW50ZXIgdmFsdWUKPiAgCSAqIGlzIHNwZWN1bGF0ZWQuCgotLSAKVml0YWx5CgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54 ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA== 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 X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E3313C43603 for ; Tue, 17 Dec 2019 14:11:01 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B372421739 for ; Tue, 17 Dec 2019 14:11:01 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="jykclhyZ"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="V39HoX4/"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="OEHlrpD3" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B372421739 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org 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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:References :In-Reply-To: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=LxhVzuR2n/wI8q33JaRgqlGq+OCYj+BjfHX7MzhizI0=; b=jykclhyZbn6Rdq 02nKEEHiCkdgAfngQM/QzDkDfNcd9/zsdZhr6DVgF1m5Vg6lkdC83Ll+Iv7Ks780hcIfr/499z4GX UIoI16Y0tXCIM22TWCpRmErjOrNpxWsyrRYRMWdbTkwVlh8OtLOZugiQNzP3fkR3d7gucBr1VfIcQ ksIjqNXSzzED77CHJCHe1CeQ5wFebGYqVoysKNstnY/V4n3IYvDviAWi3slMOV9Vm+gCVKShKxPQ7 UUOzLfWbUGZ/oo6TQhs7KjRhxHXJJ3Wu1ALUMkxy3gaqZDFOhheAZ093eHYhFw69ShqF+UykrvXtP I5qFSZJwYS39kBJvQLUg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1ihDYr-00085t-PO; Tue, 17 Dec 2019 14:10:53 +0000 Received: from casper.infradead.org ([2001:8b0:10b:1236::1]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1ihDYp-00085m-Pb for linux-arm-kernel@bombadil.infradead.org; Tue, 17 Dec 2019 14:10:51 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:Content-Type: MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From:Sender :Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=NU89d8R3gu38BXtEWYFAE1R5MspGNajzMjWsud1XviY=; b=V39HoX4/FYvNvFd+u+fqYDZXNo DIKLN43T1wFWedlYY+B40IIn1xqDfokhFVcgxm+KL3CgGMUvM9b/aj+2DSG3RKChroTSAuX0iweHS XgbcOISaKAKrIT0TGaqwSTc7wM1rCxT6ymOn2pMXY0UoVVgFxC9p/2DJ1O40YXbRLnUdODZ31UabX bh6bucP9DKmk7gj/VF/O8/1DBjy277bLYy+iN/DmV1cwmr7aDXXFll4xLIY5+thyCBaN1olvifHEL IpB7j7u8kB+y20q2D0MelWiLhABfSV8Fmq2g5IQZvn/Q2XTkAWI+PWYktN66821WX3Du+lioO36pI p7lHBeRw==; Received: from us-smtp-1.mimecast.com ([205.139.110.61] helo=us-smtp-delivery-1.mimecast.com) by casper.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1ihDZF-0004wo-Ho for linux-arm-kernel@lists.infradead.org; Tue, 17 Dec 2019 14:11:19 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1576591820; h=from:from: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; bh=NU89d8R3gu38BXtEWYFAE1R5MspGNajzMjWsud1XviY=; b=OEHlrpD3CsST22+zUsjz8agT56N4WqeiCJ99jLSIl4QyZOnh9R1xipKAErKoKpb+iGSJD8 oPprrREH24wn9uiIWqn1NMJSnsCYrAotHwjYK86nhYfQlmTkbBUHuC1Bwl/irk4DHjBHao mqVL6XVhMjaurVBqB5fu3Bv0E7z53GQ= Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-250-zSd5RCnQPsCaH_iOr2hqVA-1; Tue, 17 Dec 2019 09:10:19 -0500 Received: by mail-wr1-f70.google.com with SMTP id f10so5423743wro.14 for ; Tue, 17 Dec 2019 06:10:18 -0800 (PST) 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:in-reply-to:references:date :message-id:mime-version; bh=l+9uMkP5RS2E3iz9PV+jjXlyXbFKuV9GLhcKuu5FhcU=; b=Lkt+6HnF5N/xv/odui82MrUSDbP8ghVaTJH0XLlhUk+Om49KNFmWlcvsH87jaIN+z1 zkuS1qwRo7ZT1PPrtfjpCQXsOzADRad98z3sgPf6928tLlDmx+Cebbn+SmxA9vbIOKDu iElMpXPX3BEyWWJAP0RevZGK4YQIEZzFLI/edkxbTqQGAahB1BVOuDe32y0kYSYub/Nr spo9mTNAiEn98sLZ83sj8FYfksy0Qm3Ls7cVmw77P2hePfbLNMvPfI/td/IMT3XA5mFJ 0EQNOcXoEHPOwSqHtK/KLp9x3MtsuqFtgEaLLSQSQXGKQsRvMEi7TRac7CwiWKABRSeX tdog== X-Gm-Message-State: APjAAAX09SIhRbKfRVhyTV6d+BxiGZXPOXiCThtkKtLrqvd8krNz0Eo+ bUzUwRtYKpc5MiVTdu7YteEuWhlAk5UpL3TFEFWhUDvkD0aoniLQyUaYCnE6Q1PvhdfTspVcCer mX1g3KW6ahfAc3PUIEd14v1CPzRd4p3r20I8= X-Received: by 2002:adf:f2d0:: with SMTP id d16mr38825218wrp.314.1576591817686; Tue, 17 Dec 2019 06:10:17 -0800 (PST) X-Google-Smtp-Source: APXvYqwaELcthklaxQ6wLgDx/YlEXj3opzNJiBv6389QDhORMgwNtbPpUtXb75P8pH2ZWl6IiqNKdg== X-Received: by 2002:adf:f2d0:: with SMTP id d16mr38825179wrp.314.1576591817477; Tue, 17 Dec 2019 06:10:17 -0800 (PST) Received: from vitty.brq.redhat.com (nat-pool-brq-t.redhat.com. [213.175.37.10]) by smtp.gmail.com with ESMTPSA id o194sm3248953wme.45.2019.12.17.06.10.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Dec 2019 06:10:16 -0800 (PST) From: Vitaly Kuznetsov To: Boqun Feng Subject: Re: [RFC 6/6] arm64: hyperv: Enable vDSO In-Reply-To: <20191216001922.23008-7-boqun.feng@gmail.com> References: <20191216001922.23008-1-boqun.feng@gmail.com> <20191216001922.23008-7-boqun.feng@gmail.com> Date: Tue, 17 Dec 2019 15:10:16 +0100 Message-ID: <87y2vb82lz.fsf@vitty.brq.redhat.com> MIME-Version: 1.0 X-MC-Unique: zSd5RCnQPsCaH_iOr2hqVA-1 X-Mimecast-Spam-Score: 0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191217_141117_710627_4304E070 X-CRM114-Status: GOOD ( 20.09 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sasha Levin , linux-hyperv@vger.kernel.org, Vincenzo Frascino , Stephen Hemminger , Catalin Marinas , Haiyang Zhang , linux-kernel@vger.kernel.org, Michael Kelley , Stefano Stabellini , xen-devel@lists.xenproject.org, Thomas Gleixner , "K. Y. Srinivasan" , Will Deacon , Boqun Feng , linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org Boqun Feng writes: > Similar to x86, add a new vclock_mode VCLOCK_HVCLOCK, and reuse the > hv_read_tsc_page() for userspace to read tsc page clocksource. > > Signed-off-by: Boqun Feng (Microsoft) > --- > arch/arm64/include/asm/clocksource.h | 3 ++- > arch/arm64/include/asm/mshyperv.h | 2 +- > arch/arm64/include/asm/vdso/gettimeofday.h | 19 +++++++++++++++++++ > 3 files changed, 22 insertions(+), 2 deletions(-) > > diff --git a/arch/arm64/include/asm/clocksource.h b/arch/arm64/include/asm/clocksource.h > index fbe80057468c..c6acd45fe748 100644 > --- a/arch/arm64/include/asm/clocksource.h > +++ b/arch/arm64/include/asm/clocksource.h > @@ -4,7 +4,8 @@ > > #define VCLOCK_NONE 0 /* No vDSO clock available. */ > #define VCLOCK_CNTVCT 1 /* vDSO should use cntvcnt */ > -#define VCLOCK_MAX 1 > +#define VCLOCK_HVCLOCK 2 /* vDSO should use vread_hvclock() */ > +#define VCLOCK_MAX 2 > > struct arch_clocksource_data { > int vclock_mode; > diff --git a/arch/arm64/include/asm/mshyperv.h b/arch/arm64/include/asm/mshyperv.h > index 0afb00e3501d..7c85dd816dca 100644 > --- a/arch/arm64/include/asm/mshyperv.h > +++ b/arch/arm64/include/asm/mshyperv.h > @@ -90,7 +90,7 @@ extern void hv_get_vpreg_128(u32 reg, struct hv_get_vp_register_output *result); > #define hv_set_reference_tsc(val) \ > hv_set_vpreg(HV_REGISTER_REFERENCE_TSC, val) > #define hv_set_clocksource_vdso(val) \ > - ((val).archdata.vclock_mode = VCLOCK_NONE) > + ((val).archdata.vclock_mode = VCLOCK_HVCLOCK) > > #if IS_ENABLED(CONFIG_HYPERV) > #define hv_enable_stimer0_percpu_irq(irq) enable_percpu_irq(irq, 0) > diff --git a/arch/arm64/include/asm/vdso/gettimeofday.h b/arch/arm64/include/asm/vdso/gettimeofday.h > index e6e3fe0488c7..7e689b903f4d 100644 > --- a/arch/arm64/include/asm/vdso/gettimeofday.h > +++ b/arch/arm64/include/asm/vdso/gettimeofday.h > @@ -67,6 +67,20 @@ int clock_getres_fallback(clockid_t _clkid, struct __kernel_timespec *_ts) > return ret; > } > > +#ifdef CONFIG_HYPERV_TIMER > +/* This will override the default hv_get_raw_timer() */ > +#define hv_get_raw_timer() __arch_counter_get_cntvct() > +#include > + > +extern struct ms_hyperv_tsc_page > +_hvclock_page __attribute__((visibility("hidden"))); > + > +static u64 vread_hvclock(void) > +{ > + return hv_read_tsc_page(&_hvclock_page); > +} > +#endif The function is almost the same on x86 (&_hvclock_page -> &hvclock_page), would it maybe make sense to move this to arch neutral clocksource/hyperv_timer.h? > + > static __always_inline u64 __arch_get_hw_counter(s32 clock_mode) > { > u64 res; > @@ -78,6 +92,11 @@ static __always_inline u64 __arch_get_hw_counter(s32 clock_mode) > if (clock_mode == VCLOCK_NONE) > return __VDSO_USE_SYSCALL; > > +#ifdef CONFIG_HYPERV_TIMER > + if (likely(clock_mode == VCLOCK_HVCLOCK)) > + return vread_hvclock(); I'm not sure likely() is justified here: it'll make ALL builds which enable CONFIG_HYPERV_TIMER (e.g. distro kernels) to prefer VCLOCK_HVCLOCK, even if the kernel is not running on Hyper-V. > +#endif > + > /* > * This isb() is required to prevent that the counter value > * is speculated. -- Vitaly _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel