(volatile u64) xpc_vars_part[partid].magic = XPC_VP_MAGIC2; 
xpc_vars_part[partid].magic = XPC_VP_MAGIC2; 
xpc_pull_remote_vars_part(struct xpc_partition *part){	u8 buffer[L1_CACHE_BYTES * 2];	struct xpc_vars_part *pulled_entry_cacheline =			(struct xpc_vars_part *) L1_CACHE_ALIGN((u64) buffer);	struct xpc_vars_part *pulled_entry;	u64 remote_entry_cacheline_pa, remote_entry_pa;	partid_t partid = XPC_PARTID(part);	enum xpc_retval ret;	/* pull the cacheline that contains the variables we're interested in */	DBUG_ON(part->remote_vars_part_pa !=				L1_CACHE_ALIGN(part->remote_vars_part_pa));	DBUG_ON(sizeof(struct xpc_vars_part) != L1_CACHE_BYTES / 2);	remote_entry_pa = part->remote_vars_part_pa +			sn_partition_id * sizeof(struct xpc_vars_part);	remote_entry_cacheline_pa = (remote_entry_pa & ~(L1_CACHE_BYTES - 1));	pulled_entry = (struct xpc_vars_part *) ((u64) pulled_entry_cacheline +				(remote_entry_pa & (L1_CACHE_BYTES - 1)));	ret = xpc_pull_remote_cachelines(part, pulled_entry_cacheline,					(void *) remote_entry_cacheline_pa,					L1_CACHE_BYTES);	if (ret != xpcSuccess) {		dev_dbg(xpc_chan, "failed to pull XPC vars_part from "			"partition %d, ret=%d\n", partid, ret);		return ret;	}	/* see if they've been set up yet */	if (pulled_entry->magic != XPC_VP_MAGIC1 &&				pulled_entry->magic != XPC_VP_MAGIC2) {		if (pulled_entry->magic != 0) {			dev_dbg(xpc_chan, "partition %d's XPC vars_part for "				"partition %d has bad magic value (=0x%lx)\n",				partid, sn_partition_id, pulled_entry->magic);			return xpcBadMagic;		}		/* they've not been initialized yet */		return xpcRetry;	}	if (xpc_vars_part[partid].magic == XPC_VP_MAGIC1) {		/* validate the variables */		if (pulled_entry->GPs_pa == 0 ||				pulled_entry->openclose_args_pa == 0 ||					pulled_entry->IPI_amo_pa == 0) {			dev_err(xpc_chan, "partition %d's XPC vars_part for "				"partition %d are not valid\n", partid,				sn_partition_id);			return xpcInvalidAddress;		}		/* the variables we imported look to be valid */		part->remote_GPs_pa = pulled_entry->GPs_pa;		part->remote_openclose_args_pa =					pulled_entry->openclose_args_pa;		part->remote_IPI_amo_va =				      (AMO_t *) __va(pulled_entry->IPI_amo_pa);		part->remote_IPI_nasid = pulled_entry->IPI_nasid;		part->remote_IPI_phys_cpuid = pulled_entry->IPI_phys_cpuid;		if (part->nchannels > pulled_entry->nchannels) {			part->nchannels = pulled_entry->nchannels;		}		/* let the other side know that we've pulled their variables */		(volatile u64) xpc_vars_part[partid].magic = XPC_VP_MAGIC2;	}	if (pulled_entry->magic == XPC_VP_MAGIC1) {		return xpcRetry;	}	return xpcSuccess;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/821fe94727e72d63e1abd1bc0b044c72dfad9fb6/xpc_channel.c/buggy/arch/ia64/sn/kernel/xpc_channel.c