From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mukesh Rathor Subject: [V8 PATCH 7/8] pvh dom0: add check for pvh in vioapic_range Date: Fri, 21 Mar 2014 18:39:16 -0700 Message-ID: <1395452357-1598-8-git-send-email-mukesh.rathor@oracle.com> References: <1395452357-1598-1-git-send-email-mukesh.rathor@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1WRAvZ-0001JZ-QP for xen-devel@lists.xenproject.org; Sat, 22 Mar 2014 01:40:50 +0000 In-Reply-To: <1395452357-1598-1-git-send-email-mukesh.rathor@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org Cc: JBeulich@suse.com, George.Dunlap@eu.citrix.com, tim@xen.org, eddie.dong@intel.com, keir.xen@gmail.com, jun.nakajima@intel.com List-Id: xen-devel@lists.xenproject.org pvh doesn't use apic emulation, as a result vioapic_init is not called and vioapic ptr in struct hvm_domain is not initialized. One path that would access the ptr is hvm_hap_nested_page_fault -> handle_mmio -> hvmemul_do_io -> hvm_mmio_intercept -> vioapic_range Signed-off-by: Mukesh Rathor --- xen/arch/x86/hvm/vioapic.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/hvm/vioapic.c b/xen/arch/x86/hvm/vioapic.c index d3c681b..8196268 100644 --- a/xen/arch/x86/hvm/vioapic.c +++ b/xen/arch/x86/hvm/vioapic.c @@ -238,8 +238,13 @@ static int vioapic_write( static int vioapic_range(struct vcpu *v, unsigned long addr) { - struct hvm_hw_vioapic *vioapic = domain_vioapic(v->domain); + struct hvm_hw_vioapic *vioapic; + + /* pvh uses event channel callback */ + if ( is_pvh_vcpu(v) ) + return 0; + vioapic = domain_vioapic(v->domain); return ((addr >= vioapic->base_address && (addr < vioapic->base_address + VIOAPIC_MEM_LENGTH))); } -- 1.8.3.1