linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Gavin Shan <gwshan@linux.vnet.ibm.com>
To: Bjorn Helgaas <bhelgaas@google.com>
Cc: linux-pci@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
	Gavin Shan <gwshan@linux.vnet.ibm.com>
Subject: Re: [PATCH 3/5] powerpc/powernv: Introduce pnv_pci_poll()
Date: Tue, 13 Jan 2015 14:16:13 +1100	[thread overview]
Message-ID: <20150113031613.GA9318@shangw> (raw)
In-Reply-To: <20150109174304.GD6575@google.com>

On Fri, Jan 09, 2015 at 10:43:04AM -0700, Bjorn Helgaas wrote:
>On Thu, Dec 04, 2014 at 04:54:46PM +1100, Gavin Shan wrote:
>> We might not get some PCI slot information (e.g. power status)
>> immediately by OPAL API. Instead, opal_pci_poll() need to be called
>> for the required information.
>> 
>> The patch introduces pnv_pci_poll(), which bases on original
>> ioda_eeh_poll(), to cover the above case
>> 
>> Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
>
>Hi Gavin,
>
>This patch doesn't apply cleanly on v3.19-rc1.  Can you refresh this
>series, please?
>

Bjorn, the patchset depends on PowerPC specific changes as follows. The
PowerPC specfic changes should go first before you can apply this patchset
cleanly. Also, all patches depend on the firwmare changes, which is waiting
for Ben's comments. So I guess it's not urgent to merge it for now.

PowerPC specific patchs:

https://patchwork.ozlabs.org/patch/417638/
https://patchwork.ozlabs.org/patch/417637/
https://patchwork.ozlabs.org/patch/417636/

Thanks,
Gavin

