* [Intel-gfx] [PATCH V3] drm/i915/gt: Hold RPM wakelock during PXP suspend
@ 2021-11-11 12:42 Tejas Upadhyay
2021-11-11 13:12 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for drm/i915/gt: Hold RPM wakelock during PXP suspend (rev2) Patchwork
2021-11-12 10:55 ` kernel test robot
0 siblings, 2 replies; 4+ messages in thread
From: Tejas Upadhyay @ 2021-11-11 12:42 UTC (permalink / raw)
To: intel-gfx
selftest --r live shows failure in suspend tests when
RPM wakelock is not acquired during suspend.
This changes addresses below error :
<4> [154.177535] RPM wakelock ref not held during HW access
<4> [154.177575] WARNING: CPU: 4 PID: 5772 at
drivers/gpu/drm/i915/intel_runtime_pm.h:113
fwtable_write32+0x240/0x320 [i915]
<4> [154.177974] Modules linked in: i915(+) vgem drm_shmem_helper
fuse snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic
ledtrig_audio mei_hdcp mei_pxp x86_pkg_temp_thermal coretemp
crct10dif_pclmul crc32_pclmul ghash_clmulni_intel snd_intel_dspcfg
snd_hda_codec snd_hwdep igc snd_hda_core ttm mei_me ptp
snd_pcm prime_numbers mei i2c_i801 pps_core i2c_smbus intel_lpss_pci
btusb btrtl btbcm btintel bluetooth ecdh_generic ecc [last unloaded: i915]
<4> [154.178143] CPU: 4 PID: 5772 Comm: i915_selftest Tainted: G
U 5.15.0-rc6-CI-Patchwork_21432+ #1
<4> [154.178154] Hardware name: ASUS System Product Name/TUF GAMING
Z590-PLUS WIFI, BIOS 0811 04/06/2021
<4> [154.178160] RIP: 0010:fwtable_write32+0x240/0x320 [i915]
<4> [154.178604] Code: 15 7b e1 0f 0b e9 34 fe ff ff 80 3d a9 89 31
00 00 0f 85 31 fe ff ff 48 c7 c7 88 9e 4f a0 c6 05 95 89 31 00 01 e8
c0 15 7b e1 <0f> 0b e9 17 fe ff ff 8b 05 0f 83 58 e2 85 c0 0f 85 8d
00 00 00 48
<4> [154.178614] RSP: 0018:ffffc900016279f0 EFLAGS: 00010286
<4> [154.178626] RAX: 0000000000000000 RBX: ffff888204fe0ee0
RCX: 0000000000000001
<4> [154.178634] RDX: 0000000080000001 RSI: ffffffff823142b5
RDI: 00000000ffffffff
<4> [154.178641] RBP: 00000000000320f0 R08: 0000000000000000
R09: c0000000ffffcd5a
<4> [154.178647] R10: 00000000000f8c90 R11: ffffc90001627808
R12: 0000000000000000
<4> [154.178654] R13: 0000000040000000 R14: ffffffffa04d12e0
R15: 0000000000000000
<4> [154.178660] FS: 00007f7390aa4c00(0000) GS:ffff88844f000000(0000)
knlGS:0000000000000000
<4> [154.178669] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
<4> [154.178675] CR2: 000055bc40595028 CR3: 0000000204474005
CR4: 0000000000770ee0
<4> [154.178682] PKRU: 55555554
<4> [154.178687] Call Trace:
<4> [154.178706] intel_pxp_fini_hw+0x23/0x30 [i915]
<4> [154.179284] intel_pxp_suspend+0x1f/0x30 [i915]
<4> [154.179807] live_gt_resume+0x5b/0x90 [i915]
Changes since V2 :
- Open-code intel_pxp_runtime_suspend - Daniele
- Remove boolean in intel_pxp_runtime_preapre - Daniele
Changes since V1 :
- split the HW access parts in gt_suspend_late - Daniele
- Remove default PXP configs
Signed-off-by: Tejas Upadhyay <tejaskumarx.surendrakumar.upadhyay@intel.com>
---
drivers/gpu/drm/i915/gt/intel_gt_pm.c | 7 +++--
drivers/gpu/drm/i915/pxp/intel_pxp_pm.c | 37 +++++++++++++++++--------
drivers/gpu/drm/i915/pxp/intel_pxp_pm.h | 19 +++++++++++--
3 files changed, 46 insertions(+), 17 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_pm.c b/drivers/gpu/drm/i915/gt/intel_gt_pm.c
index b4a8594bc46c..c0fa41e4c803 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_pm.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt_pm.c
@@ -303,7 +303,7 @@ void intel_gt_suspend_prepare(struct intel_gt *gt)
user_forcewake(gt, true);
wait_for_suspend(gt);
- intel_pxp_suspend(>->pxp, false);
+ intel_pxp_suspend_prepare(>->pxp);
}
static suspend_state_t pm_suspend_target(void)
@@ -328,6 +328,7 @@ void intel_gt_suspend_late(struct intel_gt *gt)
GEM_BUG_ON(gt->awake);
intel_uc_suspend(>->uc);
+ intel_pxp_suspend(>->pxp);
/*
* On disabling the device, we want to turn off HW access to memory
@@ -355,7 +356,7 @@ void intel_gt_suspend_late(struct intel_gt *gt)
void intel_gt_runtime_suspend(struct intel_gt *gt)
{
- intel_pxp_suspend(>->pxp, true);
+ intel_pxp_runtime_suspend(>->pxp);
intel_uc_runtime_suspend(>->uc);
GT_TRACE(gt, "\n");
@@ -373,7 +374,7 @@ int intel_gt_runtime_resume(struct intel_gt *gt)
if (ret)
return ret;
- intel_pxp_resume(>->pxp);
+ intel_pxp_runtime_resume(>->pxp);
return 0;
}
diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_pm.c b/drivers/gpu/drm/i915/pxp/intel_pxp_pm.c
index 23fd86de5a24..6a7d4e2ee138 100644
--- a/drivers/gpu/drm/i915/pxp/intel_pxp_pm.c
+++ b/drivers/gpu/drm/i915/pxp/intel_pxp_pm.c
@@ -7,26 +7,29 @@
#include "intel_pxp_irq.h"
#include "intel_pxp_pm.h"
#include "intel_pxp_session.h"
+#include "i915_drv.h"
-void intel_pxp_suspend(struct intel_pxp *pxp, bool runtime)
+void intel_pxp_suspend_prepare(struct intel_pxp *pxp)
{
if (!intel_pxp_is_enabled(pxp))
return;
pxp->arb_is_valid = false;
- /*
- * Contexts using protected objects keep a runtime PM reference, so we
- * can only runtime suspend when all of them have been either closed
- * or banned. Therefore, there is no need to invalidate in that
- * scenario.
- */
- if (!runtime)
- intel_pxp_invalidate(pxp);
+ intel_pxp_invalidate(pxp);
+}
- intel_pxp_fini_hw(pxp);
+void intel_pxp_suspend(struct intel_pxp *pxp)
+{
+ intel_wakeref_t wakeref;
- pxp->hw_state_invalidated = false;
+ if (!intel_pxp_is_enabled(pxp))
+ return;
+
+ with_intel_runtime_pm(&pxp_to_gt(pxp)->i915->runtime_pm, wakeref) {
+ intel_pxp_fini_hw(pxp);
+ pxp->hw_state_invalidated = false;
+ }
}
void intel_pxp_resume(struct intel_pxp *pxp)
@@ -44,3 +47,15 @@ void intel_pxp_resume(struct intel_pxp *pxp)
intel_pxp_init_hw(pxp);
}
+
+void intel_pxp_runtime_suspend(struct intel_pxp *pxp)
+{
+ if (!intel_pxp_is_enabled(pxp))
+ return;
+
+ pxp->arb_is_valid = false;
+
+ intel_pxp_fini_hw(pxp);
+
+ pxp->hw_state_invalidated = false;
+}
diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_pm.h b/drivers/gpu/drm/i915/pxp/intel_pxp_pm.h
index c89e97a0c3d0..c4e27f358a71 100644
--- a/drivers/gpu/drm/i915/pxp/intel_pxp_pm.h
+++ b/drivers/gpu/drm/i915/pxp/intel_pxp_pm.h
@@ -9,16 +9,29 @@
#include "intel_pxp_types.h"
#ifdef CONFIG_DRM_I915_PXP
-void intel_pxp_suspend(struct intel_pxp *pxp, bool runtime);
+void intel_pxp_suspend_prepare(struct intel_pxp *pxp);
+void intel_pxp_suspend(struct intel_pxp *pxp);
void intel_pxp_resume(struct intel_pxp *pxp);
+void intel_pxp_runtime_suspend(struct intel_pxp *pxp);
#else
-static inline void intel_pxp_suspend(struct intel_pxp *pxp, bool runtime)
+static inline void intel_pxp_suspend_prepare(struct intel_pxp *pxp, bool runtime)
+{
+}
+
+static inline void intel_pxp_suspend(struct intel_pxp *pxp)
{
}
static inline void intel_pxp_resume(struct intel_pxp *pxp)
{
}
-#endif
+static inline void intel_pxp_runtime_suspend(struct intel_pxp *pxp)
+{
+}
+#endif
+static inline void intel_pxp_runtime_resume(struct intel_pxp *pxp)
+{
+ intel_pxp_resume(pxp);
+}
#endif /* __INTEL_PXP_PM_H__ */
--
2.31.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Intel-gfx] ✗ Fi.CI.BUILD: failure for drm/i915/gt: Hold RPM wakelock during PXP suspend (rev2)
2021-11-11 12:42 [Intel-gfx] [PATCH V3] drm/i915/gt: Hold RPM wakelock during PXP suspend Tejas Upadhyay
@ 2021-11-11 13:12 ` Patchwork
2021-11-12 10:55 ` kernel test robot
1 sibling, 0 replies; 4+ messages in thread
From: Patchwork @ 2021-11-11 13:12 UTC (permalink / raw)
To: Tejas Upadhyay; +Cc: intel-gfx
== Series Details ==
Series: drm/i915/gt: Hold RPM wakelock during PXP suspend (rev2)
URL : https://patchwork.freedesktop.org/series/96658/
State : failure
== Summary ==
CALL scripts/checksyscalls.sh
CALL scripts/atomic/check-atomics.sh
DESCEND objtool
CHK include/generated/compile.h
CC [M] drivers/gpu/drm/i915/gt/intel_gt_pm.o
drivers/gpu/drm/i915/gt/intel_gt_pm.c: In function ‘intel_gt_suspend_prepare’:
drivers/gpu/drm/i915/gt/intel_gt_pm.c:306:2: error: too few arguments to function ‘intel_pxp_suspend_prepare’
intel_pxp_suspend_prepare(>->pxp);
^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/gpu/drm/i915/gt/intel_gt_pm.c:21:
./drivers/gpu/drm/i915/pxp/intel_pxp_pm.h:17:20: note: declared here
static inline void intel_pxp_suspend_prepare(struct intel_pxp *pxp, bool runtime)
^~~~~~~~~~~~~~~~~~~~~~~~~
scripts/Makefile.build:277: recipe for target 'drivers/gpu/drm/i915/gt/intel_gt_pm.o' failed
make[4]: *** [drivers/gpu/drm/i915/gt/intel_gt_pm.o] Error 1
scripts/Makefile.build:540: recipe for target 'drivers/gpu/drm/i915' failed
make[3]: *** [drivers/gpu/drm/i915] Error 2
scripts/Makefile.build:540: recipe for target 'drivers/gpu/drm' failed
make[2]: *** [drivers/gpu/drm] Error 2
scripts/Makefile.build:540: recipe for target 'drivers/gpu' failed
make[1]: *** [drivers/gpu] Error 2
Makefile:1868: recipe for target 'drivers' failed
make: *** [drivers] Error 2
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Intel-gfx] [PATCH V3] drm/i915/gt: Hold RPM wakelock during PXP suspend
2021-11-11 12:42 [Intel-gfx] [PATCH V3] drm/i915/gt: Hold RPM wakelock during PXP suspend Tejas Upadhyay
@ 2021-11-12 10:55 ` kernel test robot
2021-11-12 10:55 ` kernel test robot
1 sibling, 0 replies; 4+ messages in thread
From: kernel test robot @ 2021-11-12 10:55 UTC (permalink / raw)
To: Tejas Upadhyay, intel-gfx; +Cc: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 2294 bytes --]
Hi Tejas,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on drm-intel/for-linux-next]
[also build test ERROR on drm-tip/drm-tip next-20211112]
[cannot apply to v5.15]
[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/Tejas-Upadhyay/drm-i915-gt-Hold-RPM-wakelock-during-PXP-suspend/20211111-204949
base: git://anongit.freedesktop.org/drm-intel for-linux-next
config: x86_64-defconfig (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
# https://github.com/0day-ci/linux/commit/c134397c55fb3639fdcea780a83fd5f5402c93de
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Tejas-Upadhyay/drm-i915-gt-Hold-RPM-wakelock-during-PXP-suspend/20211111-204949
git checkout c134397c55fb3639fdcea780a83fd5f5402c93de
# save the attached .config to linux build tree
mkdir build_dir
make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers/gpu/drm/i915/gt/intel_gt_pm.c: In function 'intel_gt_suspend_prepare':
>> drivers/gpu/drm/i915/gt/intel_gt_pm.c:304:2: error: too few arguments to function 'intel_pxp_suspend_prepare'
304 | intel_pxp_suspend_prepare(>->pxp);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/gpu/drm/i915/gt/intel_gt_pm.c:21:
drivers/gpu/drm/i915/pxp/intel_pxp_pm.h:17:20: note: declared here
17 | static inline void intel_pxp_suspend_prepare(struct intel_pxp *pxp, bool runtime)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
vim +/intel_pxp_suspend_prepare +304 drivers/gpu/drm/i915/gt/intel_gt_pm.c
298
299 void intel_gt_suspend_prepare(struct intel_gt *gt)
300 {
301 user_forcewake(gt, true);
302 wait_for_suspend(gt);
303
> 304 intel_pxp_suspend_prepare(>->pxp);
305 }
306
---
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: 29893 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Intel-gfx] [PATCH V3] drm/i915/gt: Hold RPM wakelock during PXP suspend
@ 2021-11-12 10:55 ` kernel test robot
0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2021-11-12 10:55 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 2350 bytes --]
Hi Tejas,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on drm-intel/for-linux-next]
[also build test ERROR on drm-tip/drm-tip next-20211112]
[cannot apply to v5.15]
[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/Tejas-Upadhyay/drm-i915-gt-Hold-RPM-wakelock-during-PXP-suspend/20211111-204949
base: git://anongit.freedesktop.org/drm-intel for-linux-next
config: x86_64-defconfig (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
# https://github.com/0day-ci/linux/commit/c134397c55fb3639fdcea780a83fd5f5402c93de
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Tejas-Upadhyay/drm-i915-gt-Hold-RPM-wakelock-during-PXP-suspend/20211111-204949
git checkout c134397c55fb3639fdcea780a83fd5f5402c93de
# save the attached .config to linux build tree
mkdir build_dir
make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers/gpu/drm/i915/gt/intel_gt_pm.c: In function 'intel_gt_suspend_prepare':
>> drivers/gpu/drm/i915/gt/intel_gt_pm.c:304:2: error: too few arguments to function 'intel_pxp_suspend_prepare'
304 | intel_pxp_suspend_prepare(>->pxp);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/gpu/drm/i915/gt/intel_gt_pm.c:21:
drivers/gpu/drm/i915/pxp/intel_pxp_pm.h:17:20: note: declared here
17 | static inline void intel_pxp_suspend_prepare(struct intel_pxp *pxp, bool runtime)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
vim +/intel_pxp_suspend_prepare +304 drivers/gpu/drm/i915/gt/intel_gt_pm.c
298
299 void intel_gt_suspend_prepare(struct intel_gt *gt)
300 {
301 user_forcewake(gt, true);
302 wait_for_suspend(gt);
303
> 304 intel_pxp_suspend_prepare(>->pxp);
305 }
306
---
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: 29893 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-11-12 10:56 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-11 12:42 [Intel-gfx] [PATCH V3] drm/i915/gt: Hold RPM wakelock during PXP suspend Tejas Upadhyay
2021-11-11 13:12 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for drm/i915/gt: Hold RPM wakelock during PXP suspend (rev2) Patchwork
2021-11-12 10:55 ` [Intel-gfx] [PATCH V3] drm/i915/gt: Hold RPM wakelock during PXP suspend kernel test robot
2021-11-12 10:55 ` 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.