qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 1/2] bswap.h: add cpu_to_be64wu()
@ 2011-01-01 20:50 Aurelien Jarno
  2011-01-01 20:50 ` [Qemu-devel] [PATCH 2/2] qcow2: fix unaligned access Aurelien Jarno
  0 siblings, 1 reply; 3+ messages in thread
From: Aurelien Jarno @ 2011-01-01 20:50 UTC (permalink / raw)
  To: qemu-devel; +Cc: Aurelien Jarno

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
---
 bswap.h |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/bswap.h b/bswap.h
index 20caae6..82a7951 100644
--- a/bswap.h
+++ b/bswap.h
@@ -144,6 +144,7 @@ CPU_CONVERT(le, 64, uint64_t)
 
 #define cpu_to_be16wu(p, v) cpu_to_be16w(p, v)
 #define cpu_to_be32wu(p, v) cpu_to_be32w(p, v)
+#define cpu_to_be64wu(p, v) cpu_to_be64w(p, v)
 
 #else
 
@@ -201,6 +202,20 @@ static inline void cpu_to_be32wu(uint32_t *p, uint32_t v)
     p1[3] = v & 0xff;
 }
 
+static inline void cpu_to_be64wu(uint64_t *p, uint64_t v)
+{
+    uint8_t *p1 = (uint8_t *)p;
+
+    p1[0] = v >> 56;
+    p1[1] = v >> 48;
+    p1[2] = v >> 40;
+    p1[3] = v >> 32;
+    p1[4] = v >> 24;
+    p1[5] = v >> 16;
+    p1[6] = v >> 8;
+    p1[7] = v & 0xff;
+}
+
 #endif
 
 #ifdef HOST_WORDS_BIGENDIAN
-- 
1.7.2.3

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

* [Qemu-devel] [PATCH 2/2] qcow2: fix unaligned access
  2011-01-01 20:50 [Qemu-devel] [PATCH 1/2] bswap.h: add cpu_to_be64wu() Aurelien Jarno
@ 2011-01-01 20:50 ` Aurelien Jarno
  2011-01-10  9:07   ` Kevin Wolf
  0 siblings, 1 reply; 3+ messages in thread
From: Aurelien Jarno @ 2011-01-01 20:50 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kevin Wolf, Aurelien Jarno

cpu_to_be64w() is called with an obviously non-aligned pointer. Use
cpu_to_be64wu() instead. It fixes unaligned accesses errors on IA64
hosts.

Cc: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
---
 block/qcow2-cluster.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c
index 6928c63..c3ef550 100644
--- a/block/qcow2-cluster.c
+++ b/block/qcow2-cluster.c
@@ -81,7 +81,7 @@ int qcow2_grow_l1_table(BlockDriverState *bs, int min_size, bool exact_size)
     /* set new table */
     BLKDBG_EVENT(bs->file, BLKDBG_L1_GROW_ACTIVATE_TABLE);
     cpu_to_be32w((uint32_t*)data, new_l1_size);
-    cpu_to_be64w((uint64_t*)(data + 4), new_l1_table_offset);
+    cpu_to_be64wu((uint64_t*)(data + 4), new_l1_table_offset);
     ret = bdrv_pwrite_sync(bs->file, offsetof(QCowHeader, l1_size), data,sizeof(data));
     if (ret < 0) {
         goto fail;
-- 
1.7.2.3

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

* Re: [Qemu-devel] [PATCH 2/2] qcow2: fix unaligned access
  2011-01-01 20:50 ` [Qemu-devel] [PATCH 2/2] qcow2: fix unaligned access Aurelien Jarno
@ 2011-01-10  9:07   ` Kevin Wolf
  0 siblings, 0 replies; 3+ messages in thread
From: Kevin Wolf @ 2011-01-10  9:07 UTC (permalink / raw)
  To: Aurelien Jarno; +Cc: qemu-devel

Am 01.01.2011 21:50, schrieb Aurelien Jarno:
> cpu_to_be64w() is called with an obviously non-aligned pointer. Use
> cpu_to_be64wu() instead. It fixes unaligned accesses errors on IA64
> hosts.
> 
> Cc: Kevin Wolf <kwolf@redhat.com>
> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>

Thanks, applied to the block branch.

Kevin

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

end of thread, other threads:[~2011-01-10  9:11 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-01-01 20:50 [Qemu-devel] [PATCH 1/2] bswap.h: add cpu_to_be64wu() Aurelien Jarno
2011-01-01 20:50 ` [Qemu-devel] [PATCH 2/2] qcow2: fix unaligned access Aurelien Jarno
2011-01-10  9:07   ` Kevin Wolf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).