[{"id":1762559,"web_url":"http://patchwork.ozlabs.org/comment/1762559/","msgid":"<20170904121857.1def843f@bahia>","list_archive_url":null,"date":"2017-09-04T10:18:57","subject":"Re: [Qemu-devel] [Qemu-ppc] [PATCH 1/1] ppc: spapr: Move VCPU ID\n\tcalculation into sPAPR","submitter":{"id":69178,"url":"http://patchwork.ozlabs.org/api/people/69178/","name":"Greg Kurz","email":"groug@kaod.org"},"content":"On Thu, 31 Aug 2017 16:38:46 +1000\nSam Bobroff <sam.bobroff@au1.ibm.com> wrote:\n\n> Move the calculation of a CPU's VCPU ID out of the generic PPC code\n> (ppc_cpu_realizefn()) and into sPAPR specific code\n> (spapr_cpu_core_realize()) where it belongs.\n> \n> Unfortunately, due to the way things are ordered, we still need to\n> default the VCPU ID in ppc_cpu_realizfn() but at least doing that\n> doesn't require any interaction with sPAPR.\n> \n> Signed-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com>\n> ---\n> This is follow up work arising from my work to clean up the way CPU VCPU IDs are\n> handled on PowerPC. It had looked like it would be difficult to move the actual\n> VCPU ID calculation out of generic code but it turned out to be OK.\n> \n> It's based on dgibson/ppc-for-2.11.\n> \n> Cheers,\n> Sam.\n> \n>  hw/ppc/spapr_cpu_core.c     | 11 +++++++++++\n>  target/ppc/translate_init.c | 18 +++---------------\n>  2 files changed, 14 insertions(+), 15 deletions(-)\n> \n> diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c\n> index 5e319d9bbb..84dcc6e264 100644\n> --- a/hw/ppc/spapr_cpu_core.c\n> +++ b/hw/ppc/spapr_cpu_core.c\n> @@ -211,6 +211,7 @@ error:\n>  \n>  static void spapr_cpu_core_realize(DeviceState *dev, Error **errp)\n>  {\n> +    sPAPRMachineState *spapr = SPAPR_MACHINE(qdev_get_machine());\n>      sPAPRCPUCore *sc = SPAPR_CPU_CORE(OBJECT(dev));\n>      sPAPRCPUCoreClass *scc = SPAPR_CPU_CORE_GET_CLASS(OBJECT(dev));\n>      CPUCore *cc = CPU_CORE(OBJECT(dev));\n> @@ -237,6 +238,16 @@ static void spapr_cpu_core_realize(DeviceState *dev, Error **errp)\n>          cs = CPU(obj);\n>          cpu = POWERPC_CPU(cs);\n>          cs->cpu_index = cc->core_id + i;\n> +        cpu->vcpu_id = (cc->core_id * spapr->vsmt / smp_threads) + i;\n\nAccording to what we currently have in the generic code, this should be:\n\n((cc->core_id + i) / smp_threads) * spapr->vsmt + ((cc->core_id + i) % smp_threads)\n\nbut since cc->core_id is a multiple of smp_threads and i < cc->nr_threads <= smp_threads,\nthen we can indeed simplify the computation as you did. :)\n\n\\o/\n\nReviewed-by: Greg Kurz <groug@kaod.org>\n\n> +        if (kvm_enabled() && !kvm_vcpu_id_is_valid(cpu->vcpu_id)) {\n> +            error_setg(&local_err, \"Can't create CPU with id %d in KVM\",\n> +                       cpu->vcpu_id);\n> +            error_append_hint(&local_err, \"Adjust the number of cpus to %d \"\n> +                              \"or try to raise the number of threads per core\\n\",\n> +                              cpu->vcpu_id * smp_threads / spapr->vsmt);\n> +            goto err;\n> +        }\n> +\n>  \n>          /* Set NUMA node for the threads belonged to core  */\n>          cpu->node_id = sc->node_id;\n> diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c\n> index 7f6a349e43..1f7286c893 100644\n> --- a/target/ppc/translate_init.c\n> +++ b/target/ppc/translate_init.c\n> @@ -9903,28 +9903,15 @@ static void ppc_cpu_realizefn(DeviceState *dev, Error **errp)\n>      PowerPCCPU *cpu = POWERPC_CPU(dev);\n>      PowerPCCPUClass *pcc = POWERPC_CPU_GET_CLASS(cpu);\n>      Error *local_err = NULL;\n> -#if !defined(CONFIG_USER_ONLY)\n> -    int max_smt = kvmppc_smt_threads();\n> -#endif\n>  \n>      cpu_exec_realizefn(cs, &local_err);\n>      if (local_err != NULL) {\n>          error_propagate(errp, local_err);\n>          return;\n>      }\n> -\n> -#if !defined(CONFIG_USER_ONLY)\n> -    cpu->vcpu_id = (cs->cpu_index / smp_threads) * max_smt\n> -        + (cs->cpu_index % smp_threads);\n> -\n> -    if (kvm_enabled() && !kvm_vcpu_id_is_valid(cpu->vcpu_id)) {\n> -        error_setg(errp, \"Can't create CPU with id %d in KVM\", cpu->vcpu_id);\n> -        error_append_hint(errp, \"Adjust the number of cpus to %d \"\n> -                          \"or try to raise the number of threads per core\\n\",\n> -                          cpu->vcpu_id * smp_threads / max_smt);\n> -        goto unrealize;\n> +    if (cpu->vcpu_id == UNASSIGNED_CPU_INDEX) {\n> +        cpu->vcpu_id = cs->cpu_index;\n>      }\n> -#endif\n>  \n>      if (tcg_enabled()) {\n>          if (ppc_fixup_cpu(cpu) != 0) {\n> @@ -10625,6 +10612,7 @@ static void ppc_cpu_initfn(Object *obj)\n>      CPUPPCState *env = &cpu->env;\n>  \n>      cs->env_ptr = env;\n> +    cpu->vcpu_id = UNASSIGNED_CPU_INDEX;\n>  \n>      env->msr_mask = pcc->msr_mask;\n>      env->mmu_model = pcc->mmu_model;","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xm5ST2vQqz9s7m\n\tfor <incoming@patchwork.ozlabs.org>;\n\tMon,  4 Sep 2017 20:19:53 +1000 (AEST)","from localhost ([::1]:50503 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dooTv-0001HC-I0\n\tfor incoming@patchwork.ozlabs.org; Mon, 04 Sep 2017 06:19:51 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:49960)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <groug@kaod.org>) id 1dooTL-0001DV-I3\n\tfor qemu-devel@nongnu.org; Mon, 04 Sep 2017 06:19:20 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <groug@kaod.org>) id 1dooTD-0006RP-Rg\n\tfor qemu-devel@nongnu.org; Mon, 04 Sep 2017 06:19:15 -0400","from 5.mo178.mail-out.ovh.net ([46.105.51.53]:52223)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <groug@kaod.org>) id 1dooTD-0006Qs-IK\n\tfor qemu-devel@nongnu.org; Mon, 04 Sep 2017 06:19:07 -0400","from player728.ha.ovh.net (b6.ovh.net [213.186.33.56])\n\tby mo178.mail-out.ovh.net (Postfix) with ESMTP id 1DE7E4C99B\n\tfor <qemu-devel@nongnu.org>; Mon,  4 Sep 2017 12:19:05 +0200 (CEST)","from bahia (gar31-1-82-66-74-139.fbx.proxad.net [82.66.74.139])\n\t(Authenticated sender: groug@kaod.org)\n\tby player728.ha.ovh.net (Postfix) with ESMTPSA id 3C271540079;\n\tMon,  4 Sep 2017 12:18:59 +0200 (CEST)"],"Date":"Mon, 4 Sep 2017 12:18:57 +0200","From":"Greg Kurz <groug@kaod.org>","To":"Sam Bobroff <sam.bobroff@au1.ibm.com>","Message-ID":"<20170904121857.1def843f@bahia>","In-Reply-To":"<747daf1a700a5340eeeedd9d98188bf89f75bb85.1504161284.git.sam.bobroff@au1.ibm.com>","References":"<747daf1a700a5340eeeedd9d98188bf89f75bb85.1504161284.git.sam.bobroff@au1.ibm.com>","X-Mailer":"Claws Mail 3.14.1 (GTK+ 2.24.31; x86_64-redhat-linux-gnu)","MIME-Version":"1.0","Content-Type":"multipart/signed; micalg=pgp-sha1;\n\tboundary=\"Sig_/UaqakGZhRkDdpzo7hlnMTNN\";\n\tprotocol=\"application/pgp-signature\"","X-Ovh-Tracer-Id":"2925087959400880553","X-VR-SPAMSTATE":"OK","X-VR-SPAMSCORE":"-100","X-VR-SPAMCAUSE":"gggruggvucftvghtrhhoucdtuddrfeelledrvdeigddvkecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfqggfjpdevjffgvefmvefgnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd","X-detected-operating-system":"by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]","X-Received-From":"46.105.51.53","Subject":"Re: [Qemu-devel] [Qemu-ppc] [PATCH 1/1] ppc: spapr: Move VCPU ID\n\tcalculation into sPAPR","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"qemu-ppc@nongnu.org, qemu-devel@nongnu.org, david@gibson.dropbear.id.au","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}},{"id":1762621,"web_url":"http://patchwork.ozlabs.org/comment/1762621/","msgid":"<20170904111212.GC2735@umbus.fritz.box>","list_archive_url":null,"date":"2017-09-04T11:12:12","subject":"Re: [Qemu-devel] [Qemu-ppc] [PATCH 1/1] ppc: spapr: Move VCPU ID\n\tcalculation into sPAPR","submitter":{"id":47,"url":"http://patchwork.ozlabs.org/api/people/47/","name":"David Gibson","email":"david@gibson.dropbear.id.au"},"content":"On Mon, Sep 04, 2017 at 12:18:57PM +0200, Greg Kurz wrote:\n> On Thu, 31 Aug 2017 16:38:46 +1000\n> Sam Bobroff <sam.bobroff@au1.ibm.com> wrote:\n> \n> > Move the calculation of a CPU's VCPU ID out of the generic PPC code\n> > (ppc_cpu_realizefn()) and into sPAPR specific code\n> > (spapr_cpu_core_realize()) where it belongs.\n> > \n> > Unfortunately, due to the way things are ordered, we still need to\n> > default the VCPU ID in ppc_cpu_realizfn() but at least doing that\n> > doesn't require any interaction with sPAPR.\n> > \n> > Signed-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com>\n> > ---\n> > This is follow up work arising from my work to clean up the way CPU VCPU IDs are\n> > handled on PowerPC. It had looked like it would be difficult to move the actual\n> > VCPU ID calculation out of generic code but it turned out to be OK.\n> > \n> > It's based on dgibson/ppc-for-2.11.\n> > \n> \n> According to what we currently have in the generic code, this should be:\n> \n> ((cc->core_id + i) / smp_threads) * spapr->vsmt + ((cc->core_id + i) % smp_threads)\n> \n> but since cc->core_id is a multiple of smp_threads and i < cc->nr_threads <= smp_threads,\n> then we can indeed simplify the computation as you did. :)\n\nRight, I suggested this simplication on just that basis.\n\nApplied to ppc-for-2.11.\n\n> \n> \\o/\n> \n> Reviewed-by: Greg Kurz <groug@kaod.org>\n> \n> > +        if (kvm_enabled() && !kvm_vcpu_id_is_valid(cpu->vcpu_id)) {\n> > +            error_setg(&local_err, \"Can't create CPU with id %d in KVM\",\n> > +                       cpu->vcpu_id);\n> > +            error_append_hint(&local_err, \"Adjust the number of cpus to %d \"\n> > +                              \"or try to raise the number of threads per core\\n\",\n> > +                              cpu->vcpu_id * smp_threads / spapr->vsmt);\n> > +            goto err;\n> > +        }\n> > +\n> >  \n> >          /* Set NUMA node for the threads belonged to core  */\n> >          cpu->node_id = sc->node_id;\n> > diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c\n> > index 7f6a349e43..1f7286c893 100644\n> > --- a/target/ppc/translate_init.c\n> > +++ b/target/ppc/translate_init.c\n> > @@ -9903,28 +9903,15 @@ static void ppc_cpu_realizefn(DeviceState *dev, Error **errp)\n> >      PowerPCCPU *cpu = POWERPC_CPU(dev);\n> >      PowerPCCPUClass *pcc = POWERPC_CPU_GET_CLASS(cpu);\n> >      Error *local_err = NULL;\n> > -#if !defined(CONFIG_USER_ONLY)\n> > -    int max_smt = kvmppc_smt_threads();\n> > -#endif\n> >  \n> >      cpu_exec_realizefn(cs, &local_err);\n> >      if (local_err != NULL) {\n> >          error_propagate(errp, local_err);\n> >          return;\n> >      }\n> > -\n> > -#if !defined(CONFIG_USER_ONLY)\n> > -    cpu->vcpu_id = (cs->cpu_index / smp_threads) * max_smt\n> > -        + (cs->cpu_index % smp_threads);\n> > -\n> > -    if (kvm_enabled() && !kvm_vcpu_id_is_valid(cpu->vcpu_id)) {\n> > -        error_setg(errp, \"Can't create CPU with id %d in KVM\", cpu->vcpu_id);\n> > -        error_append_hint(errp, \"Adjust the number of cpus to %d \"\n> > -                          \"or try to raise the number of threads per core\\n\",\n> > -                          cpu->vcpu_id * smp_threads / max_smt);\n> > -        goto unrealize;\n> > +    if (cpu->vcpu_id == UNASSIGNED_CPU_INDEX) {\n> > +        cpu->vcpu_id = cs->cpu_index;\n> >      }\n> > -#endif\n> >  \n> >      if (tcg_enabled()) {\n> >          if (ppc_fixup_cpu(cpu) != 0) {\n> > @@ -10625,6 +10612,7 @@ static void ppc_cpu_initfn(Object *obj)\n> >      CPUPPCState *env = &cpu->env;\n> >  \n> >      cs->env_ptr = env;\n> > +    cpu->vcpu_id = UNASSIGNED_CPU_INDEX;\n> >  \n> >      env->msr_mask = pcc->msr_mask;\n> >      env->mmu_model = pcc->mmu_model;\n>","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=gibson.dropbear.id.au\n\theader.i=@gibson.dropbear.id.au header.b=\"IMSsrRX0\"; \n\tdkim-atps=neutral"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xm98h5KyGz9sR9\n\tfor <incoming@patchwork.ozlabs.org>;\n\tMon,  4 Sep 2017 23:06:28 +1000 (AEST)","from localhost ([::1]:32957 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dor58-0003Ma-Jg\n\tfor incoming@patchwork.ozlabs.org; Mon, 04 Sep 2017 09:06:26 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:33975)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <dgibson@ozlabs.org>) id 1doqqD-0007az-6w\n\tfor qemu-devel@nongnu.org; Mon, 04 Sep 2017 08:51:09 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <dgibson@ozlabs.org>) id 1doqq6-0005kh-Q5\n\tfor qemu-devel@nongnu.org; Mon, 04 Sep 2017 08:51:00 -0400","from ozlabs.org ([103.22.144.67]:38297)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <dgibson@ozlabs.org>)\n\tid 1doqq6-0005ie-EK; Mon, 04 Sep 2017 08:50:54 -0400","by ozlabs.org (Postfix, from userid 1007)\n\tid 3xm8pg2MZVz9sNr; Mon,  4 Sep 2017 22:50:51 +1000 (AEST)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple;\n\td=gibson.dropbear.id.au; s=201602; t=1504529451;\n\tbh=fQFIQ5FyHsc8M1miMuc7wIvEd/wriN3tNjxuaSqZxl4=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=IMSsrRX01nYT8JGLIfTvNJ0BHzsbIHEa9rDB1RIAXrAAT+4dFLceQgKlCBOJwVCf5\n\tG8OmoF6kCL/HLGLDJM7zO8yd4fkKb4cVWYeqMvTtutMy4tza7wSC4kW6Qn226WIPuV\n\tb0SOf+kjrtzTOvLRysxGnADy5A2B63NvuGmce2Nc=","Date":"Mon, 4 Sep 2017 21:12:12 +1000","From":"David Gibson <david@gibson.dropbear.id.au>","To":"Greg Kurz <groug@kaod.org>","Message-ID":"<20170904111212.GC2735@umbus.fritz.box>","References":"<747daf1a700a5340eeeedd9d98188bf89f75bb85.1504161284.git.sam.bobroff@au1.ibm.com>\n\t<20170904121857.1def843f@bahia>","MIME-Version":"1.0","Content-Type":"multipart/signed; micalg=pgp-sha256;\n\tprotocol=\"application/pgp-signature\"; boundary=\"VywGB/WGlW4DM4P8\"","Content-Disposition":"inline","In-Reply-To":"<20170904121857.1def843f@bahia>","User-Agent":"Mutt/1.8.3 (2017-05-23)","X-detected-operating-system":"by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]","X-Received-From":"103.22.144.67","Subject":"Re: [Qemu-devel] [Qemu-ppc] [PATCH 1/1] ppc: spapr: Move VCPU ID\n\tcalculation into sPAPR","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"qemu-ppc@nongnu.org, qemu-devel@nongnu.org,\n\tSam Bobroff <sam.bobroff@au1.ibm.com>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}},{"id":1762896,"web_url":"http://patchwork.ozlabs.org/comment/1762896/","msgid":"<20170904233147.g4froekilptpud5h@tungsten.ozlabs.ibm.com>","list_archive_url":null,"date":"2017-09-04T23:31:47","subject":"Re: [Qemu-devel] [Qemu-ppc] [PATCH 1/1] ppc: spapr: Move VCPU ID\n\tcalculation into sPAPR","submitter":{"id":64137,"url":"http://patchwork.ozlabs.org/api/people/64137/","name":"Sam Bobroff","email":"sam.bobroff@au1.ibm.com"},"content":"On Mon, Sep 04, 2017 at 12:18:57PM +0200, Greg Kurz wrote:\n> On Thu, 31 Aug 2017 16:38:46 +1000\n> Sam Bobroff <sam.bobroff@au1.ibm.com> wrote:\n> \n> > Move the calculation of a CPU's VCPU ID out of the generic PPC code\n> > (ppc_cpu_realizefn()) and into sPAPR specific code\n> > (spapr_cpu_core_realize()) where it belongs.\n> > \n> > Unfortunately, due to the way things are ordered, we still need to\n> > default the VCPU ID in ppc_cpu_realizfn() but at least doing that\n> > doesn't require any interaction with sPAPR.\n> > \n> > Signed-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com>\n> > ---\n> > This is follow up work arising from my work to clean up the way CPU VCPU IDs are\n> > handled on PowerPC. It had looked like it would be difficult to move the actual\n> > VCPU ID calculation out of generic code but it turned out to be OK.\n> > \n> > It's based on dgibson/ppc-for-2.11.\n> > \n> > Cheers,\n> > Sam.\n> > \n> >  hw/ppc/spapr_cpu_core.c     | 11 +++++++++++\n> >  target/ppc/translate_init.c | 18 +++---------------\n> >  2 files changed, 14 insertions(+), 15 deletions(-)\n> > \n> > diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c\n> > index 5e319d9bbb..84dcc6e264 100644\n> > --- a/hw/ppc/spapr_cpu_core.c\n> > +++ b/hw/ppc/spapr_cpu_core.c\n> > @@ -211,6 +211,7 @@ error:\n> >  \n> >  static void spapr_cpu_core_realize(DeviceState *dev, Error **errp)\n> >  {\n> > +    sPAPRMachineState *spapr = SPAPR_MACHINE(qdev_get_machine());\n> >      sPAPRCPUCore *sc = SPAPR_CPU_CORE(OBJECT(dev));\n> >      sPAPRCPUCoreClass *scc = SPAPR_CPU_CORE_GET_CLASS(OBJECT(dev));\n> >      CPUCore *cc = CPU_CORE(OBJECT(dev));\n> > @@ -237,6 +238,16 @@ static void spapr_cpu_core_realize(DeviceState *dev, Error **errp)\n> >          cs = CPU(obj);\n> >          cpu = POWERPC_CPU(cs);\n> >          cs->cpu_index = cc->core_id + i;\n> > +        cpu->vcpu_id = (cc->core_id * spapr->vsmt / smp_threads) + i;\n> \n> According to what we currently have in the generic code, this should be:\n> \n> ((cc->core_id + i) / smp_threads) * spapr->vsmt + ((cc->core_id + i) % smp_threads)\n> \n> but since cc->core_id is a multiple of smp_threads and i < cc->nr_threads <= smp_threads,\n> then we can indeed simplify the computation as you did. :)\n> \n> \\o/\n> \n> Reviewed-by: Greg Kurz <groug@kaod.org>\n\nThanks for the review, and the nice simplification was David's idea :-)\n\n> > +        if (kvm_enabled() && !kvm_vcpu_id_is_valid(cpu->vcpu_id)) {\n> > +            error_setg(&local_err, \"Can't create CPU with id %d in KVM\",\n> > +                       cpu->vcpu_id);\n> > +            error_append_hint(&local_err, \"Adjust the number of cpus to %d \"\n> > +                              \"or try to raise the number of threads per core\\n\",\n> > +                              cpu->vcpu_id * smp_threads / spapr->vsmt);\n> > +            goto err;\n> > +        }\n> > +\n> >  \n> >          /* Set NUMA node for the threads belonged to core  */\n> >          cpu->node_id = sc->node_id;\n> > diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c\n> > index 7f6a349e43..1f7286c893 100644\n> > --- a/target/ppc/translate_init.c\n> > +++ b/target/ppc/translate_init.c\n> > @@ -9903,28 +9903,15 @@ static void ppc_cpu_realizefn(DeviceState *dev, Error **errp)\n> >      PowerPCCPU *cpu = POWERPC_CPU(dev);\n> >      PowerPCCPUClass *pcc = POWERPC_CPU_GET_CLASS(cpu);\n> >      Error *local_err = NULL;\n> > -#if !defined(CONFIG_USER_ONLY)\n> > -    int max_smt = kvmppc_smt_threads();\n> > -#endif\n> >  \n> >      cpu_exec_realizefn(cs, &local_err);\n> >      if (local_err != NULL) {\n> >          error_propagate(errp, local_err);\n> >          return;\n> >      }\n> > -\n> > -#if !defined(CONFIG_USER_ONLY)\n> > -    cpu->vcpu_id = (cs->cpu_index / smp_threads) * max_smt\n> > -        + (cs->cpu_index % smp_threads);\n> > -\n> > -    if (kvm_enabled() && !kvm_vcpu_id_is_valid(cpu->vcpu_id)) {\n> > -        error_setg(errp, \"Can't create CPU with id %d in KVM\", cpu->vcpu_id);\n> > -        error_append_hint(errp, \"Adjust the number of cpus to %d \"\n> > -                          \"or try to raise the number of threads per core\\n\",\n> > -                          cpu->vcpu_id * smp_threads / max_smt);\n> > -        goto unrealize;\n> > +    if (cpu->vcpu_id == UNASSIGNED_CPU_INDEX) {\n> > +        cpu->vcpu_id = cs->cpu_index;\n> >      }\n> > -#endif\n> >  \n> >      if (tcg_enabled()) {\n> >          if (ppc_fixup_cpu(cpu) != 0) {\n> > @@ -10625,6 +10612,7 @@ static void ppc_cpu_initfn(Object *obj)\n> >      CPUPPCState *env = &cpu->env;\n> >  \n> >      cs->env_ptr = env;\n> > +    cpu->vcpu_id = UNASSIGNED_CPU_INDEX;\n> >  \n> >      env->msr_mask = pcc->msr_mask;\n> >      env->mmu_model = pcc->mmu_model;\n>","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xmR3f5QMQz9sP3\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue,  5 Sep 2017 09:33:02 +1000 (AEST)","from localhost ([::1]:56063 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dp0rU-0003h5-Ol\n\tfor incoming@patchwork.ozlabs.org; Mon, 04 Sep 2017 19:33:00 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:52025)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <sam.bobroff@au1.ibm.com>) id 1dp0qX-0003QB-M1\n\tfor qemu-devel@nongnu.org; Mon, 04 Sep 2017 19:32:06 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <sam.bobroff@au1.ibm.com>) id 1dp0qS-0006dJ-Pa\n\tfor qemu-devel@nongnu.org; Mon, 04 Sep 2017 19:32:01 -0400","from mx0b-001b2d01.pphosted.com ([148.163.158.5]:43313\n\thelo=mx0a-001b2d01.pphosted.com)\n\tby eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <sam.bobroff@au1.ibm.com>)\n\tid 1dp0qS-0006cf-IX\n\tfor qemu-devel@nongnu.org; Mon, 04 Sep 2017 19:31:56 -0400","from pps.filterd (m0098417.ppops.net [127.0.0.1])\n\tby mx0a-001b2d01.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id\n\tv84NT9n9021674\n\tfor <qemu-devel@nongnu.org>; Mon, 4 Sep 2017 19:31:55 -0400","from e23smtp06.au.ibm.com (e23smtp06.au.ibm.com [202.81.31.148])\n\tby mx0a-001b2d01.pphosted.com with ESMTP id 2cs8rt3v1j-1\n\t(version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT)\n\tfor <qemu-devel@nongnu.org>; Mon, 04 Sep 2017 19:31:55 -0400","from localhost\n\tby e23smtp06.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use\n\tOnly! Violators will be prosecuted\n\tfor <qemu-devel@nongnu.org> from <sam.bobroff@au1.ibm.com>;\n\tTue, 5 Sep 2017 09:31:52 +1000","from d23relay06.au.ibm.com (202.81.31.225)\n\tby e23smtp06.au.ibm.com (202.81.31.212) with IBM ESMTP SMTP Gateway:\n\tAuthorized Use Only! Violators will be prosecuted; \n\tTue, 5 Sep 2017 09:31:50 +1000","from d23av02.au.ibm.com (d23av02.au.ibm.com [9.190.235.138])\n\tby d23relay06.au.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id\n\tv84NVnJN37879902; Tue, 5 Sep 2017 09:31:49 +1000","from d23av02.au.ibm.com (localhost [127.0.0.1])\n\tby d23av02.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id\n\tv84NVeY3002705; Tue, 5 Sep 2017 09:31:40 +1000","from ozlabs.au.ibm.com (ozlabs.au.ibm.com [9.192.253.14])\n\tby d23av02.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id\n\tv84NVeLI002698; Tue, 5 Sep 2017 09:31:40 +1000","from tungsten.ozlabs.ibm.com (haven.au.ibm.com [9.192.254.114])\n\t(using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.au.ibm.com (Postfix) with ESMTPSA id CD41EA012A;\n\tTue,  5 Sep 2017 09:31:48 +1000 (AEST)"],"Date":"Tue, 5 Sep 2017 09:31:47 +1000","From":"Sam Bobroff <sam.bobroff@au1.ibm.com>","To":"Greg Kurz <groug@kaod.org>","References":"<747daf1a700a5340eeeedd9d98188bf89f75bb85.1504161284.git.sam.bobroff@au1.ibm.com>\n\t<20170904101945.A6B6EAC041@b01ledav006.gho.pok.ibm.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20170904101945.A6B6EAC041@b01ledav006.gho.pok.ibm.com>","User-Agent":"NeoMutt/20170113 (1.7.2)","X-TM-AS-MML":"disable","x-cbid":"17090423-0040-0000-0000-000003530B0C","X-IBM-AV-DETECTION":"SAVI=unused REMOTE=unused XFE=unused","x-cbparentid":"17090423-0041-0000-0000-00000CD11C92","Message-Id":"<20170904233147.g4froekilptpud5h@tungsten.ozlabs.ibm.com>","X-Proofpoint-Virus-Version":"vendor=fsecure engine=2.50.10432:, ,\n\tdefinitions=2017-09-04_13:, , signatures=0","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n\tspamscore=0 suspectscore=0\n\tmalwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam\n\tadjust=0 reason=mlx scancount=1 engine=8.0.1-1707230000\n\tdefinitions=main-1709040372","X-detected-operating-system":"by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy]","X-Received-From":"148.163.158.5","Subject":"Re: [Qemu-devel] [Qemu-ppc] [PATCH 1/1] ppc: spapr: Move VCPU ID\n\tcalculation into sPAPR","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"qemu-ppc@nongnu.org, qemu-devel@nongnu.org, david@gibson.dropbear.id.au","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}},{"id":1763425,"web_url":"http://patchwork.ozlabs.org/comment/1763425/","msgid":"<20170905165859.550d1600@bahia>","list_archive_url":null,"date":"2017-09-05T14:58:59","subject":"Re: [Qemu-devel] [Qemu-ppc] [PATCH 1/1] ppc: spapr: Move VCPU ID\n\tcalculation into sPAPR","submitter":{"id":69178,"url":"http://patchwork.ozlabs.org/api/people/69178/","name":"Greg Kurz","email":"groug@kaod.org"},"content":"On Tue, 5 Sep 2017 09:31:47 +1000\nSam Bobroff <sam.bobroff@au1.ibm.com> wrote:\n\n> On Mon, Sep 04, 2017 at 12:18:57PM +0200, Greg Kurz wrote:\n> > On Thu, 31 Aug 2017 16:38:46 +1000\n> > Sam Bobroff <sam.bobroff@au1.ibm.com> wrote:\n> >   \n> > > Move the calculation of a CPU's VCPU ID out of the generic PPC code\n> > > (ppc_cpu_realizefn()) and into sPAPR specific code\n> > > (spapr_cpu_core_realize()) where it belongs.\n> > > \n> > > Unfortunately, due to the way things are ordered, we still need to\n> > > default the VCPU ID in ppc_cpu_realizfn() but at least doing that\n> > > doesn't require any interaction with sPAPR.\n> > > \n> > > Signed-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com>\n> > > ---\n> > > This is follow up work arising from my work to clean up the way CPU VCPU IDs are\n> > > handled on PowerPC. It had looked like it would be difficult to move the actual\n> > > VCPU ID calculation out of generic code but it turned out to be OK.\n> > > \n> > > It's based on dgibson/ppc-for-2.11.\n> > > \n> > > Cheers,\n> > > Sam.\n> > > \n> > >  hw/ppc/spapr_cpu_core.c     | 11 +++++++++++\n> > >  target/ppc/translate_init.c | 18 +++---------------\n> > >  2 files changed, 14 insertions(+), 15 deletions(-)\n> > > \n> > > diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c\n> > > index 5e319d9bbb..84dcc6e264 100644\n> > > --- a/hw/ppc/spapr_cpu_core.c\n> > > +++ b/hw/ppc/spapr_cpu_core.c\n> > > @@ -211,6 +211,7 @@ error:\n> > >  \n> > >  static void spapr_cpu_core_realize(DeviceState *dev, Error **errp)\n> > >  {\n> > > +    sPAPRMachineState *spapr = SPAPR_MACHINE(qdev_get_machine());\n> > >      sPAPRCPUCore *sc = SPAPR_CPU_CORE(OBJECT(dev));\n> > >      sPAPRCPUCoreClass *scc = SPAPR_CPU_CORE_GET_CLASS(OBJECT(dev));\n> > >      CPUCore *cc = CPU_CORE(OBJECT(dev));\n> > > @@ -237,6 +238,16 @@ static void spapr_cpu_core_realize(DeviceState *dev, Error **errp)\n> > >          cs = CPU(obj);\n> > >          cpu = POWERPC_CPU(cs);\n> > >          cs->cpu_index = cc->core_id + i;\n> > > +        cpu->vcpu_id = (cc->core_id * spapr->vsmt / smp_threads) + i;  \n> > \n> > According to what we currently have in the generic code, this should be:\n> > \n> > ((cc->core_id + i) / smp_threads) * spapr->vsmt + ((cc->core_id + i) % smp_threads)\n> > \n> > but since cc->core_id is a multiple of smp_threads and i < cc->nr_threads <= smp_threads,\n> > then we can indeed simplify the computation as you did. :)\n> > \n> > \\o/\n> > \n> > Reviewed-by: Greg Kurz <groug@kaod.org>  \n> \n> Thanks for the review, and the nice simplification was David's idea :-)\n> \n\nYeah, David said so earlier... I probably missed the mail with the\nsuggestion while I was on vacation. :)\n\n> > > +        if (kvm_enabled() && !kvm_vcpu_id_is_valid(cpu->vcpu_id)) {\n> > > +            error_setg(&local_err, \"Can't create CPU with id %d in KVM\",\n> > > +                       cpu->vcpu_id);\n> > > +            error_append_hint(&local_err, \"Adjust the number of cpus to %d \"\n> > > +                              \"or try to raise the number of threads per core\\n\",\n> > > +                              cpu->vcpu_id * smp_threads / spapr->vsmt);\n> > > +            goto err;\n> > > +        }\n> > > +\n> > >  \n> > >          /* Set NUMA node for the threads belonged to core  */\n> > >          cpu->node_id = sc->node_id;\n> > > diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c\n> > > index 7f6a349e43..1f7286c893 100644\n> > > --- a/target/ppc/translate_init.c\n> > > +++ b/target/ppc/translate_init.c\n> > > @@ -9903,28 +9903,15 @@ static void ppc_cpu_realizefn(DeviceState *dev, Error **errp)\n> > >      PowerPCCPU *cpu = POWERPC_CPU(dev);\n> > >      PowerPCCPUClass *pcc = POWERPC_CPU_GET_CLASS(cpu);\n> > >      Error *local_err = NULL;\n> > > -#if !defined(CONFIG_USER_ONLY)\n> > > -    int max_smt = kvmppc_smt_threads();\n> > > -#endif\n> > >  \n> > >      cpu_exec_realizefn(cs, &local_err);\n> > >      if (local_err != NULL) {\n> > >          error_propagate(errp, local_err);\n> > >          return;\n> > >      }\n> > > -\n> > > -#if !defined(CONFIG_USER_ONLY)\n> > > -    cpu->vcpu_id = (cs->cpu_index / smp_threads) * max_smt\n> > > -        + (cs->cpu_index % smp_threads);\n> > > -\n> > > -    if (kvm_enabled() && !kvm_vcpu_id_is_valid(cpu->vcpu_id)) {\n> > > -        error_setg(errp, \"Can't create CPU with id %d in KVM\", cpu->vcpu_id);\n> > > -        error_append_hint(errp, \"Adjust the number of cpus to %d \"\n> > > -                          \"or try to raise the number of threads per core\\n\",\n> > > -                          cpu->vcpu_id * smp_threads / max_smt);\n> > > -        goto unrealize;\n> > > +    if (cpu->vcpu_id == UNASSIGNED_CPU_INDEX) {\n> > > +        cpu->vcpu_id = cs->cpu_index;\n> > >      }\n> > > -#endif\n> > >  \n> > >      if (tcg_enabled()) {\n> > >          if (ppc_fixup_cpu(cpu) != 0) {\n> > > @@ -10625,6 +10612,7 @@ static void ppc_cpu_initfn(Object *obj)\n> > >      CPUPPCState *env = &cpu->env;\n> > >  \n> > >      cs->env_ptr = env;\n> > > +    cpu->vcpu_id = UNASSIGNED_CPU_INDEX;\n> > >  \n> > >      env->msr_mask = pcc->msr_mask;\n> > >      env->mmu_model = pcc->mmu_model;  \n> >   \n> \n>","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xmqd45Ph5z9t2v\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed,  6 Sep 2017 00:59:51 +1000 (AEST)","from localhost ([::1]:59491 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dpFKP-0007me-5d\n\tfor incoming@patchwork.ozlabs.org; Tue, 05 Sep 2017 10:59:49 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:33800)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <groug@kaod.org>) id 1dpFJo-0007jJ-5k\n\tfor qemu-devel@nongnu.org; Tue, 05 Sep 2017 10:59:17 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <groug@kaod.org>) id 1dpFJj-0007En-94\n\tfor qemu-devel@nongnu.org; Tue, 05 Sep 2017 10:59:12 -0400","from 3.mo2.mail-out.ovh.net ([46.105.58.226]:58490)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <groug@kaod.org>) id 1dpFJi-0007Dq-Vv\n\tfor qemu-devel@nongnu.org; Tue, 05 Sep 2017 10:59:07 -0400","from player157.ha.ovh.net (b9.ovh.net [213.186.33.59])\n\tby mo2.mail-out.ovh.net (Postfix) with ESMTP id 1EC09AAD92\n\tfor <qemu-devel@nongnu.org>; Tue,  5 Sep 2017 16:59:05 +0200 (CEST)","from bahia (deibp9eh1--blueice1n7.emea.ibm.com [195.212.29.161])\n\t(Authenticated sender: groug@kaod.org)\n\tby player157.ha.ovh.net (Postfix) with ESMTPSA id CD1965000AB;\n\tTue,  5 Sep 2017 16:59:00 +0200 (CEST)"],"Date":"Tue, 5 Sep 2017 16:58:59 +0200","From":"Greg Kurz <groug@kaod.org>","To":"Sam Bobroff <sam.bobroff@au1.ibm.com>","Message-ID":"<20170905165859.550d1600@bahia>","In-Reply-To":"<20170904233147.g4froekilptpud5h@tungsten.ozlabs.ibm.com>","References":"<747daf1a700a5340eeeedd9d98188bf89f75bb85.1504161284.git.sam.bobroff@au1.ibm.com>\n\t<20170904101945.A6B6EAC041@b01ledav006.gho.pok.ibm.com>\n\t<20170904233147.g4froekilptpud5h@tungsten.ozlabs.ibm.com>","X-Mailer":"Claws Mail 3.14.1 (GTK+ 2.24.31; x86_64-redhat-linux-gnu)","MIME-Version":"1.0","Content-Type":"multipart/signed; micalg=pgp-sha1;\n\tboundary=\"Sig_/hbtp5EvnD3GCyP_KrMo/WzM\";\n\tprotocol=\"application/pgp-signature\"","X-Ovh-Tracer-Id":"13526561481677183401","X-VR-SPAMSTATE":"OK","X-VR-SPAMSCORE":"-100","X-VR-SPAMCAUSE":"gggruggvucftvghtrhhoucdtuddrfeelledrvdekgdejkecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfqggfjpdevjffgvefmvefgnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd","X-detected-operating-system":"by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]","X-Received-From":"46.105.58.226","Subject":"Re: [Qemu-devel] [Qemu-ppc] [PATCH 1/1] ppc: spapr: Move VCPU ID\n\tcalculation into sPAPR","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"qemu-ppc@nongnu.org, qemu-devel@nongnu.org, david@gibson.dropbear.id.au","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}}]