summaryrefslogtreecommitdiffstats
path: root/drivers/staging/unisys/visorbus/visorchipset.c
diff options
context:
space:
mode:
authorErik Arfvidson2017-07-17 22:17:09 +0200
committerGreg Kroah-Hartman2017-07-18 08:48:42 +0200
commita35e3268da517bb885df2aacf8c9aaa344d5628c (patch)
tree44f728051635eb93a1826d9763bc0fbdf985d20a /drivers/staging/unisys/visorbus/visorchipset.c
parentstaging: unisys: visorbus: remove target_hostname comment (diff)
downloadkernel-qcow2-linux-a35e3268da517bb885df2aacf8c9aaa344d5628c.tar.gz
kernel-qcow2-linux-a35e3268da517bb885df2aacf8c9aaa344d5628c.tar.xz
kernel-qcow2-linux-a35e3268da517bb885df2aacf8c9aaa344d5628c.zip
staging: unisys: visorchipset: remove local_addr in handle_command
In the function handle_command, the variable local_addr is always false. So this patch is getting rid of logic when it is true. Signed-off-by: Erik Arfvidson <erik.arfvidson@gmail.com> Signed-off-by: David Kershner <david.kershner@unisys.com> Reviewed-by: David Binder <david.binder@unisys.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/unisys/visorbus/visorchipset.c')
-rw-r--r--drivers/staging/unisys/visorbus/visorchipset.c43
1 files changed, 13 insertions, 30 deletions
diff --git a/drivers/staging/unisys/visorbus/visorchipset.c b/drivers/staging/unisys/visorbus/visorchipset.c
index aa6ee41b2828..45c95e15ce9a 100644
--- a/drivers/staging/unisys/visorbus/visorchipset.c
+++ b/drivers/staging/unisys/visorbus/visorchipset.c
@@ -1508,10 +1508,11 @@ visorbus_device_resume_response(struct visor_device *dev_info, int response)
}
static struct parser_context *
-parser_init_byte_stream(u64 addr, u32 bytes, bool local, bool *retry)
+parser_init_byte_stream(u64 addr, u32 bytes, bool *retry)
{
int allocbytes = sizeof(struct parser_context) + bytes;
struct parser_context *ctx;
+ void *mapping;
*retry = false;
@@ -1536,22 +1537,11 @@ parser_init_byte_stream(u64 addr, u32 bytes, bool local, bool *retry)
ctx->curr = NULL;
ctx->bytes_remaining = 0;
ctx->byte_stream = false;
- if (local) {
- void *p;
-
- if (addr > virt_to_phys(high_memory - 1))
- goto err_finish_ctx;
- p = __va((unsigned long)(addr));
- memcpy(ctx->data, p, bytes);
- } else {
- void *mapping = memremap(addr, bytes, MEMREMAP_WB);
-
- if (!mapping)
- goto err_finish_ctx;
- memcpy(ctx->data, mapping, bytes);
- memunmap(mapping);
- }
-
+ mapping = memremap(addr, bytes, MEMREMAP_WB);
+ if (!mapping)
+ goto err_finish_ctx;
+ memcpy(ctx->data, mapping, bytes);
+ memunmap(mapping);
ctx->byte_stream = true;
chipset_dev->controlvm_payload_bytes_buffered += ctx->param_bytes;
@@ -1582,12 +1572,10 @@ handle_command(struct controlvm_message inmsg, u64 channel_addr)
u64 parm_addr;
u32 parm_bytes;
struct parser_context *parser_ctx = NULL;
- bool local_addr;
struct controlvm_message ackmsg;
int err = 0;
/* create parsing context if necessary */
- local_addr = (inmsg.hdr.flags.test_message == 1);
parm_addr = channel_addr + inmsg.hdr.payload_vm_offset;
parm_bytes = inmsg.hdr.payload_bytes;
@@ -1600,21 +1588,16 @@ handle_command(struct controlvm_message inmsg, u64 channel_addr)
bool retry = false;
parser_ctx =
- parser_init_byte_stream(parm_addr, parm_bytes,
- local_addr, &retry);
+ parser_init_byte_stream(parm_addr, parm_bytes, &retry);
if (!parser_ctx && retry)
return -EAGAIN;
}
+ controlvm_init_response(&ackmsg, &inmsg.hdr, CONTROLVM_RESP_SUCCESS);
+ err = visorchannel_signalinsert(chipset_dev->controlvm_channel,
+ CONTROLVM_QUEUE_ACK, &ackmsg);
+ if (err)
+ return err;
- if (!local_addr) {
- controlvm_init_response(&ackmsg, &inmsg.hdr,
- CONTROLVM_RESP_SUCCESS);
- err = visorchannel_signalinsert(chipset_dev->controlvm_channel,
- CONTROLVM_QUEUE_ACK,
- &ackmsg);
- if (err)
- return err;
- }
switch (inmsg.hdr.id) {
case CONTROLVM_CHIPSET_INIT:
err = chipset_init(&inmsg);