|
@@ -642,7 +642,7 @@ xpc_send_local_activate_IRQ_uv(struct xpc_partition *part, int act_state_req)
|
|
|
struct xpc_partition_uv *part_uv = &part->sn.uv;
|
|
|
|
|
|
/*
|
|
|
- * !!! Make our side think that the remote parition sent an activate
|
|
|
+ * !!! Make our side think that the remote partition sent an activate
|
|
|
* !!! message our way by doing what the activate IRQ handler would
|
|
|
* !!! do had one really been sent.
|
|
|
*/
|
|
@@ -660,8 +660,33 @@ static enum xp_retval
|
|
|
xpc_get_partition_rsvd_page_pa_uv(void *buf, u64 *cookie, unsigned long *rp_pa,
|
|
|
size_t *len)
|
|
|
{
|
|
|
- /* !!! call the UV version of sn_partition_reserved_page_pa() */
|
|
|
- return xpUnsupported;
|
|
|
+ s64 status;
|
|
|
+ enum xp_retval ret;
|
|
|
+
|
|
|
+#if defined CONFIG_X86_64
|
|
|
+ status = uv_bios_reserved_page_pa((u64)buf, cookie, (u64 *)rp_pa,
|
|
|
+ (u64 *)len);
|
|
|
+ if (status == BIOS_STATUS_SUCCESS)
|
|
|
+ ret = xpSuccess;
|
|
|
+ else if (status == BIOS_STATUS_MORE_PASSES)
|
|
|
+ ret = xpNeedMoreInfo;
|
|
|
+ else
|
|
|
+ ret = xpBiosError;
|
|
|
+
|
|
|
+#elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV
|
|
|
+ status = sn_partition_reserved_page_pa((u64)buf, cookie, rp_pa, len);
|
|
|
+ if (status == SALRET_OK)
|
|
|
+ ret = xpSuccess;
|
|
|
+ else if (status == SALRET_MORE_PASSES)
|
|
|
+ ret = xpNeedMoreInfo;
|
|
|
+ else
|
|
|
+ ret = xpSalError;
|
|
|
+
|
|
|
+#else
|
|
|
+ #error not a supported configuration
|
|
|
+#endif
|
|
|
+
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
static int
|