[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [patch 5/8] Export qemu_ram_addr_from_host
From: |
Marcelo Tosatti |
Subject: |
[Qemu-devel] [patch 5/8] Export qemu_ram_addr_from_host |
Date: |
Mon, 11 Oct 2010 15:31:19 -0300 |
User-agent: |
quilt/0.47-1 |
To be used by next patches.
Signed-off-by: Marcelo Tosatti <address@hidden>
Index: qemu/cpu-common.h
===================================================================
--- qemu.orig/cpu-common.h
+++ qemu/cpu-common.h
@@ -47,7 +47,8 @@ void qemu_ram_free(ram_addr_t addr);
/* This should only be used for ram local to a device. */
void *qemu_get_ram_ptr(ram_addr_t addr);
/* This should not be used by devices. */
-ram_addr_t qemu_ram_addr_from_host(void *ptr);
+int qemu_ram_addr_from_host(void *ptr, ram_addr_t *ram_addr);
+ram_addr_t qemu_ram_addr_from_host_nofail(void *ptr);
int cpu_register_io_memory(CPUReadMemoryFunc * const *mem_read,
CPUWriteMemoryFunc * const *mem_write,
Index: qemu/exec.c
===================================================================
--- qemu.orig/exec.c
+++ qemu/exec.c
@@ -2086,7 +2086,7 @@ static inline void tlb_update_dirty(CPUT
if ((tlb_entry->addr_write & ~TARGET_PAGE_MASK) == IO_MEM_RAM) {
p = (void *)(unsigned long)((tlb_entry->addr_write & TARGET_PAGE_MASK)
+ tlb_entry->addend);
- ram_addr = qemu_ram_addr_from_host(p);
+ ram_addr = qemu_ram_addr_from_host_nofail(p);
if (!cpu_physical_memory_is_dirty(ram_addr)) {
tlb_entry->addr_write |= TLB_NOTDIRTY;
}
@@ -2938,23 +2938,31 @@ void *qemu_get_ram_ptr(ram_addr_t addr)
return NULL;
}
-/* Some of the softmmu routines need to translate from a host pointer
- (typically a TLB entry) back to a ram offset. */
-ram_addr_t qemu_ram_addr_from_host(void *ptr)
+int qemu_ram_addr_from_host(void *ptr, ram_addr_t *ram_addr)
{
RAMBlock *block;
uint8_t *host = ptr;
QLIST_FOREACH(block, &ram_list.blocks, next) {
if (host - block->host < block->length) {
- return block->offset + (host - block->host);
+ *ram_addr = block->offset + (host - block->host);
+ return 0;
}
}
+ return -1;
+}
- fprintf(stderr, "Bad ram pointer %p\n", ptr);
- abort();
+/* Some of the softmmu routines need to translate from a host pointer
+ (typically a TLB entry) back to a ram offset. */
+ram_addr_t qemu_ram_addr_from_host_nofail(void *ptr)
+{
+ ram_addr_t ram_addr;
- return 0;
+ if (qemu_ram_addr_from_host(ptr, &ram_addr)) {
+ fprintf(stderr, "Bad ram pointer %p\n", ptr);
+ abort();
+ }
+ return ram_addr;
}
static uint32_t unassigned_mem_readb(void *opaque, target_phys_addr_t addr)
@@ -3703,7 +3711,7 @@ void cpu_physical_memory_unmap(void *buf
{
if (buffer != bounce.buffer) {
if (is_write) {
- ram_addr_t addr1 = qemu_ram_addr_from_host(buffer);
+ ram_addr_t addr1 = qemu_ram_addr_from_host_nofail(buffer);
while (access_len) {
unsigned l;
l = TARGET_PAGE_SIZE;
Index: qemu/exec-all.h
===================================================================
--- qemu.orig/exec-all.h
+++ qemu/exec-all.h
@@ -334,7 +334,7 @@ static inline tb_page_addr_t get_page_ad
}
p = (void *)(unsigned long)addr
+ env1->tlb_table[mmu_idx][page_index].addend;
- return qemu_ram_addr_from_host(p);
+ return qemu_ram_addr_from_host_nofail(p);
}
#endif
- [Qemu-devel] [patch uq/master 2/8] iothread: use signalfd, (continued)
- [Qemu-devel] [patch uq/master 2/8] iothread: use signalfd, Marcelo Tosatti, 2010/10/06
- [Qemu-devel] [patch uq/master 5/8] Export qemu_ram_addr_from_host, Marcelo Tosatti, 2010/10/06
- [Qemu-devel] [patch uq/master 7/8] MCE: Relay UCR MCE to guest, Marcelo Tosatti, 2010/10/06
- [Qemu-devel] [patch 0/8] port qemu-kvm's MCE support (v3), Marcelo Tosatti, 2010/10/11
- [Qemu-devel] [patch 3/8] Expose thread_id in info cpus, Marcelo Tosatti, 2010/10/11
- [Qemu-devel] [patch 4/8] kvm: x86: add mce support, Marcelo Tosatti, 2010/10/11
- [Qemu-devel] [patch 2/8] iothread: use signalfd, Marcelo Tosatti, 2010/10/11
- [Qemu-devel] [patch 6/8] Add RAM -> physical addr mapping in MCE simulation, Marcelo Tosatti, 2010/10/11
- [Qemu-devel] [patch 1/8] signalfd compatibility, Marcelo Tosatti, 2010/10/11
- [Qemu-devel] [patch 8/8] Add savevm/loadvm support for MCE, Marcelo Tosatti, 2010/10/11
- [Qemu-devel] [patch 5/8] Export qemu_ram_addr_from_host,
Marcelo Tosatti <=
- [Qemu-devel] [patch 7/8] MCE: Relay UCR MCE to guest, Marcelo Tosatti, 2010/10/11
- [Qemu-devel] Re: [patch 0/8] port qemu-kvm's MCE support (v3), Avi Kivity, 2010/10/14
- [Qemu-devel] Re: [patch 0/8] port qemu-kvm's MCE support (v3), Marcelo Tosatti, 2010/10/14
- [Qemu-devel] Re: [patch 0/8] port qemu-kvm's MCE support (v3 resend), Avi Kivity, 2010/10/17