(volatile s64) ch->w_remote_GP.get = ch->remote_GP.get; 
ch->w_remote_GP.get = ch->remote_GP.get; 
xpc_process_msg_IPI(struct xpc_partition *part, int ch_number){	struct xpc_channel *ch = &part->channels[ch_number];	int nmsgs_sent;	ch->remote_GP = part->remote_GPs[ch_number];	/* See what, if anything, has changed for each connected channel */	xpc_msgqueue_ref(ch);	if (ch->w_remote_GP.get == ch->remote_GP.get &&				ch->w_remote_GP.put == ch->remote_GP.put) {		/* nothing changed since GPs were last pulled */		xpc_msgqueue_deref(ch);		return;	}	if (!(ch->flags & XPC_C_CONNECTED)){		xpc_msgqueue_deref(ch);		return;	}	/*	 * First check to see if messages recently sent by us have been	 * received by the other side. (The remote GET value will have	 * changed since we last looked at it.)	 */	if (ch->w_remote_GP.get != ch->remote_GP.get) {		/*		 * We need to notify any senders that want to be notified		 * that their sent messages have been received by their		 * intended recipients. We need to do this before updating		 * w_remote_GP.get so that we don't allocate the same message		 * queue entries prematurely (see xpc_allocate_msg()).		 */		if (atomic_read(&ch->n_to_notify) > 0) {			/*			 * Notify senders that messages sent have been			 * received and delivered by the other side.			 */			xpc_notify_senders(ch, xpcMsgDelivered,							ch->remote_GP.get);		}		/*		 * Clear msg->flags in previously sent messages, so that		 * they're ready for xpc_allocate_msg().		 */		xpc_clear_local_msgqueue_flags(ch);		(volatile s64) ch->w_remote_GP.get = ch->remote_GP.get;		dev_dbg(xpc_chan, "w_remote_GP.get changed to %ld, partid=%d, "			"channel=%d\n", ch->w_remote_GP.get, ch->partid,			ch->number);		/*		 * If anyone was waiting for message queue entries to become		 * available, wake them up.		 */		if (atomic_read(&ch->n_on_msg_allocate_wq) > 0) {			wake_up(&ch->msg_allocate_wq);		}	}	/*	 * Now check for newly sent messages by the other side. (The remote	 * PUT value will have changed since we last looked at it.)	 */	if (ch->w_remote_GP.put != ch->remote_GP.put) {		/*		 * Clear msg->flags in previously received messages, so that		 * they're ready for xpc_get_deliverable_msg().		 */		xpc_clear_remote_msgqueue_flags(ch);		(volatile s64) ch->w_remote_GP.put = ch->remote_GP.put;		dev_dbg(xpc_chan, "w_remote_GP.put changed to %ld, partid=%d, "			"channel=%d\n", ch->w_remote_GP.put, ch->partid,			ch->number);		nmsgs_sent = ch->w_remote_GP.put - ch->w_local_GP.get;		if (nmsgs_sent > 0) {			dev_dbg(xpc_chan, "msgs waiting to be copied and "				"delivered=%d, partid=%d, channel=%d\n",				nmsgs_sent, ch->partid, ch->number);			if (ch->flags & XPC_C_CONNECTCALLOUT) {				xpc_activate_kthreads(ch, nmsgs_sent);			}		}	}	xpc_msgqueue_deref(ch);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/821fe94727e72d63e1abd1bc0b044c72dfad9fb6/xpc_channel.c/buggy/arch/ia64/sn/kernel/xpc_channel.c