On Thu, 3 Jan 2019 11:17:00 +0100 Pierre Morel <pmo...@linux.ibm.com> wrote:
> +static void fmb_update(void *opaque) > +{ > + S390PCIBusDevice *pbdev = opaque; > + int64_t t = qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL); > + int i; > + > + /* Update U bit */ > + pbdev->fmb.last_update *= 2; > + pbdev->fmb.last_update |= UPDATE_U_BIT; > + if (fmb_do_update(pbdev, offsetof(ZpciFmb, last_update), > + pbdev->fmb.last_update, > + sizeof(((ZpciFmb *)0)->last_update))) { I really don't want to be a pain, but... this looks weird. Why not simply sizeof(pbdev->fmb.last_update)? > + return; > + } > + > + /* Update FMB sample count */ > + if (fmb_do_update(pbdev, offsetof(ZpciFmb, sample), > + pbdev->fmb.sample++, > + sizeof(((ZpciFmb *)0)->sample))) { > + return; > + } > + > + /* Update FMB counters */ > + for (i = 0; i < ZPCI_FMB_CNT_MAX; i++) { > + if (fmb_do_update(pbdev, offsetof(ZpciFmb, counter[i]), > + pbdev->fmb.counter[i], > + sizeof(((ZpciFmb *)0)->counter[0]))) { > + return; > + } > + } > + > + /* Clear U bit and update the time */ > + pbdev->fmb.last_update = time2tod(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL)); > + pbdev->fmb.last_update *= 2; > + if (fmb_do_update(pbdev, offsetof(ZpciFmb, last_update), > + pbdev->fmb.last_update, > + sizeof(((ZpciFmb *)0)->last_update))) { > + return; > + } > + timer_mod(pbdev->fmb_timer, t + DEFAULT_MUI); > +} > +