Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1399949

Re: [PATCH] usb: dwc2: fix regression on big-endian PowerPC/ARM systems

From Arnd Bergmann <arnd@arndb.de>
Newsgroups linux.kernel
Subject Re: [PATCH] usb: dwc2: fix regression on big-endian PowerPC/ARM systems
Date 2016-05-12 13:40 +0200
Message-ID <rxX8e-4Hz-17@gated-at.bofh.it> (permalink)
References <rxWlP-3Oh-5@gated-at.bofh.it> <rxWYz-4BO-27@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Thursday 12 May 2016 14:25:49 Felipe Balbi wrote:
> >  {
> >       u32 value = __raw_readl(addr);
> >  
> > -     /* In order to preserve endianness __raw_* operation is used. Therefore
> > -      * a barrier is needed to ensure IO access is not re-ordered across
> > +     /* in order to preserve endianness __raw_* operation is used. therefore
> > +      * a barrier is needed to ensure io access is not re-ordered across
> >        * reads or writes
> >        */
> >       mb();
> > @@ -81,15 +93,32 @@ static inline void dwc2_writel(u32 value, void __iomem *addr)
> >       __raw_writel(value, addr);
> >  
> >       /*
> > -      * In order to preserve endianness __raw_* operation is used. Therefore
> > -      * a barrier is needed to ensure IO access is not re-ordered across
> > +      * in order to preserve endianness __raw_* operation is used. therefore
> > +      * a barrier is needed to ensure io access is not re-ordered across
> >        * reads or writes
> >        */
> >       mb();
> > -#ifdef DWC2_LOG_WRITES
> > -     pr_info("INFO:: wrote %08x to %p\n", value, addr);
> > +#ifdef dwc2_log_writes
> > +     pr_info("info:: wrote %08x to %p\n", value, addr);
> >  #endif
> >  }
> > +#else

Oops, the accidental lowercase conversion is still in here, I'll fix it
up once we agree on the approach.

> I still think this is something that should be handled at MIPS side, no ?

As I explained, there isn't really anything we can do in MIPS code
because of the way they have to handle PCI.

> How many more drivers will we have to 'fix' like this ?

Endianess problems will keep coming up, and we have hundreds or thousands
of drivers that are written with a particular design in mind that could
be wrong as soon as someone chooses to build an SoC that does things
differently. Once that happens, we'll fix them.

Also, Christian has already posted a better version of the patch
that fixes this driver in an architecture independent way, but we still
need a workaround for the stable backports.

	Arnd

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH] usb: dwc2: fix regression on big-endian PowerPC/ARM systems Arnd Bergmann <arnd@arndb.de> - 2016-05-12 12:50 +0200
  Re: [PATCH] usb: dwc2: fix regression on big-endian PowerPC/ARM systems Felipe Balbi <felipe.balbi@linux.intel.com> - 2016-05-12 13:30 +0200
    Re: [PATCH] usb: dwc2: fix regression on big-endian PowerPC/ARM systems Arnd Bergmann <arnd@arndb.de> - 2016-05-12 13:40 +0200
      Re: [PATCH] usb: dwc2: fix regression on big-endian PowerPC/ARM systems Felipe Balbi <felipe.balbi@linux.intel.com> - 2016-05-12 13:50 +0200
        Re: [PATCH] usb: dwc2: fix regression on big-endian PowerPC/ARM systems Arnd Bergmann <arnd@arndb.de> - 2016-05-12 14:00 +0200

csiph-web