diff options
| author | Rodrigo Vivi <rodrigo.vivi@intel.com> | 2017-12-08 21:15:30 +0300 |
|---|---|---|
| committer | Rodrigo Vivi <rodrigo.vivi@intel.com> | 2017-12-08 21:15:30 +0300 |
| commit | 6647852abc1fd74e9c5e0dcf404ea4cb9c929630 (patch) | |
| tree | 371aa801a5a211f5f8af87bd5488e3dae75ea975 /include/linux/average.h | |
| parent | 3e72be177cf19ab3d62b3084d424dce7e71d847f (diff) | |
| parent | 3f1f0b1c57dd617e9b0ded50efb8d6c011b85b20 (diff) | |
| download | linux-6647852abc1fd74e9c5e0dcf404ea4cb9c929630.tar.xz | |
Merge airlied/drm-next into drm-intel-next-queued
Chris requested this backmerge for a reconciliation on
drm_print.h between drm-misc-next and drm-intel-next-queued
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Diffstat (limited to 'include/linux/average.h')
| -rw-r--r-- | include/linux/average.h | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/include/linux/average.h b/include/linux/average.h index 7ddaf340d2ac..a1a8f09631ce 100644 --- a/include/linux/average.h +++ b/include/linux/average.h @@ -1,6 +1,11 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _LINUX_AVERAGE_H #define _LINUX_AVERAGE_H +#include <linux/bug.h> +#include <linux/compiler.h> +#include <linux/log2.h> + /* * Exponentially weighted moving average (EWMA) * @@ -48,7 +53,7 @@ static inline void ewma_##name##_add(struct ewma_##name *e, \ unsigned long val) \ { \ - unsigned long internal = ACCESS_ONCE(e->internal); \ + unsigned long internal = READ_ONCE(e->internal); \ unsigned long weight_rcp = ilog2(_weight_rcp); \ unsigned long precision = _precision; \ \ @@ -57,10 +62,10 @@ BUILD_BUG_ON((_precision) > 30); \ BUILD_BUG_ON_NOT_POWER_OF_2(_weight_rcp); \ \ - ACCESS_ONCE(e->internal) = internal ? \ + WRITE_ONCE(e->internal, internal ? \ (((internal << weight_rcp) - internal) + \ (val << precision)) >> weight_rcp : \ - (val << precision); \ + (val << precision)); \ } #endif /* _LINUX_AVERAGE_H */ |
