]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
Merge drm/drm-next into drm-misc-next
authorMaxime Ripard <mripard@kernel.org>
Mon, 23 Feb 2026 10:48:20 +0000 (11:48 +0100)
committerMaxime Ripard <mripard@kernel.org>
Mon, 23 Feb 2026 10:48:20 +0000 (11:48 +0100)
Let's merge 7.0-rc1 to start the new drm-misc-next window

Signed-off-by: Maxime Ripard <mripard@kernel.org>
63 files changed:
1  2 
Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml
Documentation/devicetree/bindings/vendor-prefixes.yaml
MAINTAINERS
drivers/dma-buf/dma-buf.c
drivers/dma-buf/dma-fence.c
drivers/firmware/google/vpd.c
drivers/gpu/drm/Makefile
drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c
drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
drivers/gpu/drm/bridge/imx/imx8qxp-pixel-link.c
drivers/gpu/drm/bridge/synopsys/dw-dp.c
drivers/gpu/drm/display/drm_dp_mst_topology.c
drivers/gpu/drm/display/drm_dp_tunnel.c
drivers/gpu/drm/drm_atomic.c
drivers/gpu/drm/drm_atomic_helper.c
drivers/gpu/drm/drm_atomic_state_helper.c
drivers/gpu/drm/drm_bridge.c
drivers/gpu/drm/drm_colorop.c
drivers/gpu/drm/drm_connector.c
drivers/gpu/drm/drm_gem.c
drivers/gpu/drm/drm_self_refresh_helper.c
drivers/gpu/drm/i915/display/intel_colorop.c
drivers/gpu/drm/i915/gem/i915_gem_ttm.c
drivers/gpu/drm/i915/i915_scatterlist.c
drivers/gpu/drm/i915/i915_ttm_buddy_manager.c
drivers/gpu/drm/imagination/pvr_ccb.c
drivers/gpu/drm/imagination/pvr_power.c
drivers/gpu/drm/ingenic/ingenic-drm-drv.c
drivers/gpu/drm/ingenic/ingenic-ipu.c
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
drivers/gpu/drm/nouveau/nouveau_drm.c
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c
drivers/gpu/drm/panthor/panthor_mmu.c
drivers/gpu/drm/qxl/qxl_release.c
drivers/gpu/drm/sysfb/efidrm.c
drivers/gpu/drm/sysfb/vesadrm.c
drivers/gpu/drm/tests/drm_mm_test.c
drivers/gpu/drm/ttm/tests/ttm_mock_manager.c
drivers/gpu/drm/v3d/v3d_perfmon.c
drivers/gpu/drm/vc4/vc4_hdmi.c
drivers/gpu/drm/vc4/vc4_kms.c
drivers/gpu/drm/vc4/vc4_perfmon.c
drivers/gpu/drm/virtio/virtgpu_prime.c
drivers/gpu/drm/vkms/vkms_colorop.c
drivers/gpu/drm/xe/xe_bo.c
drivers/gpu/drm/xe/xe_svm.c
drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
drivers/infiniband/core/umem_dmabuf.c
drivers/infiniband/hw/mlx5/mr.c
drivers/iommu/iommufd/pages.c
drivers/iommu/iommufd/selftest.c
drivers/vfio/pci/vfio_pci_dmabuf.c
drivers/video/Kconfig
include/linux/dma-buf.h

index 828b7a40e9b6cf27f76d1cd3009505b03cbe09f1,49664101a3537365c35a1ad76d540cc98cc480f7..7f380879fffdfef28d9a35d7fbf87fdf28377b43
@@@ -82,16 -74,16 +83,25 @@@ allOf
          ports:
            properties:
              port@2: false
+   - if:
+       not:
+         properties:
+           compatible:
+             contains:
+               const: fsl,imx6sx-ldb
+     then:
+       required:
+         - reg-names
  
 +  - if:
 +      properties:
 +        compatible:
 +          contains:
 +            const: fsl,imx6sx-ldb
 +    then:
 +      properties:
 +        nxp,enable-termination-resistor: false
 +
  additionalProperties: false
  
  examples:
