Message ID | 20210811135948.2634264-1-elder@linaro.org |
---|---|
State | New |
Headers | show |
Series | [net-next,v2] net: ipa: always inline ipa_aggr_granularity_val() | expand |
Hello: This patch was applied to netdev/net-next.git (refs/heads/master): On Wed, 11 Aug 2021 08:59:48 -0500 you wrote: > It isn't required, but all callers of ipa_aggr_granularity_val() > pass a constant value (IPA_AGGR_GRANULARITY) as the usec argument. > Two of those callers are in ipa_validate_build(), with the result > being passed to BUILD_BUG_ON(). > > Evidently the "sparc64-linux-gcc" compiler (at least) doesn't always > inline ipa_aggr_granularity_val(), so the result of the function is > not constant at compile time, and that leads to build errors. > > [...] Here is the summary with links: - [net-next,v2] net: ipa: always inline ipa_aggr_granularity_val() https://git.kernel.org/netdev/net-next/c/676eec8efd8e You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html
diff --git a/drivers/net/ipa/ipa_main.c b/drivers/net/ipa/ipa_main.c index f332210ce5354..581b75488c6fe 100644 --- a/drivers/net/ipa/ipa_main.c +++ b/drivers/net/ipa/ipa_main.c @@ -253,12 +253,11 @@ ipa_hardware_config_qsb(struct ipa *ipa, const struct ipa_data *data) /* Compute the value to use in the COUNTER_CFG register AGGR_GRANULARITY * field to represent the given number of microseconds. The value is one * less than the number of timer ticks in the requested period. 0 is not - * a valid granularity value. + * a valid granularity value (so for example @usec must be at least 16 for + * a TIMER_FREQUENCY of 32000). */ -static u32 ipa_aggr_granularity_val(u32 usec) +static __always_inline u32 ipa_aggr_granularity_val(u32 usec) { - WARN_ON(!usec); - return DIV_ROUND_CLOSEST(usec * TIMER_FREQUENCY, USEC_PER_SEC) - 1; }
It isn't required, but all callers of ipa_aggr_granularity_val() pass a constant value (IPA_AGGR_GRANULARITY) as the usec argument. Two of those callers are in ipa_validate_build(), with the result being passed to BUILD_BUG_ON(). Evidently the "sparc64-linux-gcc" compiler (at least) doesn't always inline ipa_aggr_granularity_val(), so the result of the function is not constant at compile time, and that leads to build errors. Define the function with the __always_inline attribute to avoid the errors. We can see by inspection that the value passed is never zero, so we can just remove its WARN_ON() call. Fixes: 5bc5588466a1f ("net: ipa: use WARN_ON() rather than assertions") Reported-by: kernel test robot <lkp@intel.com> Signed-off-by: Alex Elder <elder@linaro.org> --- v2: Drop WARN_ON() call, as suggested by Leon Romanovsky David/Jakub, the bug this fixes is only in net-next/master. drivers/net/ipa/ipa_main.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) -- 2.27.0