All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/3] PCI: qcom: Program T_POWER_ON value for L1.2 exit timing
@ 2026-02-23 11:13 Krishna Chaitanya Chundru
  2026-02-23 11:13 ` [PATCH v2 1/3] PCI/ASPM: Add helper to encode L1SS T_POWER_ON fields Krishna Chaitanya Chundru
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Krishna Chaitanya Chundru @ 2026-02-23 11:13 UTC (permalink / raw)
  To: Manivannan Sadhasivam, Lorenzo Pieralisi,
	Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas, Jingoo Han
  Cc: linux-pci, linux-arm-msm, linux-kernel, mayank.rana,
	quic_vbadigan, Krishna Chaitanya Chundru

The T_POWER_ON indicates the time (in μs) that a Port requires the port
on the opposite side of Link to wait in L1.2.Exit after sampling CLKREQ#
asserted before actively driving the interface. This value is used by
the ASPM driver to compute the LTR_L1.2_THRESHOLD.

Currently, qcom root port exposes T_POWER_ON value of zero in the L1SS
capability registers, leading to incorrect LTR_L1.2_THRESHOLD calculations,
which can result in improper L1.2 exit behavior and can trigger AER's.

In this series, qcom controller drivers read the devicetree property
"t-power-on" which got merged recently[1], and use that value to over
write default/wrong value.

To convert T_POWER_ON in to T_POWER_ON_SCALE & T_POWER_ON_VALUE created
a pcie_encode_t_power_on() helper in aspm.c and also created
dw_pcie_program_t_power_on() helper for other drivers to use these
helpers.

Link [1]: https://lore.kernel.org/all/20260205093346.667898-1-krishna.chundru@oss.qualcomm.com/

Signed-off-by: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com>
---
Changes in v2:
- Instead of hard coding the values in the driver, created a devicetree
  property "t-power-on" to program it (Bjorn & Mani).
- Link to v1: https://lore.kernel.org/r/20251104-t_power_on_fux-v1-1-eb5916e47fd7@oss.qualcomm.com

---
Krishna Chaitanya Chundru (3):
      PCI/ASPM: Add helper to encode L1SS T_POWER_ON fields
      PCI: dwc: Add helper to Program T_POWER_ON
      PCI: qcom: Program T_POWER_ON

 drivers/pci/controller/dwc/pcie-designware.c | 27 +++++++++++++++++
 drivers/pci/controller/dwc/pcie-designware.h |  1 +
 drivers/pci/controller/dwc/pcie-qcom.c       | 15 ++++++++++
 drivers/pci/pcie/aspm.c                      | 43 ++++++++++++++++++++++++++++
 include/linux/pci.h                          |  2 ++
 5 files changed, 88 insertions(+)
---
base-commit: 6de23f81a5e08be8fbf5e8d7e9febc72a5b5f27f
change-id: 20251104-t_power_on_fux-70dc68377941

Best regards,
-- 
Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com>


^ permalink raw reply	[flat|nested] 13+ messages in thread
* Re: [PATCH v2 2/3] PCI: dwc: Add helper to Program T_POWER_ON
@ 2026-02-24  0:45 kernel test robot
  0 siblings, 0 replies; 13+ messages in thread
From: kernel test robot @ 2026-02-24  0:45 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp

:::::: 
:::::: Manual check reason: "__compiletime_assert_NNN"
:::::: 

BCC: lkp@intel.com
CC: llvm@lists.linux.dev
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20260223-t_power_on_fux-v2-2-20c921262709@oss.qualcomm.com>
References: <20260223-t_power_on_fux-v2-2-20c921262709@oss.qualcomm.com>
TO: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com>
TO: Manivannan Sadhasivam <mani@kernel.org>
TO: Lorenzo Pieralisi <lpieralisi@kernel.org>
TO: "Krzysztof Wilczyński" <kwilczynski@kernel.org>
TO: Rob Herring <robh@kernel.org>
TO: Bjorn Helgaas <helgaas@kernel.org>
TO: Jingoo Han <jingoohan1@gmail.com>
CC: linux-pci@vger.kernel.org
CC: linux-arm-msm@vger.kernel.org
CC: linux-kernel@vger.kernel.org
CC: mayank.rana@oss.qualcomm.com
CC: quic_vbadigan@quicinc.com
CC: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com>

Hi Krishna,

kernel test robot noticed the following build errors:

[auto build test ERROR on 6de23f81a5e08be8fbf5e8d7e9febc72a5b5f27f]

url:    https://github.com/intel-lab-lkp/linux/commits/Krishna-Chaitanya-Chundru/PCI-ASPM-Add-helper-to-encode-L1SS-T_POWER_ON-fields/20260223-192621
base:   6de23f81a5e08be8fbf5e8d7e9febc72a5b5f27f
patch link:    https://lore.kernel.org/r/20260223-t_power_on_fux-v2-2-20c921262709%40oss.qualcomm.com
patch subject: [PATCH v2 2/3] PCI: dwc: Add helper to Program T_POWER_ON
:::::: branch date: 13 hours ago
:::::: commit date: 13 hours ago
config: x86_64-randconfig-014-20260224 (https://download.01.org/0day-ci/archive/20260224/202602240816.o0QnIVMF-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260224/202602240816.o0QnIVMF-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/r/202602240816.o0QnIVMF-lkp@intel.com/

All errors (new ones prefixed by >>):

>> drivers/pci/controller/dwc/pcie-designware.c:1270:10: error: call to '__compiletime_assert_539' declared with 'error' attribute: FIELD_PREP: value too large for the field
    1270 |                 val |= FIELD_PREP(PCI_L1SS_CAP_P_PWR_ON_SCALE, scale);
         |                        ^
   include/linux/bitfield.h:138:3: note: expanded from macro 'FIELD_PREP'
     138 |                 __FIELD_PREP(_mask, _val, "FIELD_PREP: ");              \
         |                 ^
   include/linux/bitfield.h:91:3: note: expanded from macro '__FIELD_PREP'
      91 |                 __BF_FIELD_CHECK_MASK(mask, val, pfx);                  \
         |                 ^
   include/linux/bitfield.h:70:3: note: expanded from macro '__BF_FIELD_CHECK_MASK'
      70 |                 BUILD_BUG_ON_MSG(__builtin_constant_p(_val) ?           \
         |                 ^
   note: (skipping 2 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
   include/linux/compiler_types.h:694:2: note: expanded from macro '_compiletime_assert'
     694 |         __compiletime_assert(condition, msg, prefix, suffix)
         |         ^
   include/linux/compiler_types.h:687:4: note: expanded from macro '__compiletime_assert'
     687 |                         prefix ## suffix();                             \
         |                         ^
   <scratch space>:28:1: note: expanded from here
      28 | __compiletime_assert_539
         | ^
   1 error generated.


vim +1270 drivers/pci/controller/dwc/pcie-designware.c

a00bba406b5a68 Bjorn Helgaas             2025-11-18  1251  
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1252  /* TODO: Need to handle multi root ports */
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1253  void dw_pcie_program_t_power_on(struct dw_pcie *pci, u16 t_power_on)
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1254  {
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1255  	u8 scale, value;
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1256  	u16 offset;
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1257  	u32 val;
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1258  
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1259  	if (!t_power_on)
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1260  		return;
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1261  
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1262  	offset = dw_pcie_find_ext_capability(pci, PCI_EXT_CAP_ID_L1SS);
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1263  	if (offset) {
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1264  		pcie_encode_t_power_on(t_power_on, &scale, &value);
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1265  
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1266  		dw_pcie_dbi_ro_wr_en(pci);
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1267  
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1268  		val = readl(pci->dbi_base + offset + PCI_L1SS_CAP);
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1269  		val &= ~(PCI_L1SS_CAP_P_PWR_ON_SCALE | PCI_L1SS_CAP_P_PWR_ON_VALUE);
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23 @1270  		val |= FIELD_PREP(PCI_L1SS_CAP_P_PWR_ON_SCALE, scale);
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1271  		val |= FIELD_PREP(PCI_L1SS_CAP_P_PWR_ON_VALUE, value);
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1272  
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1273  		writel(val, pci->dbi_base + offset + PCI_L1SS_CAP);
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1274  
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1275  		dw_pcie_dbi_ro_wr_dis(pci);
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1276  	}
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1277  }
23b85f7abefda8 Krishna Chaitanya Chundru 2026-02-23  1278  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2026-02-24  5:34 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-23 11:13 [PATCH v2 0/3] PCI: qcom: Program T_POWER_ON value for L1.2 exit timing Krishna Chaitanya Chundru
2026-02-23 11:13 ` [PATCH v2 1/3] PCI/ASPM: Add helper to encode L1SS T_POWER_ON fields Krishna Chaitanya Chundru
2026-02-23 15:29   ` Bjorn Helgaas
2026-02-24  5:21     ` Krishna Chaitanya Chundru
2026-02-23 11:13 ` [PATCH v2 2/3] PCI: dwc: Add helper to Program T_POWER_ON Krishna Chaitanya Chundru
2026-02-23 15:38   ` Bjorn Helgaas
2026-02-24  5:21     ` Krishna Chaitanya Chundru
2026-02-23 23:33   ` kernel test robot
2026-02-23 11:13 ` [PATCH v2 3/3] PCI: qcom: " Krishna Chaitanya Chundru
2026-02-23 13:57   ` Shawn Lin
2026-02-24  5:33     ` Krishna Chaitanya Chundru
2026-02-23 15:47   ` Bjorn Helgaas
  -- strict thread matches above, loose matches on Subject: below --
2026-02-24  0:45 [PATCH v2 2/3] PCI: dwc: Add helper to " 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.