Message ID | 20160808062254.18261-1-lokeshvutla@ti.com |
---|---|
State | Changes Requested |
Delegated to: | Joe Hershberger |
Headers | show |
Hi Lokesh, On Mon, Aug 8, 2016 at 1:22 AM, Lokesh Vutla <lokeshvutla@ti.com> wrote: > cpsw tries to flush dcache which is not in the range of cache line size. > Because of this the following warning comes while flushing: > > CACHE: Misaligned operation at range [dffecec0, dffed016] > > Fix it by flushing cache range which is cache line size aligned. This is the send case... the transmit packet buffer from the network subsystem is already aligned. You only need to align the size of the packet. Also, please use PKTALIGN. Thanks, -Joe
On Monday 08 August 2016 10:16 PM, Joe Hershberger wrote: > Hi Lokesh, > > On Mon, Aug 8, 2016 at 1:22 AM, Lokesh Vutla <lokeshvutla@ti.com> wrote: >> cpsw tries to flush dcache which is not in the range of cache line size. >> Because of this the following warning comes while flushing: >> >> CACHE: Misaligned operation at range [dffecec0, dffed016] >> >> Fix it by flushing cache range which is cache line size aligned. > > This is the send case... the transmit packet buffer from the network > subsystem is already aligned. You only need to align the size of the > packet. Also, please use PKTALIGN. You are right. Just posted a patch addressing your comments. Thanks and regards, Lokesh > > Thanks, > -Joe >
diff --git a/drivers/net/cpsw.c b/drivers/net/cpsw.c index 2ce4ec6..631544a 100644 --- a/drivers/net/cpsw.c +++ b/drivers/net/cpsw.c @@ -905,9 +905,14 @@ static int _cpsw_send(struct cpsw_priv *priv, void *packet, int length) void *buffer; int len; int timeout = CPDMA_TIMEOUT; + unsigned long pstart, pend; - flush_dcache_range((unsigned long)packet, - (unsigned long)packet + length); + /* + * Make sure range is cache line aligned. + */ + pstart = (unsigned long)packet & ~(CONFIG_SYS_CACHELINE_SIZE - 1); + pend = ALIGN((unsigned long)packet + length, CONFIG_SYS_CACHELINE_SIZE); + flush_dcache_range(pstart, pend); /* first reap completed packets */ while (timeout-- &&
cpsw tries to flush dcache which is not in the range of cache line size. Because of this the following warning comes while flushing: CACHE: Misaligned operation at range [dffecec0, dffed016] Fix it by flushing cache range which is cache line size aligned. Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com> --- drivers/net/cpsw.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)