Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9acd6442 authored by K. Y. Srinivasan's avatar K. Y. Srinivasan Committed by Greg Kroah-Hartman
Browse files

Drivers: hv: Get rid of the unused global signaling state



Now that we have implemented a per-connection signaling mechanism, get rid
of the global signaling state. For hosts that don't support per-connection
signaling handle, we have moved the global state to be a per-channel state.

Signed-off-by: default avatarK. Y. Srinivasan <kys@microsoft.com>
Reviewed-by: default avatarHaiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent a119845f
Loading
Loading
Loading
Loading
+0 −24
Original line number Original line Diff line number Diff line
@@ -34,8 +34,6 @@
struct hv_context hv_context = {
struct hv_context hv_context = {
	.synic_initialized	= false,
	.synic_initialized	= false,
	.hypercall_page		= NULL,
	.hypercall_page		= NULL,
	.signal_event_param	= NULL,
	.signal_event_buffer	= NULL,
};
};


/*
/*
@@ -170,24 +168,6 @@ int hv_init(void)


	hv_context.hypercall_page = virtaddr;
	hv_context.hypercall_page = virtaddr;


	/* Setup the global signal event param for the signal event hypercall */
	hv_context.signal_event_buffer =
			kmalloc(sizeof(struct hv_input_signal_event_buffer),
				GFP_KERNEL);
	if (!hv_context.signal_event_buffer)
		goto cleanup;

	hv_context.signal_event_param =
		(struct hv_input_signal_event *)
			(ALIGN((unsigned long)
				  hv_context.signal_event_buffer,
				  HV_HYPERCALL_PARAM_ALIGN));
	hv_context.signal_event_param->connectionid.asu32 = 0;
	hv_context.signal_event_param->connectionid.u.id =
						VMBUS_EVENT_CONNECTION_ID;
	hv_context.signal_event_param->flag_number = 0;
	hv_context.signal_event_param->rsvdz = 0;

	return 0;
	return 0;


cleanup:
cleanup:
@@ -215,10 +195,6 @@ void hv_cleanup(void)
	/* Reset our OS id */
	/* Reset our OS id */
	wrmsrl(HV_X64_MSR_GUEST_OS_ID, 0);
	wrmsrl(HV_X64_MSR_GUEST_OS_ID, 0);


	kfree(hv_context.signal_event_buffer);
	hv_context.signal_event_buffer = NULL;
	hv_context.signal_event_param = NULL;

	if (hv_context.hypercall_page) {
	if (hv_context.hypercall_page) {
		hypercall_msr.as_uint64 = 0;
		hypercall_msr.as_uint64 = 0;
		wrmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64);
		wrmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64);
+0 −8
Original line number Original line Diff line number Diff line
@@ -492,14 +492,6 @@ struct hv_context {


	bool synic_initialized;
	bool synic_initialized;


	/*
	 * This is used as an input param to HvCallSignalEvent hypercall. The
	 * input param is immutable in our usage and must be dynamic mem (vs
	 * stack or global). */
	struct hv_input_signal_event_buffer *signal_event_buffer;
	/* 8-bytes aligned of the buffer above */
	struct hv_input_signal_event *signal_event_param;

	void *synic_message_page[NR_CPUS];
	void *synic_message_page[NR_CPUS];
	void *synic_event_page[NR_CPUS];
	void *synic_event_page[NR_CPUS];
	/*
	/*