From: Sean Paul <sean@poorly.run>
To: Rob Clark <robdclark@gmail.com>
Cc: dri-devel@lists.freedesktop.org,
Rob Clark <robdclark@chromium.org>, Sean Paul <sean@poorly.run>,
David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch>,
Jeykumar Sankaran <jsanka@codeaurora.org>,
Jordan Crouse <jcrouse@codeaurora.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Sravanthi Kollukuduru <skolluku@codeaurora.org>,
Bruce Wang <bzwang@chromium.org>,
Jonathan Marek <jonathan@marek.ca>,
Allison Randal <allison@lohutok.net>,
Thomas Gleixner <tglx@linutronix.de>,
Mamta Shukla <mamtashukla555@gmail.com>,
Georgi Djakov <georgi.djakov@linaro.org>,
"open list:DRM DRIVER FOR MSM ADRENO GPU"
<linux-arm-msm@vger.kernel.org>,
"open list:DRM DRIVER FOR MSM ADRENO GPU"
<freedreno@lists.freedesktop.org>,
open list <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 07/10] drm/msm: split power control from prepare/complete_commit
Date: Tue, 3 Sep 2019 16:37:12 -0400 [thread overview]
Message-ID: <20190903203712.GL218215@art_vandelay> (raw)
In-Reply-To: <20190829164601.11615-8-robdclark@gmail.com>
On Thu, Aug 29, 2019 at 09:45:15AM -0700, Rob Clark wrote:
> From: Rob Clark <robdclark@chromium.org>
>
> With atomic commit, ->prepare_commit() and ->complete_commit() may not
> be evenly balanced (although ->complete_commit() will complete each
> crtc that had been previously prepared). So these will no longer be
> a good place to enable/disable clocks needed for hw access.
>
> Signed-off-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Sean Paul <sean@poorly.run>
> ---
> drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 17 ++++++++++++++---
> drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c | 19 ++++++++++++++-----
> drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 20 ++++++++++++++------
> drivers/gpu/drm/msm/msm_atomic.c | 2 ++
> drivers/gpu/drm/msm/msm_kms.h | 10 ++++++++++
> 5 files changed, 54 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> index efbf8fd343de..d54741f3ad9f 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> @@ -248,6 +248,18 @@ static void dpu_kms_disable_vblank(struct msm_kms *kms, struct drm_crtc *crtc)
> dpu_crtc_vblank(crtc, false);
> }
>
> +static void dpu_kms_enable_commit(struct msm_kms *kms)
> +{
> + struct dpu_kms *dpu_kms = to_dpu_kms(kms);
> + pm_runtime_get_sync(&dpu_kms->pdev->dev);
> +}
> +
> +static void dpu_kms_disable_commit(struct msm_kms *kms)
> +{
> + struct dpu_kms *dpu_kms = to_dpu_kms(kms);
> + pm_runtime_put_sync(&dpu_kms->pdev->dev);
> +}
> +
> static void dpu_kms_prepare_commit(struct msm_kms *kms,
> struct drm_atomic_state *state)
> {
> @@ -267,7 +279,6 @@ static void dpu_kms_prepare_commit(struct msm_kms *kms,
> if (!dev || !dev->dev_private)
> return;
> priv = dev->dev_private;
> - pm_runtime_get_sync(&dpu_kms->pdev->dev);
>
> /* Call prepare_commit for all affected encoders */
> for_each_new_crtc_in_state(state, crtc, crtc_state, i) {
> @@ -335,8 +346,6 @@ static void dpu_kms_complete_commit(struct msm_kms *kms, unsigned crtc_mask)
> for_each_crtc_mask(dpu_kms->dev, crtc, crtc_mask)
> dpu_crtc_complete_commit(crtc);
>
> - pm_runtime_put_sync(&dpu_kms->pdev->dev);
> -
> DPU_ATRACE_END("kms_complete_commit");
> }
>
> @@ -682,6 +691,8 @@ static const struct msm_kms_funcs kms_funcs = {
> .irq_preinstall = dpu_irq_preinstall,
> .irq_uninstall = dpu_irq_uninstall,
> .irq = dpu_irq,
> + .enable_commit = dpu_kms_enable_commit,
> + .disable_commit = dpu_kms_disable_commit,
> .prepare_commit = dpu_kms_prepare_commit,
> .flush_commit = dpu_kms_flush_commit,
> .commit = dpu_kms_commit,
> diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c
> index 78ce2c8a9a38..500e5b08c11f 100644
> --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c
> +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c
> @@ -93,15 +93,24 @@ static int mdp4_hw_init(struct msm_kms *kms)
> return ret;
> }
>
> -static void mdp4_prepare_commit(struct msm_kms *kms, struct drm_atomic_state *state)
> +static void mdp4_enable_commit(struct msm_kms *kms)
> +{
> + struct mdp4_kms *mdp4_kms = to_mdp4_kms(to_mdp_kms(kms));
> + mdp4_enable(mdp4_kms);
> +}
> +
> +static void mdp4_disable_commit(struct msm_kms *kms)
> {
> struct mdp4_kms *mdp4_kms = to_mdp4_kms(to_mdp_kms(kms));
> + mdp4_disable(mdp4_kms);
> +}
> +
> +static void mdp4_prepare_commit(struct msm_kms *kms, struct drm_atomic_state *state)
> +{
> int i;
> struct drm_crtc *crtc;
> struct drm_crtc_state *crtc_state;
>
> - mdp4_enable(mdp4_kms);
> -
> /* see 119ecb7fd */
> for_each_new_crtc_in_state(state, crtc, crtc_state, i)
> drm_crtc_vblank_get(crtc);
> @@ -129,8 +138,6 @@ static void mdp4_complete_commit(struct msm_kms *kms, unsigned crtc_mask)
> /* see 119ecb7fd */
> for_each_crtc_mask(mdp4_kms->dev, crtc, crtc_mask)
> drm_crtc_vblank_put(crtc);
> -
> - mdp4_disable(mdp4_kms);
> }
>
> static long mdp4_round_pixclk(struct msm_kms *kms, unsigned long rate,
> @@ -182,6 +189,8 @@ static const struct mdp_kms_funcs kms_funcs = {
> .irq = mdp4_irq,
> .enable_vblank = mdp4_enable_vblank,
> .disable_vblank = mdp4_disable_vblank,
> + .enable_commit = mdp4_enable_commit,
> + .disable_commit = mdp4_disable_commit,
> .prepare_commit = mdp4_prepare_commit,
> .flush_commit = mdp4_flush_commit,
> .wait_flush = mdp4_wait_flush,
> diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
> index eff1b000258e..ba67bde1dbef 100644
> --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
> +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
> @@ -140,16 +140,25 @@ static int mdp5_global_obj_init(struct mdp5_kms *mdp5_kms)
> return 0;
> }
>
> +static void mdp5_enable_commit(struct msm_kms *kms)
> +{
> + struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(kms));
> + pm_runtime_get_sync(&mdp5_kms->pdev->dev);
> +}
> +
> +static void mdp5_disable_commit(struct msm_kms *kms)
> +{
> + struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(kms));
> + pm_runtime_put_sync(&mdp5_kms->pdev->dev);
> +}
> +
> static void mdp5_prepare_commit(struct msm_kms *kms, struct drm_atomic_state *state)
> {
> struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(kms));
> - struct device *dev = &mdp5_kms->pdev->dev;
> struct mdp5_global_state *global_state;
>
> global_state = mdp5_get_existing_global_state(mdp5_kms);
>
> - pm_runtime_get_sync(dev);
> -
> if (mdp5_kms->smp)
> mdp5_smp_prepare_commit(mdp5_kms->smp, &global_state->smp);
> }
> @@ -171,15 +180,12 @@ static void mdp5_wait_flush(struct msm_kms *kms, unsigned crtc_mask)
> static void mdp5_complete_commit(struct msm_kms *kms, unsigned crtc_mask)
> {
> struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(kms));
> - struct device *dev = &mdp5_kms->pdev->dev;
> struct mdp5_global_state *global_state;
>
> global_state = mdp5_get_existing_global_state(mdp5_kms);
>
> if (mdp5_kms->smp)
> mdp5_smp_complete_commit(mdp5_kms->smp, &global_state->smp);
> -
> - pm_runtime_put_sync(dev);
> }
>
> static long mdp5_round_pixclk(struct msm_kms *kms, unsigned long rate,
> @@ -278,6 +284,8 @@ static const struct mdp_kms_funcs kms_funcs = {
> .enable_vblank = mdp5_enable_vblank,
> .disable_vblank = mdp5_disable_vblank,
> .flush_commit = mdp5_flush_commit,
> + .enable_commit = mdp5_enable_commit,
> + .disable_commit = mdp5_disable_commit,
> .prepare_commit = mdp5_prepare_commit,
> .wait_flush = mdp5_wait_flush,
> .complete_commit = mdp5_complete_commit,
> diff --git a/drivers/gpu/drm/msm/msm_atomic.c b/drivers/gpu/drm/msm/msm_atomic.c
> index e3537df848fa..614fb9c5bb58 100644
> --- a/drivers/gpu/drm/msm/msm_atomic.c
> +++ b/drivers/gpu/drm/msm/msm_atomic.c
> @@ -52,6 +52,7 @@ void msm_atomic_commit_tail(struct drm_atomic_state *state)
> struct msm_kms *kms = priv->kms;
> unsigned crtc_mask = get_crtc_mask(state);
>
> + kms->funcs->enable_commit(kms);
> kms->funcs->prepare_commit(kms, state);
>
> /*
> @@ -72,6 +73,7 @@ void msm_atomic_commit_tail(struct drm_atomic_state *state)
>
> kms->funcs->wait_flush(kms, crtc_mask);
> kms->funcs->complete_commit(kms, crtc_mask);
> + kms->funcs->disable_commit(kms);
>
> drm_atomic_helper_commit_hw_done(state);
>
> diff --git a/drivers/gpu/drm/msm/msm_kms.h b/drivers/gpu/drm/msm/msm_kms.h
> index bb70c1758c72..811f5e2c2405 100644
> --- a/drivers/gpu/drm/msm/msm_kms.h
> +++ b/drivers/gpu/drm/msm/msm_kms.h
> @@ -35,6 +35,16 @@ struct msm_kms_funcs {
> * Atomic commit handling:
> */
>
> + /**
> + * Enable/disable power/clks needed for hw access done in other
> + * commit related methods.
> + *
> + * If mdp4 is migrated to runpm, we could probably drop these
> + * and use runpm directly.
> + */
> + void (*enable_commit)(struct msm_kms *kms);
> + void (*disable_commit)(struct msm_kms *kms);
> +
> /**
> * Prepare for atomic commit. This is called after any previous
> * (async or otherwise) commit has completed.
> --
> 2.21.0
>
--
Sean Paul, Software Engineer, Google / Chromium OS
WARNING: multiple messages have this Message-ID (diff)
From: Sean Paul <sean@poorly.run>
To: Rob Clark <robdclark@gmail.com>
Cc: dri-devel@lists.freedesktop.org,
Rob Clark <robdclark@chromium.org>, Sean Paul <sean@poorly.run>,
David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch>,
Jeykumar Sankaran <jsanka@codeaurora.org>,
Jordan Crouse <jcrouse@codeaurora.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Sravanthi Kollukuduru <skolluku@codeaurora.org>,
Bruce Wang <bzwang@chromium.org>,
Jonathan Marek <jonathan@marek.ca>,
Allison Randal <allison@lohutok.net>,
Thomas Gleixner <tglx@linutronix.de>,
Mamta Shukla <mamtashukla555@gmail.com>,
Georgi Djakov <georgi.djakov@linaro.org>,
"open list:DRM DRIVER FOR MSM ADRENO GPU"
<linux-arm-msm@vger.kernel.org>,
"open list:DRM DRIVER FOR MSM ADRENO GPU"
<freedreno@lists.freedesktop.org>, open list <linux-kernel@>
Subject: Re: [PATCH 07/10] drm/msm: split power control from prepare/complete_commit
Date: Tue, 3 Sep 2019 16:37:12 -0400 [thread overview]
Message-ID: <20190903203712.GL218215@art_vandelay> (raw)
In-Reply-To: <20190829164601.11615-8-robdclark@gmail.com>
On Thu, Aug 29, 2019 at 09:45:15AM -0700, Rob Clark wrote:
> From: Rob Clark <robdclark@chromium.org>
>
> With atomic commit, ->prepare_commit() and ->complete_commit() may not
> be evenly balanced (although ->complete_commit() will complete each
> crtc that had been previously prepared). So these will no longer be
> a good place to enable/disable clocks needed for hw access.
>
> Signed-off-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Sean Paul <sean@poorly.run>
> ---
> drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 17 ++++++++++++++---
> drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c | 19 ++++++++++++++-----
> drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 20 ++++++++++++++------
> drivers/gpu/drm/msm/msm_atomic.c | 2 ++
> drivers/gpu/drm/msm/msm_kms.h | 10 ++++++++++
> 5 files changed, 54 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> index efbf8fd343de..d54741f3ad9f 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> @@ -248,6 +248,18 @@ static void dpu_kms_disable_vblank(struct msm_kms *kms, struct drm_crtc *crtc)
> dpu_crtc_vblank(crtc, false);
> }
>
> +static void dpu_kms_enable_commit(struct msm_kms *kms)
> +{
> + struct dpu_kms *dpu_kms = to_dpu_kms(kms);
> + pm_runtime_get_sync(&dpu_kms->pdev->dev);
> +}
> +
> +static void dpu_kms_disable_commit(struct msm_kms *kms)
> +{
> + struct dpu_kms *dpu_kms = to_dpu_kms(kms);
> + pm_runtime_put_sync(&dpu_kms->pdev->dev);
> +}
> +
> static void dpu_kms_prepare_commit(struct msm_kms *kms,
> struct drm_atomic_state *state)
> {
> @@ -267,7 +279,6 @@ static void dpu_kms_prepare_commit(struct msm_kms *kms,
> if (!dev || !dev->dev_private)
> return;
> priv = dev->dev_private;
> - pm_runtime_get_sync(&dpu_kms->pdev->dev);
>
> /* Call prepare_commit for all affected encoders */
> for_each_new_crtc_in_state(state, crtc, crtc_state, i) {
> @@ -335,8 +346,6 @@ static void dpu_kms_complete_commit(struct msm_kms *kms, unsigned crtc_mask)
> for_each_crtc_mask(dpu_kms->dev, crtc, crtc_mask)
> dpu_crtc_complete_commit(crtc);
>
> - pm_runtime_put_sync(&dpu_kms->pdev->dev);
> -
> DPU_ATRACE_END("kms_complete_commit");
> }
>
> @@ -682,6 +691,8 @@ static const struct msm_kms_funcs kms_funcs = {
> .irq_preinstall = dpu_irq_preinstall,
> .irq_uninstall = dpu_irq_uninstall,
> .irq = dpu_irq,
> + .enable_commit = dpu_kms_enable_commit,
> + .disable_commit = dpu_kms_disable_commit,
> .prepare_commit = dpu_kms_prepare_commit,
> .flush_commit = dpu_kms_flush_commit,
> .commit = dpu_kms_commit,
> diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c
> index 78ce2c8a9a38..500e5b08c11f 100644
> --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c
> +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c
> @@ -93,15 +93,24 @@ static int mdp4_hw_init(struct msm_kms *kms)
> return ret;
> }
>
> -static void mdp4_prepare_commit(struct msm_kms *kms, struct drm_atomic_state *state)
> +static void mdp4_enable_commit(struct msm_kms *kms)
> +{
> + struct mdp4_kms *mdp4_kms = to_mdp4_kms(to_mdp_kms(kms));
> + mdp4_enable(mdp4_kms);
> +}
> +
> +static void mdp4_disable_commit(struct msm_kms *kms)
> {
> struct mdp4_kms *mdp4_kms = to_mdp4_kms(to_mdp_kms(kms));
> + mdp4_disable(mdp4_kms);
> +}
> +
> +static void mdp4_prepare_commit(struct msm_kms *kms, struct drm_atomic_state *state)
> +{
> int i;
> struct drm_crtc *crtc;
> struct drm_crtc_state *crtc_state;
>
> - mdp4_enable(mdp4_kms);
> -
> /* see 119ecb7fd */
> for_each_new_crtc_in_state(state, crtc, crtc_state, i)
> drm_crtc_vblank_get(crtc);
> @@ -129,8 +138,6 @@ static void mdp4_complete_commit(struct msm_kms *kms, unsigned crtc_mask)
> /* see 119ecb7fd */
> for_each_crtc_mask(mdp4_kms->dev, crtc, crtc_mask)
> drm_crtc_vblank_put(crtc);
> -
> - mdp4_disable(mdp4_kms);
> }
>
> static long mdp4_round_pixclk(struct msm_kms *kms, unsigned long rate,
> @@ -182,6 +189,8 @@ static const struct mdp_kms_funcs kms_funcs = {
> .irq = mdp4_irq,
> .enable_vblank = mdp4_enable_vblank,
> .disable_vblank = mdp4_disable_vblank,
> + .enable_commit = mdp4_enable_commit,
> + .disable_commit = mdp4_disable_commit,
> .prepare_commit = mdp4_prepare_commit,
> .flush_commit = mdp4_flush_commit,
> .wait_flush = mdp4_wait_flush,
> diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
> index eff1b000258e..ba67bde1dbef 100644
> --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
> +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
> @@ -140,16 +140,25 @@ static int mdp5_global_obj_init(struct mdp5_kms *mdp5_kms)
> return 0;
> }
>
> +static void mdp5_enable_commit(struct msm_kms *kms)
> +{
> + struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(kms));
> + pm_runtime_get_sync(&mdp5_kms->pdev->dev);
> +}
> +
> +static void mdp5_disable_commit(struct msm_kms *kms)
> +{
> + struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(kms));
> + pm_runtime_put_sync(&mdp5_kms->pdev->dev);
> +}
> +
> static void mdp5_prepare_commit(struct msm_kms *kms, struct drm_atomic_state *state)
> {
> struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(kms));
> - struct device *dev = &mdp5_kms->pdev->dev;
> struct mdp5_global_state *global_state;
>
> global_state = mdp5_get_existing_global_state(mdp5_kms);
>
> - pm_runtime_get_sync(dev);
> -
> if (mdp5_kms->smp)
> mdp5_smp_prepare_commit(mdp5_kms->smp, &global_state->smp);
> }
> @@ -171,15 +180,12 @@ static void mdp5_wait_flush(struct msm_kms *kms, unsigned crtc_mask)
> static void mdp5_complete_commit(struct msm_kms *kms, unsigned crtc_mask)
> {
> struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(kms));
> - struct device *dev = &mdp5_kms->pdev->dev;
> struct mdp5_global_state *global_state;
>
> global_state = mdp5_get_existing_global_state(mdp5_kms);
>
> if (mdp5_kms->smp)
> mdp5_smp_complete_commit(mdp5_kms->smp, &global_state->smp);
> -
> - pm_runtime_put_sync(dev);
> }
>
> static long mdp5_round_pixclk(struct msm_kms *kms, unsigned long rate,
> @@ -278,6 +284,8 @@ static const struct mdp_kms_funcs kms_funcs = {
> .enable_vblank = mdp5_enable_vblank,
> .disable_vblank = mdp5_disable_vblank,
> .flush_commit = mdp5_flush_commit,
> + .enable_commit = mdp5_enable_commit,
> + .disable_commit = mdp5_disable_commit,
> .prepare_commit = mdp5_prepare_commit,
> .wait_flush = mdp5_wait_flush,
> .complete_commit = mdp5_complete_commit,
> diff --git a/drivers/gpu/drm/msm/msm_atomic.c b/drivers/gpu/drm/msm/msm_atomic.c
> index e3537df848fa..614fb9c5bb58 100644
> --- a/drivers/gpu/drm/msm/msm_atomic.c
> +++ b/drivers/gpu/drm/msm/msm_atomic.c
> @@ -52,6 +52,7 @@ void msm_atomic_commit_tail(struct drm_atomic_state *state)
> struct msm_kms *kms = priv->kms;
> unsigned crtc_mask = get_crtc_mask(state);
>
> + kms->funcs->enable_commit(kms);
> kms->funcs->prepare_commit(kms, state);
>
> /*
> @@ -72,6 +73,7 @@ void msm_atomic_commit_tail(struct drm_atomic_state *state)
>
> kms->funcs->wait_flush(kms, crtc_mask);
> kms->funcs->complete_commit(kms, crtc_mask);
> + kms->funcs->disable_commit(kms);
>
> drm_atomic_helper_commit_hw_done(state);
>
> diff --git a/drivers/gpu/drm/msm/msm_kms.h b/drivers/gpu/drm/msm/msm_kms.h
> index bb70c1758c72..811f5e2c2405 100644
> --- a/drivers/gpu/drm/msm/msm_kms.h
> +++ b/drivers/gpu/drm/msm/msm_kms.h
> @@ -35,6 +35,16 @@ struct msm_kms_funcs {
> * Atomic commit handling:
> */
>
> + /**
> + * Enable/disable power/clks needed for hw access done in other
> + * commit related methods.
> + *
> + * If mdp4 is migrated to runpm, we could probably drop these
> + * and use runpm directly.
> + */
> + void (*enable_commit)(struct msm_kms *kms);
> + void (*disable_commit)(struct msm_kms *kms);
> +
> /**
> * Prepare for atomic commit. This is called after any previous
> * (async or otherwise) commit has completed.
> --
> 2.21.0
>
--
Sean Paul, Software Engineer, Google / Chromium OS
next prev parent reply other threads:[~2019-09-03 20:37 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-29 16:45 [PATCH 00/10] drm/msm: async commit support (v2) Rob Clark
2019-08-29 16:45 ` Rob Clark
2019-08-29 16:45 ` [PATCH 01/10] drm/msm/dpu: unwind async commit handling Rob Clark
2019-08-29 16:45 ` Rob Clark
2019-08-29 16:45 ` [PATCH 02/10] drm/msm/dpu: add real wait_for_commit_done() Rob Clark
2019-08-29 16:45 ` Rob Clark
2019-08-29 16:45 ` [PATCH 03/10] drm/msm/dpu: handle_frame_done() from vblank irq Rob Clark
2019-08-29 16:45 ` Rob Clark
2019-08-29 16:45 ` [PATCH 04/10] drm/msm: add kms->wait_flush() Rob Clark
2019-08-29 16:45 ` Rob Clark
2019-08-29 16:45 ` [PATCH 05/10] drm/msm: convert kms->complete_commit() to crtc_mask Rob Clark
2019-08-29 16:45 ` Rob Clark
2019-09-03 20:35 ` Sean Paul
2019-09-03 20:35 ` Sean Paul
2019-08-29 16:45 ` [PATCH 06/10] drm/msm: add kms->flush_commit() Rob Clark
2019-08-29 16:45 ` Rob Clark
2019-09-03 20:35 ` Sean Paul
2019-09-03 20:35 ` Sean Paul
2019-08-29 16:45 ` [PATCH 07/10] drm/msm: split power control from prepare/complete_commit Rob Clark
2019-08-29 16:45 ` Rob Clark
2019-09-03 20:37 ` Sean Paul [this message]
2019-09-03 20:37 ` Sean Paul
2019-08-29 16:45 ` [PATCH 08/10] drm/msm: async commit support Rob Clark
2019-08-29 16:45 ` Rob Clark
2019-09-03 20:51 ` Sean Paul
2019-08-29 16:45 ` [PATCH 09/10] drm/msm/dpu: " Rob Clark
2019-08-29 16:45 ` Rob Clark
2019-09-03 20:53 ` Sean Paul
2019-08-29 16:45 ` [PATCH 10/10] drm/msm: add atomic traces Rob Clark
2019-08-29 16:45 ` Rob Clark
2019-09-03 20:54 ` Sean Paul
2019-09-03 20:54 ` Sean Paul
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190903203712.GL218215@art_vandelay \
--to=sean@poorly.run \
--cc=airlied@linux.ie \
--cc=allison@lohutok.net \
--cc=bzwang@chromium.org \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=freedreno@lists.freedesktop.org \
--cc=georgi.djakov@linaro.org \
--cc=gregkh@linuxfoundation.org \
--cc=jcrouse@codeaurora.org \
--cc=jonathan@marek.ca \
--cc=jsanka@codeaurora.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mamtashukla555@gmail.com \
--cc=robdclark@chromium.org \
--cc=robdclark@gmail.com \
--cc=skolluku@codeaurora.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.