All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yijing Wang <wangyijing@huawei.com>
To: Bjorn Helgaas <bhelgaas@google.com>
Cc: <linux-pci@vger.kernel.org>, Wuyun <wuyun.wu@huawei.com>,
	Xinwei Hu <huxinwei@huawei.com>
Subject: Re: [PATCH 4/5] PCI/MSI: MSI cleanup, msi_setup_entry()
Date: Fri, 4 Jul 2014 09:57:49 +0800	[thread overview]
Message-ID: <53B60A1D.2030900@huawei.com> (raw)
In-Reply-To: <20140703233952.GB25980@google.com>

>> +	list_add_tail(&entry->list, &dev->msi_list);
>> +	return 0;
> 
> Why don't you just return "entry" here (and NULL for the failure above)?

Hmmm, this is a good idea, return the entry here will be better

> 
>> +}
>> +
>>  /**
>>   * msi_capability_init - configure device's MSI capability structure
>>   * @dev: pointer to the pci_dev data structure of MSI device function
>> @@ -597,51 +626,30 @@ static int msi_capability_init(struct pci_dev *dev, int nvec)
>>  
>> -	if (control & PCI_MSI_FLAGS_64BIT)
>> -		entry->mask_pos = dev->msi_cap + PCI_MSI_MASK_64;
>> -	else
>> -		entry->mask_pos = dev->msi_cap + PCI_MSI_MASK_32;
>> +	entry = list_first_entry(&dev->msi_list, struct msi_desc, list);
>>  	/* All MSIs are unmasked by default, Mask them all */
>>  	if (entry->msi_attrib.maskbit)
>>  		pci_read_config_dword(dev, entry->mask_pos, &entry->masked);
>>  	mask = msi_mask(entry->msi_attrib.multi_cap);
>>  	msi_mask_irq(entry, mask, mask);
>>  
>> -	list_add_tail(&entry->list, &dev->msi_list);
> 
> And keep the list_add_tail() here.  Then you don't have the awkwardness of
> pulling the entry off the list after calling msi_setup_entry().
> 
> That also means the MSIs can be masked before putting the entry on
> dev->msi_list, as they were before.  It *might* be safe to change the order
> as you did, but it definitely takes some analysis to prove it, especially
> since pci_enable_msi_range() only WARNs but doesn't bail out if
> dev->msi_enabled already.
> 

Bjorn, Thanks for your review and comments, I will update this patch and resend it, Thanks!

>>  	/* Configure MSI capability structure */
>>  	ret = arch_setup_msi_irqs(dev, nvec, PCI_CAP_ID_MSI);
>> -	if (ret) {
>> -		msi_mask_irq(entry, mask, ~mask);
>> -		free_msi_irqs(dev);
>> -		return ret;
>> -	}
>> +	if (ret)
>> +		goto err;
>>  
>>  	ret = populate_msi_sysfs(dev);
>> -	if (ret) {
>> -		msi_mask_irq(entry, mask, ~mask);
>> -		free_msi_irqs(dev);
>> -		return ret;
>> -	}
>> +	if (ret)
>> +		goto err;
>>  
>>  	/* Set MSI enabled bits	 */
>>  	pci_intx_for_msi(dev, 0);
>> @@ -650,6 +658,11 @@ static int msi_capability_init(struct pci_dev *dev, int nvec)
>>  
>>  	dev->irq = entry->irq;
>>  	return 0;
>> +
>> +err:
>> +	msi_mask_irq(entry, mask, ~mask);
>> +	free_msi_irqs(dev);
>> +	return ret;
>>  }
>>  
>>  static void __iomem *msix_map_region(struct pci_dev *dev, unsigned nr_entries)
>> -- 
>> 1.7.1
>>
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-pci" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> .
> 


-- 
Thanks!
Yijing


      reply	other threads:[~2014-07-04  1:58 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-19  8:30 [PATCH 4/5] PCI/MSI: MSI cleanup, msi_setup_entry() Yijing Wang
2014-07-03 23:39 ` Bjorn Helgaas
2014-07-04  1:57   ` 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=53B60A1D.2030900@huawei.com \
    --to=wangyijing@huawei.com \
    --cc=bhelgaas@google.com \
    --cc=huxinwei@huawei.com \
    --cc=linux-pci@vger.kernel.org \
    --cc=wuyun.wu@huawei.com \
    /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.