All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2][RFC] Add more trace point for runtime usage count
@ 2020-06-05 19:05 Chen Yu
  2020-06-05 19:05 ` [PATCH 1/2][RFC] PM-runtime: Move all runtime usage related function to runtime.c Chen Yu
  2020-06-05 19:05 ` [PATCH 2/2][RFC] PM-runtime: add tracepoints to cover all usage_count changes Chen Yu
  0 siblings, 2 replies; 13+ messages in thread
From: Chen Yu @ 2020-06-05 19:05 UTC (permalink / raw)
  To: Rafael J . Wysocki, Len Brown, Greg Kroah-Hartman, Michal Miroslaw
  Cc: linux-pm, linux-kernel, Chen Yu

Currentlt some code flow of runtime usage count changes is not covered by 
the tracepoints. Add corresponding tracepoints to monitor all the usage_count
changes.


Chen Yu (2):
  PM-runtime: Move all runtime usage related function to runtime.c
  PM-runtime: add more tracepoints for usage_count changes

 drivers/base/power/runtime.c | 49 +++++++++++++++++++++++++-----------
 include/linux/pm_runtime.h   | 14 +++--------
 2 files changed, 39 insertions(+), 24 deletions(-)

-- 
2.20.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 1/2][RFC] PM-runtime: Move all runtime usage related function to runtime.c
  2020-06-05 19:05 [PATCH 0/2][RFC] Add more trace point for runtime usage count Chen Yu
@ 2020-06-05 19:05 ` Chen Yu
  2020-06-06  0:17   ` kernel test robot
                     ` (3 more replies)
  2020-06-05 19:05 ` [PATCH 2/2][RFC] PM-runtime: add tracepoints to cover all usage_count changes Chen Yu
  1 sibling, 4 replies; 13+ messages in thread
From: Chen Yu @ 2020-06-05 19:05 UTC (permalink / raw)
  To: Rafael J . Wysocki, Len Brown, Greg Kroah-Hartman, Michal Miroslaw
  Cc: linux-pm, linux-kernel, Chen Yu

In order to track all the runtime usage count change, move the code
related to runtime usage count change from pm_runtime.h to runtime.c,
so that in runtime.c we can leverage trace event to do the tracking.
Meanwhile export pm_runtime_get_noresume() and pm_runtime_put_noidle()
so the module can use them.

No functional change.

Signed-off-by: Chen Yu <yu.c.chen@intel.com>
---
 drivers/base/power/runtime.c | 12 ++++++++++++
 include/linux/pm_runtime.h   | 14 ++++----------
 2 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c
index 9f62790f644c..85a248e196ca 100644
--- a/drivers/base/power/runtime.c
+++ b/drivers/base/power/runtime.c
@@ -1738,6 +1738,18 @@ void pm_runtime_drop_link(struct device *dev)
 	spin_unlock_irq(&dev->power.lock);
 }
 
+void pm_runtime_get_noresume(struct device *dev)
+{
+	atomic_inc(&dev->power.usage_count);
+}
+EXPORT_SYMBOL_GPL(pm_runtime_get_noresume);
+
+void pm_runtime_put_noidle(struct device *dev)
+{
+	atomic_add_unless(&dev->power.usage_count, -1, 0);
+}
+EXPORT_SYMBOL_GPL(pm_runtime_put_noidle);
+
 static bool pm_runtime_need_not_resume(struct device *dev)
 {
 	return atomic_read(&dev->power.usage_count) <= 1 &&
diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h
index 3dbc207bff53..57afdb122d8a 100644
--- a/include/linux/pm_runtime.h
+++ b/include/linux/pm_runtime.h
@@ -59,6 +59,8 @@ extern void pm_runtime_get_suppliers(struct device *dev);
 extern void pm_runtime_put_suppliers(struct device *dev);
 extern void pm_runtime_new_link(struct device *dev);
 extern void pm_runtime_drop_link(struct device *dev);
+extern void pm_runtime_get_noresume(struct device *dev);
+extern void pm_runtime_put_noidle(struct device *dev);
 
 static inline int pm_runtime_get_if_in_use(struct device *dev)
 {
@@ -70,16 +72,6 @@ static inline void pm_suspend_ignore_children(struct device *dev, bool enable)
 	dev->power.ignore_children = enable;
 }
 
-static inline void pm_runtime_get_noresume(struct device *dev)
-{
-	atomic_inc(&dev->power.usage_count);
-}
-
-static inline void pm_runtime_put_noidle(struct device *dev)
-{
-	atomic_add_unless(&dev->power.usage_count, -1, 0);
-}
-
 static inline bool pm_runtime_suspended(struct device *dev)
 {
 	return dev->power.runtime_status == RPM_SUSPENDED
@@ -188,6 +180,8 @@ static inline void pm_runtime_get_suppliers(struct device *dev) {}
 static inline void pm_runtime_put_suppliers(struct device *dev) {}
 static inline void pm_runtime_new_link(struct device *dev) {}
 static inline void pm_runtime_drop_link(struct device *dev) {}
+static inline void pm_runtime_get_noresume(struct device *dev) {}
+static inline void pm_runtime_put_noidle(struct device *dev) {}
 
 #endif /* !CONFIG_PM */
 
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 2/2][RFC] PM-runtime: add tracepoints to cover all usage_count changes
  2020-06-05 19:05 [PATCH 0/2][RFC] Add more trace point for runtime usage count Chen Yu
  2020-06-05 19:05 ` [PATCH 1/2][RFC] PM-runtime: Move all runtime usage related function to runtime.c Chen Yu
@ 2020-06-05 19:05 ` Chen Yu
  2020-06-05 19:33   ` Michal Miroslaw
  1 sibling, 1 reply; 13+ messages in thread
From: Chen Yu @ 2020-06-05 19:05 UTC (permalink / raw)
  To: Rafael J . Wysocki, Len Brown, Greg Kroah-Hartman, Michal Miroslaw
  Cc: linux-pm, linux-kernel, Chen Yu

Commit d229290689ae ("PM-runtime: add tracepoints for usage_count changes")
has added some tracepoints to monitor the change of runtime usage, and
there is something to improve:
1. There are some places that adjust the usage count have not
   been traced yet. For example, pm_runtime_get_noresume() and
   pm_runtime_put_noidle()
2. The change of the usage count will not be tracked if decreased
   from 1 to 0.

This patch address above issues by tracking the usage count whenever
it has been modified. And these changes has helped track down the
e1000e runtime issue.

Signed-off-by: Chen Yu <yu.c.chen@intel.com>
---
 drivers/base/power/runtime.c | 37 ++++++++++++++++++++++--------------
 1 file changed, 23 insertions(+), 14 deletions(-)

diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c
index 85a248e196ca..4aa2b5aa0bb8 100644
--- a/drivers/base/power/runtime.c
+++ b/drivers/base/power/runtime.c
@@ -1004,10 +1004,11 @@ int __pm_runtime_idle(struct device *dev, int rpmflags)
 	int retval;
 
 	if (rpmflags & RPM_GET_PUT) {
-		if (!atomic_dec_and_test(&dev->power.usage_count)) {
-			trace_rpm_usage_rcuidle(dev, rpmflags);
+		bool non_zero = !atomic_dec_and_test(&dev->power.usage_count);
+
+		trace_rpm_usage_rcuidle(dev, rpmflags);
+		if (non_zero)
 			return 0;
-		}
 	}
 
 	might_sleep_if(!(rpmflags & RPM_ASYNC) && !dev->power.irq_safe);
@@ -1038,10 +1039,12 @@ int __pm_runtime_suspend(struct device *dev, int rpmflags)
 	int retval;
 
 	if (rpmflags & RPM_GET_PUT) {
-		if (!atomic_dec_and_test(&dev->power.usage_count)) {
-			trace_rpm_usage_rcuidle(dev, rpmflags);
+		bool non_zero = !atomic_dec_and_test(&dev->power.usage_count);
+
+		trace_rpm_usage_rcuidle(dev, rpmflags);
+		if (non_zero)
 			return 0;
-		}
+
 	}
 
 	might_sleep_if(!(rpmflags & RPM_ASYNC) && !dev->power.irq_safe);
@@ -1073,8 +1076,10 @@ int __pm_runtime_resume(struct device *dev, int rpmflags)
 	might_sleep_if(!(rpmflags & RPM_ASYNC) && !dev->power.irq_safe &&
 			dev->power.runtime_status != RPM_ACTIVE);
 
-	if (rpmflags & RPM_GET_PUT)
+	if (rpmflags & RPM_GET_PUT) {
 		atomic_inc(&dev->power.usage_count);
+		trace_rpm_usage_rcuidle(dev, rpmflags);
+	}
 
 	spin_lock_irqsave(&dev->power.lock, flags);
 	retval = rpm_resume(dev, rpmflags);
@@ -1448,16 +1453,17 @@ EXPORT_SYMBOL_GPL(pm_runtime_forbid);
  */
 void pm_runtime_allow(struct device *dev)
 {
+	bool is_zero;
+
 	spin_lock_irq(&dev->power.lock);
 	if (dev->power.runtime_auto)
 		goto out;
 
 	dev->power.runtime_auto = true;
-	if (atomic_dec_and_test(&dev->power.usage_count))
+	is_zero = atomic_dec_and_test(&dev->power.usage_count);
+	trace_rpm_usage_rcuidle(dev, RPM_AUTO | RPM_ASYNC);
+	if (is_zero)
 		rpm_idle(dev, RPM_AUTO | RPM_ASYNC);
-	else
-		trace_rpm_usage_rcuidle(dev, RPM_AUTO | RPM_ASYNC);
-
  out:
 	spin_unlock_irq(&dev->power.lock);
 }
@@ -1523,9 +1529,8 @@ static void update_autosuspend(struct device *dev, int old_delay, int old_use)
 		/* If it used to be allowed then prevent it. */
 		if (!old_use || old_delay >= 0) {
 			atomic_inc(&dev->power.usage_count);
-			rpm_resume(dev, 0);
-		} else {
 			trace_rpm_usage_rcuidle(dev, 0);
+			rpm_resume(dev, 0);
 		}
 	}
 
@@ -1533,8 +1538,10 @@ static void update_autosuspend(struct device *dev, int old_delay, int old_use)
 	else {
 
 		/* If it used to be prevented then allow it. */
-		if (old_use && old_delay < 0)
+		if (old_use && old_delay < 0) {
 			atomic_dec(&dev->power.usage_count);
+			trace_rpm_usage_rcuidle(dev, 0);
+		}
 
 		/* Maybe we can autosuspend now. */
 		rpm_idle(dev, RPM_AUTO);
@@ -1741,12 +1748,14 @@ void pm_runtime_drop_link(struct device *dev)
 void pm_runtime_get_noresume(struct device *dev)
 {
 	atomic_inc(&dev->power.usage_count);
+	trace_rpm_usage_rcuidle(dev, 0);
 }
 EXPORT_SYMBOL_GPL(pm_runtime_get_noresume);
 
 void pm_runtime_put_noidle(struct device *dev)
 {
 	atomic_add_unless(&dev->power.usage_count, -1, 0);
+	trace_rpm_usage_rcuidle(dev, 0);
 }
 EXPORT_SYMBOL_GPL(pm_runtime_put_noidle);
 
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/2][RFC] PM-runtime: add tracepoints to cover all usage_count changes
  2020-06-05 19:05 ` [PATCH 2/2][RFC] PM-runtime: add tracepoints to cover all usage_count changes Chen Yu
@ 2020-06-05 19:33   ` Michal Miroslaw
  2020-06-06  7:14     ` Chen Yu
  0 siblings, 1 reply; 13+ messages in thread
From: Michal Miroslaw @ 2020-06-05 19:33 UTC (permalink / raw)
  To: Chen Yu
  Cc: Rafael J . Wysocki, Len Brown, Greg Kroah-Hartman, linux-pm,
	linux-kernel

On Sat, Jun 06, 2020 at 03:05:52AM +0800, Chen Yu wrote:
> Commit d229290689ae ("PM-runtime: add tracepoints for usage_count changes")
> has added some tracepoints to monitor the change of runtime usage, and
> there is something to improve:
> 1. There are some places that adjust the usage count have not
>    been traced yet. For example, pm_runtime_get_noresume() and
>    pm_runtime_put_noidle()
> 2. The change of the usage count will not be tracked if decreased
>    from 1 to 0.
[...]
> @@ -1448,16 +1453,17 @@ EXPORT_SYMBOL_GPL(pm_runtime_forbid);
>   */
>  void pm_runtime_allow(struct device *dev)
>  {
> +	bool is_zero;
> +
>  	spin_lock_irq(&dev->power.lock);
>  	if (dev->power.runtime_auto)
>  		goto out;
>  
>  	dev->power.runtime_auto = true;
> -	if (atomic_dec_and_test(&dev->power.usage_count))
> +	is_zero = atomic_dec_and_test(&dev->power.usage_count);
> +	trace_rpm_usage_rcuidle(dev, RPM_AUTO | RPM_ASYNC);
> +	if (is_zero)
>  		rpm_idle(dev, RPM_AUTO | RPM_ASYNC);
> -	else
> -		trace_rpm_usage_rcuidle(dev, RPM_AUTO | RPM_ASYNC);
> -
[...]

IIRC, rpm_idle() has a tracepoint already.

> @@ -1523,9 +1529,8 @@ static void update_autosuspend(struct device *dev, int old_delay, int old_use)
>  		/* If it used to be allowed then prevent it. */
>  		if (!old_use || old_delay >= 0) {
>  			atomic_inc(&dev->power.usage_count);
> -			rpm_resume(dev, 0);
> -		} else {
>  			trace_rpm_usage_rcuidle(dev, 0);
> +			rpm_resume(dev, 0);
>  		}
>  	}
[...]

This actually changes logic, so it doesn't match the patch description.

Best Regards
Michał Mirosław

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2][RFC] PM-runtime: Move all runtime usage related function to runtime.c
  2020-06-05 19:05 ` [PATCH 1/2][RFC] PM-runtime: Move all runtime usage related function to runtime.c Chen Yu
@ 2020-06-06  0:17   ` kernel test robot
  2020-06-06 12:00   ` kernel test robot
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 13+ messages in thread
From: kernel test robot @ 2020-06-06  0:17 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 4406 bytes --]

Hi Chen,

[FYI, it's a private test report for your RFC patch.]
[auto build test ERROR on pm/linux-next]
[also build test ERROR on v5.7 next-20200605]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Chen-Yu/Add-more-trace-point-for-runtime-usage-count/20200606-030705
base:   https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git linux-next
config: x86_64-allnoconfig (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 6dd738e2f0609f7d3313b574a1d471263d2d3ba1)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>, old ones prefixed by <<):

In file included from drivers/base/core.c:26:
>> include/linux/pm_runtime.h:183:20: error: redefinition of 'pm_runtime_get_noresume'
static inline void pm_runtime_get_noresume(struct device *dev) {}
^
include/linux/pm_runtime.h:157:20: note: previous definition is here
static inline void pm_runtime_get_noresume(struct device *dev) {}
^
>> include/linux/pm_runtime.h:184:20: error: redefinition of 'pm_runtime_put_noidle'
static inline void pm_runtime_put_noidle(struct device *dev) {}
^
include/linux/pm_runtime.h:158:20: note: previous definition is here
static inline void pm_runtime_put_noidle(struct device *dev) {}
^
2 errors generated.
--
In file included from drivers/base/platform.c:22:
>> include/linux/pm_runtime.h:183:20: error: redefinition of 'pm_runtime_get_noresume'
static inline void pm_runtime_get_noresume(struct device *dev) {}
^
include/linux/pm_runtime.h:157:20: note: previous definition is here
static inline void pm_runtime_get_noresume(struct device *dev) {}
^
>> include/linux/pm_runtime.h:184:20: error: redefinition of 'pm_runtime_put_noidle'
static inline void pm_runtime_put_noidle(struct device *dev) {}
^
include/linux/pm_runtime.h:158:20: note: previous definition is here
static inline void pm_runtime_put_noidle(struct device *dev) {}
^
drivers/base/platform.c:1340:20: warning: no previous prototype for function 'early_platform_cleanup' [-Wmissing-prototypes]
void __weak __init early_platform_cleanup(void) { }
^
drivers/base/platform.c:1340:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void __weak __init early_platform_cleanup(void) { }
^
static
1 warning and 2 errors generated.

vim +/pm_runtime_get_noresume +183 include/linux/pm_runtime.h

   167	
   168	static inline bool pm_runtime_callbacks_present(struct device *dev) { return false; }
   169	static inline void pm_runtime_mark_last_busy(struct device *dev) {}
   170	static inline void __pm_runtime_use_autosuspend(struct device *dev,
   171							bool use) {}
   172	static inline void pm_runtime_set_autosuspend_delay(struct device *dev,
   173							int delay) {}
   174	static inline u64 pm_runtime_autosuspend_expiration(
   175					struct device *dev) { return 0; }
   176	static inline void pm_runtime_set_memalloc_noio(struct device *dev,
   177							bool enable){}
   178	static inline void pm_runtime_clean_up_links(struct device *dev) {}
   179	static inline void pm_runtime_get_suppliers(struct device *dev) {}
   180	static inline void pm_runtime_put_suppliers(struct device *dev) {}
   181	static inline void pm_runtime_new_link(struct device *dev) {}
   182	static inline void pm_runtime_drop_link(struct device *dev) {}
 > 183	static inline void pm_runtime_get_noresume(struct device *dev) {}
 > 184	static inline void pm_runtime_put_noidle(struct device *dev) {}
   185	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 7441 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/2][RFC] PM-runtime: add tracepoints to cover all usage_count changes
  2020-06-05 19:33   ` Michal Miroslaw
@ 2020-06-06  7:14     ` Chen Yu
  2020-06-07  4:55       ` Michal Miroslaw
  0 siblings, 1 reply; 13+ messages in thread
From: Chen Yu @ 2020-06-06  7:14 UTC (permalink / raw)
  To: Michal Miroslaw
  Cc: Rafael J . Wysocki, Len Brown, Greg Kroah-Hartman, linux-pm,
	linux-kernel

Hi,
On Fri, Jun 05, 2020 at 09:33:11PM +0200, Michal Miroslaw wrote:
> On Sat, Jun 06, 2020 at 03:05:52AM +0800, Chen Yu wrote:
> > Commit d229290689ae ("PM-runtime: add tracepoints for usage_count changes")
> > has added some tracepoints to monitor the change of runtime usage, and
> > there is something to improve:
> > 1. There are some places that adjust the usage count have not
> >    been traced yet. For example, pm_runtime_get_noresume() and
> >    pm_runtime_put_noidle()
> > 2. The change of the usage count will not be tracked if decreased
> >    from 1 to 0.
> [...]
> > @@ -1448,16 +1453,17 @@ EXPORT_SYMBOL_GPL(pm_runtime_forbid);
> >   */
> >  void pm_runtime_allow(struct device *dev)
> >  {
> > +	bool is_zero;
> > +
> >  	spin_lock_irq(&dev->power.lock);
> >  	if (dev->power.runtime_auto)
> >  		goto out;
> >  
> >  	dev->power.runtime_auto = true;
> > -	if (atomic_dec_and_test(&dev->power.usage_count))
> > +	is_zero = atomic_dec_and_test(&dev->power.usage_count);
> > +	trace_rpm_usage_rcuidle(dev, RPM_AUTO | RPM_ASYNC);
> > +	if (is_zero)
> >  		rpm_idle(dev, RPM_AUTO | RPM_ASYNC);
> > -	else
> > -		trace_rpm_usage_rcuidle(dev, RPM_AUTO | RPM_ASYNC);
> > -
> [...]
> 
> IIRC, rpm_idle() has a tracepoint already.
> 
Yes, this is what I concerned previously. If someone
want to track the change of usage_count, then he might
have to enable both trace rpm_usage and rpm_idle so
as to track the moment when the counter drops from 1 to
0. It might be more consistent if we only enable
trace rpm_usage to track the whole process.
> > @@ -1523,9 +1529,8 @@ static void update_autosuspend(struct device *dev, int old_delay, int old_use)
> >  		/* If it used to be allowed then prevent it. */
> >  		if (!old_use || old_delay >= 0) {
> >  			atomic_inc(&dev->power.usage_count);
> > -			rpm_resume(dev, 0);
> > -		} else {
> >  			trace_rpm_usage_rcuidle(dev, 0);
> > +			rpm_resume(dev, 0);
> >  		}
> >  	}
> [...]
> 
> This actually changes logic, so it doesn't match the patch description.
> 
This patch intends to adjust the logic to be consistent with
the change of usage_counter, that is to say, only after the
counter has been possibly modified, we record it. In current
logic above, it tracks the usage count where the latter does
not change.

