From: Jens Freimann <jfrei@linux.vnet.ibm.com>
To: Christian Borntraeger <borntraeger@de.ibm.com>,
Alexander Graf <agraf@suse.de>,
Cornelia Huck <cornelia.huck@de.ibm.com>
Cc: Frank Blaschka <frank.blaschka@de.ibm.com>,
Frank Blaschka <blaschka@linux.vnet.ibm.com>,
qemu-devel@nongnu.org, Jens Freimann <jfrei@linux.vnet.ibm.com>
Subject: [Qemu-devel] [PATCH 24/25] s390x/pci: Rework memory access in zpci instruction
Date: Thu, 12 Feb 2015 18:09:41 +0100 [thread overview]
Message-ID: <1423760982-8474-25-git-send-email-jfrei@linux.vnet.ibm.com> (raw)
In-Reply-To: <1423760982-8474-1-git-send-email-jfrei@linux.vnet.ibm.com>
From: Frank Blaschka <frank.blaschka@de.ibm.com>
Change zpci instructions to use the new logical memory access
functions.
Signed-off-by: Frank Blaschka <blaschka@linux.vnet.ibm.com>
Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com>
---
hw/s390x/s390-pci-inst.c | 37 ++++++++++++++++++++++++++++---------
1 file changed, 28 insertions(+), 9 deletions(-)
diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c
index 9e5bc5b..08d8aa6 100644
--- a/hw/s390x/s390-pci-inst.c
+++ b/hw/s390x/s390-pci-inst.c
@@ -155,7 +155,9 @@ int clp_service_call(S390CPU *cpu, uint8_t r2)
return 0;
}
- cpu_physical_memory_read(env->regs[r2], buffer, sizeof(*reqh));
+ if (s390_cpu_virt_mem_read(cpu, env->regs[r2], buffer, sizeof(*reqh))) {
+ return 0;
+ }
reqh = (ClpReqHdr *)buffer;
req_len = lduw_p(&reqh->len);
if (req_len < 16 || req_len > 8184 || (req_len % 8 != 0)) {
@@ -163,7 +165,10 @@ int clp_service_call(S390CPU *cpu, uint8_t r2)
return 0;
}
- cpu_physical_memory_read(env->regs[r2], buffer, req_len + sizeof(*resh));
+ if (s390_cpu_virt_mem_read(cpu, env->regs[r2], buffer,
+ req_len + sizeof(*resh))) {
+ return 0;
+ }
resh = (ClpRspHdr *)(buffer + req_len);
res_len = lduw_p(&resh->len);
if (res_len < 8 || res_len > 8176 || (res_len % 8 != 0)) {
@@ -175,7 +180,10 @@ int clp_service_call(S390CPU *cpu, uint8_t r2)
return 0;
}
- cpu_physical_memory_read(env->regs[r2], buffer, req_len + res_len);
+ if (s390_cpu_virt_mem_read(cpu, env->regs[r2], buffer,
+ req_len + res_len)) {
+ return 0;
+ }
if (req_len != 32) {
stw_p(&resh->rsp, CLP_RC_LEN);
@@ -269,7 +277,10 @@ int clp_service_call(S390CPU *cpu, uint8_t r2)
}
out:
- cpu_physical_memory_write(env->regs[r2], buffer, req_len + res_len);
+ if (s390_cpu_virt_mem_write(cpu, env->regs[r2], buffer,
+ req_len + res_len)) {
+ return 0;
+ }
setcc(cpu, cc);
return 0;
}
@@ -539,10 +550,10 @@ int pcistb_service_call(S390CPU *cpu, uint8_t r1, uint8_t r3, uint64_t gaddr)
S390PCIBusDevice *pbdev;
MemoryRegion *mr;
int i;
- uint64_t val;
uint32_t fh;
uint8_t pcias;
uint8_t len;
+ uint8_t buffer[128];
if (env->psw.mask & PSW_MASK_PSTATE) {
program_interrupt(env, PGM_PRIVILEGED, 6);
@@ -590,9 +601,12 @@ int pcistb_service_call(S390CPU *cpu, uint8_t r1, uint8_t r3, uint64_t gaddr)
return 0;
}
+ if (s390_cpu_virt_mem_read(cpu, gaddr, buffer, len)) {
+ return 0;
+ }
+
for (i = 0; i < len / 8; i++) {
- val = ldq_phys(&address_space_memory, gaddr + i * 8);
- io_mem_write(mr, env->regs[r3] + i * 8, val, 8);
+ io_mem_write(mr, env->regs[r3] + i * 8, ldq_p(buffer + i * 8), 8);
}
setcc(cpu, ZPCI_PCI_LS_OK);
@@ -709,7 +723,9 @@ int mpcifc_service_call(S390CPU *cpu, uint8_t r1, uint64_t fiba)
return 0;
}
- cpu_physical_memory_read(fiba, (uint8_t *)&fib, sizeof(fib));
+ if (s390_cpu_virt_mem_read(cpu, fiba, (uint8_t *)&fib, sizeof(fib))) {
+ return 0;
+ }
switch (oc) {
case ZPCI_MOD_FC_REG_INT:
@@ -809,7 +825,10 @@ int stpcifc_service_call(S390CPU *cpu, uint8_t r1, uint64_t fiba)
fib.fc |= 0x10;
}
- cpu_physical_memory_write(fiba, (uint8_t *)&fib, sizeof(fib));
+ if (s390_cpu_virt_mem_write(cpu, fiba, (uint8_t *)&fib, sizeof(fib))) {
+ return 0;
+ }
+
setcc(cpu, cc);
return 0;
}
--
2.1.4
next prev parent reply other threads:[~2015-02-12 17:09 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-12 17:09 [Qemu-devel] [PATCH 00/25] s390x: rework guest memory access Jens Freimann
2015-02-12 17:09 ` [Qemu-devel] [PATCH 01/25] s390x/mmu: Move mmu_translate() and friends to separate file Jens Freimann
2015-02-17 12:35 ` Alexander Graf
2015-02-12 17:09 ` [Qemu-devel] [PATCH 02/25] s390x/mmu: Fix the check for the real-space designation bit Jens Freimann
2015-02-12 17:09 ` [Qemu-devel] [PATCH 03/25] s390x/mmu: Fix the handling of the table levels Jens Freimann
2015-02-12 17:09 ` [Qemu-devel] [PATCH 04/25] s390x/mmu: Check table length and offset fields Jens Freimann
2015-02-12 17:09 ` [Qemu-devel] [PATCH 05/25] s390x/mmu: Skip exceptions properly when translating addresses for debug Jens Freimann
2015-02-12 17:09 ` [Qemu-devel] [PATCH 06/25] s390x/mmu: Fix translation exception code in lowcore Jens Freimann
2015-02-12 17:09 ` [Qemu-devel] [PATCH 07/25] s390x/mmu: Fix exception types when checking the ASCEs Jens Freimann
2015-02-12 17:09 ` [Qemu-devel] [PATCH 08/25] s390x/mmu: Fix the exception codes for illegal table entries Jens Freimann
2015-02-12 17:09 ` [Qemu-devel] [PATCH 09/25] s390x/mmu: Add support for read-only regions Jens Freimann
2015-02-12 17:09 ` [Qemu-devel] [PATCH 10/25] s390x/mmu: Renaming related to the ASCE confusion Jens Freimann
2015-02-12 17:09 ` [Qemu-devel] [PATCH 11/25] s390x/mmu: Check bit 52 in page table entry Jens Freimann
2015-02-12 17:09 ` [Qemu-devel] [PATCH 12/25] s390x/mmu: Clean up mmu_translate_asc() Jens Freimann
2015-02-12 17:09 ` [Qemu-devel] [PATCH 13/25] s390x/kvm: Add function for injecting pgm access exceptions Jens Freimann
2015-02-12 17:09 ` [Qemu-devel] [PATCH 14/25] s390x/mmu: Add function for accessing guest memory Jens Freimann
2015-02-12 17:09 ` [Qemu-devel] [PATCH 15/25] s390x/css: Make schib parameter of css_do_msch const Jens Freimann
2015-02-12 17:09 ` [Qemu-devel] [PATCH 16/25] s390x/ioinst: Rework memory access in MSCH instruction Jens Freimann
2015-02-12 17:09 ` [Qemu-devel] [PATCH 17/25] s390x/ioinst: Rework memory access in SSCH instruction Jens Freimann
2015-02-12 17:09 ` [Qemu-devel] [PATCH 18/25] s390x/ioinst: Rework memory access in STSCH instruction Jens Freimann
2015-02-12 17:09 ` [Qemu-devel] [PATCH 19/25] s390x/ioinst: Set condition code in ioinst_handle_tsch() handler Jens Freimann
2015-02-12 17:09 ` [Qemu-devel] [PATCH 20/25] s390x/ioinst: Rework memory access in TSCH instruction Jens Freimann
2015-02-12 17:09 ` [Qemu-devel] [PATCH 21/25] s390x/ioinst: Rework memory access in STCRW instruction Jens Freimann
2015-02-12 17:09 ` [Qemu-devel] [PATCH 22/25] s390x/ioinst: Rework memory access in CHSC instruction Jens Freimann
2015-02-12 17:09 ` [Qemu-devel] [PATCH 23/25] s390x/ioinst: Rework memory access in TPI instruction Jens Freimann
2015-02-12 17:09 ` Jens Freimann [this message]
2015-02-12 17:09 ` [Qemu-devel] [PATCH 25/25] s390x/helper: Remove s390_cpu_physical_memory_map Jens Freimann
2015-02-18 8:40 ` [Qemu-devel] [PATCH 00/25] s390x: rework guest memory access Christian Borntraeger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1423760982-8474-25-git-send-email-jfrei@linux.vnet.ibm.com \
--to=jfrei@linux.vnet.ibm.com \
--cc=agraf@suse.de \
--cc=blaschka@linux.vnet.ibm.com \
--cc=borntraeger@de.ibm.com \
--cc=cornelia.huck@de.ibm.com \
--cc=frank.blaschka@de.ibm.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).