Re: [Intel-gfx] [PATCH] drm/vkms: prime import support

2019-07-10 Thread Vasilev, Oleg
On Wed, 2019-07-10 at 18:35 +0300, Oleg Vasilev wrote:
> On Wed, 2019-07-10 at 17:31 +0200, Daniel Vetter wrote:
> > On Thu, Jul 04, 2019 at 11:54:10AM +0300, Oleg Vasilev wrote:
> > > Bring dmabuf sharing through implementing prime_import_sg_table
> > > callback.
> > > This will help to validate userspace conformance in prime
> > > configurations
> > > without using any actual hardware (e.g. in the cloud).
> > > 
> > > Cc: Rodrigo Siqueira 
> > > Cc: Haneen Mohammed 
> > > Cc: Daniel Vetter 
> > > Signed-off-by: Oleg Vasilev 
> > 
> > Btw which igt testcases does this enable? Are the igt patches
> > already
> > merged (I think as-is the igt prime tests won't run on vkms).
> > 
> > Imo for vkms we really want to make sure there's tests for
> > everything,
> > otherwise a fake driver for testing/validation is kinda pointless
> > ...
> > -Daniel
> 
> I've submitted a patch to IGT, but it is not merged yet:
> https://patchwork.freedesktop.org/series/63213/

Oops, this one: 
https://patchwork.freedesktop.org/patch/315659/?series=63216=1

> Oleg



smime.p7s
Description: S/MIME cryptographic signature
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH] drm/vkms: prime import support

2019-07-10 Thread Vasilev, Oleg
On Wed, 2019-07-10 at 17:31 +0200, Daniel Vetter wrote:
> On Thu, Jul 04, 2019 at 11:54:10AM +0300, Oleg Vasilev wrote:
> > Bring dmabuf sharing through implementing prime_import_sg_table
> > callback.
> > This will help to validate userspace conformance in prime
> > configurations
> > without using any actual hardware (e.g. in the cloud).
> > 
> > Cc: Rodrigo Siqueira 
> > Cc: Haneen Mohammed 
> > Cc: Daniel Vetter 
> > Signed-off-by: Oleg Vasilev 
> 
> Btw which igt testcases does this enable? Are the igt patches already
> merged (I think as-is the igt prime tests won't run on vkms).
> 
> Imo for vkms we really want to make sure there's tests for
> everything,
> otherwise a fake driver for testing/validation is kinda pointless ...
> -Daniel

I've submitted a patch to IGT, but it is not merged yet:
https://patchwork.freedesktop.org/series/63213/

Oleg
> 
> > ---
> >  drivers/gpu/drm/vkms/vkms_drv.c |  6 +
> >  drivers/gpu/drm/vkms/vkms_drv.h |  9 +++
> >  drivers/gpu/drm/vkms/vkms_gem.c | 46
> > +
> >  3 files changed, 61 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/vkms/vkms_drv.c
> > b/drivers/gpu/drm/vkms/vkms_drv.c
> > index cc53ef88a331..b71c16d9ca09 100644
> > --- a/drivers/gpu/drm/vkms/vkms_drv.c
> > +++ b/drivers/gpu/drm/vkms/vkms_drv.c
> > @@ -10,6 +10,7 @@
> >   */
> >  
> >  #include 
> > +#include 
> >  #include 
> >  #include 
> >  #include 
> > @@ -96,6 +97,8 @@ static struct drm_driver vkms_driver = {
> > .gem_vm_ops = _gem_vm_ops,
> > .gem_free_object_unlocked = vkms_gem_free_object,
> > .get_vblank_timestamp   = vkms_get_vblank_timestamp,
> > +   .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
> > +   .gem_prime_import_sg_table = vkms_prime_import_sg_table,
> >  
> > .name   = DRIVER_NAME,
> > .desc   = DRIVER_DESC,
> > @@ -147,6 +150,9 @@ static int __init vkms_init(void)
> >  
> > ret = drm_dev_init(_device->drm, _driver,
> >_device->platform->dev);
> > +
> > +   dma_coerce_mask_and_coherent(vkms_device->drm.dev,
> > +DMA_BIT_MASK(64));
> > if (ret)
> > goto out_unregister;
> >  
> > diff --git a/drivers/gpu/drm/vkms/vkms_drv.h
> > b/drivers/gpu/drm/vkms/vkms_drv.h
> > index 12b4db7ac641..fb15101c8f3e 100644
> > --- a/drivers/gpu/drm/vkms/vkms_drv.h
> > +++ b/drivers/gpu/drm/vkms/vkms_drv.h
> > @@ -126,6 +126,9 @@ struct drm_gem_object *vkms_gem_create(struct
> > drm_device *dev,
> >u32 *handle,
> >u64 size);
> >  
> > +struct vkms_gem_object *vkms_gem_create_private(struct drm_device
> > *dev,
> > +   u64 size);
> > +
> >  vm_fault_t vkms_gem_fault(struct vm_fault *vmf);
> >  
> >  int vkms_dumb_create(struct drm_file *file, struct drm_device
> > *dev,
> > @@ -137,6 +140,12 @@ int vkms_gem_vmap(struct drm_gem_object *obj);
> >  
> >  void vkms_gem_vunmap(struct drm_gem_object *obj);
> >  
> > +/* Prime */
> > +struct drm_gem_object *
> > +vkms_prime_import_sg_table(struct drm_device *dev,
> > +  struct dma_buf_attachment *attach,
> > +  struct sg_table *sg);
> > +
> >  /* CRC Support */
> >  const char *const *vkms_get_crc_sources(struct drm_crtc *crtc,
> > size_t *count);
> > diff --git a/drivers/gpu/drm/vkms/vkms_gem.c
> > b/drivers/gpu/drm/vkms/vkms_gem.c
> > index 69048e73377d..a1b837460f63 100644
> > --- a/drivers/gpu/drm/vkms/vkms_gem.c
> > +++ b/drivers/gpu/drm/vkms/vkms_gem.c
> > @@ -1,5 +1,6 @@
> >  // SPDX-License-Identifier: GPL-2.0+
> >  
> > +#include 
> >  #include 
> >  
> >  #include "vkms_drv.h"
> > @@ -117,6 +118,25 @@ struct drm_gem_object *vkms_gem_create(struct
> > drm_device *dev,
> > return >gem;
> >  }
> >  
> > +struct vkms_gem_object *vkms_gem_create_private(struct drm_device
> > *dev,
> > +   u64 size)
> > +{
> > +   struct vkms_gem_object *obj;
> > +
> > +   obj = kzalloc(sizeof(*obj), GFP_KERNEL);
> > +
> > +   if (!obj)
> > +   return ERR_PTR(-ENOMEM);
> > +
> > +   size = roundup(size, PAGE_SIZE);
> > +
> > +   drm_gem_private_object_init(dev, >gem, size);
> > +
> > +   mutex_init(>pages_lock);
> > +
> > +   return obj;
> > +}
> > +
> >  int vkms_dumb_create(struct drm_file *file, struct drm_device
> > *dev,
> >  struct drm_mode_create_dumb *args)
> >  {
> > @@ -217,3 +237,29 @@ int vkms_gem_vmap(struct drm_gem_object *obj)
> > mutex_unlock(_obj->pages_lock);
> > return ret;
> >  }
> > +
> > +struct drm_gem_object *
> > +vkms_prime_import_sg_table(struct drm_device *dev,
> > +  struct dma_buf_attachment *attach,
> > +  struct sg_table *sg)
> > +{
> > +   struct vkms_gem_object *obj;
> > +   int npages;
> > +
> > +   obj = __vkms_gem_create(dev, attach->dmabuf->size);

Re: [Intel-gfx] [PATCH 1/2] drm: report dp downstream port type as a subconnector property

2019-07-03 Thread Vasilev, Oleg
On Tue, 2019-07-02 at 14:38 +0100, Emil Velikov wrote:
> Hi Oleg,
> 
> On Mon, 1 Jul 2019 at 09:00, Oleg Vasilev 
> wrote:
> > Currently, downstream port type is only reported in debugfs. This
> > information should be considered important since it reflects the
> > actual
> > physical connector type. Some userspace (e.g. window compositors)
> > may want to show this info to a user.
> > 
> > The 'subconnector' property is already utilized for DVI-I and TV-
> > out for
> > reporting connector subtype.
> > 
> > The initial motivation for this feature came from i2c test [1].
> > It is supposed to be skipped on VGA connectors, but it cannot
> > detect VGA over DP and fails instead.
> > 
> > [1]: https://bugs.freedesktop.org/show_bug.cgi?id=104097
> > Signed-off-by: Oleg Vasilev 
> > ---
> >  drivers/gpu/drm/drm_connector.c | 38
> > +++--
> >  drivers/gpu/drm/drm_dp_helper.c | 36
> > +++
> >  include/drm/drm_connector.h |  2 ++
> >  include/drm/drm_dp_helper.h |  3 +++
> >  include/drm/drm_mode_config.h   |  6 ++
> >  include/uapi/drm/drm_mode.h | 22 ---
> >  6 files changed, 97 insertions(+), 10 deletions(-)
> > 
> Can you please update other drivers to make use of this - quick grep
> shows 5-10 in total.

Hi,

Sure, I can do this. Should I do this is a part of this series or
better first get it merged, and then add support for other drivers?

Oleg

> if only i915 does this, then the point of making this uAPI is very
> meh.
> 
> Think user-space having per-vendor quirks for KMS. While KMS should
> be
> vendor agnostic.
> 
> -Emil


smime.p7s
Description: S/MIME cryptographic signature
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH v3] drm/i915: add i2c symlink under hdmi connector

2019-06-03 Thread Vasilev, Oleg
Hi,

Can this be reviewed, please?

On Mon, 2019-05-20 at 18:06 +0300, Oleg Vasilev wrote:
> Currently, the i2c adapter is available only under DP connectors.
> 
> Add i2c symlink under hdmi connector pointing to i2c adapter in order
> to
> make this behaviour consistent.
> 
> The initial motivation was to make igt i2c subtest
> patch [1] work on all connectors.
> 
> [1]: https://patchwork.freedesktop.org/series/60357/
> 
> v2:
> - Moved symlink remove to unregister (Ville)
> - Clarified commit message (Jani)
> - Changed WARN to DRM_ERROR (Jani)
> - Minor codestyle changes proposed by Jani
> 
> v3: added blank line
> 
> Cc: Arkadiusz Hiler 
> Cc: Imre Deak 
> Cc: Ville Syrjälä 
> Cc: Jani Nikula 
> Signed-off-by: Oleg Vasilev 
> ---
>  drivers/gpu/drm/i915/intel_hdmi.c | 41
> ++-
>  1 file changed, 40 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c
> b/drivers/gpu/drm/i915/intel_hdmi.c
> index 2a4086cf2692..a51d1408db7f 100644
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -2658,6 +2658,36 @@ static void chv_hdmi_pre_enable(struct
> intel_encoder *encoder,
>   chv_phy_release_cl2_override(encoder);
>  }
>  
> +static struct i2c_adapter *
> +intel_hdmi_get_i2c_adapter(struct drm_connector *connector)
> +{
> + struct drm_i915_private *dev_priv = to_i915(connector->dev);
> + struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector);
> +
> + return intel_gmbus_get_adapter(dev_priv, intel_hdmi->ddc_bus);
> +}
> +
> +static void intel_hdmi_create_i2c_symlink(struct drm_connector
> *connector)
> +{
> + struct i2c_adapter *adapter =
> intel_hdmi_get_i2c_adapter(connector);
> + struct kobject *i2c_kobj = >dev.kobj;
> + struct kobject *connector_kobj = >kdev->kobj;
> + int ret;
> +
> + ret = sysfs_create_link(connector_kobj, i2c_kobj, i2c_kobj-
> >name);
> + if (ret)
> + DRM_ERROR("Failed to create i2c symlink (%d)\n", ret);
> +}
> +
> +static void intel_hdmi_remove_i2c_symlink(struct drm_connector
> *connector)
> +{
> + struct i2c_adapter *adapter =
> intel_hdmi_get_i2c_adapter(connector);
> + struct kobject *i2c_kobj = >dev.kobj;
> + struct kobject *connector_kobj = >kdev->kobj;
> +
> + sysfs_remove_link(connector_kobj, i2c_kobj->name);
> +}
> +
>  static int
>  intel_hdmi_connector_register(struct drm_connector *connector)
>  {
> @@ -2669,6 +2699,8 @@ intel_hdmi_connector_register(struct
> drm_connector *connector)
>  
>   i915_debugfs_connector_add(connector);
>  
> + intel_hdmi_create_i2c_symlink(connector);
> +
>   return ret;
>  }
>  
> @@ -2680,6 +2712,13 @@ static void intel_hdmi_destroy(struct
> drm_connector *connector)
>   intel_connector_destroy(connector);
>  }
>  
> +static void intel_hdmi_connector_unregister(struct drm_connector
> *connector)
> +{
> + intel_hdmi_remove_i2c_symlink(connector);
> +
> + intel_connector_unregister(connector);
> +}
> +
>  static const struct drm_connector_funcs intel_hdmi_connector_funcs =
> {
>   .detect = intel_hdmi_detect,
>   .force = intel_hdmi_force,
> @@ -2687,7 +2726,7 @@ static const struct drm_connector_funcs
> intel_hdmi_connector_funcs = {
>   .atomic_get_property =
> intel_digital_connector_atomic_get_property,
>   .atomic_set_property =
> intel_digital_connector_atomic_set_property,
>   .late_register = intel_hdmi_connector_register,
> - .early_unregister = intel_connector_unregister,
> + .early_unregister = intel_hdmi_connector_unregister,
>   .destroy = intel_hdmi_destroy,
>   .atomic_destroy_state =
> drm_atomic_helper_connector_destroy_state,
>   .atomic_duplicate_state =
> intel_digital_connector_duplicate_state,


smime.p7s
Description: S/MIME cryptographic signature
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx