qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Igor Mammedov <imammedo@redhat.com>
To: Shlomo Pongratz <shlomo.pongratz@huawei.com>
Cc: "peter.maydell@linaro.org" <peter.maydell@linaro.org>,
	Pavel Fedin <p.fedin@samsung.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	'Ashok Kumar' <ashoks@broadcom.com>
Subject: Re: [Qemu-devel] [PATCH] Use Aff1 with mpidr
Date: Tue, 2 Jun 2015 17:37:33 +0200	[thread overview]
Message-ID: <20150602173733.26e381ef@nial.brq.redhat.com> (raw)
In-Reply-To: <B5C21809C482C148A58516F588CD431467DC5B@szxeml557-mbx.china.huawei.com>

On Sun, 31 May 2015 11:03:53 +0000
Shlomo Pongratz <shlomo.pongratz@huawei.com> wrote:

> Hi,
> 
> See below.
> 
> > -----Original Message-----
> > From: Pavel Fedin [mailto:p.fedin@samsung.com]
> > Sent: Friday, 29 May, 2015 9:45 AM
> > To: Shlomo Pongratz; qemu-devel@nongnu.org
> > Cc: peter.maydell@linaro.org; 'Ashok Kumar'
> > Subject: RE: [PATCH] Use Aff1 with mpidr
> > 
> >  Hi!
> > 
> > > I see that you added mpidr to ARMCpu and initialized it in virt.c then
> > > you use it in
> > mpidr_read.
> > > Thus you must fix all other virtual machines in hw/arm not just virt.c
> > > as it is not
> > initialized for
> > > them.
> > 
> >  The only change in virt.c is:
> > --- cut ---
> > diff --git a/hw/arm/virt.c b/hw/arm/virt.c index a7f9a10..a1186c5 100644
> > --- a/hw/arm/virt.c
> > +++ b/hw/arm/virt.c
> > @@ -317,7 +317,11 @@ static void fdt_add_cpu_nodes(const VirtBoardInfo
> > *vbi)
> >                                          "enable-method", "psci");
> >          }
> > 
> > -        qemu_fdt_setprop_cell(vbi->fdt, nodename, "reg", cpu);
> > +        /*
> > +         * If cpus node's #address-cells property is set to 1
> > +         * The reg cell bits [23:0] must be set to bits [23:0] of MPIDR_EL1.
> > +         */
> > +        qemu_fdt_setprop_cell(vbi->fdt, nodename, "reg",
> > + armcpu->mpidr);
> >          g_free(nodename);
> >      }
> >  }
> > --- cut ---
> >  So that it takes MPIDR instead of just CPU index. Theoretically - yes, may be
> > other machines should also be changed, but:
> > 1. They are 32-bit, so MPIDR == index for them, because there are no more
> > than 8 CPUs.
> > 2. Those machines AFAIK do not compose device tree by themselves. They
> > use pre-made ones instead, coming for example with kernel.
> >  Only virt currently can be a 64-bit machine and cares about more than 8
> > CPUs.
> >  As to MPIDR initialization, it is done in arm_cpu_initfn(), therefore all ARM
> > CPUs get this automatically. There's no need to modify code for every
> > machine.
> 
> I think we should take Igor's comment into account. The CPUS_PER_CLUSTER should not be a constant, and maybe should be initialized in arm_cpu_initfn and aarch64_{a53|a57}_initfn, as psci need to know it.

I has been suggesting something like following to allow every CPU type override
affinity definitions:

diff --git a/target-arm/cpu-qom.h b/target-arm/cpu-qom.h
index ed5a644..f309699 100644
--- a/target-arm/cpu-qom.h
+++ b/target-arm/cpu-qom.h
@@ -181,6 +181,7 @@ typedef struct AArch64CPUClass {
     /*< private >*/
     ARMCPUClass parent_class;
     /*< public >*/
+    void (*get_affinity)(ARMCPU *cpu, uint8_t *aff1, uint8_t *aff2, uint8_t *aff3)
 } AArch64CPUClass;
 
 static inline ARMCPU *arm_env_get_cpu(CPUARMState *env)
diff --git a/target-arm/cpu64.c b/target-arm/cpu64.c
index 270bc2f..bf19efe 100644
--- a/target-arm/cpu64.c
+++ b/target-arm/cpu64.c
@@ -235,7 +235,9 @@ static void aarch64_cpu_set_pc(CPUState *cs, vaddr value)
 static void aarch64_cpu_class_init(ObjectClass *oc, void *data)
 {
     CPUClass *cc = CPU_CLASS(oc);
+    AArch64CPUClass *acc = ARMCPUClass(oc);
 
+    acc->get_affinity = coretex_a[57|53|..]_get_affinity;
 #if !defined(CONFIG_USER_ONLY)
     cc->do_interrupt = aarch64_cpu_do_interrupt;
 #endif

  parent reply	other threads:[~2015-06-02 15:37 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-22 10:32 [Qemu-devel] [PATCH] Use Aff1 with mpidr Pavel Fedin
2015-05-28 14:57 ` Shlomo Pongratz
2015-05-29  6:45   ` Pavel Fedin
2015-05-31 11:03     ` Shlomo Pongratz
2015-06-01  6:34       ` Pavel Fedin
2015-06-01  9:03       ` Pavel Fedin
2015-06-01 14:26         ` Shlomo Pongratz
2015-06-02  6:29           ` Pavel Fedin
2015-06-02 15:37       ` Igor Mammedov [this message]
2015-05-29  8:36 ` Igor Mammedov
2015-05-29  8:53   ` Pavel Fedin
2015-05-29  9:18     ` Igor Mammedov
2015-05-29 12:26       ` Pavel Fedin
2015-05-29 13:03         ` Igor Mammedov
2015-05-29 13:41           ` Pavel Fedin
2015-06-02 15:32             ` Igor Mammedov
2015-06-02 15:42               ` Peter Maydell
2015-06-02 15:54                 ` Igor Mammedov
2015-05-29 17:37           ` Pavel Fedin
2015-05-30  2:30             ` Shannon Zhao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150602173733.26e381ef@nial.brq.redhat.com \
    --to=imammedo@redhat.com \
    --cc=ashoks@broadcom.com \
    --cc=p.fedin@samsung.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=shlomo.pongratz@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).