Subject: Re: [PATCH v2 1/2] ptp/ptp_vmw: Implement PTP clock adjustments ops

From: Vadim Fedorenko <[email-masked]>
Date: Wed, 22 Oct 2025 23:17:42 +0100

On 22/10/2025 18:27, Ajay Kaher wrote:
> On Wed, Oct 22, 2025 at 4:43 PM Vadim Fedorenko
> <[email-masked]> wrote:
>>
>> On 22/10/2025 11:51, Ajay Kaher wrote:
>>> Implement PTP clock ops that set time and frequency of the underlying
>>> clock. On supported versions of VMware precision clock virtual device,
>>> new commands can adjust its time and frequency, allowing time transfer
>>> from a virtual machine to the underlying hypervisor.
>>>
>>> In case of error, vmware_hypercall doesn't return Linux defined errno,
>>> converting it to -EIO.
>>>
>>> Cc: Shubham Gupta <[email-masked]>
>>> Cc: Nick Shi <[email-masked]>
>>> Tested-by: Karen Wang <[email-masked]>
>>> Tested-by: Hari Krishna Ginka <[email-masked]>
>>> Signed-off-by: Ajay Kaher <[email-masked]>
>>> ---
>>>    drivers/ptp/ptp_vmw.c | 39 +++++++++++++++++++++++++++++----------
>>>    1 file changed, 29 insertions(+), 10 deletions(-)
>>>
>>> diff --git a/drivers/ptp/ptp_vmw.c b/drivers/ptp/ptp_vmw.c
>>> index 20ab05c4d..7d117eee4 100644
>>> --- a/drivers/ptp/ptp_vmw.c
>>> +++ b/drivers/ptp/ptp_vmw.c
>>> @@ -1,6 +1,7 @@
>>>    // SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
>>>    /*
>>> - * Copyright (C) 2020 VMware, Inc., Palo Alto, CA., USA
>>> + * Copyright (C) 2020-2023 VMware, Inc., Palo Alto, CA., USA
>>> + * Copyright (C) 2024-2025 Broadcom Ltd.
>>>     *
>>>     * PTP clock driver for VMware precision clock virtual device.
>>>     */
>>> @@ -16,20 +17,36 @@
>>>
>>>    #define VMWARE_CMD_PCLK(nr) ((nr << 16) | 97)
>>>    #define VMWARE_CMD_PCLK_GETTIME VMWARE_CMD_PCLK(0)
>>> +#define VMWARE_CMD_PCLK_SETTIME VMWARE_CMD_PCLK(1)
>>> +#define VMWARE_CMD_PCLK_ADJTIME VMWARE_CMD_PCLK(2)
>>> +#define VMWARE_CMD_PCLK_ADJFREQ VMWARE_CMD_PCLK(3)
>>>
>>>    static struct acpi_device *ptp_vmw_acpi_device;
>>>    static struct ptp_clock *ptp_vmw_clock;
>>>
>>> +/*
>>> + * Helpers for reading and writing to precision clock device.
>>> + */
>>>
>>> -static int ptp_vmw_pclk_read(u64 *ns)
>>> +static int ptp_vmw_pclk_read(int cmd, u64 *ns)
>>>    {
>>>        u32 ret, nsec_hi, nsec_lo;
>>>
>>> -     ret = vmware_hypercall3(VMWARE_CMD_PCLK_GETTIME, 0,
>>> -                             &nsec_hi, &nsec_lo);
>>> +     ret = vmware_hypercall3(cmd, 0, &nsec_hi, &nsec_lo);
>>>        if (ret == 0)
>>>                *ns = ((u64)nsec_hi << 32) | nsec_lo;
>>> -     return ret;
>>> +
>>> +     return ret != 0 ? -EIO : 0;
>>> +}
>>
>> Why do you need to introduce this change? VMWARE_CMD_PCLK_GETTIME is
>> the only command used in read() in both patches of this patchset.
>>
> 
> Vadim, thanks for looking into patches.
> 
> I have added ptp_vmw_pclk_write() where cmd has been passed as argument.
> Keeping the same format for ptp_vmw_pclk_read() as well, also may be useful
> in future.
> 
> Let me know if you think it's better to keep ptp_vmw_pclk_read() as it
> is. I will
> revert in v3.

I do believe it's better to keep code as is until you have real use of
new feature. And I'm not quite sure which command you can use to do
another read?