From nobody Sat Apr 20 15:43:18 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 1580830865255729.8533281814391; Tue, 4 Feb 2020 07:41:05 -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 1iz0JZ-00037K-Ha; Tue, 04 Feb 2020 15:40:37 +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 1iz0JY-000372-C1 for xen-devel@lists.xenproject.org; Tue, 04 Feb 2020 15:40:36 +0000 Received: from esa5.hc3370-68.iphmx.com (unknown [216.71.155.168]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id acf66244-4764-11ea-8f8e-12813bfff9fa; Tue, 04 Feb 2020 15:40:31 +0000 (UTC) X-Inumbo-ID: acf66244-4764-11ea-8f8e-12813bfff9fa DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1580830831; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=73Jw+oAeyfGy7O7wiCCbk0PYWAgVMSfgNN2w6d71k0c=; b=I+L0NToX4hjGyjY3ulsu7lD2kvMf1o2l5PIKR5tnogwt8PaOztgnpum8 s4POCvnEi/iZs8TgznKjslo0yqKrQEop+cS71y9RlJOeHqHNXo6niAZ3y okjPUMksqS+X4CMYyv6QgOceuDPPK/kdizSycI4ex3LnnDRNAC0mjcduU g=; 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: KvgxjoDCIz+3G5npuWHtW8eNMyhn9gVOjbG6wF+Tlddz1NKOLIOy/g/SO1PDC5PMBajgUFogyR Q6svIRyL4JYg+wj8fnxpkUxaISIJ4+8rQRKJu15Zmo06thjpAE8qfbZptYXEyx6xANZ3sgNXtS X2EndHiIuN6OBfsFmhKACDtC/N0RGc/UMsC6slc5tOsbbCfPUqArzOrleAHZpuoSnBLeWwRfHy 2HfQJ0qislR8FMoaS1vxlanOfvBUFPpCZz/11luNz7kmm04RjAvSiU5wAsiRcVUTBsuQI6MkEN Q8I= X-SBRS: 2.7 X-MesageID: 12295793 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,402,1574139600"; d="scan'208";a="12295793" From: Igor Druzhinin To: Date: Tue, 4 Feb 2020 15:40:24 +0000 Message-ID: <1580830825-18767-2-git-send-email-igor.druzhinin@citrix.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1580830825-18767-1-git-send-email-igor.druzhinin@citrix.com> References: <1580830825-18767-1-git-send-email-igor.druzhinin@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH 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 that they do would simply be ignored there. Additionally, add resume callback for Xen PV clocksource to avoid its breakage on migration. Signed-off-by: Igor Druzhinin --- 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 Sat Apr 20 15:43:18 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 15808308733411014.5947605807698; Tue, 4 Feb 2020 07:41:13 -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 1iz0Jj-0003Ar-8P; Tue, 04 Feb 2020 15:40:47 +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 1iz0Ji-0003AV-Bz for xen-devel@lists.xenproject.org; Tue, 04 Feb 2020 15:40:46 +0000 Received: from esa5.hc3370-68.iphmx.com (unknown [216.71.155.168]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id adbb0400-4764-11ea-8f8e-12813bfff9fa; Tue, 04 Feb 2020 15:40:33 +0000 (UTC) X-Inumbo-ID: adbb0400-4764-11ea-8f8e-12813bfff9fa DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1580830832; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=+PjeV3haqZ/Lx5p12bpCjHkhAMM1ejzapAAughXbDvc=; b=BcRDV1eTEC4ezF9sP5gBPw+tNn4slC4UVE8pc0EzsTm3hh/B49lJw47S pz6KODcM9AYE/n93F71NWnOM78nOUIqkoC4JokCf0Jmh/MfGfj7UIsWxt atJvtWtYFKYQJsiuwvYYmuUcdiBdOXcTJIlDYrpcxUeWZwTaWbk0tLXh2 k=; 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: WdBucxVRbHrIhgzPfCMcTcSA3LlC314hJCLQtHRj6Nz+8nQ4yLML6cMfBymiMif/n7Vs+RwhPj RmvORcfDOUAD/U5evPACNfSYFQ826irzelqf9VhrzmmPf82E5yFczw5xxOX3ib0bddjNWI7Jkc pLTeai8QaT9lVlAJX9ITZ7bLMQUgp/zAOuJkUzrBVkzXcYY69OzmlTSiLkeLw/TAXq8ZEYBA0s x0ko1RGbvdSA8o9a6wpTwnrNUjBxvujmmkZa2oH/+pk0X4QpTV4AfRL9eRgkIAdv1f9wk2GZzV uxo= X-SBRS: 2.7 X-MesageID: 12295795 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,402,1574139600"; d="scan'208";a="12295795" From: Igor Druzhinin To: Date: Tue, 4 Feb 2020 15:40:25 +0000 Message-ID: <1580830825-18767-3-git-send-email-igor.druzhinin@citrix.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1580830825-18767-1-git-send-email-igor.druzhinin@citrix.com> References: <1580830825-18767-1-git-send-email-igor.druzhinin@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH 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 | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c index 7e7a62e..95840c4 100644 --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -567,27 +567,12 @@ static struct platform_timesource __initdata plt_tsc = =3D */ static uint64_t xen_timer_last; =20 -static uint64_t xen_timer_cpu_frequency(void) -{ - struct vcpu_time_info *info =3D &this_cpu(vcpu_info)->time; - uint64_t freq; - - freq =3D 1000000000ULL << 32; - do_div(freq, info->tsc_to_system_mul); - if ( info->tsc_shift < 0 ) - freq <<=3D -info->tsc_shift; - else - freq >>=3D info->tsc_shift; - - return freq; -} - static int64_t __init init_xen_timer(struct platform_timesource *pts) { if ( !xen_guest ) return 0; =20 - pts->frequency =3D xen_timer_cpu_frequency(); + pts->frequency =3D 1000000000ULL; =20 return pts->frequency; } --=20 2.7.4 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel