Re: 8250_dw DMA issue with BYT ?

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

 



On Mon, Apr 14, 2014 at 03:54:31PM +0000, Poulain, Loic wrote:
> Hello Heikki,
> 
> I contact you regarding the 8250_dw driver.
> My setup is an Asus T100TA (baytrail) + kernel 3.14.
> The UART controller is ACPI enumerated (ID is 80860F0A).
> (UART_CAP_AFE capable)
> 
> This uart is used to communicate with a BCM4324 bluetooth chip
> (HCI H4 over uart). However we have many bluetooth instabilities.
> These instabilities are due to the 'hardware error' HCI code sent
> by the BCM chip. This error means that the BCM received an invalid
> H4 packet header or an invalid sized packet => serial sync issue.
> Moreover, Increasing the baudrate increases the hardware error
> frequency.
> 
> This problem seems due to the DMA usage. Indeed, when I disable
> the DMA manually in 8250_dw.c (up->dma = NULL), problem does not
> occur anymore, all baudrates are stable.

I think this is the same issue Jin Yao (CC'd) already spotted. He made
a bug for it:
https://bugzilla.kernel.org/show_bug.cgi?id=73071

> Do you think a specific 8250 DMA configuration could apply for the byt
> case ?
> How/Where can I debug to know if the 8250 DMA works as expected ?

Adding Andy. He maintains the Designware DMA Engine driver that is
used on BYT. He should be the best person to tell how to debug the
DMA.

We are debugging an other issue where the DMA mask for the device is
somehow set wrong. This does not exactly look like the same problem,
but you newer know. Try getting the TX buffer page from the first 16M
of memory..

--- a/drivers/tty/serial/serial_core.c
+++ b/drivers/tty/serial/serial_core.c
@@ -143,7 +143,7 @@ static int uart_port_startup(struct tty_struct *tty, struct uart_state *state,
         */
        if (!state->xmit.buf) {
                /* This is protected by the per port mutex */
-               page = get_zeroed_page(GFP_KERNEL);
+               page = get_zeroed_page(GFP_KERNEL | GFP_DMA);
                if (!page)
                        return -ENOMEM;


If the issue disappears, we know it's the same problem.

Thanks,

-- 
heikki
--
To unsubscribe from this list: send the line "unsubscribe linux-serial" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux