sgi-xp: isolate remote copy buffer to sn2 only
Make the remote copy buffer an sn2 only item. Signed-off-by: Dean Nelson <dcn@sgi.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
a7b4d50920
commit
ee6665e3b6
@ -150,26 +150,6 @@ struct xpc_vars_sn2 {
|
||||
|
||||
#define XPC_V_VERSION _XPC_VERSION(3, 1) /* version 3.1 of the cross vars */
|
||||
|
||||
/*
|
||||
* The following pertains to ia64-sn2 only.
|
||||
*
|
||||
* Memory for XPC's amo variables is allocated by the MSPEC driver. These
|
||||
* pages are located in the lowest granule. The lowest granule uses 4k pages
|
||||
* for cached references and an alternate TLB handler to never provide a
|
||||
* cacheable mapping for the entire region. This will prevent speculative
|
||||
* reading of cached copies of our lines from being issued which will cause
|
||||
* a PI FSB Protocol error to be generated by the SHUB. For XPC, we need 64
|
||||
* amo variables (based on XP_MAX_NPARTITIONS_SN2) to identify the senders of
|
||||
* NOTIFY IRQs, 128 amo variables (based on XP_NASID_MASK_WORDS) to identify
|
||||
* the senders of ACTIVATE IRQs, 1 amo variable to identify which remote
|
||||
* partitions (i.e., XPCs) consider themselves currently engaged with the
|
||||
* local XPC and 1 amo variable to request partition deactivation.
|
||||
*/
|
||||
#define XPC_NOTIFY_IRQ_AMOS 0
|
||||
#define XPC_ACTIVATE_IRQ_AMOS (XPC_NOTIFY_IRQ_AMOS + XP_MAX_NPARTITIONS_SN2)
|
||||
#define XPC_ENGAGED_PARTITIONS_AMO (XPC_ACTIVATE_IRQ_AMOS + XP_NASID_MASK_WORDS)
|
||||
#define XPC_DEACTIVATE_REQUEST_AMO (XPC_ENGAGED_PARTITIONS_AMO + 1)
|
||||
|
||||
/*
|
||||
* The following structure describes the per partition specific variables.
|
||||
*
|
||||
@ -214,9 +194,10 @@ struct xpc_vars_part_sn2 {
|
||||
#define XPC_RP_VARS_SIZE L1_CACHE_ALIGN(sizeof(struct xpc_vars_sn2))
|
||||
|
||||
#define XPC_RP_PART_NASIDS(_rp) ((u64 *)((u8 *)(_rp) + XPC_RP_HEADER_SIZE))
|
||||
#define XPC_RP_MACH_NASIDS(_rp) (XPC_RP_PART_NASIDS(_rp) + xp_nasid_mask_words)
|
||||
#define XPC_RP_VARS(_rp) ((struct xpc_vars_sn2 *)(XPC_RP_MACH_NASIDS(_rp) + \
|
||||
xp_nasid_mask_words))
|
||||
#define XPC_RP_MACH_NASIDS(_rp) (XPC_RP_PART_NASIDS(_rp) + xpc_nasid_mask_words)
|
||||
#define XPC_RP_VARS(_rp) ((struct xpc_vars_sn2 *) \
|
||||
(XPC_RP_MACH_NASIDS(_rp) + \
|
||||
xpc_nasid_mask_words))
|
||||
|
||||
/*
|
||||
* Functions registered by add_timer() or called by kernel_thread() only
|
||||
@ -225,11 +206,11 @@ struct xpc_vars_part_sn2 {
|
||||
* the passed argument.
|
||||
*/
|
||||
#define XPC_PACK_ARGS(_arg1, _arg2) \
|
||||
((((u64) _arg1) & 0xffffffff) | \
|
||||
((((u64) _arg2) & 0xffffffff) << 32))
|
||||
((((u64)_arg1) & 0xffffffff) | \
|
||||
((((u64)_arg2) & 0xffffffff) << 32))
|
||||
|
||||
#define XPC_UNPACK_ARG1(_args) (((u64) _args) & 0xffffffff)
|
||||
#define XPC_UNPACK_ARG2(_args) ((((u64) _args) >> 32) & 0xffffffff)
|
||||
#define XPC_UNPACK_ARG1(_args) (((u64)_args) & 0xffffffff)
|
||||
#define XPC_UNPACK_ARG2(_args) ((((u64)_args) >> 32) & 0xffffffff)
|
||||
|
||||
/*
|
||||
* Define a Get/Put value pair (pointers) used with a message queue.
|
||||
@ -710,12 +691,10 @@ extern void xpc_exit_uv(void);
|
||||
|
||||
/* found in xpc_partition.c */
|
||||
extern int xpc_exiting;
|
||||
extern int xp_nasid_mask_words;
|
||||
extern int xpc_nasid_mask_words;
|
||||
extern struct xpc_rsvd_page *xpc_rsvd_page;
|
||||
extern u64 *xpc_mach_nasids;
|
||||
extern struct xpc_partition *xpc_partitions;
|
||||
extern char *xpc_remote_copy_buffer;
|
||||
extern void *xpc_remote_copy_buffer_base;
|
||||
extern void *xpc_kmalloc_cacheline_aligned(size_t, gfp_t, void **);
|
||||
extern struct xpc_rsvd_page *xpc_setup_rsvd_page(void);
|
||||
extern int xpc_identify_activate_IRQ_sender(void);
|
||||
|
Reference in New Issue
Block a user