From: Sergey Fedorov <sergey.fedorov@linaro.org>
To: Peter Maydell <peter.maydell@linaro.org>,
qemu-arm@nongnu.org, qemu-devel@nongnu.org
Cc: Pranith Kumar <bobby.prani+qemu@gmail.com>, patches@linaro.org
Subject: Re: [Qemu-devel] [PATCH] target-arm: Fix reset and migration of TTBCR(S)
Date: Thu, 9 Jun 2016 19:09:54 +0300 [thread overview]
Message-ID: <575994D2.3010107@linaro.org> (raw)
In-Reply-To: <1465488181-31977-1-git-send-email-peter.maydell@linaro.org>
On 09/06/16 19:03, Peter Maydell wrote:
> Commit 6459b94c26dd666badb3 broke reset and migration of the AArch32
> TTBCR(S) register if the guest used non-LPAE page tables. This is
> because the AArch32 TTBCR register definition is marked as ARM_CP_ALIAS,
> meaning that the AArch64 variant has to handle migration and reset.
> Although AArch64 TCR_EL3 doesn't need to care about the mask and
> base_mask fields, AArch32 may do so, and so we must use the special
> TTBCR reset and raw write functions to ensure they are set correctly.
>
> This doesn't affect TCR_EL2, because the AArch32 equivalent of that
> is HTCR, which never uses the non-LPAE page table variant.
>
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> Reported-by: Pranith Kumar <bobby.prani+qemu@gmail.com>
Reviewed-by: Sergey Fedorov <sergey.fedorov@linaro.org>
> ---
> target-arm/helper.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/target-arm/helper.c b/target-arm/helper.c
> index 862e780..c9730d6 100644
> --- a/target-arm/helper.c
> +++ b/target-arm/helper.c
> @@ -3765,8 +3765,11 @@ static const ARMCPRegInfo el3_cp_reginfo[] = {
> .opc0 = 3, .opc1 = 6, .crn = 2, .crm = 0, .opc2 = 2,
> .access = PL3_RW,
> /* no .writefn needed as this can't cause an ASID change;
> - * no .raw_writefn or .resetfn needed as we never use mask/base_mask
> + * we must provide a .raw_writefn and .resetfn because we handle
> + * reset and migration for the AArch32 TTBCR(S), which might be
> + * using mask and base_mask.
> */
> + .resetfn = vmsa_ttbcr_reset, .raw_writefn = vmsa_ttbcr_raw_write,
> .fieldoffset = offsetof(CPUARMState, cp15.tcr_el[3]) },
> { .name = "ELR_EL3", .state = ARM_CP_STATE_AA64,
> .type = ARM_CP_ALIAS,
WARNING: multiple messages have this Message-ID (diff)
From: Sergey Fedorov <sergey.fedorov@linaro.org>
To: Peter Maydell <peter.maydell@linaro.org>,
qemu-arm@nongnu.org, qemu-devel@nongnu.org
Cc: patches@linaro.org, Pranith Kumar <bobby.prani+qemu@gmail.com>
Subject: Re: [Qemu-devel] [PATCH] target-arm: Fix reset and migration of TTBCR(S)
Date: Thu, 9 Jun 2016 19:09:54 +0300 [thread overview]
Message-ID: <575994D2.3010107@linaro.org> (raw)
In-Reply-To: <1465488181-31977-1-git-send-email-peter.maydell@linaro.org>
On 09/06/16 19:03, Peter Maydell wrote:
> Commit 6459b94c26dd666badb3 broke reset and migration of the AArch32
> TTBCR(S) register if the guest used non-LPAE page tables. This is
> because the AArch32 TTBCR register definition is marked as ARM_CP_ALIAS,
> meaning that the AArch64 variant has to handle migration and reset.
> Although AArch64 TCR_EL3 doesn't need to care about the mask and
> base_mask fields, AArch32 may do so, and so we must use the special
> TTBCR reset and raw write functions to ensure they are set correctly.
>
> This doesn't affect TCR_EL2, because the AArch32 equivalent of that
> is HTCR, which never uses the non-LPAE page table variant.
>
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> Reported-by: Pranith Kumar <bobby.prani+qemu@gmail.com>
Reviewed-by: Sergey Fedorov <sergey.fedorov@linaro.org>
> ---
> target-arm/helper.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/target-arm/helper.c b/target-arm/helper.c
> index 862e780..c9730d6 100644
> --- a/target-arm/helper.c
> +++ b/target-arm/helper.c
> @@ -3765,8 +3765,11 @@ static const ARMCPRegInfo el3_cp_reginfo[] = {
> .opc0 = 3, .opc1 = 6, .crn = 2, .crm = 0, .opc2 = 2,
> .access = PL3_RW,
> /* no .writefn needed as this can't cause an ASID change;
> - * no .raw_writefn or .resetfn needed as we never use mask/base_mask
> + * we must provide a .raw_writefn and .resetfn because we handle
> + * reset and migration for the AArch32 TTBCR(S), which might be
> + * using mask and base_mask.
> */
> + .resetfn = vmsa_ttbcr_reset, .raw_writefn = vmsa_ttbcr_raw_write,
> .fieldoffset = offsetof(CPUARMState, cp15.tcr_el[3]) },
> { .name = "ELR_EL3", .state = ARM_CP_STATE_AA64,
> .type = ARM_CP_ALIAS,
next prev parent reply other threads:[~2016-06-09 16:11 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-09 16:03 [Qemu-arm] [PATCH] target-arm: Fix reset and migration of TTBCR(S) Peter Maydell
2016-06-09 16:03 ` [Qemu-devel] " Peter Maydell
2016-06-09 16:09 ` Sergey Fedorov [this message]
2016-06-09 16:09 ` Sergey Fedorov
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=575994D2.3010107@linaro.org \
--to=sergey.fedorov@linaro.org \
--cc=bobby.prani+qemu@gmail.com \
--cc=patches@linaro.org \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@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.