Jan Beulich
2011-Nov-21 08:17 UTC
[PATCH] x86/vioapic: clear remote IRR when switching RTE to edge triggered mode
Xen itself (as much as Linux) relies on this behavior, so it should also emulate it properly. Not doing so reportedly gets in the way of kexec inside a HVM guest. Signed-off-by: Jan Beulich <jbeulich@suse.com> Tested-by: Olaf Hering <olaf@aepfle.de> --- a/xen/arch/x86/hvm/vioapic.c +++ b/xen/arch/x86/hvm/vioapic.c @@ -154,8 +154,9 @@ static void vioapic_write_redirent( { vlapic_adjust_i8259_target(d); } - else if ( (ent.fields.trig_mode == VIOAPIC_LEVEL_TRIG) && - !ent.fields.mask && + else if ( ent.fields.trig_mode == VIOAPIC_EDGE_TRIG ) + pent->fields.remote_irr = 0; + else if ( !ent.fields.mask && !ent.fields.remote_irr && hvm_irq->gsi_assert_count[idx] ) { _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Keir Fraser
2011-Nov-21 08:25 UTC
Re: [PATCH] x86/vioapic: clear remote IRR when switching RTE to edge triggered mode
On 21/11/2011 08:17, "Jan Beulich" <JBeulich@suse.com> wrote:> Xen itself (as much as Linux) relies on this behavior, so it should > also emulate it properly. Not doing so reportedly gets in the way of > kexec inside a HVM guest. > > Signed-off-by: Jan Beulich <jbeulich@suse.com> > Tested-by: Olaf Hering <olaf@aepfle.de>Acked-by: Keir Fraser <keir@xen.org>> --- a/xen/arch/x86/hvm/vioapic.c > +++ b/xen/arch/x86/hvm/vioapic.c > @@ -154,8 +154,9 @@ static void vioapic_write_redirent( > { > vlapic_adjust_i8259_target(d); > } > - else if ( (ent.fields.trig_mode == VIOAPIC_LEVEL_TRIG) && > - !ent.fields.mask && > + else if ( ent.fields.trig_mode == VIOAPIC_EDGE_TRIG ) > + pent->fields.remote_irr = 0; > + else if ( !ent.fields.mask && > !ent.fields.remote_irr && > hvm_irq->gsi_assert_count[idx] ) > { > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel
Jan Beulich
2011-Nov-21 08:30 UTC
Re: [PATCH] x86/vioapic: clear remote IRR when switching RTE to edge triggered mode
>>> On 21.11.11 at 09:25, Keir Fraser <keir.xen@gmail.com> wrote: > On 21/11/2011 08:17, "Jan Beulich" <JBeulich@suse.com> wrote: > >> Xen itself (as much as Linux) relies on this behavior, so it should >> also emulate it properly. Not doing so reportedly gets in the way of >> kexec inside a HVM guest. >> >> Signed-off-by: Jan Beulich <jbeulich@suse.com> >> Tested-by: Olaf Hering <olaf@aepfle.de> > > Acked-by: Keir Fraser <keir@xen.org>Committed. Could that also be added to the older maintained trees, please (once it made it though stage testing)? Thanks, Jan>> --- a/xen/arch/x86/hvm/vioapic.c >> +++ b/xen/arch/x86/hvm/vioapic.c >> @@ -154,8 +154,9 @@ static void vioapic_write_redirent( >> { >> vlapic_adjust_i8259_target(d); >> } >> - else if ( (ent.fields.trig_mode == VIOAPIC_LEVEL_TRIG) && >> - !ent.fields.mask && >> + else if ( ent.fields.trig_mode == VIOAPIC_EDGE_TRIG ) >> + pent->fields.remote_irr = 0; >> + else if ( !ent.fields.mask && >> !ent.fields.remote_irr && >> hvm_irq->gsi_assert_count[idx] ) >> { >> >> >> >> _______________________________________________ >> Xen-devel mailing list >> Xen-devel@lists.xensource.com >> http://lists.xensource.com/xen-devel
Keir Fraser
2011-Nov-21 08:39 UTC
Re: [PATCH] x86/vioapic: clear remote IRR when switching RTE to edge triggered mode
On 21/11/2011 08:30, "Jan Beulich" <JBeulich@suse.com> wrote:>>>> On 21.11.11 at 09:25, Keir Fraser <keir.xen@gmail.com> wrote: >> On 21/11/2011 08:17, "Jan Beulich" <JBeulich@suse.com> wrote: >> >>> Xen itself (as much as Linux) relies on this behavior, so it should >>> also emulate it properly. Not doing so reportedly gets in the way of >>> kexec inside a HVM guest. >>> >>> Signed-off-by: Jan Beulich <jbeulich@suse.com> >>> Tested-by: Olaf Hering <olaf@aepfle.de> >> >> Acked-by: Keir Fraser <keir@xen.org> > > Committed. Could that also be added to the older maintained trees, > please (once it made it though stage testing)?Will do. I think we''re still having test problems, possibly another regression from Jean''s patch series.> Thanks, Jan > >>> --- a/xen/arch/x86/hvm/vioapic.c >>> +++ b/xen/arch/x86/hvm/vioapic.c >>> @@ -154,8 +154,9 @@ static void vioapic_write_redirent( >>> { >>> vlapic_adjust_i8259_target(d); >>> } >>> - else if ( (ent.fields.trig_mode == VIOAPIC_LEVEL_TRIG) && >>> - !ent.fields.mask && >>> + else if ( ent.fields.trig_mode == VIOAPIC_EDGE_TRIG ) >>> + pent->fields.remote_irr = 0; >>> + else if ( !ent.fields.mask && >>> !ent.fields.remote_irr && >>> hvm_irq->gsi_assert_count[idx] ) >>> { >>> >>> >>> >>> _______________________________________________ >>> Xen-devel mailing list >>> Xen-devel@lists.xensource.com >>> http://lists.xensource.com/xen-devel > > >