This is the 4.14.353 OpenELA-Extended LTS stable release

-----BEGIN PGP SIGNATURE-----
 
 iQJNBAABCAA3FiEERFwmR4yFob14UDOYC8702P6YulgFAmcHrG8ZHHZlZ2FyZC5u
 b3NzdW1Ab3JhY2xlLmNvbQAKCRALzvTY/pi6WIQuEACCYf9xCGBALlKFb0pXX3eF
 oiRkceNyy5NWSndD7t9p/3d2g4YrVptGxtTZN12IltfG4wfCQ+qC/0g2Mu4ho0Yp
 2ExKVaIli1t2csIjXCUUyjh3jU0JOkDwJap9n5QemACsX8zrDfKVwdlj9hw+e7vi
 fBWwdfl1duK5cfVbbyvL74It4WeMnjuAYrBnMTxhYBTq56xFLrbBILl8BLxAV5NN
 5wGoNCeUtj8LxUrL2qs5QoT3Bf7uoDlLnu1Ly7jDMMX34/oNh5huOjZdDFbQYxS3
 DsEe6ljOYOyB/awdUhScERfxVPimumN3nHWnRJbsQhX36uXT6U7HNJah4zauchRk
 UlKUSfG3YyOqKIwFH+8oGmkuCm6wZbVjVsNNkYhT804BCCHrasJ1SHXsSB9R0MpU
 x3IQOoiuc33bUYrSqWAO7utvt+PwG++3GHz0XQwPfZn4DHY18/e+VNsGtQTPqzRG
 tsywZVTN0DC0nO7L772nkQDb7z2mhmJGgN8q3FPbMTfp/I1phIh9C17pckfpHKAl
 ippTmTMaIYDU3Rlc1g/cu363GOaXWRN4t03VSEu/BLV0IElRktUnmuBU3B/rMb+F
 ItaBmhnZGXHUrulMTxDtzItrYMwx00USw6IrG3iYjob0MhhxhLVxEh0vKc7Te2w5
 2FZEjj2BxinK66mJgAolZw==
 =BQd/
 -----END PGP SIGNATURE-----

Merge tag 'v4.14.353-openela' of https://github.com/openela/kernel-lts

This is the 4.14.353 OpenELA-Extended LTS stable release

* tag 'v4.14.353-openela' of https://github.com/openela/kernel-lts: (173 commits)
  LTS: Update to 4.14.353
  net: fix __dst_negative_advice() race
  selftests: make order checking verbose in msg_zerocopy selftest
  selftests: fix OOM in msg_zerocopy selftest
  Revert "selftests/net: reap zerocopy completions passed up as ancillary data."
  Revert "selftests: fix OOM in msg_zerocopy selftest"
  Revert "selftests: make order checking verbose in msg_zerocopy selftest"
  nvme/pci: Add APST quirk for Lenovo N60z laptop
  exec: Fix ToCToU between perm check and set-uid/gid usage
  drm/i915/gem: Fix Virtual Memory mapping boundaries calculation
  drm/i915: Try GGTT mmapping whole object as partial
  netfilter: nf_tables: set element extended ACK reporting support
  kbuild: Fix '-S -c' in x86 stack protector scripts
  drm/mgag200: Set DDC timeout in milliseconds
  drm/bridge: analogix_dp: properly handle zero sized AUX transactions
  drm/bridge: analogix_dp: Properly log AUX CH errors
  drm/bridge: analogix_dp: Reset aux channel if an error occurred
  drm/bridge: analogix_dp: Check AUX_EN status when doing AUX transfer
  x86/mtrr: Check if fixed MTRRs exist before saving them
  tracing: Fix overflow in get_free_elt()
  ...

Change-Id: I0e92a979e31d4fa6c526c6b70a1b61711d9747bb
Signed-off-by: Richard Raya <rdxzv.dev@gmail.com>
This commit is contained in:
Richard Raya 2024-10-11 00:50:20 -03:00
commit 1b9f971175
170 changed files with 3013 additions and 1024 deletions

View File

@ -1,5 +1,5 @@
upstream_repo: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
upstream_base: 4.19.304
base: 4.14.336
upstream_version: 4.19.319
version: 4.14.352
upstream_version: 4.19.320
version: 4.14.353

661
.elts/meta/4.14.353.yaml Normal file
View File

@ -0,0 +1,661 @@
dd6caa8da1ace4e2e4f02eb5284addebf4c5c2bb:
title: 'platform/chrome: cros_ec_debugfs: fix wrong EC message version'
mainline: c2a28647bbb4e0894e8824362410f72b06ac57a4
upstream: c0e53e36452d1b2a3ec71bf0586251245a5686c0
78659ded3dbb7237c1582e91776e86a6b3247515:
title: 'x86/of: Return consistent error type from x86_of_pci_irq_enable()'
mainline: ec0b4c4d45cf7cf9a6c9626a494a89cb1ae7c645
upstream: 56d64c36b2aac95c9c24e303fb746591ecfa096a
5f1342ecebaf8161a43bcc1b8958c280452c8171:
title: 'x86/pci/intel_mid_pci: Fix PCIBIOS_* return code handling'
mainline: 724852059e97c48557151b3aa4af424614819752
upstream: 600a520cc4e661aa712415e4a733924e9d22777d
125df213ac935a71782e5c091206853ff9cb5556:
title: 'x86/pci/xen: Fix PCIBIOS_* return code handling'
mainline: e9d7b435dfaec58432f4106aaa632bf39f52ce9f
upstream: 5294b91618250c7719e4c85096cafe8f76a1bc20
21be2282360c7df8b2535f9c2883674234dc7de2:
title: 'x86/platform/iosf_mbi: Convert PCIBIOS_* return codes to errnos'
mainline: 7821fa101eab529521aa4b724bf708149d70820c
upstream: 3f4f08e59ddf359da5bc4226ba865a59177a3a50
1dd63dd3a8a7617a90bc1a9068fedb6adf5f5aac:
title: 'hwmon: (adt7475) Fix default duty on fan is disabled'
mainline: 39b24cced70fdc336dbc0070f8b3bde61d8513a8
upstream: d9c01877d4ba1e39bbdc43faeeceeef2768be8e7
25d404099dccdfe51abb9f810a864ced8b9d912b:
title: 'pwm: stm32: Always do lazy disabling'
mainline: 7346e7a058a2c9aa9ff1cc699c7bf18a402d9f84
upstream: 383729f057245972e13fb0708c5ec7dd985fc50d
42cc04b6ae182a372082afc1c28d67f92fed5c29:
title: 'hwmon: (max6697) Fix underflow when writing limit attributes'
mainline: cbf7467828cd4ec7ceac7a8b5b5ddb2f69f07b0e
upstream: 21998f2c68edd4a7922875f34b39ce2bb78fabc0
625dffc4eaba4191520fb296a0e55743836bab4b:
title: 'hwmon: Introduce SENSOR_DEVICE_ATTR_{RO, RW, WO} and variants'
mainline: a5c47c0d388b939dd578fd466aa804b7f2445390
upstream: eb04482acd9870b84970fe1549203fedc1bbcc79
64785dce17bc282c55ed7f21c3fbc4391cdb1ab0:
title: 'hwmon: (max6697) Auto-convert to use SENSOR_DEVICE_ATTR_{RO, RW, WO}'
mainline: 740c2f2b86a71ad673f329241ac25cfe647aacd4
upstream: 7a72d79eef89ce242e08edb18f64106374117295
cb9e33d36836000d9a79d3b0121beee91c3323b9:
title: 'hwmon: (max6697) Fix swapped temp{1,8} critical alarms'
mainline: 1ea3fd1eb9869fcdcbc9c68f9728bfc47b9503f1
upstream: 6b52603ed8bdcceb9b8c16d2db7abd19e024fbe2
c731a44f2487b720039473b6255fba3ad26d7753:
title: 'arm64: dts: rockchip: Increase VOP clk rate on RK3328'
mainline: 0f2ddb128fa20f8441d903285632f2c69e90fae1
upstream: 513fff3e8574d3c5b54ef71b6514cda12123879e
266d74e904f119b2251094862e9f7d56c3fb74fe:
title: 'm68k: atari: Fix TT bootup freeze / unexpected (SCU) interrupt messages'
mainline: f70065a9fd988983b2c693631b801f25a615fc04
upstream: b6c2b179b6908e439b2385c25d7b3477e4be4dce
0d26a6a5f0bb7e82bfebf44b060294eec5a72b73:
title: 'x86/xen: Convert comma to semicolon'
mainline: 349d271416c61f82b853336509b1d0dc04c1fcbb
upstream: cb9ad82cf270ce5bdcf5e768af48966833cc3caa
8bc40077dd7c321cc45107a639c176d317892413:
title: 'm68k: cmpxchg: Fix return value for default case in __arch_xchg()'
mainline: 21b9e722ad28c19c2bc83f18f540b3dbd89bf762
upstream: 8c43fbd39500ce7bdc779a772752cc2b436a692c
5fa524af8685b00160e9e766bbe196804a007844:
title: 'wifi: brcmsmac: LCN PHY code is used for BCM4313 2G-only device'
mainline: c636fa85feb450ca414a10010ed05361a73c93a6
upstream: f33757e8db8f33aba783b88120245ec53e5fa88a
1a85ab4b601786019135c37ec3f11927ba4a561d:
title: 'net: fec: Refactor: #define magic constants'
mainline: ff049886671ccd4e624a30ec464cb20e4c39a313
upstream: b072c604d58b1cd1079c4e2f0d22b1f469dda347
c3996b8fae20c268b6c49e70ea078bceb96d0c27:
title: 'net: fec: Fix FEC_ECR_EN1588 being cleared on link-down'
mainline: c32fe1986f27cac329767d3497986e306cad1d5e
upstream: 18074367ad100e129d0dccdaa64af6642363680b
2a3559125bd5fc024c30b1655b626abc0c2fa3eb:
title: 'ipvs: Avoid unnecessary calls to skb_is_gso_sctp'
mainline: 53796b03295cf7ab1fc8600016fa6dfbf4a494a0
upstream: 9340804ea465de0509a9afaeaaccf3fb74b14f9b
6f7bc617b3b66436641dba5329718933aea4b889:
title: 'perf: Fix perf_aux_size() for greater-than 32-bit size'
mainline: 3df94a5b1078dfe2b0c03f027d018800faf44c82
upstream: 542abbf58e88f34dfc659b63476a5976acf52c0e
26864f03cc21aaa1b9f2dbed5c8ad7bf676f2df4:
title: 'perf: Prevent passing zero nr_pages to rb_alloc_aux()'
mainline: dbc48c8f41c208082cfa95e973560134489e3309
upstream: d7b1a76f33e6fc93924725b4410126740c890c44
be35c98c5aa383407f62428c4169a79d5c243c26:
title: 'bna: adjust ''name'' buf size of bna_tcb and bna_ccb structures'
mainline: c9741a03dc8e491e57b95fba0058ab46b7e506da
upstream: f121740f69eda4da2de9a20a6687a13593e72540
ce58b8f17bfc9cfad7fafb57ebb626850d4802ba:
title: 'media: imon: Fix race getting ictx->lock'
mainline: 24147897507cd3a7d63745d1518a638bf4132238
upstream: 01b44d9e50a68ac3c645cc98a474455668dc8e70
e0b07e242c61e819acf0143bb2c23d4859b135db:
title: 'saa7134: Unchecked i2c_transfer function result fixed'
mainline: 9d8683b3fd93f0e378f24dc3d9604e5d7d3e0a17
upstream: 001583ad640c70987efd5af70566a69f146dc99c
0ae6e736f858e4c42ecf27fd1e8ecae18988ad81:
title: 'media: v4l: vsp1: Store pipeline pointer in vsp1_entity'
f0a224ecf4ca80033edee705bd34405dae4ea20a:
title: 'media: renesas: vsp1: Fix _irqsave and _irq mix'
mainline: 57edbbcf5258c378a9b9d0c80d33b03a010b22c8
upstream: ab1325f1074da2cfa1259417fb6c93a0886e74c8
49db8c90eba2da9ddc6f9a203a6d20984d1658a7:
title: 'media: renesas: vsp1: Store RPF partition configuration per RPF instance'
mainline: a213bc09b1025c771ee722ee341af1d84375db8a
upstream: ae16866626ecae26a7317e0372224d5480211ff7
39632d1c383813e9ddb20088f6e9a3b44ee70569:
title: 'perf report: Fix condition in sort__sym_cmp()'
mainline: cb39d05e67dc24985ff9f5150e71040fa4d60ab8
upstream: 2e6abffcb52a36c89c0a70499b86e0a99df15d1e
fa7e07d7ebb21ec8b937faeb3254a608c4d2eea2:
title: 'drm/etnaviv: fix DMA direction handling for cached RW buffers'
mainline: 58979ad6330a70450ed78837be3095107d022ea9
upstream: c7c74c8256206ffc27212ada1f998f5a05b8c54f
5e8bf661518b825696c6ee219e62292e6bc8df93:
title: 'ext4: avoid writing unitialized memory to disk in EA inodes'
mainline: 65121eff3e4c8c90f8126debf3c369228691c591
upstream: 282e8d4e9d33182a5ca25fe6333beafdc5282946
0549d286c615b284448fa4d449c322f3ae2aa55f:
title: 'sparc64: Fix incorrect function signature and add prototype for prom_cif_init'
mainline: a6c3ea1ec96307dbfbb2f16d96c674c5cc80f445
upstream: 6b4f676006a390edffd6a00f2ebc23276dd05031
02a0104454d95405c65536870fdc426e8663512d:
title: 'PCI: Equalize hotplug memory and io for occupied and empty slots'
mainline: de3ffa301142bf8802a7b0de17f9985acde5c223
upstream: 0012438a122c56d727712169df42fd0e297a42b0
0a5d6964e9374945dfef1227972e8cc1a2a6d5ef:
title: 'PCI: Fix resource double counting on remove & rescan'
mainline: 903534fa7d30214d8ba840ab1cd9e917e0c88e41
upstream: 2044071c6e42d041e3656bad105be5879f6b70f1
8e50a9f8175582f34a709024496217f3fca864e5:
title: 'RDMA/mlx4: Fix truncated output warning in mad.c'
mainline: 0d2e6992fc956e3308cd5376c18567def4cb3967
upstream: c4eaaf28068a99d8363bf02a20a32bf207be13e1
e9d4656f8f0c014de2ffcf8d4903c4630c43c72b:
title: 'RDMA/mlx4: Fix truncated output warning in alias_GUID.c'
mainline: 5953e0647cec703ef436ead37fed48943507b433
upstream: 087abc7e244700f741c0431af59b28e910a82dc1
117e5c14bbbb75364fabcb7d2e70e19167efc931:
title: 'RDMA/rxe: Don''t set BTH_ACK_MASK for UC or UD QPs'
mainline: 4adcaf969d77d3d3aa3871bbadc196258a38aec6
upstream: 796c0f32fc956b88c345195472e2d74823be0d03
550d6bbd2dedbc88697932ddbe5f930b20a4d7c1:
title: 'mtd: make mtd_test.c a separate module'
mainline: a5cf054d325e6f362e82fe6d124a1871a4af8174
upstream: 17b016971c27ee1e884da3ce502801cb95f84ff1
e547f41337badd93753b4fe3ae3817ed8400abd6:
title: 'Input: elan_i2c - do not leave interrupt disabled on suspend failure'
mainline: 5f82c1e04721e7cd98e604eb4e58f0724d8e5a65
upstream: 2ee59e846895b6b061defbc6cde83126f91b7abd
fd5b433d1390c5586bc367f3e10fbb226ad9e2ac:
title: 'MIPS: Octeron: remove source file executable bit'
mainline: 89c7f5078935872cf47a713a645affb5037be694
upstream: 12bc3aca7d100a8f749c2a6fcdb6be08ad41c105
971a6101e844da8bcbdd4bd046a826c6cc44d861:
title: 'powerpc/xmon: Fix disassembly CPU feature checks'
mainline: 14196e47c5ffe32af7ed5a51c9e421c5ea5bccce
upstream: 5b84d47a0baee13434fadb3b9506c39f51f9ab98
20b6b7a306d9487bb507af81df8e926b8141d902:
title: 'macintosh/therm_windtunnel: fix module unload.'
mainline: fd748e177194ebcbbaf98df75152a30e08230cc6
upstream: eeb9a0f79d8e4ea27b4f85a73f3765dc0046ab01
4f51eb5763820de8cf9bc32b26b20d19f7ccfc5d:
title: 'bnxt_re: Fix imm_data endianness'
mainline: 95b087f87b780daafad1dbb2c84e81b729d5d33f
upstream: dfb40b2535b298b34b37780fe8eced6d38e28c5c
ccfb620ebf3085fca54472461544c796cbd7db5d:
title: 'netfilter: ctnetlink: use helper function to calculate expect ID'
mainline: 782161895eb4ac45cf7cfa8db375bd4766cb8299
upstream: 66e7650dbbb8e236e781c670b167edc81e771450
ee8bf45248bc530e2dc9a0a7f833febbe89fd2e1:
title: 'pinctrl: core: fix possible memory leak when pinctrl_enable() fails'
mainline: ae1cf4759972c5fe665ee4c5e0c29de66fe3cf4a
upstream: 636f8fe03a14b0994a3dbdc05c8fa8c8296c1357
fbd206c9e544f6e8fbb844534d05817ab6ed637a:
title: 'pinctrl: single: fix possible memory leak when pinctrl_enable() fails'
mainline: 8f773bfbdd428819328a2d185976cfc6ae811cd3
upstream: 9dad82c7c7424c240db65f10ad999266f2967479
9521c0b13c94c6ad389f9a5d7f8213891d8924a7:
title: 'pinctrl: ti: ti-iodelay: Drop if block with always false condition'
mainline: 88b3f108502bc45e6ebd005702add46759f3f45a
upstream: 268b3ff414ae8942af9d6c981b5df8667c2b76b6
78e3f7ec45416b8b0a25ef8fcbf85b653f49d5bb:
title: 'pinctrl: ti: ti-iodelay: fix possible memory leak when pinctrl_enable() fails'
mainline: 9b401f4a7170125365160c9af267a41ff6b39001
upstream: 7d720f351714dcbeb578af67bb7e66326504826c
251acaffa0bd813f67f7a92082bdbd101c395f4d:
title: 'pinctrl: freescale: mxs: Fix refcount of child'
mainline: 7f500f2011c0bbb6e1cacab74b4c99222e60248e
upstream: c90d81a6e1f3daab4c06f7f8aba346abc76ae07a
2891e08c6f20e3c7b4b09dac8e949a195b46ff8c:
title: 'fs/nilfs2: remove some unused macros to tame gcc'
mainline: e7920b3e9d9f5470d5ff7d883e72a47addc0a137
upstream: 175ac70d8af52bc0f5b100901702fdb2bc662885
440e5d6b0d782ee0786d780761f57a117c904288:
title: 'nilfs2: avoid undefined behavior in nilfs_cnt32_ge macro'
mainline: 0f3819e8c483771a59cf9d3190cd68a7a990083c
upstream: d2b9bc7dfd6b0fa1a37eb91e68bca3175cb5ef50
3065612975c688a1ea3f759a23856a4b9eefdc12:
title: 'tick/broadcast: Make takeover of broadcast hrtimer reliable'
mainline: f7d43dd206e7e18c182f200e67a8db8c209907fa
upstream: dfe19aa91378972f10530635ad83b2d77f481044
d5744057122276d5d9c9b33a8e567e963897d502:
title: 'net: netconsole: Disable target before netpoll cleanup'
mainline: 97d9fba9a812cada5484667a46e14a4c976ca330
upstream: 608a07143563a2a0d1edd57b2f4e95b0199fb497
6d8fa691e6733006d5c061a297fe601d126d748b:
title: 'af_packet: Handle outgoing VLAN packets without hardware offloading'
mainline: 79eecf631c14e7f4057186570ac20e2cfac3802e
upstream: 3dfd84aa72fa7329ed4a257c8f40e0c9aff4dc8f
f58439a91781f888dce8463243b4d83be380d21c:
title: 'ipv6: take care of scope when choosing the src addr'
mainline: abb9a68d2c64dd9b128ae1f2e635e4d805e7ce64
upstream: b4f67f09287392e0a2f7422199a193e37f2737af
058c66e9aa0cd80581ff06b9294521e05ea1d0dd:
title: 'media: venus: fix use after free in vdec_close'
mainline: a0157b5aa34eb43ec4c5510f9c260bbb03be937e
upstream: ad8cf035baf29467158e0550c7a42b7bb43d1db6
26722f11717342d8f7deeb0c23fa6814bc31a48c:
title: 'hfs: fix to initialize fields of hfs_inode_info after hfs_alloc_inode()'
mainline: 26a2ed107929a855155429b11e1293b83e6b2a8b
upstream: f7316b2b2f11cf0c6de917beee8d3de728be24db
d92238c8b1116bff1babca839d923d345128c202:
title: 'drm/gma500: fix null pointer dereference in cdv_intel_lvds_get_modes'
mainline: cb520c3f366c77e8d69e4e2e2781a8ce48d98e79
upstream: f392c36cebf4c1d6997a4cc2c0f205254acef42a
2c7d6f35aea17924ebb60002a151c8e4909cb226:
title: 'drm/gma500: fix null pointer dereference in psb_intel_lvds_get_modes'
mainline: 2df7aac81070987b0f052985856aa325a38debf6
upstream: 13b5f3ee94bdbdc4b5f40582aab62977905aedee
1ac49c559cf87bd78734f326ef6db4c2d876d804:
title: 'm68k: amiga: Turn off Warp1260 interrupts during boot'
mainline: 1d8491d3e726984343dd8c3cdbe2f2b47cfdd928
upstream: 296185ef87e6184e364bd9e7c983089b8e606a55
4ed99f550b6316ae9cfa1ffdb6c4f053631117e6:
title: 'ext4: check dot and dotdot of dx_root before making dir indexed'
mainline: 50ea741def587a64e08879ce6c6a30131f7111e7
upstream: b80575ffa98b5bb3a5d4d392bfe4c2e03e9557db
839f30000100e2b3fb252f1755c4434cad12da0c:
title: 'ext4: make sure the first directory block is not a hole'
mainline: f9ca51596bbfd0f9c386dd1c613c394c78d9e5e6
upstream: d81d7e347d1f1f48a5634607d39eb90c161c8afe
b9bb3e4e90d4b44dc0667e7e5e24a8c4cd9eb9f5:
title: 'wifi: mwifiex: Fix interface type change'
mainline: a17b9f590f6ec2b9f1b12b1db3bf1d181de6b272
upstream: 98cf9959a20dc374b7bba4b9357203e54484be58
4e71b875b885df71c21f8f1fa380064b59fdd414:
title: 'leds: ss4200: Convert PCIBIOS_* return codes to errnos'
mainline: ce068e83976140badb19c7f1307926b4b562fac4
upstream: db1871789f3018c5b0788318d3b1c685f2decceb
63576e19060aa3b515c02583870bde5d75260ed8:
title: 'hwrng: amd - Convert PCIBIOS_* return codes to errnos'
mainline: 14cba6ace79627a57fb9058582b03f0ed3832390
upstream: d48e11483e3eb8ade86c57f4145644725cd33eed
31754844f0fd1fbfd0a6fd857ec7021240b6d3a3:
title: 'PCI: hv: Return zero, not garbage, when reading PCI_INTERRUPT_PIN'
mainline: fea93a3e5d5e6a09eb153866d2ce60ea3287a70d
upstream: e9cafb31aa498558d6ff7b28baed894db7d801f3
080400d0031e6b30ae84fa1722d55cb6a3376f8c:
title: 'binder: fix hang of unregistered readers'
mainline: 31643d84b8c3d9c846aa0e20bc033e46c68c7e7d
upstream: 229670361c29381b0e1677763590e4dbc209ecbe
0900cd07eb9119e80a55a97784e8cc1ca6390402:
title: 'scsi: qla2xxx: Return ENOBUFS if sg_cnt is more than one for ELS cmds'
mainline: ce2065c4cc4f05635413f63f6dc038d7d4842e31
upstream: 5c9d1ac649469feaab4240c0c1b5920ea8649b50
24eb54283c4effe2b0c2d94401d19e0ff004e357:
title: 'f2fs: prevent newly created inode from being dirtied incorrectly'
27f9505abcdef5527ce43c5c21ecf89bc76f2278:
title: 'f2fs: fix to don''t dirty inode for readonly filesystem'
mainline: 192b8fb8d1c8ca3c87366ebbef599fa80bb626b8
upstream: 2d2916516577f2239b3377d9e8d12da5e6ccdfcf
e38af31723db1861d58b71410895872b72abc272:
title: 'ubi: eba: properly rollback inside self_check_eba'
mainline: 745d9f4a31defec731119ee8aad8ba9f2536dd9a
upstream: 29f2c831822fde87b78c73e5db6ecfb106473cff
a01900bb7d4f831a50f19c58b1b9e3c9aa9dd9d9:
title: 'decompress_bunzip2: fix rare decompression failure'
mainline: bf6acd5d16057d7accbbb1bf7dc6d8c56eeb4ecc
upstream: 16b92b031b4da174342bd909130731c55f20c7ea
930865dbd92b29bc57364695d561c289d693f72d:
title: 'scsi: qla2xxx: During vport delete send async logout explicitly'
mainline: 76f480d7c717368f29a3870f7d64471ce0ff8fb2
upstream: 086489256696eb774654a5410e86381c346356fe
b212bfa809f6d1235bbbb6c491621ce314b073a6:
title: 'perf/x86/intel/pt: Fix topa_entry base length'
mainline: 5638bd722a44bbe97c1a7b3fae5b9efddb3e70ff
upstream: b4030b619066aa1c20e075ce9382f103e0168145
dbffea43e8b704e5cb23e776be21c12a3e0f0b65:
title: 'watchdog/perf: properly initialize the turbo mode timestamp and rearm counter'
mainline: f944ffcbc2e1c759764850261670586ddf3bdabb
upstream: 6d94ca5d571dfdb34f12dc3f63273ea275e8f40c
8e28810fed0aaf5624155ae6974d1cc95623edf2:
title: 'platform: mips: cpu_hwmon: Disable driver on unsupported hardware'
mainline: f4d430db17b4ef4e9c3c352a04b2fe3c93011978
upstream: 0818a768c96a10343d08a622906adab54da6e014
4a7a97d0ef008b684e246ead6e1474949cb0b579:
title: 'RDMA/iwcm: Remove a set-but-not-used variable'
b4099074459a9baa637aba3a5fa6d814f32e5eb2:
title: 'RDMA/iwcm: Fix a use-after-free related to destroying CM IDs'
mainline: aee2424246f9f1dadc33faa78990c1e2eb7826e4
upstream: d91d253c87fd1efece521ff2612078a35af673c6
0a35556f0aa6435749d819919639e400943a3430:
title: 'selftests/sigaltstack: Fix ppc64 GCC build'
mainline: 17c743b9da9e0d073ff19fd5313f521744514939
upstream: 8010e0748cca059187021d194bb6d883d159e172
0e318baa084d870466c8cefaab8d2689e56d21e7:
title: 'nilfs2: handle inconsistent state in nilfs_btnode_create_block()'
mainline: 4811f7af6090e8f5a398fbdd766f903ef6c0d787
upstream: 19cce46238ffe3546e44b9c74057103ff8b24c62
2527458f09eb86ba89b673081c8a408c8a3f7591:
title: 'kdb: Fix bound check compiler warning'
mainline: ca976bfb3154c7bc67c4651ecd144fdf67ccaee7
upstream: b15593e2904d2ff0094b7170f806dba0eeefac75
fbcf6bbfac542e249d92ce80277a03dde0699305:
title: 'kdb: address -Wformat-security warnings'
mainline: 70867efacf4370b6c7cdfc7a5b11300e9ef7de64
upstream: 22a100556ceab8b906ad180788bd6bdc07390f50
4925aa995a5cf9f49c04fdd1257b1d8f341dd4f5:
title: 'kdb: Use the passed prompt in kdb_position_cursor()'
mainline: e2e821095949cde46256034975a90f88626a2a73
upstream: 90f2409c1d552f27a2b2bf8dc598d147c4173128
4c2dc9502e8728f3a9ba9029aeaa08fc01e420d1:
title: 'jfs: Fix array-index-out-of-bounds in diFree'
mainline: f73f969b2eb39ad8056f6c7f3a295fa2f85e313a
upstream: 55b732c8b09b41148eaab2fa8e31b0af47671e00
5a9dbd8f70793aba9e12d6d5216ce45cd9597a78:
title: 'dma: fix call order in dmam_free_coherent'
mainline: 28e8b7406d3a1f5329a03aa25a43aa28e087cb20
upstream: fe2d246080f035e0af5793cb79067ba125e4fb63
1184f039bc84987937ac8144df7a5daaffb0795c:
title: 'MIPS: SMP-CPS: Fix address for GCR_ACCESS register for CM3 and later'
mainline: a263e5f309f32301e1f3ad113293f4e68a82a646
upstream: 3213ac4e85945c54350ac06c09902d1c82211100
5b3e5dc382a0cab89cea2c533a0e5b65ae4d686e:
title: 'net: ip_rt_get_source() - use new style struct initializer instead of memset'
mainline: e351bb6227fbe2bb5da6f38a4cf5bd18810b0557
upstream: 0e8712254b48a7c6ebb76dce414a9539e772d406
ef5a6f1d6d270c55e210ed3775352ff75e2aa48e:
title: 'ipv4: Fix incorrect source address in Record Route option'
mainline: cc73bbab4b1fb8a4f53a24645871dafa5f81266a
upstream: 5c65e55e41e1300c4ebf4dda22a704b2beed2423
f204855673caa3a17b49c8b9642edcd269a4fac7:
title: 'net: bonding: correctly annotate RCU in bond_should_notify_peers()'
mainline: 3ba359c0cd6eb5ea772125a7aededb4a2d516684
upstream: 6c9261a2bdf614b376dbefa01e0c6bb32d14e019
1ae654c0cdf7bfcd142367568d3a1afbed7d54e8:
title: 'tipc: Return non-zero value from tipc_udp_addr2str() on error'
mainline: fa96c6baef1b5385e2f0c0677b32b3839e716076
upstream: 7ec3335dd89c8d169e9650e4bac64fde71fdf15b
70609fe847bf6600554b6f511b10015f76834d58:
title: 'mISDN: Fix a use after free in hfcmulti_tx()'
mainline: 61ab751451f5ebd0b98e02276a44e23a10110402
upstream: 70db2c84631f50e02e6b32b543700699dd395803
1967ea8b282b3b05c9da41c1e2426c3bfb04bf54:
title: 'mm: avoid overflows in dirty throttling logic'
mainline: 385d838df280eba6c8680f9777bfa0d0bfe7e8b2
upstream: 2b2d2b8766db028bd827af34075f221ae9e9efff
aff1d3ed73ce5882235d9f42c4510c642b9e1dac:
title: 'PCI: rockchip: Make ''ep-gpios'' DT property optional'
mainline: 58adbfb3ebec460e8b58875c682bafd866808e80
upstream: 11f71f0c562dbfbc3f3e2c56053bca42f7e8d71c
5a659bbb75dd76c32388a8b4c8ea8dff2aa79c12:
title: 'PCI: rockchip: Use GPIOD_OUT_LOW flag while requesting ep_gpio'
mainline: 840b7a5edf88fe678c60dee88a135647c0ea4375
upstream: 8de378d17e5b737907c04acc2fab6d966a129f70
d34a87ca6e4c611b125d238c3a56b712a612acd6:
title: 'parport: parport_pc: Mark expected switch fall-through'
mainline: aa1f0fa374ed23528b915a693a11b0f275a299c0
upstream: f1af18ba5925abb275de8bf387fceb9fbf93a096
af0192bb58b539ec732125a76fe4d69660147cca:
title: 'parport: Convert printk(KERN_<LEVEL> to pr_<level>('
mainline: decf26f6ec25dac868782dc1751623a87d147831
upstream: cb2a998b88d173ec23423fa13ae2da463449728a
4582fe6f2d5fddcf7a63b59b666e8837f2cecf9a:
title: 'parport: Standardize use of printmode'
mainline: a6abfdff4fe5dd19d1f1b37d72ba34cd4492fd4d
upstream: 884ab25dbf115938facb91be85ffed9266e26f8b
598e7acd167941653c0a54d5732bad40db488504:
title: 'dev/parport: fix the array out-of-bounds risk'
mainline: ab11dac93d2d568d151b1918d7b84c2d02bacbd5
upstream: 166a0bddcc27de41fe13f861c8348e8e53e988c8
bdec7b3d4ccbcbd78fd4b6a2c6fe7a849754af52:
title: 'driver core: Cast to (void *) with __force for __percpu pointer'
mainline: d7aa44f5a1f86cb40659eef06035d8d92604b9d5
upstream: b9c258b2a02ba8d6d004f45a1eafa23fd810746b
9b6f7f34aae733309a35d9990d4a0cdf2d2eea3b:
title: 'devres: Fix memory leakage caused by driver API devm_free_percpu()'
mainline: bd50a974097bb82d52a458bd3ee39fb723129a0c
upstream: 700e8abd65b10792b2f179ce4e858f2ca2880f85
9ce7856eccc159df29f62b1e5ff0c6239422bf63:
title: 'perf/x86/intel/pt: Export pt_cap_get()'
mainline: f6d079ce867d679e4dffef5b3112c7634215fd88
upstream: bea2d4588e90f56da62b0dd9099484a42498b08a
2de7be6b1893e070e92da91bbaa35ce22950b189:
title: 'perf/x86/intel/pt: Use helpers to obtain ToPA entry size'
mainline: fffec50f541ace292383c0cbe9a2a97d16d201c6
upstream: e3fb71f7ecbf87228148c3287eac965927ef49be
ab03429ae696126f00509dac54b632bfb2282240:
title: 'perf/x86/intel/pt: Use pointer arithmetics instead in ToPA entry calculation'
mainline: 539f7c26b41d4ed7d88dd9756de3966ae7ca07b4
upstream: 67968b8c7603007751f140f3f9f8aa8e64fc26b2
a87ac310cc99adff1aa8315d829ce984dfc0cda6:
title: 'perf/x86/intel/pt: Split ToPA metadata and page layout'
mainline: 38bb8d77d0b932a0773b5de2ef42479409314f96
upstream: e9d9ec1019a90aafdb54765a3b46f36f402b481a
d6c356954a61ce5a5f851b9aa858f9d906e4228d:
title: 'perf/x86/intel/pt: Fix a topa_entry base address calculation'
mainline: ad97196379d0b8cb24ef3d5006978a6554e6467f
upstream: 418f7db13405953c2d9223275d365d9828169076
5d99fd6160cb1a1ecd0163220164b8d1fe2cecf6:
title: 'remoteproc: imx_rproc: ignore mapping vdev regions'
mainline: 8f2d8961640f0346cbe892273c3260a0d30c1931
upstream: 35df377f38fb516111933f132b51a386b4d4892f
c1239a005bbf4c6b43aec1155ac3d8466b640051:
title: 'remoteproc: imx_rproc: Fix ignoring mapping vdev regions'
mainline: afe670e23af91d8a74a8d7049f6e0984bbf6ea11
upstream: a80423f6566bc5085d6bbdd2acdb80aa20c0e915
3e1715ba7291483690f92608e08aba0d12c5ef70:
title: 'remoteproc: imx_rproc: Skip over memory region when node value is NULL'
mainline: 2fa26ca8b786888673689ccc9da6094150939982
upstream: 6884fd0283e0831be153fb8d82d9eda8a55acaaa
4aff76137ef2fa40ec1f424eb8e743673ffe5434:
title: 'drm/vmwgfx: Fix overlay when using Screen Targets'
mainline: cb372a505a994cb39aa75acfb8b3bcf94787cf94
upstream: 6f4bc8b021d3436e5dda88350d8e0ac3c8df400f
582d87d965d3600b178bbaf8947523e5478da1d1:
title: 'net/iucv: fix use after free in iucv_sock_close()'
mainline: f558120cd709682b739207b48cf7479fd9568431
upstream: 84f40b46787ecb67c7ad08a5bb1376141fa10c01
c04add3c9adf1402f47ff8f51dd2ee533e863a00:
title: 'ipv6: fix ndisc_is_useropt() handling for PIO'
mainline: a46c68debf3be3a477a69ccbf0a1d050df841676
upstream: 97a4f78feadc431a050cc26355f95ac3d73a4d4c
f4c005cc381764f082f66825073bb6c43f54fe14:
title: protect the fetch of ->fd[fd] in do_dup2() from mispredictions
mainline: 8aa37bde1a7b645816cda8b80df4753ecf172bf1
upstream: ed42e8ff509d2a61c6642d1825032072dab79f26
71a0712ba842211e6dc1a4f7e91dd6c7502eebe5:
title: 'ALSA: usb-audio: Correct surround channels in UAC1 channel map'
mainline: b7b7e1ab7619deb3b299b5e5c619c3e6f183a12d
upstream: f4eb853103674698416ba66d41317b1d869d4bdc
3f465b02b4b919181c45ef14fe5ca3638b87ac5c:
title: 'net: usb: sr9700: fix uninitialized variable use in sr_mdio_read'
mainline: 08f3a5c38087d1569e982a121aad1e6acbf145ce
upstream: 9f04dbd139aa1988fc8b7984ffbce7849be73f21
6f4e6f1f7e5d27fa977d9900aba67c9cc3c15d4e:
title: 'irqchip/mbigen: Fix mbigen node address layout'
mainline: 6be6cba9c4371d27f78d900ccfe34bb880d9ee20
upstream: 2f61f0c6b7411212acd6490c5629b0049e8eaefa
193653bb5bb78ddaa2698760912db0248833cccc:
title: 'net: usb: qmi_wwan: fix memory leak for not ip packets'
mainline: 7ab107544b777c3bd7feb9fe447367d8edd5b202
upstream: 3c90a69533b5bba73401ef884d033ea49ee99662
928a0513e3f0353f456c9734695c47a94f423c54:
title: 'net: linkwatch: use system_unbound_wq'
mainline: 3e7917c0cdad835a5121520fc5686d954b7a61ab
upstream: 3840189e4619af11f558e6faff80813f008246a6
0c7df8f6eff3aa1044d3f97dd249112dc4301778:
title: 'Bluetooth: l2cap: always unlock channel in l2cap_conless_channel()'
mainline: c531e63871c0b50c8c4e62c048535a08886fba3e
upstream: 64f4938368f4be563b7652d6b18d37b317913b47
20cb64898909ba7ccad47d1e52e980ba859c29c0:
title: 'net: fec: Stop PPS on driver remove'
mainline: 8fee6d5ad5fa18c270eedb2a2cdf58dbadefb94b
upstream: 7762f5317db83b70099ed1b2c100df54abddaec1
a10b1779aca24535b14edba941cb59fbd35ce7c9:
title: 'md/raid5: avoid BUG_ON() while continue reshape after reassembling'
mainline: 305a5170dc5cf3d395bb4c4e9239bca6d0b54b49
upstream: 2c92f8c1c456d556f15cbf51667b385026b2e6a0
f9ec6971715991696e49430547551697f1153be6:
title: 'clocksource/drivers/sh_cmt: Address race condition for clock events'
mainline: db19d3aa77612983a02bd223b3f273f896b243cf
upstream: 026befb502ce41384e5119df12c9f2d4067cb23c
ca0a3431163788b838bdccff1eac2b84a30bee91:
title: 'PCI: Add Edimax Vendor ID to pci_ids.h'
mainline: eee5528890d54b22b46f833002355a5ee94c3bb4
upstream: a35a163cd56b583ef698eadef9b856b0fe6e2727
ed09bb9292ca0c02ada12cd5f17ef9e976cb5f8c:
title: 'udf: Fix signed/unsigned format specifiers'
12ce9c96b15650623040f0d999b91b5d12f9936f:
title: 'udf: prevent integer overflow in udf_bitmap_free_blocks()'
mainline: 56e69e59751d20993f243fb7dd6991c4e522424c
upstream: 097420e48e30f51e8f4f650b5c946f5af63ec1a3
a253db7576fd90aaa15b1dabec335f2f9df7c21e:
title: 'wifi: nl80211: don''t give key data to userspace'
mainline: a7e5793035792cc46a1a4b0a783655ffa897dfe9
upstream: f4d99b55dca90ca703bdd57ee8d557cd8d6c1639
dd102bb94b5dba7e5376f09504503f3bc2cf16da:
title: 'btrfs: fix bitmap leak when loading free space cache on duplicate entry'
mainline: 320d8dc612660da84c3b70a28658bb38069e5a9a
upstream: fad0bb34cfcea693903409356693988f04715b8e
feddc92ee4859f5e6c5a69135f94547740b292a9:
title: 'media: uvcvideo: Ignore empty TS packets'
mainline: 5cd7c25f6f0576073b3d03bc4cfb1e8ca63a1195
upstream: 019f538f9fe0b48bb436135edba69aa3a5156cdb
00a39f4e0adbb1b194e0a1ba2219e26c57042dc7:
title: 'media: uvcvideo: Fix the bandwdith quirk on USB 3.x'
mainline: 9e3d55fbd160b3ca376599a68b4cddfdc67d4153
upstream: eada6212c055089962ca3ee7b8ab11d8f4d0e4f5
82f1f40db08d606f0538e4a88e06a919b8656645:
title: 'jbd2: avoid memleak in jbd2_journal_write_metadata_buffer'
mainline: cc102aa24638b90e04364d64e4f58a1fa91a1976
upstream: 831db95409cc12589c14a71b9bf6c3e7f70bf5a0
6062fd1ee48c6cb081cbc525e31fd43fa9632dbc:
title: 'SUNRPC: Fix a race to wake a sync task'
mainline: ed0172af5d6fc07d1b40ca82f5ca3979300369f7
upstream: 06d281f0ad7504e9f250c6a9ef78d9e48cea5717
fb37e57b6e2f8217b201737f10af809289674469:
title: 'ext4: fix wrong unit use in ext4_mb_find_by_goal'
mainline: 99c515e3a860576ba90c11acbc1d6488dfca6463
upstream: 585b8d86c39882425f737b800e7552fb42a4785f
7a346f1ce3ab37134f2365ab6a74422747285fdb:
title: 'i2c: smbus: Don''t filter out duplicate alerts'
mainline: dca0dd28fa5e0a1ec41a623dbaf667601fc62331
upstream: 6adca954fc039151ef4f9c1ea1f201e12a24593d
c364d250ada36665ea06f204449d1162cb5e1432:
title: 'i2c: smbus: Improve handling of stuck alerts'
mainline: 37c526f00bc1c4f847fc800085f8f009d2e11be6
upstream: 9540badee607a99cc07bddbd0a7d4a01fd3b9661
a0bb631d7d0a1773ebbb427ac8564ae8818b4dfe:
title: 'i2c: smbus: Send alert notifications to all devices if source not found'
mainline: f6c29f710c1ff2590109f83be3e212b86c01e0f3
upstream: 3b20631d0704fe4f6bf4cf9a49fd19871ebaeffb
5ec8022d2f6ecf35ce105eafaf28b73c46619207:
title: 'spi: lpspi: Switch to SPDX identifier'
0ef61696a9fff3915fb5aa6f7bb9f89682d10ad9:
title: 'spi: lpspi: Replace all "master" with "controller"'
mainline: 07d71557494c05b0651def1651bf6d7e7f47bbbb
upstream: bebc69b574d6a3c54e8951dd891e78a20e2a3f54
12bfab716ae4cd47449d7636a25326099daa10a9:
title: 'spi: lpspi: Add slave mode support'
mainline: bcd87317aae26b9ac497cbc1232783aaea1aeed4
upstream: b1b5a04eadd9b786dcd4bc82e726498a8f6fd50a
6a6c19da1d3917fc8c51d2fd69b667a5e7b192ec:
title: 'spi: lpspi: Let watermark change with send data length'
mainline: cf86874bb9bdb99ba3620428b59b0408fbc703d0
upstream: 8f8b12339ef7cc8e15989f6445aad5a9bf8c00f5
dc2d2de15c66a8e41275b4d59e6082955e477991:
title: 'spi: lpspi: Add i.MX8 boards support for lpspi'
mainline: f5e5afdb0e56e81123e02b6a64dd32adc19a90d4
upstream: 0b536d6c52a88b6a5a7f40d1ac91ffe170b8df87
030b58b3539d0fdccf6284113c29f60c76b60916:
title: 'spi: lpspi: add the error info of transfer speed setting'
mainline: 77736a98b859e2c64aebbd0f90b2ce4b17682396
upstream: 3bb46e26783c3c86e67172f695908a066be69e12
d859e0255cb169a2d7aa96b42defafd7c515df0c:
title: 'spi: fsl-lpspi: remove unneeded array'
mainline: 2fa98705a9289c758b6154a22174aa8d4041a285
upstream: da6cc32c245500f417e4b96d67722b8a0a07fd94
dcde078eb1be234c810305963c845eaa63f20813:
title: 'spi: spi-fsl-lpspi: Fix scldiv calculation'
mainline: 730bbfaf7d4890bd99e637db7767dc68cfeb24e7
upstream: 81964823116357a636201afa4010fa30f050446e
9ab8902f51b8ac3c51666922a9719c1e4d81f105:
title: 'ALSA: line6: Fix racy access to midibuf'
mainline: 15b7a03205b31bc5623378c190d22b7ff60026f1
upstream: 643293b68fbb6c03f5e907736498da17d43f0d81
d41cf1c7bc4e9706d684d3fb2c24046f673ffb78:
title: 'usb: vhci-hcd: Do not drop references before new references are gained'
mainline: afdcfd3d6fcdeca2735ca8d994c5f2d24a368f0a
upstream: 5a3c473b28ae1c1f7c4dc129e30cb19ae6e96f89
95314b1272d1d96f5737c5b1e208fabd1128db3c:
title: 'USB: serial: debug: do not echo input by default'
mainline: 00af4f3dda1461ec90d892edc10bec6d3c50c554
upstream: 1907ed1be026c771086e6adc560f38dc50e82382
551fbbddb6f5ff52bdb1c0cdb3d096e359e088da:
title: 'usb: gadget: core: Check for unset descriptor'
mainline: 973a57891608a98e894db2887f278777f564de18
upstream: ba15815dd24cc5ec0d23e2170dc58c7db1e03b4a
b41af170f9ad55d4780688b92c032579655218fe:
title: 'scsi: ufs: core: Fix hba->last_dme_cmd_tstamp timestamp updating logic'
mainline: ab9fd06cb8f0db0854291833fc40c789e43a361f
upstream: c4da5b5deb343346909920c41645ad85adff4c6c
6fad54cc7a6c8c4750209bfcff1b54dd60b086db:
title: 'tick/broadcast: Move per CPU pointer access into the atomic section'
mainline: 6881e75237a84093d0986f56223db3724619f26e
upstream: f54abf332a2bc0413cfa8bd6a8511f7aa99faea0
07f7f40df90538c4bacb06d64ededc68b6d6e9bf:
title: 'ntp: Clamp maxerror and esterror to operating range'
mainline: 87d571d6fb77ec342a985afa8744bb9bb75b3622
upstream: 9dfe2eef1ecfbb1f29e678700247de6010784eb9
c72f8e96b8386d50894df2faed9718d7cbfc312d:
title: 'driver core: Fix uevent_show() vs driver detach race'
mainline: 15fffc6a5624b13b428bb1c6e9088e32a55eb82c
upstream: 49ea4e0d862632d51667da5e7a9c88a560e9c5a1
53390d85b1f4fca100eca68612fe9ae736ef5caf:
title: 'ntp: Safeguard against time_constant overflow'
mainline: 06c03c8edce333b9ad9c6b207d93d3a5ae7c10c0
upstream: a13f8b269b6f4c9371ab149ecb65d2edb52e9669
1d33b86b2b99774eae26926b2f5f4900f826638f:
title: 'serial: core: check uartclk for zero to avoid divide by zero'
mainline: 6eabce6608d6f3440f4c03aa3d3ef50a47a3d193
upstream: 3bbd90fca824e6fd61fb20f6dd2b0fa5f8b14bba
d9b1fa9a24e5ba3115a289421d535abf954efd7a:
title: 'power: supply: axp288_charger: Fix constant_charge_voltage writes'
mainline: b34ce4a59cfe9cd0d6f870e6408e8ec88a964585
upstream: f1aa9f19da35f72ce8ec3196f0a7bc06e296aaeb
bd9bfbcc05c1c7af22dfa9ca8b2ff1d6395db661:
title: 'power: supply: axp288_charger: Round constant_charge_voltage writes down'
mainline: 81af7f2342d162e24ac820c10e68684d9f927663
upstream: e3cb8400a72a9e5e25365d380b290cdd50ccdb5c
b28271a4428daf3c20b71a8e7cf218a4c38c698b:
title: 'tracing: Fix overflow in get_free_elt()'
mainline: bcf86c01ca4676316557dd482c8416ece8c2e143
upstream: 302ceb625d7b990db205a15e371f9a71238de91c
4f0b886693fe2a82d8896cd431eb529777e1bbdc:
title: 'x86/mtrr: Check if fixed MTRRs exist before saving them'
mainline: 919f18f961c03d6694aa726c514184f2311a4614
upstream: 34f36e6ee5bd7eff8b2adcd9fcaef369f752d82e
d5775da332c5377cc22a6e497a9b324c1f2fe2a1:
title: 'drm/bridge: analogix_dp: Check AUX_EN status when doing AUX transfer'
a413584fad9b551cb6e15f5e8a05f94d16871585:
title: 'drm/bridge: analogix_dp: Reset aux channel if an error occurred'
9f77a8ee77d6ec538dbccfc03c463586323300d0:
title: 'drm/bridge: analogix_dp: Properly log AUX CH errors'
5dfe0cc24eab4d1e640e3cfc7ef155216fb29f2a:
title: 'drm/bridge: analogix_dp: properly handle zero sized AUX transactions'
mainline: e82290a2e0e8ec5e836ecad1ca025021b3855c2d
upstream: 52f05898629b25fc382754d837be624205ce67f8
e391c9f51faaf4a35bb29343af0d29164938363a:
title: 'drm/mgag200: Set DDC timeout in milliseconds'
mainline: ecde5db1598aecab54cc392282c15114f526f05f
upstream: 7db72e8e538e10afefe589d6203ffb4f5a1cbd9a
6bd6cf1374f27ba771760e53caf8c276e794b638:
title: 'kbuild: Fix ''-S -c'' in x86 stack protector scripts'
mainline: 3415b10a03945b0da4a635e146750dfe5ce0f448
upstream: 9dd6e5296c8ad1bbb88933b8150383bc0eba9488
9aee9974b20b6907210221aba005ec36135348a4:
title: 'netfilter: nf_tables: set element extended ACK reporting support'
mainline: b53c116642502b0c85ecef78bff4f826a7dd4145
upstream: 61fbbac22c8ce73d0c492caf45a286c3f021c0fd
827a69923a6dddeb669678005299af5144147452:
title: 'drm/i915: Try GGTT mmapping whole object as partial'
3ccfe379cab98c308e84733885655b1c7c956b80:
title: 'drm/i915/gem: Fix Virtual Memory mapping boundaries calculation'
mainline: 8bdd9ef7e9b1b2a73e394712b72b22055e0e26c3
upstream: 3e06073d24807f04b4694108a8474decb7b99e60
02acb3b20db4e8372b854be6ce9846446def401c:
title: 'exec: Fix ToCToU between perm check and set-uid/gid usage'
mainline: f50733b45d865f91db90919f8311e2127ce5a0cb
upstream: d5c3c7e26275a2d83b894d30f7582a42853a958f
92af3424a5a42e8014f39c82996fe01a8ba6aaf0:
title: 'nvme/pci: Add APST quirk for Lenovo N60z laptop'
mainline: ab091ec536cb7b271983c0c063b17f62f3591583
upstream: 9cc0878c7d7f12c10b3cc40197668816c918b465
af183b69eaca031e9e4833d356ba1ef6c2adbaba:
title: 'Revert "selftests: make order checking verbose in msg_zerocopy selftest"'
2cb49c145133dc3d8b38832afe4be57ffc94836a:
title: 'Revert "selftests: fix OOM in msg_zerocopy selftest"'
d110d6dd927f5a2911fc5e697a14026eacc5da69:
title: 'Revert "selftests/net: reap zerocopy completions passed up as ancillary data."'
2d49c59f9120bc00d0cf6f055311d8f9ab7bb90d:
title: 'selftests: fix OOM in msg_zerocopy selftest'
mainline: af2b7e5b741aaae9ffbba2c660def434e07aa241
144aa689351646efa81ec2ad9f0ba41599d9ffc8:
title: 'selftests: make order checking verbose in msg_zerocopy selftest'
mainline: 7d6d8f0c8b700c9493f2839abccb6d29028b4219
795faf9727a66039c7c80e011fe0bad5bd88dd83:
title: 'net: fix __dst_negative_advice() race'
mainline: 92f1655aa2b2294d0b49925f3b875a634bd3b59e

