Merge tag 'android12-5.10.205_r00' into branch 'android12-5.10'

This merges commits up to the 5.10.205 LTS release into the
android12-5.10 branch.  It contains the following commits:

* 068af29e24 ANDROID: GKI: fix crc issue in include/net/addrconf.h
* 4a8f190c2a Revert "cred: switch to using atomic_long_t"
*   b7733bafef Merge 5.10.205 into android12-5.10-lts
|\
| * ca4427ebc6 Linux 5.10.205
| * 05c547e842 powerpc/ftrace: Fix stack teardown in ftrace_no_trace
| * e30e62f0e1 powerpc/ftrace: Create a dummy stackframe to fix stack unwind
| * 5a82cf64f8 tty: n_gsm: add sanity check for gsm->receive in gsm_receive_buf()
| * a11ea2c08f tty: n_gsm, remove duplicates of parameters
| * b8faa754b5 tty: n_gsm: fix tty registration before control channel open
| * 918ba07224 USB: gadget: core: adjust uevent timing on gadget unbind
| * 20c2cb79a3 ring-buffer: Fix a race in rb_time_cmpxchg() for 32 bit archs
| * 9f5bf009f7 ring-buffer: Fix writing to the buffer with max_data_size
| * 3e8055fc3b ring-buffer: Have saved event hold the entire event
| * d7a2939814 tracing: Update snapshot buffer on resize if it is allocated
| * a3580b2bfe ring-buffer: Fix memory leak of free page
| * 5ffda6998b team: Fix use-after-free when an option instance allocation fails
| * 33fb8ac30c arm64: mm: Always make sw-dirty PTEs hw-dirty in pte_modify
| * 26eeec522a ext4: prevent the normalized size from exceeding EXT_MAX_BLOCKS
| * 6e2628dfad soundwire: stream: fix NULL pointer dereference for multi_link
| * 7ccfc078cd perf: Fix perf_event_validate_size() lockdep splat
| * 5984306f6c HID: hid-asus: add const to read-only outgoing usb buffer
| * e9709a88a8 net: usb: qmi_wwan: claim interface 4 for ZTE MF290
| * 09c8ee5f9b asm-generic: qspinlock: fix queued_spin_value_unlocked() implementation
| * f6a1bf4299 HID: multitouch: Add quirk for HONOR GLO-GXXX touchpad
| * 744027bb8e HID: hid-asus: reset the backlight brightness level on resume
| * 1ac7379d2e HID: add ALWAYS_POLL quirk for Apple kb
| * a64a9f38ae HID: glorious: fix Glorious Model I HID report
| * 6026a862f3 platform/x86: intel_telemetry: Fix kernel doc descriptions
| * e01135763b bcache: avoid NULL checking to c->root in run_cache_set()
| * a7555524e3 bcache: add code comments for bch_btree_node_get() and __bch_btree_node_alloc()
| * 3b48e1c048 bcache: remove redundant assignment to variable cur_idx
| * ea2341d082 bcache: avoid oversize memory allocation by small stripe_size
| * dbf0cdacdb blk-throttle: fix lockdep warning of "cgroup_mutex or RCU read lock required!"
| * d69581c176 usb: aqc111: check packet for fixup for true limit
| * 1e3ea8d2ba drm/mediatek: Add spinlock for setting vblank event in atomic_begin
| * 022b82336a PCI: loongson: Limit MRRS to 256
| * 791bca1b09 Revert "PCI: acpiphp: Reassign resources on bridge if necessary"
| * 7e2afd0885 ALSA: hda/realtek: Apply mute LED quirk for HP15-db
| * 0633028511 ALSA: hda/hdmi: add force-connect quirks for ASUSTeK Z170 variants
| * 851783a0c4 fuse: dax: set fc->dax to NULL in fuse_dax_conn_free()
| * 2623cf1fe8 cred: switch to using atomic_long_t
| * 03b50868ae net: atlantic: fix double free in ring reinit logic
| * a232eb81c7 appletalk: Fix Use-After-Free in atalk_ioctl
| * 9deccfbaed net: stmmac: Handle disabled MDIO busses from devicetree
| * 5470533a7d net: stmmac: use dev_err_probe() for reporting mdio bus registration failure
| * 52a4c0e82a vsock/virtio: Fix unsigned integer wrap around in virtio_transport_has_space()
| * 4c0d7e8261 sign-file: Fix incorrect return values check
| * 25bfae19b8 net: ena: Fix XDP redirection error
| * c83544b70c net: ena: Destroy correct number of xdp queues upon failure
| * 7ed59c4027 net: Remove acked SYN flag from packet in the transmit queue correctly
| * 10760f4234 qed: Fix a potential use-after-free in qed_cxt_tables_alloc
| * 7eda5960a5 net/rose: Fix Use-After-Free in rose_ioctl
| * 64a032015c atm: Fix Use-After-Free in do_vcc_ioctl
| * c20f425e06 net: fec: correct queue selection
| * d15e4b825d net: vlan: introduce skb_vlan_eth_hdr()
| * bc0860a3c4 atm: solos-pci: Fix potential deadlock on &tx_queue_lock
| * df5c24df63 atm: solos-pci: Fix potential deadlock on &cli_queue_lock
| * 6a7b673e6e qca_spi: Fix reset behavior
| * 347d10877b qca_debug: Fix ethtool -G iface tx behavior
| * a07e5568d9 qca_debug: Prevent crash on TX ring changes
| * 97275e470c net: ipv6: support reporting otherwise unknown prefix flags in RTM_NEWPREFIX
| * b30fbeb390 HID: lenovo: Restrict detection of patched firmware only to USB cptkbd
| * 84eed654ff afs: Fix refcount underflow from error handling race
| * 8ee7b2c465 netfilter: nf_tables: fix 'exist' matching on bigendian arches
* | 63d180012d Revert "psample: Require 'CAP_NET_ADMIN' when joining "packets" group"
* | 36f0b85aff Revert "genetlink: add CAP_NET_ADMIN test for multicast bind"
* | ae04f2701b Revert "drop_monitor: Require 'CAP_SYS_ADMIN' when joining "events" group"
* | e4dd66fb02 Revert "perf/core: Add a new read format to get a number of lost samples"
* | 86a3866fec Revert "perf: Fix perf_event_validate_size()"
* | e710feda7e Revert "hrtimers: Push pending hrtimers away from outgoing CPU earlier"
* | 001d2105f6 Merge 5.10.204 into android12-5.10-lts
|\|
| * b50306f771 Linux 5.10.204
| * fa49e956b7 r8169: fix rtl8125b PAUSE frames blasting when suspended
| * 9e3ca02b11 devcoredump: Send uevent once devcd is ready
| * 9e0ca92012 devcoredump : Serialize devcd_del work
| * 12467ad3f3 smb: client: fix potential NULL deref in parse_dfs_referrals()
| * 0b1711b486 cifs: Fix non-availability of dedup breaking generic/304
| * 8cb1209989 Revert "btrfs: add dmesg output for first mount and last unmount of a filesystem"
| * d7c3a467f4 mmc: block: Be sure to wait while busy in CQE error recovery
| * 91b70f60c8 platform/x86: asus-wmi: Document the dgpu_disable sysfs attribute
| * a8b781c410 tools headers UAPI: Sync linux/perf_event.h with the kernel sources
| * bdb26b8199 platform/x86: asus-wmi: Fix kbd_dock_devid tablet-switch reporting
| * bf72b44fe8 netfilter: nft_set_pipapo: skip inactive elements during set walk
| * e844a9309f drop_monitor: Require 'CAP_SYS_ADMIN' when joining "events" group
| * ad2223a169 psample: Require 'CAP_NET_ADMIN' when joining "packets" group
| * 015870c10c genetlink: add CAP_NET_ADMIN test for multicast bind
| * df6cb4c430 netlink: don't call ->netlink_bind with table lock held
| * 3fe1ea5f92 io_uring/af_unix: disable sending io_uring over sockets
| * 3ee7e2faef MIPS: Loongson64: Enable DMA noncoherent support
| * ff803322e9 MIPS: Loongson64: Reserve vgabios memory on boot
| * e0e897ddf3 KVM: s390/mm: Properly reset no-dat
| * ab8816a7c2 x86/CPU/AMD: Check vendor in the AMD microcode callback
| * 6059c313ff serial: 8250_omap: Add earlycon support for the AM654 UART controller
| * 8ffaaf80c6 serial: 8250: 8250_omap: Do not start RX DMA on THRI interrupt
| * b74ace5dec serial: 8250: 8250_omap: Clear UART_HAS_RHR_IT_DIS bit
| * 863bacf3a3 serial: sc16is7xx: address RX timeout interrupt errata
| * e4ed324746 ARM: PL011: Fix DMA support
| * 713f6ff326 usb: typec: class: fix typec_altmode_put_partner to put plugs
| * f16d5355aa Revert "xhci: Loosen RPM as default policy to cover for AMD xHC 1.1"
| * 9caaf469af parport: Add support for Brainboxes IX/UC/PX parallel cards
| * 558b6a4368 usb: gadget: f_hid: fix report descriptor allocation
| * d4fb20dcc1 drm/amdgpu: correct the amdgpu runtime dereference usage count
| * b5862e5ca5 gpiolib: sysfs: Fix error handling on failed export
| * 208dd116f9 perf: Fix perf_event_validate_size()
| * 8bd3d61624 perf/core: Add a new read format to get a number of lost samples
| * f460ff26bd tracing: Stop current tracer when resizing buffer
| * 21beb0d86f tracing: Set actual size after ring buffer resize
| * 7123b54c8b ring-buffer: Force absolute timestamp on discard of event
| * bceeaa5cda misc: mei: client.c: fix problem of return '-EOVERFLOW' in mei_cl_write
| * ee2719b59f misc: mei: client.c: return negative error code in mei_cl_write
| * 3cd3eea1f7 arm64: dts: mediatek: mt8183: Fix unit address for scp reserved memory
| * 7f6daf9ee3 arm64: dts: mediatek: mt8173-evb: Fix regulator-fixed node names
| * 0a9f3e1f57 arm64: dts: mediatek: mt7622: fix memory node warning check
| * 9bceffa423 packet: Move reference count in packet_sock to atomic_long_t
| * 0d0564cfb7 tracing: Fix a possible race when disabling buffered events
| * 85e86d6989 tracing: Fix incomplete locking when disabling buffered events
| * ad9efb0b27 tracing: Disable snapshot buffer when stopping instance tracers
| * 97c2b3b232 tracing: Always update snapshot buffer size
| * 2f7368f336 checkstack: fix printed address
| * 35a7f92507 nilfs2: prevent WARNING in nilfs_sufile_set_segment_usage()
| * 8df769d92b nilfs2: fix missing error check for sb_set_blocksize call
| * 3764b24499 ALSA: hda/realtek: Enable headset on Lenovo M90 Gen5
| * 0ff1c0f5a4 ALSA: pcm: fix out-of-bounds in snd_pcm_state_names
| * 1f1c2a3452 riscv: fix misaligned access handling of C.SWSP and C.SDSP
| * cb3543fdaa ARM: dts: imx7: Declare timers compatible with fsl,imx6dl-gpt
| * f337ccfa9f ARM: imx: Check return value of devm_kasprintf in imx_mmdc_perf_init
| * 04769017de scsi: be2iscsi: Fix a memleak in beiscsi_init_wrb_handle()
| * a28083d41c tracing: Fix a warning when allocating buffered events fails
| * 888580bfaa ASoC: wm_adsp: fix memleak in wm_adsp_buffer_populate
| * 9dfd862418 hwmon: (acpi_power_meter) Fix 4.29 MW bug
| * c0a428245a RDMA/bnxt_re: Correct module description string
| * 58a7281feb RDMA/rtrs-clt: Remove the warnings for req in_use check
| * 02916f39b8 arm64: dts: rockchip: Expand reg size of vdec node for RK3399
| * a953e45ebe tee: optee: Fix supplicant based device enumeration
| * 3c852b26a5 bpf: sockmap, updating the sg structure should also update curr
| * b17a886ed2 tcp: do not accept ACK of bytes we never sent
| * f1a6a94912 netfilter: xt_owner: Fix for unsafe access of sk->sk_socket
| * e94b6e9640 net: hns: fix fake link up on xge port
| * f253568348 ipv4: ip_gre: Avoid skb_pull() failure in ipgre_xmit()
| * 860d53a347 ionic: Fix dim work handling in split interrupt mode
| * b41bf6ac24 ionic: fix snprintf format length warning
| * 49809af89c net: bnxt: fix a potential use-after-free in bnxt_init_tc
| * 2093072ed7 i40e: Fix unexpected MFS warning message
| * d54f5a5bc8 arcnet: restoring support for multiple Sohard Arcnet cards
| * effb9ad004 net: arcnet: com20020 fix error handling
| * a657bddfb4 mlxbf-bootctl: correctly identify secure boot with development keys
| * d3f4792836 hv_netvsc: rndis_filter needs to select NLS
| * 909de62207 octeontx2-pf: Add missing mutex lock in otx2_get_pauseparam
| * 7827c1802d ipv6: fix potential NULL deref in fib6_add()
| * ba6dc2f564 of: dynamic: Fix of_reconfig_get_state_change() return value documentation
| * 08dbdacbfe of: Add missing 'Return' section in kerneldoc comments
| * f58e3b3652 of: Fix kerneldoc output formatting
| * 58ccdcc9d7 of: base: Fix some formatting issues and provide missing descriptions
| * 7db515e82a platform/x86: asus-wmi: Move i8042 filter install to shared asus-wmi code
| * 5fe052b8fa platform/x86: asus-wmi: Simplify tablet-mode-switch handling
| * a113da7590 platform/x86: asus-wmi: Simplify tablet-mode-switch probing
| * 68b795d040 platform/x86: asus-wmi: Add support for ROG X13 tablet mode
| * 97620a08fc platform/x86: asus-wmi: Adjust tablet/lidflip handling to use enum
| * ada7c5cc69 asus-wmi: Add dgpu disable method
| * 3a8fc16d5e platform/x86: asus-nb-wmi: Add tablet_mode_sw=lid-flip quirk for the TP200s
| * 79b8633820 platform/x86: asus-nb-wmi: Allow configuring SW_TABLET_MODE method with a module option
| * 9a861dde99 platform/x86: asus-wmi: Add support for SW_TABLET_MODE on UX360
| * 13b1fa5407 drm/amdgpu: correct chunk_ptr to a pointer to chunk.
| * 8887047de3 kconfig: fix memory leak from range properties
| * 96d5541430 tg3: Increment tx_dropped in tg3_tso_bug()
| * 9068403d94 tg3: Move the [rt]x_dropped counters to tg3_napi
| * e7152a138a netfilter: ipset: fix race condition between swap/destroy and kernel side add/del/test
| * 348111c3be i2c: designware: Fix corrupted memory seen in the ISR
| * 7f4c89400d hrtimers: Push pending hrtimers away from outgoing CPU earlier
* | 70b6573bf9 Revert "mmc: core: add helpers mmc_regulator_enable/disable_vqmmc"
* | 8b5d58d51f Revert "mmc: sdhci-sprd: Fix vqmmc not shutting down after the card was pulled"
* | 4a3e1eda87 Revert "driver core: Move the "removable" attribute from USB to core"
* | 51753f2409 Revert "drm/amdgpu: don't use ATRM for external devices"
* | 4b7ed9373a Revert "HID: core: store the unique system identifier in hid_device"
* | b8a7e36e04 Revert "HID: fix HID device resource race between HID core and debugging support"
* | 84f9dd98b7 Revert "wireguard: use DEV_STATS_INC()"
* | bdd8d64f36 Merge 5.10.203 into android12-5.10-lts
|\|
| * d330ef1d29 Linux 5.10.203
| * 9c957e2b52 driver core: Release all resources during unbind before updating device links
| * 2325d3b6b1 r8169: fix deadlock on RTL8125 in jumbo mtu mode
| * b29e6055db r8169: disable ASPM in case of tx timeout
| * 8b76708eb9 mmc: sdhci-sprd: Fix vqmmc not shutting down after the card was pulled
| * b532bc9b73 mmc: core: add helpers mmc_regulator_enable/disable_vqmmc
| * 376fabe367 mmc: block: Retry commands in CQE error recovery
| * bf62a283a7 mmc: core: convert comma to semicolon
| * bb78501184 mmc: cqhci: Fix task clearing in CQE error recovery
| * cb9ca7cc27 mmc: cqhci: Warn of halt or task clear failure
| * e94ededefc mmc: cqhci: Increase recovery halt timeout
| * 2011f06e32 cpufreq: imx6q: Don't disable 792 Mhz OPP unnecessarily
| * 6b35f36ff8 cpufreq: imx6q: don't warn for disabling a non-existing frequency
| * 910566a789 scsi: qla2xxx: Fix system crash due to bad pointer access
| * 46a4bf1350 scsi: qla2xxx: Use scsi_cmd_to_rq() instead of scsi_cmnd.request
| * b19fe82b4b scsi: core: Introduce the scsi_cmd_to_rq() function
| * c2b6f7e48e smb3: fix caching of ctime on setxattr
| * f9aa2857c6 fs: add ctime accessors infrastructure
| * 8d4237a149 drm/amdgpu: don't use ATRM for external devices
| * 2df04d76c9 driver core: Move the "removable" attribute from USB to core
| * 01fbfcd810 ima: annotate iint mutex to avoid lockdep false positive warnings
| * 8a3322a35f fbdev: stifb: Make the STI next font pointer a 32-bit signed offset
| * 15bc430fc1 misc: pci_endpoint_test: Add deviceID for J721S2 PCIe EP device support
| * a6128ad787 misc: pci_endpoint_test: Add deviceID for AM64 and J7200
| * c922282d11 s390/cmma: fix detection of DAT pages
| * 03e07092c6 s390/mm: fix phys vs virt confusion in mark_kernel_pXd() functions family
| * cb420e3557 ASoC: SOF: sof-pci-dev: Fix community key quirk detection
| * b37e1fbe6d ASoC: SOF: sof-pci-dev: don't use the community key on APL Chromebooks
| * 3a79fcb743 ASoC: SOF: sof-pci-dev: add parameter to override topology filename
| * 4aeb3320d7 ASoC: SOF: sof-pci-dev: use community key on all Up boards
| * 6368a32d26 ASoC: Intel: Move soc_intel_is_foo() helpers to a generic header
| * 8e52b19d92 smb3: fix touch -h of symlink
| * 889c84e2b2 net: ravb: Start TX queues after HW initialization succeeded
| * 5d428cda38 net: ravb: Use pm_runtime_resume_and_get()
| * f78d0f3013 ravb: Fix races between ravb_tx_timeout_work() and net related ops
| * a36e00e957 r8169: prevent potential deadlock in rtl8169_close
| * 8a909c1198 Revert "workqueue: remove unused cancel_work()"
| * 72ce3379cd octeontx2-pf: Fix adding mbox work queue entry when num_vfs > 64
| * ef7af2105a net: stmmac: xgmac: Disable FPE MMC interrupts
| * f18bcace12 selftests/net: mptcp: fix uninitialized variable warnings
| * cb1644f9f0 selftests/net: ipsec: fix constant out of range
| * fe7fd9c209 dpaa2-eth: increase the needed headroom to account for alignment
| * 772fe1da9a ipv4: igmp: fix refcnt uaf issue when receiving igmp query packet
| * 9ef94ec8e5 usb: config: fix iteration issue in 'usb_get_bos_descriptor()'
| * 713530d3c8 USB: core: Change configuration warnings to notices
| * ae6e41066e hv_netvsc: fix race of netvsc and VF register_netdevice
| * 4937fb36bb Input: xpad - add HyperX Clutch Gladiate Support
| * 5c4d5c8556 btrfs: make error messages more clear when getting a chunk map
| * 74ff16c844 btrfs: send: ensure send_fd is writable
| * 12a0ec5ed7 btrfs: fix off-by-one when checking chunk map includes logical address
| * baaab02a8c btrfs: ref-verify: fix memory leaks in btrfs_ref_tree_mod()
| * 2d6c2238ac btrfs: add dmesg output for first mount and last unmount of a filesystem
| * bab9cec493 parisc: Drop the HP-UX ENOSYM and EREMOTERELEASE error codes
| * b53dc7c766 powerpc: Don't clobber f0/vs0 during fp|altivec register save
| * b5cbbc2b2d iommu/vt-d: Add MTL to quirk list to skip TE disabling
| * f62ceb880a bcache: revert replacing IS_ERR_OR_NULL with IS_ERR
| * 18ac427906 dm verity: don't perform FEC for failed readahead IO
| * c3c9f92738 dm-verity: align struct dm_verity_fec_io properly
| * 5de40a7ffa ALSA: hda/realtek: Add supported ALC257 for ChromeOS
| * cf80c53806 ALSA: hda/realtek: Headset Mic VREF to 100%
| * f338f738d7 ALSA: hda: Disable power-save on KONTRON SinglePC
| * b02b66194d mmc: block: Do not lose cache flush during CQE error recovery
| * 71c9fb31e1 firewire: core: fix possible memory leak in create_units()
| * d6bac7048f pinctrl: avoid reload of p state in list iteration
| * 8fb79be6e9 io_uring: fix off-by one bvec index
| * f5f85ea5bb USB: dwc3: qcom: fix wakeup after probe deferral
| * 5ac96667ea usb: dwc3: set the dma max_seg_size
| * 2620c5977f usb: dwc3: Fix default mode initialization
| * d5325ed6eb USB: dwc2: write HCINT with INTMASK applied
| * 5d7a5e63dc USB: serial: option: don't claim interface 4 for ZTE MF290
| * f1432dff5d USB: serial: option: fix FM101R-GL defines
| * 14a6e089d6 USB: serial: option: add Fibocom L7xx modules
| * f49ad460a2 bcache: fixup lock c->root error
| * be327b8f76 bcache: fixup init dirty data errors
| * 3ebf83df62 bcache: prevent potential division by zero error
| * e74c2e6fec bcache: check return value from btree_node_alloc_replacement()
| * c73dd8f4b4 dm-delay: fix a race between delay_presuspend and delay_bio
| * a70b6da7c6 hv_netvsc: Mark VF as slave before exposing it to user-mode
| * ff6c130e48 hv_netvsc: Fix race of register_netdevice_notifier and VF register
| * 518ef82501 USB: serial: option: add Luat Air72*U series products
| * c841de6247 s390/dasd: protect device queue against concurrent access
| * 89f9ba7ee7 bcache: fixup multi-threaded bch_sectors_dirty_init() wake-up race
| * cd7a069590 bcache: replace a mistaken IS_ERR() by IS_ERR_OR_NULL() in btree_gc_coalesce()
| * be8af3b6c8 swiotlb-xen: provide the "max_mapping_size" method
| * 8c4b5cc908 ACPI: resource: Skip IRQ override on ASUS ExpertBook B1402CVA
| * 0f312dc1eb ASoC: simple-card: fixup asoc_simple_probe() error handling
| * fcc60c0a18 nfsd: lock_rename() needs both directories to live on the same fs
| * ec75d1d0cd ext4: make sure allocate pending entry not fail
| * 10341e77e4 ext4: fix slab-use-after-free in ext4_es_insert_extent()
| * 5527898c6a ext4: using nofail preallocation in ext4_es_insert_extent()
| * 2ae2be6e7c ext4: using nofail preallocation in ext4_es_insert_delayed_block()
| * aa6568033c ext4: using nofail preallocation in ext4_es_remove_extent()
| * 608758ef86 ext4: use pre-allocated es in __es_remove_extent()
| * fcb07d8ea3 ext4: use pre-allocated es in __es_insert_extent()
| * 0cc7653887 ext4: factor out __es_alloc_extent() and __es_free_extent()
| * 8234c1c690 ext4: add a new helper to check if es must be kept
| * 62526a55fe MIPS: KVM: Fix a build warning about variable set but not used
| * 3b2e8b30b0 media: ccs: Correctly initialise try compose rectangle
| * 1301467cbe lockdep: Fix block chain corruption
| * cbfa5aadd6 USB: dwc3: qcom: fix ACPI platform device leak
| * 68fe711312 USB: dwc3: qcom: fix resource leaks on probe deferral
| * 2be451e7a2 nvmet: nul-terminate the NQNs passed in the connect command
| * 86a7f67d76 nvmet: remove unnecessary ctrl parameter
| * d24a18cb51 afs: Fix file locking on R/O volumes to operate in local mode
| * 6e48c3175d afs: Return ENOENT if no cell DNS record can be found
| * 497e9b0b21 net: axienet: Fix check for partial TX checksum
| * 8fb804dabd amd-xgbe: propagate the correct speed and duplex status
| * b7c9e8c038 amd-xgbe: handle the corner-case during tx completion
| * a2e868ad07 amd-xgbe: handle corner-case during sfp hotplug
| * ebc7fbd15a arm/xen: fix xen_vcpu_info allocation alignment
| * 5ada292b5c net/smc: avoid data corruption caused by decline
| * 3ae55e3a37 net: usb: ax88179_178a: fix failed operations during ax88179_reset
| * 27914bff96 ipv4: Correct/silence an endian warning in __ip_do_redirect
| * f8467afa75 HID: fix HID device resource race between HID core and debugging support
| * 2f0ea5e094 HID: core: store the unique system identifier in hid_device
| * 650e43dfe7 drm/rockchip: vop: Fix color for RGB888/BGR888 format on VOP full
| * cc3b63c089 ata: pata_isapnp: Add missing error check for devm_ioport_map()
| * 9942c19483 wireguard: use DEV_STATS_INC()
| * 939352ad65 drm/panel: simple: Fix Innolux G101ICE-L01 timings
| * a5e82e345f drm/panel: simple: Fix Innolux G101ICE-L01 bus flags
| * 60660af957 drm/panel: auo,b101uan08.3: Fine tune the panel power sequence
| * 2c688ae2dd drm/panel: boe-tv101wum-nl6: Fine tune the panel power sequence
| * 3b797242d1 afs: Make error on cell lookup failure consistent with OpenAFS
| * dbc1929a52 afs: Fix afs_server_list to be cleaned up with RCU
| * c3bead2f8f PCI: keystone: Drop __init from ks_pcie_add_pcie_{ep,port}()
| * ac65f8979b RDMA/irdma: Prevent zero-length STAG registration
* | 76b525ba59 ANDROID: Fix up ipvlan merge in 5.10.202
* | f6509591ff Revert "ASoC: soc-card: Add storage for PCI SSID"
* | 2e1e5e63dd Revert "tracing: Have trace_event_file have ref counters"
* | 7999a9a70d Merge 5.10.202 into android12-5.10-lts
|\|
| * 479e8b8925 Linux 5.10.202
| * 610057f4f6 interconnect: qcom: Add support for mask-based BCMs
| * 7ce66afcaa netfilter: nf_tables: disable toggling dormant table state more than once
| * d9c4da8cb7 netfilter: nf_tables: fix table flag updates
| * 7d1d3f1134 netfilter: nftables: update table flags from the commit phase
| * a98172e36e tracing: Have trace_event_file have ref counters
| * c6e8af2a8a io_uring/fdinfo: lock SQ thread while retrieving thread cpu/pid
| * aeeb1ad2dd drm/amd/display: Change the DMCUB mailbox memory location from FB to inbox
| * e2bdd43788 drm/amdgpu: fix error handling in amdgpu_bo_list_get()
| * dfa8e63ca5 drm/amd/pm: Handle non-terminated overdrive commands.
| * 7dc933b4b4 ext4: remove gdb backup copy for meta bg in setup_new_flex_group_blocks
| * 0932764fb5 ext4: correct the start block of counting reserved clusters
| * 3c1ad03a5f ext4: correct return value of ext4_convert_meta_bg
| * d739a7e389 ext4: correct offset of gdb backup in non meta_bg group to update_backups
| * c878db71ed ext4: apply umask if ACL support is disabled
| * 3a51aee542 Revert "net: r8169: Disable multicast filter for RTL8168H and RTL8107E"
| * f6e014b5eb media: qcom: camss: Fix vfe_get() error jump
| * e2d2e26608 mm: kmem: drop __GFP_NOFAIL when allocating objcg vectors
| * 6875820f36 nfsd: fix file memleak on client_opens_release
| * b51b20c018 media: venus: hfi: add checks to handle capabilities from firmware
| * bcee276a1e media: venus: hfi: fix the check to handle session buffer requirement
| * da240b7bad media: venus: hfi_parser: Add check to keep the number of codecs within range
| * 0f887306bd media: sharp: fix sharp encoding
| * dfa9f4ea65 media: lirc: drop trailing space from scancode transmit
| * c041f5ddef f2fs: avoid format-overflow warning
| * 829f0d5231 i2c: i801: fix potential race in i801_block_transaction_byte_by_byte
| * 430603f6de net: phylink: initialize carrier state at creation
| * 4dc0484e90 net: dsa: lan9303: consequently nested-lock physical MDIO
| * cb1006640c i2c: designware: Disable TX_EMPTY irq while waiting for block length byte
| * 8e29eebe4c lsm: fix default return value for inode_getsecctx
| * 8327f50442 lsm: fix default return value for vm_enough_memory
| * a011391f01 Revert ncsi: Propagate carrier gain/loss events to the NCSI controller
| * 969d994612 arm64: dts: qcom: ipq6018: Fix tcsr_mutex register size
| * 2b3931eb8e arm64: dts: qcom: ipq6018: switch TCSR mutex to MMIO
| * bdda1c356d PCI: exynos: Don't discard .remove() callback
| * 62d15b6a6e Bluetooth: btusb: Add 0bda:b85b for Fn-Link RTL8852BE
| * dbbf3c4560 Bluetooth: btusb: Add RTW8852BE device 13d3:3570 to device tables
| * 990d4c76d2 bluetooth: Add device 13d3:3571 to device tables
| * 3aba34baa4 bluetooth: Add device 0bda:887b to device tables
| * 0952747362 Bluetooth: btusb: Add Realtek RTL8852BE support ID 0x0cb8:0xc559
| * 8617305611 cpufreq: stats: Fix buffer overflow detection in trans_stats()
| * 2ed25af15b tty: serial: meson: fix hard LOCKUP on crtscts mode
| * 07c6183958 serial: meson: Use platform_get_irq() to get the interrupt
| * 980c3135f1 tty: serial: meson: retrieve port FIFO size from DT
| * 1e66cd4083 serial: meson: remove redundant initialization of variable id
| * ba30578def ALSA: hda/realtek - Enable internal speaker of ASUS K6500ZC
| * ddd47d8d1b ALSA: hda/realtek - Add Dell ALC295 to pin fall back table
| * a681d28b97 ALSA: info: Fix potential deadlock at disconnection
| * f04fa1e199 xhci: Enable RPM on controllers that support low-power states
| * 5e34fe50a9 parisc/pgtable: Do not drop upper 5 address bits of physical address
| * 064c697cac parisc: Prevent booting 64-bit kernels on PA1.x machines
| * c6effcdd7d i3c: master: cdns: Fix reading status register
| * 76320f05b9 mtd: cfi_cmdset_0001: Byte swap OTP info
| * dce3e7c400 mm/memory_hotplug: use pfn math in place of direct struct page manipulation
| * 63d2023fbb mm/cma: use nth_page() in place of direct struct page manipulation
| * d24340f081 dmaengine: stm32-mdma: correct desc prep when channel running
| * 788322e1ed mcb: fix error handling for different scenarios when parsing
| * 25284c46b6 i2c: core: Run atomic i2c xfer when !preemptible
| * 8f8fc95b3a kernel/reboot: emergency_restart: Set correct system_state
| * 9386f59759 quota: explicitly forbid quota files from being encrypted
| * f729cf6f32 jbd2: fix potential data lost in recovering journal raced with synchronizing fs bdev
| * db5ebaeb8f PCI: keystone: Don't discard .probe() callback
| * 2bcdc1b6b6 PCI: keystone: Don't discard .remove() callback
| * 943347e53a genirq/generic_chip: Make irq_remove_generic_chip() irqdomain aware
| * b2c194fe8f mmc: meson-gx: Remove setting of CMD_CFG_ERROR
| * 03ed26935b wifi: ath11k: fix htt pktlog locking
| * f882f51905 wifi: ath11k: fix dfs radar event locking
| * c3f61ca486 wifi: ath11k: fix temperature event locking
| * cd5a262a07 ima: detect changes to the backing overlay file
| * df4133ebc8 firmware: qcom_scm: use 64-bit calling convention only when client is 64-bit
| * 76211f1dd9 btrfs: don't arbitrarily slow down delalloc if we're committing
| * 175f4b062f rcu: kmemleak: Ignore kmemleak false positives when RCU-freeing objects
| * 3c1c1af25d PM: hibernate: Clean up sync_read handling in snapshot_write_next()
| * df8363e468 PM: hibernate: Use __get_safe_page() rather than touching the list
| * 21bc829337 arm64: dts: qcom: ipq6018: Fix hwlock index for SMEM
| * 1fd46d3277 PCI/ASPM: Fix L1 substate handling in aspm_attr_store_common()
| * e3ed58ee4e mmc: sdhci_am654: fix start loop index for TAP value parsing
| * 198366a5ff mmc: vub300: fix an error code
| * 3a4431014c clk: qcom: ipq6018: drop the CLK_SET_RATE_PARENT flag from PLL clocks
| * 30af31fc00 clk: qcom: ipq8074: drop the CLK_SET_RATE_PARENT flag from PLL clocks
| * 8dc83cf762 parisc/pdc: Add width field to struct pdc_model
| * d08a1e7525 arm64: Restrict CPU_BIG_ENDIAN to GNU as or LLVM IAS 15.x or newer
| * 61695b9aec ACPI: resource: Do IRQ override on TongFang GMxXGxx
| * 6edbd6b481 watchdog: move softlockup_panic back to early_param
| * 85fe64c8dc PCI/sysfs: Protect driver's D3cold preference from user space
| * 1b08362429 hvc/xen: fix error path in xen_hvc_init() to always register frontend driver
| * d5455c421f hvc/xen: fix console unplug
| * a158a74e70 tty/sysrq: replace smp_processor_id() with get_cpu()
| * fc557bcfd7 audit: don't WARN_ON_ONCE(!current->mm) in audit_exe_compare()
| * 121973ef1a audit: don't take task_lock() in audit_exe_compare() code path
| * 910caee346 KVM: x86: Ignore MSR_AMD64_TW_CFG access
| * 66406d49ac KVM: x86: hyper-v: Don't auto-enable stimer on write from user-space
| * 8cf6b66585 x86/cpu/hygon: Fix the CPU topology evaluation for real
| * 243c4833f3 scsi: megaraid_sas: Increase register read retry rount from 3 to 30 for selected registers
| * 697bc325b9 scsi: mpt3sas: Fix loop logic
| * 5fb8ec5943 bpf: Fix precision tracking for BPF_ALU | BPF_TO_BE | BPF_END
| * 9617a9fe4f bpf: Fix check_stack_write_fixed_off() to correctly spill imm
| * 7975f7b2a6 randstruct: Fix gcc-plugin performance mode to stay in group
| * d83f4bc0a4 powerpc/perf: Fix disabling BHRB and instruction sampling
| * e7de8ffbbb media: venus: hfi: add checks to perform sanity on queue pointers
| * 99dbc39c22 cifs: fix check of rc in function generate_smb3signingkey
| * e5a0ef0282 cifs: spnego: add ';' in HOST_KEY_LEN
| * 6d388b641c tools/power/turbostat: Fix a knl bug
| * f56e228d67 macvlan: Don't propagate promisc change to lower dev in passthru
| * ac4979dbd9 net/mlx5e: Check return value of snprintf writing to fw_version buffer for representors
| * a3ce491b17 net/mlx5_core: Clean driver version and name
| * 0eaec8126b net/mlx5e: fix double free of encap_header
| * 541fece7ca net: stmmac: fix rx budget limit check
| * 66dbaa2eec netfilter: nf_conntrack_bridge: initialize err to 0
| * 3f64315056 net: ethernet: cortina: Fix MTU max setting
| * eac9ef50d6 net: ethernet: cortina: Handle large frames
| * f0d9b80f76 net: ethernet: cortina: Fix max RX frame define
| * 396baca668 bonding: stop the device in bond_setup_by_slave()
| * 1f368fd612 ptp: annotate data-race around q->head and q->tail
| * ecc74e7acb xen/events: fix delayed eoi list handling
| * 144a80ef40 ppp: limit MRU to 64K
| * 3ee249a3b9 tipc: Fix kernel-infoleak due to uninitialized TLV value
| * 072f0eb962 net: hns3: fix VF reset fail issue
| * b0eac93bae net: hns3: fix variable may not initialized problem in hns3_init_mac_addr()
| * 48fa8a85f8 tty: Fix uninit-value access in ppp_sync_receive()
| * 43b781e7cb ipvlan: add ipvlan_route_v6_outbound() helper
| * 59fadfa99b gfs2: Silence "suspicious RCU usage in gfs2_permission" warning
| * dedf2a0eb9 SUNRPC: Fix RPC client cleaned up the freed pipefs dentries
| * 39b2bf0405 NFSv4.1: fix SP4_MACH_CRED protection for pnfs IO
| * 37f3aaf794 SUNRPC: Add an IS_ERR() check back to where it was
| * c7eacf01dd SUNRPC: ECONNRESET might require a rebind
| * 4ea3b98fa6 xhci: turn cancelled td cleanup to its own function
| * 6ebd42a7b7 wifi: iwlwifi: Use FW rate for non-data frames
| * e52518b9cb pwm: Fix double shift bug
| * 53b2393eeb drm/amdgpu: fix software pci_unplug on some chips
| * f1ea84696e ASoC: ti: omap-mcbsp: Fix runtime PM underflow warnings
| * 3cfacacb9c kgdb: Flush console before entering kgdb on panic
| * 79b6a90f4f drm/amd/display: Avoid NULL dereference of timing generator
| * 0f5068519f media: imon: fix access to invalid resource for the second interface
| * cf8519f40c media: cobalt: Use FIELD_GET() to extract Link Width
| * 5f8d51a04b gfs2: fix an oops in gfs2_permission
| * 2a054b87a1 gfs2: ignore negated quota changes
| * 0ac2652b96 media: vivid: avoid integer overflow
| * c6b6b86922 media: gspca: cpia1: shift-out-of-bounds in set_flicker
| * 90e3c3dd93 i2c: sun6i-p2wi: Prevent potential division by zero
| * 18fa7a30cd 9p/trans_fd: Annotate data-racy writes to file::f_flags
| * 76716a7604 usb: gadget: f_ncm: Always set current gadget in ncm_bind()
| * 4ef41a7f33 tty: vcc: Add check for kstrdup() in vcc_probe()
| * 484cc536a3 exfat: support handle zero-size directory
| * 491529d383 HID: Add quirk for Dell Pro Wireless Keyboard and Mouse KM5221W
| * 65d78d54e4 misc: pci_endpoint_test: Add Device ID for R-Car S4-8 PCIe controller
| * bb83f79f90 scsi: libfc: Fix potential NULL pointer dereference in fc_lport_ptp_setup()
| * 5cebe796ea atm: iphase: Do PCI error checks on own line
| * 6549196836 PCI: tegra194: Use FIELD_GET()/FIELD_PREP() with Link Width fields
| * 25354bae4f ALSA: hda: Fix possible null-ptr-deref when assigning a stream
| * e0d739e66b ARM: 9320/1: fix stack depot IRQ stack filter
| * 62d21f9df4 HID: lenovo: Detect quirk-free fw on cptkbd and stop applying workaround
| * 1ba7df5457 jfs: fix array-index-out-of-bounds in diAlloc
| * 81aa58cd84 jfs: fix array-index-out-of-bounds in dbFindLeaf
| * c6c8863fb3 fs/jfs: Add validity check for db_maxag and db_agpref
| * 524b4f203a fs/jfs: Add check for negative db_l2nbperpage
| * 885824a44d RDMA/hfi1: Use FIELD_GET() to extract Link Width
| * e97bf4ada7 crypto: pcrypt - Fix hungtask for PADATA_RESET
| * 98fa52d89a ASoC: soc-card: Add storage for PCI SSID
| * f161a6b11a selftests/efivarfs: create-read: fix a resource leak
| * f475d5502f drm/amdgpu: Fix a null pointer access when the smc_rreg pointer is NULL
| * da1409ea08 drm/panel: st7703: Pick different reset sequence
| * 9acc2bc001 drm/panel/panel-tpo-tpg110: fix a possible null pointer dereference
| * c7dc0aca59 drm/panel: fix a possible null pointer dereference
| * b93a25de28 drm/amdgpu: Fix potential null pointer derefernce
| * 8c1dbddbfc drm/amd: Fix UBSAN array-index-out-of-bounds for Polaris and Tonga
| * 8af28ae3ac drm/amd: Fix UBSAN array-index-out-of-bounds for SMU7
| * 4ffb2b0e48 drm/msm/dp: skip validity check for DP CTS EDID checksum
| * 2810a9c40b drm/komeda: drop all currently held locks if deadlock happens
| * a70457f181 platform/x86: thinkpad_acpi: Add battery quirk for Thinkpad X120e
| * 53d61daf35 Bluetooth: Fix double free in hci_conn_cleanup
| * 9f8e4d1a4c Bluetooth: btusb: Add date->evt_skb is NULL check
| * bba97f5e8f wifi: ath10k: Don't touch the CE interrupt registers after power up
| * 22fa35ded3 net: annotate data-races around sk->sk_dst_pending_confirm
| * 67b7de95d1 net: annotate data-races around sk->sk_tx_queue_mapping
| * beb75dccba wifi: ath10k: fix clang-specific fortify warning
| * 2d6303cafb wifi: ath9k: fix clang-specific fortify warnings
| * 6058e48296 bpf: Detect IP == ksym.end as part of BPF program
| * 717de20abd wifi: mac80211: don't return unset power in ieee80211_get_tx_power()
| * cdfc689e10 wifi: mac80211_hwsim: fix clang-specific fortify warning
| * a7aa2f1ca8 x86/mm: Drop the 4 MB restriction on minimal NUMA node memory size
| * 89356bee8e clocksource/drivers/timer-atmel-tcb: Fix initialization on SAM9 hardware
| * 1b8687ed3c clocksource/drivers/timer-imx-gpt: Fix potential memory leak
| * 1a2a4202c6 perf/core: Bail out early if the request AUX area is out of bound
| * 9ed2d68b39 locking/ww_mutex/test: Fix potential workqueue corruption
* | 39feca3943 UPSTREAM: interconnect: qcom: Add support for mask-based BCMs
* | 53595e1cbf Revert "ipvlan: properly track tx_errors"
* | ddeac706a1 Revert "inet: shrink struct flowi_common"
* | 8f05c3a256 Revert "arm64/arm: xen: enlighten: Fix KPTI checks"
* | c02da4e692 Revert "mfd: core: Un-constify mfd_cell.of_reg"
* |   195858a508 Merge "Merge 5.10.201 into android12-5.10-lts" into android12-5.10-lts
|\ \
| * | cf3a19d56e Merge 5.10.201 into android12-5.10-lts
| |\|
| | * 6db6caba87 Linux 5.10.201
| | * 4be0407ffc btrfs: use u64 for buffer sizes in the tree search ioctls
| | * 2bbbb976fa Revert "mmc: core: Capture correct oemid-bits for eMMC cards"
| | * 3b092dfdab tracing/kprobes: Fix the order of argument descriptions
| | * 3697fda1c6 fbdev: fsl-diu-fb: mark wr_reg_wa() static
| | * a4dfebec32 fbdev: imsttfb: fix a resource leak in probe
| | * 9e8e731571 fbdev: imsttfb: Fix error path of imsttfb_probe()
| | * de721d7ef7 spi: spi-zynq-qspi: add spi-mem to driver kconfig dependencies
| | * 876a119790 drm/syncobj: fix DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE
| | * b9bc1806b9 x86/sev-es: Allow copy_from_kernel_nofault() in earlier boot
| | * 14042d6d80 x86: Share definition of __is_canonical_address()
| | * bc794a667b netfilter: nat: fix ipv6 nat redirect with mapped and scoped addresses
| | * b65d851b2e netfilter: nft_redir: use `struct nf_nat_range2` throughout and deduplicate eval call-backs
| | * 7764290452 netfilter: xt_recent: fix (increase) ipv6 literal buffer length
| | * 00b1882091 r8169: respect userspace disabling IFF_MULTICAST
| | * e02824db7c tg3: power down device only on SYSTEM_POWER_OFF
| | * 34c5a24633 net/smc: put sk reference if close work was canceled
| | * f652ab15af net/smc: allow cdc msg send rather than drop it with NULL sndbuf_desc
| | * 4e7bad7301 net/smc: fix dangling sock under state SMC_APPFINCLOSEWAIT
| | * 13d6bc35de net: stmmac: xgmac: Enable support for multiple Flexible PPS outputs
| | * eafacef7ee Fix termination state for idr_for_each_entry_ul()
| | * 0a84ffc72f net: r8169: Disable multicast filter for RTL8168H and RTL8107E
| | * 4969fcebe7 dccp/tcp: Call security_inet_conn_request() after setting IPv6 addresses.
| | * 7827667989 dccp: Call security_inet_conn_request() after setting IPv4 addresses.
| | * f830d4f698 inet: shrink struct flowi_common
| | * b33d130f07 tipc: Change nla_policy for bearer-related names to NLA_NUL_STRING
| | * ddf4e04e94 hsr: Prevent use after free in prp_create_tagged_frame()
| | * 3a2653828f llc: verify mac len before reading mac header
| | * 6c71e065be Input: synaptics-rmi4 - fix use after free in rmi_unregister_function()
| | * e5d481d9b6 pwm: brcmstb: Utilize appropriate clock APIs in suspend/resume
| | * 005965cab1 pwm: sti: Reduce number of allocations and drop usage of chip_data
| | * ce5e0a3c9d pwm: sti: Avoid conditional gotos
| | * 0bc796e66b regmap: prevent noinc writes from clobbering cache
| | * 1b86938925 media: dvb-usb-v2: af9035: fix missing unlock
| | * 2e2efaed79 media: cedrus: Fix clock/reset sequence
| | * 64863ba8e6 media: vidtv: mux: Add check and kfree for kstrdup
| | * 3387490c89 media: vidtv: psi: Add check for kstrdup
| | * 62557ab73d media: s3c-camif: Avoid inappropriate kfree()
| | * 2f3d9198cd media: bttv: fix use after free error due to btv->timeout timer
| | * 0627e8623e media: i2c: max9286: Fix some redundant of_node_put() calls
| | * c3e148aba9 pcmcia: ds: fix possible name leak in error path in pcmcia_device_add()
| | * 84540ef924 pcmcia: ds: fix refcount leak in pcmcia_device_add()
| | * cd154225d4 pcmcia: cs: fix possible hung task and memory leak pccardd()
| | * 5e3c751586 rtc: pcf85363: fix wrong mask/val parameters in regmap_update_bits call
| | * 1832ed55df i3c: Fix potential refcount leak in i3c_master_register_new_i3c_devs
| | * a83fc293ac perf hist: Add missing puts to hist__account_cycles
| | * 4e66bde5c7 perf machine: Avoid out of bounds LBR memory read
| | * 188425eb2d usb: host: xhci-plat: fix possible kernel oops while resuming
| | * ba894bd273 xhci: Loosen RPM as default policy to cover for AMD xHC 1.1
| | * ad0370c41a powerpc/pseries: fix potential memory leak in init_cpu_associativity()
| | * d12372af89 powerpc/imc-pmu: Use the correct spinlock initializer.
| | * c75707293d powerpc/xive: Fix endian conversion size
| | * f95f5512fd powerpc/40x: Remove stale PTE_ATOMIC_UPDATES macro
| | * b54a4c8ca1 modpost: fix tee MODULE_DEVICE_TABLE built on big-endian host
| | * 362f0241db interconnect: qcom: sc7180: Set ACV enable_mask
| | * 08588fac00 interconnect: qcom: sc7180: Retire DEFINE_QBCM
| | * ebaf7a73f6 f2fs: fix to initialize map.m_pblk in f2fs_precache_extents()
| | * 758f735604 dmaengine: pxa_dma: Remove an erroneous BUG_ON() in pxad_free_desc()
| | * 5fe228041c USB: usbip: fix stub_dev hub disconnect
| | * 798692e48c tools: iio: iio_generic_buffer ensure alignment
| | * 3eadba0582 tools: iio: iio_generic_buffer: Fix some integer type and calculation
| | * a0a41991dd tools: iio: privatize globals and functions in iio_generic_buffer.c file
| | * d046e3f8de misc: st_core: Do not call kfree_skb() under spin_lock_irqsave()
| | * c53cfe99c2 dmaengine: ti: edma: handle irq_of_parse_and_map() errors
| | * bdb3dd4096 usb: dwc2: fix possible NULL pointer dereference caused by driver concurrency
| | * 05de1536d0 livepatch: Fix missing newline character in klp_resolve_symbols()
| | * 3ebf42fe8c tty: tty_jobctrl: fix pid memleak in disassociate_ctty()
| | * 3808370526 leds: trigger: ledtrig-cpu:: Fix 'output may be truncated' issue for 'cpu'
| | * 23eb8629c2 leds: pwm: Don't disable the PWM when the LED should be off
| | * c2766ed2b7 mfd: dln2: Fix double put in dln2_probe
| | * b708eb26b5 mfd: core: Ensure disabled devices are skipped without aborting
| | * 9f831533d2 mfd: core: Un-constify mfd_cell.of_reg
| | * b7b4851e63 ASoC: ams-delta.c: use component after check
| | * 41aad9d695 padata: Fix refcnt handling in padata_free_shell()
| | * 7606807bd6 padata: Convert from atomic_t to refcount_t on parallel_data->refcnt
| | * 2de16f6169 ASoC: Intel: Skylake: Fix mem leak when parsing UUIDs fails
| | * 6fd432f392 HID: logitech-hidpp: Move get_wireless_feature_index() check to hidpp_connect_event()
| | * 7581eef4ae HID: logitech-hidpp: Revert "Don't restart communication if not necessary"
| | * c82e376bc2 HID: logitech-hidpp: Don't restart IO, instead defer hid_connect() only
| | * 0fe443314c HID: logitech-hidpp: Remove HIDPP_QUIRK_NO_HIDINPUT quirk
| | * 8337286600 Revert "HID: logitech-hidpp: add a module parameter to keep firmware gestures"
| | * 6d2de161cd sh: bios: Revive earlyprintk support
| | * 2ca51477c6 hid: cp2112: Fix IRQ shutdown stopping polling for all IRQs on chip
| | * 9c895d20f8 RDMA/hfi1: Workaround truncation compilation error
| | * cd268264f5 scsi: ufs: core: Leave space for '\0' in utf8 desc string
| | * cded69a7f8 ASoC: fsl: Fix PM disable depth imbalance in fsl_easrc_probe
| | * 1596394868 RDMA/hns: Fix signed-unsigned mixed comparisons
| | * 8018a3444e RDMA/hns: Fix uninitialized ucmd in hns_roce_create_qp_common()
| | * 08a246064d IB/mlx5: Fix rdma counter binding for RAW QP
| | * 53067926cd ASoC: fsl: mpc5200_dma.c: Fix warning of Function parameter or member not described
| | * 83eee515e4 ext4: move 'ix' sanity check to corrent position
| | * 67959b3626 ARM: 9321/1: memset: cast the constant byte to unsigned char
| | * 3d959406c8 hid: cp2112: Fix duplicate workqueue initialization
| | * 63e8e2ee58 crypto: qat - increase size of buffers
| | * a921d6b795 crypto: qat - mask device capabilities with soft straps
| | * 16f2033de0 crypto: caam/jr - fix Chacha20 + Poly1305 self test failure
| | * 727ba935d9 crypto: caam/qi2 - fix Chacha20 + Poly1305 self test failure
| | * b0e7a93573 nd_btt: Make BTT lanes preemptible
| | * efeaa2396e libnvdimm/of_pmem: Use devm_kstrdup instead of kstrdup and check its return value
| | * ffb3483c4b hwrng: geode - fix accessing registers
| | * 02db438311 crypto: hisilicon/hpre - Fix a erroneous check after snprintf()
| | * 5176ebe6aa selftests/resctrl: Ensure the benchmark commands fits to its array
| | * b3768f0892 selftests/pidfd: Fix ksft print formats
| | * a0846b4c8e clk: scmi: Free scmi_clk allocated when the clocks with invalid info are skipped
| | * bcc7d46fa4 firmware: ti_sci: Mark driver as non removable
| | * 5e5b85ea0f soc: qcom: llcc: Handle a second device without data corruption
| | * a44aa8d8a5 ARM: dts: qcom: mdm9615: populate vsdcc fixed regulator
| | * 8bd7c8a9b8 arm64: dts: qcom: sdm845-mtp: fix WiFi configuration
| | * 4df18b233e arm64: dts: qcom: msm8916: Fix iommu local address range
| | * 1e17eab1a4 xen-pciback: Consider INTx disabled when MSI/MSI-X is enabled
| | * bc714abe7d drm/rockchip: Fix type promotion bug in rockchip_gem_iommu_map()
| | * 666a4120dc arm64/arm: xen: enlighten: Fix KPTI checks
| | * 0dd40dca1e drm/rockchip: cdn-dp: Fix some error handling paths in cdn_dp_probe()
| | * 6f710918df drm/mediatek: Fix iommu fault during crtc enabling
| | * c12f2eaeb3 drm/bridge: tc358768: Fix bit updates
| | * 1133e72cd8 drm/bridge: tc358768: Disable non-continuous clock mode
| | * c0d25ef81a drm/bridge: tc358768: Fix use of uninitialized variable
| | * 7b063c93be drm/radeon: possible buffer overflow
| | * a6d6769e2d drm/rockchip: vop: Fix call to crtc reset helper
| | * bb81430161 drm/rockchip: vop: Fix reset of state in duplicate state crtc funcs
| | * 9899097b1f hwmon: (coretemp) Fix potentially truncated sysfs attribute name
| | * 7d870088db hwmon: (axi-fan-control) Fix possible NULL pointer dereference
| | * 060d54f090 hwmon: (axi-fan-control) Support temperature vs pwm points
| | * d426a2955e platform/x86: wmi: Fix opening of char device
| | * d222073733 platform/x86: wmi: remove unnecessary initializations
| | * 3433a69c00 platform/x86: wmi: Fix probe failure when failing to register WMI devices
| | * b16622d304 clk: qcom: config IPQ_APSS_6018 should depend on QCOM_SMEM
| | * 001e5def77 clk: mediatek: clk-mt2701: Add check for mtk_alloc_clk_data
| | * 4f861b6394 clk: mediatek: clk-mt7629: Add check for mtk_alloc_clk_data
| | * 96e9544a0c clk: mediatek: clk-mt7629-eth: Add check for mtk_alloc_clk_data
| | * 81b1628611 clk: mediatek: clk-mt6797: Add check for mtk_alloc_clk_data
| | * 3994387ba3 clk: mediatek: clk-mt6779: Add check for mtk_alloc_clk_data
| | * 2617aa8cea clk: mediatek: clk-mt6765: Add check for mtk_alloc_clk_data
| | * 55e5fd11a2 clk: npcm7xx: Fix incorrect kfree
| | * 0beaefa988 clk: ti: fix double free in of_ti_divider_clk_setup()
| | * acb535d750 clk: ti: change ti_clk_register[_omap_hw]() API
| | * 98c5012c11 clk: ti: Update component clocks to use ti_dt_clk_name()
| | * 1c4253252c clk: ti: Update pll and clockdomain clocks to use ti_dt_clk_name()
| | * 00c67e0aa7 clk: ti: Add ti_dt_clk_name() helper to use clock-output-names
| | * de33b367f8 clk: keystone: pll: fix a couple NULL vs IS_ERR() checks
| | * c07a0e2e93 spi: nxp-fspi: use the correct ioremap function
| | * d459cb4244 clk: linux/clk-provider.h: fix kernel-doc warnings and typos
| | * f28709097d clk: asm9260: use parent index to link the reference clock
| | * 8d03f7c580 clk: imx: imx8mq: correct error handling path
| | * c1bacea8a6 clk: imx: Select MXC_CLK for CLK_IMX8QXP
| | * a52c963d8d clk: qcom: gcc-sm8150: Fix gcc_sdcc2_apps_clk_src
| | * c6919a1576 clk: qcom: gcc-sm8150: use ARRAY_SIZE instead of specifying num_parents
| | * 355a12fa1c clk: qcom: mmcc-msm8998: Fix the SMMU GDSC
| | * ba7f9695d5 clk: qcom: mmcc-msm8998: Set bimc_smmu_gdsc always on
| | * 97a6711744 clk: qcom: mmcc-msm8998: Don't check halt bit on some branch clks
| | * 05eebcd4bc clk: qcom: mmcc-msm8998: Add hardware clockgating registers to some clks
| | * 3181168e61 clk: qcom: clk-rcg2: Fix clock rate overflow for high parent frequencies
| | * 80836b5859 regmap: debugfs: Fix a erroneous check after snprintf()
| | * 9954a7f380 ipvlan: properly track tx_errors
| | * e897dcbd5f net: add DEV_STATS_READ() helper
| | * 98e8a5a370 ipv6: avoid atomic fragment on GSO packets
| | * dea8d9e571 ACPI: sysfs: Fix create_pnp_modalias() and create_of_modalias()
| | * 88be6453d7 tcp: fix cookie_init_timestamp() overflows
| | * 76894f305c chtls: fix tp->rcv_tstamp initialization
| | * d104f6cb41 r8169: fix rare issue with broken rx after link-down on RTL8125
| | * fdd4a3c20a r8169: use tp_to_dev instead of open code
| | * 3f795fb35c thermal: core: prevent potential string overflow
| | * ae681e5eff PM / devfreq: rockchip-dfi: Make pmu regmap mandatory
| | * d7a220bf6b can: dev: can_restart(): fix race condition between controller restart and netif_carrier_on()
| | * 040f65c282 can: dev: can_restart(): don't crash kernel if carrier is OK
| | * 03d138b6b2 wifi: rtlwifi: fix EDCA limit set by BT coexistence
| | * d8f2e18d1d tcp_metrics: do not create an entry from tcp_init_metrics()
| | * 73999f29ab tcp_metrics: properly set tp->snd_ssthresh in tcp_init_metrics()
| | * 37308a3926 tcp_metrics: add missing barriers on delete
| | * d203f9921a wifi: mt76: mt7603: rework/fix rx pse hang check
| | * 3068527d17 wifi: rtw88: debug: Fix the NULL vs IS_ERR() bug for debugfs_create_file()
| | * d44f88b20d net: spider_net: Use size_add() in call to struct_size()
| | * 9b8486fdad tipc: Use size_add() in calls to struct_size()
| | * 5f5aabbdc2 mlxsw: Use size_mul() in call to struct_size()
| | * f927d44696 gve: Use size_add() in call to struct_size()
| | * 2b46db3bb7 overflow: Implement size_t saturating arithmetic helpers
| | * 2f4b4eb58f tcp: call tcp_try_undo_recovery when an RTOd TFO SYNACK is ACKed
| | * 0ca9fc8200 udp: add missing WRITE_ONCE() around up->encap_rcv
| | * 61e7961ff3 i40e: fix potential memory leaks in i40e_remove()
| | * 47479ed7fc genirq/matrix: Exclude managed interrupts in irq_matrix_allocated()
| | * bb166bdae1 pstore/platform: Add check for kstrdup
| | * 66f9969141 x86/boot: Fix incorrect startup_gdt_descr.size
| | * ffa4cc86e9 futex: Don't include process MM in futex key on no-MMU
| | * f525870516 x86/srso: Fix SBPB enablement for (possible) future fixed HW
| | * f49926b8d2 vfs: fix readahead(2) on block devices
| | * 9fe0f6b572 sched/uclamp: Ignore (util == 0) optimization in feec() when p_util_max = 0
| | * bdb7de7ed5 iov_iter, x86: Be consistent about the __user tag on copy_mc_to_user()
* | | ddf606c1f5 ANDROID: GKI: db845c: Update symbols list and ABI on rpmsg_register_device_override
|/ /
* | 0f780c28f9 ANDROID: fix up rpmsg_device ABI break
* | ef7075076a ANDROID: fix up platform_device ABI break
* | bdc373d185 Revert "kasan: print the original fault addr when access invalid shadow"
* | 9cba6b5683 Merge 5.10.200 into android12-5.10-lts
|\|
| * 3e55583405 Linux 5.10.200
| * a5feaf7659 ALSA: hda: intel-dsp-config: Fix JSL Chromebook quirk detection
| * 9109649559 tty: 8250: Add support for Intashield IS-100
| * 73bcb4d449 tty: 8250: Add support for Brainboxes UP cards
| * 119f38e8ca tty: 8250: Add support for additional Brainboxes UC cards
| * a8bf6f6218 tty: 8250: Remove UC-257 and UC-431
| * e705aee2a6 usb: raw-gadget: properly handle interrupted requests
| * 8e0324f2cb usb: storage: set 1.50 as the lower bcdDevice for older "Super Top" compatibility
| * 747b8f8779 PCI: Prevent xHCI driver from claiming AMD VanGogh USB3 DRD device
| * deddf60c27 can: isotp: isotp_sendmsg(): fix TX state detection and wait behavior
| * 8716c28f69 can: isotp: isotp_bind(): do not validate unused address information
| * e4c4e0e1b2 can: isotp: add local echo tx processing and tx without FC
| * 569c95b7ec can: isotp: handle wait_event_interruptible() return values
| * de3c02383a can: isotp: check CAN address family in isotp_bind()
| * 0386f37047 can: isotp: isotp_bind(): return -EINVAL on incorrect CAN ID formatting
| * 93b1e3f3a2 can: isotp: set max PDU size to 64 kByte
| * 7adbc048d8 can: isotp: Add error message if txqueuelen is too small
| * 57798a2cfe can: isotp: add symbolic error message to isotp_module_init()
| * 186ab56451 can: isotp: change error format from decimal to symbolic error names
| * b881ce6c7d powerpc/mm: Fix boot crash with FLATMEM
| * 1b285a1bfb net: chelsio: cxgb4: add an error code check in t4_load_phy_fw
| * 955a1105ee platform/mellanox: mlxbf-tmfifo: Fix a warning message
| * 268ec38b79 scsi: mpt3sas: Fix in error path
| * abf9c78118 fbdev: uvesafb: Call cn_del_callback() at the end of uvesafb_exit()
| * ec45886637 ASoC: rt5650: fix the wrong result of key button
| * c683d8b641 netfilter: nfnetlink_log: silence bogus compiler warning
| * 66cc633fc6 spi: npcm-fiu: Fix UMA reads when dummy.nbytes == 0
| * 6f9093b6f8 fbdev: atyfb: only use ioremap_uc() on i386 and ia64
| * ead3c123a7 Input: synaptics-rmi4 - handle reset delay when using SMBus trsnsport
| * fb8f253b95 dmaengine: ste_dma40: Fix PM disable depth imbalance in d40_probe
| * e619b38a87 irqchip/stm32-exti: add missing DT IRQ flag translation
| * d151fb8019 net: sched: cls_u32: Fix allocation size in u32_init()
| * 9ade01b294 x86: Fix .brk attribute in linker script
| * 3fdd5b2bb0 rpmsg: Fix possible refcount leak in rpmsg_register_device_override()
| * 41c13a571d rpmsg: glink: Release driver_override
| * 5f1bb9f4d4 rpmsg: Fix calling device_lock() on non-initialized device
| * 5bbd3469a4 rpmsg: Fix kfree() of static memory on setting driver_override
| * d0208fb38f rpmsg: Constify local variable in field store macro
| * da369d3996 driver: platform: Add helper for safer setting of driver_override
| * 4a20f5ea62 objtool/x86: add missing embedded_insn check
| * 6b977a7323 ext4: avoid overlapping preallocations due to overflow
| * 58fe961c60 ext4: fix BUG in ext4_mb_new_inode_pa() due to overflow
| * c0db17e55f ext4: add two helper functions extent_logical_end() and pa_logical_end()
| * c761d34a7e x86/mm: Fix RESERVE_BRK() for older binutils
| * 01a5e17e3e x86/mm: Simplify RESERVE_BRK()
| * 571ce7d944 f2fs: fix to do sanity check on inode type during garbage collection
| * d1c37e849f smbdirect: missing rc checks while waiting for rdma events
| * b2e62728b1 kobject: Fix slab-out-of-bounds in fill_kobj_path()
| * b9b197f659 x86/i8259: Skip probing when ACPI/MADT advertises PCAT compatibility
| * 62184eb778 iio: adc: xilinx-xadc: Don't clobber preset voltage/temperature thresholds
| * e96eb8853f iio: adc: xilinx: use more devres helpers and remove remove()
| * 0eb1198fe4 iio: adc: xilinx: use devm_krealloc() instead of kfree() + kcalloc()
| * c4b496c9f7 iio: adc: xilinx: use helper variable for &pdev->dev
| * d8928befff clk: Sanitize possible_parent_show to Handle Return Value of of_clk_get_parent_name
| * 09ce0d85cc sparc32: fix a braino in fault handling in csum_and_copy_..._user()
| * 0258ca32b0 perf/core: Fix potential NULL deref
| * 4e3c606afa nvmem: imx: correct nregs for i.MX6UL
| * 37ccf15ebe nvmem: imx: correct nregs for i.MX6SLL
| * 7a1c29e93c nvmem: imx: correct nregs for i.MX6ULL
| * d44166341f misc: fastrpc: Clean buffers on remote invocation failures
| * 866838eb8e tracing/kprobes: Fix the description of variable length arguments
| * ca764116b5 i2c: aspeed: Fix i2c bus hang in slave read
| * 18c5167d04 i2c: stm32f7: Fix PEC handling in case of SMBUS transfers
| * 80416f6ba0 i2c: muxes: i2c-demux-pinctrl: Use of_get_i2c_adapter_by_node()
| * 9a9ead53e7 i2c: muxes: i2c-mux-gpmux: Use of_get_i2c_adapter_by_node()
| * 3cb69f1dbc i2c: muxes: i2c-mux-pinctrl: Use of_get_i2c_adapter_by_node()
| * 0c8587fec9 iio: exynos-adc: request second interupt only when touchscreen mode is used
| * 632c2199e5 kasan: print the original fault addr when access invalid shadow
| * be9e6f51ba i40e: Fix wrong check for I40E_TXR_FLAGS_WB_ON_ITR
| * fe65fc90e9 gtp: fix fragmentation needed check with gso
| * 3ae8b75fce gtp: uapi: fix GTPA_MAX
| * 4d0d5e54b5 tcp: fix wrong RTO timeout when received SACK reneging
| * e0308c7939 r8152: Release firmware if we have an error in probe
| * 17b455747b r8152: Cancel hw_phy_work if we have an error in probe
| * 7dc907d855 r8152: Run the unload routine if we have errors during probe
| * 704c25fc6a r8152: Increase USB control msg timeout to 5000ms as per spec
| * 79e2610efc net: usb: smsc95xx: Fix uninit-value access in smsc95xx_read_reg
| * d9864e589f net: ieee802154: adf7242: Fix some potential buffer overflow in adf7242_stats_show()
| * 634c72adc8 igc: Fix ambiguity in the ethtool advertising
| * 1e628189a2 neighbour: fix various data-races
| * 77c4f14f95 igb: Fix potential memory leak in igb_add_ethtool_nfc_entry
| * 1ac4f8e555 treewide: Spelling fix in comment
| * 5eab293b1c r8169: fix the KCSAN reported data race in rtl_rx while reading desc->opts1
| * 13d357d9f2 r8169: fix the KCSAN reported data-race in rtl_tx while reading TxDescArray[entry].opts1
| * 31c31a78dc drm/dp_mst: Fix NULL deref in get_mst_branch_device_by_guid_helper()
| * 957ec0823a mmc: renesas_sdhi: use custom mask for TMIO_MASK_ALL
| * 3ab81820bf mm/page_alloc: correct start page when guard page debug is enabled
| * f2c0b571a5 virtio-mmio: fix memory leak of vm_dev
| * 8b857a93d6 virtio_balloon: Fix endless deflation and inflation on arm64
| * c88dd2aebf mcb-lpc: Reallocate memory region to avoid memory overlapping
| * 6976459c64 mcb: Return actual parsed size when reading chameleon table
| * 09bcf92548 selftests/ftrace: Add new test case which checks non unique symbol
* | 04c980352b Merge branch 'android12-5.10' into branch 'android12-5.10-lts'
* | b4e242de09 Revert "usb: core: Track SuperSpeed Plus GenXxY"
* | 87c1e3677d Revert "drm/connector: Add a fwnode pointer to drm_connector and register with ACPI (v2)"
* | 8fd816f563 Revert "drm/connector: Add drm_connector_find_by_fwnode() function (v3)"
* | 1a01b7e512 Revert "drm/connector: Add support for out-of-band hotplug notification (v3)"
* | 2f382c6d12 Revert "usb: typec: altmodes/displayport: Notify drm subsys of hotplug events"
* | 5653e77e8e Revert "usb: typec: altmodes/displayport: Signal hpd low when exiting mode"
* | f04244ef53 Revert "ipv4/fib: send notify when delete source address routes"
* | 7957cd8ab1 Revert "net: add sysctl accept_ra_min_rtr_lft"
* | 935ac73a69 Revert "net: change accept_ra_min_rtr_lft to affect all RA lifetimes"
* | ea0ddd540d Revert "net: release reference to inet6_dev pointer"
* | 8af75db0da Revert "xfrm: fix a data-race in xfrm_gen_index()"
* | b78ecc11ea Revert "perf: Disallow mis-matched inherited group reads"
* | 5cc7b2b7f4 Revert "Bluetooth: hci_core: Fix build warnings"
* | 9cd7ac5dc5 Revert "xfrm: interface: use DEV_STATS_INC()"
* | 597c63c0dc ANDROID: GKI: arm64: drop CONFIG_DEBUG_PREEMPT forced disable
* | e04ba5f57f Merge 5.10.199 into android12-5.10-lts
|/
* cb49f0e441 Linux 5.10.199
* 657a3ca823 xfrm6: fix inet6_dev refcount underflow problem
* 5d5680755b Bluetooth: hci_sock: Correctly bounds check and pad HCI_MON_NEW_INDEX name
* b423509bc9 Bluetooth: hci_sock: fix slab oob read in create_monitor_event
* 653c808023 phy: mapphone-mdm6600: Fix pinctrl_pm handling for sleep pins
* e9c20d3078 phy: mapphone-mdm6600: Fix runtime PM for remove
* f42634685e phy: mapphone-mdm6600: Fix runtime disable on probe
* 05e06fb6a6 ASoC: pxa: fix a memory leak in probe()
* 7e29dadf26 gpio: vf610: set value before the direction to avoid a glitch
* 6c3a72d4ae platform/x86: asus-wmi: Map 0x2a code, Ignore 0x2b and 0x2c events
* 8fece0081b platform/x86: asus-wmi: Change ASUS_WMI_BRN_DOWN code from 0x20 to 0x2e
* 3be044840e s390/pci: fix iommu bitmap allocation
* 487a8e2464 perf: Disallow mis-matched inherited group reads
* 550c70f72a USB: serial: option: add Fibocom to DELL custom modem FM101R-GL
* a39ea926ff USB: serial: option: add entry for Sierra EM9191 with new firmware
* 3fb223086d USB: serial: option: add Telit LE910C4-WWX 0x1035 composition
* d78d3e0d84 nvme-rdma: do not try to stop unallocated queues
* 6238faecf8 nvme-pci: add BOGUS_NID for Intel 0a54 device
* 9efa38fdca ACPI: irq: Fix incorrect return value in acpi_register_gsi()
* 9df654268a pNFS: Fix a hang in nfs4_evict_inode()
* c44e09a89a Revert "pinctrl: avoid unsafe code pattern in find_pinctrl()"
* b26b0b8757 mmc: core: Capture correct oemid-bits for eMMC cards
* f4771efb06 mmc: core: sdio: hold retuning if sdio in 1-bit mode
* 2312fb7f3b mtd: physmap-core: Restore map_rom fallback
* 3a141424f8 mtd: spinand: micron: correct bitmask for ecc status
* 7682dae0a6 mtd: rawnand: arasan: Ensure program page operations are successful
* 875d17e452 mtd: rawnand: marvell: Ensure program page operations are successful
* 6224890ad0 mtd: rawnand: qcom: Unmap the right resource upon probe failure
* f707bc0a55 Bluetooth: hci_event: Fix using memcmp when comparing keys
* 3b6aa631df net/mlx5: Handle fw tracer change ownership event based on MTRC
* ead8131372 platform/x86: touchscreen_dmi: Add info for the Positivo C4128B
* fd12716327 HID: multitouch: Add required quirk for Synaptics 0xcd7e device
* 4e71ae53f1 btrfs: fix some -Wmaybe-uninitialized warnings in ioctl.c
* 661b4ce3b5 drm: panel-orientation-quirks: Add quirk for One Mix 2S
* 5b7cae7c35 ipv4/fib: send notify when delete source address routes
* 21f85b026d sky2: Make sure there is at least one frag_addr available
* f06c3a50ef regulator/core: Revert "fix kobject release warning and memory leak in regulator_register()"
* 4613414129 wifi: cfg80211: avoid leaking stack data into trace
* fde6d84daa wifi: mac80211: allow transmitting EAPOL frames with tainted key
* 8de7f70583 wifi: cfg80211: Fix 6GHz scan configuration
* ffb060b136 Bluetooth: hci_core: Fix build warnings
* 65f5da6df8 Bluetooth: Avoid redundant authentication
* 115f2c88fd HID: holtek: fix slab-out-of-bounds Write in holtek_kbd_input_event
* a59636cdd8 tracing: relax trace_event_eval_update() execution with cond_resched()
* fb60e9c000 ata: libata-eh: Fix compilation warning in ata_eh_link_report()
* 22c3641bef gpio: timberdale: Fix potential deadlock on &tgpio->lock
* b4fcf1a0bb overlayfs: set ctime when setting mtime and atime
* 4b472c25a5 i2c: mux: Avoid potential false error message in i2c_mux_add_adapter
* 840b912df5 btrfs: initialize start_slot in btrfs_log_prealloc_extents
* 9801e2798b btrfs: return -EUCLEAN for delayed tree ref with a ref count not equals to 1
* d69131b48f ARM: dts: ti: omap: Fix noisy serial with overrun-throttle-ms for mapphone
* 9ed14f807f usb: typec: altmodes/displayport: Signal hpd low when exiting mode
* f25a13d318 usb: typec: altmodes/displayport: Notify drm subsys of hotplug events
* 2ea6a14e8a drm/connector: Add support for out-of-band hotplug notification (v3)
* 6e55f6a8a4 drm/connector: Add drm_connector_find_by_fwnode() function (v3)
* 89b1868bab drm/connector: Add a fwnode pointer to drm_connector and register with ACPI (v2)
* 86502f1b63 drm/connector: Give connector sysfs devices there own device_type
* cedcbf61df drm/amd/display: Don't set dpms_off for seamless boot
* ebba01fcd5 drm/amd/display: only check available pipe to disable vbios mode.
* 1ac7170004 serial: 8250_omap: Fix errors with no_console_suspend
* be300358b5 serial: 8250: omap: Fix imprecise external abort for omap_8250_pm()
* fc778e9d79 xhci: track port suspend state correctly in unsuccessful resume cases
* 1c034c6e22 xhci: decouple usb2 port resume and get_port_status request handling
* 92088dd886 xhci: clear usb2 resume related variables in one place.
* e7abc4b18d xhci: rename resume_done to resume_timestamp
* d44c9285ce xhci: move port specific items such as state completions to port structure
* e2b4de13e5 xhci: cleanup xhci_hub_control port references
* 95b9f1e392 usb: core: Track SuperSpeed Plus GenXxY
* d6316f5929 selftests/mm: fix awk usage in charge_reserved_hugetlb.sh and hugetlb_reparenting_test.sh that may cause error
* 69f40ce372 selftests/vm: make charge_reserved_hugetlb.sh work with existing cgroup setting
* cb868d8857 ACPI: resource: Skip IRQ override on ASUS ExpertBook B1402CBA
* 7d0728e7ac ACPI: resource: Skip IRQ override on ASUS ExpertBook B1502CBA
* 3a58c28bff ACPI: resource: Skip IRQ override on Asus Expertbook B2402CBA
* 1b4659e283 ACPI: resource: Add Asus ExpertBook B2502 to Asus quirks
* 980dd4dfb9 ACPI: resource: Skip IRQ override on Asus Vivobook S5602ZA
* e0014184cd ACPI: resource: Add ASUS model S5402ZA to quirks
* 7f26f0ac38 ACPI: resource: Skip IRQ override on Asus Vivobook K3402ZA/K3502ZA
* ffcb69e923 ACPI: resources: Add DMI-based legacy IRQ override quirk
* 8a8918b510 ACPI: Drop acpi_dev_irqresource_disabled()
* 196896455b resource: Add irqresource_disabled()
* faa9a9d07c thunderbolt: Workaround an IOMMU fault on certain systems with Intel Maple Ridge
* 482fa2345f net: pktgen: Fix interface flags printing
* 068e4ecea2 netfilter: nft_set_rbtree: .deactivate fails if element has expired
* 9cef803e9e neighbor: tracing: Move pin6 inside CONFIG_IPV6=y section
* 36848adbde net/sched: sch_hfsc: upgrade 'rt' to 'sc' when it becomes a inner curve
* 923e47c0b4 net: dsa: bcm_sf2: Fix possible memory leak in bcm_sf2_mdio_register()
* a53fc06416 i40e: prevent crash on probe if hw registers have invalid values
* 9b5661bda3 net: usb: smsc95xx: Fix an error code in smsc95xx_reset()
* 250cd610f8 ipv4: fib: annotate races around nh->nh_saddr_genid and nh->nh_saddr
* 1cef1a2d5c tun: prevent negative ifindex
* f828e15db3 tcp: tsq: relax tcp_small_queue_check() when rtx queue contains a single skb
* c39c31c526 tcp: fix excessive TLP and RACK timeouts from HZ rounding
* 805b38062e net: rfkill: gpio: prevent value glitch during probe
* 8023c7e900 net: ipv6: fix return value check in esp_remove_trailer
* 2ca00d93f2 net: ipv4: fix return value check in esp_remove_trailer
* 4ba4eec4f4 xfrm: interface: use DEV_STATS_INC()
* 4d78b9dc79 xfrm: fix a data-race in xfrm_gen_index()
* 8c6c3d0b9f qed: fix LL2 RX buffer allocation
* 88c493297e drm/i915: Retry gtt fault when out of fence registers
* e985d78bdc nvmet-tcp: Fix a possible UAF in queue intialization setup
* 287401f92c netfilter: nft_payload: fix wrong mac header matching
* fe37e56ed4 tcp: check mptcp-level constraints for backlog coalescing
* 6550cbe25d x86/sev: Check for user-space IOIO pointing to kernel space
* 5bb9ba7daf x86/sev: Check IOBM for IOIO exceptions from user-space
* d78c5d8c23 x86/sev: Disable MMIO emulation from user mode
* 459af3fb81 KVM: x86: Mask LVTPC when handling a PMI
* 4cbac83549 regmap: fix NULL deref on lookup
* c95fa5b20f nfc: nci: fix possible NULL pointer dereference in send_acknowledge()
* 2e64f4c732 ice: reset first in crash dump kernels
* 95d68fdc71 ice: fix over-shifted variable
* a56c436b43 Bluetooth: avoid memcmp() out of bounds warning
* 7e83d15e0c Bluetooth: hci_event: Fix coding style
* c6878fa173 Bluetooth: vhci: Fix race when opening vhci device
* 40a33a129d Bluetooth: Fix a refcnt underflow problem for hci_conn
* ab950561bc Bluetooth: Reject connection with the device which has same BD_ADDR
* 0e025a4528 Bluetooth: hci_event: Ignore NULL link key
* 241f230324 usb: hub: Guard against accesses to uninitialized BOS descriptors
* aec24b0963 Documentation: sysctl: align cells in second content column
* f10690787d mm/memory_hotplug: rate limit page migration warnings
* bf97ea76ea lib/Kconfig.debug: do not enable DEBUG_PREEMPT by default
* c44b14469a dev_forward_skb: do not scrub skb mark within the same name space
* db9aafa195 ravb: Fix use-after-free issue in ravb_tx_timeout_work()
* db375fa550 RDMA/srp: Fix srp_abort()
* f022576aa0 RDMA/srp: Set scmnd->result only when scmnd is not NULL
* 489818719a arm64: armv8_deprecated: fix unused-function error
* da7603cedb arm64: armv8_deprecated: rework deprected instruction handling
* 45a26d2a53 arm64: armv8_deprecated: move aarch32 helper earlier
* 0b6a7a9f6d arm64: armv8_deprecated move emulation functions
* 2202536144 arm64: armv8_deprecated: fold ops into insn_emulation
* 5aa232345e arm64: rework EL0 MRS emulation
* 15e964971f arm64: factor insn read out of call_undef_hook()
* 0edde7fd1c arm64: factor out EL1 SSBS emulation hook
* 7a76df1ae1 arm64: split EL0/EL1 UNDEF handlers
* 8a8d4cc303 arm64: allow kprobes on EL0 handlers
* 793ed958b6 arm64: rework BTI exception handling
* 9113333d7c arm64: rework FPAC exception handling
* a8d7c8484f arm64: consistently pass ESR_ELx to die()
* 004bdab6ed arm64: die(): pass 'err' as long
* 835cb1f78d arm64: report EL1 UNDEFs better
* 6788b10620 x86/alternatives: Disable KASAN in apply_alternatives()
* ba4b377210 powerpc/64e: Fix wrong test in __ptep_test_and_clear_young()
* dadb86fba6 powerpc/8xx: Fix pte_access_permitted() for PAGE_NONE
* 288a0593c7 dmaengine: mediatek: Fix deadlock caused by synchronize_irq()
* 17c653d491 usb: gadget: ncm: Handle decoding of multiple NTB's in unwrap call
* a906f2eb67 usb: gadget: udc-xilinx: replace memcpy with memcpy_toio
* 7decb65151 counter: microchip-tcb-capture: Fix the use of internal GCLK logic
* a177771bff pinctrl: avoid unsafe code pattern in find_pinctrl()
* 2a4a828040 cgroup: Remove duplicates in cgroup v1 tasks file
* da7ce52a2f tee: amdtee: fix use-after-free vulnerability in amdtee_close_session
* 0ea0231dd1 Input: goodix - ensure int GPIO is in input for gpio_count == 1 && gpio_int_idx == 0 case
* 39fb79407e Input: i8042 - add Fujitsu Lifebook E5411 to i8042 quirk table
* 8d862a3dff Input: xpad - add PXN V900 support
* e8ea649fc3 Input: psmouse - fix fast_reconnect function for PS/2 mode
* cd2fbfd8b9 Input: powermate - fix use-after-free in powermate_config_complete
* 27b6c809d3 ceph: fix type promotion bug on 32bit systems
* 2b2bf63671 ceph: fix incorrect revoked caps assert in ceph_fill_file_size()
* 62f6d24f2e libceph: use kernel_connect()
* 5850eb4df4 thunderbolt: Check that lane 1 is in CL0 before enabling lane bonding
* 008ba1a5ad mcb: remove is_added flag from mcb_device struct
* ec93456c02 x86/cpu: Fix AMD erratum #1485 on Zen4-based CPUs
* b608f4aedc iio: pressure: ms5611: ms5611_prom_is_valid false negative bug
* 02388eaf3a iio: pressure: dps310: Adjust Timeout Settings
* 2abd2cffa1 iio: pressure: bmp280: Fix NULL pointer exception
* aadbf612f8 usb: musb: Modify the "HWVers" register address
* bc929a0052 usb: musb: Get the musb_qh poniter after musb_giveback
* 459eb7c688 usb: dwc3: Soft reset phy on probe for host
* d71d0009f9 net: usb: dm9601: fix uninitialized variable use in dm9601_mdio_read
* 4bf69ee6bb usb: xhci: xhci-ring: Use sysdev for mapping bounce buffer
* 2d30692c6c dmaengine: stm32-mdma: abort resume if no ongoing transfer
* d346a2ef6b media: mtk-jpeg: Fix use after free bug due to uncanceled work
* 014cab5329 net: release reference to inet6_dev pointer
* d491ac7aa1 net: change accept_ra_min_rtr_lft to affect all RA lifetimes
* 354a96770d net: add sysctl accept_ra_min_rtr_lft
* 1ceaf0d3a8 Revert "spi: spi-zynqmp-gqspi: Fix runtime PM imbalance in zynqmp_qspi_probe"
* 649237ccf4 Revert "spi: zynqmp-gqspi: fix clock imbalance on probe failure"
* ce03f0234f workqueue: Override implicit ordered attribute in workqueue_apply_unbound_cpumask()
* a424807d86 nfc: nci: assert requested protocol is valid
* b5b03da30b pinctrl: renesas: rzn1: Enable missing PINMUX
* 6ac22ecdaa net: nfc: fix races in nfc_llcp_sock_get() and nfc_llcp_sock_get_sn()
* 31ea13e3ff ixgbe: fix crash with empty VF macvlan list
* b24bd12775 net: phy: mscc: macsec: reject PN update requests
* a848ae8b5a net: macsec: indicate next pn update when offloading
* a629f0575c drm/vmwgfx: fix typo of sizeof argument
* d4ba78e552 riscv, bpf: Sign-extend return values
* 2a8ef2234b riscv, bpf: Factor out emit_call for kernel and bpf context
* 1bf4da1818 xen-netback: use default TX queue size for vifs
* 33548a6b3c mlxsw: fix mlxsw_sp2_nve_vxlan_learning_set() return type
* 55e06850c7 ieee802154: ca8210: Fix a potential UAF in ca8210_probe
* ef7a0d51bf ravb: Fix up dma_free_coherent() call in ravb_remove()
* 1673841da0 drm/msm/dpu: change _dpu_plane_calc_bw() to use u64 to avoid overflow
* 6004ca7ad2 drm/msm/dsi: skip the wait for video mode done if not applicable
* dbbbeaef77 drm/msm/dp: do not reinitialize phy unless retry during link training
* 31e7e77b24 net: prevent address rewrite in kernel_bind()
* 22c06bf1f9 quota: Fix slow quotaoff
* 093af62c02 HID: logitech-hidpp: Fix kernel crash on receiver USB disconnect
* cb4a8146e3 lib/test_meminit: fix off-by-one error in test_pages()
* 06068e7f3f perf/arm-cmn: Fix the unhandled overflow status of counter 4 to 7
* 0ed2ad00f3 RDMA/cxgb4: Check skb value for failure to allocate
* 26788a5b48 RDMA/srp: Do not call scsi_done() from srp_abort()
* 81982125c3 RDMA/srp: Make struct scsi_cmnd and struct srp_request adjacent

Change-Id: Iba6b212fae661ad8efed86e94d12106de6d32786
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
Greg Kroah-Hartman
2024-01-09 13:38:04 +00:00
769 changed files with 7281 additions and 3946 deletions

View File

@@ -6,3 +6,12 @@ Description:
OP-TEE bus provides reference to registered drivers under this directory. The <uuid> OP-TEE bus provides reference to registered drivers under this directory. The <uuid>
matches Trusted Application (TA) driver and corresponding TA in secure OS. Drivers matches Trusted Application (TA) driver and corresponding TA in secure OS. Drivers
are free to create needed API under optee-ta-<uuid> directory. are free to create needed API under optee-ta-<uuid> directory.
What: /sys/bus/tee/devices/optee-ta-<uuid>/need_supplicant
Date: November 2023
KernelVersion: 6.7
Contact: op-tee@lists.trustedfirmware.org
Description:
Allows to distinguish whether an OP-TEE based TA/device requires user-space
tee-supplicant to function properly or not. This attribute will be present for
devices which depend on tee-supplicant to be running.

View File

@@ -57,3 +57,12 @@ Description:
* 0 - default, * 0 - default,
* 1 - overboost, * 1 - overboost,
* 2 - silent * 2 - silent
What: /sys/devices/platform/<platform>/dgpu_disable
Date: Aug 2022
KernelVersion: 5.17
Contact: "Luke Jones" <luke@ljones.dev>
Description:
Disable discrete GPU:
* 0 - Enable dGPU,
* 1 - Disable dGPU

View File

@@ -31,18 +31,18 @@ see only some of them, depending on your kernel's configuration.
Table : Subdirectories in /proc/sys/net Table : Subdirectories in /proc/sys/net
========= =================== = ========== ================== ========= =================== = ========== ===================
Directory Content Directory Content Directory Content Directory Content
========= =================== = ========== ================== ========= =================== = ========== ===================
802 E802 protocol mptcp Multipath TCP 802 E802 protocol mptcp Multipath TCP
appletalk Appletalk protocol netfilter Network Filter appletalk Appletalk protocol netfilter Network Filter
ax25 AX25 netrom NET/ROM ax25 AX25 netrom NET/ROM
bridge Bridging rose X.25 PLP layer bridge Bridging rose X.25 PLP layer
core General parameter tipc TIPC core General parameter tipc TIPC
ethernet Ethernet protocol unix Unix domain sockets ethernet Ethernet protocol unix Unix domain sockets
ipv4 IP version 4 x25 X.25 protocol ipv4 IP version 4 x25 X.25 protocol
ipv6 IP version 6 ipv6 IP version 6
========= =================== = ========== ================== ========= =================== = ========== ===================
1. /proc/sys/net/core - Network core options 1. /proc/sys/net/core - Network core options
============================================ ============================================

View File