Thanks,
Chenyu
> Best Regards
> Michał Mirosław

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2][RFC] PM-runtime: Move all runtime usage related function to runtime.c
  2020-06-05 19:05 ` [PATCH 1/2][RFC] PM-runtime: Move all runtime usage related function to runtime.c Chen Yu
  2020-06-06  0:17   ` kernel test robot
@ 2020-06-06 12:00   ` kernel test robot
  2020-06-06 17:18   ` Chen Yu
  2020-06-08 15:11   ` kernel test robot
  3 siblings, 0 replies; 13+ messages in thread
From: kernel test robot @ 2020-06-06 12:00 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 15509 bytes --]

Hi Chen,

[FYI, it's a private test report for your RFC patch.]
[auto build test WARNING on pm/linux-next]
[also build test WARNING on v5.7 next-20200605]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Chen-Yu/Add-more-trace-point-for-runtime-usage-count/20200606-030705
base:   https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git linux-next
config: x86_64-randconfig-a005-20200606 (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project e429cffd4f228f70c1d9df0e5d77c08590dd9766)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>, old ones prefixed by <<):

In file included from drivers/misc/mei/pci-me.c:17:
include/linux/pm_runtime.h:183:20: error: redefinition of 'pm_runtime_get_noresume'
static inline void pm_runtime_get_noresume(struct device *dev) {}
^
include/linux/pm_runtime.h:157:20: note: previous definition is here
static inline void pm_runtime_get_noresume(struct device *dev) {}
^
include/linux/pm_runtime.h:184:20: error: redefinition of 'pm_runtime_put_noidle'
static inline void pm_runtime_put_noidle(struct device *dev) {}
^
include/linux/pm_runtime.h:158:20: note: previous definition is here
static inline void pm_runtime_put_noidle(struct device *dev) {}
^
>> drivers/misc/mei/pci-me.c:185:31: warning: shift count >= width of type [-Wshift-count-overflow]
if (dma_set_mask(&pdev->dev, DMA_BIT_MASK(64)) ||
^~~~~~~~~~~~~~~~
include/linux/dma-mapping.h:139:54: note: expanded from macro 'DMA_BIT_MASK'
#define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
^ ~~~
drivers/misc/mei/pci-me.c:186:40: warning: shift count >= width of type [-Wshift-count-overflow]
dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64))) {
^~~~~~~~~~~~~~~~
include/linux/dma-mapping.h:139:54: note: expanded from macro 'DMA_BIT_MASK'
#define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
^ ~~~
2 warnings and 2 errors generated.
--
In file included from drivers/block/mtip32xx/mtip32xx.c:29:
In file included from include/../drivers/ata/ahci.h:25:
In file included from include/linux/phy/phy.h:16:
include/linux/pm_runtime.h:183:20: error: redefinition of 'pm_runtime_get_noresume'
static inline void pm_runtime_get_noresume(struct device *dev) {}
^
include/linux/pm_runtime.h:157:20: note: previous definition is here
static inline void pm_runtime_get_noresume(struct device *dev) {}
^
include/linux/pm_runtime.h:184:20: error: redefinition of 'pm_runtime_put_noidle'
static inline void pm_runtime_put_noidle(struct device *dev) {}
^
include/linux/pm_runtime.h:158:20: note: previous definition is here
static inline void pm_runtime_put_noidle(struct device *dev) {}
^
>> drivers/block/mtip32xx/mtip32xx.c:4043:45: warning: shift count >= width of type [-Wshift-count-overflow]
rv = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
^~~~~~~~~~~~~~~~
include/linux/dma-mapping.h:139:54: note: expanded from macro 'DMA_BIT_MASK'
#define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
^ ~~~
1 warning and 2 errors generated.
--
In file included from sound/soc/intel/skylake/skl.c:18:
include/linux/pm_runtime.h:183:20: error: redefinition of 'pm_runtime_get_noresume'
static inline void pm_runtime_get_noresume(struct device *dev) {}
^
include/linux/pm_runtime.h:157:20: note: previous definition is here
static inline void pm_runtime_get_noresume(struct device *dev) {}
^
include/linux/pm_runtime.h:184:20: error: redefinition of 'pm_runtime_put_noidle'
static inline void pm_runtime_put_noidle(struct device *dev) {}
^
include/linux/pm_runtime.h:158:20: note: previous definition is here
static inline void pm_runtime_put_noidle(struct device *dev) {}
^
>> sound/soc/intel/skylake/skl.c:953:30: warning: shift count >= width of type [-Wshift-count-overflow]
if (!dma_set_mask(bus->dev, DMA_BIT_MASK(64))) {
^~~~~~~~~~~~~~~~
include/linux/dma-mapping.h:139:54: note: expanded from macro 'DMA_BIT_MASK'
#define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
^ ~~~
sound/soc/intel/skylake/skl.c:954:35: warning: shift count >= width of type [-Wshift-count-overflow]
dma_set_coherent_mask(bus->dev, DMA_BIT_MASK(64));
^~~~~~~~~~~~~~~~
include/linux/dma-mapping.h:139:54: note: expanded from macro 'DMA_BIT_MASK'
#define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
^ ~~~
2 warnings and 2 errors generated.

vim +185 drivers/misc/mei/pci-me.c

c919951d940f28 Tomas Winkler     2014-05-13  146  
2703d4b2e673cc Tomas Winkler     2013-02-06  147  /**
ce23139c6c2ee9 Alexander Usyskin 2014-09-29  148   * mei_me_probe - Device Initialization Routine
2703d4b2e673cc Tomas Winkler     2013-02-06  149   *
2703d4b2e673cc Tomas Winkler     2013-02-06  150   * @pdev: PCI device structure
2703d4b2e673cc Tomas Winkler     2013-02-06  151   * @ent: entry in kcs_pci_tbl
2703d4b2e673cc Tomas Winkler     2013-02-06  152   *
a8605ea2c20c2b Alexander Usyskin 2014-09-29  153   * Return: 0 on success, <0 on failure.
2703d4b2e673cc Tomas Winkler     2013-02-06  154   */
b68301e9acd30f Tomas Winkler     2013-03-27  155  static int mei_me_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
2703d4b2e673cc Tomas Winkler     2013-02-06  156  {
f5ac3c49ff0b36 Tomas Winkler     2017-06-14  157  	const struct mei_cfg *cfg;
2703d4b2e673cc Tomas Winkler     2013-02-06  158  	struct mei_device *dev;
52c34561415b42 Tomas Winkler     2013-02-06  159  	struct mei_me_hw *hw;
1fa55b4e0e161b Alexander Usyskin 2015-08-02  160  	unsigned int irqflags;
2703d4b2e673cc Tomas Winkler     2013-02-06  161  	int err;
2703d4b2e673cc Tomas Winkler     2013-02-06  162  
f5ac3c49ff0b36 Tomas Winkler     2017-06-14  163  	cfg = mei_me_get_cfg(ent->driver_data);
f5ac3c49ff0b36 Tomas Winkler     2017-06-14  164  	if (!cfg)
f5ac3c49ff0b36 Tomas Winkler     2017-06-14  165  		return -ENODEV;
2703d4b2e673cc Tomas Winkler     2013-02-06  166  
c919951d940f28 Tomas Winkler     2014-05-13  167  	if (!mei_me_quirk_probe(pdev, cfg))
c919951d940f28 Tomas Winkler     2014-05-13  168  		return -ENODEV;
2703d4b2e673cc Tomas Winkler     2013-02-06  169  
2703d4b2e673cc Tomas Winkler     2013-02-06  170  	/* enable pci dev */
f8a096059fc5f7 Tomas Winkler     2017-01-26  171  	err = pcim_enable_device(pdev);
2703d4b2e673cc Tomas Winkler     2013-02-06  172  	if (err) {
2703d4b2e673cc Tomas Winkler     2013-02-06  173  		dev_err(&pdev->dev, "failed to enable pci device.\n");
2703d4b2e673cc Tomas Winkler     2013-02-06  174  		goto end;
2703d4b2e673cc Tomas Winkler     2013-02-06  175  	}
2703d4b2e673cc Tomas Winkler     2013-02-06  176  	/* set PCI host mastering  */
2703d4b2e673cc Tomas Winkler     2013-02-06  177  	pci_set_master(pdev);
f8a096059fc5f7 Tomas Winkler     2017-01-26  178  	/* pci request regions and mapping IO device memory for mei driver */
f8a096059fc5f7 Tomas Winkler     2017-01-26  179  	err = pcim_iomap_regions(pdev, BIT(0), KBUILD_MODNAME);
2703d4b2e673cc Tomas Winkler     2013-02-06  180  	if (err) {
2703d4b2e673cc Tomas Winkler     2013-02-06  181  		dev_err(&pdev->dev, "failed to get pci regions.\n");
f8a096059fc5f7 Tomas Winkler     2017-01-26  182  		goto end;
2703d4b2e673cc Tomas Winkler     2013-02-06  183  	}
3ecfb168a51ddf Tomas Winkler     2013-12-17  184  
3ecfb168a51ddf Tomas Winkler     2013-12-17 @185  	if (dma_set_mask(&pdev->dev, DMA_BIT_MASK(64)) ||
3ecfb168a51ddf Tomas Winkler     2013-12-17  186  	    dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64))) {
3ecfb168a51ddf Tomas Winkler     2013-12-17  187  
3ecfb168a51ddf Tomas Winkler     2013-12-17  188  		err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32));
3ecfb168a51ddf Tomas Winkler     2013-12-17  189  		if (err)
3ecfb168a51ddf Tomas Winkler     2013-12-17  190  			err = dma_set_coherent_mask(&pdev->dev,
3ecfb168a51ddf Tomas Winkler     2013-12-17  191  						    DMA_BIT_MASK(32));
3ecfb168a51ddf Tomas Winkler     2013-12-17  192  	}
3ecfb168a51ddf Tomas Winkler     2013-12-17  193  	if (err) {
3ecfb168a51ddf Tomas Winkler     2013-12-17  194  		dev_err(&pdev->dev, "No usable DMA configuration, aborting\n");
f8a096059fc5f7 Tomas Winkler     2017-01-26  195  		goto end;
3ecfb168a51ddf Tomas Winkler     2013-12-17  196  	}
3ecfb168a51ddf Tomas Winkler     2013-12-17  197  
2703d4b2e673cc Tomas Winkler     2013-02-06  198  	/* allocates and initializes the mei dev structure */
907b471ca228a5 Tomas Winkler     2019-11-07  199  	dev = mei_me_dev_init(&pdev->dev, cfg);
2703d4b2e673cc Tomas Winkler     2013-02-06  200  	if (!dev) {
2703d4b2e673cc Tomas Winkler     2013-02-06  201  		err = -ENOMEM;
f8a096059fc5f7 Tomas Winkler     2017-01-26  202  		goto end;
2703d4b2e673cc Tomas Winkler     2013-02-06  203  	}
52c34561415b42 Tomas Winkler     2013-02-06  204  	hw = to_me_hw(dev);
f8a096059fc5f7 Tomas Winkler     2017-01-26  205  	hw->mem_addr = pcim_iomap_table(pdev)[0];
261e071acd9bcb Tomas Winkler     2019-11-07  206  	hw->read_fws = mei_me_read_fws;
f8a096059fc5f7 Tomas Winkler     2017-01-26  207  
2703d4b2e673cc Tomas Winkler     2013-02-06  208  	pci_enable_msi(pdev);
2703d4b2e673cc Tomas Winkler     2013-02-06  209  
fec874a81b3ec2 Benjamin Lee      2020-04-17  210  	hw->irq = pdev->irq;
fec874a81b3ec2 Benjamin Lee      2020-04-17  211  
2703d4b2e673cc Tomas Winkler     2013-02-06  212  	 /* request and enable interrupt */
1fa55b4e0e161b Alexander Usyskin 2015-08-02  213  	irqflags = pci_dev_msi_enabled(pdev) ? IRQF_ONESHOT : IRQF_SHARED;
1fa55b4e0e161b Alexander Usyskin 2015-08-02  214  
2703d4b2e673cc Tomas Winkler     2013-02-06  215  	err = request_threaded_irq(pdev->irq,
06ecd645980096 Tomas Winkler     2013-02-06  216  			mei_me_irq_quick_handler,
06ecd645980096 Tomas Winkler     2013-02-06  217  			mei_me_irq_thread_handler,
1fa55b4e0e161b Alexander Usyskin 2015-08-02  218  			irqflags, KBUILD_MODNAME, dev);
2703d4b2e673cc Tomas Winkler     2013-02-06  219  	if (err) {
2703d4b2e673cc Tomas Winkler     2013-02-06  220  		dev_err(&pdev->dev, "request_threaded_irq failure. irq = %d\n",
2703d4b2e673cc Tomas Winkler     2013-02-06  221  		       pdev->irq);
f8a096059fc5f7 Tomas Winkler     2017-01-26  222  		goto end;
2703d4b2e673cc Tomas Winkler     2013-02-06  223  	}
2703d4b2e673cc Tomas Winkler     2013-02-06  224  
c4d589be4405d4 Tomas Winkler     2013-03-27  225  	if (mei_start(dev)) {
2703d4b2e673cc Tomas Winkler     2013-02-06  226  		dev_err(&pdev->dev, "init hw failure.\n");
2703d4b2e673cc Tomas Winkler     2013-02-06  227  		err = -ENODEV;
2703d4b2e673cc Tomas Winkler     2013-02-06  228  		goto release_irq;
2703d4b2e673cc Tomas Winkler     2013-02-06  229  	}
2703d4b2e673cc Tomas Winkler     2013-02-06  230  
180ea05bcedbd6 Tomas Winkler     2014-03-18  231  	pm_runtime_set_autosuspend_delay(&pdev->dev, MEI_ME_RPM_TIMEOUT);
180ea05bcedbd6 Tomas Winkler     2014-03-18  232  	pm_runtime_use_autosuspend(&pdev->dev);
180ea05bcedbd6 Tomas Winkler     2014-03-18  233  
f3d8e8788b4efb Alexander Usyskin 2014-06-23  234  	err = mei_register(dev, &pdev->dev);
2703d4b2e673cc Tomas Winkler     2013-02-06  235  	if (err)
1f7e489a285c8b Alexander Usyskin 2016-02-07  236  		goto stop;
2703d4b2e673cc Tomas Winkler     2013-02-06  237  
2703d4b2e673cc Tomas Winkler     2013-02-06  238  	pci_set_drvdata(pdev, dev);
2703d4b2e673cc Tomas Winkler     2013-02-06  239  
557909e195aea2 Alexander Usyskin 2017-08-03  240  	/*
557909e195aea2 Alexander Usyskin 2017-08-03  241  	 * MEI requires to resume from runtime suspend mode
557909e195aea2 Alexander Usyskin 2017-08-03  242  	 * in order to perform link reset flow upon system suspend.
557909e195aea2 Alexander Usyskin 2017-08-03  243  	 */
e07515563d010d Rafael J. Wysocki 2020-04-18  244  	dev_pm_set_driver_flags(&pdev->dev, DPM_FLAG_NO_DIRECT_COMPLETE);
557909e195aea2 Alexander Usyskin 2017-08-03  245  
e13fa90ce42d8e Tomas Winkler     2014-03-18  246  	/*
b42dc0635bf0a6 Alexander Usyskin 2017-09-26  247  	 * ME maps runtime suspend/resume to D0i states,
b42dc0635bf0a6 Alexander Usyskin 2017-09-26  248  	 * hence we need to go around native PCI runtime service which
b42dc0635bf0a6 Alexander Usyskin 2017-09-26  249  	 * eventually brings the device into D3cold/hot state,
b42dc0635bf0a6 Alexander Usyskin 2017-09-26  250  	 * but the mei device cannot wake up from D3 unlike from D0i3.
b42dc0635bf0a6 Alexander Usyskin 2017-09-26  251  	 * To get around the PCI device native runtime pm,
b42dc0635bf0a6 Alexander Usyskin 2017-09-26  252  	 * ME uses runtime pm domain handlers which take precedence
b42dc0635bf0a6 Alexander Usyskin 2017-09-26  253  	 * over the driver's pm handlers.
e13fa90ce42d8e Tomas Winkler     2014-03-18  254  	 */
e13fa90ce42d8e Tomas Winkler     2014-03-18  255  	mei_me_set_pm_domain(dev);
e13fa90ce42d8e Tomas Winkler     2014-03-18  256  
cc365dcf0e5627 Tomas Winkler     2018-01-02  257  	if (mei_pg_is_enabled(dev)) {
180ea05bcedbd6 Tomas Winkler     2014-03-18  258  		pm_runtime_put_noidle(&pdev->dev);
cc365dcf0e5627 Tomas Winkler     2018-01-02  259  		if (hw->d0i3_supported)
cc365dcf0e5627 Tomas Winkler     2018-01-02  260  			pm_runtime_allow(&pdev->dev);
cc365dcf0e5627 Tomas Winkler     2018-01-02  261  	}
180ea05bcedbd6 Tomas Winkler     2014-03-18  262  
c4e87b525936da Alexander Usyskin 2013-10-21  263  	dev_dbg(&pdev->dev, "initialization successful.\n");
2703d4b2e673cc Tomas Winkler     2013-02-06  264  
2703d4b2e673cc Tomas Winkler     2013-02-06  265  	return 0;
2703d4b2e673cc Tomas Winkler     2013-02-06  266  
1f7e489a285c8b Alexander Usyskin 2016-02-07  267  stop:
1f7e489a285c8b Alexander Usyskin 2016-02-07  268  	mei_stop(dev);
2703d4b2e673cc Tomas Winkler     2013-02-06  269  release_irq:
dc844b0d99b853 Tomas Winkler     2013-11-11  270  	mei_cancel_work(dev);
2703d4b2e673cc Tomas Winkler     2013-02-06  271  	mei_disable_interrupts(dev);
2703d4b2e673cc Tomas Winkler     2013-02-06  272  	free_irq(pdev->irq, dev);
2703d4b2e673cc Tomas Winkler     2013-02-06  273  end:
2703d4b2e673cc Tomas Winkler     2013-02-06  274  	dev_err(&pdev->dev, "initialization failed.\n");
2703d4b2e673cc Tomas Winkler     2013-02-06  275  	return err;
2703d4b2e673cc Tomas Winkler     2013-02-06  276  }
2703d4b2e673cc Tomas Winkler     2013-02-06  277  

:::::: The code at line 185 was first introduced by commit
:::::: 3ecfb168a51ddf0226abe245065516bc2ebfdef5 mei: me: set dma mask using DMA mapping API

:::::: TO: Tomas Winkler <tomas.winkler@intel.com>
:::::: CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 35649 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2][RFC] PM-runtime: Move all runtime usage related function to runtime.c
  2020-06-05 19:05 ` [PATCH 1/2][RFC] PM-runtime: Move all runtime usage related function to runtime.c Chen Yu
  2020-06-06  0:17   ` kernel test robot
  2020-06-06 12:00   ` kernel test robot
@ 2020-06-06 17:18   ` Chen Yu
  2020-06-08 15:11   ` kernel test robot
  3 siblings, 0 replies; 13+ messages in thread
From: Chen Yu @ 2020-06-06 17:18 UTC (permalink / raw)
  To: Rafael J . Wysocki, Len Brown, Greg Kroah-Hartman, Michal Miroslaw
  Cc: linux-pm, linux-kernel

On Sat, Jun 06, 2020 at 03:05:35AM +0800, Chen Yu wrote:
> In order to track all the runtime usage count change, move the code
> related to runtime usage count change from pm_runtime.h to runtime.c,
> so that in runtime.c we can leverage trace event to do the tracking.
> Meanwhile export pm_runtime_get_noresume() and pm_runtime_put_noidle()
> so the module can use them.
> 
> No functional change.
>
There is a compile issue found by lkp, will send a
new version out.

Thanks,
Chenyu

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/2][RFC] PM-runtime: add tracepoints to cover all usage_count changes
  2020-06-06  7:14     ` Chen Yu
@ 2020-06-07  4:55       ` Michal Miroslaw
  2020-06-08  6:53         ` Chen Yu
  0 siblings, 1 reply; 13+ messages in thread
From: Michal Miroslaw @ 2020-06-07  4:55 UTC (permalink / raw)
  To: Chen Yu
  Cc: Rafael J . Wysocki, Len Brown, Greg Kroah-Hartman, linux-pm,
	linux-kernel

On Sat, Jun 06, 2020 at 03:14:59PM +0800, Chen Yu wrote:
> Hi,
> On Fri, Jun 05, 2020 at 09:33:11PM +0200, Michal Miroslaw wrote:
> > On Sat, Jun 06, 2020 at 03:05:52AM +0800, Chen Yu wrote:
> > > Commit d229290689ae ("PM-runtime: add tracepoints for usage_count changes")
> > > has added some tracepoints to monitor the change of runtime usage, and
> > > there is something to improve:
> > > 1. There are some places that adjust the usage count have not
> > >    been traced yet. For example, pm_runtime_get_noresume() and
> > >    pm_runtime_put_noidle()
> > > 2. The change of the usage count will not be tracked if decreased
> > >    from 1 to 0.
> > [...]
> > > @@ -1448,16 +1453,17 @@ EXPORT_SYMBOL_GPL(pm_runtime_forbid);
> > >   */
> > >  void pm_runtime_allow(struct device *dev)
> > >  {
> > > +	bool is_zero;
> > > +
> > >  	spin_lock_irq(&dev->power.lock);
> > >  	if (dev->power.runtime_auto)
> > >  		goto out;
> > >  
> > >  	dev->power.runtime_auto = true;
> > > -	if (atomic_dec_and_test(&dev->power.usage_count))
> > > +	is_zero = atomic_dec_and_test(&dev->power.usage_count);
> > > +	trace_rpm_usage_rcuidle(dev, RPM_AUTO | RPM_ASYNC);
> > > +	if (is_zero)
> > >  		rpm_idle(dev, RPM_AUTO | RPM_ASYNC);
> > > -	else
> > > -		trace_rpm_usage_rcuidle(dev, RPM_AUTO | RPM_ASYNC);
> > > -
> > [...]
> > 
> > IIRC, rpm_idle() has a tracepoint already.
> > 
> Yes, this is what I concerned previously. If someone
> want to track the change of usage_count, then he might
> have to enable both trace rpm_usage and rpm_idle so
> as to track the moment when the counter drops from 1 to
> 0. It might be more consistent if we only enable
> trace rpm_usage to track the whole process.
> > > @@ -1523,9 +1529,8 @@ static void update_autosuspend(struct device *dev, int old_delay, int old_use)
> > >  		/* If it used to be allowed then prevent it. */
> > >  		if (!old_use || old_delay >= 0) {
> > >  			atomic_inc(&dev->power.usage_count);
> > > -			rpm_resume(dev, 0);
> > > -		} else {
> > >  			trace_rpm_usage_rcuidle(dev, 0);
> > > +			rpm_resume(dev, 0);
> > >  		}
> > >  	}
> > [...]
> > 
> > This actually changes logic, so it doesn't match the patch description.
> > 
> This patch intends to adjust the logic to be consistent with
> the change of usage_counter, that is to say, only after the
> counter has been possibly modified, we record it. In current
> logic above, it tracks the usage count where the latter does
> not change.

I see now what you intended. I think it would be nice to put the idea
(that all usage changes be shown using rpm_usage even if included in
other trace points) into the commit message. Otherwise, looks ok.

Best Regards
Michał Mirosław

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/2][RFC] PM-runtime: add tracepoints to cover all usage_count changes
  2020-06-07  4:55       ` Michal Miroslaw
@ 2020-06-08  6:53         ` Chen Yu
  0 siblings, 0 replies; 13+ messages in thread
From: Chen Yu @ 2020-06-08  6:53 UTC (permalink / raw)
  To: Michal Miroslaw
  Cc: Rafael J . Wysocki, Len Brown, Greg Kroah-Hartman, linux-pm,
	linux-kernel

On Sun, Jun 07, 2020 at 06:55:35AM +0200, Michal Miroslaw wrote:
> On Sat, Jun 06, 2020 at 03:14:59PM +0800, Chen Yu wrote:
> > Hi,
> > On Fri, Jun 05, 2020 at 09:33:11PM +0200, Michal Miroslaw wrote:
> > > On Sat, Jun 06, 2020 at 03:05:52AM +0800, Chen Yu wrote:
> > > > Commit d229290689ae ("PM-runtime: add tracepoints for usage_count changes")
> > > > has added some tracepoints to monitor the change of runtime usage, and
> > > > there is something to improve:
> > > > 1. There are some places that adjust the usage count have not
> > > >    been traced yet. For example, pm_runtime_get_noresume() and
> > > >    pm_runtime_put_noidle()
> > > > 2. The change of the usage count will not be tracked if decreased
> > > >    from 1 to 0.
> > > [...]
> > > > @@ -1448,16 +1453,17 @@ EXPORT_SYMBOL_GPL(pm_runtime_forbid);
> > > >   */
> > > >  void pm_runtime_allow(struct device *dev)
> > > >  {
> > > > +	bool is_zero;
> > > > +
> > > >  	spin_lock_irq(&dev->power.lock);
> > > >  	if (dev->power.runtime_auto)
> > > >  		goto out;
> > > >  
> > > >  	dev->power.runtime_auto = true;
> > > > -	if (atomic_dec_and_test(&dev->power.usage_count))
> > > > +	is_zero = atomic_dec_and_test(&dev->power.usage_count);
> > > > +	trace_rpm_usage_rcuidle(dev, RPM_AUTO | RPM_ASYNC);
> > > > +	if (is_zero)
> > > >  		rpm_idle(dev, RPM_AUTO | RPM_ASYNC);
> > > > -	else
> > > > -		trace_rpm_usage_rcuidle(dev, RPM_AUTO | RPM_ASYNC);
> > > > -
> > > [...]
> > > 
> > > IIRC, rpm_idle() has a tracepoint already.
> > > 
> > Yes, this is what I concerned previously. If someone
> > want to track the change of usage_count, then he might
> > have to enable both trace rpm_usage and rpm_idle so
> > as to track the moment when the counter drops from 1 to
> > 0. It might be more consistent if we only enable
> > trace rpm_usage to track the whole process.
> > > > @@ -1523,9 +1529,8 @@ static void update_autosuspend(struct device *dev, int old_delay, int old_use)
> > > >  		/* If it used to be allowed then prevent it. */
> > > >  		if (!old_use || old_delay >= 0) {
> > > >  			atomic_inc(&dev->power.usage_count);
> > > > -			rpm_resume(dev, 0);
> > > > -		} else {
> > > >  			trace_rpm_usage_rcuidle(dev, 0);
> > > > +			rpm_resume(dev, 0);
> > > >  		}
> > > >  	}
> > > [...]
> > > 
> > > This actually changes logic, so it doesn't match the patch description.
> > > 
> > This patch intends to adjust the logic to be consistent with
> > the change of usage_counter, that is to say, only after the
> > counter has been possibly modified, we record it. In current
> > logic above, it tracks the usage count where the latter does
> > not change.
> 
> I see now what you intended. I think it would be nice to put the idea
> (that all usage changes be shown using rpm_usage even if included in
> other trace points) into the commit message. Otherwise, looks ok.
>
Okay, will do in next version, thanks!

Chenyu

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2][RFC] PM-runtime: Move all runtime usage related function to runtime.c
  2020-06-05 19:05 ` [PATCH 1/2][RFC] PM-runtime: Move all runtime usage related function to runtime.c Chen Yu
                     ` (2 preceding siblings ...)
  2020-06-06 17:18   ` Chen Yu
@ 2020-06-08 15:11   ` kernel test robot
  2020-06-08 15:11     ` Chen, Yu C
  3 siblings, 1 reply; 13+ messages in thread
From: kernel test robot @ 2020-06-08 15:11 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 74419 bytes --]

Hi Chen,

[FYI, it's a private test report for your RFC patch.]
[auto build test WARNING on pm/linux-next]
[also build test WARNING on v5.7 next-20200605]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Chen-Yu/Add-more-trace-point-for-runtime-usage-count/20200606-030705
base:   https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git linux-next
:::::: branch date: 4 hours ago
:::::: commit date: 4 hours ago
config: arc-randconfig-s032-20200605 (attached as .config)
compiler: arc-elf-gcc (GCC) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.1-246-g41f651b4-dirty
        # save the attached .config to linux build tree
        make W=1 C=1 ARCH=arc CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


sparse warnings: (new ones prefixed by >>)

   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/tty/serial/xilinx_uartps.c:553:28: sparse: sparse: context imbalance in 'cdns_uart_clk_notifier_cb' - different lock contexts for basic block
   include/linux/spinlock.h:408:9: sparse: sparse: context imbalance in 'cdns_uart_console_write' - unexpected unlock
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/tty/serial/8250/8250_port.c:1881:5: sparse: sparse: context imbalance in 'serial8250_handle_irq' - different lock contexts for basic block
   drivers/tty/serial/8250/8250_port.c:3290:9: sparse: sparse: context imbalance in 'serial8250_console_write' - different lock contexts for basic block
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/misc/lis3lv02d/lis3lv02d.c:182:52: sparse: sparse: cast to restricted __le16
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   arch/arc/include/asm/irqflags-arcv2.h:80:31: sparse: sparse: undefined identifier '__builtin_arc_lr'
   arch/arc/include/asm/irqflags-arcv2.h:83:17: sparse: sparse: undefined identifier '__builtin_arc_sr'
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/i2c/busses/i2c-viperboard.c:123:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] addr @@     got restricted __le16 [usertype] @@
   drivers/i2c/busses/i2c-viperboard.c:123:35: sparse:     expected unsigned short [usertype] addr
   drivers/i2c/busses/i2c-viperboard.c:123:35: sparse:     got restricted __le16 [usertype]
   drivers/i2c/busses/i2c-viperboard.c:196:34: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] tf1 @@     got restricted __le16 [usertype] @@
   drivers/i2c/busses/i2c-viperboard.c:196:34: sparse:     expected unsigned short [usertype] tf1
   drivers/i2c/busses/i2c-viperboard.c:196:34: sparse:     got restricted __le16 [usertype]
   drivers/i2c/busses/i2c-viperboard.c:197:34: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] tf2 @@     got restricted __le16 [usertype] @@
   drivers/i2c/busses/i2c-viperboard.c:197:34: sparse:     expected unsigned short [usertype] tf2
   drivers/i2c/busses/i2c-viperboard.c:197:34: sparse:     got restricted __le16 [usertype]
   drivers/i2c/busses/i2c-viperboard.c:232:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] addr @@     got restricted __le16 [usertype] @@
   drivers/i2c/busses/i2c-viperboard.c:232:35: sparse:     expected unsigned short [usertype] addr
   drivers/i2c/busses/i2c-viperboard.c:232:35: sparse:     got restricted __le16 [usertype]
   drivers/i2c/busses/i2c-viperboard.c:295:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] len @@     got restricted __le16 [usertype] @@
   drivers/i2c/busses/i2c-viperboard.c:295:35: sparse:     expected unsigned short [usertype] len
   drivers/i2c/busses/i2c-viperboard.c:295:35: sparse:     got restricted __le16 [usertype]
   drivers/i2c/busses/i2c-viperboard.c:320:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] len @@     got restricted __le16 [usertype] @@
   drivers/i2c/busses/i2c-viperboard.c:320:35: sparse:     expected unsigned short [usertype] len
   drivers/i2c/busses/i2c-viperboard.c:320:35: sparse:     got restricted __le16 [usertype]
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/bluetooth/hci_intel.c:696:26: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/hci_intel.c:701:26: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/hci_intel.c:702:26: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/hci_intel.c:703:26: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/hci_intel.c:725:26: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/hci_intel.c:730:26: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/hci_intel.c:731:26: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/hci_intel.c:732:26: sparse: sparse: cast to restricted __le16
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/bluetooth/btusb.c:2155:25: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/btusb.c:2164:25: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/btusb.c:2165:25: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/btusb.c:2166:25: sparse: sparse: cast to restricted __le16
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/cdns3/drd.c:43:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:43:31: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:43:31: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:45:25: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:45:25: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:45:25: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:47:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:47:31: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:47:31: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:49:25: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:49:25: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:49:25: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:71:14: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:71:14: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:71:14: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:81:19: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:81:19: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:81:19: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:114:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:114:9: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:114:9: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:123:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:123:9: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:123:9: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:141:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:141:17: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:141:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:144:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:144:23: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:144:23: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:144:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:144:23: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:144:23: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:152:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:152:17: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:152:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:156:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:156:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:156:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:156:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:156:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:156:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:178:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:178:17: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:178:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:182:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:182:23: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:182:23: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:182:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:182:23: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:182:23: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:195:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:195:17: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:195:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:199:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:199:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:199:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:199:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:199:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:199:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:219:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:219:9: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:219:9: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:284:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:284:15: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:284:15: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:303:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:303:9: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:303:9: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:326:27: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct cdns3_otg_legacy_regs *otg_v0_regs @@     got void [noderef] <asn:2> *[assigned] regs @@
   drivers/usb/cdns3/drd.c:326:27: sparse:     expected struct cdns3_otg_legacy_regs *otg_v0_regs
   drivers/usb/cdns3/drd.c:326:27: sparse:     got void [noderef] <asn:2> *[assigned] regs
   drivers/usb/cdns3/drd.c:327:14: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:327:14: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:327:14: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:330:32: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct cdns3_otg_common_regs *otg_regs @@     got void [noderef] <asn:2> *[assigned] regs @@
   drivers/usb/cdns3/drd.c:330:32: sparse:     expected struct cdns3_otg_common_regs *otg_regs
   drivers/usb/cdns3/drd.c:330:32: sparse:     got void [noderef] <asn:2> *[assigned] regs
   drivers/usb/cdns3/drd.c:331:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:331:17: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:331:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:332:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:332:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:332:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:336:35: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct cdns3_otg_regs *otg_v1_regs @@     got void [noderef] <asn:2> *[assigned] regs @@
   drivers/usb/cdns3/drd.c:336:35: sparse:     expected struct cdns3_otg_regs *otg_v1_regs
   drivers/usb/cdns3/drd.c:336:35: sparse:     got void [noderef] <asn:2> *[assigned] regs
   drivers/usb/cdns3/drd.c:339:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:339:17: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:339:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:340:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:340:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:340:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:340:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:340:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:340:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:345:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:345:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/cdns3/gadget.c:1157:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:1157:35: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:1157:35: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:1173:29: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] buffer @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:1173:29: sparse:     expected restricted __le32 [usertype] buffer
   drivers/usb/cdns3/gadget.c:1173:29: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:1188:29: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] length @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:1188:29: sparse:     expected restricted __le32 [usertype] length
   drivers/usb/cdns3/gadget.c:1188:29: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:1191:37: sparse: sparse: invalid assignment: |=
   drivers/usb/cdns3/gadget.c:1191:37: sparse:    left side has type restricted __le32
   drivers/usb/cdns3/gadget.c:1191:37: sparse:    right side has type unsigned long
   drivers/usb/cdns3/gadget.c:1213:38: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned int [assigned] [usertype] control @@
   drivers/usb/cdns3/gadget.c:1213:38: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:1213:38: sparse:     got unsigned int [assigned] [usertype] control
   drivers/usb/cdns3/gadget.c:1215:48: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned int [assigned] [usertype] control @@
   drivers/usb/cdns3/gadget.c:1215:48: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:1215:48: sparse:     got unsigned int [assigned] [usertype] control
   drivers/usb/cdns3/gadget.c:1229:30: sparse: sparse: invalid assignment: |=
   drivers/usb/cdns3/gadget.c:1229:30: sparse:    left side has type restricted __le32
   drivers/usb/cdns3/gadget.c:1229:30: sparse:    right side has type unsigned long
   drivers/usb/cdns3/gadget.c:1255:36: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/cdns3/gadget.c:1255:30: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned int @@
   drivers/usb/cdns3/gadget.c:1255:30: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:1255:30: sparse:     got unsigned int
   drivers/usb/cdns3/gadget.c:1010:29: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] buffer @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:1010:29: sparse:     expected restricted __le32 [usertype] buffer
   drivers/usb/cdns3/gadget.c:1010:29: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:1013:29: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] buffer @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:1013:29: sparse:     expected restricted __le32 [usertype] buffer
   drivers/usb/cdns3/gadget.c:1013:29: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:1019:21: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] length @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:1019:21: sparse:     expected restricted __le32 [usertype] length
   drivers/usb/cdns3/gadget.c:1019:21: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:1029:37: sparse: sparse: invalid assignment: |=
   drivers/usb/cdns3/gadget.c:1029:37: sparse:    left side has type restricted __le32
   drivers/usb/cdns3/gadget.c:1029:37: sparse:    right side has type unsigned long
   drivers/usb/cdns3/gadget.c:1033:22: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned int [assigned] [usertype] control @@
   drivers/usb/cdns3/gadget.c:1033:22: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:1033:22: sparse:     got unsigned int [assigned] [usertype] control
   drivers/usb/cdns3/gadget.c:263:34: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] buffer @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:263:34: sparse:     expected restricted __le32 [usertype] buffer
   drivers/usb/cdns3/gadget.c:263:34: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:264:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:264:35: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:264:35: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:849:49: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/cdns3/gadget.c:848:51: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned int @@
   drivers/usb/cdns3/gadget.c:848:51: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:848:51: sparse:     got unsigned int
   drivers/usb/cdns3/gadget.c:852:49: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/cdns3/gadget.c:851:51: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned int @@
   drivers/usb/cdns3/gadget.c:851:51: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:851:51: sparse:     got unsigned int
   drivers/usb/cdns3/gadget.c:1393:17: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/cdns3/gadget.c:1442:21: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/cdns3/gadget.c:1574:35: sparse: sparse: dubious: x | !y
   drivers/usb/cdns3/gadget.c:2552:34: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] buffer @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:2552:34: sparse:     expected restricted __le32 [usertype] buffer
   drivers/usb/cdns3/gadget.c:2552:34: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:2554:46: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/cdns3/gadget.c:2554:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:2554:35: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:2554:35: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:2610:43: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/cdns3/gadget.c:2610:38: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:2610:38: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:2610:38: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:2625:43: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/cdns3/gadget.c:2625:38: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:2625:38: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:2625:38: sparse:     got unsigned long
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/cdns3/ep0.c:40:37: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] buffer @@     got unsigned long @@
   drivers/usb/cdns3/ep0.c:40:37: sparse:     expected restricted __le32 [usertype] buffer
   drivers/usb/cdns3/ep0.c:40:37: sparse:     got unsigned long
   drivers/usb/cdns3/ep0.c:41:37: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] length @@     got unsigned long @@
   drivers/usb/cdns3/ep0.c:41:37: sparse:     expected restricted __le32 [usertype] length
   drivers/usb/cdns3/ep0.c:41:37: sparse:     got unsigned long
   drivers/usb/cdns3/ep0.c:44:46: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned long @@
   drivers/usb/cdns3/ep0.c:44:46: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/ep0.c:44:46: sparse:     got unsigned long
   drivers/usb/cdns3/ep0.c:45:45: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] buffer @@     got unsigned long @@
   drivers/usb/cdns3/ep0.c:45:45: sparse:     expected restricted __le32 [usertype] buffer
   drivers/usb/cdns3/ep0.c:45:45: sparse:     got unsigned long
   drivers/usb/cdns3/ep0.c:46:45: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] length @@     got unsigned long @@
   drivers/usb/cdns3/ep0.c:46:45: sparse:     expected restricted __le32 [usertype] length
   drivers/usb/cdns3/ep0.c:46:45: sparse:     got unsigned long
   drivers/usb/cdns3/ep0.c:47:46: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned long @@
   drivers/usb/cdns3/ep0.c:47:46: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/ep0.c:47:46: sparse:     got unsigned long
   drivers/usb/cdns3/ep0.c:50:46: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned long @@
   drivers/usb/cdns3/ep0.c:50:46: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/ep0.c:50:46: sparse:     got unsigned long
   drivers/usb/cdns3/ep0.c:267:52: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected unsigned char [usertype] ep_addr @@     got restricted __le16 [usertype] wIndex @@
   drivers/usb/cdns3/ep0.c:267:52: sparse:     expected unsigned char [usertype] ep_addr
   drivers/usb/cdns3/ep0.c:267:52: sparse:     got restricted __le16 [usertype] wIndex
   drivers/usb/cdns3/ep0.c:271:47: sparse: sparse: incorrect type in argument 2 (different base types) @@     expected unsigned int [usertype] ep @@     got restricted __le16 [usertype] wIndex @@
   drivers/usb/cdns3/ep0.c:271:47: sparse:     expected unsigned int [usertype] ep
   drivers/usb/cdns3/ep0.c:271:47: sparse:     got restricted __le16 [usertype] wIndex
   drivers/usb/cdns3/ep0.c:387:19: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/cdns3/ep0.c:390:44: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected unsigned char [usertype] ep_addr @@     got restricted __le16 [usertype] wIndex @@
   drivers/usb/cdns3/ep0.c:390:44: sparse:     expected unsigned char [usertype] ep_addr
   drivers/usb/cdns3/ep0.c:390:44: sparse:     got restricted __le16 [usertype] wIndex
   drivers/usb/cdns3/ep0.c:393:39: sparse: sparse: incorrect type in argument 2 (different base types) @@     expected unsigned int [usertype] ep @@     got restricted __le16 [usertype] wIndex @@
   drivers/usb/cdns3/ep0.c:393:39: sparse:     expected unsigned int [usertype] ep
   drivers/usb/cdns3/ep0.c:393:39: sparse:     got restricted __le16 [usertype] wIndex
   drivers/usb/cdns3/ep0.c:454:21: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/cdns3/ep0.c:478:31: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] isoch_delay @@     got restricted __le16 [usertype] wValue @@
   drivers/usb/cdns3/ep0.c:478:31: sparse:     expected unsigned short [usertype] isoch_delay
   drivers/usb/cdns3/ep0.c:478:31: sparse:     got restricted __le16 [usertype] wValue
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/host/oxu210hp-hcd.c:890:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le16 [usertype] wHubCharacteristics @@     got unsigned short [usertype] @@
   drivers/usb/host/oxu210hp-hcd.c:890:35: sparse:     expected restricted __le16 [usertype] wHubCharacteristics
   drivers/usb/host/oxu210hp-hcd.c:890:35: sparse:     got unsigned short [usertype]
   drivers/usb/host/oxu210hp-hcd.c:942:32: sparse: sparse: cast removes address space '<asn:2>' of expression
   drivers/usb/host/oxu210hp-hcd.c:966:33: sparse: sparse: cast removes address space '<asn:2>' of expression
   drivers/usb/host/oxu210hp-hcd.c:1013:24: sparse: sparse: cast removes address space '<asn:2>' of expression
   drivers/usb/host/oxu210hp-hcd.c:1037:20: sparse: sparse: subtraction of different types can't work (different address spaces)
   drivers/usb/host/oxu210hp-hcd.c:1070:23: sparse: sparse: cast removes address space '<asn:2>' of expression
   drivers/usb/host/oxu210hp-hcd.c:1171:41: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [noderef] <asn:2> @@     got restricted __le32 [usertype] @@
   drivers/usb/host/oxu210hp-hcd.c:1171:41: sparse:     expected unsigned int [noderef] <asn:2>
   drivers/usb/host/oxu210hp-hcd.c:1171:41: sparse:     got restricted __le32 [usertype]
   drivers/usb/host/oxu210hp-hcd.c:1188:26: sparse: sparse: cast removes address space '<asn:2>' of expression
   drivers/usb/host/oxu210hp-hcd.c:2027:44: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/host/oxu210hp-hcd.c:2027:41: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] hw_token @@     got unsigned int @@
   drivers/usb/host/oxu210hp-hcd.c:2027:41: sparse:     expected restricted __le32 [usertype] hw_token
   drivers/usb/host/oxu210hp-hcd.c:2027:41: sparse:     got unsigned int
   drivers/usb/host/oxu210hp-hcd.c:995:21: sparse: sparse: subtraction of different types can't work (different address spaces)
   drivers/usb/host/oxu210hp-hcd.c:995:21: sparse: sparse: subtraction of different types can't work (different address spaces)
   drivers/usb/host/oxu210hp-hcd.c:995:21: sparse: sparse: subtraction of different types can't work (different address spaces)
   drivers/usb/host/oxu210hp-hcd.c:995:21: sparse: sparse: subtraction of different types can't work (different address spaces)
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/host/sl811-hcd.c:1788:24: sparse: sparse: symbol 'sl811h_driver' was not declared. Should it be static?
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/hid/hid-roccat-kone.c:103:28: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] checksum @@     got restricted __le16 [usertype] @@
   drivers/hid/hid-roccat-kone.c:103:28: sparse:     expected unsigned short [usertype] checksum
   drivers/hid/hid-roccat-kone.c:103:28: sparse:     got restricted __le16 [usertype]
   drivers/hid/hid-roccat-kone.c:262:19: sparse: sparse: cast to restricted __le16
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/gadget/udc/dummy_hcd.c:460:25: sparse: sparse: context imbalance in 'set_link_state' - unexpected unlock
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/gadget/udc/pxa27x_udc.c:2093:20: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le16 [assigned] [usertype] wValue @@     got int config @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2093:20: sparse:     expected restricted __le16 [assigned] [usertype] wValue
   drivers/usb/gadget/udc/pxa27x_udc.c:2093:20: sparse:     got int config
   drivers/usb/gadget/udc/pxa27x_udc.c:2122:20: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le16 [assigned] [usertype] wValue @@     got int alt @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2122:20: sparse:     expected restricted __le16 [assigned] [usertype] wValue
   drivers/usb/gadget/udc/pxa27x_udc.c:2122:20: sparse:     got int alt
   drivers/usb/gadget/udc/pxa27x_udc.c:2123:20: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le16 [assigned] [usertype] wIndex @@     got int iface @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2123:20: sparse:     expected restricted __le16 [assigned] [usertype] wIndex
   drivers/usb/gadget/udc/pxa27x_udc.c:2123:20: sparse:     got int iface
   drivers/usb/gadget/udc/pxa27x_udc.c:2306:17: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __le16 [usertype] wMaxPacketSize @@     got unsigned int @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2306:17: sparse:     expected restricted __le16 [usertype] wMaxPacketSize
   drivers/usb/gadget/udc/pxa27x_udc.c:2306:17: sparse:     got unsigned int
   drivers/usb/gadget/udc/pxa27x_udc.c:2307:17: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __le16 [usertype] wMaxPacketSize @@     got unsigned int @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2307:17: sparse:     expected restricted __le16 [usertype] wMaxPacketSize
   drivers/usb/gadget/udc/pxa27x_udc.c:2307:17: sparse:     got unsigned int
   drivers/usb/gadget/udc/pxa27x_udc.c:2308:17: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __le16 [usertype] wMaxPacketSize @@     got unsigned int @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2308:17: sparse:     expected restricted __le16 [usertype] wMaxPacketSize
   drivers/usb/gadget/udc/pxa27x_udc.c:2308:17: sparse:     got unsigned int
   drivers/usb/gadget/udc/pxa27x_udc.c:2309:17: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __le16 [usertype] wMaxPacketSize @@     got unsigned int @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2309:17: sparse:     expected restricted __le16 [usertype] wMaxPacketSize
   drivers/usb/gadget/udc/pxa27x_udc.c:2309:17: sparse:     got unsigned int
   drivers/usb/gadget/udc/pxa27x_udc.c:2310:17: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __le16 [usertype] wMaxPacketSize @@     got unsigned int @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2310:17: sparse:     expected restricted __le16 [usertype] wMaxPacketSize
   drivers/usb/gadget/udc/pxa27x_udc.c:2310:17: sparse:     got unsigned int
   drivers/usb/gadget/udc/pxa27x_udc.c:2311:17: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __le16 [usertype] wMaxPacketSize @@     got unsigned int @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2311:17: sparse:     expected restricted __le16 [usertype] wMaxPacketSize
   drivers/usb/gadget/udc/pxa27x_udc.c:2311:17: sparse:     got unsigned int
   drivers/usb/gadget/udc/pxa27x_udc.c:680:39: sparse: sparse: context imbalance in 'req_done' - unexpected unlock
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/gadget/udc/mv_udc_core.c:67:33: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __le16 [usertype] wMaxPacketSize @@     got int @@
   drivers/usb/gadget/udc/mv_udc_core.c:67:33: sparse:     expected restricted __le16 [usertype] wMaxPacketSize
   drivers/usb/gadget/udc/mv_udc_core.c:67:33: sparse:     got int
   drivers/usb/gadget/udc/mv_udc_core.c:367:24: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] buff_ptr0 @@     got restricted __le32 [usertype] @@
   drivers/usb/gadget/udc/mv_udc_core.c:367:24: sparse:     expected unsigned int [usertype] buff_ptr0
   drivers/usb/gadget/udc/mv_udc_core.c:367:24: sparse:     got restricted __le32 [usertype]
   drivers/usb/gadget/udc/mv_udc_core.c:369:24: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] buff_ptr1 @@     got restricted __le32 [usertype] @@
   drivers/usb/gadget/udc/mv_udc_core.c:369:24: sparse:     expected unsigned int [usertype] buff_ptr1
   drivers/usb/gadget/udc/mv_udc_core.c:369:24: sparse:     got restricted __le32 [usertype]
   drivers/usb/gadget/udc/mv_udc_core.c:370:24: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] buff_ptr2 @@     got restricted __le32 [usertype] @@
   drivers/usb/gadget/udc/mv_udc_core.c:370:24: sparse:     expected unsigned int [usertype] buff_ptr2
   drivers/usb/gadget/udc/mv_udc_core.c:370:24: sparse:     got restricted __le32 [usertype]
   drivers/usb/gadget/udc/mv_udc_core.c:371:24: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] buff_ptr3 @@     got restricted __le32 [usertype] @@
   drivers/usb/gadget/udc/mv_udc_core.c:371:24: sparse:     expected unsigned int [usertype] buff_ptr3
   drivers/usb/gadget/udc/mv_udc_core.c:371:24: sparse:     got restricted __le32 [usertype]
   drivers/usb/gadget/udc/mv_udc_core.c:372:24: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] buff_ptr4 @@     got restricted __le32 [usertype] @@
   drivers/usb/gadget/udc/mv_udc_core.c:372:24: sparse:     expected unsigned int [usertype] buff_ptr4
   drivers/usb/gadget/udc/mv_udc_core.c:372:24: sparse:     got restricted __le32 [usertype]
   drivers/usb/gadget/udc/mv_udc_core.c:833:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got unsigned int * @@
   drivers/usb/gadget/udc/mv_udc_core.c:833:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/gadget/udc/mv_udc_core.c:833:17: sparse:     got unsigned int *
   drivers/usb/gadget/udc/mv_udc_core.c:833:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got unsigned int * @@
   drivers/usb/gadget/udc/mv_udc_core.c:833:17: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/gadget/udc/mv_udc_core.c:833:17: sparse:     got unsigned int *
   drivers/usb/gadget/udc/mv_udc_core.c:1456:41: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] @@     got restricted __le16 [usertype] @@
   drivers/usb/gadget/udc/mv_udc_core.c:1456:41: sparse:     expected unsigned short [usertype]
   drivers/usb/gadget/udc/mv_udc_core.c:1456:41: sparse:     got restricted __le16 [usertype]
   drivers/usb/gadget/udc/mv_udc_core.c:1516:26: sparse: sparse: cast from restricted __le16
   drivers/usb/gadget/udc/mv_udc_core.c:1546:31: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1547:35: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1568:30: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1579:39: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1580:43: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1616:34: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1625:52: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1611:30: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1611:30: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1634:39: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1635:43: sparse: sparse: restricted __le16 degrades to integer
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/usbip/usbip_common.c:418:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] command @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:418:33: sparse:     expected unsigned int [usertype] command
   drivers/usb/usbip/usbip_common.c:418:33: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:419:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] seqnum @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:419:33: sparse:     expected unsigned int [usertype] seqnum
   drivers/usb/usbip/usbip_common.c:419:33: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:420:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] devid @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:420:33: sparse:     expected unsigned int [usertype] devid
   drivers/usb/usbip/usbip_common.c:420:33: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:421:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] direction @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:421:33: sparse:     expected unsigned int [usertype] direction
   drivers/usb/usbip/usbip_common.c:421:33: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:422:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] ep @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:422:33: sparse:     expected unsigned int [usertype] ep
   drivers/usb/usbip/usbip_common.c:422:33: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:424:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:424:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:424:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:424:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:424:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:424:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:425:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:425:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:425:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:425:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:425:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:425:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:426:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:426:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:426:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:426:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:426:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:426:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:427:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:427:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:427:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:427:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:427:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:427:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:428:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:428:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:428:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:428:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:428:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:428:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:436:37: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] transfer_flags @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:436:37: sparse:     expected unsigned int [usertype] transfer_flags
   drivers/usb/usbip/usbip_common.c:436:37: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:443:39: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:443:39: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:443:39: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:443:39: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:443:39: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:443:39: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:474:29: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] seqnum @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:474:29: sparse:     expected unsigned int [usertype] seqnum
   drivers/usb/usbip/usbip_common.c:474:29: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:476:31: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:476:31: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:476:31: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:476:31: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:476:31: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:476:31: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:526:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] offset @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:526:33: sparse:     expected unsigned int [usertype] offset
   drivers/usb/usbip/usbip_common.c:526:33: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:527:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] length @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:527:33: sparse:     expected unsigned int [usertype] length
   drivers/usb/usbip/usbip_common.c:527:33: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:528:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] status @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:528:33: sparse:     expected unsigned int [usertype] status
   drivers/usb/usbip/usbip_common.c:528:33: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:529:36: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] actual_length @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:529:36: sparse:     expected unsigned int [usertype] actual_length
   drivers/usb/usbip/usbip_common.c:529:36: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:531:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:531:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:531:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:531:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:531:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:531:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:532:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:532:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:532:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:532:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:532:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:532:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:533:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:533:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:533:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:533:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:533:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:533:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:534:38: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:534:38: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:534:38: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:534:38: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:534:38: sparse: sparse: cast to restricted __be32
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/usbip/vhci_hcd.c:295:36: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le16 [usertype] DeviceRemovable @@     got int @@
   drivers/usb/usbip/vhci_hcd.c:295:36: sparse:     expected restricted __le16 [usertype] DeviceRemovable
   drivers/usb/usbip/vhci_hcd.c:295:36: sparse:     got int
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   kernel/irq/irqdesc.c:875:17: sparse: sparse: context imbalance in '__irq_get_desc_lock' - wrong count at exit
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/gpio/gpio-viperboard.c:261:20: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] val @@     got restricted __be16 [usertype] @@
   drivers/gpio/gpio-viperboard.c:261:20: sparse:     expected unsigned short [usertype] val
   drivers/gpio/gpio-viperboard.c:261:20: sparse:     got restricted __be16 [usertype]
   drivers/gpio/gpio-viperboard.c:262:21: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] mask @@     got restricted __be16 [usertype] @@
   drivers/gpio/gpio-viperboard.c:262:21: sparse:     expected unsigned short [usertype] mask
   drivers/gpio/gpio-viperboard.c:262:21: sparse:     got restricted __be16 [usertype]
   drivers/gpio/gpio-viperboard.c:302:27: sparse: sparse: cast to restricted __be16
   drivers/gpio/gpio-viperboard.c:302:27: sparse: sparse: cast to restricted __be16
   drivers/gpio/gpio-viperboard.c:302:27: sparse: sparse: cast to restricted __be16
   drivers/gpio/gpio-viperboard.c:302:27: sparse: sparse: cast to restricted __be16
   drivers/gpio/gpio-viperboard.c:324:28: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] val @@     got restricted __be16 [usertype] @@
   drivers/gpio/gpio-viperboard.c:324:28: sparse:     expected unsigned short [usertype] val
   drivers/gpio/gpio-viperboard.c:324:28: sparse:     got restricted __be16 [usertype]
   drivers/gpio/gpio-viperboard.c:325:29: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] mask @@     got restricted __be16 [usertype] @@
   drivers/gpio/gpio-viperboard.c:325:29: sparse:     expected unsigned short [usertype] mask
   drivers/gpio/gpio-viperboard.c:325:29: sparse:     got restricted __be16 [usertype]
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/pci/pci.c:899:13: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:899:21: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:899:31: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:899:39: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:908:35: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:908:54: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:909:19: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:909:37: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:939:23: sparse: sparse: invalid assignment: |=
   drivers/pci/pci.c:939:23: sparse:    left side has type unsigned short
   drivers/pci/pci.c:939:23: sparse:    right side has type restricted pci_power_t
   drivers/pci/pci.c:944:57: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:966:28: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted pci_power_t [usertype] current_state @@     got int @@
   drivers/pci/pci.c:966:28: sparse:     expected restricted pci_power_t [usertype] current_state
   drivers/pci/pci.c:966:28: sparse:     got int
   drivers/pci/pci.c:1015:36: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted pci_power_t [usertype] current_state @@     got int @@
   drivers/pci/pci.c:1015:36: sparse:     expected restricted pci_power_t [usertype] current_state
   drivers/pci/pci.c:1015:36: sparse:     got int
   drivers/pci/pci.c:1193:13: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:1193:21: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:1195:18: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:1195:26: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:1218:13: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:1218:22: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:1225:46: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:1225:54: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:1768:36: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted pci_power_t [usertype] current_state @@     got int @@
   drivers/pci/pci.c:1768:36: sparse:     expected restricted pci_power_t [usertype] current_state
   drivers/pci/pci.c:1768:36: sparse:     got int
   drivers/pci/pci.c:2156:44: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:2457:61: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:2458:45: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:2624:20: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:2624:38: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:2647:49: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:2647:67: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:4647:13: sparse: sparse: invalid assignment: |=
   drivers/pci/pci.c:4647:13: sparse:    left side has type unsigned short
   drivers/pci/pci.c:4647:13: sparse:    right side has type restricted pci_power_t
   drivers/pci/pci.c:4652:13: sparse: sparse: invalid assignment: |=
   drivers/pci/pci.c:4652:13: sparse:    left side has type unsigned short
   drivers/pci/pci.c:4652:13: sparse:    right side has type restricted pci_power_t
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/pci/pci-driver.c:494:42: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci-driver.c:494:61: sparse: sparse: restricted pci_power_t degrades to integer
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/pci/quirks.c:2287:57: sparse: sparse: restricted pci_power_t degrades to integer
   include/asm-generic/io.h:479:15: sparse: sparse: cast to restricted __le16
   include/asm-generic/io.h:513:22: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected unsigned short [usertype] s @@     got restricted __le16 [usertype] @@
   include/asm-generic/io.h:513:22: sparse:     expected unsigned short [usertype] s
   include/asm-generic/io.h:513:22: sparse:     got restricted __le16 [usertype]
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/video/fbdev/udlfb.c:1008:19: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const *addr @@     got char [noderef] <asn:2> *screen_base @@
   drivers/video/fbdev/udlfb.c:1008:19: sparse:     expected void const *addr
   drivers/video/fbdev/udlfb.c:1008:19: sparse:     got char [noderef] <asn:2> *screen_base
   drivers/video/fbdev/udlfb.c:1121:36: sparse: sparse: cast removes address space '<asn:2>' of expression
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/clk/clk.c:159:22: sparse: sparse: context imbalance in 'clk_enable_lock' - different lock contexts for basic block

# https://github.com/0day-ci/linux/commit/89b94bda61375feace001bf5567bae6293277bd9
git remote add linux-review https://github.com/0day-ci/linux
git remote update linux-review
git checkout 89b94bda61375feace001bf5567bae6293277bd9
vim +157 include/linux/pm_runtime.h

