0.10.1-3 32 bit fixes RHBZ 815717
This commit is contained in:
parent
430561cc74
commit
e037a25b8f
65
0001-server-red_memslots-drop-two-unused-functions.patch
Normal file
65
0001-server-red_memslots-drop-two-unused-functions.patch
Normal file
@ -0,0 +1,65 @@
|
||||
From c90d42e2acb6655508e37d42925dc6062d75f479 Mon Sep 17 00:00:00 2001
|
||||
From: Alon Levy <alevy@redhat.com>
|
||||
Date: Wed, 21 Mar 2012 17:55:23 +0200
|
||||
Subject: [PATCH 1/4] server/red_memslots: drop two unused functions
|
||||
|
||||
cb_get_virt and cb_validate_virt have disappeared a long time ago,
|
||||
not needed since:
|
||||
|
||||
commit 5ac88aa79fa6445f96e5419d8bf4fce81da63b90
|
||||
Author: Gerd Hoffmann <kraxel@redhat.com>
|
||||
Date: Thu Jul 1 17:55:33 2010 +0200
|
||||
|
||||
Properly parse QXLImage to the new-world SpiceImage
|
||||
|
||||
SpiceImage now replaces RedImage and has all image types in it.
|
||||
All image data are now chunked (and as such not copied when demarshalling).
|
||||
---
|
||||
server/red_memslots.c | 14 --------------
|
||||
server/red_memslots.h | 5 -----
|
||||
2 files changed, 19 deletions(-)
|
||||
|
||||
diff --git a/server/red_memslots.c b/server/red_memslots.c
|
||||
index d98f38c..5057218 100644
|
||||
--- a/server/red_memslots.c
|
||||
+++ b/server/red_memslots.c
|
||||
@@ -127,20 +127,6 @@ unsigned long get_virt(RedMemSlotInfo *info, unsigned long addr, uint32_t add_si
|
||||
return h_virt;
|
||||
}
|
||||
|
||||
-void *cb_get_virt(void *opaque, unsigned long addr,
|
||||
- uint32_t add_size, uint32_t group_id)
|
||||
-{
|
||||
- return (void *)get_virt((RedMemSlotInfo *)opaque, addr, add_size, group_id);
|
||||
-}
|
||||
-
|
||||
-void cb_validate_virt(void *opaque,
|
||||
- unsigned long virt, unsigned long from_addr,
|
||||
- uint32_t add_size, uint32_t group_id)
|
||||
-{
|
||||
- int slot_id = get_memslot_id((RedMemSlotInfo *)opaque, from_addr);
|
||||
- validate_virt((RedMemSlotInfo *)opaque, virt, slot_id, add_size, group_id);
|
||||
-}
|
||||
-
|
||||
void *validate_chunk (RedMemSlotInfo *info, QXLPHYSICAL data, uint32_t group_id, uint32_t *data_size_out, QXLPHYSICAL *next_out)
|
||||
{
|
||||
QXLDataChunk *chunk;
|
||||
diff --git a/server/red_memslots.h b/server/red_memslots.h
|
||||
index 18d5208..7aea0a3 100644
|
||||
--- a/server/red_memslots.h
|
||||
+++ b/server/red_memslots.h
|
||||
@@ -60,11 +60,6 @@ unsigned long get_virt(RedMemSlotInfo *info, unsigned long addr, uint32_t add_si
|
||||
int group_id);
|
||||
|
||||
void *validate_chunk (RedMemSlotInfo *info, QXLPHYSICAL data, uint32_t group_id, uint32_t *data_size_out, QXLPHYSICAL *next_out);
|
||||
-void *cb_get_virt(void *opaque, unsigned long addr,
|
||||
- uint32_t add_size, uint32_t group_id);
|
||||
-void cb_validate_virt(void *opaque,
|
||||
- unsigned long virt, unsigned long from_addr,
|
||||
- uint32_t add_size, uint32_t group_id);
|
||||
void red_memslot_info_init(RedMemSlotInfo *info,
|
||||
uint32_t num_groups, uint32_t num_slots,
|
||||
uint8_t generation_bits,
|
||||
--
|
||||
1.7.10
|
||||
|
47
0002-server-red_memslots-use-QXLPHYSICAL-for-addresses.patch
Normal file
47
0002-server-red_memslots-use-QXLPHYSICAL-for-addresses.patch
Normal file
@ -0,0 +1,47 @@
|
||||
From 9ee43c37ce8dc028695d81728ac6da88bb79b653 Mon Sep 17 00:00:00 2001
|
||||
From: Alon Levy <alevy@redhat.com>
|
||||
Date: Wed, 21 Mar 2012 17:57:32 +0200
|
||||
Subject: [PATCH 2/4] server/red_memslots: use QXLPHYSICAL for addresses
|
||||
|
||||
Cannot assume unsigned long == QXLPHYSICAL, not true for 32 bit
|
||||
architectures.
|
||||
---
|
||||
server/red_memslots.c | 2 +-
|
||||
server/red_memslots.h | 4 ++--
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/server/red_memslots.c b/server/red_memslots.c
|
||||
index 5057218..8c8f3cc 100644
|
||||
--- a/server/red_memslots.c
|
||||
+++ b/server/red_memslots.c
|
||||
@@ -91,7 +91,7 @@ void validate_virt(RedMemSlotInfo *info, unsigned long virt, int slot_id,
|
||||
}
|
||||
}
|
||||
|
||||
-unsigned long get_virt(RedMemSlotInfo *info, unsigned long addr, uint32_t add_size,
|
||||
+unsigned long get_virt(RedMemSlotInfo *info, QXLPHYSICAL addr, uint32_t add_size,
|
||||
int group_id)
|
||||
{
|
||||
int slot_id;
|
||||
diff --git a/server/red_memslots.h b/server/red_memslots.h
|
||||
index 7aea0a3..75754d0 100644
|
||||
--- a/server/red_memslots.h
|
||||
+++ b/server/red_memslots.h
|
||||
@@ -43,12 +43,12 @@ typedef struct RedMemSlotInfo {
|
||||
unsigned long memslot_clean_virt_mask;
|
||||
} RedMemSlotInfo;
|
||||
|
||||
-static inline int get_memslot_id(RedMemSlotInfo *info, unsigned long addr)
|
||||
+static inline int get_memslot_id(RedMemSlotInfo *info, uint64_t addr)
|
||||
{
|
||||
return addr >> info->memslot_id_shift;
|
||||
}
|
||||
|
||||
-static inline int get_generation(RedMemSlotInfo *info, unsigned long addr)
|
||||
+static inline int get_generation(RedMemSlotInfo *info, uint64_t addr)
|
||||
{
|
||||
return (addr >> info->memslot_gen_shift) & info->memslot_gen_mask;
|
||||
}
|
||||
--
|
||||
1.7.10
|
||||
|
@ -0,0 +1,28 @@
|
||||
From f13ca1277418ed91d009a8db0faf36fbd1c0a7e0 Mon Sep 17 00:00:00 2001
|
||||
From: Alon Levy <alevy@redhat.com>
|
||||
Date: Tue, 20 Mar 2012 18:59:21 +0200
|
||||
Subject: [PATCH 3/4] server/red_worker: fix for case where ASSERT is compiled
|
||||
out
|
||||
|
||||
---
|
||||
server/red_worker.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/server/red_worker.c b/server/red_worker.c
|
||||
index 80fa825..8a4315d 100644
|
||||
--- a/server/red_worker.c
|
||||
+++ b/server/red_worker.c
|
||||
@@ -8379,9 +8379,8 @@ static void red_display_marshall_stream_clip(RedChannelClient *rcc,
|
||||
{
|
||||
DisplayChannelClient *dcc = RCC_TO_DCC(rcc);
|
||||
StreamAgent *agent = item->stream_agent;
|
||||
- Stream *stream = agent->stream;
|
||||
|
||||
- ASSERT(stream);
|
||||
+ ASSERT(agent->stream);
|
||||
|
||||
red_channel_client_init_send_data(rcc, SPICE_MSG_DISPLAY_STREAM_CLIP, &item->base);
|
||||
SpiceMsgDisplayStreamClip stream_clip;
|
||||
--
|
||||
1.7.10
|
||||
|
@ -0,0 +1,83 @@
|
||||
From 3d0448314812457e027e513c2d0dc163c421914a Mon Sep 17 00:00:00 2001
|
||||
From: Alon Levy <alevy@redhat.com>
|
||||
Date: Tue, 20 Mar 2012 19:00:49 +0200
|
||||
Subject: [PATCH 4/4] server/red_memslots: don't assume 64 bit environment
|
||||
|
||||
assumption that unsigned long == QXLPHYSICAL causes get_virt to compute
|
||||
the wrong slot. Fix by replacing addr variables to be of type
|
||||
QXLPHYSICAL.
|
||||
---
|
||||
server/red_memslots.c | 13 ++++++++-----
|
||||
server/red_memslots.h | 4 ++--
|
||||
2 files changed, 10 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/server/red_memslots.c b/server/red_memslots.c
|
||||
index 8c8f3cc..249b241 100644
|
||||
--- a/server/red_memslots.c
|
||||
+++ b/server/red_memslots.c
|
||||
@@ -19,10 +19,12 @@
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
+#include <inttypes.h>
|
||||
+
|
||||
#include "red_common.h"
|
||||
#include "red_memslots.h"
|
||||
|
||||
-static unsigned long __get_clean_virt(RedMemSlotInfo *info, unsigned long addr)
|
||||
+static unsigned long __get_clean_virt(RedMemSlotInfo *info, QXLPHYSICAL addr)
|
||||
{
|
||||
return addr & info->memslot_clean_virt_mask;
|
||||
}
|
||||
@@ -46,7 +48,7 @@ static void print_memslots(RedMemSlotInfo *info)
|
||||
}
|
||||
}
|
||||
|
||||
-unsigned long get_virt_delta(RedMemSlotInfo *info, unsigned long addr, int group_id)
|
||||
+unsigned long get_virt_delta(RedMemSlotInfo *info, QXLPHYSICAL addr, int group_id)
|
||||
{
|
||||
MemSlot *slot;
|
||||
int slot_id;
|
||||
@@ -107,7 +109,7 @@ unsigned long get_virt(RedMemSlotInfo *info, QXLPHYSICAL addr, uint32_t add_size
|
||||
slot_id = get_memslot_id(info, addr);
|
||||
if (slot_id > info->num_memslots) {
|
||||
print_memslots(info);
|
||||
- PANIC("slot_id too big, addr=%lx", addr);
|
||||
+ PANIC("slot_id too big, addr=%" PRIx64, addr);
|
||||
}
|
||||
|
||||
slot = &info->mem_slots[group_id][slot_id];
|
||||
@@ -165,10 +167,11 @@ void red_memslot_info_init(RedMemSlotInfo *info,
|
||||
info->mem_slots[i] = spice_new0(MemSlot, num_slots);
|
||||
}
|
||||
|
||||
+ /* TODO: use QXLPHYSICAL_BITS */
|
||||
info->memslot_id_shift = 64 - info->mem_slot_bits;
|
||||
info->memslot_gen_shift = 64 - (info->mem_slot_bits + info->generation_bits);
|
||||
- info->memslot_gen_mask = ~((unsigned long)-1 << info->generation_bits);
|
||||
- info->memslot_clean_virt_mask = (((unsigned long)(-1)) >>
|
||||
+ info->memslot_gen_mask = ~((QXLPHYSICAL)-1 << info->generation_bits);
|
||||
+ info->memslot_clean_virt_mask = (((QXLPHYSICAL)(-1)) >>
|
||||
(info->mem_slot_bits + info->generation_bits));
|
||||
}
|
||||
|
||||
diff --git a/server/red_memslots.h b/server/red_memslots.h
|
||||
index 75754d0..d50587f 100644
|
||||
--- a/server/red_memslots.h
|
||||
+++ b/server/red_memslots.h
|
||||
@@ -53,10 +53,10 @@ static inline int get_generation(RedMemSlotInfo *info, uint64_t addr)
|
||||
return (addr >> info->memslot_gen_shift) & info->memslot_gen_mask;
|
||||
}
|
||||
|
||||
-unsigned long get_virt_delta(RedMemSlotInfo *info, unsigned long addr, int group_id);
|
||||
+unsigned long get_virt_delta(RedMemSlotInfo *info, QXLPHYSICAL addr, int group_id);
|
||||
void validate_virt(RedMemSlotInfo *info, unsigned long virt, int slot_id,
|
||||
uint32_t add_size, uint32_t group_id);
|
||||
-unsigned long get_virt(RedMemSlotInfo *info, unsigned long addr, uint32_t add_size,
|
||||
+unsigned long get_virt(RedMemSlotInfo *info, QXLPHYSICAL addr, uint32_t add_size,
|
||||
int group_id);
|
||||
|
||||
void *validate_chunk (RedMemSlotInfo *info, QXLPHYSICAL data, uint32_t group_id, uint32_t *data_size_out, QXLPHYSICAL *next_out);
|
||||
--
|
||||
1.7.10
|
||||
|
13
spice.spec
13
spice.spec
@ -1,12 +1,16 @@
|
||||
Name: spice
|
||||
Version: 0.10.1
|
||||
Release: 2%{?dist}
|
||||
Release: 3%{?dist}
|
||||
Summary: Implements the SPICE protocol
|
||||
Group: User Interface/Desktops
|
||||
License: LGPLv2+
|
||||
URL: http://www.spice-space.org/
|
||||
Source0: http://www.spice-space.org/download/releases/%{name}-%{version}.tar.bz2
|
||||
Source1: spice-xpi-client-spicec
|
||||
Patch0: 0001-server-red_memslots-drop-two-unused-functions.patch
|
||||
Patch1: 0002-server-red_memslots-use-QXLPHYSICAL-for-addresses.patch
|
||||
Patch2: 0003-server-red_worker-fix-for-case-where-ASSERT-is-compi.patch
|
||||
Patch3: 0004-server-red_memslots-don-t-assume-64-bit-environment.patch
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=613529
|
||||
ExclusiveArch: i686 x86_64
|
||||
@ -67,6 +71,10 @@ using spice-server, you will need to install spice-server-devel.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
|
||||
%build
|
||||
%configure --enable-gui --enable-smartcard
|
||||
@ -110,6 +118,9 @@ fi
|
||||
%{_libdir}/pkgconfig/spice-server.pc
|
||||
|
||||
%changelog
|
||||
* Tue Apr 24 2012 Alon Levy <alevy@redhat.com>
|
||||
- Add 32 bit fixes from git master. (#815717)
|
||||
|
||||
* Tue Feb 28 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.10.1-2
|
||||
- Rebuilt for c++ ABI breakage
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user