xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: linux-kernel@vger.kernel.org, xen-devel@lists.xensource.com
Subject: [PATCH] bug-fixes to hvc-xen driver in v3.4 (and earlier).
Date: Wed, 23 May 2012 13:46:58 -0400	[thread overview]
Message-ID: <1337795222-29946-1-git-send-email-konrad.wilk@oracle.com> (raw)

Three of the patches could be squashed in one, but it makes more sense
to review them as three. These patches fix the case of an PVHVM
guest not being able to resume propely b/c of hitting:

 142         BUG_ON(info->type != IRQT_UNBOUND && info->type != type);

(in events.c) and also adds a WARN to catch situations like these.

The reason for this is that the Xen python toolstack does not
setup HVM_PARAM_CONSOLE_EVTCHN parameter, so we would use the
default value (0).. and ended up using the same IRQ line as the
xen-platform-pci driver. Huh? Note: the 'xl' toolstack _does_
set it.

The reason is that the when the xen-platform-pci starts, it requests
an PIRQ, and the info structure in events.c is filled as such:

 info->type = IRQT_PIRQ
 info->events = 0
 info->irq = 28
 evtchn_to_irq[0] = 28

And when xen_hvc_init is called during bootup, it figures out the
event from HVM_PARAM_CONSOLE_EVTCHN as zero, and plugs them in:

 532                 info->irq = bind_evtchn_to_irq(info->evtchn);

getting IRQ 28 as bind_evtchn_to_irq does a quick lookup:

 818         irq = evtchn_to_irq[evtchn];

and gives an already used IRQ line.

When we suspend the guest (xm save), then try to resume, we call
xen_console_resume, which does:

301         if (info != NULL && info->irq)
302                 rebind_evtchn_irq(info->evtchn, info->irq);

and that triggers the BUG_ON mentioned above (b/c the type
we want is IRQT_EVTCHN and the type info->type is IRQT_PIRQ).

 drivers/tty/hvc/hvc_xen.c |   24 +++++++++++-------------
 drivers/xen/events.c      |   11 +++++++++--
 2 files changed, 20 insertions(+), 15 deletions(-)

             reply	other threads:[~2012-05-23 17:46 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-23 17:46 Konrad Rzeszutek Wilk [this message]
2012-05-23 17:46 ` [PATCH 1/4] xen/hvc: Collapse error logic Konrad Rzeszutek Wilk
2012-05-24 10:33   ` Stefano Stabellini
2012-05-23 17:47 ` [PATCH 2/4] xen/hvc: Fix error cases around HVM_PARAM_CONSOLE_PFN Konrad Rzeszutek Wilk
2012-05-24 10:47   ` [Xen-devel] " Stefano Stabellini
2012-05-24 17:31     ` Konrad Rzeszutek Wilk
2012-05-24 18:18       ` Konrad Rzeszutek Wilk
2012-05-23 17:47 ` [PATCH 3/4] xen/hvc: Check HVM_PARAM_CONSOLE_[EVTCHN|PFN] for correctness Konrad Rzeszutek Wilk
2012-05-24 10:51   ` Stefano Stabellini
2012-05-24 18:24     ` [Xen-devel] " Konrad Rzeszutek Wilk
2012-05-25  9:13       ` Stefano Stabellini
2012-05-23 17:47 ` [PATCH 4/4] xen/events: Add WARN_ON when quick lookup found invalid type Konrad Rzeszutek Wilk
2012-05-24 10:58   ` [Xen-devel] " Stefano Stabellini
2012-05-24 17:29     ` Konrad Rzeszutek Wilk
2012-05-24 18:28     ` Konrad Rzeszutek Wilk
2012-05-25  9:18       ` Stefano Stabellini
2012-05-25  9:19         ` Stefano Stabellini
2012-05-25 13:42           ` Konrad Rzeszutek Wilk

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=1337795222-29946-1-git-send-email-konrad.wilk@oracle.com \
    --to=konrad.wilk@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=xen-devel@lists.xensource.com \
    /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: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).