linux-mips.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Shannon Nelson <snelson@pensando.io>
To: Thomas Bogendoerfer <tbogendoerfer@suse.de>,
	Ralf Baechle <ralf@linux-mips.org>,
	Paul Burton <paul.burton@mips.com>,
	James Hogan <jhogan@kernel.org>,
	"David S. Miller" <davem@davemloft.net>,
	linux-mips@vger.kernel.org, linux-kernel@vger.kernel.org,
	netdev@vger.kernel.org
Subject: Re: [PATCH v2 net-next 02/15] MIPS: SGI-IP27: restructure ioc3 register access
Date: Thu, 29 Aug 2019 14:26:35 -0700	[thread overview]
Message-ID: <d9192f8c-a8a6-86aa-62eb-91826163bb43@pensando.io> (raw)
In-Reply-To: <20190829155014.9229-3-tbogendoerfer@suse.de>

On 8/29/19 8:50 AM, Thomas Bogendoerfer wrote:
> Break up the big ioc3 register struct into functional pieces to
> make use in sub-function drivers more straightforward. And while
> doing that get rid of all volatile access by using readX/writeX.
>
> Signed-off-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
> ---

> diff --git a/arch/mips/sgi-ip27/ip27-console.c b/arch/mips/sgi-ip27/ip27-console.c
> index 6bdb48d41276..5886bee89d06 100644
> --- a/arch/mips/sgi-ip27/ip27-console.c
> +++ b/arch/mips/sgi-ip27/ip27-console.c
> @@ -35,6 +35,7 @@ void prom_putchar(char c)
>   {
>   	struct ioc3_uartregs *uart = console_uart();
>   
> -	while ((uart->iu_lsr & 0x20) == 0);
> -	uart->iu_thr = c;
> +	while ((readb(&uart->iu_lsr) & 0x20) == 0)
> +		;
> +	writeb(c, &uart->iu_thr);
>   }

Is it ever possible to never see your bit get set?
Instead of a tight forever spin, you might add a short delay and a retry 
limit.

I see this in several other times in the following code as well.  It 
might be interesting to see how many times through and perhaps how many 
usecs are normally spent in these loops.

Not a binding request, just a thought...

sln



  reply	other threads:[~2019-08-29 21:26 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-29 15:49 [PATCH v2 net-next 00/15] ioc3-eth improvements Thomas Bogendoerfer
2019-08-29 15:49 ` [PATCH v2 net-next 01/15] MIPS: SGI-IP27: remove ioc3 ethernet init Thomas Bogendoerfer
2019-08-29 15:50 ` [PATCH v2 net-next 02/15] MIPS: SGI-IP27: restructure ioc3 register access Thomas Bogendoerfer
2019-08-29 21:26   ` Shannon Nelson [this message]
2019-08-29 15:50 ` [PATCH v2 net-next 03/15] net: sgi: ioc3-eth: remove checkpatch errors/warning Thomas Bogendoerfer
2019-08-29 15:50 ` [PATCH v2 net-next 04/15] net: sgi: ioc3-eth: use defines for constants dealing with desc rings Thomas Bogendoerfer
2019-08-29 15:50 ` [PATCH v2 net-next 05/15] net: sgi: ioc3-eth: allocate space for desc rings only once Thomas Bogendoerfer
2019-08-29 21:05   ` Jakub Kicinski
2019-08-29 22:00     ` Thomas Bogendoerfer
2019-08-29 22:05       ` Jakub Kicinski
2019-08-30  8:09         ` Thomas Bogendoerfer
2019-08-29 15:50 ` [PATCH v2 net-next 06/15] net: sgi: ioc3-eth: get rid of ioc3_clean_rx_ring() Thomas Bogendoerfer
2019-08-29 15:50 ` [PATCH v2 net-next 07/15] net: sgi: ioc3-eth: separate tx and rx ring handling Thomas Bogendoerfer
2019-08-29 15:50 ` [PATCH v2 net-next 08/15] net: sgi: ioc3-eth: introduce chip start function Thomas Bogendoerfer
2019-08-29 15:50 ` [PATCH v2 net-next 09/15] net: sgi: ioc3-eth: split ring cleaning/freeing and allocation Thomas Bogendoerfer
2019-08-29 15:50 ` [PATCH v2 net-next 10/15] net: sgi: ioc3-eth: refactor rx buffer allocation Thomas Bogendoerfer
2019-08-29 15:50 ` [PATCH v2 net-next 11/15] net: sgi: ioc3-eth: use dma-direct for dma allocations Thomas Bogendoerfer
2019-08-29 15:50 ` [PATCH v2 net-next 12/15] net: sgi: ioc3-eth: use csum_fold Thomas Bogendoerfer
2019-08-29 15:50 ` [PATCH v2 net-next 13/15] net: sgi: ioc3-eth: Fix IPG settings Thomas Bogendoerfer
2019-08-29 15:50 ` [PATCH v2 net-next 14/15] net: sgi: ioc3-eth: protect emcr in all cases Thomas Bogendoerfer
2019-08-29 15:50 ` [PATCH v2 net-next 15/15] net: sgi: ioc3-eth: no need to stop queue set_multicast_list Thomas Bogendoerfer
2019-08-29 21:15 ` [PATCH v2 net-next 00/15] ioc3-eth improvements Jakub Kicinski

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=d9192f8c-a8a6-86aa-62eb-91826163bb43@pensando.io \
    --to=snelson@pensando.io \
    --cc=davem@davemloft.net \
    --cc=jhogan@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=paul.burton@mips.com \
    --cc=ralf@linux-mips.org \
    --cc=tbogendoerfer@suse.de \
    /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).