@@ -70,6 +70,9 @@ Instead, the 2-factor form of the allocator should be used::
foo = kmalloc_array(count, size, GFP_KERNEL); foo = kmalloc_array(count, size, GFP_KERNEL);
Specifically, kmalloc() can be replaced with kmalloc_array(), and
kzalloc() can be replaced with kcalloc().
If no 2-factor form is available, the saturate-on-overflow helpers should If no 2-factor form is available, the saturate-on-overflow helpers should
be used:: be used::
@@ -90,9 +93,20 @@ Instead, use the helper::
array usage and switch to a `flexible array member array usage and switch to a `flexible array member
<#zero-length-and-one-element-arrays>`_ instead. <#zero-length-and-one-element-arrays>`_ instead.
See array_size(), array3_size(), and struct_size(), For other calculations, please compose the use of the size_mul(),
for more details as well as the related check_add_overflow() and size_add(), and size_sub() helpers. For example, in the case of::
check_mul_overflow() family of functions.
foo = krealloc(current_size + chunk_size * (count - 3), GFP_KERNEL);
Instead, use the helpers::
foo = krealloc(size_add(current_size,
size_mul(chunk_size,
size_sub(count, 3))), GFP_KERNEL);
For more details, also see array3_size() and flex_array_size(),
as well as the related check_mul_overflow(), check_add_overflow(),
check_sub_overflow(), and check_shl_overflow() family of functions.
simple_strtol(), simple_strtoll(), simple_strtoul(), simple_strtoull() simple_strtol(), simple_strtoll(), simple_strtoul(), simple_strtoull()
---------------------------------------------------------------------- ----------------------------------------------------------------------

View File

@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
VERSION = 5 VERSION = 5
PATCHLEVEL = 10 PATCHLEVEL = 10
SUBLEVEL = 198 SUBLEVEL = 205
EXTRAVERSION = EXTRAVERSION =
NAME = Dare mighty things NAME = Dare mighty things

View File

@@ -437,7 +437,7 @@
}; };
gpt1: timer@302d0000 { gpt1: timer@302d0000 {
compatible = "fsl,imx7d-gpt", "fsl,imx6sx-gpt"; compatible = "fsl,imx7d-gpt", "fsl,imx6dl-gpt";
reg = <0x302d0000 0x10000>; reg = <0x302d0000 0x10000>;
interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_GPT1_ROOT_CLK>, clocks = <&clks IMX7D_GPT1_ROOT_CLK>,
@@ -446,7 +446,7 @@
}; };
gpt2: timer@302e0000 { gpt2: timer@302e0000 {
compatible = "fsl,imx7d-gpt", "fsl,imx6sx-gpt"; compatible = "fsl,imx7d-gpt", "fsl,imx6dl-gpt";
reg = <0x302e0000 0x10000>; reg = <0x302e0000 0x10000>;
interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_GPT2_ROOT_CLK>, clocks = <&clks IMX7D_GPT2_ROOT_CLK>,
@@ -456,7 +456,7 @@
}; };
gpt3: timer@302f0000 { gpt3: timer@302f0000 {
compatible = "fsl,imx7d-gpt", "fsl,imx6sx-gpt"; compatible = "fsl,imx7d-gpt", "fsl,imx6dl-gpt";
reg = <0x302f0000 0x10000>; reg = <0x302f0000 0x10000>;
interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_GPT3_ROOT_CLK>, clocks = <&clks IMX7D_GPT3_ROOT_CLK>,
@@ -466,7 +466,7 @@
}; };
gpt4: timer@30300000 { gpt4: timer@30300000 {
compatible = "fsl,imx7d-gpt", "fsl,imx6sx-gpt"; compatible = "fsl,imx7d-gpt", "fsl,imx6dl-gpt";
reg = <0x30300000 0x10000>; reg = <0x30300000 0x10000>;
interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_GPT4_ROOT_CLK>, clocks = <&clks IMX7D_GPT4_ROOT_CLK>,

View File

@@ -765,6 +765,7 @@
&uart3 { &uart3 {
interrupts-extended = <&wakeupgen GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH interrupts-extended = <&wakeupgen GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH
&omap4_pmx_core 0x17c>; &omap4_pmx_core 0x17c>;
overrun-throttle-ms = <500>;
}; };
&uart4 { &uart4 {

View File

@@ -82,14 +82,12 @@
}; };
}; };
regulators { vsdcc_fixed: vsdcc-regulator {
vsdcc_fixed: vsdcc-regulator { compatible = "regulator-fixed";
compatible = "regulator-fixed"; regulator-name = "SDCC Power";
regulator-name = "SDCC Power"; regulator-min-microvolt = <2700000>;
regulator-min-microvolt = <2700000>; regulator-max-microvolt = <2700000>;
regulator-max-microvolt = <2700000>; regulator-always-on;
regulator-always-on;
};
}; };
soc: soc { soc: soc {

View File

@@ -10,10 +10,6 @@
#include <linux/interrupt.h> #include <linux/interrupt.h>
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
#define __exception_irq_entry __irq_entry #define __exception_irq_entry __irq_entry
#else
#define __exception_irq_entry
#endif
#endif /* __ASM_ARM_EXCEPTION_H */ #endif /* __ASM_ARM_EXCEPTION_H */

View File

@@ -16,6 +16,7 @@
ENTRY(mmioset) ENTRY(mmioset)
ENTRY(memset) ENTRY(memset)
UNWIND( .fnstart ) UNWIND( .fnstart )
and r1, r1, #255 @ cast to unsigned char
ands r3, r0, #3 @ 1 unaligned? ands r3, r0, #3 @ 1 unaligned?
mov ip, r0 @ preserve r0 as return value mov ip, r0 @ preserve r0 as return value
bne 6f @ 1 bne 6f @ 1

View File

@@ -502,6 +502,10 @@ static int imx_mmdc_perf_init(struct platform_device *pdev, void __iomem *mmdc_b
name = devm_kasprintf(&pdev->dev, name = devm_kasprintf(&pdev->dev,
GFP_KERNEL, "mmdc%d", ret); GFP_KERNEL, "mmdc%d", ret);
if (!name) {
ret = -ENOMEM;
goto pmu_release_id;
}
pmu_mmdc->mmdc_ipg_clk = mmdc_ipg_clk; pmu_mmdc->mmdc_ipg_clk = mmdc_ipg_clk;
pmu_mmdc->devtype_data = (struct fsl_mmdc_devtype_data *)of_id->data; pmu_mmdc->devtype_data = (struct fsl_mmdc_devtype_data *)of_id->data;
@@ -524,9 +528,10 @@ static int imx_mmdc_perf_init(struct platform_device *pdev, void __iomem *mmdc_b
pmu_register_err: pmu_register_err:
pr_warn("MMDC Perf PMU failed (%d), disabled\n", ret); pr_warn("MMDC Perf PMU failed (%d), disabled\n", ret);
ida_simple_remove(&mmdc_ida, pmu_mmdc->id);
cpuhp_state_remove_instance_nocalls(cpuhp_mmdc_state, &pmu_mmdc->node); cpuhp_state_remove_instance_nocalls(cpuhp_mmdc_state, &pmu_mmdc->node);
hrtimer_cancel(&pmu_mmdc->hrtimer); hrtimer_cancel(&pmu_mmdc->hrtimer);
pmu_release_id:
ida_simple_remove(&mmdc_ida, pmu_mmdc->id);
pmu_free: pmu_free:
kfree(pmu_mmdc); kfree(pmu_mmdc);
return ret; return ret;

View File

@@ -362,7 +362,8 @@ static int __init xen_guest_init(void)
* for secondary CPUs as they are brought up. * for secondary CPUs as they are brought up.
* For uniformity we use VCPUOP_register_vcpu_info even on cpu0. * For uniformity we use VCPUOP_register_vcpu_info even on cpu0.
*/ */
xen_vcpu_info = alloc_percpu(struct vcpu_info); xen_vcpu_info = __alloc_percpu(sizeof(struct vcpu_info),
1 << fls(sizeof(struct vcpu_info) - 1));
if (xen_vcpu_info == NULL) if (xen_vcpu_info == NULL)
return -ENOMEM; return -ENOMEM;

View File

@@ -1065,6 +1065,8 @@ choice
config CPU_BIG_ENDIAN config CPU_BIG_ENDIAN
bool "Build big-endian kernel" bool "Build big-endian kernel"
depends on !LD_IS_LLD || LLD_VERSION >= 130000 depends on !LD_IS_LLD || LLD_VERSION >= 130000
# https://github.com/llvm/llvm-project/commit/1379b150991f70a5782e9a143c2ba5308da1161c
depends on AS_IS_GNU || AS_VERSION >= 150000
help help
Say Y if you plan on running a kernel with a big-endian userspace. Say Y if you plan on running a kernel with a big-endian userspace.

View File

@@ -69,7 +69,7 @@
}; };
}; };
memory { memory@40000000 {
reg = <0 0x40000000 0 0x40000000>; reg = <0 0x40000000 0 0x40000000>;
}; };

View File

@@ -55,7 +55,7 @@
}; };
}; };
memory { memory@40000000 {
reg = <0 0x40000000 0 0x20000000>; reg = <0 0x40000000 0 0x20000000>;
}; };

View File

@@ -43,7 +43,7 @@
id-gpio = <&pio 16 GPIO_ACTIVE_HIGH>; id-gpio = <&pio 16 GPIO_ACTIVE_HIGH>;
}; };
usb_p1_vbus: regulator@0 { usb_p1_vbus: regulator-usb-p1 {
compatible = "regulator-fixed"; compatible = "regulator-fixed";
regulator-name = "usb_vbus"; regulator-name = "usb_vbus";
regulator-min-microvolt = <5000000>; regulator-min-microvolt = <5000000>;
@@ -52,7 +52,7 @@
enable-active-high; enable-active-high;
}; };
usb_p0_vbus: regulator@1 { usb_p0_vbus: regulator-usb-p0 {
compatible = "regulator-fixed"; compatible = "regulator-fixed";
regulator-name = "vbus"; regulator-name = "vbus";
regulator-min-microvolt = <5000000>; regulator-min-microvolt = <5000000>;

View File

@@ -30,7 +30,7 @@
#address-cells = <2>; #address-cells = <2>;
#size-cells = <2>; #size-cells = <2>;
ranges; ranges;
scp_mem_reserved: scp_mem_region { scp_mem_reserved: memory@50000000 {
compatible = "shared-dma-pool"; compatible = "shared-dma-pool";
reg = <0 0x50000000 0 0x2900000>; reg = <0 0x50000000 0 0x2900000>;
no-map; no-map;

View File

@@ -95,7 +95,7 @@
#size-cells = <2>; #size-cells = <2>;
ranges; ranges;
scp_mem_reserved: scp_mem_region { scp_mem_reserved: memory@50000000 {
compatible = "shared-dma-pool"; compatible = "shared-dma-pool";
reg = <0 0x50000000 0 0x2900000>; reg = <0 0x50000000 0 0x2900000>;
no-map; no-map;

View File

@@ -129,12 +129,6 @@
}; };
}; };
tcsr_mutex: hwlock {
compatible = "qcom,tcsr-mutex";
syscon = <&tcsr_mutex_regs 0 0x80>;
#hwlock-cells = <1>;
};
pmuv8: pmu { pmuv8: pmu {
compatible = "arm,cortex-a53-pmu"; compatible = "arm,cortex-a53-pmu";
interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4) | interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4) |
@@ -175,7 +169,7 @@
smem { smem {
compatible = "qcom,smem"; compatible = "qcom,smem";
memory-region = <&smem_region>; memory-region = <&smem_region>;
hwlocks = <&tcsr_mutex 0>; hwlocks = <&tcsr_mutex 3>;
}; };
soc: soc { soc: soc {
@@ -242,9 +236,10 @@
#reset-cells = <1>; #reset-cells = <1>;
}; };
tcsr_mutex_regs: syscon@1905000 { tcsr_mutex: hwlock@1905000 {
compatible = "syscon"; compatible = "qcom,ipq6018-tcsr-mutex", "qcom,tcsr-mutex";
reg = <0x0 0x01905000 0x0 0x8000>; reg = <0x0 0x01905000 0x0 0x20000>;
#hwlock-cells = <1>;
}; };
tcsr_q6: syscon@1945000 { tcsr_q6: syscon@1945000 {

View File

@@ -1175,7 +1175,7 @@
#size-cells = <1>; #size-cells = <1>;
#iommu-cells = <1>; #iommu-cells = <1>;
compatible = "qcom,msm8916-iommu", "qcom,msm-iommu-v1"; compatible = "qcom,msm8916-iommu", "qcom,msm-iommu-v1";
ranges = <0 0x01e20000 0x40000>; ranges = <0 0x01e20000 0x20000>;
reg = <0x01ef0000 0x3000>; reg = <0x01ef0000 0x3000>;
clocks = <&gcc GCC_SMMU_CFG_CLK>, clocks = <&gcc GCC_SMMU_CFG_CLK>,
<&gcc GCC_APSS_TCU_CLK>; <&gcc GCC_APSS_TCU_CLK>;

View File

@@ -564,6 +564,8 @@
vdd-1.8-xo-supply = <&vreg_l7a_1p8>; vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
vdd-1.3-rfa-supply = <&vreg_l17a_1p3>; vdd-1.3-rfa-supply = <&vreg_l17a_1p3>;
vdd-3.3-ch0-supply = <&vreg_l25a_3p3>; vdd-3.3-ch0-supply = <&vreg_l25a_3p3>;
qcom,snoc-host-cap-8bit-quirk;
}; };
/* PINCTRL - additions to nodes defined in sdm845.dtsi */ /* PINCTRL - additions to nodes defined in sdm845.dtsi */

View File

@@ -1022,7 +1022,9 @@
power-domain@RK3399_PD_VDU { power-domain@RK3399_PD_VDU {
reg = <RK3399_PD_VDU>; reg = <RK3399_PD_VDU>;
clocks = <&cru ACLK_VDU>, clocks = <&cru ACLK_VDU>,
<&cru HCLK_VDU>; <&cru HCLK_VDU>,
<&cru SCLK_VDU_CA>,
<&cru SCLK_VDU_CORE>;
pm_qos = <&qos_video_m1_r>, pm_qos = <&qos_video_m1_r>,
<&qos_video_m1_w>; <&qos_video_m1_w>;
}; };
@@ -1276,7 +1278,7 @@
vdec: video-codec@ff660000 { vdec: video-codec@ff660000 {
compatible = "rockchip,rk3399-vdec"; compatible = "rockchip,rk3399-vdec";
reg = <0x0 0xff660000 0x0 0x400>; reg = <0x0 0xff660000 0x0 0x480>;
interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH 0>; interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH 0>;
clocks = <&cru ACLK_VDU>, <&cru HCLK_VDU>, clocks = <&cru ACLK_VDU>, <&cru HCLK_VDU>,
<&cru SCLK_VDU_CA>, <&cru SCLK_VDU_CORE>; <&cru SCLK_VDU_CA>, <&cru SCLK_VDU_CORE>;

View File

@@ -694,7 +694,6 @@ CONFIG_PANIC_TIMEOUT=-1
CONFIG_DETECT_HUNG_TASK=y CONFIG_DETECT_HUNG_TASK=y
CONFIG_WQ_WATCHDOG=y CONFIG_WQ_WATCHDOG=y
CONFIG_SCHEDSTATS=y CONFIG_SCHEDSTATS=y
# CONFIG_DEBUG_PREEMPT is not set
CONFIG_BUG_ON_DATA_CORRUPTION=y CONFIG_BUG_ON_DATA_CORRUPTION=y
CONFIG_TRACE_MMIO_ACCESS=y CONFIG_TRACE_MMIO_ACCESS=y
CONFIG_TRACEFS_DISABLE_AUTOMOUNT=y CONFIG_TRACEFS_DISABLE_AUTOMOUNT=y

View File

@@ -761,6 +761,12 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
if (pte_hw_dirty(pte)) if (pte_hw_dirty(pte))
pte = pte_mkdirty(pte); pte = pte_mkdirty(pte);
pte_val(pte) = (pte_val(pte) & ~mask) | (pgprot_val(newprot) & mask); pte_val(pte) = (pte_val(pte) & ~mask) | (pgprot_val(newprot) & mask);
/*
* If we end up clearing hw dirtiness for a sw-dirty PTE, set hardware
* dirtiness again.
*/
if (pte_sw_dirty(pte))
pte = pte_mkdirty(pte);
return pte; return pte;
} }

View File

@@ -468,6 +468,7 @@ config MACH_LOONGSON2EF
config MACH_LOONGSON64 config MACH_LOONGSON64
bool "Loongson 64-bit family of machines" bool "Loongson 64-bit family of machines"
select ARCH_DMA_DEFAULT_COHERENT
select ARCH_SPARSEMEM_ENABLE select ARCH_SPARSEMEM_ENABLE
select ARCH_MIGHT_HAVE_PC_PARPORT select ARCH_MIGHT_HAVE_PC_PARPORT
select ARCH_MIGHT_HAVE_PC_SERIO select ARCH_MIGHT_HAVE_PC_SERIO
@@ -1379,6 +1380,7 @@ config CPU_LOONGSON64
select CPU_SUPPORTS_MSA select CPU_SUPPORTS_MSA
select CPU_DIEI_BROKEN if !LOONGSON3_ENHANCEMENT select CPU_DIEI_BROKEN if !LOONGSON3_ENHANCEMENT
select CPU_MIPSR2_IRQ_VI select CPU_MIPSR2_IRQ_VI
select DMA_NONCOHERENT
select WEAK_ORDERING select WEAK_ORDERING
select WEAK_REORDERING_BEYOND_LLSC select WEAK_REORDERING_BEYOND_LLSC
select MIPS_ASID_BITS_VARIABLE select MIPS_ASID_BITS_VARIABLE

View File

@@ -117,7 +117,8 @@ struct irq_source_routing_table {
u64 pci_io_start_addr; u64 pci_io_start_addr;
u64 pci_io_end_addr; u64 pci_io_end_addr;
u64 pci_config_addr; u64 pci_config_addr;
u32 dma_mask_bits; u16 dma_mask_bits;
u16 dma_noncoherent;
} __packed; } __packed;
struct interface_info { struct interface_info {

View File

@@ -667,7 +667,7 @@ static int kvm_mips_map_page(struct kvm_vcpu *vcpu, unsigned long gpa,
gfn_t gfn = gpa >> PAGE_SHIFT; gfn_t gfn = gpa >> PAGE_SHIFT;
int srcu_idx, err; int srcu_idx, err;
kvm_pfn_t pfn; kvm_pfn_t pfn;
pte_t *ptep, entry, old_pte; pte_t *ptep, entry;
bool writeable; bool writeable;
unsigned long prot_bits; unsigned long prot_bits;
unsigned long mmu_seq; unsigned long mmu_seq;
@@ -739,7 +739,6 @@ retry:
entry = pfn_pte(pfn, __pgprot(prot_bits)); entry = pfn_pte(pfn, __pgprot(prot_bits));
/* Write the PTE */ /* Write the PTE */
old_pte = *ptep;
set_pte(ptep, entry); set_pte(ptep, entry);
err = 0; err = 0;

View File

@@ -13,6 +13,8 @@
* Copyright (C) 2009 Lemote Inc. * Copyright (C) 2009 Lemote Inc.
* Author: Wu Zhangjin, wuzhangjin@gmail.com * Author: Wu Zhangjin, wuzhangjin@gmail.com
*/ */
#include <linux/dma-map-ops.h>
#include <linux/export.h> #include <linux/export.h>
#include <linux/pci_ids.h> #include <linux/pci_ids.h>
#include <asm/bootinfo.h> #include <asm/bootinfo.h>
@@ -131,8 +133,14 @@ void __init prom_init_env(void)
loongson_sysconf.pci_io_base = eirq_source->pci_io_start_addr; loongson_sysconf.pci_io_base = eirq_source->pci_io_start_addr;
loongson_sysconf.dma_mask_bits = eirq_source->dma_mask_bits; loongson_sysconf.dma_mask_bits = eirq_source->dma_mask_bits;
if (loongson_sysconf.dma_mask_bits < 32 || if (loongson_sysconf.dma_mask_bits < 32 ||
loongson_sysconf.dma_mask_bits > 64) loongson_sysconf.dma_mask_bits > 64) {
loongson_sysconf.dma_mask_bits = 32; loongson_sysconf.dma_mask_bits = 32;
dma_default_coherent = true;
} else {
dma_default_coherent = !eirq_source->dma_noncoherent;
}
pr_info("Firmware: Coherent DMA: %s\n", dma_default_coherent ? "on" : "off");
loongson_sysconf.restart_addr = boot_p->reset_system.ResetWarm; loongson_sysconf.restart_addr = boot_p->reset_system.ResetWarm;
loongson_sysconf.poweroff_addr = boot_p->reset_system.Shutdown; loongson_sysconf.poweroff_addr = boot_p->reset_system.Shutdown;

View File

@@ -140,6 +140,11 @@ static __init void reserve_pio_range(void)
} }
} }
} }
/* Reserve vgabios if it comes from firmware */
if (loongson_sysconf.vgabios_addr)
memblock_reserve(virt_to_phys((void *)loongson_sysconf.vgabios_addr),
SZ_256K);
} }
void __init arch_init_irq(void) void __init arch_init_irq(void)

View File

@@ -75,7 +75,6 @@
/* We now return you to your regularly scheduled HPUX. */ /* We now return you to your regularly scheduled HPUX. */
#define ENOSYM 215 /* symbol does not exist in executable */
#define ENOTSOCK 216 /* Socket operation on non-socket */ #define ENOTSOCK 216 /* Socket operation on non-socket */
#define EDESTADDRREQ 217 /* Destination address required */ #define EDESTADDRREQ 217 /* Destination address required */
#define EMSGSIZE 218 /* Message too long */ #define EMSGSIZE 218 /* Message too long */
@@ -101,7 +100,6 @@
#define ETIMEDOUT 238 /* Connection timed out */ #define ETIMEDOUT 238 /* Connection timed out */
#define ECONNREFUSED 239 /* Connection refused */ #define ECONNREFUSED 239 /* Connection refused */
#define EREFUSED ECONNREFUSED /* for HP's NFS apparently */ #define EREFUSED ECONNREFUSED /* for HP's NFS apparently */
#define EREMOTERELEASE 240 /* Remote peer released connection */
#define EHOSTDOWN 241 /* Host is down */ #define EHOSTDOWN 241 /* Host is down */
#define EHOSTUNREACH 242 /* No route to host */ #define EHOSTUNREACH 242 /* No route to host */

View File

