diff options
| author | Dean Nelson <dcn@sgi.com> | 2008-07-30 01:34:14 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-07-30 12:41:50 -0400 |
| commit | ea57f80c8c0e59cfc5095f7e856ce7c8e6ac2984 (patch) | |
| tree | f88345573a36c1c5c53e71f61c2cb491a1e3eaaf /drivers | |
| parent | 8e85c23ef04fe0d8414e0b1dc04543095282a27a (diff) | |
sgi-xp: eliminate '>>>' in comments
Comments in /drivers/misc/sgi-xp has been using '>>>' as a means to draw
attention to something that needs to be done or considered. To avoid
colliding with git rejects, '>>>' will now be replaced by '!!!' to
indicate something to do, and by '???' to indicate something to be
considered.
Signed-off-by: Dean Nelson <dcn@sgi.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/misc/sgi-xp/xp.h | 11 | ||||
| -rw-r--r-- | drivers/misc/sgi-xp/xp_sn2.c | 10 | ||||
| -rw-r--r-- | drivers/misc/sgi-xp/xp_uv.c | 2 | ||||
| -rw-r--r-- | drivers/misc/sgi-xp/xpc.h | 14 | ||||
| -rw-r--r-- | drivers/misc/sgi-xp/xpc_channel.c | 2 | ||||
| -rw-r--r-- | drivers/misc/sgi-xp/xpc_partition.c | 2 | ||||
| -rw-r--r-- | drivers/misc/sgi-xp/xpc_sn2.c | 8 | ||||
| -rw-r--r-- | drivers/misc/sgi-xp/xpc_uv.c | 32 | ||||
| -rw-r--r-- | drivers/misc/sgi-xp/xpnet.c | 6 |
9 files changed, 43 insertions, 44 deletions
diff --git a/drivers/misc/sgi-xp/xp.h b/drivers/misc/sgi-xp/xp.h index 955b5b913235..0ca81f16646f 100644 --- a/drivers/misc/sgi-xp/xp.h +++ b/drivers/misc/sgi-xp/xp.h | |||
| @@ -21,7 +21,7 @@ | |||
| 21 | #include <asm/sn/arch.h> | 21 | #include <asm/sn/arch.h> |
| 22 | #endif | 22 | #endif |
| 23 | 23 | ||
| 24 | /* >>> Add this #define to some linux header file some day. */ | 24 | /* ??? Add this #define to some linux header file some day? */ |
| 25 | #define BYTES_PER_WORD sizeof(void *) | 25 | #define BYTES_PER_WORD sizeof(void *) |
| 26 | 26 | ||
| 27 | #ifdef USE_DBUG_ON | 27 | #ifdef USE_DBUG_ON |
| @@ -65,18 +65,13 @@ | |||
| 65 | * other partition that is currently up. Over these channels, kernel-level | 65 | * other partition that is currently up. Over these channels, kernel-level |
| 66 | * `users' can communicate with their counterparts on the other partitions. | 66 | * `users' can communicate with their counterparts on the other partitions. |
| 67 | * | 67 | * |
| 68 | >>> The following described limitation of a max of eight channels possible | ||
| 69 | >>> pertains only to ia64-sn2. THIS ISN'T TRUE SINCE I'M PLANNING TO JUST | ||
| 70 | >>> TIE INTO THE EXISTING MECHANISM ONCE THE CHANNEL MESSAGES ARE RECEIVED. | ||
| 71 | >>> THE 128-BYTE CACHELINE PERFORMANCE ISSUE IS TIED TO IA64-SN2. | ||
| 72 | * | ||
| 73 | * If the need for additional channels arises, one can simply increase | 68 | * If the need for additional channels arises, one can simply increase |
| 74 | * XPC_MAX_NCHANNELS accordingly. If the day should come where that number | 69 | * XPC_MAX_NCHANNELS accordingly. If the day should come where that number |
| 75 | * exceeds the absolute MAXIMUM number of channels possible (eight), then one | 70 | * exceeds the absolute MAXIMUM number of channels possible (eight), then one |
| 76 | * will need to make changes to the XPC code to accommodate for this. | 71 | * will need to make changes to the XPC code to accommodate for this. |
| 77 | * | 72 | * |
| 78 | * The absolute maximum number of channels possible is currently limited to | 73 | * The absolute maximum number of channels possible is limited to eight for |
| 79 | * eight for performance reasons. The internal cross partition structures | 74 | * performance reasons on sn2 hardware. The internal cross partition structures |
| 80 | * require sixteen bytes per channel, and eight allows all of this | 75 | * require sixteen bytes per channel, and eight allows all of this |
| 81 | * interface-shared info to fit in one 128-byte cacheline. | 76 | * interface-shared info to fit in one 128-byte cacheline. |
| 82 | */ | 77 | */ |
diff --git a/drivers/misc/sgi-xp/xp_sn2.c b/drivers/misc/sgi-xp/xp_sn2.c index 1fcfdebca2c5..baabc1cb3fee 100644 --- a/drivers/misc/sgi-xp/xp_sn2.c +++ b/drivers/misc/sgi-xp/xp_sn2.c | |||
| @@ -87,11 +87,11 @@ xp_remote_memcpy_sn2(void *vdst, const void *psrc, size_t len) | |||
| 87 | { | 87 | { |
| 88 | bte_result_t ret; | 88 | bte_result_t ret; |
| 89 | u64 pdst = ia64_tpa(vdst); | 89 | u64 pdst = ia64_tpa(vdst); |
| 90 | /* >>> What are the rules governing the src and dst addresses passed in? | 90 | /* ??? What are the rules governing the src and dst addresses passed in? |
| 91 | * >>> Currently we're assuming that dst is a virtual address and src | 91 | * ??? Currently we're assuming that dst is a virtual address and src |
| 92 | * >>> is a physical address, is this appropriate? Can we allow them to | 92 | * ??? is a physical address, is this appropriate? Can we allow them to |
| 93 | * >>> be whatever and we make the change here without damaging the | 93 | * ??? be whatever and we make the change here without damaging the |
| 94 | * >>> addresses? | 94 | * ??? addresses? |
| 95 | */ | 95 | */ |
| 96 | 96 | ||
| 97 | /* | 97 | /* |
diff --git a/drivers/misc/sgi-xp/xp_uv.c b/drivers/misc/sgi-xp/xp_uv.c index dca519fdef98..382b1b6bcc0b 100644 --- a/drivers/misc/sgi-xp/xp_uv.c +++ b/drivers/misc/sgi-xp/xp_uv.c | |||
| @@ -18,7 +18,7 @@ | |||
| 18 | static enum xp_retval | 18 | static enum xp_retval |
| 19 | xp_remote_memcpy_uv(void *vdst, const void *psrc, size_t len) | 19 | xp_remote_memcpy_uv(void *vdst, const void *psrc, size_t len) |
| 20 | { | 20 | { |
| 21 | /* >>> this function needs fleshing out */ | 21 | /* !!! this function needs fleshing out */ |
| 22 | return xpUnsupported; | 22 | return xpUnsupported; |
| 23 | } | 23 | } |
| 24 | 24 | ||
diff --git a/drivers/misc/sgi-xp/xpc.h b/drivers/misc/sgi-xp/xpc.h index 2111723553bf..0f516c3e3e61 100644 --- a/drivers/misc/sgi-xp/xpc.h +++ b/drivers/misc/sgi-xp/xpc.h | |||
| @@ -276,9 +276,12 @@ struct xpc_notify { | |||
| 276 | * There is an array of these structures for each remote partition. It is | 276 | * There is an array of these structures for each remote partition. It is |
| 277 | * allocated at the time a partition becomes active. The array contains one | 277 | * allocated at the time a partition becomes active. The array contains one |
| 278 | * of these structures for each potential channel connection to that partition. | 278 | * of these structures for each potential channel connection to that partition. |
| 279 | */ | ||
| 280 | |||
| 281 | /* | ||
| 282 | * The following is sn2 only. | ||
| 279 | * | 283 | * |
| 280 | >>> sn2 only!!! | 284 | * Each channel structure manages two message queues (circular buffers). |
| 281 | * Each of these structures manages two message queues (circular buffers). | ||
| 282 | * They are allocated at the time a channel connection is made. One of | 285 | * They are allocated at the time a channel connection is made. One of |
| 283 | * these message queues (local_msgqueue) holds the locally created messages | 286 | * these message queues (local_msgqueue) holds the locally created messages |
| 284 | * that are destined for the remote partition. The other of these message | 287 | * that are destined for the remote partition. The other of these message |
| @@ -345,6 +348,7 @@ struct xpc_notify { | |||
| 345 | * new messages, by the clearing of the message flags of the acknowledged | 348 | * new messages, by the clearing of the message flags of the acknowledged |
| 346 | * messages. | 349 | * messages. |
| 347 | */ | 350 | */ |
| 351 | |||
| 348 | struct xpc_channel_sn2 { | 352 | struct xpc_channel_sn2 { |
| 349 | 353 | ||
| 350 | /* various flavors of local and remote Get/Put values */ | 354 | /* various flavors of local and remote Get/Put values */ |
| @@ -359,7 +363,7 @@ struct xpc_channel_sn2 { | |||
| 359 | }; | 363 | }; |
| 360 | 364 | ||
| 361 | struct xpc_channel_uv { | 365 | struct xpc_channel_uv { |
| 362 | /* >>> code is coming */ | 366 | /* !!! code is coming */ |
| 363 | }; | 367 | }; |
| 364 | 368 | ||
| 365 | struct xpc_channel { | 369 | struct xpc_channel { |
| @@ -500,7 +504,7 @@ xpc_any_msg_chctl_flags_set(union xpc_channel_ctl_flags *chctl) | |||
| 500 | } | 504 | } |
| 501 | 505 | ||
| 502 | /* | 506 | /* |
| 503 | * Manages channels on a partition basis. There is one of these structures | 507 | * Manage channels on a partition basis. There is one of these structures |
| 504 | * for each partition (a partition will never utilize the structure that | 508 | * for each partition (a partition will never utilize the structure that |
| 505 | * represents itself). | 509 | * represents itself). |
| 506 | */ | 510 | */ |
| @@ -535,7 +539,7 @@ struct xpc_partition_sn2 { | |||
| 535 | }; | 539 | }; |
| 536 | 540 | ||
| 537 | struct xpc_partition_uv { | 541 | struct xpc_partition_uv { |
| 538 | /* >>> code is coming */ | 542 | /* !!! code is coming */ |
| 539 | }; | 543 | }; |
| 540 | 544 | ||
| 541 | struct xpc_partition { | 545 | struct xpc_partition { |
diff --git a/drivers/misc/sgi-xp/xpc_channel.c b/drivers/misc/sgi-xp/xpc_channel.c index 1c73423665bd..f1afc0a7c33f 100644 --- a/drivers/misc/sgi-xp/xpc_channel.c +++ b/drivers/misc/sgi-xp/xpc_channel.c | |||
| @@ -129,7 +129,7 @@ xpc_process_disconnect(struct xpc_channel *ch, unsigned long *irq_flags) | |||
| 129 | 129 | ||
| 130 | /* wake those waiting for notify completion */ | 130 | /* wake those waiting for notify completion */ |
| 131 | if (atomic_read(&ch->n_to_notify) > 0) { | 131 | if (atomic_read(&ch->n_to_notify) > 0) { |
| 132 | /* >>> we do callout while holding ch->lock */ | 132 | /* we do callout while holding ch->lock, callout can't block */ |
| 133 | xpc_notify_senders_of_disconnect(ch); | 133 | xpc_notify_senders_of_disconnect(ch); |
| 134 | } | 134 | } |
| 135 | 135 | ||
diff --git a/drivers/misc/sgi-xp/xpc_partition.c b/drivers/misc/sgi-xp/xpc_partition.c index 9f104450478f..73a92957b800 100644 --- a/drivers/misc/sgi-xp/xpc_partition.c +++ b/drivers/misc/sgi-xp/xpc_partition.c | |||
| @@ -91,7 +91,7 @@ xpc_get_rsvd_page_pa(int nasid) | |||
| 91 | if (status != SALRET_MORE_PASSES) | 91 | if (status != SALRET_MORE_PASSES) |
| 92 | break; | 92 | break; |
| 93 | 93 | ||
| 94 | /* >>> L1_CACHE_ALIGN() is only a sn2-bte_copy requirement */ | 94 | /* !!! L1_CACHE_ALIGN() is only a sn2-bte_copy requirement */ |
| 95 | if (L1_CACHE_ALIGN(len) > buf_len) { | 95 | if (L1_CACHE_ALIGN(len) > buf_len) { |
| 96 | kfree(buf_base); | 96 | kfree(buf_base); |
| 97 | buf_len = L1_CACHE_ALIGN(len); | 97 | buf_len = L1_CACHE_ALIGN(len); |
diff --git a/drivers/misc/sgi-xp/xpc_sn2.c b/drivers/misc/sgi-xp/xpc_sn2.c index 63fe59a5bfac..e42c3038203c 100644 --- a/drivers/misc/sgi-xp/xpc_sn2.c +++ b/drivers/misc/sgi-xp/xpc_sn2.c | |||
| @@ -75,7 +75,7 @@ xpc_allow_IPI_ops_sn2(void) | |||
| 75 | int node; | 75 | int node; |
| 76 | int nasid; | 76 | int nasid; |
| 77 | 77 | ||
| 78 | /* >>> The following should get moved into SAL. */ | 78 | /* !!! The following should get moved into SAL. */ |
| 79 | if (is_shub2()) { | 79 | if (is_shub2()) { |
| 80 | xpc_sh2_IPI_access0_sn2 = | 80 | xpc_sh2_IPI_access0_sn2 = |
| 81 | (u64)HUB_L((u64 *)LOCAL_MMR_ADDR(SH2_IPI_ACCESS0)); | 81 | (u64)HUB_L((u64 *)LOCAL_MMR_ADDR(SH2_IPI_ACCESS0)); |
| @@ -118,7 +118,7 @@ xpc_disallow_IPI_ops_sn2(void) | |||
| 118 | int node; | 118 | int node; |
| 119 | int nasid; | 119 | int nasid; |
| 120 | 120 | ||
| 121 | /* >>> The following should get moved into SAL. */ | 121 | /* !!! The following should get moved into SAL. */ |
| 122 | if (is_shub2()) { | 122 | if (is_shub2()) { |
| 123 | for_each_online_node(node) { | 123 | for_each_online_node(node) { |
| 124 | nasid = cnodeid_to_nasid(node); | 124 | nasid = cnodeid_to_nasid(node); |
| @@ -1360,7 +1360,7 @@ xpc_teardown_infrastructure_sn2(struct xpc_partition *part) | |||
| 1360 | * dst must be a cacheline aligned virtual address on this partition. | 1360 | * dst must be a cacheline aligned virtual address on this partition. |
| 1361 | * cnt must be cacheline sized | 1361 | * cnt must be cacheline sized |
| 1362 | */ | 1362 | */ |
| 1363 | /* >>> Replace this function by call to xp_remote_memcpy() or bte_copy()? */ | 1363 | /* ??? Replace this function by call to xp_remote_memcpy() or bte_copy()? */ |
| 1364 | static enum xp_retval | 1364 | static enum xp_retval |
| 1365 | xpc_pull_remote_cachelines_sn2(struct xpc_partition *part, void *dst, | 1365 | xpc_pull_remote_cachelines_sn2(struct xpc_partition *part, void *dst, |
| 1366 | const void *src, size_t cnt) | 1366 | const void *src, size_t cnt) |
| @@ -2242,7 +2242,7 @@ xpc_send_msg_sn2(struct xpc_channel *ch, u32 flags, void *payload, | |||
| 2242 | notify->key = key; | 2242 | notify->key = key; |
| 2243 | notify->type = notify_type; | 2243 | notify->type = notify_type; |
| 2244 | 2244 | ||
| 2245 | /* >>> is a mb() needed here? */ | 2245 | /* ??? Is a mb() needed here? */ |
| 2246 | 2246 | ||
| 2247 | if (ch->flags & XPC_C_DISCONNECTING) { | 2247 | if (ch->flags & XPC_C_DISCONNECTING) { |
| 2248 | /* | 2248 | /* |
diff --git a/drivers/misc/sgi-xp/xpc_uv.c b/drivers/misc/sgi-xp/xpc_uv.c index 1401b0f45dcb..2aec1dfbb3db 100644 --- a/drivers/misc/sgi-xp/xpc_uv.c +++ b/drivers/misc/sgi-xp/xpc_uv.c | |||
| @@ -15,8 +15,8 @@ | |||
| 15 | 15 | ||
| 16 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
| 17 | 17 | ||
| 18 | /* >>> #include <gru/grukservices.h> */ | 18 | /* !!! #include <gru/grukservices.h> */ |
| 19 | /* >>> uv_gpa() is defined in <gru/grukservices.h> */ | 19 | /* !!! uv_gpa() is defined in <gru/grukservices.h> */ |
| 20 | #define uv_gpa(_a) ((unsigned long)_a) | 20 | #define uv_gpa(_a) ((unsigned long)_a) |
| 21 | 21 | ||
| 22 | #include "xpc.h" | 22 | #include "xpc.h" |
| @@ -29,16 +29,16 @@ static void | |||
| 29 | xpc_send_local_activate_IRQ_uv(struct xpc_partition *part) | 29 | xpc_send_local_activate_IRQ_uv(struct xpc_partition *part) |
| 30 | { | 30 | { |
| 31 | /* | 31 | /* |
| 32 | * >>> make our side think that the remote parition sent an activate | 32 | * !!! Make our side think that the remote parition sent an activate |
| 33 | * >>> message our way. Also do what the activate IRQ handler would | 33 | * !!! message our way. Also do what the activate IRQ handler would |
| 34 | * >>> do had one really been sent. | 34 | * !!! do had one really been sent. |
| 35 | */ | 35 | */ |
| 36 | } | 36 | } |
| 37 | 37 | ||
| 38 | static enum xp_retval | 38 | static enum xp_retval |
| 39 | xpc_rsvd_page_init_uv(struct xpc_rsvd_page *rp) | 39 | xpc_rsvd_page_init_uv(struct xpc_rsvd_page *rp) |
| 40 | { | 40 | { |
| 41 | /* >>> need to have established xpc_activate_mq earlier */ | 41 | /* !!! need to have established xpc_activate_mq earlier */ |
| 42 | rp->sn.activate_mq_gpa = uv_gpa(xpc_activate_mq); | 42 | rp->sn.activate_mq_gpa = uv_gpa(xpc_activate_mq); |
| 43 | return xpSuccess; | 43 | return xpSuccess; |
| 44 | } | 44 | } |
| @@ -46,7 +46,7 @@ xpc_rsvd_page_init_uv(struct xpc_rsvd_page *rp) | |||
| 46 | static void | 46 | static void |
| 47 | xpc_increment_heartbeat_uv(void) | 47 | xpc_increment_heartbeat_uv(void) |
| 48 | { | 48 | { |
| 49 | /* >>> send heartbeat msg to xpc_heartbeating_to_mask partids */ | 49 | /* !!! send heartbeat msg to xpc_heartbeating_to_mask partids */ |
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | static void | 52 | static void |
| @@ -59,7 +59,7 @@ xpc_heartbeat_init_uv(void) | |||
| 59 | static void | 59 | static void |
| 60 | xpc_heartbeat_exit_uv(void) | 60 | xpc_heartbeat_exit_uv(void) |
| 61 | { | 61 | { |
| 62 | /* >>> send heartbeat_offline msg to xpc_heartbeating_to_mask partids */ | 62 | /* !!! send heartbeat_offline msg to xpc_heartbeating_to_mask partids */ |
| 63 | } | 63 | } |
| 64 | 64 | ||
| 65 | static void | 65 | static void |
| @@ -70,9 +70,9 @@ xpc_request_partition_activation_uv(struct xpc_rsvd_page *remote_rp, | |||
| 70 | struct xpc_partition *part = &xpc_partitions[partid]; | 70 | struct xpc_partition *part = &xpc_partitions[partid]; |
| 71 | 71 | ||
| 72 | /* | 72 | /* |
| 73 | * >>> setup part structure with the bits of info we can glean from the rp | 73 | * !!! Setup part structure with the bits of info we can glean from the rp: |
| 74 | * >>> part->remote_rp_pa = remote_rp_pa; | 74 | * !!! part->remote_rp_pa = remote_rp_pa; |
| 75 | * >>> part->sn.uv.activate_mq_gpa = remote_rp->sn.activate_mq_gpa; | 75 | * !!! part->sn.uv.activate_mq_gpa = remote_rp->sn.activate_mq_gpa; |
| 76 | */ | 76 | */ |
| 77 | 77 | ||
| 78 | xpc_send_local_activate_IRQ_uv(part); | 78 | xpc_send_local_activate_IRQ_uv(part); |
| @@ -91,7 +91,7 @@ xpc_request_partition_reactivation_uv(struct xpc_partition *part) | |||
| 91 | static enum xp_retval | 91 | static enum xp_retval |
| 92 | xpc_setup_infrastructure_uv(struct xpc_partition *part) | 92 | xpc_setup_infrastructure_uv(struct xpc_partition *part) |
| 93 | { | 93 | { |
| 94 | /* >>> this function needs fleshing out */ | 94 | /* !!! this function needs fleshing out */ |
| 95 | return xpUnsupported; | 95 | return xpUnsupported; |
| 96 | } | 96 | } |
| 97 | 97 | ||
| @@ -102,28 +102,28 @@ xpc_setup_infrastructure_uv(struct xpc_partition *part) | |||
| 102 | static void | 102 | static void |
| 103 | xpc_teardown_infrastructure_uv(struct xpc_partition *part) | 103 | xpc_teardown_infrastructure_uv(struct xpc_partition *part) |
| 104 | { | 104 | { |
| 105 | /* >>> this function needs fleshing out */ | 105 | /* !!! this function needs fleshing out */ |
| 106 | return; | 106 | return; |
| 107 | } | 107 | } |
| 108 | 108 | ||
| 109 | static enum xp_retval | 109 | static enum xp_retval |
| 110 | xpc_make_first_contact_uv(struct xpc_partition *part) | 110 | xpc_make_first_contact_uv(struct xpc_partition *part) |
| 111 | { | 111 | { |
| 112 | /* >>> this function needs fleshing out */ | 112 | /* !!! this function needs fleshing out */ |
| 113 | return xpUnsupported; | 113 | return xpUnsupported; |
| 114 | } | 114 | } |
| 115 | 115 | ||
| 116 | static u64 | 116 | static u64 |
| 117 | xpc_get_chctl_all_flags_uv(struct xpc_partition *part) | 117 | xpc_get_chctl_all_flags_uv(struct xpc_partition *part) |
| 118 | { | 118 | { |
| 119 | /* >>> this function needs fleshing out */ | 119 | /* !!! this function needs fleshing out */ |
| 120 | return 0UL; | 120 | return 0UL; |
| 121 | } | 121 | } |
| 122 | 122 | ||
| 123 | static struct xpc_msg * | 123 | static struct xpc_msg * |
| 124 | xpc_get_deliverable_msg_uv(struct xpc_channel *ch) | 124 | xpc_get_deliverable_msg_uv(struct xpc_channel *ch) |
| 125 | { | 125 | { |
| 126 | /* >>> this function needs fleshing out */ | 126 | /* !!! this function needs fleshing out */ |
| 127 | return NULL; | 127 | return NULL; |
| 128 | } | 128 | } |
| 129 | 129 | ||
diff --git a/drivers/misc/sgi-xp/xpnet.c b/drivers/misc/sgi-xp/xpnet.c index c5f59a6dae52..07c89c4e2c25 100644 --- a/drivers/misc/sgi-xp/xpnet.c +++ b/drivers/misc/sgi-xp/xpnet.c | |||
| @@ -229,9 +229,9 @@ xpnet_receive(short partid, int channel, struct xpnet_message *msg) | |||
| 229 | 229 | ||
| 230 | if (ret != xpSuccess) { | 230 | if (ret != xpSuccess) { |
| 231 | /* | 231 | /* |
| 232 | * >>> Need better way of cleaning skb. Currently skb | 232 | * !!! Need better way of cleaning skb. Currently skb |
| 233 | * >>> appears in_use and we can't just call | 233 | * !!! appears in_use and we can't just call |
| 234 | * >>> dev_kfree_skb. | 234 | * !!! dev_kfree_skb. |
| 235 | */ | 235 | */ |
| 236 | dev_err(xpnet, "xp_remote_memcpy(0x%p, 0x%p, 0x%hx) " | 236 | dev_err(xpnet, "xp_remote_memcpy(0x%p, 0x%p, 0x%hx) " |
| 237 | "returned error=0x%x\n", (void *) | 237 | "returned error=0x%x\n", (void *) |