View File

@ -0,0 +1,784 @@
c0e53e36452d1b2a3ec71bf0586251245a5686c0:
title: 'platform/chrome: cros_ec_debugfs: fix wrong EC message version'
mainline: c2a28647bbb4e0894e8824362410f72b06ac57a4
backport: dd6caa8da1ace4e2e4f02eb5284addebf4c5c2bb
fa4c26ce47b050d4988d8d5a7390e205abe4a2bc:
title: 'hfsplus: fix to avoid false alarm of circular locking'
mainline: be4edd1642ee205ed7bbf66edc0453b1be1fb8d7
skipped: fixes patch not in branch
56d64c36b2aac95c9c24e303fb746591ecfa096a:
title: 'x86/of: Return consistent error type from x86_of_pci_irq_enable()'
mainline: ec0b4c4d45cf7cf9a6c9626a494a89cb1ae7c645
backport: 78659ded3dbb7237c1582e91776e86a6b3247515
600a520cc4e661aa712415e4a733924e9d22777d:
title: 'x86/pci/intel_mid_pci: Fix PCIBIOS_* return code handling'
mainline: 724852059e97c48557151b3aa4af424614819752
backport: 5f1342ecebaf8161a43bcc1b8958c280452c8171
5294b91618250c7719e4c85096cafe8f76a1bc20:
title: 'x86/pci/xen: Fix PCIBIOS_* return code handling'
mainline: e9d7b435dfaec58432f4106aaa632bf39f52ce9f
backport: 125df213ac935a71782e5c091206853ff9cb5556
3f4f08e59ddf359da5bc4226ba865a59177a3a50:
title: 'x86/platform/iosf_mbi: Convert PCIBIOS_* return codes to errnos'
mainline: 7821fa101eab529521aa4b724bf708149d70820c
backport: 21be2282360c7df8b2535f9c2883674234dc7de2
d9c01877d4ba1e39bbdc43faeeceeef2768be8e7:
title: 'hwmon: (adt7475) Fix default duty on fan is disabled'
mainline: 39b24cced70fdc336dbc0070f8b3bde61d8513a8
backport: 1dd63dd3a8a7617a90bc1a9068fedb6adf5f5aac
383729f057245972e13fb0708c5ec7dd985fc50d:
title: 'pwm: stm32: Always do lazy disabling'
mainline: 7346e7a058a2c9aa9ff1cc699c7bf18a402d9f84
backport: 25d404099dccdfe51abb9f810a864ced8b9d912b
21998f2c68edd4a7922875f34b39ce2bb78fabc0:
title: 'hwmon: (max6697) Fix underflow when writing limit attributes'
mainline: cbf7467828cd4ec7ceac7a8b5b5ddb2f69f07b0e
backport: 42cc04b6ae182a372082afc1c28d67f92fed5c29
eb04482acd9870b84970fe1549203fedc1bbcc79:
title: 'hwmon: Introduce SENSOR_DEVICE_ATTR_{RO, RW, WO} and variants'
mainline: a5c47c0d388b939dd578fd466aa804b7f2445390
backport: 625dffc4eaba4191520fb296a0e55743836bab4b
7a72d79eef89ce242e08edb18f64106374117295:
title: 'hwmon: (max6697) Auto-convert to use SENSOR_DEVICE_ATTR_{RO, RW, WO}'
mainline: 740c2f2b86a71ad673f329241ac25cfe647aacd4
backport: 64785dce17bc282c55ed7f21c3fbc4391cdb1ab0
6b52603ed8bdcceb9b8c16d2db7abd19e024fbe2:
title: 'hwmon: (max6697) Fix swapped temp{1,8} critical alarms'
mainline: 1ea3fd1eb9869fcdcbc9c68f9728bfc47b9503f1
backport: cb9e33d36836000d9a79d3b0121beee91c3323b9
513fff3e8574d3c5b54ef71b6514cda12123879e:
title: 'arm64: dts: rockchip: Increase VOP clk rate on RK3328'
mainline: 0f2ddb128fa20f8441d903285632f2c69e90fae1
backport: c731a44f2487b720039473b6255fba3ad26d7753
b6c2b179b6908e439b2385c25d7b3477e4be4dce:
title: 'm68k: atari: Fix TT bootup freeze / unexpected (SCU) interrupt messages'
mainline: f70065a9fd988983b2c693631b801f25a615fc04
backport: 266d74e904f119b2251094862e9f7d56c3fb74fe
cb9ad82cf270ce5bdcf5e768af48966833cc3caa:
title: 'x86/xen: Convert comma to semicolon'
mainline: 349d271416c61f82b853336509b1d0dc04c1fcbb
backport: 0d26a6a5f0bb7e82bfebf44b060294eec5a72b73
8c43fbd39500ce7bdc779a772752cc2b436a692c:
title: 'm68k: cmpxchg: Fix return value for default case in __arch_xchg()'
mainline: 21b9e722ad28c19c2bc83f18f540b3dbd89bf762
backport: 8bc40077dd7c321cc45107a639c176d317892413
f33757e8db8f33aba783b88120245ec53e5fa88a:
title: 'wifi: brcmsmac: LCN PHY code is used for BCM4313 2G-only device'
mainline: c636fa85feb450ca414a10010ed05361a73c93a6
backport: 5fa524af8685b00160e9e766bbe196804a007844
7fbbfd88613287ec01a54215b09aad3b05e4c070:
title: 'net/smc: Allow SMC-D 1MB DMB allocations'
mainline: 67161779a9ea926fccee8de047ae66cbd3482b91
skipped: commit did not cherry-pick cleanly
248ded655e0b64e2a4c2f1ef6d052954ed88ed05:
title: 'net/smc: set rmb''s SG_MAX_SINGLE_ALLOC limitation only when CONFIG_ARCH_NO_SG_CHAIN is defined'
mainline: 3ac14b9dfbd345e891d48d89f6c2fa519848f0f4
skipped: commit did not cherry-pick cleanly
d92eac4db41d059554efdf3ba7415a196bc7b437:
title: 'selftests/bpf: Check length of recv in test_sockmap'
mainline: de1b5ea789dc28066cc8dc634b6825bd6148f38b
skipped: fixes patch not in branch
0166ece82068d6fa9739a677ac3884941fc35153:
title: 'wifi: cfg80211: fix typo in cfg80211_calculate_bitrate_he()'
mainline: 9ee0d44f055276fe2802b2f65058e920853f4f99
skipped: fixes patch not in branch
45d20a1c54be4f3173862c7b950d4468447814c9:
title: 'wifi: cfg80211: handle 2x996 RU allocation in cfg80211_calculate_bitrate_he()'
mainline: bcbd771cd5d68c0c52567556097d75f9fc4e7cd6
skipped: fixes patch not in branch
b072c604d58b1cd1079c4e2f0d22b1f469dda347:
title: 'net: fec: Refactor: #define magic constants'
mainline: ff049886671ccd4e624a30ec464cb20e4c39a313
backport: 1a85ab4b601786019135c37ec3f11927ba4a561d
18074367ad100e129d0dccdaa64af6642363680b:
title: 'net: fec: Fix FEC_ECR_EN1588 being cleared on link-down'
mainline: c32fe1986f27cac329767d3497986e306cad1d5e
backport: c3996b8fae20c268b6c49e70ea078bceb96d0c27
9340804ea465de0509a9afaeaaccf3fb74b14f9b:
title: 'ipvs: Avoid unnecessary calls to skb_is_gso_sctp'
mainline: 53796b03295cf7ab1fc8600016fa6dfbf4a494a0
backport: 2a3559125bd5fc024c30b1655b626abc0c2fa3eb
542abbf58e88f34dfc659b63476a5976acf52c0e:
title: 'perf: Fix perf_aux_size() for greater-than 32-bit size'
mainline: 3df94a5b1078dfe2b0c03f027d018800faf44c82
backport: 6f7bc617b3b66436641dba5329718933aea4b889
d7b1a76f33e6fc93924725b4410126740c890c44:
title: 'perf: Prevent passing zero nr_pages to rb_alloc_aux()'
mainline: dbc48c8f41c208082cfa95e973560134489e3309
backport: 26864f03cc21aaa1b9f2dbed5c8ad7bf676f2df4
f121740f69eda4da2de9a20a6687a13593e72540:
title: 'bna: adjust ''name'' buf size of bna_tcb and bna_ccb structures'
mainline: c9741a03dc8e491e57b95fba0058ab46b7e506da
backport: be35c98c5aa383407f62428c4169a79d5c243c26
e061713d466b9be56b66dd6fb50538ad2c5564ac:
title: 'selftests: forwarding: devlink_lib: Wait for udev events after reloading'
mainline: f67a90a0c8f5b3d0acc18f10650d90fec44775f9
skipped: fixes patch not in branch
01b44d9e50a68ac3c645cc98a474455668dc8e70:
title: 'media: imon: Fix race getting ictx->lock'
mainline: 24147897507cd3a7d63745d1518a638bf4132238
backport: ce58b8f17bfc9cfad7fafb57ebb626850d4802ba
001583ad640c70987efd5af70566a69f146dc99c:
title: 'saa7134: Unchecked i2c_transfer function result fixed'
mainline: 9d8683b3fd93f0e378f24dc3d9604e5d7d3e0a17
backport: e0b07e242c61e819acf0143bb2c23d4859b135db
1e4347cf14496f33bd26f0401404fd6de51e4fc4:
title: 'media: uvcvideo: Allow entity-defined get_info and get_cur'
mainline: 65900c581d014499f0f8ceabfc02c652e9a88771
skipped: commit did not cherry-pick cleanly
b8e307747242d3e692c6ad98ff30d315683f2a00:
title: 'media: uvcvideo: Override default flags'
mainline: 86419686e66da5b90a07fb8a40ab138fe97189b5
skipped: fixes patch not in branch
ab1325f1074da2cfa1259417fb6c93a0886e74c8:
title: 'media: renesas: vsp1: Fix _irqsave and _irq mix'
mainline: 57edbbcf5258c378a9b9d0c80d33b03a010b22c8
backport: f0a224ecf4ca80033edee705bd34405dae4ea20a
ae16866626ecae26a7317e0372224d5480211ff7:
title: 'media: renesas: vsp1: Store RPF partition configuration per RPF instance'
mainline: a213bc09b1025c771ee722ee341af1d84375db8a
backport: 49db8c90eba2da9ddc6f9a203a6d20984d1658a7
c3b7a650c8717aa89df318364609c86cbc040156:
title: 'leds: trigger: Unregister sysfs attributes before calling deactivate()'
mainline: c0dc9adf9474ecb7106e60e5472577375aedaed3
skipped: fixes patch not in branch
2e6abffcb52a36c89c0a70499b86e0a99df15d1e:
title: 'perf report: Fix condition in sort__sym_cmp()'
mainline: cb39d05e67dc24985ff9f5150e71040fa4d60ab8
backport: 39632d1c383813e9ddb20088f6e9a3b44ee70569
c7c74c8256206ffc27212ada1f998f5a05b8c54f:
title: 'drm/etnaviv: fix DMA direction handling for cached RW buffers'
mainline: 58979ad6330a70450ed78837be3095107d022ea9
backport: fa7e07d7ebb21ec8b937faeb3254a608c4d2eea2
4be759d6d5da05b76a19785defe0f312926dcb5b:
title: 'mfd: omap-usb-tll: Use struct_size to allocate tll'
mainline: 40176714c818b0b6a2ca8213cdb7654fbd49b742
skipped: fixes patch not in branch
282e8d4e9d33182a5ca25fe6333beafdc5282946:
title: 'ext4: avoid writing unitialized memory to disk in EA inodes'
mainline: 65121eff3e4c8c90f8126debf3c369228691c591
backport: 5e8bf661518b825696c6ee219e62292e6bc8df93
6b4f676006a390edffd6a00f2ebc23276dd05031:
title: 'sparc64: Fix incorrect function signature and add prototype for prom_cif_init'
mainline: a6c3ea1ec96307dbfbb2f16d96c674c5cc80f445
backport: 0549d286c615b284448fa4d449c322f3ae2aa55f
0012438a122c56d727712169df42fd0e297a42b0:
title: 'PCI: Equalize hotplug memory and io for occupied and empty slots'
mainline: de3ffa301142bf8802a7b0de17f9985acde5c223
backport: 02a0104454d95405c65536870fdc426e8663512d
2044071c6e42d041e3656bad105be5879f6b70f1:
title: 'PCI: Fix resource double counting on remove & rescan'
mainline: 903534fa7d30214d8ba840ab1cd9e917e0c88e41
backport: 0a5d6964e9374945dfef1227972e8cc1a2a6d5ef
c4eaaf28068a99d8363bf02a20a32bf207be13e1:
title: 'RDMA/mlx4: Fix truncated output warning in mad.c'
mainline: 0d2e6992fc956e3308cd5376c18567def4cb3967
backport: 8e50a9f8175582f34a709024496217f3fca864e5
087abc7e244700f741c0431af59b28e910a82dc1:
title: 'RDMA/mlx4: Fix truncated output warning in alias_GUID.c'
mainline: 5953e0647cec703ef436ead37fed48943507b433
backport: e9d4656f8f0c014de2ffcf8d4903c4630c43c72b
796c0f32fc956b88c345195472e2d74823be0d03:
title: 'RDMA/rxe: Don''t set BTH_ACK_MASK for UC or UD QPs'
mainline: 4adcaf969d77d3d3aa3871bbadc196258a38aec6
backport: 117e5c14bbbb75364fabcb7d2e70e19167efc931
17b016971c27ee1e884da3ce502801cb95f84ff1:
title: 'mtd: make mtd_test.c a separate module'
mainline: a5cf054d325e6f362e82fe6d124a1871a4af8174
backport: 550d6bbd2dedbc88697932ddbe5f930b20a4d7c1
2ee59e846895b6b061defbc6cde83126f91b7abd:
title: 'Input: elan_i2c - do not leave interrupt disabled on suspend failure'
mainline: 5f82c1e04721e7cd98e604eb4e58f0724d8e5a65
backport: e547f41337badd93753b4fe3ae3817ed8400abd6
12bc3aca7d100a8f749c2a6fcdb6be08ad41c105:
title: 'MIPS: Octeron: remove source file executable bit'
mainline: 89c7f5078935872cf47a713a645affb5037be694
backport: fd5b433d1390c5586bc367f3e10fbb226ad9e2ac
5b84d47a0baee13434fadb3b9506c39f51f9ab98:
title: 'powerpc/xmon: Fix disassembly CPU feature checks'
mainline: 14196e47c5ffe32af7ed5a51c9e421c5ea5bccce
backport: 971a6101e844da8bcbdd4bd046a826c6cc44d861
eeb9a0f79d8e4ea27b4f85a73f3765dc0046ab01:
title: 'macintosh/therm_windtunnel: fix module unload.'
mainline: fd748e177194ebcbbaf98df75152a30e08230cc6
backport: 20b6b7a306d9487bb507af81df8e926b8141d902
dfb40b2535b298b34b37780fe8eced6d38e28c5c:
title: 'bnxt_re: Fix imm_data endianness'
mainline: 95b087f87b780daafad1dbb2c84e81b729d5d33f
backport: 4f51eb5763820de8cf9bc32b26b20d19f7ccfc5d
576862647ae00d67b09961f84629aea09736c047:
title: 'ice: Rework flex descriptor programming'
mainline: 22ef683b48182f4d6125a2fb2725eb8a141514ff
skipped: code does not exist in 4.14
66e7650dbbb8e236e781c670b167edc81e771450:
title: 'netfilter: ctnetlink: use helper function to calculate expect ID'
mainline: 782161895eb4ac45cf7cfa8db375bd4766cb8299
backport: ccfb620ebf3085fca54472461544c796cbd7db5d
636f8fe03a14b0994a3dbdc05c8fa8c8296c1357:
title: 'pinctrl: core: fix possible memory leak when pinctrl_enable() fails'
mainline: ae1cf4759972c5fe665ee4c5e0c29de66fe3cf4a
backport: ee8bf45248bc530e2dc9a0a7f833febbe89fd2e1
9dad82c7c7424c240db65f10ad999266f2967479:
title: 'pinctrl: single: fix possible memory leak when pinctrl_enable() fails'
mainline: 8f773bfbdd428819328a2d185976cfc6ae811cd3
backport: fbd206c9e544f6e8fbb844534d05817ab6ed637a
268b3ff414ae8942af9d6c981b5df8667c2b76b6:
title: 'pinctrl: ti: ti-iodelay: Drop if block with always false condition'
mainline: 88b3f108502bc45e6ebd005702add46759f3f45a
backport: 9521c0b13c94c6ad389f9a5d7f8213891d8924a7
7d720f351714dcbeb578af67bb7e66326504826c:
title: 'pinctrl: ti: ti-iodelay: fix possible memory leak when pinctrl_enable() fails'
mainline: 9b401f4a7170125365160c9af267a41ff6b39001
backport: 78e3f7ec45416b8b0a25ef8fcbf85b653f49d5bb
c90d81a6e1f3daab4c06f7f8aba346abc76ae07a:
title: 'pinctrl: freescale: mxs: Fix refcount of child'
mainline: 7f500f2011c0bbb6e1cacab74b4c99222e60248e
backport: 251acaffa0bd813f67f7a92082bdbd101c395f4d
175ac70d8af52bc0f5b100901702fdb2bc662885:
title: 'fs/nilfs2: remove some unused macros to tame gcc'
mainline: e7920b3e9d9f5470d5ff7d883e72a47addc0a137
backport: 2891e08c6f20e3c7b4b09dac8e949a195b46ff8c
d2b9bc7dfd6b0fa1a37eb91e68bca3175cb5ef50:
title: 'nilfs2: avoid undefined behavior in nilfs_cnt32_ge macro'
mainline: 0f3819e8c483771a59cf9d3190cd68a7a990083c
backport: 440e5d6b0d782ee0786d780761f57a117c904288
dfe19aa91378972f10530635ad83b2d77f481044:
title: 'tick/broadcast: Make takeover of broadcast hrtimer reliable'
mainline: f7d43dd206e7e18c182f200e67a8db8c209907fa
backport: 3065612975c688a1ea3f759a23856a4b9eefdc12
608a07143563a2a0d1edd57b2f4e95b0199fb497:
title: 'net: netconsole: Disable target before netpoll cleanup'
mainline: 97d9fba9a812cada5484667a46e14a4c976ca330
backport: d5744057122276d5d9c9b33a8e567e963897d502
3dfd84aa72fa7329ed4a257c8f40e0c9aff4dc8f:
title: 'af_packet: Handle outgoing VLAN packets without hardware offloading'
mainline: 79eecf631c14e7f4057186570ac20e2cfac3802e
backport: 6d8fa691e6733006d5c061a297fe601d126d748b
b4f67f09287392e0a2f7422199a193e37f2737af:
title: 'ipv6: take care of scope when choosing the src addr'
mainline: abb9a68d2c64dd9b128ae1f2e635e4d805e7ce64
backport: f58439a91781f888dce8463243b4d83be380d21c
a97e1082454f45513bc5f7ee0d9cc4e9a6869a81:
title: 'char: tpm: Fix possible memory leak in tpm_bios_measurements_open()'
mainline: 5d8e2971e817bb64225fc0b6327a78752f58a9aa
skipped: fixes patch not in branch
ad8cf035baf29467158e0550c7a42b7bb43d1db6:
title: 'media: venus: fix use after free in vdec_close'
mainline: a0157b5aa34eb43ec4c5510f9c260bbb03be937e
backport: 058c66e9aa0cd80581ff06b9294521e05ea1d0dd
f7316b2b2f11cf0c6de917beee8d3de728be24db:
title: 'hfs: fix to initialize fields of hfs_inode_info after hfs_alloc_inode()'
mainline: 26a2ed107929a855155429b11e1293b83e6b2a8b
backport: 26722f11717342d8f7deeb0c23fa6814bc31a48c
f392c36cebf4c1d6997a4cc2c0f205254acef42a:
title: 'drm/gma500: fix null pointer dereference in cdv_intel_lvds_get_modes'
mainline: cb520c3f366c77e8d69e4e2e2781a8ce48d98e79
backport: d92238c8b1116bff1babca839d923d345128c202
13b5f3ee94bdbdc4b5f40582aab62977905aedee:
title: 'drm/gma500: fix null pointer dereference in psb_intel_lvds_get_modes'
mainline: 2df7aac81070987b0f052985856aa325a38debf6
backport: 2c7d6f35aea17924ebb60002a151c8e4909cb226
296185ef87e6184e364bd9e7c983089b8e606a55:
title: 'm68k: amiga: Turn off Warp1260 interrupts during boot'
mainline: 1d8491d3e726984343dd8c3cdbe2f2b47cfdd928
backport: 1ac49c559cf87bd78734f326ef6db4c2d876d804
b80575ffa98b5bb3a5d4d392bfe4c2e03e9557db:
title: 'ext4: check dot and dotdot of dx_root before making dir indexed'
mainline: 50ea741def587a64e08879ce6c6a30131f7111e7
backport: 4ed99f550b6316ae9cfa1ffdb6c4f053631117e6
d81d7e347d1f1f48a5634607d39eb90c161c8afe:
title: 'ext4: make sure the first directory block is not a hole'
mainline: f9ca51596bbfd0f9c386dd1c613c394c78d9e5e6
backport: 839f30000100e2b3fb252f1755c4434cad12da0c
98cf9959a20dc374b7bba4b9357203e54484be58:
title: 'wifi: mwifiex: Fix interface type change'
mainline: a17b9f590f6ec2b9f1b12b1db3bf1d181de6b272
backport: b9bb3e4e90d4b44dc0667e7e5e24a8c4cd9eb9f5
db1871789f3018c5b0788318d3b1c685f2decceb:
title: 'leds: ss4200: Convert PCIBIOS_* return codes to errnos'
mainline: ce068e83976140badb19c7f1307926b4b562fac4
backport: 4e71b875b885df71c21f8f1fa380064b59fdd414
2e070bec9580702206281fc06178dea4836f2e1f:
title: 'tools/memory-model: Fix bug in lock.cat'
mainline: 4c830eef806679dc243e191f962c488dd9d00708
skipped: fixes patch not in branch
d48e11483e3eb8ade86c57f4145644725cd33eed:
title: 'hwrng: amd - Convert PCIBIOS_* return codes to errnos'
mainline: 14cba6ace79627a57fb9058582b03f0ed3832390
backport: 63576e19060aa3b515c02583870bde5d75260ed8
e9cafb31aa498558d6ff7b28baed894db7d801f3:
title: 'PCI: hv: Return zero, not garbage, when reading PCI_INTERRUPT_PIN'
mainline: fea93a3e5d5e6a09eb153866d2ce60ea3287a70d
backport: 31754844f0fd1fbfd0a6fd857ec7021240b6d3a3
229670361c29381b0e1677763590e4dbc209ecbe:
title: 'binder: fix hang of unregistered readers'
mainline: 31643d84b8c3d9c846aa0e20bc033e46c68c7e7d
backport: 080400d0031e6b30ae84fa1722d55cb6a3376f8c
5c9d1ac649469feaab4240c0c1b5920ea8649b50:
title: 'scsi: qla2xxx: Return ENOBUFS if sg_cnt is more than one for ELS cmds'
mainline: ce2065c4cc4f05635413f63f6dc038d7d4842e31
backport: 0900cd07eb9119e80a55a97784e8cc1ca6390402
2d2916516577f2239b3377d9e8d12da5e6ccdfcf:
title: 'f2fs: fix to don''t dirty inode for readonly filesystem'
mainline: 192b8fb8d1c8ca3c87366ebbef599fa80bb626b8
backport: 27f9505abcdef5527ce43c5c21ecf89bc76f2278
2f35342e709ccf655c4927aa97cf16944cfe7344:
title: 'clk: davinci: da8xx-cfgchip: Initialize clk_init_data before use'
mainline: a83b22754e351f13fb46596c85f667dc33da71ec
skipped: fixes patch not in branch
29f2c831822fde87b78c73e5db6ecfb106473cff:
title: 'ubi: eba: properly rollback inside self_check_eba'
mainline: 745d9f4a31defec731119ee8aad8ba9f2536dd9a
backport: e38af31723db1861d58b71410895872b72abc272
16b92b031b4da174342bd909130731c55f20c7ea:
title: 'decompress_bunzip2: fix rare decompression failure'
mainline: bf6acd5d16057d7accbbb1bf7dc6d8c56eeb4ecc
backport: a01900bb7d4f831a50f19c58b1b9e3c9aa9dd9d9
81a15d28f32af01493ae8c5457e0d55314a4167d:
title: 'kobject_uevent: Fix OOB access within zap_modalias_env()'
mainline: dd6e9894b451e7c85cceb8e9dc5432679a70e7dc
skipped: fixes patch not in branch
e08ec1587f576e55b855449d793eb2a3add54c44:
title: 'rtc: cmos: Fix return value of nvmem callbacks'
mainline: 1c184baccf0d5e2ef4cc1562261d0e48508a1c2b
skipped: fixes patch not in branch
086489256696eb774654a5410e86381c346356fe:
title: 'scsi: qla2xxx: During vport delete send async logout explicitly'
mainline: 76f480d7c717368f29a3870f7d64471ce0ff8fb2
backport: 930865dbd92b29bc57364695d561c289d693f72d
549aac9655320c9b245a24271b204668c5d40430:
title: 'scsi: qla2xxx: validate nvme_local_port correctly'
mainline: eb1d4ce2609584eeb7694866f34d4b213caa3af9
skipped: fixes code not in 4.14.y
b4030b619066aa1c20e075ce9382f103e0168145:
title: 'perf/x86/intel/pt: Fix topa_entry base length'
mainline: 5638bd722a44bbe97c1a7b3fae5b9efddb3e70ff
backport: b212bfa809f6d1235bbbb6c491621ce314b073a6
6d94ca5d571dfdb34f12dc3f63273ea275e8f40c:
title: 'watchdog/perf: properly initialize the turbo mode timestamp and rearm counter'
mainline: f944ffcbc2e1c759764850261670586ddf3bdabb
backport: dbffea43e8b704e5cb23e776be21c12a3e0f0b65
0818a768c96a10343d08a622906adab54da6e014:
title: 'platform: mips: cpu_hwmon: Disable driver on unsupported hardware'
mainline: f4d430db17b4ef4e9c3c352a04b2fe3c93011978
backport: 8e28810fed0aaf5624155ae6974d1cc95623edf2
d91d253c87fd1efece521ff2612078a35af673c6:
title: 'RDMA/iwcm: Fix a use-after-free related to destroying CM IDs'
mainline: aee2424246f9f1dadc33faa78990c1e2eb7826e4
backport: b4099074459a9baa637aba3a5fa6d814f32e5eb2
8010e0748cca059187021d194bb6d883d159e172:
title: 'selftests/sigaltstack: Fix ppc64 GCC build'
mainline: 17c743b9da9e0d073ff19fd5313f521744514939
backport: 0a35556f0aa6435749d819919639e400943a3430
19cce46238ffe3546e44b9c74057103ff8b24c62:
title: 'nilfs2: handle inconsistent state in nilfs_btnode_create_block()'
mainline: 4811f7af6090e8f5a398fbdd766f903ef6c0d787
backport: 0e318baa084d870466c8cefaab8d2689e56d21e7
b15593e2904d2ff0094b7170f806dba0eeefac75:
title: 'kdb: Fix bound check compiler warning'
mainline: ca976bfb3154c7bc67c4651ecd144fdf67ccaee7
backport: 2527458f09eb86ba89b673081c8a408c8a3f7591
22a100556ceab8b906ad180788bd6bdc07390f50:
title: 'kdb: address -Wformat-security warnings'
mainline: 70867efacf4370b6c7cdfc7a5b11300e9ef7de64
backport: fbcf6bbfac542e249d92ce80277a03dde0699305
90f2409c1d552f27a2b2bf8dc598d147c4173128:
title: 'kdb: Use the passed prompt in kdb_position_cursor()'
mainline: e2e821095949cde46256034975a90f88626a2a73
backport: 4925aa995a5cf9f49c04fdd1257b1d8f341dd4f5
55b732c8b09b41148eaab2fa8e31b0af47671e00:
title: 'jfs: Fix array-index-out-of-bounds in diFree'
mainline: f73f969b2eb39ad8056f6c7f3a295fa2f85e313a
backport: 4c2dc9502e8728f3a9ba9029aeaa08fc01e420d1
fe2d246080f035e0af5793cb79067ba125e4fb63:
title: 'dma: fix call order in dmam_free_coherent'
mainline: 28e8b7406d3a1f5329a03aa25a43aa28e087cb20
backport: 5a9dbd8f70793aba9e12d6d5216ce45cd9597a78
3213ac4e85945c54350ac06c09902d1c82211100:
title: 'MIPS: SMP-CPS: Fix address for GCR_ACCESS register for CM3 and later'
mainline: a263e5f309f32301e1f3ad113293f4e68a82a646
backport: 1184f039bc84987937ac8144df7a5daaffb0795c
0e8712254b48a7c6ebb76dce414a9539e772d406:
title: 'net: ip_rt_get_source() - use new style struct initializer instead of memset'
mainline: e351bb6227fbe2bb5da6f38a4cf5bd18810b0557
backport: 5b3e5dc382a0cab89cea2c533a0e5b65ae4d686e
5c65e55e41e1300c4ebf4dda22a704b2beed2423:
title: 'ipv4: Fix incorrect source address in Record Route option'
mainline: cc73bbab4b1fb8a4f53a24645871dafa5f81266a
backport: ef5a6f1d6d270c55e210ed3775352ff75e2aa48e
6c9261a2bdf614b376dbefa01e0c6bb32d14e019:
title: 'net: bonding: correctly annotate RCU in bond_should_notify_peers()'
mainline: 3ba359c0cd6eb5ea772125a7aededb4a2d516684
backport: f204855673caa3a17b49c8b9642edcd269a4fac7
7ec3335dd89c8d169e9650e4bac64fde71fdf15b:
title: 'tipc: Return non-zero value from tipc_udp_addr2str() on error'
mainline: fa96c6baef1b5385e2f0c0677b32b3839e716076
backport: 1ae654c0cdf7bfcd142367568d3a1afbed7d54e8
70db2c84631f50e02e6b32b543700699dd395803:
title: 'mISDN: Fix a use after free in hfcmulti_tx()'
mainline: 61ab751451f5ebd0b98e02276a44e23a10110402
backport: 70609fe847bf6600554b6f511b10015f76834d58
2b2d2b8766db028bd827af34075f221ae9e9efff:
title: 'mm: avoid overflows in dirty throttling logic'
mainline: 385d838df280eba6c8680f9777bfa0d0bfe7e8b2
backport: 1967ea8b282b3b05c9da41c1e2426c3bfb04bf54
11f71f0c562dbfbc3f3e2c56053bca42f7e8d71c:
title: 'PCI: rockchip: Make ''ep-gpios'' DT property optional'
mainline: 58adbfb3ebec460e8b58875c682bafd866808e80
backport: aff1d3ed73ce5882235d9f42c4510c642b9e1dac
8de378d17e5b737907c04acc2fab6d966a129f70:
title: 'PCI: rockchip: Use GPIOD_OUT_LOW flag while requesting ep_gpio'
mainline: 840b7a5edf88fe678c60dee88a135647c0ea4375
backport: 5a659bbb75dd76c32388a8b4c8ea8dff2aa79c12
f1af18ba5925abb275de8bf387fceb9fbf93a096:
title: 'parport: parport_pc: Mark expected switch fall-through'
mainline: aa1f0fa374ed23528b915a693a11b0f275a299c0
backport: d34a87ca6e4c611b125d238c3a56b712a612acd6
cb2a998b88d173ec23423fa13ae2da463449728a:
title: 'parport: Convert printk(KERN_<LEVEL> to pr_<level>('
mainline: decf26f6ec25dac868782dc1751623a87d147831
backport: af0192bb58b539ec732125a76fe4d69660147cca
884ab25dbf115938facb91be85ffed9266e26f8b:
title: 'parport: Standardize use of printmode'
mainline: a6abfdff4fe5dd19d1f1b37d72ba34cd4492fd4d
backport: 4582fe6f2d5fddcf7a63b59b666e8837f2cecf9a
166a0bddcc27de41fe13f861c8348e8e53e988c8:
title: 'dev/parport: fix the array out-of-bounds risk'
mainline: ab11dac93d2d568d151b1918d7b84c2d02bacbd5
backport: 598e7acd167941653c0a54d5732bad40db488504
b9c258b2a02ba8d6d004f45a1eafa23fd810746b:
title: 'driver core: Cast to (void *) with __force for __percpu pointer'
mainline: d7aa44f5a1f86cb40659eef06035d8d92604b9d5
backport: bdec7b3d4ccbcbd78fd4b6a2c6fe7a849754af52
700e8abd65b10792b2f179ce4e858f2ca2880f85:
title: 'devres: Fix memory leakage caused by driver API devm_free_percpu()'
mainline: bd50a974097bb82d52a458bd3ee39fb723129a0c
backport: 9b6f7f34aae733309a35d9990d4a0cdf2d2eea3b
bea2d4588e90f56da62b0dd9099484a42498b08a:
title: 'perf/x86/intel/pt: Export pt_cap_get()'
mainline: f6d079ce867d679e4dffef5b3112c7634215fd88
backport: 9ce7856eccc159df29f62b1e5ff0c6239422bf63
e3fb71f7ecbf87228148c3287eac965927ef49be:
title: 'perf/x86/intel/pt: Use helpers to obtain ToPA entry size'
mainline: fffec50f541ace292383c0cbe9a2a97d16d201c6
backport: 2de7be6b1893e070e92da91bbaa35ce22950b189
67968b8c7603007751f140f3f9f8aa8e64fc26b2:
title: 'perf/x86/intel/pt: Use pointer arithmetics instead in ToPA entry calculation'
mainline: 539f7c26b41d4ed7d88dd9756de3966ae7ca07b4
backport: ab03429ae696126f00509dac54b632bfb2282240
e9d9ec1019a90aafdb54765a3b46f36f402b481a:
title: 'perf/x86/intel/pt: Split ToPA metadata and page layout'
mainline: 38bb8d77d0b932a0773b5de2ef42479409314f96
backport: a87ac310cc99adff1aa8315d829ce984dfc0cda6
418f7db13405953c2d9223275d365d9828169076:
title: 'perf/x86/intel/pt: Fix a topa_entry base address calculation'
mainline: ad97196379d0b8cb24ef3d5006978a6554e6467f
backport: d6c356954a61ce5a5f851b9aa858f9d906e4228d
35df377f38fb516111933f132b51a386b4d4892f:
title: 'remoteproc: imx_rproc: ignore mapping vdev regions'
mainline: 8f2d8961640f0346cbe892273c3260a0d30c1931
backport: 5d99fd6160cb1a1ecd0163220164b8d1fe2cecf6
a80423f6566bc5085d6bbdd2acdb80aa20c0e915:
title: 'remoteproc: imx_rproc: Fix ignoring mapping vdev regions'
mainline: afe670e23af91d8a74a8d7049f6e0984bbf6ea11
backport: c1239a005bbf4c6b43aec1155ac3d8466b640051
6884fd0283e0831be153fb8d82d9eda8a55acaaa:
title: 'remoteproc: imx_rproc: Skip over memory region when node value is NULL'
mainline: 2fa26ca8b786888673689ccc9da6094150939982
backport: 3e1715ba7291483690f92608e08aba0d12c5ef70
6f4bc8b021d3436e5dda88350d8e0ac3c8df400f:
title: 'drm/vmwgfx: Fix overlay when using Screen Targets'
mainline: cb372a505a994cb39aa75acfb8b3bcf94787cf94
backport: 4aff76137ef2fa40ec1f424eb8e743673ffe5434
84f40b46787ecb67c7ad08a5bb1376141fa10c01:
title: 'net/iucv: fix use after free in iucv_sock_close()'
mainline: f558120cd709682b739207b48cf7479fd9568431
backport: 582d87d965d3600b178bbaf8947523e5478da1d1
97a4f78feadc431a050cc26355f95ac3d73a4d4c:
title: 'ipv6: fix ndisc_is_useropt() handling for PIO'
mainline: a46c68debf3be3a477a69ccbf0a1d050df841676
backport: c04add3c9adf1402f47ff8f51dd2ee533e863a00
ed42e8ff509d2a61c6642d1825032072dab79f26:
title: protect the fetch of ->fd[fd] in do_dup2() from mispredictions
mainline: 8aa37bde1a7b645816cda8b80df4753ecf172bf1
backport: f4c005cc381764f082f66825073bb6c43f54fe14
f4eb853103674698416ba66d41317b1d869d4bdc:
title: 'ALSA: usb-audio: Correct surround channels in UAC1 channel map'
mainline: b7b7e1ab7619deb3b299b5e5c619c3e6f183a12d
backport: 71a0712ba842211e6dc1a4f7e91dd6c7502eebe5
9f04dbd139aa1988fc8b7984ffbce7849be73f21:
title: 'net: usb: sr9700: fix uninitialized variable use in sr_mdio_read'
mainline: 08f3a5c38087d1569e982a121aad1e6acbf145ce
backport: 3f465b02b4b919181c45ef14fe5ca3638b87ac5c
2f61f0c6b7411212acd6490c5629b0049e8eaefa:
title: 'irqchip/mbigen: Fix mbigen node address layout'
mainline: 6be6cba9c4371d27f78d900ccfe34bb880d9ee20
backport: 6f4e6f1f7e5d27fa977d9900aba67c9cc3c15d4e
18da1b27ce16a14a9b636af9232acb4fb24f4c9e:
title: 'x86/mm: Fix pti_clone_pgtable() alignment assumption'
mainline: 41e71dbb0e0a0fe214545fe64af031303a08524c
skipped: fixes patch not in branch
3c90a69533b5bba73401ef884d033ea49ee99662:
title: 'net: usb: qmi_wwan: fix memory leak for not ip packets'
mainline: 7ab107544b777c3bd7feb9fe447367d8edd5b202
backport: 193653bb5bb78ddaa2698760912db0248833cccc
3840189e4619af11f558e6faff80813f008246a6:
title: 'net: linkwatch: use system_unbound_wq'
mainline: 3e7917c0cdad835a5121520fc5686d954b7a61ab
backport: 928a0513e3f0353f456c9734695c47a94f423c54
64f4938368f4be563b7652d6b18d37b317913b47:
title: 'Bluetooth: l2cap: always unlock channel in l2cap_conless_channel()'
mainline: c531e63871c0b50c8c4e62c048535a08886fba3e
backport: 0c7df8f6eff3aa1044d3f97dd249112dc4301778
7762f5317db83b70099ed1b2c100df54abddaec1:
title: 'net: fec: Stop PPS on driver remove'
mainline: 8fee6d5ad5fa18c270eedb2a2cdf58dbadefb94b
backport: 20cb64898909ba7ccad47d1e52e980ba859c29c0
2c92f8c1c456d556f15cbf51667b385026b2e6a0:
title: 'md/raid5: avoid BUG_ON() while continue reshape after reassembling'
mainline: 305a5170dc5cf3d395bb4c4e9239bca6d0b54b49
backport: a10b1779aca24535b14edba941cb59fbd35ce7c9
026befb502ce41384e5119df12c9f2d4067cb23c:
title: 'clocksource/drivers/sh_cmt: Address race condition for clock events'
mainline: db19d3aa77612983a02bd223b3f273f896b243cf
backport: f9ec6971715991696e49430547551697f1153be6
a35a163cd56b583ef698eadef9b856b0fe6e2727:
title: 'PCI: Add Edimax Vendor ID to pci_ids.h'
mainline: eee5528890d54b22b46f833002355a5ee94c3bb4
backport: ca0a3431163788b838bdccff1eac2b84a30bee91
097420e48e30f51e8f4f650b5c946f5af63ec1a3:
title: 'udf: prevent integer overflow in udf_bitmap_free_blocks()'
mainline: 56e69e59751d20993f243fb7dd6991c4e522424c
backport: 12ce9c96b15650623040f0d999b91b5d12f9936f
f4d99b55dca90ca703bdd57ee8d557cd8d6c1639:
title: 'wifi: nl80211: don''t give key data to userspace'
mainline: a7e5793035792cc46a1a4b0a783655ffa897dfe9
backport: a253db7576fd90aaa15b1dabec335f2f9df7c21e
fad0bb34cfcea693903409356693988f04715b8e:
title: 'btrfs: fix bitmap leak when loading free space cache on duplicate entry'
mainline: 320d8dc612660da84c3b70a28658bb38069e5a9a
backport: dd102bb94b5dba7e5376f09504503f3bc2cf16da
019f538f9fe0b48bb436135edba69aa3a5156cdb:
title: 'media: uvcvideo: Ignore empty TS packets'
mainline: 5cd7c25f6f0576073b3d03bc4cfb1e8ca63a1195
backport: feddc92ee4859f5e6c5a69135f94547740b292a9
eada6212c055089962ca3ee7b8ab11d8f4d0e4f5:
title: 'media: uvcvideo: Fix the bandwdith quirk on USB 3.x'
mainline: 9e3d55fbd160b3ca376599a68b4cddfdc67d4153
backport: 00a39f4e0adbb1b194e0a1ba2219e26c57042dc7
831db95409cc12589c14a71b9bf6c3e7f70bf5a0:
title: 'jbd2: avoid memleak in jbd2_journal_write_metadata_buffer'
mainline: cc102aa24638b90e04364d64e4f58a1fa91a1976
backport: 82f1f40db08d606f0538e4a88e06a919b8656645
7a7e60ed23d471a07dbbe72565d2992ee8244bbe:
title: 's390/sclp: Prevent release of buffer in I/O'
mainline: bf365071ea92b9579d5a272679b74052a5643e35
skipped: fixes code not in 4.14.y
06d281f0ad7504e9f250c6a9ef78d9e48cea5717:
title: 'SUNRPC: Fix a race to wake a sync task'
mainline: ed0172af5d6fc07d1b40ca82f5ca3979300369f7
backport: 6062fd1ee48c6cb081cbc525e31fd43fa9632dbc
585b8d86c39882425f737b800e7552fb42a4785f:
title: 'ext4: fix wrong unit use in ext4_mb_find_by_goal'
mainline: 99c515e3a860576ba90c11acbc1d6488dfca6463
backport: fb37e57b6e2f8217b201737f10af809289674469
ced08f48bdc3f7d4b13d9355283cfeee523220ce:
title: 'arm64: Add support for SB barrier and patch in over DSB; ISB sequences'
mainline: bd4fb6d270bc423a9a4098108784f7f9254c4e6d
skipped: new feature
6ad94963c7bf76085eaf852a104afa0a272a7c3c:
title: 'arm64: cpufeature: Force HWCAP to be based on the sysreg visible to user-space'
mainline: 237405ebef580a7352a52129b2465c117145eafa
skipped: new feature
ab807f3011075a045c2e6944a3c5fc22ed29532d:
title: 'arm64: Add Neoverse-V2 part'
mainline: f4d9d9dcc70b96b5e5d7801bd5fbf8491b07b13d
skipped: new feature
622c917154477948203f7f0871dbf528f48635cc:
title: 'arm64: cputype: Add Cortex-X4 definitions'
mainline: 02a0a04676fa7796d9cbc9eb5ca120aaa194d2dd
skipped: new feature
588fd573491287b3ebc84c51cfb6b357bdb9a002:
title: 'arm64: cputype: Add Neoverse-V3 definitions'
mainline: 0ce85db6c2141b7ffb95709d76fc55a27ff3cdc1
skipped: new feature
213506584d4422288b73d1f99097a5fc39207b46:
title: 'arm64: errata: Add workaround for Arm errata 3194386 and 3312417'
mainline: 7187bb7d0b5c7dfa18ca82e9e5c75e13861b1d88
skipped: new feature
a11ef811b9763002b41ad44185654f8e70da68d5:
title: 'arm64: cputype: Add Cortex-X3 definitions'
mainline: be5a6f238700f38b534456608588723fba96c5ab
skipped: new feature
b1759d12e00cbced653c450adc2bfa9c04ce3cc2:
title: 'arm64: cputype: Add Cortex-A720 definitions'
mainline: add332c40328cf06fe35e4b3cde8ec315c4629e5
skipped: new feature
9c376afba7d9a787f8452052dc3af479253c5678:
title: 'arm64: cputype: Add Cortex-X925 definitions'
mainline: fd2ff5f0b320f418288e7a1f919f648fbc8a0dfc
skipped: new feature
023c0f2e7f168e0c9e6f04c126d404bef6ca3130:
title: 'arm64: errata: Unify speculative SSBS errata logic'
mainline: ec768766608092087dfb5c1fc45a16a6f524dee2
skipped: new feature
873b451ffbd4a438d470ec1c95aba110610c09cd:
title: 'arm64: errata: Expand speculative SSBS workaround'
mainline: 75b3c43eab594bfbd8184ec8ee1a6b820950819a
skipped: new feature
e9a2bed4156d0504ad19cdf283194d63909b8d7c:
title: 'arm64: cputype: Add Cortex-X1C definitions'
mainline: 58d245e03c324d083a0ec3b9ab8ebd46ec9848d7
skipped: new feature
6dbc0fbaa6f3db35c1ae78e381fa5f06327f0acf:
title: 'arm64: cputype: Add Cortex-A725 definitions'
mainline: 9ef54a384526911095db465e77acc1cb5266b32c
skipped: new feature
236f749edbd6c194f6dc8bd1393c8e56fd773f32:
title: 'arm64: errata: Expand speculative SSBS workaround (again)'
mainline: adeec61a4723fd3e39da68db4cc4d924e6d7f641
skipped: new feature
6adca954fc039151ef4f9c1ea1f201e12a24593d:
title: 'i2c: smbus: Don''t filter out duplicate alerts'
mainline: dca0dd28fa5e0a1ec41a623dbaf667601fc62331
backport: 7a346f1ce3ab37134f2365ab6a74422747285fdb
9540badee607a99cc07bddbd0a7d4a01fd3b9661:
title: 'i2c: smbus: Improve handling of stuck alerts'
mainline: 37c526f00bc1c4f847fc800085f8f009d2e11be6
backport: c364d250ada36665ea06f204449d1162cb5e1432
3b20631d0704fe4f6bf4cf9a49fd19871ebaeffb:
title: 'i2c: smbus: Send alert notifications to all devices if source not found'
mainline: f6c29f710c1ff2590109f83be3e212b86c01e0f3
backport: a0bb631d7d0a1773ebbb427ac8564ae8818b4dfe
0b8cf71c2c1b9a6e8f7acd620d8e4b0c24a12920:
title: 'bpf: kprobe: remove unused declaring of bpf_kprobe_override'
mainline: 0e8b53979ac86eddb3fd76264025a70071a25574
skipped: fixes patch not in branch
bebc69b574d6a3c54e8951dd891e78a20e2a3f54:
title: 'spi: lpspi: Replace all "master" with "controller"'
mainline: 07d71557494c05b0651def1651bf6d7e7f47bbbb
backport: 0ef61696a9fff3915fb5aa6f7bb9f89682d10ad9
b1b5a04eadd9b786dcd4bc82e726498a8f6fd50a:
title: 'spi: lpspi: Add slave mode support'
mainline: bcd87317aae26b9ac497cbc1232783aaea1aeed4
backport: 12bfab716ae4cd47449d7636a25326099daa10a9
8f8b12339ef7cc8e15989f6445aad5a9bf8c00f5:
title: 'spi: lpspi: Let watermark change with send data length'
mainline: cf86874bb9bdb99ba3620428b59b0408fbc703d0
backport: 6a6c19da1d3917fc8c51d2fd69b667a5e7b192ec
0b536d6c52a88b6a5a7f40d1ac91ffe170b8df87:
title: 'spi: lpspi: Add i.MX8 boards support for lpspi'
mainline: f5e5afdb0e56e81123e02b6a64dd32adc19a90d4
backport: dc2d2de15c66a8e41275b4d59e6082955e477991
3bb46e26783c3c86e67172f695908a066be69e12:
title: 'spi: lpspi: add the error info of transfer speed setting'
mainline: 77736a98b859e2c64aebbd0f90b2ce4b17682396
backport: 030b58b3539d0fdccf6284113c29f60c76b60916
da6cc32c245500f417e4b96d67722b8a0a07fd94:
title: 'spi: fsl-lpspi: remove unneeded array'
mainline: 2fa98705a9289c758b6154a22174aa8d4041a285
backport: d859e0255cb169a2d7aa96b42defafd7c515df0c
81964823116357a636201afa4010fa30f050446e:
title: 'spi: spi-fsl-lpspi: Fix scldiv calculation'
mainline: 730bbfaf7d4890bd99e637db7767dc68cfeb24e7
backport: dcde078eb1be234c810305963c845eaa63f20813
643293b68fbb6c03f5e907736498da17d43f0d81:
title: 'ALSA: line6: Fix racy access to midibuf'
mainline: 15b7a03205b31bc5623378c190d22b7ff60026f1
backport: 9ab8902f51b8ac3c51666922a9719c1e4d81f105
5a3c473b28ae1c1f7c4dc129e30cb19ae6e96f89:
title: 'usb: vhci-hcd: Do not drop references before new references are gained'
mainline: afdcfd3d6fcdeca2735ca8d994c5f2d24a368f0a
backport: d41cf1c7bc4e9706d684d3fb2c24046f673ffb78
1907ed1be026c771086e6adc560f38dc50e82382:
title: 'USB: serial: debug: do not echo input by default'
mainline: 00af4f3dda1461ec90d892edc10bec6d3c50c554
backport: 95314b1272d1d96f5737c5b1e208fabd1128db3c
ba15815dd24cc5ec0d23e2170dc58c7db1e03b4a:
title: 'usb: gadget: core: Check for unset descriptor'
mainline: 973a57891608a98e894db2887f278777f564de18
backport: 551fbbddb6f5ff52bdb1c0cdb3d096e359e088da
c4da5b5deb343346909920c41645ad85adff4c6c:
title: 'scsi: ufs: core: Fix hba->last_dme_cmd_tstamp timestamp updating logic'
mainline: ab9fd06cb8f0db0854291833fc40c789e43a361f
backport: b41af170f9ad55d4780688b92c032579655218fe
f54abf332a2bc0413cfa8bd6a8511f7aa99faea0:
title: 'tick/broadcast: Move per CPU pointer access into the atomic section'
mainline: 6881e75237a84093d0986f56223db3724619f26e
backport: 6fad54cc7a6c8c4750209bfcff1b54dd60b086db
9dfe2eef1ecfbb1f29e678700247de6010784eb9:
title: 'ntp: Clamp maxerror and esterror to operating range'
mainline: 87d571d6fb77ec342a985afa8744bb9bb75b3622
backport: 07f7f40df90538c4bacb06d64ededc68b6d6e9bf
49ea4e0d862632d51667da5e7a9c88a560e9c5a1:
title: 'driver core: Fix uevent_show() vs driver detach race'
mainline: 15fffc6a5624b13b428bb1c6e9088e32a55eb82c
backport: c72f8e96b8386d50894df2faed9718d7cbfc312d
a13f8b269b6f4c9371ab149ecb65d2edb52e9669:
title: 'ntp: Safeguard against time_constant overflow'
mainline: 06c03c8edce333b9ad9c6b207d93d3a5ae7c10c0
backport: 53390d85b1f4fca100eca68612fe9ae736ef5caf
3bbd90fca824e6fd61fb20f6dd2b0fa5f8b14bba:
title: 'serial: core: check uartclk for zero to avoid divide by zero'
mainline: 6eabce6608d6f3440f4c03aa3d3ef50a47a3d193
backport: 1d33b86b2b99774eae26926b2f5f4900f826638f
f1aa9f19da35f72ce8ec3196f0a7bc06e296aaeb:
title: 'power: supply: axp288_charger: Fix constant_charge_voltage writes'
mainline: b34ce4a59cfe9cd0d6f870e6408e8ec88a964585
backport: d9b1fa9a24e5ba3115a289421d535abf954efd7a
e3cb8400a72a9e5e25365d380b290cdd50ccdb5c:
title: 'power: supply: axp288_charger: Round constant_charge_voltage writes down'
mainline: 81af7f2342d162e24ac820c10e68684d9f927663
backport: bd9bfbcc05c1c7af22dfa9ca8b2ff1d6395db661
302ceb625d7b990db205a15e371f9a71238de91c:
title: 'tracing: Fix overflow in get_free_elt()'
mainline: bcf86c01ca4676316557dd482c8416ece8c2e143
backport: b28271a4428daf3c20b71a8e7cf218a4c38c698b
34f36e6ee5bd7eff8b2adcd9fcaef369f752d82e:
title: 'x86/mtrr: Check if fixed MTRRs exist before saving them'
mainline: 919f18f961c03d6694aa726c514184f2311a4614
backport: 4f0b886693fe2a82d8896cd431eb529777e1bbdc
52f05898629b25fc382754d837be624205ce67f8:
title: 'drm/bridge: analogix_dp: properly handle zero sized AUX transactions'
mainline: e82290a2e0e8ec5e836ecad1ca025021b3855c2d
backport: 5dfe0cc24eab4d1e640e3cfc7ef155216fb29f2a
7db72e8e538e10afefe589d6203ffb4f5a1cbd9a:
title: 'drm/mgag200: Set DDC timeout in milliseconds'
mainline: ecde5db1598aecab54cc392282c15114f526f05f
backport: e391c9f51faaf4a35bb29343af0d29164938363a
9dd6e5296c8ad1bbb88933b8150383bc0eba9488:
title: 'kbuild: Fix ''-S -c'' in x86 stack protector scripts'
mainline: 3415b10a03945b0da4a635e146750dfe5ce0f448
backport: 6bd6cf1374f27ba771760e53caf8c276e794b638
61fbbac22c8ce73d0c492caf45a286c3f021c0fd:
title: 'netfilter: nf_tables: set element extended ACK reporting support'
mainline: b53c116642502b0c85ecef78bff4f826a7dd4145
backport: 9aee9974b20b6907210221aba005ec36135348a4
f8dfda798650241c1692058713ca4fef8e429061:
title: 'netfilter: nf_tables: use timestamp to check for set element timeout'
mainline: 7395dfacfff65e9938ac0889dafa1ab01e987d15
skipped: too risky to backport
1947e4c3346faa8ac7e343652c0fd3b3e394202f:
title: 'netfilter: nf_tables: prefer nft_chain_validate'
mainline: cff3bd012a9512ac5ed858d38e6ed65f6391008c
skipped: missing nft_chain_validate() and related code
5e1d9d92c5ef03c177422262cce31863af964ef3:
title: 'arm64: cpufeature: Fix the visibility of compat hwcaps'
mainline: 85f1506337f0c79a4955edfeee86a18628e3735f
skipped: (unknown reason)
92d206c404e4b1780a7d188aac2c7c34c3f15ac3:
title: 'media: uvcvideo: Use entity get_cur in uvc_ctrl_set'
mainline: 5f36851c36b30f713f588ed2b60aa7b4512e2c76
skipped: revert fixed patch instead
3e06073d24807f04b4694108a8474decb7b99e60:
title: 'drm/i915/gem: Fix Virtual Memory mapping boundaries calculation'
mainline: 8bdd9ef7e9b1b2a73e394712b72b22055e0e26c3
backport: 3ccfe379cab98c308e84733885655b1c7c956b80
d5c3c7e26275a2d83b894d30f7582a42853a958f:
title: 'exec: Fix ToCToU between perm check and set-uid/gid usage'
mainline: f50733b45d865f91db90919f8311e2127ce5a0cb
backport: 02acb3b20db4e8372b854be6ce9846446def401c
9cc0878c7d7f12c10b3cc40197668816c918b465:
title: 'nvme/pci: Add APST quirk for Lenovo N60z laptop'
mainline: ab091ec536cb7b271983c0c063b17f62f3591583
backport: 92af3424a5a42e8014f39c82996fe01a8ba6aaf0

View File

@ -298,17 +298,25 @@ functions is used.
The header file linux/hwmon-sysfs.h provides a number of useful macros to
declare and use hardware monitoring sysfs attributes.
In many cases, you can use the exsting define DEVICE_ATTR to declare such
attributes. This is feasible if an attribute has no additional context. However,
in many cases there will be additional information such as a sensor index which
will need to be passed to the sysfs attribute handling function.
In many cases, you can use the exsting define DEVICE_ATTR or its variants
DEVICE_ATTR_{RW,RO,WO} to declare such attributes. This is feasible if an
attribute has no additional context. However, in many cases there will be
additional information such as a sensor index which will need to be passed
to the sysfs attribute handling function.
SENSOR_DEVICE_ATTR and SENSOR_DEVICE_ATTR_2 can be used to define attributes
which need such additional context information. SENSOR_DEVICE_ATTR requires
one additional argument, SENSOR_DEVICE_ATTR_2 requires two.
SENSOR_DEVICE_ATTR defines a struct sensor_device_attribute variable.
This structure has the following fields.
Simplified variants of SENSOR_DEVICE_ATTR and SENSOR_DEVICE_ATTR_2 are available
and should be used if standard attribute permissions and function names are
feasible. Standard permissions are 0644 for SENSOR_DEVICE_ATTR[_2]_RW,
0444 for SENSOR_DEVICE_ATTR[_2]_RO, and 0200 for SENSOR_DEVICE_ATTR[_2]_WO.
Standard functions, similar to DEVICE_ATTR_{RW,RO,WO}, have _show and _store
appended to the provided function name.
SENSOR_DEVICE_ATTR and its variants define a struct sensor_device_attribute
variable. This structure has the following fields.
struct sensor_device_attribute {
struct device_attribute dev_attr;
@ -319,8 +327,8 @@ You can use to_sensor_dev_attr to get the pointer to this structure from the
attribute read or write function. Its parameter is the device to which the
attribute is attached.
SENSOR_DEVICE_ATTR_2 defines a struct sensor_device_attribute_2 variable,
which is defined as follows.
SENSOR_DEVICE_ATTR_2 and its variants define a struct sensor_device_attribute_2
variable, which is defined as follows.
struct sensor_device_attribute_2 {
struct device_attribute dev_attr;

View File

@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
VERSION = 4
PATCHLEVEL = 14
SUBLEVEL = 352
SUBLEVEL = 353
EXTRAVERSION = -openela
NAME = Petit Gorille

View File

@ -626,8 +626,8 @@
<0>, <24000000>,
<24000000>, <24000000>,
<15000000>, <15000000>,
<100000000>, <100000000>,
<100000000>, <100000000>,
<300000000>, <100000000>,
<400000000>, <100000000>,
<50000000>, <100000000>,
<100000000>, <100000000>,
<50000000>, <50000000>,

View File

@ -181,6 +181,15 @@ int __init amiga_parse_bootinfo(const struct bi_record *record)
dev->slotsize = be16_to_cpu(cd->cd_SlotSize);
dev->boardaddr = be32_to_cpu(cd->cd_BoardAddr);
dev->boardsize = be32_to_cpu(cd->cd_BoardSize);
/* CS-LAB Warp 1260 workaround */
if (be16_to_cpu(dev->rom.er_Manufacturer) == ZORRO_MANUF(ZORRO_PROD_CSLAB_WARP_1260) &&
dev->rom.er_Product == ZORRO_PROD(ZORRO_PROD_CSLAB_WARP_1260)) {
/* turn off all interrupts */
pr_info("Warp 1260 card detected: applying interrupt storm workaround\n");
*(uint32_t *)(dev->boardaddr + 0x1000) = 0xfff;
}
} else
pr_warn("amiga_parse_bootinfo: too many AutoConfig devices\n");
#endif /* CONFIG_ZORRO */

View File

@ -302,11 +302,7 @@ void __init atari_init_IRQ(void)
if (ATARIHW_PRESENT(SCU)) {
/* init the SCU if present */
tt_scu.sys_mask = 0x10; /* enable VBL (for the cursor) and
* disable HSYNC interrupts (who
* needs them?) MFP and SCC are
* enabled in VME mask
*/
tt_scu.sys_mask = 0x0; /* disable all interrupts */
tt_scu.vme_mask = 0x60; /* enable MFP and SCC ints */
} else {
/* If no SCU and no Hades, the HSYNC interrupt needs to be

View File

@ -33,7 +33,7 @@ static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int siz
x = tmp;
break;
default:
tmp = __invalid_xchg_size(x, ptr, size);
x = __invalid_xchg_size(x, ptr, size);
break;
}

View File

@ -232,6 +232,10 @@ GCR_ACCESSOR_RO(32, 0x0d0, gic_status)
GCR_ACCESSOR_RO(32, 0x0f0, cpc_status)
#define CM_GCR_CPC_STATUS_EX BIT(0)
/* GCR_ACCESS - Controls core/IOCU access to GCRs */
GCR_ACCESSOR_RW(32, 0x120, access_cm3)
#define CM_GCR_ACCESS_ACCESSEN GENMASK(7, 0)
/* GCR_L2_CONFIG - Indicates L2 cache configuration when Config5.L2C=1 */
GCR_ACCESSOR_RW(32, 0x130, l2_config)
#define CM_GCR_L2_CONFIG_BYPASS BIT(20)

View File

@ -233,7 +233,10 @@ static void boot_core(unsigned int core, unsigned int vpe_id)
write_gcr_co_reset_ext_base(CM_GCR_Cx_RESET_EXT_BASE_UEB);
/* Ensure the core can access the GCRs */
set_gcr_access(1 << core);
if (mips_cm_revision() < CM_REV_CM3)
set_gcr_access(1 << core);
else
set_gcr_access_cm3(1 << core);
if (mips_cpc_present()) {
/* Reset the core */

0
arch/mips/pci/pcie-octeon.c Executable file → Normal file
View File

View File

@ -137,32 +137,21 @@ int print_insn_powerpc (unsigned long insn, unsigned long memaddr)
bool insn_is_short;
ppc_cpu_t dialect;
dialect = PPC_OPCODE_PPC | PPC_OPCODE_COMMON
| PPC_OPCODE_64 | PPC_OPCODE_POWER4 | PPC_OPCODE_ALTIVEC;
dialect = PPC_OPCODE_PPC | PPC_OPCODE_COMMON;
if (cpu_has_feature(CPU_FTRS_POWER5))
dialect |= PPC_OPCODE_POWER5;
if (IS_ENABLED(CONFIG_PPC64))
dialect |= PPC_OPCODE_64 | PPC_OPCODE_POWER4 | PPC_OPCODE_CELL |
PPC_OPCODE_POWER5 | PPC_OPCODE_POWER6 | PPC_OPCODE_POWER7 | PPC_OPCODE_POWER8 |
PPC_OPCODE_POWER9;
if (cpu_has_feature(CPU_FTRS_CELL))
dialect |= (PPC_OPCODE_CELL | PPC_OPCODE_ALTIVEC);
if (cpu_has_feature(CPU_FTR_TM))
dialect |= PPC_OPCODE_HTM;
if (cpu_has_feature(CPU_FTRS_POWER6))
dialect |= (PPC_OPCODE_POWER5 | PPC_OPCODE_POWER6 | PPC_OPCODE_ALTIVEC);
if (cpu_has_feature(CPU_FTR_ALTIVEC))
dialect |= PPC_OPCODE_ALTIVEC | PPC_OPCODE_ALTIVEC2;
if (cpu_has_feature(CPU_FTRS_POWER7))
dialect |= (PPC_OPCODE_POWER5 | PPC_OPCODE_POWER6 | PPC_OPCODE_POWER7
| PPC_OPCODE_ALTIVEC | PPC_OPCODE_VSX);
if (cpu_has_feature(CPU_FTRS_POWER8))
dialect |= (PPC_OPCODE_POWER5 | PPC_OPCODE_POWER6 | PPC_OPCODE_POWER7
| PPC_OPCODE_POWER8 | PPC_OPCODE_HTM
| PPC_OPCODE_ALTIVEC | PPC_OPCODE_ALTIVEC2 | PPC_OPCODE_VSX);
if (cpu_has_feature(CPU_FTRS_POWER9))
dialect |= (PPC_OPCODE_POWER5 | PPC_OPCODE_POWER6 | PPC_OPCODE_POWER7
| PPC_OPCODE_POWER8 | PPC_OPCODE_POWER9 | PPC_OPCODE_HTM
| PPC_OPCODE_ALTIVEC | PPC_OPCODE_ALTIVEC2
| PPC_OPCODE_VSX | PPC_OPCODE_VSX3);
if (cpu_has_feature(CPU_FTR_VSX))
dialect |= PPC_OPCODE_VSX | PPC_OPCODE_VSX3;
/* Get the major opcode of the insn. */
opcode = NULL;

View File

@ -247,6 +247,7 @@ void prom_sun4v_guest_soft_state(void);
int prom_ihandle2path(int handle, char *buffer, int bufsize);
/* Client interface level routines. */
void prom_cif_init(void *cif_handler);
void p1275_cmd_direct(unsigned long *);
#endif /* !(__SPARC64_OPLIB_H) */

View File

@ -26,9 +26,6 @@ phandle prom_chosen_node;
* routines in the prom library.
* It gets passed the pointer to the PROM vector.
*/
extern void prom_cif_init(void *);
void __init prom_init(void *cif_handler)
{
phandle node;

View File

@ -49,7 +49,7 @@ void p1275_cmd_direct(unsigned long *args)
local_irq_restore(flags);
}
void prom_cif_init(void *cif_handler, void *cif_stack)
void prom_cif_init(void *cif_handler)
{
p1275buf.prom_cif_handler = (void (*)(long *))cif_handler;
}

View File

@ -75,7 +75,7 @@ static struct pt_cap_desc {
PT_CAP(psb_periods, 1, CPUID_EBX, 0xffff0000),
};
static u32 pt_cap_get(enum pt_capabilities cap)
u32 intel_pt_validate_hw_cap(enum pt_capabilities cap)
{
struct pt_cap_desc *cd = &pt_caps[cap];
u32 c = pt_pmu.caps[cd->leaf * PT_CPUID_REGS_NUM + cd->reg];
@ -83,6 +83,7 @@ static u32 pt_cap_get(enum pt_capabilities cap)
return (c & cd->mask) >> shift;
}
EXPORT_SYMBOL_GPL(intel_pt_validate_hw_cap);
static ssize_t pt_cap_show(struct device *cdev,
struct device_attribute *attr,
@ -92,7 +93,7 @@ static ssize_t pt_cap_show(struct device *cdev,
container_of(attr, struct dev_ext_attribute, attr);
enum pt_capabilities cap = (long)ea->var;
return snprintf(buf, PAGE_SIZE, "%x\n", pt_cap_get(cap));
return snprintf(buf, PAGE_SIZE, "%x\n", intel_pt_validate_hw_cap(cap));
}
static struct attribute_group pt_cap_group = {
@ -310,16 +311,16 @@ static bool pt_event_valid(struct perf_event *event)
return false;
if (config & RTIT_CTL_CYC_PSB) {
if (!pt_cap_get(PT_CAP_psb_cyc))
if (!intel_pt_validate_hw_cap(PT_CAP_psb_cyc))
return false;
allowed = pt_cap_get(PT_CAP_psb_periods);
allowed = intel_pt_validate_hw_cap(PT_CAP_psb_periods);
requested = (config & RTIT_CTL_PSB_FREQ) >>
RTIT_CTL_PSB_FREQ_OFFSET;
if (requested && (!(allowed & BIT(requested))))
return false;
allowed = pt_cap_get(PT_CAP_cycle_thresholds);
allowed = intel_pt_validate_hw_cap(PT_CAP_cycle_thresholds);
requested = (config & RTIT_CTL_CYC_THRESH) >>
RTIT_CTL_CYC_THRESH_OFFSET;
if (requested && (!(allowed & BIT(requested))))
@ -334,10 +335,10 @@ static bool pt_event_valid(struct perf_event *event)
* Spec says that setting mtc period bits while mtc bit in
* CPUID is 0 will #GP, so better safe than sorry.
*/
if (!pt_cap_get(PT_CAP_mtc))
if (!intel_pt_validate_hw_cap(PT_CAP_mtc))
return false;
allowed = pt_cap_get(PT_CAP_mtc_periods);
allowed = intel_pt_validate_hw_cap(PT_CAP_mtc_periods);
if (!allowed)
return false;
@ -349,11 +350,11 @@ static bool pt_event_valid(struct perf_event *event)
}
if (config & RTIT_CTL_PWR_EVT_EN &&
!pt_cap_get(PT_CAP_power_event_trace))
!intel_pt_validate_hw_cap(PT_CAP_power_event_trace))
return false;
if (config & RTIT_CTL_PTW) {
if (!pt_cap_get(PT_CAP_ptwrite))
if (!intel_pt_validate_hw_cap(PT_CAP_ptwrite))
return false;
/* FUPonPTW without PTW doesn't make sense */
@ -545,16 +546,8 @@ static void pt_config_buffer(void *buf, unsigned int topa_idx,
wrmsrl(MSR_IA32_RTIT_OUTPUT_MASK, reg);
}
/*
* Keep ToPA table-related metadata on the same page as the actual table,
* taking up a few words from the top
*/
#define TENTS_PER_PAGE (((PAGE_SIZE - 40) / sizeof(struct topa_entry)) - 1)
/**
* struct topa - page-sized ToPA table with metadata at the top
* @table: actual ToPA table entries, as understood by PT hardware
* struct topa - ToPA metadata
* @list: linkage to struct pt_buffer's list of tables
* @phys: physical address of this page
* @offset: offset of the first entry in this table in the buffer
@ -562,7 +555,6 @@ static void pt_config_buffer(void *buf, unsigned int topa_idx,
* @last: index of the last initialized entry in this table
*/
struct topa {
struct topa_entry table[TENTS_PER_PAGE];
struct list_head list;
u64 phys;
u64 offset;
@ -570,8 +562,40 @@ struct topa {
int last;
};
/*
* Keep ToPA table-related metadata on the same page as the actual table,
* taking up a few words from the top
*/
#define TENTS_PER_PAGE \
((PAGE_SIZE - sizeof(struct topa)) / sizeof(struct topa_entry))
/**
* struct topa_page - page-sized ToPA table with metadata at the top
* @table: actual ToPA table entries, as understood by PT hardware
* @topa: metadata
*/
struct topa_page {
struct topa_entry table[TENTS_PER_PAGE];
struct topa topa;
};
static inline struct topa_page *topa_to_page(struct topa *topa)
{
return container_of(topa, struct topa_page, topa);
}
static inline struct topa_page *topa_entry_to_page(struct topa_entry *te)
{
return (struct topa_page *)((unsigned long)te & PAGE_MASK);
}
/* make -1 stand for the last table entry */
#define TOPA_ENTRY(t, i) ((i) == -1 ? &(t)->table[(t)->last] : &(t)->table[(i)])
#define TOPA_ENTRY(t, i) \
((i) == -1 \
? &topa_to_page(t)->table[(t)->last] \
: &topa_to_page(t)->table[(i)])
#define TOPA_ENTRY_SIZE(t, i) (sizes(TOPA_ENTRY((t), (i))->size))
/**
* topa_alloc() - allocate page-sized ToPA table
@ -583,27 +607,27 @@ struct topa {
static struct topa *topa_alloc(int cpu, gfp_t gfp)
{
int node = cpu_to_node(cpu);
struct topa *topa;
struct topa_page *tp;
struct page *p;
p = alloc_pages_node(node, gfp | __GFP_ZERO, 0);
if (!p)
return NULL;
topa = page_address(p);
topa->last = 0;
topa->phys = page_to_phys(p);
tp = page_address(p);
tp->topa.last = 0;
tp->topa.phys = page_to_phys(p);
/*
* In case of singe-entry ToPA, always put the self-referencing END
* link as the 2nd entry in the table
*/
if (!pt_cap_get(PT_CAP_topa_multiple_entries)) {
TOPA_ENTRY(topa, 1)->base = topa->phys >> TOPA_SHIFT;
TOPA_ENTRY(topa, 1)->end = 1;
if (!intel_pt_validate_hw_cap(PT_CAP_topa_multiple_entries)) {
TOPA_ENTRY(&tp->topa, 1)->base = tp->topa.phys;
TOPA_ENTRY(&tp->topa, 1)->end = 1;
}
return topa;
return &tp->topa;
}
/**
@ -638,7 +662,7 @@ static void topa_insert_table(struct pt_buffer *buf, struct topa *topa)
topa->offset = last->offset + last->size;
buf->last = topa;
if (!pt_cap_get(PT_CAP_topa_multiple_entries))
if (!intel_pt_validate_hw_cap(PT_CAP_topa_multiple_entries))
return;
BUG_ON(last->last != TENTS_PER_PAGE - 1);
@ -654,7 +678,7 @@ static void topa_insert_table(struct pt_buffer *buf, struct topa *topa)
static bool topa_table_full(struct topa *topa)
{
/* single-entry ToPA is a special case */
if (!pt_cap_get(PT_CAP_topa_multiple_entries))
if (!intel_pt_validate_hw_cap(PT_CAP_topa_multiple_entries))
return !!topa->last;
return topa->last == TENTS_PER_PAGE - 1;
@ -690,7 +714,8 @@ static int topa_insert_pages(struct pt_buffer *buf, gfp_t gfp)
TOPA_ENTRY(topa, -1)->base = page_to_phys(p) >> TOPA_SHIFT;
TOPA_ENTRY(topa, -1)->size = order;
if (!buf->snapshot && !pt_cap_get(PT_CAP_topa_multiple_entries)) {
if (!buf->snapshot &&
!intel_pt_validate_hw_cap(PT_CAP_topa_multiple_entries)) {
TOPA_ENTRY(topa, -1)->intr = 1;
TOPA_ENTRY(topa, -1)->stop = 1;
}
@ -712,22 +737,23 @@ static void pt_topa_dump(struct pt_buffer *buf)
struct topa *topa;
list_for_each_entry(topa, &buf->tables, list) {
struct topa_page *tp = topa_to_page(topa);
int i;
pr_debug("# table @%p (%016Lx), off %llx size %zx\n", topa->table,
pr_debug("# table @%p (%016Lx), off %llx size %zx\n", tp->table,
topa->phys, topa->offset, topa->size);
for (i = 0; i < TENTS_PER_PAGE; i++) {
pr_debug("# entry @%p (%lx sz %u %c%c%c) raw=%16llx\n",
&topa->table[i],
(unsigned long)topa->table[i].base << TOPA_SHIFT,
sizes(topa->table[i].size),
topa->table[i].end ? 'E' : ' ',
topa->table[i].intr ? 'I' : ' ',
topa->table[i].stop ? 'S' : ' ',
*(u64 *)&topa->table[i]);
if ((pt_cap_get(PT_CAP_topa_multiple_entries) &&
topa->table[i].stop) ||
topa->table[i].end)
&tp->table[i],
(unsigned long)tp->table[i].base << TOPA_SHIFT,
sizes(tp->table[i].size),
tp->table[i].end ? 'E' : ' ',
tp->table[i].intr ? 'I' : ' ',
tp->table[i].stop ? 'S' : ' ',
*(u64 *)&tp->table[i]);
if ((intel_pt_validate_hw_cap(PT_CAP_topa_multiple_entries) &&
tp->table[i].stop) ||
tp->table[i].end)
break;
}
}
@ -770,7 +796,7 @@ static void pt_update_head(struct pt *pt)
/* offset of the current output region within this table */
for (topa_idx = 0; topa_idx < buf->cur_idx; topa_idx++)
base += sizes(buf->cur->table[topa_idx].size);
base += TOPA_ENTRY_SIZE(buf->cur, topa_idx);
if (buf->snapshot) {
local_set(&buf->data_size, base);
@ -790,7 +816,7 @@ static void pt_update_head(struct pt *pt)
*/
static void *pt_buffer_region(struct pt_buffer *buf)
{
return phys_to_virt(buf->cur->table[buf->cur_idx].base << TOPA_SHIFT);
return phys_to_virt((phys_addr_t)TOPA_ENTRY(buf->cur, buf->cur_idx)->base << TOPA_SHIFT);
}
/**
@ -799,7 +825,7 @@ static void *pt_buffer_region(struct pt_buffer *buf)
*/
static size_t pt_buffer_region_size(struct pt_buffer *buf)
{
return sizes(buf->cur->table[buf->cur_idx].size);
return TOPA_ENTRY_SIZE(buf->cur, buf->cur_idx);
}
/**
@ -828,8 +854,8 @@ static void pt_handle_status(struct pt *pt)
* means we are already losing data; need to let the decoder
* know.
*/
if (!pt_cap_get(PT_CAP_topa_multiple_entries) ||
buf->output_off == sizes(TOPA_ENTRY(buf->cur, buf->cur_idx)->size)) {
if (!intel_pt_validate_hw_cap(PT_CAP_topa_multiple_entries) ||
buf->output_off == pt_buffer_region_size(buf)) {
perf_aux_output_flag(&pt->handle,
PERF_AUX_FLAG_TRUNCATED);
advance++;
@ -840,7 +866,8 @@ static void pt_handle_status(struct pt *pt)
* Also on single-entry ToPA implementations, interrupt will come
* before the output reaches its output region's boundary.
*/
if (!pt_cap_get(PT_CAP_topa_multiple_entries) && !buf->snapshot &&
if (!intel_pt_validate_hw_cap(PT_CAP_topa_multiple_entries) &&
!buf->snapshot &&
pt_buffer_region_size(buf) - buf->output_off <= TOPA_PMI_MARGIN) {
void *head = pt_buffer_region(buf);
@ -866,9 +893,11 @@ static void pt_handle_status(struct pt *pt)
static void pt_read_offset(struct pt_buffer *buf)
{
u64 offset, base_topa;
struct topa_page *tp;
rdmsrl(MSR_IA32_RTIT_OUTPUT_BASE, base_topa);
buf->cur = phys_to_virt(base_topa);
tp = phys_to_virt(base_topa);
buf->cur = &tp->topa;
rdmsrl(MSR_IA32_RTIT_OUTPUT_MASK, offset);
/* offset within current output region */
@ -923,15 +952,14 @@ static int pt_buffer_reset_markers(struct pt_buffer *buf,
unsigned long idx, npages, wakeup;
/* can't stop in the middle of an output region */
if (buf->output_off + handle->size + 1 <
sizes(TOPA_ENTRY(buf->cur, buf->cur_idx)->size)) {
if (buf->output_off + handle->size + 1 < pt_buffer_region_size(buf)) {
perf_aux_output_flag(handle, PERF_AUX_FLAG_TRUNCATED);
return -EINVAL;
}
/* single entry ToPA is handled by marking all regions STOP=1 INT=1 */
if (!pt_cap_get(PT_CAP_topa_multiple_entries))
if (!intel_pt_validate_hw_cap(PT_CAP_topa_multiple_entries))
return 0;
/* clear STOP and INT from current entry */
@ -1019,6 +1047,7 @@ static void pt_buffer_setup_topa_index(struct pt_buffer *buf)
*/
static void pt_buffer_reset_offsets(struct pt_buffer *buf, unsigned long head)
{
struct topa_page *cur_tp;
int pg;
if (buf->snapshot)
@ -1027,10 +1056,10 @@ static void pt_buffer_reset_offsets(struct pt_buffer *buf, unsigned long head)
pg = (head >> PAGE_SHIFT) & (buf->nr_pages - 1);
pg = pt_topa_next_entry(buf, pg);
buf->cur = (struct topa *)((unsigned long)buf->topa_index[pg] & PAGE_MASK);
buf->cur_idx = ((unsigned long)buf->topa_index[pg] -
(unsigned long)buf->cur) / sizeof(struct topa_entry);
buf->output_off = head & (sizes(buf->cur->table[buf->cur_idx].size) - 1);
cur_tp = topa_entry_to_page(buf->topa_index[pg]);
buf->cur = &cur_tp->topa;
buf->cur_idx = buf->topa_index[pg] - TOPA_ENTRY(buf->cur, 0);
buf->output_off = head & (pt_buffer_region_size(buf) - 1);
local64_set(&buf->head, head);
local_set(&buf->data_size, 0);
@ -1082,7 +1111,7 @@ static int pt_buffer_init_topa(struct pt_buffer *buf, unsigned long nr_pages,
pt_buffer_setup_topa_index(buf);
/* link last table to the first one, unless we're double buffering */
if (pt_cap_get(PT_CAP_topa_multiple_entries)) {
if (intel_pt_validate_hw_cap(PT_CAP_topa_multiple_entries)) {
TOPA_ENTRY(buf->last, -1)->base = buf->first->phys >> TOPA_SHIFT;
TOPA_ENTRY(buf->last, -1)->end = 1;
}
@ -1154,7 +1183,7 @@ static int pt_addr_filters_init(struct perf_event *event)
struct pt_filters *filters;
int node = event->cpu == -1 ? -1 : cpu_to_node(event->cpu);
if (!pt_cap_get(PT_CAP_num_address_ranges))
if (!intel_pt_validate_hw_cap(PT_CAP_num_address_ranges))
return 0;
filters = kzalloc_node(sizeof(struct pt_filters), GFP_KERNEL, node);
@ -1199,7 +1228,7 @@ static int pt_event_addr_filters_validate(struct list_head *filters)
return -EINVAL;
}
if (++range > pt_cap_get(PT_CAP_num_address_ranges))
if (++range > intel_pt_validate_hw_cap(PT_CAP_num_address_ranges))
return -EOPNOTSUPP;
}
@ -1287,7 +1316,7 @@ void intel_pt_interrupt(void)
return;
}
pt_config_buffer(buf->cur->table, buf->cur_idx,
pt_config_buffer(topa_to_page(buf->cur)->table, buf->cur_idx,
buf->output_off);
pt_config(event);
}
@ -1352,7 +1381,7 @@ static void pt_event_start(struct perf_event *event, int mode)
WRITE_ONCE(pt->handle_nmi, 1);
hwc->state = 0;
pt_config_buffer(buf->cur->table, buf->cur_idx,
pt_config_buffer(topa_to_page(buf->cur)->table, buf->cur_idx,
buf->output_off);
pt_config(event);
@ -1502,12 +1531,12 @@ static __init int pt_init(void)
if (ret)
return ret;
if (!pt_cap_get(PT_CAP_topa_output)) {
if (!intel_pt_validate_hw_cap(PT_CAP_topa_output)) {
pr_warn("ToPA output is not supported on this CPU\n");
return -ENODEV;
}
if (!pt_cap_get(PT_CAP_topa_multiple_entries))
if (!intel_pt_validate_hw_cap(PT_CAP_topa_multiple_entries))
pt_pmu.pmu.capabilities =
PERF_PMU_CAP_AUX_NO_SG | PERF_PMU_CAP_AUX_SW_DOUBLEBUF;
@ -1525,7 +1554,7 @@ static __init int pt_init(void)
pt_pmu.pmu.addr_filters_sync = pt_event_addr_filters_sync;
pt_pmu.pmu.addr_filters_validate = pt_event_addr_filters_validate;
pt_pmu.pmu.nr_addr_filters =
pt_cap_get(PT_CAP_num_address_ranges);
intel_pt_validate_hw_cap(PT_CAP_num_address_ranges);
ret = perf_pmu_register(&pt_pmu.pmu, "intel_pt", -1);

View File

@ -78,34 +78,13 @@ struct topa_entry {
u64 rsvd2 : 1;
u64 size : 4;
u64 rsvd3 : 2;
u64 base : 36;
u64 rsvd4 : 16;
u64 base : 40;
u64 rsvd4 : 12;
};
#define PT_CPUID_LEAVES 2
#define PT_CPUID_REGS_NUM 4 /* number of regsters (eax, ebx, ecx, edx) */
/* TSC to Core Crystal Clock Ratio */
#define CPUID_TSC_LEAF 0x15
enum pt_capabilities {
PT_CAP_max_subleaf = 0,
PT_CAP_cr3_filtering,
PT_CAP_psb_cyc,
PT_CAP_ip_filtering,
PT_CAP_mtc,
PT_CAP_ptwrite,
PT_CAP_power_event_trace,
PT_CAP_topa_output,
PT_CAP_topa_multiple_entries,
PT_CAP_single_range_output,
PT_CAP_payloads_lip,
PT_CAP_num_address_ranges,
PT_CAP_mtc_periods,
PT_CAP_cycle_thresholds,
PT_CAP_psb_periods,
};
struct pt_pmu {
struct pmu pmu;
u32 caps[PT_CPUID_REGS_NUM * PT_CPUID_LEAVES];

View File

@ -2,10 +2,33 @@
#ifndef _ASM_X86_INTEL_PT_H
#define _ASM_X86_INTEL_PT_H
#define PT_CPUID_LEAVES 2
#define PT_CPUID_REGS_NUM 4 /* number of regsters (eax, ebx, ecx, edx) */
enum pt_capabilities {
PT_CAP_max_subleaf = 0,
PT_CAP_cr3_filtering,
PT_CAP_psb_cyc,
PT_CAP_ip_filtering,
PT_CAP_mtc,
PT_CAP_ptwrite,
PT_CAP_power_event_trace,
PT_CAP_topa_output,
PT_CAP_topa_multiple_entries,
PT_CAP_single_range_output,
PT_CAP_payloads_lip,
PT_CAP_num_address_ranges,
PT_CAP_mtc_periods,
PT_CAP_cycle_thresholds,
PT_CAP_psb_periods,
};
#if defined(CONFIG_PERF_EVENTS) && defined(CONFIG_CPU_SUP_INTEL)
void cpu_emergency_stop_pt(void);
extern u32 intel_pt_validate_hw_cap(enum pt_capabilities cap);
#else
static inline void cpu_emergency_stop_pt(void) {}
static inline u32 intel_pt_validate_hw_cap(enum pt_capabilities cap) { return 0; }
#endif
#endif /* _ASM_X86_INTEL_PT_H */

View File

@ -820,7 +820,7 @@ void mtrr_save_state(void)
{
int first_cpu;
if (!mtrr_enabled())
if (!mtrr_enabled() || !mtrr_state.have_fixed)
return;
first_cpu = cpumask_first(cpu_online_mask);

View File

@ -96,7 +96,7 @@ static int x86_of_pci_irq_enable(struct pci_dev *dev)
ret = pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin);
if (ret)
return ret;
return pcibios_err_to_errno(ret);
if (!pin)
return 0;

View File

@ -222,9 +222,9 @@ static int intel_mid_pci_irq_enable(struct pci_dev *dev)
return 0;
ret = pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &gsi);
if (ret < 0) {
if (ret) {
dev_warn(&dev->dev, "Failed to read interrupt line: %d\n", ret);
return ret;
return pcibios_err_to_errno(ret);
}
switch (intel_mid_identify_cpu()) {

View File

@ -35,10 +35,10 @@ static int xen_pcifront_enable_irq(struct pci_dev *dev)
u8 gsi;
rc = pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &gsi);
if (rc < 0) {
if (rc) {
dev_warn(&dev->dev, "Xen PCI: failed to read interrupt line: %d\n",
rc);
return rc;
return pcibios_err_to_errno(rc);
}
/* In PV DomU the Xen PCI backend puts the PIRQ in the interrupt line.*/
pirq = gsi;

View File

@ -68,7 +68,7 @@ static int iosf_mbi_pci_read_mdr(u32 mcrx, u32 mcr, u32 *mdr)
fail_read:
dev_err(&mbi_pdev->dev, "PCI config access failed with %d\n", result);
return result;
return pcibios_err_to_errno(result);
}
static int iosf_mbi_pci_write_mdr(u32 mcrx, u32 mcr, u32 mdr)
@ -97,7 +97,7 @@ static int iosf_mbi_pci_write_mdr(u32 mcrx, u32 mcr, u32 mdr)
fail_write:
dev_err(&mbi_pdev->dev, "PCI config access failed with %d\n", result);
return result;
return pcibios_err_to_errno(result);
}
int iosf_mbi_read(u8 port, u8 opcode, u32 offset, u32 *mdr)

View File

@ -733,7 +733,7 @@ int set_foreign_p2m_mapping(struct gnttab_map_grant_ref *map_ops,
* immediate unmapping.
*/
map_ops[i].status = GNTST_general_error;
unmap[0].host_addr = map_ops[i].host_addr,
unmap[0].host_addr = map_ops[i].host_addr;
unmap[0].handle = map_ops[i].handle;
map_ops[i].handle = ~0;
if (map_ops[i].flags & GNTMAP_device_map)
@ -743,7 +743,7 @@ int set_foreign_p2m_mapping(struct gnttab_map_grant_ref *map_ops,
if (kmap_ops) {
kmap_ops[i].status = GNTST_general_error;
unmap[1].host_addr = kmap_ops[i].host_addr,
unmap[1].host_addr = kmap_ops[i].host_addr;
unmap[1].handle = kmap_ops[i].handle;
kmap_ops[i].handle = ~0;
if (kmap_ops[i].flags & GNTMAP_device_map)

View File

@ -1032,9 +1032,7 @@ static bool binder_has_work(struct binder_thread *thread, bool do_proc_work)
static bool binder_available_for_proc_work_ilocked(struct binder_thread *thread)
{
return !thread->transaction_stack &&
binder_worklist_empty_ilocked(&thread->todo) &&
(thread->looper & (BINDER_LOOPER_STATE_ENTERED |
BINDER_LOOPER_STATE_REGISTERED));
binder_worklist_empty_ilocked(&thread->todo);
}
static void binder_wakeup_poll_threads_ilocked(struct binder_proc *proc,

View File

@ -27,6 +27,7 @@
#include <linux/mutex.h>
#include <linux/pm_runtime.h>
#include <linux/netdevice.h>
#include <linux/rcupdate.h>
#include <linux/sched/signal.h>
#include <linux/sysfs.h>
@ -905,6 +906,7 @@ static int dev_uevent(struct kset *kset, struct kobject *kobj,
struct kobj_uevent_env *env)
{
struct device *dev = kobj_to_dev(kobj);
struct device_driver *driver;
int retval = 0;
/* add device node properties if present */
@ -933,8 +935,12 @@ static int dev_uevent(struct kset *kset, struct kobject *kobj,
if (dev->type && dev->type->name)
add_uevent_var(env, "DEVTYPE=%s", dev->type->name);
if (dev->driver)
add_uevent_var(env, "DRIVER=%s", dev->driver->name);
/* Synchronize with module_remove_driver() */
rcu_read_lock();
driver = READ_ONCE(dev->driver);
if (driver)
add_uevent_var(env, "DRIVER=%s", driver->name);
rcu_read_unlock();
/* Add common DT information about the device */
of_device_uevent(dev, env);
@ -1004,11 +1010,8 @@ static ssize_t uevent_show(struct device *dev, struct device_attribute *attr,
if (!env)
return -ENOMEM;
/* Synchronize with really_probe() */
device_lock(dev);
/* let the kset specific function add its keys */
retval = kset->uevent_ops->uevent(kset, &dev->kobj, env);
device_unlock(dev);
if (retval)
goto out;

View File

@ -1053,7 +1053,11 @@ EXPORT_SYMBOL_GPL(__devm_alloc_percpu);
*/
void devm_free_percpu(struct device *dev, void __percpu *pdata)
{
WARN_ON(devres_destroy(dev, devm_percpu_release, devm_percpu_match,
(void *)pdata));
/*
* Use devres_release() to prevent memory leakage as
* devm_free_pages() does.
*/
WARN_ON(devres_release(dev, devm_percpu_release, devm_percpu_match,
(__force void *)pdata));
}
EXPORT_SYMBOL_GPL(devm_free_percpu);

View File

@ -98,8 +98,8 @@ void dmam_free_coherent(struct device *dev, size_t size, void *vaddr,
{
struct dma_devres match_data = { size, vaddr, dma_handle };
dma_free_coherent(dev, size, vaddr, dma_handle);
WARN_ON(devres_destroy(dev, dmam_release, dmam_match, &match_data));
dma_free_coherent(dev, size, vaddr, dma_handle);
}
EXPORT_SYMBOL(dmam_free_coherent);

View File

@ -9,6 +9,7 @@
#include <linux/errno.h>
#include <linux/slab.h>
#include <linux/string.h>
#include <linux/rcupdate.h>
#include "base.h"
static char *make_driver_name(struct device_driver *drv)
@ -79,6 +80,9 @@ void module_remove_driver(struct device_driver *drv)
if (!drv)
return;
/* Synchronize with dev_uevent() */
synchronize_rcu();
sysfs_remove_link(&drv->p->kobj, "module");
if (drv->owner)

View File

@ -142,8 +142,10 @@ static int __init mod_init(void)
found:
err = pci_read_config_dword(pdev, 0x58, &pmbase);
if (err)
if (err) {
err = pcibios_err_to_errno(err);
goto put_dev;
}
pmbase &= 0x0000FF00;
if (pmbase == 0) {

View File

@ -510,6 +510,7 @@ static void sh_cmt_set_next(struct sh_cmt_channel *ch, unsigned long delta)
static irqreturn_t sh_cmt_interrupt(int irq, void *dev_id)
{
struct sh_cmt_channel *ch = dev_id;
unsigned long flags;
/* clear flags */
sh_cmt_write_cmcsr(ch, sh_cmt_read_cmcsr(ch) &
@ -540,6 +541,8 @@ static irqreturn_t sh_cmt_interrupt(int irq, void *dev_id)
ch->flags &= ~FLAG_SKIPEVENT;
raw_spin_lock_irqsave(&ch->lock, flags);
if (ch->flags & FLAG_REPROGRAM) {
ch->flags &= ~FLAG_REPROGRAM;
sh_cmt_clock_event_program_verify(ch, 1);
@ -552,6 +555,8 @@ static irqreturn_t sh_cmt_interrupt(int irq, void *dev_id)
ch->flags &= ~FLAG_IRQCONTEXT;
raw_spin_unlock_irqrestore(&ch->lock, flags);
return IRQ_HANDLED;
}
@ -750,12 +755,18 @@ static int sh_cmt_clock_event_next(unsigned long delta,
struct clock_event_device *ced)
{
struct sh_cmt_channel *ch = ced_to_sh_cmt(ced);
unsigned long flags;
BUG_ON(!clockevent_state_oneshot(ced));
raw_spin_lock_irqsave(&ch->lock, flags);
if (likely(ch->flags & FLAG_IRQCONTEXT))
ch->next_match_value = delta - 1;
else
sh_cmt_set_next(ch, delta - 1);
__sh_cmt_set_next(ch, delta - 1);
raw_spin_unlock_irqrestore(&ch->lock, flags);
return 0;
}

View File

@ -14,6 +14,7 @@
#include <linux/io.h>
#include <linux/delay.h>
#include <linux/gpio.h>
#include <linux/iopoll.h>
#include <drm/bridge/analogix_dp.h>
@ -449,6 +450,10 @@ void analogix_dp_init_aux(struct analogix_dp_device *dp)
reg = RPLY_RECEIV | AUX_ERR;
writel(reg, dp->reg_base + ANALOGIX_DP_INT_STA);
analogix_dp_set_analog_power_down(dp, AUX_BLOCK, true);
usleep_range(10, 11);
analogix_dp_set_analog_power_down(dp, AUX_BLOCK, false);
analogix_dp_reset_aux(dp);
/* Disable AUX transaction H/W retry */
@ -1042,10 +1047,10 @@ ssize_t analogix_dp_transfer(struct analogix_dp_device *dp,
struct drm_dp_aux_msg *msg)
{
u32 reg;
u32 status_reg;
u8 *buffer = msg->buffer;
int timeout_loop = 0;
unsigned int i;
int num_transferred = 0;
int ret;
/* Buffer size of AUX CH is 16 bytes */
if (WARN_ON(msg->size > 16))
@ -1096,7 +1101,6 @@ ssize_t analogix_dp_transfer(struct analogix_dp_device *dp,
reg = buffer[i];
writel(reg, dp->reg_base + ANALOGIX_DP_BUF_DATA_0 +
4 * i);
num_transferred++;
}
}
@ -1109,17 +1113,20 @@ ssize_t analogix_dp_transfer(struct analogix_dp_device *dp,
writel(reg, dp->reg_base + ANALOGIX_DP_AUX_CH_CTL_2);
/* Is AUX CH command reply received? */
ret = readx_poll_timeout(readl, dp->reg_base + ANALOGIX_DP_AUX_CH_CTL_2,
reg, !(reg & AUX_EN), 25, 500 * 1000);
if (ret) {
dev_err(dp->dev, "AUX CH enable timeout!\n");
goto aux_error;
}
/* TODO: Wait for an interrupt instead of looping? */
reg = readl(dp->reg_base + ANALOGIX_DP_INT_STA);
while (!(reg & RPLY_RECEIV)) {
timeout_loop++;
if (timeout_loop > DP_TIMEOUT_LOOP_COUNT) {
dev_err(dp->dev, "AUX CH command reply failed!\n");
return -ETIMEDOUT;
}
reg = readl(dp->reg_base + ANALOGIX_DP_INT_STA);
usleep_range(10, 11);
/* Is AUX CH command reply received? */
ret = readx_poll_timeout(readl, dp->reg_base + ANALOGIX_DP_INT_STA,
reg, reg & RPLY_RECEIV, 10, 20 * 1000);
if (ret) {
dev_err(dp->dev, "AUX CH cmd reply timeout!\n");
goto aux_error;
}
/* Clear interrupt source for AUX CH command reply */
@ -1127,17 +1134,13 @@ ssize_t analogix_dp_transfer(struct analogix_dp_device *dp,
/* Clear interrupt source for AUX CH access error */
reg = readl(dp->reg_base + ANALOGIX_DP_INT_STA);
if (reg & AUX_ERR) {
status_reg = readl(dp->reg_base + ANALOGIX_DP_AUX_CH_STA);
if ((reg & AUX_ERR) || (status_reg & AUX_STATUS_MASK)) {
writel(AUX_ERR, dp->reg_base + ANALOGIX_DP_INT_STA);
return -EREMOTEIO;
}
/* Check AUX CH error access status */
reg = readl(dp->reg_base + ANALOGIX_DP_AUX_CH_STA);
if ((reg & AUX_STATUS_MASK)) {
dev_err(dp->dev, "AUX CH error happened: %d\n\n",
reg & AUX_STATUS_MASK);
return -EREMOTEIO;
dev_warn(dp->dev, "AUX CH error happened: %#x (%d)\n",
status_reg & AUX_STATUS_MASK, !!(reg & AUX_ERR));
goto aux_error;
}
if (msg->request & DP_AUX_I2C_READ) {
@ -1145,7 +1148,6 @@ ssize_t analogix_dp_transfer(struct analogix_dp_device *dp,
reg = readl(dp->reg_base + ANALOGIX_DP_BUF_DATA_0 +
4 * i);
buffer[i] = (unsigned char)reg;
num_transferred++;
}
}
@ -1162,5 +1164,11 @@ ssize_t analogix_dp_transfer(struct analogix_dp_device *dp,
(msg->request & ~DP_AUX_I2C_MOT) == DP_AUX_NATIVE_READ)
msg->reply = DP_AUX_NATIVE_REPLY_ACK;
return num_transferred > 0 ? num_transferred : -EBUSY;
return msg->size;
aux_error:
/* if aux err happen, reset aux */
analogix_dp_init_aux(dp);
return -EREMOTEIO;
}

View File

@ -397,9 +397,11 @@ static void *etnaviv_gem_vmap_impl(struct etnaviv_gem_object *obj)
static inline enum dma_data_direction etnaviv_op_to_dma_dir(u32 op)
{
if (op & ETNA_PREP_READ)
op &= ETNA_PREP_READ | ETNA_PREP_WRITE;
if (op == ETNA_PREP_READ)
return DMA_FROM_DEVICE;
else if (op & ETNA_PREP_WRITE)
else if (op == ETNA_PREP_WRITE)
return DMA_TO_DEVICE;
else
return DMA_BIDIRECTIONAL;

View File

@ -404,6 +404,9 @@ static int cdv_intel_lvds_get_modes(struct drm_connector *connector)
if (mode_dev->panel_fixed_mode != NULL) {
struct drm_display_mode *mode =
drm_mode_duplicate(dev, mode_dev->panel_fixed_mode);
if (!mode)
return 0;
drm_mode_probed_add(connector, mode);
return 1;
}

View File

@ -519,6 +519,9 @@ static int psb_intel_lvds_get_modes(struct drm_connector *connector)
if (mode_dev->panel_fixed_mode != NULL) {
struct drm_display_mode *mode =
drm_mode_duplicate(dev, mode_dev->panel_fixed_mode);
if (!mode)
return 0;
drm_mode_probed_add(connector, mode);
return 1;
}

View File

@ -1802,6 +1802,39 @@ compute_partial_view(struct drm_i915_gem_object *obj,
return view;
}
static void set_address_limits(struct vm_area_struct *area,
struct i915_vma *vma,
unsigned long *start_vaddr,
unsigned long *end_vaddr)
{
unsigned long vm_start, vm_end, vma_size; /* user's memory parameters */
long start, end; /* memory boundaries */
/*
* Let's move into the ">> PAGE_SHIFT"
* domain to be sure not to lose bits
*/
vm_start = area->vm_start >> PAGE_SHIFT;
vm_end = area->vm_end >> PAGE_SHIFT;
vma_size = vma->size >> PAGE_SHIFT;
/*
* Calculate the memory boundaries by considering the offset
* provided by the user during memory mapping and the offset
* provided for the partial mapping.
*/
start = vm_start;
start += vma->ggtt_view.partial.offset;
end = start + vma_size;
start = max_t(long, start, vm_start);
end = min_t(long, end, vm_end);
/* Let's move back into the "<< PAGE_SHIFT" domain */
*start_vaddr = (unsigned long)start << PAGE_SHIFT;
*end_vaddr = (unsigned long)end << PAGE_SHIFT;
}
/**
* i915_gem_fault - fault a page into the GTT
* @vmf: fault info
@ -1829,9 +1862,10 @@ int i915_gem_fault(struct vm_fault *vmf)
struct drm_i915_private *dev_priv = to_i915(dev);
struct i915_ggtt *ggtt = &dev_priv->ggtt;
bool write = !!(vmf->flags & FAULT_FLAG_WRITE);
unsigned long start, end; /* memory boundaries */
struct i915_vma *vma;
pgoff_t page_offset;
unsigned int flags;
unsigned long pfn;
int ret;
/* Sanity check that we allow writing into this object */
@ -1871,27 +1905,34 @@ int i915_gem_fault(struct vm_fault *vmf)
goto err_unlock;
}
/* If the object is smaller than a couple of partial vma, it is
* not worth only creating a single partial vma - we may as well
* clear enough space for the full object.
*/
flags = PIN_MAPPABLE;
if (obj->base.size > 2 * MIN_CHUNK_PAGES << PAGE_SHIFT)
flags |= PIN_NONBLOCK | PIN_NONFAULT;
/* Now pin it into the GTT as needed */
vma = i915_gem_object_ggtt_pin(obj, NULL, 0, 0, flags);
vma = i915_gem_object_ggtt_pin(obj, NULL, 0, 0,
PIN_MAPPABLE |
PIN_NONBLOCK |
PIN_NONFAULT);
if (IS_ERR(vma)) {
/* Use a partial view if it is bigger than available space */
struct i915_ggtt_view view =
compute_partial_view(obj, page_offset, MIN_CHUNK_PAGES);
unsigned int flags;
/* Userspace is now writing through an untracked VMA, abandon
flags = PIN_MAPPABLE;
if (view.type == I915_GGTT_VIEW_NORMAL)
flags |= PIN_NONBLOCK; /* avoid warnings for pinned */
/*
* Userspace is now writing through an untracked VMA, abandon
* all hope that the hardware is able to track future writes.
*/
obj->frontbuffer_ggtt_origin = ORIGIN_CPU;
vma = i915_gem_object_ggtt_pin(obj, &view, 0, 0, PIN_MAPPABLE);
vma = i915_gem_object_ggtt_pin(obj, &view, 0, 0, flags);
if (IS_ERR(vma) && !view.type) {
flags = PIN_MAPPABLE;
view.type = I915_GGTT_VIEW_PARTIAL;
vma = i915_gem_object_ggtt_pin(obj, &view, 0, 0, flags);
}
}
if (IS_ERR(vma)) {
ret = PTR_ERR(vma);
@ -1911,12 +1952,14 @@ int i915_gem_fault(struct vm_fault *vmf)
if (list_empty(&obj->userfault_link))
list_add(&obj->userfault_link, &dev_priv->mm.userfault_list);
set_address_limits(area, vma, &start, &end);
pfn = (ggtt->mappable_base + i915_ggtt_offset(vma)) >> PAGE_SHIFT;
pfn += (start - area->vm_start) >> PAGE_SHIFT;
pfn -= vma->ggtt_view.partial.offset;
/* Finally, remap it using the new GTT offset */
ret = remap_io_mapping(area,
area->vm_start + (vma->ggtt_view.partial.offset << PAGE_SHIFT),
(ggtt->mappable_base + vma->node.start) >> PAGE_SHIFT,
min_t(u64, vma->size, area->vm_end - area->vm_start),
&ggtt->mappable);
ret = remap_io_mapping(area, start, pfn, end - start, &ggtt->mappable);
err_unpin:
__i915_vma_unpin(vma);

View File

@ -103,7 +103,7 @@ vma_create(struct drm_i915_gem_object *obj,
obj->base.size >> PAGE_SHIFT));
vma->size = view->partial.size;
vma->size <<= PAGE_SHIFT;
GEM_BUG_ON(vma->size >= obj->base.size);
GEM_BUG_ON(vma->size > obj->base.size);
} else if (view->type == I915_GGTT_VIEW_ROTATED) {
vma->size = intel_rotation_info_size(&view->rotated);
vma->size <<= PAGE_SHIFT;

View File

@ -133,7 +133,7 @@ struct mga_i2c_chan *mgag200_i2c_create(struct drm_device *dev)
i2c->adapter.algo_data = &i2c->bit;
i2c->bit.udelay = 10;
i2c->bit.timeout = 2;
i2c->bit.timeout = usecs_to_jiffies(2200);
i2c->bit.data = i2c;
i2c->bit.setsda = mga_gpio_setsda;
i2c->bit.setscl = mga_gpio_setscl;

View File

@ -100,7 +100,7 @@ static int vmw_overlay_send_put(struct vmw_private *dev_priv,
{
struct vmw_escape_video_flush *flush;
size_t fifo_size;
bool have_so = (dev_priv->active_display_unit == vmw_du_screen_object);
bool have_so = (dev_priv->active_display_unit != vmw_du_legacy);
int i, num_items;
SVGAGuestPtr ptr;

View File

@ -1633,7 +1633,7 @@ static void adt7475_read_pwm(struct i2c_client *client, int index)
data->pwm[CONTROL][index] &= ~0xE0;
data->pwm[CONTROL][index] |= (7 << 5);
i2c_smbus_write_byte_data(client, PWM_CONFIG_REG(index),
i2c_smbus_write_byte_data(client, PWM_REG(index),
data->pwm[INPUT][index]);
i2c_smbus_write_byte_data(client, PWM_CONFIG_REG(index),

View File

@ -251,7 +251,7 @@ abort:
return ret;
}
static ssize_t show_temp_input(struct device *dev,
static ssize_t temp_input_show(struct device *dev,
struct device_attribute *devattr, char *buf)
{
int index = to_sensor_dev_attr(devattr)->index;
@ -267,8 +267,8 @@ static ssize_t show_temp_input(struct device *dev,
return sprintf(buf, "%d\n", temp * 125);
}
static ssize_t show_temp(struct device *dev,
struct device_attribute *devattr, char *buf)
static ssize_t temp_show(struct device *dev, struct device_attribute *devattr,
char *buf)
{
int nr = to_sensor_dev_attr_2(devattr)->nr;
int index = to_sensor_dev_attr_2(devattr)->index;
@ -284,7 +284,7 @@ static ssize_t show_temp(struct device *dev,
return sprintf(buf, "%d\n", temp * 1000);
}
static ssize_t show_alarm(struct device *dev, struct device_attribute *attr,
static ssize_t alarm_show(struct device *dev, struct device_attribute *attr,
char *buf)
{
int index = to_sensor_dev_attr(attr)->index;
@ -299,9 +299,9 @@ static ssize_t show_alarm(struct device *dev, struct device_attribute *attr,
return sprintf(buf, "%u\n", (data->alarms >> index) & 0x1);
}
static ssize_t set_temp(struct device *dev,
struct device_attribute *devattr,
const char *buf, size_t count)
static ssize_t temp_store(struct device *dev,
struct device_attribute *devattr, const char *buf,
size_t count)
{
int nr = to_sensor_dev_attr_2(devattr)->nr;
int index = to_sensor_dev_attr_2(devattr)->index;
@ -314,6 +314,7 @@ static ssize_t set_temp(struct device *dev,
return ret;
mutex_lock(&data->update_lock);
temp = clamp_val(temp, -1000000, 1000000); /* prevent underflow */
temp = DIV_ROUND_CLOSEST(temp, 1000) + data->temp_offset;
temp = clamp_val(temp, 0, data->type == max6581 ? 255 : 127);
data->temp[nr][index] = temp;
@ -326,79 +327,63 @@ static ssize_t set_temp(struct device *dev,
return ret < 0 ? ret : count;
}
static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp_input, NULL, 0);
static SENSOR_DEVICE_ATTR_2(temp1_max, S_IRUGO | S_IWUSR, show_temp, set_temp,
0, MAX6697_TEMP_MAX);
static SENSOR_DEVICE_ATTR_2(temp1_crit, S_IRUGO | S_IWUSR, show_temp, set_temp,
0, MAX6697_TEMP_CRIT);
static SENSOR_DEVICE_ATTR_RO(temp1_input, temp_input, 0);
static SENSOR_DEVICE_ATTR_2_RW(temp1_max, temp, 0, MAX6697_TEMP_MAX);
static SENSOR_DEVICE_ATTR_2_RW(temp1_crit, temp, 0, MAX6697_TEMP_CRIT);
static SENSOR_DEVICE_ATTR(temp2_input, S_IRUGO, show_temp_input, NULL, 1);
static SENSOR_DEVICE_ATTR_2(temp2_max, S_IRUGO | S_IWUSR, show_temp, set_temp,
1, MAX6697_TEMP_MAX);
static SENSOR_DEVICE_ATTR_2(temp2_crit, S_IRUGO | S_IWUSR, show_temp, set_temp,
1, MAX6697_TEMP_CRIT);
static SENSOR_DEVICE_ATTR_RO(temp2_input, temp_input, 1);
static SENSOR_DEVICE_ATTR_2_RW(temp2_max, temp, 1, MAX6697_TEMP_MAX);
static SENSOR_DEVICE_ATTR_2_RW(temp2_crit, temp, 1, MAX6697_TEMP_CRIT);
static SENSOR_DEVICE_ATTR(temp3_input, S_IRUGO, show_temp_input, NULL, 2);
static SENSOR_DEVICE_ATTR_2(temp3_max, S_IRUGO | S_IWUSR, show_temp, set_temp,
2, MAX6697_TEMP_MAX);
static SENSOR_DEVICE_ATTR_2(temp3_crit, S_IRUGO | S_IWUSR, show_temp, set_temp,
2, MAX6697_TEMP_CRIT);
static SENSOR_DEVICE_ATTR_RO(temp3_input, temp_input, 2);
static SENSOR_DEVICE_ATTR_2_RW(temp3_max, temp, 2, MAX6697_TEMP_MAX);
static SENSOR_DEVICE_ATTR_2_RW(temp3_crit, temp, 2, MAX6697_TEMP_CRIT);
static SENSOR_DEVICE_ATTR(temp4_input, S_IRUGO, show_temp_input, NULL, 3);
static SENSOR_DEVICE_ATTR_2(temp4_max, S_IRUGO | S_IWUSR, show_temp, set_temp,
3, MAX6697_TEMP_MAX);
static SENSOR_DEVICE_ATTR_2(temp4_crit, S_IRUGO | S_IWUSR, show_temp, set_temp,
3, MAX6697_TEMP_CRIT);
static SENSOR_DEVICE_ATTR_RO(temp4_input, temp_input, 3);
static SENSOR_DEVICE_ATTR_2_RW(temp4_max, temp, 3, MAX6697_TEMP_MAX);
static SENSOR_DEVICE_ATTR_2_RW(temp4_crit, temp, 3, MAX6697_TEMP_CRIT);
static SENSOR_DEVICE_ATTR(temp5_input, S_IRUGO, show_temp_input, NULL, 4);
static SENSOR_DEVICE_ATTR_2(temp5_max, S_IRUGO | S_IWUSR, show_temp, set_temp,
4, MAX6697_TEMP_MAX);
static SENSOR_DEVICE_ATTR_2(temp5_crit, S_IRUGO | S_IWUSR, show_temp, set_temp,
4, MAX6697_TEMP_CRIT);
static SENSOR_DEVICE_ATTR_RO(temp5_input, temp_input, 4);
static SENSOR_DEVICE_ATTR_2_RW(temp5_max, temp, 4, MAX6697_TEMP_MAX);
static SENSOR_DEVICE_ATTR_2_RW(temp5_crit, temp, 4, MAX6697_TEMP_CRIT);
static SENSOR_DEVICE_ATTR(temp6_input, S_IRUGO, show_temp_input, NULL, 5);
static SENSOR_DEVICE_ATTR_2(temp6_max, S_IRUGO | S_IWUSR, show_temp, set_temp,
5, MAX6697_TEMP_MAX);
static SENSOR_DEVICE_ATTR_2(temp6_crit, S_IRUGO | S_IWUSR, show_temp, set_temp,
5, MAX6697_TEMP_CRIT);
static SENSOR_DEVICE_ATTR_RO(temp6_input, temp_input, 5);
static SENSOR_DEVICE_ATTR_2_RW(temp6_max, temp, 5, MAX6697_TEMP_MAX);
static SENSOR_DEVICE_ATTR_2_RW(temp6_crit, temp, 5, MAX6697_TEMP_CRIT);
static SENSOR_DEVICE_ATTR(temp7_input, S_IRUGO, show_temp_input, NULL, 6);
static SENSOR_DEVICE_ATTR_2(temp7_max, S_IRUGO | S_IWUSR, show_temp, set_temp,
6, MAX6697_TEMP_MAX);
static SENSOR_DEVICE_ATTR_2(temp7_crit, S_IRUGO | S_IWUSR, show_temp, set_temp,
6, MAX6697_TEMP_CRIT);
static SENSOR_DEVICE_ATTR_RO(temp7_input, temp_input, 6);
static SENSOR_DEVICE_ATTR_2_RW(temp7_max, temp, 6, MAX6697_TEMP_MAX);
static SENSOR_DEVICE_ATTR_2_RW(temp7_crit, temp, 6, MAX6697_TEMP_CRIT);
static SENSOR_DEVICE_ATTR(temp8_input, S_IRUGO, show_temp_input, NULL, 7);
static SENSOR_DEVICE_ATTR_2(temp8_max, S_IRUGO | S_IWUSR, show_temp, set_temp,
7, MAX6697_TEMP_MAX);
static SENSOR_DEVICE_ATTR_2(temp8_crit, S_IRUGO | S_IWUSR, show_temp, set_temp,
7, MAX6697_TEMP_CRIT);
static SENSOR_DEVICE_ATTR_RO(temp8_input, temp_input, 7);
static SENSOR_DEVICE_ATTR_2_RW(temp8_max, temp, 7, MAX6697_TEMP_MAX);
static SENSOR_DEVICE_ATTR_2_RW(temp8_crit, temp, 7, MAX6697_TEMP_CRIT);
static SENSOR_DEVICE_ATTR(temp1_max_alarm, S_IRUGO, show_alarm, NULL, 22);
static SENSOR_DEVICE_ATTR(temp2_max_alarm, S_IRUGO, show_alarm, NULL, 16);
static SENSOR_DEVICE_ATTR(temp3_max_alarm, S_IRUGO, show_alarm, NULL, 17);
static SENSOR_DEVICE_ATTR(temp4_max_alarm, S_IRUGO, show_alarm, NULL, 18);
static SENSOR_DEVICE_ATTR(temp5_max_alarm, S_IRUGO, show_alarm, NULL, 19);
static SENSOR_DEVICE_ATTR(temp6_max_alarm, S_IRUGO, show_alarm, NULL, 20);
static SENSOR_DEVICE_ATTR(temp7_max_alarm, S_IRUGO, show_alarm, NULL, 21);
static SENSOR_DEVICE_ATTR(temp8_max_alarm, S_IRUGO, show_alarm, NULL, 23);
static SENSOR_DEVICE_ATTR_RO(temp1_max_alarm, alarm, 22);
static SENSOR_DEVICE_ATTR_RO(temp2_max_alarm, alarm, 16);
static SENSOR_DEVICE_ATTR_RO(temp3_max_alarm, alarm, 17);
static SENSOR_DEVICE_ATTR_RO(temp4_max_alarm, alarm, 18);
static SENSOR_DEVICE_ATTR_RO(temp5_max_alarm, alarm, 19);
static SENSOR_DEVICE_ATTR_RO(temp6_max_alarm, alarm, 20);
static SENSOR_DEVICE_ATTR_RO(temp7_max_alarm, alarm, 21);
static SENSOR_DEVICE_ATTR_RO(temp8_max_alarm, alarm, 23);
static SENSOR_DEVICE_ATTR(temp1_crit_alarm, S_IRUGO, show_alarm, NULL, 14);
static SENSOR_DEVICE_ATTR(temp2_crit_alarm, S_IRUGO, show_alarm, NULL, 8);
static SENSOR_DEVICE_ATTR(temp3_crit_alarm, S_IRUGO, show_alarm, NULL, 9);
static SENSOR_DEVICE_ATTR(temp4_crit_alarm, S_IRUGO, show_alarm, NULL, 10);
static SENSOR_DEVICE_ATTR(temp5_crit_alarm, S_IRUGO, show_alarm, NULL, 11);
static SENSOR_DEVICE_ATTR(temp6_crit_alarm, S_IRUGO, show_alarm, NULL, 12);
static SENSOR_DEVICE_ATTR(temp7_crit_alarm, S_IRUGO, show_alarm, NULL, 13);
static SENSOR_DEVICE_ATTR(temp8_crit_alarm, S_IRUGO, show_alarm, NULL, 15);
static SENSOR_DEVICE_ATTR_RO(temp1_crit_alarm, alarm, 15);
static SENSOR_DEVICE_ATTR_RO(temp2_crit_alarm, alarm, 8);
static SENSOR_DEVICE_ATTR_RO(temp3_crit_alarm, alarm, 9);
static SENSOR_DEVICE_ATTR_RO(temp4_crit_alarm, alarm, 10);
static SENSOR_DEVICE_ATTR_RO(temp5_crit_alarm, alarm, 11);
static SENSOR_DEVICE_ATTR_RO(temp6_crit_alarm, alarm, 12);
static SENSOR_DEVICE_ATTR_RO(temp7_crit_alarm, alarm, 13);
static SENSOR_DEVICE_ATTR_RO(temp8_crit_alarm, alarm, 14);
static SENSOR_DEVICE_ATTR(temp2_fault, S_IRUGO, show_alarm, NULL, 1);
static SENSOR_DEVICE_ATTR(temp3_fault, S_IRUGO, show_alarm, NULL, 2);
static SENSOR_DEVICE_ATTR(temp4_fault, S_IRUGO, show_alarm, NULL, 3);
static SENSOR_DEVICE_ATTR(temp5_fault, S_IRUGO, show_alarm, NULL, 4);
static SENSOR_DEVICE_ATTR(temp6_fault, S_IRUGO, show_alarm, NULL, 5);
static SENSOR_DEVICE_ATTR(temp7_fault, S_IRUGO, show_alarm, NULL, 6);
static SENSOR_DEVICE_ATTR(temp8_fault, S_IRUGO, show_alarm, NULL, 7);
static SENSOR_DEVICE_ATTR_RO(temp2_fault, alarm, 1);
static SENSOR_DEVICE_ATTR_RO(temp3_fault, alarm, 2);
static SENSOR_DEVICE_ATTR_RO(temp4_fault, alarm, 3);
static SENSOR_DEVICE_ATTR_RO(temp5_fault, alarm, 4);
static SENSOR_DEVICE_ATTR_RO(temp6_fault, alarm, 5);
static SENSOR_DEVICE_ATTR_RO(temp7_fault, alarm, 6);
static SENSOR_DEVICE_ATTR_RO(temp8_fault, alarm, 7);
static DEVICE_ATTR(dummy, 0, NULL, NULL);

View File

@ -43,6 +43,7 @@ static int smbus_do_alert(struct device *dev, void *addrp)
struct i2c_client *client = i2c_verify_client(dev);
struct alert_data *data = addrp;
struct i2c_driver *driver;
int ret;
if (!client || client->addr != data->addr)
return 0;
@ -56,16 +57,47 @@ static int smbus_do_alert(struct device *dev, void *addrp)
device_lock(dev);
if (client->dev.driver) {
driver = to_i2c_driver(client->dev.driver);
if (driver->alert)
if (driver->alert) {
/* Stop iterating after we find the device */
driver->alert(client, data->type, data->data);
else
ret = -EBUSY;
} else {
dev_warn(&client->dev, "no driver alert()!\n");
} else
ret = -EOPNOTSUPP;
}
} else {
dev_dbg(&client->dev, "alert with no driver\n");
ret = -ENODEV;
}
device_unlock(dev);
/* Stop iterating after we find the device */
return -EBUSY;
return ret;
}
/* Same as above, but call back all drivers with alert handler */
static int smbus_do_alert_force(struct device *dev, void *addrp)
{
struct i2c_client *client = i2c_verify_client(dev);
struct alert_data *data = addrp;
struct i2c_driver *driver;
if (!client || (client->flags & I2C_CLIENT_TEN))
return 0;
/*
* Drivers should either disable alerts, or provide at least
* a minimal handler. Lock so the driver won't change.
*/
device_lock(dev);
if (client->dev.driver) {
driver = to_i2c_driver(client->dev.driver);
if (driver->alert)
driver->alert(client, data->type, data->data);
}
device_unlock(dev);
return 0;
}
/*
@ -76,7 +108,7 @@ static void smbus_alert(struct work_struct *work)
{
struct i2c_smbus_alert *alert;
struct i2c_client *ara;
unsigned short prev_addr = 0; /* Not a valid address */
unsigned short prev_addr = I2C_CLIENT_END; /* Not a valid address */
alert = container_of(work, struct i2c_smbus_alert, alert);
ara = alert->ara;
@ -101,17 +133,28 @@ static void smbus_alert(struct work_struct *work)
data.addr = status >> 1;
data.type = I2C_PROTOCOL_SMBUS_ALERT;
if (data.addr == prev_addr) {
dev_warn(&ara->dev, "Duplicate SMBALERT# from dev "
"0x%02x, skipping\n", data.addr);
break;
}
dev_dbg(&ara->dev, "SMBALERT# from dev 0x%02x, flag %d\n",
data.addr, data.data);
/* Notify driver for the device which issued the alert */
device_for_each_child(&ara->adapter->dev, &data,
smbus_do_alert);
status = device_for_each_child(&ara->adapter->dev, &data,
smbus_do_alert);
/*
* If we read the same address more than once, and the alert
* was not handled by a driver, it won't do any good to repeat
* the loop because it will never terminate. Try again, this
* time calling the alert handlers of all devices connected to
* the bus, and abort the loop afterwards. If this helps, we
* are all set. If it doesn't, there is nothing else we can do,
* so we might as well abort the loop.
* Note: This assumes that a driver with alert handler handles
* the alert properly and clears it if necessary.
*/
if (data.addr == prev_addr && status != -EBUSY) {
device_for_each_child(&ara->adapter->dev, &data,
smbus_do_alert_force);
break;
}
prev_addr = data.addr;
}

View File

@ -369,8 +369,10 @@ EXPORT_SYMBOL(iw_cm_disconnect);
*
* Clean up all resources associated with the connection and release
* the initial reference taken by iw_create_cm_id.
*
* Returns true if and only if the last cm_id_priv reference has been dropped.
*/
static void destroy_cm_id(struct iw_cm_id *cm_id)
static bool destroy_cm_id(struct iw_cm_id *cm_id)
{
struct iwcm_id_private *cm_id_priv;
unsigned long flags;
@ -438,7 +440,7 @@ static void destroy_cm_id(struct iw_cm_id *cm_id)
iwpm_remove_mapping(&cm_id->local_addr, RDMA_NL_IWCM);
}
(void)iwcm_deref_id(cm_id_priv);
return iwcm_deref_id(cm_id_priv);
}
/*
@ -449,10 +451,8 @@ static void destroy_cm_id(struct iw_cm_id *cm_id)
*/
void iw_destroy_cm_id(struct iw_cm_id *cm_id)
{
struct iwcm_id_private *cm_id_priv;
cm_id_priv = container_of(cm_id, struct iwcm_id_private, id);
destroy_cm_id(cm_id);
if (!destroy_cm_id(cm_id))
flush_workqueue(iwcm_wq);
}
EXPORT_SYMBOL(iw_destroy_cm_id);
@ -1025,7 +1025,7 @@ static void cm_work_handler(struct work_struct *_work)
if (!test_bit(IWCM_F_DROP_EVENTS, &cm_id_priv->flags)) {
ret = process_event(cm_id_priv, &levent);
if (ret)
destroy_cm_id(&cm_id_priv->id);
WARN_ON_ONCE(destroy_cm_id(&cm_id_priv->id));
} else
pr_debug("dropping event %d\n", levent.event);
if (iwcm_deref_id(cm_id_priv))

View File

@ -1878,7 +1878,7 @@ static int bnxt_re_build_send_wqe(struct bnxt_re_qp *qp,
break;
case IB_WR_SEND_WITH_IMM:
wqe->type = BNXT_QPLIB_SWQE_TYPE_SEND_WITH_IMM;
wqe->send.imm_data = wr->ex.imm_data;
wqe->send.imm_data = be32_to_cpu(wr->ex.imm_data);
break;
case IB_WR_SEND_WITH_INV:
wqe->type = BNXT_QPLIB_SWQE_TYPE_SEND_WITH_INV;
@ -1908,7 +1908,7 @@ static int bnxt_re_build_rdma_wqe(struct ib_send_wr *wr,
break;
case IB_WR_RDMA_WRITE_WITH_IMM:
wqe->type = BNXT_QPLIB_SWQE_TYPE_RDMA_WRITE_WITH_IMM;
wqe->rdma.imm_data = wr->ex.imm_data;
wqe->rdma.imm_data = be32_to_cpu(wr->ex.imm_data);
break;
case IB_WR_RDMA_READ:
wqe->type = BNXT_QPLIB_SWQE_TYPE_RDMA_READ;
@ -2833,7 +2833,7 @@ static void bnxt_re_process_res_shadow_qp_wc(struct bnxt_re_qp *qp,
wc->byte_len = orig_cqe->length;
wc->qp = &qp1_qp->ib_qp;
wc->ex.imm_data = orig_cqe->immdata;
wc->ex.imm_data = cpu_to_be32(le32_to_cpu(orig_cqe->immdata));
wc->src_qp = orig_cqe->src_qp;
memcpy(wc->smac, orig_cqe->smac, ETH_ALEN);
wc->port_num = 1;
@ -2947,7 +2947,7 @@ int bnxt_re_poll_cq(struct ib_cq *ib_cq, int num_entries, struct ib_wc *wc)
continue;
}
wc->qp = &qp->ib_qp;
wc->ex.imm_data = cqe->immdata;
wc->ex.imm_data = cpu_to_be32(le32_to_cpu(cqe->immdata));
wc->src_qp = cqe->src_qp;
memcpy(wc->smac, cqe->smac, ETH_ALEN);
wc->port_num = 1;

View File

@ -123,7 +123,7 @@ struct bnxt_qplib_swqe {
/* Send, with imm, inval key */
struct {
union {
__be32 imm_data;
u32 imm_data;
u32 inv_key;
};
u32 q_key;
@ -141,7 +141,7 @@ struct bnxt_qplib_swqe {
/* RDMA write, with imm, read */
struct {
union {
__be32 imm_data;
u32 imm_data;
u32 inv_key;
};
u64 remote_va;
@ -327,7 +327,7 @@ struct bnxt_qplib_cqe {
u32 length;
u64 wr_id;
union {
__be32 immdata;
__le32 immdata;
u32 invrkey;
};
u64 qp_handle;

View File

@ -832,7 +832,7 @@ void mlx4_ib_destroy_alias_guid_service(struct mlx4_ib_dev *dev)
int mlx4_ib_init_alias_guid_service(struct mlx4_ib_dev *dev)
{
char alias_wq_name[15];
char alias_wq_name[22];
int ret = 0;
int i, j;
union ib_gid gid;

View File

@ -2170,7 +2170,7 @@ static int mlx4_ib_alloc_demux_ctx(struct mlx4_ib_dev *dev,
struct mlx4_ib_demux_ctx *ctx,
int port)
{
char name[12];
char name[21];
int ret = 0;
int i;

View File

@ -390,7 +390,7 @@ static struct sk_buff *init_req_packet(struct rxe_qp *qp,
int solicited;
u16 pkey;
u32 qp_num;
int ack_req;
int ack_req = 0;
/* length from start of bth to end of icrc */
paylen = rxe_opcode[opcode].length + payload + pad + RXE_ICRC_SIZE;
@ -426,8 +426,9 @@ static struct sk_buff *init_req_packet(struct rxe_qp *qp,
qp_num = (pkt->mask & RXE_DETH_MASK) ? ibwr->wr.ud.remote_qpn :
qp->attr.dest_qp_num;
ack_req = ((pkt->mask & RXE_END_MASK) ||
(qp->req.noack_pkts++ > RXE_MAX_PKT_PER_ACK));
if (qp_type(qp) != IB_QPT_UD && qp_type(qp) != IB_QPT_UC)
ack_req = ((pkt->mask & RXE_END_MASK) ||
(qp->req.noack_pkts++ > RXE_MAX_PKT_PER_ACK));
if (ack_req)
qp->req.noack_pkts = 0;

View File

@ -1185,6 +1185,8 @@ static int __maybe_unused elan_suspend(struct device *dev)
}
err:
if (ret)
enable_irq(client->irq);
mutex_unlock(&data->sysfs_mutex);
return ret;
}

View File

@ -75,6 +75,20 @@ struct mbigen_device {
void __iomem *base;
};
static inline unsigned int get_mbigen_node_offset(unsigned int nid)
{
unsigned int offset = nid * MBIGEN_NODE_OFFSET;
/*
* To avoid touched clear register in unexpected way, we need to directly
* skip clear register when access to more than 10 mbigen nodes.
*/
if (nid >= (REG_MBIGEN_CLEAR_OFFSET / MBIGEN_NODE_OFFSET))
offset += MBIGEN_NODE_OFFSET;
return offset;
}
static inline unsigned int get_mbigen_vec_reg(irq_hw_number_t hwirq)
{
unsigned int nid, pin;
@ -83,8 +97,7 @@ static inline unsigned int get_mbigen_vec_reg(irq_hw_number_t hwirq)
nid = hwirq / IRQS_PER_MBIGEN_NODE + 1;
pin = hwirq % IRQS_PER_MBIGEN_NODE;
return pin * 4 + nid * MBIGEN_NODE_OFFSET
+ REG_MBIGEN_VEC_OFFSET;
return pin * 4 + get_mbigen_node_offset(nid) + REG_MBIGEN_VEC_OFFSET;
}
static inline void get_mbigen_type_reg(irq_hw_number_t hwirq,
@ -99,8 +112,7 @@ static inline void get_mbigen_type_reg(irq_hw_number_t hwirq,
*mask = 1 << (irq_ofst % 32);
ofst = irq_ofst / 32 * 4;
*addr = ofst + nid * MBIGEN_NODE_OFFSET
+ REG_MBIGEN_TYPE_OFFSET;
*addr = ofst + get_mbigen_node_offset(nid) + REG_MBIGEN_TYPE_OFFSET;
}
static inline void get_mbigen_clear_reg(irq_hw_number_t hwirq,

View File

@ -1945,7 +1945,7 @@ hfcmulti_dtmf(struct hfc_multi *hc)
static void
hfcmulti_tx(struct hfc_multi *hc, int ch)
{
int i, ii, temp, len = 0;
int i, ii, temp, tmp_len, len = 0;
int Zspace, z1, z2; /* must be int for calculation */
int Fspace, f1, f2;
u_char *d;
@ -2166,14 +2166,15 @@ next_frame:
HFC_wait_nodebug(hc);
}
tmp_len = (*sp)->len;
dev_kfree_skb(*sp);
/* check for next frame */
if (bch && get_next_bframe(bch)) {
len = (*sp)->len;
len = tmp_len;
goto next_frame;
}
if (dch && get_next_dframe(dch)) {
len = (*sp)->len;
len = tmp_len;
goto next_frame;
}

View File

@ -368,8 +368,10 @@ static int ich7_lpc_probe(struct pci_dev *dev,
nas_gpio_pci_dev = dev;
status = pci_read_config_dword(dev, PMBASE, &g_pm_io_base);
if (status)
if (status) {
status = pcibios_err_to_errno(status);
goto out;
}
g_pm_io_base &= 0x00000ff80;
status = pci_read_config_dword(dev, GPIO_CTRL, &gc);
@ -381,8 +383,9 @@ static int ich7_lpc_probe(struct pci_dev *dev,
}
status = pci_read_config_dword(dev, GPIO_BASE, &nas_gpio_io_base);
if (0 > status) {
if (status) {
dev_info(&dev->dev, "Unable to read GPIOBASE.\n");
status = pcibios_err_to_errno(status);
goto out;
}
dev_dbg(&dev->dev, ": GPIOBASE = 0x%08x\n", nas_gpio_io_base);

View File

@ -518,7 +518,7 @@ g4fan_exit( void )
platform_driver_unregister( &therm_of_driver );
if( x.of_dev )
of_device_unregister( x.of_dev );
of_platform_device_destroy(&x.of_dev->dev, NULL);
}
module_init(g4fan_init);

View File

@ -5814,7 +5814,9 @@ static sector_t reshape_request(struct mddev *mddev, sector_t sector_nr, int *sk
safepos = conf->reshape_safe;
sector_div(safepos, data_disks);
if (mddev->reshape_backwards) {
BUG_ON(writepos < reshape_sectors);
if (WARN_ON(writepos < reshape_sectors))
return MaxSector;
writepos -= reshape_sectors;
readpos += reshape_sectors;
safepos += reshape_sectors;
@ -5832,14 +5834,18 @@ static sector_t reshape_request(struct mddev *mddev, sector_t sector_nr, int *sk
* to set 'stripe_addr' which is where we will write to.
*/
if (mddev->reshape_backwards) {
BUG_ON(conf->reshape_progress == 0);
if (WARN_ON(conf->reshape_progress == 0))
return MaxSector;
stripe_addr = writepos;
BUG_ON((mddev->dev_sectors &
~((sector_t)reshape_sectors - 1))
- reshape_sectors - stripe_addr
!= sector_nr);
if (WARN_ON((mddev->dev_sectors &
~((sector_t)reshape_sectors - 1)) -
reshape_sectors - stripe_addr != sector_nr))
return MaxSector;
} else {
BUG_ON(writepos != sector_nr + reshape_sectors);
if (WARN_ON(writepos != sector_nr + reshape_sectors))
return MaxSector;
stripe_addr = sector_nr;
}

View File

@ -475,7 +475,9 @@ static int philips_europa_tuner_sleep(struct dvb_frontend *fe)
/* switch the board to analog mode */
if (fe->ops.i2c_gate_ctrl)
fe->ops.i2c_gate_ctrl(fe, 1);
i2c_transfer(&dev->i2c_adap, &analog_msg, 1);
if (i2c_transfer(&dev->i2c_adap, &analog_msg, 1) != 1)
return -EIO;
return 0;
}
@ -1027,7 +1029,9 @@ static int md8800_set_voltage2(struct dvb_frontend *fe,
else
wbuf[1] = rbuf & 0xef;
msg[0].len = 2;
i2c_transfer(&dev->i2c_adap, msg, 1);
if (i2c_transfer(&dev->i2c_adap, msg, 1) != 1)
return -EIO;
return 0;
}

View File

@ -1039,6 +1039,7 @@ static int vdec_close(struct file *file)
{
struct venus_inst *inst = to_inst(file);
cancel_work_sync(&inst->delayed_process_work);
v4l2_m2m_ctx_release(inst->m2m_ctx);
v4l2_m2m_release(inst->m2m_dev);
vdec_ctrl_deinit(inst);

View File

@ -119,6 +119,7 @@ int vsp1_du_setup_lif(struct device *dev, unsigned int pipe_index,
* inputs.
*/
WARN_ON(list_empty(&rpf->entity.list_pipe));
rpf->entity.pipe = NULL;
list_del_init(&rpf->entity.list_pipe);
pipe->inputs[i] = NULL;
@ -535,8 +536,10 @@ void vsp1_du_atomic_flush(struct device *dev, unsigned int pipe_index)
continue;
}
if (list_empty(&rpf->entity.list_pipe))
if (list_empty(&rpf->entity.list_pipe)) {
rpf->entity.pipe = pipe;
list_add_tail(&rpf->entity.list_pipe, &pipe->entities);
}
bru->inputs[i].rpf = rpf;
rpf->bru_input = i;
@ -561,6 +564,7 @@ void vsp1_du_atomic_flush(struct device *dev, unsigned int pipe_index)
vsp1_dl_list_write(dl, entity->route->reg,
VI6_DPR_NODE_UNUSED);
entity->pipe = NULL;
list_del_init(&entity->list_pipe);
continue;
@ -633,24 +637,28 @@ int vsp1_drm_init(struct vsp1_device *vsp1)
vsp1_pipeline_init(pipe);
pipe->frame_end = vsp1_du_pipeline_frame_end;
/*
* The DRM pipeline is static, add entities manually. The first
* pipeline uses the BRU and the second pipeline the BRS.
*/
pipe->bru = i == 0 ? &vsp1->bru->entity : &vsp1->brs->entity;
pipe->lif = &vsp1->lif[i]->entity;
pipe->output = vsp1->wpf[i];
pipe->output->pipe = pipe;
pipe->frame_end = vsp1_du_pipeline_frame_end;
pipe->lif = &vsp1->lif[i]->entity;
pipe->bru->pipe = pipe;
pipe->bru->sink = &pipe->output->entity;
pipe->bru->sink_pad = 0;
list_add_tail(&pipe->bru->list_pipe, &pipe->entities);
pipe->output->entity.pipe = pipe;
pipe->output->entity.sink = pipe->lif;
pipe->output->entity.sink_pad = 0;
list_add_tail(&pipe->bru->list_pipe, &pipe->entities);
list_add_tail(&pipe->lif->list_pipe, &pipe->entities);
list_add_tail(&pipe->output->entity.list_pipe, &pipe->entities);
pipe->lif->pipe = pipe;
list_add_tail(&pipe->lif->list_pipe, &pipe->entities);
}
/* Disable all RPFs initially. */

View File

@ -63,7 +63,7 @@ static irqreturn_t vsp1_irq_handler(int irq, void *data)
vsp1_write(vsp1, VI6_WPF_IRQ_STA(i), ~status & mask);
if (status & VI6_WFP_IRQ_STA_DFE) {
vsp1_pipeline_frame_end(wpf->pipe);
vsp1_pipeline_frame_end(wpf->entity.pipe);
ret = IRQ_HANDLED;
}
}

View File

@ -106,6 +106,8 @@ struct vsp1_entity {
unsigned int index;
const struct vsp1_route *route;
struct vsp1_pipeline *pipe;
struct list_head list_dev;
struct list_head list_pipe;

View File

@ -40,9 +40,8 @@ struct vsp1_histogram_buffer *
vsp1_histogram_buffer_get(struct vsp1_histogram *histo)
{
struct vsp1_histogram_buffer *buf = NULL;
unsigned long flags;
spin_lock_irqsave(&histo->irqlock, flags);
spin_lock(&histo->irqlock);
if (list_empty(&histo->irqqueue))
goto done;
@ -53,7 +52,7 @@ vsp1_histogram_buffer_get(struct vsp1_histogram *histo)
histo->readout = true;
done:
spin_unlock_irqrestore(&histo->irqlock, flags);
spin_unlock(&histo->irqlock);
return buf;
}
@ -61,8 +60,7 @@ void vsp1_histogram_buffer_complete(struct vsp1_histogram *histo,
struct vsp1_histogram_buffer *buf,
size_t size)
{
struct vsp1_pipeline *pipe = histo->pipe;
unsigned long flags;
struct vsp1_pipeline *pipe = histo->entity.pipe;
/*
* The pipeline pointer is guaranteed to be valid as this function is
@ -74,10 +72,10 @@ void vsp1_histogram_buffer_complete(struct vsp1_histogram *histo,
vb2_set_plane_payload(&buf->buf.vb2_buf, 0, size);
vb2_buffer_done(&buf->buf.vb2_buf, VB2_BUF_STATE_DONE);
spin_lock_irqsave(&histo->irqlock, flags);
spin_lock(&histo->irqlock);
histo->readout = false;
wake_up(&histo->wait_queue);
spin_unlock_irqrestore(&histo->irqlock, flags);
spin_unlock(&histo->irqlock);
}
/* -----------------------------------------------------------------------------
@ -128,11 +126,10 @@ static void histo_buffer_queue(struct vb2_buffer *vb)
struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb);
struct vsp1_histogram *histo = vb2_get_drv_priv(vb->vb2_queue);
struct vsp1_histogram_buffer *buf = to_vsp1_histogram_buffer(vbuf);
unsigned long flags;
spin_lock_irqsave(&histo->irqlock, flags);
spin_lock_irq(&histo->irqlock);
list_add_tail(&buf->queue, &histo->irqqueue);
spin_unlock_irqrestore(&histo->irqlock, flags);
spin_unlock_irq(&histo->irqlock);
}
static int histo_start_streaming(struct vb2_queue *vq, unsigned int count)
@ -144,9 +141,8 @@ static void histo_stop_streaming(struct vb2_queue *vq)
{
struct vsp1_histogram *histo = vb2_get_drv_priv(vq);
struct vsp1_histogram_buffer *buffer;
unsigned long flags;
spin_lock_irqsave(&histo->irqlock, flags);
spin_lock_irq(&histo->irqlock);
/* Remove all buffers from the IRQ queue. */
list_for_each_entry(buffer, &histo->irqqueue, queue)
@ -156,7 +152,7 @@ static void histo_stop_streaming(struct vb2_queue *vq)
/* Wait for the buffer being read out (if any) to complete. */
wait_event_lock_irq(histo->wait_queue, !histo->readout, histo->irqlock);
spin_unlock_irqrestore(&histo->irqlock, flags);
spin_unlock_irq(&histo->irqlock);
}
static const struct vb2_ops histo_video_queue_qops = {

View File

@ -25,7 +25,6 @@
#include "vsp1_entity.h"
struct vsp1_device;
struct vsp1_pipeline;
#define HISTO_PAD_SINK 0
#define HISTO_PAD_SOURCE 1
@ -37,8 +36,6 @@ struct vsp1_histogram_buffer {
};
struct vsp1_histogram {
struct vsp1_pipeline *pipe;
struct vsp1_entity entity;
struct video_device video;
struct media_pad pad;

View File

@ -185,6 +185,7 @@ const struct vsp1_format_info *vsp1_get_format_info(struct vsp1_device *vsp1,
void vsp1_pipeline_reset(struct vsp1_pipeline *pipe)
{
struct vsp1_entity *entity;
unsigned int i;
if (pipe->bru) {
@ -194,29 +195,13 @@ void vsp1_pipeline_reset(struct vsp1_pipeline *pipe)
bru->inputs[i].rpf = NULL;
}
for (i = 0; i < ARRAY_SIZE(pipe->inputs); ++i) {
if (pipe->inputs[i]) {
pipe->inputs[i]->pipe = NULL;
pipe->inputs[i] = NULL;
}
}
for (i = 0; i < ARRAY_SIZE(pipe->inputs); ++i)
pipe->inputs[i] = NULL;
if (pipe->output) {
pipe->output->pipe = NULL;
pipe->output = NULL;
}
pipe->output = NULL;
if (pipe->hgo) {
struct vsp1_hgo *hgo = to_hgo(&pipe->hgo->subdev);
hgo->histo.pipe = NULL;
}
if (pipe->hgt) {
struct vsp1_hgt *hgt = to_hgt(&pipe->hgt->subdev);
hgt->histo.pipe = NULL;
}
list_for_each_entry(entity, &pipe->entities, list_pipe)
entity->pipe = NULL;
INIT_LIST_HEAD(&pipe->entities);
pipe->state = VSP1_PIPELINE_STOPPED;
@ -423,7 +408,7 @@ void vsp1_pipelines_suspend(struct vsp1_device *vsp1)
if (wpf == NULL)
continue;
pipe = wpf->pipe;
pipe = wpf->entity.pipe;
if (pipe == NULL)
continue;
@ -440,7 +425,7 @@ void vsp1_pipelines_suspend(struct vsp1_device *vsp1)
if (wpf == NULL)
continue;
pipe = wpf->pipe;
pipe = wpf->entity.pipe;
if (pipe == NULL)
continue;
@ -465,7 +450,7 @@ void vsp1_pipelines_resume(struct vsp1_device *vsp1)
if (wpf == NULL)
continue;
pipe = wpf->pipe;
pipe = wpf->entity.pipe;
if (pipe == NULL)
continue;

View File

@ -77,7 +77,7 @@ struct vsp1_partition_window {
* @wpf: The WPF partition window configuration
*/
struct vsp1_partition {
struct vsp1_partition_window rpf;
struct vsp1_partition_window rpf[VSP1_MAX_RPF];
struct vsp1_partition_window uds_sink;
struct vsp1_partition_window uds_source;
struct vsp1_partition_window sru;

View File

@ -97,8 +97,8 @@ static void rpf_configure(struct vsp1_entity *entity,
* 'width' need to be adjusted.
*/
if (pipe->partitions > 1) {
crop.width = pipe->partition->rpf.width;
crop.left += pipe->partition->rpf.left;
crop.width = pipe->partition->rpf[rpf->entity.index].width;
crop.left += pipe->partition->rpf[rpf->entity.index].left;
}
vsp1_rpf_write(rpf, dl, VI6_RPF_SRC_BSIZE,
@ -253,7 +253,9 @@ static void rpf_partition(struct vsp1_entity *entity,
unsigned int partition_idx,
struct vsp1_partition_window *window)
{
partition->rpf = *window;
struct vsp1_rwpf *rpf = to_rwpf(&entity->subdev);
partition->rpf[rpf->entity.index] = *window;
}
static const struct vsp1_entity_operations rpf_entity_ops = {

View File

@ -27,7 +27,6 @@
struct v4l2_ctrl;
struct vsp1_dl_manager;
struct vsp1_pipeline;
struct vsp1_rwpf;
struct vsp1_video;
@ -39,7 +38,6 @@ struct vsp1_rwpf {
struct vsp1_entity entity;
struct v4l2_ctrl_handler ctrls;
struct vsp1_pipeline *pipe;
struct vsp1_video *video;
unsigned int max_width;

View File

@ -324,7 +324,7 @@ static int vsp1_video_pipeline_setup_partitions(struct vsp1_pipeline *pipe)
static struct vsp1_vb2_buffer *
vsp1_video_complete_buffer(struct vsp1_video *video)
{
struct vsp1_pipeline *pipe = video->rwpf->pipe;
struct vsp1_pipeline *pipe = video->rwpf->entity.pipe;
struct vsp1_vb2_buffer *next = NULL;
struct vsp1_vb2_buffer *done;
unsigned long flags;
@ -598,20 +598,19 @@ static int vsp1_video_pipeline_build(struct vsp1_pipeline *pipe,
subdev = media_entity_to_v4l2_subdev(entity);
e = to_vsp1_entity(subdev);
list_add_tail(&e->list_pipe, &pipe->entities);
e->pipe = pipe;
switch (e->type) {
case VSP1_ENTITY_RPF:
rwpf = to_rwpf(subdev);
pipe->inputs[rwpf->entity.index] = rwpf;
rwpf->video->pipe_index = ++pipe->num_inputs;
rwpf->pipe = pipe;
break;
case VSP1_ENTITY_WPF:
rwpf = to_rwpf(subdev);
pipe->output = rwpf;
rwpf->video->pipe_index = 0;
rwpf->pipe = pipe;
break;
case VSP1_ENTITY_LIF:
@ -625,12 +624,10 @@ static int vsp1_video_pipeline_build(struct vsp1_pipeline *pipe,
case VSP1_ENTITY_HGO:
pipe->hgo = e;
to_hgo(subdev)->histo.pipe = pipe;
break;
case VSP1_ENTITY_HGT:
pipe->hgt = e;
to_hgt(subdev)->histo.pipe = pipe;
break;
default:
@ -682,7 +679,7 @@ static struct vsp1_pipeline *vsp1_video_pipeline_get(struct vsp1_video *video)
* Otherwise allocate a new pipeline and initialize it, it will be freed
* when the last reference is released.
*/
if (!video->rwpf->pipe) {
if (!video->rwpf->entity.pipe) {
pipe = kzalloc(sizeof(*pipe), GFP_KERNEL);
if (!pipe)
return ERR_PTR(-ENOMEM);
@ -694,7 +691,7 @@ static struct vsp1_pipeline *vsp1_video_pipeline_get(struct vsp1_video *video)
return ERR_PTR(ret);
}
} else {
pipe = video->rwpf->pipe;
pipe = video->rwpf->entity.pipe;
kref_get(&pipe->kref);
}
@ -777,7 +774,7 @@ static void vsp1_video_buffer_queue(struct vb2_buffer *vb)
{
struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb);
struct vsp1_video *video = vb2_get_drv_priv(vb->vb2_queue);
struct vsp1_pipeline *pipe = video->rwpf->pipe;
struct vsp1_pipeline *pipe = video->rwpf->entity.pipe;
struct vsp1_vb2_buffer *buf = to_vsp1_vb2_buffer(vbuf);
unsigned long flags;
bool empty;
@ -877,7 +874,7 @@ static void vsp1_video_cleanup_pipeline(struct vsp1_pipeline *pipe)
static int vsp1_video_start_streaming(struct vb2_queue *vq, unsigned int count)
{
struct vsp1_video *video = vb2_get_drv_priv(vq);
struct vsp1_pipeline *pipe = video->rwpf->pipe;
struct vsp1_pipeline *pipe = video->rwpf->entity.pipe;
bool start_pipeline = false;
unsigned long flags;
int ret;
@ -919,7 +916,7 @@ static int vsp1_video_start_streaming(struct vb2_queue *vq, unsigned int count)
static void vsp1_video_stop_streaming(struct vb2_queue *vq)
{
struct vsp1_video *video = vb2_get_drv_priv(vq);
struct vsp1_pipeline *pipe = video->rwpf->pipe;
struct vsp1_pipeline *pipe = video->rwpf->entity.pipe;
unsigned long flags;
int ret;

View File

@ -1150,10 +1150,7 @@ static int imon_ir_change_protocol(struct rc_dev *rc, u64 *rc_proto)
memcpy(ictx->usb_tx_buf, &ir_proto_packet, sizeof(ir_proto_packet));
if (!mutex_is_locked(&ictx->lock)) {
unlock = true;
mutex_lock(&ictx->lock);
}
unlock = mutex_trylock(&ictx->lock);
retval = send_packet(ictx);
if (retval)

View File

@ -167,13 +167,13 @@ static void uvc_fixup_video_ctrl(struct uvc_streaming *stream,
/* Compute a bandwidth estimation by multiplying the frame
* size by the number of video frames per second, divide the
* result by the number of USB frames (or micro-frames for
* high-speed devices) per second and add the UVC header size
* (assumed to be 12 bytes long).
* high- and super-speed devices) per second and add the UVC
* header size (assumed to be 12 bytes long).
*/
bandwidth = frame->wWidth * frame->wHeight / 8 * format->bpp;
bandwidth *= 10000000 / interval + 1;
bandwidth /= 1000;
if (stream->dev->udev->speed == USB_SPEED_HIGH)
if (stream->dev->udev->speed >= USB_SPEED_HIGH)
bandwidth /= 8;
bandwidth += 12;
@ -428,6 +428,7 @@ uvc_video_clock_decode(struct uvc_streaming *stream, struct uvc_buffer *buf,
struct timespec ts;
u16 host_sof;
u16 dev_sof;
u32 dev_stc;
switch (data[1] & (UVC_STREAM_PTS | UVC_STREAM_SCR)) {
case UVC_STREAM_PTS | UVC_STREAM_SCR:
@ -472,6 +473,34 @@ uvc_video_clock_decode(struct uvc_streaming *stream, struct uvc_buffer *buf,
if (dev_sof == stream->clock.last_sof)
return;
dev_stc = get_unaligned_le32(&data[header_size - 6]);
/*
* STC (Source Time Clock) is the clock used by the camera. The UVC 1.5
* standard states that it "must be captured when the first video data
* of a video frame is put on the USB bus". This is generally understood
* as requiring devices to clear the payload header's SCR bit before
* the first packet containing video data.
*
* Most vendors follow that interpretation, but some (namely SunplusIT
* on some devices) always set the `UVC_STREAM_SCR` bit, fill the SCR
* field with 0's,and expect that the driver only processes the SCR if
* there is data in the packet.
*
* Ignore all the hardware timestamp information if we haven't received
* any data for this frame yet, the packet contains no data, and both
* STC and SOF are zero. This heuristics should be safe on compliant
* devices. This should be safe with compliant devices, as in the very
* unlikely case where a UVC 1.1 device would send timing information
* only before the first packet containing data, and both STC and SOF
* happen to be zero for a particular frame, we would only miss one
* clock sample from many and the clock recovery algorithm wouldn't
* suffer from this condition.
*/
if (buf && buf->bytesused == 0 && len == header_size &&
dev_stc == 0 && dev_sof == 0)
return;
stream->clock.last_sof = dev_sof;
host_sof = usb_get_current_frame_number(stream->dev->udev);
@ -509,7 +538,7 @@ uvc_video_clock_decode(struct uvc_streaming *stream, struct uvc_buffer *buf,
spin_lock_irqsave(&stream->clock.lock, flags);
sample = &stream->clock.samples[stream->clock.head];
sample->dev_stc = get_unaligned_le32(&data[header_size - 6]);
sample->dev_stc = dev_stc;
sample->dev_sof = dev_sof;
sample->host_sof = host_sof;
sample->host_ts = ts;

View File

@ -1,19 +1,19 @@
# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_MTD_TESTS) += mtd_oobtest.o
obj-$(CONFIG_MTD_TESTS) += mtd_pagetest.o
obj-$(CONFIG_MTD_TESTS) += mtd_readtest.o
obj-$(CONFIG_MTD_TESTS) += mtd_speedtest.o
obj-$(CONFIG_MTD_TESTS) += mtd_stresstest.o
obj-$(CONFIG_MTD_TESTS) += mtd_subpagetest.o
obj-$(CONFIG_MTD_TESTS) += mtd_torturetest.o
obj-$(CONFIG_MTD_TESTS) += mtd_nandecctest.o
obj-$(CONFIG_MTD_TESTS) += mtd_nandbiterrs.o
obj-$(CONFIG_MTD_TESTS) += mtd_oobtest.o mtd_test.o
obj-$(CONFIG_MTD_TESTS) += mtd_pagetest.o mtd_test.o
obj-$(CONFIG_MTD_TESTS) += mtd_readtest.o mtd_test.o
obj-$(CONFIG_MTD_TESTS) += mtd_speedtest.o mtd_test.o
obj-$(CONFIG_MTD_TESTS) += mtd_stresstest.o mtd_test.o
obj-$(CONFIG_MTD_TESTS) += mtd_subpagetest.o mtd_test.o
obj-$(CONFIG_MTD_TESTS) += mtd_torturetest.o mtd_test.o
obj-$(CONFIG_MTD_TESTS) += mtd_nandecctest.o mtd_test.o
obj-$(CONFIG_MTD_TESTS) += mtd_nandbiterrs.o mtd_test.o
mtd_oobtest-objs := oobtest.o mtd_test.o
mtd_pagetest-objs := pagetest.o mtd_test.o
mtd_readtest-objs := readtest.o mtd_test.o
mtd_speedtest-objs := speedtest.o mtd_test.o
mtd_stresstest-objs := stresstest.o mtd_test.o
mtd_subpagetest-objs := subpagetest.o mtd_test.o
mtd_torturetest-objs := torturetest.o mtd_test.o
mtd_nandbiterrs-objs := nandbiterrs.o mtd_test.o
mtd_oobtest-objs := oobtest.o
mtd_pagetest-objs := pagetest.o
mtd_readtest-objs := readtest.o
mtd_speedtest-objs := speedtest.o
mtd_stresstest-objs := stresstest.o
mtd_subpagetest-objs := subpagetest.o
mtd_torturetest-objs := torturetest.o
mtd_nandbiterrs-objs := nandbiterrs.o

View File

@ -30,6 +30,7 @@ int mtdtest_erase_eraseblock(struct mtd_info *mtd, unsigned int ebnum)
}
return 0;
}
EXPORT_SYMBOL_GPL(mtdtest_erase_eraseblock);
static int is_block_bad(struct mtd_info *mtd, unsigned int ebnum)
{
@ -62,6 +63,7 @@ int mtdtest_scan_for_bad_eraseblocks(struct mtd_info *mtd, unsigned char *bbt,
return 0;
}
EXPORT_SYMBOL_GPL(mtdtest_scan_for_bad_eraseblocks);
int mtdtest_erase_good_eraseblocks(struct mtd_info *mtd, unsigned char *bbt,
unsigned int eb, int ebcnt)
@ -80,6 +82,7 @@ int mtdtest_erase_good_eraseblocks(struct mtd_info *mtd, unsigned char *bbt,
return 0;
}
EXPORT_SYMBOL_GPL(mtdtest_erase_good_eraseblocks);
int mtdtest_read(struct mtd_info *mtd, loff_t addr, size_t size, void *buf)
{
@ -97,6 +100,7 @@ int mtdtest_read(struct mtd_info *mtd, loff_t addr, size_t size, void *buf)
return err;
}
EXPORT_SYMBOL_GPL(mtdtest_read);
int mtdtest_write(struct mtd_info *mtd, loff_t addr, size_t size,
const void *buf)
@ -112,3 +116,8 @@ int mtdtest_write(struct mtd_info *mtd, loff_t addr, size_t size,
return err;
}
EXPORT_SYMBOL_GPL(mtdtest_write);
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("MTD function test helpers");
MODULE_AUTHOR("Akinobu Mita");

View File

@ -1554,6 +1554,7 @@ int self_check_eba(struct ubi_device *ubi, struct ubi_attach_info *ai_fastmap,
GFP_KERNEL);
if (!fm_eba[i]) {
ret = -ENOMEM;
kfree(scan_eba[i]);
goto out_free;
}
@ -1589,7 +1590,7 @@ int self_check_eba(struct ubi_device *ubi, struct ubi_attach_info *ai_fastmap,
}
out_free:
for (i = 0; i < num_volumes; i++) {
while (--i >= 0) {
if (!ubi->volumes[i])
continue;

View File

@ -774,13 +774,10 @@ static struct slave *bond_find_best_slave(struct bonding *bond)
return bestslave;
}
/* must be called in RCU critical section or with RTNL held */
static bool bond_should_notify_peers(struct bonding *bond)
{
struct slave *slave;
rcu_read_lock();
slave = rcu_dereference(bond->curr_active_slave);
rcu_read_unlock();
struct slave *slave = rcu_dereference_rtnl(bond->curr_active_slave);
if (!slave || !bond->send_peer_notif ||
!netif_carrier_ok(bond->dev) ||

View File

@ -418,7 +418,7 @@ struct bna_ib {
/* Tx object */
/* Tx datapath control structure */
#define BNA_Q_NAME_SIZE 16
#define BNA_Q_NAME_SIZE (IFNAMSIZ + 6)
struct bna_tcb {
/* Fast path */
void **sw_qpt;

View File

@ -1543,8 +1543,9 @@ bnad_tx_msix_register(struct bnad *bnad, struct bnad_tx_info *tx_info,
for (i = 0; i < num_txqs; i++) {
vector_num = tx_info->tcb[i]->intr_vector;
sprintf(tx_info->tcb[i]->name, "%s TXQ %d", bnad->netdev->name,
tx_id + tx_info->tcb[i]->id);
snprintf(tx_info->tcb[i]->name, BNA_Q_NAME_SIZE, "%s TXQ %d",
bnad->netdev->name,
tx_id + tx_info->tcb[i]->id);
err = request_irq(bnad->msix_table[vector_num].vector,
(irq_handler_t)bnad_msix_tx, 0,
tx_info->tcb[i]->name,
@ -1594,9 +1595,9 @@ bnad_rx_msix_register(struct bnad *bnad, struct bnad_rx_info *rx_info,
for (i = 0; i < num_rxps; i++) {
vector_num = rx_info->rx_ctrl[i].ccb->intr_vector;
sprintf(rx_info->rx_ctrl[i].ccb->name, "%s CQ %d",
bnad->netdev->name,
rx_id + rx_info->rx_ctrl[i].ccb->id);
snprintf(rx_info->rx_ctrl[i].ccb->name, BNA_Q_NAME_SIZE,
"%s CQ %d", bnad->netdev->name,
rx_id + rx_info->rx_ctrl[i].ccb->id);
err = request_irq(bnad->msix_table[vector_num].vector,
(irq_handler_t)bnad_msix_rx, 0,
rx_info->rx_ctrl[i].ccb->name,

View File

@ -183,8 +183,8 @@ MODULE_PARM_DESC(macaddr, "FEC Ethernet MAC address");
#define PKT_MINBUF_SIZE 64
/* FEC receive acceleration */
#define FEC_RACC_IPDIS (1 << 1)
#define FEC_RACC_PRODIS (1 << 2)
#define FEC_RACC_IPDIS BIT(1)
#define FEC_RACC_PRODIS BIT(2)
#define FEC_RACC_SHIFT16 BIT(7)
#define FEC_RACC_OPTIONS (FEC_RACC_IPDIS | FEC_RACC_PRODIS)
@ -212,8 +212,23 @@ MODULE_PARM_DESC(macaddr, "FEC Ethernet MAC address");
#define FEC_MMFR_TA (2 << 16)
#define FEC_MMFR_DATA(v) (v & 0xffff)
/* FEC ECR bits definition */
#define FEC_ECR_MAGICEN (1 << 2)
#define FEC_ECR_SLEEP (1 << 3)
#define FEC_ECR_RESET BIT(0)
#define FEC_ECR_ETHEREN BIT(1)
#define FEC_ECR_MAGICEN BIT(2)
#define FEC_ECR_SLEEP BIT(3)
#define FEC_ECR_EN1588 BIT(4)
#define FEC_ECR_BYTESWP BIT(8)
/* FEC RCR bits definition */
#define FEC_RCR_LOOP BIT(0)
#define FEC_RCR_HALFDPX BIT(1)
#define FEC_RCR_MII BIT(2)
#define FEC_RCR_PROMISC BIT(3)
#define FEC_RCR_BC_REJ BIT(4)
#define FEC_RCR_FLOWCTL BIT(5)
#define FEC_RCR_RMII BIT(8)
#define FEC_RCR_10BASET BIT(9)
/* TX WMARK bits */
#define FEC_TXWMRK_STRFWD BIT(8)
#define FEC_MII_TIMEOUT 30000 /* us */
@ -909,7 +924,7 @@ fec_restart(struct net_device *ndev)
u32 val;
u32 temp_mac[2];
u32 rcntl = OPT_FRAME_SIZE | 0x04;
u32 ecntl = 0x2; /* ETHEREN */
u32 ecntl = FEC_ECR_ETHEREN;
/* Whack a reset. We should wait for this.
* For i.MX6SX SOC, enet use AXI bus, we use disable MAC
@ -985,18 +1000,18 @@ fec_restart(struct net_device *ndev)
fep->phy_interface == PHY_INTERFACE_MODE_RGMII_TXID)
rcntl |= (1 << 6);
else if (fep->phy_interface == PHY_INTERFACE_MODE_RMII)
rcntl |= (1 << 8);
rcntl |= FEC_RCR_RMII;
else
rcntl &= ~(1 << 8);
rcntl &= ~FEC_RCR_RMII;
/* 1G, 100M or 10M */
if (ndev->phydev) {
if (ndev->phydev->speed == SPEED_1000)
ecntl |= (1 << 5);
else if (ndev->phydev->speed == SPEED_100)
rcntl &= ~(1 << 9);
rcntl &= ~FEC_RCR_10BASET;
else
rcntl |= (1 << 9);
rcntl |= FEC_RCR_10BASET;
}
} else {
#ifdef FEC_MIIGSK_ENR
@ -1055,13 +1070,13 @@ fec_restart(struct net_device *ndev)
if (fep->quirks & FEC_QUIRK_ENET_MAC) {
/* enable ENET endian swap */
ecntl |= (1 << 8);
ecntl |= FEC_ECR_BYTESWP;
/* enable ENET store and forward mode */
writel(1 << 8, fep->hwp + FEC_X_WMRK);
writel(FEC_TXWMRK_STRFWD, fep->hwp + FEC_X_WMRK);
}
if (fep->bufdesc_ex)
ecntl |= (1 << 4);
ecntl |= FEC_ECR_EN1588;
#ifndef CONFIG_M5272
/* Enable the MIB statistic event counters */
@ -1091,7 +1106,7 @@ fec_stop(struct net_device *ndev)
{
struct fec_enet_private *fep = netdev_priv(ndev);
struct fec_platform_data *pdata = fep->pdev->dev.platform_data;
u32 rmii_mode = readl(fep->hwp + FEC_R_CNTRL) & (1 << 8);
u32 rmii_mode = readl(fep->hwp + FEC_R_CNTRL) & FEC_RCR_RMII;
u32 val;
/* We cannot expect a graceful transmit stop without link !!! */
@ -1110,7 +1125,7 @@ fec_stop(struct net_device *ndev)
if (fep->quirks & FEC_QUIRK_HAS_AVB) {
writel(0, fep->hwp + FEC_ECNTRL);
} else {
writel(1, fep->hwp + FEC_ECNTRL);
writel(FEC_ECR_RESET, fep->hwp + FEC_ECNTRL);
udelay(10);
}
writel(FEC_DEFAULT_IMASK, fep->hwp + FEC_IMASK);
@ -1128,11 +1143,16 @@ fec_stop(struct net_device *ndev)
/* We have to keep ENET enabled to have MII interrupt stay working */
if (fep->quirks & FEC_QUIRK_ENET_MAC &&
!(fep->wol_flag & FEC_WOL_FLAG_SLEEP_ON)) {
writel(2, fep->hwp + FEC_ECNTRL);
writel(FEC_ECR_ETHEREN, fep->hwp + FEC_ECNTRL);
writel(rmii_mode, fep->hwp + FEC_R_CNTRL);
}
}
if (fep->bufdesc_ex) {
val = readl(fep->hwp + FEC_ECNTRL);
val |= FEC_ECR_EN1588;
writel(val, fep->hwp + FEC_ECNTRL);
}
}
static void
fec_timeout(struct net_device *ndev)

View File

@ -608,6 +608,9 @@ void fec_ptp_stop(struct platform_device *pdev)
struct net_device *ndev = platform_get_drvdata(pdev);
struct fec_enet_private *fep = netdev_priv(ndev);
if (fep->pps_enable)
fec_ptp_enable_pps(fep, 0);
cancel_delayed_work_sync(&fep->time_keep);
if (fep->ptp_clock)
ptp_clock_unregister(fep->ptp_clock);

View File

@ -727,6 +727,7 @@ restart:
/* rtnl_lock already held
* we might sleep in __netpoll_cleanup()
*/
nt->enabled = false;
spin_unlock_irqrestore(&target_list_lock, flags);
__netpoll_cleanup(&nt->np);
@ -734,7 +735,6 @@ restart:
spin_lock_irqsave(&target_list_lock, flags);
dev_put(nt->np.dev);
nt->np.dev = NULL;
nt->enabled = false;
stopped = true;
netconsole_target_put(nt);
goto restart;

View File

@ -241,6 +241,7 @@ static int qmimux_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
break;
default:
/* not ip - do not know what to do */
kfree_skb(skbn);
goto skip;
}

View File

@ -178,6 +178,7 @@ static int sr_mdio_read(struct net_device *netdev, int phy_id, int loc)
struct usbnet *dev = netdev_priv(netdev);
__le16 res;
int rc = 0;
int err;
if (phy_id) {
netdev_dbg(netdev, "Only internal phy supported\n");
@ -188,11 +189,17 @@ static int sr_mdio_read(struct net_device *netdev, int phy_id, int loc)
if (loc == MII_BMSR) {
u8 value;
sr_read_reg(dev, SR_NSR, &value);
err = sr_read_reg(dev, SR_NSR, &value);
if (err < 0)
return err;
if (value & NSR_LINKST)
rc = 1;
}
sr_share_read_word(dev, 1, loc, &res);
err = sr_share_read_word(dev, 1, loc, &res);
if (err < 0)
return err;
if (rc == 1)
res = le16_to_cpu(res) | BMSR_LSTATUS;
else

View File

@ -2638,7 +2638,6 @@ wlc_lcnphy_tx_iqlo_cal(struct brcms_phy *pi,
struct lcnphy_txgains cal_gains, temp_gains;
u16 hash;
u8 band_idx;
int j;
u16 ncorr_override[5];
u16 syst_coeffs[] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@ -2670,6 +2669,9 @@ wlc_lcnphy_tx_iqlo_cal(struct brcms_phy *pi,
u16 *values_to_save;
struct brcms_phy_lcnphy *pi_lcn = pi->u.pi_lcnphy;
if (WARN_ON(CHSPEC_IS5G(pi->radio_chanspec)))
return;
values_to_save = kmalloc(sizeof(u16) * 20, GFP_ATOMIC);
if (NULL == values_to_save)
return;
@ -2733,20 +2735,18 @@ wlc_lcnphy_tx_iqlo_cal(struct brcms_phy *pi,
hash = (target_gains->gm_gain << 8) |
(target_gains->pga_gain << 4) | (target_gains->pad_gain);
band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
cal_gains = *target_gains;
memset(ncorr_override, 0, sizeof(ncorr_override));
for (j = 0; j < iqcal_gainparams_numgains_lcnphy[band_idx]; j++) {
if (hash == tbl_iqcal_gainparams_lcnphy[band_idx][j][0]) {
for (j = 0; j < iqcal_gainparams_numgains_lcnphy[0]; j++) {
if (hash == tbl_iqcal_gainparams_lcnphy[0][j][0]) {
cal_gains.gm_gain =
tbl_iqcal_gainparams_lcnphy[band_idx][j][1];
tbl_iqcal_gainparams_lcnphy[0][j][1];
cal_gains.pga_gain =
tbl_iqcal_gainparams_lcnphy[band_idx][j][2];
tbl_iqcal_gainparams_lcnphy[0][j][2];
cal_gains.pad_gain =
tbl_iqcal_gainparams_lcnphy[band_idx][j][3];
tbl_iqcal_gainparams_lcnphy[0][j][3];
memcpy(ncorr_override,
&tbl_iqcal_gainparams_lcnphy[band_idx][j][3],
&tbl_iqcal_gainparams_lcnphy[0][j][3],
sizeof(ncorr_override));
break;
}

View File

@ -920,6 +920,8 @@ mwifiex_init_new_priv_params(struct mwifiex_private *priv,
return -EOPNOTSUPP;
}
priv->bss_num = mwifiex_get_unused_bss_num(adapter, priv->bss_type);
spin_lock_irqsave(&adapter->main_proc_lock, flags);
adapter->main_locked = false;
spin_unlock_irqrestore(&adapter->main_proc_lock, flags);

View File

@ -2351,6 +2351,13 @@ static unsigned long check_vendor_combination_bug(struct pci_dev *pdev)
return NVME_QUIRK_NO_APST;
}
/*
* NVMe SSD drops off the PCIe bus after system idle
* for 10 hours on a Lenovo N60z board.
*/
if (dmi_match(DMI_BOARD_NAME, "LXKT-ZXEG-N6"))
return NVME_QUIRK_NO_APST;
return 0;
}

View File

@ -109,8 +109,7 @@ again:
((num_ports = num_mux_ports(port)) == 2 || num_ports == 4)) {
/* Leave original as port zero. */
port->muxport = 0;
printk(KERN_INFO
"%s: 1st (default) port of %d-way multiplexor\n",
pr_info("%s: 1st (default) port of %d-way multiplexor\n",
port->name, num_ports);
for (i = 1; i < num_ports; i++) {
/* Clone the port. */
@ -123,8 +122,7 @@ again:
continue;
}
printk(KERN_INFO
"%s: %d%s port of %d-way multiplexor on %s\n",
pr_info("%s: %d%s port of %d-way multiplexor on %s\n",
extra->name, i + 1, th[i + 1], num_ports,
port->name);

View File

@ -336,7 +336,7 @@ int parport_negotiate (struct parport *port, int mode)
#ifndef CONFIG_PARPORT_1284
if (mode == IEEE1284_MODE_COMPAT)
return 0;
printk (KERN_ERR "parport: IEEE1284 not supported in this kernel\n");
pr_err("parport: IEEE1284 not supported in this kernel\n");
return -1;
#else
int m = mode & ~IEEE1284_ADDR;
@ -700,7 +700,7 @@ ssize_t parport_write (struct parport *port, const void *buffer, size_t len)
ssize_t parport_read (struct parport *port, void *buffer, size_t len)
{
#ifndef CONFIG_PARPORT_1284
printk (KERN_ERR "parport: IEEE1284 not supported in this kernel\n");
pr_err("parport: IEEE1284 not supported in this kernel\n");
return -ENODEV;
#else
int mode = port->physport->ieee1284.mode;

View File

@ -599,8 +599,7 @@ size_t parport_ieee1284_ecp_read_data (struct parport *port,
DPRINTK (KERN_DEBUG "ECP read timed out at 45\n");
if (command)
printk (KERN_WARNING
"%s: command ignored (%02x)\n",
pr_warn("%s: command ignored (%02x)\n",
port->name, byte);
break;

View File

@ -211,7 +211,7 @@ static int __init amiga_parallel_probe(struct platform_device *pdev)
if (err)
goto out_irq;
printk(KERN_INFO "%s: Amiga built-in port using irq\n", p->name);
pr_info("%s: Amiga built-in port using irq\n", p->name);
/* XXX: set operating mode */
parport_announce_port(p);

View File

@ -199,7 +199,7 @@ static int __init parport_atari_init(void)
}
this_port = p;
printk(KERN_INFO "%s: Atari built-in port using irq\n", p->name);
pr_info("%s: Atari built-in port using irq\n", p->name);
parport_announce_port (p);
return 0;

View File

@ -142,10 +142,8 @@ static int parport_config(struct pcmcia_device *link)
link->irq, PARPORT_DMA_NONE,
&link->dev, IRQF_SHARED);
if (p == NULL) {
printk(KERN_NOTICE "parport_cs: parport_pc_probe_port() at "
"0x%3x, irq %u failed\n",
(unsigned int) link->resource[0]->start,
link->irq);
pr_notice("parport_cs: parport_pc_probe_port() at 0x%3x, irq %u failed\n",
(unsigned int)link->resource[0]->start, link->irq);
goto failed;
}

View File

@ -287,7 +287,7 @@ struct parport *parport_gsc_probe_port(unsigned long base,
p->size = (p->modes & PARPORT_MODE_EPP)?8:3;
p->private_data = priv;
printk(KERN_INFO "%s: PC-style at 0x%lx", p->name, p->base);
pr_info("%s: PC-style at 0x%lx", p->name, p->base);
p->irq = irq;
if (p->irq == PARPORT_IRQ_AUTO) {
p->irq = PARPORT_IRQ_NONE;
@ -304,12 +304,16 @@ struct parport *parport_gsc_probe_port(unsigned long base,
p->dma = PARPORT_DMA_NONE;
pr_cont(" [");
#define printmode(x) {if(p->modes&PARPORT_MODE_##x){pr_cont("%s%s",f?",":"",#x);f++;}}
#define printmode(x) \
do { \
if (p->modes & PARPORT_MODE_##x) \
pr_cont("%s%s", f++ ? "," : "", #x); \
} while (0)
{
int f = 0;
printmode(PCSPP);
printmode(TRISTATE);
printmode(COMPAT)
printmode(COMPAT);
printmode(EPP);
// printmode(ECP);
// printmode(DMA);
@ -320,8 +324,7 @@ struct parport *parport_gsc_probe_port(unsigned long base,
if (p->irq != PARPORT_IRQ_NONE) {
if (request_irq (p->irq, parport_irq_handler,
0, p->name, p)) {
printk (KERN_WARNING "%s: irq %d in use, "
"resorting to polled operation\n",
pr_warn("%s: irq %d in use, resorting to polled operation\n",
p->name, p->irq);
p->irq = PARPORT_IRQ_NONE;
p->dma = PARPORT_DMA_NONE;
@ -352,7 +355,7 @@ static int __init parport_init_chip(struct parisc_device *dev)
unsigned long port;
if (!dev->irq) {
printk(KERN_WARNING "IRQ not found for parallel device at 0x%llx\n",
pr_warn("IRQ not found for parallel device at 0x%llx\n",
(unsigned long long)dev->hpa.start);
return -ENODEV;
}

View File

@ -1348,9 +1348,8 @@ static unsigned int parport_ip32_fwp_wait_interrupt(struct parport *p)
ecr = parport_ip32_read_econtrol(p);
if ((ecr & ECR_F_EMPTY) && !(ecr & ECR_SERVINTR)
&& !lost_interrupt) {
printk(KERN_WARNING PPIP32
"%s: lost interrupt in %s\n",
p->name, __func__);
pr_warn(PPIP32 "%s: lost interrupt in %s\n",
p->name, __func__);
lost_interrupt = 1;
}
}
@ -1654,8 +1653,8 @@ static size_t parport_ip32_compat_write_data(struct parport *p,
DSR_nBUSY | DSR_nFAULT)) {
/* Avoid to flood the logs */
if (ready_before)
printk(KERN_INFO PPIP32 "%s: not ready in %s\n",
p->name, __func__);
pr_info(PPIP32 "%s: not ready in %s\n",
p->name, __func__);
ready_before = 0;
goto stop;
}
@ -1735,8 +1734,8 @@ static size_t parport_ip32_ecp_write_data(struct parport *p,
DSR_nBUSY | DSR_nFAULT)) {
/* Avoid to flood the logs */
if (ready_before)
printk(KERN_INFO PPIP32 "%s: not ready in %s\n",
p->name, __func__);
pr_info(PPIP32 "%s: not ready in %s\n",
p->name, __func__);
ready_before = 0;
goto stop;
}
@ -2075,8 +2074,7 @@ static __init struct parport *parport_ip32_probe_port(void)
p->modes |= PARPORT_MODE_TRISTATE;
if (!parport_ip32_fifo_supported(p)) {
printk(KERN_WARNING PPIP32
"%s: error: FIFO disabled\n", p->name);
pr_warn(PPIP32 "%s: error: FIFO disabled\n", p->name);
/* Disable hardware modes depending on a working FIFO. */
features &= ~PARPORT_IP32_ENABLE_SPP;
features &= ~PARPORT_IP32_ENABLE_ECP;
@ -2088,8 +2086,7 @@ static __init struct parport *parport_ip32_probe_port(void)
if (features & PARPORT_IP32_ENABLE_IRQ) {
int irq = MACEISA_PARALLEL_IRQ;
if (request_irq(irq, parport_ip32_interrupt, 0, p->name, p)) {
printk(KERN_WARNING PPIP32
"%s: error: IRQ disabled\n", p->name);
pr_warn(PPIP32 "%s: error: IRQ disabled\n", p->name);
/* DMA cannot work without interrupts. */
features &= ~PARPORT_IP32_ENABLE_DMA;
} else {
@ -2102,8 +2099,7 @@ static __init struct parport *parport_ip32_probe_port(void)
/* Allocate DMA resources */
if (features & PARPORT_IP32_ENABLE_DMA) {
if (parport_ip32_dma_register())
printk(KERN_WARNING PPIP32
"%s: error: DMA disabled\n", p->name);
pr_warn(PPIP32 "%s: error: DMA disabled\n", p->name);
else {
pr_probe(p, "DMA support enabled\n");
p->dma = 0; /* arbitrary value != PARPORT_DMA_NONE */
@ -2145,8 +2141,7 @@ static __init struct parport *parport_ip32_probe_port(void)
parport_ip32_dump_state(p, "end init", 0);
/* Print out what we found */
printk(KERN_INFO "%s: SGI IP32 at 0x%lx (0x%lx)",
p->name, p->base, p->base_hi);
pr_info("%s: SGI IP32 at 0x%lx (0x%lx)", p->name, p->base, p->base_hi);
if (p->irq != PARPORT_IRQ_NONE)
printk(", irq %d", p->irq);
printk(" [");

View File

@ -324,7 +324,7 @@ static int __init parport_mfc3_init(void)
p->dev = &z->dev;
this_port[pias++] = p;
printk(KERN_INFO "%s: Multiface III port using irq\n", p->name);
pr_info("%s: Multiface III port using irq\n", p->name);
/* XXX: set operating mode */
p->private_data = (void *)piabase;

View File

@ -981,28 +981,24 @@ static void show_parconfig_smsc37c669(int io, int key)
outb(0xaa, io);
if (verbose_probing) {
printk(KERN_INFO
"SMSC 37c669 LPT Config: cr_1=0x%02x, 4=0x%02x, "
"A=0x%2x, 23=0x%02x, 26=0x%02x, 27=0x%02x\n",
pr_info("SMSC 37c669 LPT Config: cr_1=0x%02x, 4=0x%02x, A=0x%2x, 23=0x%02x, 26=0x%02x, 27=0x%02x\n",
cr1, cr4, cra, cr23, cr26, cr27);
/* The documentation calls DMA and IRQ-Lines by letters, so
the board maker can/will wire them
appropriately/randomly... G=reserved H=IDE-irq, */
printk(KERN_INFO
"SMSC LPT Config: io=0x%04x, irq=%c, dma=%c, fifo threshold=%d\n",
cr23 * 4,
(cr27 & 0x0f) ? 'A' - 1 + (cr27 & 0x0f) : '-',
(cr26 & 0x0f) ? 'A' - 1 + (cr26 & 0x0f) : '-',
cra & 0x0f);
printk(KERN_INFO "SMSC LPT Config: enabled=%s power=%s\n",
(cr23 * 4 >= 0x100) ? "yes" : "no",
(cr1 & 4) ? "yes" : "no");
printk(KERN_INFO
"SMSC LPT Config: Port mode=%s, EPP version =%s\n",
(cr1 & 0x08) ? "Standard mode only (SPP)"
: modes[cr4 & 0x03],
(cr4 & 0x40) ? "1.7" : "1.9");
pr_info("SMSC LPT Config: io=0x%04x, irq=%c, dma=%c, fifo threshold=%d\n",
cr23 * 4,
(cr27 & 0x0f) ? 'A' - 1 + (cr27 & 0x0f) : '-',
(cr26 & 0x0f) ? 'A' - 1 + (cr26 & 0x0f) : '-',
cra & 0x0f);
pr_info("SMSC LPT Config: enabled=%s power=%s\n",
(cr23 * 4 >= 0x100) ? "yes" : "no",
(cr1 & 4) ? "yes" : "no");
pr_info("SMSC LPT Config: Port mode=%s, EPP version =%s\n",
(cr1 & 0x08) ? "Standard mode only (SPP)"
: modes[cr4 & 0x03],
(cr4 & 0x40) ? "1.7" : "1.9");
}
/* Heuristics ! BIOS setup for this mainboard device limits
@ -1012,7 +1008,7 @@ static void show_parconfig_smsc37c669(int io, int key)
if (cr23 * 4 >= 0x100) { /* if active */
s = find_free_superio();
if (s == NULL)
printk(KERN_INFO "Super-IO: too many chips!\n");
pr_info("Super-IO: too many chips!\n");
else {
int d;
switch (cr23 * 4) {
@ -1077,26 +1073,24 @@ static void show_parconfig_winbond(int io, int key)
outb(0xaa, io);
if (verbose_probing) {
printk(KERN_INFO
"Winbond LPT Config: cr_30=%02x 60,61=%02x%02x 70=%02x 74=%02x, f0=%02x\n",
cr30, cr60, cr61, cr70, cr74, crf0);
printk(KERN_INFO "Winbond LPT Config: active=%s, io=0x%02x%02x irq=%d, ",
(cr30 & 0x01) ? "yes" : "no", cr60, cr61, cr70 & 0x0f);
pr_info("Winbond LPT Config: cr_30=%02x 60,61=%02x%02x 70=%02x 74=%02x, f0=%02x\n",
cr30, cr60, cr61, cr70, cr74, crf0);
pr_info("Winbond LPT Config: active=%s, io=0x%02x%02x irq=%d, ",
(cr30 & 0x01) ? "yes" : "no", cr60, cr61, cr70 & 0x0f);
if ((cr74 & 0x07) > 3)
pr_cont("dma=none\n");
else
pr_cont("dma=%d\n", cr74 & 0x07);
printk(KERN_INFO
"Winbond LPT Config: irqtype=%s, ECP fifo threshold=%d\n",
irqtypes[crf0>>7], (crf0>>3)&0x0f);
printk(KERN_INFO "Winbond LPT Config: Port mode=%s\n",
modes[crf0 & 0x07]);
pr_info("Winbond LPT Config: irqtype=%s, ECP fifo threshold=%d\n",
irqtypes[crf0 >> 7], (crf0 >> 3) & 0x0f);
pr_info("Winbond LPT Config: Port mode=%s\n",
modes[crf0 & 0x07]);
}
if (cr30 & 0x01) { /* the settings can be interrogated later ... */
s = find_free_superio();
if (s == NULL)
printk(KERN_INFO "Super-IO: too many chips!\n");
pr_info("Super-IO: too many chips!\n");
else {
s->io = (cr60 << 8) | cr61;
s->irq = cr70 & 0x0f;
@ -1150,9 +1144,8 @@ static void decode_winbond(int efer, int key, int devid, int devrev, int oldid)
progif = 0;
if (verbose_probing)
printk(KERN_INFO "Winbond chip at EFER=0x%x key=0x%02x "
"devid=%02x devrev=%02x oldid=%02x type=%s\n",
efer, key, devid, devrev, oldid, type);
pr_info("Winbond chip at EFER=0x%x key=0x%02x devid=%02x devrev=%02x oldid=%02x type=%s\n",
efer, key, devid, devrev, oldid, type);
if (progif == 2)
show_parconfig_winbond(efer, key);
@ -1183,9 +1176,8 @@ static void decode_smsc(int efer, int key, int devid, int devrev)
type = "37c666GT";
if (verbose_probing)
printk(KERN_INFO "SMSC chip at EFER=0x%x "
"key=0x%02x devid=%02x devrev=%02x type=%s\n",
efer, key, devid, devrev, type);
pr_info("SMSC chip at EFER=0x%x key=0x%02x devid=%02x devrev=%02x type=%s\n",
efer, key, devid, devrev, type);
if (func)
func(efer, key);
@ -1357,7 +1349,7 @@ static void detect_and_report_it87(void)
dev |= inb(0x2f);
if (dev == 0x8712 || dev == 0x8705 || dev == 0x8715 ||
dev == 0x8716 || dev == 0x8718 || dev == 0x8726) {
printk(KERN_INFO "IT%04X SuperIO detected.\n", dev);
pr_info("IT%04X SuperIO detected\n", dev);
outb(0x07, 0x2E); /* Parallel Port */
outb(0x03, 0x2F);
outb(0xF0, 0x2E); /* BOOT 0x80 off */
@ -1444,8 +1436,8 @@ static int parport_SPP_supported(struct parport *pb)
if (user_specified)
/* That didn't work, but the user thinks there's a
* port here. */
printk(KERN_INFO "parport 0x%lx (WARNING): CTR: "
"wrote 0x%02x, read 0x%02x\n", pb->base, w, r);
pr_info("parport 0x%lx (WARNING): CTR: wrote 0x%02x, read 0x%02x\n",
pb->base, w, r);
/* Try the data register. The data lines aren't tri-stated at
* this stage, so we expect back what we wrote. */
@ -1463,10 +1455,9 @@ static int parport_SPP_supported(struct parport *pb)
if (user_specified) {
/* Didn't work, but the user is convinced this is the
* place. */
printk(KERN_INFO "parport 0x%lx (WARNING): DATA: "
"wrote 0x%02x, read 0x%02x\n", pb->base, w, r);
printk(KERN_INFO "parport 0x%lx: You gave this address, "
"but there is probably no parallel port there!\n",
pr_info("parport 0x%lx (WARNING): DATA: wrote 0x%02x, read 0x%02x\n",
pb->base, w, r);
pr_info("parport 0x%lx: You gave this address, but there is probably no parallel port there!\n",
pb->base);
}
@ -1641,7 +1632,7 @@ static int parport_ECP_supported(struct parport *pb)
if (i <= priv->fifo_depth) {
if (verbose_probing)
printk(KERN_INFO "0x%lx: readIntrThreshold is %d\n",
pr_info("0x%lx: readIntrThreshold is %d\n",
pb->base, i);
} else
/* Number of bytes we can read if we get an interrupt. */
@ -1656,18 +1647,15 @@ static int parport_ECP_supported(struct parport *pb)
switch (pword) {
case 0:
pword = 2;
printk(KERN_WARNING "0x%lx: Unsupported pword size!\n",
pb->base);
pr_warn("0x%lx: Unsupported pword size!\n", pb->base);
break;
case 2:
pword = 4;
printk(KERN_WARNING "0x%lx: Unsupported pword size!\n",
pb->base);
pr_warn("0x%lx: Unsupported pword size!\n", pb->base);
break;
default:
printk(KERN_WARNING "0x%lx: Unknown implementation ID\n",
pb->base);
/* Assume 1 */
pr_warn("0x%lx: Unknown implementation ID\n", pb->base);
/* Fall through - Assume 1 */
case 1:
pword = 1;
}
@ -2106,9 +2094,9 @@ struct parport *parport_pc_probe_port(unsigned long int base,
p->size = (p->modes & PARPORT_MODE_EPP) ? 8 : 3;
printk(KERN_INFO "%s: PC-style at 0x%lx", p->name, p->base);
pr_info("%s: PC-style at 0x%lx", p->name, p->base);
if (p->base_hi && priv->ecr)
printk(KERN_CONT " (0x%lx)", p->base_hi);
pr_cont(" (0x%lx)", p->base_hi);
if (p->irq == PARPORT_IRQ_AUTO) {
p->irq = PARPORT_IRQ_NONE;
parport_irq_probe(p);
@ -2119,7 +2107,7 @@ struct parport *parport_pc_probe_port(unsigned long int base,
p->irq = PARPORT_IRQ_NONE;
}
if (p->irq != PARPORT_IRQ_NONE) {
printk(KERN_CONT ", irq %d", p->irq);
pr_cont(", irq %d", p->irq);
priv->ctr_writable |= 0x10;
if (p->dma == PARPORT_DMA_AUTO) {
@ -2143,41 +2131,39 @@ struct parport *parport_pc_probe_port(unsigned long int base,
/* p->ops->ecp_read_data = parport_pc_ecp_read_block_pio; */
#endif /* IEEE 1284 support */
if (p->dma != PARPORT_DMA_NONE) {
printk(KERN_CONT ", dma %d", p->dma);
pr_cont(", dma %d", p->dma);
p->modes |= PARPORT_MODE_DMA;
} else
printk(KERN_CONT ", using FIFO");
pr_cont(", using FIFO");
} else
/* We can't use the DMA channel after all. */
p->dma = PARPORT_DMA_NONE;
#endif /* Allowed to use FIFO/DMA */
printk(KERN_CONT " [");
pr_cont(" [");
#define printmode(x) \
{\
if (p->modes & PARPORT_MODE_##x) {\
printk(KERN_CONT "%s%s", f ? "," : "", #x);\
f++;\
} \
}
#define printmode(x) \
do { \
if (p->modes & PARPORT_MODE_##x) \
pr_cont("%s%s", f++ ? "," : "", #x); \
} while (0)
{
int f = 0;
printmode(PCSPP);
printmode(TRISTATE);
printmode(COMPAT)
printmode(COMPAT);
printmode(EPP);
printmode(ECP);
printmode(DMA);
}
#undef printmode
#ifndef CONFIG_PARPORT_1284
printk(KERN_CONT "(,...)");
pr_cont("(,...)");
#endif /* CONFIG_PARPORT_1284 */
printk(KERN_CONT "]\n");
pr_cont("]\n");
if (probedirq != PARPORT_IRQ_NONE)
printk(KERN_INFO "%s: irq %d detected\n", p->name, probedirq);
pr_info("%s: irq %d detected\n", p->name, probedirq);
/* If No ECP release the ports grabbed above. */
if (ECR_res && (p->modes & PARPORT_MODE_ECP) == 0) {
@ -2192,8 +2178,7 @@ struct parport *parport_pc_probe_port(unsigned long int base,
if (p->irq != PARPORT_IRQ_NONE) {
if (request_irq(p->irq, parport_irq_handler,
irqflags, p->name, p)) {
printk(KERN_WARNING "%s: irq %d in use, "
"resorting to polled operation\n",
pr_warn("%s: irq %d in use, resorting to polled operation\n",
p->name, p->irq);
p->irq = PARPORT_IRQ_NONE;
p->dma = PARPORT_DMA_NONE;
@ -2203,8 +2188,7 @@ struct parport *parport_pc_probe_port(unsigned long int base,
#ifdef HAS_DMA
if (p->dma != PARPORT_DMA_NONE) {
if (request_dma(p->dma, p->name)) {
printk(KERN_WARNING "%s: dma %d in use, "
"resorting to PIO operation\n",
pr_warn("%s: dma %d in use, resorting to PIO operation\n",
p->name, p->dma);
p->dma = PARPORT_DMA_NONE;
} else {
@ -2214,9 +2198,7 @@ struct parport *parport_pc_probe_port(unsigned long int base,
&priv->dma_handle,
GFP_KERNEL);
if (!priv->dma_buf) {
printk(KERN_WARNING "%s: "
"cannot get buffer for DMA, "
"resorting to PIO operation\n",
pr_warn("%s: cannot get buffer for DMA, resorting to PIO operation\n",
p->name);
free_dma(p->dma);
p->dma = PARPORT_DMA_NONE;
@ -2329,7 +2311,7 @@ static int sio_ite_8872_probe(struct pci_dev *pdev, int autoirq, int autodma,
}
}
if (i >= 5) {
printk(KERN_INFO "parport_pc: cannot find ITE8872 INTA\n");
pr_info("parport_pc: cannot find ITE8872 INTA\n");
return 0;
}
@ -2338,29 +2320,28 @@ static int sio_ite_8872_probe(struct pci_dev *pdev, int autoirq, int autodma,
switch (type) {
case 0x2:
printk(KERN_INFO "parport_pc: ITE8871 found (1P)\n");
pr_info("parport_pc: ITE8871 found (1P)\n");
ite8872set = 0x64200000;
break;
case 0xa:
printk(KERN_INFO "parport_pc: ITE8875 found (1P)\n");
pr_info("parport_pc: ITE8875 found (1P)\n");
ite8872set = 0x64200000;
break;
case 0xe:
printk(KERN_INFO "parport_pc: ITE8872 found (2S1P)\n");
pr_info("parport_pc: ITE8872 found (2S1P)\n");
ite8872set = 0x64e00000;
break;
case 0x6:
printk(KERN_INFO "parport_pc: ITE8873 found (1S)\n");
pr_info("parport_pc: ITE8873 found (1S)\n");
release_region(inta_addr[i], 32);
return 0;
case 0x8:
printk(KERN_INFO "parport_pc: ITE8874 found (2S)\n");
pr_info("parport_pc: ITE8874 found (2S)\n");
release_region(inta_addr[i], 32);
return 0;
default:
printk(KERN_INFO "parport_pc: unknown ITE887x\n");
printk(KERN_INFO "parport_pc: please mail 'lspci -nvv' "
"output to Rich.Liu@ite.com.tw\n");
pr_info("parport_pc: unknown ITE887x\n");
pr_info("parport_pc: please mail 'lspci -nvv' output to Rich.Liu@ite.com.tw\n");
release_region(inta_addr[i], 32);
return 0;
}
@ -2395,9 +2376,8 @@ static int sio_ite_8872_probe(struct pci_dev *pdev, int autoirq, int autodma,
release_region(inta_addr[i], 32);
if (parport_pc_probe_port(ite8872_lpt, ite8872_lpthi,
irq, PARPORT_DMA_NONE, &pdev->dev, 0)) {
printk(KERN_INFO
"parport_pc: ITE 8872 parallel port: io=0x%X",
ite8872_lpt);
pr_info("parport_pc: ITE 8872 parallel port: io=0x%X",
ite8872_lpt);
if (irq != PARPORT_IRQ_NONE)
pr_cont(", irq=%d", irq);
pr_cont("\n");
@ -2524,7 +2504,7 @@ static int sio_via_probe(struct pci_dev *pdev, int autoirq, int autodma,
pci_write_config_byte(pdev, via->via_pci_superio_config_reg, tmp);
if (siofunc == VIA_FUNCTION_PARPORT_DISABLE) {
printk(KERN_INFO "parport_pc: VIA parallel port disabled in BIOS\n");
pr_info("parport_pc: VIA parallel port disabled in BIOS\n");
return 0;
}
@ -2557,9 +2537,8 @@ static int sio_via_probe(struct pci_dev *pdev, int autoirq, int autodma,
case 0x278:
port2 = 0x678; break;
default:
printk(KERN_INFO
"parport_pc: Weird VIA parport base 0x%X, ignoring\n",
port1);
pr_info("parport_pc: Weird VIA parport base 0x%X, ignoring\n",
port1);
return 0;
}
@ -2578,8 +2557,7 @@ static int sio_via_probe(struct pci_dev *pdev, int autoirq, int autodma,
/* finally, do the probe with values obtained */
if (parport_pc_probe_port(port1, port2, irq, dma, &pdev->dev, 0)) {
printk(KERN_INFO
"parport_pc: VIA parallel port: io=0x%X", port1);
pr_info("parport_pc: VIA parallel port: io=0x%X", port1);
if (irq != PARPORT_IRQ_NONE)
pr_cont(", irq=%d", irq);
if (dma != PARPORT_DMA_NONE)
@ -2588,7 +2566,7 @@ static int sio_via_probe(struct pci_dev *pdev, int autoirq, int autodma,
return 1;
}
printk(KERN_WARNING "parport_pc: Strange, can't probe VIA parallel port: io=0x%X, irq=%d, dma=%d\n",
pr_warn("parport_pc: Strange, can't probe VIA parallel port: io=0x%X, irq=%d, dma=%d\n",
port1, irq, dma);
return 0;
}
@ -3131,7 +3109,7 @@ static int __init parport_parse_param(const char *s, int *val,
if (ep != s)
*val = r;
else {
printk(KERN_ERR "parport: bad specifier `%s'\n", s);
pr_err("parport: bad specifier `%s'\n", s);
return -1;
}
}
@ -3221,10 +3199,7 @@ static int __init parse_parport_params(void)
irqval[0] = val;
break;
default:
printk(KERN_WARNING
"parport_pc: irq specified "
"without base address. Use 'io=' "
"to specify one\n");
pr_warn("parport_pc: irq specified without base address. Use 'io=' to specify one\n");
}
if (dma[0] && !parport_parse_dma(dma[0], &val))
@ -3234,10 +3209,7 @@ static int __init parse_parport_params(void)
dmaval[0] = val;
break;
default:
printk(KERN_WARNING
"parport_pc: dma specified "
"without base address. Use 'io=' "
"to specify one\n");
pr_warn("parport_pc: dma specified without base address. Use 'io=' to specify one\n");
}
}
return 0;
@ -3276,12 +3248,12 @@ static int __init parport_setup(char *str)
val = simple_strtoul(str, &endptr, 0);
if (endptr == str) {
printk(KERN_WARNING "parport=%s not understood\n", str);
pr_warn("parport=%s not understood\n", str);
return 1;
}
if (parport_setup_ptr == PARPORT_PC_MAX_PORTS) {
printk(KERN_ERR "parport=%s ignored, too many ports\n", str);
pr_err("parport=%s ignored, too many ports\n", str);
return 1;
}

View File

@ -313,7 +313,7 @@ static int bpp_probe(struct platform_device *op)
value_tcr &= ~P_TCR_DIR;
sbus_writeb(value_tcr, &regs->p_tcr);
printk(KERN_INFO "%s: sunbpp at 0x%lx\n", p->name, p->base);
pr_info("%s: sunbpp at 0x%lx\n", p->name, p->base);
dev_set_drvdata(&op->dev, p);

View File

@ -38,7 +38,7 @@ static void pretty_print(struct parport *port, int device)
{
struct parport_device_info *info = &port->probe_info[device + 1];
printk(KERN_INFO "%s", port->name);
pr_info("%s", port->name);
if (device >= 0)
printk (" (addr %d)", device);
@ -58,7 +58,7 @@ static void parse_data(struct parport *port, int device, char *str)
struct parport_device_info *info = &port->probe_info[device + 1];
if (!txt) {
printk(KERN_WARNING "%s probe: memory squeeze\n", port->name);
pr_warn("%s probe: memory squeeze\n", port->name);
return;
}
strcpy(txt, str);
@ -98,7 +98,8 @@ static void parse_data(struct parport *port, int device, char *str)
goto rock_on;
}
}
printk(KERN_WARNING "%s probe: warning, class '%s' not understood.\n", port->name, sep);
pr_warn("%s probe: warning, class '%s' not understood\n",
port->name, sep);
info->class = PARPORT_CLASS_OTHER;
} else if (!strcmp(p, "CMD") ||
!strcmp(p, "COMMAND SET")) {

View File

@ -51,12 +51,12 @@ static int do_active_device(struct ctl_table *table, int write,
for (dev = port->devices; dev ; dev = dev->next) {
if(dev == port->cad) {
len += sprintf(buffer, "%s\n", dev->name);
len += snprintf(buffer, sizeof(buffer), "%s\n", dev->name);
}
}
if(!len) {
len += sprintf(buffer, "%s\n", "none");
len += snprintf(buffer, sizeof(buffer), "%s\n", "none");
}
if (len > *lenp)
@ -87,19 +87,19 @@ static int do_autoprobe(struct ctl_table *table, int write,
}
if ((str = info->class_name) != NULL)
len += sprintf (buffer + len, "CLASS:%s;\n", str);
len += snprintf (buffer + len, sizeof(buffer) - len, "CLASS:%s;\n", str);
if ((str = info->model) != NULL)
len += sprintf (buffer + len, "MODEL:%s;\n", str);
len += snprintf (buffer + len, sizeof(buffer) - len, "MODEL:%s;\n", str);
if ((str = info->mfr) != NULL)
len += sprintf (buffer + len, "MANUFACTURER:%s;\n", str);
len += snprintf (buffer + len, sizeof(buffer) - len, "MANUFACTURER:%s;\n", str);
if ((str = info->description) != NULL)
len += sprintf (buffer + len, "DESCRIPTION:%s;\n", str);
len += snprintf (buffer + len, sizeof(buffer) - len, "DESCRIPTION:%s;\n", str);
if ((str = info->cmdset) != NULL)
len += sprintf (buffer + len, "COMMAND SET:%s;\n", str);
len += snprintf (buffer + len, sizeof(buffer) - len, "COMMAND SET:%s;\n", str);
if (len > *lenp)
len = *lenp;
@ -117,7 +117,7 @@ static int do_hardware_base_addr(struct ctl_table *table, int write,
size_t *lenp, loff_t *ppos)
{
struct parport *port = (struct parport *)table->extra1;
char buffer[20];
char buffer[64];
int len = 0;
if (*ppos) {
@ -128,7 +128,7 @@ static int do_hardware_base_addr(struct ctl_table *table, int write,
if (write) /* permissions prevent this anyway */
return -EACCES;
len += sprintf (buffer, "%lu\t%lu\n", port->base, port->base_hi);
len += snprintf (buffer, sizeof(buffer), "%lu\t%lu\n", port->base, port->base_hi);
if (len > *lenp)
len = *lenp;
@ -156,7 +156,7 @@ static int do_hardware_irq(struct ctl_table *table, int write,
if (write) /* permissions prevent this anyway */
return -EACCES;
len += sprintf (buffer, "%d\n", port->irq);
len += snprintf (buffer, sizeof(buffer), "%d\n", port->irq);
if (len > *lenp)
len = *lenp;
@ -184,7 +184,7 @@ static int do_hardware_dma(struct ctl_table *table, int write,
if (write) /* permissions prevent this anyway */
return -EACCES;
len += sprintf (buffer, "%d\n", port->dma);
len += snprintf (buffer, sizeof(buffer), "%d\n", port->dma);
if (len > *lenp)
len = *lenp;
@ -213,7 +213,11 @@ static int do_hardware_modes(struct ctl_table *table, int write,
return -EACCES;
{
#define printmode(x) {if(port->modes&PARPORT_MODE_##x){len+=sprintf(buffer+len,"%s%s",f?",":"",#x);f++;}}
#define printmode(x) \
do { \
if (port->modes & PARPORT_MODE_##x) \
len += snprintf(buffer + len, sizeof(buffer) - len, "%s%s", f++ ? "," : "", #x); \
} while (0)
int f = 0;
printmode(PCSPP);
printmode(TRISTATE);

View File

@ -555,8 +555,8 @@ void parport_announce_port(struct parport *port)
#endif
if (!port->dev)
printk(KERN_WARNING "%s: fix this legacy no-device port driver!\n",
port->name);
pr_warn("%s: fix this legacy no-device port driver!\n",
port->name);
parport_proc_register(port);
mutex_lock(&registration_lock);
@ -728,7 +728,8 @@ parport_register_device(struct parport *port, const char *name,
if (flags & PARPORT_DEV_LURK) {
if (!pf || !kf) {
printk(KERN_INFO "%s: refused to register lurking device (%s) without callbacks\n", port->name, name);
pr_info("%s: refused to register lurking device (%s) without callbacks\n",
port->name, name);
return NULL;
}
}
@ -997,7 +998,7 @@ void parport_unregister_device(struct pardevice *dev)
#ifdef PARPORT_PARANOID
if (!dev) {
printk(KERN_ERR "parport_unregister_device: passed NULL\n");
pr_err("%s: passed NULL\n", __func__);
return;
}
#endif
@ -1138,8 +1139,7 @@ int parport_claim(struct pardevice *dev)
unsigned long flags;
if (port->cad == dev) {
printk(KERN_INFO "%s: %s already owner\n",
dev->port->name,dev->name);
pr_info("%s: %s already owner\n", dev->port->name, dev->name);
return 0;
}
@ -1159,9 +1159,8 @@ int parport_claim(struct pardevice *dev)
* I think we'll actually deadlock rather than
* get here, but just in case..
*/
printk(KERN_WARNING
"%s: %s released port when preempted!\n",
port->name, oldcad->name);
pr_warn("%s: %s released port when preempted!\n",
port->name, oldcad->name);
if (port->cad)
goto blocked;
}
@ -1321,8 +1320,8 @@ void parport_release(struct pardevice *dev)
write_lock_irqsave(&port->cad_lock, flags);
if (port->cad != dev) {
write_unlock_irqrestore(&port->cad_lock, flags);
printk(KERN_WARNING "%s: %s tried to release parport when not owner\n",
port->name, dev->name);
pr_warn("%s: %s tried to release parport when not owner\n",
port->name, dev->name);
return;
}
@ -1362,7 +1361,8 @@ void parport_release(struct pardevice *dev)
if (dev->port->cad) /* racy but no matter */
return;
} else {
printk(KERN_ERR "%s: don't know how to wake %s\n", port->name, pd->name);
pr_err("%s: don't know how to wake %s\n",
port->name, pd->name);
}
}

View File

@ -665,8 +665,8 @@ static void _hv_pcifront_read_config(struct hv_pci_dev *hpdev, int where,
PCI_CAPABILITY_LIST) {
/* ROM BARs are unimplemented */
*val = 0;
} else if (where >= PCI_INTERRUPT_LINE && where + size <=
PCI_INTERRUPT_PIN) {
} else if ((where >= PCI_INTERRUPT_LINE && where + size <= PCI_INTERRUPT_PIN) ||
(where >= PCI_INTERRUPT_PIN && where + size <= PCI_MIN_GNT)) {
/*
* Interrupt Line and Interrupt PIN are hard-wired to zero
* because this front-end only supports message-signaled

View File

@ -1093,10 +1093,11 @@ static int rockchip_pcie_parse_dt(struct rockchip_pcie *rockchip)
return PTR_ERR(rockchip->aclk_rst);
}
rockchip->ep_gpio = devm_gpiod_get(dev, "ep", GPIOD_OUT_HIGH);
rockchip->ep_gpio = devm_gpiod_get_optional(dev, "ep",
GPIOD_OUT_LOW);
if (IS_ERR(rockchip->ep_gpio)) {
dev_err(dev, "missing ep-gpios property in node\n");
return PTR_ERR(rockchip->ep_gpio);
return dev_err_probe(dev, PTR_ERR(rockchip->ep_gpio),
"failed to get ep GPIO\n");
}
rockchip->aclk_pcie = devm_clk_get(dev, "aclk");

View File

@ -816,6 +816,8 @@ static struct resource *find_free_bus_resource(struct pci_bus *bus,
static resource_size_t calculate_iosize(resource_size_t size,
resource_size_t min_size,
resource_size_t size1,
resource_size_t add_size,
resource_size_t children_add_size,
resource_size_t old_size,
resource_size_t align)
{
@ -828,15 +830,18 @@ static resource_size_t calculate_iosize(resource_size_t size,
#if defined(CONFIG_ISA) || defined(CONFIG_EISA)
size = (size & 0xff) + ((size & ~0xffUL) << 2);
#endif
size = ALIGN(size + size1, align);
size = size + size1;
if (size < old_size)
size = old_size;
size = ALIGN(max(size, add_size) + children_add_size, align);
return size;
}
static resource_size_t calculate_memsize(resource_size_t size,
resource_size_t min_size,
resource_size_t size1,
resource_size_t add_size,
resource_size_t children_add_size,
resource_size_t old_size,
resource_size_t align)
{
@ -844,10 +849,9 @@ static resource_size_t calculate_memsize(resource_size_t size,
size = min_size;
if (old_size == 1)
old_size = 0;
if (size < old_size)
size = old_size;
size = ALIGN(size + size1, align);
return size;
size = max(size, add_size) + children_add_size;
return ALIGN(max(size, old_size), align);
}
resource_size_t __weak pcibios_window_alignment(struct pci_bus *bus,
@ -935,12 +939,10 @@ static void pbus_size_io(struct pci_bus *bus, resource_size_t min_size,
}
}
size0 = calculate_iosize(size, min_size, size1,
size0 = calculate_iosize(size, min_size, size1, 0, 0,
resource_size(b_res), min_align);
if (children_add_size > add_size)
add_size = children_add_size;
size1 = (!realloc_head || (realloc_head && !add_size)) ? size0 :
calculate_iosize(size, min_size, add_size + size1,
size1 = (!realloc_head || (realloc_head && !add_size && !children_add_size)) ? size0 :
calculate_iosize(size, min_size, size1, add_size, children_add_size,
resource_size(b_res), min_align);
if (!size0 && !size1) {
if (b_res->start || b_res->end)
@ -1084,12 +1086,10 @@ static int pbus_size_mem(struct pci_bus *bus, unsigned long mask,
min_align = calculate_mem_align(aligns, max_order);
min_align = max(min_align, window_alignment(bus, b_res->flags));
size0 = calculate_memsize(size, min_size, 0, resource_size(b_res), min_align);
size0 = calculate_memsize(size, min_size, 0, 0, resource_size(b_res), min_align);
add_align = max(min_align, add_align);
if (children_add_size > add_size)
add_size = children_add_size;
size1 = (!realloc_head || (realloc_head && !add_size)) ? size0 :
calculate_memsize(size, min_size, add_size,
size1 = (!realloc_head || (realloc_head && !add_size && !children_add_size)) ? size0 :
calculate_memsize(size, min_size, add_size, children_add_size,
resource_size(b_res), add_align);
if (!size0 && !size1) {
if (b_res->start || b_res->end)

Some files were not shown because too many files have changed in this diff Show More