On Thu, 28 Nov 2019 at 12:37, Cédric Le Goater <c...@kaod.org> wrote: > > Fixes: e766849713ff ("net: ftgmac100: convert the RX/TX descriptor arrays") > Signed-off-by: Cédric Le Goater <c...@kaod.org>
Reviewed-by: Joel Stanley <j...@jms.id.au> Thanks Cédric. This resolves the warnings I saw when running on a machine with the dcache enabled: CACHE: Misaligned operation at range [bd79d310, bd79d350] Cheers, Joel > --- > drivers/net/ftgmac100.c | 16 ++++++++-------- > 1 file changed, 8 insertions(+), 8 deletions(-) > > diff --git a/drivers/net/ftgmac100.c b/drivers/net/ftgmac100.c > index 92c38a81bd35..c14647af7844 100644 > --- a/drivers/net/ftgmac100.c > +++ b/drivers/net/ftgmac100.c > @@ -71,8 +71,8 @@ enum ftgmac100_model { > struct ftgmac100_data { > struct ftgmac100 *iobase; > > - struct ftgmac100_txdes txdes[PKTBUFSTX]; > - struct ftgmac100_rxdes rxdes[PKTBUFSRX]; > + struct ftgmac100_txdes txdes[PKTBUFSTX] __aligned(ARCH_DMA_MINALIGN); > + struct ftgmac100_rxdes rxdes[PKTBUFSRX] __aligned(ARCH_DMA_MINALIGN); > int tx_index; > int rx_index; > > @@ -309,7 +309,7 @@ static int ftgmac100_start(struct udevice *dev) > } > priv->txdes[PKTBUFSTX - 1].txdes0 = priv->txdes0_edotr_mask; > > - start = (ulong)&priv->txdes[0]; > + start = ((ulong)&priv->txdes[0]) & ~(ARCH_DMA_MINALIGN - 1); > end = start + roundup(sizeof(priv->txdes), ARCH_DMA_MINALIGN); > flush_dcache_range(start, end); > > @@ -319,7 +319,7 @@ static int ftgmac100_start(struct udevice *dev) > } > priv->rxdes[PKTBUFSRX - 1].rxdes0 = priv->rxdes0_edorr_mask; > > - start = (ulong)&priv->rxdes[0]; > + start = ((ulong)&priv->rxdes[0]) & ~(ARCH_DMA_MINALIGN - 1); > end = start + roundup(sizeof(priv->rxdes), ARCH_DMA_MINALIGN); > flush_dcache_range(start, end); > > @@ -369,7 +369,7 @@ static int ftgmac100_free_pkt(struct udevice *dev, uchar > *packet, int length) > { > struct ftgmac100_data *priv = dev_get_priv(dev); > struct ftgmac100_rxdes *curr_des = &priv->rxdes[priv->rx_index]; > - ulong des_start = (ulong)curr_des; > + ulong des_start = ((ulong)curr_des) & ~(ARCH_DMA_MINALIGN - 1); > ulong des_end = des_start + > roundup(sizeof(*curr_des), ARCH_DMA_MINALIGN); > > @@ -391,7 +391,7 @@ static int ftgmac100_recv(struct udevice *dev, int flags, > uchar **packetp) > struct ftgmac100_data *priv = dev_get_priv(dev); > struct ftgmac100_rxdes *curr_des = &priv->rxdes[priv->rx_index]; > unsigned short rxlen; > - ulong des_start = (ulong)curr_des; > + ulong des_start = ((ulong)curr_des) & ~(ARCH_DMA_MINALIGN - 1); > ulong des_end = des_start + > roundup(sizeof(*curr_des), ARCH_DMA_MINALIGN); > ulong data_start = curr_des->rxdes3; > @@ -426,7 +426,7 @@ static int ftgmac100_recv(struct udevice *dev, int flags, > uchar **packetp) > static u32 ftgmac100_read_txdesc(const void *desc) > { > const struct ftgmac100_txdes *txdes = desc; > - ulong des_start = (ulong)txdes; > + ulong des_start = ((ulong)txdes) & ~(ARCH_DMA_MINALIGN - 1); > ulong des_end = des_start + roundup(sizeof(*txdes), > ARCH_DMA_MINALIGN); > > invalidate_dcache_range(des_start, des_end); > @@ -444,7 +444,7 @@ static int ftgmac100_send(struct udevice *dev, void > *packet, int length) > struct ftgmac100_data *priv = dev_get_priv(dev); > struct ftgmac100 *ftgmac100 = priv->iobase; > struct ftgmac100_txdes *curr_des = &priv->txdes[priv->tx_index]; > - ulong des_start = (ulong)curr_des; > + ulong des_start = ((ulong)curr_des) & ~(ARCH_DMA_MINALIGN - 1); > ulong des_end = des_start + > roundup(sizeof(*curr_des), ARCH_DMA_MINALIGN); > ulong data_start; > -- > 2.21.0 > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot