diff mbox

Xen: do hv callback accounting only on x86

Message ID 5057041.71iuvlcH4G@wuerfel (mailing list archive)
State New, archived
Headers show

Commit Message

Arnd Bergmann March 25, 2014, 3:52 p.m. UTC
Patch 99c8b79d3c1 "xen: Add proper irq accounting for HYPERCALL vector"
added a call to inc_irq_stat(irq_hv_callback_count) in common Xen code,
however both the inc_irq_stat function and the irq_hv_callback_count
counter are architecture specific.

This makes the code build again on ARM by moving the call into the
existing #ifdef CONFIG_X86. We may want to later do the same implementation
on ARM that x86 has though.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: David Vrabel <david.vrabel@citrix.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Xen <xen-devel@lists.xenproject.org>

Comments

Arnd Bergmann March 25, 2014, 4 p.m. UTC | #1
On Tuesday 25 March 2014 16:52:25 Arnd Bergmann wrote:
> diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c
> index 5dd2ddf..8b91c256 100644
> --- a/drivers/xen/events/events_base.c
> +++ b/drivers/xen/events/events_base.c
> @@ -1235,6 +1235,7 @@ void xen_evtchn_do_upcall(struct pt_regs *regs)
>  #ifdef CONFIG_X86
>         exit_idle();
>  #endif
> +       inc_irq_stat(irq_hv_callback_count);
> 
>         __xen_evtchn_do_upcall();
> 
> diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c
> index d5a3de8..dfa12a4 100644
> --- a/drivers/xen/events/events_base.c
> +++ b/drivers/xen/events/events_base.c
> @@ -1248,8 +1248,8 @@ void xen_evtchn_do_upcall(struct pt_regs *regs)
>         irq_enter();
>  #ifdef CONFIG_X86
>         exit_idle();
> -#endif
>         inc_irq_stat(irq_hv_callback_count);
> +#endif
>  
>         __xen_evtchn_do_upcall();

That was unintended: the first half of this email is actually the patch
that introduced the bug, while the second half is my workaround.
The way it's formatted, you won't be able to apply it without removing
the first half again. I'll wait if the approach is ok first and then
resend it properly if needed.

	Arnd
Julien Grall April 4, 2014, 11:41 a.m. UTC | #2
Hi,

(Adding Ian and Stefano).

On 03/25/2014 04:00 PM, Arnd Bergmann wrote:
> On Tuesday 25 March 2014 16:52:25 Arnd Bergmann wrote:
>> diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c
>> index 5dd2ddf..8b91c256 100644
>> --- a/drivers/xen/events/events_base.c
>> +++ b/drivers/xen/events/events_base.c
>> @@ -1235,6 +1235,7 @@ void xen_evtchn_do_upcall(struct pt_regs *regs)
>>  #ifdef CONFIG_X86
>>         exit_idle();
>>  #endif
>> +       inc_irq_stat(irq_hv_callback_count);
>>
>>         __xen_evtchn_do_upcall();
>>
>> diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c
>> index d5a3de8..dfa12a4 100644
>> --- a/drivers/xen/events/events_base.c
>> +++ b/drivers/xen/events/events_base.c
>> @@ -1248,8 +1248,8 @@ void xen_evtchn_do_upcall(struct pt_regs *regs)
>>         irq_enter();
>>  #ifdef CONFIG_X86
>>         exit_idle();
>> -#endif
>>         inc_irq_stat(irq_hv_callback_count);
>> +#endif
>>  
>>         __xen_evtchn_do_upcall();
> 
> That was unintended: the first half of this email is actually the patch
> that introduced the bug, while the second half is my workaround.
> The way it's formatted, you won't be able to apply it without removing
> the first half again. I'll wait if the approach is ok first and then
> resend it properly if needed.

Linus has merged xen/tip yesterday and building ARM with CONFIG_XEN=y is
now broken.

Is there any plan to push this patch (without the first half of course
:)) or reverting the following commit:
commit 99c8b79d3c165f8e2a6247c14bfa1429e7efe51f
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Sun Feb 23 21:40:21 2014 +0000

    xen: Add proper irq accounting for HYPERCALL vector

Sincerely yours,
Julien Grall April 4, 2014, 11:50 a.m. UTC | #3
On 04/04/2014 12:41 PM, Julien Grall wrote:
> Linus has merged xen/tip yesterday and building ARM with CONFIG_XEN=y is
> now broken.

My mistake, it's not because of xen/tip, but some other branches.
David Vrabel April 4, 2014, 12:15 p.m. UTC | #4
On 04/04/14 12:41, Julien Grall wrote:
> 
> Linus has merged xen/tip yesterday and building ARM with CONFIG_XEN=y is
> now broken.

Sorry, I couldn't add this patch to the xen tree at the time since the
change was on a different tree and then I forgot about it.

Now applied to devel/for-linus-3.15.

David
diff mbox

Patch

diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c
index 5dd2ddf..8b91c256 100644
--- a/drivers/xen/events/events_base.c
+++ b/drivers/xen/events/events_base.c
@@ -1235,6 +1235,7 @@  void xen_evtchn_do_upcall(struct pt_regs *regs)
 #ifdef CONFIG_X86
        exit_idle();
 #endif
+       inc_irq_stat(irq_hv_callback_count);

        __xen_evtchn_do_upcall();

diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c
index d5a3de8..dfa12a4 100644
--- a/drivers/xen/events/events_base.c
+++ b/drivers/xen/events/events_base.c
@@ -1248,8 +1248,8 @@  void xen_evtchn_do_upcall(struct pt_regs *regs)
 	irq_enter();
 #ifdef CONFIG_X86
 	exit_idle();
-#endif
 	inc_irq_stat(irq_hv_callback_count);
+#endif
 
 	__xen_evtchn_do_upcall();