hw/net/can/xlnx-zynqmp: Avoid underflow while popping RX FIFO
authorPhilippe Mathieu-Daudé <philmd@linaro.org>
Fri, 24 Nov 2023 18:33:25 +0000 (19:33 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Mon, 27 Nov 2023 15:27:38 +0000 (15:27 +0000)
commit8729856c1904c11a9b016cba600767f814e237b1
tree509aeea6aa98da80053064bab25fcda55ec2936f
parent75d0e6b5c6deb08dd6cc184adba3668055680e7b
hw/net/can/xlnx-zynqmp: Avoid underflow while popping RX FIFO

Per https://docs.xilinx.com/r/en-US/ug1085-zynq-ultrascale-trm/Message-Format

  Message Format

  The same message format is used for RXFIFO, TXFIFO, and TXHPB.
  Each message includes four words (16 bytes). Software must read
  and write all four words regardless of the actual number of data
  bytes and valid fields in the message.

There is no mention in this reference manual about what the
hardware does when not all four words are read. To fix the
reported underflow behavior, I choose to fill the 4 frame data
registers when the first register (ID) is accessed, which is how
I expect hardware would do.

Reported-by: Qiang Liu <cyruscyliu@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Francisco Iglesias <francisco.iglesias@amd.com>
Reviewed-by: Vikram Garhwal <vikram.garhwal@amd.com>
Message-id: 20231124183325.95392-3-philmd@linaro.org
Fixes: 98e5d7a2b7 ("hw/net/can: Introduce Xilinx ZynqMP CAN controller")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1427
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Francisco Iglesias <francisco.iglesias@amd.com>
Reviewed-by: Vikram Garhwal <vikram.garhwal@amd.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
hw/net/can/xlnx-zynqmp-can.c