diff --cc MAINTAINERS
Simple merge
index 1b301d96f968cfdd2c552a76707ecb4910347440,11711874a325b954940fb289f09936de0152e683..1f6f6c5738e1835cdf3aa008de44f188d7870d40
@@@ -1016,10 -1017,10 +1016,10 @@@ dma_buf_dynamic_attach(struct dma_buf *
        if (WARN_ON(!dmabuf || !dev))
                return ERR_PTR(-EINVAL);
  
 -      if (WARN_ON(importer_ops && !importer_ops->move_notify))
 +      if (WARN_ON(importer_ops && !importer_ops->invalidate_mappings))
                return ERR_PTR(-EINVAL);
  
-       attach = kzalloc(sizeof(*attach), GFP_KERNEL);
+       attach = kzalloc_obj(*attach);
        if (!attach)
                return ERR_PTR(-ENOMEM);
  
Simple merge
Simple merge
Simple merge
index 4994b69c6595637ea832b97629b052e3aea97ee7,ee57e306bf7b0578333ebbc0ae7c49444e411869..49b934c6dbdf0fdbf1dfa10bf74536481350a381
@@@ -40,24 -40,7 +40,24 @@@ komeda_layer_atomic_destroy_state(struc
        kfree(st);
  }
  
-       st = kzalloc(sizeof(*st), GFP_KERNEL);
 +static struct drm_private_state *
 +komeda_layer_atomic_create_state(struct drm_private_obj *obj)
 +{
 +      struct komeda_layer_state *st;
 +
++      st = kzalloc_obj(*st);
 +      if (!st)
 +              return ERR_PTR(-ENOMEM);
 +
 +      __drm_atomic_helper_private_obj_create_state(obj, &st->base.obj);
 +      komeda_component_state_reset(&st->base);
 +      st->base.component = to_component(obj);
 +
 +      return &st->base.obj;
 +}
 +
  static const struct drm_private_state_funcs komeda_layer_obj_funcs = {
 +      .atomic_create_state    = komeda_layer_atomic_create_state,
        .atomic_duplicate_state = komeda_layer_atomic_duplicate_state,
        .atomic_destroy_state   = komeda_layer_atomic_destroy_state,
  };
@@@ -92,24 -82,7 +92,24 @@@ komeda_scaler_atomic_destroy_state(stru
        kfree(to_scaler_st(priv_to_comp_st(state)));
  }
  
-       st = kzalloc(sizeof(*st), GFP_KERNEL);
 +static struct drm_private_state *
 +komeda_scaler_atomic_create_state(struct drm_private_obj *obj)
 +{
 +      struct komeda_scaler_state *st;
 +
++      st = kzalloc_obj(*st);
 +      if (!st)
 +              return ERR_PTR(-ENOMEM);
 +
 +      __drm_atomic_helper_private_obj_create_state(obj, &st->base.obj);
 +      komeda_component_state_reset(&st->base);
 +      st->base.component = to_component(obj);
 +
 +      return &st->base.obj;
 +}
 +
  static const struct drm_private_state_funcs komeda_scaler_obj_funcs = {
 +      .atomic_create_state    = komeda_scaler_atomic_create_state,
        .atomic_duplicate_state = komeda_scaler_atomic_duplicate_state,
        .atomic_destroy_state   = komeda_scaler_atomic_destroy_state,
  };
@@@ -145,24 -125,7 +145,24 @@@ komeda_compiz_atomic_destroy_state(stru
        kfree(to_compiz_st(priv_to_comp_st(state)));
  }
  
-       st = kzalloc(sizeof(*st), GFP_KERNEL);
 +static struct drm_private_state *
 +komeda_compiz_atomic_create_state(struct drm_private_obj *obj)
 +{
 +      struct komeda_compiz_state *st;
 +
++      st = kzalloc_obj(*st);
 +      if (!st)
 +              return ERR_PTR(-ENOMEM);
 +
 +      __drm_atomic_helper_private_obj_create_state(obj, &st->base.obj);
 +      komeda_component_state_reset(&st->base);
 +      st->base.component = to_component(obj);
 +
 +      return &st->base.obj;
 +}
 +
  static const struct drm_private_state_funcs komeda_compiz_obj_funcs = {
 +      .atomic_create_state    = komeda_compiz_atomic_create_state,
        .atomic_duplicate_state = komeda_compiz_atomic_duplicate_state,
        .atomic_destroy_state   = komeda_compiz_atomic_destroy_state,
  };
@@@ -198,24 -168,7 +198,24 @@@ komeda_splitter_atomic_destroy_state(st
        kfree(to_splitter_st(priv_to_comp_st(state)));
  }
  
-       st = kzalloc(sizeof(*st), GFP_KERNEL);
 +static struct drm_private_state *
 +komeda_splitter_atomic_create_state(struct drm_private_obj *obj)
 +{
 +      struct komeda_splitter_state *st;
 +
++      st = kzalloc_obj(*st);
 +      if (!st)
 +              return ERR_PTR(-ENOMEM);
 +
 +      __drm_atomic_helper_private_obj_create_state(obj, &st->base.obj);
 +      komeda_component_state_reset(&st->base);
 +      st->base.component = to_component(obj);
 +
 +      return &st->base.obj;
 +}
 +
  static const struct drm_private_state_funcs komeda_splitter_obj_funcs = {
 +      .atomic_create_state    = komeda_splitter_atomic_create_state,
        .atomic_duplicate_state = komeda_splitter_atomic_duplicate_state,
        .atomic_destroy_state   = komeda_splitter_atomic_destroy_state,
  };
@@@ -251,24 -211,7 +251,24 @@@ static void komeda_merger_atomic_destro
        kfree(to_merger_st(priv_to_comp_st(state)));
  }
  
