From nobody Wed Apr 24 17:42:41 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=none (zohomail.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=citrix.com Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1580853026038593.0628689025746; Tue, 4 Feb 2020 13:50:26 -0800 (PST) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iz64w-0000xl-Cj; Tue, 04 Feb 2020 21:49:54 +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 1iz64v-0000xV-Jj for xen-devel@lists.xenproject.org; Tue, 04 Feb 2020 21:49:53 +0000 Received: from esa3.hc3370-68.iphmx.com (unknown [216.71.145.155]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 42a59160-4798-11ea-9026-12813bfff9fa; Tue, 04 Feb 2020 21:49:47 +0000 (UTC) X-Inumbo-ID: 42a59160-4798-11ea-9026-12813bfff9fa DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1580852988; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=tSvnExCdFXARkrtaSkB6c/ckGLd1WaztgIQX2KGRvAw=; b=QpkrgyHdxCtKJ8h1yD9612pwMnpE5gR5ga0L95Xob56DuUskf5joN77c xeePPYgZTyeTUENa3oSXh5zrav+wyDs6I82FqPcbjEB5d5c1WCpWjBrtN KINVYwGKVEhdwTLgpW9oxOcoop/6AffD8NqwWSU+8zlb1xLxuHE5k6fps Y=; Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=igor.druzhinin@citrix.com; spf=Pass smtp.mailfrom=igor.druzhinin@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: none (zohomail.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Received-SPF: None (esa3.hc3370-68.iphmx.com: no sender authenticity information available from domain of igor.druzhinin@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa3.hc3370-68.iphmx.com; envelope-from="igor.druzhinin@citrix.com"; x-sender="igor.druzhinin@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa3.hc3370-68.iphmx.com: domain of igor.druzhinin@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa3.hc3370-68.iphmx.com; envelope-from="igor.druzhinin@citrix.com"; x-sender="igor.druzhinin@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ip4:168.245.78.127 ~all" Received-SPF: None (esa3.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa3.hc3370-68.iphmx.com; envelope-from="igor.druzhinin@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: xHRvshM94kiPk2A4g4iQIs4HIZUOOMzy4aLRsi1QVBkD5y1oG3SIZkvl85CwchBuOL2/3Ou9g8 2gc4yUtFi2ZZiCdglsVjFzyT/H/+x4dq9JR+kHddVlY8tF/T8jRtf77fH2JcZW3x/gjj57j9F5 mF2B1rPdLDGcj2N6odBIfx15MV9ytKctO1xqldaV/kAVz52YmDRSj2h9v4QrSqUWs7KY4bXGeY ieyZxPF5fIfUquDmgtbiTZeGkYe+9gXTq5PfbpI6hAGqnxAENFhZNS++sXe2K1yx0cJaJ5PCKw gDw= X-SBRS: 2.7 X-MesageID: 11944113 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.70,403,1574139600"; d="scan'208";a="11944113" From: Igor Druzhinin To: Date: Tue, 4 Feb 2020 21:49:36 +0000 Message-ID: <1580852977-23866-2-git-send-email-igor.druzhinin@citrix.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1580852977-23866-1-git-send-email-igor.druzhinin@citrix.com> References: <1580852977-23866-1-git-send-email-igor.druzhinin@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH v2 1/2] x86/shim: suspend and resume platform time correctly 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: andrew.cooper3@citrix.com, Igor Druzhinin , wl@xen.org, jbeulich@suse.com, roger.pau@citrix.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Similarly to S3, platform time needs to be saved on guest suspend and restored on resume respectively. This should account for expected jumps in PV clock counter value after resume. time_suspend/resume() are safe to use in PVH setting as is since any existing operations with PIT/HPET that they do would simply be ignored if PIT/HPET is not present. Additionally, add resume callback for Xen PV clocksource to avoid its breakage on migration. Signed-off-by: Igor Druzhinin Reviewed-by: Roger Pau Monn=C3=A9 --- xen/arch/x86/pv/shim.c | 7 ++++++- xen/arch/x86/time.c | 12 +++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/xen/arch/x86/pv/shim.c b/xen/arch/x86/pv/shim.c index 7a898fd..6b26eaa 100644 --- a/xen/arch/x86/pv/shim.c +++ b/xen/arch/x86/pv/shim.c @@ -325,9 +325,13 @@ int pv_shim_shutdown(uint8_t reason) if ( v !=3D current ) vcpu_pause_by_systemcontroller(v); =20 + /* Prepare timekeeping code to suspend.*/ + time_suspend(); + rc =3D xen_hypercall_shutdown(SHUTDOWN_suspend); if ( rc ) { + time_resume(); for_each_vcpu ( d, v ) if ( v !=3D current ) vcpu_unpause_by_systemcontroller(v); @@ -335,8 +339,9 @@ int pv_shim_shutdown(uint8_t reason) return rc; } =20 - /* Resume the shim itself first. */ + /* Resume the shim itself and timekeeping first. */ hypervisor_resume(); + time_resume(); =20 /* * ATM there's nothing Xen can do if the console/store pfn changes, diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c index f6b26f8..7e7a62e 100644 --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -565,6 +565,7 @@ static struct platform_timesource __initdata plt_tsc = =3D * * Xen clock source is a variant of TSC source. */ +static uint64_t xen_timer_last; =20 static uint64_t xen_timer_cpu_frequency(void) { @@ -610,7 +611,6 @@ static uint64_t read_xen_timer(void) uint32_t version; uint64_t ret; uint64_t last; - static uint64_t last_value; =20 do { version =3D info->version & ~1; @@ -626,20 +626,26 @@ static uint64_t read_xen_timer(void) =20 /* Maintain a monotonic global value */ do { - last =3D read_atomic(&last_value); + last =3D read_atomic(&xen_timer_last); if ( ret < last ) return last; - } while ( unlikely(cmpxchg(&last_value, last, ret) !=3D last) ); + } while ( unlikely(cmpxchg(&xen_timer_last, last, ret) !=3D last) ); =20 return ret; } =20 +static void resume_xen_timer(struct platform_timesource *pts) +{ + write_atomic(&xen_timer_last, 0); +} + static struct platform_timesource __initdata plt_xen_timer =3D { .id =3D "xen", .name =3D "XEN PV CLOCK", .read_counter =3D read_xen_timer, .init =3D init_xen_timer, + .resume =3D resume_xen_timer, .counter_bits =3D 63, }; #endif --=20 2.7.4 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel From nobody Wed Apr 24 17:42:41 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=none (zohomail.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=citrix.com Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1580853022837266.81546802051196; Tue, 4 Feb 2020 13:50:22 -0800 (PST) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iz64r-0000wP-1r; Tue, 04 Feb 2020 21:49:49 +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 1iz64q-0000wJ-JN for xen-devel@lists.xenproject.org; Tue, 04 Feb 2020 21:49:48 +0000 Received: from esa5.hc3370-68.iphmx.com (unknown [216.71.155.168]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 40c2782c-4798-11ea-9026-12813bfff9fa; Tue, 04 Feb 2020 21:49:43 +0000 (UTC) X-Inumbo-ID: 40c2782c-4798-11ea-9026-12813bfff9fa DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1580852983; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=RKbuWJWH3gHV/V5tipvNpTzFzBPm/XK6B4kBhfD1mKA=; b=MK6IjHxc7opVs4L+/r/0dqeEQ0/ftLZwwFb//yO51bB0YlZGFXIw16+p 2/IYCmLosE/PWzOowvdnqzFEpo7MnYpboVM4zsRZSgn+AhNh69ZBN/T9e BeWKOavJCFm9E2j/+4Eoo4WD+JpTjTPvUGQx24znA+44QTLCp9Vg9wSvX Q=; Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=igor.druzhinin@citrix.com; spf=Pass smtp.mailfrom=igor.druzhinin@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: none (zohomail.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Received-SPF: None (esa5.hc3370-68.iphmx.com: no sender authenticity information available from domain of igor.druzhinin@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa5.hc3370-68.iphmx.com; envelope-from="igor.druzhinin@citrix.com"; x-sender="igor.druzhinin@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa5.hc3370-68.iphmx.com: domain of igor.druzhinin@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa5.hc3370-68.iphmx.com; envelope-from="igor.druzhinin@citrix.com"; x-sender="igor.druzhinin@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ip4:168.245.78.127 ~all" Received-SPF: None (esa5.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa5.hc3370-68.iphmx.com; envelope-from="igor.druzhinin@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: j72BCuRmGm1CRLUEsyW+WS2J3ZXMm6I3i36usrXZ5KsbhBarh4C4lVd3Frt5S3+rIejlgZLKeT H2t6v/1S4kCF2cy1XTVRVSiFRkSnC3YZ3nrNXgkXMApJKtImh0droCH4//F7KdC5QQw8Na3PVc ATS/LCZXQyMF8FtMxGWxgQe5OKbkKk9j6WPfUzOCnuLorsGER6mrzKdFWv4wCMQJ1sx940lWw4 2jnrov02hzoYqgalfWQeXD4xP0oVeGPtEP+AopOannT5ttKIZREmc7eHA97EEUdc+I0UYE0HMl qi4= X-SBRS: 2.7 X-MesageID: 12319355 X-Ironport-Server: esa5.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.70,403,1574139600"; d="scan'208";a="12319355" From: Igor Druzhinin To: Date: Tue, 4 Feb 2020 21:49:37 +0000 Message-ID: <1580852977-23866-3-git-send-email-igor.druzhinin@citrix.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1580852977-23866-1-git-send-email-igor.druzhinin@citrix.com> References: <1580852977-23866-1-git-send-email-igor.druzhinin@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH v2 2/2] x86/time: report correct frequency of Xen PV clocksource 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: andrew.cooper3@citrix.com, Igor Druzhinin , wl@xen.org, jbeulich@suse.com, roger.pau@citrix.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) The value of the counter represents the number of nanoseconds since host boot. That means the correct frequency is always 1GHz. This inconsistency caused time to go slower in PV shim on most platforms. Signed-off-by: Igor Druzhinin Reviewed-by: Roger Pau Monn=C3=A9 --- xen/arch/x86/time.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c index 7e7a62e..26f9bad 100644 --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -587,9 +587,7 @@ static int64_t __init init_xen_timer(struct platform_ti= mesource *pts) if ( !xen_guest ) return 0; =20 - pts->frequency =3D xen_timer_cpu_frequency(); - - return pts->frequency; + return xen_timer_cpu_frequency(); } =20 static always_inline uint64_t read_cycle(const struct vcpu_time_info *info, @@ -643,6 +641,7 @@ static struct platform_timesource __initdata plt_xen_ti= mer =3D { .id =3D "xen", .name =3D "XEN PV CLOCK", + .frequency =3D 1000000000ULL, .read_counter =3D read_xen_timer, .init =3D init_xen_timer, .resume =3D resume_xen_timer, --=20 2.7.4 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel