WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-ia64-devel

[Xen-devel] RE: [Xen-ia64-devel] [PATCH 2/3] IA64: add cpufreq support

To: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
Subject: [Xen-devel] RE: [Xen-ia64-devel] [PATCH 2/3] IA64: add cpufreq support
From: "Yu, Ke" <ke.yu@xxxxxxxxx>
Date: Wed, 1 Oct 2008 22:10:04 +0800
Accept-language: en-US
Acceptlanguage: en-US
Cc: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>, "xen-ia64-devel@xxxxxxxxxxxxxxxxxxx" <xen-ia64-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Wed, 01 Oct 2008 07:11:56 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <20080929034108.GE26025%yamahata@xxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <49582C73AC36CC4C8C6C42390304E81C0887A9D796@xxxxxxxxxxxxxxxxxxxxxxxxxxxx> <20080929034108.GE26025%yamahata@xxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: Ackh5TqmvRYnqbqFQxKwMqqfKKC8kAB5eaug
Thread-topic: [Xen-ia64-devel] [PATCH 2/3] IA64: add cpufreq support
Please see attached updated patch.

Three changes are made:
1. use ia64 platfrom hypercall instead of dom0 ops hypercall for cpufreq info 
notify.
2.  make ia64_acpiid_to_sapicid[] static
3. fix the indent

Best Regards
Ke

Isaku Yamahata wrote:
> On Sat, Sep 27, 2008 at 10:12:37AM +0800, Yu, Ke wrote:
>> IA64: implement ia64 cpufreq notify hypercall
>>
>> This patch implement the ia64 cpufreq hypercall to get dom0 cpufreq
>> ACPI info.
>>
>> Signed-off-by: Yu Ke <ke.yu@xxxxxxxxx>
>>                Liu Jinsong <jinsong.liu@xxxxxxxxx>
>
> Hi, some comments below.
>
>
>> IA64: implement ia64 cpufreq notify hypercall
>>
>> This patch implement the ia64 cpufreq hypercall to get dom0 cpufreq
>> ACPI info.
>>
>> Signed-off-by: Yu Ke <ke.yu@xxxxxxxxx>
>>                Liu Jinsong <jinsong.liu@xxxxxxxxx>
>>
>> diff -r ac0516cfe654 xen/arch/ia64/linux-xen/acpi.c
>> --- a/xen/arch/ia64/linux-xen/acpi.c  Fri Sep 26 19:44:23 2008 +0800
>> +++ b/xen/arch/ia64/linux-xen/acpi.c  Fri Sep 26 19:44:53 2008 +0800
>>       @@ -219,6 +219,10 @@ return 0;
>>  }
>>
>> +#ifdef XEN
>> +extern u16 ia64_acpiid_to_sapicid[];
>> +#endif
>> +
>
> Please don't insert delcartions into .c file.
> Please declare it in header file.
>
>
>>  static int __init
>>  acpi_parse_lsapic(struct acpi_subtable_header * header, const
>> unsigned long end)  { @@ -232,6 +236,10 @@
>>  #ifdef CONFIG_SMP
>>               smp_boot_data.cpu_phys_id[available_cpus] =
>>                   (lsapic->id << 8) | lsapic->eid;
>> +#endif
>> +#ifdef XEN
>> +        ia64_acpiid_to_sapicid[lsapic->processor_id] =
>> +            (lsapic->id << 8) | lsapic->eid;
>>  #endif
>>               ++available_cpus;
>>       }
>> diff -r ac0516cfe654 xen/arch/ia64/xen/cpufreq/cpufreq.c
>> --- a/xen/arch/ia64/xen/cpufreq/cpufreq.c     Fri Sep 26 19:44:23
>> 2008 +0800 +++ b/xen/arch/ia64/xen/cpufreq/cpufreq.c     Fri Sep 26
>> 19:44:53 2008 +0800 @@ -300,4 +300,34 @@
>>
>>      return ret;
>>  }
>> +
>> +#define MAX_LOCAL_SAPIC 255
>> +u16 ia64_acpiid_to_sapicid[ MAX_LOCAL_SAPIC ] =
>> +    {[0 ... MAX_LOCAL_SAPIC - 1] = 0xffff };
>> +
>> +/* acpiid to cpuid */
>> +int get_cpu_id(u8 acpi_id)
>> +{
>> +    int i;
>> +    u16 apic_id;
>> +
>> +    apic_id = ia64_acpiid_to_sapicid[acpi_id];
>> +    if ( apic_id == 0xffff )
>> +        return -EINVAL;
>> +
>> +    for ( i = 0; i < NR_CPUS; i++ )
>> +    {
>> +        if ( apic_id == ia64_cpu_to_sapicid[i]
>> +           )
>> +            return i;
>> +    }
>> +
>> +    return -1;
>> +}
>> +
>>  __initcall(cpufreq_driver_init);
>> +
>> +int cpufreq_cpu_init(unsigned int cpuid)
>> +{
>> +    return cpufreq_add_cpu(cpuid);
>> +}
>
> Please Linux style, not 4 tab.
>
>> diff -r ac0516cfe654 xen/arch/ia64/xen/dom0_ops.c
>> --- a/xen/arch/ia64/xen/dom0_ops.c    Fri Sep 26 19:44:23 2008 +0800
>> +++ b/xen/arch/ia64/xen/dom0_ops.c    Fri Sep 26 19:44:53 2008 +0800
>>  @@ -14,6 +14,7 @@ #include <public/sysctl.h>
>>  #include <xen/sched.h>
>>  #include <xen/event.h>
>> +#include <xen/domain.h>
>>  #include <asm/pdb.h>
>>  #include <xen/trace.h>
>>  #include <xen/console.h>
>> @@ -28,10 +29,21 @@
>>  #include <asm/hvm/support.h>
>>  #include <xsm/xsm.h>
>>  #include <public/hvm/save.h>
>> +#include <public/platform.h>
>> +#include <acpi/cpufreq/cpufreq.h>
>>
>>  #define get_xen_guest_handle(val, hnd)  do { val = (hnd).p; } while
>> (0)
>>
>>  extern unsigned long total_pages;
>> +
>> +int xenpf_copy_px_states(struct processor_performance *pxpt,
>> +        struct xen_processor_performance *dom0_px_info) +{
>> +    if (!pxpt || !dom0_px_info)
>> +        return -EINVAL;
>> +    return  copy_from_guest(pxpt->states, dom0_px_info->states,
>> +                    dom0_px_info->state_count);
>> +}
>>
>>  long arch_do_domctl(xen_domctl_t *op,
>> XEN_GUEST_HANDLE(xen_domctl_t) u_domctl)  { @@ -597,6 +609,40 @@
>>      case IA64_DOM0VP_unexpose_foreign_p2m:
>>          ret = dom0vp_unexpose_foreign_p2m(d, arg0, arg1);
>> break; +
>> +    case IA64_DOM0VP_set_pm_info: {
>> +        XEN_GUEST_HANDLE(xenpf_set_processor_pminfo_t) hnd;
>> +        struct xenpf_set_processor_pminfo pminfo;
>> +        extern int set_px_pminfo(uint32_t cpuid, struct
>> +                xen_processor_performance *perf);
>> +
>> +        set_xen_guest_handle(hnd,
>> (xenpf_set_processor_pminfo_t*)arg0); +        if
>> (copy_from_guest(&pminfo, hnd, 1)){ +            return -EFAULT;
>> +        }
>> +
>> +        switch (pminfo.type)
>> +        {
>> +            case XEN_PM_PX:
>> +                if ( !(xen_processor_pmbits & XEN_PROCESSOR_PM_PX)
>> ) +                { +                    ret = -ENOSYS;
>> +                    break;
>> +                }
>> +                ret = set_px_pminfo(pminfo.id, &pminfo.perf); +
>> break; +            case XEN_PM_CX:
>> +                /* Place holder for Cx */
>> +                ret = -ENOSYS;
>> +                break;
>> +            default:
>> +                ret = -EINVAL;
>> +                break;
>> +        }
>> +
>> +        break;
>> +    }
>> +
>>      default:
>>          ret = -1;
>>               printk("unknown dom0_vp_op 0x%lx\n", cmd);
>
> Hmm, why not use XENPF_set_processor_pminfo.
> Ah, I guess you did this because Xen/IA64 doesn't define
> do_platform_op(). So please define do_platform_op() in
> xen/arch/ia64/xen/platform_hypercall.c following the x86 way.
> And update ia64_hypercall_table in xen/arch/ia64/linux-xen/entry.S.
> You also have to update the next patch for Linux.
>
>
>> diff -r ac0516cfe654 xen/arch/ia64/xen/domain.c
>> --- a/xen/arch/ia64/xen/domain.c      Fri Sep 26 19:44:23 2008 +0800
>> +++ b/xen/arch/ia64/xen/domain.c      Fri Sep 26 19:44:53 2008 +0800
>>       @@ -2160,6 +2160,7 @@ snprintf(si->magic, sizeof(si->magic),
>>       "xen-3.0-ia64"); si->nr_pages     = max_pages;
>>       si->flags = SIF_INITDOMAIN|SIF_PRIVILEGED;
>> +    si->flags |= (xen_processor_pmbits << 8) & SIF_PM_MASK;
>>
>>       printk("Dom0: 0x%lx\n", (u64)dom0);
>>
>
> not space, but tab.
>
>
>> diff -r ac0516cfe654 xen/include/public/arch-ia64.h
>> --- a/xen/include/public/arch-ia64.h  Fri Sep 26 19:44:23 2008 +0800
>> +++ b/xen/include/public/arch-ia64.h  Fri Sep 26 19:44:53 2008 +0800
>>  @@ -453,6 +453,9 @@ /* unexpose the foreign domain's p2m table into
>>  privileged domain */ #define IA64_DOM0VP_unexpose_foreign_p2m
>> 13
>>
>> +/* pass power management info to hypervisor */
>> +#define IA64_DOM0VP_set_pm_info         14
>> +
>>  // flags for page assignement to pseudo physical address space
>>  #define _ASSIGN_readonly                0
>>  #define ASSIGN_readonly                 (1UL << _ASSIGN_readonly)

Attachment: px-xen-ipf-hypercall.patch
Description: px-xen-ipf-hypercall.patch

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] RE: [Xen-ia64-devel] [PATCH 2/3] IA64: add cpufreq support, Yu, Ke <=