[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [Qemu-devel] [PATCH -V3 4/4] target-ppc: Use #define for
From: |
Andreas Färber |
Subject: |
Re: [Qemu-ppc] [Qemu-devel] [PATCH -V3 4/4] target-ppc: Use #define for max slb entries |
Date: |
Mon, 26 Aug 2013 00:20:14 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130801 Thunderbird/17.0.8 |
Am 25.08.2013 20:33, schrieb Alexander Graf:
>
> On 23.08.2013, at 06:20, Aneesh Kumar K.V wrote:
>
>> From: "Aneesh Kumar K.V" <address@hidden>
>>
>> Instead of opencoding 64 use MAX_SLB_ENTRIES. We don't update the kernel
>> header here.
>
> Ah, here you're fixing up the hardcoded 64 :). Could you please check whether
> ARRAY_SIZE() works in all these as well? If not, this patch is good.
>
>
> Alex
>
>>
>> Signed-off-by: Aneesh Kumar K.V <address@hidden>
>> ---
>> 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 = 0; i < 64; i++) {
>> + for (i = 0; i < MAX_SLB_ENTRIES; i++) {
>> sregs.u.s.ppc64.slb[i].slbe = env->slb[i].esid;
>> sregs.u.s.ppc64.slb[i].slbv = 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 and
>> * update with only valid SLB entries.
>> */
>> - memset(env->slb, 0, 64 * sizeof(ppc_slb_t));
>> - for (i = 0; i < 64; i++) {
>> + memset(env->slb, 0, MAX_SLB_ENTRIES * sizeof(ppc_slb_t));
>> + for (i = 0; i < MAX_SLB_ENTRIES; i++) {
>> target_ulong rb = sregs.u.s.ppc64.slb[i].slbe;
>> target_ulong rs = 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 = {
>> .minimum_version_id_old = 1,
>> .fields = (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()
>> }
>> };
>> --
>> 1.8.1.2
>>
>
>
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
- Re: [Qemu-ppc] [PATCH -V3 2/4] target-ppc: Fix page table lookup with kvm enabled, (continued)
[Qemu-ppc] [PATCH -V3 1/4] target-ppc: Update slb array with correct index values., Aneesh Kumar K.V, 2013/08/23
[Qemu-ppc] [PATCH -V3 3/4] target-ppc: Check for error on address translation in memsave command, Aneesh Kumar K.V, 2013/08/23
[Qemu-ppc] [PATCH -V3 4/4] target-ppc: Use #define for max slb entries, Aneesh Kumar K.V, 2013/08/23