Re: solo6010 modprobe lockup since e1ceb25a (v4.3 regression)
From: One Thousand Gnomes
Date: Thu Sep 15 2016 - 09:59:32 EST
On Thu, 15 Sep 2016 16:19:52 +0300
Andrey Utkin <andrey_utkin@xxxxxxxxxxxx> wrote:
> On Thu, Sep 15, 2016 at 03:15:53PM +0200, Hans Verkuil wrote:
> > It could be related to the fact that a PCI write may be delayed unless
> > it is followed by a read (see also the comments in drivers/media/pci/ivtv/ivtv-driver.h).
>
> Thanks for explanation!
>
> > That was probably the reason for the pci_read_config_word in the reg_write
> > code. Try putting that back (and just that).
>
> In this case reg_write becomes not atomic, thus spinlock would be
> required again here, right?
No - PCI writes are ordered but may not complete until the next read or
config access. That ordering isn't affected by things like spin locking
as it is a property of the bus.
Usually this only matters in obscure cases - timing is one of them, and
the other is when freeing memory because writes are posted both ways so
you need to write to stop the transfer, read to ensure the transfer has
completed and then free the target memory.
Alan