5e928f77a09a07 Rafael J. Wysocki   2009-08-18  155  
372a12ed9d99c0 Ulf Hansson         2016-04-08  156  static inline void pm_suspend_ignore_children(struct device *dev, bool enable) {}
5e928f77a09a07 Rafael J. Wysocki   2009-08-18 @157  static inline void pm_runtime_get_noresume(struct device *dev) {}
5e928f77a09a07 Rafael J. Wysocki   2009-08-18  158  static inline void pm_runtime_put_noidle(struct device *dev) {}
d690b2cd222afc Rafael J. Wysocki   2010-03-06  159  static inline bool pm_runtime_suspended(struct device *dev) { return false; }
fbadc58dd3a52c ShuoX Liu           2013-01-23  160  static inline bool pm_runtime_active(struct device *dev) { return true; }
f3393b62f157cc Kevin Hilman        2011-07-12  161  static inline bool pm_runtime_status_suspended(struct device *dev) { return false; }
4b31db8a16fa0d Rafael J. Wysocki   2010-12-24  162  static inline bool pm_runtime_enabled(struct device *dev) { return false; }
5e928f77a09a07 Rafael J. Wysocki   2009-08-18  163  
7490e44239e602 Alan Stern          2010-09-25  164  static inline void pm_runtime_no_callbacks(struct device *dev) {}
c7b61de5b7b17f Alan Stern          2010-12-01  165  static inline void pm_runtime_irq_safe(struct device *dev) {}
3fb1581ea1ab0a Krzysztof Kozlowski 2014-11-14  166  static inline bool pm_runtime_is_irq_safe(struct device *dev) { return false; }
2f60ba706bd9af Rafael J. Wysocki   2010-05-10  167  
cb8f51bdadb796 Rafael J. Wysocki   2011-02-08  168  static inline bool pm_runtime_callbacks_present(struct device *dev) { return false; }
15bcb91d7e607d Alan Stern          2010-09-25  169  static inline void pm_runtime_mark_last_busy(struct device *dev) {}
15bcb91d7e607d Alan Stern          2010-09-25  170  static inline void __pm_runtime_use_autosuspend(struct device *dev,
15bcb91d7e607d Alan Stern          2010-09-25  171  						bool use) {}
15bcb91d7e607d Alan Stern          2010-09-25  172  static inline void pm_runtime_set_autosuspend_delay(struct device *dev,
15bcb91d7e607d Alan Stern          2010-09-25  173  						int delay) {}
8234f6734c5d74 Vincent Guittot     2018-12-14  174  static inline u64 pm_runtime_autosuspend_expiration(
15bcb91d7e607d Alan Stern          2010-09-25  175  				struct device *dev) { return 0; }
e823407f7b11fa Ming Lei            2013-02-22  176  static inline void pm_runtime_set_memalloc_noio(struct device *dev,
e823407f7b11fa Ming Lei            2013-02-22  177  						bool enable){}
21d5c57b372616 Rafael J. Wysocki   2016-10-30  178  static inline void pm_runtime_clean_up_links(struct device *dev) {}
b06c0b2f087ab4 Rafael J. Wysocki   2018-06-12  179  static inline void pm_runtime_get_suppliers(struct device *dev) {}
b06c0b2f087ab4 Rafael J. Wysocki   2018-06-12  180  static inline void pm_runtime_put_suppliers(struct device *dev) {}
baa8809f60971d Rafael J. Wysocki   2016-10-30  181  static inline void pm_runtime_new_link(struct device *dev) {}
baa8809f60971d Rafael J. Wysocki   2016-10-30  182  static inline void pm_runtime_drop_link(struct device *dev) {}
89b94bda61375f Chen Yu             2020-06-06 @183  static inline void pm_runtime_get_noresume(struct device *dev) {}
89b94bda61375f Chen Yu             2020-06-06  184  static inline void pm_runtime_put_noidle(struct device *dev) {}
15bcb91d7e607d Alan Stern          2010-09-25  185  

:::::: The code at line 157 was first introduced by commit
:::::: 5e928f77a09a07f9dd595bb8a489965d69a83458 PM: Introduce core framework for run-time PM of I/O devices (rev. 17)

:::::: TO: Rafael J. Wysocki <rjw@sisk.pl>
:::::: CC: Rafael J. Wysocki <rjw@sisk.pl>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 26266 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2][RFC] PM-runtime: Move all runtime usage related function to runtime.c
  2020-06-08 15:11   ` kernel test robot
@ 2020-06-08 15:11     ` Chen, Yu C
  0 siblings, 0 replies; 13+ messages in thread
From: Chen, Yu C @ 2020-06-08 15:11 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 74817 bytes --]

Thanks for reporting this.
I've sent the v2 patch to the mailing list at
https://patchwork.kernel.org/patch/11592687/
Thanks,
Chenyu

-----Original Message-----
From: lkp <lkp@intel.com> 
Sent: Monday, June 8, 2020 11:11 PM
To: Chen, Yu C <yu.c.chen@intel.com>
Cc: kbuild-all(a)lists.01.org
Subject: Re: [PATCH 1/2][RFC] PM-runtime: Move all runtime usage related function to runtime.c

Hi Chen,

