diff options
Diffstat (limited to 'arch/ia64')
-rw-r--r-- | arch/ia64/sn/kernel/xpc_partition.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/arch/ia64/sn/kernel/xpc_partition.c b/arch/ia64/sn/kernel/xpc_partition.c index b31d9988a37a..2c3c4a8af553 100644 --- a/arch/ia64/sn/kernel/xpc_partition.c +++ b/arch/ia64/sn/kernel/xpc_partition.c | |||
@@ -204,6 +204,19 @@ xpc_rsvd_page_init(void) | |||
204 | return NULL; | 204 | return NULL; |
205 | } | 205 | } |
206 | } | 206 | } |
207 | } else if (!IS_AMO_ADDRESS((u64) amos_page)) { | ||
208 | /* | ||
209 | * EFI's XPBOOT can also set amos_page in the reserved page, | ||
210 | * but it happens to leave it as an uncached physical address | ||
211 | * and we need it to be an uncached virtual, so we'll have to | ||
212 | * convert it. | ||
213 | */ | ||
214 | if (!IS_AMO_PHYS_ADDRESS((u64) amos_page)) { | ||
215 | dev_err(xpc_part, "previously used amos_page address " | ||
216 | "is bad = 0x%p\n", (void *) amos_page); | ||
217 | return NULL; | ||
218 | } | ||
219 | amos_page = (AMO_t *) TO_AMO((u64) amos_page); | ||
207 | } | 220 | } |
208 | 221 | ||
209 | memset(xpc_vars, 0, sizeof(struct xpc_vars)); | 222 | memset(xpc_vars, 0, sizeof(struct xpc_vars)); |
@@ -944,7 +957,7 @@ xpc_discovery(void) | |||
944 | 957 | ||
945 | /* | 958 | /* |
946 | * Given a partid, get the nasids owned by that partition from the | 959 | * Given a partid, get the nasids owned by that partition from the |
947 | * remote partitions reserved page. | 960 | * remote partition's reserved page. |
948 | */ | 961 | */ |
949 | enum xpc_retval | 962 | enum xpc_retval |
950 | xpc_initiate_partid_to_nasids(partid_t partid, void *nasid_mask) | 963 | xpc_initiate_partid_to_nasids(partid_t partid, void *nasid_mask) |