After the last review round I worked on endianness. Doing this I found some errors in the code and in the interpretation of the documentation. The new patch changed the following from previous version: In s390-pci-bus: - Initialize the FMB Format. In s390-pci-bus.h - re-organization of the internal counters, having a table for the internal counters.
In s390-pci-inst.c - Internal counters update (LD/ST/STB/RPCIT) is done always. even if the FMB if fmb_addr is NULL. AFAIU this respect the documentation which only states that FMB update is stopped. - in mpcifc_service_call(), moved the setting of fmb_addr after the timer has been stopped. - fmb_update((), use address_space_stq_be() to handle endianness when storing the FMB. - define the format with 32 bits instead of one char and reserved chars, this is easier to handle the FMB copy. - No update of the DMA fields inside the FMB, as stipulated by the documentation when format32 is 0. Patch is tested (for the good case) on Z(KVM) and X(TCG). Yi Min Zhao (1): s390x/pci: add common function measurement block hw/s390x/s390-pci-bus.c | 4 +- hw/s390x/s390-pci-bus.h | 29 ++++++++++ hw/s390x/s390-pci-inst.c | 141 ++++++++++++++++++++++++++++++++++++++++++++++- hw/s390x/s390-pci-inst.h | 1 + 4 files changed, 171 insertions(+), 4 deletions(-) -- 2.7.4