All of lore.kernel.org
 help / color / mirror / Atom feed
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Cc: Jan Beulich <JBeulich@suse.com>, xen-devel <xen-devel@lists.xen.org>
Subject: Re: [PVH]: Help: msi.c
Date: Tue, 18 Dec 2012 16:16:13 -0500	[thread overview]
Message-ID: <20121218211613.GA5697@phenom.dumpdata.com> (raw)
In-Reply-To: <alpine.DEB.2.02.1212131409040.17523@kaball.uk.xensource.com>

On Thu, Dec 13, 2012 at 02:25:16PM +0000, Stefano Stabellini wrote:
> On Thu, 13 Dec 2012, Jan Beulich wrote:
> > >>> On 13.12.12 at 13:19, Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> > wrote:
> > > On Thu, 13 Dec 2012, Jan Beulich wrote:
> > >> >>> On 13.12.12 at 02:43, Mukesh Rathor <mukesh.rathor@oracle.com> wrote:
> > >> > On Wed, 12 Dec 2012 17:15:23 -0800
> > >> > Mukesh Rathor <mukesh.rathor@oracle.com> wrote:
> > >> > 
> > >> >> On Tue, 11 Dec 2012 12:10:19 +0000
> > >> >> Stefano Stabellini <stefano.stabellini@eu.citrix.com> wrote:
> > >> >> 
> > >> >> > On Tue, 11 Dec 2012, Mukesh Rathor wrote:
> > >> >> > > On Mon, 10 Dec 2012 09:43:34 +0000
> > >> >> > > "Jan Beulich" <JBeulich@suse.com> wrote:
> > >> >> > 
> > >> >> > That's strange because AFAIK Linux is never editing the MSI-X
> > >> >> > entries directly: give a look at
> > >> >> > arch/x86/pci/xen.c:xen_initdom_setup_msi_irqs, Linux only remaps
> > >> >> > MSIs into pirqs using hypercalls. Xen should be the only one to
> > >> >> > touch the real MSI-X table.
> > >> >> 
> > >> >> So, this is what's happening. The side effect of :
> > >> >> 
> > >> >>         if ( rangeset_add_range(mmio_ro_ranges, dev->msix_table.first,
> > >> >>                                 dev->msix_table.last) )
> > >> >>             WARN();
> > >> >>         if ( rangeset_add_range(mmio_ro_ranges, dev->msix_pba.first,
> > >> >>                                 dev->msix_pba.last) )
> > >> >>             WARN();
> > >> >> 
> > >> >> in msix_capability_init() in xen is that the dom0 EPT entries that
> > >> >> I've mapped are going from RW to read only. Then when dom0 accesses
> > >> >> it, I get EPT violation. In case of pure PV, the PTE entry to access
> > >> >> the iomem is RW, and the above rangeset adding doesn't affect it. I
> > >> >> don't understand why? Looking into that now...
> > >> 
> > >> As far as I was able to tell back at the time when I implemented
> > >> this, existing code shouldn't have mappings for these tables in
> > >> place at the time these ranges get added here. But I noted in
> > >> the patch description that this is a potential issue (and may need
> > >> fixing if deemed severe enough - back then, apparently nobody
> > >> really cared, perhaps largely because passthrough to PV guests
> > >> isn't considered fully secure anyway).
> > >> 
> > >> Now - did that change? I.e. can you describe where the mappings
> > >> come from that cause the problem here?
> > > 
> > > The generic Linux MSI-X handling code does that, before calling the
> > > arch specific msi setup function, for which we have a xen version
> > > (xen_initdom_setup_msi_irqs):
> > > 
> > > pci_enable_msix -> msix_capability_init -> msix_map_region
> > 
> > Ah, okay, (of course?) I had looked only at the forward ported
> > version of this. Is all that fiddling with the mask bits really
> > being suppressed properly when running under Xen? Otherwise
> > pv-ops is quite broken in this regard at present... And if it is,
> > I don't see what the respective ioremap() is good for here in
> > the Xen case.
> 
> Actually I think that you might be right: just looking at the code it
> seems that the mask bits get written to the table once as part of the
> initialization process:
> 
> pci_enable_msix -> msix_capability_init -> msix_program_entries
> 
> Unfortunately msix_program_entries is called few lines after
> arch_setup_msi_irqs, where we call PHYSDEVOP_map_pirq to map the MSI as
> a pirq.
> However after that is done, all the masking/unmask is done via irq_mask
> that we handle properly masking/unmasking the corresponding event
> channels.
> 
> 
> Possible solutions on top of my head:

There is also the potential to piggyback on Joerg's patches
that introduce a new x86_msi_ops: compose_msi_msg.

See here: https://lkml.org/lkml/2012/8/20/432
(I think there was also a more recent one posted at some point).

  parent reply	other threads:[~2012-12-18 21:16 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-08  1:46 [PVH]: Help: msi.c Mukesh Rathor
2012-12-10  9:43 ` Jan Beulich
2012-12-11  2:43   ` Mukesh Rathor
2012-12-11 12:10     ` Stefano Stabellini
2012-12-13  1:15       ` Mukesh Rathor
2012-12-13  1:43         ` Mukesh Rathor
2012-12-13 10:42           ` Jan Beulich
2012-12-13 12:19             ` Stefano Stabellini
2012-12-13 13:39               ` Jan Beulich
2012-12-13 14:25                 ` Stefano Stabellini
2012-12-14 20:08                   ` Mukesh Rathor
2012-12-17 12:42                     ` Stefano Stabellini
2012-12-17 12:57                       ` Jan Beulich
2012-12-17 14:16                         ` Stefano Stabellini
2012-12-17 15:28                           ` Jan Beulich
2012-12-18 21:16                   ` Konrad Rzeszutek Wilk [this message]
2012-12-19 11:19                     ` Stefano Stabellini
2012-12-19 15:37                       ` Konrad Rzeszutek Wilk
2012-12-20 11:49                         ` Stefano Stabellini
2012-12-21 21:01                           ` Konrad Rzeszutek Wilk
2013-01-04 16:57                             ` Stefano Stabellini
2013-01-08 19:49                               ` 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=20121218211613.GA5697@phenom.dumpdata.com \
    --to=konrad.wilk@oracle.com \
    --cc=JBeulich@suse.com \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=xen-devel@lists.xen.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: link
Be 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.