qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Dump guest page table inside QEMU makes system hang


From: Wei-Ren Chen
Subject: [Qemu-devel] Dump guest page table inside QEMU makes system hang
Date: Tue, 21 Aug 2012 15:21:34 +0800
User-agent: Mutt/1.5.21 (2010-09-15)

Hi all,

  I want to dump guest page table when guest writes to cr3,
the code snipt below,

---
uint32_t pgd[1024][1024]; // guest page table
static void dump_guest_pgtable(target_ulong cr3)
{
    int i, j;
    uint32_t phyaddr = cr3;
    uint32_t val;

    for (i = 0; i < NUM_ENTRY; ++i)
    {
        phyaddr += i * 4;
        for (j = 0; j < NUM_ENTRY; ++j)
        {
            cpu_physical_memory_read(phyaddr, &val, 4);
            pgd[i][j] = val;
        }
    }
}

void cpu_x86_update_cr3(CPUX86State *env, target_ulong new_cr3)
{
    env->cr[3] = new_cr3; // guest cr3

    if (env->cr[0] & CR0_PG_MASK) {
        tlb_flush(env, 0);

        // dump guest page table by using guest cr3
        dump_guest_pgtable(new_cr3);
    }
}
---

  The system will hang while booting. However, if I comment 
cpu_physical_memory_read in function dump_guest_pgtable, there
is no problem. What I am missing here? Thanks.

Regards,
chenwj

-- 
Wei-Ren Chen (陳韋任)
Computer Systems Lab, Institute of Information Science,
Academia Sinica, Taiwan (R.O.C.)
Tel:886-2-2788-3799 #1667
Homepage: http://people.cs.nctu.edu.tw/~chenwj



reply via email to

[Prev in Thread] Current Thread [Next in Thread]