* [PATCH v2 1/4] drm/vkms: init plane using drmm_universal_plane_alloc
@ 2021-04-12 22:48 Melissa Wen
2021-04-13 6:51 ` kernel test robot
0 siblings, 1 reply; 3+ messages in thread
From: Melissa Wen @ 2021-04-12 22:48 UTC (permalink / raw)
To: Rodrigo Siqueira, Haneen Mohammed, Daniel Vetter, David Airlie,
Simon Ser, Sumera Priyadarsini
Cc: dri-devel
By using drmm_universal_plane_alloc instead of
drm_universal_plane_init, we let the DRM infrastructure handles
resource allocation and cleanup. We can also get rid of some
code repetitions for plane cleanup, improving code maintainability
in vkms.
Signed-off-by: Melissa Wen <melissa.srw@gmail.com>
---
drivers/gpu/drm/vkms/vkms_drv.h | 8 ++++++--
drivers/gpu/drm/vkms/vkms_output.c | 19 +++++--------------
drivers/gpu/drm/vkms/vkms_plane.c | 29 +++++++++++------------------
3 files changed, 22 insertions(+), 34 deletions(-)
diff --git a/drivers/gpu/drm/vkms/vkms_drv.h b/drivers/gpu/drm/vkms/vkms_drv.h
index 35540c7c4416..70fb79621617 100644
--- a/drivers/gpu/drm/vkms/vkms_drv.h
+++ b/drivers/gpu/drm/vkms/vkms_drv.h
@@ -37,6 +37,10 @@ struct vkms_plane_state {
struct vkms_composer *composer;
};
+struct vkms_plane {
+ struct drm_plane base;
+};
+
/**
* vkms_crtc_state - Driver specific CRTC state
* @base: base CRTC state
@@ -114,8 +118,8 @@ int vkms_crtc_init(struct drm_device *dev, struct drm_crtc *crtc,
int vkms_output_init(struct vkms_device *vkmsdev, int index);
-struct drm_plane *vkms_plane_init(struct vkms_device *vkmsdev,
- enum drm_plane_type type, int index);
+struct vkms_plane *vkms_plane_init(struct vkms_device *vkmsdev,
+ enum drm_plane_type type, int index);
/* CRC Support */
const char *const *vkms_get_crc_sources(struct drm_crtc *crtc,
diff --git a/drivers/gpu/drm/vkms/vkms_output.c b/drivers/gpu/drm/vkms/vkms_output.c
index f5f6f15c362c..6979fbc7f821 100644
--- a/drivers/gpu/drm/vkms/vkms_output.c
+++ b/drivers/gpu/drm/vkms/vkms_output.c
@@ -39,7 +39,7 @@ int vkms_output_init(struct vkms_device *vkmsdev, int index)
struct drm_connector *connector = &output->connector;
struct drm_encoder *encoder = &output->encoder;
struct drm_crtc *crtc = &output->crtc;
- struct drm_plane *primary, *cursor = NULL;
+ struct vkms_plane *primary, *cursor = NULL;
int ret;
int writeback;
@@ -49,15 +49,13 @@ int vkms_output_init(struct vkms_device *vkmsdev, int index)
if (vkmsdev->config->cursor) {
cursor = vkms_plane_init(vkmsdev, DRM_PLANE_TYPE_CURSOR, index);
- if (IS_ERR(cursor)) {
- ret = PTR_ERR(cursor);
- goto err_cursor;
- }
+ if (IS_ERR(cursor))
+ return PTR_ERR(cursor);
}
- ret = vkms_crtc_init(dev, crtc, primary, cursor);
+ ret = vkms_crtc_init(dev, crtc, &primary->base, &cursor->base);
if (ret)
- goto err_crtc;
+ return ret;
ret = drm_connector_init(dev, connector, &vkms_connector_funcs,
DRM_MODE_CONNECTOR_VIRTUAL);
@@ -100,12 +98,5 @@ int vkms_output_init(struct vkms_device *vkmsdev, int index)
err_connector:
drm_crtc_cleanup(crtc);
-err_crtc:
- if (vkmsdev->config->cursor)
- drm_plane_cleanup(cursor);
-
-err_cursor:
- drm_plane_cleanup(primary);
-
return ret;
}
diff --git a/drivers/gpu/drm/vkms/vkms_plane.c b/drivers/gpu/drm/vkms/vkms_plane.c
index 6d310d31b75d..36562846f6cb 100644
--- a/drivers/gpu/drm/vkms/vkms_plane.c
+++ b/drivers/gpu/drm/vkms/vkms_plane.c
@@ -86,7 +86,6 @@ static void vkms_plane_reset(struct drm_plane *plane)
static const struct drm_plane_funcs vkms_plane_funcs = {
.update_plane = drm_atomic_helper_update_plane,
.disable_plane = drm_atomic_helper_disable_plane,
- .destroy = drm_plane_cleanup,
.reset = vkms_plane_reset,
.atomic_duplicate_state = vkms_plane_duplicate_state,
.atomic_destroy_state = vkms_plane_destroy_state,
@@ -191,18 +190,14 @@ static const struct drm_plane_helper_funcs vkms_primary_helper_funcs = {
.cleanup_fb = vkms_cleanup_fb,
};
-struct drm_plane *vkms_plane_init(struct vkms_device *vkmsdev,
- enum drm_plane_type type, int index)
+struct vkms_plane *vkms_plane_init(struct vkms_device *vkmsdev,
+ enum drm_plane_type type, int index)
{
struct drm_device *dev = &vkmsdev->drm;
const struct drm_plane_helper_funcs *funcs;
- struct drm_plane *plane;
+ struct vkms_plane *plane;
const u32 *formats;
- int ret, nformats;
-
- plane = kzalloc(sizeof(*plane), GFP_KERNEL);
- if (!plane)
- return ERR_PTR(-ENOMEM);
+ int nformats;
if (type == DRM_PLANE_TYPE_CURSOR) {
formats = vkms_cursor_formats;
@@ -214,16 +209,14 @@ struct drm_plane *vkms_plane_init(struct vkms_device *vkmsdev,
funcs = &vkms_primary_helper_funcs;
}
- ret = drm_universal_plane_init(dev, plane, 1 << index,
- &vkms_plane_funcs,
- formats, nformats,
- NULL, type, NULL);
- if (ret) {
- kfree(plane);
- return ERR_PTR(ret);
- }
+ plane = drmm_universal_plane_alloc(dev, struct vkms_plane, base, 1 << index,
+ &vkms_plane_funcs,
+ formats, nformats,
+ NULL, type, NULL);
+ if (IS_ERR(plane))
+ return plane;
- drm_plane_helper_add(plane, funcs);
+ drm_plane_helper_add(&plane->base, &vkms_primary_helper_funcs);
return plane;
}
--
2.30.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v2 1/4] drm/vkms: init plane using drmm_universal_plane_alloc
2021-04-12 22:48 [PATCH v2 1/4] drm/vkms: init plane using drmm_universal_plane_alloc Melissa Wen
@ 2021-04-13 6:51 ` kernel test robot
0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2021-04-13 6:51 UTC (permalink / raw)
To: Melissa Wen, Rodrigo Siqueira, Haneen Mohammed, Daniel Vetter,
David Airlie, Simon Ser, Sumera Priyadarsini
Cc: kbuild-all, dri-devel
[-- Attachment #1: Type: text/plain, Size: 2822 bytes --]
Hi Melissa,
I love your patch! Perhaps something to improve:
[auto build test WARNING on next-20210412]
[also build test WARNING on v5.12-rc7]
[cannot apply to linus/master v5.12-rc7 v5.12-rc6 v5.12-rc5]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Melissa-Wen/drm-vkms-add-overlay-plane-support/20210413-065337
base: 5df924d19629975d565da37eb7268c7bf4d491fe
config: csky-randconfig-r025-20210413 (attached as .config)
compiler: csky-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/0a7d24840b9dbaabf6247f940b4387a120efe9a9
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Melissa-Wen/drm-vkms-add-overlay-plane-support/20210413-065337
git checkout 0a7d24840b9dbaabf6247f940b4387a120efe9a9
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=csky
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
drivers/gpu/drm/vkms/vkms_plane.c: In function 'vkms_plane_init':
>> drivers/gpu/drm/vkms/vkms_plane.c:197:39: warning: variable 'funcs' set but not used [-Wunused-but-set-variable]
197 | const struct drm_plane_helper_funcs *funcs;
| ^~~~~
Kconfig warnings: (for reference only)
WARNING: unmet direct dependencies detected for LOCKDEP
Depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT && (FRAME_POINTER || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86)
Selected by
- PROVE_LOCKING && DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
- LOCK_STAT && DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
- DEBUG_LOCK_ALLOC && DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
vim +/funcs +197 drivers/gpu/drm/vkms/vkms_plane.c
42ac03213b7f10 Rodrigo Siqueira 2018-07-12 192
0a7d24840b9dba Melissa Wen 2021-04-12 193 struct vkms_plane *vkms_plane_init(struct vkms_device *vkmsdev,
e9d85f731de06a Rodrigo Siqueira 2019-06-25 194 enum drm_plane_type type, int index)
854502fa0a38dc Rodrigo Siqueira 2018-05-16 195 {
854502fa0a38dc Rodrigo Siqueira 2018-05-16 196 struct drm_device *dev = &vkmsdev->drm;
c27d931d402b51 Haneen Mohammed 2018-09-06 @197 const struct drm_plane_helper_funcs *funcs;
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 25359 bytes --]
[-- Attachment #3: Type: text/plain, Size: 160 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2 1/4] drm/vkms: init plane using drmm_universal_plane_alloc
@ 2021-04-13 6:51 ` kernel test robot
0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2021-04-13 6:51 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 2880 bytes --]
Hi Melissa,
I love your patch! Perhaps something to improve:
[auto build test WARNING on next-20210412]
[also build test WARNING on v5.12-rc7]
[cannot apply to linus/master v5.12-rc7 v5.12-rc6 v5.12-rc5]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Melissa-Wen/drm-vkms-add-overlay-plane-support/20210413-065337
base: 5df924d19629975d565da37eb7268c7bf4d491fe
config: csky-randconfig-r025-20210413 (attached as .config)
compiler: csky-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/0a7d24840b9dbaabf6247f940b4387a120efe9a9
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Melissa-Wen/drm-vkms-add-overlay-plane-support/20210413-065337
git checkout 0a7d24840b9dbaabf6247f940b4387a120efe9a9
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=csky
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
drivers/gpu/drm/vkms/vkms_plane.c: In function 'vkms_plane_init':
>> drivers/gpu/drm/vkms/vkms_plane.c:197:39: warning: variable 'funcs' set but not used [-Wunused-but-set-variable]
197 | const struct drm_plane_helper_funcs *funcs;
| ^~~~~
Kconfig warnings: (for reference only)
WARNING: unmet direct dependencies detected for LOCKDEP
Depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT && (FRAME_POINTER || MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86)
Selected by
- PROVE_LOCKING && DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
- LOCK_STAT && DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
- DEBUG_LOCK_ALLOC && DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
vim +/funcs +197 drivers/gpu/drm/vkms/vkms_plane.c
42ac03213b7f10 Rodrigo Siqueira 2018-07-12 192
0a7d24840b9dba Melissa Wen 2021-04-12 193 struct vkms_plane *vkms_plane_init(struct vkms_device *vkmsdev,
e9d85f731de06a Rodrigo Siqueira 2019-06-25 194 enum drm_plane_type type, int index)
854502fa0a38dc Rodrigo Siqueira 2018-05-16 195 {
854502fa0a38dc Rodrigo Siqueira 2018-05-16 196 struct drm_device *dev = &vkmsdev->drm;
c27d931d402b51 Haneen Mohammed 2018-09-06 @197 const struct drm_plane_helper_funcs *funcs;
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 25359 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-04-13 6:52 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-12 22:48 [PATCH v2 1/4] drm/vkms: init plane using drmm_universal_plane_alloc Melissa Wen
2021-04-13 6:51 ` kernel test robot
2021-04-13 6:51 ` kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.