@@ -465,6 +465,7 @@ struct pdc_model { /* for PDC_MODEL */
unsigned long arch_rev; unsigned long arch_rev;
unsigned long pot_key; unsigned long pot_key;
unsigned long curr_key; unsigned long curr_key;
unsigned long width; /* default of PSW_W bit (1=enabled) */
}; };
struct pdc_cache_cf { /* for PDC_CACHE (I/D-caches) */ struct pdc_cache_cf { /* for PDC_CACHE (I/D-caches) */

View File

@@ -497,13 +497,13 @@
* to a CPU TLB 4k PFN (4k => 12 bits to shift) */ * to a CPU TLB 4k PFN (4k => 12 bits to shift) */
#define PAGE_ADD_SHIFT (PAGE_SHIFT-12) #define PAGE_ADD_SHIFT (PAGE_SHIFT-12)
#define PAGE_ADD_HUGE_SHIFT (REAL_HPAGE_SHIFT-12) #define PAGE_ADD_HUGE_SHIFT (REAL_HPAGE_SHIFT-12)
#define PFN_START_BIT (63-ASM_PFN_PTE_SHIFT+(63-58)-PAGE_ADD_SHIFT)
/* Drop prot bits and convert to page addr for iitlbt and idtlbt */ /* Drop prot bits and convert to page addr for iitlbt and idtlbt */
.macro convert_for_tlb_insert20 pte,tmp .macro convert_for_tlb_insert20 pte,tmp
#ifdef CONFIG_HUGETLB_PAGE #ifdef CONFIG_HUGETLB_PAGE
copy \pte,\tmp copy \pte,\tmp
extrd,u \tmp,(63-ASM_PFN_PTE_SHIFT)+(63-58)+PAGE_ADD_SHIFT,\ extrd,u \tmp,PFN_START_BIT,PFN_START_BIT+1,\pte
64-PAGE_SHIFT-PAGE_ADD_SHIFT,\pte
depdi _PAGE_SIZE_ENCODING_DEFAULT,63,\ depdi _PAGE_SIZE_ENCODING_DEFAULT,63,\
(63-58)+PAGE_ADD_SHIFT,\pte (63-58)+PAGE_ADD_SHIFT,\pte
@@ -511,8 +511,7 @@
depdi _HUGE_PAGE_SIZE_ENCODING_DEFAULT,63,\ depdi _HUGE_PAGE_SIZE_ENCODING_DEFAULT,63,\
(63-58)+PAGE_ADD_HUGE_SHIFT,\pte (63-58)+PAGE_ADD_HUGE_SHIFT,\pte
#else /* Huge pages disabled */ #else /* Huge pages disabled */
extrd,u \pte,(63-ASM_PFN_PTE_SHIFT)+(63-58)+PAGE_ADD_SHIFT,\ extrd,u \pte,PFN_START_BIT,PFN_START_BIT+1,\pte
64-PAGE_SHIFT-PAGE_ADD_SHIFT,\pte
depdi _PAGE_SIZE_ENCODING_DEFAULT,63,\ depdi _PAGE_SIZE_ENCODING_DEFAULT,63,\
(63-58)+PAGE_ADD_SHIFT,\pte (63-58)+PAGE_ADD_SHIFT,\pte
#endif #endif

View File

@@ -69,9 +69,8 @@ $bss_loop:
stw,ma %arg2,4(%r1) stw,ma %arg2,4(%r1)
stw,ma %arg3,4(%r1) stw,ma %arg3,4(%r1)
#if !defined(CONFIG_64BIT) && defined(CONFIG_PA20) #if defined(CONFIG_PA20)
/* This 32-bit kernel was compiled for PA2.0 CPUs. Check current CPU /* check for 64-bit capable CPU as required by current kernel */
* and halt kernel if we detect a PA1.x CPU. */
ldi 32,%r10 ldi 32,%r10
mtctl %r10,%cr11 mtctl %r10,%cr11
.level 2.0 .level 2.0

View File

@@ -69,9 +69,6 @@
#define _PTE_NONE_MASK 0 #define _PTE_NONE_MASK 0
/* Until my rework is finished, 40x still needs atomic PTE updates */
#define PTE_ATOMIC_UPDATES 1
#define _PAGE_BASE_NC (_PAGE_PRESENT | _PAGE_ACCESSED) #define _PAGE_BASE_NC (_PAGE_PRESENT | _PAGE_ACCESSED)
#define _PAGE_BASE (_PAGE_BASE_NC) #define _PAGE_BASE (_PAGE_BASE_NC)

View File

@@ -94,6 +94,13 @@ static inline pte_t pte_wrprotect(pte_t pte)
#define pte_wrprotect pte_wrprotect #define pte_wrprotect pte_wrprotect
static inline int pte_read(pte_t pte)
{
return (pte_val(pte) & _PAGE_RO) != _PAGE_NA;
}
#define pte_read pte_read
static inline int pte_write(pte_t pte) static inline int pte_write(pte_t pte)
{ {
return !(pte_val(pte) & _PAGE_RO); return !(pte_val(pte) & _PAGE_RO);

View File

@@ -216,7 +216,7 @@ static inline int __ptep_test_and_clear_young(struct mm_struct *mm,
{ {
unsigned long old; unsigned long old;
if (pte_young(*ptep)) if (!pte_young(*ptep))
return 0; return 0;
old = pte_update(mm, addr, ptep, _PAGE_ACCESSED, 0, 0); old = pte_update(mm, addr, ptep, _PAGE_ACCESSED, 0, 0);
return (old & _PAGE_ACCESSED) != 0; return (old & _PAGE_ACCESSED) != 0;

View File

@@ -45,7 +45,9 @@ static inline int pte_write(pte_t pte)
return pte_val(pte) & _PAGE_RW; return pte_val(pte) & _PAGE_RW;
} }
#endif #endif
#ifndef pte_read
static inline int pte_read(pte_t pte) { return 1; } static inline int pte_read(pte_t pte) { return 1; }
#endif
static inline int pte_dirty(pte_t pte) { return pte_val(pte) & _PAGE_DIRTY; } static inline int pte_dirty(pte_t pte) { return pte_val(pte) & _PAGE_DIRTY; }
static inline int pte_special(pte_t pte) { return pte_val(pte) & _PAGE_SPECIAL; } static inline int pte_special(pte_t pte) { return pte_val(pte) & _PAGE_SPECIAL; }
static inline int pte_none(pte_t pte) { return (pte_val(pte) & ~_PTE_NONE_MASK) == 0; } static inline int pte_none(pte_t pte) { return (pte_val(pte) & ~_PTE_NONE_MASK) == 0; }

View File

@@ -23,6 +23,15 @@
#include <asm/feature-fixups.h> #include <asm/feature-fixups.h>
#ifdef CONFIG_VSX #ifdef CONFIG_VSX
#define __REST_1FPVSR(n,c,base) \
BEGIN_FTR_SECTION \
b 2f; \
END_FTR_SECTION_IFSET(CPU_FTR_VSX); \
REST_FPR(n,base); \
b 3f; \
2: REST_VSR(n,c,base); \
3:
#define __REST_32FPVSRS(n,c,base) \ #define __REST_32FPVSRS(n,c,base) \
BEGIN_FTR_SECTION \ BEGIN_FTR_SECTION \
b 2f; \ b 2f; \
@@ -41,9 +50,11 @@ END_FTR_SECTION_IFSET(CPU_FTR_VSX); \
2: SAVE_32VSRS(n,c,base); \ 2: SAVE_32VSRS(n,c,base); \
3: 3:
#else #else
#define __REST_1FPVSR(n,b,base) REST_FPR(n, base)
#define __REST_32FPVSRS(n,b,base) REST_32FPRS(n, base) #define __REST_32FPVSRS(n,b,base) REST_32FPRS(n, base)
#define __SAVE_32FPVSRS(n,b,base) SAVE_32FPRS(n, base) #define __SAVE_32FPVSRS(n,b,base) SAVE_32FPRS(n, base)
#endif #endif
#define REST_1FPVSR(n,c,base) __REST_1FPVSR(n,__REG_##c,__REG_##base)
#define REST_32FPVSRS(n,c,base) __REST_32FPVSRS(n,__REG_##c,__REG_##base) #define REST_32FPVSRS(n,c,base) __REST_32FPVSRS(n,__REG_##c,__REG_##base)
#define SAVE_32FPVSRS(n,c,base) __SAVE_32FPVSRS(n,__REG_##c,__REG_##base) #define SAVE_32FPVSRS(n,c,base) __SAVE_32FPVSRS(n,__REG_##c,__REG_##base)
@@ -67,6 +78,7 @@ _GLOBAL(store_fp_state)
SAVE_32FPVSRS(0, R4, R3) SAVE_32FPVSRS(0, R4, R3)
mffs fr0 mffs fr0
stfd fr0,FPSTATE_FPSCR(r3) stfd fr0,FPSTATE_FPSCR(r3)
REST_1FPVSR(0, R4, R3)
blr blr
EXPORT_SYMBOL(store_fp_state) EXPORT_SYMBOL(store_fp_state)
@@ -132,4 +144,5 @@ _GLOBAL(save_fpu)
2: SAVE_32FPVSRS(0, R4, R6) 2: SAVE_32FPVSRS(0, R4, R6)
mffs fr0 mffs fr0
stfd fr0,FPSTATE_FPSCR(r6) stfd fr0,FPSTATE_FPSCR(r6)
REST_1FPVSR(0, R4, R6)
blr blr

View File

@@ -906,6 +906,8 @@ void __init setup_arch(char **cmdline_p)
/* Parse memory topology */ /* Parse memory topology */
mem_topology_setup(); mem_topology_setup();
/* Set max_mapnr before paging_init() */
set_max_mapnr(max_pfn);
/* /*
* Release secondary cpus out of their spinloops at 0x60 now that * Release secondary cpus out of their spinloops at 0x60 now that

View File

@@ -36,6 +36,9 @@ _GLOBAL(ftrace_regs_caller)
/* Save the original return address in A's stack frame */ /* Save the original return address in A's stack frame */
std r0,LRSAVE(r1) std r0,LRSAVE(r1)
/* Create a minimal stack frame for representing B */
stdu r1, -STACK_FRAME_MIN_SIZE(r1)
/* Create our stack frame + pt_regs */ /* Create our stack frame + pt_regs */
stdu r1,-SWITCH_FRAME_SIZE(r1) stdu r1,-SWITCH_FRAME_SIZE(r1)
@@ -52,7 +55,7 @@ _GLOBAL(ftrace_regs_caller)
SAVE_10GPRS(22, r1) SAVE_10GPRS(22, r1)
/* Save previous stack pointer (r1) */ /* Save previous stack pointer (r1) */
addi r8, r1, SWITCH_FRAME_SIZE addi r8, r1, SWITCH_FRAME_SIZE+STACK_FRAME_MIN_SIZE
std r8, GPR1(r1) std r8, GPR1(r1)
/* Load special regs for save below */ /* Load special regs for save below */
@@ -65,6 +68,8 @@ _GLOBAL(ftrace_regs_caller)
mflr r7 mflr r7
/* Save it as pt_regs->nip */ /* Save it as pt_regs->nip */
std r7, _NIP(r1) std r7, _NIP(r1)
/* Also save it in B's stackframe header for proper unwind */
std r7, LRSAVE+SWITCH_FRAME_SIZE(r1)
/* Save the read LR in pt_regs->link */ /* Save the read LR in pt_regs->link */
std r0, _LINK(r1) std r0, _LINK(r1)
@@ -121,7 +126,7 @@ ftrace_regs_call:
ld r2, 24(r1) ld r2, 24(r1)
/* Pop our stack frame */ /* Pop our stack frame */
addi r1, r1, SWITCH_FRAME_SIZE addi r1, r1, SWITCH_FRAME_SIZE+STACK_FRAME_MIN_SIZE
#ifdef CONFIG_LIVEPATCH #ifdef CONFIG_LIVEPATCH
/* Based on the cmpd above, if the NIP was altered handle livepatch */ /* Based on the cmpd above, if the NIP was altered handle livepatch */
@@ -145,7 +150,7 @@ ftrace_no_trace:
mflr r3 mflr r3
mtctr r3 mtctr r3
REST_GPR(3, r1) REST_GPR(3, r1)
addi r1, r1, SWITCH_FRAME_SIZE addi r1, r1, SWITCH_FRAME_SIZE+STACK_FRAME_MIN_SIZE
mtlr r0 mtlr r0
bctr bctr
@@ -153,6 +158,9 @@ _GLOBAL(ftrace_caller)
/* Save the original return address in A's stack frame */ /* Save the original return address in A's stack frame */
std r0, LRSAVE(r1) std r0, LRSAVE(r1)
/* Create a minimal stack frame for representing B */
stdu r1, -STACK_FRAME_MIN_SIZE(r1)
/* Create our stack frame + pt_regs */ /* Create our stack frame + pt_regs */
stdu r1, -SWITCH_FRAME_SIZE(r1) stdu r1, -SWITCH_FRAME_SIZE(r1)
@@ -166,6 +174,7 @@ _GLOBAL(ftrace_caller)
/* Get the _mcount() call site out of LR */ /* Get the _mcount() call site out of LR */
mflr r7 mflr r7
std r7, _NIP(r1) std r7, _NIP(r1)
std r7, LRSAVE+SWITCH_FRAME_SIZE(r1)
/* Save callee's TOC in the ABI compliant location */ /* Save callee's TOC in the ABI compliant location */
std r2, 24(r1) std r2, 24(r1)
@@ -200,7 +209,7 @@ ftrace_call:
ld r2, 24(r1) ld r2, 24(r1)
/* Pop our stack frame */ /* Pop our stack frame */
addi r1, r1, SWITCH_FRAME_SIZE addi r1, r1, SWITCH_FRAME_SIZE+STACK_FRAME_MIN_SIZE
/* Reload original LR */ /* Reload original LR */
ld r0, LRSAVE(r1) ld r0, LRSAVE(r1)

View File

@@ -32,6 +32,7 @@ _GLOBAL(store_vr_state)
mfvscr v0 mfvscr v0
li r4, VRSTATE_VSCR li r4, VRSTATE_VSCR
stvx v0, r4, r3 stvx v0, r4, r3
lvx v0, 0, r3
blr blr
EXPORT_SYMBOL(store_vr_state) EXPORT_SYMBOL(store_vr_state)
@@ -104,6 +105,7 @@ _GLOBAL(save_altivec)
mfvscr v0 mfvscr v0
li r4,VRSTATE_VSCR li r4,VRSTATE_VSCR
stvx v0,r4,r7 stvx v0,r4,r7
lvx v0,0,r7
blr blr
#ifdef CONFIG_VSX #ifdef CONFIG_VSX

View File

@@ -293,7 +293,6 @@ void __init mem_init(void)
#endif #endif
high_memory = (void *) __va(max_low_pfn * PAGE_SIZE); high_memory = (void *) __va(max_low_pfn * PAGE_SIZE);
set_max_mapnr(max_pfn);
kasan_late_init(); kasan_late_init();

View File

@@ -1289,8 +1289,7 @@ static void power_pmu_disable(struct pmu *pmu)
/* /*
* Disable instruction sampling if it was enabled * Disable instruction sampling if it was enabled
*/ */
if (cpuhw->mmcr.mmcra & MMCRA_SAMPLE_ENABLE) val &= ~MMCRA_SAMPLE_ENABLE;
val &= ~MMCRA_SAMPLE_ENABLE;
/* Disable BHRB via mmcra (BHRBRD) for p10 */ /* Disable BHRB via mmcra (BHRBRD) for p10 */
if (ppmu->flags & PPMU_ARCH_31) if (ppmu->flags & PPMU_ARCH_31)
@@ -1301,7 +1300,7 @@ static void power_pmu_disable(struct pmu *pmu)
* instruction sampling or BHRB. * instruction sampling or BHRB.
*/ */
if (val != mmcra) { if (val != mmcra) {
mtspr(SPRN_MMCRA, mmcra); mtspr(SPRN_MMCRA, val);
mb(); mb();
isync(); isync();
} }

View File

@@ -50,7 +50,7 @@ static int trace_imc_mem_size;
* core and trace-imc * core and trace-imc
*/ */
static struct imc_pmu_ref imc_global_refc = { static struct imc_pmu_ref imc_global_refc = {
.lock = __SPIN_LOCK_INITIALIZER(imc_global_refc.lock), .lock = __SPIN_LOCK_UNLOCKED(imc_global_refc.lock),
.id = 0, .id = 0,
.refc = 0, .refc = 0,
}; };

View File

@@ -523,8 +523,10 @@ static ssize_t vcpudispatch_stats_write(struct file *file, const char __user *p,
if (cmd) { if (cmd) {
rc = init_cpu_associativity(); rc = init_cpu_associativity();
if (rc) if (rc) {
destroy_cpu_associativity();
goto out; goto out;
}
for_each_possible_cpu(cpu) { for_each_possible_cpu(cpu) {
disp = per_cpu_ptr(&vcpu_disp_data, cpu); disp = per_cpu_ptr(&vcpu_disp_data, cpu);

View File

@@ -779,7 +779,7 @@ int xive_native_get_queue_info(u32 vp_id, u32 prio,
if (out_qpage) if (out_qpage)
*out_qpage = be64_to_cpu(qpage); *out_qpage = be64_to_cpu(qpage);
if (out_qsize) if (out_qsize)
*out_qsize = be32_to_cpu(qsize); *out_qsize = be64_to_cpu(qsize);
if (out_qeoi_page) if (out_qeoi_page)
*out_qeoi_page = be64_to_cpu(qeoi_page); *out_qeoi_page = be64_to_cpu(qeoi_page);
if (out_escalate_irq) if (out_escalate_irq)

View File

@@ -344,16 +344,14 @@ int handle_misaligned_store(struct pt_regs *regs)
} else if ((insn & INSN_MASK_C_SD) == INSN_MATCH_C_SD) { } else if ((insn & INSN_MASK_C_SD) == INSN_MATCH_C_SD) {
len = 8; len = 8;
val.data_ulong = GET_RS2S(insn, regs); val.data_ulong = GET_RS2S(insn, regs);
} else if ((insn & INSN_MASK_C_SDSP) == INSN_MATCH_C_SDSP && } else if ((insn & INSN_MASK_C_SDSP) == INSN_MATCH_C_SDSP) {
((insn >> SH_RD) & 0x1f)) {
len = 8; len = 8;
val.data_ulong = GET_RS2C(insn, regs); val.data_ulong = GET_RS2C(insn, regs);
#endif #endif
} else if ((insn & INSN_MASK_C_SW) == INSN_MATCH_C_SW) { } else if ((insn & INSN_MASK_C_SW) == INSN_MATCH_C_SW) {
len = 4; len = 4;
val.data_ulong = GET_RS2S(insn, regs); val.data_ulong = GET_RS2S(insn, regs);
} else if ((insn & INSN_MASK_C_SWSP) == INSN_MATCH_C_SWSP && } else if ((insn & INSN_MASK_C_SWSP) == INSN_MATCH_C_SWSP) {
((insn >> SH_RD) & 0x1f)) {
len = 4; len = 4;
val.data_ulong = GET_RS2C(insn, regs); val.data_ulong = GET_RS2C(insn, regs);
} else { } else {

View File

@@ -201,7 +201,7 @@ static void __build_epilogue(bool is_tail_call, struct rv_jit_context *ctx)
emit_addi(RV_REG_SP, RV_REG_SP, stack_adjust, ctx); emit_addi(RV_REG_SP, RV_REG_SP, stack_adjust, ctx);
/* Set return value. */ /* Set return value. */
if (!is_tail_call) if (!is_tail_call)
emit_mv(RV_REG_A0, RV_REG_A5, ctx); emit_addiw(RV_REG_A0, RV_REG_A5, 0, ctx);
emit_jalr(RV_REG_ZERO, is_tail_call ? RV_REG_T3 : RV_REG_RA, emit_jalr(RV_REG_ZERO, is_tail_call ? RV_REG_T3 : RV_REG_RA,
is_tail_call ? 4 : 0, /* skip TCC init */ is_tail_call ? 4 : 0, /* skip TCC init */
ctx); ctx);
@@ -394,12 +394,12 @@ static void emit_sext_32_rd(u8 *rd, struct rv_jit_context *ctx)
*rd = RV_REG_T2; *rd = RV_REG_T2;
} }
static int emit_jump_and_link(u8 rd, s64 rvoff, bool force_jalr, static int emit_jump_and_link(u8 rd, s64 rvoff, bool fixed_addr,
struct rv_jit_context *ctx) struct rv_jit_context *ctx)
{ {
s64 upper, lower; s64 upper, lower;
if (rvoff && is_21b_int(rvoff) && !force_jalr) { if (rvoff && fixed_addr && is_21b_int(rvoff)) {
emit(rv_jal(rd, rvoff >> 1), ctx); emit(rv_jal(rd, rvoff >> 1), ctx);
return 0; return 0;
} else if (in_auipc_jalr_range(rvoff)) { } else if (in_auipc_jalr_range(rvoff)) {
@@ -420,24 +420,17 @@ static bool is_signed_bpf_cond(u8 cond)
cond == BPF_JSGE || cond == BPF_JSLE; cond == BPF_JSGE || cond == BPF_JSLE;
} }
static int emit_call(bool fixed, u64 addr, struct rv_jit_context *ctx) static int emit_call(u64 addr, bool fixed_addr, struct rv_jit_context *ctx)
{ {
s64 off = 0; s64 off = 0;
u64 ip; u64 ip;
u8 rd;
int ret;
if (addr && ctx->insns) { if (addr && ctx->insns) {
ip = (u64)(long)(ctx->insns + ctx->ninsns); ip = (u64)(long)(ctx->insns + ctx->ninsns);
off = addr - ip; off = addr - ip;
} }
ret = emit_jump_and_link(RV_REG_RA, off, !fixed, ctx); return emit_jump_and_link(RV_REG_RA, off, fixed_addr, ctx);
if (ret)
return ret;
rd = bpf_to_rv_reg(BPF_REG_0, ctx);
emit_mv(rd, RV_REG_A0, ctx);
return 0;
} }
int bpf_jit_emit_insn(const struct bpf_insn *insn, struct rv_jit_context *ctx, int bpf_jit_emit_insn(const struct bpf_insn *insn, struct rv_jit_context *ctx,
@@ -731,7 +724,7 @@ out_be:
/* JUMP off */ /* JUMP off */
case BPF_JMP | BPF_JA: case BPF_JMP | BPF_JA:
rvoff = rv_offset(i, off, ctx); rvoff = rv_offset(i, off, ctx);
ret = emit_jump_and_link(RV_REG_ZERO, rvoff, false, ctx); ret = emit_jump_and_link(RV_REG_ZERO, rvoff, true, ctx);
if (ret) if (ret)
return ret; return ret;
break; break;
@@ -850,17 +843,21 @@ out_be:
/* function call */ /* function call */
case BPF_JMP | BPF_CALL: case BPF_JMP | BPF_CALL:
{ {
bool fixed; bool fixed_addr;
u64 addr; u64 addr;
mark_call(ctx); mark_call(ctx);
ret = bpf_jit_get_func_addr(ctx->prog, insn, extra_pass, &addr, ret = bpf_jit_get_func_addr(ctx->prog, insn, extra_pass,
&fixed); &addr, &fixed_addr);
if (ret < 0) if (ret < 0)
return ret; return ret;
ret = emit_call(fixed, addr, ctx);
ret = emit_call(addr, fixed_addr, ctx);
if (ret) if (ret)
return ret; return ret;
if (insn->src_reg != BPF_PSEUDO_CALL)
emit_mv(bpf_to_rv_reg(BPF_REG_0, ctx), RV_REG_A0, ctx);
break; break;
} }
/* tail call */ /* tail call */
@@ -875,7 +872,7 @@ out_be:
break; break;
rvoff = epilogue_offset(ctx); rvoff = epilogue_offset(ctx);
ret = emit_jump_and_link(RV_REG_ZERO, rvoff, false, ctx); ret = emit_jump_and_link(RV_REG_ZERO, rvoff, true, ctx);
if (ret) if (ret)
return ret; return ret;
break; break;

View File

@@ -112,7 +112,7 @@ static void mark_kernel_pmd(pud_t *pud, unsigned long addr, unsigned long end)
next = pmd_addr_end(addr, end); next = pmd_addr_end(addr, end);
if (pmd_none(*pmd) || pmd_large(*pmd)) if (pmd_none(*pmd) || pmd_large(*pmd))
continue; continue;
page = virt_to_page(pmd_val(*pmd)); page = phys_to_page(pmd_val(*pmd));
set_bit(PG_arch_1, &page->flags); set_bit(PG_arch_1, &page->flags);
} while (pmd++, addr = next, addr != end); } while (pmd++, addr = next, addr != end);
} }
@@ -130,8 +130,8 @@ static void mark_kernel_pud(p4d_t *p4d, unsigned long addr, unsigned long end)
if (pud_none(*pud) || pud_large(*pud)) if (pud_none(*pud) || pud_large(*pud))
continue; continue;
if (!pud_folded(*pud)) { if (!pud_folded(*pud)) {
page = virt_to_page(pud_val(*pud)); page = phys_to_page(pud_val(*pud));
for (i = 0; i < 3; i++) for (i = 0; i < 4; i++)
set_bit(PG_arch_1, &page[i].flags); set_bit(PG_arch_1, &page[i].flags);
} }
mark_kernel_pmd(pud, addr, next); mark_kernel_pmd(pud, addr, next);
@@ -151,8 +151,8 @@ static void mark_kernel_p4d(pgd_t *pgd, unsigned long addr, unsigned long end)
if (p4d_none(*p4d)) if (p4d_none(*p4d))
continue; continue;
if (!p4d_folded(*p4d)) { if (!p4d_folded(*p4d)) {
page = virt_to_page(p4d_val(*p4d)); page = phys_to_page(p4d_val(*p4d));
for (i = 0; i < 3; i++) for (i = 0; i < 4; i++)
set_bit(PG_arch_1, &page[i].flags); set_bit(PG_arch_1, &page[i].flags);
} }
mark_kernel_pud(p4d, addr, next); mark_kernel_pud(p4d, addr, next);
@@ -173,8 +173,8 @@ static void mark_kernel_pgd(void)
if (pgd_none(*pgd)) if (pgd_none(*pgd))
continue; continue;
if (!pgd_folded(*pgd)) { if (!pgd_folded(*pgd)) {
page = virt_to_page(pgd_val(*pgd)); page = phys_to_page(pgd_val(*pgd));
for (i = 0; i < 3; i++) for (i = 0; i < 4; i++)
set_bit(PG_arch_1, &page[i].flags); set_bit(PG_arch_1, &page[i].flags);
} }
mark_kernel_p4d(pgd, addr, next); mark_kernel_p4d(pgd, addr, next);

View File

@@ -717,7 +717,7 @@ void ptep_zap_unused(struct mm_struct *mm, unsigned long addr,
pte_clear(mm, addr, ptep); pte_clear(mm, addr, ptep);
} }
if (reset) if (reset)
pgste_val(pgste) &= ~_PGSTE_GPS_USAGE_MASK; pgste_val(pgste) &= ~(_PGSTE_GPS_USAGE_MASK | _PGSTE_GPS_NODAT);
pgste_set_unlock(ptep, pgste); pgste_set_unlock(ptep, pgste);
preempt_enable(); preempt_enable();
} }

View File

@@ -542,6 +542,17 @@ static void s390_dma_unmap_sg(struct device *dev, struct scatterlist *sg,
} }
} }
static unsigned long *bitmap_vzalloc(size_t bits, gfp_t flags)
{
size_t n = BITS_TO_LONGS(bits);
size_t bytes;
if (unlikely(check_mul_overflow(n, sizeof(unsigned long), &bytes)))
return NULL;
return vzalloc(bytes);
}
int zpci_dma_init_device(struct zpci_dev *zdev) int zpci_dma_init_device(struct zpci_dev *zdev)
{ {
int rc; int rc;
@@ -577,13 +588,13 @@ int zpci_dma_init_device(struct zpci_dev *zdev)
zdev->end_dma - zdev->start_dma + 1); zdev->end_dma - zdev->start_dma + 1);
zdev->end_dma = zdev->start_dma + zdev->iommu_size - 1; zdev->end_dma = zdev->start_dma + zdev->iommu_size - 1;
zdev->iommu_pages = zdev->iommu_size >> PAGE_SHIFT; zdev->iommu_pages = zdev->iommu_size >> PAGE_SHIFT;
zdev->iommu_bitmap = vzalloc(zdev->iommu_pages / 8); zdev->iommu_bitmap = bitmap_vzalloc(zdev->iommu_pages, GFP_KERNEL);
if (!zdev->iommu_bitmap) { if (!zdev->iommu_bitmap) {
rc = -ENOMEM; rc = -ENOMEM;
goto free_dma_table; goto free_dma_table;
} }
if (!s390_iommu_strict) { if (!s390_iommu_strict) {
zdev->lazy_bitmap = vzalloc(zdev->iommu_pages / 8); zdev->lazy_bitmap = bitmap_vzalloc(zdev->iommu_pages, GFP_KERNEL);
if (!zdev->lazy_bitmap) { if (!zdev->lazy_bitmap) {
rc = -ENOMEM; rc = -ENOMEM;
goto free_bitmap; goto free_bitmap;

View File

@@ -25,6 +25,17 @@ config STACK_DEBUG
every function call and will therefore incur a major every function call and will therefore incur a major
performance hit. Most users should say N. performance hit. Most users should say N.
config EARLY_PRINTK
bool "Early printk"
depends on SH_STANDARD_BIOS
help
Say Y here to redirect kernel printk messages to the serial port
used by the SH-IPL bootloader, starting very early in the boot
process and ending when the kernel's serial console is initialised.
This option is only useful while porting the kernel to a new machine,
when the kernel may crash or hang before the serial console is
initialised. If unsure, say N.
config 4KSTACKS config 4KSTACKS
bool "Use 4Kb for kernel stacks instead of 8Kb" bool "Use 4Kb for kernel stacks instead of 8Kb"
depends on DEBUG_KERNEL && (MMU || BROKEN) && !PAGE_SIZE_64KB depends on DEBUG_KERNEL && (MMU || BROKEN) && !PAGE_SIZE_64KB

View File

@@ -463,5 +463,5 @@ ccslow: cmp %g1, 0
* we only bother with faults on loads... */ * we only bother with faults on loads... */
cc_fault: cc_fault:
ret retl
clr %o0 clr %o0

View File

@@ -1360,20 +1360,10 @@ static void pt_addr_filters_fini(struct perf_event *event)
} }
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
static u64 canonical_address(u64 vaddr, u8 vaddr_bits)
{
return ((s64)vaddr << (64 - vaddr_bits)) >> (64 - vaddr_bits);
}
static u64 is_canonical_address(u64 vaddr, u8 vaddr_bits)
{
return canonical_address(vaddr, vaddr_bits) == vaddr;
}
/* Clamp to a canonical address greater-than-or-equal-to the address given */ /* Clamp to a canonical address greater-than-or-equal-to the address given */
static u64 clamp_to_ge_canonical_addr(u64 vaddr, u8 vaddr_bits) static u64 clamp_to_ge_canonical_addr(u64 vaddr, u8 vaddr_bits)
{ {
return is_canonical_address(vaddr, vaddr_bits) ? return __is_canonical_address(vaddr, vaddr_bits) ?
vaddr : vaddr :
-BIT_ULL(vaddr_bits - 1); -BIT_ULL(vaddr_bits - 1);
} }
@@ -1381,7 +1371,7 @@ static u64 clamp_to_ge_canonical_addr(u64 vaddr, u8 vaddr_bits)
/* Clamp to a canonical address less-than-or-equal-to the address given */ /* Clamp to a canonical address less-than-or-equal-to the address given */
static u64 clamp_to_le_canonical_addr(u64 vaddr, u8 vaddr_bits) static u64 clamp_to_le_canonical_addr(u64 vaddr, u8 vaddr_bits)
{ {
return is_canonical_address(vaddr, vaddr_bits) ? return __is_canonical_address(vaddr, vaddr_bits) ?
vaddr : vaddr :
BIT_ULL(vaddr_bits - 1) - 1; BIT_ULL(vaddr_bits - 1) - 1;
} }

View File

@@ -67,6 +67,8 @@ struct legacy_pic {
void (*make_irq)(unsigned int irq); void (*make_irq)(unsigned int irq);
}; };
void legacy_pic_pcat_compat(void);
extern struct legacy_pic *legacy_pic; extern struct legacy_pic *legacy_pic;
extern struct legacy_pic null_legacy_pic; extern struct legacy_pic null_legacy_pic;

View File

@@ -505,6 +505,7 @@
#define MSR_AMD64_CPUID_FN_1 0xc0011004 #define MSR_AMD64_CPUID_FN_1 0xc0011004
#define MSR_AMD64_LS_CFG 0xc0011020 #define MSR_AMD64_LS_CFG 0xc0011020
#define MSR_AMD64_DC_CFG 0xc0011022 #define MSR_AMD64_DC_CFG 0xc0011022
#define MSR_AMD64_TW_CFG 0xc0011023
#define MSR_AMD64_DE_CFG 0xc0011029 #define MSR_AMD64_DE_CFG 0xc0011029
#define MSR_AMD64_DE_CFG_LFENCE_SERIALIZE_BIT 1 #define MSR_AMD64_DE_CFG_LFENCE_SERIALIZE_BIT 1
@@ -541,12 +542,17 @@
#define MSR_AMD64_VIRT_SPEC_CTRL 0xc001011f #define MSR_AMD64_VIRT_SPEC_CTRL 0xc001011f
/* Fam 17h MSRs */ /* Zen4 */
#define MSR_F17H_IRPERF 0xc00000e9 #define MSR_ZEN4_BP_CFG 0xc001102e
#define MSR_ZEN4_BP_CFG_SHARED_BTB_FIX_BIT 5
/* Zen 2 */
#define MSR_ZEN2_SPECTRAL_CHICKEN 0xc00110e3 #define MSR_ZEN2_SPECTRAL_CHICKEN 0xc00110e3
#define MSR_ZEN2_SPECTRAL_CHICKEN_BIT BIT_ULL(1) #define MSR_ZEN2_SPECTRAL_CHICKEN_BIT BIT_ULL(1)
/* Fam 17h MSRs */
#define MSR_F17H_IRPERF 0xc00000e9
/* Fam 16h MSRs */ /* Fam 16h MSRs */
#define MSR_F16H_L2I_PERF_CTL 0xc0010230 #define MSR_F16H_L2I_PERF_CTL 0xc0010230
#define MSR_F16H_L2I_PERF_CTR 0xc0010231 #define MSR_F16H_L2I_PERF_CTR 0xc0010231

View File

@@ -12,13 +12,6 @@
#define NR_NODE_MEMBLKS (MAX_NUMNODES*2) #define NR_NODE_MEMBLKS (MAX_NUMNODES*2)
/*
* Too small node sizes may confuse the VM badly. Usually they
* result from BIOS bugs. So dont recognize nodes as standalone
* NUMA entities that have less than this amount of RAM listed:
*/
#define NODE_MIN_SIZE (4*1024*1024)
extern int numa_off; extern int numa_off;
/* /*

View File

@@ -71,6 +71,16 @@ static inline void copy_user_page(void *to, void *from, unsigned long vaddr,
extern bool __virt_addr_valid(unsigned long kaddr); extern bool __virt_addr_valid(unsigned long kaddr);
#define virt_addr_valid(kaddr) __virt_addr_valid((unsigned long) (kaddr)) #define virt_addr_valid(kaddr) __virt_addr_valid((unsigned long) (kaddr))
static __always_inline u64 __canonical_address(u64 vaddr, u8 vaddr_bits)
{
return ((s64)vaddr << (64 - vaddr_bits)) >> (64 - vaddr_bits);
}
static __always_inline u64 __is_canonical_address(u64 vaddr, u8 vaddr_bits)
{
return __canonical_address(vaddr, vaddr_bits) == vaddr;
}
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
#include <asm-generic/memory_model.h> #include <asm-generic/memory_model.h>

View File

@@ -108,27 +108,16 @@ extern unsigned long _brk_end;
void *extend_brk(size_t size, size_t align); void *extend_brk(size_t size, size_t align);
/* /*
* Reserve space in the brk section. The name must be unique within * Reserve space in the .brk section, which is a block of memory from which the
* the file, and somewhat descriptive. The size is in bytes. Must be * caller is allowed to allocate very early (before even memblock is available)
* used at file scope. * by calling extend_brk(). All allocated memory will be eventually converted
* to memblock. Any leftover unallocated memory will be freed.
* *
* (This uses a temp function to wrap the asm so we can pass it the * The size is in bytes.
* size parameter; otherwise we wouldn't be able to. We can't use a
* "section" attribute on a normal variable because it always ends up
* being @progbits, which ends up allocating space in the vmlinux
* executable.)
*/ */
#define RESERVE_BRK(name,sz) \ #define RESERVE_BRK(name, size) \
static void __section(".discard.text") __used notrace \ __section(".bss..brk") __aligned(1) __used \
__brk_reservation_fn_##name##__(void) { \ static char __brk_##name[size]
asm volatile ( \
".pushsection .brk_reservation,\"aw\",@nobits;" \
".brk." #name ":" \
" 1:.skip %c0;" \
" .size .brk." #name ", . - 1b;" \
" .popsection" \
: : "i" (sz)); \
}
/* Helper for reserving space for arrays of things */ /* Helper for reserving space for arrays of things */
#define RESERVE_BRK_ARRAY(type, name, entries) \ #define RESERVE_BRK_ARRAY(type, name, entries) \
@@ -146,12 +135,19 @@ asmlinkage void __init x86_64_start_reservations(char *real_mode_data);
#endif /* __i386__ */ #endif /* __i386__ */
#endif /* _SETUP */ #endif /* _SETUP */
#else
#define RESERVE_BRK(name,sz) \ #else /* __ASSEMBLY */
.pushsection .brk_reservation,"aw",@nobits; \
.brk.name: \ .macro __RESERVE_BRK name, size
1: .skip sz; \ .pushsection .bss..brk, "aw"
.size .brk.name,.-1b; \ SYM_DATA_START(__brk_\name)
.skip \size
SYM_DATA_END(__brk_\name)
.popsection .popsection
.endm
#define RESERVE_BRK(name, size) __RESERVE_BRK name, size
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
#endif /* _ASM_X86_SETUP_H */ #endif /* _ASM_X86_SETUP_H */

View File

@@ -446,7 +446,7 @@ copy_mc_to_kernel(void *to, const void *from, unsigned len);
#define copy_mc_to_kernel copy_mc_to_kernel #define copy_mc_to_kernel copy_mc_to_kernel
unsigned long __must_check unsigned long __must_check
copy_mc_to_user(void *to, const void *from, unsigned len); copy_mc_to_user(void __user *to, const void *from, unsigned len);
#endif #endif
/* /*

View File

@@ -141,6 +141,9 @@ static int __init acpi_parse_madt(struct acpi_table_header *table)
madt->address); madt->address);
} }
if (madt->flags & ACPI_MADT_PCAT_COMPAT)
legacy_pic_pcat_compat();
default_acpi_madt_oem_check(madt->header.oem_id, default_acpi_madt_oem_check(madt->header.oem_id,
madt->header.oem_table_id); madt->header.oem_table_id);

View File

@@ -424,6 +424,17 @@ void __init_or_module noinline apply_alternatives(struct alt_instr *start,
u8 insn_buff[MAX_PATCH_LEN]; u8 insn_buff[MAX_PATCH_LEN];
DPRINTK("alt table %px, -> %px", start, end); DPRINTK("alt table %px, -> %px", start, end);
/*
* In the case CONFIG_X86_5LEVEL=y, KASAN_SHADOW_START is defined using
* cpu_feature_enabled(X86_FEATURE_LA57) and is therefore patched here.
* During the process, KASAN becomes confused seeing partial LA57
* conversion and triggers a false-positive out-of-bound report.
*
* Disable KASAN until the patching is complete.
*/
kasan_disable_current();
/* /*
* The scan order should be from start to end. A later scanned * The scan order should be from start to end. A later scanned
* alternative code can overwrite previously scanned alternative code. * alternative code can overwrite previously scanned alternative code.
@@ -491,6 +502,8 @@ void __init_or_module noinline apply_alternatives(struct alt_instr *start,
next: next:
optimize_nops(instr, a->instrlen); optimize_nops(instr, a->instrlen);
} }
kasan_enable_current();
} }
#if defined(CONFIG_RETPOLINE) && defined(CONFIG_STACK_VALIDATION) #if defined(CONFIG_RETPOLINE) && defined(CONFIG_STACK_VALIDATION)

View File

@@ -81,6 +81,10 @@ static const int amd_div0[] =
AMD_LEGACY_ERRATUM(AMD_MODEL_RANGE(0x17, 0x00, 0x0, 0x2f, 0xf), AMD_LEGACY_ERRATUM(AMD_MODEL_RANGE(0x17, 0x00, 0x0, 0x2f, 0xf),
AMD_MODEL_RANGE(0x17, 0x50, 0x0, 0x5f, 0xf)); AMD_MODEL_RANGE(0x17, 0x50, 0x0, 0x5f, 0xf));
static const int amd_erratum_1485[] =
AMD_LEGACY_ERRATUM(AMD_MODEL_RANGE(0x19, 0x10, 0x0, 0x1f, 0xf),
AMD_MODEL_RANGE(0x19, 0x60, 0x0, 0xaf, 0xf));
static bool cpu_has_amd_erratum(struct cpuinfo_x86 *cpu, const int *erratum) static bool cpu_has_amd_erratum(struct cpuinfo_x86 *cpu, const int *erratum)
{ {
int osvw_id = *erratum++; int osvw_id = *erratum++;
@@ -1178,6 +1182,10 @@ static void init_amd(struct cpuinfo_x86 *c)
pr_notice_once("AMD Zen1 DIV0 bug detected. Disable SMT for full protection.\n"); pr_notice_once("AMD Zen1 DIV0 bug detected. Disable SMT for full protection.\n");
setup_force_cpu_bug(X86_BUG_DIV0); setup_force_cpu_bug(X86_BUG_DIV0);
} }
if (!cpu_has(c, X86_FEATURE_HYPERVISOR) &&
cpu_has_amd_erratum(c, amd_erratum_1485))
msr_set_bit(MSR_ZEN4_BP_CFG, MSR_ZEN4_BP_CFG_SHARED_BTB_FIX_BIT);
} }
#ifdef CONFIG_X86_32 #ifdef CONFIG_X86_32
@@ -1320,6 +1328,9 @@ static void zenbleed_check_cpu(void *unused)
void amd_check_microcode(void) void amd_check_microcode(void)
{ {
if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD)
return;
on_each_cpu(zenbleed_check_cpu, NULL, 1); on_each_cpu(zenbleed_check_cpu, NULL, 1);
} }

View File

@@ -2407,7 +2407,7 @@ static void __init srso_select_mitigation(void)
pr_info("%s%s\n", srso_strings[srso_mitigation], (has_microcode ? "" : ", no microcode")); pr_info("%s%s\n", srso_strings[srso_mitigation], (has_microcode ? "" : ", no microcode"));
pred_cmd: pred_cmd:
if ((boot_cpu_has(X86_FEATURE_SRSO_NO) || srso_cmd == SRSO_CMD_OFF) && if ((!boot_cpu_has_bug(X86_BUG_SRSO) || srso_cmd == SRSO_CMD_OFF) &&
boot_cpu_has(X86_FEATURE_SBPB)) boot_cpu_has(X86_FEATURE_SBPB))
x86_pred_cmd = PRED_CMD_SBPB; x86_pred_cmd = PRED_CMD_SBPB;
} }

View File

@@ -89,8 +89,12 @@ static void hygon_get_topology(struct cpuinfo_x86 *c)
if (!err) if (!err)
c->x86_coreid_bits = get_count_order(c->x86_max_cores); c->x86_coreid_bits = get_count_order(c->x86_max_cores);
/* Socket ID is ApicId[6] for these processors. */ /*
c->phys_proc_id = c->apicid >> APICID_SOCKET_ID_BIT; * Socket ID is ApicId[6] for the processors with model <= 0x3
* when running on host.
*/
if (!boot_cpu_has(X86_FEATURE_HYPERVISOR) && c->x86_model <= 0x3)
c->phys_proc_id = c->apicid >> APICID_SOCKET_ID_BIT;
cacheinfo_hygon_init_llc_id(c, cpu); cacheinfo_hygon_init_llc_id(c, cpu);
} else if (cpu_has(c, X86_FEATURE_NODEID_MSR)) { } else if (cpu_has(c, X86_FEATURE_NODEID_MSR)) {

View File

@@ -80,7 +80,7 @@ static struct desc_struct startup_gdt[GDT_ENTRIES] = {
* while the kernel still uses a direct mapping. * while the kernel still uses a direct mapping.
*/ */
static struct desc_ptr startup_gdt_descr = { static struct desc_ptr startup_gdt_descr = {
.size = sizeof(startup_gdt), .size = sizeof(startup_gdt)-1,
.address = 0, .address = 0,
}; };

View File

@@ -32,6 +32,7 @@
*/ */
static void init_8259A(int auto_eoi); static void init_8259A(int auto_eoi);
static bool pcat_compat __ro_after_init;
static int i8259A_auto_eoi; static int i8259A_auto_eoi;
DEFINE_RAW_SPINLOCK(i8259A_lock); DEFINE_RAW_SPINLOCK(i8259A_lock);
@@ -301,15 +302,32 @@ static void unmask_8259A(void)
static int probe_8259A(void) static int probe_8259A(void)
{ {
unsigned char new_val, probe_val = ~(1 << PIC_CASCADE_IR);
unsigned long flags; unsigned long flags;
unsigned char probe_val = ~(1 << PIC_CASCADE_IR);
unsigned char new_val;
/* /*
* Check to see if we have a PIC. * If MADT has the PCAT_COMPAT flag set, then do not bother probing
* Mask all except the cascade and read * for the PIC. Some BIOSes leave the PIC uninitialized and probing
* back the value we just wrote. If we don't * fails.
* have a PIC, we will read 0xff as opposed to the *
* value we wrote. * Right now this causes problems as quite some code depends on
* nr_legacy_irqs() > 0 or has_legacy_pic() == true. This is silly
* when the system has an IO/APIC because then PIC is not required
* at all, except for really old machines where the timer interrupt
* must be routed through the PIC. So just pretend that the PIC is
* there and let legacy_pic->init() initialize it for nothing.
*
* Alternatively this could just try to initialize the PIC and
* repeat the probe, but for cases where there is no PIC that's
* just pointless.
*/
if (pcat_compat)
return nr_legacy_irqs();
/*
* Check to see if we have a PIC. Mask all except the cascade and
* read back the value we just wrote. If we don't have a PIC, we
* will read 0xff as opposed to the value we wrote.
*/ */
raw_spin_lock_irqsave(&i8259A_lock, flags); raw_spin_lock_irqsave(&i8259A_lock, flags);
@@ -431,5 +449,9 @@ static int __init i8259A_init_ops(void)
return 0; return 0;
} }
device_initcall(i8259A_init_ops); device_initcall(i8259A_init_ops);
void __init legacy_pic_pcat_compat(void)
{
pcat_compat = true;
}

View File

@@ -64,11 +64,6 @@ RESERVE_BRK(dmi_alloc, 65536);
#endif #endif
/*
* Range of the BSS area. The size of the BSS area is determined
* at link time, with RESERVE_BRK*() facility reserving additional
* chunks.
*/
unsigned long _brk_start = (unsigned long)__brk_base; unsigned long _brk_start = (unsigned long)__brk_base;
unsigned long _brk_end = (unsigned long)__brk_base; unsigned long _brk_end = (unsigned long)__brk_base;

View File

@@ -997,6 +997,9 @@ static enum es_result vc_handle_mmio(struct ghcb *ghcb,
enum es_result ret; enum es_result ret;
long *reg_data; long *reg_data;
if (user_mode(ctxt->regs))
return ES_UNSUPPORTED;
switch (insn->opcode.bytes[0]) { switch (insn->opcode.bytes[0]) {
/* MMIO Write */ /* MMIO Write */
case 0x88: case 0x88:

View File

@@ -414,7 +414,7 @@ SECTIONS
.brk : AT(ADDR(.brk) - LOAD_OFFSET) { .brk : AT(ADDR(.brk) - LOAD_OFFSET) {
__brk_base = .; __brk_base = .;
. += 64 * 1024; /* 64k alignment slop space */ . += 64 * 1024; /* 64k alignment slop space */
*(.brk_reservation) /* areas brk users have reserved */ *(.bss..brk) /* areas brk users have reserved */
__brk_limit = .; __brk_limit = .;
} }

View File

@@ -688,7 +688,7 @@ static inline u8 ctxt_virt_addr_bits(struct x86_emulate_ctxt *ctxt)
static inline bool emul_is_noncanonical_address(u64 la, static inline bool emul_is_noncanonical_address(u64 la,
struct x86_emulate_ctxt *ctxt) struct x86_emulate_ctxt *ctxt)
{ {
return get_canonical(la, ctxt_virt_addr_bits(ctxt)) != la; return !__is_canonical_address(la, ctxt_virt_addr_bits(ctxt));
} }
/* /*
@@ -738,7 +738,7 @@ static __always_inline int __linearize(struct x86_emulate_ctxt *ctxt,
case X86EMUL_MODE_PROT64: case X86EMUL_MODE_PROT64:
*linear = la; *linear = la;
va_bits = ctxt_virt_addr_bits(ctxt); va_bits = ctxt_virt_addr_bits(ctxt);
if (get_canonical(la, va_bits) != la) if (!__is_canonical_address(la, va_bits))
goto bad; goto bad;
*max_size = min_t(u64, ~0u, (1ull << va_bits) - la); *max_size = min_t(u64, ~0u, (1ull << va_bits) - la);

View File

@@ -674,10 +674,12 @@ static int stimer_set_count(struct kvm_vcpu_hv_stimer *stimer, u64 count,
stimer_cleanup(stimer); stimer_cleanup(stimer);
stimer->count = count; stimer->count = count;
if (stimer->count == 0) if (!host) {
stimer->config.enable = 0; if (stimer->count == 0)
else if (stimer->config.auto_enable) stimer->config.enable = 0;
stimer->config.enable = 1; else if (stimer->config.auto_enable)
stimer->config.enable = 1;
}
if (stimer->config.enable) if (stimer->config.enable)
stimer_mark_pending(stimer, false); stimer_mark_pending(stimer, false);

View File

@@ -2397,13 +2397,17 @@ int kvm_apic_local_deliver(struct kvm_lapic *apic, int lvt_type)
{ {
u32 reg = kvm_lapic_get_reg(apic, lvt_type); u32 reg = kvm_lapic_get_reg(apic, lvt_type);
int vector, mode, trig_mode; int vector, mode, trig_mode;
int r;
if (kvm_apic_hw_enabled(apic) && !(reg & APIC_LVT_MASKED)) { if (kvm_apic_hw_enabled(apic) && !(reg & APIC_LVT_MASKED)) {
vector = reg & APIC_VECTOR_MASK; vector = reg & APIC_VECTOR_MASK;
mode = reg & APIC_MODE_MASK; mode = reg & APIC_MODE_MASK;
trig_mode = reg & APIC_LVT_LEVEL_TRIGGER; trig_mode = reg & APIC_LVT_LEVEL_TRIGGER;
return __apic_accept_irq(apic, mode, vector, 1, trig_mode,
NULL); r = __apic_accept_irq(apic, mode, vector, 1, trig_mode, NULL);
if (r && lvt_type == APIC_LVTPC)
kvm_lapic_set_reg(apic, APIC_LVTPC, reg | APIC_LVT_MASKED);
return r;
} }
return 0; return 0;
} }

View File

@@ -1640,7 +1640,7 @@ static int __kvm_set_msr(struct kvm_vcpu *vcpu, u32 index, u64 data,
* value, and that something deterministic happens if the guest * value, and that something deterministic happens if the guest
* invokes 64-bit SYSENTER. * invokes 64-bit SYSENTER.
*/ */
data = get_canonical(data, vcpu_virt_addr_bits(vcpu)); data = __canonical_address(data, vcpu_virt_addr_bits(vcpu));
} }
msr.data = data; msr.data = data;
@@ -3132,6 +3132,7 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
case MSR_AMD64_PATCH_LOADER: case MSR_AMD64_PATCH_LOADER:
case MSR_AMD64_BU_CFG2: case MSR_AMD64_BU_CFG2:
case MSR_AMD64_DC_CFG: case MSR_AMD64_DC_CFG:
case MSR_AMD64_TW_CFG:
case MSR_F15H_EX_CFG: case MSR_F15H_EX_CFG:
break; break;
@@ -3485,6 +3486,7 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
case MSR_AMD64_BU_CFG2: case MSR_AMD64_BU_CFG2:
case MSR_IA32_PERF_CTL: case MSR_IA32_PERF_CTL:
case MSR_AMD64_DC_CFG: case MSR_AMD64_DC_CFG:
case MSR_AMD64_TW_CFG:
case MSR_F15H_EX_CFG: case MSR_F15H_EX_CFG:
/* /*
* Intel Sandy Bridge CPUs must support the RAPL (running average power * Intel Sandy Bridge CPUs must support the RAPL (running average power

View File

@@ -156,14 +156,9 @@ static inline u8 vcpu_virt_addr_bits(struct kvm_vcpu *vcpu)
return kvm_read_cr4_bits(vcpu, X86_CR4_LA57) ? 57 : 48; return kvm_read_cr4_bits(vcpu, X86_CR4_LA57) ? 57 : 48;
} }
static inline u64 get_canonical(u64 la, u8 vaddr_bits)
{
return ((int64_t)la << (64 - vaddr_bits)) >> (64 - vaddr_bits);
}
static inline bool is_noncanonical_address(u64 la, struct kvm_vcpu *vcpu) static inline bool is_noncanonical_address(u64 la, struct kvm_vcpu *vcpu)
{ {
return get_canonical(la, vcpu_virt_addr_bits(vcpu)) != la; return !__is_canonical_address(la, vcpu_virt_addr_bits(vcpu));
} }
static inline void vcpu_cache_mmio_info(struct kvm_vcpu *vcpu, static inline void vcpu_cache_mmio_info(struct kvm_vcpu *vcpu,

View File

@@ -74,23 +74,23 @@ unsigned long __must_check copy_mc_to_kernel(void *dst, const void *src, unsigne
} }
EXPORT_SYMBOL_GPL(copy_mc_to_kernel); EXPORT_SYMBOL_GPL(copy_mc_to_kernel);
unsigned long __must_check copy_mc_to_user(void *dst, const void *src, unsigned len) unsigned long __must_check copy_mc_to_user(void __user *dst, const void *src, unsigned len)
{ {
unsigned long ret; unsigned long ret;
if (copy_mc_fragile_enabled) { if (copy_mc_fragile_enabled) {
__uaccess_begin(); __uaccess_begin();
ret = copy_mc_fragile(dst, src, len); ret = copy_mc_fragile((__force void *)dst, src, len);
__uaccess_end(); __uaccess_end();
return ret; return ret;
} }
if (static_cpu_has(X86_FEATURE_ERMS)) { if (static_cpu_has(X86_FEATURE_ERMS)) {
__uaccess_begin(); __uaccess_begin();
ret = copy_mc_enhanced_fast_string(dst, src, len); ret = copy_mc_enhanced_fast_string((__force void *)dst, src, len);
__uaccess_end(); __uaccess_end();
return ret; return ret;
} }
return copy_user_generic(dst, src, len); return copy_user_generic((__force void *)dst, src, len);
} }

View File

@@ -4,22 +4,26 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
static __always_inline u64 canonical_address(u64 vaddr, u8 vaddr_bits)
{
return ((s64)vaddr << (64 - vaddr_bits)) >> (64 - vaddr_bits);
}
bool copy_from_kernel_nofault_allowed(const void *unsafe_src, size_t size) bool copy_from_kernel_nofault_allowed(const void *unsafe_src, size_t size)
{ {
unsigned long vaddr = (unsigned long)unsafe_src; unsigned long vaddr = (unsigned long)unsafe_src;
/* /*
* Range covering the highest possible canonical userspace address * Do not allow userspace addresses. This disallows
* as well as non-canonical address range. For the canonical range * normal userspace and the userspace guard page:
* we also need to include the userspace guard page.
*/ */
return vaddr >= TASK_SIZE_MAX + PAGE_SIZE && if (vaddr < TASK_SIZE_MAX + PAGE_SIZE)
canonical_address(vaddr, boot_cpu_data.x86_virt_bits) == vaddr; return false;
/*
* Allow everything during early boot before 'x86_virt_bits'
* is initialized. Needed for instruction decoding in early
* exception handlers.
*/
if (!boot_cpu_data.x86_virt_bits)
return true;
return __is_canonical_address(vaddr, boot_cpu_data.x86_virt_bits);
} }
#else #else
bool copy_from_kernel_nofault_allowed(const void *unsafe_src, size_t size) bool copy_from_kernel_nofault_allowed(const void *unsafe_src, size_t size)

View File

@@ -602,13 +602,6 @@ static int __init numa_register_memblks(struct numa_meminfo *mi)
if (start >= end) if (start >= end)
continue; continue;
/*
* Don't confuse VM with a node that doesn't have the
* minimum amount of memory:
*/
if (end && (end - start) < NODE_MIN_SIZE)
continue;
alloc_node_data(nid); alloc_node_data(nid);
} }

View File

@@ -1409,6 +1409,7 @@ static void tg_conf_updated(struct throtl_grp *tg, bool global)
tg_bps_limit(tg, READ), tg_bps_limit(tg, WRITE), tg_bps_limit(tg, READ), tg_bps_limit(tg, WRITE),
tg_iops_limit(tg, READ), tg_iops_limit(tg, WRITE)); tg_iops_limit(tg, READ), tg_iops_limit(tg, WRITE));
rcu_read_lock();
/* /*
* Update has_rules[] flags for the updated tg's subtree. A tg is * Update has_rules[] flags for the updated tg's subtree. A tg is
* considered to have rules if either the tg itself or any of its * considered to have rules if either the tg itself or any of its
@@ -1436,6 +1437,7 @@ static void tg_conf_updated(struct throtl_grp *tg, bool global)
this_tg->latency_target = max(this_tg->latency_target, this_tg->latency_target = max(this_tg->latency_target,
parent_tg->latency_target); parent_tg->latency_target);
} }
rcu_read_unlock();
/* /*
* We're already holding queue_lock and know @tg is valid. Let's * We're already holding queue_lock and know @tg is valid. Let's

View File

@@ -117,6 +117,8 @@ static int pcrypt_aead_encrypt(struct aead_request *req)
err = padata_do_parallel(ictx->psenc, padata, &ctx->cb_cpu); err = padata_do_parallel(ictx->psenc, padata, &ctx->cb_cpu);
if (!err) if (!err)
return -EINPROGRESS; return -EINPROGRESS;
if (err == -EBUSY)
return -EAGAIN;
return err; return err;
} }
@@ -164,6 +166,8 @@ static int pcrypt_aead_decrypt(struct aead_request *req)
err = padata_do_parallel(ictx->psdec, padata, &ctx->cb_cpu); err = padata_do_parallel(ictx->psdec, padata, &ctx->cb_cpu);
if (!err) if (!err)
return -EINPROGRESS; return -EINPROGRESS;
if (err == -EBUSY)
return -EAGAIN;
return err; return err;
} }

View File

@@ -156,8 +156,8 @@ static int create_pnp_modalias(struct acpi_device *acpi_dev, char *modalias,
return 0; return 0;
len = snprintf(modalias, size, "acpi:"); len = snprintf(modalias, size, "acpi:");
if (len <= 0) if (len >= size)
return len; return -ENOMEM;
size -= len; size -= len;
@@ -210,8 +210,10 @@ static int create_of_modalias(struct acpi_device *acpi_dev, char *modalias,
len = snprintf(modalias, size, "of:N%sT", (char *)buf.pointer); len = snprintf(modalias, size, "of:N%sT", (char *)buf.pointer);
ACPI_FREE(buf.pointer); ACPI_FREE(buf.pointer);
if (len <= 0) if (len >= size)
return len; return -ENOMEM;
size -= len;
of_compatible = acpi_dev->data.of_compatible; of_compatible = acpi_dev->data.of_compatible;
if (of_compatible->type == ACPI_TYPE_PACKAGE) { if (of_compatible->type == ACPI_TYPE_PACKAGE) {

View File

@@ -52,6 +52,7 @@ int acpi_register_gsi(struct device *dev, u32 gsi, int trigger,
int polarity) int polarity)
{ {
struct irq_fwspec fwspec; struct irq_fwspec fwspec;
unsigned int irq;
if (WARN_ON(!acpi_gsi_domain_id)) { if (WARN_ON(!acpi_gsi_domain_id)) {
pr_warn("GSI: No registered irqchip, giving up\n"); pr_warn("GSI: No registered irqchip, giving up\n");
@@ -63,7 +64,11 @@ int acpi_register_gsi(struct device *dev, u32 gsi, int trigger,
fwspec.param[1] = acpi_dev_get_irq_type(trigger, polarity); fwspec.param[1] = acpi_dev_get_irq_type(trigger, polarity);
fwspec.param_count = 2; fwspec.param_count = 2;
return irq_create_fwspec_mapping(&fwspec); irq = irq_create_fwspec_mapping(&fwspec);
if (!irq)
return -EINVAL;
return irq;
} }
EXPORT_SYMBOL_GPL(acpi_register_gsi); EXPORT_SYMBOL_GPL(acpi_register_gsi);

View File

@@ -16,6 +16,7 @@
#include <linux/ioport.h> #include <linux/ioport.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/dmi.h>
#ifdef CONFIG_X86 #ifdef CONFIG_X86
#define valid_IRQ(i) (((i) != 0) && ((i) != 2)) #define valid_IRQ(i) (((i) != 0) && ((i) != 2))
@@ -380,21 +381,136 @@ unsigned int acpi_dev_get_irq_type(int triggering, int polarity)
} }
EXPORT_SYMBOL_GPL(acpi_dev_get_irq_type); EXPORT_SYMBOL_GPL(acpi_dev_get_irq_type);
static void acpi_dev_irqresource_disabled(struct resource *res, u32 gsi) static const struct dmi_system_id medion_laptop[] = {
{
.ident = "MEDION P15651",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "MEDION"),
DMI_MATCH(DMI_BOARD_NAME, "M15T"),
},
},
{ }
};
static const struct dmi_system_id asus_laptop[] = {
{
.ident = "Asus Vivobook K3402ZA",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
DMI_MATCH(DMI_BOARD_NAME, "K3402ZA"),
},
},
{
.ident = "Asus Vivobook K3502ZA",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
DMI_MATCH(DMI_BOARD_NAME, "K3502ZA"),
},
},
{
.ident = "Asus Vivobook S5402ZA",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
DMI_MATCH(DMI_BOARD_NAME, "S5402ZA"),
},
},
{
.ident = "Asus Vivobook S5602ZA",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
DMI_MATCH(DMI_BOARD_NAME, "S5602ZA"),
},
},
{
.ident = "Asus ExpertBook B1402CBA",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
DMI_MATCH(DMI_BOARD_NAME, "B1402CBA"),
},
},
{
.ident = "Asus ExpertBook B1502CBA",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
DMI_MATCH(DMI_BOARD_NAME, "B1502CBA"),
},
},
{
.ident = "Asus ExpertBook B2402CBA",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
DMI_MATCH(DMI_BOARD_NAME, "B2402CBA"),
},
},
{
/* TongFang GMxXGxx/TUXEDO Polaris 15 Gen5 AMD */
.matches = {
DMI_MATCH(DMI_BOARD_NAME, "GMxXGxx"),
},
},
{
/* Asus ExpertBook B1402CVA */
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
DMI_MATCH(DMI_BOARD_NAME, "B1402CVA"),
},
},
{
/* TongFang GM6XGxX/TUXEDO Stellaris 16 Gen5 AMD */
.matches = {
DMI_MATCH(DMI_BOARD_NAME, "GM6XGxX"),
},
},
{
.ident = "Asus ExpertBook B2502",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
DMI_MATCH(DMI_BOARD_NAME, "B2502CBA"),
},
},
{ }
};
struct irq_override_cmp {
const struct dmi_system_id *system;
unsigned char irq;
unsigned char triggering;
unsigned char polarity;
unsigned char shareable;
};
static const struct irq_override_cmp skip_override_table[] = {
{ medion_laptop, 1, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW, 0 },
{ asus_laptop, 1, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW, 0 },
};
static bool acpi_dev_irq_override(u32 gsi, u8 triggering, u8 polarity,
u8 shareable)
{ {
res->start = gsi; int i;
res->end = gsi;
res->flags = IORESOURCE_IRQ | IORESOURCE_DISABLED | IORESOURCE_UNSET; for (i = 0; i < ARRAY_SIZE(skip_override_table); i++) {
const struct irq_override_cmp *entry = &skip_override_table[i];
if (dmi_check_system(entry->system) &&
entry->irq == gsi &&
entry->triggering == triggering &&
entry->polarity == polarity &&
entry->shareable == shareable)
return false;
}
return true;
} }
static void acpi_dev_get_irqresource(struct resource *res, u32 gsi, static void acpi_dev_get_irqresource(struct resource *res, u32 gsi,
u8 triggering, u8 polarity, u8 shareable, u8 triggering, u8 polarity, u8 shareable,
bool legacy) bool check_override)
{ {
int irq, p, t; int irq, p, t;
if (!valid_IRQ(gsi)) { if (!valid_IRQ(gsi)) {
acpi_dev_irqresource_disabled(res, gsi); irqresource_disabled(res, gsi);
return; return;
} }
@@ -408,7 +524,9 @@ static void acpi_dev_get_irqresource(struct resource *res, u32 gsi,
* using extended IRQ descriptors we take the IRQ configuration * using extended IRQ descriptors we take the IRQ configuration
* from _CRS directly. * from _CRS directly.
*/ */
if (legacy && !acpi_get_override_irq(gsi, &t, &p)) { if (check_override &&
acpi_dev_irq_override(gsi, triggering, polarity, shareable) &&
!acpi_get_override_irq(gsi, &t, &p)) {
u8 trig = t ? ACPI_LEVEL_SENSITIVE : ACPI_EDGE_SENSITIVE; u8 trig = t ? ACPI_LEVEL_SENSITIVE : ACPI_EDGE_SENSITIVE;
u8 pol = p ? ACPI_ACTIVE_LOW : ACPI_ACTIVE_HIGH; u8 pol = p ? ACPI_ACTIVE_LOW : ACPI_ACTIVE_HIGH;
@@ -426,7 +544,7 @@ static void acpi_dev_get_irqresource(struct resource *res, u32 gsi,
res->start = irq; res->start = irq;
res->end = irq; res->end = irq;
} else { } else {
acpi_dev_irqresource_disabled(res, gsi); irqresource_disabled(res, gsi);
} }
} }
@@ -463,7 +581,7 @@ bool acpi_dev_resource_interrupt(struct acpi_resource *ares, int index,
*/ */
irq = &ares->data.irq; irq = &ares->data.irq;
if (index >= irq->interrupt_count) { if (index >= irq->interrupt_count) {
acpi_dev_irqresource_disabled(res, 0); irqresource_disabled(res, 0);
return false; return false;
} }
acpi_dev_get_irqresource(res, irq->interrupts[index], acpi_dev_get_irqresource(res, irq->interrupts[index],
@@ -473,7 +591,7 @@ bool acpi_dev_resource_interrupt(struct acpi_resource *ares, int index,
case ACPI_RESOURCE_TYPE_EXTENDED_IRQ: case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
ext_irq = &ares->data.extended_irq; ext_irq = &ares->data.extended_irq;
if (index >= ext_irq->interrupt_count) { if (index >= ext_irq->interrupt_count) {
acpi_dev_irqresource_disabled(res, 0); irqresource_disabled(res, 0);
return false; return false;
} }
if (is_gsi(ext_irq)) if (is_gsi(ext_irq))
@@ -481,7 +599,7 @@ bool acpi_dev_resource_interrupt(struct acpi_resource *ares, int index,
ext_irq->triggering, ext_irq->polarity, ext_irq->triggering, ext_irq->polarity,
ext_irq->shareable, false); ext_irq->shareable, false);
else else
acpi_dev_irqresource_disabled(res, 0); irqresource_disabled(res, 0);
break; break;
default: default:
res->flags = 0; res->flags = 0;

View File

@@ -2224,7 +2224,7 @@ static void ata_eh_link_report(struct ata_link *link)
struct ata_eh_context *ehc = &link->eh_context; struct ata_eh_context *ehc = &link->eh_context;
struct ata_queued_cmd *qc; struct ata_queued_cmd *qc;
const char *frozen, *desc; const char *frozen, *desc;
char tries_buf[6] = ""; char tries_buf[16] = "";
int tag, nr_failed = 0; int tag, nr_failed = 0;
if (ehc->i.flags & ATA_EHI_QUIET) if (ehc->i.flags & ATA_EHI_QUIET)

View File

@@ -82,6 +82,9 @@ static int isapnp_init_one(struct pnp_dev *idev, const struct pnp_device_id *dev
if (pnp_port_valid(idev, 1)) { if (pnp_port_valid(idev, 1)) {
ctl_addr = devm_ioport_map(&idev->dev, ctl_addr = devm_ioport_map(&idev->dev,
pnp_port_start(idev, 1), 1); pnp_port_start(idev, 1), 1);
if (!ctl_addr)
return -ENOMEM;
ap->ioaddr.altstatus_addr = ctl_addr; ap->ioaddr.altstatus_addr = ctl_addr;
ap->ioaddr.ctl_addr = ctl_addr; ap->ioaddr.ctl_addr = ctl_addr;
ap->ops = &isapnp_port_ops; ap->ops = &isapnp_port_ops;

View File

@@ -2290,19 +2290,21 @@ static int get_esi(struct atm_dev *dev)
static int reset_sar(struct atm_dev *dev) static int reset_sar(struct atm_dev *dev)
{ {
IADEV *iadev; IADEV *iadev;
int i, error = 1; int i, error;
unsigned int pci[64]; unsigned int pci[64];
iadev = INPH_IA_DEV(dev); iadev = INPH_IA_DEV(dev);
for(i=0; i<64; i++) for (i = 0; i < 64; i++) {
if ((error = pci_read_config_dword(iadev->pci, error = pci_read_config_dword(iadev->pci, i * 4, &pci[i]);
i*4, &pci[i])) != PCIBIOS_SUCCESSFUL) if (error != PCIBIOS_SUCCESSFUL)
return error; return error;
}
writel(0, iadev->reg+IPHASE5575_EXT_RESET); writel(0, iadev->reg+IPHASE5575_EXT_RESET);
for(i=0; i<64; i++) for (i = 0; i < 64; i++) {
if ((error = pci_write_config_dword(iadev->pci, error = pci_write_config_dword(iadev->pci, i * 4, pci[i]);
i*4, pci[i])) != PCIBIOS_SUCCESSFUL) if (error != PCIBIOS_SUCCESSFUL)
return error; return error;
}
udelay(5); udelay(5);
return 0; return 0;
} }

View File

@@ -449,9 +449,9 @@ static ssize_t console_show(struct device *dev, struct device_attribute *attr,
struct sk_buff *skb; struct sk_buff *skb;
unsigned int len; unsigned int len;
spin_lock(&card->cli_queue_lock); spin_lock_bh(&card->cli_queue_lock);
skb = skb_dequeue(&card->cli_queue[SOLOS_CHAN(atmdev)]); skb = skb_dequeue(&card->cli_queue[SOLOS_CHAN(atmdev)]);
spin_unlock(&card->cli_queue_lock); spin_unlock_bh(&card->cli_queue_lock);
if(skb == NULL) if(skb == NULL)
return sprintf(buf, "No data.\n"); return sprintf(buf, "No data.\n");
@@ -956,14 +956,14 @@ static void pclose(struct atm_vcc *vcc)
struct pkt_hdr *header; struct pkt_hdr *header;
/* Remove any yet-to-be-transmitted packets from the pending queue */ /* Remove any yet-to-be-transmitted packets from the pending queue */
spin_lock(&card->tx_queue_lock); spin_lock_bh(&card->tx_queue_lock);
skb_queue_walk_safe(&card->tx_queue[port], skb, tmpskb) { skb_queue_walk_safe(&card->tx_queue[port], skb, tmpskb) {
if (SKB_CB(skb)->vcc == vcc) { if (SKB_CB(skb)->vcc == vcc) {
skb_unlink(skb, &card->tx_queue[port]); skb_unlink(skb, &card->tx_queue[port]);
solos_pop(vcc, skb); solos_pop(vcc, skb);
} }
} }
spin_unlock(&card->tx_queue_lock); spin_unlock_bh(&card->tx_queue_lock);
skb = alloc_skb(sizeof(*header), GFP_KERNEL); skb = alloc_skb(sizeof(*header), GFP_KERNEL);
if (!skb) { if (!skb) {

View File

@@ -1187,8 +1187,6 @@ static void __device_release_driver(struct device *dev, struct device *parent)
else if (drv->remove) else if (drv->remove)
drv->remove(dev); drv->remove(dev);
device_links_driver_cleanup(dev);
devres_release_all(dev); devres_release_all(dev);
arch_teardown_dma_ops(dev); arch_teardown_dma_ops(dev);
kfree(dev->dma_range_map); kfree(dev->dma_range_map);
@@ -1200,6 +1198,8 @@ static void __device_release_driver(struct device *dev, struct device *parent)
pm_runtime_reinit(dev); pm_runtime_reinit(dev);
dev_pm_set_driver_flags(dev, 0); dev_pm_set_driver_flags(dev, 0);
device_links_driver_cleanup(dev);
klist_remove(&dev->p->knode_driver); klist_remove(&dev->p->knode_driver);
device_pm_check_callbacks(dev); device_pm_check_callbacks(dev);
if (dev->bus) if (dev->bus)

View File

@@ -367,6 +367,7 @@ void dev_coredumpm(struct device *dev, struct module *owner,
devcd->devcd_dev.class = &devcd_class; devcd->devcd_dev.class = &devcd_class;
mutex_lock(&devcd->mutex); mutex_lock(&devcd->mutex);
dev_set_uevent_suppress(&devcd->devcd_dev, true);
if (device_add(&devcd->devcd_dev)) if (device_add(&devcd->devcd_dev))
goto put_device; goto put_device;
@@ -378,6 +379,8 @@ void dev_coredumpm(struct device *dev, struct module *owner,
"devcoredump")) "devcoredump"))
/* nothing - symlink will be missing */; /* nothing - symlink will be missing */;
dev_set_uevent_suppress(&devcd->devcd_dev, false);
kobject_uevent(&devcd->devcd_dev.kobj, KOBJ_ADD);
INIT_DELAYED_WORK(&devcd->del_wk, devcd_del); INIT_DELAYED_WORK(&devcd->del_wk, devcd_del);
schedule_delayed_work(&devcd->del_wk, DEVCD_TIMEOUT); schedule_delayed_work(&devcd->del_wk, DEVCD_TIMEOUT);
mutex_unlock(&devcd->mutex); mutex_unlock(&devcd->mutex);

View File

@@ -48,7 +48,7 @@ static ssize_t regmap_name_read_file(struct file *file,
name = map->dev->driver->name; name = map->dev->driver->name;
ret = snprintf(buf, PAGE_SIZE, "%s\n", name); ret = snprintf(buf, PAGE_SIZE, "%s\n", name);
if (ret < 0) { if (ret >= PAGE_SIZE) {
kfree(buf); kfree(buf);
return ret; return ret;
} }

View File

@@ -1511,7 +1511,7 @@ static int dev_get_regmap_match(struct device *dev, void *res, void *data)
/* If the user didn't specify a name match any */ /* If the user didn't specify a name match any */
if (data) if (data)
return !strcmp((*r)->name, data); return (*r)->name && !strcmp((*r)->name, data);
else else
return 1; return 1;
} }
@@ -1643,17 +1643,19 @@ static int _regmap_raw_write_impl(struct regmap *map, unsigned int reg,
} }
if (!map->cache_bypass && map->format.parse_val) { if (!map->cache_bypass && map->format.parse_val) {
unsigned int ival; unsigned int ival, offset;
int val_bytes = map->format.val_bytes; int val_bytes = map->format.val_bytes;
for (i = 0; i < val_len / val_bytes; i++) {
ival = map->format.parse_val(val + (i * val_bytes)); /* Cache the last written value for noinc writes */
ret = regcache_write(map, i = noinc ? val_len - val_bytes : 0;
reg + regmap_get_offset(map, i), for (; i < val_len; i += val_bytes) {
ival); ival = map->format.parse_val(val + i);
offset = noinc ? 0 : regmap_get_offset(map, i / val_bytes);
ret = regcache_write(map, reg + offset, ival);
if (ret) { if (ret) {
dev_err(map->dev, dev_err(map->dev,
"Error in caching of register: %x ret: %d\n", "Error in caching of register: %x ret: %d\n",
reg + regmap_get_offset(map, i), ret); reg + offset, ret);
return ret; return ret;
} }
} }

View File

@@ -415,6 +415,18 @@ static const struct usb_device_id blacklist_table[] = {
{ USB_DEVICE(0x13d3, 0x3586), .driver_info = BTUSB_REALTEK | { USB_DEVICE(0x13d3, 0x3586), .driver_info = BTUSB_REALTEK |
BTUSB_WIDEBAND_SPEECH }, BTUSB_WIDEBAND_SPEECH },
/* Realtek 8852BE Bluetooth devices */
{ USB_DEVICE(0x0cb8, 0xc559), .driver_info = BTUSB_REALTEK |
BTUSB_WIDEBAND_SPEECH },
{ USB_DEVICE(0x0bda, 0x887b), .driver_info = BTUSB_REALTEK |
BTUSB_WIDEBAND_SPEECH },
{ USB_DEVICE(0x0bda, 0xb85b), .driver_info = BTUSB_REALTEK |
BTUSB_WIDEBAND_SPEECH },
{ USB_DEVICE(0x13d3, 0x3570), .driver_info = BTUSB_REALTEK |
BTUSB_WIDEBAND_SPEECH },
{ USB_DEVICE(0x13d3, 0x3571), .driver_info = BTUSB_REALTEK |
BTUSB_WIDEBAND_SPEECH },
/* Realtek Bluetooth devices */ /* Realtek Bluetooth devices */
{ USB_VENDOR_AND_INTERFACE_INFO(0x0bda, 0xe0, 0x01, 0x01), { USB_VENDOR_AND_INTERFACE_INFO(0x0bda, 0xe0, 0x01, 0x01),
.driver_info = BTUSB_REALTEK }, .driver_info = BTUSB_REALTEK },
@@ -3095,6 +3107,9 @@ static int btusb_mtk_hci_wmt_sync(struct hci_dev *hdev,
goto err_free_wc; goto err_free_wc;
} }
if (data->evt_skb == NULL)
goto err_free_wc;
/* Parse and handle the return WMT event */ /* Parse and handle the return WMT event */
wmt_evt = (struct btmtk_hci_wmt_evt *)data->evt_skb->data; wmt_evt = (struct btmtk_hci_wmt_evt *)data->evt_skb->data;
if (wmt_evt->whdr.op != hdr->op) { if (wmt_evt->whdr.op != hdr->op) {

View File

@@ -67,7 +67,10 @@ static int vhci_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
struct vhci_data *data = hci_get_drvdata(hdev); struct vhci_data *data = hci_get_drvdata(hdev);
memcpy(skb_push(skb, 1), &hci_skb_pkt_type(skb), 1); memcpy(skb_push(skb, 1), &hci_skb_pkt_type(skb), 1);
mutex_lock(&data->open_mutex);
skb_queue_tail(&data->readq, skb); skb_queue_tail(&data->readq, skb);
mutex_unlock(&data->open_mutex);
wake_up_interruptible(&data->read_wait); wake_up_interruptible(&data->read_wait);
return 0; return 0;

View File

@@ -58,7 +58,8 @@ struct amd_geode_priv {
static int geode_rng_data_read(struct hwrng *rng, u32 *data) static int geode_rng_data_read(struct hwrng *rng, u32 *data)
{ {
void __iomem *mem = (void __iomem *)rng->priv; struct amd_geode_priv *priv = (struct amd_geode_priv *)rng->priv;
void __iomem *mem = priv->membase;
*data = readl(mem + GEODE_RNG_DATA_REG); *data = readl(mem + GEODE_RNG_DATA_REG);
@@ -67,7 +68,8 @@ static int geode_rng_data_read(struct hwrng *rng, u32 *data)
static int geode_rng_data_present(struct hwrng *rng, int wait) static int geode_rng_data_present(struct hwrng *rng, int wait)
{ {
void __iomem *mem = (void __iomem *)rng->priv; struct amd_geode_priv *priv = (struct amd_geode_priv *)rng->priv;
void __iomem *mem = priv->membase;
int data, i; int data, i;
for (i = 0; i < 20; i++) { for (i = 0; i < 20; i++) {

View File

@@ -80,7 +80,7 @@ struct asm9260_mux_clock {
u8 mask; u8 mask;
u32 *table; u32 *table;
const char *name; const char *name;
const char **parent_names; const struct clk_parent_data *parent_data;
u8 num_parents; u8 num_parents;
unsigned long offset; unsigned long offset;
unsigned long flags; unsigned long flags;
@@ -232,10 +232,10 @@ static const struct asm9260_gate_data asm9260_ahb_gates[] __initconst = {
HW_AHBCLKCTRL1, 16 }, HW_AHBCLKCTRL1, 16 },
}; };
static const char __initdata *main_mux_p[] = { NULL, NULL }; static struct clk_parent_data __initdata main_mux_p[] = { { .index = 0, }, { .name = "pll" } };
static const char __initdata *i2s0_mux_p[] = { NULL, NULL, "i2s0m_div"}; static struct clk_parent_data __initdata i2s0_mux_p[] = { { .index = 0, }, { .name = "pll" }, { .name = "i2s0m_div"} };
static const char __initdata *i2s1_mux_p[] = { NULL, NULL, "i2s1m_div"}; static struct clk_parent_data __initdata i2s1_mux_p[] = { { .index = 0, }, { .name = "pll" }, { .name = "i2s1m_div"} };
static const char __initdata *clkout_mux_p[] = { NULL, NULL, "rtc"}; static struct clk_parent_data __initdata clkout_mux_p[] = { { .index = 0, }, { .name = "pll" }, { .name = "rtc"} };
static u32 three_mux_table[] = {0, 1, 3}; static u32 three_mux_table[] = {0, 1, 3};
static struct asm9260_mux_clock asm9260_mux_clks[] __initdata = { static struct asm9260_mux_clock asm9260_mux_clks[] __initdata = {
@@ -255,9 +255,10 @@ static struct asm9260_mux_clock asm9260_mux_clks[] __initdata = {
static void __init asm9260_acc_init(struct device_node *np) static void __init asm9260_acc_init(struct device_node *np)
{ {
struct clk_hw *hw; struct clk_hw *hw, *pll_hw;
struct clk_hw **hws; struct clk_hw **hws;
const char *ref_clk, *pll_clk = "pll"; const char *pll_clk = "pll";
struct clk_parent_data pll_parent_data = { .index = 0 };
u32 rate; u32 rate;
int n; int n;
@@ -274,21 +275,15 @@ static void __init asm9260_acc_init(struct device_node *np)
/* register pll */ /* register pll */
rate = (ioread32(base + HW_SYSPLLCTRL) & 0xffff) * 1000000; rate = (ioread32(base + HW_SYSPLLCTRL) & 0xffff) * 1000000;
/* TODO: Convert to DT parent scheme */ pll_hw = clk_hw_register_fixed_rate_parent_accuracy(NULL, pll_clk, &pll_parent_data,
ref_clk = of_clk_get_parent_name(np, 0); 0, rate);
hw = __clk_hw_register_fixed_rate(NULL, NULL, pll_clk, if (IS_ERR(pll_hw))
ref_clk, NULL, NULL, 0, rate, 0,
CLK_FIXED_RATE_PARENT_ACCURACY);
if (IS_ERR(hw))
panic("%pOFn: can't register REFCLK. Check DT!", np); panic("%pOFn: can't register REFCLK. Check DT!", np);
for (n = 0; n < ARRAY_SIZE(asm9260_mux_clks); n++) { for (n = 0; n < ARRAY_SIZE(asm9260_mux_clks); n++) {
const struct asm9260_mux_clock *mc = &asm9260_mux_clks[n]; const struct asm9260_mux_clock *mc = &asm9260_mux_clks[n];
mc->parent_names[0] = ref_clk; hw = clk_hw_register_mux_table_parent_data(NULL, mc->name, mc->parent_data,
mc->parent_names[1] = pll_clk;
hw = clk_hw_register_mux_table(NULL, mc->name, mc->parent_names,
mc->num_parents, mc->flags, base + mc->offset, mc->num_parents, mc->flags, base + mc->offset,
0, mc->mask, 0, mc->table, &asm9260_clk_lock); 0, mc->mask, 0, mc->table, &asm9260_clk_lock);
} }

View File

@@ -647,7 +647,7 @@ static void __init npcm7xx_clk_init(struct device_node *clk_np)
return; return;
npcm7xx_init_fail: npcm7xx_init_fail:
kfree(npcm7xx_clk_data->hws); kfree(npcm7xx_clk_data);
npcm7xx_init_np_err: npcm7xx_init_np_err:
iounmap(clk_base); iounmap(clk_base);
npcm7xx_init_error: npcm7xx_init_error:

View File

@@ -177,6 +177,7 @@ static int scmi_clocks_probe(struct scmi_device *sdev)
sclk->info = clk_ops->info_get(ph, idx); sclk->info = clk_ops->info_get(ph, idx);
if (!sclk->info) { if (!sclk->info) {
dev_dbg(dev, "invalid clock info for idx %d\n", idx); dev_dbg(dev, "invalid clock info for idx %d\n", idx);
devm_kfree(dev, sclk);
continue; continue;
} }

View File

@@ -3246,6 +3246,7 @@ static void possible_parent_show(struct seq_file *s, struct clk_core *core,
unsigned int i, char terminator) unsigned int i, char terminator)
{ {
struct clk_core *parent; struct clk_core *parent;
const char *name = NULL;
/* /*
* Go through the following options to fetch a parent's name. * Go through the following options to fetch a parent's name.
@@ -3260,18 +3261,20 @@ static void possible_parent_show(struct seq_file *s, struct clk_core *core,
* registered (yet). * registered (yet).
*/ */
parent = clk_core_get_parent_by_index(core, i); parent = clk_core_get_parent_by_index(core, i);
if (parent) if (parent) {
seq_puts(s, parent->name); seq_puts(s, parent->name);
else if (core->parents[i].name) } else if (core->parents[i].name) {
seq_puts(s, core->parents[i].name); seq_puts(s, core->parents[i].name);
else if (core->parents[i].fw_name) } else if (core->parents[i].fw_name) {
seq_printf(s, "<%s>(fw)", core->parents[i].fw_name); seq_printf(s, "<%s>(fw)", core->parents[i].fw_name);
else if (core->parents[i].index >= 0) } else {
seq_puts(s, if (core->parents[i].index >= 0)
of_clk_get_parent_name(core->of_node, name = of_clk_get_parent_name(core->of_node, core->parents[i].index);
core->parents[i].index)); if (!name)
else name = "(missing)";
seq_puts(s, "(missing)");
seq_puts(s, name);
}
seq_putc(s, terminator); seq_putc(s, terminator);
} }

View File

@@ -96,5 +96,6 @@ config CLK_IMX8QXP
depends on (ARCH_MXC && ARM64) || COMPILE_TEST depends on (ARCH_MXC && ARM64) || COMPILE_TEST
depends on IMX_SCU && HAVE_ARM_SMCCC depends on IMX_SCU && HAVE_ARM_SMCCC
select MXC_CLK_SCU select MXC_CLK_SCU
select MXC_CLK
help help
Build the driver for IMX8QXP SCU based clocks. Build the driver for IMX8QXP SCU based clocks.

View File

@@ -280,8 +280,7 @@ static int imx8mq_clocks_probe(struct platform_device *pdev)
void __iomem *base; void __iomem *base;
int err; int err;
clk_hw_data = kzalloc(struct_size(clk_hw_data, hws, clk_hw_data = devm_kzalloc(dev, struct_size(clk_hw_data, hws, IMX8MQ_CLK_END), GFP_KERNEL);
IMX8MQ_CLK_END), GFP_KERNEL);
if (WARN_ON(!clk_hw_data)) if (WARN_ON(!clk_hw_data))
return -ENOMEM; return -ENOMEM;
@@ -298,10 +297,12 @@ static int imx8mq_clocks_probe(struct platform_device *pdev)
hws[IMX8MQ_CLK_EXT4] = imx_obtain_fixed_clk_hw(np, "clk_ext4"); hws[IMX8MQ_CLK_EXT4] = imx_obtain_fixed_clk_hw(np, "clk_ext4");
np = of_find_compatible_node(NULL, NULL, "fsl,imx8mq-anatop"); np = of_find_compatible_node(NULL, NULL, "fsl,imx8mq-anatop");
base = of_iomap(np, 0); base = devm_of_iomap(dev, np, 0, NULL);
of_node_put(np); of_node_put(np);
if (WARN_ON(!base)) if (WARN_ON(IS_ERR(base))) {
return -ENOMEM; err = PTR_ERR(base);
goto unregister_hws;
}
hws[IMX8MQ_ARM_PLL_REF_SEL] = imx_clk_hw_mux("arm_pll_ref_sel", base + 0x28, 16, 2, pll_ref_sels, ARRAY_SIZE(pll_ref_sels)); hws[IMX8MQ_ARM_PLL_REF_SEL] = imx_clk_hw_mux("arm_pll_ref_sel", base + 0x28, 16, 2, pll_ref_sels, ARRAY_SIZE(pll_ref_sels));
hws[IMX8MQ_GPU_PLL_REF_SEL] = imx_clk_hw_mux("gpu_pll_ref_sel", base + 0x18, 16, 2, pll_ref_sels, ARRAY_SIZE(pll_ref_sels)); hws[IMX8MQ_GPU_PLL_REF_SEL] = imx_clk_hw_mux("gpu_pll_ref_sel", base + 0x18, 16, 2, pll_ref_sels, ARRAY_SIZE(pll_ref_sels));
@@ -373,8 +374,10 @@ static int imx8mq_clocks_probe(struct platform_device *pdev)
np = dev->of_node; np = dev->of_node;
base = devm_platform_ioremap_resource(pdev, 0); base = devm_platform_ioremap_resource(pdev, 0);
if (WARN_ON(IS_ERR(base))) if (WARN_ON(IS_ERR(base))) {
return PTR_ERR(base); err = PTR_ERR(base);
goto unregister_hws;
}
/* CORE */ /* CORE */
hws[IMX8MQ_CLK_A53_DIV] = imx8m_clk_hw_composite_core("arm_a53_div", imx8mq_a53_sels, base + 0x8000); hws[IMX8MQ_CLK_A53_DIV] = imx8m_clk_hw_composite_core("arm_a53_div", imx8mq_a53_sels, base + 0x8000);

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