Re: [PATCH 10/19] [repost] powerpc: move get_longbusy_msecs out of ehca/ehea
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 1; - case H_LONG_BUSY_ORDER_100_SEC: - return 10; - 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 1; - case H_LONG_BUSY_ORDER_100_SEC: - return 10; - 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:
Re: [PATCH 10/19] [repost] powerpc: move get_longbusy_msecs out of ehca/ehea
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 [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(-) ACK the quoted patch ___ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev
[PATCH 10/19] [repost] powerpc: move get_longbusy_msecs out of ehca/ehea
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 1; - case H_LONG_BUSY_ORDER_100_SEC: - return 10; - 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 1; - case H_LONG_BUSY_ORDER_100_SEC: - return 10; - 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