lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 18 Mar 2015 18:50:14 +0530
From:	Arun Chandran <achandran@...sta.com>
To:	Ben Dooks <ben.dooks@...ethink.co.uk>
Cc:	linux-kernel@...ts.codethink.co.uk,
	Linux Networking List <netdev@...r.kernel.org>,
	Haavard Skinnemoen <hskinnemoen@...il.com>,
	Hans-Christian Egtvedt <egtvedt@...fundet.no>,
	Linux Kernel List <linux-kernel@...r.kernel.org>,
	Nicolas Ferre <nicolas.ferre@...el.com>
Subject: Re: [PATCH] net: macb: fix endian code for avr32

On Wed, Mar 18, 2015 at 6:46 PM, Arun Chandran <achandran@...sta.com> wrote:
> On Wed, Mar 18, 2015 at 4:27 PM, Ben Dooks <ben.dooks@...ethink.co.uk> wrote:
>>
>> [note this has yet to be compile tested on avr32]
>>
>> The changes to run the macb driver in 29af05aeb98e ("net: macb:
>
> Yes I mistakenly thought zynq board was the first to run it in
> BIG endian mode.
>
>> Add big endian CPU support") to support big endian operation on
>> ARM may not work on AVR32 which already is naturally big endian
>> architecture (and the driver already works here).
>>
>> In this case  the readl/writel relaxed will do the opposite of __raw
>> accesors which arleady work. Add an indirection of cdneth_ prefixed
>> accesors which are changed as necessary. Also do not issue the DMA
>> descritpor endian fetch configuration for AVR32.
>>
>> From discussions with Arnd Bergman, the following fix changes the use
>> of readl_relaxed and writel_relaxed with a version that can be put
>> back to __raw_readl/__raw_writel for the CONFIG_AVR32 case (and also
>> remove the change to the DMA descriptor endian).
>>
>> Signed-off-by: Ben Dooks <ben.dooks@...ethink.co.uk>
>> Reported-by: Arnd Bergmann <arnd@...db.de>
>> --
>> CC: Linux Networking List <netdev@...r.kernel.org>
>> CC: Arun Chandran <achandran@...sta.com>
>> CC: Haavard Skinnemoen <hskinnemoen@...il.com>
>> CC: Hans-Christian Egtvedt <egtvedt@...fundet.no>
>> CC: Linux Kernel List <linux-kernel@...r.kernel.org>
>> CC: Nicolas Ferre <nicolas.ferre@...el.com>
>> ---
>>  drivers/net/ethernet/cadence/macb.c | 14 +++++++-------
>>  drivers/net/ethernet/cadence/macb.h | 20 ++++++++++++++------
>>  2 files changed, 21 insertions(+), 13 deletions(-)
>>
>> diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c
>> index b71e316..1c3f6e7 100644
>> --- a/drivers/net/ethernet/cadence/macb.c
>> +++ b/drivers/net/ethernet/cadence/macb.c
>> @@ -449,7 +449,7 @@ static void macb_update_stats(struct macb *bp)
>>         WARN_ON((unsigned long)(end - p - 1) != (MACB_TPF - MACB_PFR) / 4);
>>
>>         for(; p < end; p++, reg++)
>> -               *p += readl_relaxed(reg);
>> +               *p += cdneth_readl(reg);
>>  }
>>
>>  static int macb_halt_tx(struct macb *bp)
>> @@ -1587,7 +1587,7 @@ static void macb_configure_dma(struct macb *bp)
>>                 dmacfg |= GEM_BIT(TXPBMS) | GEM_BF(RXBMS, -1L);
>>                 dmacfg &= ~GEM_BIT(ENDIA_PKT);
>>                 /* Tell the chip to byteswap descriptors on big-endian hosts */
>> -#ifdef __BIG_ENDIAN
>
>
> With https://kernel.googlesource.com/pub/scm/linux/kernel/git/davem/net-next/+/62f6924cb1543a10d05150d77f9a5e01e12c9ce1
> in net-next I think CONFIG_AVR32 check is not required.
>
> --Arun

I mean only the below check for dmacfg is not required

               /* Tell the chip to byteswap descriptors on big-endian hosts */
-#ifdef __BIG_ENDIAN
+#if defined(__BIG_ENDIAN) && !defined(CONFIG_AVR32)
                dmacfg |= GEM_BIT(ENDIA_DESC);
 #endif

--Arun
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