From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gleb Natapov Subject: Re: x86: use smp_send_reschedule in kvm_vcpu_kick Date: Thu, 19 Mar 2009 09:38:49 +0200 Message-ID: <20090319073849.GB16774@redhat.com> References: <20090303001405.GA5889@amt.cnet> <49B4ECB6.8060505@redhat.com> <20090309105855.GA14242@elte.hu> <1236596946.8389.340.camel@laptop> <20090309232350.GA6837@amt.cnet> <49B61E65.4070706@redhat.com> <706158FABBBA044BAD4FE898A02E4BC224451E95@pdsmsx503.ccr.corp.intel.com> <20090312110422.GB10892@redhat.com> <706158FABBBA044BAD4FE898A02E4BC224452426@pdsmsx503.ccr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Avi Kivity , Marcelo Tosatti , Ingo Molnar , "kvm@vger.kernel.org" , Peter Zijlstra To: "Zhang, Xiantao" Return-path: Received: from mx2.redhat.com ([66.187.237.31]:42749 "EHLO mx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753171AbZCSHnA (ORCPT ); Thu, 19 Mar 2009 03:43:00 -0400 Content-Disposition: inline In-Reply-To: <706158FABBBA044BAD4FE898A02E4BC224452426@pdsmsx503.ccr.corp.intel.com> Sender: kvm-owner@vger.kernel.org List-ID: On Fri, Mar 13, 2009 at 10:15:22AM +0800, Zhang, Xiantao wrote: > We also hacked the source like the patch. But the issue is not caused by it. We are still trying to figure the reason out. Thanks! > Xiantao > With the patch below I am able to compile kvm-userspace on IA64 and run linux guest. Network doesn't work since there is some kind of problem with PCI interrupts. They are not delivered to a guest. Signed-off-by: Gleb Natapov diff --git a/qemu/hw/ipf.c b/qemu/hw/ipf.c index e2b53ee..bbe789a 100644 --- a/qemu/hw/ipf.c +++ b/qemu/hw/ipf.c @@ -700,7 +700,7 @@ void ioapic_set_irq(void *opaque, int irq_num, int level) ioapic_irq_count[vector] -= 1; if (kvm_enabled()) { - if (kvm_set_irq(vector, ioapic_irq_count[vector] == 0)) + if (kvm_set_irq(vector, ioapic_irq_count[vector] == 0, NULL)) return; } } @@ -709,3 +709,17 @@ int ipf_map_irq(PCIDevice *pci_dev, int irq_num) { return ioapic_map_irq(pci_dev->devfn, irq_num); } + +static int apic_irq_delivered; +void apic_reset_irq_delivered(void) +{ + apic_irq_delivered = 0; +} +int apic_get_irq_delivered(void) +{ + return apic_irq_delivered; +} +void apic_set_irq_delivered(void) +{ + apic_irq_delivered = 1; +} diff --git a/qemu/target-ia64/cpu.h b/qemu/target-ia64/cpu.h index 9bad6f6..5960bb9 100644 --- a/qemu/target-ia64/cpu.h +++ b/qemu/target-ia64/cpu.h @@ -29,7 +29,7 @@ #define TARGET_LONG_BITS 64 -#define TARGET_PAGE_BITS 16 +#define TARGET_PAGE_BITS 14 #define ELF_MACHINE EM_IA_64 @@ -40,13 +40,14 @@ #include "cpu-defs.h" #include "softfloat.h" +#define CPUState struct CPUIA64State + typedef struct CPUIA64State { CPU_COMMON; uint32_t hflags; int mp_state; } CPUIA64State; -#define CPUState CPUIA64State #define cpu_gen_code cpu_ia64_gen_code #define cpu_init cpu_ia64_init #define cpu_signal_handler cpu_ia64_signal_handler -- Gleb.