Lines Matching refs:tx
561 const struct pkvm_mem_transition tx; member
566 const struct pkvm_mem_transition tx; member
626 const struct pkvm_mem_transition *tx) in host_request_owned_transition() argument
628 u64 size = tx->nr_pages * PAGE_SIZE; in host_request_owned_transition()
629 u64 addr = tx->initiator.addr; in host_request_owned_transition()
631 *completer_addr = tx->initiator.host.completer_addr; in host_request_owned_transition()
636 const struct pkvm_mem_transition *tx) in host_request_unshare() argument
638 u64 size = tx->nr_pages * PAGE_SIZE; in host_request_unshare()
639 u64 addr = tx->initiator.addr; in host_request_unshare()
641 *completer_addr = tx->initiator.host.completer_addr; in host_request_unshare()
646 const struct pkvm_mem_transition *tx) in host_initiate_share() argument
648 u64 size = tx->nr_pages * PAGE_SIZE; in host_initiate_share()
649 u64 addr = tx->initiator.addr; in host_initiate_share()
651 *completer_addr = tx->initiator.host.completer_addr; in host_initiate_share()
656 const struct pkvm_mem_transition *tx) in host_initiate_unshare() argument
658 u64 size = tx->nr_pages * PAGE_SIZE; in host_initiate_unshare()
659 u64 addr = tx->initiator.addr; in host_initiate_unshare()
661 *completer_addr = tx->initiator.host.completer_addr; in host_initiate_unshare()
666 const struct pkvm_mem_transition *tx) in host_initiate_donation() argument
668 u8 owner_id = tx->completer.id; in host_initiate_donation()
669 u64 size = tx->nr_pages * PAGE_SIZE; in host_initiate_donation()
671 *completer_addr = tx->initiator.host.completer_addr; in host_initiate_donation()
672 return host_stage2_set_owner_locked(tx->initiator.addr, size, owner_id); in host_initiate_donation()
675 static bool __host_ack_skip_pgtable_check(const struct pkvm_mem_transition *tx) in __host_ack_skip_pgtable_check() argument
678 tx->initiator.id != PKVM_ID_HYP); in __host_ack_skip_pgtable_check()
681 static int __host_ack_transition(u64 addr, const struct pkvm_mem_transition *tx, in __host_ack_transition() argument
684 u64 size = tx->nr_pages * PAGE_SIZE; in __host_ack_transition()
686 if (__host_ack_skip_pgtable_check(tx)) in __host_ack_transition()
692 static int host_ack_donation(u64 addr, const struct pkvm_mem_transition *tx) in host_ack_donation() argument
694 return __host_ack_transition(addr, tx, PKVM_NOPAGE); in host_ack_donation()
697 static int host_complete_donation(u64 addr, const struct pkvm_mem_transition *tx) in host_complete_donation() argument
699 u64 size = tx->nr_pages * PAGE_SIZE; in host_complete_donation()
700 u8 host_id = tx->completer.id; in host_complete_donation()
726 const struct pkvm_mem_transition *tx) in hyp_request_donation() argument
728 u64 size = tx->nr_pages * PAGE_SIZE; in hyp_request_donation()
729 u64 addr = tx->initiator.addr; in hyp_request_donation()
731 *completer_addr = tx->initiator.hyp.completer_addr; in hyp_request_donation()
736 const struct pkvm_mem_transition *tx) in hyp_initiate_donation() argument
738 u64 size = tx->nr_pages * PAGE_SIZE; in hyp_initiate_donation()
741 *completer_addr = tx->initiator.hyp.completer_addr; in hyp_initiate_donation()
742 ret = kvm_pgtable_hyp_unmap(&pkvm_pgtable, tx->initiator.addr, size); in hyp_initiate_donation()
746 static bool __hyp_ack_skip_pgtable_check(const struct pkvm_mem_transition *tx) in __hyp_ack_skip_pgtable_check() argument
749 tx->initiator.id != PKVM_ID_HOST); in __hyp_ack_skip_pgtable_check()
752 static int hyp_ack_share(u64 addr, const struct pkvm_mem_transition *tx, in hyp_ack_share() argument
755 u64 size = tx->nr_pages * PAGE_SIZE; in hyp_ack_share()
760 if (__hyp_ack_skip_pgtable_check(tx)) in hyp_ack_share()
766 static int hyp_ack_unshare(u64 addr, const struct pkvm_mem_transition *tx) in hyp_ack_unshare() argument
768 u64 size = tx->nr_pages * PAGE_SIZE; in hyp_ack_unshare()
770 if (tx->initiator.id == PKVM_ID_HOST && hyp_page_count((void *)addr)) in hyp_ack_unshare()
773 if (__hyp_ack_skip_pgtable_check(tx)) in hyp_ack_unshare()
780 static int hyp_ack_donation(u64 addr, const struct pkvm_mem_transition *tx) in hyp_ack_donation() argument
782 u64 size = tx->nr_pages * PAGE_SIZE; in hyp_ack_donation()
784 if (__hyp_ack_skip_pgtable_check(tx)) in hyp_ack_donation()
790 static int hyp_complete_share(u64 addr, const struct pkvm_mem_transition *tx, in hyp_complete_share() argument
793 void *start = (void *)addr, *end = start + (tx->nr_pages * PAGE_SIZE); in hyp_complete_share()
800 static int hyp_complete_unshare(u64 addr, const struct pkvm_mem_transition *tx) in hyp_complete_unshare() argument
802 u64 size = tx->nr_pages * PAGE_SIZE; in hyp_complete_unshare()
809 const struct pkvm_mem_transition *tx) in hyp_complete_donation() argument
811 void *start = (void *)addr, *end = start + (tx->nr_pages * PAGE_SIZE); in hyp_complete_donation()
819 const struct pkvm_mem_transition *tx = &share->tx; in check_share() local
823 switch (tx->initiator.id) { in check_share()
825 ret = host_request_owned_transition(&completer_addr, tx); in check_share()
834 switch (tx->completer.id) { in check_share()
836 ret = hyp_ack_share(completer_addr, tx, share->completer_prot); in check_share()
847 const struct pkvm_mem_transition *tx = &share->tx; in __do_share() local
851 switch (tx->initiator.id) { in __do_share()
853 ret = host_initiate_share(&completer_addr, tx); in __do_share()
862 switch (tx->completer.id) { in __do_share()
864 ret = hyp_complete_share(completer_addr, tx, share->completer_prot); in __do_share()
895 const struct pkvm_mem_transition *tx = &share->tx; in check_unshare() local
899 switch (tx->initiator.id) { in check_unshare()
901 ret = host_request_unshare(&completer_addr, tx); in check_unshare()
910 switch (tx->completer.id) { in check_unshare()
912 ret = hyp_ack_unshare(completer_addr, tx); in check_unshare()
923 const struct pkvm_mem_transition *tx = &share->tx; in __do_unshare() local
927 switch (tx->initiator.id) { in __do_unshare()
929 ret = host_initiate_unshare(&completer_addr, tx); in __do_unshare()
938 switch (tx->completer.id) { in __do_unshare()
940 ret = hyp_complete_unshare(completer_addr, tx); in __do_unshare()
971 const struct pkvm_mem_transition *tx = &donation->tx; in check_donation() local
975 switch (tx->initiator.id) { in check_donation()
977 ret = host_request_owned_transition(&completer_addr, tx); in check_donation()
980 ret = hyp_request_donation(&completer_addr, tx); in check_donation()
989 switch (tx->completer.id) { in check_donation()
991 ret = host_ack_donation(completer_addr, tx); in check_donation()
994 ret = hyp_ack_donation(completer_addr, tx); in check_donation()
1005 const struct pkvm_mem_transition *tx = &donation->tx; in __do_donate() local
1009 switch (tx->initiator.id) { in __do_donate()
1011 ret = host_initiate_donation(&completer_addr, tx); in __do_donate()
1014 ret = hyp_initiate_donation(&completer_addr, tx); in __do_donate()
1023 switch (tx->completer.id) { in __do_donate()
1025 ret = host_complete_donation(completer_addr, tx); in __do_donate()
1028 ret = hyp_complete_donation(completer_addr, tx); in __do_donate()
1063 .tx = { in __pkvm_host_share_hyp()
1096 .tx = { in __pkvm_host_unshare_hyp()
1129 .tx = { in __pkvm_host_donate_hyp()
1161 .tx = { in __pkvm_hyp_donate_host()