diff options
author | Dean Nelson <dcn@sgi.com> | 2005-04-04 13:14:00 -0700 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2005-05-03 12:50:22 -0700 |
commit | 3a7d555bfc4d4631d9118fb4d0ed7ab62cc2ca1c (patch) | |
tree | 3f788937066dff5befaf3b4e70539bf3f9e4702b /arch/ia64/sn/kernel | |
parent | a2d974da0afe659cff98913184a97c0ee686d02b (diff) | |
download | linux-3a7d555bfc4d4631d9118fb4d0ed7ab62cc2ca1c.tar.gz linux-3a7d555bfc4d4631d9118fb4d0ed7ab62cc2ca1c.tar.bz2 linux-3a7d555bfc4d4631d9118fb4d0ed7ab62cc2ca1c.zip |
[IA64-SGI] convert AMO address found in XPC's reserved page
This patch detects the existence of an uncached physical AMO address setup
by EFI's XPBOOT (SGI) and converts it to an uncached virtual AMO address.
Depends on a patch submitted on 23 March 2005 with the subject of:
[PATCH 2/3] SGI Altix cross partition functionality (2nd revision)
Signed-off-by: Dean Nelson <dcn@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch/ia64/sn/kernel')
-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) return NULL; } } + } else if (!IS_AMO_ADDRESS((u64) amos_page)) { + /* + * EFI's XPBOOT can also set amos_page in the reserved page, + * but it happens to leave it as an uncached physical address + * and we need it to be an uncached virtual, so we'll have to + * convert it. + */ + if (!IS_AMO_PHYS_ADDRESS((u64) amos_page)) { + dev_err(xpc_part, "previously used amos_page address " + "is bad = 0x%p\n", (void *) amos_page); + return NULL; + } + amos_page = (AMO_t *) TO_AMO((u64) amos_page); } memset(xpc_vars, 0, sizeof(struct xpc_vars)); @@ -944,7 +957,7 @@ xpc_discovery(void) /* * Given a partid, get the nasids owned by that partition from the - * remote partitions reserved page. + * remote partition's reserved page. */ enum xpc_retval xpc_initiate_partid_to_nasids(partid_t partid, void *nasid_mask) |