All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrey Smetanin <asmetanin@virtuozzo.com>
To: kvm@vger.kernel.org
Cc: Gleb Natapov <gleb@kernel.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	"K. Y. Srinivasan" <kys@microsoft.com>,
	Haiyang Zhang <haiyangz@microsoft.com>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Roman Kagan <rkagan@virtuozzo.com>,
	"Denis V. Lunev" <den@openvz.org>,
	qemu-devel@nongnu.org
Subject: [PATCH v2 3/9] drivers/hv: Move struct hv_message into UAPI Hyper-V x86 header
Date: Mon, 30 Nov 2015 19:22:15 +0300	[thread overview]
Message-ID: <1448900541-19939-4-git-send-email-asmetanin@virtuozzo.com> (raw)
In-Reply-To: <1448900541-19939-1-git-send-email-asmetanin@virtuozzo.com>

This struct is required for Hyper-V SynIC timers implementation inside KVM
and for upcoming Hyper-V VMBus support by userspace(QEMU). So place it into
Hyper-V UAPI header.

Signed-off-by: Andrey Smetanin <asmetanin@virtuozzo.com>
Acked-by: K. Y. Srinivasan <kys@microsoft.com>
Reviewed-by: Roman Kagan <rkagan@virtuozzo.com>
CC: Gleb Natapov <gleb@kernel.org>
CC: Paolo Bonzini <pbonzini@redhat.com>
CC: "K. Y. Srinivasan" <kys@microsoft.com>
CC: Haiyang Zhang <haiyangz@microsoft.com>
CC: Vitaly Kuznetsov <vkuznets@redhat.com>
CC: Roman Kagan <rkagan@virtuozzo.com>
CC: Denis V. Lunev <den@openvz.org>
CC: qemu-devel@nongnu.org
---
 arch/x86/include/uapi/asm/hyperv.h | 74 ++++++++++++++++++++++++++++++++++++++
 drivers/hv/hyperv_vmbus.h          | 73 -------------------------------------
 2 files changed, 74 insertions(+), 73 deletions(-)

