Lines Matching refs:part

305 	struct xpc_partition *part;
312 part = &xpc_partitions[partid];
314 if (part->sn.uv.act_state_req == 0)
320 act_state_req = part->sn.uv.act_state_req;
321 part->sn.uv.act_state_req = 0;
325 if (part->act_state == XPC_P_AS_INACTIVE)
326 xpc_activate_partition(part);
327 else if (part->act_state == XPC_P_AS_DEACTIVATING)
328 XPC_DEACTIVATE_PARTITION(part, xpReactivating);
331 if (part->act_state == XPC_P_AS_INACTIVE)
332 xpc_activate_partition(part);
334 XPC_DEACTIVATE_PARTITION(part, xpReactivating);
337 XPC_DEACTIVATE_PARTITION(part, part->sn.uv.reason);
352 xpc_handle_activate_mq_msg_uv(struct xpc_partition *part,
358 struct xpc_partition_uv *part_uv = &part->sn.uv;
383 part->remote_rp_pa = msg->rp_gpa; /* !!! _pa is _gpa */
384 part->remote_rp_ts_jiffies = msg_hdr->rp_ts_jiffies;
425 args = &part->remote_openclose_args[msg->ch_number];
428 spin_lock_irqsave(&part->chctl_lock, irq_flags);
429 part->chctl.flags[msg->ch_number] |= XPC_CHCTL_CLOSEREQUEST;
430 spin_unlock_irqrestore(&part->chctl_lock, irq_flags);
432 xpc_wakeup_channel_mgr(part);
445 spin_lock_irqsave(&part->chctl_lock, irq_flags);
446 part->chctl.flags[msg->ch_number] |= XPC_CHCTL_CLOSEREPLY;
447 spin_unlock_irqrestore(&part->chctl_lock, irq_flags);
449 xpc_wakeup_channel_mgr(part);
461 args = &part->remote_openclose_args[msg->ch_number];
465 spin_lock_irqsave(&part->chctl_lock, irq_flags);
466 part->chctl.flags[msg->ch_number] |= XPC_CHCTL_OPENREQUEST;
467 spin_unlock_irqrestore(&part->chctl_lock, irq_flags);
469 xpc_wakeup_channel_mgr(part);
480 args = &part->remote_openclose_args[msg->ch_number];
485 spin_lock_irqsave(&part->chctl_lock, irq_flags);
486 part->chctl.flags[msg->ch_number] |= XPC_CHCTL_OPENREPLY;
487 spin_unlock_irqrestore(&part->chctl_lock, irq_flags);
489 xpc_wakeup_channel_mgr(part);
500 spin_lock_irqsave(&part->chctl_lock, irq_flags);
501 part->chctl.flags[msg->ch_number] |= XPC_CHCTL_OPENCOMPLETE;
502 spin_unlock_irqrestore(&part->chctl_lock, irq_flags);
504 xpc_wakeup_channel_mgr(part);
521 "from partition=%d\n", msg_hdr->type, XPC_PARTID(part));
535 if (msg_hdr->rp_ts_jiffies != part->remote_rp_ts_jiffies &&
536 part->remote_rp_ts_jiffies != 0) {
556 struct xpc_partition *part;
571 part = &xpc_partitions[partid];
573 part_referenced = xpc_part_ref(part);
574 xpc_handle_activate_mq_msg_uv(part, msg_hdr,
578 xpc_part_deref(part);
605 xpc_send_activate_IRQ_uv(struct xpc_partition *part, void *msg, size_t msg_size,
609 struct xpc_partition_uv *part_uv = &part->sn.uv;
618 msg_hdr->act_state = part->act_state;
661 xpc_send_activate_IRQ_part_uv(struct xpc_partition *part, void *msg,
666 ret = xpc_send_activate_IRQ_uv(part, msg, msg_size, msg_type);
668 XPC_DEACTIVATE_PARTITION(part, ret);
675 struct xpc_partition *part = &xpc_partitions[ch->partid];
678 ret = xpc_send_activate_IRQ_uv(part, msg, msg_size, msg_type);
683 XPC_DEACTIVATE_PARTITION(part, ret);
691 xpc_send_local_activate_IRQ_uv(struct xpc_partition *part, int act_state_req)
694 struct xpc_partition_uv *part_uv = &part->sn.uv;
790 xpc_get_remote_heartbeat_uv(struct xpc_partition *part)
792 struct xpc_partition_uv *part_uv = &part->sn.uv;
801 if (part_uv->cached_heartbeat.value == part->last_heartbeat &&
806 part->last_heartbeat = part_uv->cached_heartbeat.value;
816 struct xpc_partition *part = &xpc_partitions[partid];
819 part->remote_rp_pa = remote_rp_gpa; /* !!! _pa here is really _gpa */
820 part->remote_rp_ts_jiffies = remote_rp->ts_jiffies;
821 part->sn.uv.heartbeat_gpa = remote_rp->sn.uv.heartbeat_gpa;
822 part->sn.uv.activate_gru_mq_desc_gpa =
829 if (part->sn.uv.remote_act_state == XPC_P_AS_INACTIVE) {
834 xpc_send_activate_IRQ_part_uv(part, &msg, sizeof(msg),
838 if (part->act_state == XPC_P_AS_INACTIVE)
839 xpc_send_local_activate_IRQ_uv(part, XPC_P_ASR_ACTIVATE_UV);
843 xpc_request_partition_reactivation_uv(struct xpc_partition *part)
845 xpc_send_local_activate_IRQ_uv(part, XPC_P_ASR_ACTIVATE_UV);
849 xpc_request_partition_deactivation_uv(struct xpc_partition *part)
857 if (part->sn.uv.remote_act_state != XPC_P_AS_DEACTIVATING &&
858 part->sn.uv.remote_act_state != XPC_P_AS_INACTIVE) {
860 msg.reason = part->reason;
861 xpc_send_activate_IRQ_part_uv(part, &msg, sizeof(msg),
867 xpc_cancel_partition_deactivation_request_uv(struct xpc_partition *part)
931 xpc_setup_ch_structures_uv(struct xpc_partition *part)
936 for (ch_number = 0; ch_number < part->nchannels; ch_number++) {
937 ch_uv = &part->channels[ch_number].sn.uv;
950 xpc_teardown_ch_structures_uv(struct xpc_partition *part)
957 xpc_make_first_contact_uv(struct xpc_partition *part)
966 xpc_send_activate_IRQ_part_uv(part, &msg, sizeof(msg),
969 while (!((part->sn.uv.remote_act_state == XPC_P_AS_ACTIVATING) ||
970 (part->sn.uv.remote_act_state == XPC_P_AS_ACTIVE))) {
973 "partition %d\n", XPC_PARTID(part));
978 if (part->act_state == XPC_P_AS_DEACTIVATING)
979 return part->reason;
986 xpc_get_chctl_all_flags_uv(struct xpc_partition *part)
991 spin_lock_irqsave(&part->chctl_lock, irq_flags);
992 chctl = part->chctl;
994 part->chctl.all_flags = 0;
996 spin_unlock_irqrestore(&part->chctl_lock, irq_flags);
1175 xpc_send_chctl_local_msgrequest_uv(struct xpc_partition *part, int ch_number)
1179 spin_lock_irqsave(&part->chctl_lock, irq_flags);
1180 part->chctl.flags[ch_number] |= XPC_CHCTL_MSGREQUEST;
1181 spin_unlock_irqrestore(&part->chctl_lock, irq_flags);
1183 xpc_wakeup_channel_mgr(part);
1198 xpc_indicate_partition_engaged_uv(struct xpc_partition *part)
1202 xpc_send_activate_IRQ_part_uv(part, &msg, sizeof(msg),
1207 xpc_indicate_partition_disengaged_uv(struct xpc_partition *part)
1211 xpc_send_activate_IRQ_part_uv(part, &msg, sizeof(msg),
1325 xpc_handle_notify_mq_msg_uv(struct xpc_partition *part,
1328 struct xpc_partition_uv *part_uv = &part->sn.uv;
1335 if (unlikely(ch_number >= part->nchannels)) {
1338 ch_number, XPC_PARTID(part));
1352 ch = &part->channels[ch_number];
1388 xpc_send_chctl_local_msgrequest_uv(part, ch->number);
1398 struct xpc_partition *part;
1408 part = &xpc_partitions[partid];
1410 if (xpc_part_ref(part)) {
1411 xpc_handle_notify_mq_msg_uv(part, msg);
1412 xpc_part_deref(part);
1429 xpc_process_msg_chctl_flags_uv(struct xpc_partition *part, int ch_number)
1431 struct xpc_channel *ch = &part->channels[ch_number];