All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Roger Pau Monné" <roger.pau@citrix.com>
To: David Woodhouse <dwmw2@infradead.org>
Cc: keir@xen.org, Andra-Irina Paraschiv <andraprs@amazon.com>,
	andrew.cooper3@citrix.com, xen-devel@lists.xen.org,
	jbeulich@suse.com, "Jianzhong, Chang" <changjzh@gmail.com>
Subject: Re: xen vtd : set msi guest_masked 0 by default
Date: Mon, 21 May 2018 14:10:19 +0200	[thread overview]
Message-ID: <20180521121019.3qvjlqhg5u3g5xi4@MacBook-Pro-de-Roger.local> (raw)
In-Reply-To: <1526903179.8186.43.camel@infradead.org>

On Mon, May 21, 2018 at 12:46:19PM +0100, David Woodhouse wrote:
> On Tue, 2016-01-26 at 09:34 +0800, Jianzhong,Chang wrote:
> > There are some problems when msi guest_masked is set to 1 by default.
> > When guest os is windows 2008 r2 server,
> > the device(eg X540-AT2 vf) is not initialized correctly.
> > Host will always receive message like this :"VF Reset msg received from vf".
> > Guest has network connectivity issues,
> > and can not correctly receive/send the packet.
> 
> In other words "the guest doesn't get any interrupts from the NIC".
> 
> > So, guest_masked is set to 0 by default.
> 
> This seems consistent with the PCI spec, which says that "After reset,
> the state of all implemented Mask and Pending bits is 0 (no vectors are
> masked and no messages are pending)."
> 
> That's what we *used* to have in Xen, before these commits changed it
> to assume that IRQs were guest-masked by default:
> 
> https://xenbits.xen.org/gitweb/?p=xen.git;a=commitdiff;h=ad28e42bd1d28d746988ed71654e8aa670629753
> https://xenbits.xen.org/gitweb/?p=xen.git;a=commitdiff;h=84d6add5593d865736831d150da7c38588f669f6
> 
> > --- a/xen/arch/x86/msi.c
> > +++ b/xen/arch/x86/msi.c
> > @@ -512,7 +512,7 @@ void guest_mask_msi_irq(struct irq_desc *desc, bool_t mask)
> >  
> >  static unsigned int startup_msi_irq(struct irq_desc *desc)
> >  {
> > -    if ( unlikely(!msi_set_mask_bit(desc, 0, !!(desc->status & IRQ_GUEST))) )
> > +    if ( unlikely(!msi_set_mask_bit(desc, 0, 0) ))
> >          WARN();
> >      return 0;
> >  }
> 
> In testing, this part actually seems to make the difference in
> practice. Interrupts now work, and Windows guests have connectivity
> again.
> 
> > @@ -972,7 +972,7 @@ static int msix_capability_init(struct pci_dev *dev,
> >          entry->msi_attrib.entry_nr = msi->entry_nr;
> >          entry->msi_attrib.maskbit = 1;
> >          entry->msi_attrib.host_masked = 1;
> > -        entry->msi_attrib.guest_masked = 1;
> > +        entry->msi_attrib.guest_masked = 0;
> >          entry->msi_attrib.pos = pos;
> >          entry->irq = msi->irq;
> >          entry->dev = dev;
> 
> That also seems correct though, since it reflects the actual state we
> intend to emulate.

Hm, I think I might have fixed this issue, see:

https://git.qemu.org/?p=qemu.git;a=commit;h=a8036336609d2e184fc3543a4c439c0ba7d7f3a2

And the Xen side:

http://xenbits.xen.org/gitweb/?p=xen.git;a=commit;h=69d99d1b223fc5082400374698ddd7486e5ea953

The original report of the issue is at:

https://lists.xenproject.org/archives/html/xen-devel/2017-07/msg00915.html

Roger.

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

  reply	other threads:[~2018-05-21 12:10 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-26  1:34 [PATCH] xen vtd : set msi guest_masked 0 by default Jianzhong,Chang
2016-01-26 12:56 ` Jan Beulich
2016-01-26 22:24   ` Tian, Kevin
2016-03-07  8:12   ` jzh Chang
2016-03-07 10:57     ` Jan Beulich
2018-05-21 11:46 ` David Woodhouse
2018-05-21 12:10   ` Roger Pau Monné [this message]
2018-05-23  7:01     ` David Woodhouse
2018-06-18  9:35       ` [PATCH qemu-xen-traditional] xen/pt: allow QEMU to request MSI unmasking at bind time Andra Paraschiv
2018-06-18 11:43         ` Roger Pau Monné
2018-06-21  8:37           ` Paraschiv, Andra-Irina
2018-07-31 10:22             ` Woodhouse, David
2018-09-17  8:40               ` Paraschiv, Andra-Irina
2018-10-09 13:55                 ` Ian Jackson
2018-10-09 15:23                   ` Paraschiv, Andra-Irina
2018-10-10 14:56                     ` Ian Jackson
2018-10-10 19:06                       ` Paraschiv, Andra-Irina
2018-06-18 10:31       ` xen vtd : set msi guest_masked 0 by default Paraschiv, Andra-Irina

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=20180521121019.3qvjlqhg5u3g5xi4@MacBook-Pro-de-Roger.local \
    --to=roger.pau@citrix.com \
    --cc=andraprs@amazon.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=changjzh@gmail.com \
    --cc=dwmw2@infradead.org \
    --cc=jbeulich@suse.com \
    --cc=keir@xen.org \
    --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.