> Subject: Re: ARM64 MSIX enabling error
>
> On 08.12.20 09:01, Peng Fan wrote:
> >
> >> Subject: Re: ARM64 MSIX enabling error
> >>
> >> On 08.12.20 06:28, Peng Fan wrote:
> >>>> Subject: RE: ARM64 MSIX enabling error
> >>>>
> >>>>> Subject: Re: ARM64 MSIX enabling error
> >>>>>
> >>>>> On 07.12.20 08:46, Peng Fan wrote:
> >>>>>> Hi,
> >>>>>>
> >>>>>> I use MSIX, not INTX in root cell file, but always met the following
> error.
> >>>>>> uio_ivshmem: probe of 0001:00:00.0 failed with error -28
> >>>>>>
> >>>>>>
> >>>>>> I am trying virtio ivshmem on my board, but seems virtio ivshmem
> >>>>>> vi_find_vqs not work with INTX, so I change to MSIX to see how.
> >>>>>> But met upper error, any suggestions?
> >>>>>
> >>>>> MSI-X for virtual devices only works when injecting them into a
> >>>>> physical PCI bus which is using MSI-X already. Is that the case here?
> >>>>> If not, you need to debug the INTx case.
> >>>>
> >>>> ok. Thanks.
> >>>>
> >>>> I could see virtio-ivshmem-console /dev/uio1 shows a few lines log,
> >>>>
> >>>> But it responds to input very slow, when I press enter key, it
> >>>> takes long time to respond.
> >>>
> >>> After correct the interrupt number, it responds to enter key fast.
> >>> But if I not press enter key, the virtio-ivshmem-console /dev/uio1
> >>> will show nothing. If I press enter key, it will show one line boot log.
> >>> Press one more time, it will show the other boot log.
> >>> I need press enter always, then could see the boot log printed out.
> >>>
> >>
> >> Still interrupts issues, I would say. The GIC MMIO resources are not
> >> accidentally passed through? Does /proc/interrupts report events for
> >> the virtual device?
> >
> > ivshm_irq_handler is triggered in the beginning, for several times,
> > but after that, there is no interrupt triggered from inmate Linux to root
> Linux.
> >
> > The inmate Linux is dead loop in
> > __send_to_port
> > ->
> > 644 while (!virtqueue_get_buf(out_vq, &len)
> > 645 && !virtqueue_is_broken(out_vq))
> > 646 cpu_relax();
> >
> > If I press enter key in virtio-ivshmem-console /dev/uio1, it could pass the
> loop.
> > But it will run into it again later and not break out.
> >
>
> I bet the "virtqueue_kick" that comes before this loop does not trigger an
> interrupt on the backend side
Indeed.
- or we have race that this is consumed without
> delivering the expected answer to the frontend. Didn't recall to see this, so
> I'm afraid you need to debug deeper.
This change make it work. I am using INTX, so num_vector is 1, however
if device vector is 2 or 1, it will ignore the interrupt inject in hypervisor/
ivshmem.c
@@ -361,9 +369,9 @@ int main(int argc, char *argv[])
memset(queue_config, 0, sizeof(queue_config));
queue_config[0].size = 8;
- queue_config[0].device_vector = 1;
+ queue_config[0].device_vector = 0;
queue_config[1].size = 8;
- queue_config[1].device_vector = 2;
+ queue_config[1].device_vector = 0;
current_queue = -1;
vc->config.cols = winsize.ws_col;
BTW: Do you think using kvmtool to include the virito ivshmemv2
support is a good option? Or you insist standalone tool as your
current design?
Thanks,
Peng.
>
> Jan
>
> --
> Siemens AG, T RDA IOT
> Corporate Competence Center Embedded Linux
--
You received this message because you are subscribed to the Google Groups
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jailhouse-dev/DB6PR0402MB2760F7FE11280F9619178C5888CD0%40DB6PR0402MB2760.eurprd04.prod.outlook.com.