-       st = kzalloc(sizeof(*st), GFP_KERNEL);
 +static struct drm_private_state *
 +komeda_merger_atomic_create_state(struct drm_private_obj *obj)
 +{
 +      struct komeda_merger_state *st;
 +
++      st = kzalloc_obj(*st);
 +      if (!st)
 +              return ERR_PTR(-ENOMEM);
 +
 +      __drm_atomic_helper_private_obj_create_state(obj, &st->base.obj);
 +      komeda_component_state_reset(&st->base);
 +      st->base.component = to_component(obj);
 +
 +      return &st->base.obj;
 +}
 +
  static const struct drm_private_state_funcs komeda_merger_obj_funcs = {
 +      .atomic_create_state    = komeda_merger_atomic_create_state,
        .atomic_duplicate_state = komeda_merger_atomic_duplicate_state,
        .atomic_destroy_state   = komeda_merger_atomic_destroy_state,
  };
@@@ -305,24 -255,7 +305,24 @@@ komeda_improc_atomic_destroy_state(stru
        kfree(to_improc_st(priv_to_comp_st(state)));
  }
  
-       st = kzalloc(sizeof(*st), GFP_KERNEL);
 +static struct drm_private_state *
 +komeda_improc_atomic_create_state(struct drm_private_obj *obj)
 +{
 +      struct komeda_improc_state *st;
 +
++      st = kzalloc_obj(*st);
 +      if (!st)
 +              return ERR_PTR(-ENOMEM);
 +
 +      __drm_atomic_helper_private_obj_create_state(obj, &st->base.obj);
 +      komeda_component_state_reset(&st->base);
 +      st->base.component = to_component(obj);
 +
 +      return &st->base.obj;
 +}
 +
  static const struct drm_private_state_funcs komeda_improc_obj_funcs = {
 +      .atomic_create_state    = komeda_improc_atomic_create_state,
        .atomic_duplicate_state = komeda_improc_atomic_duplicate_state,
        .atomic_destroy_state   = komeda_improc_atomic_destroy_state,
  };
