Re: Sierra Wireless EM9191 integration issues in mhi+wwan

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Loic,

Sorry, I forgot to answer your other questions.

On Mon, 2021-10-18 at 16:07 +0200, Thomas Perrot wrote:
> Hi,
> 
> On Mon, 2021-10-18 at 14:46 +0200, Loic Poulain wrote:
> > On Mon, 18 Oct 2021 at 13:26, Thomas Perrot <
> > thomas.perrot@xxxxxxxxxxx> wrote:
> > > 
> > > Hi Loic,
> > > 
> > > On Mon, 2021-10-18 at 11:59 +0200, Loic Poulain wrote:
> > > > Hi Aleksander,
> > > > 
> > > > On Mon, 18 Oct 2021 at 11:14, Aleksander Morgado
> > > > <aleksander@xxxxxxxxxxxxx> wrote:
> > > > > 
> > > > > Hey all,
> > > > > 
> > > > > > [    7.056113] mhi-pci-generic 0000:01:00.0: MHI PCI device
> > > > > > found:
> > > > > > sierra-em919x
> > > > > > [    7.063298] mhi-pci-generic 0000:01:00.0: BAR 0: assigned
> > > > > > [mem
> > > > > > 0x600000000-0x600000fff 64bit]
> > > > > > [    7.071846] mhi-pci-generic 0000:01:00.0: enabling device
> > > > > > (0000
> > > > > > -> 0002)
> > > > > > [    7.078671] mhi-pci-generic 0000:01:00.0: using shared MSI
> > > > > 
> > > > > In this specific setup we request 4 MSI vectors through
> > > > > pci_alloc_irq_vectors(), but only end up allocating a single
> > > > > one
> > > > > (i.e.
> > > > > mhi_cntrl->nr_irqs = 1). Could that be related to the problem
> > > > > somehow?
> > > > 
> > > > It shouldn't, we have the 'shared IRQ' fallback which is used
> > > > when we
> > > > can not setup multiple MSI, and this works with other SDX55 based
> > > > modems.
> > > > 
> > > 
> > > Compared to other SDX55 based modems, EM919x uses the same event
> > > ring
> > > for the control, the data and the diag, and we use the macro
> > > MHI_EVENT_CONFIG_CTRL to configure it.
> > > - Perhaps this macro is not suitable in this case?
> > 
> > Well it should work, but it's usually better to have a dedicated
> > event
> > ring for non-control stuff.
> > The number of event ring is normally driven by the host, is it a
> > limitation with EM919X?
> 
> I asked the question to our Sierra distributor, because it isn't
> indicated in the technical documentation that I have, I'm still waiting
> for the answer.
> 
> > What is done in the downstream driver?
> 
> As we encountered issues with the generic event ring configuration, I
> tried with a configuration equivalent to that of the vendor driver,
> that uses the same ring for data, control and diag stuff.
> 
> Best regards,
> Thomas
> 
> > 
> > > - Could this be explaining, what are we observing?
> > 

We observing following things:
- Either the kernel spam in loop this error: “mhi_wwan_ctrl mhi0_QMI:
"Failed to queue buffer”
- Either some command succeed, then timeout,
- Received unexpected response or the response to a previous command,
- All AT commands seem succeed,
- And the firmware is well updated.

> > Hmm, as I said device should follow what the host is configuring in
> > terms of event rings, but maybe in your case a specific
> > configuration
> > is expected, so it would be nice to double check with what is done
> > in
> > the downstream driver. As well, do you have any way to access the
> > serial/debug console of the EM919X?
> > 
> > > Moreover, we have voluntarily reduced the number of shared MSI
> > > vectors
> > > to one, on a platform able to provide enough, then we observe the
> > > same
> > > kind of issues, as on i.MX6DL which end up allocating a single
> > > one.
> > > However, we carried out this test only with the vendor driver.
> > 
> > You mean the same initialization issue?
> > 

Yes, we are also seeing the same initialization issue.

Best regards,
Thomas

> > Regards,
> > Loic
> 

-- 
Thomas Perrot, Bootlin
Embedded Linux and kernel engineering
https://bootlin.com

Attachment: signature.asc
Description: This is a digitally signed message part


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux