All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefano Stabellini <sstabellini@kernel.org>
To: Julien Grall <julien.grall@arm.com>
Cc: Bhupinder Thakur <bhupinder.thakur@linaro.org>,
	xen-devel@lists.xenproject.org,
	Stefano Stabellini <sstabellini@kernel.org>,
	Andre Przywara <andre.przywara@arm.com>
Subject: Re: [PATCH 04/17 v5] xen/arm: vpl011: Add SBSA UART emulation in Xen
Date: Fri, 23 Jun 2017 11:28:54 -0700 (PDT)	[thread overview]
Message-ID: <alpine.DEB.2.10.1706231123110.12819@sstabellini-ThinkPad-X260> (raw)
In-Reply-To: <f9962094-89b3-e337-cff9-ea9fe3352cf0@arm.com>

On Fri, 23 Jun 2017, Julien Grall wrote:
> Hi Stefano,
> 
> On 22/06/17 23:53, Stefano Stabellini wrote:
> > On Thu, 22 Jun 2017, Bhupinder Thakur wrote:
> > > +static void vpl011_write_data(struct domain *d, uint8_t data)
> > > +{
> > > +    unsigned long flags;
> > > +    struct vpl011 *vpl011 = &d->arch.vpl011;
> > > +    struct xencons_interface *intf = vpl011->ring_buf;
> > > +    XENCONS_RING_IDX out_cons, out_prod;
> > > +
> > > +    VPL011_LOCK(d, flags);
> > > +
> > > +    out_cons = intf->out_cons;
> > > +    out_prod = intf->out_prod;
> > > +
> > > +    smp_rmb();
> > 
> > This should be
> >        smp_mb();
> 
> To speed up discussion, it would have been nice to give a bit more details why
> you think smp_rmb() is not enough.
> 
> In this case, I think smp_rmb() is fine because all the write we care depends
> on out_cons and out_prod. So the processor cannot re-order it.

We discussed these barriers at length when I published the pvcalls and
xen 9pfs protocols, see for example
alpine.DEB.2.10.1612021318340.2777@sstabellini-ThinkPad-X260. Please
refer to "Ring Usage" in docs/misc/9pfs.markdown and "Workflow" in
docs/misc/pvcalls.markdown. I would like to keep them consistent across
protocols (the console protocol works exactly like pvcalls and xen 9pfs
in that respect).


> > > +    /*
> > > +     * It is expected that the ring is not full when this function is
> > > called
> > > +     * as the guest is expected to write to the data register only when
> > > the
> > > +     * TXFF flag is not set.
> > > +     * In case the guest does write even when the TXFF flag is set then
> > > the
> > > +     * data will be silently dropped.
> > > +     */
> > > +    if ( xencons_queued(out_prod, out_cons, sizeof(intf->out)) !=
> > > +         sizeof (intf->out) )
> > > +    {
> > > +        intf->out[xencons_mask(out_prod, sizeof(intf->out))] = data;
> > > +        out_prod += 1;
> > > +        smp_wmb();
> > > +        intf->out_prod = out_prod;
> > > +    }
> > > +    else
> > > +        gprintk(XENLOG_ERR, "vpl011: Unexpected OUT ring buffer full\n");
> > > +
> > > +    if ( xencons_queued(out_prod, out_cons, sizeof(intf->out)) ==
> > > +         sizeof (intf->out) )
> > > +    {
> > > +        vpl011->uartfr |= TXFF;
> > > +        vpl011->uartris &= ~TXI;
> > > +    }
> > > +
> > > +    vpl011->uartfr |= BUSY;
> > > +
> > > +    vpl011->uartfr &= ~TXFE;
> > > +
> > > +    vpl011_update_interrupt_status(d);
> > > +
> > > +    VPL011_UNLOCK(d, flags);
> > > +
> > > +    /*
> > > +     * Send an event to console backend to indicate that there is
> > > +     * data in the OUT ring buffer.
> > > +     */
> > > +    notify_via_xen_event_channel(d, vpl011->evtchn);
> > > +}
> 
> Cheers,
> 
> -- 
> Julien Grall
> 

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

  reply	other threads:[~2017-06-23 18:28 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-22  7:38 [PATCH 00/17 v5] SBSA UART emulation support in Xen Bhupinder Thakur
2017-06-22  7:38 ` [PATCH 01/17 v5] xen/arm: vpl011: Move vgic register access functions to vreg.h Bhupinder Thakur
2017-06-22  7:38 ` [PATCH 02/17 v5] xen/arm: vpl011: Rename vgic_reg* functions definitions and calls to vreg_reg* Bhupinder Thakur
2017-06-23  9:42   ` Julien Grall
2017-06-22  7:38 ` [PATCH 03/17 v5] xen/arm: vpl011: Define common ring buffer helper functions in console.h Bhupinder Thakur
2017-06-22 22:36   ` Stefano Stabellini
2017-06-28 17:16   ` Wei Liu
2017-06-22  7:38 ` [PATCH 04/17 v5] xen/arm: vpl011: Add SBSA UART emulation in Xen Bhupinder Thakur
2017-06-22 22:53   ` Stefano Stabellini
2017-06-23 12:33     ` Julien Grall
2017-06-23 18:28       ` Stefano Stabellini [this message]
2017-06-23 19:58         ` Julien Grall
2017-06-23 13:10   ` Julien Grall
2017-06-22  7:38 ` [PATCH 05/17 v5] xen/arm: vpl011: Allocate a new GFN in the toolstack for vuart Bhupinder Thakur
2017-06-22  7:38 ` [PATCH 06/17 v5] xen/arm: vpl011: Add support for vuart in libxl Bhupinder Thakur
2017-06-22 22:57   ` Stefano Stabellini
2017-06-28 17:16   ` Wei Liu
2017-06-22  7:38 ` [PATCH 07/17 v5] xen/arm: vpl011: Rearrange xen header includes in alphabetical order in domctl.c Bhupinder Thakur
2017-06-22 22:58   ` Stefano Stabellini
2017-06-23 13:14     ` Julien Grall
2017-06-22  7:38 ` [PATCH 08/17 v5] xen/arm: vpl011: Add a new domctl API to initialize vpl011 Bhupinder Thakur
2017-06-22 23:04   ` Stefano Stabellini
2017-06-23 13:17     ` Julien Grall
2017-06-23 13:25       ` Julien Grall
2017-06-23 17:57         ` Stefano Stabellini
2017-06-27 13:43         ` Bhupinder Thakur
2017-06-27 13:57           ` Julien Grall
2017-06-23 13:26   ` Julien Grall
2017-06-28 17:16   ` Wei Liu
2017-06-22  7:38 ` [PATCH 09/17 v5] xen/arm: vpl011: Add a new vuart node in the xenstore Bhupinder Thakur
2017-06-22 23:06   ` Stefano Stabellini
2017-06-28 17:16   ` Wei Liu
2017-06-22  7:38 ` [PATCH 10/17 v5] xen/arm: vpl011: Modify xenconsole to define and use a new console structure Bhupinder Thakur
2017-06-22 23:20   ` Stefano Stabellini
2017-06-28 17:16   ` Wei Liu
2017-06-22  7:38 ` [PATCH 11/17 v5] xen/arm: vpl011: Rename the console structure field conspath to xspath Bhupinder Thakur
2017-06-22 23:21   ` Stefano Stabellini
2017-06-28 17:16   ` Wei Liu
2017-06-22  7:38 ` [PATCH 12/17 v5] xen/arm: vpl011: Modify xenconsole functions to take console structure as input Bhupinder Thakur
2017-06-28 17:16   ` Wei Liu
2017-06-22  7:38 ` [PATCH 13/17 v5] xen/arm: vpl011: Modify xenconsole to support multiple consoles Bhupinder Thakur
2017-06-22 23:51   ` Stefano Stabellini
2017-06-28 17:16   ` Wei Liu
2017-07-07 13:52     ` Bhupinder Thakur
2017-07-07 14:00       ` Wei Liu
2017-07-07 14:19         ` Bhupinder Thakur
2017-07-07 14:23           ` Wei Liu
2017-06-22  7:38 ` [PATCH 14/17 v5] xen/arm: vpl011: Add support for vuart console in xenconsole Bhupinder Thakur
2017-06-23  0:02   ` Stefano Stabellini
2017-06-28 17:17   ` Wei Liu
2017-06-22  7:38 ` [PATCH 15/17 v5] xen/arm: vpl011: Add a new vuart console type to xenconsole client Bhupinder Thakur
2017-06-22 23:09   ` Stefano Stabellini
2017-06-28 17:17   ` Wei Liu
2017-06-29  9:33     ` Bhupinder Thakur
2017-06-29 10:11       ` Wei Liu
2017-06-22  7:38 ` [PATCH 16/17 v5] xen/arm: vpl011: Add a pl011 uart DT node in the guest device tree Bhupinder Thakur
2017-06-28 17:17   ` Wei Liu
2017-06-22  7:38 ` [PATCH 17/17 v5] xen/arm: vpl011: Update documentation for vuart console support Bhupinder Thakur
2017-06-23 10:42 ` [PATCH 00/17 v5] SBSA UART emulation support in Xen Julien Grall
2017-06-23 17:58   ` Stefano Stabellini
2017-07-04  7:31   ` Bhupinder Thakur
2017-07-05  8:36     ` Julien Grall
2017-07-05 19:06       ` Stefano Stabellini
2017-07-05 19:43         ` Julien Grall
2017-07-05 19:51           ` Julien Grall
2017-07-05 20:05           ` Stefano Stabellini
2017-07-05 20:18             ` Julien Grall

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=alpine.DEB.2.10.1706231123110.12819@sstabellini-ThinkPad-X260 \
    --to=sstabellini@kernel.org \
    --cc=andre.przywara@arm.com \
    --cc=bhupinder.thakur@linaro.org \
    --cc=julien.grall@arm.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: 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.