Lines Matching full:part

376 	struct xpc_partition *part;
383 part = &xpc_partitions[partid];
385 if (part->sn.uv.act_state_req == 0)
391 act_state_req = part->sn.uv.act_state_req;
392 part->sn.uv.act_state_req = 0;
396 if (part->act_state == XPC_P_AS_INACTIVE)
397 xpc_activate_partition(part);
398 else if (part->act_state == XPC_P_AS_DEACTIVATING)
399 XPC_DEACTIVATE_PARTITION(part, xpReactivating);
402 if (part->act_state == XPC_P_AS_INACTIVE)
403 xpc_activate_partition(part);
405 XPC_DEACTIVATE_PARTITION(part, xpReactivating);
408 XPC_DEACTIVATE_PARTITION(part, part->sn.uv.reason);
423 xpc_handle_activate_mq_msg_uv(struct xpc_partition *part,
429 struct xpc_partition_uv *part_uv = &part->sn.uv;
454 part->remote_rp_pa = msg->rp_gpa; /* !!! _pa is _gpa */
455 part->remote_rp_ts_jiffies = msg_hdr->rp_ts_jiffies;
496 args = &part->remote_openclose_args[msg->ch_number];
499 spin_lock_irqsave(&part->chctl_lock, irq_flags);
500 part->chctl.flags[msg->ch_number] |= XPC_CHCTL_CLOSEREQUEST;
501 spin_unlock_irqrestore(&part->chctl_lock, irq_flags);
503 xpc_wakeup_channel_mgr(part);
516 spin_lock_irqsave(&part->chctl_lock, irq_flags);
517 part->chctl.flags[msg->ch_number] |= XPC_CHCTL_CLOSEREPLY;
518 spin_unlock_irqrestore(&part->chctl_lock, irq_flags);
520 xpc_wakeup_channel_mgr(part);
532 args = &part->remote_openclose_args[msg->ch_number];
536 spin_lock_irqsave(&part->chctl_lock, irq_flags);
537 part->chctl.flags[msg->ch_number] |= XPC_CHCTL_OPENREQUEST;
538 spin_unlock_irqrestore(&part->chctl_lock, irq_flags);
540 xpc_wakeup_channel_mgr(part);
551 args = &part->remote_openclose_args[msg->ch_number];
556 spin_lock_irqsave(&part->chctl_lock, irq_flags);
557 part->chctl.flags[msg->ch_number] |= XPC_CHCTL_OPENREPLY;
558 spin_unlock_irqrestore(&part->chctl_lock, irq_flags);
560 xpc_wakeup_channel_mgr(part);
571 spin_lock_irqsave(&part->chctl_lock, irq_flags);
572 part->chctl.flags[msg->ch_number] |= XPC_CHCTL_OPENCOMPLETE;
573 spin_unlock_irqrestore(&part->chctl_lock, irq_flags);
575 xpc_wakeup_channel_mgr(part);
592 "from partition=%d\n", msg_hdr->type, XPC_PARTID(part));
606 if (msg_hdr->rp_ts_jiffies != part->remote_rp_ts_jiffies &&
607 part->remote_rp_ts_jiffies != 0) {
627 struct xpc_partition *part;
642 part = &xpc_partitions[partid];
644 part_referenced = xpc_part_ref(part);
645 xpc_handle_activate_mq_msg_uv(part, msg_hdr,
649 xpc_part_deref(part);
676 xpc_send_activate_IRQ_uv(struct xpc_partition *part, void *msg, size_t msg_size,
680 struct xpc_partition_uv *part_uv = &part->sn.uv;
689 msg_hdr->act_state = part->act_state;
732 xpc_send_activate_IRQ_part_uv(struct xpc_partition *part, void *msg,
737 ret = xpc_send_activate_IRQ_uv(part, msg, msg_size, msg_type);
739 XPC_DEACTIVATE_PARTITION(part, ret);
746 struct xpc_partition *part = &xpc_partitions[ch->partid];
749 ret = xpc_send_activate_IRQ_uv(part, msg, msg_size, msg_type);
754 XPC_DEACTIVATE_PARTITION(part, ret);
762 xpc_send_local_activate_IRQ_uv(struct xpc_partition *part, int act_state_req)
765 struct xpc_partition_uv *part_uv = &part->sn.uv;
875 xpc_get_remote_heartbeat_uv(struct xpc_partition *part)
877 struct xpc_partition_uv *part_uv = &part->sn.uv;
886 if (part_uv->cached_heartbeat.value == part->last_heartbeat &&
891 part->last_heartbeat = part_uv->cached_heartbeat.value;
901 struct xpc_partition *part = &xpc_partitions[partid];
904 part->remote_rp_pa = remote_rp_gpa; /* !!! _pa here is really _gpa */
905 part->remote_rp_ts_jiffies = remote_rp->ts_jiffies;
906 part->sn.uv.heartbeat_gpa = remote_rp->sn.uv.heartbeat_gpa;
907 part->sn.uv.activate_gru_mq_desc_gpa =
914 if (part->sn.uv.remote_act_state == XPC_P_AS_INACTIVE) {
919 xpc_send_activate_IRQ_part_uv(part, &msg, sizeof(msg),
923 if (part->act_state == XPC_P_AS_INACTIVE)
924 xpc_send_local_activate_IRQ_uv(part, XPC_P_ASR_ACTIVATE_UV);
928 xpc_request_partition_reactivation_uv(struct xpc_partition *part)
930 xpc_send_local_activate_IRQ_uv(part, XPC_P_ASR_ACTIVATE_UV);
934 xpc_request_partition_deactivation_uv(struct xpc_partition *part)
942 if (part->sn.uv.remote_act_state != XPC_P_AS_DEACTIVATING &&
943 part->sn.uv.remote_act_state != XPC_P_AS_INACTIVE) {
945 msg.reason = part->reason;
946 xpc_send_activate_IRQ_part_uv(part, &msg, sizeof(msg),
952 xpc_cancel_partition_deactivation_request_uv(struct xpc_partition *part)
1016 xpc_setup_ch_structures_uv(struct xpc_partition *part)
1021 for (ch_number = 0; ch_number < part->nchannels; ch_number++) {
1022 ch_uv = &part->channels[ch_number].sn.uv;
1035 xpc_teardown_ch_structures_uv(struct xpc_partition *part)
1042 xpc_make_first_contact_uv(struct xpc_partition *part)
1051 xpc_send_activate_IRQ_part_uv(part, &msg, sizeof(msg),
1054 while (!((part->sn.uv.remote_act_state == XPC_P_AS_ACTIVATING) ||
1055 (part->sn.uv.remote_act_state == XPC_P_AS_ACTIVE))) {
1058 "partition %d\n", XPC_PARTID(part));
1063 if (part->act_state == XPC_P_AS_DEACTIVATING)
1064 return part->reason;
1071 xpc_get_chctl_all_flags_uv(struct xpc_partition *part)
1076 spin_lock_irqsave(&part->chctl_lock, irq_flags);
1077 chctl = part->chctl;
1079 part->chctl.all_flags = 0;
1081 spin_unlock_irqrestore(&part->chctl_lock, irq_flags);
1260 xpc_send_chctl_local_msgrequest_uv(struct xpc_partition *part, int ch_number)
1264 spin_lock_irqsave(&part->chctl_lock, irq_flags);
1265 part->chctl.flags[ch_number] |= XPC_CHCTL_MSGREQUEST;
1266 spin_unlock_irqrestore(&part->chctl_lock, irq_flags);
1268 xpc_wakeup_channel_mgr(part);
1283 xpc_indicate_partition_engaged_uv(struct xpc_partition *part)
1287 xpc_send_activate_IRQ_part_uv(part, &msg, sizeof(msg),
1292 xpc_indicate_partition_disengaged_uv(struct xpc_partition *part)
1296 xpc_send_activate_IRQ_part_uv(part, &msg, sizeof(msg),
1410 xpc_handle_notify_mq_msg_uv(struct xpc_partition *part,
1413 struct xpc_partition_uv *part_uv = &part->sn.uv;
1420 if (unlikely(ch_number >= part->nchannels)) {
1423 ch_number, XPC_PARTID(part));
1437 ch = &part->channels[ch_number];
1473 xpc_send_chctl_local_msgrequest_uv(part, ch->number);
1483 struct xpc_partition *part;
1493 part = &xpc_partitions[partid];
1495 if (xpc_part_ref(part)) {
1496 xpc_handle_notify_mq_msg_uv(part, msg);
1497 xpc_part_deref(part);
1514 xpc_process_msg_chctl_flags_uv(struct xpc_partition *part, int ch_number)
1516 struct xpc_channel *ch = &part->channels[ch_number];