On 10/10/17 16:51, David Laight wrote: > From: Robin Murphy >> Sent: 10 October 2017 16:25 > ... >>> That could 'just' be the hardware doing a 'readahead' of the ring. >>> Somewhat annoying if it is doing that across page boundaries. >> >>> Although, in that case, the read values wouldn't be used because the >>> last TRB is a link. >>> So that shouldn't stop the USB transfer - just gives an annoying error message. >>> OTOH if the PCIe read completion ends up with an error status it might halt >>> the ring (or similar). >> >> Indeed, on my machine once the PCIe root complex gets an abort back from the >> IOMMU, the VL805 is basically dead until a hard reset. The grotty diff >> below does resolve that particular issue, but I'm not sure I like it :/ > > Is it enough to only allocate 255 TRB per page instead of adding a > guard page? Good point - crudely hacking TRBS_PER_SEGMENT down to 252 (255 made things go a bit wacky) does indeed appear to suffice. I'll have a go at a slightly nicer approach of just reserving the last TRB in a segment where necessary. Robin. -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html