> > --- a/drivers/gpu/drm/vkms/vkms_drv.h > > +++ b/drivers/gpu/drm/vkms/vkms_drv.h > > @@ -213,7 +213,7 @@ struct vkms_crtc_state { > > */ > > struct vkms_output { > > struct drm_crtc crtc; > > - struct drm_writeback_connector wb_connector; > > + struct drm_connector connector; > > Can you keep wb_connector here?
Reason for keeping drm_connector here is that drm_writeback_connector now resides within drm_connector so kzalloc for drm_writeback_connector wont allocate memory for drm_connector hence the reason for drm_connector. Unless you meant that I keep the variable name as wb_connector then yes can be done 😃 Regards, Suraj Kandpal > > > struct drm_encoder wb_encoder; > > struct hrtimer vblank_hrtimer; > > ktime_t period_ns; > > diff --git a/drivers/gpu/drm/vkms/vkms_writeback.c > > b/drivers/gpu/drm/vkms/vkms_writeback.c > > index 45d69a3b85f6..13c2a5c8f57a 100644 > > --- a/drivers/gpu/drm/vkms/vkms_writeback.c > > +++ b/drivers/gpu/drm/vkms/vkms_writeback.c > > @@ -102,13 +102,16 @@ static int vkms_wb_prepare_job(struct > drm_writeback_connector *wb_connector, > > return ret; > > } > > > > -static void vkms_wb_cleanup_job(struct drm_writeback_connector > > *connector, > > +static void vkms_wb_cleanup_job(struct drm_writeback_connector > > +*wb_connector, > > struct drm_writeback_job *job) > > { > > struct vkms_writeback_job *vkmsjob = job->priv; > > + struct drm_connector *connector = container_of(wb_connector, > > + struct drm_connector, > > + writeback); > > struct vkms_output *vkms_output = container_of(connector, > > struct vkms_output, > > - wb_connector); > > + connector); > > > > if (!job->fb) > > return; > > @@ -127,8 +130,8 @@ static void vkms_wb_atomic_commit(struct > drm_connector *conn, > > struct drm_connector_state *connector_state = > drm_atomic_get_new_connector_state(state, > > > conn); > > struct vkms_output *output = > drm_crtc_to_vkms_output(connector_state->crtc); > > - struct drm_writeback_connector *wb_conn = &output- > >wb_connector; > > - struct drm_connector_state *conn_state = wb_conn->base.state; > > + struct drm_writeback_connector *wb_conn = &output- > >connector.writeback; > > + struct drm_connector_state *conn_state = output->connector.state; > > struct vkms_crtc_state *crtc_state = output->composer_state; > > struct drm_framebuffer *fb = connector_state->writeback_job->fb; > > u16 crtc_height = crtc_state->base.mode.vdisplay; @@ -166,7 +169,7 > > @@ static const struct drm_connector_helper_funcs > vkms_wb_conn_helper_funcs = { > > int vkms_enable_writeback_connector(struct vkms_device *vkmsdev, > > struct vkms_output *vkms_output) > > { > > - struct drm_writeback_connector *wb = &vkms_output- > >wb_connector; > > + struct drm_writeback_connector *wb = > > +&vkms_output->connector.writeback; > > int ret; > > > > ret = drmm_encoder_init(&vkmsdev->drm, &vkms_output- > >wb_encoder, @@ > > -177,7 +180,7 @@ int vkms_enable_writeback_connector(struct vkms_device > *vkmsdev, > > vkms_output->wb_encoder.possible_clones |= > > drm_encoder_mask(&vkms_output->wb_encoder); > > > > - drm_connector_helper_add(&wb->base, > &vkms_wb_conn_helper_funcs); > > + drm_connector_helper_add(&vkms_output->connector, > > +&vkms_wb_conn_helper_funcs); > > > > return drmm_writeback_connector_init(&vkmsdev->drm, wb, > > &vkms_wb_connector_funcs, > > -- > Louis Chauvet, Bootlin > Embedded Linux and Kernel engineering > https://bootlin.com