qemu-devel
[Top][All Lists]
Advanced

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

Re: CVMSEG Emulation


From: Christopher Wrogg
Subject: Re: CVMSEG Emulation
Date: Fri, 9 Dec 2022 12:44:43 -0500

I tried both.

Option 1
    What I did:
        #undef TARGET_VIRT_ADDR_SPACE_BITS and #define TARGET_VIRT_ADDR_SPACE_BITS 64
    The Result:
        perror reports "Cannot allocate memory"
Option 2:
    What I did:
        TARGET_VIRT_ADDR_SPACE_BITS for me is 30 so I masked by 0x3FFFFFFF
    The Result:
        The segfault persists and gdb reports the memory as inaccessible.

On Thu, Dec 8, 2022 at 4:55 PM Jiaxun Yang <jiaxun.yang@flygoat.com> wrote:

Hi,

This address range is located in KSEG3… Doesn’t seems to be a good location
for userspace program.

I think you have two options to make target_mmap work, the first would be rising
TARGET_VIRT_ADDR_SPACE_BITS to 64 bit. That may break some user space
applications storing pointer tags on higher bits.

The second would be mask CVMSEG base with TARGET_VIRT_ADDR_SPACE_BITS
before mmap, As higher VM address bits will be dropped when addressing guest VM,
that should provide a similar behaviour. Though you’ll have multiple alias for CVMSEG in
memory and application will be able to access CVMSEG with bits higher than
TARGET_VIRT_ADDR_SPACE_BITS set to any value. Don’t know if it will break anything,
AFAIK normal applications won't use this range.

Thanks
- Jiaxun


> 2022年12月8日 15:08,Christopher Wrogg <cwrogg@umich.edu> 写道:
>
> In userspace emulation how do I make a set of addresses always valid and initialized to 0 even though the process does not map it in? In particular I want to map the CVMSEG for Cavium qemu-mips64 and qemu-mipsn32. The addresses would be 0xFFFFFFFFFFFF8000 - 0xFFFFFFFFFFFFBFFF. I've looked at target_mmap but it can't handle addresses that large. The lack of an emulated mmu for 64 bit guests is going to be a problem.


reply via email to

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