RE: Reg: Serial port driver for microchip's new PCIe UART device

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

 



Dear Greg KH,

Please find my answers inline below.
Also, I am looking at the 8250 framework again whether I can drive the DWORD FIFOs by providing my own implementation for the handle_irq function pointer in uart_port structure which I am not sure at this point.
If I can do this, this will allow my driver to fit within the 8250 framework itself and simplify the entire work as mentioned by you previously.

Thank You.

Regards,
Kumar

> -----Original Message-----
> From: Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx>
> Sent: Friday, February 11, 2022 5:32 PM
> To: Kumaravel Thiagarajan - I21417 <Kumaravel.Thiagarajan@xxxxxxxxxxxxx>
> Cc: Richard Petrie - M18281 <Richard.Petrie@xxxxxxxxxxxxx>; linux-
> serial@xxxxxxxxxxxxxxx; Sundararaman Hariharaputran - I21286
> <Sundararaman.H@xxxxxxxxxxxxx>; Ronnie Kunin - C21729
> <Ronnie.Kunin@xxxxxxxxxxxxx>; Tharunkumar Pasumarthi - I67821
> <Tharunkumar.Pasumarthi@xxxxxxxxxxxxx>; Annirudh D - I64147
> <Annirudh.D@xxxxxxxxxxxxx>; Pragash Mangalapandian - I21326
> <Pragash.Mangalapandian@xxxxxxxxxxxxx>
> Subject: Re: Reg: Serial port driver for microchip's new PCIe UART device
> 
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the
> content is safe
> 
> On Thu, Feb 10, 2022 at 10:38:39AM +0000,
> Kumaravel.Thiagarajan@xxxxxxxxxxxxx wrote:
> > > > We are working on a PCIe based multi-instance UART device.
> > > > Based on the Linux community feedback few months back, we had
> > > > written
> > > it as a custom driver inside drivers/tty/serial/8250.
> > > > Now this custom driver is requiring a DWORD FIFO access for both
> > > > Tx and
> > > Rx, and I am in the process of changing my driver code.
> > >
> > > Why does the hardware not follow the normal standard here?
> > We are building a PCIe 8250 based UART.  We can absolutely support the
> normal 8250 framework and standard drivers.
> > However, the challenges we see are the round-trip delays introduced by
> PCIe reads and writes having an impact on throughput, particularly if you are
> downstream of a PCIe tree with multiple hops.
> > The sizes of the payloads are limited to 32-bit by the processor PIO,
> however, even going from 8-bit payloads to 32-bit payloads improves
> throughput dramatically.
> 
> What specific reads are you having problems with?
Function serial8250_read_char reads character by character from the Rx FIFO (byte FIFO) based on the data ready bit in the LSR register.
Instead of byte FIFO, I am trying to use the DWORD interface, and a live byte count register available in our UART IP to increase the performance.
> 
> Why not just use DMA like other PCIe serial port cards do, which we have
> supported for decades now.
Our legacy hardware IP does not support DMA.
> 
> > > And are you sure it will still not fit into the 8250 format?
> > As mentioned our hardware can support this, however, we see that it is
> less efficient due to the requirement for single byte reads and writes.
> 
> Again, which reads/writes are taking a long time?  And again, why not use
> DMA for the data instead?
Our legacy hardware IP does not support DMA.
> 
> > > > Can I model my custom driver on serial drivers present in
> > > > drivers/tty/serial/
> > > directory?
> > >
> > > You could, but it would be much smaller and easier to use the 8250
> > > framework given that you probably do have an 8250-like device, right?
> > Adding DWORD reads/writes to the hardware is a necessary enhancement
> for improved performance over PCIe.
> > But 8250 framework looks very closely tied with reading character by
> character from the FIFO and I was not able to find a place in that framework
> where I could hook my own DWORD based Rx and Tx logic.
> > Is there any DWORD based UART FIFO driver example with 8250 framework
> available?
> 
> All of the code is there for you to read :)
Yes. I found two drivers inside 8250 framework supplying their own implementation for handle_irq which I will try to imitate.
> 
> thanks,
> 
> greg k-h




[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