Re: [PATCH v2] pvcalls-front: 64-bit align flags
On 01/03/18 03:05, Stefano Stabellini wrote: > We are using test_and_* operations on the status and flag fields of > struct sock_mapping. However, these functions require the operand to be > 64-bit aligned on arm64. Currently, only status is 64-bit aligned. > > Make status and flags explicitly 64-bit aligned. > > Signed-off-by: Stefano StabelliniCommitted to xen/tip for-linus-4.16a Juergen
Re: [PATCH v2] pvcalls-front: 64-bit align flags
On 01/03/18 03:05, Stefano Stabellini wrote: > We are using test_and_* operations on the status and flag fields of > struct sock_mapping. However, these functions require the operand to be > 64-bit aligned on arm64. Currently, only status is 64-bit aligned. > > Make status and flags explicitly 64-bit aligned. > > Signed-off-by: Stefano Stabellini Committed to xen/tip for-linus-4.16a Juergen
Re: [PATCH v2] pvcalls-front: 64-bit align flags
On 02/28/2018 09:05 PM, Stefano Stabellini wrote: We are using test_and_* operations on the status and flag fields of struct sock_mapping. However, these functions require the operand to be 64-bit aligned on arm64. Currently, only status is 64-bit aligned. Make status and flags explicitly 64-bit aligned. Signed-off-by: Stefano StabelliniReviewed-by: Boris Ostrovsky
Re: [PATCH v2] pvcalls-front: 64-bit align flags
On 02/28/2018 09:05 PM, Stefano Stabellini wrote: We are using test_and_* operations on the status and flag fields of struct sock_mapping. However, these functions require the operand to be 64-bit aligned on arm64. Currently, only status is 64-bit aligned. Make status and flags explicitly 64-bit aligned. Signed-off-by: Stefano Stabellini Reviewed-by: Boris Ostrovsky
[PATCH v2] pvcalls-front: 64-bit align flags
We are using test_and_* operations on the status and flag fields of struct sock_mapping. However, these functions require the operand to be 64-bit aligned on arm64. Currently, only status is 64-bit aligned. Make status and flags explicitly 64-bit aligned. Signed-off-by: Stefano Stabellini--- Changes in v2: - use __attribute__((aligned(8))) - add comments diff --git a/drivers/xen/pvcalls-front.c b/drivers/xen/pvcalls-front.c index ca5b773..582929e 100644 --- a/drivers/xen/pvcalls-front.c +++ b/drivers/xen/pvcalls-front.c @@ -73,20 +73,25 @@ struct sock_mapping { wait_queue_head_t inflight_conn_req; } active; struct { - /* Socket status */ + /* +* Socket status, needs to be 64-bit aligned due to the +* test_and_* functions which have this requirement on arm64. +*/ #define PVCALLS_STATUS_UNINITALIZED 0 #define PVCALLS_STATUS_BIND 1 #define PVCALLS_STATUS_LISTEN2 - uint8_t status; + uint8_t status __attribute__((aligned(8))); /* * Internal state-machine flags. * Only one accept operation can be inflight for a socket. * Only one poll operation can be inflight for a given socket. +* flags needs to be 64-bit aligned due to the test_and_* +* functions which have this requirement on arm64. */ #define PVCALLS_FLAG_ACCEPT_INFLIGHT 0 #define PVCALLS_FLAG_POLL_INFLIGHT 1 #define PVCALLS_FLAG_POLL_RET2 - uint8_t flags; + uint8_t flags __attribute__((aligned(8))); uint32_t inflight_req_id; struct sock_mapping *accept_map; wait_queue_head_t inflight_accept_req;
[PATCH v2] pvcalls-front: 64-bit align flags
We are using test_and_* operations on the status and flag fields of struct sock_mapping. However, these functions require the operand to be 64-bit aligned on arm64. Currently, only status is 64-bit aligned. Make status and flags explicitly 64-bit aligned. Signed-off-by: Stefano Stabellini --- Changes in v2: - use __attribute__((aligned(8))) - add comments diff --git a/drivers/xen/pvcalls-front.c b/drivers/xen/pvcalls-front.c index ca5b773..582929e 100644 --- a/drivers/xen/pvcalls-front.c +++ b/drivers/xen/pvcalls-front.c @@ -73,20 +73,25 @@ struct sock_mapping { wait_queue_head_t inflight_conn_req; } active; struct { - /* Socket status */ + /* +* Socket status, needs to be 64-bit aligned due to the +* test_and_* functions which have this requirement on arm64. +*/ #define PVCALLS_STATUS_UNINITALIZED 0 #define PVCALLS_STATUS_BIND 1 #define PVCALLS_STATUS_LISTEN2 - uint8_t status; + uint8_t status __attribute__((aligned(8))); /* * Internal state-machine flags. * Only one accept operation can be inflight for a socket. * Only one poll operation can be inflight for a given socket. +* flags needs to be 64-bit aligned due to the test_and_* +* functions which have this requirement on arm64. */ #define PVCALLS_FLAG_ACCEPT_INFLIGHT 0 #define PVCALLS_FLAG_POLL_INFLIGHT 1 #define PVCALLS_FLAG_POLL_RET2 - uint8_t flags; + uint8_t flags __attribute__((aligned(8))); uint32_t inflight_req_id; struct sock_mapping *accept_map; wait_queue_head_t inflight_accept_req;