On Mon, Feb 27, 2023 at 05:03:07PM +0000, Jonathan Cameron wrote: > From: Ira Weiny <ira.we...@intel.com> > > There are new users of this functionality coming shortly so factor > it out from the GET_TIMESTAMP mailbox command handling. > > Signed-off-by: Ira Weiny <ira.we...@intel.com> > Signed-off-by: Jonathan Cameron <jonathan.came...@huawei.com>
Reviewed-by: Fan Ni <fan...@samsung.com> > --- > hw/cxl/cxl-device-utils.c | 15 +++++++++++++++ > hw/cxl/cxl-mailbox-utils.c | 11 +---------- > include/hw/cxl/cxl_device.h | 2 ++ > 3 files changed, 18 insertions(+), 10 deletions(-) > > diff --git a/hw/cxl/cxl-device-utils.c b/hw/cxl/cxl-device-utils.c > index 4c5e88aaf5..86e1cea8ce 100644 > --- a/hw/cxl/cxl-device-utils.c > +++ b/hw/cxl/cxl-device-utils.c > @@ -269,3 +269,18 @@ void cxl_device_register_init_common(CXLDeviceState > *cxl_dstate) > > cxl_initialize_mailbox(cxl_dstate); > } > + > +uint64_t cxl_device_get_timestamp(CXLDeviceState *cxl_dstate) > +{ > + uint64_t time, delta; > + uint64_t final_time = 0; > + > + if (cxl_dstate->timestamp.set) { > + /* Find the delta from the last time the host set the time. */ > + time = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL); > + delta = time - cxl_dstate->timestamp.last_set; > + final_time = cxl_dstate->timestamp.host_set + delta; > + } > + > + return final_time; > +} > diff --git a/hw/cxl/cxl-mailbox-utils.c b/hw/cxl/cxl-mailbox-utils.c > index 7b2aef0d67..702e16ca20 100644 > --- a/hw/cxl/cxl-mailbox-utils.c > +++ b/hw/cxl/cxl-mailbox-utils.c > @@ -163,17 +163,8 @@ static CXLRetCode cmd_timestamp_get(struct cxl_cmd *cmd, > CXLDeviceState *cxl_dstate, > uint16_t *len) > { > - uint64_t time, delta; > - uint64_t final_time = 0; > - > - if (cxl_dstate->timestamp.set) { > - /* First find the delta from the last time the host set the time. */ > - time = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL); > - delta = time - cxl_dstate->timestamp.last_set; > - final_time = cxl_dstate->timestamp.host_set + delta; > - } > + uint64_t final_time = cxl_device_get_timestamp(cxl_dstate); > > - /* Then adjust the actual time */ > stq_le_p(cmd->payload, final_time); > *len = 8; > > diff --git a/include/hw/cxl/cxl_device.h b/include/hw/cxl/cxl_device.h > index edb9791bab..02befda0f6 100644 > --- a/include/hw/cxl/cxl_device.h > +++ b/include/hw/cxl/cxl_device.h > @@ -287,4 +287,6 @@ MemTxResult cxl_type3_read(PCIDevice *d, hwaddr > host_addr, uint64_t *data, > MemTxResult cxl_type3_write(PCIDevice *d, hwaddr host_addr, uint64_t data, > unsigned size, MemTxAttrs attrs); > > +uint64_t cxl_device_get_timestamp(CXLDeviceState *cxlds); > + > #endif > -- > 2.37.2 > >