diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2009-08-31 20:23:33 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-09-15 12:02:01 -0700 |
commit | 0831ad041fd3611b31c10b46b9716b3c6289f1a1 (patch) | |
tree | 78b27af5d6e3bda08b83eb96f9724a1142cf5a43 /drivers/staging/hv | |
parent | b3bfb3cecfef142a0caf49fbb85a1d5a056f5c16 (diff) |
Staging: hv: fix coding style issues in Hv.c
Lots of cleanups.
Note, the use of volatile still needs to be resolved, and
possibly the #ifdef could be done a bit "better".
Cc: Hank Janssen <hjanssen@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/hv')
-rw-r--r-- | drivers/staging/hv/Hv.c | 564 |
1 files changed, 243 insertions, 321 deletions
diff --git a/drivers/staging/hv/Hv.c b/drivers/staging/hv/Hv.c index b61b35c39d9..c5b6613f2f2 100644 --- a/drivers/staging/hv/Hv.c +++ b/drivers/staging/hv/Hv.c @@ -1,5 +1,4 @@ /* - * * Copyright (c) 2009, Microsoft Corporation. * * This program is free software; you can redistribute it and/or modify it @@ -20,7 +19,6 @@ * Hank Janssen <hjanssen@microsoft.com> * */ - #include <linux/kernel.h> #include <linux/mm.h> #include <linux/vmalloc.h> @@ -28,8 +26,6 @@ #include "logging.h" #include "VmbusPrivate.h" -/* Globals */ - /* The one and only */ struct hv_context gHvContext = { .SynICInitialized = false, @@ -38,198 +34,160 @@ struct hv_context gHvContext = { .SignalEventBuffer = NULL, }; - -/*++ - -Name: - HvQueryHypervisorPresence() - -Description: - Query the cpuid for presense of windows hypervisor - ---*/ -static int -HvQueryHypervisorPresence ( - void - ) +/** + * HvQueryHypervisorPresence - Query the cpuid for presense of windows hypervisor + */ +static int HvQueryHypervisorPresence(void) { - unsigned int eax; - unsigned int ebx; - unsigned int ecx; - unsigned int edx; - unsigned int op; - - eax = 0; - ebx = 0; - ecx = 0; - edx = 0; - op = HvCpuIdFunctionVersionAndFeatures; - cpuid(op, &eax, &ebx, &ecx, &edx); - - return (ecx & HV_PRESENT_BIT); -} - - -/*++ + unsigned int eax; + unsigned int ebx; + unsigned int ecx; + unsigned int edx; + unsigned int op; -Name: - HvQueryHypervisorInfo() - -Description: - Get version info of the windows hypervisor - ---*/ -static int -HvQueryHypervisorInfo ( - void - ) -{ - unsigned int eax; - unsigned int ebx; - unsigned int ecx; - unsigned int edx; - unsigned int maxLeaf; - unsigned int op; - - /* - * Its assumed that this is called after confirming that Viridian - * is present. Query id and revision. - */ - - - eax = 0; - ebx = 0; - ecx = 0; - edx = 0; - op = HvCpuIdFunctionHvVendorAndMaxFunction; - cpuid(op, &eax, &ebx, &ecx, &edx); - - DPRINT_INFO(VMBUS, "Vendor ID: %c%c%c%c%c%c%c%c%c%c%c%c", - (ebx & 0xFF), - ((ebx >> 8) & 0xFF), - ((ebx >> 16) & 0xFF), - ((ebx >> 24) & 0xFF), - (ecx & 0xFF), - ((ecx >> 8) & 0xFF), - ((ecx >> 16) & 0xFF), - ((ecx >> 24) & 0xFF), - (edx & 0xFF), - ((edx >> 8) & 0xFF), - ((edx >> 16) & 0xFF), - ((edx >> 24) & 0xFF)); - - maxLeaf = eax; - eax = 0; - ebx = 0; - ecx = 0; - edx = 0; - op = HvCpuIdFunctionHvInterface; - cpuid(op, &eax, &ebx, &ecx, &edx); - - DPRINT_INFO(VMBUS, "Interface ID: %c%c%c%c", - (eax & 0xFF), - ((eax >> 8) & 0xFF), - ((eax >> 16) & 0xFF), - ((eax >> 24) & 0xFF)); - - if (maxLeaf >= HvCpuIdFunctionMsHvVersion) { eax = 0; ebx = 0; ecx = 0; edx = 0; - op = HvCpuIdFunctionMsHvVersion; + op = HvCpuIdFunctionVersionAndFeatures; cpuid(op, &eax, &ebx, &ecx, &edx); - DPRINT_INFO(VMBUS, "OS Build:%d-%d.%d-%d-%d.%d", - eax, - ebx >> 16, - ebx & 0xFFFF, - ecx, - edx >> 24, - edx & 0xFFFFFF); - } - return maxLeaf; + + return ecx & HV_PRESENT_BIT; } +/** + * HvQueryHypervisorInfo - Get version info of the windows hypervisor + */ +static int HvQueryHypervisorInfo(void) +{ + unsigned int eax; + unsigned int ebx; + unsigned int ecx; + unsigned int edx; + unsigned int maxLeaf; + unsigned int op; -/*++ + /* + * Its assumed that this is called after confirming that Viridian + * is present. Query id and revision. + */ + eax = 0; + ebx = 0; + ecx = 0; + edx = 0; + op = HvCpuIdFunctionHvVendorAndMaxFunction; + cpuid(op, &eax, &ebx, &ecx, &edx); -Name: - HvDoHypercall() + DPRINT_INFO(VMBUS, "Vendor ID: %c%c%c%c%c%c%c%c%c%c%c%c", + (ebx & 0xFF), + ((ebx >> 8) & 0xFF), + ((ebx >> 16) & 0xFF), + ((ebx >> 24) & 0xFF), + (ecx & 0xFF), + ((ecx >> 8) & 0xFF), + ((ecx >> 16) & 0xFF), + ((ecx >> 24) & 0xFF), + (edx & 0xFF), + ((edx >> 8) & 0xFF), + ((edx >> 16) & 0xFF), + ((edx >> 24) & 0xFF)); + + maxLeaf = eax; + eax = 0; + ebx = 0; + ecx = 0; + edx = 0; + op = HvCpuIdFunctionHvInterface; + cpuid(op, &eax, &ebx, &ecx, &edx); -Description: - Invoke the specified hypercall + DPRINT_INFO(VMBUS, "Interface ID: %c%c%c%c", + (eax & 0xFF), + ((eax >> 8) & 0xFF), + ((eax >> 16) & 0xFF), + ((eax >> 24) & 0xFF)); + + if (maxLeaf >= HvCpuIdFunctionMsHvVersion) { + eax = 0; + ebx = 0; + ecx = 0; + edx = 0; + op = HvCpuIdFunctionMsHvVersion; + cpuid(op, &eax, &ebx, &ecx, &edx); + DPRINT_INFO(VMBUS, "OS Build:%d-%d.%d-%d-%d.%d",\ + eax, + ebx >> 16, + ebx & 0xFFFF, + ecx, + edx >> 24, + edx & 0xFFFFFF); + } + return maxLeaf; +} ---*/ -static u64 -HvDoHypercall ( - u64 Control, - void* Input, - void* Output - ) +/** + * HvDoHypercall - Invoke the specified hypercall + */ +static u64 HvDoHypercall(u64 Control, void *Input, void *Output) { #ifdef CONFIG_X86_64 - u64 hvStatus=0; - u64 inputAddress = (Input)? virt_to_phys(Input) : 0; - u64 outputAddress = (Output)? virt_to_phys(Output) : 0; - volatile void* hypercallPage = gHvContext.HypercallPage; + u64 hvStatus = 0; + u64 inputAddress = (Input) ? virt_to_phys(Input) : 0; + u64 outputAddress = (Output) ? virt_to_phys(Output) : 0; + volatile void *hypercallPage = gHvContext.HypercallPage; - DPRINT_DBG(VMBUS, "Hypercall <control %llx input phys %llx virt %p output phys %llx virt %p hypercall %p>", - Control, - inputAddress, - Input, - outputAddress, - Output, - hypercallPage); + DPRINT_DBG(VMBUS, "Hypercall <control %llx input phys %llx virt %p " + "output phys %llx virt %p hypercall %p>", + Control, inputAddress, Input, + outputAddress, Output, hypercallPage); - __asm__ __volatile__ ("mov %0, %%r8" : : "r" (outputAddress): "r8"); - __asm__ __volatile__ ("call *%3" : "=a"(hvStatus): "c" (Control), "d" (inputAddress), "m" (hypercallPage)); + __asm__ __volatile__("mov %0, %%r8" : : "r" (outputAddress) : "r8"); + __asm__ __volatile__("call *%3" : "=a" (hvStatus) : + "c" (Control), "d" (inputAddress), + "m" (hypercallPage)); - DPRINT_DBG(VMBUS, "Hypercall <return %llx>", hvStatus); + DPRINT_DBG(VMBUS, "Hypercall <return %llx>", hvStatus); - return hvStatus; + return hvStatus; #else - u32 controlHi = Control >> 32; - u32 controlLo = Control & 0xFFFFFFFF; - u32 hvStatusHi = 1; - u32 hvStatusLo = 1; - u64 inputAddress = (Input) ? virt_to_phys(Input) : 0; - u32 inputAddressHi = inputAddress >> 32; - u32 inputAddressLo = inputAddress & 0xFFFFFFFF; + u32 controlHi = Control >> 32; + u32 controlLo = Control & 0xFFFFFFFF; + u32 hvStatusHi = 1; + u32 hvStatusLo = 1; + u64 inputAddress = (Input) ? virt_to_phys(Input) : 0; + u32 inputAddressHi = inputAddress >> 32; + u32 inputAddressLo = inputAddress & 0xFFFFFFFF; u64 outputAddress = (Output) ? virt_to_phys(Output) : 0; - u32 outputAddressHi = outputAddress >> 32; - u32 outputAddressLo = outputAddress & 0xFFFFFFFF; - volatile void* hypercallPage = gHvContext.HypercallPage; - - DPRINT_DBG(VMBUS, "Hypercall <control %llx input %p output %p>", - Control, - Input, - Output); + u32 outputAddressHi = outputAddress >> 32; + u32 outputAddressLo = outputAddress & 0xFFFFFFFF; + volatile void *hypercallPage = gHvContext.HypercallPage; - __asm__ __volatile__ ("call *%8" : "=d"(hvStatusHi), "=a"(hvStatusLo) : "d" (controlHi), "a" (controlLo), "b" (inputAddressHi), "c" (inputAddressLo), "D"(outputAddressHi), "S"(outputAddressLo), "m" (hypercallPage)); + DPRINT_DBG(VMBUS, "Hypercall <control %llx input %p output %p>", + Control, Input, Output); + __asm__ __volatile__ ("call *%8" : "=d"(hvStatusHi), + "=a"(hvStatusLo) : "d" (controlHi), + "a" (controlLo), "b" (inputAddressHi), + "c" (inputAddressLo), "D"(outputAddressHi), + "S"(outputAddressLo), "m" (hypercallPage)); - DPRINT_DBG(VMBUS, "Hypercall <return %llx>", hvStatusLo | ((u64)hvStatusHi << 32)); + DPRINT_DBG(VMBUS, "Hypercall <return %llx>", + hvStatusLo | ((u64)hvStatusHi << 32)); - return (hvStatusLo | ((u64)hvStatusHi << 32)); -#endif /* x86_64 */ + return hvStatusLo | ((u64)hvStatusHi << 32); +#endif /* !x86_64 */ } -/*++ - -Name: - HvInit() - -Description: - Main initialization routine. This routine must be called - before any other routines in here are called - ---*/ -int HvInit (void) +/** + * HvInit - Main initialization routine. + * + * This routine must be called before any other routines in here are called + */ +int HvInit(void) { - int ret=0; - int maxLeaf; + int ret = 0; + int maxLeaf; union hv_x64_msr_hypercall_contents hypercallMsr; void *virtAddr = NULL; @@ -238,60 +196,59 @@ int HvInit (void) memset(gHvContext.synICEventPage, 0, sizeof(void *) * MAX_NUM_CPUS); memset(gHvContext.synICMessagePage, 0, sizeof(void *) * MAX_NUM_CPUS); - if (!HvQueryHypervisorPresence()) - { + if (!HvQueryHypervisorPresence()) { DPRINT_ERR(VMBUS, "No Windows hypervisor detected!!"); goto Cleanup; } - DPRINT_INFO(VMBUS, "Windows hypervisor detected! Retrieving more info..."); + DPRINT_INFO(VMBUS, + "Windows hypervisor detected! Retrieving more info..."); - maxLeaf = HvQueryHypervisorInfo(); - /* HvQueryHypervisorFeatures(maxLeaf); */ + maxLeaf = HvQueryHypervisorInfo(); + /* HvQueryHypervisorFeatures(maxLeaf); */ - /* Determine if we are running on xenlinux (ie x2v shim) or native linux */ + /* + * Determine if we are running on xenlinux (ie x2v shim) or native + * linux + */ rdmsrl(HV_X64_MSR_GUEST_OS_ID, gHvContext.GuestId); - if (gHvContext.GuestId == 0) - { + if (gHvContext.GuestId == 0) { /* Write our OS info */ wrmsrl(HV_X64_MSR_GUEST_OS_ID, HV_LINUX_GUEST_ID); - gHvContext.GuestId = HV_LINUX_GUEST_ID; } /* See if the hypercall page is already set */ rdmsrl(HV_X64_MSR_HYPERCALL, hypercallMsr.AsUINT64); - if (gHvContext.GuestId == HV_LINUX_GUEST_ID) - { + if (gHvContext.GuestId == HV_LINUX_GUEST_ID) { /* Allocate the hypercall page memory */ /* virtAddr = osd_PageAlloc(1); */ virtAddr = osd_VirtualAllocExec(PAGE_SIZE); - if (!virtAddr) - { - DPRINT_ERR(VMBUS, "unable to allocate hypercall page!!"); + if (!virtAddr) { + DPRINT_ERR(VMBUS, + "unable to allocate hypercall page!!"); goto Cleanup; } hypercallMsr.Enable = 1; - /* hypercallMsr.GuestPhysicalAddress = virt_to_phys(virtAddr) >> PAGE_SHIFT; */ + /* hypercallMsr.GuestPhysicalAddress = + * virt_to_phys(virtAddr) >> PAGE_SHIFT; */ hypercallMsr.GuestPhysicalAddress = vmalloc_to_pfn(virtAddr); wrmsrl(HV_X64_MSR_HYPERCALL, hypercallMsr.AsUINT64); - /* Confirm that hypercall page did get setup. */ + /* Confirm that hypercall page did get setup. */ hypercallMsr.AsUINT64 = 0; rdmsrl(HV_X64_MSR_HYPERCALL, hypercallMsr.AsUINT64); - if (!hypercallMsr.Enable) - { + if (!hypercallMsr.Enable) { DPRINT_ERR(VMBUS, "unable to set hypercall page!!"); goto Cleanup; } gHvContext.HypercallPage = virtAddr; - } - else - { - DPRINT_ERR(VMBUS, "Unknown guest id (0x%llx)!!", gHvContext.GuestId); + } else { + DPRINT_ERR(VMBUS, "Unknown guest id (0x%llx)!!", + gHvContext.GuestId); goto Cleanup; } @@ -300,29 +257,31 @@ int HvInit (void) (u64)hypercallMsr.GuestPhysicalAddress << PAGE_SHIFT); /* Setup the global signal event param for the signal event hypercall */ - gHvContext.SignalEventBuffer = kmalloc(sizeof(struct hv_input_signal_event_buffer), GFP_KERNEL); + gHvContext.SignalEventBuffer = + kmalloc(sizeof(struct hv_input_signal_event_buffer), + GFP_KERNEL); if (!gHvContext.SignalEventBuffer) - { goto Cleanup; - } - gHvContext.SignalEventParam = (struct hv_input_signal_event *)(ALIGN_UP((unsigned long)gHvContext.SignalEventBuffer, HV_HYPERCALL_PARAM_ALIGN)); + gHvContext.SignalEventParam = + (struct hv_input_signal_event *) + (ALIGN_UP((unsigned long)gHvContext.SignalEventBuffer, + HV_HYPERCALL_PARAM_ALIGN)); gHvContext.SignalEventParam->ConnectionId.Asu32 = 0; - gHvContext.SignalEventParam->ConnectionId.u.Id = VMBUS_EVENT_CONNECTION_ID; + gHvContext.SignalEventParam->ConnectionId.u.Id = + VMBUS_EVENT_CONNECTION_ID; gHvContext.SignalEventParam->FlagNumber = 0; gHvContext.SignalEventParam->RsvdZ = 0; - /* DPRINT_DBG(VMBUS, "My id %llu", HvGetCurrentPartitionId()); */ + /* DPRINT_DBG(VMBUS, "My id %llu", HvGetCurrentPartitionId()); */ DPRINT_EXIT(VMBUS); - return ret; + return ret; Cleanup: - if (virtAddr) - { - if (hypercallMsr.Enable) - { + if (virtAddr) { + if (hypercallMsr.Enable) { hypercallMsr.AsUINT64 = 0; wrmsrl(HV_X64_MSR_HYPERCALL, hypercallMsr.AsUINT64); } @@ -335,33 +294,25 @@ Cleanup: return ret; } - -/*++ - -Name: - HvCleanup() - -Description: - Cleanup routine. This routine is called normally during driver unloading or exiting. - ---*/ -void HvCleanup (void) +/** + * HvCleanup - Cleanup routine. + * + * This routine is called normally during driver unloading or exiting. + */ +void HvCleanup(void) { union hv_x64_msr_hypercall_contents hypercallMsr; DPRINT_ENTER(VMBUS); - if (gHvContext.SignalEventBuffer) - { - kfree(gHvContext.SignalEventBuffer); + if (gHvContext.SignalEventBuffer) { gHvContext.SignalEventBuffer = NULL; gHvContext.SignalEventParam = NULL; + kfree(gHvContext.SignalEventBuffer); } - if (gHvContext.GuestId == HV_LINUX_GUEST_ID) - { - if (gHvContext.HypercallPage) - { + if (gHvContext.GuestId == HV_LINUX_GUEST_ID) { + if (gHvContext.HypercallPage) { hypercallMsr.AsUINT64 = 0; wrmsrl(HV_X64_MSR_HYPERCALL, hypercallMsr.AsUINT64); vfree(gHvContext.HypercallPage); @@ -373,23 +324,17 @@ void HvCleanup (void) } - -/*++ - -Name: - HvPostMessage() - -Description: - Post a message using the hypervisor message IPC. This - involves a hypercall. - ---*/ +/** + * HvPostMessage - Post a message using the hypervisor message IPC. + * + * This involves a hypercall. + */ u16 HvPostMessage(union hv_connection_id connectionId, enum hv_message_type messageType, void *payload, size_t payloadSize) { struct alignedInput { - u64 alignment8; + u64 alignment8; struct hv_input_post_message msg; }; @@ -398,77 +343,62 @@ u16 HvPostMessage(union hv_connection_id connectionId, unsigned long addr; if (payloadSize > HV_MESSAGE_PAYLOAD_BYTE_COUNT) - { return -1; - } addr = (unsigned long)kmalloc(sizeof(struct alignedInput), GFP_ATOMIC); - if (!addr) - { return -1; - } - alignedMsg = (struct hv_input_post_message *)(ALIGN_UP(addr, HV_HYPERCALL_PARAM_ALIGN)); + alignedMsg = (struct hv_input_post_message *) + (ALIGN_UP(addr, HV_HYPERCALL_PARAM_ALIGN)); alignedMsg->ConnectionId = connectionId; alignedMsg->MessageType = messageType; alignedMsg->PayloadSize = payloadSize; - memcpy((void*)alignedMsg->Payload, payload, payloadSize); + memcpy((void *)alignedMsg->Payload, payload, payloadSize); status = HvDoHypercall(HvCallPostMessage, alignedMsg, NULL) & 0xFFFF; - kfree((void*)addr); + kfree((void *)addr); return status; } -/*++ - -Name: - HvSignalEvent() - -Description: - Signal an event on the specified connection using the hypervisor event IPC. This - involves a hypercall. - ---*/ +/** + * HvSignalEvent - Signal an event on the specified connection using the hypervisor event IPC. + * + * This involves a hypercall. + */ u16 HvSignalEvent(void) { u16 status; - status = HvDoHypercall(HvCallSignalEvent, gHvContext.SignalEventParam, NULL) & 0xFFFF; - + status = HvDoHypercall(HvCallSignalEvent, gHvContext.SignalEventParam, + NULL) & 0xFFFF; return status; } - -/*++ - -Name: - HvSynicInit() - -Description: - Initialize the Synthethic Interrupt Controller. If it is already initialized by - another entity (ie x2v shim), we need to retrieve the initialized message and event pages. - Otherwise, we create and initialize the message and event pages. - ---*/ -int HvSynicInit (u32 irqVector) +/** + * HvSynicInit - Initialize the Synthethic Interrupt Controller. + * + * If it is already initialized by another entity (ie x2v shim), we need to + * retrieve the initialized message and event pages. Otherwise, we create and + * initialize the message and event pages. + */ +int HvSynicInit(u32 irqVector) { - u64 version; + u64 version; union hv_synic_simp simp; union hv_synic_siefp siefp; union hv_synic_sint sharedSint; union hv_synic_scontrol sctrl; - u64 guestID; - int ret=0; + u64 guestID; + int ret = 0; DPRINT_ENTER(VMBUS); - if (!gHvContext.HypercallPage) - { + if (!gHvContext.HypercallPage) { DPRINT_EXIT(VMBUS); return ret; } @@ -479,68 +409,76 @@ int HvSynicInit (u32 irqVector) DPRINT_INFO(VMBUS, "SynIC version: %llx", version); /* TODO: Handle SMP */ - if (gHvContext.GuestId == HV_XENLINUX_GUEST_ID) - { - DPRINT_INFO(VMBUS, "Skipping SIMP and SIEFP setup since it is already set."); + if (gHvContext.GuestId == HV_XENLINUX_GUEST_ID) { + DPRINT_INFO(VMBUS, "Skipping SIMP and SIEFP setup since " + "it is already set."); rdmsrl(HV_X64_MSR_SIMP, simp.AsUINT64); rdmsrl(HV_X64_MSR_SIEFP, siefp.AsUINT64); - DPRINT_DBG(VMBUS, "Simp: %llx, Sifep: %llx", simp.AsUINT64, siefp.AsUINT64); + DPRINT_DBG(VMBUS, "Simp: %llx, Sifep: %llx", + simp.AsUINT64, siefp.AsUINT64); - /* Determine if we are running on xenlinux (ie x2v shim) or native linux */ + /* + * Determine if we are running on xenlinux (ie x2v shim) or + * native linux + */ rdmsrl(HV_X64_MSR_GUEST_OS_ID, guestID); - if (guestID == HV_LINUX_GUEST_ID) - { - gHvContext.synICMessagePage[0] = phys_to_virt(simp.BaseSimpGpa << PAGE_SHIFT); - gHvContext.synICEventPage[0] = phys_to_virt(siefp.BaseSiefpGpa << PAGE_SHIFT); - } - else - { + if (guestID == HV_LINUX_GUEST_ID) { + gHvContext.synICMessagePage[0] = + phys_to_virt(simp.BaseSimpGpa << PAGE_SHIFT); + gHvContext.synICEventPage[0] = + phys_to_virt(siefp.BaseSiefpGpa << PAGE_SHIFT); + } else { DPRINT_ERR(VMBUS, "unknown guest id!!"); goto Cleanup; } - DPRINT_DBG(VMBUS, "MAPPED: Simp: %p, Sifep: %p", gHvContext.synICMessagePage[0], gHvContext.synICEventPage[0]); - } - else - { + DPRINT_DBG(VMBUS, "MAPPED: Simp: %p, Sifep: %p", + gHvContext.synICMessagePage[0], + gHvContext.synICEventPage[0]); + } else { gHvContext.synICMessagePage[0] = osd_PageAlloc(1); - if (gHvContext.synICMessagePage[0] == NULL) - { - DPRINT_ERR(VMBUS, "unable to allocate SYNIC message page!!"); + if (gHvContext.synICMessagePage[0] == NULL) { + DPRINT_ERR(VMBUS, + "unable to allocate SYNIC message page!!"); goto Cleanup; } gHvContext.synICEventPage[0] = osd_PageAlloc(1); - if (gHvContext.synICEventPage[0] == NULL) - { - DPRINT_ERR(VMBUS, "unable to allocate SYNIC event page!!"); + if (gHvContext.synICEventPage[0] == NULL) { + DPRINT_ERR(VMBUS, + "unable to allocate SYNIC event page!!"); goto Cleanup; } /* Setup the Synic's message page */ rdmsrl(HV_X64_MSR_SIMP, simp.AsUINT64); simp.SimpEnabled = 1; - simp.BaseSimpGpa = virt_to_phys(gHvContext.synICMessagePage[0]) >> PAGE_SHIFT; + simp.BaseSimpGpa = virt_to_phys(gHvContext.synICMessagePage[0]) + >> PAGE_SHIFT; - DPRINT_DBG(VMBUS, "HV_X64_MSR_SIMP msr set to: %llx", simp.AsUINT64); + DPRINT_DBG(VMBUS, "HV_X64_MSR_SIMP msr set to: %llx", + simp.AsUINT64); wrmsrl(HV_X64_MSR_SIMP, simp.AsUINT64); /* Setup the Synic's event page */ rdmsrl(HV_X64_MSR_SIEFP, siefp.AsUINT64); siefp.SiefpEnabled = 1; - siefp.BaseSiefpGpa = virt_to_phys(gHvContext.synICEventPage[0]) >> PAGE_SHIFT; + siefp.BaseSiefpGpa = virt_to_phys(gHvContext.synICEventPage[0]) + >> PAGE_SHIFT; - DPRINT_DBG(VMBUS, "HV_X64_MSR_SIEFP msr set to: %llx", siefp.AsUINT64); + DPRINT_DBG(VMBUS, "HV_X64_MSR_SIEFP msr set to: %llx", + siefp.AsUINT64); wrmsrl(HV_X64_MSR_SIEFP, siefp.AsUINT64); } - /* Setup the interception SINT. */ + + /* Setup the interception SINT. */ /* wrmsrl((HV_X64_MSR_SINT0 + HV_SYNIC_INTERCEPTION_SINT_INDEX), */ - /* interceptionSint.AsUINT64); */ + /* interceptionSint.AsUINT64); */ - /* Setup the shared SINT. */ + /* Setup the shared SINT. */ rdmsrl(HV_X64_MSR_SINT0 + VMBUS_MESSAGE_SINT, sharedSint.AsUINT64); sharedSint.AsUINT64 = 0; @@ -548,7 +486,8 @@ int HvSynicInit (u32 irqVector) sharedSint.Masked = false; sharedSint.AutoEoi = true; - DPRINT_DBG(VMBUS, "HV_X64_MSR_SINT1 msr set to: %llx", sharedSint.AsUINT64); + DPRINT_DBG(VMBUS, "HV_X64_MSR_SINT1 msr set to: %llx", + sharedSint.AsUINT64); wrmsrl(HV_X64_MSR_SINT0 + VMBUS_MESSAGE_SINT, sharedSint.AsUINT64); @@ -567,34 +506,22 @@ int HvSynicInit (u32 irqVector) Cleanup: ret = -1; - if (gHvContext.GuestId == HV_LINUX_GUEST_ID) - { + if (gHvContext.GuestId == HV_LINUX_GUEST_ID) { if (gHvContext.synICEventPage[0]) - { - osd_PageFree(gHvContext.synICEventPage[0],1); - } + osd_PageFree(gHvContext.synICEventPage[0], 1); if (gHvContext.synICMessagePage[0]) - { osd_PageFree(gHvContext.synICMessagePage[0], 1); - } } DPRINT_EXIT(VMBUS); return ret; - } -/*++ - -Name: - HvSynicCleanup() - -Description: - Cleanup routine for HvSynicInit(). - ---*/ +/** + * HvSynicCleanup - Cleanup routine for HvSynicInit(). + */ void HvSynicCleanup(void) { union hv_synic_sint sharedSint; @@ -603,8 +530,7 @@ void HvSynicCleanup(void) DPRINT_ENTER(VMBUS); - if (!gHvContext.SynICInitialized) - { + if (!gHvContext.SynICInitialized) { DPRINT_EXIT(VMBUS); return; } @@ -621,8 +547,7 @@ void HvSynicCleanup(void) * native linux since in xenlinux, we are sharing the * resources with the x2v shim */ - if (gHvContext.GuestId == HV_LINUX_GUEST_ID) - { + if (gHvContext.GuestId == HV_LINUX_GUEST_ID) { rdmsrl(HV_X64_MSR_SIMP, simp.AsUINT64); simp.SimpEnabled = 0; simp.BaseSimpGpa = 0; @@ -641,6 +566,3 @@ void HvSynicCleanup(void) DPRINT_EXIT(VMBUS); } - - -/* eof */ |