After the last review round I corrected the commit message and use the sizeof of the target entries in the fmb_di_update() function instead of the uint definition.
Regards, Pierre 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 | 133 +++++++++++++++++++++++++++++++++++++++++++++-- hw/s390x/s390-pci-inst.h | 1 + 4 files changed, 163 insertions(+), 4 deletions(-) -- 2.7.4 Changelog: from v5: - let the compiler calculate the sizeof target entry. from v4: - commit message - use sizeof target of the fmb_do_update from v3: - changed commit message according to Conny's comments In s390-pci-inst.c - simplify the fmb_do_update() to handle all cases from byte to quad. (Conny) from v2: 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.