On Mon, Jan 14, 2019 at 01:21:30PM +0100, Uwe Kleine-König wrote: > Hello, > > On Mon, Sep 17, 2018 at 10:21:22PM -0700, Andrey Smirnov wrote: > > Trying to do unaligned access of coherent memory on AArch64 will lead > > to an abort and some parts of our IP stack will do exactly that with > > received packet buffer by using memcpy() to extracts parts of it. > > > > Convert the driver to use regular memory for received data buffers to > > prevent the issue from happening. > > I didn't spend time yet to debug, but this commit is pointed out to > break nfs booting on an mx28evk board. > > Maybe someone spots the obvious problem before I come around to fix > this. Sascha found it. The problem is that the nfs code uses the memory location the packet was placed in only after the net_receive function returned. With this patch applied it works for me again: diff --git a/fs/nfs.c b/fs/nfs.c index d7f156687fc9..20fdf5ff4dfc 100644 --- a/fs/nfs.c +++ b/fs/nfs.c @@ -440,6 +440,7 @@ again: nfs_timer_start = get_time_ns(); nfs_state = STATE_START; + free(nfs_packet); nfs_packet = NULL; while (nfs_state != STATE_DONE) { @@ -924,7 +925,7 @@ static void nfs_handler(void *ctx, char *packet, unsigned len) char *pkt = net_eth_to_udp_payload(packet); nfs_state = STATE_DONE; - nfs_packet = pkt; + nfs_packet = xmemdup(pkt, len); nfs_len = len; } (Not completely nice though, as (at least) the last packet isn't freed.) Will try to come up with a proper patch later. Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König | Industrial Linux Solutions | http://www.pengutronix.de/ | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox