Re: [PATCH v3] serial: 8250_exar: Move the Exar bits out from 8250_port

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

 



On Mon, Jul 29, 2019 at 10:11:51AM -0500, Aaron Sierra wrote:
> ----- Original Message -----
> > From: "Andy Shevchenko" <andriy.shevchenko@xxxxxxxxxxxxxxx>
> > To: "Aaron Sierra" <asierra@xxxxxxxxxxx>
> > Sent: Monday, July 29, 2019 7:00:59 AM
> > On Sun, Jul 28, 2019 at 05:12:09PM -0500, Aaron Sierra wrote:
> >> ----- Original Message -----
> >> > From: "Andy Shevchenko" <andriy.shevchenko@xxxxxxxxxxxxxxx>
> >> > Sent: Sunday, July 21, 2019 9:26:59 AM

> > I'm not so familiar with the hardware, will it not give any side-effects?
> 
> Clearing INT0 prevents PCI interrupts from getting stuck, either on in the
> case of level-sensitive interrupts (e.g. INTx) or apparently-off in the case
> of edge-sensitive interrupts (e.g. MSI), due to sources outside of the
> typical 8250 serial port scope. Interrupts due to port wake-up after
> idle/sleep are the best documented problem case.
> 
> I do not think it was ever ideal that each port cleared INT0 multiple times
> during startup. Clearing INT0 after we register the interrupt handler
> responsible for INT0 should be enough to ensure that we won't run into either
> case. The handler runs even if no ports are "up", so individual ports don't
> have to worry so much.
> 
> My original suggestion was incomplete in its handling of PCI device
> suspense/resume. A complete solution would read INT0 in exar_resume(), too.

Thanks for explanation, perhaps you can prepare a follow up on top on my series.

> > So, I prefer do this in a separate change, so we may see how it goes.
> 
> I think it's fine to defer this change to a later patch, but I would like to
> see the commit message body for the current patch be more explicit that it is
> not moving *all* Exar quirks. I wonder, too, if these should be broken
> down into separate patches for the three classes of quirks that you move:
> 
>   * autoconfig_16550a()
>   * serial8250_do_[get|set]_divisor()
>   * serial8250_set_sleep()

Yes, this will be better in case if some problems would be discovered in the
future, hope none.

So, let me split this to three, and then, if you have a chance to provide the
one described above, I will chain it to the series.

-- 
With Best Regards,
Andy Shevchenko





[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