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 | |
| 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>
| -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 |
