From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Liu, Jinsong" Subject: RE: [PATCH 2/2] Expose tsc deadline timer cpuid to guest Date: Tue, 28 Feb 2012 10:30:56 +0000 Message-ID: References: <4F0482D6.8080705@web.de> <4F060961.9050002@web.de> <4F0A099C.5040805@web.de> <4F4BBAEC.2040603@siemens.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="_002_DE8DF0795D48FD4CA783C40EC82923350B8532SHSMSX101ccrcorpi_" Cc: Avi Kivity , Marcelo Tosatti , Alexey Zaytsev , kvm , "qemu-devel@nongnu.org" To: Jan Kiszka Return-path: Received: from mga14.intel.com ([143.182.124.37]:24897 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754809Ab2B1KbC (ORCPT ); Tue, 28 Feb 2012 05:31:02 -0500 In-Reply-To: <4F4BBAEC.2040603@siemens.com> Content-Language: en-US Sender: kvm-owner@vger.kernel.org List-ID: --_002_DE8DF0795D48FD4CA783C40EC82923350B8532SHSMSX101ccrcorpi_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable >=20 > My point is that >=20 > qemu-version-A [-cpu whatever] >=20 > should provide the same VM as >=20 > qemu-version-B -machine pc-A [-cpu whatever] >=20 > specifically if you leave out the cpu specification. >=20 > So the compat machine could establish a feature mask (e.g. append some > "-tsc_deadline" in this case). But, indeed, we need a new channel for > this.=20 >=20 Yes, if such requirement need to be satisfied, I agree we need a new channe= l to solve this kind of common issue. As for tsc deadline timer feature exposing, I write an updated patch as att= ached. 1). It exposes tsc deadline timer feature to guest if in-kernel irqchip is = used and kvm has emulated tsc deadline timer; 2). It also authorizes user to control the feature exposing via a cpu featu= re flag; Thanks, Jinsong =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>From 5b7d5f459b621686e78e437010ce34748bcb9e8e Mon Sep 17 00:00:00 2001 From: Liu, Jinsong Date: Wed, 29 Feb 2012 01:53:15 +0800 Subject: [PATCH] Expose tsc deadline timer feature to guest It exposes tsc deadline timer feature to guest if in-kernel irqchip is used and kvm has emulated tsc deadline timer. It also authorizes user to control the feature exposing via a cpu feature f= lag. Signed-off-by: Liu, Jinsong --- target-i386/cpu.h | 1 + target-i386/cpuid.c | 2 +- target-i386/kvm.c | 4 ++++ 3 files changed, 6 insertions(+), 1 deletions(-) diff --git a/target-i386/cpu.h b/target-i386/cpu.h index d92be5d..3409afe 100644 --- a/target-i386/cpu.h +++ b/target-i386/cpu.h @@ -399,6 +399,7 @@ #define CPUID_EXT_X2APIC (1 << 21) #define CPUID_EXT_MOVBE (1 << 22) #define CPUID_EXT_POPCNT (1 << 23) +#define CPUID_EXT_TSC_DEADLINE_TIMER (1 << 24) #define CPUID_EXT_XSAVE (1 << 26) #define CPUID_EXT_OSXSAVE (1 << 27) #define CPUID_EXT_HYPERVISOR (1 << 31) diff --git a/target-i386/cpuid.c b/target-i386/cpuid.c index b9bfeaf..ac4b79c 100644 --- a/target-i386/cpuid.c +++ b/target-i386/cpuid.c @@ -50,7 +50,7 @@ static const char *ext_feature_name[] =3D { "fma", "cx16", "xtpr", "pdcm", NULL, NULL, "dca", "sse4.1|sse4_1", "sse4.2|sse4_2", "x2apic", "movbe", "popcnt", - NULL, "aes", "xsave", "osxsave", + "tsc_deadline", "aes", "xsave", "osxsave", "avx", NULL, NULL, "hypervisor", }; static const char *ext2_feature_name[] =3D { diff --git a/target-i386/kvm.c b/target-i386/kvm.c index 7079e87..2639699 100644 --- a/target-i386/kvm.c +++ b/target-i386/kvm.c @@ -370,6 +370,10 @@ int kvm_arch_init_vcpu(CPUState *env) i =3D env->cpuid_ext_features & CPUID_EXT_HYPERVISOR; env->cpuid_ext_features &=3D kvm_arch_get_supported_cpuid(s, 1, 0, R_E= CX); env->cpuid_ext_features |=3D i; + if (!kvm_irqchip_in_kernel() || + !kvm_check_extension(s, KVM_CAP_TSC_DEADLINE_TIMER)) { + env->cpuid_ext_features &=3D ~CPUID_EXT_TSC_DEADLINE_TIMER; + } =20 env->cpuid_ext2_features &=3D kvm_arch_get_supported_cpuid(s, 0x800000= 01, 0, R_EDX); --=20 1.7.1 --_002_DE8DF0795D48FD4CA783C40EC82923350B8532SHSMSX101ccrcorpi_ Content-Type: application/octet-stream; name="0001-Expose-tsc-deadline-timer-feature-to-guest.patch" Content-Description: 0001-Expose-tsc-deadline-timer-feature-to-guest.patch Content-Disposition: attachment; filename="0001-Expose-tsc-deadline-timer-feature-to-guest.patch"; size=2233; creation-date="Tue, 28 Feb 2012 10:01:58 GMT"; modification-date="Tue, 28 Feb 2012 17:58:20 GMT" Content-Transfer-Encoding: base64 RnJvbSA1YjdkNWY0NTliNjIxNjg2ZTc4ZTQzNzAxMGNlMzQ3NDhiY2I5ZThlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMaXUsIEppbnNvbmcgPGppbnNvbmcubGl1QGludGVsLmNvbT4K RGF0ZTogV2VkLCAyOSBGZWIgMjAxMiAwMTo1MzoxNSArMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEV4 cG9zZSB0c2MgZGVhZGxpbmUgdGltZXIgZmVhdHVyZSB0byBndWVzdAoKSXQgZXhwb3NlcyB0c2Mg ZGVhZGxpbmUgdGltZXIgZmVhdHVyZSB0byBndWVzdCBpZiBpbi1rZXJuZWwgaXJxY2hpcCBpcyB1 c2VkCmFuZCBrdm0gaGFzIGVtdWxhdGVkIHRzYyBkZWFkbGluZSB0aW1lci4KSXQgYWxzbyBhdXRo b3JpemVzIHVzZXIgdG8gY29udHJvbCB0aGUgZmVhdHVyZSBleHBvc2luZyB2aWEgYSBjcHUgZmVh dHVyZSBmbGFnLgoKU2lnbmVkLW9mZi1ieTogTGl1LCBKaW5zb25nIDxqaW5zb25nLmxpdUBpbnRl bC5jb20+Ci0tLQogdGFyZ2V0LWkzODYvY3B1LmggICB8ICAgIDEgKwogdGFyZ2V0LWkzODYvY3B1 aWQuYyB8ICAgIDIgKy0KIHRhcmdldC1pMzg2L2t2bS5jICAgfCAgICA0ICsrKysKIDMgZmlsZXMg Y2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rh cmdldC1pMzg2L2NwdS5oIGIvdGFyZ2V0LWkzODYvY3B1LmgKaW5kZXggZDkyYmU1ZC4uMzQwOWFm ZSAxMDA2NDQKLS0tIGEvdGFyZ2V0LWkzODYvY3B1LmgKKysrIGIvdGFyZ2V0LWkzODYvY3B1LmgK QEAgLTM5OSw2ICszOTksNyBAQAogI2RlZmluZSBDUFVJRF9FWFRfWDJBUElDICAgKDEgPDwgMjEp CiAjZGVmaW5lIENQVUlEX0VYVF9NT1ZCRSAgICAoMSA8PCAyMikKICNkZWZpbmUgQ1BVSURfRVhU X1BPUENOVCAgICgxIDw8IDIzKQorI2RlZmluZSBDUFVJRF9FWFRfVFNDX0RFQURMSU5FX1RJTUVS ICgxIDw8IDI0KQogI2RlZmluZSBDUFVJRF9FWFRfWFNBVkUgICAgKDEgPDwgMjYpCiAjZGVmaW5l IENQVUlEX0VYVF9PU1hTQVZFICAoMSA8PCAyNykKICNkZWZpbmUgQ1BVSURfRVhUX0hZUEVSVklT T1IgICgxIDw8IDMxKQpkaWZmIC0tZ2l0IGEvdGFyZ2V0LWkzODYvY3B1aWQuYyBiL3RhcmdldC1p Mzg2L2NwdWlkLmMKaW5kZXggYjliZmVhZi4uYWM0Yjc5YyAxMDA2NDQKLS0tIGEvdGFyZ2V0LWkz ODYvY3B1aWQuYworKysgYi90YXJnZXQtaTM4Ni9jcHVpZC5jCkBAIC01MCw3ICs1MCw3IEBAIHN0 YXRpYyBjb25zdCBjaGFyICpleHRfZmVhdHVyZV9uYW1lW10gPSB7CiAgICAgImZtYSIsICJjeDE2 IiwgInh0cHIiLCAicGRjbSIsCiAgICAgTlVMTCwgTlVMTCwgImRjYSIsICJzc2U0LjF8c3NlNF8x IiwKICAgICAic3NlNC4yfHNzZTRfMiIsICJ4MmFwaWMiLCAibW92YmUiLCAicG9wY250IiwKLSAg ICBOVUxMLCAiYWVzIiwgInhzYXZlIiwgIm9zeHNhdmUiLAorICAgICJ0c2NfZGVhZGxpbmUiLCAi YWVzIiwgInhzYXZlIiwgIm9zeHNhdmUiLAogICAgICJhdngiLCBOVUxMLCBOVUxMLCAiaHlwZXJ2 aXNvciIsCiB9Owogc3RhdGljIGNvbnN0IGNoYXIgKmV4dDJfZmVhdHVyZV9uYW1lW10gPSB7CmRp ZmYgLS1naXQgYS90YXJnZXQtaTM4Ni9rdm0uYyBiL3RhcmdldC1pMzg2L2t2bS5jCmluZGV4IDcw NzllODcuLjI2Mzk2OTkgMTAwNjQ0Ci0tLSBhL3RhcmdldC1pMzg2L2t2bS5jCisrKyBiL3Rhcmdl dC1pMzg2L2t2bS5jCkBAIC0zNzAsNiArMzcwLDEwIEBAIGludCBrdm1fYXJjaF9pbml0X3ZjcHUo Q1BVU3RhdGUgKmVudikKICAgICBpID0gZW52LT5jcHVpZF9leHRfZmVhdHVyZXMgJiBDUFVJRF9F WFRfSFlQRVJWSVNPUjsKICAgICBlbnYtPmNwdWlkX2V4dF9mZWF0dXJlcyAmPSBrdm1fYXJjaF9n ZXRfc3VwcG9ydGVkX2NwdWlkKHMsIDEsIDAsIFJfRUNYKTsKICAgICBlbnYtPmNwdWlkX2V4dF9m ZWF0dXJlcyB8PSBpOworICAgIGlmICgha3ZtX2lycWNoaXBfaW5fa2VybmVsKCkgfHwKKyAgICAg ICAgIWt2bV9jaGVja19leHRlbnNpb24ocywgS1ZNX0NBUF9UU0NfREVBRExJTkVfVElNRVIpKSB7 CisgICAgICAgIGVudi0+Y3B1aWRfZXh0X2ZlYXR1cmVzICY9IH5DUFVJRF9FWFRfVFNDX0RFQURM SU5FX1RJTUVSOworICAgIH0KIAogICAgIGVudi0+Y3B1aWRfZXh0Ml9mZWF0dXJlcyAmPSBrdm1f YXJjaF9nZXRfc3VwcG9ydGVkX2NwdWlkKHMsIDB4ODAwMDAwMDEsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgUl9FRFgpOwot LSAKMS43LjEKCg== --_002_DE8DF0795D48FD4CA783C40EC82923350B8532SHSMSX101ccrcorpi_-- From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:46917) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S2KL8-0004mh-5h for qemu-devel@nongnu.org; Tue, 28 Feb 2012 05:31:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S2KKs-0005my-Iu for qemu-devel@nongnu.org; Tue, 28 Feb 2012 05:31:25 -0500 Received: from mga03.intel.com ([143.182.124.21]:15717) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S2KKs-0005ma-53 for qemu-devel@nongnu.org; Tue, 28 Feb 2012 05:31:10 -0500 From: "Liu, Jinsong" Date: Tue, 28 Feb 2012 10:30:56 +0000 Message-ID: References: <4F0482D6.8080705@web.de> <4F060961.9050002@web.de> <4F0A099C.5040805@web.de> <4F4BBAEC.2040603@siemens.com> In-Reply-To: <4F4BBAEC.2040603@siemens.com> Content-Language: en-US Content-Type: multipart/mixed; boundary="_002_DE8DF0795D48FD4CA783C40EC82923350B8532SHSMSX101ccrcorpi_" MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH 2/2] Expose tsc deadline timer cpuid to guest List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jan Kiszka Cc: "qemu-devel@nongnu.org" , Marcelo Tosatti , Avi Kivity , kvm , Alexey Zaytsev --_002_DE8DF0795D48FD4CA783C40EC82923350B8532SHSMSX101ccrcorpi_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable >=20 > My point is that >=20 > qemu-version-A [-cpu whatever] >=20 > should provide the same VM as >=20 > qemu-version-B -machine pc-A [-cpu whatever] >=20 > specifically if you leave out the cpu specification. >=20 > So the compat machine could establish a feature mask (e.g. append some > "-tsc_deadline" in this case). But, indeed, we need a new channel for > this.=20 >=20 Yes, if such requirement need to be satisfied, I agree we need a new channe= l to solve this kind of common issue. As for tsc deadline timer feature exposing, I write an updated patch as att= ached. 1). It exposes tsc deadline timer feature to guest if in-kernel irqchip is = used and kvm has emulated tsc deadline timer; 2). It also authorizes user to control the feature exposing via a cpu featu= re flag; Thanks, Jinsong =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>From 5b7d5f459b621686e78e437010ce34748bcb9e8e Mon Sep 17 00:00:00 2001 From: Liu, Jinsong Date: Wed, 29 Feb 2012 01:53:15 +0800 Subject: [PATCH] Expose tsc deadline timer feature to guest It exposes tsc deadline timer feature to guest if in-kernel irqchip is used and kvm has emulated tsc deadline timer. It also authorizes user to control the feature exposing via a cpu feature f= lag. Signed-off-by: Liu, Jinsong --- target-i386/cpu.h | 1 + target-i386/cpuid.c | 2 +- target-i386/kvm.c | 4 ++++ 3 files changed, 6 insertions(+), 1 deletions(-) diff --git a/target-i386/cpu.h b/target-i386/cpu.h index d92be5d..3409afe 100644 --- a/target-i386/cpu.h +++ b/target-i386/cpu.h @@ -399,6 +399,7 @@ #define CPUID_EXT_X2APIC (1 << 21) #define CPUID_EXT_MOVBE (1 << 22) #define CPUID_EXT_POPCNT (1 << 23) +#define CPUID_EXT_TSC_DEADLINE_TIMER (1 << 24) #define CPUID_EXT_XSAVE (1 << 26) #define CPUID_EXT_OSXSAVE (1 << 27) #define CPUID_EXT_HYPERVISOR (1 << 31) diff --git a/target-i386/cpuid.c b/target-i386/cpuid.c index b9bfeaf..ac4b79c 100644 --- a/target-i386/cpuid.c +++ b/target-i386/cpuid.c @@ -50,7 +50,7 @@ static const char *ext_feature_name[] =3D { "fma", "cx16", "xtpr", "pdcm", NULL, NULL, "dca", "sse4.1|sse4_1", "sse4.2|sse4_2", "x2apic", "movbe", "popcnt", - NULL, "aes", "xsave", "osxsave", + "tsc_deadline", "aes", "xsave", "osxsave", "avx", NULL, NULL, "hypervisor", }; static const char *ext2_feature_name[] =3D { diff --git a/target-i386/kvm.c b/target-i386/kvm.c index 7079e87..2639699 100644 --- a/target-i386/kvm.c +++ b/target-i386/kvm.c @@ -370,6 +370,10 @@ int kvm_arch_init_vcpu(CPUState *env) i =3D env->cpuid_ext_features & CPUID_EXT_HYPERVISOR; env->cpuid_ext_features &=3D kvm_arch_get_supported_cpuid(s, 1, 0, R_E= CX); env->cpuid_ext_features |=3D i; + if (!kvm_irqchip_in_kernel() || + !kvm_check_extension(s, KVM_CAP_TSC_DEADLINE_TIMER)) { + env->cpuid_ext_features &=3D ~CPUID_EXT_TSC_DEADLINE_TIMER; + } =20 env->cpuid_ext2_features &=3D kvm_arch_get_supported_cpuid(s, 0x800000= 01, 0, R_EDX); --=20 1.7.1 --_002_DE8DF0795D48FD4CA783C40EC82923350B8532SHSMSX101ccrcorpi_ Content-Type: application/octet-stream; name="0001-Expose-tsc-deadline-timer-feature-to-guest.patch" Content-Description: 0001-Expose-tsc-deadline-timer-feature-to-guest.patch Content-Disposition: attachment; filename="0001-Expose-tsc-deadline-timer-feature-to-guest.patch"; size=2233; creation-date="Tue, 28 Feb 2012 10:01:58 GMT"; modification-date="Tue, 28 Feb 2012 17:58:20 GMT" Content-Transfer-Encoding: base64 RnJvbSA1YjdkNWY0NTliNjIxNjg2ZTc4ZTQzNzAxMGNlMzQ3NDhiY2I5ZThlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMaXUsIEppbnNvbmcgPGppbnNvbmcubGl1QGludGVsLmNvbT4K RGF0ZTogV2VkLCAyOSBGZWIgMjAxMiAwMTo1MzoxNSArMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEV4 cG9zZSB0c2MgZGVhZGxpbmUgdGltZXIgZmVhdHVyZSB0byBndWVzdAoKSXQgZXhwb3NlcyB0c2Mg ZGVhZGxpbmUgdGltZXIgZmVhdHVyZSB0byBndWVzdCBpZiBpbi1rZXJuZWwgaXJxY2hpcCBpcyB1 c2VkCmFuZCBrdm0gaGFzIGVtdWxhdGVkIHRzYyBkZWFkbGluZSB0aW1lci4KSXQgYWxzbyBhdXRo b3JpemVzIHVzZXIgdG8gY29udHJvbCB0aGUgZmVhdHVyZSBleHBvc2luZyB2aWEgYSBjcHUgZmVh dHVyZSBmbGFnLgoKU2lnbmVkLW9mZi1ieTogTGl1LCBKaW5zb25nIDxqaW5zb25nLmxpdUBpbnRl bC5jb20+Ci0tLQogdGFyZ2V0LWkzODYvY3B1LmggICB8ICAgIDEgKwogdGFyZ2V0LWkzODYvY3B1 aWQuYyB8ICAgIDIgKy0KIHRhcmdldC1pMzg2L2t2bS5jICAgfCAgICA0ICsrKysKIDMgZmlsZXMg Y2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rh cmdldC1pMzg2L2NwdS5oIGIvdGFyZ2V0LWkzODYvY3B1LmgKaW5kZXggZDkyYmU1ZC4uMzQwOWFm ZSAxMDA2NDQKLS0tIGEvdGFyZ2V0LWkzODYvY3B1LmgKKysrIGIvdGFyZ2V0LWkzODYvY3B1LmgK QEAgLTM5OSw2ICszOTksNyBAQAogI2RlZmluZSBDUFVJRF9FWFRfWDJBUElDICAgKDEgPDwgMjEp CiAjZGVmaW5lIENQVUlEX0VYVF9NT1ZCRSAgICAoMSA8PCAyMikKICNkZWZpbmUgQ1BVSURfRVhU X1BPUENOVCAgICgxIDw8IDIzKQorI2RlZmluZSBDUFVJRF9FWFRfVFNDX0RFQURMSU5FX1RJTUVS ICgxIDw8IDI0KQogI2RlZmluZSBDUFVJRF9FWFRfWFNBVkUgICAgKDEgPDwgMjYpCiAjZGVmaW5l IENQVUlEX0VYVF9PU1hTQVZFICAoMSA8PCAyNykKICNkZWZpbmUgQ1BVSURfRVhUX0hZUEVSVklT T1IgICgxIDw8IDMxKQpkaWZmIC0tZ2l0IGEvdGFyZ2V0LWkzODYvY3B1aWQuYyBiL3RhcmdldC1p Mzg2L2NwdWlkLmMKaW5kZXggYjliZmVhZi4uYWM0Yjc5YyAxMDA2NDQKLS0tIGEvdGFyZ2V0LWkz ODYvY3B1aWQuYworKysgYi90YXJnZXQtaTM4Ni9jcHVpZC5jCkBAIC01MCw3ICs1MCw3IEBAIHN0 YXRpYyBjb25zdCBjaGFyICpleHRfZmVhdHVyZV9uYW1lW10gPSB7CiAgICAgImZtYSIsICJjeDE2 IiwgInh0cHIiLCAicGRjbSIsCiAgICAgTlVMTCwgTlVMTCwgImRjYSIsICJzc2U0LjF8c3NlNF8x IiwKICAgICAic3NlNC4yfHNzZTRfMiIsICJ4MmFwaWMiLCAibW92YmUiLCAicG9wY250IiwKLSAg ICBOVUxMLCAiYWVzIiwgInhzYXZlIiwgIm9zeHNhdmUiLAorICAgICJ0c2NfZGVhZGxpbmUiLCAi YWVzIiwgInhzYXZlIiwgIm9zeHNhdmUiLAogICAgICJhdngiLCBOVUxMLCBOVUxMLCAiaHlwZXJ2 aXNvciIsCiB9Owogc3RhdGljIGNvbnN0IGNoYXIgKmV4dDJfZmVhdHVyZV9uYW1lW10gPSB7CmRp ZmYgLS1naXQgYS90YXJnZXQtaTM4Ni9rdm0uYyBiL3RhcmdldC1pMzg2L2t2bS5jCmluZGV4IDcw NzllODcuLjI2Mzk2OTkgMTAwNjQ0Ci0tLSBhL3RhcmdldC1pMzg2L2t2bS5jCisrKyBiL3Rhcmdl dC1pMzg2L2t2bS5jCkBAIC0zNzAsNiArMzcwLDEwIEBAIGludCBrdm1fYXJjaF9pbml0X3ZjcHUo Q1BVU3RhdGUgKmVudikKICAgICBpID0gZW52LT5jcHVpZF9leHRfZmVhdHVyZXMgJiBDUFVJRF9F WFRfSFlQRVJWSVNPUjsKICAgICBlbnYtPmNwdWlkX2V4dF9mZWF0dXJlcyAmPSBrdm1fYXJjaF9n ZXRfc3VwcG9ydGVkX2NwdWlkKHMsIDEsIDAsIFJfRUNYKTsKICAgICBlbnYtPmNwdWlkX2V4dF9m ZWF0dXJlcyB8PSBpOworICAgIGlmICgha3ZtX2lycWNoaXBfaW5fa2VybmVsKCkgfHwKKyAgICAg ICAgIWt2bV9jaGVja19leHRlbnNpb24ocywgS1ZNX0NBUF9UU0NfREVBRExJTkVfVElNRVIpKSB7 CisgICAgICAgIGVudi0+Y3B1aWRfZXh0X2ZlYXR1cmVzICY9IH5DUFVJRF9FWFRfVFNDX0RFQURM SU5FX1RJTUVSOworICAgIH0KIAogICAgIGVudi0+Y3B1aWRfZXh0Ml9mZWF0dXJlcyAmPSBrdm1f YXJjaF9nZXRfc3VwcG9ydGVkX2NwdWlkKHMsIDB4ODAwMDAwMDEsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgUl9FRFgpOwot LSAKMS43LjEKCg== --_002_DE8DF0795D48FD4CA783C40EC82923350B8532SHSMSX101ccrcorpi_--