Re: [PATCH] PCI: Avoid initialize MSI/MSIX if device power state != PCI_D0

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

 



On 2013/10/10 20:15, Ben Hutchings wrote:
> On Thu, 2013-10-10 at 16:31 +0800, Yijing Wang wrote:
>> Currently, if device power state != PCI_D0, we still initialize
>> device MSI/MSIX, but we won't write the MSI message to device
>> MSI/MSIX registers. It's weird, we don't configure MSI/MSIX
>> registers properly, but pci_enable_msi() or pci_enable_msix()
>> return success, and even these registers will never be updated later.
>> So I think it should return error if device power state != PCI_D0.
>>
>> Signed-off-by: Yijing Wang <wangyijing@xxxxxxxxxx>
>> ---
>>  drivers/pci/msi.c |   10 ++++------
>>  1 files changed, 4 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
>> index d5f90d6..eb502f6 100644
>> --- a/drivers/pci/msi.c
>> +++ b/drivers/pci/msi.c
>> @@ -308,9 +308,7 @@ void get_cached_msi_msg(unsigned int irq, struct msi_msg *msg)
>>  
>>  void __write_msi_msg(struct msi_desc *entry, struct msi_msg *msg)
>>  {
>> -	if (entry->dev->current_state != PCI_D0) {
>> -		/* Don't touch the hardware now */
>> -	} else if (entry->msi_attrib.is_msix) {
>> +	if (entry->msi_attrib.is_msix) {
> [...]
> 
> As I said before, this function was being called to change IRQ
> affinities during suspend/resume at a point when most PCI devices were
> in D3.  If that is no longer the case then this change is probably OK.
> Otherwise you should not touch this function.

Hi ben, sorry for the mistake, now I know what you worry about. I will update this patch,
keep __write_msi_msg() function not changed. Only add some guard for pci_enable_msi()/pci_enable_msix() ..

Thanks!
Yijing.

> 
> Ben.
> 


-- 
Thanks!
Yijing

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




[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