From: "Jan Beulich" <JBeulich@suse.com> To: xen-devel <xen-devel@lists.xenproject.org> Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wei.liu2@citrix.com>, Roger Pau Monne <roger.pau@citrix.com> Subject: [PATCH 2/4] x86/IRQ: bail early from irq_guest_eoi_timer_fn() when nothing is in flight Date: Wed, 08 May 2019 06:46:51 -0600 [thread overview] Message-ID: <5CD2CFBB020000780022CCC6@prv1-mh.provo.novell.com> (raw) In-Reply-To: <5CD2CDEC020000780022CC95@prv1-mh.provo.novell.com> There's no point entering the loop in the function in this case. Instead there still being something in flight _after_ the loop would be an actual problem: No timer would be running anymore for issuing the EOI eventually, and hence this IRQ (and possibly lower priority ones) would be blocked, perhaps indefinitely. Issue a warning instead and prefer breaking some (presumably misbehaving) guest over stalling perhaps the entire system. Signed-off-by: Jan Beulich <jbeulich@suse.com> --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -1115,7 +1115,7 @@ static void irq_guest_eoi_timer_fn(void action = (irq_guest_action_t *)desc->action; - if ( timer_is_active(&action->eoi_timer) ) + if ( !action->in_flight || timer_is_active(&action->eoi_timer) ) goto out; if ( action->ack_type != ACKTYPE_NONE ) @@ -1130,8 +1130,10 @@ static void irq_guest_eoi_timer_fn(void } } - if ( action->in_flight != 0 ) - goto out; + if ( action->in_flight ) + printk(XENLOG_G_WARNING + "IRQ%d: %d handlers still in flight at forced EOI\n", + desc->irq, action->in_flight); switch ( action->ack_type ) { _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
WARNING: multiple messages have this Message-ID (diff)
From: "Jan Beulich" <JBeulich@suse.com> To: "xen-devel" <xen-devel@lists.xenproject.org> Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wei.liu2@citrix.com>, Roger Pau Monne <roger.pau@citrix.com> Subject: [Xen-devel] [PATCH 2/4] x86/IRQ: bail early from irq_guest_eoi_timer_fn() when nothing is in flight Date: Wed, 08 May 2019 06:46:51 -0600 [thread overview] Message-ID: <5CD2CFBB020000780022CCC6@prv1-mh.provo.novell.com> (raw) Message-ID: <20190508124651.X0RKEqH2JvzhvnPwR3aNBwjPM02J03dbWUS1zVO1vxc@z> (raw) In-Reply-To: <5CD2CDEC020000780022CC95@prv1-mh.provo.novell.com> There's no point entering the loop in the function in this case. Instead there still being something in flight _after_ the loop would be an actual problem: No timer would be running anymore for issuing the EOI eventually, and hence this IRQ (and possibly lower priority ones) would be blocked, perhaps indefinitely. Issue a warning instead and prefer breaking some (presumably misbehaving) guest over stalling perhaps the entire system. Signed-off-by: Jan Beulich <jbeulich@suse.com> --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -1115,7 +1115,7 @@ static void irq_guest_eoi_timer_fn(void action = (irq_guest_action_t *)desc->action; - if ( timer_is_active(&action->eoi_timer) ) + if ( !action->in_flight || timer_is_active(&action->eoi_timer) ) goto out; if ( action->ack_type != ACKTYPE_NONE ) @@ -1130,8 +1130,10 @@ static void irq_guest_eoi_timer_fn(void } } - if ( action->in_flight != 0 ) - goto out; + if ( action->in_flight ) + printk(XENLOG_G_WARNING + "IRQ%d: %d handlers still in flight at forced EOI\n", + desc->irq, action->in_flight); switch ( action->ack_type ) { _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
next prev parent reply other threads:[~2019-05-08 12:46 UTC|newest] Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-05-08 12:39 [PATCH 0/4] x86: EOI timer corrections / improvements Jan Beulich 2019-05-08 12:39 ` [Xen-devel] " Jan Beulich 2019-05-08 12:46 ` [PATCH 1/4] x86/IRQ: don't keep EOI timer running without need Jan Beulich 2019-05-08 12:46 ` [Xen-devel] " Jan Beulich 2019-05-16 10:32 ` Roger Pau Monné 2019-05-16 10:32 ` [Xen-devel] " Roger Pau Monné 2019-05-16 10:50 ` Jan Beulich 2019-05-16 10:50 ` [Xen-devel] " Jan Beulich 2019-05-16 11:03 ` Roger Pau Monné 2019-05-16 11:03 ` [Xen-devel] " Roger Pau Monné 2019-06-05 17:04 ` Andrew Cooper 2019-06-06 8:08 ` Jan Beulich 2019-06-06 9:30 ` Andrew Cooper 2019-05-08 12:46 ` Jan Beulich [this message] 2019-05-08 12:46 ` [Xen-devel] [PATCH 2/4] x86/IRQ: bail early from irq_guest_eoi_timer_fn() when nothing is in flight Jan Beulich 2019-05-16 11:37 ` Roger Pau Monné 2019-05-16 11:37 ` [Xen-devel] " Roger Pau Monné 2019-05-16 12:02 ` Jan Beulich 2019-05-16 12:02 ` [Xen-devel] " Jan Beulich 2019-05-16 13:44 ` Roger Pau Monné 2019-05-16 13:44 ` [Xen-devel] " Roger Pau Monné 2019-06-05 17:15 ` Andrew Cooper 2019-06-06 8:17 ` Jan Beulich 2019-06-06 11:34 ` Andrew Cooper 2019-06-06 11:43 ` Jan Beulich 2019-06-06 11:45 ` Andrew Cooper 2019-05-08 12:47 ` [PATCH 3/4] x86/IRQ: relax locking in irq_guest_eoi_timer_fn() Jan Beulich 2019-05-08 12:47 ` [Xen-devel] " Jan Beulich 2019-05-16 13:48 ` Roger Pau Monné 2019-05-16 13:48 ` [Xen-devel] " Roger Pau Monné 2019-06-05 17:16 ` Andrew Cooper 2019-05-08 12:48 ` [PATCH 4/4] x86/IRQ: ACKTYPE_NONE cannot make it into irq_guest_eoi_timer_fn() Jan Beulich 2019-05-08 12:48 ` [Xen-devel] " Jan Beulich 2019-05-16 13:52 ` Roger Pau Monné 2019-05-16 13:52 ` [Xen-devel] " Roger Pau Monné 2019-05-16 14:48 ` Jan Beulich 2019-05-16 14:48 ` [Xen-devel] " Jan Beulich 2019-05-17 7:04 ` Jan Beulich 2019-05-17 7:04 ` [Xen-devel] " Jan Beulich 2019-06-05 17:18 ` Andrew Cooper
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=5CD2CFBB020000780022CCC6@prv1-mh.provo.novell.com \ --to=jbeulich@suse.com \ --cc=andrew.cooper3@citrix.com \ --cc=roger.pau@citrix.com \ --cc=wei.liu2@citrix.com \ --cc=xen-devel@lists.xenproject.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.