can: peak_canfd: fix firmware < v3.3.0: limit allocation to 32-bit DMA addr only
authorStephane Grosjean <s.grosjean@peak-system.com>
Thu, 21 Jun 2018 13:23:31 +0000 (15:23 +0200)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Mon, 23 Jul 2018 12:34:45 +0000 (14:34 +0200)
commit5d4c94ed9f564224d7b37dbee13f7c5d4a8a01ac
treee8a0111772874e1ca329d7f0a17cc389c7e72eaa
parentc9ce1fa1c24b08e13c2a3b5b1f94a19c9eaa982c
can: peak_canfd: fix firmware < v3.3.0: limit allocation to 32-bit DMA addr only

The DMA logic in firmwares < v3.3.0 embedded in the PCAN-PCIe FD cards
family is not capable of handling a mix of 32-bit and 64-bit logical
addresses. If the board is equipped with 2 or 4 CAN ports, then such a
situation might lead to a PCIe Bus Error "Malformed TLP" packet
as well as "irq xx: nobody cared" issue.

This patch adds a workaround that requests only 32-bit DMA addresses
when these might be allocated outside of the 4 GB area.

This issue has been fixed in firmware v3.3.0 and next.

Signed-off-by: Stephane Grosjean <s.grosjean@peak-system.com>
Cc: linux-stable <stable@vger.kernel.org>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/peak_canfd/peak_pciefd_main.c