From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH] kvm-userspace: x86: Support for breakpoints in ROM code Date: Tue, 17 Mar 2009 11:51:50 +0200 Message-ID: <49BF72B6.4040907@redhat.com> References: <49BE9EF7.7010005@siemens.com> <49BEA02A.1070909@siemens.com> <49BF6E75.1070802@redhat.com> <49BF7109.5000207@siemens.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit Cc: kvm-devel To: Jan Kiszka Return-path: Received: from mx1.redhat.com ([66.187.233.31]:35202 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754423AbZCQJvz (ORCPT ); Tue, 17 Mar 2009 05:51:55 -0400 In-Reply-To: <49BF7109.5000207@siemens.com> Sender: kvm-owner@vger.kernel.org List-ID: Jan Kiszka wrote: > This is not a hack (it shouldn't have been merged upstream otherwise): > cpu_physical_memory_write_rom() takes system-wide physical addresses > while kvm_patch_opcode_byte() works with per-CPU linear addresses. > From exec.c: > /* virtual memory access for debug */ > int cpu_memory_rw_debug(CPUState *env, target_ulong addr, > uint8_t *buf, int len, int is_write) > { > int l; > target_phys_addr_t phys_addr; > target_ulong page; > > while (len > 0) { > page = addr & TARGET_PAGE_MASK; > phys_addr = cpu_get_phys_page_debug(env, page); > /* if no physical page mapped, return an error */ > if (phys_addr == -1) > return -1; > l = (page + TARGET_PAGE_SIZE) - addr; > if (l > len) > l = len; > cpu_physical_memory_rw(phys_addr + (addr & ~TARGET_PAGE_MASK), > buf, l, is_write); > len -= l; > buf += l; > addr += l; > } > return 0; > } I'm talking about replacing cpu_physical_memory_rw() with cpu_physical_memory_write_rom() (for the write case). Is there a case where the debugger should be prevented from writing into ROM? If so, maybe cpu_memory_rw_debug_rom() for breakpoints? We shouldn't juggle page descriptors in *kvm*.c. -- error compiling committee.c: too many arguments to function