Commit graph

1,294,908 commits

Author SHA1 Message Date
Stefan Binding
7a62ab9180 ALSA: hda: cs35l41: Support Lenovo 13X laptop without _DSD
This laptop does not have the correct _DSD settings, so needs to
obtain its configuration from the configuration table.

Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com>
Message-ID: <20240423162303.638211-2-sbinding@opensource.cirrus.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2024-04-24 09:21:11 +02:00
Jiapeng Chong
08e012a62d xfs: Remove unused function xrep_dir_self_parent
The function are defined in the dir_repair.c file, but not called
elsewhere, so delete the unused function.

fs/xfs/scrub/dir_repair.c:186:1: warning: unused function 'xrep_dir_self_parent'.

Reported-by: Abaci Robot <abaci@linux.alibaba.com>
Closes: https://bugzilla.openanolis.cn/show_bug.cgi?id=8867
Signed-off-by: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
2024-04-24 12:34:44 +05:30
Chandan Babu R
4b0bf86c17 xfs: minor fixes to online repair [v13.4 9/9]
Here are some miscellaneous bug fixes for the online repair code.
 
 This has been running on the djcloud for months with no problems.  Enjoy!
 
 Signed-off-by: Darrick J. Wong <djwong@kernel.org>
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQQ2qTKExjcn+O1o2YRKO3ySh0YRpgUCZih1NwAKCRBKO3ySh0YR
 pneLAQCyg4vZ7sYX3tkCrZVYUHTa4Ly5BWCeHoaW+/ylTFm07wEAoakjB9nwPYYC
 Ftru5vN1pijV3xPqGBjj5iIjlpYyiAc=
 =qE/f
 -----END PGP SIGNATURE-----

Merge tag 'repair-fixes-6.10_2024-04-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-6.10-mergeC

xfs: minor fixes to online repair

Here are some miscellaneous bug fixes for the online repair code.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>

* tag 'repair-fixes-6.10_2024-04-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux:
  xfs: invalidate dentries for a file before moving it to the orphanage
  xfs: exchange-range for repairs is no longer dynamic
  xfs: fix iunlock calls in xrep_adoption_trans_alloc
  xfs: drop the scrub file's iolock when transaction allocation fails
2024-04-24 12:31:13 +05:30
Chandan Babu R
b878dbbe2a xfs: reduce iget overhead in scrub [v13.4 8/9]
This patchset looks to reduce iget overhead in two ways: First, a
 previous patch conditionally set DONTCACHE on inodes during xchk_irele
 on the grounds that we knew better at irele time if an inode should be
 dropped.  Unfortunately, over time that patch morphed into a call to
 d_mark_dontcache, which resulted in inodes being dropped even if they
 were referenced by the dcache.  This actually caused *more* recycle
 overhead than if we'd simply called xfs_iget to set DONTCACHE only on
 misses.
 
 The second patch reduces the cost of untrusted iget for a vectored scrub
 call by having the scrubv code maintain a separate refcount to the inode
 so that the cache will always hit.
 
 This has been running on the djcloud for months with no problems.  Enjoy!
 
 Signed-off-by: Darrick J. Wong <djwong@kernel.org>
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQQ2qTKExjcn+O1o2YRKO3ySh0YRpgUCZih1NwAKCRBKO3ySh0YR
 ppWZAPsGOI6tY2LP4pqA3M2BzsERBICC8uflKeeUbYF12p/c3wEAyLaHWnVhD36D
 rP/dVedTTuhpZQBAd6mdfA5puq72PgU=
 =bSz3
 -----END PGP SIGNATURE-----

Merge tag 'reduce-scrub-iget-overhead-6.10_2024-04-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-6.10-mergeC

xfs: reduce iget overhead in scrub

This patchset looks to reduce iget overhead in two ways: First, a
previous patch conditionally set DONTCACHE on inodes during xchk_irele
on the grounds that we knew better at irele time if an inode should be
dropped.  Unfortunately, over time that patch morphed into a call to
d_mark_dontcache, which resulted in inodes being dropped even if they
were referenced by the dcache.  This actually caused *more* recycle
overhead than if we'd simply called xfs_iget to set DONTCACHE only on
misses.

The second patch reduces the cost of untrusted iget for a vectored scrub
call by having the scrubv code maintain a separate refcount to the inode
so that the cache will always hit.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>

* tag 'reduce-scrub-iget-overhead-6.10_2024-04-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux:
  xfs: only iget the file once when doing vectored scrub-by-handle
  xfs: use dontcache for grabbing inodes during scrub
2024-04-24 12:27:33 +05:30
Barnabás Czémán
4edd73d174 drm/panel: jdi-fhd-r63452: make use of prepare_prev_first
The DSI host must be enabled for the panel to be initialized in
prepare(). Set the prepare_prev_first flag to guarantee this.

Signed-off-by: Barnabás Czémán <trabarni@gmail.com>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20240423-jdi-fix-v1-1-808970662b40@gmail.com
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20240423-jdi-fix-v1-1-808970662b40@gmail.com
2024-04-24 08:56:10 +02:00
Dmitry Baryshkov
14b3cdbd0e drm/bridge: adv7511: make it honour next bridge in DT
DT bindings for adv7511 and adv7533 bridges specify HDMI output to be
present at the port@1. This allows board DT to add e.g. HDMI connector
nodes or any other next chained bridge. Make adv7511 driver discover
that bridge and attach it to the chain.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20240331-adv7511-next-bridge-v2-1-7356d61dc7b2@linaro.org
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20240331-adv7511-next-bridge-v2-1-7356d61dc7b2@linaro.org
2024-04-24 08:55:44 +02:00
Dmitry Baryshkov
251e3c1fe1 drm/panel: visionox-rm69299: stop calling regulator_set_load manually
Use .init_load_uA part of the bulk regulator API instead of calling
register_set_load() manually.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20240404-drop-panel-unregister-v1-6-9f56953c5fb9@linaro.org
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20240404-drop-panel-unregister-v1-6-9f56953c5fb9@linaro.org
2024-04-24 08:55:26 +02:00
Dmitry Baryshkov
a8ee5f50a9 drm/panel: novatek-nt36672a: stop calling regulator_set_load manually
Use .init_load_uA part of the bulk regulator API instead of calling
register_set_load() manually.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20240404-drop-panel-unregister-v1-5-9f56953c5fb9@linaro.org
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20240404-drop-panel-unregister-v1-5-9f56953c5fb9@linaro.org
2024-04-24 08:55:26 +02:00
Dmitry Baryshkov
9dab1af1e7 drm/panel: novatek-nt36672e: stop calling regulator_set_load manually
Use .init_load_uA part of the bulk regulator API instead of calling
register_set_load() manually.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Jessica Zhang <quic_jesszhan@quicinc.com>
Link: https://lore.kernel.org/r/20240404-drop-panel-unregister-v1-4-9f56953c5fb9@linaro.org
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20240404-drop-panel-unregister-v1-4-9f56953c5fb9@linaro.org
2024-04-24 08:55:23 +02:00
Dmitry Baryshkov
302aeb9467 drm/panel: novatek-nt36672e: stop setting register load before disable
It is pointless to set register load before disabling the register. This
vote is going to be dropped as soon as the register is disabled. Drop
these register_set_load calls.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20240404-drop-panel-unregister-v1-3-9f56953c5fb9@linaro.org
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20240404-drop-panel-unregister-v1-3-9f56953c5fb9@linaro.org
2024-04-24 08:55:22 +02:00
Chandan Babu R
496baa2cb9 xfs: vectorize scrub kernel calls [v13.4 7/9]
Create a vectorized version of the metadata scrub and repair ioctl, and
 adapt xfs_scrub to use that.  This mitigates the impact of system call
 overhead on xfs_scrub runtime.
 
 This has been running on the djcloud for months with no problems.  Enjoy!
 
 Signed-off-by: Darrick J. Wong <djwong@kernel.org>
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQQ2qTKExjcn+O1o2YRKO3ySh0YRpgUCZih1NwAKCRBKO3ySh0YR
 pik6AQDyqpzUUy7vsJQgRQc/kaHVZevNtHoizvsCfVxI6f4sSgD/Xn9Ek9TnCA+A
 21sSZLYbXl+9+eCQgpm7Oj3+fxCZDw8=
 =HEPK
 -----END PGP SIGNATURE-----

Merge tag 'vectorized-scrub-6.10_2024-04-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-6.10-mergeC

xfs: vectorize scrub kernel calls

Create a vectorized version of the metadata scrub and repair ioctl, and
adapt xfs_scrub to use that.  This mitigates the impact of system call
overhead on xfs_scrub runtime.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>

* tag 'vectorized-scrub-6.10_2024-04-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux:
  xfs: introduce vectored scrub mode
  xfs: move xfs_ioc_scrub_metadata to scrub.c
  xfs: reduce the rate of cond_resched calls inside scrub
2024-04-24 12:22:07 +05:30
Krzysztof Kozlowski
bd54eff2c5 arm64: dts: realtek: rtc16xx: add missing unit address to soc node
"soc" node has "ranges" property thus add matching unit address to fix
dtc W=1 warnings:

  rtd16xx.dtsi:130.6-198.4: Warning (unit_address_vs_reg): /soc: node has a reg or ranges property, but no unit name

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Link: https://lore.kernel.org/r/20240401140912.97157-3-krzk@kernel.org
2024-04-24 08:50:27 +02:00
Krzysztof Kozlowski
ed719eaa59 arm64: dts: realtek: rtd139x: add missing unit address to soc node
"soc" node has "ranges" property thus add matching unit address to fix
dtc W=1 warnings:

  rtd139x.dtsi:50.6-120.4: Warning (unit_address_vs_reg): /soc: node has a reg or ranges property, but no unit name

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Link: https://lore.kernel.org/r/20240401140912.97157-2-krzk@kernel.org
2024-04-24 08:50:27 +02:00
Krzysztof Kozlowski
9c1998bb18 arm64: dts: realtek: rtd129x: add missing unit address to soc node
"soc" node has "ranges" property thus add matching unit address to fix
dtc W=1 warnings:

  rtd129x.dtsi:51.6-122.4: Warning (unit_address_vs_reg): /soc: node has a reg or ranges property, but no unit name

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Link: https://lore.kernel.org/r/20240401140912.97157-1-krzk@kernel.org
2024-04-24 08:50:26 +02:00
Krzysztof Kozlowski
6325289355 arm64: dts: uniphier: ld20-global: drop audio codec port unit address
Audio codec port does not have "reg", thus it should not have unit
address, as reported by dtc W=1 warning:

  uniphier-ld20-global.dts:127.10-132.5: Warning (unit_address_vs_reg): /soc@0/i2c@58780000/tas5707@1b/port@0: node has a unit name, but no reg or ranges property

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Link: https://lore.kernel.org/r/20240401140952.97923-4-krzk@kernel.org
2024-04-24 08:49:39 +02:00
Krzysztof Kozlowski
e505949aba arm64: dts: uniphier: ld20-global: use generic node name for audio-codec
Devicetree specification expects node names to be generic, representing
the class of devices.

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Link: https://lore.kernel.org/r/20240401140952.97923-3-krzk@kernel.org
2024-04-24 08:49:39 +02:00
Krzysztof Kozlowski
2e2798377b arm64: dts: uniphier: ld11-global: drop audio codec port unit address
Audio codec port does not have "reg", thus it should not have unit
address, as reported by dtc W=1 warning:

  uniphier-ld11-global.dts:127.10-132.5: Warning (unit_address_vs_reg): /soc@0/i2c@58780000/tas5707a@1d/port@0: node has a unit name, but no reg or ranges property

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Link: https://lore.kernel.org/r/20240401140952.97923-2-krzk@kernel.org
2024-04-24 08:49:38 +02:00
Krzysztof Kozlowski
345531df1c arm64: dts: uniphier: ld11-global: use generic node name for audio-codec
Devicetree specification expects node names to be generic, representing
the class of devices.

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Link: https://lore.kernel.org/r/20240401140952.97923-1-krzk@kernel.org
2024-04-24 08:49:38 +02:00
Krzysztof Kozlowski
e80ab9c978 arm64: dts: sharkl3: add missing unit addresses
Nodes with "reg" property are supposed to have unit address, as reported
by dtc W=1 warning:

  sharkl3.dtsi:42.23-48.6: Warning (unit_address_vs_reg): /soc/syscon@402b0000/pmu-gate: node has a reg or ranges property, but no unit name
  sharkl3.dtsi:59.29-63.6: Warning (unit_address_vs_reg): /soc/syscon@402e0000/aonapb-gate: node has a reg or ranges property, but no unit name
  sharkl3.dtsi:74.13-80.6: Warning (unit_address_vs_reg): /soc/syscon@40353000/pll: node has a reg or ranges property, but no unit name
  sharkl3.dtsi:91.15-95.6: Warning (unit_address_vs_reg): /soc/syscon@40359000/mpll: node has a reg or ranges property, but no unit name
  sharkl3.dtsi:106.15-112.6: Warning (unit_address_vs_reg): /soc/syscon@4035c000/rpll: node has a reg or ranges property, but no unit name
  sharkl3.dtsi:123.15-127.6: Warning (unit_address_vs_reg): /soc/syscon@40363000/dpll: node has a reg or ranges property, but no unit name
  sharkl3.dtsi:138.21-142.6: Warning (unit_address_vs_reg): /soc/syscon@60800000/mm-gate: node has a reg or ranges property, but no unit name
  sharkl3.dtsi:153.27-159.6: Warning (unit_address_vs_reg): /soc/syscon@71300000/apapb-gate: node has a reg or ranges property, but no unit name

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Link: https://lore.kernel.org/r/20240401141128.98317-5-krzk@kernel.org
2024-04-24 08:49:06 +02:00
Krzysztof Kozlowski
09dddc24eb arm64: dts: whale2: add missing ap-apb unit address
Nodes with "reg" property are supposed to have unit address, as reported
by dtc W=1 warning:

  whale2.dtsi:67.10-116.5: Warning (simple_bus_reg): /soc/ap-apb: simple-bus unit address format error, expected "70000000"

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Link: https://lore.kernel.org/r/20240401141128.98317-4-krzk@kernel.org
2024-04-24 08:49:05 +02:00
Krzysztof Kozlowski
653f383e7c arm64: dts: sc9860: move GIC to soc node
All devices on MMIO bus should be within the "soc" node.

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Link: https://lore.kernel.org/r/20240401141128.98317-3-krzk@kernel.org
2024-04-24 08:49:05 +02:00
Krzysztof Kozlowski
74be4a8d52 arm64: dts: sc9860: move GPIO keys to board
GPIO keys are properties of a board, not SoC, because SoC physically
does not have any keys or buttons.

This also fixes dtc W=1 build warning:

  sc9860.dtsi:688.13-714.5: Warning (simple_bus_reg): /soc/gpio-keys: missing or empty reg/ranges property

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Link: https://lore.kernel.org/r/20240401141128.98317-2-krzk@kernel.org
2024-04-24 08:49:05 +02:00
Krzysztof Kozlowski
2c20032e1e arm64: dts: sc9860: add missing aon-prediv unit address
Nodes with "reg" property are supposed to have unit address, as reported
by dtc W=1 warning:

  sc9860.dtsi:210.26-216.5: Warning (simple_bus_reg): /soc/aon-prediv: simple-bus unit address format error, expected "402d0000"

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Link: https://lore.kernel.org/r/20240401141128.98317-1-krzk@kernel.org
2024-04-24 08:49:04 +02:00
Chandan Babu R
f7cea94646 xfs: detect and correct directory tree problems [v13.4 6/9]
Historically, checking the tree-ness of the directory tree structure has
 not been complete.  Cycles of subdirectories break the tree properties,
 as do subdirectories with multiple parents.  It's easy enough for DFS to
 detect problems as long as one of the participants is reachable from the
 root, but this technique cannot find unconnected cycles.
 
 Directory parent pointers change that, because we can discover all of
 these problems from a simple walk from a subdirectory towards the root.
 For each child we start with, if the walk terminates without reaching
 the root, we know the path is disconnected and ought to be attached to
 the lost and found.  If we find ourselves, we know this is a cycle and
 can delete an incoming edge.  If we find multiple paths to the root, we
 know to delete an incoming edge.
 
 Even better, once we've finished walking paths, we've identified the
 good ones and know which other path(s) to remove.
 
 This has been running on the djcloud for months with no problems.  Enjoy!
 
 Signed-off-by: Darrick J. Wong <djwong@kernel.org>
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQQ2qTKExjcn+O1o2YRKO3ySh0YRpgUCZih1NwAKCRBKO3ySh0YR
 pg8TAQD/usg8IEtpiHxiewnJPWrxnM5X3e4fmuHRz41pvCntnwD+Oa28Oa9Fmogf
 Y5AwmdLpy3qugvnHdxhQx4nGKiz8FAA=
 =wJgH
 -----END PGP SIGNATURE-----

Merge tag 'scrub-directory-tree-6.10_2024-04-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-6.10-mergeC

xfs: detect and correct directory tree problems

Historically, checking the tree-ness of the directory tree structure has
not been complete.  Cycles of subdirectories break the tree properties,
as do subdirectories with multiple parents.  It's easy enough for DFS to
detect problems as long as one of the participants is reachable from the
root, but this technique cannot find unconnected cycles.

Directory parent pointers change that, because we can discover all of
these problems from a simple walk from a subdirectory towards the root.
For each child we start with, if the walk terminates without reaching
the root, we know the path is disconnected and ought to be attached to
the lost and found.  If we find ourselves, we know this is a cycle and
can delete an incoming edge.  If we find multiple paths to the root, we
know to delete an incoming edge.

Even better, once we've finished walking paths, we've identified the
good ones and know which other path(s) to remove.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>

* tag 'scrub-directory-tree-6.10_2024-04-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux:
  xfs: fix corruptions in the directory tree
  xfs: report directory tree corruption in the health information
  xfs: invalidate dirloop scrub path data when concurrent updates happen
  xfs: teach online scrub to find directory tree structure problems
2024-04-24 12:17:51 +05:30
Chandan Babu R
1da824b0bf xfs: online repair for parent pointers [v13.4 5/9]
This series implements online repair for directory parent pointer
 metadata.  The checking half is fairly straightforward -- for each
 outgoing directory link (forward or backwards), grab the inode at the
 other end, and confirm that there's a corresponding link.  If we can't
 grab an inode or lock it, we'll save that link for a slower loop that
 cycles all the locks, confirms the continued existence of the link, and
 rechecks the link if it's actually still there.
 
 Repairs are a bit more involved -- for directories, we walk the entire
 filesystem to rebuild the dirents from parent pointer information.
 Parent pointer repairs do the same walk but rebuild the pptrs from the
 dirent information, but with the added twist that it duplicates all the
 xattrs so that it can use the atomic extent swapping code to commit the
 repairs atomically.
 
 This introduces an added twist to the xattr repair code -- we use dirent
 hooks to detect a colliding update to the pptr data while we're not
 holding the ILOCKs; if one is detected, we restart the xattr salvaging
 process but this time hold all the ILOCKs until the end of the scan.
 
 For offline repair, the phase6 directory connectivity scan generates an
 index of all the expected parent pointers in the filesystem.  Then it
 walks each file and compares the parent pointers attached to that file
 against the index generated, and resyncs the results as necessary.
 
 This has been running on the djcloud for months with no problems.  Enjoy!
 
 Signed-off-by: Darrick J. Wong <djwong@kernel.org>
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQQ2qTKExjcn+O1o2YRKO3ySh0YRpgUCZih1NgAKCRBKO3ySh0YR
 pi/tAQCAMBb+xkfs+RR/qmCwCcoyw2rQwEPKOPqhLxfYdlqc5AEAsa64aKliv5vf
 Z6ShYoEpK4SuwclOqf9qFafN4D6zKg4=
 =SurM
 -----END PGP SIGNATURE-----

Merge tag 'repair-pptrs-6.10_2024-04-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-6.10-mergeC

xfs: online repair for parent pointers

This series implements online repair for directory parent pointer
metadata.  The checking half is fairly straightforward -- for each
outgoing directory link (forward or backwards), grab the inode at the
other end, and confirm that there's a corresponding link.  If we can't
grab an inode or lock it, we'll save that link for a slower loop that
cycles all the locks, confirms the continued existence of the link, and
rechecks the link if it's actually still there.

Repairs are a bit more involved -- for directories, we walk the entire
filesystem to rebuild the dirents from parent pointer information.
Parent pointer repairs do the same walk but rebuild the pptrs from the
dirent information, but with the added twist that it duplicates all the
xattrs so that it can use the atomic extent swapping code to commit the
repairs atomically.

This introduces an added twist to the xattr repair code -- we use dirent
hooks to detect a colliding update to the pptr data while we're not
holding the ILOCKs; if one is detected, we restart the xattr salvaging
process but this time hold all the ILOCKs until the end of the scan.

For offline repair, the phase6 directory connectivity scan generates an
index of all the expected parent pointers in the filesystem.  Then it
walks each file and compares the parent pointers attached to that file
against the index generated, and resyncs the results as necessary.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>

* tag 'repair-pptrs-6.10_2024-04-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux:
  xfs: inode repair should ensure there's an attr fork to store parent pointers
  xfs: repair link count of nondirectories after rebuilding parent pointers
  xfs: adapt the orphanage code to handle parent pointers
  xfs: actually rebuild the parent pointer xattrs
  xfs: add a per-leaf block callback to xchk_xattr_walk
  xfs: split xfs_bmap_add_attrfork into two pieces
  xfs: remove pointless unlocked assertion
  xfs: implement live updates for parent pointer repairs
  xfs: repair directory parent pointers by scanning for dirents
  xfs: replay unlocked parent pointer updates that accrue during xattr repair
  xfs: implement live updates for directory repairs
  xfs: repair directories by scanning directory parent pointers
  xfs: add raw parent pointer apis to support repair
  xfs: salvage parent pointers when rebuilding xattr structures
  xfs: make the reserved block permission flag explicit in xfs_attr_set
  xfs: remove some boilerplate from xfs_attr_set
2024-04-24 12:13:09 +05:30
Chandan Babu R
0d2dd382a7 xfs: scrubbing for parent pointers [v13.4 4/9]
Teach online fsck to use parent pointers to assist in checking
 directories, parent pointers, extended attributes, and link counts.
 
 This has been running on the djcloud for months with no problems.  Enjoy!
 
 Signed-off-by: Darrick J. Wong <djwong@kernel.org>
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQQ2qTKExjcn+O1o2YRKO3ySh0YRpgUCZih1NgAKCRBKO3ySh0YR
 pkk7AQDd/xKCVQDq14c1A9MjzhpTUn9dWeHoU6KUV1xWvtDaygD6A1KBzirREi9O
 ieKg3OGPcg41sl4bnz7lsvRGxgp/mgY=
 =XU5l
 -----END PGP SIGNATURE-----

Merge tag 'scrub-pptrs-6.10_2024-04-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-6.10-mergeC

xfs: scrubbing for parent pointers

Teach online fsck to use parent pointers to assist in checking
directories, parent pointers, extended attributes, and link counts.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>

* tag 'scrub-pptrs-6.10_2024-04-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux:
  xfs: check parent pointer xattrs when scrubbing
  xfs: walk directory parent pointers to determine backref count
  xfs: deferred scrub of parent pointers
  xfs: scrub parent pointers
  xfs: deferred scrub of dirents
  xfs: check dirents have parent pointers
  xfs: revert commit 44af6c7e59
2024-04-24 12:06:51 +05:30
Chandan Babu R
47d83c1946 xfs: Parent Pointers [v13.4 3/9]
This is the latest parent pointer attributes for xfs.  The goal of this
 patch set is to add a parent pointer attribute to each inode.  The
 attribute name containing the parent inode, generation, and directory
 offset, while the  attribute value contains the file name.  This feature
 will enable future optimizations for online scrub, shrink, nfs handles,
 verity, or any other feature that could make use of quickly deriving an
 inodes path from the mount point.
 
 Directory parent pointers are stored as namespaced extended attributes
 of a file.  Because parent pointers are an indivisible tuple of
 (dirent_name, parent_ino, parent_gen) we cannot use the usual attr name
 lookup functions to find a parent pointer.  This is solvable by
 introducing a new lookup mode that checks both the name and the value of
 the xattr.
 
 Therefore, introduce this new name-value lookup mode that's gated on the
 XFS_ATTR_PARENT namespace.  This requires the introduction of new
 opcodes for the extended attribute update log intent items, which
 actually means that parent pointers (itself an INCOMPAT feature) does
 not depend on the LOGGED_XATTRS log incompat feature bit.
 
 To reduce collisions on the dirent names of parent pointers, introduce a
 new attr hash mode that is the dir2 namehash of the dirent name xor'd
 with the parent inode number.
 
 At this point, Allison has moved on to other things, so I've merged her
 patchset into djwong-dev for merging.
 
 Updates since v12 [djwong]:
 
 Rebase on 6.9-rc and update the online fsck design document.
 Redesign the ondisk format to use the name-value lookups to get us back
 to the point where the attr is (dirent_name -> parent_ino/gen).
 
 Updates since v11 [djwong]:
 
 Rebase on 6.4-rc and make some tweaks and bugfixes to enable the repair
 prototypes.  Merge with djwong-dev and make online repair actually work.
 
 Updates since v10 [djwong]:
 
 Merge in the ondisk format changes to get rid of the diroffset conflicts
 with the parent pointer repair code, rebase the entire series with the
 attr vlookup changes first, and merge all the other random fixes.
 
 Updates since v9:
 
 Reordered patches 2 and 3 to be 6 and 7
 
 xfs: Add xfs_verify_pptr
    moved parent pointer validators to xfs_parent
 
 xfs: Add parent pointer ioctl
    Extra validation checks for fs id
    added missing release for the inode
    use GFP_KERNEL flags for malloc/realloc
    reworked ioctl to use pptr listenty and flex array
 
 NEW
    xfs: don't remove the attr fork when parent pointers are enabled
 
 NEW
    directory lookups should return diroffsets too
 
 NEW
    xfs: move/add parent pointer validators to xfs_parent
 
 Updates since v8:
 
 xfs: parent pointer attribute creation
    Fix xfs_parent_init to release log assist on alloc fail
    Add slab cache for xfs_parent_defer
    Fix xfs_create to release after unlock
    Add xfs_parent_start and xfs_parent_finish wrappers
    removed unused xfs_parent_name_irec and xfs_init_parent_name_irec
 
 xfs: add parent attributes to link
    Start/finish wrapper updates
    Fix xfs_link to disallow reservationless quotas
 
 xfs: add parent attributes to symlink
    Fix xfs_symlink to release after unlock
    Start/finish wrapper updates
 
 xfs: remove parent pointers in unlink
    Start/finish wrapper updates
    Add missing parent free
 
 xfs: Add parent pointers to rename
    Start/finish wrapper updates
    Fix rename to only grab logged xattr once
    Fix xfs_rename to disallow reservationless quotas
    Fix double unlock on dqattach fail
    Move parent frees to out_release_wip
 
 xfs: Add parent pointers to xfs_cross_rename
    Hoist parent pointers into rename
 
 Questions comments and feedback appreciated!
 
 Thanks all!
 Allison
 
 This has been running on the djcloud for months with no problems.  Enjoy!
 
 Signed-off-by: Darrick J. Wong <djwong@kernel.org>
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQQ2qTKExjcn+O1o2YRKO3ySh0YRpgUCZih1NgAKCRBKO3ySh0YR
 pj2UAQDJwGaKslDfXmMY0JMS/GTrEwD7IFNQ/cE2fIkfoUNDeAEAs1tPS0lST4MM
 YUC+1DVSkIl+07sV9Xf0q4zMvgJtOQc=
 =oOSQ
 -----END PGP SIGNATURE-----

Merge tag 'pptrs-6.10_2024-04-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-6.10-mergeC

xfs: Parent Pointers

This is the latest parent pointer attributes for xfs.  The goal of this
patch set is to add a parent pointer attribute to each inode.  The
attribute name containing the parent inode, generation, and directory
offset, while the  attribute value contains the file name.  This feature
will enable future optimizations for online scrub, shrink, nfs handles,
verity, or any other feature that could make use of quickly deriving an
inodes path from the mount point.

Directory parent pointers are stored as namespaced extended attributes
of a file.  Because parent pointers are an indivisible tuple of
(dirent_name, parent_ino, parent_gen) we cannot use the usual attr name
lookup functions to find a parent pointer.  This is solvable by
introducing a new lookup mode that checks both the name and the value of
the xattr.

Therefore, introduce this new name-value lookup mode that's gated on the
XFS_ATTR_PARENT namespace.  This requires the introduction of new
opcodes for the extended attribute update log intent items, which
actually means that parent pointers (itself an INCOMPAT feature) does
not depend on the LOGGED_XATTRS log incompat feature bit.

To reduce collisions on the dirent names of parent pointers, introduce a
new attr hash mode that is the dir2 namehash of the dirent name xor'd
with the parent inode number.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>

* tag 'pptrs-6.10_2024-04-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux:
  xfs: enable parent pointers
  xfs: drop compatibility minimum log size computations for reflink
  xfs: fix unit conversion error in xfs_log_calc_max_attrsetm_res
  xfs: add a incompat feature bit for parent pointers
  xfs: don't remove the attr fork when parent pointers are enabled
  xfs: add parent pointer ioctls
  xfs: split out handle management helpers a bit
  xfs: move handle ioctl code to xfs_handle.c
  xfs: pass the attr value to put_listent when possible
  xfs: don't return XFS_ATTR_PARENT attributes via listxattr
  xfs: Add parent pointers to xfs_cross_rename
  xfs: Add parent pointers to rename
  xfs: remove parent pointers in unlink
  xfs: add parent attributes to symlink
  xfs: add parent attributes to link
  xfs: parent pointer attribute creation
  xfs: create a hashname function for parent pointers
  xfs: extend transaction reservations for parent attributes
  xfs: add parent pointer validator functions
  xfs: Expose init_xattrs in xfs_create_tmpfile
  xfs: record inode generation in xattr update log intent items
  xfs: create attr log item opcodes and formats for parent pointers
  xfs: refactor xfs_is_using_logged_xattrs checks in attr item recovery
  xfs: allow xattr matching on name and value for parent pointers
  xfs: define parent pointer ondisk extended attribute format
  xfs: add parent pointer support to attribute code
  xfs: create a separate hashname function for extended attributes
  xfs: move xfs_attr_defer_add to xfs_attr_item.c
  xfs: check the flags earlier in xfs_attr_match
  xfs: rearrange xfs_attr_match parameters
2024-04-24 11:54:37 +05:30
Chandan Babu R
d7d02f750a xfs: improve extended attribute validation [v13.4 2/9]
Prior to introducing parent pointer extended attributes, let's spend
 some time cleaning up the attr code and strengthening the validation
 that it performs on attrs coming in from the disk.
 
 This has been running on the djcloud for months with no problems.  Enjoy!
 
 Signed-off-by: Darrick J. Wong <djwong@kernel.org>
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQQ2qTKExjcn+O1o2YRKO3ySh0YRpgUCZih1NgAKCRBKO3ySh0YR
 pojvAQD4AF7OO0MFZ8XcLqOAC8IJv/O690+cg7xEtnk5U8NviwD/Yakjfvqo4lLD
 N0py4DXg/OIY08gF2BZpLUOiZdSTAAg=
 =l8aH
 -----END PGP SIGNATURE-----

Merge tag 'improve-attr-validation-6.10_2024-04-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-6.10-mergeC

xfs: improve extended attribute validation

Prior to introducing parent pointer extended attributes, let's spend
some time cleaning up the attr code and strengthening the validation
that it performs on attrs coming in from the disk.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>

* tag 'improve-attr-validation-6.10_2024-04-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux:
  xfs: enforce one namespace per attribute
  xfs: refactor name/value iovec validation in xlog_recover_attri_commit_pass2
  xfs: refactor name/length checks in xfs_attri_validate
  xfs: use local variables for name and value length in _attri_commit_pass2
  xfs: always set args->value in xfs_attri_item_recover
  xfs: validate recovered name buffers when recovering xattr items
  xfs: use helpers to extract xattr op from opflags
  xfs: restructure xfs_attr_complete_op a bit
  xfs: check shortform attr entry flags specifically
  xfs: fix missing check for invalid attr flags
  xfs: check opcode and iovec count match in xlog_recover_attri_commit_pass2
  xfs: use an XFS_OPSTATE_ flag for detecting if logged xattrs are available
  xfs: require XFS_SB_FEAT_INCOMPAT_LOG_XATTRS for attr log intent item recovery
  xfs: attr fork iext must be loaded before calling xfs_attr_is_leaf
2024-04-24 11:50:04 +05:30
Gustavo A. R. Silva
9a1f1d04f6 smb: client: Fix struct_group() usage in __packed structs
Use struct_group_attr() in __packed structs, instead of struct_group().

Below you can see the pahole output before/after changes:

pahole -C smb2_file_network_open_info fs/smb/client/smb2ops.o
struct smb2_file_network_open_info {
	union {
		struct {
			__le64     CreationTime;         /*     0     8 */
			__le64     LastAccessTime;       /*     8     8 */
			__le64     LastWriteTime;        /*    16     8 */
			__le64     ChangeTime;           /*    24     8 */
			__le64     AllocationSize;       /*    32     8 */
			__le64     EndOfFile;            /*    40     8 */
			__le32     Attributes;           /*    48     4 */
		};                                       /*     0    56 */
		struct {
			__le64     CreationTime;         /*     0     8 */
			__le64     LastAccessTime;       /*     8     8 */
			__le64     LastWriteTime;        /*    16     8 */
			__le64     ChangeTime;           /*    24     8 */
			__le64     AllocationSize;       /*    32     8 */
			__le64     EndOfFile;            /*    40     8 */
			__le32     Attributes;           /*    48     4 */
		} network_open_info;                     /*     0    56 */
	};                                               /*     0    56 */
	__le32                     Reserved;             /*    56     4 */

	/* size: 60, cachelines: 1, members: 2 */
	/* last cacheline: 60 bytes */
} __attribute__((__packed__));

pahole -C smb2_file_network_open_info fs/smb/client/smb2ops.o
struct smb2_file_network_open_info {
	union {
		struct {
			__le64     CreationTime;         /*     0     8 */
			__le64     LastAccessTime;       /*     8     8 */
			__le64     LastWriteTime;        /*    16     8 */
			__le64     ChangeTime;           /*    24     8 */
			__le64     AllocationSize;       /*    32     8 */
			__le64     EndOfFile;            /*    40     8 */
			__le32     Attributes;           /*    48     4 */
		} __attribute__((__packed__));           /*     0    52 */
		struct {
			__le64     CreationTime;         /*     0     8 */
			__le64     LastAccessTime;       /*     8     8 */
			__le64     LastWriteTime;        /*    16     8 */
			__le64     ChangeTime;           /*    24     8 */
			__le64     AllocationSize;       /*    32     8 */
			__le64     EndOfFile;            /*    40     8 */
			__le32     Attributes;           /*    48     4 */
		} __attribute__((__packed__)) network_open_info;       /*     0    52 */
	};                                               /*     0    52 */
	__le32                     Reserved;             /*    52     4 */

	/* size: 56, cachelines: 1, members: 2 */
	/* last cacheline: 56 bytes */
};

pahole -C smb_com_open_rsp fs/smb/client/cifssmb.o
struct smb_com_open_rsp {
	...

	union {
		struct {
			__le64     CreationTime;         /*    48     8 */
			__le64     LastAccessTime;       /*    56     8 */
			/* --- cacheline 1 boundary (64 bytes) --- */
			__le64     LastWriteTime;        /*    64     8 */
			__le64     ChangeTime;           /*    72     8 */
			__le32     FileAttributes;       /*    80     4 */
		};                                       /*    48    40 */
		struct {
			__le64     CreationTime;         /*    48     8 */
			__le64     LastAccessTime;       /*    56     8 */
			/* --- cacheline 1 boundary (64 bytes) --- */
			__le64     LastWriteTime;        /*    64     8 */
			__le64     ChangeTime;           /*    72     8 */
			__le32     FileAttributes;       /*    80     4 */
		} common_attributes;                     /*    48    40 */
	};                                               /*    48    40 */

	...

	/* size: 111, cachelines: 2, members: 14 */
	/* last cacheline: 47 bytes */
} __attribute__((__packed__));

pahole -C smb_com_open_rsp fs/smb/client/cifssmb.o
struct smb_com_open_rsp {
	...

	union {
		struct {
			__le64     CreationTime;         /*    48     8 */
			__le64     LastAccessTime;       /*    56     8 */
			/* --- cacheline 1 boundary (64 bytes) --- */
			__le64     LastWriteTime;        /*    64     8 */
			__le64     ChangeTime;           /*    72     8 */
			__le32     FileAttributes;       /*    80     4 */
		} __attribute__((__packed__));           /*    48    36 */
		struct {
			__le64     CreationTime;         /*    48     8 */
			__le64     LastAccessTime;       /*    56     8 */
			/* --- cacheline 1 boundary (64 bytes) --- */
			__le64     LastWriteTime;        /*    64     8 */
			__le64     ChangeTime;           /*    72     8 */
			__le32     FileAttributes;       /*    80     4 */
		} __attribute__((__packed__)) common_attributes;       /*    48    36 */
	};                                               /*    48    36 */

	...

	/* size: 107, cachelines: 2, members: 14 */
	/* last cacheline: 43 bytes */
} __attribute__((__packed__));

pahole -C FILE_ALL_INFO fs/smb/client/cifssmb.o
typedef struct {
	union {
		struct {
			__le64     CreationTime;         /*     0     8 */
			__le64     LastAccessTime;       /*     8     8 */
			__le64     LastWriteTime;        /*    16     8 */
			__le64     ChangeTime;           /*    24     8 */
			__le32     Attributes;           /*    32     4 */
		};                                       /*     0    40 */
		struct {
			__le64     CreationTime;         /*     0     8 */
			__le64     LastAccessTime;       /*     8     8 */
			__le64     LastWriteTime;        /*    16     8 */
			__le64     ChangeTime;           /*    24     8 */
			__le32     Attributes;           /*    32     4 */
		} common_attributes;                     /*     0    40 */
	};                                               /*     0    40 */

	...

	/* size: 113, cachelines: 2, members: 17 */
	/* last cacheline: 49 bytes */
} __attribute__((__packed__)) FILE_ALL_INFO;

pahole -C FILE_ALL_INFO fs/smb/client/cifssmb.o
typedef struct {
	union {
		struct {
			__le64     CreationTime;         /*     0     8 */
			__le64     LastAccessTime;       /*     8     8 */
			__le64     LastWriteTime;        /*    16     8 */
			__le64     ChangeTime;           /*    24     8 */
			__le32     Attributes;           /*    32     4 */
		} __attribute__((__packed__));           /*     0    36 */
		struct {
			__le64     CreationTime;         /*     0     8 */
			__le64     LastAccessTime;       /*     8     8 */
			__le64     LastWriteTime;        /*    16     8 */
			__le64     ChangeTime;           /*    24     8 */
			__le32     Attributes;           /*    32     4 */
		} __attribute__((__packed__)) common_attributes;       /*     0    36 */
	};                                               /*     0    36 */

	...

	/* size: 109, cachelines: 2, members: 17 */
	/* last cacheline: 45 bytes */
} __attribute__((__packed__)) FILE_ALL_INFO;

Fixes: 0015eb6e12 ("smb: client, common: fix fortify warnings")
Cc: stable@vger.kernel.org
Reviewed-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
2024-04-24 01:06:13 -05:00
Chandan Babu R
1321890a1b xfs: shrink struct xfs_da_args [v13.4 1/9]
Let's clean out some unused flags and fields from struct xfs_da_args.
 
 This has been running on the djcloud for months with no problems.  Enjoy!
 
 Signed-off-by: Darrick J. Wong <djwong@kernel.org>
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQQ2qTKExjcn+O1o2YRKO3ySh0YRpgUCZih1NgAKCRBKO3ySh0YR
 pr16AQDIj2NMtagLvPz/rSFcJPZ4VsGVor0zGQDK08WI79l3dAD/boFN5VpMLGnE
 zYE0nXT25OAxo5i97kyQ1WvKyq9uFQM=
 =A3+W
 -----END PGP SIGNATURE-----

Merge tag 'shrink-dirattr-args-6.10_2024-04-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-6.10-mergeC

xfs: shrink struct xfs_da_args

Let's clean out some unused flags and fields from struct xfs_da_args.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>

* tag 'shrink-dirattr-args-6.10_2024-04-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux:
  xfs: rearrange xfs_da_args a bit to use less space
  xfs: make attr removal an explicit operation
  xfs: remove xfs_da_args.attr_flags
  xfs: remove XFS_DA_OP_NOTIME
  xfs: remove XFS_DA_OP_REMOVE
2024-04-24 11:14:36 +05:30
Alexander Usyskin
4108a30f10 mei: me: add lunar lake point M DID
Add Lunar (Point) Lake M device id.

Cc: stable@vger.kernel.org
Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Link: https://lore.kernel.org/r/20240421135631.223362-1-tomas.winkler@intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-04-23 21:44:16 -07:00
Daniele Ceraolo Spurio
a1383ac728 mei: pxp: match against PCI_CLASS_DISPLAY_OTHER
The ATS-M class is PCI_CLASS_DISPLAY_OTHER instead of
PCI_CLASS_DISPLAY_VGA, so we need to match against that class as well.
The matching is still restricted to Intel devices only.

Fixes: ceeedd951f ("mei: pxp: match without driver name")
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Link: https://lore.kernel.org/r/20240421090701.216028-1-tomas.winkler@intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-04-23 21:44:13 -07:00
Huacai Chen
d3119bc985 LoongArch: Fix callchain parse error with kernel tracepoint events
In order to fix perf's callchain parse error for LoongArch, we implement
perf_arch_fetch_caller_regs() which fills several necessary registers
used for callchain unwinding, including sp, fp, and era. This is similar
to the following commits.

commit b3eac0265b:
("arm: perf: Fix callchain parse error with kernel tracepoint events")

commit 5b09a094f2:
("arm64: perf: Fix callchain parse error with kernel tracepoint events")

commit 9a7e8ec0d4:
("riscv: perf: Fix callchain parse error with kernel tracepoint events")

Test with commands:

 perf record -e sched:sched_switch -g --call-graph dwarf
 perf report

Without this patch:

 Children      Self  Command        Shared Object      Symbol
 ........  ........  .............  .................  ....................

 43.41%    43.41%  swapper          [unknown]          [k] 0000000000000000

 10.94%    10.94%  loong-container  [unknown]          [k] 0000000000000000
         |
         |--5.98%--0x12006ba38
         |
         |--2.56%--0x12006bb84
         |
          --2.40%--0x12006b6b8

With this patch, callchain can be parsed correctly:

 Children      Self  Command        Shared Object      Symbol
 ........  ........  .............  .................  ....................

 47.57%    47.57%  swapper          [kernel.vmlinux]   [k] __schedule
         |
         ---__schedule

 26.76%    26.76%  loong-container  [kernel.vmlinux]   [k] __schedule
         |
         |--13.78%--0x12006ba38
         |          |
         |          |--9.19%--__schedule
         |          |
         |           --4.59%--handle_syscall
         |                     do_syscall
         |                     sys_futex
         |                     do_futex
         |                     futex_wait
         |                     futex_wait_queue_me
         |                     hrtimer_start_range_ns
         |                     __schedule
         |
         |--8.38%--0x12006bb84
         |          handle_syscall
         |          do_syscall
         |          sys_epoll_pwait
         |          do_epoll_wait
         |          schedule_hrtimeout_range_clock
         |          hrtimer_start_range_ns
         |          __schedule
         |
          --4.59%--0x12006b6b8
                    handle_syscall
                    do_syscall
                    sys_nanosleep
                    hrtimer_nanosleep
                    do_nanosleep
                    hrtimer_start_range_ns
                    __schedule

Cc: stable@vger.kernel.org
Fixes: b37042b2bb ("LoongArch: Add perf events support")
Reported-by: Youling Tang <tangyouling@kylinos.cn>
Suggested-by: Youling Tang <tangyouling@kylinos.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2024-04-24 12:36:07 +08:00
Jiantao Shan
efb44ff64c LoongArch: Fix access error when read fault on a write-only VMA
As with most architectures, allow handling of read faults in VMAs that
have VM_WRITE but without VM_READ (WRITE implies READ).

Otherwise, reading before writing a write-only memory will error while
reading after writing everything is fine.

BTW, move the VM_EXEC judgement before VM_READ/VM_WRITE to make logic a
little clearer.

Cc: stable@vger.kernel.org
Fixes: 09cfefb7fa ("LoongArch: Add memory management")
Signed-off-by: Jiantao Shan <shanjiantao@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2024-04-24 12:36:07 +08:00
David Hildenbrand
7ab22b5c2a LoongArch: Fix a build error due to __tlb_remove_tlb_entry()
With LLVM=1 and W=1 we get:

  ./include/asm-generic/tlb.h:629:10: error: parameter 'ptep' set
  but not used [-Werror,-Wunused-but-set-parameter]

We fixed a similar issue via Arnd in the introducing commit, missed the
LoongArch variant. Turns out, there is no need for LoongArch to have a
custom variant, so let's just drop it and rely on the asm-generic one.

Fixes: 4d5bf0b618 ("mm/mmu_gather: add tlb_remove_tlb_entries()")
Closes: https://lkml.kernel.org/r/CANiq72mQh3O9S4umbvrKBgMMorty48UMwS01U22FR0mRyd3cyQ@mail.gmail.com
Reported-by: Miguel Ojeda <ojeda@kernel.org>
Reviewed-by: Miguel Ojeda <ojeda@kernel.org>
Tested-by: Miguel Ojeda <ojeda@kernel.org>
Tested-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2024-04-24 12:36:07 +08:00
Baoquan He
697f334247 LoongArch: Fix Kconfig item and left code related to CRASH_CORE
In commit 85fcde402d ("kexec: split crashkernel reservation code
out from crash_core.c"), crashkernel reservation code is split out from
crash_core.c, and add CRASH_RESERVE to control it. And also rename each
ARCH's <asm/crash_core.h> to <asm/crash_reserve.h> accordingly.

But the relevant part in LoongArch is missed. Do it now.

Fixes: 85fcde402d ("kexec: split crashkernel reservation code out from crash_core.c")
Signed-off-by: Baoquan He <bhe@redhat.com>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2024-04-24 12:36:07 +08:00
Kunwu Chan
e22810ab3f mei: bus: constify the struct mei_cl_bus_type usage
Now that the driver core can properly handle constant struct bus_type,
move the mei_cl_bus_type variable to be a constant structure as well,
placing it into read-only memory which can not be modified at runtime.

Signed-off-by: Kunwu Chan <chentao@kylinos.cn>
Acked-by: Tomas Winkler <tomas.winkler@intel.com>
Link: https://lore.kernel.org/r/20240423024133.1890455-1-chentao@kylinos.cn
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-04-23 21:33:16 -07:00
Greg Kroah-Hartman
84e79a7f63 Update peci-next for v6.10-rc1
- Move peci_bus_type, peci_controller_type and peci_device_type to be
   constant.
 -----BEGIN PGP SIGNATURE-----
 
 iQJOBAABCAA4FiEEVeIYQcCloMPRsCC93RgStozwYHYFAmYilsMaHGl3b25hLndp
 bmlhcnNrYUBpbnRlbC5jb20ACgkQ3RgStozwYHZYOBAApNWoayMbJZssJEc0MOvJ
 49tiiWJAFhc96pN+r+mv/uyKV/MVEd9Ti67hZL7ATgeyd55RC/c7h30JFlLEu/G5
 N3jM6DZaOAyMHHqhxa8mnQzsCIGem/wviLPozvACa2Ju/6nj9eV1pqXZ6Nh2NV+7
 5ONBEAwlctjcwCIJAd4qrodDTokjYo0sM44FrtvLCr/GXxfZD1v1TYmvX5BtRwP6
 LRtmqqCyggV3AGUNsPMh3xYsttVDzZEeTj7FRDgSsFgRjOaEBeisToVPKsExjTxt
 zABlz8SQ9OqGYXWNQpKbc81Ray5n88e4Jcfm0k/uiC1/bO1qW9vO+C6krPmLCieN
 ApMOPqNfmraELh9zKMS3bPzlyefUgVDS476XlURK+SFi7s2442LzQnDQ7GkxaxPk
 f8+onW0o1nBiufDvaSWv0uMYhdvKofuYNPEz0SBZvDi5AS3tOuinp6DvIx8DMWCp
 7Xh60g0cdqD21ix18XmyHLwIoRTEWwltI3U/HW/p7TNm9KmEGDjFZkM/f8S5RDs6
 +qpVEf6aRWDypMC5TZ2P02ApErl75Ws6ndSwnYx0ivxkCKix2MKL8dHaczD2rkuH
 C4TdAehIRMydB2i3gBmrVRRjTQgYgF687ims1H0P9V92VI/tYwPrlvyHuIw6q6mY
 gnxjndgsl8q/RkVVc+brL/k=
 =jQzZ
 -----END PGP SIGNATURE-----

Merge tag 'peci-next-6.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/iwi/linux into char-misc-next

Iwona writes:

Update peci-next for v6.10-rc1

- Move peci_bus_type, peci_controller_type and peci_device_type to be
  constant.
2024-04-23 21:31:45 -07:00
Greg Kroah-Hartman
7ab7f2ca46 IIO: 1st set of fixes for the 6.9 cycle.
adi,asdis16475
 - Write the correct field in the register when setting the sync mode.
 bosch,bmp280
 - Wrong chip specific data being used for the bme280 in the SPI driver.
 - Fix that we can't use chip IDs because Bosch reuses them for incompatible
   devices (some require a padding byte, others don't).
 maxim,max30102 (dt binding)
 - Fix incorrect property check to actually match on a device from the
   binding rather than a completely different one due to a typo.
 memsic,mxc4005
 - Fix wrong masking of interrupt register accidentally disabling temperature
   compensation. Also hammer initial state to 0 as it's not documented
   if interrupts are masked after reset.
 - Explicit reset on probe() and resume() as some devices do not power up
   correctly without a reset.
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCAAvFiEEbilms4eEBlKRJoGxVIU0mcT0FogFAmYlUsYRHGppYzIzQGtl
 cm5lbC5vcmcACgkQVIU0mcT0FogshhAAtwBdnmk1bpkmyQ7hZu3oFNqDzdbY6fwJ
 ZSP8ey+3TNJ8XrJoLS4W8jnInVyeoc2zyctCPF1gOjii8XI78g5ECXV8I1NiTCAS
 lEdk8CZWCgUm6KdXYrg65MhjEk+RzEbk0+MCo49xMiRbvuccq84ktQXO2d6qcJqL
 y4kgTmkTRe3pVQ3beMi4CUzMG3WOE+RTlDqjfqTw6ybv0oKEJn4SnFJiKWioyWOv
 9wtQ8WQ0RGJHLzEbqaYsi4HnOlz2xVIBW10HzdZldy8TPwvhNYG2hUu/XuLmsyxL
 QSES5BHf171lVN9bjhpFipGPFLiERJPmjKQBC+Pir0rEsNKlyzjwD/17JXXSUkKO
 2E5l8QY43kewUy1dU/BfhkDQz4J0BwltbMLEnVCCP/BcqsItbE9/qJaXSyNTxlpA
 9kO3WDZrcm3Al/t4IOiDioiw/DuLG5iVTIkg9ksTmO2BmHfaPMuNnGY7SV7e9Zc9
 TOKKLf2YzDqq48450SRhTC9SF+XzaMqTVi8GWO8+3lnB9z/W5Lt+2BXwx8JiZfDp
 H1Y+SWOAhHnlVNV2m6KziADdSyGMe17eor0ZMupm5TMBvUQubprHX3geURZ5fiWu
 frREyrueXmiWXiYOrYABSuV51oMrOakQvljCHSKD2tbgAWTQ9RcLGFPcJwLoayJB
 dBfLULKCQrg=
 =e50P
 -----END PGP SIGNATURE-----

Merge tag 'iio-fixes-for-6.9a' of https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into char-misc-linus

Jonathan writes:

IIO: 1st set of fixes for the 6.9 cycle.

adi,asdis16475
- Write the correct field in the register when setting the sync mode.
bosch,bmp280
- Wrong chip specific data being used for the bme280 in the SPI driver.
- Fix that we can't use chip IDs because Bosch reuses them for incompatible
  devices (some require a padding byte, others don't).
maxim,max30102 (dt binding)
- Fix incorrect property check to actually match on a device from the
  binding rather than a completely different one due to a typo.
memsic,mxc4005
- Fix wrong masking of interrupt register accidentally disabling temperature
  compensation. Also hammer initial state to 0 as it's not documented
  if interrupts are masked after reset.
- Explicit reset on probe() and resume() as some devices do not power up
  correctly without a reset.

* tag 'iio-fixes-for-6.9a' of https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio:
  iio:imu: adis16475: Fix sync mode setting
  iio: accel: mxc4005: Reset chip on probe() and resume()
  iio: accel: mxc4005: Interrupt handling fixes
  dt-bindings: iio: health: maxim,max30102: fix compatible check
  iio: pressure: Fixes SPI support for BMP3xx devices
  iio: pressure: Fixes BME280 SPI driver data
2024-04-23 21:26:06 -07:00
Tejun Heo
d40f92020c workqueue: The default node_nr_active should have its max set to max_active
The default nna (node_nr_active) is used when the pool isn't tied to a
specific NUMA node. This can happen in the following cases:

 1. On NUMA, if per-node pwq init failure and the fallback pwq is used.
 2. On NUMA, if a pool is configured to span multiple nodes.
 3. On single node setups.

5797b1c189 ("workqueue: Implement system-wide nr_active enforcement for
unbound workqueues") set the default nna->max to min_active because only #1
was being considered. For #2 and #3, using min_active means that the max
concurrency in normal operation is pushed down to min_active which is
currently 8, which can obviously lead to performance issues.

exact value nna->max is set to doesn't really matter. #2 can only happen if
the workqueue is intentionally configured to ignore NUMA boundaries and
there's no good way to distribute max_active in this case. #3 is the default
behavior on single node machines.

Let's set it the default nna->max to max_active. This fixes the artificially
lowered concurrency problem on single node machines and shouldn't hurt
anything for other cases.

Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: Shinichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Fixes: 5797b1c189 ("workqueue: Implement system-wide nr_active enforcement for unbound workqueues")
Link: https://lore.kernel.org/dm-devel/20240410084531.2134621-1-shinichiro.kawasaki@wdc.com/
Signed-off-by: Tejun Heo <tj@kernel.org>
2024-04-23 17:32:59 -10:00
Waiman Long
04d63da4da cgroup/cpuset: Fix incorrect top_cpuset flags
Commit 8996f93fc3 ("cgroup/cpuset: Statically initialize more
members of top_cpuset") uses an incorrect "<" relational operator for
the CS_SCHED_LOAD_BALANCE bit when initializing the top_cpuset. This
results in load_balancing turned off by default in the top cpuset which
is bad for performance.

Fix this by using the BIT() helper macro to set the desired top_cpuset
flags and avoid similar mistake from being made in the future.

Fixes: 8996f93fc3 ("cgroup/cpuset: Statically initialize more members of top_cpuset")
Signed-off-by: Waiman Long <longman@redhat.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2024-04-23 17:31:18 -10:00
Jack Xiao
9482552820 drm/amdgpu/mes: fix use-after-free issue
Delete fence fallback timer to fix the ramdom
use-after-free issue.

v2: move to amdgpu_mes.c

Signed-off-by: Jack Xiao <Jack.Xiao@amd.com>
Acked-by: Lijo Lazar <lijo.lazar@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2024-04-23 23:23:46 -04:00
Alex Deucher
9792b7cc18 drm/amdgpu/sdma5.2: use legacy HDP flush for SDMA2/3
This avoids a potential conflict with firmwares with the newer
HDP flush mechanism.

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
2024-04-23 23:23:46 -04:00
Prike Liang
fe93b0927b drm/amdgpu: Fix the ring buffer size for queue VM flush
Here are the corrections needed for the queue ring buffer size
calculation for the following cases:
- Remove the KIQ VM flush ring usage.
- Add the invalidate TLBs packet for gfx10 and gfx11 queue.
- There's no VM flush and PFP sync, so remove the gfx9 real
  ring and compute ring buffer usage.

Signed-off-by: Prike Liang <Prike.Liang@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2024-04-23 23:23:46 -04:00
Mukul Joshi
1e214f7faa drm/amdkfd: Add VRAM accounting for SVM migration
Do VRAM accounting when doing migrations to vram to make sure
there is enough available VRAM and migrating to VRAM doesn't evict
other possible non-unified memory BOs. If migrating to VRAM fails,
driver can fall back to using system memory seamlessly.

Signed-off-by: Mukul Joshi <mukul.joshi@amd.com>
Reviewed-by: Felix Kuehling <felix.kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2024-04-23 23:23:45 -04:00
Lijo Lazar
30d1cda8ce drm/amd/pm: Restore config space after reset
During mode-2 reset, pci config space registers are affected at device
side. However, certain platforms have switches which assign virtual BAR
addresses and returns the same even after device is reset. This
affects pci_restore_state() as it doesn't issue another config write, if
the value read is same as the saved value.

Add a workaround to write saved config space values from driver side.
Presently, these switches are in platforms with SMU v13.0.6 SOCs, hence
restrict the workaround only to those.

Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
Reviewed-by: Asad Kamal <asad.kamal@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2024-04-23 23:23:45 -04:00
Lang Yu
661d71ee5a drm/amdgpu/umsch: don't execute umsch test when GPU is in reset/suspend
umsch test needs full GPU functionality(e.g., VM update, TLB flush,
possibly buffer moving under memory pressure) which may be not ready
under these states. Just skip it to avoid potential issues.

Signed-off-by: Lang Yu <Lang.Yu@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Veerabadhran Gopalakrishnan <Veerabadhran.Gopalakrishnan@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
2024-04-23 23:23:28 -04:00
Felix Kuehling
e26305f369 drm/amdkfd: Fix rescheduling of restore worker
Handle the case that the restore worker was already scheduled by another
eviction while the restore was in progress.

Fixes: 9a1c1339ab ("drm/amdkfd: Run restore_workers on freezable WQs")
Signed-off-by: Felix Kuehling <felix.kuehling@amd.com>
Reviewed-by: Philip Yang <Philip.Yang@amd.com>
Tested-by: Yunxiang Li <Yunxiang.Li@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
2024-04-23 23:23:28 -04:00
Felix Kuehling
b0b13d5321 drm/amdgpu: Update BO eviction priorities
Make SVM BOs more likely to get evicted than other BOs. These BOs
opportunistically use available VRAM, but can fall back relatively
seamlessly to system memory. It also avoids SVM migrations evicting
other, more important BOs as they will evict other SVM allocations
first.

Signed-off-by: Felix Kuehling <felix.kuehling@amd.com>
Acked-by: Mukul Joshi <mukul.joshi@amd.com>
Tested-by: Mukul Joshi <mukul.joshi@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2024-04-23 23:23:28 -04:00
Peyton Lee
d59198d2d0 drm/amdgpu/vpe: fix vpe dpm setup failed
The vpe dpm settings should be done before firmware is loaded.
Otherwise, the frequency cannot be successfully raised.

Signed-off-by: Peyton Lee <peytolee@amd.com>
Reviewed-by: Lang Yu <lang.yu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2024-04-23 23:23:02 -04:00