Message ID | 1459863813-2830-2-git-send-email-xyjxie@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Apr 05, 2016 at 09:43:29PM +0800, Yongji Xie wrote: >The resource_alignment will releases memory >resources allocated by firmware so that kernel >can reassign new resources later on. But this >will cause the problem that no resources can be >allocated by kernel if PCI_PROBE_ONLY was set, >e.g. on pSeries platform because PCI_PROBE_ONLY >force kernel to use firmware setup and not to >reassign any resources. > >To solve this problem, this patch ignores >resource_alignment if PCI_PROBE_ONLY was set. > >Signed-off-by: Yongji Xie <xyjxie@linux.vnet.ibm.com> >--- > drivers/pci/pci.c | 6 ++++++ > 1 file changed, 6 insertions(+) > >diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c >index 602eb42..1db9267 100644 >--- a/drivers/pci/pci.c >+++ b/drivers/pci/pci.c >@@ -4607,6 +4607,12 @@ static resource_size_t pci_specified_resource_alignment(struct pci_dev *dev) > spin_lock(&resource_alignment_lock); > p = resource_alignment_param; > while (*p) { >+ if (pci_has_flag(PCI_PROBE_ONLY)) { >+ printk(KERN_ERR "PCI: Ignore resource_alignment parameter: %s with" >+ " PCI_PROBE_ONLY set\n", p); >+ *p = 0; >+ break; It seems no "*p = 0" isn't required if I don't miss anything. If the check on flag PCI_PROBE_ONLY is moved before the spin_lock(), it would save a bit CPU cycles at least. Also, the logic looks more clear. >+ } > count = 0; > if (sscanf(p, "%d%n", &align_order, &count) == 1 && > p[count] == '@') { Thanks, Gavin >-- >1.7.9.5 > -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 2016/4/6 8:48, Gavin Shan wrote: > On Tue, Apr 05, 2016 at 09:43:29PM +0800, Yongji Xie wrote: >> The resource_alignment will releases memory >> resources allocated by firmware so that kernel >> can reassign new resources later on. But this >> will cause the problem that no resources can be >> allocated by kernel if PCI_PROBE_ONLY was set, >> e.g. on pSeries platform because PCI_PROBE_ONLY >> force kernel to use firmware setup and not to >> reassign any resources. >> >> To solve this problem, this patch ignores >> resource_alignment if PCI_PROBE_ONLY was set. >> >> Signed-off-by: Yongji Xie <xyjxie@linux.vnet.ibm.com> >> --- >> drivers/pci/pci.c | 6 ++++++ >> 1 file changed, 6 insertions(+) >> >> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c >> index 602eb42..1db9267 100644 >> --- a/drivers/pci/pci.c >> +++ b/drivers/pci/pci.c >> @@ -4607,6 +4607,12 @@ static resource_size_t pci_specified_resource_alignment(struct pci_dev *dev) >> spin_lock(&resource_alignment_lock); >> p = resource_alignment_param; >> while (*p) { >> + if (pci_has_flag(PCI_PROBE_ONLY)) { >> + printk(KERN_ERR "PCI: Ignore resource_alignment parameter: %s with" >> + " PCI_PROBE_ONLY set\n", p); >> + *p = 0; >> + break; > It seems no "*p = 0" isn't required if I don't miss anything. If the check > on flag PCI_PROBE_ONLY is moved before the spin_lock(), it would save a bit > CPU cycles at least. Also, the logic looks more clear. I used "*p = 0" in case that the warning is called in every pci_device_add(). And the warning should be called only when users use resource_alignment parameter. So we test while(*p) before we call the warning. Thanks, Yongji >> + } >> count = 0; >> if (sscanf(p, "%d%n", &align_order, &count) == 1 && >> p[count] == '@') { > Thanks, > Gavin > >> -- >> 1.7.9.5 >> -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 602eb42..1db9267 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -4607,6 +4607,12 @@ static resource_size_t pci_specified_resource_alignment(struct pci_dev *dev) spin_lock(&resource_alignment_lock); p = resource_alignment_param; while (*p) { + if (pci_has_flag(PCI_PROBE_ONLY)) { + printk(KERN_ERR "PCI: Ignore resource_alignment parameter: %s with" + " PCI_PROBE_ONLY set\n", p); + *p = 0; + break; + } count = 0; if (sscanf(p, "%d%n", &align_order, &count) == 1 && p[count] == '@') {
The resource_alignment will releases memory resources allocated by firmware so that kernel can reassign new resources later on. But this will cause the problem that no resources can be allocated by kernel if PCI_PROBE_ONLY was set, e.g. on pSeries platform because PCI_PROBE_ONLY force kernel to use firmware setup and not to reassign any resources. To solve this problem, this patch ignores resource_alignment if PCI_PROBE_ONLY was set. Signed-off-by: Yongji Xie <xyjxie@linux.vnet.ibm.com> --- drivers/pci/pci.c | 6 ++++++ 1 file changed, 6 insertions(+)