diff options
author | Dean Nelson <dcn@sgi.com> | 2008-11-05 18:29:48 -0500 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2008-11-05 23:32:21 -0500 |
commit | 7d9d1f25c3872080ce599e5dd0dac3305d0a028b (patch) | |
tree | d2e8b513cc0b89f932d8e1cffcd8d1f6d8f7a953 /drivers/misc/sgi-xp/xpc_uv.c | |
parent | 31de5ece351a218a35b9bf83ab05a14373261bb6 (diff) |
sgi-xp: support getting the address of a partition's reserved page
Add support for getting the address of a partition's reserved page.
Signed-off-by: Dean Nelson <dcn@sgi.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'drivers/misc/sgi-xp/xpc_uv.c')
-rw-r--r-- | drivers/misc/sgi-xp/xpc_uv.c | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/drivers/misc/sgi-xp/xpc_uv.c b/drivers/misc/sgi-xp/xpc_uv.c index ec526c7ff70c..684b2dd17583 100644 --- a/drivers/misc/sgi-xp/xpc_uv.c +++ b/drivers/misc/sgi-xp/xpc_uv.c | |||
@@ -642,7 +642,7 @@ xpc_send_local_activate_IRQ_uv(struct xpc_partition *part, int act_state_req) | |||
642 | struct xpc_partition_uv *part_uv = &part->sn.uv; | 642 | struct xpc_partition_uv *part_uv = &part->sn.uv; |
643 | 643 | ||
644 | /* | 644 | /* |
645 | * !!! Make our side think that the remote parition sent an activate | 645 | * !!! Make our side think that the remote partition sent an activate |
646 | * !!! message our way by doing what the activate IRQ handler would | 646 | * !!! message our way by doing what the activate IRQ handler would |
647 | * !!! do had one really been sent. | 647 | * !!! do had one really been sent. |
648 | */ | 648 | */ |
@@ -660,8 +660,33 @@ static enum xp_retval | |||
660 | xpc_get_partition_rsvd_page_pa_uv(void *buf, u64 *cookie, unsigned long *rp_pa, | 660 | xpc_get_partition_rsvd_page_pa_uv(void *buf, u64 *cookie, unsigned long *rp_pa, |
661 | size_t *len) | 661 | size_t *len) |
662 | { | 662 | { |
663 | /* !!! call the UV version of sn_partition_reserved_page_pa() */ | 663 | s64 status; |
664 | return xpUnsupported; | 664 | enum xp_retval ret; |
665 | |||
666 | #if defined CONFIG_X86_64 | ||
667 | status = uv_bios_reserved_page_pa((u64)buf, cookie, (u64 *)rp_pa, | ||
668 | (u64 *)len); | ||
669 | if (status == BIOS_STATUS_SUCCESS) | ||
670 | ret = xpSuccess; | ||
671 | else if (status == BIOS_STATUS_MORE_PASSES) | ||
672 | ret = xpNeedMoreInfo; | ||
673 | else | ||
674 | ret = xpBiosError; | ||
675 | |||
676 | #elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV | ||
677 | status = sn_partition_reserved_page_pa((u64)buf, cookie, rp_pa, len); | ||
678 | if (status == SALRET_OK) | ||
679 | ret = xpSuccess; | ||
680 | else if (status == SALRET_MORE_PASSES) | ||
681 | ret = xpNeedMoreInfo; | ||
682 | else | ||
683 | ret = xpSalError; | ||
684 | |||
685 | #else | ||
686 | #error not a supported configuration | ||
687 | #endif | ||
688 | |||
689 | return ret; | ||
665 | } | 690 | } |
666 | 691 | ||
667 | static int | 692 | static int |