From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
To: agraf@suse.de, paulus@samba.org
Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] target-ppc: Fix htab_mask calculation
Date: Fri, 11 Oct 2013 18:14:21 +0530 [thread overview]
Message-ID: <87txgom0yi.fsf@linux.vnet.ibm.com> (raw)
In-Reply-To: <1381494908-25933-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com>
"Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> writes:
> From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
>
> Correctly update the htab_mask using the return value of
> KVM_PPC_ALLOCATE_HTAB ioctl. Also we don't update sdr1
> on GET_SREGS for HV. So don't update htab_mask if sdr1
> is found to be zero. Fix the pte index calculation to be
> same as that found in the kernel
>
> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
> ---
> hw/ppc/spapr.c | 3 ++-
> target-ppc/mmu-hash64.c | 2 +-
> target-ppc/mmu_helper.c | 4 +++-
> 3 files changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index 4a23b6a..4ce069b 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -717,7 +717,8 @@ static void spapr_cpu_reset(void *opaque)
>
> env->external_htab = (uint8_t *)spapr->htab;
> env->htab_base = -1;
> - env->htab_mask = HTAB_SIZE(spapr) - 1;
> + /* 128 (2**7) bytes in each HPTEG */
> + env->htab_mask = (1ULL << ((spapr)->htab_shift - 7)) - 1;
> env->spr[SPR_SDR1] = (target_ulong)(uintptr_t)spapr->htab |
> (spapr->htab_shift - 18);
> }
> diff --git a/target-ppc/mmu-hash64.c b/target-ppc/mmu-hash64.c
> index aeb4593..0deeae6 100644
> --- a/target-ppc/mmu-hash64.c
> +++ b/target-ppc/mmu-hash64.c
> @@ -347,7 +347,7 @@ static hwaddr ppc_hash64_pteg_search(CPUPPCState *env, hwaddr hash,
> unsigned long pte_index;
> struct ppc_hash64_hpte_token *token;
>
> - pte_index = (hash * HPTES_PER_GROUP) & env->htab_mask;
> + pte_index = (hash & env->htab_mask) * HPTES_PER_GROUP;
> token = ppc_hash64_start_access(ppc_env_get_cpu(env), pte_index);
> if (!token) {
> return -1;
> diff --git a/target-ppc/mmu_helper.c b/target-ppc/mmu_helper.c
> index 04a840b..0322304 100644
> --- a/target-ppc/mmu_helper.c
> +++ b/target-ppc/mmu_helper.c
> @@ -2025,7 +2025,9 @@ void ppc_store_sdr1(CPUPPCState *env, target_ulong value)
> " stored in SDR1\n", htabsize);
> htabsize = 28;
> }
> - env->htab_mask = (1ULL << (htabsize + 18)) - 1;
> + if (htabsize) {
> + env->htab_mask = (1ULL << (htabsize + 18)) - 1;
This should also be ?
env->htab_mask = (1ULL << (htabsize + 18 - 7)) - 1;
> + }
> env->htab_base = value & SDR_64_HTABORG;
> } else
> #endif /* defined(TARGET_PPC64) */
-aneesh
prev parent reply other threads:[~2013-10-11 12:45 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-11 12:35 [Qemu-devel] [PATCH] target-ppc: Fix htab_mask calculation Aneesh Kumar K.V
2013-10-11 12:44 ` Aneesh Kumar K.V [this message]
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=87txgom0yi.fsf@linux.vnet.ibm.com \
--to=aneesh.kumar@linux.vnet.ibm.com \
--cc=agraf@suse.de \
--cc=paulus@samba.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.