]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blame - src/patches/suse-2.6.27.25/patches.kabi/xpc-pass-physical
Revert "Move xen patchset to new version's subdir."
[people/teissler/ipfire-2.x.git] / src / patches / suse-2.6.27.25 / patches.kabi / xpc-pass-physical
CommitLineData
00e5a55c
BS
1From: Raymund Will <rw@suse.de>
2Subject: sgi-xpc: need to pass the physical address, not virtual.
3References: bnc#458811
4
5This version differs significantly from the community patch,
6that breaks kABI after RC2, which is considered worse than
7deviating from upstream (at least in this area).
8
9Instead of actually _passing_ the physical address to
10uv_bios_mq_watchlist_alloc() it's converted locally.
11
12Signed-off-by: Raymund Will <rw@suse.de>
13
14---
15 arch/x86/kernel/bios_uv.c | 4 +++-
16 drivers/misc/sgi-xp/xpc_uv.c | 4 ++--
17 include/asm-x86/uv/bios.h | 2 +-
18 3 files changed, 6 insertions(+), 4 deletions(-)
19
20--- a/arch/x86/kernel/bios_uv.c
21+++ b/arch/x86/kernel/bios_uv.c
22@@ -101,13 +101,15 @@ s64 uv_bios_get_sn_info(int fc, int *uvt
23 }
24
25 int
26-uv_bios_mq_watchlist_alloc(int blade, unsigned long addr, unsigned int mq_size,
27+uv_bios_mq_watchlist_alloc(int blade, void *mq, unsigned int mq_size,
28 unsigned long *intr_mmr_offset)
29 {
30 union uv_watchlist_u size_blade;
31+ unsigned long addr;
32 u64 watchlist;
33 s64 ret;
34
35+ addr = uv_gpa(mq);
36 size_blade.size = mq_size;
37 size_blade.blade = blade;
38
39--- a/drivers/misc/sgi-xp/xpc_uv.c
40+++ b/drivers/misc/sgi-xp/xpc_uv.c
41@@ -119,7 +119,7 @@ xpc_gru_mq_watchlist_alloc_uv(struct xpc
42 int ret;
43
44 #if defined CONFIG_X86_64
45- ret = uv_bios_mq_watchlist_alloc(mq->mmr_blade, uv_gpa(mq->address),
46+ ret = uv_bios_mq_watchlist_alloc(mq->mmr_blade, mq->address,
47 mq->order, &mq->mmr_offset);
48 if (ret < 0) {
49 dev_err(xpc_part, "uv_bios_mq_watchlist_alloc() failed, "
50@@ -127,7 +127,7 @@ xpc_gru_mq_watchlist_alloc_uv(struct xpc
51 return ret;
52 }
53 #elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV
54- ret = sn_mq_watchlist_alloc(mq->mmr_blade, uv_gpa(mq->address),
55+ ret = sn_mq_watchlist_alloc(mq->mmr_blade, mq->address,
56 mq->order, &mq->mmr_offset);
57 if (ret < 0) {
58 dev_err(xpc_part, "sn_mq_watchlist_alloc() failed, ret=%d\n",
59--- a/include/asm-x86/uv/bios.h
60+++ b/include/asm-x86/uv/bios.h
61@@ -100,7 +100,7 @@ extern s64 uv_bios_call_reentrant(enum u
62
63 extern s64 uv_bios_get_sn_info(int, int *, long *, long *, long *);
64 extern s64 uv_bios_freq_base(u64, u64 *);
65-extern int uv_bios_mq_watchlist_alloc(int, unsigned long, unsigned int,
66+extern int uv_bios_mq_watchlist_alloc(int, void *, unsigned int,
67 unsigned long *);
68 extern int uv_bios_mq_watchlist_free(int, int);
69 extern s64 uv_bios_change_memprotect(u64, u64, enum uv_memprotect);