@@@ -358,24 -298,7 +358,24 @@@ komeda_timing_ctrlr_atomic_destroy_stat
        kfree(to_ctrlr_st(priv_to_comp_st(state)));
  }
  
-       st = kzalloc(sizeof(*st), GFP_KERNEL);
 +static struct drm_private_state *
 +komeda_timing_ctrlr_atomic_create_state(struct drm_private_obj *obj)
 +{
 +      struct komeda_timing_ctrlr_state *st;
 +
++      st = kzalloc_obj(*st);
 +      if (!st)
 +              return ERR_PTR(-ENOMEM);
 +
 +      __drm_atomic_helper_private_obj_create_state(obj, &st->base.obj);
 +      komeda_component_state_reset(&st->base);
 +      st->base.component = to_component(obj);
 +
 +      return &st->base.obj;
 +}
 +
  static const struct drm_private_state_funcs komeda_timing_ctrlr_obj_funcs = {
 +      .atomic_create_state    = komeda_timing_ctrlr_atomic_create_state,
        .atomic_duplicate_state = komeda_timing_ctrlr_atomic_duplicate_state,
        .atomic_destroy_state   = komeda_timing_ctrlr_atomic_destroy_state,
  };
@@@ -412,24 -342,7 +412,24 @@@ komeda_pipeline_atomic_destroy_state(st
        kfree(priv_to_pipe_st(state));
  }
  
-       st = kzalloc(sizeof(*st), GFP_KERNEL);
 +static struct drm_private_state *
 +komeda_pipeline_atomic_create_state(struct drm_private_obj *obj)
 +{
 +      struct komeda_pipeline_state *st;
 +
++      st = kzalloc_obj(*st);
 +      if (!st)
 +              return ERR_PTR(-ENOMEM);
 +
 +      __drm_atomic_helper_private_obj_create_state(obj, &st->obj);
 +      st->active_comps = 0;
 +      st->pipe = container_of(obj, struct komeda_pipeline, obj);
 +
 +      return &st->obj;
 +}
 +
  static const struct drm_private_state_funcs komeda_pipeline_obj_funcs = {
 +      .atomic_create_state    = komeda_pipeline_atomic_create_state,
        .atomic_duplicate_state = komeda_pipeline_atomic_duplicate_state,
        .atomic_destroy_state   = komeda_pipeline_atomic_destroy_state,
  };
index 1ab0233a2a18f784d8c43e61b94e40a06bd4baf6,170113520a432a015de9a75d921658957b47c46f..d8a732f21d3c04eaeefa64d5fe34d156369787ac
@@@ -5184,28 -5184,6 +5184,28 @@@ static void drm_dp_mst_destroy_state(st
        kfree(mst_state);
  }
  