diff --git a/arch/x86/include/uapi/asm/hyperv.h b/arch/x86/include/uapi/asm/hyperv.h
index 07981f0..76e503d 100644
--- a/arch/x86/include/uapi/asm/hyperv.h
+++ b/arch/x86/include/uapi/asm/hyperv.h
@@ -271,4 +271,78 @@ typedef struct _HV_REFERENCE_TSC_PAGE {
 
 #define HV_SYNIC_STIMER_COUNT		(4)
 
+/* Define synthetic interrupt controller message constants. */
+#define HV_MESSAGE_SIZE			(256)
+#define HV_MESSAGE_PAYLOAD_BYTE_COUNT	(240)
+#define HV_MESSAGE_PAYLOAD_QWORD_COUNT	(30)
+
+/* Define hypervisor message types. */
+#define HVMSG_NONE			0x00000000
+
+/* Memory access messages. */
+#define HVMSG_UNMAPPED_GPA		0x80000000
+#define HVMSG_GPA_INTERCEPT		0x80000001
+
+/* Timer notification messages. */
+#define HVMSG_TIMER_EXPIRED		0x80000010
+
+/* Error messages. */
+#define HVMSG_INVALID_VP_REGISTER_VALUE	0x80000020
+#define HVMSG_UNRECOVERABLE_EXCEPTION	0x80000021
+#define HVMSG_UNSUPPORTED_FEATURE	0x80000022
+
+/* Trace buffer complete messages. */
+#define HVMSG_EVENTLOG_BUFFERCOMPLETE	0x80000040
+
+/* Platform-specific processor intercept messages. */
+#define HVMSG_X64_IOPORT_INTERCEPT	0x80010000
+#define HVMSG_X64_MSR_INTERCEPT		0x80010001
+#define HVMSG_X64_CPUID_INTERCEPT	0x80010002
+#define HVMSG_X64_EXCEPTION_INTERCEPT	0x80010003
+#define HVMSG_X64_APIC_EOI		0x80010004
+#define HVMSG_X64_LEGACY_FP_ERROR	0x80010005
+
+/* Define synthetic interrupt controller message flags. */
+union hv_message_flags {
+	__u8 asu8;
+	struct {
+		__u8 msg_pending:1;
+		__u8 reserved:7;
+	};
+};
+
+/* Define port identifier type. */
+union hv_port_id {
+	__u32 asu32;
+	struct {
+		__u32 id:24;
+		__u32 reserved:8;
+	} u;
+};
+
+/* Define synthetic interrupt controller message header. */
+struct hv_message_header {
+	__u32 message_type;
+	__u8 payload_size;
+	union hv_message_flags message_flags;
+	__u8 reserved[2];
+	union {
+		__u64 sender;
+		union hv_port_id port;
+	};
+};
+
+/* Define synthetic interrupt controller message format. */
+struct hv_message {
+	struct hv_message_header header;
+	union {
+		__u64 payload[HV_MESSAGE_PAYLOAD_QWORD_COUNT];
+	} u;
+};
+
+/* Define the synthetic interrupt message page layout. */
+struct hv_message_page {
+	struct hv_message sint_message[HV_SYNIC_SINT_COUNT];
+};
+
 #endif
diff --git a/drivers/hv/hyperv_vmbus.h b/drivers/hv/hyperv_vmbus.h
index f214e37..3f3756b 100644
--- a/drivers/hv/hyperv_vmbus.h
+++ b/drivers/hv/hyperv_vmbus.h
@@ -63,10 +63,6 @@ enum hv_cpuid_function {
 /* Define version of the synthetic interrupt controller. */
 #define HV_SYNIC_VERSION		(1)
 
-/* Define synthetic interrupt controller message constants. */
-#define HV_MESSAGE_SIZE			(256)
-#define HV_MESSAGE_PAYLOAD_BYTE_COUNT	(240)
-#define HV_MESSAGE_PAYLOAD_QWORD_COUNT	(30)
 #define HV_ANY_VP			(0xFFFFFFFF)
 
 /* Define synthetic interrupt controller flag constants. */
@@ -74,44 +70,9 @@ enum hv_cpuid_function {
 #define HV_EVENT_FLAGS_BYTE_COUNT	(256)
 #define HV_EVENT_FLAGS_DWORD_COUNT	(256 / sizeof(u32))
 
-/* Define hypervisor message types. */
-#define HVMSG_NONE			0x00000000
-
-/* Memory access messages. */
-#define HVMSG_UNMAPPED_GPA		0x80000000
-#define HVMSG_GPA_INTERCEPT		0x80000001
-
-/* Timer notification messages. */
-#define HVMSG_TIMER_EXPIRED		0x80000010
-
-/* Error messages. */
-#define HVMSG_INVALID_VP_REGISTER_VALUE	0x80000020
-#define HVMSG_UNRECOVERABLE_EXCEPTION	0x80000021
-#define HVMSG_UNSUPPORTED_FEATURE	0x80000022
-
-/* Trace buffer complete messages. */
-#define HVMSG_EVENTLOG_BUFFERCOMPLETE	0x80000040
-
-/* Platform-specific processor intercept messages. */
-#define HVMSG_X64_IOPORT_INTERCEPT	0x80010000
-#define HVMSG_X64_MSR_INTERCEPT		0x80010001
-#define HVMSG_X64_CPUID_INTERCEPT	0x80010002
-#define HVMSG_X64_EXCEPTION_INTERCEPT	0x80010003
-#define HVMSG_X64_APIC_EOI		0x80010004
-#define HVMSG_X64_LEGACY_FP_ERROR	0x80010005
-
 /* Define invalid partition identifier. */
 #define HV_PARTITION_ID_INVALID		((u64)0x0)
 
-/* Define port identifier type. */
-union hv_port_id {
-	u32 asu32;
-	struct {
-		u32 id:24;
-		u32 reserved:8;
-	} u ;
-};
-
 /* Define port type. */
 enum hv_port_type {
 	HVPORT_MSG	= 1,
@@ -159,27 +120,6 @@ struct hv_connection_info {
 	};
 };
 
-/* Define synthetic interrupt controller message flags. */
-union hv_message_flags {
-	u8 asu8;
-	struct {
-		u8 msg_pending:1;
-		u8 reserved:7;
-	};
-};
-
-/* Define synthetic interrupt controller message header. */
-struct hv_message_header {
-	u32 message_type;
-	u8 payload_size;
-	union hv_message_flags message_flags;
-	u8 reserved[2];
-	union {
-		u64 sender;
-		union hv_port_id port;
-	};
-};
-
 /*
  * Timer configuration register.
  */
@@ -205,22 +145,9 @@ struct hv_timer_message_payload {
 	u64 delivery_time;	/* When the message was delivered */
 };
 
-/* Define synthetic interrupt controller message format. */
-struct hv_message {
-	struct hv_message_header header;
-	union {
-		u64 payload[HV_MESSAGE_PAYLOAD_QWORD_COUNT];
-	} u ;
-};
-
 /* Define the number of message buffers associated with each port. */
 #define HV_PORT_MESSAGE_BUFFER_COUNT	(16)
 
-/* Define the synthetic interrupt message page layout. */
-struct hv_message_page {
-	struct hv_message sint_message[HV_SYNIC_SINT_COUNT];
-};
-
 /* Define the synthetic interrupt controller event flags format. */
 union hv_synic_event_flags {
 	u8 flags8[HV_EVENT_FLAGS_BYTE_COUNT];
-- 
2.4.3


WARNING: multiple messages have this Message-ID (diff)
From: Andrey Smetanin <asmetanin@virtuozzo.com>
To: kvm@vger.kernel.org
Cc: Gleb Natapov <gleb@kernel.org>,
	Haiyang Zhang <haiyangz@microsoft.com>,
	qemu-devel@nongnu.org, Roman Kagan <rkagan@virtuozzo.com>,
	"Denis V. Lunev" <den@openvz.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	"K. Y. Srinivasan" <kys@microsoft.com>
Subject: [Qemu-devel] [PATCH v2 3/9] drivers/hv: Move struct hv_message into UAPI Hyper-V x86 header
Date: Mon, 30 Nov 2015 19:22:15 +0300	[thread overview]
Message-ID: <1448900541-19939-4-git-send-email-asmetanin@virtuozzo.com> (raw)
In-Reply-To: <1448900541-19939-1-git-send-email-asmetanin@virtuozzo.com>

This struct is required for Hyper-V SynIC timers implementation inside KVM
and for upcoming Hyper-V VMBus support by userspace(QEMU). So place it into
Hyper-V UAPI header.

Signed-off-by: Andrey Smetanin <asmetanin@virtuozzo.com>
Acked-by: K. Y. Srinivasan <kys@microsoft.com>
Reviewed-by: Roman Kagan <rkagan@virtuozzo.com>
CC: Gleb Natapov <gleb@kernel.org>
CC: Paolo Bonzini <pbonzini@redhat.com>
CC: "K. Y. Srinivasan" <kys@microsoft.com>
CC: Haiyang Zhang <haiyangz@microsoft.com>
CC: Vitaly Kuznetsov <vkuznets@redhat.com>
CC: Roman Kagan <rkagan@virtuozzo.com>
CC: Denis V. Lunev <den@openvz.org>
CC: qemu-devel@nongnu.org
---
 arch/x86/include/uapi/asm/hyperv.h | 74 ++++++++++++++++++++++++++++++++++++++
 drivers/hv/hyperv_vmbus.h          | 73 -------------------------------------
 2 files changed, 74 insertions(+), 73 deletions(-)

diff --git a/arch/x86/include/uapi/asm/hyperv.h b/arch/x86/include/uapi/asm/hyperv.h
index 07981f0..76e503d 100644
--- a/arch/x86/include/uapi/asm/hyperv.h
+++ b/arch/x86/include/uapi/asm/hyperv.h
@@ -271,4 +271,78 @@ typedef struct _HV_REFERENCE_TSC_PAGE {
 
 #define HV_SYNIC_STIMER_COUNT		(4)
 
+/* Define synthetic interrupt controller message constants. */
+#define HV_MESSAGE_SIZE			(256)
+#define HV_MESSAGE_PAYLOAD_BYTE_COUNT	(240)
+#define HV_MESSAGE_PAYLOAD_QWORD_COUNT	(30)
+
+/* Define hypervisor message types. */
+#define HVMSG_NONE			0x00000000
+
+/* Memory access messages. */
+#define HVMSG_UNMAPPED_GPA		0x80000000
+#define HVMSG_GPA_INTERCEPT		0x80000001
+
+/* Timer notification messages. */
+#define HVMSG_TIMER_EXPIRED		0x80000010
+
+/* Error messages. */
+#define HVMSG_INVALID_VP_REGISTER_VALUE	0x80000020
+#define HVMSG_UNRECOVERABLE_EXCEPTION	0x80000021
+#define HVMSG_UNSUPPORTED_FEATURE	0x80000022
+
+/* Trace buffer complete messages. */
+#define HVMSG_EVENTLOG_BUFFERCOMPLETE	0x80000040
+
+/* Platform-specific processor intercept messages. */
+#define HVMSG_X64_IOPORT_INTERCEPT	0x80010000
+#define HVMSG_X64_MSR_INTERCEPT		0x80010001
+#define HVMSG_X64_CPUID_INTERCEPT	0x80010002
+#define HVMSG_X64_EXCEPTION_INTERCEPT	0x80010003
+#define HVMSG_X64_APIC_EOI		0x80010004
+#define HVMSG_X64_LEGACY_FP_ERROR	0x80010005
+
+/* Define synthetic interrupt controller message flags. */
+union hv_message_flags {
+	__u8 asu8;
+	struct {
+		__u8 msg_pending:1;
+		__u8 reserved:7;
+	};
+};
+
+/* Define port identifier type. */
+union hv_port_id {
+	__u32 asu32;
+	struct {
+		__u32 id:24;
+		__u32 reserved:8;
+	} u;
+};
+
+/* Define synthetic interrupt controller message header. */
+struct hv_message_header {
+	__u32 message_type;
+	__u8 payload_size;
+	union hv_message_flags message_flags;
+	__u8 reserved[2];
+	union {
+		__u64 sender;
+		union hv_port_id port;
+	};
+};
+
+/* Define synthetic interrupt controller message format. */
+struct hv_message {
+	struct hv_message_header header;
+	union {
+		__u64 payload[HV_MESSAGE_PAYLOAD_QWORD_COUNT];
+	} u;
+};
+
+/* Define the synthetic interrupt message page layout. */
+struct hv_message_page {
+	struct hv_message sint_message[HV_SYNIC_SINT_COUNT];
+};
+
 #endif
diff --git a/drivers/hv/hyperv_vmbus.h b/drivers/hv/hyperv_vmbus.h
index f214e37..3f3756b 100644
--- a/drivers/hv/hyperv_vmbus.h
+++ b/drivers/hv/hyperv_vmbus.h
@@ -63,10 +63,6 @@ enum hv_cpuid_function {
 /* Define version of the synthetic interrupt controller. */
 #define HV_SYNIC_VERSION		(1)
 
-/* Define synthetic interrupt controller message constants. */
-#define HV_MESSAGE_SIZE			(256)
-#define HV_MESSAGE_PAYLOAD_BYTE_COUNT	(240)
-#define HV_MESSAGE_PAYLOAD_QWORD_COUNT	(30)
 #define HV_ANY_VP			(0xFFFFFFFF)
 
 /* Define synthetic interrupt controller flag constants. */
@@ -74,44 +70,9 @@ enum hv_cpuid_function {
 #define HV_EVENT_FLAGS_BYTE_COUNT	(256)
 #define HV_EVENT_FLAGS_DWORD_COUNT	(256 / sizeof(u32))
 
-/* Define hypervisor message types. */
-#define HVMSG_NONE			0x00000000
-
-/* Memory access messages. */
-#define HVMSG_UNMAPPED_GPA		0x80000000
-#define HVMSG_GPA_INTERCEPT		0x80000001
-
-/* Timer notification messages. */
-#define HVMSG_TIMER_EXPIRED		0x80000010
-
-/* Error messages. */
-#define HVMSG_INVALID_VP_REGISTER_VALUE	0x80000020
-#define HVMSG_UNRECOVERABLE_EXCEPTION	0x80000021
-#define HVMSG_UNSUPPORTED_FEATURE	0x80000022
-
-/* Trace buffer complete messages. */
-#define HVMSG_EVENTLOG_BUFFERCOMPLETE	0x80000040
-
-/* Platform-specific processor intercept messages. */
-#define HVMSG_X64_IOPORT_INTERCEPT	0x80010000
-#define HVMSG_X64_MSR_INTERCEPT		0x80010001
-#define HVMSG_X64_CPUID_INTERCEPT	0x80010002
-#define HVMSG_X64_EXCEPTION_INTERCEPT	0x80010003
-#define HVMSG_X64_APIC_EOI		0x80010004
-#define HVMSG_X64_LEGACY_FP_ERROR	0x80010005
-
 /* Define invalid partition identifier. */
 #define HV_PARTITION_ID_INVALID		((u64)0x0)
 
-/* Define port identifier type. */
-union hv_port_id {
-	u32 asu32;
-	struct {
-		u32 id:24;
-		u32 reserved:8;
-	} u ;
-};
-
 /* Define port type. */
 enum hv_port_type {
 	HVPORT_MSG	= 1,
@@ -159,27 +120,6 @@ struct hv_connection_info {
 	};
 };
 
-/* Define synthetic interrupt controller message flags. */
-union hv_message_flags {
-	u8 asu8;
-	struct {
-		u8 msg_pending:1;
-		u8 reserved:7;
-	};
-};
-
-/* Define synthetic interrupt controller message header. */
-struct hv_message_header {
-	u32 message_type;
-	u8 payload_size;
-	union hv_message_flags message_flags;
-	u8 reserved[2];
-	union {
-		u64 sender;
-		union hv_port_id port;
-	};
-};
-
 /*
  * Timer configuration register.
  */
@@ -205,22 +145,9 @@ struct hv_timer_message_payload {
 	u64 delivery_time;	/* When the message was delivered */
 };
 
-/* Define synthetic interrupt controller message format. */
-struct hv_message {
-	struct hv_message_header header;
-	union {
-		u64 payload[HV_MESSAGE_PAYLOAD_QWORD_COUNT];
-	} u ;
-};
-
 /* Define the number of message buffers associated with each port. */
 #define HV_PORT_MESSAGE_BUFFER_COUNT	(16)
 
-/* Define the synthetic interrupt message page layout. */
-struct hv_message_page {
-	struct hv_message sint_message[HV_SYNIC_SINT_COUNT];
-};
-
 /* Define the synthetic interrupt controller event flags format. */
 union hv_synic_event_flags {
 	u8 flags8[HV_EVENT_FLAGS_BYTE_COUNT];
-- 
2.4.3

  parent reply	other threads:[~2015-11-30 16:23 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-30 16:22 [PATCH v2 0/9] KVM: Hyper-V SynIC timers Andrey Smetanin
2015-11-30 16:22 ` [Qemu-devel] " Andrey Smetanin
2015-11-30 16:22 ` [PATCH v2 1/9] drivers/hv: replace enum hv_message_type by u32 Andrey Smetanin
2015-11-30 16:22   ` [Qemu-devel] " Andrey Smetanin
2015-12-02 12:22   ` Paolo Bonzini
2015-12-02 12:22     ` [Qemu-devel] " Paolo Bonzini
2015-12-04 14:33     ` Denis V. Lunev
2015-12-04 14:33       ` [Qemu-devel] " Denis V. Lunev
2015-12-04 14:41       ` Paolo Bonzini
2015-12-04 14:41         ` [Qemu-devel] " Paolo Bonzini
2015-12-04 16:55         ` Denis V. Lunev
2015-12-04 16:55           ` [Qemu-devel] " Denis V. Lunev
2015-12-04 17:38           ` Paolo Bonzini
2015-12-04 17:38             ` [Qemu-devel] " Paolo Bonzini
2015-12-04 18:00             ` Denis V. Lunev
2015-12-04 18:00               ` [Qemu-devel] " Denis V. Lunev
2015-12-04 18:12               ` Paolo Bonzini
2015-12-04 18:12                 ` [Qemu-devel] " Paolo Bonzini
2015-11-30 16:22 ` [PATCH v2 2/9] drivers/hv: Move HV_SYNIC_STIMER_COUNT into Hyper-V UAPI x86 header Andrey Smetanin
2015-11-30 16:22   ` [Qemu-devel] " Andrey Smetanin
2015-11-30 16:22 ` Andrey Smetanin [this message]
2015-11-30 16:22   ` [Qemu-devel] [PATCH v2 3/9] drivers/hv: Move struct hv_message into UAPI Hyper-V " Andrey Smetanin
2015-11-30 16:22 ` [PATCH v2 4/9] drivers/hv: Move struct hv_timer_message_payload " Andrey Smetanin
2015-11-30 16:22   ` [Qemu-devel] " Andrey Smetanin
2015-11-30 16:22 ` [PATCH v2 5/9] kvm/x86: Rearrange func's declarations inside Hyper-V header Andrey Smetanin
2015-11-30 16:22   ` [Qemu-devel] " Andrey Smetanin
2015-11-30 16:22 ` [PATCH v2 6/9] kvm/x86: Added Hyper-V vcpu_to_hv_vcpu()/hv_vcpu_to_vcpu() helpers Andrey Smetanin
2015-11-30 16:22   ` [Qemu-devel] " Andrey Smetanin
2015-11-30 16:22 ` [PATCH v2 7/9] kvm/x86: Hyper-V internal helper to read MSR HV_X64_MSR_TIME_REF_COUNT Andrey Smetanin
2015-11-30 16:22   ` [Qemu-devel] " Andrey Smetanin
2015-11-30 16:22 ` [PATCH v2 8/9] kvm/x86: Hyper-V SynIC message slot pending clearing at SINT ack Andrey Smetanin
2015-11-30 16:22   ` [Qemu-devel] " Andrey Smetanin
2015-11-30 16:22 ` [PATCH v2 9/9] kvm/x86: Hyper-V SynIC timers Andrey Smetanin
2015-11-30 16:22   ` [Qemu-devel] " Andrey Smetanin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1448900541-19939-4-git-send-email-asmetanin@virtuozzo.com \
    --to=asmetanin@virtuozzo.com \
    --cc=den@openvz.org \
    --cc=gleb@kernel.org \
    --cc=haiyangz@microsoft.com \
    --cc=kvm@vger.kernel.org \
    --cc=kys@microsoft.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rkagan@virtuozzo.com \
    --cc=vkuznets@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.