Skip to content

Commit

Permalink
Staging: hv: osd: remove physical address wrapper functions
Browse files Browse the repository at this point in the history
Use the real functions the kernel provides, so that people can see what
is actually going on in the code easier.

Cc: Bill Pemberton <wfp5p@virginia.edu>
Cc: Hank Janssen <hjanssen@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Greg Kroah-Hartman committed Sep 15, 2009
1 parent 4a66384 commit fa56d36
Show file tree
Hide file tree
Showing 7 changed files with 23 additions and 49 deletions.
2 changes: 1 addition & 1 deletion drivers/staging/hv/Channel.c
Original file line number Diff line number Diff line change
Expand Up @@ -416,7 +416,7 @@ VmbusChannelCreateGpadlHeader(
ASSERT( (Size & (PAGE_SIZE-1)) == 0);

pageCount = Size >> PAGE_SHIFT;
pfn = GetPhysicalAddress(Kbuffer) >> PAGE_SHIFT;
pfn = virt_to_phys(Kbuffer) >> PAGE_SHIFT;

/* do we need a gpadl body msg */
pfnSize = MAX_SIZE_CHANNEL_MESSAGE - sizeof(VMBUS_CHANNEL_GPADL_HEADER) - sizeof(GPA_RANGE);
Expand Down
6 changes: 3 additions & 3 deletions drivers/staging/hv/Connection.c
Original file line number Diff line number Diff line change
Expand Up @@ -110,9 +110,9 @@ VmbusConnect(void)

msg->Header.MessageType = ChannelMessageInitiateContact;
msg->VMBusVersionRequested = VMBUS_REVISION_NUMBER;
msg->InterruptPage = GetPhysicalAddress(gVmbusConnection.InterruptPage);
msg->MonitorPage1 = GetPhysicalAddress(gVmbusConnection.MonitorPages);
msg->MonitorPage2 = GetPhysicalAddress((void *)((unsigned long)gVmbusConnection.MonitorPages + PAGE_SIZE));
msg->InterruptPage = virt_to_phys(gVmbusConnection.InterruptPage);
msg->MonitorPage1 = virt_to_phys(gVmbusConnection.MonitorPages);
msg->MonitorPage2 = virt_to_phys((void *)((unsigned long)gVmbusConnection.MonitorPages + PAGE_SIZE));

/*
* Add to list before we send the request since we may
Expand Down
21 changes: 11 additions & 10 deletions drivers/staging/hv/Hv.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
*/

#include <linux/vmalloc.h>
#include <asm/io.h>
#include "include/logging.h"
#include "VmbusPrivate.h"

Expand Down Expand Up @@ -166,8 +167,8 @@ HvDoHypercall (
{
#ifdef CONFIG_X86_64
u64 hvStatus=0;
u64 inputAddress = (Input)? GetPhysicalAddress(Input) : 0;
u64 outputAddress = (Output)? GetPhysicalAddress(Output) : 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>",
Expand All @@ -191,10 +192,10 @@ HvDoHypercall (
u32 controlLo = Control & 0xFFFFFFFF;
u32 hvStatusHi = 1;
u32 hvStatusLo = 1;
u64 inputAddress = (Input) ? GetPhysicalAddress(Input) : 0;
u64 inputAddress = (Input) ? virt_to_phys(Input) : 0;
u32 inputAddressHi = inputAddress >> 32;
u32 inputAddressLo = inputAddress & 0xFFFFFFFF;
u64 outputAddress = (Output) ?GetPhysicalAddress(Output) : 0;
u64 outputAddress = (Output) ? virt_to_phys(Output) : 0;
u32 outputAddressHi = outputAddress >> 32;
u32 outputAddressLo = outputAddress & 0xFFFFFFFF;
volatile void* hypercallPage = gHvContext.HypercallPage;
Expand Down Expand Up @@ -276,8 +277,8 @@ HvInit (
}

hypercallMsr.Enable = 1;
/* hypercallMsr.GuestPhysicalAddress = Logical2PhysicalAddr(virtAddr) >> PAGE_SHIFT; */
hypercallMsr.GuestPhysicalAddress = Virtual2Physical(virtAddr) >> PAGE_SHIFT;
/* hypercallMsr.GuestPhysicalAddress = virt_to_phys(virtAddr) >> PAGE_SHIFT; */
hypercallMsr.GuestPhysicalAddress = vmalloc_to_pfn(virtAddr);
WriteMsr(HV_X64_MSR_HYPERCALL, hypercallMsr.AsUINT64);

/* Confirm that hypercall page did get setup. */
Expand Down Expand Up @@ -507,8 +508,8 @@ HvSynicInit (

if (guestID == HV_LINUX_GUEST_ID)
{
gHvContext.synICMessagePage[0] = GetVirtualAddress(simp.BaseSimpGpa << PAGE_SHIFT);
gHvContext.synICEventPage[0] = GetVirtualAddress(siefp.BaseSiefpGpa << PAGE_SHIFT);
gHvContext.synICMessagePage[0] = phys_to_virt(simp.BaseSimpGpa << PAGE_SHIFT);
gHvContext.synICEventPage[0] = phys_to_virt(siefp.BaseSiefpGpa << PAGE_SHIFT);
}
else
{
Expand Down Expand Up @@ -536,7 +537,7 @@ HvSynicInit (
/* Setup the Synic's message page */
simp.AsUINT64 = ReadMsr(HV_X64_MSR_SIMP);
simp.SimpEnabled = 1;
simp.BaseSimpGpa = GetPhysicalAddress(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);

Expand All @@ -545,7 +546,7 @@ HvSynicInit (
/* Setup the Synic's event page */
siefp.AsUINT64 = ReadMsr(HV_X64_MSR_SIEFP);
siefp.SiefpEnabled = 1;
siefp.BaseSiefpGpa = GetPhysicalAddress(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);

Expand Down
7 changes: 4 additions & 3 deletions drivers/staging/hv/NetVsc.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#include <linux/kernel.h>
#include <linux/mm.h>
#include <linux/delay.h>
#include <asm/io.h>
#include "include/logging.h"
#include "NetVsc.h"
#include "RndisFilter.h"
Expand Down Expand Up @@ -1241,13 +1242,13 @@ NetVscOnReceive(

netvscPacket->PageBuffers[0].Length = vmxferpagePacket->Ranges[i].ByteCount;

start = GetPhysicalAddress((void*)((unsigned long)netDevice->ReceiveBuffer + vmxferpagePacket->Ranges[i].ByteOffset));
start = virt_to_phys((void*)((unsigned long)netDevice->ReceiveBuffer + vmxferpagePacket->Ranges[i].ByteOffset));

netvscPacket->PageBuffers[0].Pfn = start >> PAGE_SHIFT;
endVirtual = (unsigned long)netDevice->ReceiveBuffer
+ vmxferpagePacket->Ranges[i].ByteOffset
+ vmxferpagePacket->Ranges[i].ByteCount -1;
end = GetPhysicalAddress((void*)endVirtual);
end = virt_to_phys((void*)endVirtual);

/* Calculate the page relative offset */
netvscPacket->PageBuffers[0].Offset = vmxferpagePacket->Ranges[i].ByteOffset & (PAGE_SIZE -1);
Expand All @@ -1266,7 +1267,7 @@ NetVscOnReceive(
bytesRemain -= PAGE_SIZE;
}
netvscPacket->PageBuffers[j].Pfn =
GetPhysicalAddress((void*)(endVirtual - bytesRemain)) >> PAGE_SHIFT;
virt_to_phys((void*)(endVirtual - bytesRemain)) >> PAGE_SHIFT;
netvscPacket->PageBufferCount++;
if (bytesRemain == 0)
break;
Expand Down
5 changes: 3 additions & 2 deletions drivers/staging/hv/RndisFilter.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
#include <linux/kernel.h>
#include <linux/highmem.h>
#include <asm/kmap_types.h>
#include <asm/io.h>

#include "include/logging.h"

Expand Down Expand Up @@ -358,7 +359,7 @@ RndisFilterSendRequest(
packet->TotalDataBufferLength = Request->RequestMessage.MessageLength;
packet->PageBufferCount = 1;

packet->PageBuffers[0].Pfn = GetPhysicalAddress(&Request->RequestMessage) >> PAGE_SHIFT;
packet->PageBuffers[0].Pfn = virt_to_phys(&Request->RequestMessage) >> PAGE_SHIFT;
packet->PageBuffers[0].Length = Request->RequestMessage.MessageLength;
packet->PageBuffers[0].Offset = (unsigned long)&Request->RequestMessage & (PAGE_SIZE -1);

Expand Down Expand Up @@ -1110,7 +1111,7 @@ RndisFilterOnSend(
rndisPacket->DataLength = Packet->TotalDataBufferLength;

Packet->IsDataPacket = true;
Packet->PageBuffers[0].Pfn = GetPhysicalAddress(rndisMessage) >> PAGE_SHIFT;
Packet->PageBuffers[0].Pfn = virt_to_phys(rndisMessage) >> PAGE_SHIFT;
Packet->PageBuffers[0].Offset = (unsigned long)rndisMessage & (PAGE_SIZE-1);
Packet->PageBuffers[0].Length = rndisMessageSize;

Expand Down
8 changes: 0 additions & 8 deletions drivers/staging/hv/include/osd.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,14 +89,6 @@ extern int WaitEventWait(struct osd_waitevent *waitEvent);
extern int WaitEventWaitEx(struct osd_waitevent *waitEvent, u32 TimeoutInMs);


#define GetVirtualAddress Physical2LogicalAddr
void* Physical2LogicalAddr(unsigned long PhysAddr);

#define GetPhysicalAddress Logical2PhysicalAddr
unsigned long Logical2PhysicalAddr(void * LogicalAddr);

unsigned long Virtual2Physical(void * VirtAddr);

int osd_schedule_callback(struct workqueue_struct *wq,
void (*func)(void *),
void *data);
Expand Down
23 changes: 1 addition & 22 deletions drivers/staging/hv/osd.c
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ void PageFree(void* page, unsigned int count)

void *MemMapIO(unsigned long phys, unsigned long size)
{
return (void*)GetVirtualAddress(phys); /* return ioremap_nocache(phys, size); */
return (void*)phys_to_virt(phys); /* return ioremap_nocache(phys, size); */
}

void MemUnmapIO(void *virt)
Expand Down Expand Up @@ -180,27 +180,6 @@ int WaitEventWaitEx(struct osd_waitevent *waitEvent, u32 TimeoutInMs)
return ret;
}

void* Physical2LogicalAddr(unsigned long PhysAddr)
{
void* logicalAddr = phys_to_virt(PhysAddr);
BUG_ON(!virt_addr_valid(logicalAddr));
return logicalAddr;
}

unsigned long Logical2PhysicalAddr(void * LogicalAddr)
{
BUG_ON(!virt_addr_valid(LogicalAddr));
return virt_to_phys(LogicalAddr);
}


unsigned long Virtual2Physical(void * VirtAddr)
{
unsigned long pfn = vmalloc_to_pfn(VirtAddr);

return pfn << PAGE_SHIFT;
}

static void osd_callback_work(struct work_struct *work)
{
struct osd_callback_struct *cb = container_of(work,
Expand Down

0 comments on commit fa56d36

Please sign in to comment.