Commit 3103dc03 authored by Dan Williams's avatar Dan Williams

visorbus: switch from ioremap_cache to memremap

In preparation for deprecating ioremap_cache() convert its usage in
visorbus to memremap.

Cc: Benjamin Romer <benjamin.romer@unisys.com>
Cc: David Kershner <david.kershner@unisys.com>
Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
parent 92281dee
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
*/ */
#include <linux/uuid.h> #include <linux/uuid.h>
#include <linux/io.h>
#include "version.h" #include "version.h"
#include "visorbus.h" #include "visorbus.h"
...@@ -36,7 +37,7 @@ static const uuid_le spar_video_guid = SPAR_CONSOLEVIDEO_CHANNEL_PROTOCOL_GUID; ...@@ -36,7 +37,7 @@ static const uuid_le spar_video_guid = SPAR_CONSOLEVIDEO_CHANNEL_PROTOCOL_GUID;
struct visorchannel { struct visorchannel {
u64 physaddr; u64 physaddr;
ulong nbytes; ulong nbytes;
void __iomem *mapped; void *mapped;
bool requested; bool requested;
struct channel_header chan_hdr; struct channel_header chan_hdr;
uuid_le guid; uuid_le guid;
...@@ -93,7 +94,7 @@ visorchannel_create_guts(u64 physaddr, unsigned long channel_bytes, ...@@ -93,7 +94,7 @@ visorchannel_create_guts(u64 physaddr, unsigned long channel_bytes,
} }
} }
channel->mapped = ioremap_cache(physaddr, size); channel->mapped = memremap(physaddr, size, MEMREMAP_WB);
if (!channel->mapped) { if (!channel->mapped) {
release_mem_region(physaddr, size); release_mem_region(physaddr, size);
goto cleanup; goto cleanup;
...@@ -113,7 +114,7 @@ visorchannel_create_guts(u64 physaddr, unsigned long channel_bytes, ...@@ -113,7 +114,7 @@ visorchannel_create_guts(u64 physaddr, unsigned long channel_bytes,
if (uuid_le_cmp(guid, NULL_UUID_LE) == 0) if (uuid_le_cmp(guid, NULL_UUID_LE) == 0)
guid = channel->chan_hdr.chtype; guid = channel->chan_hdr.chtype;
iounmap(channel->mapped); memunmap(channel->mapped);
if (channel->requested) if (channel->requested)
release_mem_region(channel->physaddr, channel->nbytes); release_mem_region(channel->physaddr, channel->nbytes);
channel->mapped = NULL; channel->mapped = NULL;
...@@ -126,7 +127,8 @@ visorchannel_create_guts(u64 physaddr, unsigned long channel_bytes, ...@@ -126,7 +127,8 @@ visorchannel_create_guts(u64 physaddr, unsigned long channel_bytes,
} }
} }
channel->mapped = ioremap_cache(channel->physaddr, channel_bytes); channel->mapped = memremap(channel->physaddr, channel_bytes,
MEMREMAP_WB);
if (!channel->mapped) { if (!channel->mapped) {
release_mem_region(channel->physaddr, channel_bytes); release_mem_region(channel->physaddr, channel_bytes);
goto cleanup; goto cleanup;
...@@ -167,7 +169,7 @@ visorchannel_destroy(struct visorchannel *channel) ...@@ -167,7 +169,7 @@ visorchannel_destroy(struct visorchannel *channel)
if (!channel) if (!channel)
return; return;
if (channel->mapped) { if (channel->mapped) {
iounmap(channel->mapped); memunmap(channel->mapped);
if (channel->requested) if (channel->requested)
release_mem_region(channel->physaddr, channel->nbytes); release_mem_region(channel->physaddr, channel->nbytes);
} }
...@@ -241,7 +243,7 @@ visorchannel_read(struct visorchannel *channel, ulong offset, ...@@ -241,7 +243,7 @@ visorchannel_read(struct visorchannel *channel, ulong offset,
if (offset + nbytes > channel->nbytes) if (offset + nbytes > channel->nbytes)
return -EIO; return -EIO;
memcpy_fromio(local, channel->mapped + offset, nbytes); memcpy(local, channel->mapped + offset, nbytes);
return 0; return 0;
} }
...@@ -262,7 +264,7 @@ visorchannel_write(struct visorchannel *channel, ulong offset, ...@@ -262,7 +264,7 @@ visorchannel_write(struct visorchannel *channel, ulong offset,
memcpy(&channel->chan_hdr + offset, local, copy_size); memcpy(&channel->chan_hdr + offset, local, copy_size);
} }
memcpy_toio(channel->mapped + offset, local, nbytes); memcpy(channel->mapped + offset, local, nbytes);
return 0; return 0;
} }
......
...@@ -119,7 +119,7 @@ static struct visorchannel *controlvm_channel; ...@@ -119,7 +119,7 @@ static struct visorchannel *controlvm_channel;
/* Manages the request payload in the controlvm channel */ /* Manages the request payload in the controlvm channel */
struct visor_controlvm_payload_info { struct visor_controlvm_payload_info {
u8 __iomem *ptr; /* pointer to base address of payload pool */ u8 *ptr; /* pointer to base address of payload pool */
u64 offset; /* offset from beginning of controlvm u64 offset; /* offset from beginning of controlvm
* channel to beginning of payload * pool */ * channel to beginning of payload * pool */
u32 bytes; /* number of bytes in payload pool */ u32 bytes; /* number of bytes in payload pool */
...@@ -401,21 +401,22 @@ parser_init_byte_stream(u64 addr, u32 bytes, bool local, bool *retry) ...@@ -401,21 +401,22 @@ parser_init_byte_stream(u64 addr, u32 bytes, bool local, bool *retry)
p = __va((unsigned long) (addr)); p = __va((unsigned long) (addr));
memcpy(ctx->data, p, bytes); memcpy(ctx->data, p, bytes);
} else { } else {
void __iomem *mapping; void *mapping;
if (!request_mem_region(addr, bytes, "visorchipset")) { if (!request_mem_region(addr, bytes, "visorchipset")) {
rc = NULL; rc = NULL;
goto cleanup; goto cleanup;
} }
mapping = ioremap_cache(addr, bytes); mapping = memremap(addr, bytes, MEMREMAP_WB);
if (!mapping) { if (!mapping) {
release_mem_region(addr, bytes); release_mem_region(addr, bytes);
rc = NULL; rc = NULL;
goto cleanup; goto cleanup;
} }
memcpy_fromio(ctx->data, mapping, bytes); memcpy(ctx->data, mapping, bytes);
release_mem_region(addr, bytes); release_mem_region(addr, bytes);
memunmap(mapping);
} }
ctx->byte_stream = true; ctx->byte_stream = true;
...@@ -1327,7 +1328,7 @@ static int ...@@ -1327,7 +1328,7 @@ static int
initialize_controlvm_payload_info(u64 phys_addr, u64 offset, u32 bytes, initialize_controlvm_payload_info(u64 phys_addr, u64 offset, u32 bytes,
struct visor_controlvm_payload_info *info) struct visor_controlvm_payload_info *info)
{ {
u8 __iomem *payload = NULL; u8 *payload = NULL;
int rc = CONTROLVM_RESP_SUCCESS; int rc = CONTROLVM_RESP_SUCCESS;
if (!info) { if (!info) {
...@@ -1339,7 +1340,7 @@ initialize_controlvm_payload_info(u64 phys_addr, u64 offset, u32 bytes, ...@@ -1339,7 +1340,7 @@ initialize_controlvm_payload_info(u64 phys_addr, u64 offset, u32 bytes,
rc = -CONTROLVM_RESP_ERROR_PAYLOAD_INVALID; rc = -CONTROLVM_RESP_ERROR_PAYLOAD_INVALID;
goto cleanup; goto cleanup;
} }
payload = ioremap_cache(phys_addr + offset, bytes); payload = memremap(phys_addr + offset, bytes, MEMREMAP_WB);
if (!payload) { if (!payload) {
rc = -CONTROLVM_RESP_ERROR_IOREMAP_FAILED; rc = -CONTROLVM_RESP_ERROR_IOREMAP_FAILED;
goto cleanup; goto cleanup;
...@@ -1352,7 +1353,7 @@ initialize_controlvm_payload_info(u64 phys_addr, u64 offset, u32 bytes, ...@@ -1352,7 +1353,7 @@ initialize_controlvm_payload_info(u64 phys_addr, u64 offset, u32 bytes,
cleanup: cleanup:
if (rc < 0) { if (rc < 0) {
if (payload) { if (payload) {
iounmap(payload); memunmap(payload);
payload = NULL; payload = NULL;
} }
} }
...@@ -1363,7 +1364,7 @@ static void ...@@ -1363,7 +1364,7 @@ static void
destroy_controlvm_payload_info(struct visor_controlvm_payload_info *info) destroy_controlvm_payload_info(struct visor_controlvm_payload_info *info)
{ {
if (info->ptr) { if (info->ptr) {
iounmap(info->ptr); memunmap(info->ptr);
info->ptr = NULL; info->ptr = NULL;
} }
memset(info, 0, sizeof(struct visor_controlvm_payload_info)); memset(info, 0, sizeof(struct visor_controlvm_payload_info));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment