Re: [Intel-gfx] [PATCH] drm/vkms: prime import support
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
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
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
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