diff --git a/drivers/staging/hv/hv_api.h b/drivers/staging/hv/hv_api.h index b24493a9980b..2bc4003ac59a 100644 --- a/drivers/staging/hv/hv_api.h +++ b/drivers/staging/hv/hv_api.h @@ -23,491 +23,6 @@ #ifndef __HV_API_H #define __HV_API_H - -/* Status codes for hypervisor operations. */ - -/* - * HV_STATUS_SUCCESS - * The specified hypercall succeeded - */ -#define HV_STATUS_SUCCESS ((u16)0x0000) - -/* - * HV_STATUS_INVALID_HYPERCALL_CODE - * The hypervisor does not support the operation because the specified - * hypercall code is not supported. - */ -#define HV_STATUS_INVALID_HYPERCALL_CODE ((u16)0x0002) - -/* - * HV_STATUS_INVALID_HYPERCALL_INPUT - * The hypervisor does not support the operation because the encoding for the - * hypercall input register is not supported. - */ -#define HV_STATUS_INVALID_HYPERCALL_INPUT ((u16)0x0003) - -/* - * HV_STATUS_INVALID_ALIGNMENT - * The hypervisor could not perform the operation because a parameter has an - * invalid alignment. - */ -#define HV_STATUS_INVALID_ALIGNMENT ((u16)0x0004) - -/* - * HV_STATUS_INVALID_PARAMETER - * The hypervisor could not perform the operation because an invalid parameter - * was specified. - */ -#define HV_STATUS_INVALID_PARAMETER ((u16)0x0005) - -/* - * HV_STATUS_ACCESS_DENIED - * Access to the specified object was denied. - */ -#define HV_STATUS_ACCESS_DENIED ((u16)0x0006) - -/* - * HV_STATUS_INVALID_PARTITION_STATE - * The hypervisor could not perform the operation because the partition is - * entering or in an invalid state. - */ -#define HV_STATUS_INVALID_PARTITION_STATE ((u16)0x0007) - -/* - * HV_STATUS_OPERATION_DENIED - * The operation is not allowed in the current state. - */ -#define HV_STATUS_OPERATION_DENIED ((u16)0x0008) - -/* - * HV_STATUS_UNKNOWN_PROPERTY - * The hypervisor does not recognize the specified partition property. - */ -#define HV_STATUS_UNKNOWN_PROPERTY ((u16)0x0009) - -/* - * HV_STATUS_PROPERTY_VALUE_OUT_OF_RANGE - * The specified value of a partition property is out of range or violates an - * invariant. - */ -#define HV_STATUS_PROPERTY_VALUE_OUT_OF_RANGE ((u16)0x000A) - -/* - * HV_STATUS_INSUFFICIENT_MEMORY - * There is not enough memory in the hypervisor pool to complete the operation. - */ -#define HV_STATUS_INSUFFICIENT_MEMORY ((u16)0x000B) - -/* - * HV_STATUS_PARTITION_TOO_DEEP - * The maximum partition depth has been exceeded for the partition hierarchy. - */ -#define HV_STATUS_PARTITION_TOO_DEEP ((u16)0x000C) - -/* - * HV_STATUS_INVALID_PARTITION_ID - * A partition with the specified partition Id does not exist. - */ -#define HV_STATUS_INVALID_PARTITION_ID ((u16)0x000D) - -/* - * HV_STATUS_INVALID_VP_INDEX - * The hypervisor could not perform the operation because the specified VP - * index is invalid. - */ -#define HV_STATUS_INVALID_VP_INDEX ((u16)0x000E) - -/* - * HV_STATUS_NOT_FOUND - * The iteration is complete; no addition items in the iteration could be - * found. - */ -#define HV_STATUS_NOT_FOUND ((u16)0x0010) - -/* - * HV_STATUS_INVALID_PORT_ID - * The hypervisor could not perform the operation because the specified port - * identifier is invalid. - */ -#define HV_STATUS_INVALID_PORT_ID ((u16)0x0011) - -/* - * HV_STATUS_INVALID_CONNECTION_ID - * The hypervisor could not perform the operation because the specified - * connection identifier is invalid. - */ -#define HV_STATUS_INVALID_CONNECTION_ID ((u16)0x0012) - -/* - * HV_STATUS_INSUFFICIENT_BUFFERS - * You did not supply enough message buffers to send a message. - */ -#define HV_STATUS_INSUFFICIENT_BUFFERS ((u16)0x0013) - -/* - * HV_STATUS_NOT_ACKNOWLEDGED - * The previous virtual interrupt has not been acknowledged. - */ -#define HV_STATUS_NOT_ACKNOWLEDGED ((u16)0x0014) - -/* - * HV_STATUS_INVALID_VP_STATE - * A virtual processor is not in the correct state for the performance of the - * indicated operation. - */ -#define HV_STATUS_INVALID_VP_STATE ((u16)0x0015) - -/* - * HV_STATUS_ACKNOWLEDGED - * The previous virtual interrupt has already been acknowledged. - */ -#define HV_STATUS_ACKNOWLEDGED ((u16)0x0016) - -/* - * HV_STATUS_INVALID_SAVE_RESTORE_STATE - * The indicated partition is not in a valid state for saving or restoring. - */ -#define HV_STATUS_INVALID_SAVE_RESTORE_STATE ((u16)0x0017) - -/* - * HV_STATUS_INVALID_SYNIC_STATE - * The hypervisor could not complete the operation because a required feature - * of the synthetic interrupt controller (SynIC) was disabled. - */ -#define HV_STATUS_INVALID_SYNIC_STATE ((u16)0x0018) - -/* - * HV_STATUS_OBJECT_IN_USE - * The hypervisor could not perform the operation because the object or value - * was either already in use or being used for a purpose that would not permit - * completing the operation. - */ -#define HV_STATUS_OBJECT_IN_USE ((u16)0x0019) - -/* - * HV_STATUS_INVALID_PROXIMITY_DOMAIN_INFO - * The proximity domain information is invalid. - */ -#define HV_STATUS_INVALID_PROXIMITY_DOMAIN_INFO ((u16)0x001A) - -/* - * HV_STATUS_NO_DATA - * An attempt to retrieve debugging data failed because none was available. - */ -#define HV_STATUS_NO_DATA ((u16)0x001B) - -/* - * HV_STATUS_INACTIVE - * The physical connection being used for debuggging has not recorded any - * receive activity since the last operation. - */ -#define HV_STATUS_INACTIVE ((u16)0x001C) - -/* - * HV_STATUS_NO_RESOURCES - * There are not enough resources to complete the operation. - */ -#define HV_STATUS_NO_RESOURCES ((u16)0x001D) - -/* - * HV_STATUS_FEATURE_UNAVAILABLE - * A hypervisor feature is not available to the user. - */ -#define HV_STATUS_FEATURE_UNAVAILABLE ((u16)0x001E) - -/* - * HV_STATUS_UNSUCCESSFUL - * {Operation Failed} The requested operation was unsuccessful. - */ -#define HV_STATUS_UNSUCCESSFUL ((u16)0x1001) - -/* - * HV_STATUS_INSUFFICIENT_BUFFER - * The specified buffer was too small to contain all of the requested data. - */ -#define HV_STATUS_INSUFFICIENT_BUFFER ((u16)0x1002) - -/* - * HV_STATUS_GPA_NOT_PRESENT - * The guest physical address is not currently associated with a system - * physical address. - */ -#define HV_STATUS_GPA_NOT_PRESENT ((u16)0x1003) - -/* - * HV_STATUS_GUEST_PAGE_FAULT - * The operation would have resulted in a page fault in the guest. - */ -#define HV_STATUS_GUEST_PAGE_FAULT ((u16)0x1004) - -/* - * HV_STATUS_RUNDOWN_DISABLED - * The operation cannot proceed as the rundown object was marked disabled. - */ -#define HV_STATUS_RUNDOWN_DISABLED ((u16)0x1005) - -/* - * HV_STATUS_KEY_ALREADY_EXISTS - * The entry cannot be added as another entry with the same key already exists. - */ -#define HV_STATUS_KEY_ALREADY_EXISTS ((u16)0x1006) - -/* - * HV_STATUS_GPA_INTERCEPT - * The operation resulted an intercept on a region of guest physical memory. - */ -#define HV_STATUS_GPA_INTERCEPT ((u16)0x1007) - -/* - * HV_STATUS_GUEST_GENERAL_PROTECTION_FAULT - * The operation would have resulted in a general protection fault in the - * guest. - */ -#define HV_STATUS_GUEST_GENERAL_PROTECTION_FAULT ((u16)0x1008) - -/* - * HV_STATUS_GUEST_STACK_FAULT - * The operation would have resulted in a stack fault in the guest. - */ -#define HV_STATUS_GUEST_STACK_FAULT ((u16)0x1009) - -/* - * HV_STATUS_GUEST_INVALID_OPCODE_FAULT - * The operation would have resulted in an invalid opcode fault in the guest. - */ -#define HV_STATUS_GUEST_INVALID_OPCODE_FAULT ((u16)0x100A) - -/* - * HV_STATUS_FINALIZE_INCOMPLETE - * The partition is not completely finalized. - */ -#define HV_STATUS_FINALIZE_INCOMPLETE ((u16)0x100B) - -/* - * HV_STATUS_GUEST_MACHINE_CHECK_ABORT - * The operation would have resulted in an machine check abort in the guest. - */ -#define HV_STATUS_GUEST_MACHINE_CHECK_ABORT ((u16)0x100C) - -/* - * HV_STATUS_ILLEGAL_OVERLAY_ACCESS - * An illegal access was attempted to an overlay page. - */ -#define HV_STATUS_ILLEGAL_OVERLAY_ACCESS ((u16)0x100D) - -/* - * HV_STATUS_INSUFFICIENT_SYSTEM_VA - * There is not enough system VA space available to satisfy the request, - */ -#define HV_STATUS_INSUFFICIENT_SYSTEM_VA ((u16)0x100E) - -/* - * HV_STATUS_VIRTUAL_ADDRESS_NOT_MAPPED - * The passed virtual address was not mapped in the hypervisor address space. - */ -#define HV_STATUS_VIRTUAL_ADDRESS_NOT_MAPPED ((u16)0x100F) - -/* - * HV_STATUS_NOT_IMPLEMENTED - * The requested operation is not implemented in this version of the - * hypervisor. - */ -#define HV_STATUS_NOT_IMPLEMENTED ((u16)0x1010) - -/* - * HV_STATUS_VMX_INSTRUCTION_FAILED - * The requested VMX instruction failed to complete successfully. - */ -#define HV_STATUS_VMX_INSTRUCTION_FAILED ((u16)0x1011) - -/* - * HV_STATUS_VMX_INSTRUCTION_FAILED_WITH_STATUS - * The requested VMX instruction failed to complete successfully indicating - * status. - */ -#define HV_STATUS_VMX_INSTRUCTION_FAILED_WITH_STATUS ((u16)0x1012) - -/* - * HV_STATUS_MSR_ACCESS_FAILED - * The requested access to the model specific register failed. - */ -#define HV_STATUS_MSR_ACCESS_FAILED ((u16)0x1013) - -/* - * HV_STATUS_CR_ACCESS_FAILED - * The requested access to the control register failed. - */ -#define HV_STATUS_CR_ACCESS_FAILED ((u16)0x1014) - -/* - * HV_STATUS_TIMEOUT - * The specified timeout expired before the operation completed. - */ -#define HV_STATUS_TIMEOUT ((u16)0x1016) - -/* - * HV_STATUS_MSR_INTERCEPT - * The requested access to the model specific register generated an intercept. - */ -#define HV_STATUS_MSR_INTERCEPT ((u16)0x1017) - -/* - * HV_STATUS_CPUID_INTERCEPT - * The CPUID instruction generated an intercept. - */ -#define HV_STATUS_CPUID_INTERCEPT ((u16)0x1018) - -/* - * HV_STATUS_REPEAT_INSTRUCTION - * The current instruction should be repeated and the instruction pointer not - * advanced. - */ -#define HV_STATUS_REPEAT_INSTRUCTION ((u16)0x1019) - -/* - * HV_STATUS_PAGE_PROTECTION_VIOLATION - * The current instruction should be repeated and the instruction pointer not - * advanced. - */ -#define HV_STATUS_PAGE_PROTECTION_VIOLATION ((u16)0x101A) - -/* - * HV_STATUS_PAGE_TABLE_INVALID - * The current instruction should be repeated and the instruction pointer not - * advanced. - */ -#define HV_STATUS_PAGE_TABLE_INVALID ((u16)0x101B) - -/* - * HV_STATUS_PAGE_NOT_PRESENT - * The current instruction should be repeated and the instruction pointer not - * advanced. - */ -#define HV_STATUS_PAGE_NOT_PRESENT ((u16)0x101C) - -/* - * HV_STATUS_IO_INTERCEPT - * The requested access to the I/O port generated an intercept. - */ -#define HV_STATUS_IO_INTERCEPT ((u16)0x101D) - -/* - * HV_STATUS_NOTHING_TO_DO - * There is nothing to do. - */ -#define HV_STATUS_NOTHING_TO_DO ((u16)0x101E) - -/* - * HV_STATUS_THREAD_TERMINATING - * The requested thread is terminating. - */ -#define HV_STATUS_THREAD_TERMINATING ((u16)0x101F) - -/* - * HV_STATUS_SECTION_ALREADY_CONSTRUCTED - * The specified section was already constructed. - */ -#define HV_STATUS_SECTION_ALREADY_CONSTRUCTED ((u16)0x1020) - -/* HV_STATUS_SECTION_NOT_ALREADY_CONSTRUCTED - * The specified section was not already constructed. - */ -#define HV_STATUS_SECTION_NOT_ALREADY_CONSTRUCTED ((u16)0x1021) - -/* - * HV_STATUS_PAGE_ALREADY_COMMITTED - * The specified virtual address was already backed by physical memory. - */ -#define HV_STATUS_PAGE_ALREADY_COMMITTED ((u16)0x1022) - -/* - * HV_STATUS_PAGE_NOT_ALREADY_COMMITTED - * The specified virtual address was not already backed by physical memory. - */ -#define HV_STATUS_PAGE_NOT_ALREADY_COMMITTED ((u16)0x1023) - -/* - * HV_STATUS_COMMITTED_PAGES_REMAIN - * Committed pages remain in the section. - */ -#define HV_STATUS_COMMITTED_PAGES_REMAIN ((u16)0x1024) - -/* - * HV_STATUS_NO_REMAINING_COMMITTED_PAGES - * No additional committed pages beyond the specified page exist in the - * section. - */ -#define HV_STATUS_NO_REMAINING_COMMITTED_PAGES ((u16)0x1025) - -/* - * HV_STATUS_INSUFFICIENT_COMPARTMENT_VA - * The VA space of the compartment is exhausted. - */ -#define HV_STATUS_INSUFFICIENT_COMPARTMENT_VA ((u16)0x1026) - -/* - * HV_STATUS_DEREF_SPA_LIST_FULL - * The SPA dereference list is full, and there are additional entries to be - * added to it. - */ -#define HV_STATUS_DEREF_SPA_LIST_FULL ((u16)0x1027) - -/* - * HV_STATUS_GPA_OUT_OF_RANGE - * The supplied GPA is out of range. - */ -#define HV_STATUS_GPA_OUT_OF_RANGE ((u16)0x1027) - -/* - * HV_STATUS_NONVOLATILE_XMM_STALE - * The XMM register that was being accessed is stale. - */ -#define HV_STATUS_NONVOLATILE_XMM_STALE ((u16)0x1028) - -/* HV_STATUS_UNSUPPORTED_PROCESSOR - * The hypervisor does not support the processors in this system. - */ -#define HV_STATUS_UNSUPPORTED_PROCESSOR ((u16)0x1029) - -/* - * HV_STATUS_INSUFFICIENT_CROM_SPACE - * Insufficient space existed for copying over the CROM contents. - */ -#define HV_STATUS_INSUFFICIENT_CROM_SPACE ((u16)0x2000) - -/* - * HV_STATUS_BAD_CROM_FORMAT - * The contents of the CROM failed validation attempts. - */ -#define HV_STATUS_BAD_CROM_FORMAT ((u16)0x2001) - -/* - * HV_STATUS_UNSUPPORTED_CROM_FORMAT - * The contents of the CROM contain contents the parser doesn't support. - */ -#define HV_STATUS_UNSUPPORTED_CROM_FORMAT ((u16)0x2002) - -/* - * HV_STATUS_UNSUPPORTED_CONTROLLER - * The register format of the OHCI controller specified for debugging is not - * supported. - */ -#define HV_STATUS_UNSUPPORTED_CONTROLLER ((u16)0x2003) - -/* - * HV_STATUS_CROM_TOO_LARGE - * The CROM contents were to large to copy over. - */ -#define HV_STATUS_CROM_TOO_LARGE ((u16)0x2004) - -/* - * HV_STATUS_CONTROLLER_IN_USE - * The OHCI controller specified for debugging cannot be used as it is already - * in use. - */ -#define HV_STATUS_CONTROLLER_IN_USE ((u16)0x2005) - - /* * The below CPUID leaves are present if VersionAndFeatures.HypervisorPresent * is set by CPUID(HVCPUID_VERSION_FEATURES). @@ -527,38 +42,9 @@ enum hv_cpuid_function { HVCPUID_IMPLEMENTATION_LIMITS = 0x40000005, }; -/* Define the virtual APIC registers */ -#define HV_X64_MSR_EOI (0x40000070) -#define HV_X64_MSR_ICR (0x40000071) -#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) -#define HV_X64_MSR_SIMP (0x40000083) -#define HV_X64_MSR_EOM (0x40000084) -#define HV_X64_MSR_SINT0 (0x40000090) -#define HV_X64_MSR_SINT1 (0x40000091) -#define HV_X64_MSR_SINT2 (0x40000092) -#define HV_X64_MSR_SINT3 (0x40000093) -#define HV_X64_MSR_SINT4 (0x40000094) -#define HV_X64_MSR_SINT5 (0x40000095) -#define HV_X64_MSR_SINT6 (0x40000096) -#define HV_X64_MSR_SINT7 (0x40000097) -#define HV_X64_MSR_SINT8 (0x40000098) -#define HV_X64_MSR_SINT9 (0x40000099) -#define HV_X64_MSR_SINT10 (0x4000009A) -#define HV_X64_MSR_SINT11 (0x4000009B) -#define HV_X64_MSR_SINT12 (0x4000009C) -#define HV_X64_MSR_SINT13 (0x4000009D) -#define HV_X64_MSR_SINT14 (0x4000009E) -#define HV_X64_MSR_SINT15 (0x4000009F) - /* Define the expected SynIC version. */ #define HV_SYNIC_VERSION_1 (0x1) diff --git a/drivers/staging/hv/hyperv.h b/drivers/staging/hv/hyperv.h index 630b8528f472..56af1ecbf0e5 100644 --- a/drivers/staging/hv/hyperv.h +++ b/drivers/staging/hv/hyperv.h @@ -25,6 +25,16 @@ #ifndef _HYPERV_H #define _HYPERV_H +#include +#include +#include +#include +#include +#include + + +#include + struct hv_guid { unsigned char data[16]; }; @@ -319,12 +329,6 @@ enum vmbus_packet_type { #define VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED 1 -#include -#include -#include -#include -#include "hyperv.h" - /* Version 1 messages */ enum vmbus_channel_message_type { CHANNELMSG_INVALID = 0, @@ -759,9 +763,6 @@ extern unsigned int vmbus_loglevel; -#include -#include - struct hv_driver; struct hv_device; @@ -822,8 +823,6 @@ struct hv_device { void *ext; }; -#include - static inline struct hv_device *device_to_hv_device(struct device *d) {