Signed-off-by: Joe Perches <joe at perches.com> --- drivers/staging/hv/include/ChannelMessages.h | 266 +++++------ drivers/staging/hv/include/HvHalApi.h | 5 +- drivers/staging/hv/include/HvHcApi.h | 35 +- drivers/staging/hv/include/HvPtApi.h | 66 +-- drivers/staging/hv/include/HvStatus.h | 78 --- drivers/staging/hv/include/HvSynicApi.h | 432 ++++++---------- drivers/staging/hv/include/HvTypes.h | 2 - drivers/staging/hv/include/HvVpApi.h | 24 +- drivers/staging/hv/include/List.h | 20 - drivers/staging/hv/include/NetVscApi.h | 94 ++-- drivers/staging/hv/include/StorVscApi.h | 82 ++-- drivers/staging/hv/include/VmbusApi.h | 296 +++++------ drivers/staging/hv/include/VmbusChannelInterface.h | 62 +-- drivers/staging/hv/include/VmbusPacketFormat.h | 222 ++++----- drivers/staging/hv/include/logging.h | 1 - drivers/staging/hv/include/nvspprotocol.h | 277 +++++------ drivers/staging/hv/include/osd.h | 76 ++-- drivers/staging/hv/include/rndis.h | 533 ++++++++------------ drivers/staging/hv/include/vmbus.h | 56 +-- drivers/staging/hv/include/vstorage.h | 200 +++----- 20 files changed, 1097 insertions(+), 1730 deletions(-) diff --git a/drivers/staging/hv/include/ChannelMessages.h b/drivers/staging/hv/include/ChannelMessages.h index 097e1c1..5915027 100644 --- a/drivers/staging/hv/include/ChannelMessages.h +++ b/drivers/staging/hv/include/ChannelMessages.h @@ -21,7 +21,6 @@ * */ - #pragma once #include "VmbusPacketFormat.h" @@ -31,80 +30,71 @@ typedef u32 NTSTATUS; #pragma pack(push,1) - /* Version 1 messages */ - -typedef enum _VMBUS_CHANNEL_MESSAGE_TYPE -{ - ChannelMessageInvalid = 0, - ChannelMessageOfferChannel = 1, - ChannelMessageRescindChannelOffer = 2, - ChannelMessageRequestOffers = 3, - ChannelMessageAllOffersDelivered = 4, - ChannelMessageOpenChannel = 5, - ChannelMessageOpenChannelResult = 6, - ChannelMessageCloseChannel = 7, - ChannelMessageGpadlHeader = 8, - ChannelMessageGpadlBody = 9, - ChannelMessageGpadlCreated = 10, - ChannelMessageGpadlTeardown = 11, - ChannelMessageGpadlTorndown = 12, - ChannelMessageRelIdReleased = 13, - ChannelMessageInitiateContact = 14, - ChannelMessageVersionResponse = 15, - ChannelMessageUnload = 16, +typedef enum _VMBUS_CHANNEL_MESSAGE_TYPE { + ChannelMessageInvalid = 0, + ChannelMessageOfferChannel = 1, + ChannelMessageRescindChannelOffer = 2, + ChannelMessageRequestOffers = 3, + ChannelMessageAllOffersDelivered = 4, + ChannelMessageOpenChannel = 5, + ChannelMessageOpenChannelResult = 6, + ChannelMessageCloseChannel = 7, + ChannelMessageGpadlHeader = 8, + ChannelMessageGpadlBody = 9, + ChannelMessageGpadlCreated = 10, + ChannelMessageGpadlTeardown = 11, + ChannelMessageGpadlTorndown = 12, + ChannelMessageRelIdReleased = 13, + ChannelMessageInitiateContact = 14, + ChannelMessageVersionResponse = 15, + ChannelMessageUnload = 16, #ifdef VMBUS_FEATURE_PARENT_OR_PEER_MEMORY_MAPPED_INTO_A_CHILD - ChannelMessageViewRangeAdd = 17, - ChannelMessageViewRangeRemove = 18, + ChannelMessageViewRangeAdd = 17, + ChannelMessageViewRangeRemove = 18, #endif - ChannelMessageCount + ChannelMessageCount } VMBUS_CHANNEL_MESSAGE_TYPE, *PVMBUS_CHANNEL_MESSAGE_TYPE; /* begin_wpp config */ /* CUSTOM_TYPE(ChannelMessageType, ItemEnum(_VMBUS_CHANNEL_MESSAGE_TYPE)); */ /* end_wpp */ -typedef struct _VMBUS_CHANNEL_MESSAGE_HEADER -{ - VMBUS_CHANNEL_MESSAGE_TYPE MessageType; - u32 Padding; +typedef struct _VMBUS_CHANNEL_MESSAGE_HEADER { + VMBUS_CHANNEL_MESSAGE_TYPE MessageType; + u32 Padding; } VMBUS_CHANNEL_MESSAGE_HEADER, *PVMBUS_CHANNEL_MESSAGE_HEADER; /* Query VMBus Version parameters */ -typedef struct _VMBUS_CHANNEL_QUERY_VMBUS_VERSION -{ - VMBUS_CHANNEL_MESSAGE_HEADER Header; - u32 Version; +typedef struct _VMBUS_CHANNEL_QUERY_VMBUS_VERSION { + VMBUS_CHANNEL_MESSAGE_HEADER Header; + u32 Version; } VMBUS_CHANNEL_QUERY_VMBUS_VERSION, *PVMBUS_CHANNEL_QUERY_VMBUS_VERSION; /* VMBus Version Supported parameters */ -typedef struct _VMBUS_CHANNEL_VERSION_SUPPORTED -{ - VMBUS_CHANNEL_MESSAGE_HEADER Header; - bool VersionSupported; +typedef struct _VMBUS_CHANNEL_VERSION_SUPPORTED { + VMBUS_CHANNEL_MESSAGE_HEADER Header; + bool VersionSupported; } VMBUS_CHANNEL_VERSION_SUPPORTED, *PVMBUS_CHANNEL_VERSION_SUPPORTED; /* Offer Channel parameters */ -typedef struct _VMBUS_CHANNEL_OFFER_CHANNEL -{ - VMBUS_CHANNEL_MESSAGE_HEADER Header; - VMBUS_CHANNEL_OFFER Offer; - u32 ChildRelId; - u8 MonitorId; - bool MonitorAllocated; +typedef struct _VMBUS_CHANNEL_OFFER_CHANNEL { + VMBUS_CHANNEL_MESSAGE_HEADER Header; + VMBUS_CHANNEL_OFFER Offer; + u32 ChildRelId; + u8 MonitorId; + bool MonitorAllocated; } VMBUS_CHANNEL_OFFER_CHANNEL, *PVMBUS_CHANNEL_OFFER_CHANNEL; - /* Make sure VMBUS_CHANNEL_OFFER_CHANNEL fits into Synic message. */ C_ASSERT(sizeof(VMBUS_CHANNEL_OFFER_CHANNEL) <= MAXIMUM_SYNIC_MESSAGE_BYTES); /* Rescind Offer parameters */ -typedef struct _VMBUS_CHANNEL_RESCIND_OFFER -{ - VMBUS_CHANNEL_MESSAGE_HEADER Header; - u32 ChildRelId; +typedef struct _VMBUS_CHANNEL_RESCIND_OFFER { + VMBUS_CHANNEL_MESSAGE_HEADER Header; + u32 ChildRelId; } VMBUS_CHANNEL_RESCIND_OFFER, *PVMBUS_CHANNEL_RESCIND_OFFER; /* Request Offer -- no parameters, SynIC message contains the partition ID */ @@ -114,63 +104,55 @@ typedef struct _VMBUS_CHANNEL_RESCIND_OFFER /* Flush Client -- no parameters, SynIC message contains the partition ID */ /* Open Channel parameters */ -typedef struct _VMBUS_CHANNEL_OPEN_CHANNEL -{ - VMBUS_CHANNEL_MESSAGE_HEADER Header; - - - /* Identifies the specific VMBus channel that is being opened. */ - - u32 ChildRelId; - - - /* ID making a particular open request at a channel offer unique. */ - - u32 OpenId; +typedef struct _VMBUS_CHANNEL_OPEN_CHANNEL { + VMBUS_CHANNEL_MESSAGE_HEADER Header; + /* Identifies the specific VMBus channel that is being opened. */ - /* GPADL for the channel's ring buffer. */ + u32 ChildRelId; - GPADL_HANDLE RingBufferGpadlHandle; + /* ID making a particular open request at a channel offer unique. */ + u32 OpenId; - /* GPADL for the channel's server context save area. */ + /* GPADL for the channel's ring buffer. */ - GPADL_HANDLE ServerContextAreaGpadlHandle; + GPADL_HANDLE RingBufferGpadlHandle; + /* GPADL for the channel's server context save area. */ - /* - * The upstream ring buffer begins at offset zero in the memory - * described by RingBufferGpadlHandle. The downstream ring buffer - * follows it at this offset (in pages). - */ + GPADL_HANDLE ServerContextAreaGpadlHandle; - u32 DownstreamRingBufferPageOffset; + /* + * The upstream ring buffer begins at offset zero in the memory + * described by RingBufferGpadlHandle. The downstream ring buffer + * follows it at this offset (in pages). + */ + u32 DownstreamRingBufferPageOffset; - /* User-specific data to be passed along to the server endpoint. */ + /* User-specific data to be passed along to the server endpoint. */ - unsigned char UserData[MAX_USER_DEFINED_BYTES]; + unsigned char UserData[MAX_USER_DEFINED_BYTES]; } VMBUS_CHANNEL_OPEN_CHANNEL, *PVMBUS_CHANNEL_OPEN_CHANNEL; /* Reopen Channel parameters; */ -typedef VMBUS_CHANNEL_OPEN_CHANNEL VMBUS_CHANNEL_REOPEN_CHANNEL, *PVMBUS_CHANNEL_REOPEN_CHANNEL; +typedef VMBUS_CHANNEL_OPEN_CHANNEL VMBUS_CHANNEL_REOPEN_CHANNEL, + *PVMBUS_CHANNEL_REOPEN_CHANNEL; /* Open Channel Result parameters */ -typedef struct _VMBUS_CHANNEL_OPEN_RESULT -{ - VMBUS_CHANNEL_MESSAGE_HEADER Header; - u32 ChildRelId; - u32 OpenId; - NTSTATUS Status; +typedef struct _VMBUS_CHANNEL_OPEN_RESULT { + VMBUS_CHANNEL_MESSAGE_HEADER Header; + u32 ChildRelId; + u32 OpenId; + NTSTATUS Status; } VMBUS_CHANNEL_OPEN_RESULT, *PVMBUS_CHANNEL_OPEN_RESULT; /* Close channel parameters; */ -typedef struct _VMBUS_CHANNEL_CLOSE_CHANNEL -{ - VMBUS_CHANNEL_MESSAGE_HEADER Header; - u32 ChildRelId; +typedef struct _VMBUS_CHANNEL_CLOSE_CHANNEL { + VMBUS_CHANNEL_MESSAGE_HEADER Header; + u32 ChildRelId; } VMBUS_CHANNEL_CLOSE_CHANNEL, *PVMBUS_CHANNEL_CLOSE_CHANNEL; /* Channel Message GPADL */ @@ -178,7 +160,6 @@ typedef struct _VMBUS_CHANNEL_CLOSE_CHANNEL #define GPADL_TYPE_SERVER_SAVE_AREA 2 #define GPADL_TYPE_TRANSACTION 8 - /* * The number of PFNs in a GPADL message is defined by the number of * pages that would be spanned by ByteCount and ByteOffset. If the @@ -186,93 +167,78 @@ typedef struct _VMBUS_CHANNEL_CLOSE_CHANNEL * follow-up packet that contains more. */ - -typedef struct _VMBUS_CHANNEL_GPADL_HEADER -{ - VMBUS_CHANNEL_MESSAGE_HEADER Header; - u32 ChildRelId; - u32 Gpadl; - u16 RangeBufLen; - u16 RangeCount; - GPA_RANGE Range[0]; +typedef struct _VMBUS_CHANNEL_GPADL_HEADER { + VMBUS_CHANNEL_MESSAGE_HEADER Header; + u32 ChildRelId; + u32 Gpadl; + u16 RangeBufLen; + u16 RangeCount; + GPA_RANGE Range[0]; } VMBUS_CHANNEL_GPADL_HEADER, *PVMBUS_CHANNEL_GPADL_HEADER; - - /* This is the followup packet that contains more PFNs. */ - -typedef struct _VMBUS_CHANNEL_GPADL_BODY -{ - VMBUS_CHANNEL_MESSAGE_HEADER Header; - u32 MessageNumber; - u32 Gpadl; - u64 Pfn[0]; +typedef struct _VMBUS_CHANNEL_GPADL_BODY { + VMBUS_CHANNEL_MESSAGE_HEADER Header; + u32 MessageNumber; + u32 Gpadl; + u64 Pfn[0]; } VMBUS_CHANNEL_GPADL_BODY, *PVMBUS_CHANNEL_GPADL_BODY; - -typedef struct _VMBUS_CHANNEL_GPADL_CREATED -{ - VMBUS_CHANNEL_MESSAGE_HEADER Header; - u32 ChildRelId; - u32 Gpadl; - u32 CreationStatus; +typedef struct _VMBUS_CHANNEL_GPADL_CREATED { + VMBUS_CHANNEL_MESSAGE_HEADER Header; + u32 ChildRelId; + u32 Gpadl; + u32 CreationStatus; } VMBUS_CHANNEL_GPADL_CREATED, *PVMBUS_CHANNEL_GPADL_CREATED; -typedef struct _VMBUS_CHANNEL_GPADL_TEARDOWN -{ - VMBUS_CHANNEL_MESSAGE_HEADER Header; - u32 ChildRelId; - u32 Gpadl; +typedef struct _VMBUS_CHANNEL_GPADL_TEARDOWN { + VMBUS_CHANNEL_MESSAGE_HEADER Header; + u32 ChildRelId; + u32 Gpadl; } VMBUS_CHANNEL_GPADL_TEARDOWN, *PVMBUS_CHANNEL_GPADL_TEARDOWN; -typedef struct _VMBUS_CHANNEL_GPADL_TORNDOWN -{ - VMBUS_CHANNEL_MESSAGE_HEADER Header; - u32 Gpadl; +typedef struct _VMBUS_CHANNEL_GPADL_TORNDOWN { + VMBUS_CHANNEL_MESSAGE_HEADER Header; + u32 Gpadl; } VMBUS_CHANNEL_GPADL_TORNDOWN, *PVMBUS_CHANNEL_GPADL_TORNDOWN; #ifdef VMBUS_FEATURE_PARENT_OR_PEER_MEMORY_MAPPED_INTO_A_CHILD -typedef struct _VMBUS_CHANNEL_VIEW_RANGE_ADD -{ - VMBUS_CHANNEL_MESSAGE_HEADER Header; - PHYSICAL_ADDRESS ViewRangeBase; - u64 ViewRangeLength; - u32 ChildRelId; +typedef struct _VMBUS_CHANNEL_VIEW_RANGE_ADD { + VMBUS_CHANNEL_MESSAGE_HEADER Header; + PHYSICAL_ADDRESS ViewRangeBase; + u64 ViewRangeLength; + u32 ChildRelId; } VMBUS_CHANNEL_VIEW_RANGE_ADD, *PVMBUS_CHANNEL_VIEW_RANGE_ADD; -typedef struct _VMBUS_CHANNEL_VIEW_RANGE_REMOVE -{ - VMBUS_CHANNEL_MESSAGE_HEADER Header; - PHYSICAL_ADDRESS ViewRangeBase; - u32 ChildRelId; +typedef struct _VMBUS_CHANNEL_VIEW_RANGE_REMOVE { + VMBUS_CHANNEL_MESSAGE_HEADER Header; + PHYSICAL_ADDRESS ViewRangeBase; + u32 ChildRelId; } VMBUS_CHANNEL_VIEW_RANGE_REMOVE, *PVMBUS_CHANNEL_VIEW_RANGE_REMOVE; #endif -typedef struct _VMBUS_CHANNEL_RELID_RELEASED -{ - VMBUS_CHANNEL_MESSAGE_HEADER Header; - u32 ChildRelId; +typedef struct _VMBUS_CHANNEL_RELID_RELEASED { + VMBUS_CHANNEL_MESSAGE_HEADER Header; + u32 ChildRelId; } VMBUS_CHANNEL_RELID_RELEASED, *PVMBUS_CHANNEL_RELID_RELEASED; -typedef struct _VMBUS_CHANNEL_INITIATE_CONTACT -{ - VMBUS_CHANNEL_MESSAGE_HEADER Header; - u32 VMBusVersionRequested; - u32 Padding2; - u64 InterruptPage; - u64 MonitorPage1; - u64 MonitorPage2; +typedef struct _VMBUS_CHANNEL_INITIATE_CONTACT { + VMBUS_CHANNEL_MESSAGE_HEADER Header; + u32 VMBusVersionRequested; + u32 Padding2; + u64 InterruptPage; + u64 MonitorPage1; + u64 MonitorPage2; } VMBUS_CHANNEL_INITIATE_CONTACT, *PVMBUS_CHANNEL_INITIATE_CONTACT; -typedef struct _VMBUS_CHANNEL_VERSION_RESPONSE -{ - VMBUS_CHANNEL_MESSAGE_HEADER Header; - bool VersionSupported; +typedef struct _VMBUS_CHANNEL_VERSION_RESPONSE { + VMBUS_CHANNEL_MESSAGE_HEADER Header; + bool VersionSupported; } VMBUS_CHANNEL_VERSION_RESPONSE, *PVMBUS_CHANNEL_VERSION_RESPONSE; -typedef VMBUS_CHANNEL_MESSAGE_HEADER VMBUS_CHANNEL_UNLOAD, *PVMBUS_CHANNEL_UNLOAD; - +typedef VMBUS_CHANNEL_MESSAGE_HEADER VMBUS_CHANNEL_UNLOAD, + *PVMBUS_CHANNEL_UNLOAD; /* Kind of a table to use the preprocessor to get us the right type for a */ /* specified message ID. Used with ChAllocateSendMessage() */ @@ -299,7 +265,6 @@ typedef VMBUS_CHANNEL_MESSAGE_HEADER VMBUS_CHANNEL_UNLOAD, *PVMBUS_CHANNEL_UNLOA #define ChannelMessageVersionResponse_TYPE VMBUS_CHANNEL_VERSION_RESPONSE #define ChannelMessageUnload_TYPE VMBUS_CHANNEL_UNLOAD - /* Preprocessor wrapper to ChAllocateSendMessageSize() converting the return */ /* value to the correct pointer and calculate the needed size. */ @@ -311,5 +276,4 @@ typedef VMBUS_CHANNEL_MESSAGE_HEADER VMBUS_CHANNEL_UNLOAD, *PVMBUS_CHANNEL_UNLOA #define ChAllocateSendMessage(Id, Fn, Context) \ (Id##_TYPE*)ChAllocateSendMessageSized(sizeof(Id##_TYPE), Id, Fn, Context) - #pragma pack(pop) diff --git a/drivers/staging/hv/include/HvHalApi.h b/drivers/staging/hv/include/HvHalApi.h index cda369e..7e3fe92 100644 --- a/drivers/staging/hv/include/HvHalApi.h +++ b/drivers/staging/hv/include/HvHalApi.h @@ -21,12 +21,9 @@ * */ - #pragma once - - /* Time in the hypervisor is measured in 100 nanosecond units */ -typedef u64 HV_NANO100_TIME, *PHV_NANO100_TIME; +typedef u64 HV_NANO100_TIME, *PHV_NANO100_TIME; typedef u64 HV_NANO100_DURATION, *PHV_NANO100_DURATION; diff --git a/drivers/staging/hv/include/HvHcApi.h b/drivers/staging/hv/include/HvHcApi.h index 034bab7..2c4c36f 100644 --- a/drivers/staging/hv/include/HvHcApi.h +++ b/drivers/staging/hv/include/HvHcApi.h @@ -21,40 +21,31 @@ * */ - #pragma once - /* Declare the various hypercall operations. */ -typedef enum _HV_CALL_CODE -{ +typedef enum _HV_CALL_CODE { - HvCallPostMessage = 0x005c, - HvCallSignalEvent = 0x005d, + HvCallPostMessage = 0x005c, + HvCallSignalEvent = 0x005d, } HV_CALL_CODE, *PHV_CALL_CODE; /* Definition of the HvPostMessage hypercall input structure. */ - -typedef struct _HV_INPUT_POST_MESSAGE -{ - HV_CONNECTION_ID ConnectionId; - u32 Reserved; - HV_MESSAGE_TYPE MessageType; - u32 PayloadSize; - u64 Payload[HV_MESSAGE_PAYLOAD_QWORD_COUNT]; +typedef struct _HV_INPUT_POST_MESSAGE { + HV_CONNECTION_ID ConnectionId; + u32 Reserved; + HV_MESSAGE_TYPE MessageType; + u32 PayloadSize; + u64 Payload[HV_MESSAGE_PAYLOAD_QWORD_COUNT]; } HV_INPUT_POST_MESSAGE, *PHV_INPUT_POST_MESSAGE; - - /* Definition of the HvSignalEvent hypercall input structure. */ - -typedef struct _HV_INPUT_SIGNAL_EVENT -{ - HV_CONNECTION_ID ConnectionId; - u16 FlagNumber; - u16 RsvdZ; +typedef struct _HV_INPUT_SIGNAL_EVENT { + HV_CONNECTION_ID ConnectionId; + u16 FlagNumber; + u16 RsvdZ; } HV_INPUT_SIGNAL_EVENT, *PHV_INPUT_SIGNAL_EVENT; diff --git a/drivers/staging/hv/include/HvPtApi.h b/drivers/staging/hv/include/HvPtApi.h index c32dbf6..727bb67 100644 --- a/drivers/staging/hv/include/HvPtApi.h +++ b/drivers/staging/hv/include/HvPtApi.h @@ -21,66 +21,52 @@ * */ - #pragma once - /* Versioning definitions used for guests reporting themselves to the */ /* hypervisor, and visa versa. */ /* ================================================================== */ - - /* Version info reported by guest OS's */ -typedef enum _HV_GUEST_OS_VENDOR -{ - HvGuestOsVendorMicrosoft = 0x0001 - +typedef enum _HV_GUEST_OS_VENDOR { + HvGuestOsVendorMicrosoft = 0x0001 } HV_GUEST_OS_VENDOR, *PHV_GUEST_OS_VENDOR; -typedef enum _HV_GUEST_OS_MICROSOFT_IDS -{ - HvGuestOsMicrosoftUndefined = 0x00, - HvGuestOsMicrosoftMSDOS = 0x01, - HvGuestOsMicrosoftWindows3x = 0x02, - HvGuestOsMicrosoftWindows9x = 0x03, - HvGuestOsMicrosoftWindowsNT = 0x04, - HvGuestOsMicrosoftWindowsCE = 0x05 - +typedef enum _HV_GUEST_OS_MICROSOFT_IDS { + HvGuestOsMicrosoftUndefined = 0x00, + HvGuestOsMicrosoftMSDOS = 0x01, + HvGuestOsMicrosoftWindows3x = 0x02, + HvGuestOsMicrosoftWindows9x = 0x03, + HvGuestOsMicrosoftWindowsNT = 0x04, + HvGuestOsMicrosoftWindowsCE = 0x05 } HV_GUEST_OS_MICROSOFT_IDS, *PHV_GUEST_OS_MICROSOFT_IDS; - /* Declare the MSR used to identify the guest OS. */ #define HV_X64_MSR_GUEST_OS_ID 0x40000000 -typedef union _HV_X64_MSR_GUEST_OS_ID_CONTENTS -{ - u64 AsUINT64; - struct - { - u64 BuildNumber : 16; - u64 ServiceVersion : 8; /* Service Pack, etc. */ - u64 MinorVersion : 8; - u64 MajorVersion : 8; - u64 OsId : 8; /* HV_GUEST_OS_MICROSOFT_IDS (If Vendor=MS) */ - u64 VendorId : 16; /* HV_GUEST_OS_VENDOR */ - }; +typedef union _HV_X64_MSR_GUEST_OS_ID_CONTENTS { + u64 AsUINT64; + struct { + u64 BuildNumber:16; + u64 ServiceVersion:8; /* Service Pack, etc. */ + u64 MinorVersion:8; + u64 MajorVersion:8; + u64 OsId:8; /* HV_GUEST_OS_MICROSOFT_IDS (If Vendor=MS) */ + u64 VendorId:16; /* HV_GUEST_OS_VENDOR */ + }; } HV_X64_MSR_GUEST_OS_ID_CONTENTS, *PHV_X64_MSR_GUEST_OS_ID_CONTENTS; - /* Declare the MSR used to setup pages used to communicate with the hypervisor. */ #define HV_X64_MSR_HYPERCALL 0x40000001 -typedef union _HV_X64_MSR_HYPERCALL_CONTENTS -{ - u64 AsUINT64; - struct - { - u64 Enable : 1; - u64 Reserved : 11; - u64 GuestPhysicalAddress : 52; - }; +typedef union _HV_X64_MSR_HYPERCALL_CONTENTS { + u64 AsUINT64; + struct { + u64 Enable:1; + u64 Reserved:11; + u64 GuestPhysicalAddress:52; + }; } HV_X64_MSR_HYPERCALL_CONTENTS, *PHV_X64_MSR_HYPERCALL_CONTENTS; diff --git a/drivers/staging/hv/include/HvStatus.h b/drivers/staging/hv/include/HvStatus.h index c747e7e..7451908 100644 --- a/drivers/staging/hv/include/HvStatus.h +++ b/drivers/staging/hv/include/HvStatus.h @@ -21,14 +21,12 @@ * */ - /* begin_hvgdk */ /* Status codes for hypervisor operations. */ typedef u16 HV_STATUS, *PHV_STATUS; - /* MessageId: HV_STATUS_SUCCESS */ /* MessageText: */ @@ -37,7 +35,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_SUCCESS ((HV_STATUS)0x0000) - /* MessageId: HV_STATUS_INVALID_HYPERCALL_CODE */ /* MessageText: */ @@ -46,7 +43,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_INVALID_HYPERCALL_CODE ((HV_STATUS)0x0002) - /* MessageId: HV_STATUS_INVALID_HYPERCALL_INPUT */ /* MessageText: */ @@ -55,7 +51,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_INVALID_HYPERCALL_INPUT ((HV_STATUS)0x0003) - /* MessageId: HV_STATUS_INVALID_ALIGNMENT */ /* MessageText: */ @@ -64,7 +59,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_INVALID_ALIGNMENT ((HV_STATUS)0x0004) - /* MessageId: HV_STATUS_INVALID_PARAMETER */ /* MessageText: */ @@ -73,7 +67,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_INVALID_PARAMETER ((HV_STATUS)0x0005) - /* MessageId: HV_STATUS_ACCESS_DENIED */ /* MessageText: */ @@ -82,7 +75,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_ACCESS_DENIED ((HV_STATUS)0x0006) - /* MessageId: HV_STATUS_INVALID_PARTITION_STATE */ /* MessageText: */ @@ -91,7 +83,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_INVALID_PARTITION_STATE ((HV_STATUS)0x0007) - /* MessageId: HV_STATUS_OPERATION_DENIED */ /* MessageText: */ @@ -100,7 +91,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_OPERATION_DENIED ((HV_STATUS)0x0008) - /* MessageId: HV_STATUS_UNKNOWN_PROPERTY */ /* MessageText: */ @@ -109,7 +99,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_UNKNOWN_PROPERTY ((HV_STATUS)0x0009) - /* MessageId: HV_STATUS_PROPERTY_VALUE_OUT_OF_RANGE */ /* MessageText: */ @@ -118,7 +107,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_PROPERTY_VALUE_OUT_OF_RANGE ((HV_STATUS)0x000A) - /* MessageId: HV_STATUS_INSUFFICIENT_MEMORY */ /* MessageText: */ @@ -127,7 +115,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_INSUFFICIENT_MEMORY ((HV_STATUS)0x000B) - /* MessageId: HV_STATUS_PARTITION_TOO_DEEP */ /* MessageText: */ @@ -136,7 +123,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_PARTITION_TOO_DEEP ((HV_STATUS)0x000C) - /* MessageId: HV_STATUS_INVALID_PARTITION_ID */ /* MessageText: */ @@ -145,7 +131,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_INVALID_PARTITION_ID ((HV_STATUS)0x000D) - /* MessageId: HV_STATUS_INVALID_VP_INDEX */ /* MessageText: */ @@ -154,7 +139,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_INVALID_VP_INDEX ((HV_STATUS)0x000E) - /* MessageId: HV_STATUS_NOT_FOUND */ /* MessageText: */ @@ -163,7 +147,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_NOT_FOUND ((HV_STATUS)0x0010) - /* MessageId: HV_STATUS_INVALID_PORT_ID */ /* MessageText: */ @@ -172,7 +155,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_INVALID_PORT_ID ((HV_STATUS)0x0011) - /* MessageId: HV_STATUS_INVALID_CONNECTION_ID */ /* MessageText: */ @@ -181,7 +163,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_INVALID_CONNECTION_ID ((HV_STATUS)0x0012) - /* MessageId: HV_STATUS_INSUFFICIENT_BUFFERS */ /* MessageText: */ @@ -190,7 +171,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_INSUFFICIENT_BUFFERS ((HV_STATUS)0x0013) - /* MessageId: HV_STATUS_NOT_ACKNOWLEDGED */ /* MessageText: */ @@ -199,7 +179,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_NOT_ACKNOWLEDGED ((HV_STATUS)0x0014) - /* MessageId: HV_STATUS_INVALID_VP_STATE */ /* MessageText: */ @@ -208,7 +187,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_INVALID_VP_STATE ((HV_STATUS)0x0015) - /* MessageId: HV_STATUS_ACKNOWLEDGED */ /* MessageText: */ @@ -217,7 +195,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_ACKNOWLEDGED ((HV_STATUS)0x0016) - /* MessageId: HV_STATUS_INVALID_SAVE_RESTORE_STATE */ /* MessageText: */ @@ -226,7 +203,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_INVALID_SAVE_RESTORE_STATE ((HV_STATUS)0x0017) - /* MessageId: HV_STATUS_INVALID_SYNIC_STATE */ /* MessageText: */ @@ -235,7 +211,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_INVALID_SYNIC_STATE ((HV_STATUS)0x0018) - /* MessageId: HV_STATUS_OBJECT_IN_USE */ /* MessageText: */ @@ -244,7 +219,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_OBJECT_IN_USE ((HV_STATUS)0x0019) - /* MessageId: HV_STATUS_INVALID_PROXIMITY_DOMAIN_INFO */ /* MessageText: */ @@ -253,7 +227,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_INVALID_PROXIMITY_DOMAIN_INFO ((HV_STATUS)0x001A) - /* MessageId: HV_STATUS_NO_DATA */ /* MessageText: */ @@ -262,7 +235,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_NO_DATA ((HV_STATUS)0x001B) - /* MessageId: HV_STATUS_INACTIVE */ /* MessageText: */ @@ -271,7 +243,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_INACTIVE ((HV_STATUS)0x001C) - /* MessageId: HV_STATUS_NO_RESOURCES */ /* MessageText: */ @@ -280,7 +251,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_NO_RESOURCES ((HV_STATUS)0x001D) - /* MessageId: HV_STATUS_FEATURE_UNAVAILABLE */ /* MessageText: */ @@ -291,7 +261,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; /* end_hvgdk */ - /* MessageId: HV_STATUS_UNSUCCESSFUL */ /* MessageText: */ @@ -301,7 +270,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_UNSUCCESSFUL ((HV_STATUS)0x1001) - /* MessageId: HV_STATUS_INSUFFICIENT_BUFFER */ /* MessageText: */ @@ -310,7 +278,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_INSUFFICIENT_BUFFER ((HV_STATUS)0x1002) - /* MessageId: HV_STATUS_GPA_NOT_PRESENT */ /* MessageText: */ @@ -319,7 +286,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_GPA_NOT_PRESENT ((HV_STATUS)0x1003) - /* MessageId: HV_STATUS_GUEST_PAGE_FAULT */ /* MessageText: */ @@ -328,7 +294,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_GUEST_PAGE_FAULT ((HV_STATUS)0x1004) - /* MessageId: HV_STATUS_RUNDOWN_DISABLED */ /* MessageText: */ @@ -337,7 +302,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_RUNDOWN_DISABLED ((HV_STATUS)0x1005) - /* MessageId: HV_STATUS_KEY_ALREADY_EXISTS */ /* MessageText: */ @@ -346,7 +310,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_KEY_ALREADY_EXISTS ((HV_STATUS)0x1006) - /* MessageId: HV_STATUS_GPA_INTERCEPT */ /* MessageText: */ @@ -355,7 +318,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_GPA_INTERCEPT ((HV_STATUS)0x1007) - /* MessageId: HV_STATUS_GUEST_GENERAL_PROTECTION_FAULT */ /* MessageText: */ @@ -364,7 +326,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_GUEST_GENERAL_PROTECTION_FAULT ((HV_STATUS)0x1008) - /* MessageId: HV_STATUS_GUEST_STACK_FAULT */ /* MessageText: */ @@ -373,7 +334,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_GUEST_STACK_FAULT ((HV_STATUS)0x1009) - /* MessageId: HV_STATUS_GUEST_INVALID_OPCODE_FAULT */ /* MessageText: */ @@ -382,7 +342,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_GUEST_INVALID_OPCODE_FAULT ((HV_STATUS)0x100A) - /* MessageId: HV_STATUS_FINALIZE_INCOMPLETE */ /* MessageText: */ @@ -391,7 +350,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_FINALIZE_INCOMPLETE ((HV_STATUS)0x100B) - /* MessageId: HV_STATUS_GUEST_MACHINE_CHECK_ABORT */ /* MessageText: */ @@ -400,7 +358,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_GUEST_MACHINE_CHECK_ABORT ((HV_STATUS)0x100C) - /* MessageId: HV_STATUS_ILLEGAL_OVERLAY_ACCESS */ /* MessageText: */ @@ -409,7 +366,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_ILLEGAL_OVERLAY_ACCESS ((HV_STATUS)0x100D) - /* MessageId: HV_STATUS_INSUFFICIENT_SYSTEM_VA */ /* MessageText: */ @@ -418,7 +374,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_INSUFFICIENT_SYSTEM_VA ((HV_STATUS)0x100E) - /* MessageId: HV_STATUS_VIRTUAL_ADDRESS_NOT_MAPPED */ /* MessageText: */ @@ -427,7 +382,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_VIRTUAL_ADDRESS_NOT_MAPPED ((HV_STATUS)0x100F) - /* MessageId: HV_STATUS_NOT_IMPLEMENTED */ /* MessageText: */ @@ -436,7 +390,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_NOT_IMPLEMENTED ((HV_STATUS)0x1010) - /* MessageId: HV_STATUS_VMX_INSTRUCTION_FAILED */ /* MessageText: */ @@ -445,7 +398,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_VMX_INSTRUCTION_FAILED ((HV_STATUS)0x1011) - /* MessageId: HV_STATUS_VMX_INSTRUCTION_FAILED_WITH_STATUS */ /* MessageText: */ @@ -454,7 +406,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_VMX_INSTRUCTION_FAILED_WITH_STATUS ((HV_STATUS)0x1012) - /* MessageId: HV_STATUS_MSR_ACCESS_FAILED */ /* MessageText: */ @@ -463,7 +414,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_MSR_ACCESS_FAILED ((HV_STATUS)0x1013) - /* MessageId: HV_STATUS_CR_ACCESS_FAILED */ /* MessageText: */ @@ -472,7 +422,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_CR_ACCESS_FAILED ((HV_STATUS)0x1014) - /* MessageId: HV_STATUS_TIMEOUT */ /* MessageText: */ @@ -481,7 +430,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_TIMEOUT ((HV_STATUS)0x1016) - /* MessageId: HV_STATUS_MSR_INTERCEPT */ /* MessageText: */ @@ -490,7 +438,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_MSR_INTERCEPT ((HV_STATUS)0x1017) - /* MessageId: HV_STATUS_CPUID_INTERCEPT */ /* MessageText: */ @@ -499,7 +446,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_CPUID_INTERCEPT ((HV_STATUS)0x1018) - /* MessageId: HV_STATUS_REPEAT_INSTRUCTION */ /* MessageText: */ @@ -508,7 +454,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_REPEAT_INSTRUCTION ((HV_STATUS)0x1019) - /* MessageId: HV_STATUS_PAGE_PROTECTION_VIOLATION */ /* MessageText: */ @@ -517,7 +462,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_PAGE_PROTECTION_VIOLATION ((HV_STATUS)0x101A) - /* MessageId: HV_STATUS_PAGE_TABLE_INVALID */ /* MessageText: */ @@ -526,7 +470,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_PAGE_TABLE_INVALID ((HV_STATUS)0x101B) - /* MessageId: HV_STATUS_PAGE_NOT_PRESENT */ /* MessageText: */ @@ -535,7 +478,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_PAGE_NOT_PRESENT ((HV_STATUS)0x101C) - /* MessageId: HV_STATUS_IO_INTERCEPT */ /* MessageText: */ @@ -544,7 +486,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_IO_INTERCEPT ((HV_STATUS)0x101D) - /* MessageId: HV_STATUS_NOTHING_TO_DO */ /* MessageText: */ @@ -553,7 +494,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_NOTHING_TO_DO ((HV_STATUS)0x101E) - /* MessageId: HV_STATUS_THREAD_TERMINATING */ /* MessageText: */ @@ -562,7 +502,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_THREAD_TERMINATING ((HV_STATUS)0x101F) - /* MessageId: HV_STATUS_SECTION_ALREADY_CONSTRUCTED */ /* MessageText: */ @@ -571,7 +510,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_SECTION_ALREADY_CONSTRUCTED ((HV_STATUS)0x1020) - /* MessageId: HV_STATUS_SECTION_NOT_ALREADY_CONSTRUCTED */ /* MessageText: */ @@ -580,7 +518,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_SECTION_NOT_ALREADY_CONSTRUCTED ((HV_STATUS)0x1021) - /* MessageId: HV_STATUS_PAGE_ALREADY_COMMITTED */ /* MessageText: */ @@ -589,7 +526,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_PAGE_ALREADY_COMMITTED ((HV_STATUS)0x1022) - /* MessageId: HV_STATUS_PAGE_NOT_ALREADY_COMMITTED */ /* MessageText: */ @@ -598,7 +534,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_PAGE_NOT_ALREADY_COMMITTED ((HV_STATUS)0x1023) - /* MessageId: HV_STATUS_COMMITTED_PAGES_REMAIN */ /* MessageText: */ @@ -607,7 +542,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_COMMITTED_PAGES_REMAIN ((HV_STATUS)0x1024) - /* MessageId: HV_STATUS_NO_REMAINING_COMMITTED_PAGES */ /* MessageText: */ @@ -616,7 +550,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_NO_REMAINING_COMMITTED_PAGES ((HV_STATUS)0x1025) - /* MessageId: HV_STATUS_INSUFFICIENT_COMPARTMENT_VA */ /* MessageText: */ @@ -625,7 +558,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_INSUFFICIENT_COMPARTMENT_VA ((HV_STATUS)0x1026) - /* MessageId: HV_STATUS_DEREF_SPA_LIST_FULL */ /* MessageText: */ @@ -635,7 +567,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_DEREF_SPA_LIST_FULL ((HV_STATUS)0x1027) - /* MessageId: HV_STATUS_GPA_OUT_OF_RANGE */ /* MessageText: */ @@ -644,7 +575,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_GPA_OUT_OF_RANGE ((HV_STATUS)0x1027) - /* MessageId: HV_STATUS_NONVOLATILE_XMM_STALE */ /* MessageText: */ @@ -653,7 +583,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_NONVOLATILE_XMM_STALE ((HV_STATUS)0x1028) - /* MessageId: HV_STATUS_UNSUPPORTED_PROCESSOR */ /* MessageText: */ @@ -662,7 +591,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_UNSUPPORTED_PROCESSOR ((HV_STATUS)0x1029) - /* MessageId: HV_STATUS_INSUFFICIENT_CROM_SPACE */ /* MessageText: */ @@ -671,7 +599,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_INSUFFICIENT_CROM_SPACE ((HV_STATUS)0x2000) - /* MessageId: HV_STATUS_BAD_CROM_FORMAT */ /* MessageText: */ @@ -680,7 +607,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_BAD_CROM_FORMAT ((HV_STATUS)0x2001) - /* MessageId: HV_STATUS_UNSUPPORTED_CROM_FORMAT */ /* MessageText: */ @@ -689,7 +615,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_UNSUPPORTED_CROM_FORMAT ((HV_STATUS)0x2002) - /* MessageId: HV_STATUS_UNSUPPORTED_CONTROLLER */ /* MessageText: */ @@ -698,7 +623,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_UNSUPPORTED_CONTROLLER ((HV_STATUS)0x2003) - /* MessageId: HV_STATUS_CROM_TOO_LARGE */ /* MessageText: */ @@ -707,7 +631,6 @@ typedef u16 HV_STATUS, *PHV_STATUS; #define HV_STATUS_CROM_TOO_LARGE ((HV_STATUS)0x2004) - /* MessageId: HV_STATUS_CONTROLLER_IN_USE */ /* MessageText: */ @@ -715,4 +638,3 @@ typedef u16 HV_STATUS, *PHV_STATUS; /* The OHCI controller specified for debugging cannot be used as it is already in use. */ #define HV_STATUS_CONTROLLER_IN_USE ((HV_STATUS)0x2005) - diff --git a/drivers/staging/hv/include/HvSynicApi.h b/drivers/staging/hv/include/HvSynicApi.h index 17e2187..f15472b 100644 --- a/drivers/staging/hv/include/HvSynicApi.h +++ b/drivers/staging/hv/include/HvSynicApi.h @@ -23,7 +23,6 @@ #pragma once - /* Define the virtual APIC registers */ #define HV_X64_MSR_EOI (0x40000070) @@ -31,17 +30,12 @@ #define HV_X64_MSR_TPR (0x40000072) #define HV_X64_MSR_APIC_ASSIST_PAGE (0x40000073) - /* Define version of the synthetic interrupt controller. */ - #define HV_SYNIC_VERSION (1) - - /* Define synthetic interrupt controller model specific registers. */ - #define HV_X64_MSR_SCONTROL (0x40000080) #define HV_X64_MSR_SVERSION (0x40000081) #define HV_X64_MSR_SIEFP (0x40000082) @@ -64,390 +58,295 @@ #define HV_X64_MSR_SINT14 (0x4000009E) #define HV_X64_MSR_SINT15 (0x4000009F) - /* Define the expected SynIC version. */ #define HV_SYNIC_VERSION_1 (0x1) - /* 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. */ - #define HV_EVENT_FLAGS_COUNT (256 * 8) #define HV_EVENT_FLAGS_BYTE_COUNT (256) #define HV_EVENT_FLAGS_DWORD_COUNT (256 / sizeof(u32)) - /* Define hypervisor message types. */ -typedef enum _HV_MESSAGE_TYPE -{ - HvMessageTypeNone = 0x00000000, - - - /* Memory access messages. */ - - HvMessageTypeUnmappedGpa = 0x80000000, - HvMessageTypeGpaIntercept = 0x80000001, - - - /* Timer notification messages. */ +typedef enum _HV_MESSAGE_TYPE { + HvMessageTypeNone = 0x00000000, - HvMessageTimerExpired = 0x80000010, + /* Memory access messages. */ + HvMessageTypeUnmappedGpa = 0x80000000, + HvMessageTypeGpaIntercept = 0x80000001, - /* Error messages. */ + /* Timer notification messages. */ - HvMessageTypeInvalidVpRegisterValue = 0x80000020, - HvMessageTypeUnrecoverableException = 0x80000021, - HvMessageTypeUnsupportedFeature = 0x80000022, + HvMessageTimerExpired = 0x80000010, + /* Error messages. */ - /* Trace buffer complete messages. */ + HvMessageTypeInvalidVpRegisterValue = 0x80000020, + HvMessageTypeUnrecoverableException = 0x80000021, + HvMessageTypeUnsupportedFeature = 0x80000022, - HvMessageTypeEventLogBufferComplete = 0x80000040, + /* Trace buffer complete messages. */ + HvMessageTypeEventLogBufferComplete = 0x80000040, - /* Platform-specific processor intercept messages. */ - - HvMessageTypeX64IoPortIntercept = 0x80010000, - HvMessageTypeX64MsrIntercept = 0x80010001, - HvMessageTypeX64CpuidIntercept = 0x80010002, - HvMessageTypeX64ExceptionIntercept = 0x80010003, - HvMessageTypeX64ApicEoi = 0x80010004, - HvMessageTypeX64LegacyFpError = 0x80010005 + /* Platform-specific processor intercept messages. */ + HvMessageTypeX64IoPortIntercept = 0x80010000, + HvMessageTypeX64MsrIntercept = 0x80010001, + HvMessageTypeX64CpuidIntercept = 0x80010002, + HvMessageTypeX64ExceptionIntercept = 0x80010003, + HvMessageTypeX64ApicEoi = 0x80010004, + HvMessageTypeX64LegacyFpError = 0x80010005 } HV_MESSAGE_TYPE, *PHV_MESSAGE_TYPE; - /* Define the number of synthetic interrupt sources. */ - #define HV_SYNIC_SINT_COUNT (16) #define HV_SYNIC_STIMER_COUNT (4) - /* Define the synthetic interrupt source index type. */ - typedef u32 HV_SYNIC_SINT_INDEX, *PHV_SYNIC_SINT_INDEX; - /* Define partition identifier type. */ - typedef u64 HV_PARTITION_ID, *PHV_PARTITION_ID; - /* Define invalid partition identifier. */ #define HV_PARTITION_ID_INVALID ((HV_PARTITION_ID) 0x0) - /* Define connection identifier type. */ +typedef union _HV_CONNECTION_ID { + u32 Asu32; -typedef union _HV_CONNECTION_ID -{ - u32 Asu32; - - struct - { - u32 Id:24; - u32 Reserved:8; - } u; + struct { + u32 Id:24; + u32 Reserved:8; + } u; } HV_CONNECTION_ID, *PHV_CONNECTION_ID; - /* Define port identifier type. */ +typedef union _HV_PORT_ID { + u32 Asu32; -typedef union _HV_PORT_ID -{ - u32 Asu32; - - struct - { - u32 Id:24; - u32 Reserved:8; - } u ; + struct { + u32 Id:24; + u32 Reserved:8; + } u; } HV_PORT_ID, *PHV_PORT_ID; - /* Define port type. */ - -typedef enum _HV_PORT_TYPE -{ - HvPortTypeMessage = 1, - HvPortTypeEvent = 2, - HvPortTypeMonitor = 3 +typedef enum _HV_PORT_TYPE { + HvPortTypeMessage = 1, + HvPortTypeEvent = 2, + HvPortTypeMonitor = 3 } HV_PORT_TYPE, *PHV_PORT_TYPE; - /* Define port information structure. */ - -typedef struct _HV_PORT_INFO -{ - HV_PORT_TYPE PortType; - u32 Padding; - - union - { - struct - { - HV_SYNIC_SINT_INDEX TargetSint; - HV_VP_INDEX TargetVp; - u64 RsvdZ; - } MessagePortInfo; - - struct - { - HV_SYNIC_SINT_INDEX TargetSint; - HV_VP_INDEX TargetVp; - u16 BaseFlagNumber; - u16 FlagCount; - u32 RsvdZ; - } EventPortInfo; - - struct - { - HV_GPA MonitorAddress; - u64 RsvdZ; - } MonitorPortInfo; - }; +typedef struct _HV_PORT_INFO { + HV_PORT_TYPE PortType; + u32 Padding; + + union { + struct { + HV_SYNIC_SINT_INDEX TargetSint; + HV_VP_INDEX TargetVp; + u64 RsvdZ; + } MessagePortInfo; + + struct { + HV_SYNIC_SINT_INDEX TargetSint; + HV_VP_INDEX TargetVp; + u16 BaseFlagNumber; + u16 FlagCount; + u32 RsvdZ; + } EventPortInfo; + + struct { + HV_GPA MonitorAddress; + u64 RsvdZ; + } MonitorPortInfo; + }; } HV_PORT_INFO, *PHV_PORT_INFO; typedef const HV_PORT_INFO *PCHV_PORT_INFO; -typedef struct _HV_CONNECTION_INFO -{ - HV_PORT_TYPE PortType; - u32 Padding; - - union - { - struct - { - u64 RsvdZ; - } MessageConnectionInfo; - - struct - { - u64 RsvdZ; - } EventConnectionInfo; - - struct - { - HV_GPA MonitorAddress; - } MonitorConnectionInfo; - }; +typedef struct _HV_CONNECTION_INFO { + HV_PORT_TYPE PortType; + u32 Padding; + + union { + struct { + u64 RsvdZ; + } MessageConnectionInfo; + + struct { + u64 RsvdZ; + } EventConnectionInfo; + + struct { + HV_GPA MonitorAddress; + } MonitorConnectionInfo; + }; } HV_CONNECTION_INFO, *PHV_CONNECTION_INFO; typedef const HV_CONNECTION_INFO *PCHV_CONNECTION_INFO; - /* Define synthetic interrupt controller message flags. */ - -typedef union _HV_MESSAGE_FLAGS -{ - u8 Asu8; - struct - { - u8 MessagePending:1; - u8 Reserved:7; - }; +typedef union _HV_MESSAGE_FLAGS { + u8 Asu8; + struct { + u8 MessagePending:1; + u8 Reserved:7; + }; } HV_MESSAGE_FLAGS, *PHV_MESSAGE_FLAGS; - - /* Define synthetic interrupt controller message header. */ - -typedef struct _HV_MESSAGE_HEADER -{ - HV_MESSAGE_TYPE MessageType; - u8 PayloadSize; - HV_MESSAGE_FLAGS MessageFlags; - u8 Reserved[2]; - union - { - HV_PARTITION_ID Sender; - HV_PORT_ID Port; - }; +typedef struct _HV_MESSAGE_HEADER { + HV_MESSAGE_TYPE MessageType; + u8 PayloadSize; + HV_MESSAGE_FLAGS MessageFlags; + u8 Reserved[2]; + union { + HV_PARTITION_ID Sender; + HV_PORT_ID Port; + }; } HV_MESSAGE_HEADER, *PHV_MESSAGE_HEADER; - /* Define timer message payload structure. */ -typedef struct _HV_TIMER_MESSAGE_PAYLOAD -{ - u32 TimerIndex; - u32 Reserved; - HV_NANO100_TIME ExpirationTime; /* When the timer expired */ - HV_NANO100_TIME DeliveryTime; /* When the message was delivered */ +typedef struct _HV_TIMER_MESSAGE_PAYLOAD { + u32 TimerIndex; + u32 Reserved; + HV_NANO100_TIME ExpirationTime; /* When the timer expired */ + HV_NANO100_TIME DeliveryTime; /* When the message was delivered */ } HV_TIMER_MESSAGE_PAYLOAD, *PHV_TIMER_MESSAGE_PAYLOAD; - /* Define synthetic interrupt controller message format. */ - -typedef struct _HV_MESSAGE -{ - HV_MESSAGE_HEADER Header; - union - { - u64 Payload[HV_MESSAGE_PAYLOAD_QWORD_COUNT]; - } u ; +typedef struct _HV_MESSAGE { + HV_MESSAGE_HEADER Header; + union { + u64 Payload[HV_MESSAGE_PAYLOAD_QWORD_COUNT]; + } u; } HV_MESSAGE, *PHV_MESSAGE; - /* Define the number of message buffers associated with each port. */ - #define HV_PORT_MESSAGE_BUFFER_COUNT (16) - /* Define the synthetic interrupt message page layout. */ - -typedef struct _HV_MESSAGE_PAGE -{ - volatile HV_MESSAGE SintMessage[HV_SYNIC_SINT_COUNT]; +typedef struct _HV_MESSAGE_PAGE { + volatile HV_MESSAGE SintMessage[HV_SYNIC_SINT_COUNT]; } HV_MESSAGE_PAGE, *PHV_MESSAGE_PAGE; - - /* Define the synthetic interrupt controller event flags format. */ - -typedef union _HV_SYNIC_EVENT_FLAGS -{ - u8 Flags8[HV_EVENT_FLAGS_BYTE_COUNT]; - u32 Flags32[HV_EVENT_FLAGS_DWORD_COUNT]; +typedef union _HV_SYNIC_EVENT_FLAGS { + u8 Flags8[HV_EVENT_FLAGS_BYTE_COUNT]; + u32 Flags32[HV_EVENT_FLAGS_DWORD_COUNT]; } HV_SYNIC_EVENT_FLAGS, *PHV_SYNIC_EVENT_FLAGS; - - /* Define the synthetic interrupt flags page layout. */ - -typedef struct _HV_SYNIC_EVENT_FLAGS_PAGE -{ - volatile HV_SYNIC_EVENT_FLAGS SintEventFlags[HV_SYNIC_SINT_COUNT]; +typedef struct _HV_SYNIC_EVENT_FLAGS_PAGE { + volatile HV_SYNIC_EVENT_FLAGS SintEventFlags[HV_SYNIC_SINT_COUNT]; } HV_SYNIC_EVENT_FLAGS_PAGE, *PHV_SYNIC_EVENT_FLAGS_PAGE; - - /* Define SynIC control register. */ -typedef union _HV_SYNIC_SCONTROL -{ - u64 AsUINT64; - struct - { - u64 Enable:1; - u64 Reserved:63; - }; +typedef union _HV_SYNIC_SCONTROL { + u64 AsUINT64; + struct { + u64 Enable:1; + u64 Reserved:63; + }; } HV_SYNIC_SCONTROL, *PHV_SYNIC_SCONTROL; - /* Define synthetic interrupt source. */ - -typedef union _HV_SYNIC_SINT -{ - u64 AsUINT64; - struct - { - u64 Vector :8; - u64 Reserved1 :8; - u64 Masked :1; - u64 AutoEoi :1; - u64 Reserved2 :46; - }; +typedef union _HV_SYNIC_SINT { + u64 AsUINT64; + struct { + u64 Vector:8; + u64 Reserved1:8; + u64 Masked:1; + u64 AutoEoi:1; + u64 Reserved2:46; + }; } HV_SYNIC_SINT, *PHV_SYNIC_SINT; - /* Define the format of the SIMP register */ - -typedef union _HV_SYNIC_SIMP -{ - u64 AsUINT64; - struct - { - u64 SimpEnabled : 1; - u64 Preserved : 11; - u64 BaseSimpGpa : 52; - }; +typedef union _HV_SYNIC_SIMP { + u64 AsUINT64; + struct { + u64 SimpEnabled:1; + u64 Preserved:11; + u64 BaseSimpGpa:52; + }; } HV_SYNIC_SIMP, *PHV_SYNIC_SIMP; - /* Define the format of the SIEFP register */ - -typedef union _HV_SYNIC_SIEFP -{ - u64 AsUINT64; - struct - { - u64 SiefpEnabled : 1; - u64 Preserved : 11; - u64 BaseSiefpGpa : 52; - }; +typedef union _HV_SYNIC_SIEFP { + u64 AsUINT64; + struct { + u64 SiefpEnabled:1; + u64 Preserved:11; + u64 BaseSiefpGpa:52; + }; } HV_SYNIC_SIEFP, *PHV_SYNIC_SIEFP; - /* Definitions for the monitored notification facility */ +typedef union _HV_MONITOR_TRIGGER_GROUP { + u64 AsUINT64; -typedef union _HV_MONITOR_TRIGGER_GROUP -{ - u64 AsUINT64; - - struct - { - u32 Pending; - u32 Armed; - }; + struct { + u32 Pending; + u32 Armed; + }; } HV_MONITOR_TRIGGER_GROUP, *PHV_MONITOR_TRIGGER_GROUP; -typedef struct _HV_MONITOR_PARAMETER -{ - HV_CONNECTION_ID ConnectionId; - u16 FlagNumber; - u16 RsvdZ; +typedef struct _HV_MONITOR_PARAMETER { + HV_CONNECTION_ID ConnectionId; + u16 FlagNumber; + u16 RsvdZ; } HV_MONITOR_PARAMETER, *PHV_MONITOR_PARAMETER; -typedef union _HV_MONITOR_TRIGGER_STATE -{ - u32 Asu32; +typedef union _HV_MONITOR_TRIGGER_STATE { + u32 Asu32; - struct - { - u32 GroupEnable : 4; - u32 RsvdZ : 28; - }; + struct { + u32 GroupEnable:4; + u32 RsvdZ:28; + }; } HV_MONITOR_TRIGGER_STATE, *PHV_MONITOR_TRIGGER_STATE; - /* HV_MONITOR_PAGE Layout */ /* ------------------------------------------------------ */ /* | 0 | TriggerState (4 bytes) | Rsvd1 (4 bytes) | */ @@ -468,23 +367,22 @@ typedef union _HV_MONITOR_TRIGGER_STATE /* | 840 | Rsvd4[0] | */ /* ------------------------------------------------------ */ -typedef struct _HV_MONITOR_PAGE -{ - HV_MONITOR_TRIGGER_STATE TriggerState; - u32 RsvdZ1; +typedef struct _HV_MONITOR_PAGE { + HV_MONITOR_TRIGGER_STATE TriggerState; + u32 RsvdZ1; - HV_MONITOR_TRIGGER_GROUP TriggerGroup[4]; - u64 RsvdZ2[3]; + HV_MONITOR_TRIGGER_GROUP TriggerGroup[4]; + u64 RsvdZ2[3]; - s32 NextCheckTime[4][32]; + s32 NextCheckTime[4][32]; - u16 Latency[4][32]; - u64 RsvdZ3[32]; + u16 Latency[4][32]; + u64 RsvdZ3[32]; - HV_MONITOR_PARAMETER Parameter[4][32]; + HV_MONITOR_PARAMETER Parameter[4][32]; - u8 RsvdZ4[1984]; + u8 RsvdZ4[1984]; } HV_MONITOR_PAGE, *PHV_MONITOR_PAGE; -typedef volatile HV_MONITOR_PAGE* PVHV_MONITOR_PAGE; +typedef volatile HV_MONITOR_PAGE *PVHV_MONITOR_PAGE; diff --git a/drivers/staging/hv/include/HvTypes.h b/drivers/staging/hv/include/HvTypes.h index 5741c35..d49480c 100644 --- a/drivers/staging/hv/include/HvTypes.h +++ b/drivers/staging/hv/include/HvTypes.h @@ -21,11 +21,9 @@ * */ - #pragma once typedef u64 HV_GPA, *PHV_GPA; #define HV_X64_PAGE_SIZE (4096) #define HV_PAGE_SIZE HV_X64_PAGE_SIZE - diff --git a/drivers/staging/hv/include/HvVpApi.h b/drivers/staging/hv/include/HvVpApi.h index ce0784c..e857d8b 100644 --- a/drivers/staging/hv/include/HvVpApi.h +++ b/drivers/staging/hv/include/HvVpApi.h @@ -21,31 +21,25 @@ * */ - #pragma once /* Virtual Processor Indices */ typedef u32 HV_VP_INDEX, *PHV_VP_INDEX; - /* The below CPUID leaves are present if VersionAndFeatures.HypervisorPresent */ /* is set by CPUID(HvCpuIdFunctionVersionAndFeatures). */ /* ========================================================================== */ +typedef enum _HV_CPUID_FUNCTION { + HvCpuIdFunctionVersionAndFeatures = 0x00000001, + HvCpuIdFunctionHvVendorAndMaxFunction = 0x40000000, + HvCpuIdFunctionHvInterface = 0x40000001, -typedef enum _HV_CPUID_FUNCTION -{ - HvCpuIdFunctionVersionAndFeatures = 0x00000001, - HvCpuIdFunctionHvVendorAndMaxFunction = 0x40000000, - HvCpuIdFunctionHvInterface = 0x40000001, - - - /* The remaining functions depend on the value of HvCpuIdFunctionInterface */ - - HvCpuIdFunctionMsHvVersion = 0x40000002, - HvCpuIdFunctionMsHvFeatures = 0x40000003, - HvCpuIdFunctionMsHvEnlightenmentInformation = 0x40000004, - HvCpuIdFunctionMsHvImplementationLimits = 0x40000005 + /* The remaining functions depend on the value of HvCpuIdFunctionInterface */ + HvCpuIdFunctionMsHvVersion = 0x40000002, + HvCpuIdFunctionMsHvFeatures = 0x40000003, + HvCpuIdFunctionMsHvEnlightenmentInformation = 0x40000004, + HvCpuIdFunctionMsHvImplementationLimits = 0x40000005 } HV_CPUID_FUNCTION, *PHV_CPUID_FUNCTION; diff --git a/drivers/staging/hv/include/List.h b/drivers/staging/hv/include/List.h index 31c1296..11cc851 100644 --- a/drivers/staging/hv/include/List.h +++ b/drivers/staging/hv/include/List.h @@ -21,7 +21,6 @@ * */ - #ifndef _LIST_H_ #define _LIST_H_ @@ -41,8 +40,6 @@ typedef DLIST_ENTRY *PLIST_ENTRY; /* struct LIST_ENTRY * volatile Blink; */ /* } LIST_ENTRY, *PLIST_ENTRY; */ - - /* * void * InitializeListHead( @@ -54,7 +51,6 @@ typedef DLIST_ENTRY *PLIST_ENTRY; #define InitializeListHead(ListHead) (\ (ListHead)->Flink = (ListHead)->Blink = (ListHead)) - /* * bool * IsListEmpty( @@ -66,7 +62,6 @@ typedef DLIST_ENTRY *PLIST_ENTRY; #define IsListEmpty(ListHead) \ ((ListHead)->Flink == (ListHead)) - /* * PLIST_ENTRY * NextListEntry( @@ -78,7 +73,6 @@ typedef DLIST_ENTRY *PLIST_ENTRY; #define NextListEntry(Entry) \ (Entry)->Flink - /* * PLIST_ENTRY * PrevListEntry( @@ -90,7 +84,6 @@ typedef DLIST_ENTRY *PLIST_ENTRY; #define PrevListEntry(Entry) \ (Entry)->Blink - /* * PLIST_ENTRY * TopListEntry( @@ -102,8 +95,6 @@ typedef DLIST_ENTRY *PLIST_ENTRY; #define TopListEntry(ListHead) \ (ListHead)->Flink - - /* * PLIST_ENTRY * RemoveHeadList( @@ -117,7 +108,6 @@ typedef DLIST_ENTRY *PLIST_ENTRY; (ListHead)->Flink;\ {RemoveEntryList((ListHead)->Flink)} - /* * PLIST_ENTRY * RemoveTailList( @@ -130,7 +120,6 @@ typedef DLIST_ENTRY *PLIST_ENTRY; (ListHead)->Blink;\ {RemoveEntryList((ListHead)->Blink)} - /* * void * RemoveEntryList( @@ -146,7 +135,6 @@ typedef DLIST_ENTRY *PLIST_ENTRY; _EX_Flink->Blink = _EX_Blink;\ } - /* * void * AttachList( @@ -165,8 +153,6 @@ typedef DLIST_ENTRY *PLIST_ENTRY; (ListEntry)->Blink = _EX_Blink;\ } - - /* * void * InsertTailList( @@ -186,7 +172,6 @@ typedef DLIST_ENTRY *PLIST_ENTRY; _EX_ListHead->Blink = (Entry);\ } - /* * void * InsertHeadList( @@ -205,7 +190,6 @@ typedef DLIST_ENTRY *PLIST_ENTRY; _EX_ListHead->Flink = (Entry);\ } - /* * void * IterateListEntries( @@ -221,8 +205,6 @@ typedef DLIST_ENTRY *PLIST_ENTRY; (anchor) = (LIST_ENTRY *)(listp); \ for((index) = (anchor)->Flink; (index) != (anchor); (index) = (index)->Flink) - - /* * PSINGLE_LIST_ENTRY * PopEntryList( @@ -242,8 +224,6 @@ typedef DLIST_ENTRY *PLIST_ENTRY; } \ } - - /* * void * PushEntryList( diff --git a/drivers/staging/hv/include/NetVscApi.h b/drivers/staging/hv/include/NetVscApi.h index 56ae23a..edcca04 100644 --- a/drivers/staging/hv/include/NetVscApi.h +++ b/drivers/staging/hv/include/NetVscApi.h @@ -21,48 +21,42 @@ * */ - #ifndef _NETVSC_API_H_ #define _NETVSC_API_H_ #include "VmbusApi.h" - /* Defines */ #define NETVSC_DEVICE_RING_BUFFER_SIZE 64*PAGE_SIZE #define HW_MACADDR_LEN 6 - /* Fwd declaration */ -typedef struct _NETVSC_PACKET *PNETVSC_PACKET; - - +typedef struct _NETVSC_PACKET *PNETVSC_PACKET; /* Data types */ +typedef int (*PFN_ON_OPEN) (struct hv_device * Device); +typedef int (*PFN_ON_CLOSE) (struct hv_device * Device); -typedef int (*PFN_ON_OPEN)(struct hv_device *Device); -typedef int (*PFN_ON_CLOSE)(struct hv_device *Device); +typedef void (*PFN_QUERY_LINKSTATUS) (struct hv_device * Device); +typedef int (*PFN_ON_SEND) (struct hv_device * dev, PNETVSC_PACKET packet); +typedef void (*PFN_ON_SENDRECVCOMPLETION) (void *Context); -typedef void (*PFN_QUERY_LINKSTATUS)(struct hv_device *Device); -typedef int (*PFN_ON_SEND)(struct hv_device *dev, PNETVSC_PACKET packet); -typedef void (*PFN_ON_SENDRECVCOMPLETION)(void * Context); - -typedef int (*PFN_ON_RECVCALLBACK)(struct hv_device *dev, PNETVSC_PACKET packet); -typedef void (*PFN_ON_LINKSTATUS_CHANGED)(struct hv_device *dev, u32 Status); +typedef int (*PFN_ON_RECVCALLBACK) (struct hv_device * dev, + PNETVSC_PACKET packet); +typedef void (*PFN_ON_LINKSTATUS_CHANGED) (struct hv_device * dev, u32 Status); /* Represent the xfer page packet which contains 1 or more netvsc packet */ typedef struct _XFERPAGE_PACKET { - DLIST_ENTRY ListEntry; + DLIST_ENTRY ListEntry; /* # of netvsc packets this xfer packet contains */ - u32 Count; + u32 Count; } XFERPAGE_PACKET; - /* The number of pages which are enough to cover jumbo frame buffer. */ #define NETVSC_PACKET_MAXPAGE 4 @@ -72,82 +66,76 @@ typedef struct _XFERPAGE_PACKET { */ typedef struct _NETVSC_PACKET { /* Bookkeeping stuff */ - DLIST_ENTRY ListEntry; + DLIST_ENTRY ListEntry; struct hv_device *Device; - bool IsDataPacket; + bool IsDataPacket; /* * Valid only for receives when we break a xfer page packet * into multiple netvsc packets */ - XFERPAGE_PACKET *XferPagePacket; + XFERPAGE_PACKET *XferPagePacket; union { - struct{ - u64 ReceiveCompletionTid; - void * ReceiveCompletionContext; - PFN_ON_SENDRECVCOMPLETION OnReceiveCompletion; + struct { + u64 ReceiveCompletionTid; + void *ReceiveCompletionContext; + PFN_ON_SENDRECVCOMPLETION OnReceiveCompletion; } Recv; - struct{ - u64 SendCompletionTid; - void * SendCompletionContext; - PFN_ON_SENDRECVCOMPLETION OnSendCompletion; + struct { + u64 SendCompletionTid; + void *SendCompletionContext; + PFN_ON_SENDRECVCOMPLETION OnSendCompletion; } Send; } Completion; /* This points to the memory after PageBuffers */ - void * Extension; + void *Extension; - u32 TotalDataBufferLength; + u32 TotalDataBufferLength; /* Points to the send/receive buffer where the ethernet frame is */ - u32 PageBufferCount; - PAGE_BUFFER PageBuffers[NETVSC_PACKET_MAXPAGE]; + u32 PageBufferCount; + PAGE_BUFFER PageBuffers[NETVSC_PACKET_MAXPAGE]; } NETVSC_PACKET; - /* Represents the net vsc driver */ typedef struct _NETVSC_DRIVER_OBJECT { - DRIVER_OBJECT Base; /* Must be the first field */ + DRIVER_OBJECT Base; /* Must be the first field */ - u32 RingBufferSize; - u32 RequestExtSize; + u32 RingBufferSize; + u32 RequestExtSize; /* Additional num of page buffers to allocate */ - u32 AdditionalRequestPageBufferCount; + u32 AdditionalRequestPageBufferCount; /* * This is set by the caller to allow us to callback when we * receive a packet from the "wire" */ - PFN_ON_RECVCALLBACK OnReceiveCallback; + PFN_ON_RECVCALLBACK OnReceiveCallback; - PFN_ON_LINKSTATUS_CHANGED OnLinkStatusChanged; + PFN_ON_LINKSTATUS_CHANGED OnLinkStatusChanged; /* Specific to this driver */ - PFN_ON_OPEN OnOpen; - PFN_ON_CLOSE OnClose; - PFN_ON_SEND OnSend; - /* PFN_ON_RECVCOMPLETION OnReceiveCompletion; */ + PFN_ON_OPEN OnOpen; + PFN_ON_CLOSE OnClose; + PFN_ON_SEND OnSend; + /* PFN_ON_RECVCOMPLETION OnReceiveCompletion; */ - /* PFN_QUERY_LINKSTATUS QueryLinkStatus; */ + /* PFN_QUERY_LINKSTATUS QueryLinkStatus; */ - void* Context; + void *Context; } NETVSC_DRIVER_OBJECT; - typedef struct _NETVSC_DEVICE_INFO { - unsigned char MacAddr[6]; - bool LinkState; /* 0 - link up, 1 - link down */ + unsigned char MacAddr[6]; + bool LinkState; /* 0 - link up, 1 - link down */ } NETVSC_DEVICE_INFO; - /* Interface */ -int -NetVscInitialize( - DRIVER_OBJECT* drv - ); +int NetVscInitialize(DRIVER_OBJECT * drv); #endif /* _NETVSC_API_H_ */ diff --git a/drivers/staging/hv/include/StorVscApi.h b/drivers/staging/hv/include/StorVscApi.h index bd09409..2b7e1f0 100644 --- a/drivers/staging/hv/include/StorVscApi.h +++ b/drivers/staging/hv/include/StorVscApi.h @@ -21,16 +21,13 @@ * */ - #ifndef _STORVSC_API_H_ #define _STORVSC_API_H_ #include "VmbusApi.h" - /* Defines */ - #define STORVSC_RING_BUFFER_SIZE 10*PAGE_SIZE #define BLKVSC_RING_BUFFER_SIZE 20*PAGE_SIZE @@ -47,93 +44,82 @@ #define STORVSC_MAX_TARGETS 1 #define STORVSC_MAX_CHANNELS 1 - /* Fwd decl */ /* struct VMBUS_CHANNEL; */ -typedef struct _STORVSC_REQUEST* PSTORVSC_REQUEST; - +typedef struct _STORVSC_REQUEST *PSTORVSC_REQUEST; /* Data types */ -typedef int (*PFN_ON_IO_REQUEST)(struct hv_device *Device, PSTORVSC_REQUEST Request); -typedef void (*PFN_ON_IO_REQUEST_COMPLTN)(PSTORVSC_REQUEST Request); - -typedef int (*PFN_ON_HOST_RESET)(struct hv_device *Device); -typedef void (*PFN_ON_HOST_RESCAN)(struct hv_device *Device); +typedef int (*PFN_ON_IO_REQUEST) (struct hv_device * Device, + PSTORVSC_REQUEST Request); +typedef void (*PFN_ON_IO_REQUEST_COMPLTN) (PSTORVSC_REQUEST Request); +typedef int (*PFN_ON_HOST_RESET) (struct hv_device * Device); +typedef void (*PFN_ON_HOST_RESCAN) (struct hv_device * Device); /* Matches Windows-end */ -typedef enum _STORVSC_REQUEST_TYPE{ +typedef enum _STORVSC_REQUEST_TYPE { WRITE_TYPE, READ_TYPE, UNKNOWN_TYPE, } STORVSC_REQUEST_TYPE; - typedef struct _STORVSC_REQUEST { - STORVSC_REQUEST_TYPE Type; - u32 Host; - u32 Bus; - u32 TargetId; - u32 LunId; - u8 * Cdb; - u32 CdbLen; - u32 Status; - u32 BytesXfer; + STORVSC_REQUEST_TYPE Type; + u32 Host; + u32 Bus; + u32 TargetId; + u32 LunId; + u8 *Cdb; + u32 CdbLen; + u32 Status; + u32 BytesXfer; - unsigned char* SenseBuffer; - u32 SenseBufferSize; + unsigned char *SenseBuffer; + u32 SenseBufferSize; - void * Context; + void *Context; - PFN_ON_IO_REQUEST_COMPLTN OnIOCompletion; + PFN_ON_IO_REQUEST_COMPLTN OnIOCompletion; /* This points to the memory after DataBuffer */ - void * Extension; + void *Extension; - MULTIPAGE_BUFFER DataBuffer; + MULTIPAGE_BUFFER DataBuffer; } STORVSC_REQUEST; - /* Represents the block vsc driver */ typedef struct _STORVSC_DRIVER_OBJECT { - DRIVER_OBJECT Base; /* Must be the first field */ + DRIVER_OBJECT Base; /* Must be the first field */ /* Set by caller (in bytes) */ - u32 RingBufferSize; + u32 RingBufferSize; /* Allocate this much private extension for each I/O request */ - u32 RequestExtSize; + u32 RequestExtSize; /* Maximum # of requests in flight per channel/device */ - u32 MaxOutstandingRequestsPerChannel; + u32 MaxOutstandingRequestsPerChannel; /* Set by the caller to allow us to re-enumerate the bus on the host */ - PFN_ON_HOST_RESCAN OnHostRescan; + PFN_ON_HOST_RESCAN OnHostRescan; /* Specific to this driver */ - PFN_ON_IO_REQUEST OnIORequest; - PFN_ON_HOST_RESET OnHostReset; + PFN_ON_IO_REQUEST OnIORequest; + PFN_ON_HOST_RESET OnHostReset; } STORVSC_DRIVER_OBJECT; typedef struct _STORVSC_DEVICE_INFO { - unsigned int PortNumber; - unsigned char PathId; - unsigned char TargetId; + unsigned int PortNumber; + unsigned char PathId; + unsigned char TargetId; } STORVSC_DEVICE_INFO; - /* Interface */ -int -StorVscInitialize( - DRIVER_OBJECT *Driver - ); +int StorVscInitialize(DRIVER_OBJECT * Driver); -int -BlkVscInitialize( - DRIVER_OBJECT *Driver - ); +int BlkVscInitialize(DRIVER_OBJECT * Driver); #endif /* _STORVSC_API_H_ */ diff --git a/drivers/staging/hv/include/VmbusApi.h b/drivers/staging/hv/include/VmbusApi.h index c09f589..0dd6912 100644 --- a/drivers/staging/hv/include/VmbusApi.h +++ b/drivers/staging/hv/include/VmbusApi.h @@ -21,243 +21,213 @@ * */ - #ifndef _VMBUS_API_H_ #define _VMBUS_API_H_ #include "osd.h" - /* Defines */ - #define MAX_PAGE_BUFFER_COUNT 16 -#define MAX_MULTIPAGE_BUFFER_COUNT 32 /* 128K */ - - +#define MAX_MULTIPAGE_BUFFER_COUNT 32 /* 128K */ /* Fwd declarations */ typedef struct _DRIVER_OBJECT *PDRIVER_OBJECT; - /* Data types */ - #pragma pack(push,1) /* Single-page buffer */ typedef struct _PAGE_BUFFER { - u32 Length; - u32 Offset; - u64 Pfn; + u32 Length; + u32 Offset; + u64 Pfn; } PAGE_BUFFER; /* Multiple-page buffer */ typedef struct _MULTIPAGE_BUFFER { /* Length and Offset determines the # of pfns in the array */ - u32 Length; - u32 Offset; - u64 PfnArray[MAX_MULTIPAGE_BUFFER_COUNT]; -}MULTIPAGE_BUFFER; + u32 Length; + u32 Offset; + u64 PfnArray[MAX_MULTIPAGE_BUFFER_COUNT]; +} MULTIPAGE_BUFFER; /* 0x18 includes the proprietary packet header */ #define MAX_PAGE_BUFFER_PACKET (0x18 + (sizeof(PAGE_BUFFER) * MAX_PAGE_BUFFER_COUNT)) #define MAX_MULTIPAGE_BUFFER_PACKET (0x18 + sizeof(MULTIPAGE_BUFFER)) - #pragma pack(pop) struct hv_device; /* All drivers */ -typedef int (*PFN_ON_DEVICEADD)(struct hv_device *Device, void* AdditionalInfo); -typedef int (*PFN_ON_DEVICEREMOVE)(struct hv_device *Device); -typedef char** (*PFN_ON_GETDEVICEIDS)(void); -typedef void (*PFN_ON_CLEANUP)(PDRIVER_OBJECT Driver); +typedef int (*PFN_ON_DEVICEADD) (struct hv_device * Device, + void *AdditionalInfo); +typedef int (*PFN_ON_DEVICEREMOVE) (struct hv_device * Device); +typedef char **(*PFN_ON_GETDEVICEIDS) (void); +typedef void (*PFN_ON_CLEANUP) (PDRIVER_OBJECT Driver); /* Vmbus extensions */ /* typedef int (*PFN_ON_MATCH)(struct hv_device *dev, PDRIVER_OBJECT drv); */ /* typedef int (*PFN_ON_PROBE)(struct hv_device *dev); */ -typedef int (*PFN_ON_ISR)(PDRIVER_OBJECT drv); -typedef void (*PFN_ON_DPC)(PDRIVER_OBJECT drv); -typedef void (*PFN_GET_CHANNEL_OFFERS)(void); - -typedef struct hv_device *(*PFN_ON_CHILDDEVICE_CREATE)(GUID DeviceType, GUID DeviceInstance, void *Context); -typedef void (*PFN_ON_CHILDDEVICE_DESTROY)(struct hv_device *Device); -typedef int (*PFN_ON_CHILDDEVICE_ADD)(struct hv_device *RootDevice, struct hv_device *ChildDevice); -typedef void (*PFN_ON_CHILDDEVICE_REMOVE)(struct hv_device *Device); +typedef int (*PFN_ON_ISR) (PDRIVER_OBJECT drv); +typedef void (*PFN_ON_DPC) (PDRIVER_OBJECT drv); +typedef void (*PFN_GET_CHANNEL_OFFERS) (void); + +typedef struct hv_device *(*PFN_ON_CHILDDEVICE_CREATE) (GUID DeviceType, + GUID DeviceInstance, + void *Context); +typedef void (*PFN_ON_CHILDDEVICE_DESTROY) (struct hv_device * Device); +typedef int (*PFN_ON_CHILDDEVICE_ADD) (struct hv_device * RootDevice, + struct hv_device * ChildDevice); +typedef void (*PFN_ON_CHILDDEVICE_REMOVE) (struct hv_device * Device); /* Vmbus channel interface */ -typedef void (*VMBUS_CHANNEL_CALLBACK)(void * context); - -typedef int (*VMBUS_CHANNEL_OPEN)( - struct hv_device *Device, - u32 SendBufferSize, - u32 RecvRingBufferSize, - void * UserData, - u32 UserDataLen, - VMBUS_CHANNEL_CALLBACK ChannelCallback, - void * Context - ); - -typedef void (*VMBUS_CHANNEL_CLOSE)( - struct hv_device *Device - ); - -typedef int (*VMBUS_CHANNEL_SEND_PACKET)( - struct hv_device *Device, - const void * Buffer, - u32 BufferLen, - u64 RequestId, - u32 Type, - u32 Flags -); - -typedef int (*VMBUS_CHANNEL_SEND_PACKET_PAGEBUFFER)( - struct hv_device *Device, - PAGE_BUFFER PageBuffers[], - u32 PageCount, - void * Buffer, - u32 BufferLen, - u64 RequestId - ); - -typedef int (*VMBUS_CHANNEL_SEND_PACKET_MULTIPAGEBUFFER)( - struct hv_device *Device, - MULTIPAGE_BUFFER *MultiPageBuffer, - void * Buffer, - u32 BufferLen, - u64 RequestId -); - -typedef int (*VMBUS_CHANNEL_RECV_PACKET)( - struct hv_device *Device, - void * Buffer, - u32 BufferLen, - u32* BufferActualLen, - u64* RequestId - ); - -typedef int (*VMBUS_CHANNEL_RECV_PACKET_PAW)( - struct hv_device *Device, - void * Buffer, - u32 BufferLen, - u32* BufferActualLen, - u64* RequestId - ); - -typedef int (*VMBUS_CHANNEL_ESTABLISH_GPADL)( - struct hv_device *Device, - void * Buffer, /* from kmalloc() */ - u32 BufferLen, /* page-size multiple */ - u32* GpadlHandle - ); - -typedef int (*VMBUS_CHANNEL_TEARDOWN_GPADL)( - struct hv_device *Device, - u32 GpadlHandle - ); - +typedef void (*VMBUS_CHANNEL_CALLBACK) (void *context); + +typedef int (*VMBUS_CHANNEL_OPEN) (struct hv_device * Device, + u32 SendBufferSize, + u32 RecvRingBufferSize, + void *UserData, + u32 UserDataLen, + VMBUS_CHANNEL_CALLBACK ChannelCallback, + void *Context); + +typedef void (*VMBUS_CHANNEL_CLOSE) (struct hv_device * Device); + +typedef int (*VMBUS_CHANNEL_SEND_PACKET) (struct hv_device * Device, + const void *Buffer, + u32 BufferLen, + u64 RequestId, u32 Type, u32 Flags); + +typedef int (*VMBUS_CHANNEL_SEND_PACKET_PAGEBUFFER) (struct hv_device * Device, + PAGE_BUFFER PageBuffers[], + u32 PageCount, + void *Buffer, + u32 BufferLen, + u64 RequestId); + +typedef int (*VMBUS_CHANNEL_SEND_PACKET_MULTIPAGEBUFFER) (struct hv_device * + Device, + MULTIPAGE_BUFFER * + MultiPageBuffer, + void *Buffer, + u32 BufferLen, + u64 RequestId); + +typedef int (*VMBUS_CHANNEL_RECV_PACKET) (struct hv_device * Device, + void *Buffer, + u32 BufferLen, + u32 * BufferActualLen, + u64 * RequestId); + +typedef int (*VMBUS_CHANNEL_RECV_PACKET_PAW) (struct hv_device * Device, + void *Buffer, + u32 BufferLen, + u32 * BufferActualLen, + u64 * RequestId); + +typedef int (*VMBUS_CHANNEL_ESTABLISH_GPADL) (struct hv_device * Device, void *Buffer, /* from kmalloc() */ + u32 BufferLen, /* page-size multiple */ + u32 * GpadlHandle); + +typedef int (*VMBUS_CHANNEL_TEARDOWN_GPADL) (struct hv_device * Device, + u32 GpadlHandle); typedef struct _PORT_INFO { - u32 InterruptMask; - u32 ReadIndex; - u32 WriteIndex; - u32 BytesAvailToRead; - u32 BytesAvailToWrite; + u32 InterruptMask; + u32 ReadIndex; + u32 WriteIndex; + u32 BytesAvailToRead; + u32 BytesAvailToWrite; } PORT_INFO; - typedef struct _DEVICE_INFO { - u32 ChannelId; - u32 ChannelState; - GUID ChannelType; - GUID ChannelInstance; - - u32 MonitorId; - u32 ServerMonitorPending; - u32 ServerMonitorLatency; - u32 ServerMonitorConnectionId; - u32 ClientMonitorPending; - u32 ClientMonitorLatency; - u32 ClientMonitorConnectionId; - - PORT_INFO Inbound; - PORT_INFO Outbound; + u32 ChannelId; + u32 ChannelState; + GUID ChannelType; + GUID ChannelInstance; + + u32 MonitorId; + u32 ServerMonitorPending; + u32 ServerMonitorLatency; + u32 ServerMonitorConnectionId; + u32 ClientMonitorPending; + u32 ClientMonitorLatency; + u32 ClientMonitorConnectionId; + + PORT_INFO Inbound; + PORT_INFO Outbound; } DEVICE_INFO; -typedef void (*VMBUS_GET_CHANNEL_INFO)(struct hv_device *Device, DEVICE_INFO* DeviceInfo); +typedef void (*VMBUS_GET_CHANNEL_INFO) (struct hv_device * Device, + DEVICE_INFO * DeviceInfo); typedef struct _VMBUS_CHANNEL_INTERFACE { - VMBUS_CHANNEL_OPEN Open; - VMBUS_CHANNEL_CLOSE Close; - VMBUS_CHANNEL_SEND_PACKET SendPacket; - VMBUS_CHANNEL_SEND_PACKET_PAGEBUFFER SendPacketPageBuffer; - VMBUS_CHANNEL_SEND_PACKET_MULTIPAGEBUFFER SendPacketMultiPageBuffer; - VMBUS_CHANNEL_RECV_PACKET RecvPacket; - VMBUS_CHANNEL_RECV_PACKET_PAW RecvPacketRaw; - VMBUS_CHANNEL_ESTABLISH_GPADL EstablishGpadl; - VMBUS_CHANNEL_TEARDOWN_GPADL TeardownGpadl; - VMBUS_GET_CHANNEL_INFO GetInfo; + VMBUS_CHANNEL_OPEN Open; + VMBUS_CHANNEL_CLOSE Close; + VMBUS_CHANNEL_SEND_PACKET SendPacket; + VMBUS_CHANNEL_SEND_PACKET_PAGEBUFFER SendPacketPageBuffer; + VMBUS_CHANNEL_SEND_PACKET_MULTIPAGEBUFFER SendPacketMultiPageBuffer; + VMBUS_CHANNEL_RECV_PACKET RecvPacket; + VMBUS_CHANNEL_RECV_PACKET_PAW RecvPacketRaw; + VMBUS_CHANNEL_ESTABLISH_GPADL EstablishGpadl; + VMBUS_CHANNEL_TEARDOWN_GPADL TeardownGpadl; + VMBUS_GET_CHANNEL_INFO GetInfo; } VMBUS_CHANNEL_INTERFACE; -typedef void (*VMBUS_GET_CHANNEL_INTERFACE)(VMBUS_CHANNEL_INTERFACE *Interface); +typedef void (*VMBUS_GET_CHANNEL_INTERFACE) (VMBUS_CHANNEL_INTERFACE * + Interface); /* Base driver object */ typedef struct _DRIVER_OBJECT { - const char* name; - GUID deviceType; /* the device type supported by this driver */ + const char *name; + GUID deviceType; /* the device type supported by this driver */ - PFN_ON_DEVICEADD OnDeviceAdd; - PFN_ON_DEVICEREMOVE OnDeviceRemove; - PFN_ON_GETDEVICEIDS OnGetDeviceIds; /* device ids supported by this driver */ - PFN_ON_CLEANUP OnCleanup; + PFN_ON_DEVICEADD OnDeviceAdd; + PFN_ON_DEVICEREMOVE OnDeviceRemove; + PFN_ON_GETDEVICEIDS OnGetDeviceIds; /* device ids supported by this driver */ + PFN_ON_CLEANUP OnCleanup; VMBUS_CHANNEL_INTERFACE VmbusChannelInterface; } DRIVER_OBJECT; - /* Base device object */ struct hv_device { - DRIVER_OBJECT* Driver; /* the driver for this device */ - char name[64]; - GUID deviceType; /* the device type id of this device */ - GUID deviceInstance; /* the device instance id of this device */ - void* context; - void* Extension; /* Device extension; */ + DRIVER_OBJECT *Driver; /* the driver for this device */ + char name[64]; + GUID deviceType; /* the device type id of this device */ + GUID deviceInstance; /* the device instance id of this device */ + void *context; + void *Extension; /* Device extension; */ }; - /* Vmbus driver object */ typedef struct _VMBUS_DRIVER_OBJECT { - DRIVER_OBJECT Base; /* !! Must be the 1st field !! */ + DRIVER_OBJECT Base; /* !! Must be the 1st field !! */ /* Set by the caller */ - PFN_ON_CHILDDEVICE_CREATE OnChildDeviceCreate; - PFN_ON_CHILDDEVICE_DESTROY OnChildDeviceDestroy; - PFN_ON_CHILDDEVICE_ADD OnChildDeviceAdd; - PFN_ON_CHILDDEVICE_REMOVE OnChildDeviceRemove; + PFN_ON_CHILDDEVICE_CREATE OnChildDeviceCreate; + PFN_ON_CHILDDEVICE_DESTROY OnChildDeviceDestroy; + PFN_ON_CHILDDEVICE_ADD OnChildDeviceAdd; + PFN_ON_CHILDDEVICE_REMOVE OnChildDeviceRemove; /* Set by the callee */ - /* PFN_ON_MATCH OnMatch; */ - /* PFN_ON_PROBE OnProbe; */ - PFN_ON_ISR OnIsr; - PFN_ON_DPC OnMsgDpc; - PFN_ON_DPC OnEventDpc; - PFN_GET_CHANNEL_OFFERS GetChannelOffers; + /* PFN_ON_MATCH OnMatch; */ + /* PFN_ON_PROBE OnProbe; */ + PFN_ON_ISR OnIsr; + PFN_ON_DPC OnMsgDpc; + PFN_ON_DPC OnEventDpc; + PFN_GET_CHANNEL_OFFERS GetChannelOffers; VMBUS_GET_CHANNEL_INTERFACE GetChannelInterface; - VMBUS_GET_CHANNEL_INFO GetChannelInfo; + VMBUS_GET_CHANNEL_INFO GetChannelInfo; } VMBUS_DRIVER_OBJECT; - - /* Interface */ -int -VmbusInitialize( - DRIVER_OBJECT* drv - ); +int VmbusInitialize(DRIVER_OBJECT * drv); #endif /* _VMBUS_API_H_ */ diff --git a/drivers/staging/hv/include/VmbusChannelInterface.h b/drivers/staging/hv/include/VmbusChannelInterface.h index 881c22d..2dfa238 100644 --- a/drivers/staging/hv/include/VmbusChannelInterface.h +++ b/drivers/staging/hv/include/VmbusChannelInterface.h @@ -21,89 +21,73 @@ * */ - #pragma once /* allow nameless unions */ /* #pragma warning(disable : 4201) */ - /* A revision number of vmbus that is used for ensuring both ends on a */ /* partition are using compatible versions. */ #define VMBUS_REVISION_NUMBER 13 - /* Make maximum size of pipe payload of 16K */ #define MAX_PIPE_DATA_PAYLOAD (sizeof(BYTE) * 16384) - /* Define PipeMode values. */ #define VMBUS_PIPE_TYPE_BYTE 0x00000000 #define VMBUS_PIPE_TYPE_MESSAGE 0x00000004 - /* The size of the user defined data buffer for non-pipe offers. */ #define MAX_USER_DEFINED_BYTES 120 - /* The size of the user defined data buffer for pipe offers. */ #define MAX_PIPE_USER_DEFINED_BYTES 116 - - /* At the center of the Channel Management library is */ /* the Channel Offer. This struct contains the */ /* fundamental information about an offer. */ #pragma pack(push,1) -typedef struct -{ - - GUID InterfaceType; - GUID InterfaceInstance; - u64 InterruptLatencyIn100nsUnits; - u32 InterfaceRevision; - u32 ServerContextAreaSize; /* in bytes */ - u16 ChannelFlags; - u16 MmioMegabytes; /* in bytes * 1024 * 1024 */ +typedef struct { - union - { + GUID InterfaceType; + GUID InterfaceInstance; + u64 InterruptLatencyIn100nsUnits; + u32 InterfaceRevision; + u32 ServerContextAreaSize; /* in bytes */ + u16 ChannelFlags; + u16 MmioMegabytes; /* in bytes * 1024 * 1024 */ - /* Non-pipes: The user has MAX_USER_DEFINED_BYTES bytes. */ + union { - struct - { - unsigned char UserDefined[MAX_USER_DEFINED_BYTES]; - } Standard; + /* Non-pipes: The user has MAX_USER_DEFINED_BYTES bytes. */ + struct { + unsigned char UserDefined[MAX_USER_DEFINED_BYTES]; + } Standard; - /* Pipes: The following sructure is an integrated pipe protocol, which */ - /* is implemented on top of standard user-defined data. Pipe clients */ - /* have MAX_PIPE_USER_DEFINED_BYTES left for their own use. */ + /* Pipes: The following sructure is an integrated pipe protocol, which */ + /* is implemented on top of standard user-defined data. Pipe clients */ + /* have MAX_PIPE_USER_DEFINED_BYTES left for their own use. */ - struct - { - u32 PipeMode; - unsigned char UserDefined[MAX_PIPE_USER_DEFINED_BYTES]; - } Pipe; - } u; - u32 Padding; + struct { + u32 PipeMode; + unsigned char UserDefined[MAX_PIPE_USER_DEFINED_BYTES]; + } Pipe; + } u; + u32 Padding; } VMBUS_CHANNEL_OFFER, *PVMBUS_CHANNEL_OFFER; #pragma pack(pop) - typedef u32 GPADL_HANDLE; - /* Server Flags */ - #define VMBUS_CHANNEL_ENUMERATE_DEVICE_INTERFACE 1 #define VMBUS_CHANNEL_SERVER_SUPPORTS_TRANSFER_PAGES 2 #define VMBUS_CHANNEL_SERVER_SUPPORTS_GPADLS 4 @@ -112,10 +96,8 @@ typedef u32 GPADL_HANDLE; #define VMBUS_CHANNEL_PARENT_OFFER 0x200 #define VMBUS_CHANNEL_REQUEST_MONITORED_NOTIFICATION 0x400 - /* TEMPTEMP -- move this next define to devioctl.h some day */ - #ifndef FILE_DEVICE_VMBUS #define FILE_DEVICE_VMBUS 0x0000003E #endif diff --git a/drivers/staging/hv/include/VmbusPacketFormat.h b/drivers/staging/hv/include/VmbusPacketFormat.h index f6600a9..ee76b97 100644 --- a/drivers/staging/hv/include/VmbusPacketFormat.h +++ b/drivers/staging/hv/include/VmbusPacketFormat.h @@ -21,7 +21,6 @@ * */ - #pragma once /* #ifndef PAGE_SIZE */ @@ -35,255 +34,224 @@ /* allow nameless unions */ /* #pragma warning(disable : 4201) */ -typedef struct -{ - union - { - struct - { - volatile u32 In; /* Offset in bytes from the ring base */ - volatile u32 Out; /* Offset in bytes from the ring base */ +typedef struct { + union { + struct { + volatile u32 In; /* Offset in bytes from the ring base */ + volatile u32 Out; /* Offset in bytes from the ring base */ + }; + volatile long long InOut; }; - volatile long long InOut; - }; - - /* If the receiving endpoint sets this to some non-zero value, the sending */ - /* endpoint should not send any interrupts. */ + /* If the receiving endpoint sets this to some non-zero value, the sending */ + /* endpoint should not send any interrupts. */ - - volatile u32 InterruptMask; + volatile u32 InterruptMask; } VMRCB, *PVMRCB; -typedef struct -{ - union - { - struct - { - VMRCB Control; - }; - - u8 Reserved[PAGE_SIZE]; - }; +typedef struct { + union { + struct { + VMRCB Control; + }; + u8 Reserved[PAGE_SIZE]; + }; - /* Beginning of the ring data. Note: It must be guaranteed that */ - /* this data does not share a page with the control structure. */ + /* Beginning of the ring data. Note: It must be guaranteed that */ + /* this data does not share a page with the control structure. */ - u8 Data[1]; + u8 Data[1]; } VMRING, *PVMRING; #pragma pack(push, 1) -typedef struct -{ - u16 Type; - u16 DataOffset8; - u16 Length8; - u16 Flags; - u64 TransactionId; +typedef struct { + u16 Type; + u16 DataOffset8; + u16 Length8; + u16 Flags; + u64 TransactionId; } VMPACKET_DESCRIPTOR, *PVMPACKET_DESCRIPTOR; typedef u32 PREVIOUS_PACKET_OFFSET, *PPREVIOUS_PACKET_OFFSET; -typedef struct -{ - PREVIOUS_PACKET_OFFSET PreviousPacketStartOffset; - VMPACKET_DESCRIPTOR Descriptor; +typedef struct { + PREVIOUS_PACKET_OFFSET PreviousPacketStartOffset; + VMPACKET_DESCRIPTOR Descriptor; } VMPACKET_HEADER, *PVMPACKET_HEADER; -typedef struct -{ - u32 ByteCount; - u32 ByteOffset; +typedef struct { + u32 ByteCount; + u32 ByteOffset; } VMTRANSFER_PAGE_RANGE, *PVMTRANSFER_PAGE_RANGE; #ifdef __cplusplus -typedef struct _VMTRANSFER_PAGE_PACKET_HEADER : VMPACKET_DESCRIPTOR { +typedef struct _VMTRANSFER_PAGE_PACKET_HEADER:VMPACKET_DESCRIPTOR { #else typedef struct VMTRANSFER_PAGE_PACKET_HEADER { - VMPACKET_DESCRIPTOR d; + VMPACKET_DESCRIPTOR d; #endif - u16 TransferPageSetId; - bool SenderOwnsSet; - u8 Reserved; - u32 RangeCount; - VMTRANSFER_PAGE_RANGE Ranges[1]; + u16 TransferPageSetId; + bool SenderOwnsSet; + u8 Reserved; + u32 RangeCount; + VMTRANSFER_PAGE_RANGE Ranges[1]; } VMTRANSFER_PAGE_PACKET_HEADER, *PVMTRANSFER_PAGE_PACKET_HEADER; - #ifdef __cplusplus -typedef struct _VMGPADL_PACKET_HEADER : VMPACKET_DESCRIPTOR { +typedef struct _VMGPADL_PACKET_HEADER:VMPACKET_DESCRIPTOR { #else typedef struct _VMGPADL_PACKET_HEADER { - VMPACKET_DESCRIPTOR d; + VMPACKET_DESCRIPTOR d; #endif - - u32 Gpadl; - u32 Reserved; + u32 Gpadl; + u32 Reserved; } VMGPADL_PACKET_HEADER, *PVMGPADL_PACKET_HEADER; #ifdef __cplusplus -typedef struct _VMADD_REMOVE_TRANSFER_PAGE_SET : VMPACKET_DESCRIPTOR { +typedef struct _VMADD_REMOVE_TRANSFER_PAGE_SET:VMPACKET_DESCRIPTOR { #else typedef struct _VMADD_REMOVE_TRANSFER_PAGE_SET { - VMPACKET_DESCRIPTOR d; + VMPACKET_DESCRIPTOR d; #endif - u32 Gpadl; - u16 TransferPageSetId; - u16 Reserved; + u32 Gpadl; + u16 TransferPageSetId; + u16 Reserved; } VMADD_REMOVE_TRANSFER_PAGE_SET, *PVMADD_REMOVE_TRANSFER_PAGE_SET; #pragma pack(pop) - /* This structure defines a range in guest physical space that can be made */ /* to look virtually contiguous. */ - typedef struct _GPA_RANGE { - u32 ByteCount; - u32 ByteOffset; - u64 PfnArray[0]; + u32 ByteCount; + u32 ByteOffset; + u64 PfnArray[0]; } GPA_RANGE, *PGPA_RANGE; - - #pragma pack(push, 1) - /* This is the format for an Establish Gpadl packet, which contains a handle */ /* by which this GPADL will be known and a set of GPA ranges associated with */ /* it. This can be converted to a MDL by the guest OS. If there are multiple */ /* GPA ranges, then the resulting MDL will be "chained," representing multiple */ /* VA ranges. */ - #ifdef __cplusplus -typedef struct _VMESTABLISH_GPADL : VMPACKET_DESCRIPTOR { +typedef struct _VMESTABLISH_GPADL:VMPACKET_DESCRIPTOR { #else typedef struct _VMESTABLISH_GPADL { - VMPACKET_DESCRIPTOR d; + VMPACKET_DESCRIPTOR d; #endif - u32 Gpadl; - u32 RangeCount; - GPA_RANGE Range[1]; + u32 Gpadl; + u32 RangeCount; + GPA_RANGE Range[1]; } VMESTABLISH_GPADL, *PVMESTABLISH_GPADL; - - /* This is the format for a Teardown Gpadl packet, which indicates that the */ /* GPADL handle in the Establish Gpadl packet will never be referenced again. */ - #ifdef __cplusplus -typedef struct _VMTEARDOWN_GPADL : VMPACKET_DESCRIPTOR { +typedef struct _VMTEARDOWN_GPADL:VMPACKET_DESCRIPTOR { #else typedef struct _VMTEARDOWN_GPADL { - VMPACKET_DESCRIPTOR d; + VMPACKET_DESCRIPTOR d; #endif - u32 Gpadl; - u32 Reserved; /* for alignment to a 8-byte boundary */ + u32 Gpadl; + u32 Reserved; /* for alignment to a 8-byte boundary */ } VMTEARDOWN_GPADL, *PVMTEARDOWN_GPADL; - - /* This is the format for a GPA-Direct packet, which contains a set of GPA */ /* ranges, in addition to commands and/or data. */ - #ifdef __cplusplus -typedef struct _VMDATA_GPA_DIRECT : VMPACKET_DESCRIPTOR { +typedef struct _VMDATA_GPA_DIRECT:VMPACKET_DESCRIPTOR { #else typedef struct _VMDATA_GPA_DIRECT { - VMPACKET_DESCRIPTOR d; + VMPACKET_DESCRIPTOR d; #endif - u32 Reserved; - u32 RangeCount; - GPA_RANGE Range[1]; + u32 Reserved; + u32 RangeCount; + GPA_RANGE Range[1]; } VMDATA_GPA_DIRECT, *PVMDATA_GPA_DIRECT; - - - /* This is the format for a Additional Data Packet. */ - #ifdef __cplusplus -typedef struct _VMADDITIONAL_DATA : VMPACKET_DESCRIPTOR { +typedef struct _VMADDITIONAL_DATA:VMPACKET_DESCRIPTOR { #else typedef struct _VMADDITIONAL_DATA { - VMPACKET_DESCRIPTOR d; + VMPACKET_DESCRIPTOR d; #endif - u64 TotalBytes; - u32 ByteOffset; - u32 ByteCount; - unsigned char Data[1]; + u64 TotalBytes; + u32 ByteOffset; + u32 ByteCount; + unsigned char Data[1]; } VMADDITIONAL_DATA, *PVMADDITIONAL_DATA; - #pragma pack(pop) typedef union { - VMPACKET_DESCRIPTOR SimpleHeader; - VMTRANSFER_PAGE_PACKET_HEADER TransferPageHeader; - VMGPADL_PACKET_HEADER GpadlHeader; - VMADD_REMOVE_TRANSFER_PAGE_SET AddRemoveTransferPageHeader; - VMESTABLISH_GPADL EstablishGpadlHeader; - VMTEARDOWN_GPADL TeardownGpadlHeader; - VMDATA_GPA_DIRECT DataGpaDirectHeader; + VMPACKET_DESCRIPTOR SimpleHeader; + VMTRANSFER_PAGE_PACKET_HEADER TransferPageHeader; + VMGPADL_PACKET_HEADER GpadlHeader; + VMADD_REMOVE_TRANSFER_PAGE_SET AddRemoveTransferPageHeader; + VMESTABLISH_GPADL EstablishGpadlHeader; + VMTEARDOWN_GPADL TeardownGpadlHeader; + VMDATA_GPA_DIRECT DataGpaDirectHeader; } VMPACKET_LARGEST_POSSIBLE_HEADER, *PVMPACKET_LARGEST_POSSIBLE_HEADER; #define VMPACKET_DATA_START_ADDRESS(__packet) \ @@ -295,26 +263,26 @@ typedef union { #define VMPACKET_TRANSFER_MODE(__packet) ((PVMPACKET_DESCRIPTOR)__packet)->Type typedef enum { - VmbusServerEndpoint = 0, - VmbusClientEndpoint, - VmbusEndpointMaximum + VmbusServerEndpoint = 0, + VmbusClientEndpoint, + VmbusEndpointMaximum } ENDPOINT_TYPE, *PENDPOINT_TYPE; typedef enum { - VmbusPacketTypeInvalid = 0x0, - VmbusPacketTypeSynch = 0x1, - VmbusPacketTypeAddTransferPageSet = 0x2, - VmbusPacketTypeRemoveTransferPageSet = 0x3, - VmbusPacketTypeEstablishGpadl = 0x4, - VmbusPacketTypeTearDownGpadl = 0x5, - VmbusPacketTypeDataInBand = 0x6, - VmbusPacketTypeDataUsingTransferPages = 0x7, - VmbusPacketTypeDataUsingGpadl = 0x8, - VmbusPacketTypeDataUsingGpaDirect = 0x9, - VmbusPacketTypeCancelRequest = 0xa, - VmbusPacketTypeCompletion = 0xb, - VmbusPacketTypeDataUsingAdditionalPackets = 0xc, - VmbusPacketTypeAdditionalData = 0xd + VmbusPacketTypeInvalid = 0x0, + VmbusPacketTypeSynch = 0x1, + VmbusPacketTypeAddTransferPageSet = 0x2, + VmbusPacketTypeRemoveTransferPageSet = 0x3, + VmbusPacketTypeEstablishGpadl = 0x4, + VmbusPacketTypeTearDownGpadl = 0x5, + VmbusPacketTypeDataInBand = 0x6, + VmbusPacketTypeDataUsingTransferPages = 0x7, + VmbusPacketTypeDataUsingGpadl = 0x8, + VmbusPacketTypeDataUsingGpaDirect = 0x9, + VmbusPacketTypeCancelRequest = 0xa, + VmbusPacketTypeCompletion = 0xb, + VmbusPacketTypeDataUsingAdditionalPackets = 0xc, + VmbusPacketTypeAdditionalData = 0xd } VMBUS_PACKET_TYPE, *PVMBUS_PACKET_TYPE; #define VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED 1 diff --git a/drivers/staging/hv/include/logging.h b/drivers/staging/hv/include/logging.h index 8609269..fba9e21 100644 --- a/drivers/staging/hv/include/logging.h +++ b/drivers/staging/hv/include/logging.h @@ -21,7 +21,6 @@ * */ - #ifndef _LOGGING_H_ #define _LOGGING_H_ diff --git a/drivers/staging/hv/include/nvspprotocol.h b/drivers/staging/hv/include/nvspprotocol.h index 2ee9dbf..e1e3a3b 100644 --- a/drivers/staging/hv/include/nvspprotocol.h +++ b/drivers/staging/hv/include/nvspprotocol.h @@ -21,7 +21,6 @@ * */ - #pragma once #include "VmbusChannelInterface.h" @@ -32,275 +31,237 @@ #define NVSP_MIN_PROTOCOL_VERSION NVSP_PROTOCOL_VERSION_1 #define NVSP_MAX_PROTOCOL_VERSION NVSP_PROTOCOL_VERSION_1 -typedef enum _NVSP_MESSAGE_TYPE -{ - NvspMessageTypeNone = 0, - - - /* Init Messages */ +typedef enum _NVSP_MESSAGE_TYPE { + NvspMessageTypeNone = 0, - NvspMessageTypeInit = 1, - NvspMessageTypeInitComplete = 2, + /* Init Messages */ - NvspVersionMessageStart = 100, + NvspMessageTypeInit = 1, + NvspMessageTypeInitComplete = 2, + NvspVersionMessageStart = 100, - /* Version 1 Messages */ + /* Version 1 Messages */ - NvspMessage1TypeSendNdisVersion = NvspVersionMessageStart, + NvspMessage1TypeSendNdisVersion = NvspVersionMessageStart, - NvspMessage1TypeSendReceiveBuffer, - NvspMessage1TypeSendReceiveBufferComplete, - NvspMessage1TypeRevokeReceiveBuffer, + NvspMessage1TypeSendReceiveBuffer, + NvspMessage1TypeSendReceiveBufferComplete, + NvspMessage1TypeRevokeReceiveBuffer, - NvspMessage1TypeSendSendBuffer, - NvspMessage1TypeSendSendBufferComplete, - NvspMessage1TypeRevokeSendBuffer, + NvspMessage1TypeSendSendBuffer, + NvspMessage1TypeSendSendBufferComplete, + NvspMessage1TypeRevokeSendBuffer, - NvspMessage1TypeSendRNDISPacket, - NvspMessage1TypeSendRNDISPacketComplete, + NvspMessage1TypeSendRNDISPacket, + NvspMessage1TypeSendRNDISPacketComplete, + /* This should be set to the number of messages for the version */ + /* with the maximum number of messages. */ - /* This should be set to the number of messages for the version */ - /* with the maximum number of messages. */ - - NvspNumMessagePerVersion = 9, + NvspNumMessagePerVersion = 9, } NVSP_MESSAGE_TYPE, *PNVSP_MESSAGE_TYPE; -typedef enum _NVSP_STATUS -{ - NvspStatusNone = 0, - NvspStatusSuccess, - NvspStatusFailure, - NvspStatusProtocolVersionRangeTooNew, - NvspStatusProtocolVersionRangeTooOld, - NvspStatusInvalidRndisPacket, - NvspStatusBusy, - NvspStatusMax, +typedef enum _NVSP_STATUS { + NvspStatusNone = 0, + NvspStatusSuccess, + NvspStatusFailure, + NvspStatusProtocolVersionRangeTooNew, + NvspStatusProtocolVersionRangeTooOld, + NvspStatusInvalidRndisPacket, + NvspStatusBusy, + NvspStatusMax, } NVSP_STATUS, *PNVSP_STATUS; #pragma pack(push, 1) -typedef struct _NVSP_MESSAGE_HEADER -{ - u32 MessageType; +typedef struct _NVSP_MESSAGE_HEADER { + u32 MessageType; } NVSP_MESSAGE_HEADER, *PNVSP_MESSAGE_HEADER; - /* Init Messages */ - - /* This message is used by the VSC to initialize the channel */ /* after the channels has been opened. This message should */ /* never include anything other then versioning (i.e. this */ /* message will be the same for ever). */ -typedef struct _NVSP_MESSAGE_INIT -{ - u32 MinProtocolVersion; - u32 MaxProtocolVersion; +typedef struct _NVSP_MESSAGE_INIT { + u32 MinProtocolVersion; + u32 MaxProtocolVersion; } NVSP_MESSAGE_INIT, *PNVSP_MESSAGE_INIT; - /* This message is used by the VSP to complete the initialization */ /* of the channel. This message should never include anything other */ /* then versioning (i.e. this message will be the same for ever). */ -typedef struct _NVSP_MESSAGE_INIT_COMPLETE -{ - u32 NegotiatedProtocolVersion; - u32 MaximumMdlChainLength; - u32 Status; +typedef struct _NVSP_MESSAGE_INIT_COMPLETE { + u32 NegotiatedProtocolVersion; + u32 MaximumMdlChainLength; + u32 Status; } NVSP_MESSAGE_INIT_COMPLETE, *PNVSP_MESSAGE_INIT_COMPLETE; -typedef union _NVSP_MESSAGE_INIT_UBER -{ - NVSP_MESSAGE_INIT Init; - NVSP_MESSAGE_INIT_COMPLETE InitComplete; +typedef union _NVSP_MESSAGE_INIT_UBER { + NVSP_MESSAGE_INIT Init; + NVSP_MESSAGE_INIT_COMPLETE InitComplete; } NVSP_MESSAGE_INIT_UBER; - /* Version 1 Messages */ - - /* This message is used by the VSC to send the NDIS version */ /* to the VSP. The VSP can use this information when handling */ /* OIDs sent by the VSC. */ -typedef struct _NVSP_1_MESSAGE_SEND_NDIS_VERSION -{ - u32 NdisMajorVersion; - u32 NdisMinorVersion; +typedef struct _NVSP_1_MESSAGE_SEND_NDIS_VERSION { + u32 NdisMajorVersion; + u32 NdisMinorVersion; } NVSP_1_MESSAGE_SEND_NDIS_VERSION, *PNVSP_1_MESSAGE_SEND_NDIS_VERSION; - /* This message is used by the VSC to send a receive buffer */ /* to the VSP. The VSP can then use the receive buffer to */ /* send data to the VSC. */ -typedef struct _NVSP_1_MESSAGE_SEND_RECEIVE_BUFFER -{ - GPADL_HANDLE GpadlHandle; - u16 Id; +typedef struct _NVSP_1_MESSAGE_SEND_RECEIVE_BUFFER { + GPADL_HANDLE GpadlHandle; + u16 Id; } NVSP_1_MESSAGE_SEND_RECEIVE_BUFFER, *PNVSP_1_MESSAGE_SEND_RECEIVE_BUFFER; -typedef struct _NVSP_1_RECEIVE_BUFFER_SECTION -{ - u32 Offset; - u32 SubAllocationSize; - u32 NumSubAllocations; - u32 EndOffset; +typedef struct _NVSP_1_RECEIVE_BUFFER_SECTION { + u32 Offset; + u32 SubAllocationSize; + u32 NumSubAllocations; + u32 EndOffset; } NVSP_1_RECEIVE_BUFFER_SECTION, *PNVSP_1_RECEIVE_BUFFER_SECTION; - /* This message is used by the VSP to acknowledge a receive */ /* buffer send by the VSC. This message must be sent by the */ /* VSP before the VSP uses the receive buffer. */ -typedef struct _NVSP_1_MESSAGE_SEND_RECEIVE_BUFFER_COMPLETE -{ - u32 Status; - u32 NumSections; - - - /* The receive buffer is split into two parts, a large */ - /* suballocation section and a small suballocation */ - /* section. These sections are then suballocated by a */ - /* certain size. */ +typedef struct _NVSP_1_MESSAGE_SEND_RECEIVE_BUFFER_COMPLETE { + u32 Status; + u32 NumSections; - /* For example, the following break up of the receive */ - /* buffer has 6 large suballocations and 10 small */ - /* suballocations. */ + /* The receive buffer is split into two parts, a large */ + /* suballocation section and a small suballocation */ + /* section. These sections are then suballocated by a */ + /* certain size. */ - /* | Large Section | | Small Section | */ - /* ------------------------------------------------------------ */ - /* | | | | | | | | | | | | | | | | | | */ - /* | | */ - /* LargeOffset SmallOffset */ + /* For example, the following break up of the receive */ + /* buffer has 6 large suballocations and 10 small */ + /* suballocations. */ - NVSP_1_RECEIVE_BUFFER_SECTION Sections[1]; + /* | Large Section | | Small Section | */ + /* ------------------------------------------------------------ */ + /* | | | | | | | | | | | | | | | | | | */ + /* | | */ + /* LargeOffset SmallOffset */ -} NVSP_1_MESSAGE_SEND_RECEIVE_BUFFER_COMPLETE, *PNVSP_1_MESSAGE_SEND_RECEIVE_BUFFER_COMPLETE; + NVSP_1_RECEIVE_BUFFER_SECTION Sections[1]; +} NVSP_1_MESSAGE_SEND_RECEIVE_BUFFER_COMPLETE, + *PNVSP_1_MESSAGE_SEND_RECEIVE_BUFFER_COMPLETE; /* This message is sent by the VSC to revoke the receive buffer. */ /* After the VSP completes this transaction, the vsp should never */ /* use the receive buffer again. */ -typedef struct _NVSP_1_MESSAGE_REVOKE_RECEIVE_BUFFER -{ - u16 Id; +typedef struct _NVSP_1_MESSAGE_REVOKE_RECEIVE_BUFFER { + u16 Id; } NVSP_1_MESSAGE_REVOKE_RECEIVE_BUFFER, *PNVSP_1_MESSAGE_REVOKE_RECEIVE_BUFFER; - /* This message is used by the VSC to send a send buffer */ /* to the VSP. The VSC can then use the send buffer to */ /* send data to the VSP. */ -typedef struct _NVSP_1_MESSAGE_SEND_SEND_BUFFER -{ - GPADL_HANDLE GpadlHandle; - u16 Id; +typedef struct _NVSP_1_MESSAGE_SEND_SEND_BUFFER { + GPADL_HANDLE GpadlHandle; + u16 Id; } NVSP_1_MESSAGE_SEND_SEND_BUFFER, *PNVSP_1_MESSAGE_SEND_SEND_BUFFER; - /* This message is used by the VSP to acknowledge a send */ /* buffer sent by the VSC. This message must be sent by the */ /* VSP before the VSP uses the sent buffer. */ -typedef struct _NVSP_1_MESSAGE_SEND_SEND_BUFFER_COMPLETE -{ - u32 Status; - +typedef struct _NVSP_1_MESSAGE_SEND_SEND_BUFFER_COMPLETE { + u32 Status; - /* The VSC gets to choose the size of the send buffer and */ - /* the VSP gets to choose the sections size of the buffer. */ - /* This was done to enable dynamic reconfigurations when */ - /* the cost of GPA-direct buffers decreases. */ - - u32 SectionSize; -} NVSP_1_MESSAGE_SEND_SEND_BUFFER_COMPLETE, *PNVSP_1_MESSAGE_SEND_SEND_BUFFER_COMPLETE; + /* The VSC gets to choose the size of the send buffer and */ + /* the VSP gets to choose the sections size of the buffer. */ + /* This was done to enable dynamic reconfigurations when */ + /* the cost of GPA-direct buffers decreases. */ + u32 SectionSize; +} NVSP_1_MESSAGE_SEND_SEND_BUFFER_COMPLETE, + *PNVSP_1_MESSAGE_SEND_SEND_BUFFER_COMPLETE; /* This message is sent by the VSC to revoke the send buffer. */ /* After the VSP completes this transaction, the vsp should never */ /* use the send buffer again. */ -typedef struct _NVSP_1_MESSAGE_REVOKE_SEND_BUFFER -{ - u16 Id; +typedef struct _NVSP_1_MESSAGE_REVOKE_SEND_BUFFER { + u16 Id; } NVSP_1_MESSAGE_REVOKE_SEND_BUFFER, *PNVSP_1_MESSAGE_REVOKE_SEND_BUFFER; - /* This message is used by both the VSP and the VSC to send */ /* a RNDIS message to the opposite channel endpoint. */ -typedef struct _NVSP_1_MESSAGE_SEND_RNDIS_PACKET -{ - - /* This field is specified by RNIDS. They assume there's */ - /* two different channels of communication. However, */ - /* the Network VSP only has one. Therefore, the channel */ - /* travels with the RNDIS packet. */ +typedef struct _NVSP_1_MESSAGE_SEND_RNDIS_PACKET { - u32 ChannelType; + /* This field is specified by RNIDS. They assume there's */ + /* two different channels of communication. However, */ + /* the Network VSP only has one. Therefore, the channel */ + /* travels with the RNDIS packet. */ + u32 ChannelType; - /* This field is used to send part or all of the data */ - /* through a send buffer. This values specifies an */ - /* index into the send buffer. If the index is */ - /* 0xFFFFFFFF, then the send buffer is not being used */ - /* and all of the data was sent through other VMBus */ - /* mechanisms. */ + /* This field is used to send part or all of the data */ + /* through a send buffer. This values specifies an */ + /* index into the send buffer. If the index is */ + /* 0xFFFFFFFF, then the send buffer is not being used */ + /* and all of the data was sent through other VMBus */ + /* mechanisms. */ - u32 SendBufferSectionIndex; - u32 SendBufferSectionSize; + u32 SendBufferSectionIndex; + u32 SendBufferSectionSize; } NVSP_1_MESSAGE_SEND_RNDIS_PACKET, *PNVSP_1_MESSAGE_SEND_RNDIS_PACKET; - /* This message is used by both the VSP and the VSC to complete */ /* a RNDIS message to the opposite channel endpoint. At this */ /* point, the initiator of this message cannot use any resources */ /* associated with the original RNDIS packet. */ -typedef struct _NVSP_1_MESSAGE_SEND_RNDIS_PACKET_COMPLETE -{ - u32 Status; -} NVSP_1_MESSAGE_SEND_RNDIS_PACKET_COMPLETE, *PNVSP_1_MESSAGE_SEND_RNDIS_PACKET_COMPLETE; +typedef struct _NVSP_1_MESSAGE_SEND_RNDIS_PACKET_COMPLETE { + u32 Status; +} NVSP_1_MESSAGE_SEND_RNDIS_PACKET_COMPLETE, + *PNVSP_1_MESSAGE_SEND_RNDIS_PACKET_COMPLETE; -typedef union _NVSP_MESSAGE_1_UBER -{ - NVSP_1_MESSAGE_SEND_NDIS_VERSION SendNdisVersion; +typedef union _NVSP_MESSAGE_1_UBER { + NVSP_1_MESSAGE_SEND_NDIS_VERSION SendNdisVersion; - NVSP_1_MESSAGE_SEND_RECEIVE_BUFFER SendReceiveBuffer; - NVSP_1_MESSAGE_SEND_RECEIVE_BUFFER_COMPLETE SendReceiveBufferComplete; - NVSP_1_MESSAGE_REVOKE_RECEIVE_BUFFER RevokeReceiveBuffer; + NVSP_1_MESSAGE_SEND_RECEIVE_BUFFER SendReceiveBuffer; + NVSP_1_MESSAGE_SEND_RECEIVE_BUFFER_COMPLETE SendReceiveBufferComplete; + NVSP_1_MESSAGE_REVOKE_RECEIVE_BUFFER RevokeReceiveBuffer; - NVSP_1_MESSAGE_SEND_SEND_BUFFER SendSendBuffer; - NVSP_1_MESSAGE_SEND_SEND_BUFFER_COMPLETE SendSendBufferComplete; - NVSP_1_MESSAGE_REVOKE_SEND_BUFFER RevokeSendBuffer; + NVSP_1_MESSAGE_SEND_SEND_BUFFER SendSendBuffer; + NVSP_1_MESSAGE_SEND_SEND_BUFFER_COMPLETE SendSendBufferComplete; + NVSP_1_MESSAGE_REVOKE_SEND_BUFFER RevokeSendBuffer; - NVSP_1_MESSAGE_SEND_RNDIS_PACKET SendRNDISPacket; - NVSP_1_MESSAGE_SEND_RNDIS_PACKET_COMPLETE SendRNDISPacketComplete; + NVSP_1_MESSAGE_SEND_RNDIS_PACKET SendRNDISPacket; + NVSP_1_MESSAGE_SEND_RNDIS_PACKET_COMPLETE SendRNDISPacketComplete; } NVSP_1_MESSAGE_UBER; -typedef union _NVSP_ALL_MESSAGES -{ - NVSP_MESSAGE_INIT_UBER InitMessages; - NVSP_1_MESSAGE_UBER Version1Messages; +typedef union _NVSP_ALL_MESSAGES { + NVSP_MESSAGE_INIT_UBER InitMessages; + NVSP_1_MESSAGE_UBER Version1Messages; } NVSP_ALL_MESSAGES; - /* ALL Messages */ -typedef struct _NVSP_MESSAGE -{ - NVSP_MESSAGE_HEADER Header; - NVSP_ALL_MESSAGES Messages; +typedef struct _NVSP_MESSAGE { + NVSP_MESSAGE_HEADER Header; + NVSP_ALL_MESSAGES Messages; } NVSP_MESSAGE, *PNVSP_MESSAGE; #pragma pack(pop) diff --git a/drivers/staging/hv/include/osd.h b/drivers/staging/hv/include/osd.h index 2a47d14..6be54a5 100644 --- a/drivers/staging/hv/include/osd.h +++ b/drivers/staging/hv/include/osd.h @@ -21,15 +21,11 @@ * */ - #ifndef _OSD_H_ #define _OSD_H_ - /* Defines */ - - #define ALIGN_UP(value, align) ( ((value) & (align-1))? ( ((value) + (align-1)) & ~(align-1) ): (value) ) #define ALIGN_DOWN(value, align) ( (value) & ~(align-1) ) #define NUM_PAGES_SPANNED(addr, len) ( (ALIGN_UP(addr+len, PAGE_SIZE) - ALIGN_DOWN(addr, PAGE_SIZE)) >> PAGE_SHIFT ) @@ -38,36 +34,32 @@ #define HIWORD(dw) ((unsigned short) (((unsigned int) (dw) >> 16) & 0xFFFF)) typedef struct _DLIST_ENTRY { - struct _DLIST_ENTRY *Flink; - struct _DLIST_ENTRY *Blink; + struct _DLIST_ENTRY *Flink; + struct _DLIST_ENTRY *Blink; } DLIST_ENTRY; - /* Other types */ /* typedef unsigned char GUID[16]; */ -typedef void (*PFN_WORKITEM_CALLBACK)(void* context); -typedef void (*PFN_TIMER_CALLBACK)(void* context); - +typedef void (*PFN_WORKITEM_CALLBACK) (void *context); +typedef void (*PFN_TIMER_CALLBACK) (void *context); typedef struct { - unsigned char Data[16]; + unsigned char Data[16]; } GUID; struct osd_waitevent { - int condition; + int condition; wait_queue_head_t event; }; struct osd_timer { struct timer_list timer; PFN_TIMER_CALLBACK callback; - void* context; + void *context; }; - - #ifdef __x86_64__ #define RDMSR(reg, v) { \ @@ -101,35 +93,37 @@ struct osd_timer { #endif - -static inline void do_cpuid(unsigned int op, unsigned int *eax, unsigned int *ebx, unsigned int *ecx, unsigned int *edx) +static inline void do_cpuid(unsigned int op, unsigned int *eax, + unsigned int *ebx, unsigned int *ecx, + unsigned int *edx) { - __asm__ __volatile__("cpuid" : "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx) : "0" (op), "c" (ecx)); + __asm__ __volatile__("cpuid":"=a"(*eax), "=b"(*ebx), "=c"(*ecx), + "=d"(*edx):"0"(op), "c"(ecx)); } - /* Osd routines */ -extern void BitSet(unsigned int* addr, int value); -extern void BitClear(unsigned int* addr, int value); -extern int BitTest(unsigned int* addr, int value); -extern int BitTestAndClear(unsigned int* addr, int value); -extern int BitTestAndSet(unsigned int* addr, int value); +extern void BitSet(unsigned int *addr, int value); +extern void BitClear(unsigned int *addr, int value); +extern int BitTest(unsigned int *addr, int value); +extern int BitTestAndClear(unsigned int *addr, int value); +extern int BitTestAndSet(unsigned int *addr, int value); extern int InterlockedIncrement(int *val); extern int InterlockedDecrement(int *val); extern int InterlockedCompareExchange(int *val, int new, int curr); -extern void* VirtualAllocExec(unsigned int size); -extern void VirtualFree(void* VirtAddr); +extern void *VirtualAllocExec(unsigned int size); +extern void VirtualFree(void *VirtAddr); -extern void* PageAlloc(unsigned int count); -extern void PageFree(void* page, unsigned int count); +extern void *PageAlloc(unsigned int count); +extern void PageFree(void *page, unsigned int count); -extern void* MemMapIO(unsigned long phys, unsigned long size); -extern void MemUnmapIO(void* virt); +extern void *MemMapIO(unsigned long phys, unsigned long size); +extern void MemUnmapIO(void *virt); -extern struct osd_timer *TimerCreate(PFN_TIMER_CALLBACK pfnTimerCB, void* context); +extern struct osd_timer *TimerCreate(PFN_TIMER_CALLBACK pfnTimerCB, + void *context); extern void TimerClose(struct osd_timer *t); extern int TimerStop(struct osd_timer *t); extern void TimerStart(struct osd_timer *t, u32 expirationInUs); @@ -137,30 +131,28 @@ extern void TimerStart(struct osd_timer *t, u32 expirationInUs); extern struct osd_waitevent *WaitEventCreate(void); extern void WaitEventClose(struct osd_waitevent *waitEvent); extern void WaitEventSet(struct osd_waitevent *waitEvent); -extern int WaitEventWait(struct osd_waitevent *waitEvent); +extern int WaitEventWait(struct osd_waitevent *waitEvent); /* If >0, waitEvent got signaled. If ==0, timeout. If < 0, error */ -extern int WaitEventWaitEx(struct osd_waitevent *waitEvent, u32 TimeoutInMs); - +extern int WaitEventWaitEx(struct osd_waitevent *waitEvent, u32 TimeoutInMs); #define GetVirtualAddress Physical2LogicalAddr -void* Physical2LogicalAddr(unsigned long PhysAddr); +void *Physical2LogicalAddr(unsigned long PhysAddr); #define GetPhysicalAddress Logical2PhysicalAddr -unsigned long Logical2PhysicalAddr(void * LogicalAddr); - -unsigned long Virtual2Physical(void * VirtAddr); +unsigned long Logical2PhysicalAddr(void *LogicalAddr); -void* PageMapVirtualAddress(unsigned long Pfn); -void PageUnmapVirtualAddress(void* VirtAddr); +unsigned long Virtual2Physical(void *VirtAddr); +void *PageMapVirtualAddress(unsigned long Pfn); +void PageUnmapVirtualAddress(void *VirtAddr); -extern struct workqueue_struct *WorkQueueCreate(char* name); +extern struct workqueue_struct *WorkQueueCreate(char *name); extern void WorkQueueClose(struct workqueue_struct *hWorkQueue); extern int WorkQueueQueueWorkItem(struct workqueue_struct *hWorkQueue, PFN_WORKITEM_CALLBACK workItem, void *context); -extern void QueueWorkItem(PFN_WORKITEM_CALLBACK workItem, void* context); +extern void QueueWorkItem(PFN_WORKITEM_CALLBACK workItem, void *context); #endif /* _OSD_H_ */ diff --git a/drivers/staging/hv/include/rndis.h b/drivers/staging/hv/include/rndis.h index 58fd4eb..b491162 100644 --- a/drivers/staging/hv/include/rndis.h +++ b/drivers/staging/hv/include/rndis.h @@ -21,33 +21,29 @@ * */ - #ifndef _RNDIS_H_ #define _RNDIS_H_ - /* Basic types */ -typedef u32 RNDIS_REQUEST_ID; -typedef u32 RNDIS_HANDLE; -typedef u32 RNDIS_STATUS; -typedef u32 RNDIS_REQUEST_TYPE; -typedef u32 RNDIS_OID; -typedef u32 RNDIS_CLASS_ID; -typedef u32 RNDIS_MEDIUM; -typedef u32 *PRNDIS_REQUEST_ID; -typedef u32 *PRNDIS_HANDLE; -typedef u32 *PRNDIS_STATUS; -typedef u32 *PRNDIS_REQUEST_TYPE; -typedef u32 *PRNDIS_OID; -typedef u32 *PRNDIS_CLASS_ID; -typedef u32 *PRNDIS_MEDIUM; -typedef u32 RNDIS_AF; - +typedef u32 RNDIS_REQUEST_ID; +typedef u32 RNDIS_HANDLE; +typedef u32 RNDIS_STATUS; +typedef u32 RNDIS_REQUEST_TYPE; +typedef u32 RNDIS_OID; +typedef u32 RNDIS_CLASS_ID; +typedef u32 RNDIS_MEDIUM; +typedef u32 *PRNDIS_REQUEST_ID; +typedef u32 *PRNDIS_HANDLE; +typedef u32 *PRNDIS_STATUS; +typedef u32 *PRNDIS_REQUEST_TYPE; +typedef u32 *PRNDIS_OID; +typedef u32 *PRNDIS_CLASS_ID; +typedef u32 *PRNDIS_MEDIUM; +typedef u32 RNDIS_AF; /* Status codes */ - #ifndef STATUS_SUCCESS #define STATUS_SUCCESS (0x00000000L) #endif @@ -149,15 +145,10 @@ typedef u32 RNDIS_AF; #define RNDIS_STATUS_TOKEN_RING_OPEN_ERROR ((RNDIS_STATUS)0xC0011000L) - - /* Object Identifiers used by NdisRequest Query/Set Information */ - - /* General Objects */ - #define RNDIS_OID_GEN_SUPPORTED_LIST 0x00010101 #define RNDIS_OID_GEN_HARDWARE_STATUS 0x00010102 #define RNDIS_OID_GEN_MEDIA_SUPPORTED 0x00010103 @@ -210,7 +201,6 @@ typedef u32 RNDIS_AF; #define RNDIS_OID_GEN_GET_TIME_CAPS 0x0002020F #define RNDIS_OID_GEN_GET_NETCARD_TIME 0x00020210 - /* These are connection-oriented general OIDs. */ /* These replace the above OIDs for connection-oriented media. */ @@ -231,7 +221,6 @@ typedef u32 RNDIS_AF; #define RNDIS_OID_GEN_CO_GET_TIME_CAPS 0x00010201 #define RNDIS_OID_GEN_CO_GET_NETCARD_TIME 0x00010202 - /* These are connection-oriented statistics OIDs. */ #define RNDIS_OID_GEN_CO_XMIT_PDUS_OK 0x00020101 @@ -240,7 +229,6 @@ typedef u32 RNDIS_AF; #define RNDIS_OID_GEN_CO_RCV_PDUS_ERROR 0x00020104 #define RNDIS_OID_GEN_CO_RCV_PDUS_NO_BUFFER 0x00020105 - #define RNDIS_OID_GEN_CO_RCV_CRC_ERROR 0x00020201 #define RNDIS_OID_GEN_CO_TRANSMIT_QUEUE_LENGTH 0x00020202 #define RNDIS_OID_GEN_CO_BYTES_XMIT 0x00020203 @@ -248,7 +236,6 @@ typedef u32 RNDIS_AF; #define RNDIS_OID_GEN_CO_BYTES_XMIT_OUTSTANDING 0x00020205 #define RNDIS_OID_GEN_CO_NETCARD_LOAD 0x00020206 - /* These are objects for Connection-oriented media call-managers. */ #define RNDIS_OID_CO_ADD_PVC 0xFF000001 @@ -261,19 +248,14 @@ typedef u32 RNDIS_AF; #define RNDIS_OID_CO_SIGNALING_ENABLED 0xFF000008 #define RNDIS_OID_CO_SIGNALING_DISABLED 0xFF000009 - - /* 802.3 Objects (Ethernet) */ - #define RNDIS_OID_802_3_PERMANENT_ADDRESS 0x01010101 #define RNDIS_OID_802_3_CURRENT_ADDRESS 0x01010102 #define RNDIS_OID_802_3_MULTICAST_LIST 0x01010103 #define RNDIS_OID_802_3_MAXIMUM_LIST_SIZE 0x01010104 #define RNDIS_OID_802_3_MAC_OPTIONS 0x01010105 - - #define NDIS_802_3_MAC_OPTION_PRIORITY 0x00000001 #define RNDIS_OID_802_3_RCV_ERROR_ALIGNMENT 0x01020101 @@ -288,8 +270,6 @@ typedef u32 RNDIS_AF; #define RNDIS_OID_802_3_XMIT_TIMES_CRS_LOST 0x01020206 #define RNDIS_OID_802_3_XMIT_LATE_COLLISIONS 0x01020207 - - /* Remote NDIS message types */ #define REMOTE_NDIS_PACKET_MSG 0x00000001 @@ -307,7 +287,6 @@ typedef u32 RNDIS_AF; #define REMOTE_CONDIS_MP_DEACTIVATE_VC_MSG 0x00008006 #define REMOTE_CONDIS_INDICATE_STATUS_MSG 0x00008007 - /* Remote NDIS message completion types */ #define REMOTE_NDIS_INITIALIZE_CMPLT 0x80000002 #define REMOTE_NDIS_QUERY_CMPLT 0x80000004 @@ -320,22 +299,17 @@ typedef u32 RNDIS_AF; #define REMOTE_CONDIS_MP_ACTIVATE_VC_CMPLT 0x80008005 #define REMOTE_CONDIS_MP_DEACTIVATE_VC_CMPLT 0x80008006 - /* Reserved message type for private communication between lower-layer */ /* host driver and remote device, if necessary. */ #define REMOTE_NDIS_BUS_MSG 0xff000001 - - - /* Defines for DeviceFlags in RNDIS_INITIALIZE_COMPLETE */ #define RNDIS_DF_CONNECTIONLESS 0x00000001 #define RNDIS_DF_CONNECTION_ORIENTED 0x00000002 #define RNDIS_DF_RAW_DATA 0x00000004 - /* Remote NDIS medium types. */ #define RNdisMedium802_3 0x00000000 @@ -349,459 +323,358 @@ typedef u32 RNDIS_AF; #define RNdisMediumWirelessWan 0x00000009 #define RNdisMediumIrda 0x0000000a #define RNdisMediumCoWan 0x0000000b -#define RNdisMediumMax 0x0000000d /* Not a real medium, defined as an upper-bound */ - +#define RNdisMediumMax 0x0000000d /* Not a real medium, defined as an upper-bound */ /* Remote NDIS medium connection states. */ #define RNdisMediaStateConnected 0x00000000 #define RNdisMediaStateDisconnected 0x00000001 - /* Remote NDIS version numbers */ #define RNDIS_MAJOR_VERSION 0x00000001 #define RNDIS_MINOR_VERSION 0x00000000 - /* NdisInitialize message */ -typedef struct _RNDIS_INITIALIZE_REQUEST -{ - RNDIS_REQUEST_ID RequestId; - u32 MajorVersion; - u32 MinorVersion; - u32 MaxTransferSize; +typedef struct _RNDIS_INITIALIZE_REQUEST { + RNDIS_REQUEST_ID RequestId; + u32 MajorVersion; + u32 MinorVersion; + u32 MaxTransferSize; } RNDIS_INITIALIZE_REQUEST, *PRNDIS_INITIALIZE_REQUEST; - - /* Response to NdisInitialize */ -typedef struct _RNDIS_INITIALIZE_COMPLETE -{ - RNDIS_REQUEST_ID RequestId; - RNDIS_STATUS Status; - u32 MajorVersion; - u32 MinorVersion; - u32 DeviceFlags; - RNDIS_MEDIUM Medium; - u32 MaxPacketsPerMessage; - u32 MaxTransferSize; - u32 PacketAlignmentFactor; - u32 AFListOffset; - u32 AFListSize; +typedef struct _RNDIS_INITIALIZE_COMPLETE { + RNDIS_REQUEST_ID RequestId; + RNDIS_STATUS Status; + u32 MajorVersion; + u32 MinorVersion; + u32 DeviceFlags; + RNDIS_MEDIUM Medium; + u32 MaxPacketsPerMessage; + u32 MaxTransferSize; + u32 PacketAlignmentFactor; + u32 AFListOffset; + u32 AFListSize; } RNDIS_INITIALIZE_COMPLETE, *PRNDIS_INITIALIZE_COMPLETE; - - /* Call manager devices only: Information about an address family */ /* supported by the device is appended to the response to NdisInitialize. */ -typedef struct _RNDIS_CO_ADDRESS_FAMILY -{ - RNDIS_AF AddressFamily; - u32 MajorVersion; - u32 MinorVersion; +typedef struct _RNDIS_CO_ADDRESS_FAMILY { + RNDIS_AF AddressFamily; + u32 MajorVersion; + u32 MinorVersion; } RNDIS_CO_ADDRESS_FAMILY, *PRNDIS_CO_ADDRESS_FAMILY; - - /* NdisHalt message */ -typedef struct _RNDIS_HALT_REQUEST -{ - RNDIS_REQUEST_ID RequestId; +typedef struct _RNDIS_HALT_REQUEST { + RNDIS_REQUEST_ID RequestId; } RNDIS_HALT_REQUEST, *PRNDIS_HALT_REQUEST; - - /* NdisQueryRequest message */ -typedef struct _RNDIS_QUERY_REQUEST -{ - RNDIS_REQUEST_ID RequestId; - RNDIS_OID Oid; - u32 InformationBufferLength; - u32 InformationBufferOffset; - RNDIS_HANDLE DeviceVcHandle; +typedef struct _RNDIS_QUERY_REQUEST { + RNDIS_REQUEST_ID RequestId; + RNDIS_OID Oid; + u32 InformationBufferLength; + u32 InformationBufferOffset; + RNDIS_HANDLE DeviceVcHandle; } RNDIS_QUERY_REQUEST, *PRNDIS_QUERY_REQUEST; - - /* Response to NdisQueryRequest */ -typedef struct _RNDIS_QUERY_COMPLETE -{ - RNDIS_REQUEST_ID RequestId; - RNDIS_STATUS Status; - u32 InformationBufferLength; - u32 InformationBufferOffset; +typedef struct _RNDIS_QUERY_COMPLETE { + RNDIS_REQUEST_ID RequestId; + RNDIS_STATUS Status; + u32 InformationBufferLength; + u32 InformationBufferOffset; } RNDIS_QUERY_COMPLETE, *PRNDIS_QUERY_COMPLETE; - - /* NdisSetRequest message */ -typedef struct _RNDIS_SET_REQUEST -{ - RNDIS_REQUEST_ID RequestId; - RNDIS_OID Oid; - u32 InformationBufferLength; - u32 InformationBufferOffset; - RNDIS_HANDLE DeviceVcHandle; +typedef struct _RNDIS_SET_REQUEST { + RNDIS_REQUEST_ID RequestId; + RNDIS_OID Oid; + u32 InformationBufferLength; + u32 InformationBufferOffset; + RNDIS_HANDLE DeviceVcHandle; } RNDIS_SET_REQUEST, *PRNDIS_SET_REQUEST; - - /* Response to NdisSetRequest */ -typedef struct _RNDIS_SET_COMPLETE -{ - RNDIS_REQUEST_ID RequestId; - RNDIS_STATUS Status; +typedef struct _RNDIS_SET_COMPLETE { + RNDIS_REQUEST_ID RequestId; + RNDIS_STATUS Status; } RNDIS_SET_COMPLETE, *PRNDIS_SET_COMPLETE; - - /* NdisReset message */ -typedef struct _RNDIS_RESET_REQUEST -{ - u32 Reserved; +typedef struct _RNDIS_RESET_REQUEST { + u32 Reserved; } RNDIS_RESET_REQUEST, *PRNDIS_RESET_REQUEST; - /* Response to NdisReset */ -typedef struct _RNDIS_RESET_COMPLETE -{ - RNDIS_STATUS Status; - u32 AddressingReset; +typedef struct _RNDIS_RESET_COMPLETE { + RNDIS_STATUS Status; + u32 AddressingReset; } RNDIS_RESET_COMPLETE, *PRNDIS_RESET_COMPLETE; - - /* NdisMIndicateStatus message */ -typedef struct _RNDIS_INDICATE_STATUS -{ - RNDIS_STATUS Status; - u32 StatusBufferLength; - u32 StatusBufferOffset; +typedef struct _RNDIS_INDICATE_STATUS { + RNDIS_STATUS Status; + u32 StatusBufferLength; + u32 StatusBufferOffset; } RNDIS_INDICATE_STATUS, *PRNDIS_INDICATE_STATUS; - - /* Diagnostic information passed as the status buffer in */ /* RNDIS_INDICATE_STATUS messages signifying error conditions. */ -typedef struct _RNDIS_DIAGNOSTIC_INFO -{ - RNDIS_STATUS DiagStatus; - u32 ErrorOffset; +typedef struct _RNDIS_DIAGNOSTIC_INFO { + RNDIS_STATUS DiagStatus; + u32 ErrorOffset; } RNDIS_DIAGNOSTIC_INFO, *PRNDIS_DIAGNOSTIC_INFO; - - - /* NdisKeepAlive message */ -typedef struct _RNDIS_KEEPALIVE_REQUEST -{ - RNDIS_REQUEST_ID RequestId; +typedef struct _RNDIS_KEEPALIVE_REQUEST { + RNDIS_REQUEST_ID RequestId; } RNDIS_KEEPALIVE_REQUEST, *PRNDIS_KEEPALIVE_REQUEST; - - /* Response to NdisKeepAlive */ -typedef struct _RNDIS_KEEPALIVE_COMPLETE -{ - RNDIS_REQUEST_ID RequestId; - RNDIS_STATUS Status; +typedef struct _RNDIS_KEEPALIVE_COMPLETE { + RNDIS_REQUEST_ID RequestId; + RNDIS_STATUS Status; } RNDIS_KEEPALIVE_COMPLETE, *PRNDIS_KEEPALIVE_COMPLETE; - - /* Data message. All Offset fields contain byte offsets from the beginning */ /* of the RNDIS_PACKET structure. All Length fields are in bytes. */ /* VcHandle is set to 0 for connectionless data, otherwise it */ /* contains the VC handle. */ -typedef struct _RNDIS_PACKET -{ - u32 DataOffset; - u32 DataLength; - u32 OOBDataOffset; - u32 OOBDataLength; - u32 NumOOBDataElements; - u32 PerPacketInfoOffset; - u32 PerPacketInfoLength; - RNDIS_HANDLE VcHandle; - u32 Reserved; +typedef struct _RNDIS_PACKET { + u32 DataOffset; + u32 DataLength; + u32 OOBDataOffset; + u32 OOBDataLength; + u32 NumOOBDataElements; + u32 PerPacketInfoOffset; + u32 PerPacketInfoLength; + RNDIS_HANDLE VcHandle; + u32 Reserved; } RNDIS_PACKET, *PRNDIS_PACKET; - /* Optional Out of Band data associated with a Data message. */ -typedef struct _RNDIS_OOBD -{ - u32 Size; - RNDIS_CLASS_ID Type; - u32 ClassInformationOffset; +typedef struct _RNDIS_OOBD { + u32 Size; + RNDIS_CLASS_ID Type; + u32 ClassInformationOffset; } RNDIS_OOBD, *PRNDIS_OOBD; - /* Packet extension field contents associated with a Data message. */ -typedef struct _RNDIS_PER_PACKET_INFO -{ - u32 Size; - u32 Type; - u32 PerPacketInformationOffset; +typedef struct _RNDIS_PER_PACKET_INFO { + u32 Size; + u32 Type; + u32 PerPacketInformationOffset; } RNDIS_PER_PACKET_INFO, *PRNDIS_PER_PACKET_INFO; - - /* Format of Information buffer passed in a SetRequest for the OID */ /* OID_GEN_RNDIS_CONFIG_PARAMETER. */ -typedef struct _RNDIS_CONFIG_PARAMETER_INFO -{ - u32 ParameterNameOffset; - u32 ParameterNameLength; - u32 ParameterType; - u32 ParameterValueOffset; - u32 ParameterValueLength; +typedef struct _RNDIS_CONFIG_PARAMETER_INFO { + u32 ParameterNameOffset; + u32 ParameterNameLength; + u32 ParameterType; + u32 ParameterValueOffset; + u32 ParameterValueLength; } RNDIS_CONFIG_PARAMETER_INFO, *PRNDIS_CONFIG_PARAMETER_INFO; - /* Values for ParameterType in RNDIS_CONFIG_PARAMETER_INFO */ #define RNDIS_CONFIG_PARAM_TYPE_INTEGER 0 #define RNDIS_CONFIG_PARAM_TYPE_STRING 2 - - /* CONDIS Miniport messages for connection oriented devices */ /* that do not implement a call manager. */ - - /* CoNdisMiniportCreateVc message */ -typedef struct _RCONDIS_MP_CREATE_VC -{ - RNDIS_REQUEST_ID RequestId; - RNDIS_HANDLE NdisVcHandle; +typedef struct _RCONDIS_MP_CREATE_VC { + RNDIS_REQUEST_ID RequestId; + RNDIS_HANDLE NdisVcHandle; } RCONDIS_MP_CREATE_VC, *PRCONDIS_MP_CREATE_VC; - /* Response to CoNdisMiniportCreateVc */ -typedef struct _RCONDIS_MP_CREATE_VC_COMPLETE -{ - RNDIS_REQUEST_ID RequestId; - RNDIS_HANDLE DeviceVcHandle; - RNDIS_STATUS Status; +typedef struct _RCONDIS_MP_CREATE_VC_COMPLETE { + RNDIS_REQUEST_ID RequestId; + RNDIS_HANDLE DeviceVcHandle; + RNDIS_STATUS Status; } RCONDIS_MP_CREATE_VC_COMPLETE, *PRCONDIS_MP_CREATE_VC_COMPLETE; - - /* CoNdisMiniportDeleteVc message */ -typedef struct _RCONDIS_MP_DELETE_VC -{ - RNDIS_REQUEST_ID RequestId; - RNDIS_HANDLE DeviceVcHandle; +typedef struct _RCONDIS_MP_DELETE_VC { + RNDIS_REQUEST_ID RequestId; + RNDIS_HANDLE DeviceVcHandle; } RCONDIS_MP_DELETE_VC, *PRCONDIS_MP_DELETE_VC; - /* Response to CoNdisMiniportDeleteVc */ -typedef struct _RCONDIS_MP_DELETE_VC_COMPLETE -{ - RNDIS_REQUEST_ID RequestId; - RNDIS_STATUS Status; +typedef struct _RCONDIS_MP_DELETE_VC_COMPLETE { + RNDIS_REQUEST_ID RequestId; + RNDIS_STATUS Status; } RCONDIS_MP_DELETE_VC_COMPLETE, *PRCONDIS_MP_DELETE_VC_COMPLETE; - - /* CoNdisMiniportQueryRequest message */ -typedef struct _RCONDIS_MP_QUERY_REQUEST -{ - RNDIS_REQUEST_ID RequestId; - RNDIS_REQUEST_TYPE RequestType; - RNDIS_OID Oid; - RNDIS_HANDLE DeviceVcHandle; - u32 InformationBufferLength; - u32 InformationBufferOffset; +typedef struct _RCONDIS_MP_QUERY_REQUEST { + RNDIS_REQUEST_ID RequestId; + RNDIS_REQUEST_TYPE RequestType; + RNDIS_OID Oid; + RNDIS_HANDLE DeviceVcHandle; + u32 InformationBufferLength; + u32 InformationBufferOffset; } RCONDIS_MP_QUERY_REQUEST, *PRCONDIS_MP_QUERY_REQUEST; - - /* CoNdisMiniportSetRequest message */ -typedef struct _RCONDIS_MP_SET_REQUEST -{ - RNDIS_REQUEST_ID RequestId; - RNDIS_REQUEST_TYPE RequestType; - RNDIS_OID Oid; - RNDIS_HANDLE DeviceVcHandle; - u32 InformationBufferLength; - u32 InformationBufferOffset; +typedef struct _RCONDIS_MP_SET_REQUEST { + RNDIS_REQUEST_ID RequestId; + RNDIS_REQUEST_TYPE RequestType; + RNDIS_OID Oid; + RNDIS_HANDLE DeviceVcHandle; + u32 InformationBufferLength; + u32 InformationBufferOffset; } RCONDIS_MP_SET_REQUEST, *PRCONDIS_MP_SET_REQUEST; - - /* CoNdisIndicateStatus message */ -typedef struct _RCONDIS_INDICATE_STATUS -{ - RNDIS_HANDLE NdisVcHandle; - RNDIS_STATUS Status; - u32 StatusBufferLength; - u32 StatusBufferOffset; +typedef struct _RCONDIS_INDICATE_STATUS { + RNDIS_HANDLE NdisVcHandle; + RNDIS_STATUS Status; + u32 StatusBufferLength; + u32 StatusBufferOffset; } RCONDIS_INDICATE_STATUS, *PRCONDIS_INDICATE_STATUS; - - /* CONDIS Call/VC parameters */ - -typedef struct _RCONDIS_SPECIFIC_PARAMETERS -{ - u32 ParameterType; - u32 ParameterLength; - u32 ParameterOffset; +typedef struct _RCONDIS_SPECIFIC_PARAMETERS { + u32 ParameterType; + u32 ParameterLength; + u32 ParameterOffset; } RCONDIS_SPECIFIC_PARAMETERS, *PRCONDIS_SPECIFIC_PARAMETERS; -typedef struct _RCONDIS_MEDIA_PARAMETERS -{ - u32 Flags; - u32 Reserved1; - u32 Reserved2; - RCONDIS_SPECIFIC_PARAMETERS MediaSpecific; +typedef struct _RCONDIS_MEDIA_PARAMETERS { + u32 Flags; + u32 Reserved1; + u32 Reserved2; + RCONDIS_SPECIFIC_PARAMETERS MediaSpecific; } RCONDIS_MEDIA_PARAMETERS, *PRCONDIS_MEDIA_PARAMETERS; - -typedef struct _RNDIS_FLOWSPEC -{ - u32 TokenRate; - u32 TokenBucketSize; - u32 PeakBandwidth; - u32 Latency; - u32 DelayVariation; - u32 ServiceType; - u32 MaxSduSize; - u32 MinimumPolicedSize; +typedef struct _RNDIS_FLOWSPEC { + u32 TokenRate; + u32 TokenBucketSize; + u32 PeakBandwidth; + u32 Latency; + u32 DelayVariation; + u32 ServiceType; + u32 MaxSduSize; + u32 MinimumPolicedSize; } RNDIS_FLOWSPEC, *PRNDIS_FLOWSPEC; -typedef struct _RCONDIS_CALL_MANAGER_PARAMETERS -{ - RNDIS_FLOWSPEC Transmit; - RNDIS_FLOWSPEC Receive; - RCONDIS_SPECIFIC_PARAMETERS CallMgrSpecific; +typedef struct _RCONDIS_CALL_MANAGER_PARAMETERS { + RNDIS_FLOWSPEC Transmit; + RNDIS_FLOWSPEC Receive; + RCONDIS_SPECIFIC_PARAMETERS CallMgrSpecific; } RCONDIS_CALL_MANAGER_PARAMETERS, *PRCONDIS_CALL_MANAGER_PARAMETERS; - /* CoNdisMiniportActivateVc message */ -typedef struct _RCONDIS_MP_ACTIVATE_VC_REQUEST -{ - RNDIS_REQUEST_ID RequestId; - u32 Flags; - RNDIS_HANDLE DeviceVcHandle; - u32 MediaParamsOffset; - u32 MediaParamsLength; - u32 CallMgrParamsOffset; - u32 CallMgrParamsLength; +typedef struct _RCONDIS_MP_ACTIVATE_VC_REQUEST { + RNDIS_REQUEST_ID RequestId; + u32 Flags; + RNDIS_HANDLE DeviceVcHandle; + u32 MediaParamsOffset; + u32 MediaParamsLength; + u32 CallMgrParamsOffset; + u32 CallMgrParamsLength; } RCONDIS_MP_ACTIVATE_VC_REQUEST, *PRCONDIS_MP_ACTIVATE_VC_REQUEST; - /* Response to CoNdisMiniportActivateVc */ -typedef struct _RCONDIS_MP_ACTIVATE_VC_COMPLETE -{ - RNDIS_REQUEST_ID RequestId; - RNDIS_STATUS Status; +typedef struct _RCONDIS_MP_ACTIVATE_VC_COMPLETE { + RNDIS_REQUEST_ID RequestId; + RNDIS_STATUS Status; } RCONDIS_MP_ACTIVATE_VC_COMPLETE, *PRCONDIS_MP_ACTIVATE_VC_COMPLETE; - - /* CoNdisMiniportDeactivateVc message */ -typedef struct _RCONDIS_MP_DEACTIVATE_VC_REQUEST -{ - RNDIS_REQUEST_ID RequestId; - u32 Flags; - RNDIS_HANDLE DeviceVcHandle; +typedef struct _RCONDIS_MP_DEACTIVATE_VC_REQUEST { + RNDIS_REQUEST_ID RequestId; + u32 Flags; + RNDIS_HANDLE DeviceVcHandle; } RCONDIS_MP_DEACTIVATE_VC_REQUEST, *PRCONDIS_MP_DEACTIVATE_VC_REQUEST; - /* Response to CoNdisMiniportDeactivateVc */ -typedef struct _RCONDIS_MP_DEACTIVATE_VC_COMPLETE -{ - RNDIS_REQUEST_ID RequestId; - RNDIS_STATUS Status; +typedef struct _RCONDIS_MP_DEACTIVATE_VC_COMPLETE { + RNDIS_REQUEST_ID RequestId; + RNDIS_STATUS Status; } RCONDIS_MP_DEACTIVATE_VC_COMPLETE, *PRCONDIS_MP_DEACTIVATE_VC_COMPLETE; - - /* union with all of the RNDIS messages */ -typedef union _RNDIS_MESSAGE_CONTAINER -{ - RNDIS_PACKET Packet; - RNDIS_INITIALIZE_REQUEST InitializeRequest; - RNDIS_HALT_REQUEST HaltRequest; - RNDIS_QUERY_REQUEST QueryRequest; - RNDIS_SET_REQUEST SetRequest; - RNDIS_RESET_REQUEST ResetRequest; - RNDIS_KEEPALIVE_REQUEST KeepaliveRequest; - RNDIS_INDICATE_STATUS IndicateStatus; - RNDIS_INITIALIZE_COMPLETE InitializeComplete; - RNDIS_QUERY_COMPLETE QueryComplete; - RNDIS_SET_COMPLETE SetComplete; - RNDIS_RESET_COMPLETE ResetComplete; - RNDIS_KEEPALIVE_COMPLETE KeepaliveComplete; - RCONDIS_MP_CREATE_VC CoMiniportCreateVc; - RCONDIS_MP_DELETE_VC CoMiniportDeleteVc; - RCONDIS_INDICATE_STATUS CoIndicateStatus; - RCONDIS_MP_ACTIVATE_VC_REQUEST CoMiniportActivateVc; - RCONDIS_MP_DEACTIVATE_VC_REQUEST CoMiniportDeactivateVc; - RCONDIS_MP_CREATE_VC_COMPLETE CoMiniportCreateVcComplete; - RCONDIS_MP_DELETE_VC_COMPLETE CoMiniportDeleteVcComplete; - RCONDIS_MP_ACTIVATE_VC_COMPLETE CoMiniportActivateVcComplete; - RCONDIS_MP_DEACTIVATE_VC_COMPLETE CoMiniportDeactivateVcComplete; - +typedef union _RNDIS_MESSAGE_CONTAINER { + RNDIS_PACKET Packet; + RNDIS_INITIALIZE_REQUEST InitializeRequest; + RNDIS_HALT_REQUEST HaltRequest; + RNDIS_QUERY_REQUEST QueryRequest; + RNDIS_SET_REQUEST SetRequest; + RNDIS_RESET_REQUEST ResetRequest; + RNDIS_KEEPALIVE_REQUEST KeepaliveRequest; + RNDIS_INDICATE_STATUS IndicateStatus; + RNDIS_INITIALIZE_COMPLETE InitializeComplete; + RNDIS_QUERY_COMPLETE QueryComplete; + RNDIS_SET_COMPLETE SetComplete; + RNDIS_RESET_COMPLETE ResetComplete; + RNDIS_KEEPALIVE_COMPLETE KeepaliveComplete; + RCONDIS_MP_CREATE_VC CoMiniportCreateVc; + RCONDIS_MP_DELETE_VC CoMiniportDeleteVc; + RCONDIS_INDICATE_STATUS CoIndicateStatus; + RCONDIS_MP_ACTIVATE_VC_REQUEST CoMiniportActivateVc; + RCONDIS_MP_DEACTIVATE_VC_REQUEST CoMiniportDeactivateVc; + RCONDIS_MP_CREATE_VC_COMPLETE CoMiniportCreateVcComplete; + RCONDIS_MP_DELETE_VC_COMPLETE CoMiniportDeleteVcComplete; + RCONDIS_MP_ACTIVATE_VC_COMPLETE CoMiniportActivateVcComplete; + RCONDIS_MP_DEACTIVATE_VC_COMPLETE CoMiniportDeactivateVcComplete; } RNDIS_MESSAGE_CONTAINER, *PRNDIS_MESSAGE_CONTAINER; - /* Remote NDIS message format */ -typedef __struct_bcount(MessageLength) struct _RNDIS_MESSAGE -{ - u32 NdisMessageType; - +typedef __struct_bcount(MessageLength) +struct _RNDIS_MESSAGE { + u32 NdisMessageType; - /* Total length of this message, from the beginning */ - /* of the RNDIS_MESSAGE struct, in bytes. */ + /* Total length of this message, from the beginning */ + /* of the RNDIS_MESSAGE struct, in bytes. */ - u32 MessageLength; + u32 MessageLength; - /* Actual message */ - RNDIS_MESSAGE_CONTAINER Message; + /* Actual message */ + RNDIS_MESSAGE_CONTAINER Message; } RNDIS_MESSAGE, *PRNDIS_MESSAGE; - - - /* Handy macros */ /* get the size of an RNDIS message. Pass in the message type, */ diff --git a/drivers/staging/hv/include/vmbus.h b/drivers/staging/hv/include/vmbus.h index b99c4b5..88d371b 100644 --- a/drivers/staging/hv/include/vmbus.h +++ b/drivers/staging/hv/include/vmbus.h @@ -21,7 +21,6 @@ * */ - #ifndef _VMBUS_H_ #define _VMBUS_H_ @@ -29,71 +28,60 @@ #include "VmbusApi.h" - /* Data types */ - -typedef int (*PFN_DRIVERINITIALIZE)(DRIVER_OBJECT *drv); -typedef int (*PFN_DRIVEREXIT)(DRIVER_OBJECT *drv); +typedef int (*PFN_DRIVERINITIALIZE) (DRIVER_OBJECT * drv); +typedef int (*PFN_DRIVEREXIT) (DRIVER_OBJECT * drv); struct driver_context { - GUID class_id; + GUID class_id; - struct device_driver driver; + struct device_driver driver; /* Use these methods instead of the struct device_driver so 2.6 kernel stops complaining */ - int (*probe)(struct device *); - int (*remove)(struct device *); - void (*shutdown)(struct device *); + int (*probe) (struct device *); + int (*remove) (struct device *); + void (*shutdown) (struct device *); }; struct device_context { - struct work_struct probe_failed_work_item; - GUID class_id; - GUID device_id; - int probe_error; - struct device device; + struct work_struct probe_failed_work_item; + GUID class_id; + GUID device_id; + int probe_error; + struct device device; struct hv_device device_obj; }; - - /* Global */ - - /* Inlines */ -static inline struct device_context *to_device_context(struct hv_device *device_obj) +static inline struct device_context *to_device_context(struct hv_device + *device_obj) { return container_of(device_obj, struct device_context, device_obj); } -static inline struct device_context *device_to_device_context(struct device *device) +static inline struct device_context *device_to_device_context(struct device + *device) { return container_of(device, struct device_context, device); } -static inline struct driver_context *driver_to_driver_context(struct device_driver *driver) +static inline struct driver_context *driver_to_driver_context(struct + device_driver + *driver) { return container_of(driver, struct driver_context, driver); } - /* Vmbus interface */ -int vmbus_child_driver_register( - struct driver_context* driver_ctx - ); +int vmbus_child_driver_register(struct driver_context *driver_ctx); -void -vmbus_child_driver_unregister( - struct driver_context *driver_ctx - ); +void vmbus_child_driver_unregister(struct driver_context *driver_ctx); -void -vmbus_get_interface( - VMBUS_CHANNEL_INTERFACE *interface - ); +void vmbus_get_interface(VMBUS_CHANNEL_INTERFACE * interface); #endif /* _VMBUS_H_ */ diff --git a/drivers/staging/hv/include/vstorage.h b/drivers/staging/hv/include/vstorage.h index 33646e7..6400590 100644 --- a/drivers/staging/hv/include/vstorage.h +++ b/drivers/staging/hv/include/vstorage.h @@ -21,7 +21,6 @@ * */ - #pragma once /* #include <vmbuspacketformat.h> */ @@ -31,22 +30,14 @@ /* public interface to the server */ - - /* Storvsp device interface guid */ - - - /* Protocol versions. */ - - /* vstorage.w revision number. This is used in the case of a version match, */ /* to alert the user that structure sizes may be mismatched even though the */ /* protocol versions match. */ - #define REVISION_STRING(REVISION_) #REVISION_ #define FILL_VMSTOR_REVISION(RESULT_LVALUE_) \ { \ @@ -60,23 +51,18 @@ } \ } - /* Major/minor macros. Minor version is in LSB, meaning that earlier flat */ /* version numbers will be interpreted as "0.x" (i.e., 1 becomes 0.1). */ - #define VMSTOR_PROTOCOL_MAJOR(VERSION_) (((VERSION_) >> 8) & 0xff) #define VMSTOR_PROTOCOL_MINOR(VERSION_) (((VERSION_) ) & 0xff) #define VMSTOR_PROTOCOL_VERSION(MAJOR_, MINOR_) ((((MAJOR_) & 0xff) << 8) | \ (((MINOR_) & 0xff) )) - /* Invalid version. */ - #define VMSTOR_INVALID_PROTOCOL_VERSION -1 - /* Version history: */ /* V1 Beta 0.1 */ /* V1 RC < 2008/1/31 1.0 */ @@ -84,51 +70,37 @@ #define VMSTOR_PROTOCOL_VERSION_CURRENT VMSTOR_PROTOCOL_VERSION(2, 0) - - /* This will get replaced with the max transfer length that is possible on */ /* the host adapter. */ /* The max transfer length will be published when we offer a vmbus channel. */ - #define MAX_TRANSFER_LENGTH 0x40000 #define DEFAULT_PACKET_SIZE (sizeof(VMDATA_GPA_DIRECT) + \ sizeof(VSTOR_PACKET) + \ (sizeof(u64) * (MAX_TRANSFER_LENGTH / PAGE_SIZE))) - - - /* Packet structure describing virtual storage requests. */ - -typedef enum -{ - VStorOperationCompleteIo = 1, - VStorOperationRemoveDevice = 2, - VStorOperationExecuteSRB = 3, - VStorOperationResetLun = 4, - VStorOperationResetAdapter = 5, - VStorOperationResetBus = 6, - VStorOperationBeginInitialization = 7, - VStorOperationEndInitialization = 8, - VStorOperationQueryProtocolVersion = 9, - VStorOperationQueryProperties = 10, - VStorOperationMaximum = 10 - +typedef enum { + VStorOperationCompleteIo = 1, + VStorOperationRemoveDevice = 2, + VStorOperationExecuteSRB = 3, + VStorOperationResetLun = 4, + VStorOperationResetAdapter = 5, + VStorOperationResetBus = 6, + VStorOperationBeginInitialization = 7, + VStorOperationEndInitialization = 8, + VStorOperationQueryProtocolVersion = 9, + VStorOperationQueryProperties = 10, + VStorOperationMaximum = 10 } VSTOR_PACKET_OPERATION; - - /* Platform neutral description of a scsi request - */ /* this remains the same across the write regardless of 32/64 bit */ /* note: it's patterned off the SCSI_PASS_THROUGH structure */ - - #pragma pack(push,1) - #define CDB16GENERIC_LENGTH 0x10 #ifndef SENSE_BUFFER_SIZE @@ -138,170 +110,128 @@ C_ASSERT(SENSE_BUFFER_SIZE == 0x12); #define MAX_DATA_BUFFER_LENGTH_WITH_PADDING 0x14 +typedef struct { + unsigned short Length; + unsigned char SrbStatus; + unsigned char ScsiStatus; -typedef struct -{ - unsigned short Length; - unsigned char SrbStatus; - unsigned char ScsiStatus; - - unsigned char PortNumber; - unsigned char PathId; - unsigned char TargetId; - unsigned char Lun; + unsigned char PortNumber; + unsigned char PathId; + unsigned char TargetId; + unsigned char Lun; - unsigned char CdbLength; - unsigned char SenseInfoLength; - unsigned char DataIn; - unsigned char Reserved; + unsigned char CdbLength; + unsigned char SenseInfoLength; + unsigned char DataIn; + unsigned char Reserved; - unsigned int DataTransferLength; + unsigned int DataTransferLength; - union - { - unsigned char Cdb[CDB16GENERIC_LENGTH]; + union { + unsigned char Cdb[CDB16GENERIC_LENGTH]; - unsigned char SenseData[SENSE_BUFFER_SIZE]; + unsigned char SenseData[SENSE_BUFFER_SIZE]; - unsigned char ReservedArray[MAX_DATA_BUFFER_LENGTH_WITH_PADDING]; - }; + unsigned char + ReservedArray[MAX_DATA_BUFFER_LENGTH_WITH_PADDING]; + }; } VMSCSI_REQUEST, *PVMSCSI_REQUEST; C_ASSERT((sizeof(VMSCSI_REQUEST) % 4) == 0); - - /* This structure is sent during the intialization phase to get the different */ /* properties of the channel. */ +typedef struct { + unsigned short ProtocolVersion; + unsigned char PathId; + unsigned char TargetId; -typedef struct -{ - unsigned short ProtocolVersion; - unsigned char PathId; - unsigned char TargetId; - - - /* Note: port number is only really known on the client side */ + /* Note: port number is only really known on the client side */ - unsigned int PortNumber; + unsigned int PortNumber; - unsigned int Flags; + unsigned int Flags; - unsigned int MaxTransferBytes; + unsigned int MaxTransferBytes; + /* This id is unique for each channel and will correspond with */ + /* vendor specific data in the inquirydata */ - /* This id is unique for each channel and will correspond with */ - /* vendor specific data in the inquirydata */ - - - unsigned long long UniqueId; + unsigned long long UniqueId; } VMSTORAGE_CHANNEL_PROPERTIES, *PVMSTORAGE_CHANNEL_PROPERTIES; C_ASSERT((sizeof(VMSTORAGE_CHANNEL_PROPERTIES) % 4) == 0); - - /* This structure is sent during the storage protocol negotiations. */ +typedef struct { -typedef struct -{ - - /* Major (MSW) and minor (LSW) version numbers. */ - - - unsigned short MajorMinor; - + /* Major (MSW) and minor (LSW) version numbers. */ + unsigned short MajorMinor; - /* Revision number is auto-incremented whenever this file is changed */ - /* (See FILL_VMSTOR_REVISION macro above). Mismatch does not definitely */ - /* indicate incompatibility--but it does indicate mismatched builds. */ + /* Revision number is auto-incremented whenever this file is changed */ + /* (See FILL_VMSTOR_REVISION macro above). Mismatch does not definitely */ + /* indicate incompatibility--but it does indicate mismatched builds. */ - - unsigned short Revision; + unsigned short Revision; } VMSTORAGE_PROTOCOL_VERSION, *PVMSTORAGE_PROTOCOL_VERSION; C_ASSERT((sizeof(VMSTORAGE_PROTOCOL_VERSION) % 4) == 0); - - /* Channel Property Flags */ - #define STORAGE_CHANNEL_REMOVABLE_FLAG 0x1 #define STORAGE_CHANNEL_EMULATED_IDE_FLAG 0x2 +typedef struct _VSTOR_PACKET { -typedef struct _VSTOR_PACKET -{ - - /* Requested operation type */ - - - VSTOR_PACKET_OPERATION Operation; - + /* Requested operation type */ - /* Flags - see below for values */ + VSTOR_PACKET_OPERATION Operation; + /* Flags - see below for values */ - unsigned int Flags; + unsigned int Flags; + /* Status of the request returned from the server side. */ - /* Status of the request returned from the server side. */ + unsigned int Status; + /* Data payload area */ - unsigned int Status; + union { + /* Structure used to forward SCSI commands from the client to the server. */ - /* Data payload area */ + VMSCSI_REQUEST VmSrb; + /* Structure used to query channel properties. */ - union - { + VMSTORAGE_CHANNEL_PROPERTIES StorageChannelProperties; - /* Structure used to forward SCSI commands from the client to the server. */ + /* Used during version negotiations. */ - - VMSCSI_REQUEST VmSrb; - - - /* Structure used to query channel properties. */ - - - VMSTORAGE_CHANNEL_PROPERTIES StorageChannelProperties; - - - /* Used during version negotiations. */ - - - VMSTORAGE_PROTOCOL_VERSION Version; - }; + VMSTORAGE_PROTOCOL_VERSION Version; + }; } VSTOR_PACKET, *PVSTOR_PACKET; C_ASSERT((sizeof(VSTOR_PACKET) % 4) == 0); - /* Packet flags */ - - /* This flag indicates that the server should send back a completion for this */ /* packet. */ - #define REQUEST_COMPLETION_FLAG 0x1 - /* This is the set of flags that the vsc can set in any packets it sends */ - #define VSC_LEGAL_FLAGS (REQUEST_COMPLETION_FLAG) - #pragma pack(pop) -- 1.6.3.1.10.g659a0.dirty