-       mst_state = kzalloc(sizeof(*mst_state), GFP_KERNEL);
 +static struct drm_private_state *
 +drm_dp_mst_atomic_create_state(struct drm_private_obj *obj)
 +{
 +      struct drm_dp_mst_topology_mgr *mgr =
 +              to_dp_mst_topology_mgr(obj);
 +      struct drm_dp_mst_topology_state *mst_state;
 +
++      mst_state = kzalloc_obj(*mst_state);
 +      if (!mst_state)
 +              return ERR_PTR(-ENOMEM);
 +
 +      __drm_atomic_helper_private_obj_create_state(obj, &mst_state->base);
 +
 +      mst_state->total_avail_slots = 63;
 +      mst_state->start_slot = 1;
 +
 +      mst_state->mgr = mgr;
 +      INIT_LIST_HEAD(&mst_state->payloads);
 +
 +      return &mst_state->base;
 +}
 +
  static bool drm_dp_mst_port_downstream_of_branch(struct drm_dp_mst_port *port,
                                                 struct drm_dp_mst_branch *branch)
  {
index 536b5aaae77669936c439279c9d82db84155d5fa,7aee57416902977bfb4a37f731ceeefd9f3d6132..f442430d8de78221ec88d0567dc68f2fa8d2b82a
@@@ -1497,22 -1497,7 +1497,22 @@@ static void tunnel_group_destroy_state(
        free_group_state(to_group_state(state));
  }
  
-       group_state = kzalloc(sizeof(*group_state), GFP_KERNEL);
 +static struct drm_private_state *tunnel_group_atomic_create_state(struct drm_private_obj *obj)
 +{
 +      struct drm_dp_tunnel_group_state *group_state;
 +
++      group_state = kzalloc_obj(*group_state);
 +      if (!group_state)
 +              return ERR_PTR(-ENOMEM);
 +
 +      __drm_atomic_helper_private_obj_create_state(obj, &group_state->base);
 +      INIT_LIST_HEAD(&group_state->tunnel_states);
 +
 +      return &group_state->base;
 +}
 +
  static const struct drm_private_state_funcs tunnel_group_funcs = {
 +      .atomic_create_state = tunnel_group_atomic_create_state,
        .atomic_duplicate_state = tunnel_group_duplicate_state,
        .atomic_destroy_state = tunnel_group_destroy_state,
  };
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index c4a3de3b920e6ba2d46959d7688cef13e1dd18f2,891c3bff5ae00993029175fee16c61532f24eaf6..fdf08cae1c5befbcfcaa21917189f7bcc72bfc5c
@@@ -840,7 -832,8 +841,7 @@@ int drm_gem_objects_lookup(struct drm_f
        if (!count)
                return 0;
  
-       objs = kvmalloc_array(count, sizeof(*objs), GFP_KERNEL);
 -      objs = kvmalloc_objs(struct drm_gem_object *, count,
 -                           GFP_KERNEL | __GFP_ZERO);
++      objs = kvmalloc_objs(*objs, count);
        if (!objs)
                return -ENOMEM;
  
Simple merge
index a0834c550a852e486e1b76b44b38b2213b3bf670,0cf7393f89c6b02b0d7e5a421dd0f2e40fda1c0f..006a72ed5064fcc72dd4cf0c88e91744c0fb3254
@@@ -614,15 -612,13 +614,15 @@@ int pvr_power_domains_init(struct pvr_d
        if (domain_count <= 1)
                return 0;
  
 -      link_count = domain_count + (domain_count - 1);
 +      if (domain_count > ARRAY_SIZE(ROGUE_PD_NAMES)) {
 +              drm_err(drm_dev, "%s() only supports %zu domains on Rogue",
 +                      __func__, ARRAY_SIZE(ROGUE_PD_NAMES));
 +              return -EOPNOTSUPP;
 +      }
  
 -      domain_devs = kzalloc_objs(*domain_devs, domain_count);
 -      if (!domain_devs)
 -              return -ENOMEM;
 +      link_count = domain_count - 1;
  
-       domain_links = kcalloc(link_count, sizeof(*domain_links), GFP_KERNEL);
+       domain_links = kzalloc_objs(*domain_links, link_count);
        if (!domain_links)
                return -ENOMEM;
  
index 862691991ed2770d30342bf531e828e34bd7080a,6601589339f66d2b3b6049b807a11d73735ac17d..9522a2e6ecd4166efc648a24e237b8166e426d48
@@@ -954,20 -954,6 +954,20 @@@ static void ingenic_drm_destroy_state(s
        kfree(priv_state);
  }
  
-       priv_state = kzalloc(sizeof(*priv_state), GFP_KERNEL);
 +static struct drm_private_state *
 +ingenic_drm_create_state(struct drm_private_obj *obj)
 +{
 +      struct ingenic_drm_private_state *priv_state;
 +
++      priv_state = kzalloc_obj(*priv_state);
 +      if (!priv_state)
 +              return ERR_PTR(-ENOMEM);
 +
 +      __drm_atomic_helper_private_obj_create_state(obj, &priv_state->base);
 +
 +      return &priv_state->base;
 +}
 +
  DEFINE_DRM_GEM_DMA_FOPS(ingenic_drm_fops);
  
  static const struct drm_driver ingenic_drm_driver_data = {
index 253a1ce30997308547b61339468d52e6875785d3,289274f464ba7c6c48315dae09568f865cd7bd8f..4fec37c63e7cb7c96b32191d680c89e20837b155
@@@ -750,22 -750,7 +750,22 @@@ static void ingenic_ipu_destroy_state(s
        kfree(priv_state);
  }
  
-       priv_state = kzalloc(sizeof(*priv_state), GFP_KERNEL);
 +static struct drm_private_state *
 +ingenic_ipu_create_state(struct drm_private_obj *obj)
 +{
 +      struct ingenic_ipu_private_state *priv_state;
 +
++      priv_state = kzalloc_obj(*priv_state);
 +      if (!priv_state)
 +              return ERR_PTR(-ENOMEM);
 +
 +      __drm_atomic_helper_private_obj_create_state(obj, &priv_state->base);
 +
 +      return &priv_state->base;
 +}
 +
  static const struct drm_private_state_funcs ingenic_ipu_private_state_funcs = {
 +      .atomic_create_state = ingenic_ipu_create_state,
        .atomic_duplicate_state = ingenic_ipu_duplicate_state,
        .atomic_destroy_state = ingenic_ipu_destroy_state,
  };
index 3ae0987cfffee243ab9e181f35e0cb1b9b9dc406,61d7e65469b3ad3b6a78ae8494391a652b6ae7c2..4495525139978e64e0c650aae0cdc1a57e0c8398
@@@ -367,24 -367,6 +367,24 @@@ static void dpu_kms_global_destroy_stat
        kfree(dpu_state);
  }
  
-       dpu_state = kzalloc(sizeof(*dpu_state), GFP_KERNEL);
 +static struct drm_private_state *
 +dpu_kms_global_create_state(struct drm_private_obj *obj)
 +{
 +      struct drm_device *dev = obj->dev;
 +      struct msm_drm_private *priv = dev->dev_private;
 +      struct dpu_kms *dpu_kms = to_dpu_kms(priv->kms);
 +      struct dpu_global_state *dpu_state;
 +
++      dpu_state = kzalloc_obj(*dpu_state);
 +      if (!dpu_state)
 +              return ERR_PTR(-ENOMEM);
 +
 +      __drm_atomic_helper_private_obj_create_state(obj, &dpu_state->base);
 +      dpu_state->rm = &dpu_kms->rm;
 +
 +      return &dpu_state->base;
 +}
 +
  static void dpu_kms_global_print_state(struct drm_printer *p,
                                       const struct drm_private_state *state)
  {
index 1fc9671590762b800bdeb6cd440b1ae6ee634679,8bb503e0f9620117b547fb3cb4afa1fb0e8316f3..1e3dc9bf9494c2b06ad5acaca74f7b17221b7833
@@@ -114,24 -114,6 +114,24 @@@ static void mdp5_global_destroy_state(s
        kfree(mdp5_state);
  }
  
-       mdp5_state = kzalloc(sizeof(*mdp5_state), GFP_KERNEL);
 +static struct drm_private_state *
 +mdp5_global_create_state(struct drm_private_obj *obj)
 +{
 +      struct drm_device *dev = obj->dev;
 +      struct msm_drm_private *priv = dev->dev_private;
 +      struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(priv->kms));
 +      struct mdp5_global_state *mdp5_state;
 +
++      mdp5_state = kzalloc_obj(*mdp5_state);
 +      if (!mdp5_state)
 +              return ERR_PTR(-ENOMEM);
 +
 +      __drm_atomic_helper_private_obj_create_state(obj, &mdp5_state->base);
 +      mdp5_state->mdp5_kms = mdp5_kms;
 +
 +      return &mdp5_state->base;
 +}
 +
  static void mdp5_global_print_state(struct drm_printer *p,
                                    const struct drm_private_state *state)
  {
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index e94e2d344e0fbaefa12dabd3e1b94bb2ab0103d4,245485e744a50654917675b4a49df0f87eed2eba..0507f24adcdd05660b9ef349dd609b095d52a9f8
@@@ -85,22 -85,7 +85,22 @@@ static void vc4_ctm_destroy_state(struc
        kfree(ctm_state);
  }
  
-       ctm_state = kzalloc(sizeof(*ctm_state), GFP_KERNEL);
 +static struct drm_private_state *
 +vc4_ctm_create_state(struct drm_private_obj *obj)
 +{
 +      struct vc4_ctm_state *ctm_state;
 +
++      ctm_state = kzalloc_obj(*ctm_state);
 +      if (!ctm_state)
 +              return ERR_PTR(-ENOMEM);
 +
 +      __drm_atomic_helper_private_obj_create_state(obj, &ctm_state->base);
 +
 +      return &ctm_state->base;
 +}
 +
  static const struct drm_private_state_funcs vc4_ctm_state_funcs = {
 +      .atomic_create_state = vc4_ctm_create_state,
        .atomic_duplicate_state = vc4_ctm_duplicate_state,
        .atomic_destroy_state = vc4_ctm_destroy_state,
  };
@@@ -727,22 -718,7 +727,22 @@@ static void vc4_load_tracker_destroy_st
        kfree(load_state);
  }
  
-       load_state = kzalloc(sizeof(*load_state), GFP_KERNEL);
 +static struct drm_private_state *
 +vc4_load_tracker_create_state(struct drm_private_obj *obj)
 +{
 +      struct vc4_load_tracker_state *load_state;
 +
++      load_state = kzalloc_obj(*load_state);
 +      if (!load_state)
 +              return ERR_PTR(-ENOMEM);
 +
 +      __drm_atomic_helper_private_obj_create_state(obj, &load_state->base);
 +
 +      return &load_state->base;
 +}
 +
  static const struct drm_private_state_funcs vc4_load_tracker_state_funcs = {
 +      .atomic_create_state = vc4_load_tracker_create_state,
        .atomic_duplicate_state = vc4_load_tracker_duplicate_state,
        .atomic_destroy_state = vc4_load_tracker_destroy_state,
  };
@@@ -818,22 -800,7 +818,22 @@@ static void vc4_hvs_channels_print_stat
        }
  }
  
-       hvs_state = kzalloc(sizeof(*hvs_state), GFP_KERNEL);
 +static struct drm_private_state *
 +vc4_hvs_channels_create_state(struct drm_private_obj *obj)
 +{
 +      struct vc4_hvs_state *hvs_state;
 +
++      hvs_state = kzalloc_obj(*hvs_state);
 +      if (!hvs_state)
 +              return ERR_PTR(-ENOMEM);
 +
 +      __drm_atomic_helper_private_obj_create_state(obj, &hvs_state->base);
 +
 +      return &hvs_state->base;
 +}
 +
  static const struct drm_private_state_funcs vc4_hvs_state_funcs = {
 +      .atomic_create_state = vc4_hvs_channels_create_state,
        .atomic_duplicate_state = vc4_hvs_channels_duplicate_state,
        .atomic_destroy_state = vc4_hvs_channels_destroy_state,
        .atomic_print_state = vc4_hvs_channels_print_state,
Simple merge
index 693575e24db096d6a54eb62916d19754e2bae747,8adcf5c15d456fc85977a02cdc9e4abdf5639810..70b3b836e1c9911a3b6420cf998ed9d572aeedf0
@@@ -312,10 -310,10 +310,10 @@@ struct drm_gem_object *virtgpu_gem_prim
                }
        }
  
 -      if (!vgdev->has_resource_blob || vgdev->has_virgl_3d)
 +      if (!vgdev->has_resource_blob)
                return drm_gem_prime_import(dev, buf);
  
-       bo = kzalloc(sizeof(*bo), GFP_KERNEL);
+       bo = kzalloc_obj(*bo);
        if (!bo)
                return ERR_PTR(-ENOMEM);
  
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge