Mailing List Archive

[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] )
{
Re: [PATCH] x86/vioapic: clear remote IRR when switching RTE to edge triggered mode [ In reply to ]
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



_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
Re: [PATCH] x86/vioapic: clear remote IRR when switching RTE to edge triggered mode [ In reply to ]
>>> 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




_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
Re: [PATCH] x86/vioapic: clear remote IRR when switching RTE to edge triggered mode [ In reply to ]
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
>
>
>



_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel