From: Michael Roth <mdroth@linux.vnet.ibm.com>
To: qemu-devel@nongnu.org
Cc: aliguori@us.ibm.com
Subject: [Qemu-devel] [PATCH stable-1.1 06/26] target-xtensa: control page table lookup explicitly
Date: Fri, 22 Jun 2012 19:33:10 -0500 [thread overview]
Message-ID: <1340411610-22596-7-git-send-email-mdroth@linux.vnet.ibm.com> (raw)
In-Reply-To: <1340411610-22596-1-git-send-email-mdroth@linux.vnet.ibm.com>
From: Max Filippov <jcmvbkbc@gmail.com>
Hardware pagetable walking may not be nested. Stop guessing and pass
explicit flag to the get_physical_addr_mmu function that controls page
table lookup.
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
---
target-xtensa/helper.c | 10 +++++-----
1 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/target-xtensa/helper.c b/target-xtensa/helper.c
index 86c33d2..8ebef72 100644
--- a/target-xtensa/helper.c
+++ b/target-xtensa/helper.c
@@ -452,7 +452,8 @@ static int get_pte(CPUXtensaState *env, uint32_t vaddr, uint32_t *pte);
static int get_physical_addr_mmu(CPUXtensaState *env, bool update_tlb,
uint32_t vaddr, int is_write, int mmu_idx,
- uint32_t *paddr, uint32_t *page_size, unsigned *access)
+ uint32_t *paddr, uint32_t *page_size, unsigned *access,
+ bool may_lookup_pt)
{
bool dtlb = is_write != 2;
uint32_t wi;
@@ -465,8 +466,7 @@ static int get_physical_addr_mmu(CPUXtensaState *env, bool update_tlb,
int ret = xtensa_tlb_lookup(env, vaddr, dtlb, &wi, &ei, &ring);
if ((ret == INST_TLB_MISS_CAUSE || ret == LOAD_STORE_TLB_MISS_CAUSE) &&
- (mmu_idx != 0 || ((vaddr ^ env->sregs[PTEVADDR]) & 0xffc00000)) &&
- get_pte(env, vaddr, &pte) == 0) {
+ may_lookup_pt && get_pte(env, vaddr, &pte) == 0) {
ring = (pte >> 4) & 0x3;
wi = 0;
split_tlb_entry_spec_way(env, vaddr, dtlb, &vpn, wi, &ei);
@@ -520,7 +520,7 @@ static int get_pte(CPUXtensaState *env, uint32_t vaddr, uint32_t *pte)
uint32_t pt_vaddr =
(env->sregs[PTEVADDR] | (vaddr >> 10)) & 0xfffffffc;
int ret = get_physical_addr_mmu(env, false, pt_vaddr, 0, 0,
- &paddr, &page_size, &access);
+ &paddr, &page_size, &access, false);
qemu_log("%s: trying autorefill(%08x) -> %08x\n", __func__,
vaddr, ret ? ~0 : paddr);
@@ -568,7 +568,7 @@ int xtensa_get_physical_addr(CPUXtensaState *env, bool update_tlb,
{
if (xtensa_option_enabled(env->config, XTENSA_OPTION_MMU)) {
return get_physical_addr_mmu(env, update_tlb,
- vaddr, is_write, mmu_idx, paddr, page_size, access);
+ vaddr, is_write, mmu_idx, paddr, page_size, access, true);
} else if (xtensa_option_bits_enabled(env->config,
XTENSA_OPTION_BIT(XTENSA_OPTION_REGION_PROTECTION) |
XTENSA_OPTION_BIT(XTENSA_OPTION_REGION_TRANSLATION))) {
--
1.7.4.1
next prev parent reply other threads:[~2012-06-23 0:34 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-23 0:33 [Qemu-devel] [PATCH stable-1.1 00/26] Initial tree and candidates for stable-1.1 Michael Roth
2012-06-23 0:33 ` [Qemu-devel] [PATCH stable-1.1 01/26] virtio-blk: Fix geometry sector calculation Michael Roth
2012-06-23 0:33 ` [Qemu-devel] [PATCH stable-1.1 02/26] target-xtensa: flush TLB page for new MMU mapping Michael Roth
2012-06-23 0:33 ` [Qemu-devel] [PATCH stable-1.1 03/26] target-xtensa: update EXCVADDR in case of page table lookup Michael Roth
2012-06-23 0:33 ` [Qemu-devel] [PATCH stable-1.1 04/26] target-xtensa: extract TLB entry setting method Michael Roth
2012-06-23 0:33 ` [Qemu-devel] [PATCH stable-1.1 05/26] target-xtensa: update autorefill TLB entries conditionally Michael Roth
2012-06-23 0:33 ` Michael Roth [this message]
2012-06-23 0:33 ` [Qemu-devel] [PATCH stable-1.1 07/26] target-xtensa: add MMU pagewalking tests Michael Roth
2012-06-23 0:33 ` [Qemu-devel] [PATCH stable-1.1 08/26] exec: fix TB invalidation after breakpoint insertion/deletion Michael Roth
2012-06-23 0:33 ` [Qemu-devel] [PATCH stable-1.1 09/26] target-xtensa: fix CCOUNT for conditional branches Michael Roth
2012-06-23 0:33 ` [Qemu-devel] [PATCH stable-1.1 10/26] trace/simple.c: fix deprecated glib2 interface Michael Roth
2012-06-23 0:33 ` [Qemu-devel] [PATCH stable-1.1 11/26] configure: report missing libraries for virtfs Michael Roth
2012-06-23 0:33 ` [Qemu-devel] [PATCH stable-1.1 12/26] kvm/apic: correct short memset Michael Roth
2012-06-23 0:33 ` [Qemu-devel] [PATCH stable-1.1 13/26] kvm: i8254: Fix conversion of in-kernel to userspace state Michael Roth
2012-06-23 0:33 ` [Qemu-devel] [PATCH stable-1.1 14/26] qcow2: Silence false warning Michael Roth
2012-06-23 0:33 ` [Qemu-devel] [PATCH stable-1.1 15/26] monitor: Fix memory leak with readline completion Michael Roth
2012-06-23 0:33 ` [Qemu-devel] [PATCH stable-1.1 16/26] configure: Fix build for some versions of glibc (9pfs) Michael Roth
2012-06-23 0:33 ` [Qemu-devel] [PATCH stable-1.1 17/26] rtl8139: honor RxOverflow flag in can_receive method Michael Roth
2012-06-23 0:33 ` [Qemu-devel] [PATCH stable-1.1 18/26] ahci: Fix reset of MSI function Michael Roth
2012-06-23 0:33 ` [Qemu-devel] [PATCH stable-1.1 19/26] intel-hda: " Michael Roth
2012-06-23 0:33 ` [Qemu-devel] [PATCH stable-1.1 20/26] qdev: release parent properties on dc->init failure Michael Roth
2012-06-23 0:33 ` [Qemu-devel] [PATCH stable-1.1 21/26] pci_bridge_dev: fix error path in pci_bridge_dev_initfn() Michael Roth
2012-06-23 0:33 ` [Qemu-devel] [PATCH stable-1.1 22/26] qcow2: fix endianness conversion Michael Roth
2012-06-23 0:33 ` [Qemu-devel] [PATCH stable-1.1 23/26] Prevent disk data loss when closing qemu Michael Roth
2012-06-23 0:33 ` [Qemu-devel] [PATCH stable-1.1 24/26] qcow2: fix autoclear image header update Michael Roth
2012-06-23 0:33 ` [Qemu-devel] [PATCH stable-1.1 25/26] fdc: fix implied seek while there is no media in drive Michael Roth
2012-06-23 0:33 ` [Qemu-devel] [PATCH stable-1.1 26/26] build: install qmp-commands.txt Michael Roth
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=1340411610-22596-7-git-send-email-mdroth@linux.vnet.ibm.com \
--to=mdroth@linux.vnet.ibm.com \
--cc=aliguori@us.ibm.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).