From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48802) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VDifa-0005J1-FL for qemu-devel@nongnu.org; Sun, 25 Aug 2013 18:20:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VDifT-0002xb-4L for qemu-devel@nongnu.org; Sun, 25 Aug 2013 18:20:26 -0400 Message-ID: <521A831E.8010605@suse.de> Date: Mon, 26 Aug 2013 00:20:14 +0200 From: =?ISO-8859-1?Q?Andreas_F=E4rber?= MIME-Version: 1.0 References: <1377235210-27093-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com> <1377235210-27093-5-git-send-email-aneesh.kumar@linux.vnet.ibm.com> <114F5D3A-5A41-4BE2-A8D2-0A105C6FDD0E@suse.de> In-Reply-To: <114F5D3A-5A41-4BE2-A8D2-0A105C6FDD0E@suse.de> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH -V3 4/4] target-ppc: Use #define for max slb entries List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alexander Graf Cc: Paul Mackerras , qemu-ppc , "Aneesh Kumar K.V" , qemu-devel Am 25.08.2013 20:33, schrieb Alexander Graf: >=20 > On 23.08.2013, at 06:20, Aneesh Kumar K.V wrote: >=20 >> From: "Aneesh Kumar K.V" >> >> Instead of opencoding 64 use MAX_SLB_ENTRIES. We don't update the kern= el >> header here. >=20 > Ah, here you're fixing up the hardcoded 64 :). Could you please check w= hether ARRAY_SIZE() works in all these as well? If not, this patch is goo= d. >=20 >=20 > Alex >=20 >> >> Signed-off-by: Aneesh Kumar K.V >> --- >> target-ppc/cpu.h | 3 ++- >> target-ppc/kvm.c | 6 +++--- >> target-ppc/machine.c | 2 +- >> 3 files changed, 6 insertions(+), 5 deletions(-) >> >> diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h >> index 711db08..b06818e 100644 >> --- a/target-ppc/cpu.h >> +++ b/target-ppc/cpu.h >> @@ -405,6 +405,7 @@ struct ppc_slb_t { >> uint64_t vsid; >> }; >> >> +#define MAX_SLB_ENTRIES 64 >> #define SEGMENT_SHIFT_256M 28 >> #define SEGMENT_MASK_256M (~((1ULL << SEGMENT_SHIFT_256M) - 1)) >> >> @@ -947,7 +948,7 @@ struct CPUPPCState { >> #if !defined(CONFIG_USER_ONLY) >> #if defined(TARGET_PPC64) >> /* PowerPC 64 SLB area */ >> - ppc_slb_t slb[64]; >> + ppc_slb_t slb[MAX_SLB_ENTRIES]; >> int32_t slb_nr; >> #endif >> /* segment registers */ >> diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c >> index bcc6544..fce8835 100644 >> --- a/target-ppc/kvm.c >> +++ b/target-ppc/kvm.c >> @@ -818,7 +818,7 @@ int kvm_arch_put_registers(CPUState *cs, int level= ) >> >> /* Sync SLB */ >> #ifdef TARGET_PPC64 >> - for (i =3D 0; i < 64; i++) { >> + for (i =3D 0; i < MAX_SLB_ENTRIES; i++) { >> sregs.u.s.ppc64.slb[i].slbe =3D env->slb[i].esid; >> sregs.u.s.ppc64.slb[i].slbv =3D env->slb[i].vsid; >> } >> @@ -1042,8 +1042,8 @@ int kvm_arch_get_registers(CPUState *cs) >> * the env->slb array first so that we mark all entries invalid a= nd >> * update with only valid SLB entries. >> */ >> - memset(env->slb, 0, 64 * sizeof(ppc_slb_t)); >> - for (i =3D 0; i < 64; i++) { >> + memset(env->slb, 0, MAX_SLB_ENTRIES * sizeof(ppc_slb_t)); >> + for (i =3D 0; i < MAX_SLB_ENTRIES; i++) { >> target_ulong rb =3D sregs.u.s.ppc64.slb[i].slbe; >> target_ulong rs =3D sregs.u.s.ppc64.slb[i].slbv; >> /* >> diff --git a/target-ppc/machine.c b/target-ppc/machine.c >> index 12e1512..12c174f 100644 >> --- a/target-ppc/machine.c >> +++ b/target-ppc/machine.c >> @@ -312,7 +312,7 @@ static const VMStateDescription vmstate_slb =3D { >> .minimum_version_id_old =3D 1, >> .fields =3D (VMStateField []) { >> VMSTATE_INT32_EQUAL(env.slb_nr, PowerPCCPU), >> - VMSTATE_SLB_ARRAY(env.slb, PowerPCCPU, 64), >> + VMSTATE_SLB_ARRAY(env.slb, PowerPCCPU, MAX_SLB_ENTRIES), IMO use of ARRAY_SIZE() makes it too easy to break VMState here. Don't know how likely it is to be touched in the future, of course. Andreas >> VMSTATE_END_OF_LIST() >> } >> }; >> --=20 >> 1.8.1.2 >> >=20 >=20 --=20 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=FCrnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imend=F6rffer; HRB 16746 AG N=FCrnbe= rg