* [PATCH 10/19] [repost] powerpc: move get_longbusy_msecs out of ehca/ehea [not found] <20080612221535.GQ30916@linux.vnet.ibm.com> @ 2008-06-12 22:18 ` Robert Jennings 2008-06-13 18:24 ` Brian King 0 siblings, 1 reply; 3+ messages in thread From: Robert Jennings @ 2008-06-12 22:18 UTC (permalink / raw) To: paulus Cc: linuxppc-dev, netdev, Brian King, Santiago Leon, Nathan Fontenot, David Darrington From: Robert Jennings <rcj@linux.vnet.ibm.com> In support of Cooperative Memory Overcommitment (CMO) this moves get_longbusy_msecs() out of the ehca and ehea drivers and into the architecture's hvcall header as plpar_get_longbusy_msecs. Some firmware calls made in pSeries platform iommu code will need to share this functionality. Signed-off-by: Robert Jennings <rcj@linux.vnet.ibm.com> --- I missed copying netdev on this patch the first time. drivers/infiniband/hw/ehca/hcp_if.c | 24 ++---------------------- drivers/net/ehea/ehea_phyp.c | 4 ++-- drivers/net/ehea/ehea_phyp.h | 20 -------------------- include/asm-powerpc/hvcall.h | 27 +++++++++++++++++++++++++++ 4 files changed, 31 insertions(+), 44 deletions(-) Index: b/drivers/infiniband/hw/ehca/hcp_if.c =================================================================== --- a/drivers/infiniband/hw/ehca/hcp_if.c +++ b/drivers/infiniband/hw/ehca/hcp_if.c @@ -90,26 +90,6 @@ static DEFINE_SPINLOCK(hcall_lock); -static u32 get_longbusy_msecs(int longbusy_rc) -{ - switch (longbusy_rc) { - case H_LONG_BUSY_ORDER_1_MSEC: - return 1; - case H_LONG_BUSY_ORDER_10_MSEC: - return 10; - case H_LONG_BUSY_ORDER_100_MSEC: - return 100; - case H_LONG_BUSY_ORDER_1_SEC: - return 1000; - case H_LONG_BUSY_ORDER_10_SEC: - return 10000; - case H_LONG_BUSY_ORDER_100_SEC: - return 100000; - default: - return 1; - } -} - static long ehca_plpar_hcall_norets(unsigned long opcode, unsigned long arg1, unsigned long arg2, @@ -139,7 +119,7 @@ static long ehca_plpar_hcall_norets(unsi spin_unlock_irqrestore(&hcall_lock, flags); if (H_IS_LONG_BUSY(ret)) { - sleep_msecs = get_longbusy_msecs(ret); + sleep_msecs = plpar_get_longbusy_msecs(ret); msleep_interruptible(sleep_msecs); continue; } @@ -192,7 +172,7 @@ static long ehca_plpar_hcall9(unsigned l spin_unlock_irqrestore(&hcall_lock, flags); if (H_IS_LONG_BUSY(ret)) { - sleep_msecs = get_longbusy_msecs(ret); + sleep_msecs = plpar_get_longbusy_msecs(ret); msleep_interruptible(sleep_msecs); continue; } Index: b/drivers/net/ehea/ehea_phyp.c =================================================================== --- a/drivers/net/ehea/ehea_phyp.c +++ b/drivers/net/ehea/ehea_phyp.c @@ -61,7 +61,7 @@ static long ehea_plpar_hcall_norets(unsi arg5, arg6, arg7); if (H_IS_LONG_BUSY(ret)) { - sleep_msecs = get_longbusy_msecs(ret); + sleep_msecs = plpar_get_longbusy_msecs(ret); msleep_interruptible(sleep_msecs); continue; } @@ -102,7 +102,7 @@ static long ehea_plpar_hcall9(unsigned l arg6, arg7, arg8, arg9); if (H_IS_LONG_BUSY(ret)) { - sleep_msecs = get_longbusy_msecs(ret); + sleep_msecs = plpar_get_longbusy_msecs(ret); msleep_interruptible(sleep_msecs); continue; } Index: b/drivers/net/ehea/ehea_phyp.h =================================================================== --- a/drivers/net/ehea/ehea_phyp.h +++ b/drivers/net/ehea/ehea_phyp.h @@ -40,26 +40,6 @@ * hcp_* - structures, variables and functions releated to Hypervisor Calls */ -static inline u32 get_longbusy_msecs(int long_busy_ret_code) -{ - switch (long_busy_ret_code) { - case H_LONG_BUSY_ORDER_1_MSEC: - return 1; - case H_LONG_BUSY_ORDER_10_MSEC: - return 10; - case H_LONG_BUSY_ORDER_100_MSEC: - return 100; - case H_LONG_BUSY_ORDER_1_SEC: - return 1000; - case H_LONG_BUSY_ORDER_10_SEC: - return 10000; - case H_LONG_BUSY_ORDER_100_SEC: - return 100000; - default: - return 1; - } -} - /* Number of pages which can be registered at once by H_REGISTER_HEA_RPAGES */ #define EHEA_MAX_RPAGE 512 Index: b/include/asm-powerpc/hvcall.h =================================================================== --- a/include/asm-powerpc/hvcall.h +++ b/include/asm-powerpc/hvcall.h @@ -222,6 +222,33 @@ #ifndef __ASSEMBLY__ /** + * plpar_get_longbusy_msecs: - Return number of msecs for H_LONG_BUSY* response + * @long_busy_ret_code: The H_LONG_BUSY_* constant to process + * + * This returns the number of msecs that corresponds to an H_LONG_BUSY_* + * response from a plpar_hcall. If there is no match 1 is returned. + */ +static inline u32 plpar_get_longbusy_msecs(int long_busy_ret_code) +{ + switch (long_busy_ret_code) { + case H_LONG_BUSY_ORDER_1_MSEC: + return 1; + case H_LONG_BUSY_ORDER_10_MSEC: + return 10; + case H_LONG_BUSY_ORDER_100_MSEC: + return 100; + case H_LONG_BUSY_ORDER_1_SEC: + return 1000; + case H_LONG_BUSY_ORDER_10_SEC: + return 10000; + case H_LONG_BUSY_ORDER_100_SEC: + return 100000; + default: + return 1; + } +} + +/** * plpar_hcall_norets: - Make a pseries hypervisor call with no return arguments * @opcode: The hypervisor call to make. * ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH 10/19] [repost] powerpc: move get_longbusy_msecs out of ehca/ehea 2008-06-12 22:18 ` [PATCH 10/19] [repost] powerpc: move get_longbusy_msecs out of ehca/ehea Robert Jennings @ 2008-06-13 18:24 ` Brian King 2008-06-13 19:55 ` Jeff Garzik 0 siblings, 1 reply; 3+ messages in thread From: Brian King @ 2008-06-13 18:24 UTC (permalink / raw) To: Robert Jennings Cc: paulus, linuxppc-dev, netdev, Santiago Leon, Nathan Fontenot, David Darrington, Jeff Garzik Jeff, Regarding the patches Rob just posted here, we'd like to just take them through the powerpc tree with your sign off since they are part of a Power platform feature we are enabling. Thanks, Brian Robert Jennings wrote: > From: Robert Jennings <rcj@linux.vnet.ibm.com> > > In support of Cooperative Memory Overcommitment (CMO) this moves > get_longbusy_msecs() out of the ehca and ehea drivers and into the > architecture's hvcall header as plpar_get_longbusy_msecs. Some firmware > calls made in pSeries platform iommu code will need to share this > functionality. > > Signed-off-by: Robert Jennings <rcj@linux.vnet.ibm.com> > > --- > > I missed copying netdev on this patch the first time. > > drivers/infiniband/hw/ehca/hcp_if.c | 24 ++---------------------- > drivers/net/ehea/ehea_phyp.c | 4 ++-- > drivers/net/ehea/ehea_phyp.h | 20 -------------------- > include/asm-powerpc/hvcall.h | 27 +++++++++++++++++++++++++++ > 4 files changed, 31 insertions(+), 44 deletions(-) > > Index: b/drivers/infiniband/hw/ehca/hcp_if.c > =================================================================== > --- a/drivers/infiniband/hw/ehca/hcp_if.c > +++ b/drivers/infiniband/hw/ehca/hcp_if.c > @@ -90,26 +90,6 @@ > > static DEFINE_SPINLOCK(hcall_lock); > > -static u32 get_longbusy_msecs(int longbusy_rc) > -{ > - switch (longbusy_rc) { > - case H_LONG_BUSY_ORDER_1_MSEC: > - return 1; > - case H_LONG_BUSY_ORDER_10_MSEC: > - return 10; > - case H_LONG_BUSY_ORDER_100_MSEC: > - return 100; > - case H_LONG_BUSY_ORDER_1_SEC: > - return 1000; > - case H_LONG_BUSY_ORDER_10_SEC: > - return 10000; > - case H_LONG_BUSY_ORDER_100_SEC: > - return 100000; > - default: > - return 1; > - } > -} > - > static long ehca_plpar_hcall_norets(unsigned long opcode, > unsigned long arg1, > unsigned long arg2, > @@ -139,7 +119,7 @@ static long ehca_plpar_hcall_norets(unsi > spin_unlock_irqrestore(&hcall_lock, flags); > > if (H_IS_LONG_BUSY(ret)) { > - sleep_msecs = get_longbusy_msecs(ret); > + sleep_msecs = plpar_get_longbusy_msecs(ret); > msleep_interruptible(sleep_msecs); > continue; > } > @@ -192,7 +172,7 @@ static long ehca_plpar_hcall9(unsigned l > spin_unlock_irqrestore(&hcall_lock, flags); > > if (H_IS_LONG_BUSY(ret)) { > - sleep_msecs = get_longbusy_msecs(ret); > + sleep_msecs = plpar_get_longbusy_msecs(ret); > msleep_interruptible(sleep_msecs); > continue; > } > Index: b/drivers/net/ehea/ehea_phyp.c > =================================================================== > --- a/drivers/net/ehea/ehea_phyp.c > +++ b/drivers/net/ehea/ehea_phyp.c > @@ -61,7 +61,7 @@ static long ehea_plpar_hcall_norets(unsi > arg5, arg6, arg7); > > if (H_IS_LONG_BUSY(ret)) { > - sleep_msecs = get_longbusy_msecs(ret); > + sleep_msecs = plpar_get_longbusy_msecs(ret); > msleep_interruptible(sleep_msecs); > continue; > } > @@ -102,7 +102,7 @@ static long ehea_plpar_hcall9(unsigned l > arg6, arg7, arg8, arg9); > > if (H_IS_LONG_BUSY(ret)) { > - sleep_msecs = get_longbusy_msecs(ret); > + sleep_msecs = plpar_get_longbusy_msecs(ret); > msleep_interruptible(sleep_msecs); > continue; > } > Index: b/drivers/net/ehea/ehea_phyp.h > =================================================================== > --- a/drivers/net/ehea/ehea_phyp.h > +++ b/drivers/net/ehea/ehea_phyp.h > @@ -40,26 +40,6 @@ > * hcp_* - structures, variables and functions releated to Hypervisor Calls > */ > > -static inline u32 get_longbusy_msecs(int long_busy_ret_code) > -{ > - switch (long_busy_ret_code) { > - case H_LONG_BUSY_ORDER_1_MSEC: > - return 1; > - case H_LONG_BUSY_ORDER_10_MSEC: > - return 10; > - case H_LONG_BUSY_ORDER_100_MSEC: > - return 100; > - case H_LONG_BUSY_ORDER_1_SEC: > - return 1000; > - case H_LONG_BUSY_ORDER_10_SEC: > - return 10000; > - case H_LONG_BUSY_ORDER_100_SEC: > - return 100000; > - default: > - return 1; > - } > -} > - > /* Number of pages which can be registered at once by H_REGISTER_HEA_RPAGES */ > #define EHEA_MAX_RPAGE 512 > > Index: b/include/asm-powerpc/hvcall.h > =================================================================== > --- a/include/asm-powerpc/hvcall.h > +++ b/include/asm-powerpc/hvcall.h > @@ -222,6 +222,33 @@ > #ifndef __ASSEMBLY__ > > /** > + * plpar_get_longbusy_msecs: - Return number of msecs for H_LONG_BUSY* response > + * @long_busy_ret_code: The H_LONG_BUSY_* constant to process > + * > + * This returns the number of msecs that corresponds to an H_LONG_BUSY_* > + * response from a plpar_hcall. If there is no match 1 is returned. > + */ > +static inline u32 plpar_get_longbusy_msecs(int long_busy_ret_code) > +{ > + switch (long_busy_ret_code) { > + case H_LONG_BUSY_ORDER_1_MSEC: > + return 1; > + case H_LONG_BUSY_ORDER_10_MSEC: > + return 10; > + case H_LONG_BUSY_ORDER_100_MSEC: > + return 100; > + case H_LONG_BUSY_ORDER_1_SEC: > + return 1000; > + case H_LONG_BUSY_ORDER_10_SEC: > + return 10000; > + case H_LONG_BUSY_ORDER_100_SEC: > + return 100000; > + default: > + return 1; > + } > +} > + > +/** > * plpar_hcall_norets: - Make a pseries hypervisor call with no return arguments > * @opcode: The hypervisor call to make. > * -- Brian King Linux on Power Virtualization IBM Linux Technology Center ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH 10/19] [repost] powerpc: move get_longbusy_msecs out of ehca/ehea 2008-06-13 18:24 ` Brian King @ 2008-06-13 19:55 ` Jeff Garzik 0 siblings, 0 replies; 3+ messages in thread From: Jeff Garzik @ 2008-06-13 19:55 UTC (permalink / raw) To: Brian King Cc: Robert Jennings, paulus, linuxppc-dev, netdev, Santiago Leon, Nathan Fontenot, David Darrington Brian King wrote: > Jeff, > > Regarding the patches Rob just posted here, we'd like to just take them > through the powerpc tree with your sign off since they are part of a > Power platform feature we are enabling. > > Thanks, > > Brian > > Robert Jennings wrote: >> From: Robert Jennings <rcj@linux.vnet.ibm.com> >> >> In support of Cooperative Memory Overcommitment (CMO) this moves >> get_longbusy_msecs() out of the ehca and ehea drivers and into the >> architecture's hvcall header as plpar_get_longbusy_msecs. Some firmware >> calls made in pSeries platform iommu code will need to share this >> functionality. >> >> Signed-off-by: Robert Jennings <rcj@linux.vnet.ibm.com> >> >> --- >> >> I missed copying netdev on this patch the first time. >> >> drivers/infiniband/hw/ehca/hcp_if.c | 24 ++---------------------- >> drivers/net/ehea/ehea_phyp.c | 4 ++-- >> drivers/net/ehea/ehea_phyp.h | 20 -------------------- >> include/asm-powerpc/hvcall.h | 27 +++++++++++++++++++++++++++ >> 4 files changed, 31 insertions(+), 44 deletions(-) ACK the quoted patch ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2008-06-13 19:56 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20080612221535.GQ30916@linux.vnet.ibm.com>
2008-06-12 22:18 ` [PATCH 10/19] [repost] powerpc: move get_longbusy_msecs out of ehca/ehea Robert Jennings
2008-06-13 18:24 ` Brian King
2008-06-13 19:55 ` Jeff Garzik
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).