[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2] x86/vpt: guarantee the return value of pt_update_irq() set in vIRR or PIR
>>> On 13.10.17 at 07:10, <chao.gao@xxxxxxxxx> wrote: > --- a/xen/arch/x86/hvm/irq.c > +++ b/xen/arch/x86/hvm/irq.c > @@ -168,11 +168,13 @@ void hvm_gsi_deassert(struct domain *d, unsigned int > gsi) > spin_unlock(&d->arch.hvm_domain.irq_lock); > } > > -void hvm_isa_irq_assert( > - struct domain *d, unsigned int isa_irq) > +int hvm_isa_irq_assert(struct domain *d, unsigned int isa_irq, > + int (*get_vector)(const struct domain *d, > + unsigned int gsi)) > { > struct hvm_irq *hvm_irq = hvm_domain_irq(d); > unsigned int gsi = hvm_isa_irq_to_gsi(isa_irq); > + int vector = 0; Why zero (which is valid aiui) instead of e.g. -1? > @@ -292,25 +292,38 @@ int pt_update_irq(struct vcpu *v) > > spin_unlock(&v->arch.hvm_vcpu.tm_lock); > > + /* > + * If periodic timer interrut is handled by lapic, its vector in > + * IRR is returned and used to set eoi_exit_bitmap for virtual > + * interrupt delivery case. Otherwise return -1 to do nothing. > + */ > if ( is_lapic ) > + { > vlapic_set_irq(vcpu_vlapic(v), irq, 0); > + pt_vector = irq; > + } > else > { > hvm_isa_irq_deassert(v->domain, irq); > - hvm_isa_irq_assert(v->domain, irq); > + if ( platform_legacy_irq(irq) && vlapic_accept_pic_intr(v) && > + v->domain->arch.hvm_domain.vpic[irq >> 3].int_output ) > + { > + hvm_isa_irq_assert(v->domain, irq, NULL); > + pt_vector = -1; > + } > + else > + { > + pt_vector = hvm_isa_irq_assert(v->domain, irq, > vioapic_get_vector); I like that you got away without introducing a new wrapper function at all. > --- a/xen/include/asm-x86/hvm/vmx/vmx.h > +++ b/xen/include/asm-x86/hvm/vmx/vmx.h > @@ -109,6 +109,11 @@ static inline int pi_test_and_set_pir(int vector, struct > pi_desc *pi_desc) > return test_and_set_bit(vector, pi_desc->pir); > } > > +static inline int pi_test_pir(int vector, const struct pi_desc *pi_desc) This should not be a signed quantity - uint8_t or unsigned int please. I wouldn't mind making suitable adjustments while committing (and then adding my R-b), but that requires your feedback which way things should be. Also please don't forget to Cc the release manager, unless you intend this fix only for after 4.10. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |