On Wed, Feb 15, 2023 at 10:39 PM Laurent Vivier <lvivier@redhat.com> wrote:
>
> On 2/14/23 15:30, Peter Maydell wrote:
> > On Tue, 14 Feb 2023 at 14:29, Peter Maydell <peter.maydell@linaro.org> wrote:
> >>
> >> On Tue, 14 Feb 2023 at 06:11, Jason Wang <jasowang@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
Exactly, I will squash this and send a new pull request.
Thanks
>