synic             530 arch/x86/include/asm/kvm_host.h 	struct kvm_vcpu_hv_synic synic;
synic              42 arch/x86/kvm/hyperv.c static inline u64 synic_read_sint(struct kvm_vcpu_hv_synic *synic, int sint)
synic              44 arch/x86/kvm/hyperv.c 	return atomic64_read(&synic->sint[sint]);
synic              54 arch/x86/kvm/hyperv.c static bool synic_has_vector_connected(struct kvm_vcpu_hv_synic *synic,
synic              59 arch/x86/kvm/hyperv.c 	for (i = 0; i < ARRAY_SIZE(synic->sint); i++) {
synic              60 arch/x86/kvm/hyperv.c 		if (synic_get_sint_vector(synic_read_sint(synic, i)) == vector)
synic              66 arch/x86/kvm/hyperv.c static bool synic_has_vector_auto_eoi(struct kvm_vcpu_hv_synic *synic,
synic              72 arch/x86/kvm/hyperv.c 	for (i = 0; i < ARRAY_SIZE(synic->sint); i++) {
synic              73 arch/x86/kvm/hyperv.c 		sint_value = synic_read_sint(synic, i);
synic              81 arch/x86/kvm/hyperv.c static void synic_update_vector(struct kvm_vcpu_hv_synic *synic,
synic              87 arch/x86/kvm/hyperv.c 	if (synic_has_vector_connected(synic, vector))
synic              88 arch/x86/kvm/hyperv.c 		__set_bit(vector, synic->vec_bitmap);
synic              90 arch/x86/kvm/hyperv.c 		__clear_bit(vector, synic->vec_bitmap);
synic              92 arch/x86/kvm/hyperv.c 	if (synic_has_vector_auto_eoi(synic, vector))
synic              93 arch/x86/kvm/hyperv.c 		__set_bit(vector, synic->auto_eoi_bitmap);
synic              95 arch/x86/kvm/hyperv.c 		__clear_bit(vector, synic->auto_eoi_bitmap);
synic              98 arch/x86/kvm/hyperv.c static int synic_set_sint(struct kvm_vcpu_hv_synic *synic, int sint,
synic             120 arch/x86/kvm/hyperv.c 	old_vector = synic_read_sint(synic, sint) & HV_SYNIC_SINT_VECTOR_MASK;
synic             122 arch/x86/kvm/hyperv.c 	atomic64_set(&synic->sint[sint], data);
synic             124 arch/x86/kvm/hyperv.c 	synic_update_vector(synic, old_vector);
synic             126 arch/x86/kvm/hyperv.c 	synic_update_vector(synic, vector);
synic             129 arch/x86/kvm/hyperv.c 	kvm_make_request(KVM_REQ_SCAN_IOAPIC, synic_to_vcpu(synic));
synic             153 arch/x86/kvm/hyperv.c 	struct kvm_vcpu_hv_synic *synic;
synic             158 arch/x86/kvm/hyperv.c 	synic = vcpu_to_synic(vcpu);
synic             159 arch/x86/kvm/hyperv.c 	return (synic->active) ? synic : NULL;
synic             165 arch/x86/kvm/hyperv.c 	struct kvm_vcpu_hv_synic *synic = vcpu_to_synic(vcpu);
synic             182 arch/x86/kvm/hyperv.c 	gsi = atomic_read(&synic->sint_to_gsi[sint]);
synic             188 arch/x86/kvm/hyperv.c static void synic_exit(struct kvm_vcpu_hv_synic *synic, u32 msr)
synic             190 arch/x86/kvm/hyperv.c 	struct kvm_vcpu *vcpu = synic_to_vcpu(synic);
synic             194 arch/x86/kvm/hyperv.c 	hv_vcpu->exit.u.synic.msr = msr;
synic             195 arch/x86/kvm/hyperv.c 	hv_vcpu->exit.u.synic.control = synic->control;
synic             196 arch/x86/kvm/hyperv.c 	hv_vcpu->exit.u.synic.evt_page = synic->evt_page;
synic             197 arch/x86/kvm/hyperv.c 	hv_vcpu->exit.u.synic.msg_page = synic->msg_page;
synic             202 arch/x86/kvm/hyperv.c static int synic_set_msr(struct kvm_vcpu_hv_synic *synic,
synic             205 arch/x86/kvm/hyperv.c 	struct kvm_vcpu *vcpu = synic_to_vcpu(synic);
synic             208 arch/x86/kvm/hyperv.c 	if (!synic->active && !host)
synic             216 arch/x86/kvm/hyperv.c 		synic->control = data;
synic             218 arch/x86/kvm/hyperv.c 			synic_exit(synic, msr);
synic             225 arch/x86/kvm/hyperv.c 		synic->version = data;
synic             229 arch/x86/kvm/hyperv.c 		    !synic->dont_zero_synic_pages)
synic             235 arch/x86/kvm/hyperv.c 		synic->evt_page = data;
synic             237 arch/x86/kvm/hyperv.c 			synic_exit(synic, msr);
synic             241 arch/x86/kvm/hyperv.c 		    !synic->dont_zero_synic_pages)
synic             247 arch/x86/kvm/hyperv.c 		synic->msg_page = data;
synic             249 arch/x86/kvm/hyperv.c 			synic_exit(synic, msr);
synic             254 arch/x86/kvm/hyperv.c 		for (i = 0; i < ARRAY_SIZE(synic->sint); i++)
synic             259 arch/x86/kvm/hyperv.c 		ret = synic_set_sint(synic, msr - HV_X64_MSR_SINT0, data, host);
synic             268 arch/x86/kvm/hyperv.c static int synic_get_msr(struct kvm_vcpu_hv_synic *synic, u32 msr, u64 *pdata,
synic             273 arch/x86/kvm/hyperv.c 	if (!synic->active && !host)
synic             279 arch/x86/kvm/hyperv.c 		*pdata = synic->control;
synic             282 arch/x86/kvm/hyperv.c 		*pdata = synic->version;
synic             285 arch/x86/kvm/hyperv.c 		*pdata = synic->evt_page;
synic             288 arch/x86/kvm/hyperv.c 		*pdata = synic->msg_page;
synic             294 arch/x86/kvm/hyperv.c 		*pdata = atomic64_read(&synic->sint[msr - HV_X64_MSR_SINT0]);
synic             303 arch/x86/kvm/hyperv.c static int synic_set_irq(struct kvm_vcpu_hv_synic *synic, u32 sint)
synic             305 arch/x86/kvm/hyperv.c 	struct kvm_vcpu *vcpu = synic_to_vcpu(synic);
synic             309 arch/x86/kvm/hyperv.c 	if (sint >= ARRAY_SIZE(synic->sint))
synic             312 arch/x86/kvm/hyperv.c 	vector = synic_get_sint_vector(synic_read_sint(synic, sint));
synic             330 arch/x86/kvm/hyperv.c 	struct kvm_vcpu_hv_synic *synic;
synic             332 arch/x86/kvm/hyperv.c 	synic = synic_get(kvm, vpidx);
synic             333 arch/x86/kvm/hyperv.c 	if (!synic)
synic             336 arch/x86/kvm/hyperv.c 	return synic_set_irq(synic, sint);
synic             341 arch/x86/kvm/hyperv.c 	struct kvm_vcpu_hv_synic *synic = vcpu_to_synic(vcpu);
synic             346 arch/x86/kvm/hyperv.c 	for (i = 0; i < ARRAY_SIZE(synic->sint); i++)
synic             347 arch/x86/kvm/hyperv.c 		if (synic_get_sint_vector(synic_read_sint(synic, i)) == vector)
synic             353 arch/x86/kvm/hyperv.c 	struct kvm_vcpu_hv_synic *synic;
synic             355 arch/x86/kvm/hyperv.c 	synic = synic_get(kvm, vpidx);
synic             356 arch/x86/kvm/hyperv.c 	if (!synic)
synic             359 arch/x86/kvm/hyperv.c 	if (sint >= ARRAY_SIZE(synic->sint_to_gsi))
synic             362 arch/x86/kvm/hyperv.c 	atomic_set(&synic->sint_to_gsi[sint], gsi);
synic             384 arch/x86/kvm/hyperv.c static void synic_init(struct kvm_vcpu_hv_synic *synic)
synic             388 arch/x86/kvm/hyperv.c 	memset(synic, 0, sizeof(*synic));
synic             389 arch/x86/kvm/hyperv.c 	synic->version = HV_SYNIC_VERSION_1;
synic             390 arch/x86/kvm/hyperv.c 	for (i = 0; i < ARRAY_SIZE(synic->sint); i++) {
synic             391 arch/x86/kvm/hyperv.c 		atomic64_set(&synic->sint[i], HV_SYNIC_SINT_MASKED);
synic             392 arch/x86/kvm/hyperv.c 		atomic_set(&synic->sint_to_gsi[i], -1);
synic             564 arch/x86/kvm/hyperv.c static int synic_deliver_msg(struct kvm_vcpu_hv_synic *synic, u32 sint,
synic             567 arch/x86/kvm/hyperv.c 	struct kvm_vcpu *vcpu = synic_to_vcpu(synic);
synic             573 arch/x86/kvm/hyperv.c 	if (!(synic->msg_page & HV_SYNIC_SIMP_ENABLE))
synic             576 arch/x86/kvm/hyperv.c 	msg_page_gfn = synic->msg_page >> PAGE_SHIFT;
synic             613 arch/x86/kvm/hyperv.c 	r = synic_set_irq(synic, sint);
synic             758 arch/x86/kvm/hyperv.c 	synic_init(&hv_vcpu->synic);
synic             774 arch/x86/kvm/hyperv.c 	struct kvm_vcpu_hv_synic *synic = vcpu_to_synic(vcpu);
synic             781 arch/x86/kvm/hyperv.c 	synic->active = true;
synic             782 arch/x86/kvm/hyperv.c 	synic->dont_zero_synic_pages = dont_zero_synic_pages;
synic              41 arch/x86/kvm/hyperv.h 	return &vcpu->arch.hyperv.synic;
synic              44 arch/x86/kvm/hyperv.h static inline struct kvm_vcpu *synic_to_vcpu(struct kvm_vcpu_hv_synic *synic)
synic              46 arch/x86/kvm/hyperv.h 	return hv_vcpu_to_vcpu(container_of(synic, struct kvm_vcpu_hv, synic));
synic             198 include/uapi/linux/kvm.h 		} synic;
synic             198 tools/include/uapi/linux/kvm.h 		} synic;