>Bjorn
>
>> ---
>>  arch/powerpc/platforms/powernv/eeh-ioda.c | 28 ++--------------------------
>>  arch/powerpc/platforms/powernv/pci.c      | 19 +++++++++++++++++++
>>  arch/powerpc/platforms/powernv/pci.h      |  1 +
>>  3 files changed, 22 insertions(+), 26 deletions(-)
>> 
>> diff --git a/arch/powerpc/platforms/powernv/eeh-ioda.c b/arch/powerpc/platforms/powernv/eeh-ioda.c
>> index cf38781..21fa033 100644
>> --- a/arch/powerpc/platforms/powernv/eeh-ioda.c
>> +++ b/arch/powerpc/platforms/powernv/eeh-ioda.c
>> @@ -490,24 +490,6 @@ static int ioda_eeh_get_state(struct eeh_pe *pe)
>>  	return ioda_eeh_get_pe_state(pe);
>>  }
>>  
>> -static s64 ioda_eeh_poll(uint64_t id)
>> -{
>> -	s64 rc = OPAL_HARDWARE;
>> -
>> -	while (1) {
>> -		rc = opal_pci_poll(id, NULL);
>> -		if (rc <= 0)
>> -			break;
>> -
>> -		if (system_state < SYSTEM_RUNNING)
>> -			udelay(1000 * rc);
>> -		else
>> -			msleep(rc);
>> -	}
>> -
>> -	return rc;
>> -}
>> -
>>  int ioda_eeh_phb_reset(struct pci_controller *hose, int option)
>>  {
>>  	struct pnv_phb *phb = hose->private_data;
>> @@ -536,10 +518,7 @@ int ioda_eeh_phb_reset(struct pci_controller *hose, int option)
>>  
>>  	/* Issue reset and poll until it's completed */
>>  	rc = opal_pci_reset(phb->opal_id, scope, OPAL_ASSERT_RESET);
>> -	if (rc > 0)
>> -		rc = ioda_eeh_poll(phb->opal_id);
>> -
>> -	return (rc == OPAL_SUCCESS) ? 0 : -EIO;
>> +	return pnv_pci_poll(phb->opal_id, rc, NULL);
>>  }
>>  
>>  static int __ioda_eeh_bridge_reset(struct pci_dev *dev, int option)
>> @@ -630,10 +609,7 @@ static int ioda_eeh_bridge_reset(struct pci_dev *dev, int option)
>>  	phb = hose->private_data;
>>  	id |= (dev->bus->number << 24) | (dev->devfn << 16) | phb->opal_id;
>>  	rc = opal_pci_reset(id, scope, OPAL_ASSERT_RESET);
>> -	if (rc > 0)
>> -		ioda_eeh_poll(id);
>> -
>> -	return (rc == OPAL_SUCCESS) ? 0 : -EIO;
>> +	return pnv_pci_poll(id, rc, NULL);
>>  }
>>  
>>  static int pnv_pci_dev_reset_type(struct pci_dev *pdev, void *data)
>> diff --git a/arch/powerpc/platforms/powernv/pci.c b/arch/powerpc/platforms/powernv/pci.c
>> index 4b20f2c..6dc8ea9 100644
>> --- a/arch/powerpc/platforms/powernv/pci.c
>> +++ b/arch/powerpc/platforms/powernv/pci.c
>> @@ -45,6 +45,25 @@
>>  #define cfg_dbg(fmt...)	do { } while(0)
>>  //#define cfg_dbg(fmt...)	printk(fmt)
>>  
>> +int pnv_pci_poll(uint64_t id, int64_t rval, uint8_t *pval)
>> +{
>> +	while (rval > 0) {
>> +		rval = opal_pci_poll(id, pval);
>> +		if (rval == OPAL_SUCCESS && pval)
>> +			rval = opal_pci_poll(id, pval);
>> +
>> +		if (rval <= 0)
>> +			break;
>> +
>> +		if (system_state < SYSTEM_RUNNING)
>> +			udelay(1000 * rval);
>> +		else
>> +			msleep(rval);
>> +	}
>> +
>> +	return rval ? -EIO : 0;
>> +}
>> +
>>  #ifdef CONFIG_PCI_MSI
>>  static int pnv_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type)
>>  {
>> diff --git a/arch/powerpc/platforms/powernv/pci.h b/arch/powerpc/platforms/powernv/pci.h
>> index 6c02ff8..396fe02 100644
>> --- a/arch/powerpc/platforms/powernv/pci.h
>> +++ b/arch/powerpc/platforms/powernv/pci.h
>> @@ -217,6 +217,7 @@ extern struct pci_ops pnv_pci_ops;
>>  extern struct pnv_eeh_ops ioda_eeh_ops;
>>  #endif
>>  
>> +int pnv_pci_poll(uint64_t id, int64_t rval, uint8_t *pval);
>>  void pnv_pci_dump_phb_diag_data(struct pci_controller *hose,
>>  				unsigned char *log_buff);
>>  int pnv_pci_cfg_read(struct device_node *dn,
>> -- 
>> 1.8.3.2
>> 
>> --
>> 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
>

  reply	other threads:[~2015-01-13  3:16 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-04  5:54 [PATCH v2 0/5] PCI Hotplug Driver for PowerPC PowerNV Gavin Shan
2014-12-04  5:54 ` [PATCH 1/5] powerpc/pci: Move pcibios_find_pci_bus() around Gavin Shan
2014-12-04  5:54 ` [PATCH 2/5] powerpc/pci: Don't scan empty slot Gavin Shan
2014-12-04  5:54 ` [PATCH 3/5] powerpc/powernv: Introduce pnv_pci_poll() Gavin Shan
2015-01-09 17:43   ` Bjorn Helgaas
2015-01-13  3:16     ` Gavin Shan [this message]
2014-12-04  5:54 ` [PATCH 4/5] powerpc/powernv: Functions to retrieve PCI slot status Gavin Shan
2014-12-04  5:54 ` [PATCH 5/5] PCI/hotplug: PowerPC PowerNV PCI hotplug driver Gavin Shan
2015-02-17  2:30 ` [PATCH v2 0/5] PCI Hotplug Driver for PowerPC PowerNV Gavin Shan

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=20150113031613.GA9318@shangw \
    --to=gwshan@linux.vnet.ibm.com \
    --cc=bhelgaas@google.com \
    --cc=linux-pci@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).