lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 2 Aug 2021 14:45:12 +0200
From:   Andreas Hilse <andreas.hilse@...glemail.com>
To:     Bryan Whitehead <bryan.whitehead@...rochip.com>,
        UNGLinuxDriver@...rochip.com
Cc:     netdev@...r.kernel.org
Subject: lan743x driver fails to map DMA during initialization on Raspberry CM4IO

To whom it may concern,

I encountered this error when trying to get an EVB-LAN7430 evaluation
board to work with the PCIe interface on a Raspberry CM4IO board.
There was already someone on the raspberrypi/linux github who
encountered the same problem and also provided a possible fix here:
https://github.com/raspberrypi/linux/issues/4117

Please refer to the github link for a detailed error description.

The fix was tested successfully by some people who commented on the
github issue and by myself.
It seems the issue occurred on both 32 and 64 Bit builds on this system.
If I understand it correctly, this might not a universal fix.


diff --git a/drivers/net/ethernet/microchip/lan743x_main.c
b/drivers/net/ethernet/microchip/lan743x_main.c
index 8947c3a62810..96673017d6d9 100644
--- a/drivers/net/ethernet/microchip/lan743x_main.c
+++ b/drivers/net/ethernet/microchip/lan743x_main.c
@@ -2318,6 +2318,13 @@ static int lan743x_rx_ring_init(struct lan743x_rx *rx)
                ret = -EINVAL;
                goto cleanup;
        }
+
+       if (dma_set_mask_and_coherent(&rx->adapter->pdev->dev,
DMA_BIT_MASK(64))) {
+               dev_warn(&rx->adapter->pdev->dev, "lan743x_: No
suitable DMA available\n");
+               ret = -ENOMEM;
+               goto cleanup;
+       }
+
        ring_allocation_size = ALIGN(rx->ring_size *
                                     sizeof(struct lan743x_rx_descriptor),
                                     PAGE_SIZE);

--
Best regards
Andreas Hilse

Powered by blists - more mailing lists