[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [IA64] move evtchn_vector to shared_info
# HG changeset patch # User awilliam@xxxxxxxxxxx # Node ID 90329e7d6be5a30ebe7c63453428a13ed0c97c01 # Parent b487f4e1b09f9f127ba99afedebc39ee448a7df6 [IA64] move evtchn_vector to shared_info Move evtchn_vector from vcpu_info to shared_info. Signed-off-by: Tristan Gingold <tristan.gingold@xxxxxxxx> --- linux-2.6-xen-sparse/arch/ia64/xen/drivers/evtchn_ia64.c | 17 ++------------- linux-2.6-xen-sparse/arch/ia64/xen/hypercall.S | 2 - tools/libxc/xc_ia64_stubs.c | 2 - tools/libxc/xc_linux_build.c | 2 - xen/arch/ia64/xen/domain.c | 13 +++-------- xen/arch/ia64/xen/hypercall.c | 3 -- xen/arch/ia64/xen/vcpu.c | 4 +-- xen/include/asm-ia64/event.h | 2 - xen/include/public/arch-ia64.h | 7 +++--- 9 files changed, 17 insertions(+), 35 deletions(-) diff -r b487f4e1b09f -r 90329e7d6be5 linux-2.6-xen-sparse/arch/ia64/xen/drivers/evtchn_ia64.c --- a/linux-2.6-xen-sparse/arch/ia64/xen/drivers/evtchn_ia64.c Sun May 14 09:16:21 2006 -0600 +++ b/linux-2.6-xen-sparse/arch/ia64/xen/drivers/evtchn_ia64.c Mon May 15 10:53:23 2006 -0600 @@ -246,25 +246,14 @@ static struct irqaction evtchn_irqaction .name = "xen-event-channel" }; -int evtchn_irq = 0xe9; +static int evtchn_irq = 0xe9; void __init evtchn_init(void) { shared_info_t *s = HYPERVISOR_shared_info; - vcpu_info_t *vcpu_info = &s->vcpu_info[smp_processor_id()]; - -#if 0 - int ret; - irq = assign_irq_vector(AUTO_ASSIGN); - ret = request_irq(irq, evtchn_interrupt, 0, "xen-event-channel", NULL); - if (ret < 0) - { - printk("xen-event-channel unable to get irq %d (%d)\n", irq, ret); - return; - } -#endif + register_percpu_irq(evtchn_irq, &evtchn_irqaction); - vcpu_info->arch.evtchn_vector = evtchn_irq; + s->arch.evtchn_vector = evtchn_irq; printk("xen-event-channel using irq %d\n", evtchn_irq); spin_lock_init(&irq_mapping_update_lock); diff -r b487f4e1b09f -r 90329e7d6be5 linux-2.6-xen-sparse/arch/ia64/xen/hypercall.S --- a/linux-2.6-xen-sparse/arch/ia64/xen/hypercall.S Sun May 14 09:16:21 2006 -0600 +++ b/linux-2.6-xen-sparse/arch/ia64/xen/hypercall.S Mon May 15 10:53:23 2006 -0600 @@ -247,7 +247,7 @@ 1: mov r8=r32 XEN_RESTORE_PSR_IC ;; br.ret.sptk.many rp -END(xen_set_rr) +END(xen_set_kr) GLOBAL_ENTRY(xen_fc) movl r8=running_on_xen;; diff -r b487f4e1b09f -r 90329e7d6be5 tools/libxc/xc_ia64_stubs.c --- a/tools/libxc/xc_ia64_stubs.c Sun May 14 09:16:21 2006 -0600 +++ b/tools/libxc/xc_ia64_stubs.c Mon May 15 10:53:23 2006 -0600 @@ -723,7 +723,7 @@ int xc_hvm_build(int xc_handle, ctxt->flags = VGCF_VMX_GUEST; ctxt->regs.cr_iip = 0x80000000ffffffb0UL; - ctxt->vcpu.privregs = 0; + ctxt->privregs = 0; memset( &launch_op, 0, sizeof(launch_op) ); diff -r b487f4e1b09f -r 90329e7d6be5 tools/libxc/xc_linux_build.c --- a/tools/libxc/xc_linux_build.c Sun May 14 09:16:21 2006 -0600 +++ b/tools/libxc/xc_linux_build.c Mon May 15 10:53:23 2006 -0600 @@ -1114,7 +1114,7 @@ static int xc_linux_build_internal(int x ctxt->regs.ar_fpsr = xc_ia64_fpsr_default(); /* currently done by hypervisor, should move here */ /* ctxt->regs.r28 = dom_fw_setup(); */ - ctxt->vcpu.privregs = 0; + ctxt->privregs = 0; ctxt->sys_pgnr = 3; i = 0; /* silence unused variable warning */ #else /* x86 */ diff -r b487f4e1b09f -r 90329e7d6be5 xen/arch/ia64/xen/domain.c --- a/xen/arch/ia64/xen/domain.c Sun May 14 09:16:21 2006 -0600 +++ b/xen/arch/ia64/xen/domain.c Mon May 15 10:53:23 2006 -0600 @@ -269,11 +269,7 @@ fail_nomem: void arch_getdomaininfo_ctxt(struct vcpu *v, struct vcpu_guest_context *c) { - struct pt_regs *regs = vcpu_regs (v); - - c->regs = *regs; - c->vcpu.evtchn_vector = v->vcpu_info->arch.evtchn_vector; - + c->regs = *vcpu_regs (v); c->shared = v->domain->shared_info->arch; } @@ -312,11 +308,10 @@ int arch_set_info_guest(struct vcpu *v, } new_thread(v, regs->cr_iip, 0, 0); - v->vcpu_info->arch.evtchn_vector = c->vcpu.evtchn_vector; - if ( c->vcpu.privregs && copy_from_user(v->arch.privregs, - c->vcpu.privregs, sizeof(mapped_regs_t))) { + if ( c->privregs && copy_from_user(v->arch.privregs, + c->privregs, sizeof(mapped_regs_t))) { printk("Bad ctxt address in arch_set_info_guest: %p\n", - c->vcpu.privregs); + c->privregs); return -EFAULT; } diff -r b487f4e1b09f -r 90329e7d6be5 xen/arch/ia64/xen/hypercall.c --- a/xen/arch/ia64/xen/hypercall.c Sun May 14 09:16:21 2006 -0600 +++ b/xen/arch/ia64/xen/hypercall.c Mon May 15 10:53:23 2006 -0600 @@ -153,9 +153,6 @@ fw_hypercall_ipi (struct pt_regs *regs) c.regs.cr_iip = targ_regs->cr_iip; c.regs.r1 = targ_regs->r1; - /* Copy from vcpu 0. */ - c.vcpu.evtchn_vector = - current->domain->vcpu[0]->vcpu_info->arch.evtchn_vector; if (arch_set_info_guest (targ, &c) != 0) { printf ("arch_boot_vcpu: failure\n"); return; diff -r b487f4e1b09f -r 90329e7d6be5 xen/arch/ia64/xen/vcpu.c --- a/xen/arch/ia64/xen/vcpu.c Sun May 14 09:16:21 2006 -0600 +++ b/xen/arch/ia64/xen/vcpu.c Mon May 15 10:53:23 2006 -0600 @@ -682,9 +682,9 @@ UINT64 vcpu_check_pending_interrupts(VCP */ check_start: if (event_pending(vcpu) && - !test_bit(vcpu->vcpu_info->arch.evtchn_vector, + !test_bit(vcpu->domain->shared_info->arch.evtchn_vector, &PSCBX(vcpu, insvc[0]))) - vcpu_pend_interrupt(vcpu, vcpu->vcpu_info->arch.evtchn_vector); + vcpu_pend_interrupt(vcpu, vcpu->domain->shared_info->arch.evtchn_vector); p = &PSCBX(vcpu,irr[3]); r = &PSCBX(vcpu,insvc[3]); diff -r b487f4e1b09f -r 90329e7d6be5 xen/include/asm-ia64/event.h --- a/xen/include/asm-ia64/event.h Sun May 14 09:16:21 2006 -0600 +++ b/xen/include/asm-ia64/event.h Mon May 15 10:53:23 2006 -0600 @@ -29,7 +29,7 @@ static inline void evtchn_notify(struct smp_send_event_check_cpu(v->processor); if(!VMX_DOMAIN(v)) - vcpu_pend_interrupt(v, v->vcpu_info->arch.evtchn_vector); + vcpu_pend_interrupt(v, v->domain->shared_info->arch.evtchn_vector); } /* Note: Bitwise operations result in fast code with no branches. */ diff -r b487f4e1b09f -r 90329e7d6be5 xen/include/public/arch-ia64.h --- a/xen/include/public/arch-ia64.h Sun May 14 09:16:21 2006 -0600 +++ b/xen/include/public/arch-ia64.h Mon May 15 10:53:23 2006 -0600 @@ -293,8 +293,6 @@ typedef struct { } mapped_regs_t; typedef struct { - mapped_regs_t *privregs; - int evtchn_vector; } arch_vcpu_info_t; typedef mapped_regs_t vpd_t; @@ -302,6 +300,9 @@ typedef struct { typedef struct { unsigned int flags; unsigned long start_info_pfn; + + /* Interrupt vector for event channel. */ + int evtchn_vector; } arch_shared_info_t; typedef struct { @@ -321,7 +322,7 @@ typedef struct vcpu_guest_context { unsigned long vm_assist; /* VMASST_TYPE_* bitmap, now none on IPF */ cpu_user_regs_t regs; - arch_vcpu_info_t vcpu; + mapped_regs_t *privregs; arch_shared_info_t shared; arch_initrd_info_t initrd; char cmdline[IA64_COMMAND_LINE_SIZE]; _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |