lkml.org 
[lkml]   [2021]   [Feb]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 02/10] x86/hyper-v: Move hv_message_type to architecture neutral module
    Date
    The definition of enum hv_message_type includes arch neutral and
    x86/x64-specific values. Ideally there would be a way to put the
    arch neutral values in an arch neutral module, and the arch
    specific values in an arch specific module. But C doesn't provide
    a way to extend enum types. As a compromise, move the entire
    definition into an arch neutral module, to avoid duplicating the
    arch neutral values for x86/x64 and for ARM64.

    No functional change.

    Signed-off-by: Michael Kelley <mikelley@microsoft.com>
    Reviewed-by: Boqun Feng <boqun.feng@gmail.com>
    ---
    arch/x86/include/asm/hyperv-tlfs.h | 29 -----------------------------
    include/asm-generic/hyperv-tlfs.h | 35 +++++++++++++++++++++++++++++++++++
    2 files changed, 35 insertions(+), 29 deletions(-)

    diff --git a/arch/x86/include/asm/hyperv-tlfs.h b/arch/x86/include/asm/hyperv-tlfs.h
    index e6cd3fe..68b38a2 100644
    --- a/arch/x86/include/asm/hyperv-tlfs.h
    +++ b/arch/x86/include/asm/hyperv-tlfs.h
    @@ -288,35 +288,6 @@ struct hv_tsc_emulation_status {
    #define HV_X64_MSR_TSC_REFERENCE_ENABLE 0x00000001
    #define HV_X64_MSR_TSC_REFERENCE_ADDRESS_SHIFT 12

    -
    -/* Define hypervisor message types. */
    -enum hv_message_type {
    - HVMSG_NONE = 0x00000000,
    -
    - /* Memory access messages. */
    - HVMSG_UNMAPPED_GPA = 0x80000000,
    - HVMSG_GPA_INTERCEPT = 0x80000001,
    -
    - /* Timer notification messages. */
    - HVMSG_TIMER_EXPIRED = 0x80000010,
    -
    - /* Error messages. */
    - HVMSG_INVALID_VP_REGISTER_VALUE = 0x80000020,
    - HVMSG_UNRECOVERABLE_EXCEPTION = 0x80000021,
    - HVMSG_UNSUPPORTED_FEATURE = 0x80000022,
    -
    - /* Trace buffer complete messages. */
    - HVMSG_EVENTLOG_BUFFERCOMPLETE = 0x80000040,
    -
    - /* Platform-specific processor intercept messages. */
    - HVMSG_X64_IOPORT_INTERCEPT = 0x80010000,
    - HVMSG_X64_MSR_INTERCEPT = 0x80010001,
    - HVMSG_X64_CPUID_INTERCEPT = 0x80010002,
    - HVMSG_X64_EXCEPTION_INTERCEPT = 0x80010003,
    - HVMSG_X64_APIC_EOI = 0x80010004,
    - HVMSG_X64_LEGACY_FP_ERROR = 0x80010005
    -};
    -
    struct hv_nested_enlightenments_control {
    struct {
    __u32 directhypercall:1;
    diff --git a/include/asm-generic/hyperv-tlfs.h b/include/asm-generic/hyperv-tlfs.h
    index 83448e8..9cf10837 100644
    --- a/include/asm-generic/hyperv-tlfs.h
    +++ b/include/asm-generic/hyperv-tlfs.h
    @@ -220,6 +220,41 @@ enum HV_GENERIC_SET_FORMAT {
    #define HV_MESSAGE_PAYLOAD_BYTE_COUNT (240)
    #define HV_MESSAGE_PAYLOAD_QWORD_COUNT (30)

    +/*
    + * Define hypervisor message types. Some of the message types
    + * are x86/x64 specific, but there's no good way to separate
    + * them out into the arch-specific version of hyperv-tlfs.h
    + * because C doesn't provide a way to extend enum types.
    + * Keeping them all in the arch neutral hyperv-tlfs.h seems
    + * the least messy compromise.
    + */
    +enum hv_message_type {
    + HVMSG_NONE = 0x00000000,
    +
    + /* Memory access messages. */
    + HVMSG_UNMAPPED_GPA = 0x80000000,
    + HVMSG_GPA_INTERCEPT = 0x80000001,
    +
    + /* Timer notification messages. */
    + HVMSG_TIMER_EXPIRED = 0x80000010,
    +
    + /* Error messages. */
    + HVMSG_INVALID_VP_REGISTER_VALUE = 0x80000020,
    + HVMSG_UNRECOVERABLE_EXCEPTION = 0x80000021,
    + HVMSG_UNSUPPORTED_FEATURE = 0x80000022,
    +
    + /* Trace buffer complete messages. */
    + HVMSG_EVENTLOG_BUFFERCOMPLETE = 0x80000040,
    +
    + /* Platform-specific processor intercept messages. */
    + HVMSG_X64_IOPORT_INTERCEPT = 0x80010000,
    + HVMSG_X64_MSR_INTERCEPT = 0x80010001,
    + HVMSG_X64_CPUID_INTERCEPT = 0x80010002,
    + HVMSG_X64_EXCEPTION_INTERCEPT = 0x80010003,
    + HVMSG_X64_APIC_EOI = 0x80010004,
    + HVMSG_X64_LEGACY_FP_ERROR = 0x80010005
    +};
    +
    /* Define synthetic interrupt controller message flags. */
    union hv_message_flags {
    __u8 asu8;
    --
    1.8.3.1
    \
     
     \ /
      Last update: 2021-03-01 02:19    [W:2.822 / U:0.244 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site