Commit ab0380ca authored by Pierre Morel's avatar Pierre Morel Committed by Cornelia Huck
Browse files

s390x/pci: move the memory region read from pcilg



Let's move the memory region read from pcilg into a dedicated function.
This allows us to prepare a later patch.

Signed-off-by: default avatarPierre Morel <pmorel@linux.vnet.ibm.com>
Reviewed-by: default avatarYi Min Zhao <zyimin@linux.vnet.ibm.com>
Reviewed-by: default avatarThomas Huth <thuth@redhat.com>
Message-Id: <1512046530-17773-6-git-send-email-pmorel@linux.vnet.ibm.com>
Signed-off-by: default avatarCornelia Huck <cohuck@redhat.com>
parent 0e7c259a
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -349,13 +349,22 @@ static int zpci_endian_swap(uint64_t *ptr, uint8_t len)
    return 0;
}

static MemTxResult zpci_read_bar(S390PCIBusDevice *pbdev, uint8_t pcias,
                                 uint64_t offset, uint64_t *data, uint8_t len)
{
    MemoryRegion *mr;

    mr = pbdev->pdev->io_regions[pcias].memory;
    return memory_region_dispatch_read(mr, offset, data, len,
                                       MEMTXATTRS_UNSPECIFIED);
}

int pcilg_service_call(S390CPU *cpu, uint8_t r1, uint8_t r2, uintptr_t ra)
{
    CPUS390XState *env = &cpu->env;
    S390PCIBusDevice *pbdev;
    uint64_t offset;
    uint64_t data;
    MemoryRegion *mr;
    MemTxResult result;
    uint8_t len;
    uint32_t fh;
@@ -406,9 +415,7 @@ int pcilg_service_call(S390CPU *cpu, uint8_t r1, uint8_t r2, uintptr_t ra)
            s390_program_interrupt(env, PGM_OPERAND, 4, ra);
            return 0;
        }
        mr = pbdev->pdev->io_regions[pcias].memory;
        result = memory_region_dispatch_read(mr, offset, &data, len,
                                             MEMTXATTRS_UNSPECIFIED);
        result = zpci_read_bar(pbdev, pcias, offset, &data, len);
        if (result != MEMTX_OK) {
            s390_program_interrupt(env, PGM_OPERAND, 4, ra);
            return 0;