Re: PCI: endpoint: Usage of atomic notifier chain

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

 



On Fri, 25 Feb 2022 at 21:23, Manivannan Sadhasivam
<manivannan.sadhasivam@xxxxxxxxxx> wrote:
>
> Hi,
>
> While working with the PCI endpoint subsystem, I stumbled upon the sleeping
> in atomic context bug during CORE_INIT phase. The issue seems to be due to the
> usage of "epc lock" (mutex) in functions such as set_msi, set_msix,
> write_header, etc...
>
> These functions are supposed to be used in the atomic notifier chain by the
> CORE_INIT notifier. While using the lock is necessary in these functions as
> pci_epc_create() would've been called, I see two possible workarounds:
>
> 1. Using non-atomic notifier chains such as blocking or raw.
> 2. Modifying the EPF drivers to use workqueue in CORE_INIT notifier chain. But
> this has the implication of missing the workqueue execution before hitting other
> PCI events as there might be a delay in scheduling the work item.

Just a note: using workqueue wouldn't help if one has to process link
down events.
The driver would expect that after dispatching the link down event it
can disable the hardware, thus making worker access disabled hw
instance.



-- 
With best wishes
Dmitry



[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux