Aharon Landau says:
====================
In case device supports only real-time timestamp, the kernel will fail to
create QP despite rdma-core requested such timestamp type.
It is because device returns free-running timestamp, and the conversion
from free-running to real-time is performed in the user space.
This series fixes it, by returning real-time timestamp.
====================
* mlx5_realtime_ts:
  RDMA/mlx5: Support real-time timestamp directly from the device
  RDMA/mlx5: Refactor get_ts_format functions to simplify code
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
        if (MLX5_CAP_GEN(dev->mdev, ece_support))
                resp->comp_mask |= MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_ECE;
  
+       if (rt_supported(MLX5_CAP_GEN(dev->mdev, sq_ts_format)) &&
+           rt_supported(MLX5_CAP_GEN(dev->mdev, rq_ts_format)) &&
+           rt_supported(MLX5_CAP_ROCE(dev->mdev, qp_ts_format)))
+               resp->comp_mask |=
+                       MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_REAL_TIME_TS;
+ 
        resp->num_dyn_bfregs = bfregi->num_dyn_bfregs;
 +
 +      if (MLX5_CAP_GEN(dev->mdev, drain_sigerr))
 +              resp->comp_mask |= MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_SQD2RTS;
 +
        return 0;
  }
  
 
        MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_CORE_CLOCK_OFFSET = 1UL << 0,
        MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_DUMP_FILL_MKEY    = 1UL << 1,
        MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_ECE               = 1UL << 2,
 +      MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_SQD2RTS           = 1UL << 3,
+       MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_REAL_TIME_TS      = 1UL << 4,
  };
  
  enum mlx5_user_cmds_supp_uhw {