[FYI, it's a private test report for your RFC patch.]
[auto build test WARNING on pm/linux-next]
[also build test WARNING on v5.7 next-20200605]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Chen-Yu/Add-more-trace-point-for-runtime-usage-count/20200606-030705
base:   https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git linux-next
:::::: branch date: 4 hours ago
:::::: commit date: 4 hours ago
config: arc-randconfig-s032-20200605 (attached as .config)
compiler: arc-elf-gcc (GCC) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.1-246-g41f651b4-dirty
        # save the attached .config to linux build tree
        make W=1 C=1 ARCH=arc CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


sparse warnings: (new ones prefixed by >>)

   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/tty/serial/xilinx_uartps.c:553:28: sparse: sparse: context imbalance in 'cdns_uart_clk_notifier_cb' - different lock contexts for basic block
   include/linux/spinlock.h:408:9: sparse: sparse: context imbalance in 'cdns_uart_console_write' - unexpected unlock
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/tty/serial/8250/8250_port.c:1881:5: sparse: sparse: context imbalance in 'serial8250_handle_irq' - different lock contexts for basic block
   drivers/tty/serial/8250/8250_port.c:3290:9: sparse: sparse: context imbalance in 'serial8250_console_write' - different lock contexts for basic block
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/misc/lis3lv02d/lis3lv02d.c:182:52: sparse: sparse: cast to restricted __le16
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   arch/arc/include/asm/irqflags-arcv2.h:80:31: sparse: sparse: undefined identifier '__builtin_arc_lr'
   arch/arc/include/asm/irqflags-arcv2.h:83:17: sparse: sparse: undefined identifier '__builtin_arc_sr'
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/i2c/busses/i2c-viperboard.c:123:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] addr @@     got restricted __le16 [usertype] @@
   drivers/i2c/busses/i2c-viperboard.c:123:35: sparse:     expected unsigned short [usertype] addr
   drivers/i2c/busses/i2c-viperboard.c:123:35: sparse:     got restricted __le16 [usertype]
   drivers/i2c/busses/i2c-viperboard.c:196:34: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] tf1 @@     got restricted __le16 [usertype] @@
   drivers/i2c/busses/i2c-viperboard.c:196:34: sparse:     expected unsigned short [usertype] tf1
   drivers/i2c/busses/i2c-viperboard.c:196:34: sparse:     got restricted __le16 [usertype]
   drivers/i2c/busses/i2c-viperboard.c:197:34: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] tf2 @@     got restricted __le16 [usertype] @@
   drivers/i2c/busses/i2c-viperboard.c:197:34: sparse:     expected unsigned short [usertype] tf2
   drivers/i2c/busses/i2c-viperboard.c:197:34: sparse:     got restricted __le16 [usertype]
   drivers/i2c/busses/i2c-viperboard.c:232:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] addr @@     got restricted __le16 [usertype] @@
   drivers/i2c/busses/i2c-viperboard.c:232:35: sparse:     expected unsigned short [usertype] addr
   drivers/i2c/busses/i2c-viperboard.c:232:35: sparse:     got restricted __le16 [usertype]
   drivers/i2c/busses/i2c-viperboard.c:295:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] len @@     got restricted __le16 [usertype] @@
   drivers/i2c/busses/i2c-viperboard.c:295:35: sparse:     expected unsigned short [usertype] len
   drivers/i2c/busses/i2c-viperboard.c:295:35: sparse:     got restricted __le16 [usertype]
   drivers/i2c/busses/i2c-viperboard.c:320:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] len @@     got restricted __le16 [usertype] @@
   drivers/i2c/busses/i2c-viperboard.c:320:35: sparse:     expected unsigned short [usertype] len
   drivers/i2c/busses/i2c-viperboard.c:320:35: sparse:     got restricted __le16 [usertype]
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/bluetooth/hci_intel.c:696:26: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/hci_intel.c:701:26: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/hci_intel.c:702:26: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/hci_intel.c:703:26: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/hci_intel.c:725:26: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/hci_intel.c:730:26: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/hci_intel.c:731:26: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/hci_intel.c:732:26: sparse: sparse: cast to restricted __le16
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/bluetooth/btusb.c:2155:25: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/btusb.c:2164:25: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/btusb.c:2165:25: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/btusb.c:2166:25: sparse: sparse: cast to restricted __le16
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/cdns3/drd.c:43:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:43:31: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:43:31: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:45:25: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:45:25: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:45:25: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:47:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:47:31: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:47:31: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:49:25: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:49:25: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:49:25: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:71:14: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:71:14: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:71:14: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:81:19: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:81:19: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:81:19: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:114:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:114:9: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:114:9: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:123:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:123:9: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:123:9: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:141:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:141:17: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:141:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:144:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:144:23: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:144:23: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:144:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:144:23: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:144:23: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:152:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:152:17: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:152:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:156:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:156:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:156:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:156:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:156:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:156:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:178:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:178:17: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:178:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:182:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:182:23: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:182:23: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:182:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:182:23: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:182:23: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:195:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:195:17: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:195:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:199:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:199:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:199:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:199:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:199:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:199:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:219:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:219:9: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:219:9: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:284:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:284:15: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:284:15: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:303:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:303:9: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:303:9: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:326:27: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct cdns3_otg_legacy_regs *otg_v0_regs @@     got void [noderef] <asn:2> *[assigned] regs @@
   drivers/usb/cdns3/drd.c:326:27: sparse:     expected struct cdns3_otg_legacy_regs *otg_v0_regs
   drivers/usb/cdns3/drd.c:326:27: sparse:     got void [noderef] <asn:2> *[assigned] regs
   drivers/usb/cdns3/drd.c:327:14: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:327:14: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:327:14: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:330:32: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct cdns3_otg_common_regs *otg_regs @@     got void [noderef] <asn:2> *[assigned] regs @@
   drivers/usb/cdns3/drd.c:330:32: sparse:     expected struct cdns3_otg_common_regs *otg_regs
   drivers/usb/cdns3/drd.c:330:32: sparse:     got void [noderef] <asn:2> *[assigned] regs
   drivers/usb/cdns3/drd.c:331:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:331:17: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:331:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:332:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:332:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:332:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:336:35: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct cdns3_otg_regs *otg_v1_regs @@     got void [noderef] <asn:2> *[assigned] regs @@
   drivers/usb/cdns3/drd.c:336:35: sparse:     expected struct cdns3_otg_regs *otg_v1_regs
   drivers/usb/cdns3/drd.c:336:35: sparse:     got void [noderef] <asn:2> *[assigned] regs
   drivers/usb/cdns3/drd.c:339:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:339:17: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:339:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:340:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:340:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:340:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:340:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:340:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:340:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:345:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:345:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/cdns3/gadget.c:1157:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:1157:35: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:1157:35: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:1173:29: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] buffer @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:1173:29: sparse:     expected restricted __le32 [usertype] buffer
   drivers/usb/cdns3/gadget.c:1173:29: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:1188:29: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] length @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:1188:29: sparse:     expected restricted __le32 [usertype] length
   drivers/usb/cdns3/gadget.c:1188:29: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:1191:37: sparse: sparse: invalid assignment: |=
   drivers/usb/cdns3/gadget.c:1191:37: sparse:    left side has type restricted __le32
   drivers/usb/cdns3/gadget.c:1191:37: sparse:    right side has type unsigned long
   drivers/usb/cdns3/gadget.c:1213:38: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned int [assigned] [usertype] control @@
   drivers/usb/cdns3/gadget.c:1213:38: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:1213:38: sparse:     got unsigned int [assigned] [usertype] control
   drivers/usb/cdns3/gadget.c:1215:48: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned int [assigned] [usertype] control @@
   drivers/usb/cdns3/gadget.c:1215:48: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:1215:48: sparse:     got unsigned int [assigned] [usertype] control
   drivers/usb/cdns3/gadget.c:1229:30: sparse: sparse: invalid assignment: |=
   drivers/usb/cdns3/gadget.c:1229:30: sparse:    left side has type restricted __le32
   drivers/usb/cdns3/gadget.c:1229:30: sparse:    right side has type unsigned long
   drivers/usb/cdns3/gadget.c:1255:36: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/cdns3/gadget.c:1255:30: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned int @@
   drivers/usb/cdns3/gadget.c:1255:30: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:1255:30: sparse:     got unsigned int
   drivers/usb/cdns3/gadget.c:1010:29: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] buffer @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:1010:29: sparse:     expected restricted __le32 [usertype] buffer
   drivers/usb/cdns3/gadget.c:1010:29: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:1013:29: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] buffer @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:1013:29: sparse:     expected restricted __le32 [usertype] buffer
   drivers/usb/cdns3/gadget.c:1013:29: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:1019:21: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] length @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:1019:21: sparse:     expected restricted __le32 [usertype] length
   drivers/usb/cdns3/gadget.c:1019:21: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:1029:37: sparse: sparse: invalid assignment: |=
   drivers/usb/cdns3/gadget.c:1029:37: sparse:    left side has type restricted __le32
   drivers/usb/cdns3/gadget.c:1029:37: sparse:    right side has type unsigned long
   drivers/usb/cdns3/gadget.c:1033:22: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned int [assigned] [usertype] control @@
   drivers/usb/cdns3/gadget.c:1033:22: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:1033:22: sparse:     got unsigned int [assigned] [usertype] control
   drivers/usb/cdns3/gadget.c:263:34: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] buffer @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:263:34: sparse:     expected restricted __le32 [usertype] buffer
   drivers/usb/cdns3/gadget.c:263:34: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:264:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:264:35: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:264:35: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:849:49: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/cdns3/gadget.c:848:51: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned int @@
   drivers/usb/cdns3/gadget.c:848:51: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:848:51: sparse:     got unsigned int
   drivers/usb/cdns3/gadget.c:852:49: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/cdns3/gadget.c:851:51: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned int @@
   drivers/usb/cdns3/gadget.c:851:51: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:851:51: sparse:     got unsigned int
   drivers/usb/cdns3/gadget.c:1393:17: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/cdns3/gadget.c:1442:21: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/cdns3/gadget.c:1574:35: sparse: sparse: dubious: x | !y
   drivers/usb/cdns3/gadget.c:2552:34: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] buffer @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:2552:34: sparse:     expected restricted __le32 [usertype] buffer
   drivers/usb/cdns3/gadget.c:2552:34: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:2554:46: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/cdns3/gadget.c:2554:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:2554:35: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:2554:35: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:2610:43: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/cdns3/gadget.c:2610:38: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:2610:38: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:2610:38: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:2625:43: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/cdns3/gadget.c:2625:38: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:2625:38: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:2625:38: sparse:     got unsigned long
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/cdns3/ep0.c:40:37: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] buffer @@     got unsigned long @@
   drivers/usb/cdns3/ep0.c:40:37: sparse:     expected restricted __le32 [usertype] buffer
   drivers/usb/cdns3/ep0.c:40:37: sparse:     got unsigned long
   drivers/usb/cdns3/ep0.c:41:37: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] length @@     got unsigned long @@
   drivers/usb/cdns3/ep0.c:41:37: sparse:     expected restricted __le32 [usertype] length
   drivers/usb/cdns3/ep0.c:41:37: sparse:     got unsigned long
   drivers/usb/cdns3/ep0.c:44:46: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned long @@
   drivers/usb/cdns3/ep0.c:44:46: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/ep0.c:44:46: sparse:     got unsigned long
   drivers/usb/cdns3/ep0.c:45:45: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] buffer @@     got unsigned long @@
   drivers/usb/cdns3/ep0.c:45:45: sparse:     expected restricted __le32 [usertype] buffer
   drivers/usb/cdns3/ep0.c:45:45: sparse:     got unsigned long
   drivers/usb/cdns3/ep0.c:46:45: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] length @@     got unsigned long @@
   drivers/usb/cdns3/ep0.c:46:45: sparse:     expected restricted __le32 [usertype] length
   drivers/usb/cdns3/ep0.c:46:45: sparse:     got unsigned long
   drivers/usb/cdns3/ep0.c:47:46: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned long @@
   drivers/usb/cdns3/ep0.c:47:46: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/ep0.c:47:46: sparse:     got unsigned long
   drivers/usb/cdns3/ep0.c:50:46: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned long @@
   drivers/usb/cdns3/ep0.c:50:46: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/ep0.c:50:46: sparse:     got unsigned long
   drivers/usb/cdns3/ep0.c:267:52: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected unsigned char [usertype] ep_addr @@     got restricted __le16 [usertype] wIndex @@
   drivers/usb/cdns3/ep0.c:267:52: sparse:     expected unsigned char [usertype] ep_addr
   drivers/usb/cdns3/ep0.c:267:52: sparse:     got restricted __le16 [usertype] wIndex
   drivers/usb/cdns3/ep0.c:271:47: sparse: sparse: incorrect type in argument 2 (different base types) @@     expected unsigned int [usertype] ep @@     got restricted __le16 [usertype] wIndex @@
   drivers/usb/cdns3/ep0.c:271:47: sparse:     expected unsigned int [usertype] ep
   drivers/usb/cdns3/ep0.c:271:47: sparse:     got restricted __le16 [usertype] wIndex
   drivers/usb/cdns3/ep0.c:387:19: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/cdns3/ep0.c:390:44: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected unsigned char [usertype] ep_addr @@     got restricted __le16 [usertype] wIndex @@
   drivers/usb/cdns3/ep0.c:390:44: sparse:     expected unsigned char [usertype] ep_addr
   drivers/usb/cdns3/ep0.c:390:44: sparse:     got restricted __le16 [usertype] wIndex
   drivers/usb/cdns3/ep0.c:393:39: sparse: sparse: incorrect type in argument 2 (different base types) @@     expected unsigned int [usertype] ep @@     got restricted __le16 [usertype] wIndex @@
   drivers/usb/cdns3/ep0.c:393:39: sparse:     expected unsigned int [usertype] ep
   drivers/usb/cdns3/ep0.c:393:39: sparse:     got restricted __le16 [usertype] wIndex
   drivers/usb/cdns3/ep0.c:454:21: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/cdns3/ep0.c:478:31: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] isoch_delay @@     got restricted __le16 [usertype] wValue @@
   drivers/usb/cdns3/ep0.c:478:31: sparse:     expected unsigned short [usertype] isoch_delay
   drivers/usb/cdns3/ep0.c:478:31: sparse:     got restricted __le16 [usertype] wValue
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/host/oxu210hp-hcd.c:890:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le16 [usertype] wHubCharacteristics @@     got unsigned short [usertype] @@
   drivers/usb/host/oxu210hp-hcd.c:890:35: sparse:     expected restricted __le16 [usertype] wHubCharacteristics
   drivers/usb/host/oxu210hp-hcd.c:890:35: sparse:     got unsigned short [usertype]
   drivers/usb/host/oxu210hp-hcd.c:942:32: sparse: sparse: cast removes address space '<asn:2>' of expression
   drivers/usb/host/oxu210hp-hcd.c:966:33: sparse: sparse: cast removes address space '<asn:2>' of expression
   drivers/usb/host/oxu210hp-hcd.c:1013:24: sparse: sparse: cast removes address space '<asn:2>' of expression
   drivers/usb/host/oxu210hp-hcd.c:1037:20: sparse: sparse: subtraction of different types can't work (different address spaces)
   drivers/usb/host/oxu210hp-hcd.c:1070:23: sparse: sparse: cast removes address space '<asn:2>' of expression
   drivers/usb/host/oxu210hp-hcd.c:1171:41: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [noderef] <asn:2> @@     got restricted __le32 [usertype] @@
   drivers/usb/host/oxu210hp-hcd.c:1171:41: sparse:     expected unsigned int [noderef] <asn:2>
   drivers/usb/host/oxu210hp-hcd.c:1171:41: sparse:     got restricted __le32 [usertype]
   drivers/usb/host/oxu210hp-hcd.c:1188:26: sparse: sparse: cast removes address space '<asn:2>' of expression
   drivers/usb/host/oxu210hp-hcd.c:2027:44: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/host/oxu210hp-hcd.c:2027:41: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] hw_token @@     got unsigned int @@
   drivers/usb/host/oxu210hp-hcd.c:2027:41: sparse:     expected restricted __le32 [usertype] hw_token
   drivers/usb/host/oxu210hp-hcd.c:2027:41: sparse:     got unsigned int
   drivers/usb/host/oxu210hp-hcd.c:995:21: sparse: sparse: subtraction of different types can't work (different address spaces)
   drivers/usb/host/oxu210hp-hcd.c:995:21: sparse: sparse: subtraction of different types can't work (different address spaces)
   drivers/usb/host/oxu210hp-hcd.c:995:21: sparse: sparse: subtraction of different types can't work (different address spaces)
   drivers/usb/host/oxu210hp-hcd.c:995:21: sparse: sparse: subtraction of different types can't work (different address spaces)
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/host/sl811-hcd.c:1788:24: sparse: sparse: symbol 'sl811h_driver' was not declared. Should it be static?
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/hid/hid-roccat-kone.c:103:28: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] checksum @@     got restricted __le16 [usertype] @@
   drivers/hid/hid-roccat-kone.c:103:28: sparse:     expected unsigned short [usertype] checksum
   drivers/hid/hid-roccat-kone.c:103:28: sparse:     got restricted __le16 [usertype]
   drivers/hid/hid-roccat-kone.c:262:19: sparse: sparse: cast to restricted __le16
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/gadget/udc/dummy_hcd.c:460:25: sparse: sparse: context imbalance in 'set_link_state' - unexpected unlock
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/gadget/udc/pxa27x_udc.c:2093:20: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le16 [assigned] [usertype] wValue @@     got int config @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2093:20: sparse:     expected restricted __le16 [assigned] [usertype] wValue
   drivers/usb/gadget/udc/pxa27x_udc.c:2093:20: sparse:     got int config
   drivers/usb/gadget/udc/pxa27x_udc.c:2122:20: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le16 [assigned] [usertype] wValue @@     got int alt @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2122:20: sparse:     expected restricted __le16 [assigned] [usertype] wValue
   drivers/usb/gadget/udc/pxa27x_udc.c:2122:20: sparse:     got int alt
   drivers/usb/gadget/udc/pxa27x_udc.c:2123:20: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le16 [assigned] [usertype] wIndex @@     got int iface @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2123:20: sparse:     expected restricted __le16 [assigned] [usertype] wIndex
   drivers/usb/gadget/udc/pxa27x_udc.c:2123:20: sparse:     got int iface
   drivers/usb/gadget/udc/pxa27x_udc.c:2306:17: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __le16 [usertype] wMaxPacketSize @@     got unsigned int @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2306:17: sparse:     expected restricted __le16 [usertype] wMaxPacketSize
   drivers/usb/gadget/udc/pxa27x_udc.c:2306:17: sparse:     got unsigned int
   drivers/usb/gadget/udc/pxa27x_udc.c:2307:17: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __le16 [usertype] wMaxPacketSize @@     got unsigned int @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2307:17: sparse:     expected restricted __le16 [usertype] wMaxPacketSize
   drivers/usb/gadget/udc/pxa27x_udc.c:2307:17: sparse:     got unsigned int
   drivers/usb/gadget/udc/pxa27x_udc.c:2308:17: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __le16 [usertype] wMaxPacketSize @@     got unsigned int @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2308:17: sparse:     expected restricted __le16 [usertype] wMaxPacketSize
   drivers/usb/gadget/udc/pxa27x_udc.c:2308:17: sparse:     got unsigned int
   drivers/usb/gadget/udc/pxa27x_udc.c:2309:17: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __le16 [usertype] wMaxPacketSize @@     got unsigned int @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2309:17: sparse:     expected restricted __le16 [usertype] wMaxPacketSize
   drivers/usb/gadget/udc/pxa27x_udc.c:2309:17: sparse:     got unsigned int
   drivers/usb/gadget/udc/pxa27x_udc.c:2310:17: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __le16 [usertype] wMaxPacketSize @@     got unsigned int @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2310:17: sparse:     expected restricted __le16 [usertype] wMaxPacketSize
   drivers/usb/gadget/udc/pxa27x_udc.c:2310:17: sparse:     got unsigned int
   drivers/usb/gadget/udc/pxa27x_udc.c:2311:17: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __le16 [usertype] wMaxPacketSize @@     got unsigned int @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2311:17: sparse:     expected restricted __le16 [usertype] wMaxPacketSize
   drivers/usb/gadget/udc/pxa27x_udc.c:2311:17: sparse:     got unsigned int
   drivers/usb/gadget/udc/pxa27x_udc.c:680:39: sparse: sparse: context imbalance in 'req_done' - unexpected unlock
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/gadget/udc/mv_udc_core.c:67:33: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __le16 [usertype] wMaxPacketSize @@     got int @@
   drivers/usb/gadget/udc/mv_udc_core.c:67:33: sparse:     expected restricted __le16 [usertype] wMaxPacketSize
   drivers/usb/gadget/udc/mv_udc_core.c:67:33: sparse:     got int
   drivers/usb/gadget/udc/mv_udc_core.c:367:24: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] buff_ptr0 @@     got restricted __le32 [usertype] @@
   drivers/usb/gadget/udc/mv_udc_core.c:367:24: sparse:     expected unsigned int [usertype] buff_ptr0
   drivers/usb/gadget/udc/mv_udc_core.c:367:24: sparse:     got restricted __le32 [usertype]
   drivers/usb/gadget/udc/mv_udc_core.c:369:24: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] buff_ptr1 @@     got restricted __le32 [usertype] @@
   drivers/usb/gadget/udc/mv_udc_core.c:369:24: sparse:     expected unsigned int [usertype] buff_ptr1
   drivers/usb/gadget/udc/mv_udc_core.c:369:24: sparse:     got restricted __le32 [usertype]
   drivers/usb/gadget/udc/mv_udc_core.c:370:24: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] buff_ptr2 @@     got restricted __le32 [usertype] @@
   drivers/usb/gadget/udc/mv_udc_core.c:370:24: sparse:     expected unsigned int [usertype] buff_ptr2
   drivers/usb/gadget/udc/mv_udc_core.c:370:24: sparse:     got restricted __le32 [usertype]
   drivers/usb/gadget/udc/mv_udc_core.c:371:24: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] buff_ptr3 @@     got restricted __le32 [usertype] @@
   drivers/usb/gadget/udc/mv_udc_core.c:371:24: sparse:     expected unsigned int [usertype] buff_ptr3
   drivers/usb/gadget/udc/mv_udc_core.c:371:24: sparse:     got restricted __le32 [usertype]
   drivers/usb/gadget/udc/mv_udc_core.c:372:24: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] buff_ptr4 @@     got restricted __le32 [usertype] @@
   drivers/usb/gadget/udc/mv_udc_core.c:372:24: sparse:     expected unsigned int [usertype] buff_ptr4
   drivers/usb/gadget/udc/mv_udc_core.c:372:24: sparse:     got restricted __le32 [usertype]
   drivers/usb/gadget/udc/mv_udc_core.c:833:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got unsigned int * @@
   drivers/usb/gadget/udc/mv_udc_core.c:833:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/gadget/udc/mv_udc_core.c:833:17: sparse:     got unsigned int *
   drivers/usb/gadget/udc/mv_udc_core.c:833:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got unsigned int * @@
   drivers/usb/gadget/udc/mv_udc_core.c:833:17: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/gadget/udc/mv_udc_core.c:833:17: sparse:     got unsigned int *
   drivers/usb/gadget/udc/mv_udc_core.c:1456:41: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] @@     got restricted __le16 [usertype] @@
   drivers/usb/gadget/udc/mv_udc_core.c:1456:41: sparse:     expected unsigned short [usertype]
   drivers/usb/gadget/udc/mv_udc_core.c:1456:41: sparse:     got restricted __le16 [usertype]
   drivers/usb/gadget/udc/mv_udc_core.c:1516:26: sparse: sparse: cast from restricted __le16
   drivers/usb/gadget/udc/mv_udc_core.c:1546:31: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1547:35: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1568:30: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1579:39: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1580:43: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1616:34: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1625:52: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1611:30: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1611:30: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1634:39: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1635:43: sparse: sparse: restricted __le16 degrades to integer
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/usbip/usbip_common.c:418:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] command @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:418:33: sparse:     expected unsigned int [usertype] command
   drivers/usb/usbip/usbip_common.c:418:33: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:419:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] seqnum @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:419:33: sparse:     expected unsigned int [usertype] seqnum
   drivers/usb/usbip/usbip_common.c:419:33: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:420:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] devid @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:420:33: sparse:     expected unsigned int [usertype] devid
   drivers/usb/usbip/usbip_common.c:420:33: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:421:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] direction @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:421:33: sparse:     expected unsigned int [usertype] direction
   drivers/usb/usbip/usbip_common.c:421:33: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:422:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] ep @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:422:33: sparse:     expected unsigned int [usertype] ep
   drivers/usb/usbip/usbip_common.c:422:33: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:424:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:424:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:424:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:424:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:424:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:424:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:425:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:425:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:425:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:425:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:425:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:425:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:426:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:426:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:426:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:426:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:426:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:426:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:427:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:427:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:427:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:427:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:427:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:427:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:428:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:428:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:428:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:428:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:428:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:428:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:436:37: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] transfer_flags @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:436:37: sparse:     expected unsigned int [usertype] transfer_flags
   drivers/usb/usbip/usbip_common.c:436:37: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:443:39: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:443:39: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:443:39: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:443:39: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:443:39: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:443:39: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:474:29: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] seqnum @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:474:29: sparse:     expected unsigned int [usertype] seqnum
   drivers/usb/usbip/usbip_common.c:474:29: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:476:31: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:476:31: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:476:31: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:476:31: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:476:31: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:476:31: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:526:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] offset @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:526:33: sparse:     expected unsigned int [usertype] offset
   drivers/usb/usbip/usbip_common.c:526:33: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:527:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] length @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:527:33: sparse:     expected unsigned int [usertype] length
   drivers/usb/usbip/usbip_common.c:527:33: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:528:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] status @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:528:33: sparse:     expected unsigned int [usertype] status
   drivers/usb/usbip/usbip_common.c:528:33: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:529:36: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] actual_length @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:529:36: sparse:     expected unsigned int [usertype] actual_length
   drivers/usb/usbip/usbip_common.c:529:36: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:531:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:531:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:531:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:531:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:531:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:531:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:532:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:532:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:532:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:532:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:532:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:532:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:533:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:533:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:533:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:533:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:533:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:533:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:534:38: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:534:38: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:534:38: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:534:38: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:534:38: sparse: sparse: cast to restricted __be32
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/usbip/vhci_hcd.c:295:36: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le16 [usertype] DeviceRemovable @@     got int @@
   drivers/usb/usbip/vhci_hcd.c:295:36: sparse:     expected restricted __le16 [usertype] DeviceRemovable
   drivers/usb/usbip/vhci_hcd.c:295:36: sparse:     got int
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   kernel/irq/irqdesc.c:875:17: sparse: sparse: context imbalance in '__irq_get_desc_lock' - wrong count at exit
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/gpio/gpio-viperboard.c:261:20: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] val @@     got restricted __be16 [usertype] @@
   drivers/gpio/gpio-viperboard.c:261:20: sparse:     expected unsigned short [usertype] val
   drivers/gpio/gpio-viperboard.c:261:20: sparse:     got restricted __be16 [usertype]
   drivers/gpio/gpio-viperboard.c:262:21: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] mask @@     got restricted __be16 [usertype] @@
   drivers/gpio/gpio-viperboard.c:262:21: sparse:     expected unsigned short [usertype] mask
   drivers/gpio/gpio-viperboard.c:262:21: sparse:     got restricted __be16 [usertype]
   drivers/gpio/gpio-viperboard.c:302:27: sparse: sparse: cast to restricted __be16
   drivers/gpio/gpio-viperboard.c:302:27: sparse: sparse: cast to restricted __be16
   drivers/gpio/gpio-viperboard.c:302:27: sparse: sparse: cast to restricted __be16
   drivers/gpio/gpio-viperboard.c:302:27: sparse: sparse: cast to restricted __be16
   drivers/gpio/gpio-viperboard.c:324:28: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] val @@     got restricted __be16 [usertype] @@
   drivers/gpio/gpio-viperboard.c:324:28: sparse:     expected unsigned short [usertype] val
   drivers/gpio/gpio-viperboard.c:324:28: sparse:     got restricted __be16 [usertype]
   drivers/gpio/gpio-viperboard.c:325:29: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] mask @@     got restricted __be16 [usertype] @@
   drivers/gpio/gpio-viperboard.c:325:29: sparse:     expected unsigned short [usertype] mask
   drivers/gpio/gpio-viperboard.c:325:29: sparse:     got restricted __be16 [usertype]
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/pci/pci.c:899:13: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:899:21: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:899:31: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:899:39: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:908:35: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:908:54: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:909:19: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:909:37: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:939:23: sparse: sparse: invalid assignment: |=
   drivers/pci/pci.c:939:23: sparse:    left side has type unsigned short
   drivers/pci/pci.c:939:23: sparse:    right side has type restricted pci_power_t
   drivers/pci/pci.c:944:57: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:966:28: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted pci_power_t [usertype] current_state @@     got int @@
   drivers/pci/pci.c:966:28: sparse:     expected restricted pci_power_t [usertype] current_state
   drivers/pci/pci.c:966:28: sparse:     got int
   drivers/pci/pci.c:1015:36: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted pci_power_t [usertype] current_state @@     got int @@
   drivers/pci/pci.c:1015:36: sparse:     expected restricted pci_power_t [usertype] current_state
   drivers/pci/pci.c:1015:36: sparse:     got int
   drivers/pci/pci.c:1193:13: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:1193:21: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:1195:18: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:1195:26: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:1218:13: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:1218:22: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:1225:46: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:1225:54: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:1768:36: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted pci_power_t [usertype] current_state @@     got int @@
   drivers/pci/pci.c:1768:36: sparse:     expected restricted pci_power_t [usertype] current_state
   drivers/pci/pci.c:1768:36: sparse:     got int
   drivers/pci/pci.c:2156:44: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:2457:61: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:2458:45: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:2624:20: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:2624:38: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:2647:49: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:2647:67: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:4647:13: sparse: sparse: invalid assignment: |=
   drivers/pci/pci.c:4647:13: sparse:    left side has type unsigned short
   drivers/pci/pci.c:4647:13: sparse:    right side has type restricted pci_power_t
   drivers/pci/pci.c:4652:13: sparse: sparse: invalid assignment: |=
   drivers/pci/pci.c:4652:13: sparse:    left side has type unsigned short
   drivers/pci/pci.c:4652:13: sparse:    right side has type restricted pci_power_t
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/pci/pci-driver.c:494:42: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci-driver.c:494:61: sparse: sparse: restricted pci_power_t degrades to integer
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/pci/quirks.c:2287:57: sparse: sparse: restricted pci_power_t degrades to integer
   include/asm-generic/io.h:479:15: sparse: sparse: cast to restricted __le16
   include/asm-generic/io.h:513:22: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected unsigned short [usertype] s @@     got restricted __le16 [usertype] @@
   include/asm-generic/io.h:513:22: sparse:     expected unsigned short [usertype] s
   include/asm-generic/io.h:513:22: sparse:     got restricted __le16 [usertype]
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/video/fbdev/udlfb.c:1008:19: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const *addr @@     got char [noderef] <asn:2> *screen_base @@
   drivers/video/fbdev/udlfb.c:1008:19: sparse:     expected void const *addr
   drivers/video/fbdev/udlfb.c:1008:19: sparse:     got char [noderef] <asn:2> *screen_base
   drivers/video/fbdev/udlfb.c:1121:36: sparse: sparse: cast removes address space '<asn:2>' of expression
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/clk/clk.c:159:22: sparse: sparse: context imbalance in 'clk_enable_lock' - different lock contexts for basic block

# https://github.com/0day-ci/linux/commit/89b94bda61375feace001bf5567bae6293277bd9
git remote add linux-review https://github.com/0day-ci/linux
git remote update linux-review
git checkout 89b94bda61375feace001bf5567bae6293277bd9
vim +157 include/linux/pm_runtime.h

5e928f77a09a07 Rafael J. Wysocki   2009-08-18  155  
372a12ed9d99c0 Ulf Hansson         2016-04-08  156  static inline void pm_suspend_ignore_children(struct device *dev, bool enable) {}
5e928f77a09a07 Rafael J. Wysocki   2009-08-18 @157  static inline void pm_runtime_get_noresume(struct device *dev) {}
5e928f77a09a07 Rafael J. Wysocki   2009-08-18  158  static inline void pm_runtime_put_noidle(struct device *dev) {}
d690b2cd222afc Rafael J. Wysocki   2010-03-06  159  static inline bool pm_runtime_suspended(struct device *dev) { return false; }
fbadc58dd3a52c ShuoX Liu           2013-01-23  160  static inline bool pm_runtime_active(struct device *dev) { return true; }
f3393b62f157cc Kevin Hilman        2011-07-12  161  static inline bool pm_runtime_status_suspended(struct device *dev) { return false; }
4b31db8a16fa0d Rafael J. Wysocki   2010-12-24  162  static inline bool pm_runtime_enabled(struct device *dev) { return false; }
5e928f77a09a07 Rafael J. Wysocki   2009-08-18  163  
7490e44239e602 Alan Stern          2010-09-25  164  static inline void pm_runtime_no_callbacks(struct device *dev) {}
c7b61de5b7b17f Alan Stern          2010-12-01  165  static inline void pm_runtime_irq_safe(struct device *dev) {}
3fb1581ea1ab0a Krzysztof Kozlowski 2014-11-14  166  static inline bool pm_runtime_is_irq_safe(struct device *dev) { return false; }
2f60ba706bd9af Rafael J. Wysocki   2010-05-10  167  
cb8f51bdadb796 Rafael J. Wysocki   2011-02-08  168  static inline bool pm_runtime_callbacks_present(struct device *dev) { return false; }
15bcb91d7e607d Alan Stern          2010-09-25  169  static inline void pm_runtime_mark_last_busy(struct device *dev) {}
15bcb91d7e607d Alan Stern          2010-09-25  170  static inline void __pm_runtime_use_autosuspend(struct device *dev,
15bcb91d7e607d Alan Stern          2010-09-25  171  						bool use) {}
15bcb91d7e607d Alan Stern          2010-09-25  172  static inline void pm_runtime_set_autosuspend_delay(struct device *dev,
15bcb91d7e607d Alan Stern          2010-09-25  173  						int delay) {}
8234f6734c5d74 Vincent Guittot     2018-12-14  174  static inline u64 pm_runtime_autosuspend_expiration(
15bcb91d7e607d Alan Stern          2010-09-25  175  				struct device *dev) { return 0; }
e823407f7b11fa Ming Lei            2013-02-22  176  static inline void pm_runtime_set_memalloc_noio(struct device *dev,
e823407f7b11fa Ming Lei            2013-02-22  177  						bool enable){}
21d5c57b372616 Rafael J. Wysocki   2016-10-30  178  static inline void pm_runtime_clean_up_links(struct device *dev) {}
b06c0b2f087ab4 Rafael J. Wysocki   2018-06-12  179  static inline void pm_runtime_get_suppliers(struct device *dev) {}
b06c0b2f087ab4 Rafael J. Wysocki   2018-06-12  180  static inline void pm_runtime_put_suppliers(struct device *dev) {}
baa8809f60971d Rafael J. Wysocki   2016-10-30  181  static inline void pm_runtime_new_link(struct device *dev) {}
baa8809f60971d Rafael J. Wysocki   2016-10-30  182  static inline void pm_runtime_drop_link(struct device *dev) {}
89b94bda61375f Chen Yu             2020-06-06 @183  static inline void pm_runtime_get_noresume(struct device *dev) {}
89b94bda61375f Chen Yu             2020-06-06  184  static inline void pm_runtime_put_noidle(struct device *dev) {}
15bcb91d7e607d Alan Stern          2010-09-25  185  

:::::: The code at line 157 was first introduced by commit
:::::: 5e928f77a09a07f9dd595bb8a489965d69a83458 PM: Introduce core framework for run-time PM of I/O devices (rev. 17)

:::::: TO: Rafael J. Wysocki <rjw@sisk.pl>
:::::: CC: Rafael J. Wysocki <rjw@sisk.pl>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/2][RFC] PM-runtime: Move all runtime usage related function to runtime.c
@ 2020-06-05 23:35 kernel test robot
  0 siblings, 0 replies; 13+ messages in thread
From: kernel test robot @ 2020-06-05 23:35 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 74670 bytes --]

CC: kbuild-all(a)lists.01.org
In-Reply-To: <3e7c571eb9e444c6e326d5cbb1f6e2dce4bb52fe.1591380524.git.yu.c.chen@intel.com>
References: <3e7c571eb9e444c6e326d5cbb1f6e2dce4bb52fe.1591380524.git.yu.c.chen@intel.com>
TO: Chen Yu <yu.c.chen@intel.com>

Hi Chen,

[FYI, it's a private test report for your RFC patch.]
[auto build test WARNING on pm/linux-next]
[also build test WARNING on v5.7 next-20200605]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Chen-Yu/Add-more-trace-point-for-runtime-usage-count/20200606-030705
base:   https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git linux-next
:::::: branch date: 4 hours ago
:::::: commit date: 4 hours ago
config: arc-randconfig-s032-20200605 (attached as .config)
compiler: arc-elf-gcc (GCC) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.1-246-g41f651b4-dirty
        # save the attached .config to linux build tree
        make W=1 C=1 ARCH=arc CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


sparse warnings: (new ones prefixed by >>)

   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/tty/serial/xilinx_uartps.c:553:28: sparse: sparse: context imbalance in 'cdns_uart_clk_notifier_cb' - different lock contexts for basic block
   include/linux/spinlock.h:408:9: sparse: sparse: context imbalance in 'cdns_uart_console_write' - unexpected unlock
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/tty/serial/8250/8250_port.c:1881:5: sparse: sparse: context imbalance in 'serial8250_handle_irq' - different lock contexts for basic block
   drivers/tty/serial/8250/8250_port.c:3290:9: sparse: sparse: context imbalance in 'serial8250_console_write' - different lock contexts for basic block
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/misc/lis3lv02d/lis3lv02d.c:182:52: sparse: sparse: cast to restricted __le16
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   arch/arc/include/asm/irqflags-arcv2.h:80:31: sparse: sparse: undefined identifier '__builtin_arc_lr'
   arch/arc/include/asm/irqflags-arcv2.h:83:17: sparse: sparse: undefined identifier '__builtin_arc_sr'
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/i2c/busses/i2c-viperboard.c:123:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] addr @@     got restricted __le16 [usertype] @@
   drivers/i2c/busses/i2c-viperboard.c:123:35: sparse:     expected unsigned short [usertype] addr
   drivers/i2c/busses/i2c-viperboard.c:123:35: sparse:     got restricted __le16 [usertype]
   drivers/i2c/busses/i2c-viperboard.c:196:34: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] tf1 @@     got restricted __le16 [usertype] @@
   drivers/i2c/busses/i2c-viperboard.c:196:34: sparse:     expected unsigned short [usertype] tf1
   drivers/i2c/busses/i2c-viperboard.c:196:34: sparse:     got restricted __le16 [usertype]
   drivers/i2c/busses/i2c-viperboard.c:197:34: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] tf2 @@     got restricted __le16 [usertype] @@
   drivers/i2c/busses/i2c-viperboard.c:197:34: sparse:     expected unsigned short [usertype] tf2
   drivers/i2c/busses/i2c-viperboard.c:197:34: sparse:     got restricted __le16 [usertype]
   drivers/i2c/busses/i2c-viperboard.c:232:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] addr @@     got restricted __le16 [usertype] @@
   drivers/i2c/busses/i2c-viperboard.c:232:35: sparse:     expected unsigned short [usertype] addr
   drivers/i2c/busses/i2c-viperboard.c:232:35: sparse:     got restricted __le16 [usertype]
   drivers/i2c/busses/i2c-viperboard.c:295:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] len @@     got restricted __le16 [usertype] @@
   drivers/i2c/busses/i2c-viperboard.c:295:35: sparse:     expected unsigned short [usertype] len
   drivers/i2c/busses/i2c-viperboard.c:295:35: sparse:     got restricted __le16 [usertype]
   drivers/i2c/busses/i2c-viperboard.c:320:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] len @@     got restricted __le16 [usertype] @@
   drivers/i2c/busses/i2c-viperboard.c:320:35: sparse:     expected unsigned short [usertype] len
   drivers/i2c/busses/i2c-viperboard.c:320:35: sparse:     got restricted __le16 [usertype]
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/bluetooth/hci_intel.c:696:26: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/hci_intel.c:701:26: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/hci_intel.c:702:26: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/hci_intel.c:703:26: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/hci_intel.c:725:26: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/hci_intel.c:730:26: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/hci_intel.c:731:26: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/hci_intel.c:732:26: sparse: sparse: cast to restricted __le16
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/bluetooth/btusb.c:2155:25: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/btusb.c:2164:25: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/btusb.c:2165:25: sparse: sparse: cast to restricted __le16
   drivers/bluetooth/btusb.c:2166:25: sparse: sparse: cast to restricted __le16
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/cdns3/drd.c:43:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:43:31: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:43:31: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:45:25: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:45:25: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:45:25: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:47:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:47:31: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:47:31: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:49:25: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:49:25: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:49:25: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:71:14: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:71:14: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:71:14: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:81:19: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:81:19: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:81:19: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:114:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:114:9: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:114:9: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:123:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:123:9: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:123:9: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:141:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:141:17: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:141:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:144:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:144:23: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:144:23: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:144:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:144:23: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:144:23: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:152:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:152:17: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:152:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:156:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:156:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:156:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:156:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:156:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:156:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:178:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:178:17: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:178:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:182:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:182:23: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:182:23: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:182:23: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:182:23: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:182:23: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:195:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:195:17: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:195:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:199:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:199:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:199:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:199:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:199:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:199:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:219:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:219:9: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:219:9: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:284:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:284:15: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:284:15: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:303:9: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:303:9: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:303:9: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:326:27: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct cdns3_otg_legacy_regs *otg_v0_regs @@     got void [noderef] <asn:2> *[assigned] regs @@
   drivers/usb/cdns3/drd.c:326:27: sparse:     expected struct cdns3_otg_legacy_regs *otg_v0_regs
   drivers/usb/cdns3/drd.c:326:27: sparse:     got void [noderef] <asn:2> *[assigned] regs
   drivers/usb/cdns3/drd.c:327:14: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:327:14: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:327:14: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:330:32: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct cdns3_otg_common_regs *otg_regs @@     got void [noderef] <asn:2> *[assigned] regs @@
   drivers/usb/cdns3/drd.c:330:32: sparse:     expected struct cdns3_otg_common_regs *otg_regs
   drivers/usb/cdns3/drd.c:330:32: sparse:     got void [noderef] <asn:2> *[assigned] regs
   drivers/usb/cdns3/drd.c:331:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:331:17: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:331:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:332:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:332:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:332:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:336:35: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct cdns3_otg_regs *otg_v1_regs @@     got void [noderef] <asn:2> *[assigned] regs @@
   drivers/usb/cdns3/drd.c:336:35: sparse:     expected struct cdns3_otg_regs *otg_v1_regs
   drivers/usb/cdns3/drd.c:336:35: sparse:     got void [noderef] <asn:2> *[assigned] regs
   drivers/usb/cdns3/drd.c:339:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:339:17: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:339:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:340:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:340:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:340:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:340:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:340:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/cdns3/drd.c:340:17: sparse:     got restricted __le32 *
   drivers/usb/cdns3/drd.c:345:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got restricted __le32 * @@
   drivers/usb/cdns3/drd.c:345:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/cdns3/gadget.c:1157:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:1157:35: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:1157:35: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:1173:29: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] buffer @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:1173:29: sparse:     expected restricted __le32 [usertype] buffer
   drivers/usb/cdns3/gadget.c:1173:29: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:1188:29: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] length @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:1188:29: sparse:     expected restricted __le32 [usertype] length
   drivers/usb/cdns3/gadget.c:1188:29: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:1191:37: sparse: sparse: invalid assignment: |=
   drivers/usb/cdns3/gadget.c:1191:37: sparse:    left side has type restricted __le32
   drivers/usb/cdns3/gadget.c:1191:37: sparse:    right side has type unsigned long
   drivers/usb/cdns3/gadget.c:1213:38: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned int [assigned] [usertype] control @@
   drivers/usb/cdns3/gadget.c:1213:38: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:1213:38: sparse:     got unsigned int [assigned] [usertype] control
   drivers/usb/cdns3/gadget.c:1215:48: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned int [assigned] [usertype] control @@
   drivers/usb/cdns3/gadget.c:1215:48: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:1215:48: sparse:     got unsigned int [assigned] [usertype] control
   drivers/usb/cdns3/gadget.c:1229:30: sparse: sparse: invalid assignment: |=
   drivers/usb/cdns3/gadget.c:1229:30: sparse:    left side has type restricted __le32
   drivers/usb/cdns3/gadget.c:1229:30: sparse:    right side has type unsigned long
   drivers/usb/cdns3/gadget.c:1255:36: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/cdns3/gadget.c:1255:30: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned int @@
   drivers/usb/cdns3/gadget.c:1255:30: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:1255:30: sparse:     got unsigned int
   drivers/usb/cdns3/gadget.c:1010:29: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] buffer @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:1010:29: sparse:     expected restricted __le32 [usertype] buffer
   drivers/usb/cdns3/gadget.c:1010:29: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:1013:29: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] buffer @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:1013:29: sparse:     expected restricted __le32 [usertype] buffer
   drivers/usb/cdns3/gadget.c:1013:29: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:1019:21: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] length @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:1019:21: sparse:     expected restricted __le32 [usertype] length
   drivers/usb/cdns3/gadget.c:1019:21: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:1029:37: sparse: sparse: invalid assignment: |=
   drivers/usb/cdns3/gadget.c:1029:37: sparse:    left side has type restricted __le32
   drivers/usb/cdns3/gadget.c:1029:37: sparse:    right side has type unsigned long
   drivers/usb/cdns3/gadget.c:1033:22: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned int [assigned] [usertype] control @@
   drivers/usb/cdns3/gadget.c:1033:22: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:1033:22: sparse:     got unsigned int [assigned] [usertype] control
   drivers/usb/cdns3/gadget.c:263:34: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] buffer @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:263:34: sparse:     expected restricted __le32 [usertype] buffer
   drivers/usb/cdns3/gadget.c:263:34: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:264:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:264:35: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:264:35: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:849:49: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/cdns3/gadget.c:848:51: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned int @@
   drivers/usb/cdns3/gadget.c:848:51: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:848:51: sparse:     got unsigned int
   drivers/usb/cdns3/gadget.c:852:49: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/cdns3/gadget.c:851:51: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned int @@
   drivers/usb/cdns3/gadget.c:851:51: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:851:51: sparse:     got unsigned int
   drivers/usb/cdns3/gadget.c:1393:17: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/cdns3/gadget.c:1442:21: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/cdns3/gadget.c:1574:35: sparse: sparse: dubious: x | !y
   drivers/usb/cdns3/gadget.c:2552:34: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] buffer @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:2552:34: sparse:     expected restricted __le32 [usertype] buffer
   drivers/usb/cdns3/gadget.c:2552:34: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:2554:46: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/cdns3/gadget.c:2554:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:2554:35: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:2554:35: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:2610:43: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/cdns3/gadget.c:2610:38: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:2610:38: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:2610:38: sparse:     got unsigned long
   drivers/usb/cdns3/gadget.c:2625:43: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/cdns3/gadget.c:2625:38: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned long @@
   drivers/usb/cdns3/gadget.c:2625:38: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/gadget.c:2625:38: sparse:     got unsigned long
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/cdns3/ep0.c:40:37: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] buffer @@     got unsigned long @@
   drivers/usb/cdns3/ep0.c:40:37: sparse:     expected restricted __le32 [usertype] buffer
   drivers/usb/cdns3/ep0.c:40:37: sparse:     got unsigned long
   drivers/usb/cdns3/ep0.c:41:37: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] length @@     got unsigned long @@
   drivers/usb/cdns3/ep0.c:41:37: sparse:     expected restricted __le32 [usertype] length
   drivers/usb/cdns3/ep0.c:41:37: sparse:     got unsigned long
   drivers/usb/cdns3/ep0.c:44:46: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned long @@
   drivers/usb/cdns3/ep0.c:44:46: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/ep0.c:44:46: sparse:     got unsigned long
   drivers/usb/cdns3/ep0.c:45:45: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] buffer @@     got unsigned long @@
   drivers/usb/cdns3/ep0.c:45:45: sparse:     expected restricted __le32 [usertype] buffer
   drivers/usb/cdns3/ep0.c:45:45: sparse:     got unsigned long
   drivers/usb/cdns3/ep0.c:46:45: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] length @@     got unsigned long @@
   drivers/usb/cdns3/ep0.c:46:45: sparse:     expected restricted __le32 [usertype] length
   drivers/usb/cdns3/ep0.c:46:45: sparse:     got unsigned long
   drivers/usb/cdns3/ep0.c:47:46: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned long @@
   drivers/usb/cdns3/ep0.c:47:46: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/ep0.c:47:46: sparse:     got unsigned long
   drivers/usb/cdns3/ep0.c:50:46: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] control @@     got unsigned long @@
   drivers/usb/cdns3/ep0.c:50:46: sparse:     expected restricted __le32 [usertype] control
   drivers/usb/cdns3/ep0.c:50:46: sparse:     got unsigned long
   drivers/usb/cdns3/ep0.c:267:52: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected unsigned char [usertype] ep_addr @@     got restricted __le16 [usertype] wIndex @@
   drivers/usb/cdns3/ep0.c:267:52: sparse:     expected unsigned char [usertype] ep_addr
   drivers/usb/cdns3/ep0.c:267:52: sparse:     got restricted __le16 [usertype] wIndex
   drivers/usb/cdns3/ep0.c:271:47: sparse: sparse: incorrect type in argument 2 (different base types) @@     expected unsigned int [usertype] ep @@     got restricted __le16 [usertype] wIndex @@
   drivers/usb/cdns3/ep0.c:271:47: sparse:     expected unsigned int [usertype] ep
   drivers/usb/cdns3/ep0.c:271:47: sparse:     got restricted __le16 [usertype] wIndex
   drivers/usb/cdns3/ep0.c:387:19: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/cdns3/ep0.c:390:44: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected unsigned char [usertype] ep_addr @@     got restricted __le16 [usertype] wIndex @@
   drivers/usb/cdns3/ep0.c:390:44: sparse:     expected unsigned char [usertype] ep_addr
   drivers/usb/cdns3/ep0.c:390:44: sparse:     got restricted __le16 [usertype] wIndex
   drivers/usb/cdns3/ep0.c:393:39: sparse: sparse: incorrect type in argument 2 (different base types) @@     expected unsigned int [usertype] ep @@     got restricted __le16 [usertype] wIndex @@
   drivers/usb/cdns3/ep0.c:393:39: sparse:     expected unsigned int [usertype] ep
   drivers/usb/cdns3/ep0.c:393:39: sparse:     got restricted __le16 [usertype] wIndex
   drivers/usb/cdns3/ep0.c:454:21: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/cdns3/ep0.c:478:31: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] isoch_delay @@     got restricted __le16 [usertype] wValue @@
   drivers/usb/cdns3/ep0.c:478:31: sparse:     expected unsigned short [usertype] isoch_delay
   drivers/usb/cdns3/ep0.c:478:31: sparse:     got restricted __le16 [usertype] wValue
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/host/oxu210hp-hcd.c:890:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le16 [usertype] wHubCharacteristics @@     got unsigned short [usertype] @@
   drivers/usb/host/oxu210hp-hcd.c:890:35: sparse:     expected restricted __le16 [usertype] wHubCharacteristics
   drivers/usb/host/oxu210hp-hcd.c:890:35: sparse:     got unsigned short [usertype]
   drivers/usb/host/oxu210hp-hcd.c:942:32: sparse: sparse: cast removes address space '<asn:2>' of expression
   drivers/usb/host/oxu210hp-hcd.c:966:33: sparse: sparse: cast removes address space '<asn:2>' of expression
   drivers/usb/host/oxu210hp-hcd.c:1013:24: sparse: sparse: cast removes address space '<asn:2>' of expression
   drivers/usb/host/oxu210hp-hcd.c:1037:20: sparse: sparse: subtraction of different types can't work (different address spaces)
   drivers/usb/host/oxu210hp-hcd.c:1070:23: sparse: sparse: cast removes address space '<asn:2>' of expression
   drivers/usb/host/oxu210hp-hcd.c:1171:41: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [noderef] <asn:2> @@     got restricted __le32 [usertype] @@
   drivers/usb/host/oxu210hp-hcd.c:1171:41: sparse:     expected unsigned int [noderef] <asn:2>
   drivers/usb/host/oxu210hp-hcd.c:1171:41: sparse:     got restricted __le32 [usertype]
   drivers/usb/host/oxu210hp-hcd.c:1188:26: sparse: sparse: cast removes address space '<asn:2>' of expression
   drivers/usb/host/oxu210hp-hcd.c:2027:44: sparse: sparse: restricted __le32 degrades to integer
   drivers/usb/host/oxu210hp-hcd.c:2027:41: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] hw_token @@     got unsigned int @@
   drivers/usb/host/oxu210hp-hcd.c:2027:41: sparse:     expected restricted __le32 [usertype] hw_token
   drivers/usb/host/oxu210hp-hcd.c:2027:41: sparse:     got unsigned int
   drivers/usb/host/oxu210hp-hcd.c:995:21: sparse: sparse: subtraction of different types can't work (different address spaces)
   drivers/usb/host/oxu210hp-hcd.c:995:21: sparse: sparse: subtraction of different types can't work (different address spaces)
   drivers/usb/host/oxu210hp-hcd.c:995:21: sparse: sparse: subtraction of different types can't work (different address spaces)
   drivers/usb/host/oxu210hp-hcd.c:995:21: sparse: sparse: subtraction of different types can't work (different address spaces)
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/host/sl811-hcd.c:1788:24: sparse: sparse: symbol 'sl811h_driver' was not declared. Should it be static?
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/hid/hid-roccat-kone.c:103:28: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] checksum @@     got restricted __le16 [usertype] @@
   drivers/hid/hid-roccat-kone.c:103:28: sparse:     expected unsigned short [usertype] checksum
   drivers/hid/hid-roccat-kone.c:103:28: sparse:     got restricted __le16 [usertype]
   drivers/hid/hid-roccat-kone.c:262:19: sparse: sparse: cast to restricted __le16
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/gadget/udc/dummy_hcd.c:460:25: sparse: sparse: context imbalance in 'set_link_state' - unexpected unlock
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/gadget/udc/pxa27x_udc.c:2093:20: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le16 [assigned] [usertype] wValue @@     got int config @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2093:20: sparse:     expected restricted __le16 [assigned] [usertype] wValue
   drivers/usb/gadget/udc/pxa27x_udc.c:2093:20: sparse:     got int config
   drivers/usb/gadget/udc/pxa27x_udc.c:2122:20: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le16 [assigned] [usertype] wValue @@     got int alt @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2122:20: sparse:     expected restricted __le16 [assigned] [usertype] wValue
   drivers/usb/gadget/udc/pxa27x_udc.c:2122:20: sparse:     got int alt
   drivers/usb/gadget/udc/pxa27x_udc.c:2123:20: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le16 [assigned] [usertype] wIndex @@     got int iface @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2123:20: sparse:     expected restricted __le16 [assigned] [usertype] wIndex
   drivers/usb/gadget/udc/pxa27x_udc.c:2123:20: sparse:     got int iface
   drivers/usb/gadget/udc/pxa27x_udc.c:2306:17: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __le16 [usertype] wMaxPacketSize @@     got unsigned int @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2306:17: sparse:     expected restricted __le16 [usertype] wMaxPacketSize
   drivers/usb/gadget/udc/pxa27x_udc.c:2306:17: sparse:     got unsigned int
   drivers/usb/gadget/udc/pxa27x_udc.c:2307:17: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __le16 [usertype] wMaxPacketSize @@     got unsigned int @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2307:17: sparse:     expected restricted __le16 [usertype] wMaxPacketSize
   drivers/usb/gadget/udc/pxa27x_udc.c:2307:17: sparse:     got unsigned int
   drivers/usb/gadget/udc/pxa27x_udc.c:2308:17: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __le16 [usertype] wMaxPacketSize @@     got unsigned int @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2308:17: sparse:     expected restricted __le16 [usertype] wMaxPacketSize
   drivers/usb/gadget/udc/pxa27x_udc.c:2308:17: sparse:     got unsigned int
   drivers/usb/gadget/udc/pxa27x_udc.c:2309:17: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __le16 [usertype] wMaxPacketSize @@     got unsigned int @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2309:17: sparse:     expected restricted __le16 [usertype] wMaxPacketSize
   drivers/usb/gadget/udc/pxa27x_udc.c:2309:17: sparse:     got unsigned int
   drivers/usb/gadget/udc/pxa27x_udc.c:2310:17: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __le16 [usertype] wMaxPacketSize @@     got unsigned int @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2310:17: sparse:     expected restricted __le16 [usertype] wMaxPacketSize
   drivers/usb/gadget/udc/pxa27x_udc.c:2310:17: sparse:     got unsigned int
   drivers/usb/gadget/udc/pxa27x_udc.c:2311:17: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __le16 [usertype] wMaxPacketSize @@     got unsigned int @@
   drivers/usb/gadget/udc/pxa27x_udc.c:2311:17: sparse:     expected restricted __le16 [usertype] wMaxPacketSize
   drivers/usb/gadget/udc/pxa27x_udc.c:2311:17: sparse:     got unsigned int
   drivers/usb/gadget/udc/pxa27x_udc.c:680:39: sparse: sparse: context imbalance in 'req_done' - unexpected unlock
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/gadget/udc/mv_udc_core.c:67:33: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __le16 [usertype] wMaxPacketSize @@     got int @@
   drivers/usb/gadget/udc/mv_udc_core.c:67:33: sparse:     expected restricted __le16 [usertype] wMaxPacketSize
   drivers/usb/gadget/udc/mv_udc_core.c:67:33: sparse:     got int
   drivers/usb/gadget/udc/mv_udc_core.c:367:24: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] buff_ptr0 @@     got restricted __le32 [usertype] @@
   drivers/usb/gadget/udc/mv_udc_core.c:367:24: sparse:     expected unsigned int [usertype] buff_ptr0
   drivers/usb/gadget/udc/mv_udc_core.c:367:24: sparse:     got restricted __le32 [usertype]
   drivers/usb/gadget/udc/mv_udc_core.c:369:24: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] buff_ptr1 @@     got restricted __le32 [usertype] @@
   drivers/usb/gadget/udc/mv_udc_core.c:369:24: sparse:     expected unsigned int [usertype] buff_ptr1
   drivers/usb/gadget/udc/mv_udc_core.c:369:24: sparse:     got restricted __le32 [usertype]
   drivers/usb/gadget/udc/mv_udc_core.c:370:24: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] buff_ptr2 @@     got restricted __le32 [usertype] @@
   drivers/usb/gadget/udc/mv_udc_core.c:370:24: sparse:     expected unsigned int [usertype] buff_ptr2
   drivers/usb/gadget/udc/mv_udc_core.c:370:24: sparse:     got restricted __le32 [usertype]
   drivers/usb/gadget/udc/mv_udc_core.c:371:24: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] buff_ptr3 @@     got restricted __le32 [usertype] @@
   drivers/usb/gadget/udc/mv_udc_core.c:371:24: sparse:     expected unsigned int [usertype] buff_ptr3
   drivers/usb/gadget/udc/mv_udc_core.c:371:24: sparse:     got restricted __le32 [usertype]
   drivers/usb/gadget/udc/mv_udc_core.c:372:24: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] buff_ptr4 @@     got restricted __le32 [usertype] @@
   drivers/usb/gadget/udc/mv_udc_core.c:372:24: sparse:     expected unsigned int [usertype] buff_ptr4
   drivers/usb/gadget/udc/mv_udc_core.c:372:24: sparse:     got restricted __le32 [usertype]
   drivers/usb/gadget/udc/mv_udc_core.c:833:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:2> *addr @@     got unsigned int * @@
   drivers/usb/gadget/udc/mv_udc_core.c:833:17: sparse:     expected void const volatile [noderef] <asn:2> *addr
   drivers/usb/gadget/udc/mv_udc_core.c:833:17: sparse:     got unsigned int *
   drivers/usb/gadget/udc/mv_udc_core.c:833:17: sparse: sparse: incorrect type in argument 2 (different address spaces) @@     expected void volatile [noderef] <asn:2> *addr @@     got unsigned int * @@
   drivers/usb/gadget/udc/mv_udc_core.c:833:17: sparse:     expected void volatile [noderef] <asn:2> *addr
   drivers/usb/gadget/udc/mv_udc_core.c:833:17: sparse:     got unsigned int *
   drivers/usb/gadget/udc/mv_udc_core.c:1456:41: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] @@     got restricted __le16 [usertype] @@
   drivers/usb/gadget/udc/mv_udc_core.c:1456:41: sparse:     expected unsigned short [usertype]
   drivers/usb/gadget/udc/mv_udc_core.c:1456:41: sparse:     got restricted __le16 [usertype]
   drivers/usb/gadget/udc/mv_udc_core.c:1516:26: sparse: sparse: cast from restricted __le16
   drivers/usb/gadget/udc/mv_udc_core.c:1546:31: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1547:35: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1568:30: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1579:39: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1580:43: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1616:34: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1625:52: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1611:30: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1611:30: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1634:39: sparse: sparse: restricted __le16 degrades to integer
   drivers/usb/gadget/udc/mv_udc_core.c:1635:43: sparse: sparse: restricted __le16 degrades to integer
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/usbip/usbip_common.c:418:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] command @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:418:33: sparse:     expected unsigned int [usertype] command
   drivers/usb/usbip/usbip_common.c:418:33: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:419:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] seqnum @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:419:33: sparse:     expected unsigned int [usertype] seqnum
   drivers/usb/usbip/usbip_common.c:419:33: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:420:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] devid @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:420:33: sparse:     expected unsigned int [usertype] devid
   drivers/usb/usbip/usbip_common.c:420:33: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:421:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] direction @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:421:33: sparse:     expected unsigned int [usertype] direction
   drivers/usb/usbip/usbip_common.c:421:33: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:422:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] ep @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:422:33: sparse:     expected unsigned int [usertype] ep
   drivers/usb/usbip/usbip_common.c:422:33: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:424:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:424:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:424:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:424:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:424:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:424:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:425:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:425:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:425:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:425:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:425:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:425:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:426:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:426:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:426:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:426:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:426:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:426:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:427:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:427:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:427:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:427:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:427:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:427:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:428:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:428:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:428:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:428:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:428:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:428:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:436:37: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] transfer_flags @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:436:37: sparse:     expected unsigned int [usertype] transfer_flags
   drivers/usb/usbip/usbip_common.c:436:37: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:443:39: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:443:39: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:443:39: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:443:39: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:443:39: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:443:39: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:474:29: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] seqnum @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:474:29: sparse:     expected unsigned int [usertype] seqnum
   drivers/usb/usbip/usbip_common.c:474:29: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:476:31: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:476:31: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:476:31: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:476:31: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:476:31: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:476:31: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:526:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] offset @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:526:33: sparse:     expected unsigned int [usertype] offset
   drivers/usb/usbip/usbip_common.c:526:33: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:527:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] length @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:527:33: sparse:     expected unsigned int [usertype] length
   drivers/usb/usbip/usbip_common.c:527:33: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:528:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] status @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:528:33: sparse:     expected unsigned int [usertype] status
   drivers/usb/usbip/usbip_common.c:528:33: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:529:36: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] actual_length @@     got restricted __be32 [usertype] @@
   drivers/usb/usbip/usbip_common.c:529:36: sparse:     expected unsigned int [usertype] actual_length
   drivers/usb/usbip/usbip_common.c:529:36: sparse:     got restricted __be32 [usertype]
   drivers/usb/usbip/usbip_common.c:531:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:531:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:531:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:531:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:531:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:531:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:532:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:532:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:532:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:532:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:532:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:532:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:533:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:533:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:533:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:533:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:533:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:533:35: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:534:38: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:534:38: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:534:38: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:534:38: sparse: sparse: cast to restricted __be32
   drivers/usb/usbip/usbip_common.c:534:38: sparse: sparse: cast to restricted __be32
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/usb/usbip/vhci_hcd.c:295:36: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le16 [usertype] DeviceRemovable @@     got int @@
   drivers/usb/usbip/vhci_hcd.c:295:36: sparse:     expected restricted __le16 [usertype] DeviceRemovable
   drivers/usb/usbip/vhci_hcd.c:295:36: sparse:     got int
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   kernel/irq/irqdesc.c:875:17: sparse: sparse: context imbalance in '__irq_get_desc_lock' - wrong count at exit
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/gpio/gpio-viperboard.c:261:20: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] val @@     got restricted __be16 [usertype] @@
   drivers/gpio/gpio-viperboard.c:261:20: sparse:     expected unsigned short [usertype] val
   drivers/gpio/gpio-viperboard.c:261:20: sparse:     got restricted __be16 [usertype]
   drivers/gpio/gpio-viperboard.c:262:21: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] mask @@     got restricted __be16 [usertype] @@
   drivers/gpio/gpio-viperboard.c:262:21: sparse:     expected unsigned short [usertype] mask
   drivers/gpio/gpio-viperboard.c:262:21: sparse:     got restricted __be16 [usertype]
   drivers/gpio/gpio-viperboard.c:302:27: sparse: sparse: cast to restricted __be16
   drivers/gpio/gpio-viperboard.c:302:27: sparse: sparse: cast to restricted __be16
   drivers/gpio/gpio-viperboard.c:302:27: sparse: sparse: cast to restricted __be16
   drivers/gpio/gpio-viperboard.c:302:27: sparse: sparse: cast to restricted __be16
   drivers/gpio/gpio-viperboard.c:324:28: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] val @@     got restricted __be16 [usertype] @@
   drivers/gpio/gpio-viperboard.c:324:28: sparse:     expected unsigned short [usertype] val
   drivers/gpio/gpio-viperboard.c:324:28: sparse:     got restricted __be16 [usertype]
   drivers/gpio/gpio-viperboard.c:325:29: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned short [usertype] mask @@     got restricted __be16 [usertype] @@
   drivers/gpio/gpio-viperboard.c:325:29: sparse:     expected unsigned short [usertype] mask
   drivers/gpio/gpio-viperboard.c:325:29: sparse:     got restricted __be16 [usertype]
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/pci/pci.c:899:13: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:899:21: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:899:31: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:899:39: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:908:35: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:908:54: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:909:19: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:909:37: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:939:23: sparse: sparse: invalid assignment: |=
   drivers/pci/pci.c:939:23: sparse:    left side has type unsigned short
   drivers/pci/pci.c:939:23: sparse:    right side has type restricted pci_power_t
   drivers/pci/pci.c:944:57: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:966:28: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted pci_power_t [usertype] current_state @@     got int @@
   drivers/pci/pci.c:966:28: sparse:     expected restricted pci_power_t [usertype] current_state
   drivers/pci/pci.c:966:28: sparse:     got int
   drivers/pci/pci.c:1015:36: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted pci_power_t [usertype] current_state @@     got int @@
   drivers/pci/pci.c:1015:36: sparse:     expected restricted pci_power_t [usertype] current_state
   drivers/pci/pci.c:1015:36: sparse:     got int
   drivers/pci/pci.c:1193:13: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:1193:21: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:1195:18: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:1195:26: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:1218:13: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:1218:22: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:1225:46: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:1225:54: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:1768:36: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted pci_power_t [usertype] current_state @@     got int @@
   drivers/pci/pci.c:1768:36: sparse:     expected restricted pci_power_t [usertype] current_state
   drivers/pci/pci.c:1768:36: sparse:     got int
   drivers/pci/pci.c:2156:44: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:2457:61: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:2458:45: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:2624:20: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:2624:38: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:2647:49: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:2647:67: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci.c:4647:13: sparse: sparse: invalid assignment: |=
   drivers/pci/pci.c:4647:13: sparse:    left side has type unsigned short
   drivers/pci/pci.c:4647:13: sparse:    right side has type restricted pci_power_t
   drivers/pci/pci.c:4652:13: sparse: sparse: invalid assignment: |=
   drivers/pci/pci.c:4652:13: sparse:    left side has type unsigned short
   drivers/pci/pci.c:4652:13: sparse:    right side has type restricted pci_power_t
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/pci/pci-driver.c:494:42: sparse: sparse: restricted pci_power_t degrades to integer
   drivers/pci/pci-driver.c:494:61: sparse: sparse: restricted pci_power_t degrades to integer
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/pci/quirks.c:2287:57: sparse: sparse: restricted pci_power_t degrades to integer
   include/asm-generic/io.h:479:15: sparse: sparse: cast to restricted __le16
   include/asm-generic/io.h:513:22: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected unsigned short [usertype] s @@     got restricted __le16 [usertype] @@
   include/asm-generic/io.h:513:22: sparse:     expected unsigned short [usertype] s
   include/asm-generic/io.h:513:22: sparse:     got restricted __le16 [usertype]
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/video/fbdev/udlfb.c:1008:19: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const *addr @@     got char [noderef] <asn:2> *screen_base @@
   drivers/video/fbdev/udlfb.c:1008:19: sparse:     expected void const *addr
   drivers/video/fbdev/udlfb.c:1008:19: sparse:     got char [noderef] <asn:2> *screen_base
   drivers/video/fbdev/udlfb.c:1121:36: sparse: sparse: cast removes address space '<asn:2>' of expression
--
   include/linux/pm_runtime.h:183:20: sparse: sparse: multiple definitions for function 'pm_runtime_get_noresume'
>> include/linux/pm_runtime.h:157:20: sparse:  the previous one is here
   include/linux/pm_runtime.h:184:20: sparse: sparse: multiple definitions for function 'pm_runtime_put_noidle'
   include/linux/pm_runtime.h:158:20: sparse:  the previous one is here
   drivers/clk/clk.c:159:22: sparse: sparse: context imbalance in 'clk_enable_lock' - different lock contexts for basic block

# https://github.com/0day-ci/linux/commit/89b94bda61375feace001bf5567bae6293277bd9
git remote add linux-review https://github.com/0day-ci/linux
git remote update linux-review
git checkout 89b94bda61375feace001bf5567bae6293277bd9
vim +157 include/linux/pm_runtime.h

5e928f77a09a07 Rafael J. Wysocki   2009-08-18  155  
372a12ed9d99c0 Ulf Hansson         2016-04-08  156  static inline void pm_suspend_ignore_children(struct device *dev, bool enable) {}
5e928f77a09a07 Rafael J. Wysocki   2009-08-18 @157  static inline void pm_runtime_get_noresume(struct device *dev) {}
5e928f77a09a07 Rafael J. Wysocki   2009-08-18  158  static inline void pm_runtime_put_noidle(struct device *dev) {}
d690b2cd222afc Rafael J. Wysocki   2010-03-06  159  static inline bool pm_runtime_suspended(struct device *dev) { return false; }
fbadc58dd3a52c ShuoX Liu           2013-01-23  160  static inline bool pm_runtime_active(struct device *dev) { return true; }
f3393b62f157cc Kevin Hilman        2011-07-12  161  static inline bool pm_runtime_status_suspended(struct device *dev) { return false; }
4b31db8a16fa0d Rafael J. Wysocki   2010-12-24  162  static inline bool pm_runtime_enabled(struct device *dev) { return false; }
5e928f77a09a07 Rafael J. Wysocki   2009-08-18  163  
7490e44239e602 Alan Stern          2010-09-25  164  static inline void pm_runtime_no_callbacks(struct device *dev) {}
c7b61de5b7b17f Alan Stern          2010-12-01  165  static inline void pm_runtime_irq_safe(struct device *dev) {}
3fb1581ea1ab0a Krzysztof Kozlowski 2014-11-14  166  static inline bool pm_runtime_is_irq_safe(struct device *dev) { return false; }
2f60ba706bd9af Rafael J. Wysocki   2010-05-10  167  
cb8f51bdadb796 Rafael J. Wysocki   2011-02-08  168  static inline bool pm_runtime_callbacks_present(struct device *dev) { return false; }
15bcb91d7e607d Alan Stern          2010-09-25  169  static inline void pm_runtime_mark_last_busy(struct device *dev) {}
15bcb91d7e607d Alan Stern          2010-09-25  170  static inline void __pm_runtime_use_autosuspend(struct device *dev,
15bcb91d7e607d Alan Stern          2010-09-25  171  						bool use) {}
15bcb91d7e607d Alan Stern          2010-09-25  172  static inline void pm_runtime_set_autosuspend_delay(struct device *dev,
15bcb91d7e607d Alan Stern          2010-09-25  173  						int delay) {}
8234f6734c5d74 Vincent Guittot     2018-12-14  174  static inline u64 pm_runtime_autosuspend_expiration(
15bcb91d7e607d Alan Stern          2010-09-25  175  				struct device *dev) { return 0; }
e823407f7b11fa Ming Lei            2013-02-22  176  static inline void pm_runtime_set_memalloc_noio(struct device *dev,
e823407f7b11fa Ming Lei            2013-02-22  177  						bool enable){}
21d5c57b372616 Rafael J. Wysocki   2016-10-30  178  static inline void pm_runtime_clean_up_links(struct device *dev) {}
b06c0b2f087ab4 Rafael J. Wysocki   2018-06-12  179  static inline void pm_runtime_get_suppliers(struct device *dev) {}
b06c0b2f087ab4 Rafael J. Wysocki   2018-06-12  180  static inline void pm_runtime_put_suppliers(struct device *dev) {}
baa8809f60971d Rafael J. Wysocki   2016-10-30  181  static inline void pm_runtime_new_link(struct device *dev) {}
baa8809f60971d Rafael J. Wysocki   2016-10-30  182  static inline void pm_runtime_drop_link(struct device *dev) {}
89b94bda61375f Chen Yu             2020-06-06 @183  static inline void pm_runtime_get_noresume(struct device *dev) {}
89b94bda61375f Chen Yu             2020-06-06  184  static inline void pm_runtime_put_noidle(struct device *dev) {}
15bcb91d7e607d Alan Stern          2010-09-25  185  

:::::: The code at line 157 was first introduced by commit
:::::: 5e928f77a09a07f9dd595bb8a489965d69a83458 PM: Introduce core framework for run-time PM of I/O devices (rev. 17)

:::::: TO: Rafael J. Wysocki <rjw@sisk.pl>
:::::: CC: Rafael J. Wysocki <rjw@sisk.pl>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 26266 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2020-06-08 15:11 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-05 19:05 [PATCH 0/2][RFC] Add more trace point for runtime usage count Chen Yu
2020-06-05 19:05 ` [PATCH 1/2][RFC] PM-runtime: Move all runtime usage related function to runtime.c Chen Yu
2020-06-06  0:17   ` kernel test robot
2020-06-06 12:00   ` kernel test robot
2020-06-06 17:18   ` Chen Yu
2020-06-08 15:11   ` kernel test robot
2020-06-08 15:11     ` Chen, Yu C
2020-06-05 19:05 ` [PATCH 2/2][RFC] PM-runtime: add tracepoints to cover all usage_count changes Chen Yu
2020-06-05 19:33   ` Michal Miroslaw
2020-06-06  7:14     ` Chen Yu
2020-06-07  4:55       ` Michal Miroslaw
2020-06-08  6:53         ` Chen Yu
2020-06-05 23:35 [PATCH 1/2][RFC] PM-runtime: Move all runtime usage related function to runtime.c kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.