Message ID | cover.1579474761.git.fthain@telegraphics.com.au (mailing list archive) |
---|---|
Headers | show |
Series | Fixes for DP8393X SONIC device emulation | expand |
Le 19/01/2020 à 23:59, Finn Thain a écrit : > Hi All, > > There are bugs in the emulated dp8393x device that can stop packet > reception in a Linux/m68k guest (q800 machine). > > With a Linux/mips guest (magnum machine), the driver fails to probe > the dp8393x device. > > With a NetBSD/arc 5.1 guest (magnum machine), the bugs in the device > can be fatal to the guest kernel. > > Whilst debugging the device, I found that the receiver algorithm > differs from the one described in the National Semiconductor > datasheet. > > This patch series resolves these bugs. > > Note that the mainline Linux sonic driver also has bugs. > I have fixed the bugs that I know of in a series of patches at, > https://github.com/fthain/linux/commits/mac68k > --- > Changed since v1: > - Minor revisions as described in commit logs. > - Dropped patches 4/10 and 7/10. > - Added 5 new patches. > > Changed since v2: > - Minor revisions as described in commit logs. > - Dropped patch 13/13. > - Added 2 new patches. > > > Finn Thain (14): > dp8393x: Mask EOL bit from descriptor addresses > dp8393x: Always use 32-bit accesses > dp8393x: Clean up endianness hacks > dp8393x: Have dp8393x_receive() return the packet size > dp8393x: Update LLFA and CRDA registers from rx descriptor > dp8393x: Clear RRRA command register bit only when appropriate > dp8393x: Implement packet size limit and RBAE interrupt > dp8393x: Don't clobber packet checksum > dp8393x: Use long-word-aligned RRA pointers in 32-bit mode > dp8393x: Pad frames to word or long word boundary > dp8393x: Clear descriptor in_use field to release packet > dp8393x: Always update RRA pointers and sequence numbers > dp8393x: Don't reset Silicon Revision register > dp8393x: Don't stop reception upon RBE interrupt assertion > > hw/net/dp8393x.c | 205 +++++++++++++++++++++++++++++++---------------- > 1 file changed, 137 insertions(+), 68 deletions(-) > For the series with q800 machine type and kernel 5.5.0: Tested-by: Laurent Vivier <laurent@vivier.eu>
On Mon, 20 Jan 2020, Finn Thain wrote: > Hi All, > > There are bugs in the emulated dp8393x device that can stop packet > reception in a Linux/m68k guest (q800 machine). > > With a Linux/mips guest (magnum machine), the driver fails to probe > the dp8393x device. > > With a NetBSD/arc 5.1 guest (magnum machine), the bugs in the device > can be fatal to the guest kernel. > > Whilst debugging the device, I found that the receiver algorithm > differs from the one described in the National Semiconductor > datasheet. > > This patch series resolves these bugs. > Ironically, given the recent driver fixes in the Linux kernel, the bugs in stock QEMU make it possible to remotely trigger a kernel Oops (much like the NetBSD crash). This patch series is needed to resolve those issues. > Note that the mainline Linux sonic driver also has bugs. > I have fixed the bugs that I know of in a series of patches at, > https://github.com/fthain/linux/commits/mac68k > --- > Changed since v1: > - Minor revisions as described in commit logs. > - Dropped patches 4/10 and 7/10. > - Added 5 new patches. > > Changed since v2: > - Minor revisions as described in commit logs. > - Dropped patch 13/13. > - Added 2 new patches. > > > Finn Thain (14): > dp8393x: Mask EOL bit from descriptor addresses > dp8393x: Always use 32-bit accesses > dp8393x: Clean up endianness hacks > dp8393x: Have dp8393x_receive() return the packet size > dp8393x: Update LLFA and CRDA registers from rx descriptor > dp8393x: Clear RRRA command register bit only when appropriate > dp8393x: Implement packet size limit and RBAE interrupt > dp8393x: Don't clobber packet checksum > dp8393x: Use long-word-aligned RRA pointers in 32-bit mode > dp8393x: Pad frames to word or long word boundary > dp8393x: Clear descriptor in_use field to release packet > dp8393x: Always update RRA pointers and sequence numbers > dp8393x: Don't reset Silicon Revision register > dp8393x: Don't stop reception upon RBE interrupt assertion > > hw/net/dp8393x.c | 205 +++++++++++++++++++++++++++++++---------------- > 1 file changed, 137 insertions(+), 68 deletions(-) > >