qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Yuan Yao <yuan.yao@intel.com>
To: "Paolo Bonzini" <pbonzini@redhat.com>,
	"Eric Blake" <eblake@redhat.com>,
	"Markus Armbruster" <armbru@redhat.com>,
	"Zhang Chen" <chen.zhang@intel.com>,
	"Connor Kuehl" <ckuehl@redhat.com>,
	"Philippe Mathieu-Daudé" <f4bug@amsat.org>
Cc: qemu-devel@nongnu.org, Yuan Yao <yuan.yao@intel.com>,
	Yamahata Isaku <isaku.yamahata@intel.com>
Subject: [PATCH v2 1/1] i386/monitor: Fix page table walking issue for LA57 enabled guest
Date: Mon, 27 Jun 2022 14:18:46 +0800	[thread overview]
Message-ID: <20220627061846.18294-1-yuan.yao@intel.com> (raw)

Inverse the condition checking to PG_PRESENT_MASK when walk LA57
guest's pdpe/pde for "info mem" command.

The current condition checking:
if (PG_PRESENT_MASK is set)
    Skip low level page table.
else
    Try to walk low level page table.

This is wrong because PG_PRESENT_MASK is set means the pdpe/pde is
present so we should continue walking the low level page table it
points to. This issue leads to no mapping information is collected for
LA57 guest when run the command.

v2:
1. Fix Typo (Zhang Chen <chen.zhang@intel.com> and Markus Armbruster
<armbru@redhat.com>).
2. Rewrite commit message (Markus Armbruster <armbru@redhat.com>).
3. Add Fixes tag (Markus Armbruster <armbru@redhat.com>).

Fixes: 6c7c3c21f9 ("x86: implement la57 paging mode")
Signed-off-by: Yuan Yao <yuan.yao@intel.com>
Reviewed-by: Zhang Chen <chen.zhang@intel.com>
---
 target/i386/monitor.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/target/i386/monitor.c b/target/i386/monitor.c
index 8e4b4d600c..3339550bbe 100644
--- a/target/i386/monitor.c
+++ b/target/i386/monitor.c
@@ -489,7 +489,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env)
                 cpu_physical_memory_read(pdp_addr + l2 * 8, &pdpe, 8);
                 pdpe = le64_to_cpu(pdpe);
                 end = (l0 << 48) + (l1 << 39) + (l2 << 30);
-                if (pdpe & PG_PRESENT_MASK) {
+                if (!(pdpe & PG_PRESENT_MASK)) {
                     prot = 0;
                     mem_print(mon, env, &start, &last_prot, end, prot);
                     continue;
@@ -508,7 +508,7 @@ static void mem_info_la57(Monitor *mon, CPUArchState *env)
                     cpu_physical_memory_read(pd_addr + l3 * 8, &pde, 8);
                     pde = le64_to_cpu(pde);
                     end = (l0 << 48) + (l1 << 39) + (l2 << 30) + (l3 << 21);
-                    if (pde & PG_PRESENT_MASK) {
+                    if (!(pde & PG_PRESENT_MASK)) {
                         prot = 0;
                         mem_print(mon, env, &start, &last_prot, end, prot);
                         continue;
-- 
2.27.0



                 reply	other threads:[~2022-06-27  6:21 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=20220627061846.18294-1-yuan.yao@intel.com \
    --to=yuan.yao@intel.com \
    --cc=armbru@redhat.com \
    --cc=chen.zhang@intel.com \
    --cc=ckuehl@redhat.com \
    --cc=eblake@redhat.com \
    --cc=f4bug@amsat.org \
    --cc=isaku.yamahata@intel.com \
    --cc=pbonzini@redhat.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).