All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yijing Wang <wangyijing@huawei.com>
To: Ben Hutchings <ben@decadent.org.uk>
Cc: Bjorn Helgaas <bhelgaas@google.com>, <linux-pci@vger.kernel.org>,
	"Hanjun Guo" <guohanjun@huawei.com>
Subject: Re: [PATCH -v2] PCI: Avoid initialize MSI/MSIX if device power state != PCI_D0
Date: Thu, 10 Oct 2013 20:53:29 +0800	[thread overview]
Message-ID: <5256A349.3090804@huawei.com> (raw)
In-Reply-To: <1381409146.2788.116.camel@deadeye.wl.decadent.org.uk>

On 2013/10/10 20:45, Ben Hutchings wrote:
> On Thu, 2013-10-10 at 20:41 +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.
>>
>> ---
>>
>> v1->v2: keep __write_msi_msg() function device power state statement,
>> 	    because Ben Hutchings point out this function may be called
>> 		during device in D3 state to set irq affinity. We should not
>> 		touch that.
>>
>> Signed-off-by: Yijing Wang <wangyijing@huawei.com>
> 
> S-o-b needs to be above the first '---' but perhaps Bjorn can fix that
> up before applying.
> 
> Acked-by: Ben Hutchings <bhutchings@solarflare.com>


Thanks very much, I will update it, so Bjorn can apply it easily.

> 
>> ---
>>  drivers/pci/msi.c |    6 +++---
>>  1 files changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
>> index d5f90d6..604265c 100644
>> --- a/drivers/pci/msi.c
>> +++ b/drivers/pci/msi.c
>> @@ -831,7 +831,7 @@ int pci_enable_msi_block(struct pci_dev *dev, unsigned int nvec)
>>  	int status, maxvec;
>>  	u16 msgctl;
>>  
>> -	if (!dev->msi_cap)
>> +	if (!dev->msi_cap || dev->current_state != PCI_D0)
>>  		return -EINVAL;
>>  
>>  	pci_read_config_word(dev, dev->msi_cap + PCI_MSI_FLAGS, &msgctl);
>> @@ -862,7 +862,7 @@ int pci_enable_msi_block_auto(struct pci_dev *dev, unsigned int *maxvec)
>>  	int ret, nvec;
>>  	u16 msgctl;
>>  
>> -	if (!dev->msi_cap)
>> +	if (!dev->msi_cap || dev->current_state != PCI_D0)
>>  		return -EINVAL;
>>  
>>  	pci_read_config_word(dev, dev->msi_cap + PCI_MSI_FLAGS, &msgctl);
>> @@ -955,7 +955,7 @@ int pci_enable_msix(struct pci_dev *dev, struct msix_entry *entries, int nvec)
>>  	int status, nr_entries;
>>  	int i, j;
>>  
>> -	if (!entries || !dev->msix_cap)
>> +	if (!entries || !dev->msix_cap || dev->current_state != PCI_D0)
>>  		return -EINVAL;
>>  
>>  	status = pci_msi_check_device(dev, nvec, PCI_CAP_ID_MSIX);
> 


-- 
Thanks!
Yijing


      reply	other threads:[~2013-10-10 12:56 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-10 12:41 [PATCH -v2] PCI: Avoid initialize MSI/MSIX if device power state != PCI_D0 Yijing Wang
2013-10-10 12:45 ` Ben Hutchings
2013-10-10 12:53   ` Yijing Wang [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5256A349.3090804@huawei.com \
    --to=wangyijing@huawei.com \
    --cc=ben@decadent.org.uk \
    --cc=bhelgaas@google.com \
    --cc=guohanjun@huawei.com \
    --cc=linux-pci@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.