From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Liu, Jinsong" Subject: [PATCH 1] cpufreq cmdline handling Date: Wed, 11 Feb 2009 16:45:26 +0800 Message-ID: <706158FABBBA044BAD4FE898A02E4BC22411C73D@pdsmsx503.ccr.corp.intel.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="_002_706158FABBBA044BAD4FE898A02E4BC22411C73Dpdsmsx503ccrcor_" Return-path: Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: "xen-devel@lists.xensource.com" Cc: Keir Fraser List-Id: xen-devel@lists.xenproject.org --_002_706158FABBBA044BAD4FE898A02E4BC22411C73Dpdsmsx503ccrcor_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable cpufreq cmdline handling c/s 19147 adjust cpufreq cmdline handling, this patch is a complement to c/= s 19147. In this patch, 1. add common para (governor independent para) handling; 2. change governor dependent para handling method, governor dependent para = will only be handled by the handler of that governor (not by all governors)= ; 3. add userspace governor dependent para handling; 4. change para name 'threshold' of ondemand governor to 'up_threshold' sinc= e ondemand has only 'up_threshold', and conservative governor (will be impl= emented later) has both 'up_threshold' and 'down_threshold'; 5. change some coding style (c/s 19147, drivers/cpufreq/cpufreq.c) to keep = coordination with original drivers/cpufreq/cpufreq.c coding style; (origina= lly this file is ported from linux, we partly use linux coding style) Signed-off-by: Liu, Jinsong diff -r de853e901b5c xen/drivers/cpufreq/cpufreq.c --- a/xen/drivers/cpufreq/cpufreq.c Wed Feb 04 15:29:51 2009 +0000 +++ b/xen/drivers/cpufreq/cpufreq.c Sun Feb 08 13:07:45 2009 +0800 @@ -45,6 +45,9 @@ #include #include #include + +static unsigned int usr_max_freq, usr_min_freq; +static void cpufreq_cmdline_common_para(struct cpufreq_policy *new_policy)= ; =20 struct cpufreq_dom { unsigned int dom; @@ -214,6 +217,9 @@ int cpufreq_add_cpu(unsigned int cpu) perf->domain_info.num_processors) { memcpy(&new_policy, policy, sizeof(struct cpufreq_policy)); policy->governor =3D NULL; + + cpufreq_cmdline_common_para(&new_policy); + ret =3D __cpufreq_set_policy(policy, &new_policy); if (ret) { if (new_policy.governor =3D=3D CPUFREQ_DEFAULT_GOVERNOR) @@ -468,47 +474,71 @@ out: return ret; } =20 +static void cpufreq_cmdline_common_para(struct cpufreq_policy *new_policy) +{ + if (usr_max_freq) + new_policy->max =3D usr_max_freq; + if (usr_min_freq) + new_policy->min =3D usr_min_freq; +} + +static int __init cpufreq_handle_common_option(const char *name, const cha= r *val) +{ + if (!strcmp(name, "maxfreq") && val) { + usr_max_freq =3D simple_strtoul(val, NULL, 0); + return 1; + } + + if (!strcmp(name, "minfreq") && val) { + usr_min_freq =3D simple_strtoul(val, NULL, 0); + return 1; + } + + return 0; +} + void __init cpufreq_cmdline_parse(char *str) { static struct cpufreq_governor *__initdata cpufreq_governors[] =3D { + #define CPUFREQ_DEFAULT_GOVERNOR_INDEX 0; &cpufreq_gov_userspace, &cpufreq_gov_dbs, &cpufreq_gov_performance, &cpufreq_gov_powersave }; + unsigned int gov_index =3D CPUFREQ_DEFAULT_GOVERNOR_INDEX; =20 do { char *val, *end =3D strchr(str, ','); unsigned int i; =20 - if ( end ) + if (end) *end++ =3D '\0'; val =3D strchr(str, '=3D'); - if ( val ) + if (val) *val++ =3D '\0'; =20 - if ( !cpufreq_opt_governor ) - { - if ( !val ) - { - for ( i =3D 0; i < ARRAY_SIZE(cpufreq_governors); ++i ) - if ( !strcmp(str, cpufreq_governors[i]->name) ) - { + if (!cpufreq_opt_governor) { + if (!val) + for (i =3D 0; i < ARRAY_SIZE(cpufreq_governors); ++i) + if (!strcmp(str, cpufreq_governors[i]->name)) { cpufreq_opt_governor =3D cpufreq_governors[i]; + gov_index =3D i; str =3D NULL; break; } - } else cpufreq_opt_governor =3D CPUFREQ_DEFAULT_GOVERNOR; } =20 - if ( str ) - for ( i =3D 0; i < ARRAY_SIZE(cpufreq_governors); ++i ) - if ( cpufreq_governors[i]->handle_option ) - cpufreq_governors[i]->handle_option(str, val); + if (str) { + if (cpufreq_handle_common_option(str, val)) + ; + else if (cpufreq_governors[gov_index]->handle_option) + cpufreq_governors[gov_index]->handle_option(str, val); + } =20 str =3D end; - } while ( str ); + } while (str); } diff -r de853e901b5c xen/drivers/cpufreq/cpufreq_misc_governors.c --- a/xen/drivers/cpufreq/cpufreq_misc_governors.c Wed Feb 04 15:29:51 2009= +0000 +++ b/xen/drivers/cpufreq/cpufreq_misc_governors.c Sun Feb 08 13:07:45 2009= +0800 @@ -18,6 +18,7 @@ #include #include =20 +static unsigned int usr_speed; =20 /* * cpufreq userspace governor @@ -26,6 +27,7 @@ static int cpufreq_governor_userspace(st unsigned int event) { int ret =3D 0; + unsigned int freq; =20 if (!policy) return -EINVAL; @@ -35,12 +37,17 @@ static int cpufreq_governor_userspace(st case CPUFREQ_GOV_STOP: break; case CPUFREQ_GOV_LIMITS: - if (policy->max < policy->cur) + freq =3D usr_speed ? : policy->cur; + if (policy->max < freq) ret =3D __cpufreq_driver_target(policy, policy->max, CPUFREQ_RELATION_H); - else if (policy->min > policy->cur) + else if (policy->min > freq) ret =3D __cpufreq_driver_target(policy, policy->min, CPUFREQ_RELATION_L); + else if (usr_speed) + ret =3D __cpufreq_driver_target(policy, freq, + CPUFREQ_RELATION_L); + break; default: ret =3D -EINVAL; @@ -50,9 +57,17 @@ static int cpufreq_governor_userspace(st return ret; } =20 +static void __init=20 +cpufreq_userspace_handle_option(const char *name, const char *val) +{ + if (!strcmp(name, "speed") && val) + usr_speed =3D simple_strtoul(val, NULL, 0); +} + struct cpufreq_governor cpufreq_gov_userspace =3D { .name =3D "userspace", .governor =3D cpufreq_governor_userspace, + .handle_option =3D cpufreq_userspace_handle_option }; =20 static int __init cpufreq_gov_userspace_init(void) diff -r de853e901b5c xen/drivers/cpufreq/cpufreq_ondemand.c --- a/xen/drivers/cpufreq/cpufreq_ondemand.c Wed Feb 04 15:29:51 2009 +0000 +++ b/xen/drivers/cpufreq/cpufreq_ondemand.c Sun Feb 08 13:07:45 2009 +0800 @@ -287,7 +287,7 @@ static void __init cpufreq_dbs_handle_op { usr_sampling_rate =3D simple_strtoull(val, NULL, 0) * MICROSECS(1)= ; } - else if ( !strcmp(name, "threshold") && val ) + else if ( !strcmp(name, "up_threshold") && val ) { unsigned long tmp =3D simple_strtoul(val, NULL, 0); = --_002_706158FABBBA044BAD4FE898A02E4BC22411C73Dpdsmsx503ccrcor_ Content-Type: application/octet-stream; name="px-xen-1-grub.patch" Content-Description: px-xen-1-grub.patch Content-Disposition: attachment; filename="px-xen-1-grub.patch"; size=6641; creation-date="Wed, 11 Feb 2009 16:39:58 GMT"; modification-date="Wed, 11 Feb 2009 16:38:22 GMT" Content-Transfer-Encoding: base64 Y3B1ZnJlcSBjbWRsaW5lIGhhbmRsaW5nCgpjL3MgMTkxNDcgYWRqdXN0IGNwdWZyZXEgY21kbGlu ZSBoYW5kbGluZywgdGhpcyBwYXRjaCBpcyBhIGNvbXBsZW1lbnQgdG8gYy9zIDE5MTQ3LgpJbiB0 aGlzIHBhdGNoLAoxLiBhZGQgY29tbW9uIHBhcmEgKGdvdmVybm9yIGluZGVwZW5kZW50IHBhcmEp IGhhbmRsaW5nOwoyLiBjaGFuZ2UgZ292ZXJub3IgZGVwZW5kZW50IHBhcmEgaGFuZGxpbmcgbWV0 aG9kLCBnb3Zlcm5vciBkZXBlbmRlbnQgcGFyYSB3aWxsIG9ubHkgYmUgaGFuZGxlZCBieSB0aGUg aGFuZGxlciBvZiB0aGF0IGdvdmVybm9yIChub3QgYnkgYWxsIGdvdmVybm9ycyk7CjMuIGFkZCB1 c2Vyc3BhY2UgZ292ZXJub3IgZGVwZW5kZW50IHBhcmEgaGFuZGxpbmc7CjQuIGNoYW5nZSBwYXJh IG5hbWUgJ3RocmVzaG9sZCcgb2Ygb25kZW1hbmQgZ292ZXJub3IgdG8gJ3VwX3RocmVzaG9sZCcg c2luY2Ugb25kZW1hbmQgaGFzIG9ubHkgJ3VwX3RocmVzaG9sZCcsIGFuZCBjb25zZXJ2YXRpdmUg Z292ZXJub3IgKHdpbGwgYmUgaW1wbGVtZW50ZWQgbGF0ZXIpIGhhcyBib3RoICd1cF90aHJlc2hv bGQnIGFuZCAnZG93bl90aHJlc2hvbGQnOwo1LiBjaGFuZ2Ugc29tZSBjb2Rpbmcgc3R5bGUgKGMv cyAxOTE0NywgZHJpdmVycy9jcHVmcmVxL2NwdWZyZXEuYykgdG8ga2VlcCBjb29yZGluYXRpb24g d2l0aCBvcmlnaW5hbCBkcml2ZXJzL2NwdWZyZXEvY3B1ZnJlcS5jIGNvZGluZyBzdHlsZTsgKG9y aWdpbmFsbHkgdGhpcyBmaWxlIGlzIHBvcnRlZCBmcm9tIGxpbnV4LCB3ZSBwYXJ0bHkgdXNlIGxp bnV4IGNvZGluZyBzdHlsZSkKClNpZ25lZC1vZmYtYnk6IExpdSwgSmluc29uZyA8amluc29uZy5s aXVAaW50ZWwuY29tPgoKZGlmZiAtciBkZTg1M2U5MDFiNWMgeGVuL2RyaXZlcnMvY3B1ZnJlcS9j cHVmcmVxLmMKLS0tIGEveGVuL2RyaXZlcnMvY3B1ZnJlcS9jcHVmcmVxLmMJV2VkIEZlYiAwNCAx NToyOTo1MSAyMDA5ICswMDAwCisrKyBiL3hlbi9kcml2ZXJzL2NwdWZyZXEvY3B1ZnJlcS5jCVN1 biBGZWIgMDggMTM6MDc6NDUgMjAwOSArMDgwMApAQCAtNDUsNiArNDUsOSBAQAogI2luY2x1ZGUg PGFzbS9wZXJjcHUuaD4KICNpbmNsdWRlIDxhY3BpL2FjcGkuaD4KICNpbmNsdWRlIDxhY3BpL2Nw dWZyZXEvY3B1ZnJlcS5oPgorCitzdGF0aWMgdW5zaWduZWQgaW50IHVzcl9tYXhfZnJlcSwgdXNy X21pbl9mcmVxOworc3RhdGljIHZvaWQgY3B1ZnJlcV9jbWRsaW5lX2NvbW1vbl9wYXJhKHN0cnVj dCBjcHVmcmVxX3BvbGljeSAqbmV3X3BvbGljeSk7CiAKIHN0cnVjdCBjcHVmcmVxX2RvbSB7CiAg ICAgdW5zaWduZWQgaW50CWRvbTsKQEAgLTIxNCw2ICsyMTcsOSBAQCBpbnQgY3B1ZnJlcV9hZGRf Y3B1KHVuc2lnbmVkIGludCBjcHUpCiAgICAgICAgIHBlcmYtPmRvbWFpbl9pbmZvLm51bV9wcm9j ZXNzb3JzKSB7CiAgICAgICAgIG1lbWNweSgmbmV3X3BvbGljeSwgcG9saWN5LCBzaXplb2Yoc3Ry dWN0IGNwdWZyZXFfcG9saWN5KSk7CiAgICAgICAgIHBvbGljeS0+Z292ZXJub3IgPSBOVUxMOwor CisgICAgICAgIGNwdWZyZXFfY21kbGluZV9jb21tb25fcGFyYSgmbmV3X3BvbGljeSk7CisKICAg ICAgICAgcmV0ID0gX19jcHVmcmVxX3NldF9wb2xpY3kocG9saWN5LCAmbmV3X3BvbGljeSk7CiAg ICAgICAgIGlmIChyZXQpIHsKICAgICAgICAgICAgIGlmIChuZXdfcG9saWN5LmdvdmVybm9yID09 IENQVUZSRVFfREVGQVVMVF9HT1ZFUk5PUikKQEAgLTQ2OCw0NyArNDc0LDcxIEBAIG91dDoKICAg ICByZXR1cm4gcmV0OwogfQogCitzdGF0aWMgdm9pZCBjcHVmcmVxX2NtZGxpbmVfY29tbW9uX3Bh cmEoc3RydWN0IGNwdWZyZXFfcG9saWN5ICpuZXdfcG9saWN5KQoreworICAgIGlmICh1c3JfbWF4 X2ZyZXEpCisgICAgICAgIG5ld19wb2xpY3ktPm1heCA9IHVzcl9tYXhfZnJlcTsKKyAgICBpZiAo dXNyX21pbl9mcmVxKQorICAgICAgICBuZXdfcG9saWN5LT5taW4gPSB1c3JfbWluX2ZyZXE7Cit9 CisKK3N0YXRpYyBpbnQgX19pbml0IGNwdWZyZXFfaGFuZGxlX2NvbW1vbl9vcHRpb24oY29uc3Qg Y2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsKQoreworICAgIGlmICghc3RyY21wKG5hbWUsICJt YXhmcmVxIikgJiYgdmFsKSB7CisgICAgICAgIHVzcl9tYXhfZnJlcSA9IHNpbXBsZV9zdHJ0b3Vs KHZhbCwgTlVMTCwgMCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGlmICghc3Ry Y21wKG5hbWUsICJtaW5mcmVxIikgJiYgdmFsKSB7CisgICAgICAgIHVzcl9taW5fZnJlcSA9IHNp bXBsZV9zdHJ0b3VsKHZhbCwgTlVMTCwgMCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKwor ICAgIHJldHVybiAwOworfQorCiB2b2lkIF9faW5pdCBjcHVmcmVxX2NtZGxpbmVfcGFyc2UoY2hh ciAqc3RyKQogewogICAgIHN0YXRpYyBzdHJ1Y3QgY3B1ZnJlcV9nb3Zlcm5vciAqX19pbml0ZGF0 YSBjcHVmcmVxX2dvdmVybm9yc1tdID0KICAgICB7CisgICAgICAgICNkZWZpbmUgQ1BVRlJFUV9E RUZBVUxUX0dPVkVSTk9SX0lOREVYIDA7CiAgICAgICAgICZjcHVmcmVxX2dvdl91c2Vyc3BhY2Us CiAgICAgICAgICZjcHVmcmVxX2dvdl9kYnMsCiAgICAgICAgICZjcHVmcmVxX2dvdl9wZXJmb3Jt YW5jZSwKICAgICAgICAgJmNwdWZyZXFfZ292X3Bvd2Vyc2F2ZQogICAgIH07CisgICAgdW5zaWdu ZWQgaW50IGdvdl9pbmRleCA9IENQVUZSRVFfREVGQVVMVF9HT1ZFUk5PUl9JTkRFWDsKIAogICAg IGRvIHsKICAgICAgICAgY2hhciAqdmFsLCAqZW5kID0gc3RyY2hyKHN0ciwgJywnKTsKICAgICAg ICAgdW5zaWduZWQgaW50IGk7CiAKLSAgICAgICAgaWYgKCBlbmQgKQorICAgICAgICBpZiAoZW5k KQogICAgICAgICAgICAgKmVuZCsrID0gJ1wwJzsKICAgICAgICAgdmFsID0gc3RyY2hyKHN0ciwg Jz0nKTsKLSAgICAgICAgaWYgKCB2YWwgKQorICAgICAgICBpZiAodmFsKQogICAgICAgICAgICAg KnZhbCsrID0gJ1wwJzsKIAotICAgICAgICBpZiAoICFjcHVmcmVxX29wdF9nb3Zlcm5vciApCi0g ICAgICAgIHsKLSAgICAgICAgICAgIGlmICggIXZhbCApCi0gICAgICAgICAgICB7Ci0gICAgICAg ICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGNwdWZyZXFfZ292ZXJub3JzKTsg KytpICkKLSAgICAgICAgICAgICAgICAgICAgaWYgKCAhc3RyY21wKHN0ciwgY3B1ZnJlcV9nb3Zl cm5vcnNbaV0tPm5hbWUpICkKLSAgICAgICAgICAgICAgICAgICAgeworICAgICAgICBpZiAoIWNw dWZyZXFfb3B0X2dvdmVybm9yKSB7CisgICAgICAgICAgICBpZiAoIXZhbCkKKyAgICAgICAgICAg ICAgICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjcHVmcmVxX2dvdmVybm9ycyk7ICsraSkK KyAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHJjbXAoc3RyLCBjcHVmcmVxX2dvdmVybm9yc1tp XS0+bmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNwdWZyZXFfb3B0X2dvdmVybm9y ID0gY3B1ZnJlcV9nb3Zlcm5vcnNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICBnb3ZfaW5k ZXggPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3RyID0gTlVMTDsKICAgICAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9 CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY3B1ZnJlcV9vcHRfZ292ZXJub3Ig PSBDUFVGUkVRX0RFRkFVTFRfR09WRVJOT1I7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIHN0 ciApCi0gICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUoY3B1ZnJlcV9nb3Zl cm5vcnMpOyArK2kgKQotICAgICAgICAgICAgICAgIGlmICggY3B1ZnJlcV9nb3Zlcm5vcnNbaV0t PmhhbmRsZV9vcHRpb24gKQotICAgICAgICAgICAgICAgICAgICBjcHVmcmVxX2dvdmVybm9yc1tp XS0+aGFuZGxlX29wdGlvbihzdHIsIHZhbCk7CisgICAgICAgIGlmIChzdHIpIHsKKyAgICAgICAg ICAgIGlmIChjcHVmcmVxX2hhbmRsZV9jb21tb25fb3B0aW9uKHN0ciwgdmFsKSkKKyAgICAgICAg ICAgICAgICA7CisgICAgICAgICAgICBlbHNlIGlmIChjcHVmcmVxX2dvdmVybm9yc1tnb3ZfaW5k ZXhdLT5oYW5kbGVfb3B0aW9uKQorICAgICAgICAgICAgICAgIGNwdWZyZXFfZ292ZXJub3JzW2dv dl9pbmRleF0tPmhhbmRsZV9vcHRpb24oc3RyLCB2YWwpOworICAgICAgICB9CiAKICAgICAgICAg c3RyID0gZW5kOwotICAgIH0gd2hpbGUgKCBzdHIgKTsKKyAgICB9IHdoaWxlIChzdHIpOwogfQpk aWZmIC1yIGRlODUzZTkwMWI1YyB4ZW4vZHJpdmVycy9jcHVmcmVxL2NwdWZyZXFfbWlzY19nb3Zl cm5vcnMuYwotLS0gYS94ZW4vZHJpdmVycy9jcHVmcmVxL2NwdWZyZXFfbWlzY19nb3Zlcm5vcnMu YwlXZWQgRmViIDA0IDE1OjI5OjUxIDIwMDkgKzAwMDAKKysrIGIveGVuL2RyaXZlcnMvY3B1ZnJl cS9jcHVmcmVxX21pc2NfZ292ZXJub3JzLmMJU3VuIEZlYiAwOCAxMzowNzo0NSAyMDA5ICswODAw CkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CiAjaW5jbHVkZSA8YWNw aS9jcHVmcmVxL2NwdWZyZXEuaD4KIAorc3RhdGljIHVuc2lnbmVkIGludCB1c3Jfc3BlZWQ7CiAK IC8qCiAgKiBjcHVmcmVxIHVzZXJzcGFjZSBnb3Zlcm5vcgpAQCAtMjYsNiArMjcsNyBAQCBzdGF0 aWMgaW50IGNwdWZyZXFfZ292ZXJub3JfdXNlcnNwYWNlKHN0CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBldmVudCkKIHsKICAgICBpbnQgcmV0ID0g MDsKKyAgICB1bnNpZ25lZCBpbnQgZnJlcTsKIAogICAgIGlmICghcG9saWN5KQogICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKQEAgLTM1LDEyICszNywxNyBAQCBzdGF0aWMgaW50IGNwdWZyZXFfZ292 ZXJub3JfdXNlcnNwYWNlKHN0CiAgICAgY2FzZSBDUFVGUkVRX0dPVl9TVE9QOgogICAgICAgICBi cmVhazsKICAgICBjYXNlIENQVUZSRVFfR09WX0xJTUlUUzoKLSAgICAgICAgaWYgKHBvbGljeS0+ bWF4IDwgcG9saWN5LT5jdXIpCisgICAgICAgIGZyZXEgPSB1c3Jfc3BlZWQgPyA6IHBvbGljeS0+ Y3VyOworICAgICAgICBpZiAocG9saWN5LT5tYXggPCBmcmVxKQogICAgICAgICAgICAgcmV0ID0g X19jcHVmcmVxX2RyaXZlcl90YXJnZXQocG9saWN5LCBwb2xpY3ktPm1heCwKICAgICAgICAgICAg ICAgICAgICAgICAgIENQVUZSRVFfUkVMQVRJT05fSCk7Ci0gICAgICAgIGVsc2UgaWYgKHBvbGlj eS0+bWluID4gcG9saWN5LT5jdXIpCisgICAgICAgIGVsc2UgaWYgKHBvbGljeS0+bWluID4gZnJl cSkKICAgICAgICAgICAgIHJldCA9IF9fY3B1ZnJlcV9kcml2ZXJfdGFyZ2V0KHBvbGljeSwgcG9s aWN5LT5taW4sCiAgICAgICAgICAgICAgICAgICAgICAgICBDUFVGUkVRX1JFTEFUSU9OX0wpOwor ICAgICAgICBlbHNlIGlmICh1c3Jfc3BlZWQpCisgICAgICAgICAgICByZXQgPSBfX2NwdWZyZXFf ZHJpdmVyX3RhcmdldChwb2xpY3ksIGZyZXEsCisgICAgICAgICAgICAgICAgICAgICAgICBDUFVG UkVRX1JFTEFUSU9OX0wpOworCiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg IHJldCA9IC1FSU5WQUw7CkBAIC01MCw5ICs1NywxNyBAQCBzdGF0aWMgaW50IGNwdWZyZXFfZ292 ZXJub3JfdXNlcnNwYWNlKHN0CiAgICAgcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIHZvaWQgX19p bml0IAorY3B1ZnJlcV91c2Vyc3BhY2VfaGFuZGxlX29wdGlvbihjb25zdCBjaGFyICpuYW1lLCBj b25zdCBjaGFyICp2YWwpCit7CisgICAgaWYgKCFzdHJjbXAobmFtZSwgInNwZWVkIikgJiYgdmFs KQorICAgICAgICB1c3Jfc3BlZWQgPSBzaW1wbGVfc3RydG91bCh2YWwsIE5VTEwsIDApOworfQor CiBzdHJ1Y3QgY3B1ZnJlcV9nb3Zlcm5vciBjcHVmcmVxX2dvdl91c2Vyc3BhY2UgPSB7CiAgICAg Lm5hbWUgPSAidXNlcnNwYWNlIiwKICAgICAuZ292ZXJub3IgPSBjcHVmcmVxX2dvdmVybm9yX3Vz ZXJzcGFjZSwKKyAgICAuaGFuZGxlX29wdGlvbiA9IGNwdWZyZXFfdXNlcnNwYWNlX2hhbmRsZV9v cHRpb24KIH07CiAKIHN0YXRpYyBpbnQgX19pbml0IGNwdWZyZXFfZ292X3VzZXJzcGFjZV9pbml0 KHZvaWQpCmRpZmYgLXIgZGU4NTNlOTAxYjVjIHhlbi9kcml2ZXJzL2NwdWZyZXEvY3B1ZnJlcV9v bmRlbWFuZC5jCi0tLSBhL3hlbi9kcml2ZXJzL2NwdWZyZXEvY3B1ZnJlcV9vbmRlbWFuZC5jCVdl ZCBGZWIgMDQgMTU6Mjk6NTEgMjAwOSArMDAwMAorKysgYi94ZW4vZHJpdmVycy9jcHVmcmVxL2Nw dWZyZXFfb25kZW1hbmQuYwlTdW4gRmViIDA4IDEzOjA3OjQ1IDIwMDkgKzA4MDAKQEAgLTI4Nyw3 ICsyODcsNyBAQCBzdGF0aWMgdm9pZCBfX2luaXQgY3B1ZnJlcV9kYnNfaGFuZGxlX29wCiAgICAg ewogICAgICAgICB1c3Jfc2FtcGxpbmdfcmF0ZSA9IHNpbXBsZV9zdHJ0b3VsbCh2YWwsIE5VTEws IDApICogTUlDUk9TRUNTKDEpOwogICAgIH0KLSAgICBlbHNlIGlmICggIXN0cmNtcChuYW1lLCAi dGhyZXNob2xkIikgJiYgdmFsICkKKyAgICBlbHNlIGlmICggIXN0cmNtcChuYW1lLCAidXBfdGhy ZXNob2xkIikgJiYgdmFsICkKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgdG1wID0gc2lt cGxlX3N0cnRvdWwodmFsLCBOVUxMLCAwKTsKIAo= --_002_706158FABBBA044BAD4FE898A02E4BC22411C73Dpdsmsx503ccrcor_ Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --_002_706158FABBBA044BAD4FE898A02E4BC22411C73Dpdsmsx503ccrcor_--