From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Liu, Jinsong" Subject: [PATCH 2] X86: cpufreq get_cur_val adjustment Date: Wed, 11 Feb 2009 16:46:01 +0800 Message-ID: <706158FABBBA044BAD4FE898A02E4BC22411C73E@pdsmsx503.ccr.corp.intel.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="_002_706158FABBBA044BAD4FE898A02E4BC22411C73Epdsmsx503ccrcor_" 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_706158FABBBA044BAD4FE898A02E4BC22411C73Epdsmsx503ccrcor_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X86: cpufreq get_cur_val adjustment c/s 19149 update cpufreq get_cur_val logic to avoid cross processor call, i= t's a good point. However, to avoid null drv_data pointer, we adjust some logic in this patch= , to keep advantage of c/s 19149 and at same time to avoid null drv_data po= inter. Signed-off-by: Liu, Jinsong diff -r fa8d08857294 xen/arch/x86/acpi/cpufreq/cpufreq.c --- a/xen/arch/x86/acpi/cpufreq/cpufreq.c Sun Feb 08 13:07:46 2009 +0800 +++ b/xen/arch/x86/acpi/cpufreq/cpufreq.c Sun Feb 08 19:18:16 2009 +0800 @@ -183,7 +183,7 @@ static void drv_read(struct drv_cmd *cmd ASSERT(cpus_weight(cmd->mask) =3D=3D 1); =20 /* to reduce IPI for the sake of performance */ - if (cpu_isset(smp_processor_id(), cmd->mask)) + if (likely(cpu_isset(smp_processor_id(), cmd->mask))) do_drv_read((void *)cmd); else on_selected_cpus( cmd->mask, do_drv_read, (void *)cmd, 0, 1); @@ -196,6 +196,7 @@ static void drv_write(struct drv_cmd *cm =20 static u32 get_cur_val(cpumask_t mask) { + struct cpufreq_policy *policy; struct processor_performance *perf; struct drv_cmd cmd; unsigned int cpu =3D smp_processor_id(); @@ -205,18 +206,19 @@ static u32 get_cur_val(cpumask_t mask) =20 if (!cpu_isset(cpu, mask)) cpu =3D first_cpu(mask); + policy =3D cpufreq_cpu_policy[cpu]; =20 - if (cpu >=3D NR_CPUS || !drv_data[cpu]) + if (cpu >=3D NR_CPUS || !policy || !drv_data[policy->cpu]) return 0; =20 =20 - switch (drv_data[cpu]->cpu_feature) { + switch (drv_data[policy->cpu]->cpu_feature) { case SYSTEM_INTEL_MSR_CAPABLE: cmd.type =3D SYSTEM_INTEL_MSR_CAPABLE; cmd.addr.msr.reg =3D MSR_IA32_PERF_STATUS; break; case SYSTEM_IO_CAPABLE: cmd.type =3D SYSTEM_IO_CAPABLE; - perf =3D drv_data[cpu]->acpi_data; + perf =3D drv_data[policy->cpu]->acpi_data; cmd.addr.io.port =3D perf->control_register.address; cmd.addr.io.bit_width =3D perf->control_register.bit_width; break;= --_002_706158FABBBA044BAD4FE898A02E4BC22411C73Epdsmsx503ccrcor_ Content-Type: application/octet-stream; name="px-xen-2-getval.patch" Content-Description: px-xen-2-getval.patch Content-Disposition: attachment; filename="px-xen-2-getval.patch"; size=2023; creation-date="Wed, 11 Feb 2009 16:39:58 GMT"; modification-date="Sun, 08 Feb 2009 19:49:18 GMT" Content-Transfer-Encoding: base64 WDg2OiBjcHVmcmVxIGdldF9jdXJfdmFsIGFkanVzdG1lbnQKCmMvcyAxOTE0OSB1cGRhdGUgY3B1 ZnJlcSBnZXRfY3VyX3ZhbCBsb2dpYyB0byBhdm9pZCBjcm9zcyBwcm9jZXNzb3IgY2FsbCwgaXQn cyBhIGdvb2QgcG9pbnQuCkhvd2V2ZXIsIHRvIGF2b2lkIG51bGwgZHJ2X2RhdGEgcG9pbnRlciwg d2UgYWRqdXN0IHNvbWUgbG9naWMgaW4gdGhpcyBwYXRjaCwgdG8ga2VlcCBhZHZhbnRhZ2Ugb2Yg Yy9zIDE5MTQ5IGFuZCBhdCBzYW1lIHRpbWUgdG8gYXZvaWQgbnVsbCBkcnZfZGF0YSBwb2ludGVy LgoKU2lnbmVkLW9mZi1ieTogTGl1LCBKaW5zb25nIDxqaW5zb25nLmxpdUBpbnRlbC5jb20+Cgpk aWZmIC1yIGZhOGQwODg1NzI5NCB4ZW4vYXJjaC94ODYvYWNwaS9jcHVmcmVxL2NwdWZyZXEuYwot LS0gYS94ZW4vYXJjaC94ODYvYWNwaS9jcHVmcmVxL2NwdWZyZXEuYwlTdW4gRmViIDA4IDEzOjA3 OjQ2IDIwMDkgKzA4MDAKKysrIGIveGVuL2FyY2gveDg2L2FjcGkvY3B1ZnJlcS9jcHVmcmVxLmMJ U3VuIEZlYiAwOCAxOToxODoxNiAyMDA5ICswODAwCkBAIC0xODMsNyArMTgzLDcgQEAgc3RhdGlj IHZvaWQgZHJ2X3JlYWQoc3RydWN0IGRydl9jbWQgKmNtZAogICAgIEFTU0VSVChjcHVzX3dlaWdo dChjbWQtPm1hc2spID09IDEpOwogCiAgICAgLyogdG8gcmVkdWNlIElQSSBmb3IgdGhlIHNha2Ug b2YgcGVyZm9ybWFuY2UgKi8KLSAgICBpZiAoY3B1X2lzc2V0KHNtcF9wcm9jZXNzb3JfaWQoKSwg Y21kLT5tYXNrKSkKKyAgICBpZiAobGlrZWx5KGNwdV9pc3NldChzbXBfcHJvY2Vzc29yX2lkKCks IGNtZC0+bWFzaykpKQogICAgICAgICBkb19kcnZfcmVhZCgodm9pZCAqKWNtZCk7CiAgICAgZWxz ZQogICAgICAgICBvbl9zZWxlY3RlZF9jcHVzKCBjbWQtPm1hc2ssIGRvX2Rydl9yZWFkLCAodm9p ZCAqKWNtZCwgMCwgMSk7CkBAIC0xOTYsNiArMTk2LDcgQEAgc3RhdGljIHZvaWQgZHJ2X3dyaXRl KHN0cnVjdCBkcnZfY21kICpjbQogCiBzdGF0aWMgdTMyIGdldF9jdXJfdmFsKGNwdW1hc2tfdCBt YXNrKQogeworICAgIHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5OwogICAgIHN0cnVjdCBw cm9jZXNzb3JfcGVyZm9ybWFuY2UgKnBlcmY7CiAgICAgc3RydWN0IGRydl9jbWQgY21kOwogICAg IHVuc2lnbmVkIGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CkBAIC0yMDUsMTggKzIwNiwx OSBAQCBzdGF0aWMgdTMyIGdldF9jdXJfdmFsKGNwdW1hc2tfdCBtYXNrKQogCiAgICAgaWYgKCFj cHVfaXNzZXQoY3B1LCBtYXNrKSkKICAgICAgICAgY3B1ID0gZmlyc3RfY3B1KG1hc2spOworICAg IHBvbGljeSA9IGNwdWZyZXFfY3B1X3BvbGljeVtjcHVdOwogCi0gICAgaWYgKGNwdSA+PSBOUl9D UFVTIHx8ICFkcnZfZGF0YVtjcHVdKQorICAgIGlmIChjcHUgPj0gTlJfQ1BVUyB8fCAhcG9saWN5 IHx8ICFkcnZfZGF0YVtwb2xpY3ktPmNwdV0pCiAgICAgICAgIHJldHVybiAwOyAgICAKIAotICAg IHN3aXRjaCAoZHJ2X2RhdGFbY3B1XS0+Y3B1X2ZlYXR1cmUpIHsKKyAgICBzd2l0Y2ggKGRydl9k YXRhW3BvbGljeS0+Y3B1XS0+Y3B1X2ZlYXR1cmUpIHsKICAgICBjYXNlIFNZU1RFTV9JTlRFTF9N U1JfQ0FQQUJMRToKICAgICAgICAgY21kLnR5cGUgPSBTWVNURU1fSU5URUxfTVNSX0NBUEFCTEU7 CiAgICAgICAgIGNtZC5hZGRyLm1zci5yZWcgPSBNU1JfSUEzMl9QRVJGX1NUQVRVUzsKICAgICAg ICAgYnJlYWs7CiAgICAgY2FzZSBTWVNURU1fSU9fQ0FQQUJMRToKICAgICAgICAgY21kLnR5cGUg PSBTWVNURU1fSU9fQ0FQQUJMRTsKLSAgICAgICAgcGVyZiA9IGRydl9kYXRhW2NwdV0tPmFjcGlf ZGF0YTsKKyAgICAgICAgcGVyZiA9IGRydl9kYXRhW3BvbGljeS0+Y3B1XS0+YWNwaV9kYXRhOwog ICAgICAgICBjbWQuYWRkci5pby5wb3J0ID0gcGVyZi0+Y29udHJvbF9yZWdpc3Rlci5hZGRyZXNz OwogICAgICAgICBjbWQuYWRkci5pby5iaXRfd2lkdGggPSBwZXJmLT5jb250cm9sX3JlZ2lzdGVy LmJpdF93aWR0aDsKICAgICAgICAgYnJlYWs7Cg== --_002_706158FABBBA044BAD4FE898A02E4BC22411C73Epdsmsx503ccrcor_ 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_706158FABBBA044BAD4FE898A02E4BC22411C73Epdsmsx503ccrcor_--