diff options
author | Ken Cox <jkc@redhat.com> | 2014-03-13 15:39:20 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-03-17 14:45:44 -0700 |
commit | 8504ff6cab9cc43591999e542e437445db5cfd92 (patch) | |
tree | f47bd280b239190b7a1146ff20a4d08c9be2dbb7 /drivers/staging/unisys | |
parent | a8d7f21d14e2b24dc18d53d597df290b89bb115c (diff) |
Staging: unisys: uislib: Cleanup sparse warnings in uislib
Clean up code to get rid of sparse warnings, mostly related to accessing I/O
space.
Remove uislibcmpxchg64() and use cmpxchg() instead.
Signed-off-by: Ken Cox <jkc@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/unisys')
-rw-r--r-- | drivers/staging/unisys/include/uisqueue.h | 56 | ||||
-rw-r--r-- | drivers/staging/unisys/include/uisutils.h | 8 | ||||
-rw-r--r-- | drivers/staging/unisys/uislib/uisqueue.c | 12 |
3 files changed, 22 insertions, 54 deletions
diff --git a/drivers/staging/unisys/include/uisqueue.h b/drivers/staging/unisys/include/uisqueue.h index a9d95d30091..6dab3900994 100644 --- a/drivers/staging/unisys/include/uisqueue.h +++ b/drivers/staging/unisys/include/uisqueue.h @@ -34,7 +34,7 @@ struct uisqueue_info { - pCHANNEL_HEADER chan; + CHANNEL_HEADER __iomem *chan; /* channel containing queues in which scsi commands & * responses are queued */ @@ -75,9 +75,9 @@ struct uisqueue_info { ".previous\n" \ "661:\n\tlock; " -unsigned long long uisqueue_InterlockedOr(volatile unsigned long long *Target, +unsigned long long uisqueue_InterlockedOr(unsigned long long __iomem *Target, unsigned long long Set); -unsigned long long uisqueue_InterlockedAnd(volatile unsigned long long *Target, +unsigned long long uisqueue_InterlockedAnd(unsigned long long __iomem *Target, unsigned long long Set); unsigned int uisqueue_send_int_if_needed(struct uisqueue_info *pqueueinfo, @@ -133,7 +133,7 @@ struct extport_info { }; struct device_info { - void *chanptr; + void __iomem *chanptr; U64 channelAddr; U64 channelBytes; GUID channelTypeGuid; @@ -164,7 +164,7 @@ struct bus_info { struct device_info **device; U64 guestHandle, recvBusInterruptHandle; GUID busInstGuid; - ULTRA_VBUS_CHANNEL_PROTOCOL *pBusChannel; + ULTRA_VBUS_CHANNEL_PROTOCOL __iomem *pBusChannel; int busChannelBytes; struct proc_dir_entry *proc_dir; /* proc/uislib/vbus/<x> */ struct proc_dir_entry *proc_info; /* proc/uislib/vbus/<x>/info */ @@ -352,8 +352,8 @@ typedef enum { } GUESTPART_MSG_TYPE; struct add_vbus_guestpart { - void *chanptr; /* pointer to data channel for bus - - * NOT YET USED */ + void __iomem *chanptr; /* pointer to data channel for bus - + * NOT YET USED */ U32 busNo; /* bus number to be created/deleted */ U32 deviceCount; /* max num of devices on bus */ GUID busTypeGuid; /* indicates type of bus */ @@ -368,7 +368,7 @@ struct del_vbus_guestpart { }; struct add_virt_guestpart { - void *chanptr; /* pointer to data channel */ + void __iomem *chanptr; /* pointer to data channel */ U32 busNo; /* bus number for the operation */ U32 deviceNo; /* number of device on the bus */ GUID devInstGuid; /* instance guid for device */ @@ -382,15 +382,15 @@ struct add_virt_guestpart { }; struct pause_virt_guestpart { - void *chanptr; /* pointer to data channel */ + void __iomem *chanptr; /* pointer to data channel */ }; struct resume_virt_guestpart { - void *chanptr; /* pointer to data channel */ + void __iomem *chanptr; /* pointer to data channel */ }; struct del_virt_guestpart { - void *chanptr; /* pointer to data channel */ + void __iomem *chanptr; /* pointer to data channel */ }; struct init_chipset_guestpart { @@ -435,38 +435,6 @@ struct guest_msgs { * guests. */ -static inline unsigned long -uislibcmpxchg64(volatile void *ptr, unsigned long old, unsigned long new, - int size) -{ - unsigned long prev; - switch (size) { - case 1: - __asm__ __volatile__(UISLIB_LOCK_PREFIX "cmpxchgb %b1,%2":"=a"(prev) - : "q"(new), "m"(*__xg(ptr)), - "0"(old) - : "memory"); - return prev; - case 2: - __asm__ __volatile__(UISLIB_LOCK_PREFIX "cmpxchgw %w1,%2":"=a"(prev) - : "r"(new), "m"(*__xg(ptr)), - "0"(old) - : "memory"); - return prev; - case 4: - __asm__ __volatile__(UISLIB_LOCK_PREFIX "cmpxchgl %k1,%2":"=a"(prev) - : "r"(new), "m"(*__xg(ptr)), - "0"(old) - : "memory"); - return prev; - case 8: - __asm__ __volatile__(UISLIB_LOCK_PREFIX "cmpxchgq %1,%2":"=a"(prev) - : "r"(new), "m"(*__xg(ptr)), - "0"(old) - : "memory"); - return prev; - } - return old; -} +#define uislibcmpxchg64(p, o, n, s) cmpxchg(p, o, n) #endif /* __UISQUEUE_H__ */ diff --git a/drivers/staging/unisys/include/uisutils.h b/drivers/staging/unisys/include/uisutils.h index 44e2be0b70a..81b5d9baea5 100644 --- a/drivers/staging/unisys/include/uisutils.h +++ b/drivers/staging/unisys/include/uisutils.h @@ -79,10 +79,10 @@ int ReqHandlerDel(GUID switchTypeGuid); #define uislib_ioremap_cache(addr, size) \ dbg_ioremap_cache(addr, size, __FILE__, __LINE__) -static inline void * +static inline void __iomem * dbg_ioremap_cache(U64 addr, unsigned long size, char *file, int line) { - void *new; + void __iomem *new; new = ioremap_cache(addr, size); return new; } @@ -100,7 +100,7 @@ dbg_ioremap(U64 addr, unsigned long size, char *file, int line) #define uislib_iounmap(addr) dbg_iounmap(addr, __FILE__, __LINE__) static inline void -dbg_iounmap(void *addr, char *file, int line) +dbg_iounmap(void __iomem *addr, char *file, int line) { iounmap(addr); } @@ -202,7 +202,7 @@ struct chaninfo { */ #define WAIT_FOR_VALID_GUID(guid) \ do { \ - while (memcmp(&guid, &Guid0, sizeof(Guid0)) == 0) { \ + while (MEMCMP_IO(&guid, &Guid0, sizeof(Guid0)) == 0) { \ LOGERR("Waiting for non-0 GUID (why???)...\n"); \ UIS_THREAD_WAIT_SEC(5); \ } \ diff --git a/drivers/staging/unisys/uislib/uisqueue.c b/drivers/staging/unisys/uislib/uisqueue.c index 19ce76ac21e..a7a8b2ed55c 100644 --- a/drivers/staging/unisys/uislib/uisqueue.c +++ b/drivers/staging/unisys/uislib/uisqueue.c @@ -39,16 +39,16 @@ /* Exported functions */ /*****************************************************/ unsigned long long -uisqueue_InterlockedOr(volatile unsigned long long *Target, +uisqueue_InterlockedOr(unsigned long long __iomem *Target, unsigned long long Set) { unsigned long long i; unsigned long long j; - j = *Target; + j = readq(Target); do { i = j; - j = uislibcmpxchg64((unsigned long long *) Target, + j = uislibcmpxchg64((__force unsigned long long *)Target, i, i | Set, sizeof(*(Target))); } while (i != j); @@ -58,16 +58,16 @@ uisqueue_InterlockedOr(volatile unsigned long long *Target, EXPORT_SYMBOL_GPL(uisqueue_InterlockedOr); unsigned long long -uisqueue_InterlockedAnd(volatile unsigned long long *Target, +uisqueue_InterlockedAnd(unsigned long long __iomem *Target, unsigned long long Set) { unsigned long long i; unsigned long long j; - j = *Target; + j = readq(Target); do { i = j; - j = uislibcmpxchg64((unsigned long long *) Target, + j = uislibcmpxchg64((__force unsigned long long *)Target, i, i & Set, sizeof(*(Target))); } while (i != j); |