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 <[EMAIL PROTECTED]> > > 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 <[EMAIL PROTECTED]> > > --- > > 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 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev