On 2/14/23 15:30, Peter Maydell wrote:
On Tue, 14 Feb 2023 at 14:29, Peter Maydell <peter.mayd...@linaro.org> wrote:
On Tue, 14 Feb 2023 at 06:11, Jason Wang <jasow...@redhat.com> wrote:
The following changes since commit f670b3eec7f5d1ed8c4573ef244e7b8c6b32001b:
Merge tag 'migration-20230213-pull-request' of
https://gitlab.com/juan.quintela/qemu into staging (2023-02-13 11:54:05 +0000)
are available in the git repository at:
https://github.com/jasowang/qemu.git tags/net-pull-request
for you to fetch changes up to e4b953a26da11d214f91516cb9b0542eab5afaa0:
vdpa: fix VHOST_BACKEND_F_IOTLB_ASID flag check (2023-02-14 14:00:30 +0800)
----------------------------------------------------------------
----------------------------------------------------------------
xlnx-can-test fails on multiple CI hosts:
https://gitlab.com/qemu-project/qemu/-/jobs/3767000949
https://gitlab.com/qemu-project/qemu/-/jobs/3767000974
https://gitlab.com/qemu-project/qemu/-/jobs/3767000994
https://gitlab.com/qemu-project/qemu/-/jobs/3767000970
https://gitlab.com/qemu-project/qemu/-/jobs/3767001009
https://gitlab.com/qemu-project/qemu/-/jobs/3767000851
https://gitlab.com/qemu-project/qemu/-/jobs/3767000849
more specifically, it asserts:
ERROR:../tests/qtest/xlnx-can-test.c:96:read_data: assertion failed
(int_status == ISR_RXOK): (0 == 16)
It seems the problem is with the loopback test (net/can/can_loopback).
as fifo32_num_used() and fifo32_num_free() return the number of uint32_t slots, the patch
should be fixed with (remove the "4 *"):
diff --git a/hw/net/can/xlnx-zynqmp-can.c b/hw/net/can/xlnx-zynqmp-can.c
index 55d3221b4980..8a56734b3ca2 100644
--- a/hw/net/can/xlnx-zynqmp-can.c
+++ b/hw/net/can/xlnx-zynqmp-can.c
@@ -451,7 +451,7 @@ static void transfer_fifo(XlnxZynqMPCANState *s, Fifo32
*fifo)
}
while (!fifo32_is_empty(fifo)) {
- if (fifo32_num_used(fifo) < (4 * CAN_FRAME_SIZE)) {
+ if (fifo32_num_used(fifo) < CAN_FRAME_SIZE) {
g_autofree char *path = object_get_canonical_path(OBJECT(s));
qemu_log_mask(LOG_GUEST_ERROR, "%s: data left in the fifo is not"
" enough for transfer.\n", path);
@@ -470,7 +470,7 @@ static void transfer_fifo(XlnxZynqMPCANState *s, Fifo32
*fifo)
* that it transmits.
*/
if (fifo32_is_full(&s->rx_fifo) ||
- (fifo32_num_free(&s->rx_fifo) < (4 * CAN_FRAME_SIZE))) {
+ (fifo32_num_free(&s->rx_fifo) < CAN_FRAME_SIZE)) {
ARRAY_FIELD_DP32(s->regs, INTERRUPT_STATUS_REGISTER, RXOFLW,
1);
} else {
for (i = 0; i < CAN_FRAME_SIZE; i++) {
Thanks,
Laurent