From: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
To: Jani Nikula <jani.nikula@linux.intel.com>,
intel-gfx@lists.freedesktop.org
Subject: Re: [RFC 1/7] drm/i915: prefer i915_runtime_pm in intel_runtime function
Date: Fri, 31 May 2019 15:59:01 -0700 [thread overview]
Message-ID: <8ada3f20-e5d4-87c0-abc4-512b35395a4a@intel.com> (raw)
In-Reply-To: <87lfz08acb.fsf@intel.com>
On 5/21/19 1:45 AM, Jani Nikula wrote:
> On Thu, 16 May 2019, Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> wrote:
>> As a first step towards updating the code to work on the runtime_pm
>> structure instead of i915, rework all the internals to use and pass
>> around that.
>>
>> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
>> ---
>> drivers/gpu/drm/i915/i915_drv.h | 2 +
>> drivers/gpu/drm/i915/intel_drv.h | 10 +-
>> drivers/gpu/drm/i915/intel_runtime_pm.c | 152 ++++++++++++------------
>> 3 files changed, 82 insertions(+), 82 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
>> index 5801f5407589..474074c7f395 100644
>> --- a/drivers/gpu/drm/i915/i915_drv.h
>> +++ b/drivers/gpu/drm/i915/i915_drv.h
>> @@ -1177,6 +1177,8 @@ struct skl_wm_params {
>> */
>> struct i915_runtime_pm {
>> atomic_t wakeref_count;
>> + struct device *kdev;
>
> This could use a small comment to say what device this is.
>
Would something like:
/* the intel gpu we're loaded on */
work? Or should I just rename it to i915_kdev like we use in other parts
of the driver?
Thanks,
Daniele
> BR,
> Jani.
>
>> + bool available;
>> bool suspended;
>> bool irqs_enabled;
>>
>> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
>> index 30b2d6ed2d53..bd04f394fbd3 100644
>> --- a/drivers/gpu/drm/i915/intel_drv.h
>> +++ b/drivers/gpu/drm/i915/intel_drv.h
>> @@ -1662,13 +1662,17 @@ ____assert_rpm_wakelock_held(struct i915_runtime_pm *rpm, int wakeref_count)
>> }
>>
>> static inline void
>> -assert_rpm_raw_wakeref_held(struct drm_i915_private *i915)
>> +__assert_rpm_raw_wakeref_held(struct i915_runtime_pm *rpm)
>> {
>> - struct i915_runtime_pm *rpm = &i915->runtime_pm;
>> -
>> ____assert_rpm_raw_wakeref_held(rpm, atomic_read(&rpm->wakeref_count));
>> }
>>
>> +static inline void
>> +assert_rpm_raw_wakeref_held(struct drm_i915_private *i915)
>> +{
>> + __assert_rpm_raw_wakeref_held(&i915->runtime_pm);
>> +}
>> +
>> static inline void
>> __assert_rpm_wakelock_held(struct i915_runtime_pm *rpm)
>> {
>> diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915/intel_runtime_pm.c
>> index b4abababdf6c..2e21f562df44 100644
>> --- a/drivers/gpu/drm/i915/intel_runtime_pm.c
>> +++ b/drivers/gpu/drm/i915/intel_runtime_pm.c
>> @@ -60,19 +60,19 @@
>> * present for a given platform.
>> */
>>
>> -static intel_wakeref_t intel_runtime_pm_get_raw(struct drm_i915_private *i915);
>> +static intel_wakeref_t intel_runtime_pm_get_raw(struct i915_runtime_pm *rpm);
>> static void
>> -__intel_runtime_pm_put(struct drm_i915_private *i915, intel_wakeref_t wref,
>> +__intel_runtime_pm_put(struct i915_runtime_pm *rpm, intel_wakeref_t wref,
>> bool wakelock);
>>
>> #if IS_ENABLED(CONFIG_DRM_I915_DEBUG_RUNTIME_PM)
>> static void
>> -intel_runtime_pm_put_raw(struct drm_i915_private *i915, intel_wakeref_t wref);
>> +intel_runtime_pm_put_raw(struct i915_runtime_pm *rpm, intel_wakeref_t wref);
>> #else
>> -static inline void intel_runtime_pm_put_raw(struct drm_i915_private *i915,
>> +static inline void intel_runtime_pm_put_raw(struct i915_runtime_pm *rpm,
>> intel_wakeref_t wref)
>> {
>> - __intel_runtime_pm_put(i915, -1, false);
>> + __intel_runtime_pm_put(rpm, -1, false);
>> }
>> #endif
>>
>> @@ -112,21 +112,18 @@ static void __print_depot_stack(depot_stack_handle_t stack,
>> snprint_stack_trace(buf, sz, &trace, indent);
>> }
>>
>> -static void init_intel_runtime_pm_wakeref(struct drm_i915_private *i915)
>> +static void init_intel_runtime_pm_wakeref(struct i915_runtime_pm *rpm)
>> {
>> - struct i915_runtime_pm *rpm = &i915->runtime_pm;
>> -
>> spin_lock_init(&rpm->debug.lock);
>> }
>>
>> static noinline depot_stack_handle_t
>> -track_intel_runtime_pm_wakeref(struct drm_i915_private *i915)
>> +track_intel_runtime_pm_wakeref(struct i915_runtime_pm *rpm)
>> {
>> - struct i915_runtime_pm *rpm = &i915->runtime_pm;
>> depot_stack_handle_t stack, *stacks;
>> unsigned long flags;
>>
>> - if (!HAS_RUNTIME_PM(i915))
>> + if (!rpm->available)
>> return -1;
>>
>> stack = __save_depot_stack();
>> @@ -153,10 +150,9 @@ track_intel_runtime_pm_wakeref(struct drm_i915_private *i915)
>> return stack;
>> }
>>
>> -static void untrack_intel_runtime_pm_wakeref(struct drm_i915_private *i915,
>> +static void untrack_intel_runtime_pm_wakeref(struct i915_runtime_pm *rpm,
>> depot_stack_handle_t stack)
>> {
>> - struct i915_runtime_pm *rpm = &i915->runtime_pm;
>> unsigned long flags, n;
>> bool found = false;
>>
>> @@ -274,9 +270,8 @@ dump_and_free_wakeref_tracking(struct intel_runtime_pm_debug *debug)
>> }
>>
>> static noinline void
>> -__intel_wakeref_dec_and_check_tracking(struct drm_i915_private *i915)
>> +__intel_wakeref_dec_and_check_tracking(struct i915_runtime_pm *rpm)
>> {
>> - struct i915_runtime_pm *rpm = &i915->runtime_pm;
>> struct intel_runtime_pm_debug dbg = {};
>> unsigned long flags;
>>
>> @@ -292,9 +287,8 @@ __intel_wakeref_dec_and_check_tracking(struct drm_i915_private *i915)
>> }
>>
>> static noinline void
>> -untrack_all_intel_runtime_pm_wakerefs(struct drm_i915_private *i915)
>> +untrack_all_intel_runtime_pm_wakerefs(struct i915_runtime_pm *rpm)
>> {
>> - struct i915_runtime_pm *rpm = &i915->runtime_pm;
>> struct intel_runtime_pm_debug dbg = {};
>> unsigned long flags;
>>
>> @@ -345,61 +339,57 @@ void print_intel_runtime_pm_wakeref(struct drm_i915_private *i915,
>>
>> #else
>>
>> -static void init_intel_runtime_pm_wakeref(struct drm_i915_private *i915)
>> +static void init_intel_runtime_pm_wakeref(struct i915_runtime_pm *rpm)
>> {
>> }
>>
>> static depot_stack_handle_t
>> -track_intel_runtime_pm_wakeref(struct drm_i915_private *i915)
>> +track_intel_runtime_pm_wakeref(struct i915_runtime_pm *rpm)
>> {
>> return -1;
>> }
>>
>> -static void untrack_intel_runtime_pm_wakeref(struct drm_i915_private *i915,
>> +static void untrack_intel_runtime_pm_wakeref(struct i915_runtime_pm *rpm,
>> intel_wakeref_t wref)
>> {
>> }
>>
>> static void
>> -__intel_wakeref_dec_and_check_tracking(struct drm_i915_private *i915)
>> +__intel_wakeref_dec_and_check_tracking(struct i915_runtime_pm *rpm)
>> {
>> - atomic_dec(&i915->runtime_pm.wakeref_count);
>> + atomic_dec(&rpm->wakeref_count);
>> }
>>
>> static void
>> -untrack_all_intel_runtime_pm_wakerefs(struct drm_i915_private *i915)
>> +untrack_all_intel_runtime_pm_wakerefs(struct i915_runtime_pm *rpm)
>> {
>> }
>>
>> #endif
>>
>> static void
>> -intel_runtime_pm_acquire(struct drm_i915_private *i915, bool wakelock)
>> +intel_runtime_pm_acquire(struct i915_runtime_pm *rpm, bool wakelock)
>> {
>> - struct i915_runtime_pm *rpm = &i915->runtime_pm;
>> -
>> if (wakelock) {
>> atomic_add(1 + INTEL_RPM_WAKELOCK_BIAS, &rpm->wakeref_count);
>> - assert_rpm_wakelock_held(i915);
>> + __assert_rpm_wakelock_held(rpm);
>> } else {
>> atomic_inc(&rpm->wakeref_count);
>> - assert_rpm_raw_wakeref_held(i915);
>> + __assert_rpm_raw_wakeref_held(rpm);
>> }
>> }
>>
>> static void
>> -intel_runtime_pm_release(struct drm_i915_private *i915, int wakelock)
>> +intel_runtime_pm_release(struct i915_runtime_pm *rpm, int wakelock)
>> {
>> - struct i915_runtime_pm *rpm = &i915->runtime_pm;
>> -
>> if (wakelock) {
>> - assert_rpm_wakelock_held(i915);
>> + __assert_rpm_wakelock_held(rpm);
>> atomic_sub(INTEL_RPM_WAKELOCK_BIAS, &rpm->wakeref_count);
>> } else {
>> - assert_rpm_raw_wakeref_held(i915);
>> + __assert_rpm_raw_wakeref_held(rpm);
>> }
>>
>> - __intel_wakeref_dec_and_check_tracking(i915);
>> + __intel_wakeref_dec_and_check_tracking(rpm);
>> }
>>
>> bool intel_display_power_well_is_enabled(struct drm_i915_private *dev_priv,
>> @@ -2030,7 +2020,7 @@ intel_display_power_grab_async_put_ref(struct drm_i915_private *dev_priv,
>> goto out_verify;
>>
>> cancel_delayed_work(&power_domains->async_put_work);
>> - intel_runtime_pm_put_raw(dev_priv,
>> + intel_runtime_pm_put_raw(&dev_priv->runtime_pm,
>> fetch_and_zero(&power_domains->async_put_wakeref));
>> out_verify:
>> verify_async_put_domains_state(power_domains);
>> @@ -2219,7 +2209,8 @@ intel_display_power_put_async_work(struct work_struct *work)
>> container_of(work, struct drm_i915_private,
>> power_domains.async_put_work.work);
>> struct i915_power_domains *power_domains = &dev_priv->power_domains;
>> - intel_wakeref_t new_work_wakeref = intel_runtime_pm_get_raw(dev_priv);
>> + struct i915_runtime_pm *rpm = &dev_priv->runtime_pm;
>> + intel_wakeref_t new_work_wakeref = intel_runtime_pm_get_raw(rpm);
>> intel_wakeref_t old_work_wakeref = 0;
>>
>> mutex_lock(&power_domains->lock);
>> @@ -2249,9 +2240,9 @@ intel_display_power_put_async_work(struct work_struct *work)
>> mutex_unlock(&power_domains->lock);
>>
>> if (old_work_wakeref)
>> - intel_runtime_pm_put_raw(dev_priv, old_work_wakeref);
>> + intel_runtime_pm_put_raw(rpm, old_work_wakeref);
>> if (new_work_wakeref)
>> - intel_runtime_pm_put_raw(dev_priv, new_work_wakeref);
>> + intel_runtime_pm_put_raw(rpm, new_work_wakeref);
>> }
>>
>> /**
>> @@ -2269,7 +2260,8 @@ void __intel_display_power_put_async(struct drm_i915_private *i915,
>> intel_wakeref_t wakeref)
>> {
>> struct i915_power_domains *power_domains = &i915->power_domains;
>> - intel_wakeref_t work_wakeref = intel_runtime_pm_get_raw(i915);
>> + struct i915_runtime_pm *rpm = &i915->runtime_pm;
>> + intel_wakeref_t work_wakeref = intel_runtime_pm_get_raw(rpm);
>>
>> mutex_lock(&power_domains->lock);
>>
>> @@ -2296,7 +2288,7 @@ void __intel_display_power_put_async(struct drm_i915_private *i915,
>> mutex_unlock(&power_domains->lock);
>>
>> if (work_wakeref)
>> - intel_runtime_pm_put_raw(i915, work_wakeref);
>> + intel_runtime_pm_put_raw(rpm, work_wakeref);
>>
>> intel_runtime_pm_put(i915, wakeref);
>> }
>> @@ -2334,7 +2326,7 @@ void intel_display_power_flush_work(struct drm_i915_private *i915)
>> mutex_unlock(&power_domains->lock);
>>
>> if (work_wakeref)
>> - intel_runtime_pm_put_raw(i915, work_wakeref);
>> + intel_runtime_pm_put_raw(&i915->runtime_pm, work_wakeref);
>> }
>>
>> /**
>> @@ -4996,24 +4988,22 @@ static void intel_power_domains_verify_state(struct drm_i915_private *i915)
>>
>> #endif
>>
>> -static intel_wakeref_t __intel_runtime_pm_get(struct drm_i915_private *i915,
>> +static intel_wakeref_t __intel_runtime_pm_get(struct i915_runtime_pm *rpm,
>> bool wakelock)
>> {
>> - struct pci_dev *pdev = i915->drm.pdev;
>> - struct device *kdev = &pdev->dev;
>> int ret;
>>
>> - ret = pm_runtime_get_sync(kdev);
>> + ret = pm_runtime_get_sync(rpm->kdev);
>> WARN_ONCE(ret < 0, "pm_runtime_get_sync() failed: %d\n", ret);
>>
>> - intel_runtime_pm_acquire(i915, wakelock);
>> + intel_runtime_pm_acquire(rpm, wakelock);
>>
>> - return track_intel_runtime_pm_wakeref(i915);
>> + return track_intel_runtime_pm_wakeref(rpm);
>> }
>>
>> -static intel_wakeref_t intel_runtime_pm_get_raw(struct drm_i915_private *i915)
>> +static intel_wakeref_t intel_runtime_pm_get_raw(struct i915_runtime_pm *rpm)
>> {
>> - return __intel_runtime_pm_get(i915, false);
>> + return __intel_runtime_pm_get(rpm, false);
>> }
>>
>> /**
>> @@ -5030,7 +5020,7 @@ static intel_wakeref_t intel_runtime_pm_get_raw(struct drm_i915_private *i915)
>> */
>> intel_wakeref_t intel_runtime_pm_get(struct drm_i915_private *i915)
>> {
>> - return __intel_runtime_pm_get(i915, true);
>> + return __intel_runtime_pm_get(&i915->runtime_pm, true);
>> }
>>
>> /**
>> @@ -5049,23 +5039,22 @@ intel_wakeref_t intel_runtime_pm_get(struct drm_i915_private *i915)
>> */
>> intel_wakeref_t intel_runtime_pm_get_if_in_use(struct drm_i915_private *i915)
>> {
>> - if (IS_ENABLED(CONFIG_PM)) {
>> - struct pci_dev *pdev = i915->drm.pdev;
>> - struct device *kdev = &pdev->dev;
>> + struct i915_runtime_pm *rpm = &i915->runtime_pm;
>>
>> + if (IS_ENABLED(CONFIG_PM)) {
>> /*
>> * In cases runtime PM is disabled by the RPM core and we get
>> * an -EINVAL return value we are not supposed to call this
>> * function, since the power state is undefined. This applies
>> * atm to the late/early system suspend/resume handlers.
>> */
>> - if (pm_runtime_get_if_in_use(kdev) <= 0)
>> + if (pm_runtime_get_if_in_use(rpm->kdev) <= 0)
>> return 0;
>> }
>>
>> - intel_runtime_pm_acquire(i915, true);
>> + intel_runtime_pm_acquire(rpm, true);
>>
>> - return track_intel_runtime_pm_wakeref(i915);
>> + return track_intel_runtime_pm_wakeref(rpm);
>> }
>>
>> /**
>> @@ -5089,27 +5078,25 @@ intel_wakeref_t intel_runtime_pm_get_if_in_use(struct drm_i915_private *i915)
>> */
>> intel_wakeref_t intel_runtime_pm_get_noresume(struct drm_i915_private *i915)
>> {
>> - struct pci_dev *pdev = i915->drm.pdev;
>> - struct device *kdev = &pdev->dev;
>> + struct i915_runtime_pm *rpm = &i915->runtime_pm;
>>
>> - assert_rpm_wakelock_held(i915);
>> - pm_runtime_get_noresume(kdev);
>> + __assert_rpm_wakelock_held(rpm);
>> + pm_runtime_get_noresume(rpm->kdev);
>>
>> - intel_runtime_pm_acquire(i915, true);
>> + intel_runtime_pm_acquire(rpm, true);
>>
>> - return track_intel_runtime_pm_wakeref(i915);
>> + return track_intel_runtime_pm_wakeref(rpm);
>> }
>>
>> -static void __intel_runtime_pm_put(struct drm_i915_private *i915,
>> +static void __intel_runtime_pm_put(struct i915_runtime_pm *rpm,
>> intel_wakeref_t wref,
>> bool wakelock)
>> {
>> - struct pci_dev *pdev = i915->drm.pdev;
>> - struct device *kdev = &pdev->dev;
>> + struct device *kdev = rpm->kdev;
>>
>> - untrack_intel_runtime_pm_wakeref(i915, wref);
>> + untrack_intel_runtime_pm_wakeref(rpm, wref);
>>
>> - intel_runtime_pm_release(i915, wakelock);
>> + intel_runtime_pm_release(rpm, wakelock);
>>
>> pm_runtime_mark_last_busy(kdev);
>> pm_runtime_put_autosuspend(kdev);
>> @@ -5117,9 +5104,9 @@ static void __intel_runtime_pm_put(struct drm_i915_private *i915,
>>
>> #if IS_ENABLED(CONFIG_DRM_I915_DEBUG_RUNTIME_PM)
>> static void
>> -intel_runtime_pm_put_raw(struct drm_i915_private *i915, intel_wakeref_t wref)
>> +intel_runtime_pm_put_raw(struct i915_runtime_pm *rpm, intel_wakeref_t wref)
>> {
>> - __intel_runtime_pm_put(i915, wref, false);
>> + __intel_runtime_pm_put(rpm, wref, false);
>> }
>> #endif
>>
>> @@ -5137,7 +5124,7 @@ intel_runtime_pm_put_raw(struct drm_i915_private *i915, intel_wakeref_t wref)
>> */
>> void intel_runtime_pm_put_unchecked(struct drm_i915_private *i915)
>> {
>> - __intel_runtime_pm_put(i915, -1, true);
>> + __intel_runtime_pm_put(&i915->runtime_pm, -1, true);
>> }
>>
>> #if IS_ENABLED(CONFIG_DRM_I915_DEBUG_RUNTIME_PM)
>> @@ -5152,7 +5139,7 @@ void intel_runtime_pm_put_unchecked(struct drm_i915_private *i915)
>> */
>> void intel_runtime_pm_put(struct drm_i915_private *i915, intel_wakeref_t wref)
>> {
>> - __intel_runtime_pm_put(i915, wref, true);
>> + __intel_runtime_pm_put(&i915->runtime_pm, wref, true);
>> }
>> #endif
>>
>> @@ -5168,8 +5155,8 @@ void intel_runtime_pm_put(struct drm_i915_private *i915, intel_wakeref_t wref)
>> */
>> void intel_runtime_pm_enable(struct drm_i915_private *i915)
>> {
>> - struct pci_dev *pdev = i915->drm.pdev;
>> - struct device *kdev = &pdev->dev;
>> + struct i915_runtime_pm *rpm = &i915->runtime_pm;
>> + struct device *kdev = rpm->kdev;
>>
>> /*
>> * Disable the system suspend direct complete optimization, which can
>> @@ -5190,7 +5177,7 @@ void intel_runtime_pm_enable(struct drm_i915_private *i915)
>> * so the driver's own RPM reference tracking asserts also work on
>> * platforms without RPM support.
>> */
>> - if (!HAS_RUNTIME_PM(i915)) {
>> + if (!rpm->available) {
>> int ret;
>>
>> pm_runtime_dont_use_autosuspend(kdev);
>> @@ -5210,8 +5197,8 @@ void intel_runtime_pm_enable(struct drm_i915_private *i915)
>>
>> void intel_runtime_pm_disable(struct drm_i915_private *i915)
>> {
>> - struct pci_dev *pdev = i915->drm.pdev;
>> - struct device *kdev = &pdev->dev;
>> + struct i915_runtime_pm *rpm = &i915->runtime_pm;
>> + struct device *kdev = rpm->kdev;
>>
>> /* Transfer rpm ownership back to core */
>> WARN(pm_runtime_get_sync(kdev) < 0,
>> @@ -5219,7 +5206,7 @@ void intel_runtime_pm_disable(struct drm_i915_private *i915)
>>
>> pm_runtime_dont_use_autosuspend(kdev);
>>
>> - if (!HAS_RUNTIME_PM(i915))
>> + if (!rpm->available)
>> pm_runtime_put(kdev);
>> }
>>
>> @@ -5233,10 +5220,17 @@ void intel_runtime_pm_cleanup(struct drm_i915_private *i915)
>> intel_rpm_raw_wakeref_count(count),
>> intel_rpm_wakelock_count(count));
>>
>> - untrack_all_intel_runtime_pm_wakerefs(i915);
>> + untrack_all_intel_runtime_pm_wakerefs(rpm);
>> }
>>
>> void intel_runtime_pm_init_early(struct drm_i915_private *i915)
>> {
>> - init_intel_runtime_pm_wakeref(i915);
>> + struct i915_runtime_pm *rpm = &i915->runtime_pm;
>> + struct pci_dev *pdev = i915->drm.pdev;
>> + struct device *kdev = &pdev->dev;
>> +
>> + rpm->kdev = kdev;
>> + rpm->available = HAS_RUNTIME_PM(i915);
>> +
>> + init_intel_runtime_pm_wakeref(rpm);
>> }
>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2019-05-31 22:59 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-16 21:56 [RFC 0/7] Runtime PM encapsulation Daniele Ceraolo Spurio
2019-05-16 21:56 ` [RFC 1/7] drm/i915: prefer i915_runtime_pm in intel_runtime function Daniele Ceraolo Spurio
2019-05-21 8:45 ` Jani Nikula
2019-05-31 22:59 ` Daniele Ceraolo Spurio [this message]
2019-06-03 18:48 ` Jani Nikula
2019-05-16 21:56 ` [RFC 2/7] drm/i915: Remove rpm asserts that use i915 Daniele Ceraolo Spurio
2019-05-16 21:56 ` [RFC 3/7] drm/i915: make enable/disable rpm assert function use the rpm structure Daniele Ceraolo Spurio
2019-05-16 21:56 ` [RFC 4/7] drm/i915: move and rename i915_runtime_pm Daniele Ceraolo Spurio
2019-05-16 22:07 ` Chris Wilson
2019-05-16 22:10 ` Chris Wilson
2019-05-16 22:42 ` Chris Wilson
2019-05-17 15:27 ` Daniele Ceraolo Spurio
2019-05-17 15:31 ` Chris Wilson
2019-05-21 8:27 ` Jani Nikula
2019-05-16 21:56 ` [RFC 5/7] drm/i915: move a few more functions to accept the rpm structure Daniele Ceraolo Spurio
2019-05-16 21:56 ` [RFC 6/7] drm/i915: update rpm_get/put to use " Daniele Ceraolo Spurio
2019-05-16 21:56 ` [RFC 7/7] drm/i915: update with_intel_runtime_pm " Daniele Ceraolo Spurio
2019-05-16 22:25 ` ✗ Fi.CI.CHECKPATCH: warning for Runtime PM encapsulation Patchwork
2019-05-16 22:29 ` ✗ Fi.CI.SPARSE: " Patchwork
2019-05-16 23:28 ` ✗ Fi.CI.BAT: failure " Patchwork
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=8ada3f20-e5d4-87c0-abc4-512b35395a4a@intel.com \
--to=daniele.ceraolospurio@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox