Commit graph

1,188,286 commits

Author SHA1 Message Date
Matt Roper
8d9f7d25d5 drm/i915/gt: Pass gt rather than uncore to lowest-level reads/writes
Passing the GT rather than uncore to the lowest level MCR read and write
functions will make it easier to introduce dedicated MCR locking in a
following patch.

Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Reviewed-by: Balasubramani Vivekanandan <balasubramani.vivekanandan@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20221128233014.4000136-3-matthew.d.roper@intel.com
2022-11-30 09:06:25 -08:00
Matt Roper
03b713d029 drm/i915/gt: Correct kerneldoc for intel_gt_mcr_wait_for_reg()
The kerneldoc function name was not updated when this function was
converted to a non-fw form.

Fixes: 192bb40f03 ("drm/i915/gt: Manage uncore->lock while waiting on MCR register")
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Reviewed-by: Balasubramani Vivekanandan <balasubramani.vivekanandan@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20221128233014.4000136-2-matthew.d.roper@intel.com
2022-11-30 09:06:16 -08:00
Darrick J. Wong
4c6dbfd275 xfs: attach dquots to inode before reading data/cow fork mappings
I've been running near-continuous integration testing of online fsck,
and I've noticed that once a day, one of the ARM VMs will fail the test
with out of order records in the data fork.

xfs/804 races fsstress with online scrub (aka scan but do not change
anything), so I think this might be a bug in the core xfs code.  This
also only seems to trigger if one runs the test for more than ~6 minutes
via TIME_FACTOR=13 or something.
https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfstests-dev.git/tree/tests/xfs/804?h=djwong-wtf

I added a debugging patch to the kernel to check the data fork extents
after taking the ILOCK, before dropping ILOCK, and before and after each
bmapping operation.  So far I've narrowed it down to the delalloc code
inserting a record in the wrong place in the iext tree:

xfs_bmap_add_extent_hole_delay, near line 2691:

	case 0:
		/*
		 * New allocation is not contiguous with another
		 * delayed allocation.
		 * Insert a new entry.
		 */
		oldlen = newlen = 0;
		xfs_iunlock_check_datafork(ip);		<-- ok here
		xfs_iext_insert(ip, icur, new, state);
		xfs_iunlock_check_datafork(ip);		<-- bad here
		break;
	}

I recorded the state of the data fork mappings and iext cursor state
when a corrupt data fork is detected immediately after the
xfs_bmap_add_extent_hole_delay call in xfs_bmapi_reserve_delalloc:

ino 0x140bb3 func xfs_bmapi_reserve_delalloc line 4164 data fork:
    ino 0x140bb3 nr 0x0 nr_real 0x0 offset 0xb9 blockcount 0x1f startblock 0x935de2 state 1
    ino 0x140bb3 nr 0x1 nr_real 0x1 offset 0xe6 blockcount 0xa startblock 0xffffffffe0007 state 0
    ino 0x140bb3 nr 0x2 nr_real 0x1 offset 0xd8 blockcount 0xe startblock 0x935e01 state 0

Here we see that a delalloc extent was inserted into the wrong position
in the iext leaf, same as all the other times.  The extra trace data I
collected are as follows:

ino 0x140bb3 fork 0 oldoff 0xe6 oldlen 0x4 oldprealloc 0x6 isize 0xe6000
    ino 0x140bb3 oldgotoff 0xea oldgotstart 0xfffffffffffffffe oldgotcount 0x0 oldgotstate 0
    ino 0x140bb3 crapgotoff 0x0 crapgotstart 0x0 crapgotcount 0x0 crapgotstate 0
    ino 0x140bb3 freshgotoff 0xd8 freshgotstart 0x935e01 freshgotcount 0xe freshgotstate 0
    ino 0x140bb3 nowgotoff 0xe6 nowgotstart 0xffffffffe0007 nowgotcount 0xa nowgotstate 0
    ino 0x140bb3 oldicurpos 1 oldleafnr 2 oldleaf 0xfffffc00f0609a00
    ino 0x140bb3 crapicurpos 2 crapleafnr 2 crapleaf 0xfffffc00f0609a00
    ino 0x140bb3 freshicurpos 1 freshleafnr 2 freshleaf 0xfffffc00f0609a00
    ino 0x140bb3 newicurpos 1 newleafnr 3 newleaf 0xfffffc00f0609a00

The first line shows that xfs_bmapi_reserve_delalloc was called with
whichfork=XFS_DATA_FORK, off=0xe6, len=0x4, prealloc=6.

The second line ("oldgot") shows the contents of @got at the beginning
of the call, which are the results of the first iext lookup in
xfs_buffered_write_iomap_begin.

Line 3 ("crapgot") is the result of duplicating the cursor at the start
of the body of xfs_bmapi_reserve_delalloc and performing a fresh lookup
at @off.

Line 4 ("freshgot") is the result of a new xfs_iext_get_extent right
before the call to xfs_bmap_add_extent_hole_delay.  Totally garbage.

Line 5 ("nowgot") is contents of @got after the
xfs_bmap_add_extent_hole_delay call.

Line 6 is the contents of @icur at the beginning fo the call.  Lines 7-9
are the contents of the iext cursors at the point where the block
mappings were sampled.

I think @oldgot is a HOLESTARTBLOCK extent because the first lookup
didn't find anything, so we filled in imap with "fake hole until the
end".  At the time of the first lookup, I suspect that there's only one
32-block unwritten extent in the mapping (hence oldicurpos==1) but by
the time we get to recording crapgot, crapicurpos==2.

Dave then added:

Ok, that's much simpler to reason about, and implies the smoke is
coming from xfs_buffered_write_iomap_begin() or
xfs_bmapi_reserve_delalloc(). I suspect the former - it does a lot
of stuff with the ILOCK_EXCL held.....

.... including calling xfs_qm_dqattach_locked().

xfs_buffered_write_iomap_begin
  ILOCK_EXCL
  look up icur
  xfs_qm_dqattach_locked
    xfs_qm_dqattach_one
      xfs_qm_dqget_inode
        dquot cache miss
        xfs_iunlock(ip, XFS_ILOCK_EXCL);
        error = xfs_qm_dqread(mp, id, type, can_alloc, &dqp);
        xfs_ilock(ip, XFS_ILOCK_EXCL);
  ....
  xfs_bmapi_reserve_delalloc(icur)

Yup, that's what is letting the magic smoke out -
xfs_qm_dqattach_locked() can cycle the ILOCK. If that happens, we
can pass a stale icur to xfs_bmapi_reserve_delalloc() and it all
goes downhill from there.

Back to Darrick now:

So.  Fix this by moving the dqattach_locked call up before we take the
ILOCK, like all the other callers in that file.

Fixes: a526c85c22 ("xfs: move xfs_file_iomap_begin_delay around") # goes further back than this
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
2022-11-30 08:55:18 -08:00
Darrick J. Wong
e5827a007a xfs: shut up -Wuninitialized in xfsaild_push
-Wuninitialized complains about @target in xfsaild_push being
uninitialized in the case where the waitqueue is active but there is no
last item in the AIL to wait for.  I /think/ it should never be the case
that the subsequent xfs_trans_ail_cursor_first returns a log item and
hence we'll never end up at XFS_LSN_CMP, but let's make this explicit.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
2022-11-30 08:55:18 -08:00
Darrick J. Wong
fd5beaff25 xfs: use memcpy, not strncpy, to format the attr prefix during listxattr
When -Wstringop-truncation is enabled, the compiler complains about
truncation of the null byte at the end of the xattr name prefix.  This
is intentional, since we're concatenating the two strings together and
do _not_ want a null byte in the middle of the name.

We've already ensured that the name buffer is long enough to handle
prefix and name, and the prefix_len is supposed to be the length of the
prefix string without the null byte, so use memcpy here instead.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
2022-11-30 08:55:18 -08:00
Darrick J. Wong
032e160305 xfs: invalidate block device page cache during unmount
Every now and then I see fstests failures on aarch64 (64k pages) that
trigger on the following sequence:

mkfs.xfs $dev
mount $dev $mnt
touch $mnt/a
umount $mnt
xfs_db -c 'path /a' -c 'print' $dev

99% of the time this succeeds, but every now and then xfs_db cannot find
/a and fails.  This turns out to be a race involving udev/blkid, the
page cache for the block device, and the xfs_db process.

udev is triggered whenever anyone closes a block device or unmounts it.
The default udev rules invoke blkid to read the fs super and create
symlinks to the bdev under /dev/disk.  For this, it uses buffered reads
through the page cache.

xfs_db also uses buffered reads to examine metadata.  There is no
coordination between xfs_db and udev, which means that they can run
concurrently.  Note there is no coordination between the kernel and
blkid either.

On a system with 64k pages, the page cache can cache the superblock and
the root inode (and hence the root dir) with the same 64k page.  If
udev spawns blkid after the mkfs and the system is busy enough that it
is still running when xfs_db starts up, they'll both read from the same
page in the pagecache.

The unmount writes updated inode metadata to disk directly.  The XFS
buffer cache does not use the bdev pagecache, nor does it invalidate the
pagecache on umount.  If the above scenario occurs, the pagecache no
longer reflects what's on disk, xfs_db reads the stale metadata, and
fails to find /a.  Most of the time this succeeds because closing a bdev
invalidates the page cache, but when processes race, everyone loses.

Fix the problem by invalidating the bdev pagecache after flushing the
bdev, so that xfs_db will see up to date metadata.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
2022-11-30 08:55:18 -08:00
Arnd Bergmann
69a485191b This pull request contains Broadcom SoCs driver changes for 6.2, please
pull the following:
 
 - Yuan uses dev_err_probe() in the Raspberry Pi firmware provider to
   simplify the error handling code
 
 - Rafal adds support for initialiazing the BCM47xx NVMEM/NVRAM firmware
   provider out of memory-mapped flash devices.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEm+Rq3+YGJdiR9yuFh9CWnEQHBwQFAmOGWqQACgkQh9CWnEQH
 BwRXVRAA5ieip57Dr+TFlOKgVVsLR0lildCIEf8xBLS2248JpLOdcZiEH8A52l09
 zqWLjWkWmgHnVHJ8hxLGZojsuWZvTI1bg/Y6IOY6ZQRSpFGR9DMTmedAdmmOe6Wi
 tXApkgfsR5s/vkTye/Sd8x9vJRI+V6BEO2maH891Tqz533FpqPM67GXpW5dClu5D
 0hL/I9bnDoRtugfycLiH1y9I7wrQdAvkSYjgo7ncQLSb5Zw3b3993hRvQ2Afcq+F
 mnmsCoCeBsWFh8VO+qy3cmxQi7P031kxxH01+XHo+3glCx9TMzUSL71dT0kybXEU
 5yf2Ej7yuqUpsHQIj1ET6+wb8K2QXOv2onn3wIy1WncgWbZjOgFGUEb69U+vXBLa
 Y/0U81Ib421LspIM4/brIdX/UKeFy04gz9/r+i+pme5+WMBcamm8/TS79lxJdxKt
 gjOw2jEXM26cCCXkHRrLPFebi1c2Y2I/r6/YYLvwzt7uSBqaj2afw2ZCbRR3Om2j
 JJsA+wqql1iAx1vrPb6nSeBf/Dbl+HuFlynxn7rTnUcgeNmjLamdywE5TBpiKUws
 P1rXV3gKeMEk2IQksE/jukBmSW1efkbMA2u63BUmrwMmh17CBJddY2ttK0w7AFPU
 WmrncPB4WpvPBzeUOC4IvmbzYJHbhRZ6tkcOMP5UWRhcI1HKrg0=
 =7dAD
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmOHirEACgkQmmx57+YA
 GNkMNRAAtJfwKAc2/v/4R6bnqaSiN9Fc+i6LosszuXBVaac2D72js6oV2R26WfYN
 COlOXs6rV4HvHPtWban40NkrmNFxJixW1vrWfkWjjstX28VqzKJnv6oUOCUaigB4
 alHqOIB6jGo6BH5+Kro0/8G1F9pbZ0PWaTpY90ison+LKzVPn8ZGU03YHLYIpq2q
 zeACwCeNIqjP376QjLCf3dwsEuswaSRoCkOCjMzlOJhamy5XRivIpvPP+0Qkrvcu
 YN1wqrwXBJ7/YrlmKBwQBEtN0pEIIzvL+vvZKp99VOCB7ofx9SAUcwSDF7LA5+q3
 5JW38H8nFQGsDaWrw1E++fsd8o4wFbLn0K2altNwjTIMjoBbaFopnXdRW3Jp3lhS
 R+iQ8sobDkHIDvw2a7Ski8PursVo9hC8ZRdF6FPazLPQJrHe6SoWLzbRw5dovdsK
 tSFQ/DqjfmDlkrUfa8iXSQnTzdTObi3N5OHGTp+KHlJad34MhPuNW4JVGhXm2OGE
 mGKL/2HIN5w5GxE1D8YoKexaeBjvc0zi2zHvb/dIUbN3aeK2p3wQsMyvf424SAMe
 1zsg+AnwbASLmkEPjBTqxnec82FG0a6cvYJ5UtcdJ6J0YlSUVm07zimzYKJY2M1d
 ryjSN6dKpanyIcJInWfCecmvICS2KTerpcVyte6VST5TDKc5ZNo=
 =wHNl
 -----END PGP SIGNATURE-----

Merge tag 'arm-soc/for-6.2/drivers' of https://github.com/Broadcom/stblinux into soc/drivers

This pull request contains Broadcom SoCs driver changes for 6.2, please
pull the following:

- Yuan uses dev_err_probe() in the Raspberry Pi firmware provider to
  simplify the error handling code

- Rafal adds support for initialiazing the BCM47xx NVMEM/NVRAM firmware
  provider out of memory-mapped flash devices.

* tag 'arm-soc/for-6.2/drivers' of https://github.com/Broadcom/stblinux:
  firmware/nvram: bcm47xx: support init from IO memory
  firmware: raspberrypi: Use dev_err_probe() to simplify code

Link: https://lore.kernel.org/r/20221129191755.542584-3-f.fainelli@gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2022-11-30 17:54:09 +01:00
Arnd Bergmann
e0d394e4ee Apple SoC RTKit/SART updates for 6.2.
Just two minor correctness nits reported by the kernel test robot.
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYIAB0WIQSByI3Ki0mXziclZJcd+FPLCI8zYgUCY4SdmgAKCRAd+FPLCI8z
 YqLEAP4qakDqDcQyXjBh8uekFqqGCuAH+T3FPcPKUJCWKuVHYQEA4aK64fibS6Fr
 Pnz/Kw0RyFG51mMD8KRBd++hbTH/9g4=
 =Inh7
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmOHijUACgkQmmx57+YA
 GNnZHhAAhd9/uLeP7g9B+IbEYMVSK8WXxWERGZ3mT2QqbJpWuky+U7+7ndNQEn23
 ky49kJzkPAbYWNJ/PjNLcoCeHjWQ+joBLyB/f8llXyaAqqW4r/WC4IL2ZRtj0zOn
 nmD2VBN3DAtlza1AbqklsdEOjYJvxtIu/9u1QBYUwwp8mxWuEkUQ+9DGQLhKz/pd
 XYklIW3f8l99lIwUlAiuto2dQfszZjUbmwYKIUk7klNSRasIBPPizp3OxmyDbgRk
 dCL4kbydaN1kx3lP1xx4gsu5eaVCEsUdKkNDJrZoHyF3k5SUI2XrvRdVgJs75Pyc
 /f6oVft5Bqqwx4ES8a9xI8JbqLY1q8U3nxDLwnp3ERDs3QeR6ZOSf2e2kAqeuDyw
 2nRPsj6XiQPZY6bScx7j89FLbF4TVxVsuhyZoNWTypMNe+8nMAywuQDr7MxntwMc
 Eie7SU5MHlpvdmy2p54x9cA3eDBjyHolsRgLkiRTi8jwnJl159SlBQiwT+iPYYQ/
 SYGC9iN+g/OksRtL1gw25BLjZo17oaO9UJY35EN1iHDs9BPMBReAxhErJ7WzEU3I
 +SX/2dOy/Szpdra4nvply1mIsKeDNpVJgCvfA+gt9B9kOMBNAetskP1aZPcmGZ9/
 uJEZWSsqZYupXMPo/GZWW4IiNY9HyXTwt8ldSnqX53RpGe3DiRQ=
 =qFo6
 -----END PGP SIGNATURE-----

Merge tag 'asahi-soc-rtkit-sart-6.2' of https://github.com/AsahiLinux/linux into soc/drivers

Apple SoC RTKit/SART updates for 6.2.

Just two minor correctness nits reported by the kernel test robot.

* tag 'asahi-soc-rtkit-sart-6.2' of https://github.com/AsahiLinux/linux:
  soc: apple: rtkit: Stop casting function pointer signatures
  soc: apple: sart: Stop casting function pointer signatures

Link: https://lore.kernel.org/r/57f84134-8645-35f6-2427-ee683800c413@marcan.st
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2022-11-30 17:52:05 +01:00
Arnd Bergmann
3880e0df2e AT91 defconfig for 6.2 #2
It contains:
 - updates for defconfigs to use the new CONFIG_VIDEO_MICROCHIP_ISC,
   CONFIG_VIDEO_MICROCHIP_XISC config flags that replaced the
   CONFIG_VIDEO_ATMEL_ISC, CONFIG_VIDEO_ATMEL_XISC. Drivers under
   CONFIG_VIDEO_ATMEL_* were moved to staging and considered deprecated.
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYIAB0WIQTsZ8eserC1pmhwqDmejrg/N2X7/QUCY4DMugAKCRCejrg/N2X7
 /R2cAP4mNhim4mqS0gnz7WA41Ahl5KMxGQerQurW9zFV2V6hjAEAtRiVIIhPEWLv
 bHgZNDkdb1TpRqmPQ7JJoZ9CSwItRg8=
 =uu4P
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmOHifkACgkQmmx57+YA
 GNnDuRAAret+I2cvPkN76HpUuSQL2uJJF2yDlDSCG228IrbqSM5UikJvFB7WYQwh
 nmu9AcDrQxudSHFZCa0Q0r2sff1DW6ncQ6XD1XxYAyDaSV2uor4YdBChqbtzf2uE
 7Zk+Yqu4zthNtTezNBKb0RgJwwG+rUcqMe9pw+n+eQ5Iz/sjOBHMsK19pM5mCrsE
 INQ/dnSJ/iFjNvHJUNy+PkdfH8x5zFgtr6JUIiZhtCj0maZaT4LOFykFD5bBm4w2
 6dbH/bP+cDWivoYe48K6Wx/MCLegFTHiDC68sQLOLRtPP9VNhXdDd3LHHlZpZcZR
 JV5YFeOjOdd0BKg7tQ7/Qke280eXI7eTHzGGV1jos9lKIUln+/VfZVmH8kLvnxov
 +wsSuTbBZqjz8fd8HGJSqpYYAnfvxw8B/A+mK6PLWe7Lqx6NGV6aNFZz5TEN1241
 slabTalkMyFAK4E6b1eXYNt5ftJaQ0NZht9jHOAqP89oB45TEhEnGI7W4CB+H5ay
 jclklHcdijZJNO8dWtVHCCASmT2eM0Hs5RTkwpCXI8zMnQ2oWSDws07awIsaBWu8
 uoDlNddTtAt+gQuXcJ81PNGcB1z2a2NDicL6zgPpCkepTMJOJ3Vb+KEcBj4Wgr0D
 cZFefR0/b6r7KMxXuqgFckYS/8hVYUzi5Odr1lCJQ5cW7WDLbgk=
 =zvQn
 -----END PGP SIGNATURE-----

Merge tag 'at91-defconfig-6.2-2' of https://git.kernel.org/pub/scm/linux/kernel/git/at91/linux into arm/defconfig

AT91 defconfig for 6.2 #2

It contains:
- updates for defconfigs to use the new CONFIG_VIDEO_MICROCHIP_ISC,
  CONFIG_VIDEO_MICROCHIP_XISC config flags that replaced the
  CONFIG_VIDEO_ATMEL_ISC, CONFIG_VIDEO_ATMEL_XISC. Drivers under
  CONFIG_VIDEO_ATMEL_* were moved to staging and considered deprecated.

* tag 'at91-defconfig-6.2-2' of https://git.kernel.org/pub/scm/linux/kernel/git/at91/linux:
  ARM: configs: multi_v7: switch to new MICROCHIP_ISC driver
  ARM: configs: sama5/7: switch to new MICROCHIP_ISC driver

Link: https://lore.kernel.org/r/20221125142736.385654-1-claudiu.beznea@microchip.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2022-11-30 17:51:05 +01:00
Paolo Bonzini
df0bb47baa KVM: x86: fix uninitialized variable use on KVM_REQ_TRIPLE_FAULT
If a triple fault was fixed by kvm_x86_ops.nested_ops->triple_fault (by
turning it into a vmexit), there is no need to leave vcpu_enter_guest().
Any vcpu->requests will be caught later before the actual vmentry,
and in fact vcpu_enter_guest() was not initializing the "r" variable.
Depending on the compiler's whims, this could cause the
x86_64/triple_fault_event_test test to fail.

Cc: Maxim Levitsky <mlevitsk@redhat.com>
Fixes: 92e7d5c83a ("KVM: x86: allow L1 to not intercept triple fault")
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-11-30 11:50:39 -05:00
Bhupesh Sharma
8f345960ce
arm64: defconfig: Enable Qualcomm SM6115 / SM4250 GCC and Pinctrl
Enable the Qualcomm SM6115 / SM4250 TLMM pinctrl and GCC clock drivers.
They need to be builtin to ensure that the UART is allowed to probe
before user space needs a console.

Signed-off-by: Bhupesh Sharma <bhupesh.sharma@linaro.org>
Acked-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Cc: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Cc: Bjorn Andersson <andersson@kernel.org>
Link: https://lore.kernel.org/r/20221128200834.1776868-1-bhupesh.sharma@linaro.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2022-11-30 17:49:05 +01:00
Andrzej Hajda
04aa64375f drm/i915: fix TLB invalidation for Gen12 video and compute engines
In case of Gen12 video and compute engines, TLB_INV registers are masked -
to modify one bit, corresponding bit in upper half of the register must
be enabled, otherwise nothing happens.

CVE: CVE-2022-4139
Suggested-by: Chris Wilson <chris.p.wilson@intel.com>
Signed-off-by: Andrzej Hajda <andrzej.hajda@intel.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Fixes: 7938d61591 ("drm/i915: Flush TLBs before releasing backing store")
Cc: stable@vger.kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2022-11-30 08:44:00 -08:00
Arnd Bergmann
f8a9f2704a This pull request contains Broadcom ARM64-based SoCs Device Tree updates
for 6.2, please pull the following:
 
 - Rafal describes the timer/watchdog block for the BCM4908 and BCM6858
   SoCs
 
 - Krzysztof corrects invalid "reg" properties for the memory nodes that
   were off by one digit
 
 - Pierre updates a number of cache Device Tree node properties to be
   schema compliant
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEm+Rq3+YGJdiR9yuFh9CWnEQHBwQFAmOGWkoACgkQh9CWnEQH
 BwTM3hAAz6n7Ncc6ZU+v+sUkfGw5mHYr8tO0SM+nFADGxqd1Rjs+rdyoAxVWnKOY
 tC/9Y+l66JmPrwlXJN9dFnRoUjAv8zp09R34ptTpvkBXs5VSC1tppknw14fRQsXk
 xZl0oz+TNzoWkb2fWXx8uQdM3WX/R/cfs52kbxVobx2Z27BXSZs8em9PjFRqNKed
 1fHHTFuD7JAQX8g575W4vkcP8k0vA4yAGpZdqekAo2A8FaZhQ/DnOszUEQuQNjn2
 Wr8Arl8vrBJS8LXBPjPPIzKQlE5+8khR1ESLS+11MKSaP4zTRAB+elpPsiWkqqDv
 BfwQVFQs7KCNoPV6WqsltiIoh4/uP70dwUapF9Tye0MqhZ4ZH4C8PBCh8b80H5Wb
 h1T78x+6SnzH0rlPjssdfHKNWVSubUvnU7deNA84OrNpxJCrdi5eNf3gZytaU480
 550wkDBBuiffYdXplw5LCjxyKIcJ3KoLVyHqQkQ4sCinC8hDWzcA/oOeiAZyedwf
 P/cDs+JlOyDwSdeQMkMmaDtKoW8oVaQ6+v9BBKNBl+vvr4l1HlFeEtt30bDvQ6CT
 /cOdHhL/ki5FljPsRgF9Uf/Jp9jGF41Ph20Zo636ArQVG4pwGWM3hNTE/J3XSSzj
 jBHSdsm346iT55ajqci+5/TWlxUUBvhaIVuj203Q5Z5EAvfqJvY=
 =l7Fu
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmOHh+8ACgkQmmx57+YA
 GNm88xAAmR3TUNIQiN9ovK7Ibjp9OA+DLXJPDBdplPVB2Y4DigcYNshbJUdJI1He
 RLi8npUB3XccLS72tyZA76AYHFD5/zugf0y7erZQTw9eNesd4aXVWfVNWn5tJoVy
 4GfewjUg6EmP3kpBsXfKMZak5M8dggZONH0Lkpe7QkquKSut29ku9LxT3Y3Gtzs4
 ERNku3T4m7ozgp3LWYg5KHBuEpK2lPvC4hhZnP6+8sChfWJiJwONOWUeXz+P2z5p
 vkHQIoqbye42rnwc02gQk79EXmjS/ggEmaCJhU1sS9YnO7QSIC/5hGuQ+spc5Lob
 RDGRGDeFG71DbFOVYFWF9Aj1+hxqaY/lJrIRfgjwuxxzuItFMrYytXjZdYGHIoJu
 M+ZMt2/cHfQ/0tDA9bkDiK8OmN5D/61OqkAU/CeWwPYY4Ci+t3jkSZP3LI3P5wHV
 WB7UUxanM6g7uzaTINFkUAgx6Ljr8edW0pB6nrigei50BZwnRD7B5FbYEaPmbC9B
 um+BpnM06oE9+X+V4uh6iYnLBtRcpdLgWk7lzcgoLKyAxxVpyT6+qRBJ7vN/NVaR
 nOY7IGMXyTohCvitg4RTssP1vf1VoYEguw4NRdqpgRbeAFy6s8xxSDq7EXxfcRfF
 CJlMy7P+XXOKY7ZRi+1yNj/Un30ymRDE2yXrFbKjX9yIZj/0q6Q=
 =8S30
 -----END PGP SIGNATURE-----

Merge tag 'arm-soc/for-6.2/devicetree-arm64' of https://github.com/Broadcom/stblinux into soc/dt

This pull request contains Broadcom ARM64-based SoCs Device Tree updates
for 6.2, please pull the following:

- Rafal describes the timer/watchdog block for the BCM4908 and BCM6858
  SoCs

- Krzysztof corrects invalid "reg" properties for the memory nodes that
  were off by one digit

- Pierre updates a number of cache Device Tree node properties to be
  schema compliant

* tag 'arm-soc/for-6.2/devicetree-arm64' of https://github.com/Broadcom/stblinux:
  arm64: dts: Update cache properties for broadcom
  arm64: dts: broadcom: trim addresses to 8 digits
  arm64: dts: broadcom: bcmbca: bcm6858: add TWD block
  arm64: dts: broadcom: bcmbca: bcm4908: add TWD block timer

Link: https://lore.kernel.org/r/20221129191755.542584-2-f.fainelli@gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2022-11-30 17:42:23 +01:00
Brian Foster
a79168a0c0 fs/remap_range: avoid spurious writeback on zero length request
generic_remap_checks() can reduce the effective request length (i.e.,
after the reflink extend to EOF case is handled) down to zero. If this
occurs, __generic_remap_file_range_prep() proceeds through dio
serialization, file mapping flush calls, and may invoke file_modified()
before returning back to the filesystem caller, all of which immediately
check for len == 0 and return.

While this is mostly harmless, it is spurious and not completely
without side effect. A filemap write call can submit I/O (but not
wait on it) when the specified end byte precedes the start but
happens to land on the same aligned page boundary, which can occur
from __generic_remap_file_range_prep() when len is 0.

The dedupe path already has a len == 0 check to break out before
doing range comparisons. Lift this check a bit earlier in the
function to cover the general case of len == 0 and avoid the
unnecessary work. While here, account for the case where
generic_remap_check_len() may also reduce length to zero.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
2022-11-30 08:41:01 -08:00
Arnd Bergmann
9490ae741d This pull request contains Broadcom ARM-based SoCs Device Tree changes
for 6.2, please pull the following:
 
 - Linus adds support for the D-Link DWL-8610AP which is based upon the
   BCM53016 SoC and the D-Link DIR-890L routers
 
 - Maxime resolves a long standing issue affecting Raspberry Pi devices
   by switching entirely over to the VPU firmware clock provider rather
   than mixing the "bare metal" clock driver and VPU
 
 - Rafal corrects the description of the TP-Link router partitions to
   use the "safeloader" partition parser
 
 - Stefan fixes a number of invalid underscores in the bcm283x DTS files
   and also moves the ACT LED into a separate DTS include file for better
   re-use
 
 - Krzysztof aligns the LEDs DT nodes to the proper schema format
 
 - Pierre adds missing cache properties to various SoCs
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEm+Rq3+YGJdiR9yuFh9CWnEQHBwQFAmOFR/0ACgkQh9CWnEQH
 BwTjQQ/8Dlt/3xTRb5m2Llq2fnsb+D6NkMDlQB2R0NS+CQ3796iMUpHb2uXmboIn
 9k4N7Vldk2mng/MEaCj5M14/5uwscsg8pDCAQq13ATfhBTTJKJJ4XfVfgyCJvdI8
 +zWe9VFOZkIEO14ZkD4uQoLQTFJAETe7sSPJHwPNm/9IAX2xu0ktGaLteF6k8jfE
 ykx+KuW7e5D+hJdT7LbyDjWPMJBB7U374h1P0Z/WGfdoFFbkwN7UfPvdCxT8LBHD
 ErMchplqH1iW1zP28QplokO492PLmlXfc3JjaZ15kx3xr1YXZ6Z1lZ1Z93nZ9h+k
 l1qBuKmaelRYp0vofcBdvEzT97DChhslPTpxhK+biiF4Jrazcxi4GZnhFbpShI+o
 R1BpFNoP2/bX+ZOUC+In15GlWF77zxOe/rrNbwGIJY7Ht4riLaa7U08c4zi61sKM
 p61N8n7hh7Nml1k7IW7E0hjPWguJQkkKDilfctKp+iWq13IzcNJhkoWkH8pD9y83
 MJh6EsHT5ZNlzILy6Ny0SdckTV+TKNPwl5CGXayVrGK7bxQ1XcUHg85Ag2oWOG0b
 nybNNSwqj7TQIROb9jrJ/6QxaxW2PXQjBnK+KJb8iCBCAdxd48AfhUL+I0mrEuvx
 gpswLInl0CyfuxypwO8wuT4XgjtMQi79rrDb3itCyfR54Rtq7e4=
 =6fCc
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmOHh1sACgkQmmx57+YA
 GNmQLxAAilkBtZ8tT4Dn2FWerOWUIxrBO5heq1YrOQ3o0r4bOCCtV0Rza0g2N8NI
 IMdzLqfBluOVNohEv8UpZA6VmRfvHIFLbHeJExaSiNuxWjo9LDXhnjIPSnK5Tkst
 QGF0aqdPiS7RJRe8is3eR+w40qlf9Mj7UBqLPmMsjHK1qN9HxOkiZH4h6pXSbDWe
 pDHdomnwVbP6V/z/eWdoeglWFxbST9gHMj5Iwrmwl0Ftuu6DHPaUV5Wv3bBcz6l1
 otGF8eWNVKi+dfmN1DxqqgjcOx1wvNqnx0TNT09MqKKkbCZmiygOrTXzZMw/I7dX
 5bZ/ycMARjkUcS+eLw2H+TC/YSgyF82FRV5Z/h+OKHwVtDhLOWBlOvAfD01LyXPv
 8iO3CYOOMt7+AVhuPb/e7noHXUN7yAiNGyI3IU9n/enlgWqxxGGBguPZGiFLpETH
 auwj+/qq/lZG68//LmfvCSbikhTtmnflMIR50yKTtMAKAFNZvw544dVM9doVGpbw
 aNhkntoB1R99KiCJoaV9D8h8qKMwIQxZbMdTNENUbpDXUNsEtm4+/rOCS0X+CFy+
 sxXTJ7G/DdnejluhKAI6e2KJ0is4x4fXy+vmT+AqGPaabjz9utKVKnXaOYHZTY1X
 DRVntuqQZtZjx5COvZPO2qxlecJ26+K6maJmS5UqbNGCwQxgGG0=
 =vkEv
 -----END PGP SIGNATURE-----

Merge tag 'arm-soc/for-6.2/devicetree' of https://github.com/Broadcom/stblinux into soc/dt

This pull request contains Broadcom ARM-based SoCs Device Tree changes
for 6.2, please pull the following:

- Linus adds support for the D-Link DWL-8610AP which is based upon the
  BCM53016 SoC and the D-Link DIR-890L routers

- Maxime resolves a long standing issue affecting Raspberry Pi devices
  by switching entirely over to the VPU firmware clock provider rather
  than mixing the "bare metal" clock driver and VPU

- Rafal corrects the description of the TP-Link router partitions to
  use the "safeloader" partition parser

- Stefan fixes a number of invalid underscores in the bcm283x DTS files
  and also moves the ACT LED into a separate DTS include file for better
  re-use

- Krzysztof aligns the LEDs DT nodes to the proper schema format

- Pierre adds missing cache properties to various SoCs

* tag 'arm-soc/for-6.2/devicetree' of https://github.com/Broadcom/stblinux:
  arm: dts: Update cache properties for broadcom
  ARM: dts: broadcom: align LED node names with dtschema
  ARM: dts: bcm283x: Move ACT LED into separate dtsi
  ARM: dts: bcm283x: Fix underscores in node names
  ARM: dts: BCM5301X: Correct description of TP-Link partitions
  ARM: dts: bcm47094: Add devicetree for D-Link DIR-890L
  dt-bindings: ARM: add bindings for the D-Link DIR-890L
  ARM: dts: bcm2835-rpi: Use firmware clocks for display
  ARM: dts: bcm283x: Remove bcm2835-rpi-common.dtsi from SoC DTSI
  ARM: dts: bcm53016: Add devicetree for D-Link DWL-8610AP
  dt-bindings: ARM: add bindings for the D-Link DWL-8610AP

Link: https://lore.kernel.org/r/20221129191755.542584-1-f.fainelli@gmail.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2022-11-30 17:39:55 +01:00
Arnd Bergmann
33423a8bd2 Armv8 Juno/FVP updates for v6.2
Just few addtions including updates to cache information on various
 platforms to align well with the bindings, addition of cache information
 on FVP Rev C model, addition of SPE to Foundation model and updates to
 LED node names.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEunHlEgbzHrJD3ZPhAEG6vDF+4pgFAmOF8SgACgkQAEG6vDF+
 4ph7uhAAs+XsDmozvzn6q7XtgEDAsSmuXSSmdLawW9dOWBm4h9yP+b0ShfHasSlN
 Z/tg/Erc2IGLW6bYwam0JGLyzast2ifOVJfCe1M7Whfep3j2o/SV2eN43qnjSwwp
 enryQNw7hF9ShEHtvvBqruHg8BWNQqCBvJRAKHtemcXeXhaad0b32y53ahdbzB0o
 FAGD/i2KRJeghlw2s0lw4+jiV+W5UodoEZ4WbxQJSjTcUyqeDLiqfhs0KoHTJjaM
 s8rHKHRxRr+Wctibf25JW5iiBhe7ON9rb+KRVubI0jp9LVauO+dzujnR2dP+SbUC
 wc61U2G0QEZof+QCSYfVVQbuJ1bLVUzl6hJMl+c5VHSBq6x75jCCHdCq9PlTlXGl
 nmBPVP5haDgO17WsJuO5absawsBJehihwC0JLkk6bWnm15+XE7NnMDDLZRHSNuU9
 zterk4LVN7d94o+/WwK8XeZtzFfFS4l0OlIDBYWoP0hljvHc/p4jXOh2vvFucPmN
 L/YORmb8Vrj2Ql0NY+NPiHt1MDFIOftcYSufBuzzMQJw3pYQAQMFHKc3rUxB6Xee
 6CAikSuBWWO7qdY9yP8Fk+GceLrACSk5C/1pJOA2cBQiLw1whYI+4RRzn0g+Su9Z
 VN5KU6tP44tE0625ip5wLwcV1TiBa7ghKCezav+4b+TUFxLM0Yw=
 =Of6J
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmOHhtEACgkQmmx57+YA
 GNkW1g//dZ1xCZ7m0Zduhqp6dfLkC9IUyhkguIba3HsKLL5A1t4E5/AfZM7befQr
 rWZZTeeGQtpBlWo0/X2BjtNkcyDH02fU3Mk7mM3raOO/MF+C0IEAmaLWOkiekgYf
 dHg5ig2GKVI71wPRtYa0JfwFztgnkhGdMS+PSvELxDlisziVwSaGYOW+1DEZibU6
 hMTOZzePFvaI7Q6iP9N6uyLLiLnddrg2ar37z2ummsMgxVd51Eoe6IPzEa2B3bWB
 KswrPcVZ2XTINiOleMN9kE8awsZJOacIiNXP8oluffcu/03tLlwv3UYr5RDddtp8
 9K2GtXJ1wzvqXbpHo4a1AMwPkgUbcFgLZSl9ypZZP+afwIxxfunr7Ca0gdwBI4GR
 5cCrEih9SXGeegrzMz4wa5f5PuxDyeyRHzFzpnDX5z+6+8Q85tGUdDa6cazoBQyS
 U11Ty+zu+6NGWVPGz3e6udaJUkkQfF1TO0Kb9EtmNhOh6avj0J4kQT9Vx7PeoXpW
 LRPlBt8TLktS7/9jpAvdk0cLkULRqjLlONDRhdrIzGwW3+fMGVyMyWCWnNSu6ia/
 M57KTbfZsuq1p223arIC4z6YHPe0JKl5fgEaYRl9fVf3YcMPhrwllsLom5/xf25S
 2K7scuKw/AGE+2GSvVgyqyeqeeu+OaYpYkhtXZHVEMBuvBir7Oo=
 =GlOv
 -----END PGP SIGNATURE-----

Merge tag 'juno-updates-6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux into soc/dt

Armv8 Juno/FVP updates for v6.2

Just few addtions including updates to cache information on various
platforms to align well with the bindings, addition of cache information
on FVP Rev C model, addition of SPE to Foundation model and updates to
LED node names.

* tag 'juno-updates-6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux:
  ARM: dts: vexpress: align LED node names with dtschema
  arm64: dts: fvp: Add information about L1 and L2 caches
  arm64: dts: fvp: Add SPE to Foundation FVP
  arm64: dts: Update cache properties for Arm Ltd platforms
  arm64: dts: juno: Add thermal critical trip points

Link: https://lore.kernel.org/r/20221129115111.2464233-1-sudeep.holla@arm.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2022-11-30 17:37:37 +01:00
Takashi Iwai
b47068b4aa ASoC: Fixes for v6.1
Some more fixes for v6.1, some of these are very old and were originally
 intended to get sent for v5.18 but got lost in the shuffle when there
 was an issue with Linus not liking my branching strategy and I rebuilt
 bits of my workflow.  The ops changes have been validated by people
 looking at real hardware and are how things getting dropped got noticed.
 -----BEGIN PGP SIGNATURE-----
 
 iQEzBAABCgAdFiEEreZoqmdXGLWf4p/qJNaLcl1Uh9AFAmOHg3AACgkQJNaLcl1U
 h9AO+gf8C1E6GHk6UI3mU/xYCap0KgJavCVEJKExal2/pgCtCheC8OutFRAepsEM
 mnbhfNImFEEkD/3YfdhH22XqavDE+fN0DSfFhkdiEbsfPTrHhc+PeWU8aQzEyOxT
 tND7X01tmkWojmmoWJcVAv/z7hW1vF3FE/RUOiXHi3M7LhlJiSMy2ZkxHC9AEIz/
 3jyahc2LbzZ5SuIo+c8kSoErg/mZ8zI2KlAGx3afpFAHUiGkSVWmhl4XOQ+1lozQ
 dv4JtPMDx7SsM06GXUcvVTf6RI8QZQq6ohfz02BK7+NqD+odRrg3WlbabcTLvi1k
 LpNg5saPWYx8JVwHu9ggLtNfE5TAVQ==
 =T8ew
 -----END PGP SIGNATURE-----

Merge tag 'asoc-fix-v6.1-rc7' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus

ASoC: Fixes for v6.1

Some more fixes for v6.1, some of these are very old and were originally
intended to get sent for v5.18 but got lost in the shuffle when there
was an issue with Linus not liking my branching strategy and I rebuilt
bits of my workflow.  The ops changes have been validated by people
looking at real hardware and are how things getting dropped got noticed.
2022-11-30 17:26:55 +01:00
Alexandre Torgue
7b16ab92bb
Revert "ARM: dts: stm32: add fake interrupt propoerty for ASync notif - TEMP/TO REMOVE"
This reverts commit fb4ce97d9c.

Signed-off-by: Alexandre Torgue <alexandre.torgue@foss.st.com>
Link: https://lore.kernel.org/r/20221128133339.25055-1-alexandre.torgue@foss.st.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2022-11-30 17:25:04 +01:00
Xiongfeng Wang
45fecdb9f6 gpio: amd8111: Fix PCI device reference count leak
for_each_pci_dev() is implemented by pci_get_device(). The comment of
pci_get_device() says that it will increase the reference count for the
returned pci_dev and also decrease the reference count for the input
pci_dev @from if it is not NULL.

If we break for_each_pci_dev() loop with pdev not NULL, we need to call
pci_dev_put() to decrease the reference count. Add the missing
pci_dev_put() after the 'out' label. Since pci_dev_put() can handle NULL
input parameter, there is no problem for the 'Device not found' branch.
For the normal path, add pci_dev_put() in amd_gpio_exit().

Fixes: f942a7de04 ("gpio: add a driver for GPIO pins found on AMD-8111 south bridge chips")
Signed-off-by: Xiongfeng Wang <wangxiongfeng2@huawei.com>
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
2022-11-30 17:18:35 +01:00
Paolo Bonzini
e542baf30b KVM: x86: fix uninitialized variable use on KVM_REQ_TRIPLE_FAULT
If a triple fault was fixed by kvm_x86_ops.nested_ops->triple_fault (by
turning it into a vmexit), there is no need to leave vcpu_enter_guest().
Any vcpu->requests will be caught later before the actual vmentry,
and in fact vcpu_enter_guest() was not initializing the "r" variable.
Depending on the compiler's whims, this could cause the
x86_64/triple_fault_event_test test to fail.

Cc: Maxim Levitsky <mlevitsk@redhat.com>
Fixes: 92e7d5c83a ("KVM: x86: allow L1 to not intercept triple fault")
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-11-30 11:18:20 -05:00
Michal Luczaj
c1a81f3bd9 KVM: x86: Remove unused argument in gpc_unmap_khva()
Remove the unused @kvm argument from gpc_unmap_khva().

Signed-off-by: Michal Luczaj <mhal@rbox.co>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-11-30 11:05:32 -05:00
Michal Luczaj
aba3caef58 KVM: Shorten gfn_to_pfn_cache function names
Formalize "gpc" as the acronym and use it in function names.

No functional change intended.

Suggested-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Michal Luczaj <mhal@rbox.co>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-11-30 11:03:58 -05:00
David Woodhouse
8acc35186e KVM: x86/xen: Add runstate tests for 32-bit mode and crossing page boundary
Torture test the cases where the runstate crosses a page boundary, and
and especially the case where it's configured in 32-bit mode and doesn't,
but then switching to 64-bit mode makes it go onto the second page.

To simplify this, make the KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADJUST ioctl
also update the guest runstate area. It already did so if the actual
runstate changed, as a side-effect of kvm_xen_update_runstate(). So
doing it in the plain adjustment case is making it more consistent, as
well as giving us a nice way to trigger the update without actually
running the vCPU again and changing the values.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-11-30 11:03:18 -05:00
David Woodhouse
d8ba8ba4c8 KVM: x86/xen: Allow XEN_RUNSTATE_UPDATE flag behaviour to be configured
Closer inspection of the Xen code shows that we aren't supposed to be
using the XEN_RUNSTATE_UPDATE flag unconditionally. It should be
explicitly enabled by guests through the HYPERVISOR_vm_assist hypercall.
If we randomly set the top bit of ->state_entry_time for a guest that
hasn't asked for it and doesn't expect it, that could make the runtimes
fail to add up and confuse the guest. Without the flag it's perfectly
safe for a vCPU to read its own vcpu_runstate_info; just not for one
vCPU to read *another's*.

I briefly pondered adding a word for the whole set of VMASST_TYPE_*
flags but the only one we care about for HVM guests is this, so it
seemed a bit pointless.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Message-Id: <20221127122210.248427-3-dwmw2@infradead.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-11-30 10:59:37 -05:00
David Woodhouse
5ec3289b31 KVM: x86/xen: Compatibility fixes for shared runstate area
The guest runstate area can be arbitrarily byte-aligned. In fact, even
when a sane 32-bit guest aligns the overall structure nicely, the 64-bit
fields in the structure end up being unaligned due to the fact that the
32-bit ABI only aligns them to 32 bits.

So setting the ->state_entry_time field to something|XEN_RUNSTATE_UPDATE
is buggy, because if it's unaligned then we can't update the whole field
atomically; the low bytes might be observable before the _UPDATE bit is.
Xen actually updates the *byte* containing that top bit, on its own. KVM
should do the same.

In addition, we cannot assume that the runstate area fits within a single
page. One option might be to make the gfn_to_pfn cache cope with regions
that cross a page — but getting a contiguous virtual kernel mapping of a
discontiguous set of IOMEM pages is a distinctly non-trivial exercise,
and it seems this is the *only* current use case for the GPC which would
benefit from it.

An earlier version of the runstate code did use a gfn_to_hva cache for
this purpose, but it still had the single-page restriction because it
used the uhva directly — because it needs to be able to do so atomically
when the vCPU is being scheduled out, so it used pagefault_disable()
around the accesses and didn't just use kvm_write_guest_cached() which
has a fallback path.

So... use a pair of GPCs for the first and potential second page covering
the runstate area. We can get away with locking both at once because
nothing else takes more than one GPC lock at a time so we can invent
a trivial ordering rule.

The common case where it's all in the same page is kept as a fast path,
but in both cases, the actual guest structure (compat or not) is built
up from the fields in @vx, following preset pointers to the state and
times fields. The only difference is whether those pointers point to
the kernel stack (in the split case) or to guest memory directly via
the GPC.  The fast path is also fixed to use a byte access for the
XEN_RUNSTATE_UPDATE bit, then the only real difference is the dual
memcpy.

Finally, Xen also does write the runstate area immediately when it's
configured. Flip the kvm_xen_update_runstate() and …_guest() functions
and call the latter directly when the runstate area is set. This means
that other ioctls which modify the runstate also write it immediately
to the guest when they do so, which is also intended.

Update the xen_shinfo_test to exercise the pathological case where the
XEN_RUNSTATE_UPDATE flag in the top byte of the state_entry_time is
actually in a different page to the rest of the 64-bit word.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-11-30 10:56:08 -05:00
Arnd Bergmann
c93a25d775 mvebu dt for 6.2 (part 1)
Fix assigned-addresses for every PCIe Root Port
 
 Align LED node names with dtschema
 
 Add a new kirkwood based board: Zyxel NSA310S
 
 Fix compatible string for gpios for Armada 38x and 39x
 
 Add interrupts for watchdog on Armada XP
 
 Turris Omnia (Armada 385 based):
  - Add switch port 6 node
  - Add ethernet aliases
 
 Switch to using gpiod API in pm-board code
 -----BEGIN PGP SIGNATURE-----
 
 iF0EABECAB0WIQQYqXDMF3cvSLY+g9cLBhiOFHI71QUCY4QDYQAKCRALBhiOFHI7
 1WAEAJ9oLKs8LbLgO7CqgfY9j4g/bMWlMACfSxssqM2DqLd3EADd1y/JRRhwFaU=
 =iXv9
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmOHeb0ACgkQmmx57+YA
 GNlkixAAjvYjGVuQgStoWcrnT/fL8qatMCtXxvgNDT8Tq0zil5l7I7sLS7CIvc/j
 nkRdgtP62xBafYVd0BdP9vUWmW9lzTHgxitsxU5lE/J5+65xtnnBpfpd1cPg4r4k
 kv4D2UmIbiAQL7JrvVB3nL36K8tNN1PSN+pOTrJ9zccyjrMRGXgYsCF9zZRJSVyB
 Rn39xJM3gFawlFkSRJDAwcByck/8sGd7bhGCgZq5SeSQ1dDuy7w0PP06QoXa8oqe
 74EfcsDpP/2EbWKHjOSick4JDC6fiMM+i3G3h9MuZbpRemY2SxABHtaVdYh3G2yJ
 v8VRR5lZLK6A4iOYd2IDw27kHNh30kX6kHLhAYaXqBRc4ZTElSyo5V7xCWJIJ28T
 I6HunSsbBls1HXqkkMeow73VHoFe4ec1PNA5ToSrSzxqxUMvbAPza9Wflm+PktE7
 eKajK+IIsBXwI5JtXAnF+uAMVuhBcqDnQrrOzbedts2cA14Hm/LG0dmb8BE9bDJR
 npv1NpZBP/xg5l98FFgaq06He6gcY7vlT3VyGUj3N+VYDQq0LFA0WK+pV1Z+ORYS
 vyfHANvhJ03FgFX2396rfkzXT7j8fhmbaGi+WvdPa2e39c5BQ6a2aP/G6iCmWWpe
 7wg7iXE2npepBtj7PGOC9DX/xZ2nKjaR/fJMHc5wu46RnJO7JII=
 =Vk4K
 -----END PGP SIGNATURE-----

Merge tag 'mvebu-dt-6.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/gclement/mvebu into soc/dt

mvebu dt for 6.2 (part 1)

Fix assigned-addresses for every PCIe Root Port

Align LED node names with dtschema

Add a new kirkwood based board: Zyxel NSA310S

Fix compatible string for gpios for Armada 38x and 39x

Add interrupts for watchdog on Armada XP

Turris Omnia (Armada 385 based):
 - Add switch port 6 node
 - Add ethernet aliases

Switch to using gpiod API in pm-board code

* tag 'mvebu-dt-6.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/gclement/mvebu:
  ARM: dts: armada-xp: add interrupts for watchdog
  ARM: dts: armada: align LED node names with dtschema
  ARM: mvebu: switch to using gpiod API in pm-board code
  ARM: dts: armada-39x: Fix compatible string for gpios
  ARM: dts: armada-38x: Fix compatible string for gpios
  ARM: dts: turris-omnia: Add switch port 6 node
  ARM: dts: turris-omnia: Add ethernet aliases
  ARM: dts: armada-39x: Fix assigned-addresses for every PCIe Root Port
  ARM: dts: armada-38x: Fix assigned-addresses for every PCIe Root Port
  ARM: dts: armada-375: Fix assigned-addresses for every PCIe Root Port
  ARM: dts: armada-xp: Fix assigned-addresses for every PCIe Root Port
  ARM: dts: armada-370: Fix assigned-addresses for every PCIe Root Port
  ARM: dts: dove: Fix assigned-addresses for every PCIe Root Port
  ARM: dts: kirkwood: Add Zyxel NSA310S board

Link: https://lore.kernel.org/r/87cz979adf.fsf@BL-laptop
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2022-11-30 16:41:49 +01:00
Jens Axboe
c62256dda3 Revert "blk-cgroup: Flush stats at blkgs destruction path"
This reverts commit dae590a6c9.

We've had a few reports on this causing a crash at boot time, because
of a reference issue. While this problem seemginly did exist before
the patch and needs solving separately, this patch makes it a lot
easier to trigger.

Link: https://lore.kernel.org/linux-block/CA+QYu4oxiRKC6hJ7F27whXy-PRBx=Tvb+-7TQTONN8qTtV3aDA@mail.gmail.com/
Link: https://lore.kernel.org/linux-block/69af7ccb-6901-c84c-0e95-5682ccfb750c@acm.org/
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2022-11-30 08:25:46 -07:00
Takashi Sakamoto
2133dc91d6 ALSA: dice: add support for Focusrite Saffire Pro 40 with TCD3070 ASIC
TC Applied Technologies (TCAT) produces TCD3070 as final DICE ASIC for
communication in IEEE 1394 bus for IEC 61883-1/6 protocol. As long as I
know, latter model of Focusrite Saffire Pro 40 is an application of the
ASIC and only in the market for consumers.

This patchset adds support for the device. The device has several
remarkable points.

1. No support for extended synchronization information section in TCAT
general protocol. The value of GLOBAL_EXTENDED_STATUS register is always
zero. Additionally, NOTIFY_EXT_STATUS message is never emitted.

2. No support for TCAT protocol extension. Hard coding is required for
format of CIP payload.

3. During several seconds after changing sampling rate, the block to
process PCM frames is under disfunction. When starting packet streaming
during the state, the block is never function till configuring different
sampling rate and several seconds.

This commit adds support for the device. The item 1 and 2 can be
adaptable, while item 3 is not. It's not preferable that user process
is forced to sleep during the disfunction in the call of ioctl(2) with
SNDRV_PCM_IOCTL_HW_PARAMS or SNDRV_PCM_IOCTL_PREPARE request. It's
inconvenient but let user configure preferable sampling rate in advance
of starting PCM substream.

The content of configuration ROM in the device I used is available at:
 * https://github.com/takaswie/am-config-roms/

I note that any mixer control operation is implemented by unique
transaction. The frame of request consists of 16 bytes header followed
by payload.

header (4 quadlets):
1st: the type of request, prefixed with 0x8000
2nd: counter at 2 bytes in MSB side, the length of data at 2 bytes in LSB
     side
3rd: parameter 0
4th: parameter 1

payload (variable length if need):
5th-: data according to parameters

The request frame is sent by block write request to 0x'ffff'e040'01c0.

The frame of response is similar to the frame of request, but it is
header only, thus fixed to 16 bytes. The response frame is sent to the
address which is registered by lock transaction to 0x'ffff'e040'0008.

If the operation results in batch of data, the 2nd quadlet of header
includes the length of data like request. The data is itself readable
by read block request to 0x'ffff'e040'0030, which includes both
header and payload for data, thus the length to read should be the
length of data plus 16 bytes for header

The actual value of request, parameter 0, parameter 1, and data is
unclear yet.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Link: https://lore.kernel.org/r/20221130143313.43880-1-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2022-11-30 16:16:38 +01:00
Takashi Sakamoto
9b84f0f74d ALSA: dice: fix regression for Lexicon I-ONIX FW810S
For Lexicon I-ONIX FW810S, the call of ioctl(2) with
SNDRV_PCM_IOCTL_HW_PARAMS can returns -ETIMEDOUT. This is a regression due
to the commit 41319eb56e ("ALSA: dice: wait just for
NOTIFY_CLOCK_ACCEPTED after GLOBAL_CLOCK_SELECT operation"). The device
does not emit NOTIFY_CLOCK_ACCEPTED notification when accepting
GLOBAL_CLOCK_SELECT operation with the same parameters as current ones.

This commit fixes the regression. When receiving no notification, return
-ETIMEDOUT as long as operating for any change.

Fixes: 41319eb56e ("ALSA: dice: wait just for NOTIFY_CLOCK_ACCEPTED after GLOBAL_CLOCK_SELECT operation")
Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Link: https://lore.kernel.org/r/20221130130604.29774-1-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2022-11-30 16:15:02 +01:00
Qiqi Zhang
8c11586450 drm/bridge: ti-sn65dsi86: Fix output polarity setting bug
According to the description in ti-sn65dsi86's datasheet:

CHA_HSYNC_POLARITY:
0 = Active High Pulse. Synchronization signal is high for the sync
pulse width. (default)
1 = Active Low Pulse. Synchronization signal is low for the sync
pulse width.

CHA_VSYNC_POLARITY:
0 = Active High Pulse. Synchronization signal is high for the sync
pulse width. (Default)
1 = Active Low Pulse. Synchronization signal is low for the sync
pulse width.

We should only set these bits when the polarity is negative.

Fixes: a095f15c00 ("drm/bridge: add support for sn65dsi86 bridge driver")
Signed-off-by: Qiqi Zhang <eddy.zhang@rock-chips.com>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Tested-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20221125104558.84616-1-eddy.zhang@rock-chips.com
2022-11-30 06:40:20 -08:00
Gustavo Sousa
7d579eff3e drm/i915/dmc: Update DG2 DMC version to v2.08
Release notes:

1. Fixes for Register noclaims and few restore.

Fixes: c4cf059d9c ("drm/i915/dmc: Update DG2 DMC firmware to v2.07")
Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
Reviewed-by: Anusha Srivatsa <anusha.srivatsa@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20221124162123.16870-1-gustavo.sousa@intel.com
(cherry picked from commit 6ee6692520)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
2022-11-30 09:07:14 -05:00
Daniele Ceraolo Spurio
2d299f5bfe drm/i915/huc: always init the delayed load fence
The fence is only tracking if the HuC load is in progress or not and
doesn't distinguish between already loaded, not supported or disabled,
so we can always initialize it to completed, no matter the actual
support. We already do that for most platforms, but we skip it on
GTs that lack VCS engines (e.g. MTL root GT), so fix that. Note that the
cleanup is already unconditional.

While at it, move the init/fini to helper functions.

Fixes: 8e5f378281 ("drm/i915/huc: fix leak of debug object in huc load fence on driver unload")
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: John Harrison <John.C.Harrison@Intel.com>
Cc: Alan Previn <alan.previn.teres.alexis@intel.com>
Reviewed-by: John Harrison <John.C.Harrison@Intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20221123235417.1475709-1-daniele.ceraolospurio@intel.com
(cherry picked from commit 14347a9c88)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
2022-11-30 09:07:10 -05:00
Arnd Bergmann
3deeb5b079 mvebu dt64 for 6.2 (part 1)
Update cache properties for various Marvell SoCs
 Reserved memory for optee firmware
 Turris Mox (Armada 3720 based Socs)
  - Define slot-power-limit-milliwatt for PCIe
  - Add missing interrupt for RTC
 -----BEGIN PGP SIGNATURE-----
 
 iFwEABECAB0WIQQYqXDMF3cvSLY+g9cLBhiOFHI71QUCY4QBWgAKCRALBhiOFHI7
 1ffUAJiq2sF5b9zWtCHi/Wh2d9Ukz3hXAJ9YuSnzloWv8fY+uL4tomdjDB2iTQ==
 =ACvl
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmOHY1EACgkQmmx57+YA
 GNku0Q//T8vvCjLrfZ+dO6Z0CTaGavYLYXJYrMRl4lqKaiI92TZS46iqVVVoRWDD
 gicXwKaPM5QwsfNloMwPgxvpJddJO+1tVknaVuuhBhUKf0Yk+ooi7SYQDmOCKj5y
 SmvhRCJspfLrXKe8OY6h6knZX8r9wNdzxLs/XU+ZSQgpLcJfRGLLbYdgZ6gC4iHK
 pCp2ck/nPBEQAaQrmXGCKdfO389iOt/lo2qAxF7eJq+VJTjUL0bmsqeOaX32ROqE
 P48Bo3ggHuDUcZUzp5o7PZ1tpo76yeLnPnUVskA9UmfgiZMTNRf1NbOg88vSgVjs
 0oE6F1MaNuVNVKOlLi3ffiprC296Lxr+OJbqqTV0ze7CA2wL/WsIUAt+ydmzt4gl
 TpDYG+y442xF6fhevgGys3rTzLvlOldfXVm4wcQGz2afVdJQrAY9w8yOUjZG0O6w
 GRdOz7JTpYDqtOkltsTdZalNCF6hGE+HoMOodJrI8bMJJqfmAu0bs/1bfp/IEaJA
 NQelbB8lVMxl1hzThgs1avbiuzxup75w/rLxehjXgZkyYj5slESITmMlcPqDPovx
 CasENKqwEJygJrd+OfKYN+eWVG8uudbcEW0vcUxgm5vLvLQ4x3hbTcNpIDBCBmwZ
 p1Br4dDb1OatgnaohlIqvYtRNRZbi6i3Uf6vq+4Fx+B1yliUn5k=
 =N2XP
 -----END PGP SIGNATURE-----

Merge tag 'mvebu-dt64-6.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/gclement/mvebu into soc/dt

mvebu dt64 for 6.2 (part 1)

Update cache properties for various Marvell SoCs
Reserved memory for optee firmware
Turris Mox (Armada 3720 based Socs)
 - Define slot-power-limit-milliwatt for PCIe
 - Add missing interrupt for RTC

* tag 'mvebu-dt64-6.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/gclement/mvebu:
  arm64: dts: marvell: add optee FW definitions
  arm64: dts: Update cache properties for marvell
  arm64: dts: armada-3720-turris-mox: Add missing interrupt for RTC
  arm64: dts: armada-3720-turris-mox: Define slot-power-limit-milliwatt for PCIe

Link: https://lore.kernel.org/r/87fse39aer.fsf@BL-laptop
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2022-11-30 15:06:09 +01:00
Arnd Bergmann
ca1a1892f8 AT91 DT for 6.2 #3
It contains:
 - proper power rail description for SDMMC devices available on
   SAMA7G5-EK
 - OTP controller has been added for LAN966X devices
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYIAB0WIQTsZ8eserC1pmhwqDmejrg/N2X7/QUCY4DGcwAKCRCejrg/N2X7
 /T5SAP4gTNtam1zi3suQGTlGKRsxqvTqmqddTBXBLb2PwoXxQgEAtnRzesaKbpBm
 crPFcatWyUjr2JtFvtfKmZLZge/tOAk=
 =Qr/P
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmOHYwIACgkQmmx57+YA
 GNlyJQ//ZWUUwe+iwyYgYk4PHZ+9ve8vVomOEEB9qAAQanOlUST+wmR6yI6oAoj0
 44+j6ieReQb88uuwGfJTIQWqB1Mz1W5QdUWZF8x4WQHkwcO1izzFKxMHfYrjwW0l
 hOcDVhvE8gbiZYSCQPJ3kfFxoNJD/CNjzxT69ouoxhKNsWnSsEzl9xifiPLqz+6L
 x2douW+NZNG+g2j5gEP6PqHJ5sEVu55FQdCsAvHReT0TPjsfZRVq7bl3tYdmNtKI
 //e37CPdYJ0enLsmwNRa/j0hL0rIjLPE6rG8iN981sfGbfFnWa1vCWDVCnIhQrOp
 033iPlrVQXfBUQ8hpj0kJZnLgVKY8EagzKEjwkADOCy6pRP9XmjhRwFYGLtkGBFB
 W69AXO+Pn96zkxOO0RddR2vRBstmBTe+2GvWTYOnthfwP8MHmWXWbuxtNaZjxWn3
 WovhuS0LJwg5zYncVMz0Gg65UJibZs8i92V8wGD9zD4B75V9LVS8eJnII/hnxXz5
 ik6APkSHWr7lNckIwK+bvIcgUO/Hz+9/3ID21Q/bOLlmCjQkftoBq3MXvI5UoKdp
 QTM2y+kuL+TaLA+d5bOhM2QfbHz8UU6fZeXkCyRb4j8i3+XdIzXnvWWebMXPaafo
 +rumgQAPrrzu3DDbB8hr5oAZSh8twqYmN2u2ZN2ceu1hGnlHbeg=
 =qLfB
 -----END PGP SIGNATURE-----

Merge tag 'at91-dt-6.2-3' of https://git.kernel.org/pub/scm/linux/kernel/git/at91/linux into soc/dt

AT91 DT for 6.2 #3

It contains:
- proper power rail description for SDMMC devices available on
  SAMA7G5-EK
- OTP controller has been added for LAN966X devices

* tag 'at91-dt-6.2-3' of https://git.kernel.org/pub/scm/linux/kernel/git/at91/linux:
  ARM: dts: lan966x: Add otp support
  ARM: dts: at91: sama7g5ek: align power rails for sdmmc0/1

Link: https://lore.kernel.org/r/20221125140525.384928-1-claudiu.beznea@microchip.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2022-11-30 15:04:50 +01:00
Gustavo Sousa
6ee6692520 drm/i915/dmc: Update DG2 DMC version to v2.08
Release notes:

1. Fixes for Register noclaims and few restore.

Fixes: c4cf059d9c ("drm/i915/dmc: Update DG2 DMC firmware to v2.07")
Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
Reviewed-by: Anusha Srivatsa <anusha.srivatsa@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20221124162123.16870-1-gustavo.sousa@intel.com
2022-11-30 09:04:29 -05:00
Arnd Bergmann
799423ec5a Devicetree related musb changes for omap3 for v6.2
Recent musb driver regressions eposed two issues for musb legacy
 probing. The changes to use device_set_of_node_from_dev() confuse
 the legacy interconnect code. And we now have to manually populate
 the musb core irq resources.
 
 The musb driver has a fix for these, but it's not a good long term
 solution. To fix the issue properly, let's just update musb to
 probe with ti-sysc interconnect driver with proper devicetree data.
 This allows dropping most of the musb driver workaround later on.
 And with these changes we have the omap2430 musb glue layer behaving
 the same way for all the SoCs using it.
 
 We need to patch the ti-sysc driver quirks, and add devicetree
 data to make things work. And we want to drop the legacy data too
 to avoid pointless warnings.
 
 As we have a musb driver workaround, these changes are not needed as
 fixes and can wait for the merge window.
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCAAvFiEEkgNvrZJU/QSQYIcQG9Q+yVyrpXMFAmOAewgRHHRvbnlAYXRv
 bWlkZS5jb20ACgkQG9Q+yVyrpXNXqA/9FWruiCc9VLP3SuxgTC0QwSTjxWHz19Ra
 Jnmlf1hLMwfImp6xBcTWujbC/SRkn2BJE0fRUl/NqtpjqwnlaFvLMv+nA0J1OjLp
 wJepVoooc167LzlxREZfUNUR4ncG+upC9ZIFbhvlhwVRT1IguveBz9ycp1koFFS3
 urL4R0GLyQ+nts8O3gzisJmm8qfCkY8pvOdWOnM/K/NCizjqvBd7Ko/3WJcESU/1
 h8lJbYYGDBExhJl2e8mvkpG1RYYLleBzpgpByj2qd4iUVEph32Wos7xX4TocMrRD
 wlQ0RyFL2NPq+uIlwOYYpG2ucrvCO3KCOt4Sxl0DkoUMcWRFTKR7RwLBE0VJDv1p
 83Ae3PjzgUOcoTPeyIqsD3X/d3eNCzffLQKNH0JKhXyiqebfmnevpq1mYAeo/zg2
 Xu/6lYGj90yACJY2E2NWxrQmL4tjebomC4mHQkiECzuKHY5CGruLqcJnWyVyhX0o
 PpEwThYNzaNNqhNI+otRFeczYP7fdbPz3NzXerD5LVPwnfOZjYwqYJWgbD3UiITt
 B/yqm266XSiWtrQpCX4NnN0245eCCDPbNWri+Pdv9/71yu7Q7dlq+gT5qb4Gi1bn
 IDk+juWqdWsTgndqTWPLUd79+omQE8CZ+2SAj4WayTo71WtmSP/d+GOWJu3SdqC0
 ZuNV89T/ZB4=
 =V2rx
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmOHYswACgkQmmx57+YA
 GNmAjQ/9FZ+6rCgSYeOQ68oE0S/sBh/9lAvOdLCp0q8BShk7UWdLQQu7pYTiVpXl
 Iw60AmWpCLlzVOq+EF9XiEMfs59HBTLga5Ma9gOl36pjRUlP0xA233rOTFHY9wtS
 1LeZNfFeEJJUDky1bfBH8Ck6wvjs5ijKAecTZp3G6Lagt4zRgRHd22CCqW0WcTVT
 OJTleLW9iMdiGBKW75OfRu9ZKSXd10IoDLy9sv/cBBKgKwEImidRYgRyJR1ayv2y
 Xa/PNDVeqLl1nMuGZ0YxGW6KQFkGbeQEp2UrlyaaXGgF91DfFbNsjjdLaQiPrU5A
 ogl5PwHEIeXBoL5Zqo7kZmema5c7CTHwahGZaivGyOdmy85yTujBKg6NlzJRcH6m
 ap5cbsMt/lJSsHYaHgepI/Bx8EaOK8sYk5dynRHU8hSYdHWmuejQUGcemysIioRQ
 nPS/6ttohu1LlC1hIMJpYOzvYSPCbR0fHgVIllX3WxZLcNUvPV9d2V5Q9UeGeyrF
 +YXBULGca83da6AXYWYX3y7GToWjbDfLyd0nw4BHWw+w1fcBfvFzovpeF1MKDooJ
 j/5FqwNM06zeUJLnUXVAUxuZLOPKE66xuQZ4xTio1oWiNsyBxFc0Lxn6X6yAzo9x
 ZvkdaggvT4wVQx9/r+583/fRAs9dF2r/iuEvHu+kEoqX8bHw3s0=
 =U6a8
 -----END PGP SIGNATURE-----

Merge tag 'musb-for-v6.2-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into soc/dt

Devicetree related musb changes for omap3 for v6.2

Recent musb driver regressions eposed two issues for musb legacy
probing. The changes to use device_set_of_node_from_dev() confuse
the legacy interconnect code. And we now have to manually populate
the musb core irq resources.

The musb driver has a fix for these, but it's not a good long term
solution. To fix the issue properly, let's just update musb to
probe with ti-sysc interconnect driver with proper devicetree data.
This allows dropping most of the musb driver workaround later on.
And with these changes we have the omap2430 musb glue layer behaving
the same way for all the SoCs using it.

We need to patch the ti-sysc driver quirks, and add devicetree
data to make things work. And we want to drop the legacy data too
to avoid pointless warnings.

As we have a musb driver workaround, these changes are not needed as
fixes and can wait for the merge window.

* tag 'musb-for-v6.2-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
  ARM: OMAP2+: Drop legacy hwmod data for omap3 otg
  ARM: dts: Update omap3 musb to probe with ti-sysc
  bus: ti-sysc: Add otg quirk flags for omap3 musb

Link: https://lore.kernel.org/r/pull-1669364566-84575@atomide.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2022-11-30 15:03:56 +01:00
Arnd Bergmann
1e52d6c811 Devicetree fixes for omaps for v6.2
Two devicetree fixes for omaps. These fixes are not urgent and
 can wait for the merge window:
 
 - Fix up the node names and missing #pwm-cells property for
   ti,omap-dmtimer-pwm to avoid warnings when the the related
   yaml binding gets merged
 
 - Fix TDA998x port addressing
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCAAvFiEEkgNvrZJU/QSQYIcQG9Q+yVyrpXMFAmOAd3gRHHRvbnlAYXRv
 bWlkZS5jb20ACgkQG9Q+yVyrpXPV7A/+LaevsMSHk5ajbicNWxa0FAVmZo/BYpt7
 NuPnNfomLKXK0Ls5anj/AQDekLNLrI+dGfFUdMtIevnwLIDbodwBJzh4A01SmE6x
 eH2FWPBwV+qEWAJd255CCxpWk6+DJdoCbdWfRx2+5aTh46saDITxzf7AZVUHqkPK
 D6egp5fgxlwAHInnqO67D0KWA5sKNVmLaC4c0soex1D6R9CY1SbxPedTSviD/uEx
 sBKZeXxwSq8kenexTVbC6FJ76V8nLaC2OfF3MSEuv9VRHwt8Z2B6Muf5BKEv/rlr
 nceHvB8iXRXHYdtjh/lfa/3PP2Gh70gGcQEkXmuPDzCnATjdesDyLf/t/M8dASmF
 Ukb3OlLWYTt0ckxK/KuX+w4aG9c6yWc7fruSZv2woKQV09MFvct9d9RQcRm5awjD
 voXyQaerceGV8e8EVOQ0i/aZvpYOtYwFQJz2w5wYvqbHMh4VEEHc/oUs02Aw4Iqd
 xAy5tYmvSpmLbpC3eeHYzjIBE9sfLwFRnsKlZfS+ylYxtx1pXeuUKCBz4z0SyRLU
 kTy3fRbxdUQahxli4EtfDwweMwumc1CAZTqbjcP04BhvI2ZQSn5inMQF2XhHt+99
 G9vyrnyopxabVoU0hpHVyoaNHFxQLos2eAz8IsiTNOwz94Yh1dg777DL3YLJz8P+
 iTeA3YnWy9M=
 =Q2be
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmOHYqQACgkQmmx57+YA
 GNn3mQ/8CSpnS5kVqJpI4FiKDdT/J20DJOH4+VeMcEW+U06vu4N3rEQceyPUA2P3
 jIEWxO0F/UtMHH+ygBTYKSrT/xnjGfcX7iiaov19/Q1x7ZApvUXplO7roaFAjlC9
 VWaDhcXECsz6/IfsJjiV+4fnJHxrLHLRYtUAM0Ix2QL/3cfQxdnLJ1Nb0jL1V9UD
 JaFut5uXeff++qcOrkluj8lxO0LJquLbJWO3aF5pDhgw9h7h5o/gvjIwCvh7C5gi
 mg5+x7WP3Qra13MEFccqUROsAotl+9mPp6KNz9SINlim9m8slOvCU0FZQrLSJnQC
 ePIvI0A58nqUlfSKirJazxFQgoqnvzIYn1fL1SRRpgLm7OIG76R67AuXKDZwsuaZ
 3j/RCWHB3kN1F24t7AkFccFXNq0fHflU9WbyJtczvHWcXBLH9yZM+HOi97sv/SQd
 Cp/h0zJE1TJTjhr9/vEVCmUSAAFoE8HFZV/dl8CteCw6o2GEWZRJ+qQS8SgBq+XP
 nxbeMP83kJvLM0/vxaH0i3hUdwJGOvsoDvRv4jkoVn/MhjbXPwje19JO0nFglVHP
 a1Ha10RbHbOFHj35HFR8EawmP5jRnAz5RhXjfknv/jSvCDtpJbncxL0x8QDBYjb4
 Pp9d17o3nJd9jFzUzjkGqaWzHWzg17JpveyIMynQ9twfveLpQ8U=
 =5YCR
 -----END PGP SIGNATURE-----

Merge tag 'omap-for-v6.2/dt-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into soc/dt

Devicetree fixes for omaps for v6.2

Two devicetree fixes for omaps. These fixes are not urgent and
can wait for the merge window:

- Fix up the node names and missing #pwm-cells property for
  ti,omap-dmtimer-pwm to avoid warnings when the the related
  yaml binding gets merged

- Fix TDA998x port addressing

* tag 'omap-for-v6.2/dt-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
  ARM: dts: Unify pwm-omap-dmtimer node names
  ARM: dts: am335x: Fix TDA998x ports addressing
  ARM: dts: am335x-pcm-953: Define fixed regulators in root node

Link: https://lore.kernel.org/r/pull-1669363695-856423@atomide.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2022-11-30 15:03:16 +01:00
Arnd Bergmann
bcbc468528 Qualcomm ARM64 DTS updates for 6.2
This introduces support for SM4250, SM6115, SM6375 and SDM670 platforms
 and Sony Xperia 10 IV, Google Pixel 3a, OnePlus 3, OnePlus 3T, Google
 Pazquel and OnePlus Nord N100.
 
 A wide variety of updates to align with DeviceTree bindings across
 many/most platforms is introduced, and incorrectly styled comments are
 adjusted across the tree.
 
 Apps RSC is added to the cluster-idle power-domain across SM8150,
 SM8250, SM8350 and SM8450, to ensure sleep and wake votes are flushed as
 the last core is being powered down.
 
 Remoteproc firmware patches are aligned with agreed upon structure used
 in linux-firmware across Inforce 6560, Lenovo Miix 630, various Sony
 Xperia devices and Samsung Galaxy Book2 (although these are not
 available in linux-firmware today).
 
 On IPQ8074 CPU clocks are added, thermal zones are introduced and vqmmc
 supply is specified for the HK01 board.
 
 Alcatel OneTouch Idol 3 gains LED nodes and Samsung Galaxy A3U gained
 vibrator support.
 
 The application subsystem's IOMMU and the display subsystem is enabled
 for MSM8953.
 
 A new CPU frequency table is introduced for MSM8996Pro, to properly
 describe it separate of MSM8996. The GPU opp-table is extended as well.
 
 On SC7180 USB is marked as a wakeup source, USB gains required-opps to
 ensure that the core voltage rail is voted for as needed. The
 description of the fingerprint sensor in Trogdor is corrected.
 
 On SC7280 Wake-on-WLAN is introduced, and PHY parameters for the SNPS
 USB PHY is defined across SC7280.
 
 The memory map across Google Herobrine is adjusted, to regain unused
 memory on the WiFi SKUs.  A LTE SKU of the Evoker board is introduced
 and the bard gains touchscreen.
 NVME support is disabled on Villager boards, as it's not used.
 
 PCIe support is introduced on SC8280XP, with NVMe, SDX55 (5G) and WiFi
 enabled on the Lenovo Thinkpad X13s and Compute Reference Device. ADCs
 and thermal zones are intrduced for the same. Lenovo Thinkpad X13s
 gains LID switch support.
 
 Fairphone FP3 gains touchscreen support.
 
 Support for Xiaomi Poco F1 variant with EBBG panel.
 
 The round-robin ADC is enabled across DB845c, OnePlus devices and
 Pocophone F1 devices.
 
 The displayport controller on SDM845 is introduced.
 
 SM6350 gains SDHCI support and on Sony Xperia 10 III sd-card,
 touchscreen and GPI DMA is enabled.
 
 Fairphone FP4 got SD-card support.
 
 UFS PHY register ranges are corrected across SM8150, SM8250, SM8350 and
 SM8450.
 
 Sony Xperia 1 II got NFC support and Sony Xperia 5 III got PMIC
 regulators defined and USB definition corrected, to enable USB3.
 
 The SDHCI controller is described for SM8450 and microSD support is
 enabled for the HDK and QRD devices.
 
 SM8450 also gains camera CCI interface and display clock controller.
 -----BEGIN PGP SIGNATURE-----
 
 iQJJBAABCAAzFiEEBd4DzF816k8JZtUlCx85Pw2ZrcUFAmN/QfsVHGFuZGVyc3Nv
 bkBrZXJuZWwub3JnAAoJEAsfOT8Nma3FR8wP/3ynHPC8Kq/exZfb2n5M6gS3+3YZ
 BxwCcjcwMCMBwFZUZ4LPYDctd+TL8rJ0htnK9Foq61i8FJl2cUqvU/OKtfD3W9gO
 wTzZC1bZJItZCreb4T7Kj2t3hBhO5dkG+UgbovfOgk9tJXvgNbio66ZGJqKDtU92
 ubIAJxFERACERT9g6gtAdBa2BEofG/zI2ei8HqkKP/7u51XXtRNzVCYXyHM8TydL
 M03U6snZNJkkj+UM8Wzrg9mxkheAOSyo0nLK58Lje2I4CjV5WToCZUICqm7z7l36
 GoBnDXaRacmb0gIco9sGMo5K7jNqQ/6U1JVJRAb+NNM16fp0mKOboZ8SLKI9oT6g
 9UXiylzzz0buvNzzTu7HF8JRNQvxBnLKC+nE/ekWQm6uhsmJ9DkrMBnxn5fyZ1iL
 5uFXcaVDagVQCdHOfYntQzKEGsoPwg0KQJbjoM+T3tkQX5NcWVP+06uYLWqRxgk5
 jTn98JXK+2w4yYdhCKr8U71mBoWwoYwOZiEnZlL+P+52gZUoWDgA65BGnoqYk2cW
 2KsfB+EM3ggye6a4X/gVVuCR8bYO5+YIUyoBWLRKd51xw0Mr99KUc+ugTmCKGZpW
 31p/NhgdvfOK9qLRhEVH9zDT24Jqo1tRF2NgtJrFufMcYbdNbB8BA22aDLoTbE0m
 Kru1n0WaaU4vBIbm
 =0+lj
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmOHYjwACgkQmmx57+YA
 GNn21Q/7B5vrpo21COOlybRqhhAJYKo1kouED1EW4Fh1qQ0PejkDEU9CZYuvTNyw
 l0sFewhdpV9cEhSDm6nuk+wcs15r3tBp9fWWWBMbLLi+MohO0rY3Wi7ZIZDbK9N8
 B1UqkCASqLRYbny6kT0JztlhdEAHlEJ2Bc63pHhVYdj74xyLm+ByIgGV0o0fWhNM
 dUtJwz+W+uYMg/5OFj/UMLBvXFdDzz/LmYKS8UYP0sxmhOUJd1yTqxyqCxECWe6z
 OgGeB+2bQ297OyWdQjZk6tucZcjpP0y6qtL1PQaDtfqMVXsaDKNqa+C1eTvTEQWT
 tzOuWq4I5z7+vEe3JlKwHFmeblvD5FhNqUzyJabxXbTpe7m7sLbyeJdYaXXd6lmk
 0hBAJdSNNqAoIMMXUWwDxzaTDzKq648fteP0VZIC2B24iSRz6tt2FhLi6X1Lh0Tj
 LDHsbHvQIY3cFmYqIbgRt+lMxyy+pZWRuZFhMeIrNE1T4OQn2X3l5DlGAjUw2i51
 KXWUHeUSWWE39FyV/V72BDIPM/kGrESdJACko989ZinKdvKSyyz9Tl4qKsYUWAFH
 XZf3BvvsP20WKLvF79n500RBOh0J2uhTGTv6zphXXj5nRvv6NFiS1C+MWwaVnO4L
 HABmamTgb/rkP36J7nOD3iBQxuYG4i/hDLG66Zibhf9gqUDAWV4=
 =c209
 -----END PGP SIGNATURE-----

Merge tag 'qcom-arm64-for-6.2' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into soc/dt

Qualcomm ARM64 DTS updates for 6.2

This introduces support for SM4250, SM6115, SM6375 and SDM670 platforms
and Sony Xperia 10 IV, Google Pixel 3a, OnePlus 3, OnePlus 3T, Google
Pazquel and OnePlus Nord N100.

A wide variety of updates to align with DeviceTree bindings across
many/most platforms is introduced, and incorrectly styled comments are
adjusted across the tree.

Apps RSC is added to the cluster-idle power-domain across SM8150,
SM8250, SM8350 and SM8450, to ensure sleep and wake votes are flushed as
the last core is being powered down.

Remoteproc firmware patches are aligned with agreed upon structure used
in linux-firmware across Inforce 6560, Lenovo Miix 630, various Sony
Xperia devices and Samsung Galaxy Book2 (although these are not
available in linux-firmware today).

On IPQ8074 CPU clocks are added, thermal zones are introduced and vqmmc
supply is specified for the HK01 board.

Alcatel OneTouch Idol 3 gains LED nodes and Samsung Galaxy A3U gained
vibrator support.

The application subsystem's IOMMU and the display subsystem is enabled
for MSM8953.

A new CPU frequency table is introduced for MSM8996Pro, to properly
describe it separate of MSM8996. The GPU opp-table is extended as well.

On SC7180 USB is marked as a wakeup source, USB gains required-opps to
ensure that the core voltage rail is voted for as needed. The
description of the fingerprint sensor in Trogdor is corrected.

On SC7280 Wake-on-WLAN is introduced, and PHY parameters for the SNPS
USB PHY is defined across SC7280.

The memory map across Google Herobrine is adjusted, to regain unused
memory on the WiFi SKUs.  A LTE SKU of the Evoker board is introduced
and the bard gains touchscreen.
NVME support is disabled on Villager boards, as it's not used.

PCIe support is introduced on SC8280XP, with NVMe, SDX55 (5G) and WiFi
enabled on the Lenovo Thinkpad X13s and Compute Reference Device. ADCs
and thermal zones are intrduced for the same. Lenovo Thinkpad X13s
gains LID switch support.

Fairphone FP3 gains touchscreen support.

Support for Xiaomi Poco F1 variant with EBBG panel.

The round-robin ADC is enabled across DB845c, OnePlus devices and
Pocophone F1 devices.

The displayport controller on SDM845 is introduced.

SM6350 gains SDHCI support and on Sony Xperia 10 III sd-card,
touchscreen and GPI DMA is enabled.

Fairphone FP4 got SD-card support.

UFS PHY register ranges are corrected across SM8150, SM8250, SM8350 and
SM8450.

Sony Xperia 1 II got NFC support and Sony Xperia 5 III got PMIC
regulators defined and USB definition corrected, to enable USB3.

The SDHCI controller is described for SM8450 and microSD support is
enabled for the HDK and QRD devices.

SM8450 also gains camera CCI interface and display clock controller.

* tag 'qcom-arm64-for-6.2' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux: (261 commits)
  arm64: dts: qcom: sdm845-polaris: Don't duplicate DMA assignment
  arm64: dts: qcom: sm8350-sagami: Wire up USB regulators and fix USB3
  arm64: dts: qcom: sm8350-sagami: Add most RPMh regulators
  arm64: dts: qcom: sc7280: Make herobrine-audio-rt5682 mic dtsi's match more
  arm64: dts: qcom: trim addresses to 8 digits
  arm64: dts: msm8998: unify PCIe clock order withMSM8996
  arm64: dts: msm8998: add MSM8998 specific compatible
  arm64: dts: qcom: sc8280xp-x13s: enable WiFi controller
  arm64: dts: qcom: sc8280xp-x13s: enable modem
  arm64: dts: qcom: sc8280xp-x13s: enable NVMe SSD
  arm64: dts: qcom: sc8280xp-crd: enable WiFi controller
  arm64: dts: qcom: sc8280xp-crd: enable SDX55 modem
  arm64: dts: qcom: sc8280xp-crd: enable NVMe SSD
  arm64: dts: qcom: sc8280xp-crd: rename backlight and misc regulators
  arm64: dts: qcom: sa8295p-adp: enable PCIe
  arm64: dts: qcom: sc8280xp/sa8540p: add PCIe2-4 nodes
  arm64: dts: qcom: add sdm670 and pixel 3a device trees
  arm64: dts: qcom: sc7280: Add Google Herobrine WIFI SKU dts fragment
  arm64: dts: qcom: sc7280: Mark all Qualcomm reference boards as LTE
  arm64: dts: qcom: sm7225-fairphone-fp4: Enable SD card
  ...

Link: https://lore.kernel.org/r/20221124100650.1982448-1-andersson@kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2022-11-30 15:01:31 +01:00
Yang Yingliang
9049e1ca41 genirq/irqdesc: Don't try to remove non-existing sysfs files
Fault injection tests trigger warnings like this:

  kernfs: can not remove 'chip_name', no directory
  WARNING: CPU: 0 PID: 253 at fs/kernfs/dir.c:1616 kernfs_remove_by_name_ns+0xce/0xe0
  RIP: 0010:kernfs_remove_by_name_ns+0xce/0xe0
  Call Trace:
   <TASK>
   remove_files.isra.1+0x3f/0xb0
   sysfs_remove_group+0x68/0xe0
   sysfs_remove_groups+0x41/0x70
   __kobject_del+0x45/0xc0
   kobject_del+0x29/0x40
   free_desc+0x42/0x70
   irq_free_descs+0x5e/0x90

The reason is that the interrupt descriptor sysfs handling does not roll
back on a failing kobject_add() during allocation. If the descriptor is
freed later on, kobject_del() is invoked with a not added kobject resulting
in the above warnings.

A proper rollback in case of a kobject_add() failure would be the straight
forward solution. But this is not possible due to the way how interrupt
descriptor sysfs handling works.

Interrupt descriptors are allocated before sysfs becomes available. So the
sysfs files for the early allocated descriptors are added later in the boot
process. At this point there can be nothing useful done about a failing
kobject_add(). For consistency the interrupt descriptor allocation always
treats kobject_add() failures as non-critical and just emits a warning.

To solve this problem, keep track in the interrupt descriptor whether
kobject_add() was successful or not and make the invocation of
kobject_del() conditional on that.

[ tglx: Massage changelog, comments and use a state bit. ]

Fixes: ecb3f394c5 ("genirq: Expose interrupt information through sysfs")
Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://lore.kernel.org/r/20221128151612.1786122-1-yangyingliang@huawei.com
2022-11-30 14:52:11 +01:00
Caleb Sander
899d2a05dc nvme: fix SRCU protection of nvme_ns_head list
Walking the nvme_ns_head siblings list is protected by the head's srcu
in nvme_ns_head_submit_bio() but not nvme_mpath_revalidate_paths().
Removing namespaces from the list also fails to synchronize the srcu.
Concurrent scan work can therefore cause use-after-frees.

Hold the head's srcu lock in nvme_mpath_revalidate_paths() and
synchronize with the srcu, not the global RCU, in nvme_ns_remove().

Observed the following panic when making NVMe/RDMA connections
with native multipath on the Rocky Linux 8.6 kernel
(it seems the upstream kernel has the same race condition).
Disassembly shows the faulting instruction is cmp 0x50(%rdx),%rcx;
computing capacity != get_capacity(ns->disk).
Address 0x50 is dereferenced because ns->disk is NULL.
The NULL disk appears to be the result of concurrent scan work
freeing the namespace (note the log line in the middle of the panic).

[37314.206036] BUG: unable to handle kernel NULL pointer dereference at 0000000000000050
[37314.206036] nvme0n3: detected capacity change from 0 to 11811160064
[37314.299753] PGD 0 P4D 0
[37314.299756] Oops: 0000 [#1] SMP PTI
[37314.299759] CPU: 29 PID: 322046 Comm: kworker/u98:3 Kdump: loaded Tainted: G        W      X --------- -  - 4.18.0-372.32.1.el8test86.x86_64 #1
[37314.299762] Hardware name: Dell Inc. PowerEdge R720/0JP31P, BIOS 2.7.0 05/23/2018
[37314.299763] Workqueue: nvme-wq nvme_scan_work [nvme_core]
[37314.299783] RIP: 0010:nvme_mpath_revalidate_paths+0x26/0xb0 [nvme_core]
[37314.299790] Code: 1f 44 00 00 66 66 66 66 90 55 53 48 8b 5f 50 48 8b 83 c8 c9 00 00 48 8b 13 48 8b 48 50 48 39 d3 74 20 48 8d 42 d0 48 8b 50 20 <48> 3b 4a 50 74 05 f0 80 60 70 ef 48 8b 50 30 48 8d 42 d0 48 39 d3
[37315.058803] RSP: 0018:ffffabe28f913d10 EFLAGS: 00010202
[37315.121316] RAX: ffff927a077da800 RBX: ffff92991dd70000 RCX: 0000000001600000
[37315.206704] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff92991b719800
[37315.292106] RBP: ffff929a6b70c000 R08: 000000010234cd4a R09: c0000000ffff7fff
[37315.377501] R10: 0000000000000001 R11: ffffabe28f913a30 R12: 0000000000000000
[37315.462889] R13: ffff92992716600c R14: ffff929964e6e030 R15: ffff92991dd70000
[37315.548286] FS:  0000000000000000(0000) GS:ffff92b87fb80000(0000) knlGS:0000000000000000
[37315.645111] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[37315.713871] CR2: 0000000000000050 CR3: 0000002208810006 CR4: 00000000000606e0
[37315.799267] Call Trace:
[37315.828515]  nvme_update_ns_info+0x1ac/0x250 [nvme_core]
[37315.892075]  nvme_validate_or_alloc_ns+0x2ff/0xa00 [nvme_core]
[37315.961871]  ? __blk_mq_free_request+0x6b/0x90
[37316.015021]  nvme_scan_work+0x151/0x240 [nvme_core]
[37316.073371]  process_one_work+0x1a7/0x360
[37316.121318]  ? create_worker+0x1a0/0x1a0
[37316.168227]  worker_thread+0x30/0x390
[37316.212024]  ? create_worker+0x1a0/0x1a0
[37316.258939]  kthread+0x10a/0x120
[37316.297557]  ? set_kthread_struct+0x50/0x50
[37316.347590]  ret_from_fork+0x35/0x40
[37316.390360] Modules linked in: nvme_rdma nvme_tcp(X) nvme_fabrics nvme_core netconsole iscsi_tcp libiscsi_tcp dm_queue_length dm_service_time nf_conntrack_netlink br_netfilter bridge stp llc overlay nft_chain_nat ipt_MASQUERADE nf_nat xt_addrtype xt_CT nft_counter xt_state xt_conntrack nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 xt_comment xt_multiport nft_compat nf_tables libcrc32c nfnetlink dm_multipath tg3 rpcrdma sunrpc rdma_ucm ib_srpt ib_isert iscsi_target_mod target_core_mod ib_iser libiscsi scsi_transport_iscsi ib_umad rdma_cm ib_ipoib iw_cm ib_cm intel_rapl_msr iTCO_wdt iTCO_vendor_support dcdbas intel_rapl_common sb_edac x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel ipmi_ssif kvm irqbypass crct10dif_pclmul crc32_pclmul mlx5_ib ghash_clmulni_intel ib_uverbs rapl intel_cstate intel_uncore ib_core ipmi_si joydev mei_me pcspkr ipmi_devintf mei lpc_ich wmi ipmi_msghandler acpi_power_meter ext4 mbcache jbd2 sd_mod t10_pi sg mgag200 mlx5_core drm_kms_helper syscopyarea
[37316.390419]  sysfillrect ahci sysimgblt fb_sys_fops libahci drm crc32c_intel libata mlxfw pci_hyperv_intf tls i2c_algo_bit psample dm_mirror dm_region_hash dm_log dm_mod fuse [last unloaded: nvme_core]
[37317.645908] CR2: 0000000000000050

Fixes: e7d65803e2 ("nvme-multipath: revalidate paths during rescan")
Signed-off-by: Caleb Sander <csander@purestorage.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
2022-11-30 14:37:46 +01:00
Lei Rao
a56ea6147f nvme-pci: clear the prp2 field when not used
If the prp2 field is not filled in nvme_setup_prp_simple(), the prp2
field is garbage data. According to nvme spec, the prp2 is reserved if
the data transfer does not cross a memory page boundary, so clear it to
zero if it is not used.

Signed-off-by: Lei Rao <lei.rao@intel.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
2022-11-30 14:34:17 +01:00
Pablo Neira Ayuso
1feeae0715 netfilter: ctnetlink: fix compilation warning after data race fixes in ct mark
All warnings (new ones prefixed by >>):

   net/netfilter/nf_conntrack_netlink.c: In function '__ctnetlink_glue_build':
>> net/netfilter/nf_conntrack_netlink.c:2674:13: warning: unused variable 'mark' [-Wunused-variable]
    2674 |         u32 mark;
         |             ^~~~

Fixes: 52d1aa8b82 ("netfilter: conntrack: Fix data-races around ct mark")
Reported-by: kernel test robot <lkp@intel.com>
Tested-by: Ivan Babrou <ivan@ivan.computer>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
2022-11-30 13:08:49 +01:00
Xin Long
9464d0b68f netfilter: conntrack: fix using __this_cpu_add in preemptible
Currently in nf_conntrack_hash_check_insert(), when it fails in
nf_ct_ext_valid_pre/post(), NF_CT_STAT_INC() will be called in the
preemptible context, a call trace can be triggered:

   BUG: using __this_cpu_add() in preemptible [00000000] code: conntrack/1636
   caller is nf_conntrack_hash_check_insert+0x45/0x430 [nf_conntrack]
   Call Trace:
    <TASK>
    dump_stack_lvl+0x33/0x46
    check_preemption_disabled+0xc3/0xf0
    nf_conntrack_hash_check_insert+0x45/0x430 [nf_conntrack]
    ctnetlink_create_conntrack+0x3cd/0x4e0 [nf_conntrack_netlink]
    ctnetlink_new_conntrack+0x1c0/0x450 [nf_conntrack_netlink]
    nfnetlink_rcv_msg+0x277/0x2f0 [nfnetlink]
    netlink_rcv_skb+0x50/0x100
    nfnetlink_rcv+0x65/0x144 [nfnetlink]
    netlink_unicast+0x1ae/0x290
    netlink_sendmsg+0x257/0x4f0
    sock_sendmsg+0x5f/0x70

This patch is to fix it by changing to use NF_CT_STAT_INC_ATOMIC() for
nf_ct_ext_valid_pre/post() check in nf_conntrack_hash_check_insert(),
as well as nf_ct_ext_valid_post() in __nf_conntrack_confirm().

Note that nf_ct_ext_valid_pre() check in __nf_conntrack_confirm() is
safe to use NF_CT_STAT_INC(), as it's under local_bh_disable().

Fixes: c56716c69c ("netfilter: extensions: introduce extension genid count")
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
2022-11-30 13:08:49 +01:00
Stephen Rothwell
50dc8d18f6 driver core: fix up missed drivers/s390/char/hmcdrv_dev.c class.devnode() conversion.
Fixes: ff62b8e658 ("driver core: make struct class.devnode() take a const *")
Link: https://lore.kernel.org/r/20221130123851.6a9f2242@canb.auug.org.au
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-11-30 13:01:33 +01:00
Stephen Rothwell
69b14fde0b driver core: fix up missed scsi/cxlflash class.devnode() conversion.
Fixes: ff62b8e658 ("driver core: make struct class.devnode() take a const *")
Link: https://lore.kernel.org/r/20221130123851.6a9f2242@canb.auug.org.au
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-11-30 13:00:29 +01:00
Artem Lukyanov
c1dd6bf619
ASoC: amd: yc: Add Xiaomi Redmi Book Pro 14 2022 into DMI table
This model requires an additional detection quirk to enable the
internal microphone - BIOS doesn't seem to support AcpDmicConnected
(nothing in acpidump output).

Signed-off-by: Artem Lukyanov <dukzcry@ya.ru>
Link: https://lore.kernel.org/r/20221130085247.85126-1-dukzcry@ya.ru
Signed-off-by: Mark Brown <broonie@kernel.org>
2022-11-30 11:36:18 +00:00
Ricardo Ribalda
e063330a77
ASoC: SOF: mediatek: add shutdown callback
If we do not shutdown the peripheral properly at shutdown, the whole system
crashes after kexec() on the first io access.

Let's implement the appropriate callback.

Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://lore.kernel.org/r/20221127-mtk-snd-v1-0-b7886faa612b@chromium.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2022-11-30 11:35:43 +00:00
Johan Hovold
63b8ed26cd USB: serial: xr: avoid requesting zero DTE rate
When the requested line speed is B0 (hangup) there is no need to use the
current speed in the line-coding request. This specifically avoids
requesting a zero DTE rate when the current speed is B0, which could
potentially confuse buggy firmware.

Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Johan Hovold <johan@kernel.org>
2022-11-30 12:28:51 +01:00
Johan Hovold
188c9c2e0c USB: serial: f81534: fix division by zero on line-speed change
The driver leaves the line speed unchanged in case a requested speed is
not supported. Make sure to handle the case where the current speed is
B0 (hangup) without dividing by zero when determining the clock source.

Fixes: 3aacac02f3 ("USB: serial: f81534: add high baud rate support")
Cc: stable@vger.kernel.org      # 4.16
Cc: Ji-Ze Hong (Peter Hong) <hpeter@gmail.com>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Johan Hovold <johan@kernel.org>
2022-11-30 12:27:59 +01:00
Johan Hovold
a08ca6ebaf USB: serial: f81232: fix division by zero on line-speed change
The driver leaves the line speed unchanged in case a requested speed is
not supported. Make sure to handle the case where the current speed is
B0 (hangup) without dividing by zero when determining the clock source.

Fixes: 268ddb5e9b ("USB: serial: f81232: add high baud rate support")
Cc: stable@vger.kernel.org      # 5.2
Cc: Ji-Ze Hong (Peter Hong) <hpeter@gmail.com>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Johan Hovold <johan@kernel.org>
2022-11-30 12:27:44 +01:00