Re: [Qemu-devel] [PATCH 3/3] PPC: SPAPR: Use KVM function for time info

2011-08-10 Thread Alexander Graf

Am 10.08.2011 um 05:35 schrieb David Gibson :

> On Tue, Aug 09, 2011 at 06:39:30PM +0200, Alexander Graf wrote:
>> One of the things we can't fake on PPC is the timer speed. So
>> we need to extract the frequency information from the host and
>> put it back into the guest device tree.
>> 
>> Luckily, we already have functions for that from the non-pseries
>> targets, so all we need to do is to connect the dots and the guest
>> suddenly gets to know its real timer speeds.
>> 
>> Signed-off-by: Alexander Graf 
>> ---
>> hw/spapr.c |8 
>> 1 files changed, 4 insertions(+), 4 deletions(-)
>> 
>> diff --git a/hw/spapr.c b/hw/spapr.c
>> index d56697a..a73f38a 100644
>> --- a/hw/spapr.c
>> +++ b/hw/spapr.c
>> @@ -140,6 +140,8 @@ static void *spapr_create_fdt_skel(const char *cpu_model,
>> char *nodename;
>> uint32_t segs[] = {cpu_to_be32(28), cpu_to_be32(40),
>>0x, 0x};
>> +uint32_t tbfreq = kvm_enabled() ? kvmppc_get_tbfreq() : 
>> TIMEBASE_FREQ;
>> +uint32_t cpufreq = kvm_enabled() ? kvmppc_get_clockfreq() : 
>> 10;
> 
> Um.. I see the kvmppc_get_tbfreq() function but not the
> kvmppc_get_clockfreq() function in my tree (pulled from upstream this
> morning).  Is that something new in your ppc patch queue?

Yes, it's part of the SMP patch set for e500 :)

Alex

> 



Re: [Qemu-devel] [PATCH 3/3] PPC: SPAPR: Use KVM function for time info

2011-08-09 Thread David Gibson
On Tue, Aug 09, 2011 at 06:39:30PM +0200, Alexander Graf wrote:
> One of the things we can't fake on PPC is the timer speed. So
> we need to extract the frequency information from the host and
> put it back into the guest device tree.
> 
> Luckily, we already have functions for that from the non-pseries
> targets, so all we need to do is to connect the dots and the guest
> suddenly gets to know its real timer speeds.
> 
> Signed-off-by: Alexander Graf 
> ---
>  hw/spapr.c |8 
>  1 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/hw/spapr.c b/hw/spapr.c
> index d56697a..a73f38a 100644
> --- a/hw/spapr.c
> +++ b/hw/spapr.c
> @@ -140,6 +140,8 @@ static void *spapr_create_fdt_skel(const char *cpu_model,
>  char *nodename;
>  uint32_t segs[] = {cpu_to_be32(28), cpu_to_be32(40),
> 0x, 0x};
> +uint32_t tbfreq = kvm_enabled() ? kvmppc_get_tbfreq() : 
> TIMEBASE_FREQ;
> +uint32_t cpufreq = kvm_enabled() ? kvmppc_get_clockfreq() : 
> 10;

Um.. I see the kvmppc_get_tbfreq() function but not the
kvmppc_get_clockfreq() function in my tree (pulled from upstream this
morning).  Is that something new in your ppc patch queue?

>  if (asprintf(&nodename, "%s@%x", modelname, index) < 0) {
>  fprintf(stderr, "Allocation failure\n");
> @@ -158,10 +160,8 @@ static void *spapr_create_fdt_skel(const char *cpu_model,
>  env->dcache_line_size)));
>  _FDT((fdt_property_cell(fdt, "icache-block-size",
>  env->icache_line_size)));
> -_FDT((fdt_property_cell(fdt, "timebase-frequency", TIMEBASE_FREQ)));
> -/* Hardcode CPU frequency for now.  It's kind of arbitrary on
> - * full emu, for kvm we should copy it from the host */
> -_FDT((fdt_property_cell(fdt, "clock-frequency", 10)));
> +_FDT((fdt_property_cell(fdt, "timebase-frequency", tbfreq)));
> +_FDT((fdt_property_cell(fdt, "clock-frequency", cpufreq)));
>  _FDT((fdt_property_cell(fdt, "ibm,slb-size", env->slb_nr)));
>  _FDT((fdt_property(fdt, "ibm,pft-size",
> pft_size_prop, sizeof(pft_size_prop;

-- 
David Gibson| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au  | minimalist, thank you.  NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson