Merge tag 'android11-5.4.265_r00' into branch 'android11-5.4'

This merges the changes up to the 5.4.265 LTS release into the
android11-5.4 branch.  It contains the following individual commits:

* e2be513380 ANDROID: GKI: fix crc issue in include/net/addrconf.h
* 3c4b111a71 Revert "cred: switch to using atomic_long_t"
*   5158e9afed Merge 5.4.265 into android11-5.4-lts
|\
| * 2d21f73b2f Linux 5.4.265
| * 5c70542f32 powerpc/ftrace: Fix stack teardown in ftrace_no_trace
| * 0e1867b482 powerpc/ftrace: Create a dummy stackframe to fix stack unwind
| * 9395c04666 mmc: block: Be sure to wait while busy in CQE error recovery
| * 3b8b2c5d76 ring-buffer: Fix memory leak of free page
| * 3459c9aa64 team: Fix use-after-free when an option instance allocation fails
| * 363a67ef3a arm64: mm: Always make sw-dirty PTEs hw-dirty in pte_modify
| * de8ada0236 ext4: prevent the normalized size from exceeding EXT_MAX_BLOCKS
| * f451d6784b soundwire: stream: fix NULL pointer dereference for multi_link
| * 404902216b perf: Fix perf_event_validate_size() lockdep splat
| * 4109d9a855 HID: hid-asus: add const to read-only outgoing usb buffer
| * 1fc4091991 net: usb: qmi_wwan: claim interface 4 for ZTE MF290
| * 88ceaf8e2c asm-generic: qspinlock: fix queued_spin_value_unlocked() implementation
| * 91175d6fe5 HID: multitouch: Add quirk for HONOR GLO-GXXX touchpad
| * 1f94c0d60d HID: hid-asus: reset the backlight brightness level on resume
| * e9a3cd3dcf HID: add ALWAYS_POLL quirk for Apple kb
| * 395ad0baa4 platform/x86: intel_telemetry: Fix kernel doc descriptions
| * af509912cd bcache: avoid NULL checking to c->root in run_cache_set()
| * 356ae9de79 bcache: add code comments for bch_btree_node_get() and __bch_btree_node_alloc()
| * ca4b00c6cb bcache: avoid oversize memory allocation by small stripe_size
| * e1d811cbc3 blk-throttle: fix lockdep warning of "cgroup_mutex or RCU read lock required!"
| * 84f2e5b3e7 usb: aqc111: check packet for fixup for true limit
| * 619a340666 Revert "PCI: acpiphp: Reassign resources on bridge if necessary"
| * 371dbce60a ALSA: hda/hdmi: add force-connect quirks for ASUSTeK Z170 variants
| * be7676b03a cred: switch to using atomic_long_t
| * 9112bd1072 appletalk: Fix Use-After-Free in atalk_ioctl
| * 23ee06762c net: stmmac: Handle disabled MDIO busses from devicetree
| * 538b7b8f21 net: stmmac: use dev_err_probe() for reporting mdio bus registration failure
| * 067e6ec9f5 vsock/virtio: Fix unsigned integer wrap around in virtio_transport_has_space()
| * cc7cf0b2ee sign-file: Fix incorrect return values check
| * 510d45207a net: Remove acked SYN flag from packet in the transmit queue correctly
| * 5d9d500a28 qed: Fix a potential use-after-free in qed_cxt_tables_alloc
| * 3df812627e net/rose: Fix Use-After-Free in rose_ioctl
| * b099c28847 atm: Fix Use-After-Free in do_vcc_ioctl
| * e3430b870e atm: solos-pci: Fix potential deadlock on &tx_queue_lock
| * 8cff60fb73 atm: solos-pci: Fix potential deadlock on &cli_queue_lock
| * fcf17666ef qca_spi: Fix reset behavior
| * 51ad9c19bb qca_debug: Fix ethtool -G iface tx behavior
| * b7f5868664 qca_debug: Prevent crash on TX ring changes
| * 9354e0acdb net: ipv6: support reporting otherwise unknown prefix flags in RTM_NEWPREFIX
| * 053220aaed afs: Fix refcount underflow from error handling race
* | bc99f18e84 Revert "psample: Require 'CAP_NET_ADMIN' when joining "packets" group"
* | 000b611ebf Revert "mmc: core: add helpers mmc_regulator_enable/disable_vqmmc"
* | ee67cef1d3 Revert "mmc: sdhci-sprd: Fix vqmmc not shutting down after the card was pulled"
* | ee9bfb84c7 Revert "genetlink: add CAP_NET_ADMIN test for multicast bind"
* | 4684391cef Revert "drop_monitor: Require 'CAP_SYS_ADMIN' when joining "events" group"
* | 50aa4f43a9 Revert "perf/core: Add a new read format to get a number of lost samples"
* | 8eb4011508 Revert "perf: Fix perf_event_validate_size()"
* | 5c9845d8c6 Revert "hrtimers: Push pending hrtimers away from outgoing CPU earlier"
* | af6deae771 Merge 5.4.264 into android11-5.4-lts
|\|
| * 16e6e107a6 Linux 5.4.264
| * 06bcac5c51 devcoredump: Send uevent once devcd is ready
| * c6a1282e53 devcoredump : Serialize devcd_del work
| * d99376b702 smb: client: fix potential NULL deref in parse_dfs_referrals()
| * ab5813bb20 cifs: Fix non-availability of dedup breaking generic/304
| * bdee8b2805 Revert "btrfs: add dmesg output for first mount and last unmount of a filesystem"
| * dd9e851944 tools headers UAPI: Sync linux/perf_event.h with the kernel sources
| * 4a341627a1 drop_monitor: Require 'CAP_SYS_ADMIN' when joining "events" group
| * fe8402511e psample: Require 'CAP_NET_ADMIN' when joining "packets" group
| * 263bffd2b6 genetlink: add CAP_NET_ADMIN test for multicast bind
| * a149fbadb9 netlink: don't call ->netlink_bind with table lock held
| * 18824f592a io_uring/af_unix: disable sending io_uring over sockets
| * 32f4536c10 nilfs2: fix missing error check for sb_set_blocksize call
| * 77a353924d KVM: s390/mm: Properly reset no-dat
| * 1aee33d43d x86/CPU/AMD: Check vendor in the AMD microcode callback
| * 3371eac211 serial: 8250_omap: Add earlycon support for the AM654 UART controller
| * ce79cf407c serial: sc16is7xx: address RX timeout interrupt errata
| * d896c47f8c ARM: PL011: Fix DMA support
| * 880b035bc6 usb: typec: class: fix typec_altmode_put_partner to put plugs
| * a9022cbdd0 parport: Add support for Brainboxes IX/UC/PX parallel cards
| * fefc0559c5 usb: gadget: f_hid: fix report descriptor allocation
| * 1796ae6a7a mmc: sdhci-sprd: Fix vqmmc not shutting down after the card was pulled
| * a1f29e995f mmc: core: add helpers mmc_regulator_enable/disable_vqmmc
| * 05918dec9a gpiolib: sysfs: Fix error handling on failed export
| * 152f51d159 perf: Fix perf_event_validate_size()
| * 84ca356ec8 perf/core: Add a new read format to get a number of lost samples
| * 07bdb1bd24 arm64: dts: mediatek: mt8173-evb: Fix regulator-fixed node names
| * 6109859f69 arm64: dts: mediatek: mt7622: fix memory node warning check
| * 148d8f0707 packet: Move reference count in packet_sock to atomic_long_t
| * 965cbc6b62 tracing: Fix a possible race when disabling buffered events
| * 6f2e50961f tracing: Fix incomplete locking when disabling buffered events
| * 84302391d1 tracing: Always update snapshot buffer size
| * cb74e8fd6b nilfs2: prevent WARNING in nilfs_sufile_set_segment_usage()
| * 610ebc2895 ALSA: pcm: fix out-of-bounds in snd_pcm_state_names
| * 439166b1b2 ARM: dts: imx7: Declare timers compatible with fsl,imx6dl-gpt
| * 4fe36f83f8 ARM: dts: imx: make gpt node name generic
| * 69b669cc63 ARM: imx: Check return value of devm_kasprintf in imx_mmdc_perf_init
| * 59348f1482 scsi: be2iscsi: Fix a memleak in beiscsi_init_wrb_handle()
| * 8244ea916b tracing: Fix a warning when allocating buffered events fails
| * 4713be8445 ASoC: wm_adsp: fix memleak in wm_adsp_buffer_populate
| * febb7bbe29 hwmon: (acpi_power_meter) Fix 4.29 MW bug
| * ad4cf77667 RDMA/bnxt_re: Correct module description string
| * b4b89b7b2d bpf: sockmap, updating the sg structure should also update curr
| * 7ffff0cc92 tcp: do not accept ACK of bytes we never sent
| * 69431f609b netfilter: xt_owner: Fix for unsafe access of sk->sk_socket
| * c61c61d7e7 net: hns: fix fake link up on xge port
| * 1ec21fde58 ipv4: ip_gre: Avoid skb_pull() failure in ipgre_xmit()
| * e38cd53421 arcnet: restoring support for multiple Sohard Arcnet cards
| * f265467319 net: arcnet: com20020 fix error handling
| * d124c18267 net: arcnet: Fix RESET flag handling
| * 9f5a25aa1b hv_netvsc: rndis_filter needs to select NLS
| * be1ab8bf05 ipv6: fix potential NULL deref in fib6_add()
| * 5cd05bbaae of: dynamic: Fix of_reconfig_get_state_change() return value documentation
| * 5cadae629e of: Add missing 'Return' section in kerneldoc comments
| * b31cb14cac of: Fix kerneldoc output formatting
| * 36ce931a80 of: base: Fix some formatting issues and provide missing descriptions
| * 8c4fcbe27a of/irq: Make of_msi_map_rid() PCI bus agnostic
| * ae374c57af of/irq: make of_msi_map_get_device_domain() bus agnostic
| * e5cfaab662 of/iommu: Make of_map_rid() PCI agnostic
| * f7a8552008 ACPI/IORT: Make iort_msi_map_rid() PCI agnostic
| * da36a3ef32 ACPI/IORT: Make iort_get_device_domain IRQ domain agnostic
| * d786067be2 of: base: Add of_get_cpu_state_node() to get idle states for a CPU node
| * 13f27a0537 drm/amdgpu: correct chunk_ptr to a pointer to chunk.
| * d162a5e6a5 kconfig: fix memory leak from range properties
| * d346441530 tg3: Increment tx_dropped in tg3_tso_bug()
| * cd49b8e07d tg3: Move the [rt]x_dropped counters to tg3_napi
| * 427deb5ba5 netfilter: ipset: fix race condition between swap/destroy and kernel side add/del/test
| * 54d0d83a53 hrtimers: Push pending hrtimers away from outgoing CPU earlier
* | 096ff6ecb4 Revert "HID: core: store the unique system identifier in hid_device"
* | 68c9c64f02 Revert "HID: fix HID device resource race between HID core and debugging support"
* | 0780b1ab09 Merge 5.4.263 into android11-5.4-lts
|\|
| * 34244ed621 Linux 5.4.263
| * afa7b11ea8 mmc: block: Retry commands in CQE error recovery
| * c8008304db mmc: core: convert comma to semicolon
| * 33cc97d249 mmc: cqhci: Fix task clearing in CQE error recovery
| * 3e78540d98 mmc: cqhci: Warn of halt or task clear failure
| * 5b87f35546 mmc: cqhci: Increase recovery halt timeout
| * 1a051c6d15 cpufreq: imx6q: Don't disable 792 Mhz OPP unnecessarily
| * d497e1b2f5 cpufreq: imx6q: don't warn for disabling a non-existing frequency
| * b1a66a050f scsi: qla2xxx: Fix system crash due to bad pointer access
| * c1f97cc21e scsi: qla2xxx: Use scsi_cmd_to_rq() instead of scsi_cmnd.request
| * df0110425f scsi: core: Introduce the scsi_cmd_to_rq() function
| * 66cd605530 scsi: qla2xxx: Simplify the code for aborting SCSI commands
| * 30511f37c9 ima: detect changes to the backing overlay file
| * 8c85e455f7 ovl: skip overlayfs superblocks at global sync
| * 157c8056ab ima: annotate iint mutex to avoid lockdep false positive warnings
| * a8038ae581 fbdev: stifb: Make the STI next font pointer a 32-bit signed offset
| * 939012ee31 mtd: cfi_cmdset_0001: Byte swap OTP info
| * 416dad018e mtd: cfi_cmdset_0001: Support the absence of protection registers
| * 21ad8c1c4f s390/cmma: fix detection of DAT pages
| * c11027d333 s390/mm: fix phys vs virt confusion in mark_kernel_pXd() functions family
| * f1db39b154 smb3: fix touch -h of symlink
| * 97d54b8005 net: ravb: Start TX queues after HW initialization succeeded
| * 7023a293e9 net: ravb: Use pm_runtime_resume_and_get()
| * 05aa8f3e3b ravb: Fix races between ravb_tx_timeout_work() and net related ops
| * d37609b529 net: stmmac: xgmac: Disable FPE MMC interrupts
| * 7ccf772a8b ipv4: igmp: fix refcnt uaf issue when receiving igmp query packet
| * f8b5b5d236 Input: xpad - add HyperX Clutch Gladiate Support
| * 6536698eea btrfs: make error messages more clear when getting a chunk map
| * 4c6274cfd6 btrfs: send: ensure send_fd is writable
| * 79ffc04aba btrfs: fix off-by-one when checking chunk map includes logical address
| * dd94ffab1b btrfs: add dmesg output for first mount and last unmount of a filesystem
| * 30b807d736 powerpc: Don't clobber f0/vs0 during fp|altivec register save
| * bb55decee2 bcache: revert replacing IS_ERR_OR_NULL with IS_ERR
| * 729da56e01 dm verity: don't perform FEC for failed readahead IO
| * b515ed6284 dm-verity: align struct dm_verity_fec_io properly
| * d377e593d1 ALSA: hda/realtek: Add supported ALC257 for ChromeOS
| * 47dd3917c4 ALSA: hda/realtek: Headset Mic VREF to 100%
| * 88ce27f0a3 ALSA: hda: Disable power-save on KONTRON SinglePC
| * 4a2d1399f8 mmc: block: Do not lose cache flush during CQE error recovery
| * 4d7d14c696 firewire: core: fix possible memory leak in create_units()
| * 1eaa188f7f pinctrl: avoid reload of p state in list iteration
| * 40532b2913 io_uring: fix off-by one bvec index
| * 9e7f410f6a USB: dwc3: qcom: fix wakeup after probe deferral
| * db62d193e6 USB: dwc3: qcom: fix resource leaks on probe deferral
| * ca44455362 usb: dwc3: set the dma max_seg_size
| * 7a0b6fc6c3 USB: dwc2: write HCINT with INTMASK applied
| * d1c866356d USB: serial: option: don't claim interface 4 for ZTE MF290
| * 38233a62d3 USB: serial: option: fix FM101R-GL defines
| * 83be9405b3 USB: serial: option: add Fibocom L7xx modules
| * 406fae6c79 bcache: prevent potential division by zero error
| * c00163256a bcache: check return value from btree_node_alloc_replacement()
| * a658ee7930 dm-delay: fix a race between delay_presuspend and delay_bio
| * ef918a1ba4 hv_netvsc: Mark VF as slave before exposing it to user-mode
| * 997d895fa4 hv_netvsc: Fix race of register_netdevice_notifier and VF register
| * f2a0c988d7 USB: serial: option: add Luat Air72*U series products
| * f1ac778940 s390/dasd: protect device queue against concurrent access
| * 300e96e171 bcache: replace a mistaken IS_ERR() by IS_ERR_OR_NULL() in btree_gc_coalesce()
| * 76f791b78d ACPI: resource: Skip IRQ override on ASUS ExpertBook B1402CVA
| * 78c1e3aa69 KVM: arm64: limit PMU version to PMUv3 for ARMv8.1
| * 5d4f6d809e arm64: cpufeature: Extract capped perfmon fields
| * 32cfd5c3b8 ext4: make sure allocate pending entry not fail
| * 70edeedd79 ext4: fix slab-use-after-free in ext4_es_insert_extent()
| * 15a84cf4c7 ext4: using nofail preallocation in ext4_es_insert_extent()
| * 80c8dcb09f ext4: using nofail preallocation in ext4_es_insert_delayed_block()
| * be4684ee83 ext4: using nofail preallocation in ext4_es_remove_extent()
| * d809d1d2ed ext4: use pre-allocated es in __es_remove_extent()
| * 059722ec64 ext4: use pre-allocated es in __es_insert_extent()
| * 53df96011a ext4: factor out __es_alloc_extent() and __es_free_extent()
| * c48b5fdd46 ext4: add a new helper to check if es must be kept
| * b9cd5c3afc MIPS: KVM: Fix a build warning about variable set but not used
| * afbedd6136 nvmet: nul-terminate the NQNs passed in the connect command
| * 84ac94bed0 nvmet: remove unnecessary ctrl parameter
| * 07009245d3 afs: Fix file locking on R/O volumes to operate in local mode
| * 54ffe881d7 afs: Return ENOENT if no cell DNS record can be found
| * 3680d10b41 net: axienet: Fix check for partial TX checksum
| * a7e7b92804 amd-xgbe: propagate the correct speed and duplex status
| * c3a77c754e amd-xgbe: handle the corner-case during tx completion
| * 895f1903ea amd-xgbe: handle corner-case during sfp hotplug
| * 7fabd97a05 arm/xen: fix xen_vcpu_info allocation alignment
| * 9beba93f8c net: usb: ax88179_178a: fix failed operations during ax88179_reset
| * fc23517c87 ipv4: Correct/silence an endian warning in __ip_do_redirect
| * 6fd145351d HID: fix HID device resource race between HID core and debugging support
| * 2c8f796104 HID: core: store the unique system identifier in hid_device
| * 90b3df8b5b drm/rockchip: vop: Fix color for RGB888/BGR888 format on VOP full
| * bfdda8c9c5 ata: pata_isapnp: Add missing error check for devm_ioport_map()
| * 9d980808f9 drm/panel: simple: Fix Innolux G101ICE-L01 timings
| * cc543bad78 drm/panel: simple: Fix Innolux G101ICE-L01 bus flags
| * c2eadc1586 afs: Make error on cell lookup failure consistent with OpenAFS
| * 7369371bb8 PCI: keystone: Drop __init from ks_pcie_add_pcie_{ep,port}()
| * 518b7f7d87 RDMA/irdma: Prevent zero-length STAG registration
| * d359886a7a driver core: Release all resources during unbind before updating device links
* | a0f28e56bc ANDROID: GKI: db845c: Update symbols list and ABI on rpmsg_register_device_override
* | 69365d1ade Revert "tracing: Have trace_event_file have ref counters"
* |   288ce21693 Merge "Merge 5.4.262 into android11-5.4-lts" into android11-5.4-lts
|\ \
| * | a3aeec7ab8 Merge 5.4.262 into android11-5.4-lts
| |\|
| | * 8e221b4717 Linux 5.4.262
| | * b053223b7c netfilter: nf_tables: bogus EBUSY when deleting flowtable after flush (for 5.4)
| | * c35df8b8c5 netfilter: nf_tables: disable toggling dormant table state more than once
| | * e10f661adc netfilter: nf_tables: fix table flag updates
| | * 46c2947fcd netfilter: nftables: update table flags from the commit phase
| | * b09e6ccf0d netfilter: nf_tables: double hook unregistration in netns path
| | * b05a24cc45 netfilter: nf_tables: unregister flowtable hooks on netns exit
| | * a995a68e8a netfilter: nf_tables: fix memleak when more than 255 elements expired
| | * b95d7af657 netfilter: nft_set_hash: try later when GC hits EAGAIN on iteration
| | * 61a7b3de20 netfilter: nft_set_rbtree: use read spinlock to avoid datapath contention
| | * 03caf75da1 netfilter: nft_set_rbtree: skip sync GC for new elements in this transaction
| | * 021d734c7e netfilter: nf_tables: defer gc run if previous batch is still pending
| | * 38ed6a5f83 netfilter: nf_tables: use correct lock to protect gc_list
| | * 4b6346dc1e netfilter: nf_tables: GC transaction race with abort path
| | * b76dcf4662 netfilter: nf_tables: GC transaction race with netns dismantle
| | * 29ff9b8efb netfilter: nf_tables: fix GC transaction races with netns and netlink event exit path
| | * 1398a0eee2 netfilter: nf_tables: remove busy mark and gc batch API
| | * 85520a1f1d netfilter: nft_set_hash: mark set element as dead when deleting from packet path
| | * c357648929 netfilter: nf_tables: adapt set backend to use GC transaction API
| | * bbdb3b65aa netfilter: nf_tables: GC transaction API to avoid race with control plane
| | * 1da4874d05 netfilter: nf_tables: don't skip expired elements during walk
| | * acaee227cf netfilter: nft_set_rbtree: fix overlap expiration walk
| | * 899aa56385 netfilter: nft_set_rbtree: fix null deref on element insertion
| | * 181859bdfb netfilter: nft_set_rbtree: Switch to node list walk for overlap detection
| | * 3c7ec098e3 netfilter: nf_tables: drop map element references from preparation phase
| | * 6b880f3b2c netfilter: nftables: rename set element data activation/deactivation functions
| | * e1eed9e0b5 netfilter: nf_tables: pass context to nft_set_destroy()
| | * 961c4511c7 tracing: Have trace_event_file have ref counters
| | * 7676a41d90 drm/amdgpu: fix error handling in amdgpu_bo_list_get()
| | * 36383005f1 ext4: remove gdb backup copy for meta bg in setup_new_flex_group_blocks
| | * e95f74653d ext4: correct the start block of counting reserved clusters
| | * 1fbfdcc3d6 ext4: correct return value of ext4_convert_meta_bg
| | * dfdfd3f218 ext4: correct offset of gdb backup in non meta_bg group to update_backups
| | * 85c12e80c4 ext4: apply umask if ACL support is disabled
| | * d2aed8814f Revert "net: r8169: Disable multicast filter for RTL8168H and RTL8107E"
| | * b9e5f633b3 nfsd: fix file memleak on client_opens_release
| | * 339d7d40d3 media: venus: hfi: add checks to handle capabilities from firmware
| | * cab97cdd40 media: venus: hfi: fix the check to handle session buffer requirement
| | * 5d39d0c1f4 media: venus: hfi_parser: Add check to keep the number of codecs within range
| | * 497b12d47c media: sharp: fix sharp encoding
| | * 92d8a0478f media: lirc: drop trailing space from scancode transmit
| | * cac054d103 i2c: i801: fix potential race in i801_block_transaction_byte_by_byte
| | * b132e46236 net: dsa: lan9303: consequently nested-lock physical MDIO
| | * 229738d717 Revert ncsi: Propagate carrier gain/loss events to the NCSI controller
| | * 4074957ec6 Bluetooth: btusb: Add 0bda:b85b for Fn-Link RTL8852BE
| | * 356a2ee5fc Bluetooth: btusb: Add RTW8852BE device 13d3:3570 to device tables
| | * afe92b66a5 bluetooth: Add device 13d3:3571 to device tables
| | * dc073a2626 bluetooth: Add device 0bda:887b to device tables
| | * 75d26f7f61 Bluetooth: btusb: Add Realtek RTL8852BE support ID 0x0cb8:0xc559
| | * 323710a6b4 Bluetooth: btusb: add Realtek 8822CE to usb_device_id table
| | * 981ee23b8d Bluetooth: btusb: Add flag to define wideband speech capability
| | * 0fe69c99cc tty: serial: meson: fix hard LOCKUP on crtscts mode
| | * 8f40bbf7dc serial: meson: Use platform_get_irq() to get the interrupt
| | * a1113f2c9b tty: serial: meson: retrieve port FIFO size from DT
| | * 13391526d8 serial: meson: remove redundant initialization of variable id
| | * 6245d0d70f ALSA: hda/realtek - Enable internal speaker of ASUS K6500ZC
| | * 4ef452297d ALSA: info: Fix potential deadlock at disconnection
| | * c7df9523fe parisc/pgtable: Do not drop upper 5 address bits of physical address
| | * c32dfec867 parisc: Prevent booting 64-bit kernels on PA1.x machines
| | * d570d139cb i3c: master: cdns: Fix reading status register
| | * ad6941b192 mm/cma: use nth_page() in place of direct struct page manipulation
| | * 3651286660 dmaengine: stm32-mdma: correct desc prep when channel running
| | * 4a5c267d57 mcb: fix error handling for different scenarios when parsing
| | * 25eb381a73 i2c: core: Run atomic i2c xfer when !preemptible
| | * 975b5ff33f kernel/reboot: emergency_restart: Set correct system_state
| | * 421f9ccc75 quota: explicitly forbid quota files from being encrypted
| | * 7d0c36cd2e jbd2: fix potential data lost in recovering journal raced with synchronizing fs bdev
| | * 665c2f186b btrfs: don't arbitrarily slow down delalloc if we're committing
| | * b5a8382cf8 PM: hibernate: Clean up sync_read handling in snapshot_write_next()
| | * 2b3cfdaa88 PM: hibernate: Use __get_safe_page() rather than touching the list
| | * 612c17a90f mmc: vub300: fix an error code
| | * 398940412e clk: qcom: ipq8074: drop the CLK_SET_RATE_PARENT flag from PLL clocks
| | * 0b2b22b706 parisc/pdc: Add width field to struct pdc_model
| | * 012dba0ab8 PCI: keystone: Don't discard .probe() callback
| | * 9988c9dc3c PCI: keystone: Don't discard .remove() callback
| | * a438322e00 genirq/generic_chip: Make irq_remove_generic_chip() irqdomain aware
| | * 683c562c43 mmc: meson-gx: Remove setting of CMD_CFG_ERROR
| | * d894f9288c ACPI: resource: Do IRQ override on TongFang GMxXGxx
| | * 7b15bc9b75 PCI/sysfs: Protect driver's D3cold preference from user space
| | * 78d3487b5b hvc/xen: fix error path in xen_hvc_init() to always register frontend driver
| | * 6b21ae025b audit: don't WARN_ON_ONCE(!current->mm) in audit_exe_compare()
| | * c0d01f03aa audit: don't take task_lock() in audit_exe_compare() code path
| | * 4d0a828775 KVM: x86: Ignore MSR_AMD64_TW_CFG access
| | * 5066faedd2 KVM: x86: hyper-v: Don't auto-enable stimer on write from user-space
| | * 268d17ab63 x86/cpu/hygon: Fix the CPU topology evaluation for real
| | * acbc12b0b3 scsi: megaraid_sas: Increase register read retry rount from 3 to 30 for selected registers
| | * bae6905103 bpf: Fix precision tracking for BPF_ALU | BPF_TO_BE | BPF_END
| | * 6933bc9a5f randstruct: Fix gcc-plugin performance mode to stay in group
| | * c94d05ac69 media: venus: hfi: add checks to perform sanity on queue pointers
| | * 6d028ade9d cifs: spnego: add ';' in HOST_KEY_LEN
| | * 26415e35f6 tools/power/turbostat: Fix a knl bug
| | * a49786297b macvlan: Don't propagate promisc change to lower dev in passthru
| | * 04cb9ab8eb net/mlx5e: Check return value of snprintf writing to fw_version buffer for representors
| | * c740f4716a net/mlx5_core: Clean driver version and name
| | * e4bdbcce8e net/mlx5e: fix double free of encap_header
| | * 5cc1f24f73 net: stmmac: fix rx budget limit check
| | * c4b712d1a8 net: stmmac: Rework stmmac_rx()
| | * b2762d13df netfilter: nf_conntrack_bridge: initialize err to 0
| | * fd51e7541f net: ethernet: cortina: Fix MTU max setting
| | * 823bffdaac net: ethernet: cortina: Handle large frames
| | * f5055d7345 net: ethernet: cortina: Fix max RX frame define
| | * b4f0e605a5 bonding: stop the device in bond_setup_by_slave()
| | * 7ea0a719e5 ptp: annotate data-race around q->head and q->tail
| | * 89af55e0fa xen/events: fix delayed eoi list handling
| | * db957a2f54 ppp: limit MRU to 64K
| | * f3b250d919 tipc: Fix kernel-infoleak due to uninitialized TLV value
| | * 77236275d4 net: hns3: fix variable may not initialized problem in hns3_init_mac_addr()
| | * 14c6cd41c8 tty: Fix uninit-value access in ppp_sync_receive()
| | * 4d2d30f079 ipvlan: add ipvlan_route_v6_outbound() helper
| | * ed53c15188 NFSv4.1: fix SP4_MACH_CRED protection for pnfs IO
| | * fe449f8b97 wifi: iwlwifi: Use FW rate for non-data frames
| | * eca19db60f pwm: Fix double shift bug
| | * d996530ba9 ASoC: ti: omap-mcbsp: Fix runtime PM underflow warnings
| | * 6d703922bc kgdb: Flush console before entering kgdb on panic
| | * eac3e4760a drm/amd/display: Avoid NULL dereference of timing generator
| | * 514565ff7f media: cobalt: Use FIELD_GET() to extract Link Width
| | * 2bb42a27a9 gfs2: ignore negated quota changes
| | * a251e20a2c media: vivid: avoid integer overflow
| | * 8f83c85ee8 media: gspca: cpia1: shift-out-of-bounds in set_flicker
| | * a8f829886d i2c: sun6i-p2wi: Prevent potential division by zero
| | * 80876a07ca usb: gadget: f_ncm: Always set current gadget in ncm_bind()
| | * 460284dfb1 tty: vcc: Add check for kstrdup() in vcc_probe()
| | * 35b9435123 HID: Add quirk for Dell Pro Wireless Keyboard and Mouse KM5221W
| | * b549acf999 scsi: libfc: Fix potential NULL pointer dereference in fc_lport_ptp_setup()
| | * 33906b36b1 atm: iphase: Do PCI error checks on own line
| | * 54f4dde8fa PCI: tegra194: Use FIELD_GET()/FIELD_PREP() with Link Width fields
| | * 2527775616 ALSA: hda: Fix possible null-ptr-deref when assigning a stream
| | * 953ed26a77 ARM: 9320/1: fix stack depot IRQ stack filter
| | * 7467ca10a5 jfs: fix array-index-out-of-bounds in diAlloc
| | * ecfb47f13b jfs: fix array-index-out-of-bounds in dbFindLeaf
| | * 32bd8f1cbc fs/jfs: Add validity check for db_maxag and db_agpref
| | * a81a56b4cb fs/jfs: Add check for negative db_l2nbperpage
| | * e18d266fb3 RDMA/hfi1: Use FIELD_GET() to extract Link Width
| | * c9c1334697 crypto: pcrypt - Fix hungtask for PADATA_RESET
| | * ddd6e52663 selftests/efivarfs: create-read: fix a resource leak
| | * 437e0fa907 drm/amdgpu: Fix a null pointer access when the smc_rreg pointer is NULL
| | * d50a56749e drm/amd: Fix UBSAN array-index-out-of-bounds for Polaris and Tonga
| | * c847379a5d drm/amd: Fix UBSAN array-index-out-of-bounds for SMU7
| | * 1f24c286f4 drm/komeda: drop all currently held locks if deadlock happens
| | * 5305ae0d4a platform/x86: thinkpad_acpi: Add battery quirk for Thinkpad X120e
| | * 3c4236f1b2 Bluetooth: Fix double free in hci_conn_cleanup
| | * 3cf391e417 wifi: ath10k: Don't touch the CE interrupt registers after power up
| | * 252bde6b17 net: annotate data-races around sk->sk_dst_pending_confirm
| | * 73909810ac net: annotate data-races around sk->sk_tx_queue_mapping
| | * bd653b0709 wifi: ath10k: fix clang-specific fortify warning
| | * 32cc96dc5f wifi: ath9k: fix clang-specific fortify warnings
| | * efeae5f497 wifi: mac80211: don't return unset power in ieee80211_get_tx_power()
| | * 770da15be3 wifi: mac80211_hwsim: fix clang-specific fortify warning
| | * cfe13e1486 x86/mm: Drop the 4 MB restriction on minimal NUMA node memory size
| | * 91f7467ac9 clocksource/drivers/timer-atmel-tcb: Fix initialization on SAM9 hardware
| | * da667a3f8e clocksource/drivers/timer-imx-gpt: Fix potential memory leak
| | * 788c0b3442 perf/core: Bail out early if the request AUX area is out of bound
| | * dcd85e3c92 locking/ww_mutex/test: Fix potential workqueue corruption
* | | 4e4cce8b5a Merge branch 'android11-5.4' into branch 'android11-5.4-lts'
|/ /
* | 12bc15efbc Revert "inet: shrink struct flowi_common"
* | 8d8014e4a1 Revert "ipvlan: properly track tx_errors"
* | 0e07b7bd3c Merge 5.4.261 into android11-5.4-lts
|\|
| * ef379773e2 Linux 5.4.261
| * 3542ef5c37 btrfs: use u64 for buffer sizes in the tree search ioctls
| * 7868e6151a Revert "mmc: core: Capture correct oemid-bits for eMMC cards"
| * 7be3aca8d7 fbdev: fsl-diu-fb: mark wr_reg_wa() static
| * 6c66d737b2 fbdev: imsttfb: fix a resource leak in probe
| * b90c8dfd71 fbdev: imsttfb: Fix error path of imsttfb_probe()
| * 4a6a3f1b38 spi: spi-zynq-qspi: add spi-mem to driver kconfig dependencies
| * 157333513d drm/syncobj: fix DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE
| * 21858a75dc netfilter: nat: fix ipv6 nat redirect with mapped and scoped addresses
| * ae99c5e16a netfilter: nft_redir: use `struct nf_nat_range2` throughout and deduplicate eval call-backs
| * 11380557c2 netfilter: xt_recent: fix (increase) ipv6 literal buffer length
| * cce1d46681 r8169: respect userspace disabling IFF_MULTICAST
| * e820e23338 tg3: power down device only on SYSTEM_POWER_OFF
| * f8065cde49 net/smc: fix dangling sock under state SMC_APPFINCLOSEWAIT
| * 592f934b7a net: stmmac: xgmac: Enable support for multiple Flexible PPS outputs
| * 85513df59a Fix termination state for idr_for_each_entry_ul()
| * 56cddb5e65 net: r8169: Disable multicast filter for RTL8168H and RTL8107E
| * e5a664ef49 dccp/tcp: Call security_inet_conn_request() after setting IPv6 addresses.
| * 3af0af2f98 dccp: Call security_inet_conn_request() after setting IPv4 addresses.
| * afa49774d8 inet: shrink struct flowi_common
| * 2199260c42 tipc: Change nla_policy for bearer-related names to NLA_NUL_STRING
| * cbdcdf42d1 llc: verify mac len before reading mac header
| * 50d1225366 Input: synaptics-rmi4 - fix use after free in rmi_unregister_function()
| * e3677bfcbb pwm: brcmstb: Utilize appropriate clock APIs in suspend/resume
| * 6e9b529589 pwm: sti: Reduce number of allocations and drop usage of chip_data
| * 19e45307f7 pwm: sti: Avoid conditional gotos
| * c4d5179e42 regmap: prevent noinc writes from clobbering cache
| * d62d868b30 media: dvb-usb-v2: af9035: fix missing unlock
| * 7843a9bfbe media: s3c-camif: Avoid inappropriate kfree()
| * b35fdade92 media: bttv: fix use after free error due to btv->timeout timer
| * 0bc0e36fcc pcmcia: ds: fix possible name leak in error path in pcmcia_device_add()
| * 1502edd4a0 pcmcia: ds: fix refcount leak in pcmcia_device_add()
| * 58d6fb6a93 pcmcia: cs: fix possible hung task and memory leak pccardd()
| * 37212eede6 rtc: pcf85363: fix wrong mask/val parameters in regmap_update_bits call
| * 204beeb509 i3c: Fix potential refcount leak in i3c_master_register_new_i3c_devs
| * 247ed618f5 powerpc/pseries: fix potential memory leak in init_cpu_associativity()
| * cee681d4b2 powerpc/imc-pmu: Use the correct spinlock initializer.
| * dc5804b47b powerpc/xive: Fix endian conversion size
| * b6cffe8dd7 modpost: fix tee MODULE_DEVICE_TABLE built on big-endian host
| * 90ab33735e f2fs: fix to initialize map.m_pblk in f2fs_precache_extents()
| * 9f20b06214 dmaengine: pxa_dma: Remove an erroneous BUG_ON() in pxad_free_desc()
| * 688326e2cf USB: usbip: fix stub_dev hub disconnect
| * b003b7a7d4 tools: iio: iio_generic_buffer ensure alignment
| * 7a64d15db7 tools: iio: iio_generic_buffer: Fix some integer type and calculation
| * db6d5b9ff6 tools: iio: privatize globals and functions in iio_generic_buffer.c file
| * 55b90e4c40 misc: st_core: Do not call kfree_skb() under spin_lock_irqsave()
| * ed9b2ad3b9 dmaengine: ti: edma: handle irq_of_parse_and_map() errors
| * 64c47749fc usb: dwc2: fix possible NULL pointer dereference caused by driver concurrency
| * 4050f13f71 tty: tty_jobctrl: fix pid memleak in disassociate_ctty()
| * ba46faaa49 leds: trigger: ledtrig-cpu:: Fix 'output may be truncated' issue for 'cpu'
| * abfd682fc5 ledtrig-cpu: Limit to 8 CPUs
| * f6c3b7a4ce leds: pwm: Don't disable the PWM when the LED should be off
| * cd6f50115f leds: pwm: convert to atomic PWM API
| * 9686f771c0 leds: pwm: simplify if condition
| * 87b1ee831d mfd: dln2: Fix double put in dln2_probe
| * b843d2cd13 ASoC: ams-delta.c: use component after check
| * 4634c9cc72 ASoC: Intel: Skylake: Fix mem leak when parsing UUIDs fails
| * 66888e6953 sh: bios: Revive earlyprintk support
| * fdcbe9ce7b RDMA/hfi1: Workaround truncation compilation error
| * 01698922f5 scsi: ufs: core: Leave space for '\0' in utf8 desc string
| * 3c61391a31 ext4: move 'ix' sanity check to corrent position
| * 454e6493bb ARM: 9321/1: memset: cast the constant byte to unsigned char
| * 727203e6e7 hid: cp2112: Fix duplicate workqueue initialization
| * 48bb2931f2 HID: cp2112: Use irqchip template
| * 7b62cf90d0 crypto: caam/jr - fix Chacha20 + Poly1305 self test failure
| * 090e89c716 crypto: caam/qi2 - fix Chacha20 + Poly1305 self test failure
| * 40ba3fa212 nd_btt: Make BTT lanes preemptible
| * 68655462f8 sched/rt: Provide migrate_disable/enable() inlines
| * d14a373fe5 libnvdimm/of_pmem: Use devm_kstrdup instead of kstrdup and check its return value
| * f5d95a3968 hwrng: geode - fix accessing registers
| * e4e4d4abb8 clk: scmi: Free scmi_clk allocated when the clocks with invalid info are skipped
| * ce11e445d0 firmware: ti_sci: Mark driver as non removable
| * 5d97cc0b49 firmware: ti_sci: Replace HTTP links with HTTPS ones
| * cc1a1dcb41 soc: qcom: llcc: Handle a second device without data corruption
| * 813fdddde2 soc: qcom: Rename llcc-slice to llcc-qcom
| * 077010717b soc: qcom: llcc cleanup to get rid of sdm845 specific driver file
| * 3da50ee512 ARM: dts: qcom: mdm9615: populate vsdcc fixed regulator
| * 6b464d9414 arm64: dts: qcom: sdm845-mtp: fix WiFi configuration
| * 64d9900860 drm/rockchip: cdn-dp: Fix some error handling paths in cdn_dp_probe()
| * ddc42881f1 drm/radeon: possible buffer overflow
| * 4a29f0f7a1 drm/rockchip: vop: Fix call to crtc reset helper
| * 824f0f4f93 drm/rockchip: vop: Fix reset of state in duplicate state crtc funcs
| * eaf62ea650 hwmon: (coretemp) Fix potentially truncated sysfs attribute name
| * 9fb0eed09e platform/x86: wmi: Fix opening of char device
| * 22117b77ee platform/x86: wmi: remove unnecessary initializations
| * 1607ea8a81 platform/x86: wmi: Fix probe failure when failing to register WMI devices
| * d1461f0c9c clk: mediatek: clk-mt2701: Add check for mtk_alloc_clk_data
| * e8ae4b49dd clk: mediatek: clk-mt7629: Add check for mtk_alloc_clk_data
| * cfa68e0ac5 clk: mediatek: clk-mt7629-eth: Add check for mtk_alloc_clk_data
| * 2705c5b97f clk: mediatek: clk-mt6797: Add check for mtk_alloc_clk_data
| * fbe466f06d clk: mediatek: clk-mt6779: Add check for mtk_alloc_clk_data
| * 8ae911637b clk: npcm7xx: Fix incorrect kfree
| * cbcf67b0bc clk: keystone: pll: fix a couple NULL vs IS_ERR() checks
| * 3d38bc4bab clk: imx: Select MXC_CLK for CLK_IMX8QXP
| * ae98b5ef99 clk: qcom: gcc-sm8150: Fix gcc_sdcc2_apps_clk_src
| * 15f335494b clk: qcom: gcc-sm8150: use ARRAY_SIZE instead of specifying num_parents
| * 141ccc1272 clk: qcom: clk-rcg2: Fix clock rate overflow for high parent frequencies
| * dbf13624b2 regmap: debugfs: Fix a erroneous check after snprintf()
| * af50165c12 ipvlan: properly track tx_errors
| * 76304c749e net: add DEV_STATS_READ() helper
| * 4482b250c8 ipv6: avoid atomic fragment on GSO packets
| * 19d5273378 ACPI: sysfs: Fix create_pnp_modalias() and create_of_modalias()
| * 5105d46146 tcp: fix cookie_init_timestamp() overflows
| * e4e819bdc8 tcp: Remove one extra ktime_get_ns() from cookie_init_timestamp
| * 7ab8aa7300 chtls: fix tp->rcv_tstamp initialization
| * 75bbf6e934 r8169: fix rare issue with broken rx after link-down on RTL8125
| * 282342bc47 r8169: use tp_to_dev instead of open code
| * 3091ab943d thermal: core: prevent potential string overflow
| * 35854733ae can: dev: can_restart(): fix race condition between controller restart and netif_carrier_on()
| * b53be254d3 can: dev: can_restart(): don't crash kernel if carrier is OK
| * a29f012a27 wifi: rtlwifi: fix EDCA limit set by BT coexistence
| * bed72a332f tcp_metrics: do not create an entry from tcp_init_metrics()
| * f3902c0e6f tcp_metrics: properly set tp->snd_ssthresh in tcp_init_metrics()
| * b78f2b7774 tcp_metrics: add missing barriers on delete
| * af0fe2c2ff wifi: mt76: mt7603: rework/fix rx pse hang check
| * a2e99dbdc1 wifi: rtw88: debug: Fix the NULL vs IS_ERR() bug for debugfs_create_file()
| * c9b929f793 tcp: call tcp_try_undo_recovery when an RTOd TFO SYNACK is ACKed
| * 25eaef1d0d i40e: fix potential memory leaks in i40e_remove()
| * 09ce728c9e genirq/matrix: Exclude managed interrupts in irq_matrix_allocated()
| * 3718a48ef4 vfs: fix readahead(2) on block devices
* | 0443350950 ANDROID: fix up rpmsg_device ABI break
* | 398b357f13 ANDROID: fix up platform_device ABI break
* | 7b96d6414a Merge 5.4.260 into android11-5.4-lts
|/
* 87e8e7a7aa Linux 5.4.260
* 8b0ecf2167 tty: 8250: Add support for Intashield IS-100
* 6dd5561b23 tty: 8250: Add support for Brainboxes UP cards
* 03145e0ff8 tty: 8250: Add support for additional Brainboxes UC cards
* 5a6471372f tty: 8250: Remove UC-257 and UC-431
* 72f236b57f usb: storage: set 1.50 as the lower bcdDevice for older "Super Top" compatibility
* 792a91fcd2 PCI: Prevent xHCI driver from claiming AMD VanGogh USB3 DRD device
* 4b865e0d78 Revert "ARM: dts: Move am33xx and am43xx mmc nodes to sdhci-omap driver"
* 4e53bab11f nvmet-tcp: Fix a possible UAF in queue intialization setup
* 2c9415ec8e nvmet-tcp: move send/recv error handling in the send/recv methods instead of call-sites
* 784ef618b2 remove the sx8 block driver
* a31f8222a7 ata: ahci: fix enum constants for gcc-13
* cc1afa62e2 net: chelsio: cxgb4: add an error code check in t4_load_phy_fw
* 7e429d1f39 platform/mellanox: mlxbf-tmfifo: Fix a warning message
* 5f4f58eac3 platform/x86: asus-wmi: Change ASUS_WMI_BRN_DOWN code from 0x20 to 0x2e
* 88d1aa03eb scsi: mpt3sas: Fix in error path
* b1f62e3ef9 fbdev: uvesafb: Call cn_del_callback() at the end of uvesafb_exit()
* fb02de6479 ASoC: rt5650: fix the wrong result of key button
* b6c09ff5ea netfilter: nfnetlink_log: silence bogus compiler warning
* 6c23b6d308 spi: npcm-fiu: Fix UMA reads when dummy.nbytes == 0
* 788b308340 fbdev: atyfb: only use ioremap_uc() on i386 and ia64
* 848b9c6888 Input: synaptics-rmi4 - handle reset delay when using SMBus trsnsport
* a0bf183db4 dmaengine: ste_dma40: Fix PM disable depth imbalance in d40_probe
* 39ae053abb irqchip/stm32-exti: add missing DT IRQ flag translation
* fbcd05a0db Input: i8042 - add Fujitsu Lifebook E5411 to i8042 quirk table
* cda248f169 x86: Fix .brk attribute in linker script
* 01e6885b75 rpmsg: Fix possible refcount leak in rpmsg_register_device_override()
* cff56d7a92 rpmsg: glink: Release driver_override
* 3d14785980 rpmsg: Fix calling device_lock() on non-initialized device
* e70898ae1a rpmsg: Fix kfree() of static memory on setting driver_override
* 0df5d80135 rpmsg: Constify local variable in field store macro
* 063444d66f driver: platform: Add helper for safer setting of driver_override
* 83ecffd40c ext4: fix BUG in ext4_mb_new_inode_pa() due to overflow
* 66cfd4cf6a ext4: avoid overlapping preallocations due to overflow
* 1e0a5dec26 ext4: add two helper functions extent_logical_end() and pa_logical_end()
* c2102ac103 x86/mm: Fix RESERVE_BRK() for older binutils
* ced79d864b x86/mm: Simplify RESERVE_BRK()
* 5fc242c118 nfsd: lock_rename() needs both directories to live on the same fs
* e9a988cd4c f2fs: fix to do sanity check on inode type during garbage collection
* 750de03de7 smbdirect: missing rc checks while waiting for rdma events
* 5776aeee2a kobject: Fix slab-out-of-bounds in fill_kobj_path()
* 0a45e0e5dd arm64: fix a concurrency issue in emulation_proc_handler()
* 6ba2ffe3cb drm/dp_mst: Fix NULL deref in get_mst_branch_device_by_guid_helper()
* 9d29933f36 x86/i8259: Skip probing when ACPI/MADT advertises PCAT compatibility
* 1ed21b207e i40e: Fix wrong check for I40E_TXR_FLAGS_WB_ON_ITR
* f48670c3b0 clk: Sanitize possible_parent_show to Handle Return Value of of_clk_get_parent_name
* 511f3e9bbb perf/core: Fix potential NULL deref
* 8de78231cb nvmem: imx: correct nregs for i.MX6UL
* 0b2c3a8601 nvmem: imx: correct nregs for i.MX6SLL
* 6063678df7 nvmem: imx: correct nregs for i.MX6ULL
* 12337d3e88 i2c: aspeed: Fix i2c bus hang in slave read
* e3d8ef87a9 i2c: stm32f7: Fix PEC handling in case of SMBUS transfers
* 5764f6e546 i2c: muxes: i2c-demux-pinctrl: Use of_get_i2c_adapter_by_node()
* a3b9bcedd7 i2c: muxes: i2c-mux-gpmux: Use of_get_i2c_adapter_by_node()
* 07ec3d952a i2c: muxes: i2c-mux-pinctrl: Use of_get_i2c_adapter_by_node()
* 519ff2d9fe iio: exynos-adc: request second interupt only when touchscreen mode is used
* 2bf9fbd136 gtp: fix fragmentation needed check with gso
* 2ab1b7ad50 gtp: uapi: fix GTPA_MAX
* 54ba3b8267 tcp: fix wrong RTO timeout when received SACK reneging
* 29cb3f81bc r8152: Cancel hw_phy_work if we have an error in probe
* 6124d0b100 r8152: Run the unload routine if we have errors during probe
* 1d3cb4aa93 r8152: Increase USB control msg timeout to 5000ms as per spec
* 2f8da95116 net: ieee802154: adf7242: Fix some potential buffer overflow in adf7242_stats_show()
* ec885679fa igc: Fix ambiguity in the ethtool advertising
* 3b098edafe neighbour: fix various data-races
* 418ca6e63e igb: Fix potential memory leak in igb_add_ethtool_nfc_entry
* 00ef4a7de6 treewide: Spelling fix in comment
* e44e78ff44 r8169: fix the KCSAN reported data race in rtl_rx while reading desc->opts1
* b9ba50fc18 r8169: fix the KCSAN reported data-race in rtl_tx while reading TxDescArray[entry].opts1
* a27c6bfc52 virtio-mmio: fix memory leak of vm_dev
* 8d394fcb03 virtio_balloon: Fix endless deflation and inflation on arm64
* be84e96426 mcb-lpc: Reallocate memory region to avoid memory overlapping
* 3235094d55 mcb: Return actual parsed size when reading chameleon table
* fbe17a8be1 selftests/ftrace: Add new test case which checks non unique symbol
* 4d057ca86e mtd: rawnand: marvell: Ensure program page operations are successful

Change-Id: I58a8cd7194465f27b5fde3af6e27010d4d4c543c
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
Greg Kroah-Hartman 2024-01-09 13:25:41 +00:00
commit 80118b745c
482 changed files with 4218 additions and 4148 deletions

View File

@ -55,7 +55,7 @@ Required Properties:
corresponds to a range of host irqs.
For more details on TISCI IRQ resource management refer:
http://downloads.ti.com/tisci/esd/latest/2_tisci_msgs/rm/rm_irq.html
https://downloads.ti.com/tisci/esd/latest/2_tisci_msgs/rm/rm_irq.html
Example:
--------

View File

@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
VERSION = 5
PATCHLEVEL = 4
SUBLEVEL = 259
SUBLEVEL = 265
EXTRAVERSION =
NAME = Kleptomaniac Octopus

View File

@ -381,7 +381,7 @@
&mmc2 {
status = "okay";
vmmc-supply = <&wl12xx_vmmc>;
non-removable;
ti,non-removable;
bus-width = <4>;
cap-power-off-card;
pinctrl-names = "default";

View File

@ -22,7 +22,6 @@
pinctrl-0 = <&emmc_pins>;
bus-width = <8>;
status = "okay";
non-removable;
};
&am33xx_pinmux {

View File

@ -75,6 +75,7 @@
bus-width = <4>;
non-removable;
cap-power-off-card;
ti,needs-special-hs-handling;
keep-power-in-suspend;
pinctrl-names = "default";
pinctrl-0 = <&mmc3_pins &wl18xx_pins>;

View File

@ -389,6 +389,7 @@
bus-width = <4>;
non-removable;
cap-power-off-card;
ti,needs-special-hs-handling;
keep-power-in-suspend;
pinctrl-names = "default";
pinctrl-0 = <&mmc3_pins &wl18xx_pins>;

View File

@ -75,6 +75,7 @@
bus-width = <4>;
non-removable;
cap-power-off-card;
ti,needs-special-hs-handling;
keep-power-in-suspend;
pinctrl-names = "default";
pinctrl-0 = <&mmc3_pins &wl18xx_pins>;

View File

@ -782,7 +782,8 @@
bus-width = <4>;
pinctrl-names = "default";
pinctrl-0 = <&mmc3_pins &wlan_pins>;
non-removable;
ti,non-removable;
ti,needs-special-hs-handling;
cap-power-off-card;
keep-power-in-suspend;

View File

@ -700,7 +700,7 @@
&mmc2 {
status = "okay";
vmmc-supply = <&wl12xx_vmmc>;
non-removable;
ti,non-removable;
bus-width = <4>;
cap-power-off-card;
keep-power-in-suspend;

View File

@ -361,7 +361,7 @@
pinctrl-0 = <&emmc_pins>;
vmmc-supply = <&vmmcsd_fixed>;
bus-width = <8>;
non-removable;
ti,non-removable;
status = "okay";
};

View File

@ -176,7 +176,7 @@
vmmc-supply = <&vmmcsd_fixed>;
bus-width = <8>;
pinctrl-0 = <&mmc1_pins_default>;
non-removable;
ti,non-removable;
status = "okay";
};

View File

@ -473,7 +473,7 @@
vmmc-supply = <&vmmcsd_fixed>;
bus-width = <8>;
pinctrl-0 = <&mmc2_pins_default>;
non-removable;
ti,non-removable;
status = "okay";
};

View File

@ -341,7 +341,7 @@
pinctrl-0 = <&emmc_pins>;
vmmc-supply = <&ldo3_reg>;
bus-width = <8>;
non-removable;
ti,non-removable;
};
&mmc3 {
@ -351,7 +351,7 @@
pinctrl-0 = <&wireless_pins>;
vmmmc-supply = <&v3v3c_reg>;
bus-width = <4>;
non-removable;
ti,non-removable;
dmas = <&edma_xbar 12 0 1
&edma_xbar 13 0 2>;
dma-names = "tx", "rx";

View File

@ -69,7 +69,7 @@
pinctrl-0 = <&emmc_pins>;
vmmc-supply = <&vmmc_reg>;
bus-width = <8>;
non-removable;
ti,non-removable;
status = "disabled";
};

View File

@ -1333,8 +1333,10 @@
ranges = <0x0 0x60000 0x1000>;
mmc1: mmc@0 {
compatible = "ti,am335-sdhci";
compatible = "ti,omap4-hsmmc";
ti,dual-volt;
ti,needs-special-reset;
ti,needs-special-hs-handling;
dmas = <&edma 24 0>, <&edma 25 0>;
dma-names = "tx", "rx";
interrupts = <64>;
@ -1824,7 +1826,7 @@
ranges = <0x0 0xd8000 0x1000>;
mmc2: mmc@0 {
compatible = "ti,am335-sdhci";
compatible = "ti,omap4-hsmmc";
ti,needs-special-reset;
dmas = <&edma 2 0
&edma 3 0>;

View File

@ -259,11 +259,10 @@
ranges = <0x0 0x47810000 0x1000>;
mmc3: mmc@0 {
compatible = "ti,am335-sdhci";
compatible = "ti,omap4-hsmmc";
ti,needs-special-reset;
interrupts = <29>;
reg = <0x0 0x1000>;
status = "disabled";
};
};

View File

@ -250,11 +250,10 @@
ranges = <0x0 0x47810000 0x1000>;
mmc3: mmc@0 {
compatible = "ti,am437-sdhci";
compatible = "ti,omap4-hsmmc";
ti,needs-special-reset;
interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
reg = <0x0 0x1000>;
status = "disabled";
};
};

View File

@ -291,7 +291,7 @@
pinctrl-0 = <&emmc_pins>;
vmmc-supply = <&vmmc_3v3>;
bus-width = <8>;
non-removable;
ti,non-removable;
};
&spi0 {

View File

@ -872,7 +872,7 @@
pinctrl-names = "default", "sleep";
pinctrl-0 = <&emmc_pins_default>;
pinctrl-1 = <&emmc_pins_sleep>;
non-removable;
ti,non-removable;
};
&mmc3 {
@ -889,7 +889,7 @@
pinctrl-1 = <&mmc3_pins_sleep>;
cap-power-off-card;
keep-power-in-suspend;
non-removable;
ti,non-removable;
#address-cells = <1>;
#size-cells = <0>;

View File

@ -1104,8 +1104,9 @@
ranges = <0x0 0x60000 0x1000>;
mmc1: mmc@0 {
compatible = "ti,am437-sdhci";
compatible = "ti,omap4-hsmmc";
reg = <0x0 0x1000>;
ti,dual-volt;
ti,needs-special-reset;
dmas = <&edma 24 0>,
<&edma 25 0>;
@ -1640,7 +1641,7 @@
ranges = <0x0 0xd8000 0x1000>;
mmc2: mmc@0 {
compatible = "ti,am437-sdhci";
compatible = "ti,omap4-hsmmc";
reg = <0x0 0x1000>;
ti,needs-special-reset;
dmas = <&edma 2 0>,

View File

@ -694,7 +694,7 @@
pinctrl-1 = <&mmc3_pins_sleep>;
cap-power-off-card;
keep-power-in-suspend;
non-removable;
ti,non-removable;
#address-cells = <1>;
#size-cells = <0>;

View File

@ -578,7 +578,7 @@
status = "disabled";
};
gpt: gpt@2098000 {
gpt: timer@2098000 {
compatible = "fsl,imx6q-gpt", "fsl,imx31-gpt";
reg = <0x02098000 0x4000>;
interrupts = <0 55 IRQ_TYPE_LEVEL_HIGH>;

View File

@ -386,7 +386,7 @@
clock-names = "ipg", "per";
};
gpt: gpt@2098000 {
gpt: timer@2098000 {
compatible = "fsl,imx6sl-gpt";
reg = <0x02098000 0x4000>;
interrupts = <0 55 IRQ_TYPE_LEVEL_HIGH>;

View File

@ -475,7 +475,7 @@
status = "disabled";
};
gpt: gpt@2098000 {
gpt: timer@2098000 {
compatible = "fsl,imx6sx-gpt", "fsl,imx6dl-gpt";
reg = <0x02098000 0x4000>;
interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;

View File

@ -433,7 +433,7 @@
status = "disabled";
};
gpt1: gpt@2098000 {
gpt1: timer@2098000 {
compatible = "fsl,imx6ul-gpt", "fsl,imx6sx-gpt";
reg = <0x02098000 0x4000>;
interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
@ -707,7 +707,7 @@
reg = <0x020e4000 0x4000>;
};
gpt2: gpt@20e8000 {
gpt2: timer@20e8000 {
compatible = "fsl,imx6ul-gpt", "fsl,imx6sx-gpt";
reg = <0x020e8000 0x4000>;
interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;

View File

@ -446,8 +446,8 @@
fsl,input-sel = <&iomuxc>;
};
gpt1: gpt@302d0000 {
compatible = "fsl,imx7d-gpt", "fsl,imx6sx-gpt";
gpt1: timer@302d0000 {
compatible = "fsl,imx7d-gpt", "fsl,imx6dl-gpt";
reg = <0x302d0000 0x10000>;
interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_GPT1_ROOT_CLK>,
@ -455,8 +455,8 @@
clock-names = "ipg", "per";
};
gpt2: gpt@302e0000 {
compatible = "fsl,imx7d-gpt", "fsl,imx6sx-gpt";
gpt2: timer@302e0000 {
compatible = "fsl,imx7d-gpt", "fsl,imx6dl-gpt";
reg = <0x302e0000 0x10000>;
interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_GPT2_ROOT_CLK>,
@ -465,8 +465,8 @@
status = "disabled";
};
gpt3: gpt@302f0000 {
compatible = "fsl,imx7d-gpt", "fsl,imx6sx-gpt";
gpt3: timer@302f0000 {
compatible = "fsl,imx7d-gpt", "fsl,imx6dl-gpt";
reg = <0x302f0000 0x10000>;
interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_GPT3_ROOT_CLK>,
@ -475,8 +475,8 @@
status = "disabled";
};
gpt4: gpt@30300000 {
compatible = "fsl,imx7d-gpt", "fsl,imx6sx-gpt";
gpt4: timer@30300000 {
compatible = "fsl,imx7d-gpt", "fsl,imx6dl-gpt";
reg = <0x30300000 0x10000>;
interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_GPT4_ROOT_CLK>,

View File

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

View File

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

View File

@ -16,6 +16,7 @@
ENTRY(mmioset)
ENTRY(memset)
UNWIND( .fnstart )
and r1, r1, #255 @ cast to unsigned char
ands r3, r0, #3 @ 1 unaligned?
mov ip, r0 @ preserve r0 as return value
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,
GFP_KERNEL, "mmdc%d", ret);
if (!name) {
ret = -ENOMEM;
goto pmu_release_id;
}
pmu_mmdc->mmdc_ipg_clk = mmdc_ipg_clk;
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:
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);
hrtimer_cancel(&pmu_mmdc->hrtimer);
pmu_release_id:
ida_simple_remove(&mmdc_ida, pmu_mmdc->id);
pmu_free:
kfree(pmu_mmdc);
return ret;

View File

@ -362,7 +362,8 @@ static int __init xen_guest_init(void)
* for secondary CPUs as they are brought up.
* 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)
return -ENOMEM;

View File

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

View File

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

View File

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

View File

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

View File

@ -449,6 +449,29 @@ cpuid_feature_extract_unsigned_field(u64 features, int field)
return cpuid_feature_extract_unsigned_field_width(features, field, 4);
}
/*
* Fields that identify the version of the Performance Monitors Extension do
* not follow the standard ID scheme. See ARM DDI 0487E.a page D13-2825,
* "Alternative ID scheme used for the Performance Monitors Extension version".
*/
static inline u64 __attribute_const__
cpuid_feature_cap_perfmon_field(u64 features, int field, u64 cap)
{
u64 val = cpuid_feature_extract_unsigned_field(features, field);
u64 mask = GENMASK_ULL(field + 3, field);
/* Treat IMPLEMENTATION DEFINED functionality as unimplemented */
if (val == 0xf)
val = 0;
if (val > cap) {
features &= ~mask;
features |= (cap << field) & mask;
}
return features;
}
static inline u64 arm64_ftr_mask(const struct arm64_ftr_bits *ftrp)
{
return (u64)GENMASK(ftrp->shift + ftrp->width - 1, ftrp->shift);

View File

@ -679,6 +679,12 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
if (pte_hw_dirty(pte))
pte = pte_mkdirty(pte);
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;
}

View File

@ -735,6 +735,12 @@
#define ID_AA64DFR0_TRACEVER_SHIFT 4
#define ID_AA64DFR0_DEBUGVER_SHIFT 0
#define ID_AA64DFR0_PMUVER_8_1 0x4
#define ID_DFR0_PERFMON_SHIFT 24
#define ID_DFR0_PERFMON_8_1 0x4
#define ID_ISAR5_RDM_SHIFT 24
#define ID_ISAR5_CRC32_SHIFT 16
#define ID_ISAR5_SHA2_SHIFT 12

View File

@ -208,10 +208,12 @@ static int emulation_proc_handler(struct ctl_table *table, int write,
loff_t *ppos)
{
int ret = 0;
struct insn_emulation *insn = container_of(table->data, struct insn_emulation, current_mode);
enum insn_emulation_mode prev_mode = insn->current_mode;
struct insn_emulation *insn;
enum insn_emulation_mode prev_mode;
mutex_lock(&insn_emulation_mutex);
insn = container_of(table->data, struct insn_emulation, current_mode);
prev_mode = insn->current_mode;
ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos);
if (ret || !write || prev_mode == insn->current_mode)

View File

@ -1105,6 +1105,16 @@ static u64 read_id_reg(const struct kvm_vcpu *vcpu,
(0xfUL << ID_AA64ISAR1_API_SHIFT) |
(0xfUL << ID_AA64ISAR1_GPA_SHIFT) |
(0xfUL << ID_AA64ISAR1_GPI_SHIFT));
} else if (id == SYS_ID_AA64DFR0_EL1) {
/* Limit guests to PMUv3 for ARMv8.1 */
val = cpuid_feature_cap_perfmon_field(val,
ID_AA64DFR0_PMUVER_SHIFT,
ID_AA64DFR0_PMUVER_8_1);
} else if (id == SYS_ID_DFR0_EL1) {
/* Limit guests to PMUv3 for ARMv8.1 */
val = cpuid_feature_cap_perfmon_field(val,
ID_DFR0_PERFMON_SHIFT,
ID_DFR0_PERFMON_8_1);
}
return val;

View File

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

View File

@ -465,6 +465,7 @@ struct pdc_model { /* for PDC_MODEL */
unsigned long arch_rev;
unsigned long pot_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) */

View File

@ -511,13 +511,13 @@
* to a CPU TLB 4k PFN (4k => 12 bits to shift) */
#define PAGE_ADD_SHIFT (PAGE_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 */
.macro convert_for_tlb_insert20 pte,tmp
#ifdef CONFIG_HUGETLB_PAGE
copy \pte,\tmp
extrd,u \tmp,(63-ASM_PFN_PTE_SHIFT)+(63-58)+PAGE_ADD_SHIFT,\
64-PAGE_SHIFT-PAGE_ADD_SHIFT,\pte
extrd,u \tmp,PFN_START_BIT,PFN_START_BIT+1,\pte
depdi _PAGE_SIZE_ENCODING_DEFAULT,63,\
(63-58)+PAGE_ADD_SHIFT,\pte
@ -525,8 +525,7 @@
depdi _HUGE_PAGE_SIZE_ENCODING_DEFAULT,63,\
(63-58)+PAGE_ADD_HUGE_SHIFT,\pte
#else /* Huge pages disabled */
extrd,u \pte,(63-ASM_PFN_PTE_SHIFT)+(63-58)+PAGE_ADD_SHIFT,\
64-PAGE_SHIFT-PAGE_ADD_SHIFT,\pte
extrd,u \pte,PFN_START_BIT,PFN_START_BIT+1,\pte
depdi _PAGE_SIZE_ENCODING_DEFAULT,63,\
(63-58)+PAGE_ADD_SHIFT,\pte
#endif

View File

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

View File

@ -24,6 +24,15 @@
#include <asm/feature-fixups.h>
#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) \
BEGIN_FTR_SECTION \
b 2f; \
@ -42,9 +51,11 @@ END_FTR_SECTION_IFSET(CPU_FTR_VSX); \
2: SAVE_32VSRS(n,c,base); \
3:
#else
#define __REST_1FPVSR(n,b,base) REST_FPR(n, base)
#define __REST_32FPVSRS(n,b,base) REST_32FPRS(n, base)
#define __SAVE_32FPVSRS(n,b,base) SAVE_32FPRS(n, base)
#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 SAVE_32FPVSRS(n,c,base) __SAVE_32FPVSRS(n,__REG_##c,__REG_##base)
@ -68,6 +79,7 @@ _GLOBAL(store_fp_state)
SAVE_32FPVSRS(0, R4, R3)
mffs fr0
stfd fr0,FPSTATE_FPSCR(r3)
REST_1FPVSR(0, R4, R3)
blr
EXPORT_SYMBOL(store_fp_state)
@ -132,6 +144,7 @@ _GLOBAL(save_fpu)
2: SAVE_32FPVSRS(0, R4, R6)
mffs fr0
stfd fr0,FPSTATE_FPSCR(r6)
REST_1FPVSR(0, R4, R6)
blr
/*

View File

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

View File

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

View File

@ -50,7 +50,7 @@ static int trace_imc_mem_size;
* core and trace-imc
*/
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,
.refc = 0,
};

View File

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

View File

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

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);
if (pmd_none(*pmd) || pmd_large(*pmd))
continue;
page = virt_to_page(pmd_val(*pmd));
page = phys_to_page(pmd_val(*pmd));
set_bit(PG_arch_1, &page->flags);
} 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))
continue;
if (!pud_folded(*pud)) {
page = virt_to_page(pud_val(*pud));
for (i = 0; i < 3; i++)
page = phys_to_page(pud_val(*pud));
for (i = 0; i < 4; i++)
set_bit(PG_arch_1, &page[i].flags);
}
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))
continue;
if (!p4d_folded(*p4d)) {
page = virt_to_page(p4d_val(*p4d));
for (i = 0; i < 3; i++)
page = phys_to_page(p4d_val(*p4d));
for (i = 0; i < 4; i++)
set_bit(PG_arch_1, &page[i].flags);
}
mark_kernel_pud(p4d, addr, next);
@ -173,8 +173,8 @@ static void mark_kernel_pgd(void)
if (pgd_none(*pgd))
continue;
if (!pgd_folded(*pgd)) {
page = virt_to_page(pgd_val(*pgd));
for (i = 0; i < 3; i++)
page = phys_to_page(pgd_val(*pgd));
for (i = 0; i < 4; i++)
set_bit(PG_arch_1, &page[i].flags);
}
mark_kernel_p4d(pgd, addr, next);

View File

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

View File

@ -26,6 +26,17 @@ config STACK_DEBUG
every function call and will therefore incur a major
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
bool "Use 4Kb for kernel stacks instead of 8Kb"
depends on DEBUG_KERNEL && (MMU || BROKEN) && !PAGE_SIZE_64KB

View File

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

View File

@ -469,6 +469,7 @@
#define MSR_AMD64_OSVW_STATUS 0xc0010141
#define MSR_AMD64_LS_CFG 0xc0011020
#define MSR_AMD64_DC_CFG 0xc0011022
#define MSR_AMD64_TW_CFG 0xc0011023
#define MSR_AMD64_DE_CFG 0xc0011029
#define MSR_AMD64_DE_CFG_LFENCE_SERIALIZE_BIT 1

View File

@ -11,13 +11,6 @@
#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;
/*

View File

@ -94,27 +94,16 @@ extern unsigned long _brk_end;
void *extend_brk(size_t size, size_t align);
/*
* Reserve space in the brk section. The name must be unique within
* the file, and somewhat descriptive. The size is in bytes. Must be
* used at file scope.
* Reserve space in the .brk section, which is a block of memory from which the
* caller is allowed to allocate very early (before even memblock is available)
* 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
* 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.)
* The size is in bytes.
*/
#define RESERVE_BRK(name,sz) \
static void __section(.discard.text) __used notrace \
__brk_reservation_fn_##name##__(void) { \
asm volatile ( \
".pushsection .brk_reservation,\"aw\",@nobits;" \
".brk." #name ":" \
" 1:.skip %c0;" \
" .size .brk." #name ", . - 1b;" \
" .popsection" \
: : "i" (sz)); \
}
#define RESERVE_BRK(name, size) \
__section(.bss..brk) __aligned(1) __used \
static char __brk_##name[size]
/* Helper for reserving space for arrays of things */
#define RESERVE_BRK_ARRAY(type, name, entries) \
@ -132,12 +121,19 @@ asmlinkage void __init x86_64_start_reservations(char *real_mode_data);
#endif /* __i386__ */
#endif /* _SETUP */
#else
#define RESERVE_BRK(name,sz) \
.pushsection .brk_reservation,"aw",@nobits; \
.brk.name: \
1: .skip sz; \
.size .brk.name,.-1b; \
#else /* __ASSEMBLY */
.macro __RESERVE_BRK name, size
.pushsection .bss..brk, "aw"
SYM_DATA_START(__brk_\name)
.skip \size
SYM_DATA_END(__brk_\name)
.popsection
.endm
#define RESERVE_BRK(name, size) __RESERVE_BRK name, size
#endif /* __ASSEMBLY__ */
#endif /* _ASM_X86_SETUP_H */

View File

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

View File

@ -1248,5 +1248,8 @@ static void zenbleed_check_cpu(void *unused)
void amd_check_microcode(void)
{
if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD)
return;
on_each_cpu(zenbleed_check_cpu, NULL, 1);
}

View File

@ -88,8 +88,12 @@ static void hygon_get_topology(struct cpuinfo_x86 *c)
if (!err)
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);
} else if (cpu_has(c, X86_FEATURE_NODEID_MSR)) {

View File

@ -32,6 +32,7 @@
*/
static void init_8259A(int auto_eoi);
static bool pcat_compat __ro_after_init;
static int i8259A_auto_eoi;
DEFINE_RAW_SPINLOCK(i8259A_lock);
@ -301,15 +302,32 @@ static void unmask_8259A(void)
static int probe_8259A(void)
{
unsigned char new_val, probe_val = ~(1 << PIC_CASCADE_IR);
unsigned long flags;
unsigned char probe_val = ~(1 << PIC_CASCADE_IR);
unsigned char new_val;
/*
* 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.
* If MADT has the PCAT_COMPAT flag set, then do not bother probing
* for the PIC. Some BIOSes leave the PIC uninitialized and probing
* fails.
*
* 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);
@ -431,5 +449,9 @@ static int __init i8259A_init_ops(void)
return 0;
}
device_initcall(i8259A_init_ops);
void __init legacy_pic_pcat_compat(void)
{
pcat_compat = true;
}

View File

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

View File

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

View File

@ -2720,6 +2720,7 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
case MSR_AMD64_PATCH_LOADER:
case MSR_AMD64_BU_CFG2:
case MSR_AMD64_DC_CFG:
case MSR_AMD64_TW_CFG:
case MSR_F15H_EX_CFG:
break;
@ -3029,6 +3030,7 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
case MSR_AMD64_BU_CFG2:
case MSR_IA32_PERF_CTL:
case MSR_AMD64_DC_CFG:
case MSR_AMD64_TW_CFG:
case MSR_F15H_EX_CFG:
msr_info->data = 0;
break;

View File

@ -581,13 +581,6 @@ static int __init numa_register_memblks(struct numa_meminfo *mi)
if (start >= end)
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);
}

View File

@ -1374,6 +1374,7 @@ static void tg_conf_updated(struct throtl_grp *tg, bool global)
tg_bps_limit(tg, READ), tg_bps_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
* considered to have rules if either the tg itself or any of its
@ -1401,6 +1402,7 @@ static void tg_conf_updated(struct throtl_grp *tg, bool global)
this_tg->latency_target = max(this_tg->latency_target,
parent_tg->latency_target);
}
rcu_read_unlock();
/*
* We're already holding queue_lock and know @tg is valid. Let's

View File

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

View File

@ -503,7 +503,6 @@ static struct acpi_iort_node *iort_find_dev_node(struct device *dev)
node = iort_get_iort_node(dev->fwnode);
if (node)
return node;
/*
* if not, then it should be a platform device defined in
* DSDT/SSDT (with Named Component node in IORT)
@ -522,22 +521,22 @@ static struct acpi_iort_node *iort_find_dev_node(struct device *dev)
}
/**
* iort_msi_map_rid() - Map a MSI requester ID for a device
* iort_msi_map_id() - Map a MSI input ID for a device
* @dev: The device for which the mapping is to be done.
* @req_id: The device requester ID.
* @input_id: The device input ID.
*
* Returns: mapped MSI RID on success, input requester ID otherwise
* Returns: mapped MSI ID on success, input ID otherwise
*/
u32 iort_msi_map_rid(struct device *dev, u32 req_id)
u32 iort_msi_map_id(struct device *dev, u32 input_id)
{
struct acpi_iort_node *node;
u32 dev_id;
node = iort_find_dev_node(dev);
if (!node)
return req_id;
return input_id;
iort_node_map_id(node, req_id, &dev_id, IORT_MSI_TYPE);
iort_node_map_id(node, input_id, &dev_id, IORT_MSI_TYPE);
return dev_id;
}
@ -594,13 +593,13 @@ static int __maybe_unused iort_find_its_base(u32 its_id, phys_addr_t *base)
/**
* iort_dev_find_its_id() - Find the ITS identifier for a device
* @dev: The device.
* @req_id: Device's requester ID
* @id: Device's ID
* @idx: Index of the ITS identifier list.
* @its_id: ITS identifier.
*
* Returns: 0 on success, appropriate error value otherwise
*/
static int iort_dev_find_its_id(struct device *dev, u32 req_id,
static int iort_dev_find_its_id(struct device *dev, u32 id,
unsigned int idx, int *its_id)
{
struct acpi_iort_its_group *its;
@ -610,7 +609,7 @@ static int iort_dev_find_its_id(struct device *dev, u32 req_id,
if (!node)
return -ENXIO;
node = iort_node_map_id(node, req_id, NULL, IORT_MSI_TYPE);
node = iort_node_map_id(node, id, NULL, IORT_MSI_TYPE);
if (!node)
return -ENXIO;
@ -633,19 +632,20 @@ static int iort_dev_find_its_id(struct device *dev, u32 req_id,
*
* Returns: the MSI domain for this device, NULL otherwise
*/
struct irq_domain *iort_get_device_domain(struct device *dev, u32 req_id)
struct irq_domain *iort_get_device_domain(struct device *dev, u32 id,
enum irq_domain_bus_token bus_token)
{
struct fwnode_handle *handle;
int its_id;
if (iort_dev_find_its_id(dev, req_id, 0, &its_id))
if (iort_dev_find_its_id(dev, id, 0, &its_id))
return NULL;
handle = iort_find_domain_token(its_id);
if (!handle)
return NULL;
return irq_find_matching_fwnode(handle, DOMAIN_BUS_PCI_MSI);
return irq_find_matching_fwnode(handle, bus_token);
}
static void iort_set_device_domain(struct device *dev,

View File

@ -156,8 +156,8 @@ static int create_pnp_modalias(struct acpi_device *acpi_dev, char *modalias,
return 0;
len = snprintf(modalias, size, "acpi:");
if (len <= 0)
return len;
if (len >= size)
return -ENOMEM;
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);
ACPI_FREE(buf.pointer);
if (len <= 0)
return len;
if (len >= size)
return -ENOMEM;
size -= len;
of_compatible = acpi_dev->data.of_compatible;
if (of_compatible->type == ACPI_TYPE_PACKAGE) {

View File

@ -442,6 +442,25 @@ static const struct dmi_system_id asus_laptop[] = {
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 = {

View File

@ -24,6 +24,7 @@
#include <linux/libata.h>
#include <linux/phy/phy.h>
#include <linux/regulator/consumer.h>
#include <linux/bits.h>
/* Enclosure Management Control */
#define EM_CTRL_MSG_TYPE 0x000f0000
@ -54,12 +55,12 @@ enum {
AHCI_PORT_PRIV_FBS_DMA_SZ = AHCI_CMD_SLOT_SZ +
AHCI_CMD_TBL_AR_SZ +
(AHCI_RX_FIS_SZ * 16),
AHCI_IRQ_ON_SG = (1 << 31),
AHCI_CMD_ATAPI = (1 << 5),
AHCI_CMD_WRITE = (1 << 6),
AHCI_CMD_PREFETCH = (1 << 7),
AHCI_CMD_RESET = (1 << 8),
AHCI_CMD_CLR_BUSY = (1 << 10),
AHCI_IRQ_ON_SG = BIT(31),
AHCI_CMD_ATAPI = BIT(5),
AHCI_CMD_WRITE = BIT(6),
AHCI_CMD_PREFETCH = BIT(7),
AHCI_CMD_RESET = BIT(8),
AHCI_CMD_CLR_BUSY = BIT(10),
RX_FIS_PIO_SETUP = 0x20, /* offset of PIO Setup FIS data */
RX_FIS_D2H_REG = 0x40, /* offset of D2H Register FIS data */
@ -77,37 +78,37 @@ enum {
HOST_CAP2 = 0x24, /* host capabilities, extended */
/* HOST_CTL bits */
HOST_RESET = (1 << 0), /* reset controller; self-clear */
HOST_IRQ_EN = (1 << 1), /* global IRQ enable */
HOST_MRSM = (1 << 2), /* MSI Revert to Single Message */
HOST_AHCI_EN = (1 << 31), /* AHCI enabled */
HOST_RESET = BIT(0), /* reset controller; self-clear */
HOST_IRQ_EN = BIT(1), /* global IRQ enable */
HOST_MRSM = BIT(2), /* MSI Revert to Single Message */
HOST_AHCI_EN = BIT(31), /* AHCI enabled */
/* HOST_CAP bits */
HOST_CAP_SXS = (1 << 5), /* Supports External SATA */
HOST_CAP_EMS = (1 << 6), /* Enclosure Management support */
HOST_CAP_CCC = (1 << 7), /* Command Completion Coalescing */
HOST_CAP_PART = (1 << 13), /* Partial state capable */
HOST_CAP_SSC = (1 << 14), /* Slumber state capable */
HOST_CAP_PIO_MULTI = (1 << 15), /* PIO multiple DRQ support */
HOST_CAP_FBS = (1 << 16), /* FIS-based switching support */
HOST_CAP_PMP = (1 << 17), /* Port Multiplier support */
HOST_CAP_ONLY = (1 << 18), /* Supports AHCI mode only */
HOST_CAP_CLO = (1 << 24), /* Command List Override support */
HOST_CAP_LED = (1 << 25), /* Supports activity LED */
HOST_CAP_ALPM = (1 << 26), /* Aggressive Link PM support */
HOST_CAP_SSS = (1 << 27), /* Staggered Spin-up */
HOST_CAP_MPS = (1 << 28), /* Mechanical presence switch */
HOST_CAP_SNTF = (1 << 29), /* SNotification register */
HOST_CAP_NCQ = (1 << 30), /* Native Command Queueing */
HOST_CAP_64 = (1 << 31), /* PCI DAC (64-bit DMA) support */
HOST_CAP_SXS = BIT(5), /* Supports External SATA */
HOST_CAP_EMS = BIT(6), /* Enclosure Management support */
HOST_CAP_CCC = BIT(7), /* Command Completion Coalescing */
HOST_CAP_PART = BIT(13), /* Partial state capable */
HOST_CAP_SSC = BIT(14), /* Slumber state capable */
HOST_CAP_PIO_MULTI = BIT(15), /* PIO multiple DRQ support */
HOST_CAP_FBS = BIT(16), /* FIS-based switching support */
HOST_CAP_PMP = BIT(17), /* Port Multiplier support */
HOST_CAP_ONLY = BIT(18), /* Supports AHCI mode only */
HOST_CAP_CLO = BIT(24), /* Command List Override support */
HOST_CAP_LED = BIT(25), /* Supports activity LED */
HOST_CAP_ALPM = BIT(26), /* Aggressive Link PM support */
HOST_CAP_SSS = BIT(27), /* Staggered Spin-up */
HOST_CAP_MPS = BIT(28), /* Mechanical presence switch */
HOST_CAP_SNTF = BIT(29), /* SNotification register */
HOST_CAP_NCQ = BIT(30), /* Native Command Queueing */
HOST_CAP_64 = BIT(31), /* PCI DAC (64-bit DMA) support */
/* HOST_CAP2 bits */
HOST_CAP2_BOH = (1 << 0), /* BIOS/OS handoff supported */
HOST_CAP2_NVMHCI = (1 << 1), /* NVMHCI supported */
HOST_CAP2_APST = (1 << 2), /* Automatic partial to slumber */
HOST_CAP2_SDS = (1 << 3), /* Support device sleep */
HOST_CAP2_SADM = (1 << 4), /* Support aggressive DevSlp */
HOST_CAP2_DESO = (1 << 5), /* DevSlp from slumber only */
HOST_CAP2_BOH = BIT(0), /* BIOS/OS handoff supported */
HOST_CAP2_NVMHCI = BIT(1), /* NVMHCI supported */
HOST_CAP2_APST = BIT(2), /* Automatic partial to slumber */
HOST_CAP2_SDS = BIT(3), /* Support device sleep */
HOST_CAP2_SADM = BIT(4), /* Support aggressive DevSlp */
HOST_CAP2_DESO = BIT(5), /* DevSlp from slumber only */
/* registers for each SATA port */
PORT_LST_ADDR = 0x00, /* command list DMA addr */
@ -129,24 +130,24 @@ enum {
PORT_DEVSLP = 0x44, /* device sleep */
/* PORT_IRQ_{STAT,MASK} bits */
PORT_IRQ_COLD_PRES = (1 << 31), /* cold presence detect */
PORT_IRQ_TF_ERR = (1 << 30), /* task file error */
PORT_IRQ_HBUS_ERR = (1 << 29), /* host bus fatal error */
PORT_IRQ_HBUS_DATA_ERR = (1 << 28), /* host bus data error */
PORT_IRQ_IF_ERR = (1 << 27), /* interface fatal error */
PORT_IRQ_IF_NONFATAL = (1 << 26), /* interface non-fatal error */
PORT_IRQ_OVERFLOW = (1 << 24), /* xfer exhausted available S/G */
PORT_IRQ_BAD_PMP = (1 << 23), /* incorrect port multiplier */
PORT_IRQ_COLD_PRES = BIT(31), /* cold presence detect */
PORT_IRQ_TF_ERR = BIT(30), /* task file error */
PORT_IRQ_HBUS_ERR = BIT(29), /* host bus fatal error */
PORT_IRQ_HBUS_DATA_ERR = BIT(28), /* host bus data error */
PORT_IRQ_IF_ERR = BIT(27), /* interface fatal error */
PORT_IRQ_IF_NONFATAL = BIT(26), /* interface non-fatal error */
PORT_IRQ_OVERFLOW = BIT(24), /* xfer exhausted available S/G */
PORT_IRQ_BAD_PMP = BIT(23), /* incorrect port multiplier */
PORT_IRQ_PHYRDY = (1 << 22), /* PhyRdy changed */
PORT_IRQ_DEV_ILCK = (1 << 7), /* device interlock */
PORT_IRQ_CONNECT = (1 << 6), /* port connect change status */
PORT_IRQ_SG_DONE = (1 << 5), /* descriptor processed */
PORT_IRQ_UNK_FIS = (1 << 4), /* unknown FIS rx'd */
PORT_IRQ_SDB_FIS = (1 << 3), /* Set Device Bits FIS rx'd */
PORT_IRQ_DMAS_FIS = (1 << 2), /* DMA Setup FIS rx'd */
PORT_IRQ_PIOS_FIS = (1 << 1), /* PIO Setup FIS rx'd */
PORT_IRQ_D2H_REG_FIS = (1 << 0), /* D2H Register FIS rx'd */
PORT_IRQ_PHYRDY = BIT(22), /* PhyRdy changed */
PORT_IRQ_DEV_ILCK = BIT(7), /* device interlock */
PORT_IRQ_CONNECT = BIT(6), /* port connect change status */
PORT_IRQ_SG_DONE = BIT(5), /* descriptor processed */
PORT_IRQ_UNK_FIS = BIT(4), /* unknown FIS rx'd */
PORT_IRQ_SDB_FIS = BIT(3), /* Set Device Bits FIS rx'd */
PORT_IRQ_DMAS_FIS = BIT(2), /* DMA Setup FIS rx'd */
PORT_IRQ_PIOS_FIS = BIT(1), /* PIO Setup FIS rx'd */
PORT_IRQ_D2H_REG_FIS = BIT(0), /* D2H Register FIS rx'd */
PORT_IRQ_FREEZE = PORT_IRQ_HBUS_ERR |
PORT_IRQ_IF_ERR |
@ -162,34 +163,34 @@ enum {
PORT_IRQ_PIOS_FIS | PORT_IRQ_D2H_REG_FIS,
/* PORT_CMD bits */
PORT_CMD_ASP = (1 << 27), /* Aggressive Slumber/Partial */
PORT_CMD_ALPE = (1 << 26), /* Aggressive Link PM enable */
PORT_CMD_ATAPI = (1 << 24), /* Device is ATAPI */
PORT_CMD_FBSCP = (1 << 22), /* FBS Capable Port */
PORT_CMD_ESP = (1 << 21), /* External Sata Port */
PORT_CMD_HPCP = (1 << 18), /* HotPlug Capable Port */
PORT_CMD_PMP = (1 << 17), /* PMP attached */
PORT_CMD_LIST_ON = (1 << 15), /* cmd list DMA engine running */
PORT_CMD_FIS_ON = (1 << 14), /* FIS DMA engine running */
PORT_CMD_FIS_RX = (1 << 4), /* Enable FIS receive DMA engine */
PORT_CMD_CLO = (1 << 3), /* Command list override */
PORT_CMD_POWER_ON = (1 << 2), /* Power up device */
PORT_CMD_SPIN_UP = (1 << 1), /* Spin up device */
PORT_CMD_START = (1 << 0), /* Enable port DMA engine */
PORT_CMD_ASP = BIT(27), /* Aggressive Slumber/Partial */
PORT_CMD_ALPE = BIT(26), /* Aggressive Link PM enable */
PORT_CMD_ATAPI = BIT(24), /* Device is ATAPI */
PORT_CMD_FBSCP = BIT(22), /* FBS Capable Port */
PORT_CMD_ESP = BIT(21), /* External Sata Port */
PORT_CMD_HPCP = BIT(18), /* HotPlug Capable Port */
PORT_CMD_PMP = BIT(17), /* PMP attached */
PORT_CMD_LIST_ON = BIT(15), /* cmd list DMA engine running */
PORT_CMD_FIS_ON = BIT(14), /* FIS DMA engine running */
PORT_CMD_FIS_RX = BIT(4), /* Enable FIS receive DMA engine */
PORT_CMD_CLO = BIT(3), /* Command list override */
PORT_CMD_POWER_ON = BIT(2), /* Power up device */
PORT_CMD_SPIN_UP = BIT(1), /* Spin up device */
PORT_CMD_START = BIT(0), /* Enable port DMA engine */
PORT_CMD_ICC_MASK = (0xf << 28), /* i/f ICC state mask */
PORT_CMD_ICC_ACTIVE = (0x1 << 28), /* Put i/f in active state */
PORT_CMD_ICC_PARTIAL = (0x2 << 28), /* Put i/f in partial state */
PORT_CMD_ICC_SLUMBER = (0x6 << 28), /* Put i/f in slumber state */
PORT_CMD_ICC_MASK = (0xfu << 28), /* i/f ICC state mask */
PORT_CMD_ICC_ACTIVE = (0x1u << 28), /* Put i/f in active state */
PORT_CMD_ICC_PARTIAL = (0x2u << 28), /* Put i/f in partial state */
PORT_CMD_ICC_SLUMBER = (0x6u << 28), /* Put i/f in slumber state */
/* PORT_FBS bits */
PORT_FBS_DWE_OFFSET = 16, /* FBS device with error offset */
PORT_FBS_ADO_OFFSET = 12, /* FBS active dev optimization offset */
PORT_FBS_DEV_OFFSET = 8, /* FBS device to issue offset */
PORT_FBS_DEV_MASK = (0xf << PORT_FBS_DEV_OFFSET), /* FBS.DEV */
PORT_FBS_SDE = (1 << 2), /* FBS single device error */
PORT_FBS_DEC = (1 << 1), /* FBS device error clear */
PORT_FBS_EN = (1 << 0), /* Enable FBS */
PORT_FBS_SDE = BIT(2), /* FBS single device error */
PORT_FBS_DEC = BIT(1), /* FBS device error clear */
PORT_FBS_EN = BIT(0), /* Enable FBS */
/* PORT_DEVSLP bits */
PORT_DEVSLP_DM_OFFSET = 25, /* DITO multiplier offset */
@ -197,52 +198,52 @@ enum {
PORT_DEVSLP_DITO_OFFSET = 15, /* DITO offset */
PORT_DEVSLP_MDAT_OFFSET = 10, /* Minimum assertion time */
PORT_DEVSLP_DETO_OFFSET = 2, /* DevSlp exit timeout */
PORT_DEVSLP_DSP = (1 << 1), /* DevSlp present */
PORT_DEVSLP_ADSE = (1 << 0), /* Aggressive DevSlp enable */
PORT_DEVSLP_DSP = BIT(1), /* DevSlp present */
PORT_DEVSLP_ADSE = BIT(0), /* Aggressive DevSlp enable */
/* hpriv->flags bits */
#define AHCI_HFLAGS(flags) .private_data = (void *)(flags)
AHCI_HFLAG_NO_NCQ = (1 << 0),
AHCI_HFLAG_IGN_IRQ_IF_ERR = (1 << 1), /* ignore IRQ_IF_ERR */
AHCI_HFLAG_IGN_SERR_INTERNAL = (1 << 2), /* ignore SERR_INTERNAL */
AHCI_HFLAG_32BIT_ONLY = (1 << 3), /* force 32bit */
AHCI_HFLAG_MV_PATA = (1 << 4), /* PATA port */
AHCI_HFLAG_NO_MSI = (1 << 5), /* no PCI MSI */
AHCI_HFLAG_NO_PMP = (1 << 6), /* no PMP */
AHCI_HFLAG_SECT255 = (1 << 8), /* max 255 sectors */
AHCI_HFLAG_YES_NCQ = (1 << 9), /* force NCQ cap on */
AHCI_HFLAG_NO_SUSPEND = (1 << 10), /* don't suspend */
AHCI_HFLAG_SRST_TOUT_IS_OFFLINE = (1 << 11), /* treat SRST timeout as
link offline */
AHCI_HFLAG_NO_SNTF = (1 << 12), /* no sntf */
AHCI_HFLAG_NO_FPDMA_AA = (1 << 13), /* no FPDMA AA */
AHCI_HFLAG_YES_FBS = (1 << 14), /* force FBS cap on */
AHCI_HFLAG_DELAY_ENGINE = (1 << 15), /* do not start engine on
port start (wait until
error-handling stage) */
AHCI_HFLAG_NO_DEVSLP = (1 << 17), /* no device sleep */
AHCI_HFLAG_NO_FBS = (1 << 18), /* no FBS */
AHCI_HFLAG_NO_NCQ = BIT(0),
AHCI_HFLAG_IGN_IRQ_IF_ERR = BIT(1), /* ignore IRQ_IF_ERR */
AHCI_HFLAG_IGN_SERR_INTERNAL = BIT(2), /* ignore SERR_INTERNAL */
AHCI_HFLAG_32BIT_ONLY = BIT(3), /* force 32bit */
AHCI_HFLAG_MV_PATA = BIT(4), /* PATA port */
AHCI_HFLAG_NO_MSI = BIT(5), /* no PCI MSI */
AHCI_HFLAG_NO_PMP = BIT(6), /* no PMP */
AHCI_HFLAG_SECT255 = BIT(8), /* max 255 sectors */
AHCI_HFLAG_YES_NCQ = BIT(9), /* force NCQ cap on */
AHCI_HFLAG_NO_SUSPEND = BIT(10), /* don't suspend */
AHCI_HFLAG_SRST_TOUT_IS_OFFLINE = BIT(11), /* treat SRST timeout as
link offline */
AHCI_HFLAG_NO_SNTF = BIT(12), /* no sntf */
AHCI_HFLAG_NO_FPDMA_AA = BIT(13), /* no FPDMA AA */
AHCI_HFLAG_YES_FBS = BIT(14), /* force FBS cap on */
AHCI_HFLAG_DELAY_ENGINE = BIT(15), /* do not start engine on
port start (wait until
error-handling stage) */
AHCI_HFLAG_NO_DEVSLP = BIT(17), /* no device sleep */
AHCI_HFLAG_NO_FBS = BIT(18), /* no FBS */
#ifdef CONFIG_PCI_MSI
AHCI_HFLAG_MULTI_MSI = (1 << 20), /* per-port MSI(-X) */
AHCI_HFLAG_MULTI_MSI = BIT(20), /* per-port MSI(-X) */
#else
/* compile out MSI infrastructure */
AHCI_HFLAG_MULTI_MSI = 0,
#endif
AHCI_HFLAG_WAKE_BEFORE_STOP = (1 << 22), /* wake before DMA stop */
AHCI_HFLAG_YES_ALPM = (1 << 23), /* force ALPM cap on */
AHCI_HFLAG_NO_WRITE_TO_RO = (1 << 24), /* don't write to read
only registers */
AHCI_HFLAG_IS_MOBILE = (1 << 25), /* mobile chipset, use
SATA_MOBILE_LPM_POLICY
as default lpm_policy */
AHCI_HFLAG_SUSPEND_PHYS = (1 << 26), /* handle PHYs during
suspend/resume */
AHCI_HFLAG_IGN_NOTSUPP_POWER_ON = (1 << 27), /* ignore -EOPNOTSUPP
from phy_power_on() */
AHCI_HFLAG_NO_SXS = (1 << 28), /* SXS not supported */
AHCI_HFLAG_WAKE_BEFORE_STOP = BIT(22), /* wake before DMA stop */
AHCI_HFLAG_YES_ALPM = BIT(23), /* force ALPM cap on */
AHCI_HFLAG_NO_WRITE_TO_RO = BIT(24), /* don't write to read
only registers */
AHCI_HFLAG_IS_MOBILE = BIT(25), /* mobile chipset, use
SATA_MOBILE_LPM_POLICY
as default lpm_policy */
AHCI_HFLAG_SUSPEND_PHYS = BIT(26), /* handle PHYs during
suspend/resume */
AHCI_HFLAG_IGN_NOTSUPP_POWER_ON = BIT(27), /* ignore -EOPNOTSUPP
from phy_power_on() */
AHCI_HFLAG_NO_SXS = BIT(28), /* SXS not supported */
/* ap->flags bits */
@ -258,22 +259,22 @@ enum {
EM_MAX_RETRY = 5,
/* em_ctl bits */
EM_CTL_RST = (1 << 9), /* Reset */
EM_CTL_TM = (1 << 8), /* Transmit Message */
EM_CTL_MR = (1 << 0), /* Message Received */
EM_CTL_ALHD = (1 << 26), /* Activity LED */
EM_CTL_XMT = (1 << 25), /* Transmit Only */
EM_CTL_SMB = (1 << 24), /* Single Message Buffer */
EM_CTL_SGPIO = (1 << 19), /* SGPIO messages supported */
EM_CTL_SES = (1 << 18), /* SES-2 messages supported */
EM_CTL_SAFTE = (1 << 17), /* SAF-TE messages supported */
EM_CTL_LED = (1 << 16), /* LED messages supported */
EM_CTL_RST = BIT(9), /* Reset */
EM_CTL_TM = BIT(8), /* Transmit Message */
EM_CTL_MR = BIT(0), /* Message Received */
EM_CTL_ALHD = BIT(26), /* Activity LED */
EM_CTL_XMT = BIT(25), /* Transmit Only */
EM_CTL_SMB = BIT(24), /* Single Message Buffer */
EM_CTL_SGPIO = BIT(19), /* SGPIO messages supported */
EM_CTL_SES = BIT(18), /* SES-2 messages supported */
EM_CTL_SAFTE = BIT(17), /* SAF-TE messages supported */
EM_CTL_LED = BIT(16), /* LED messages supported */
/* em message type */
EM_MSG_TYPE_LED = (1 << 0), /* LED */
EM_MSG_TYPE_SAFTE = (1 << 1), /* SAF-TE */
EM_MSG_TYPE_SES2 = (1 << 2), /* SES-2 */
EM_MSG_TYPE_SGPIO = (1 << 3), /* SGPIO */
EM_MSG_TYPE_LED = BIT(0), /* LED */
EM_MSG_TYPE_SAFTE = BIT(1), /* SAF-TE */
EM_MSG_TYPE_SES2 = BIT(2), /* SES-2 */
EM_MSG_TYPE_SGPIO = BIT(3), /* SGPIO */
};
struct ahci_cmd_hdr {

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)) {
ctl_addr = devm_ioport_map(&idev->dev,
pnp_port_start(idev, 1), 1);
if (!ctl_addr)
return -ENOMEM;
ap->ioaddr.altstatus_addr = ctl_addr;
ap->ioaddr.ctl_addr = ctl_addr;
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)
{
IADEV *iadev;
int i, error = 1;
int i, error;
unsigned int pci[64];
iadev = INPH_IA_DEV(dev);
for(i=0; i<64; i++)
if ((error = pci_read_config_dword(iadev->pci,
i*4, &pci[i])) != PCIBIOS_SUCCESSFUL)
return error;
for (i = 0; i < 64; i++) {
error = pci_read_config_dword(iadev->pci, i * 4, &pci[i]);
if (error != PCIBIOS_SUCCESSFUL)
return error;
}
writel(0, iadev->reg+IPHASE5575_EXT_RESET);
for(i=0; i<64; i++)
if ((error = pci_write_config_dword(iadev->pci,
i*4, pci[i])) != PCIBIOS_SUCCESSFUL)
return error;
for (i = 0; i < 64; i++) {
error = pci_write_config_dword(iadev->pci, i * 4, pci[i]);
if (error != PCIBIOS_SUCCESSFUL)
return error;
}
udelay(5);
return 0;
}

View File

@ -449,9 +449,9 @@ static ssize_t console_show(struct device *dev, struct device_attribute *attr,
struct sk_buff *skb;
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)]);
spin_unlock(&card->cli_queue_lock);
spin_unlock_bh(&card->cli_queue_lock);
if(skb == NULL)
return sprintf(buf, "No data.\n");
@ -956,14 +956,14 @@ static void pclose(struct atm_vcc *vcc)
struct pkt_hdr *header;
/* 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) {
if (SKB_CB(skb)->vcc == vcc) {
skb_unlink(skb, &card->tx_queue[port]);
solos_pop(vcc, skb);
}
}
spin_unlock(&card->tx_queue_lock);
spin_unlock_bh(&card->tx_queue_lock);
skb = alloc_skb(sizeof(*header), GFP_KERNEL);
if (!skb) {

View File

@ -1188,8 +1188,6 @@ static void __device_release_driver(struct device *dev, struct device *parent)
else if (drv->remove)
drv->remove(dev);
device_links_driver_cleanup(dev);
devres_release_all(dev);
arch_teardown_dma_ops(dev);
dev->driver = NULL;
@ -1199,6 +1197,8 @@ static void __device_release_driver(struct device *dev, struct device *parent)
pm_runtime_reinit(dev);
dev_pm_set_driver_flags(dev, 0);
device_links_driver_cleanup(dev);
klist_remove(&dev->p->knode_driver);
device_pm_check_callbacks(dev);
if (dev->bus)

View File

@ -29,6 +29,47 @@ struct devcd_entry {
struct device devcd_dev;
void *data;
size_t datalen;
/*
* Here, mutex is required to serialize the calls to del_wk work between
* user/kernel space which happens when devcd is added with device_add()
* and that sends uevent to user space. User space reads the uevents,
* and calls to devcd_data_write() which try to modify the work which is
* not even initialized/queued from devcoredump.
*
*
*
* cpu0(X) cpu1(Y)
*
* dev_coredump() uevent sent to user space
* device_add() ======================> user space process Y reads the
* uevents writes to devcd fd
* which results into writes to
*
* devcd_data_write()
* mod_delayed_work()
* try_to_grab_pending()
* del_timer()
* debug_assert_init()
* INIT_DELAYED_WORK()
* schedule_delayed_work()
*
*
* Also, mutex alone would not be enough to avoid scheduling of
* del_wk work after it get flush from a call to devcd_free()
* mentioned as below.
*
* disabled_store()
* devcd_free()
* mutex_lock() devcd_data_write()
* flush_delayed_work()
* mutex_unlock()
* mutex_lock()
* mod_delayed_work()
* mutex_unlock()
* So, delete_work flag is required.
*/
struct mutex mutex;
bool delete_work;
struct module *owner;
ssize_t (*read)(char *buffer, loff_t offset, size_t count,
void *data, size_t datalen);
@ -88,7 +129,12 @@ static ssize_t devcd_data_write(struct file *filp, struct kobject *kobj,
struct device *dev = kobj_to_dev(kobj);
struct devcd_entry *devcd = dev_to_devcd(dev);
mod_delayed_work(system_wq, &devcd->del_wk, 0);
mutex_lock(&devcd->mutex);
if (!devcd->delete_work) {
devcd->delete_work = true;
mod_delayed_work(system_wq, &devcd->del_wk, 0);
}
mutex_unlock(&devcd->mutex);
return count;
}
@ -116,7 +162,12 @@ static int devcd_free(struct device *dev, void *data)
{
struct devcd_entry *devcd = dev_to_devcd(dev);
mutex_lock(&devcd->mutex);
if (!devcd->delete_work)
devcd->delete_work = true;
flush_delayed_work(&devcd->del_wk);
mutex_unlock(&devcd->mutex);
return 0;
}
@ -126,6 +177,30 @@ static ssize_t disabled_show(struct class *class, struct class_attribute *attr,
return sprintf(buf, "%d\n", devcd_disabled);
}
/*
*
* disabled_store() worker()
* class_for_each_device(&devcd_class,
* NULL, NULL, devcd_free)
* ...
* ...
* while ((dev = class_dev_iter_next(&iter))
* devcd_del()
* device_del()
* put_device() <- last reference
* error = fn(dev, data) devcd_dev_release()
* devcd_free(dev, data) kfree(devcd)
* mutex_lock(&devcd->mutex);
*
*
* In the above diagram, It looks like disabled_store() would be racing with parallely
* running devcd_del() and result in memory abort while acquiring devcd->mutex which
* is called after kfree of devcd memory after dropping its last reference with
* put_device(). However, this will not happens as fn(dev, data) runs
* with its own reference to device via klist_node so it is not its last reference.
* so, above situation would not occur.
*/
static ssize_t disabled_store(struct class *class, struct class_attribute *attr,
const char *buf, size_t count)
{
@ -282,13 +357,17 @@ void dev_coredumpm(struct device *dev, struct module *owner,
devcd->read = read;
devcd->free = free;
devcd->failing_dev = get_device(dev);
devcd->delete_work = false;
mutex_init(&devcd->mutex);
device_initialize(&devcd->devcd_dev);
dev_set_name(&devcd->devcd_dev, "devcd%d",
atomic_inc_return(&devcd_count));
devcd->devcd_dev.class = &devcd_class;
mutex_lock(&devcd->mutex);
dev_set_uevent_suppress(&devcd->devcd_dev, true);
if (device_add(&devcd->devcd_dev))
goto put_device;
@ -300,12 +379,15 @@ void dev_coredumpm(struct device *dev, struct module *owner,
"devcoredump"))
/* 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);
schedule_delayed_work(&devcd->del_wk, DEVCD_TIMEOUT);
mutex_unlock(&devcd->mutex);
return;
put_device:
put_device(&devcd->devcd_dev);
mutex_unlock(&devcd->mutex);
put_module:
module_put(owner);
free:

View File

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

View File

@ -1495,17 +1495,19 @@ static int _regmap_raw_write_impl(struct regmap *map, unsigned int reg,
}
if (!map->cache_bypass && map->format.parse_val) {
unsigned int ival;
unsigned int ival, offset;
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));
ret = regcache_write(map,
reg + regmap_get_offset(map, i),
ival);
/* Cache the last written value for noinc writes */
i = noinc ? val_len - val_bytes : 0;
for (; i < val_len; i += val_bytes) {
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) {
dev_err(map->dev,
"Error in caching of register: %x ret: %d\n",
reg + regmap_get_offset(map, i), ret);
reg + offset, ret);
return ret;
}
}

View File

@ -299,15 +299,6 @@ config BLK_DEV_SKD
Use device /dev/skd$N amd /dev/skd$Np$M.
config BLK_DEV_SX8
tristate "Promise SATA SX8 support"
depends on PCI
---help---
Saying Y or M here will enable support for the
Promise SATA SX8 controllers.
Use devices /dev/sx8/$N and /dev/sx8/$Np$M.
config BLK_DEV_RAM
tristate "RAM block device support"
---help---

View File

@ -26,8 +26,6 @@ obj-$(CONFIG_BLK_DEV_NBD) += nbd.o
obj-$(CONFIG_BLK_DEV_CRYPTOLOOP) += cryptoloop.o
obj-$(CONFIG_VIRTIO_BLK) += virtio_blk.o
obj-$(CONFIG_BLK_DEV_SX8) += sx8.o
obj-$(CONFIG_XEN_BLKDEV_FRONTEND) += xen-blkfront.o
obj-$(CONFIG_XEN_BLKDEV_BACKEND) += xen-blkback/
obj-$(CONFIG_BLK_DEV_DRBD) += drbd/

File diff suppressed because it is too large Load Diff

View File

@ -57,6 +57,7 @@ static struct usb_driver btusb_driver;
#define BTUSB_IFNUM_2 0x80000
#define BTUSB_CW6622 0x100000
#define BTUSB_MEDIATEK 0x200000
#define BTUSB_WIDEBAND_SPEECH 0x400000
static const struct usb_device_id btusb_table[] = {
/* Generic Bluetooth USB device */
@ -332,20 +333,42 @@ static const struct usb_device_id blacklist_table[] = {
{ USB_DEVICE(0x1286, 0x204e), .driver_info = BTUSB_MARVELL },
/* Intel Bluetooth devices */
{ USB_DEVICE(0x8087, 0x0025), .driver_info = BTUSB_INTEL_NEW },
{ USB_DEVICE(0x8087, 0x0026), .driver_info = BTUSB_INTEL_NEW },
{ USB_DEVICE(0x8087, 0x0029), .driver_info = BTUSB_INTEL_NEW },
{ USB_DEVICE(0x8087, 0x0025), .driver_info = BTUSB_INTEL_NEW |
BTUSB_WIDEBAND_SPEECH },
{ USB_DEVICE(0x8087, 0x0026), .driver_info = BTUSB_INTEL_NEW |
BTUSB_WIDEBAND_SPEECH },
{ USB_DEVICE(0x8087, 0x0029), .driver_info = BTUSB_INTEL_NEW |
BTUSB_WIDEBAND_SPEECH },
{ USB_DEVICE(0x8087, 0x07da), .driver_info = BTUSB_CSR },
{ USB_DEVICE(0x8087, 0x07dc), .driver_info = BTUSB_INTEL },
{ USB_DEVICE(0x8087, 0x0a2a), .driver_info = BTUSB_INTEL },
{ USB_DEVICE(0x8087, 0x0a2b), .driver_info = BTUSB_INTEL_NEW },
{ USB_DEVICE(0x8087, 0x0aa7), .driver_info = BTUSB_INTEL },
{ USB_DEVICE(0x8087, 0x0aaa), .driver_info = BTUSB_INTEL_NEW },
{ USB_DEVICE(0x8087, 0x0a2b), .driver_info = BTUSB_INTEL_NEW |
BTUSB_WIDEBAND_SPEECH },
{ USB_DEVICE(0x8087, 0x0aa7), .driver_info = BTUSB_INTEL |
BTUSB_WIDEBAND_SPEECH },
{ USB_DEVICE(0x8087, 0x0aaa), .driver_info = BTUSB_INTEL_NEW |
BTUSB_WIDEBAND_SPEECH },
/* Other Intel Bluetooth devices */
{ USB_VENDOR_AND_INTERFACE_INFO(0x8087, 0xe0, 0x01, 0x01),
.driver_info = BTUSB_IGNORE },
/* Realtek 8822CE Bluetooth devices */
{ USB_DEVICE(0x0bda, 0xb00c), .driver_info = BTUSB_REALTEK |
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 */
{ USB_VENDOR_AND_INTERFACE_INFO(0x0bda, 0xe0, 0x01, 0x01),
.driver_info = BTUSB_REALTEK },

View File

@ -58,7 +58,8 @@ struct amd_geode_priv {
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);
@ -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)
{
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;
for (i = 0; i < 20; i++) {

View File

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

View File

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

View File

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

View File

@ -30,5 +30,6 @@ config CLK_IMX8QXP
bool "IMX8QXP SCU Clock"
depends on ARCH_MXC && IMX_SCU && ARM64
select MXC_CLK_SCU
select MXC_CLK
help
Build the driver for IMX8QXP SCU based clocks.

View File

@ -281,12 +281,13 @@ static void __init of_pll_div_clk_init(struct device_node *node)
clk = clk_register_divider(NULL, clk_name, parent_name, 0, reg, shift,
mask, 0, NULL);
if (clk) {
of_clk_add_provider(node, of_clk_src_simple_get, clk);
} else {
if (IS_ERR(clk)) {
pr_err("%s: error registering divider %s\n", __func__, clk_name);
iounmap(reg);
return;
}
of_clk_add_provider(node, of_clk_src_simple_get, clk);
}
CLK_OF_DECLARE(pll_divider_clock, "ti,keystone,pll-divider-clock", of_pll_div_clk_init);
@ -328,10 +329,12 @@ static void __init of_pll_mux_clk_init(struct device_node *node)
clk = clk_register_mux(NULL, clk_name, (const char **)&parents,
ARRAY_SIZE(parents) , 0, reg, shift, mask,
0, NULL);
if (clk)
of_clk_add_provider(node, of_clk_src_simple_get, clk);
else
if (IS_ERR(clk)) {
pr_err("%s: error registering mux %s\n", __func__, clk_name);
return;
}
of_clk_add_provider(node, of_clk_src_simple_get, clk);
}
CLK_OF_DECLARE(pll_mux_clock, "ti,keystone,pll-mux-clock", of_pll_mux_clk_init);

View File

@ -675,6 +675,8 @@ static int mtk_topckgen_init(struct platform_device *pdev)
return PTR_ERR(base);
clk_data = mtk_alloc_clk_data(CLK_TOP_NR);
if (!clk_data)
return -ENOMEM;
mtk_clk_register_fixed_clks(top_fixed_clks, ARRAY_SIZE(top_fixed_clks),
clk_data);
@ -742,6 +744,8 @@ static void __init mtk_infrasys_init_early(struct device_node *node)
if (!infra_clk_data) {
infra_clk_data = mtk_alloc_clk_data(CLK_INFRA_NR);
if (!infra_clk_data)
return;
for (i = 0; i < CLK_INFRA_NR; i++)
infra_clk_data->clks[i] = ERR_PTR(-EPROBE_DEFER);
@ -768,6 +772,8 @@ static int mtk_infrasys_init(struct platform_device *pdev)
if (!infra_clk_data) {
infra_clk_data = mtk_alloc_clk_data(CLK_INFRA_NR);
if (!infra_clk_data)
return -ENOMEM;
} else {
for (i = 0; i < CLK_INFRA_NR; i++) {
if (infra_clk_data->clks[i] == ERR_PTR(-EPROBE_DEFER))
@ -896,6 +902,8 @@ static int mtk_pericfg_init(struct platform_device *pdev)
return PTR_ERR(base);
clk_data = mtk_alloc_clk_data(CLK_PERI_NR);
if (!clk_data)
return -ENOMEM;
mtk_clk_register_gates(node, peri_clks, ARRAY_SIZE(peri_clks),
clk_data);

View File

@ -1216,6 +1216,8 @@ static int clk_mt6779_apmixed_probe(struct platform_device *pdev)
struct device_node *node = pdev->dev.of_node;
clk_data = mtk_alloc_clk_data(CLK_APMIXED_NR_CLK);
if (!clk_data)
return -ENOMEM;
mtk_clk_register_plls(node, plls, ARRAY_SIZE(plls), clk_data);
@ -1237,6 +1239,8 @@ static int clk_mt6779_top_probe(struct platform_device *pdev)
return PTR_ERR(base);
clk_data = mtk_alloc_clk_data(CLK_TOP_NR_CLK);
if (!clk_data)
return -ENOMEM;
mtk_clk_register_fixed_clks(top_fixed_clks, ARRAY_SIZE(top_fixed_clks),
clk_data);

View File

@ -392,6 +392,8 @@ static int mtk_topckgen_init(struct platform_device *pdev)
return PTR_ERR(base);
clk_data = mtk_alloc_clk_data(CLK_TOP_NR);
if (!clk_data)
return -ENOMEM;
mtk_clk_register_factors(top_fixed_divs, ARRAY_SIZE(top_fixed_divs),
clk_data);
@ -564,6 +566,8 @@ static void mtk_infrasys_init_early(struct device_node *node)
if (!infra_clk_data) {
infra_clk_data = mtk_alloc_clk_data(CLK_INFRA_NR);
if (!infra_clk_data)
return;
for (i = 0; i < CLK_INFRA_NR; i++)
infra_clk_data->clks[i] = ERR_PTR(-EPROBE_DEFER);
@ -588,6 +592,8 @@ static int mtk_infrasys_init(struct platform_device *pdev)
if (!infra_clk_data) {
infra_clk_data = mtk_alloc_clk_data(CLK_INFRA_NR);
if (!infra_clk_data)
return -ENOMEM;
} else {
for (i = 0; i < CLK_INFRA_NR; i++) {
if (infra_clk_data->clks[i] == ERR_PTR(-EPROBE_DEFER))

View File

@ -83,6 +83,8 @@ static int clk_mt7629_ethsys_init(struct platform_device *pdev)
int r;
clk_data = mtk_alloc_clk_data(CLK_ETH_NR_CLK);
if (!clk_data)
return -ENOMEM;
mtk_clk_register_gates(node, eth_clks, CLK_ETH_NR_CLK, clk_data);
@ -105,6 +107,8 @@ static int clk_mt7629_sgmiisys_init(struct platform_device *pdev)
int r;
clk_data = mtk_alloc_clk_data(CLK_SGMII_NR_CLK);
if (!clk_data)
return -ENOMEM;
mtk_clk_register_gates(node, sgmii_clks[id++], CLK_SGMII_NR_CLK,
clk_data);

View File

@ -581,6 +581,8 @@ static int mtk_topckgen_init(struct platform_device *pdev)
return PTR_ERR(base);
clk_data = mtk_alloc_clk_data(CLK_TOP_NR_CLK);
if (!clk_data)
return -ENOMEM;
mtk_clk_register_fixed_clks(top_fixed_clks, ARRAY_SIZE(top_fixed_clks),
clk_data);
@ -605,6 +607,8 @@ static int mtk_infrasys_init(struct platform_device *pdev)
int r;
clk_data = mtk_alloc_clk_data(CLK_INFRA_NR_CLK);
if (!clk_data)
return -ENOMEM;
mtk_clk_register_gates(node, infra_clks, ARRAY_SIZE(infra_clks),
clk_data);
@ -633,6 +637,8 @@ static int mtk_pericfg_init(struct platform_device *pdev)
return PTR_ERR(base);
clk_data = mtk_alloc_clk_data(CLK_PERI_NR_CLK);
if (!clk_data)
return -ENOMEM;
mtk_clk_register_gates(node, peri_clks, ARRAY_SIZE(peri_clks),
clk_data);

View File

@ -146,17 +146,11 @@ static int clk_rcg2_set_parent(struct clk_hw *hw, u8 index)
static unsigned long
calc_rate(unsigned long rate, u32 m, u32 n, u32 mode, u32 hid_div)
{
if (hid_div) {
rate *= 2;
rate /= hid_div + 1;
}
if (hid_div)
rate = mult_frac(rate, 2, hid_div + 1);
if (mode) {
u64 tmp = rate;
tmp *= m;
do_div(tmp, n);
rate = tmp;
}
if (mode)
rate = mult_frac(rate, m, n);
return rate;
}

View File

@ -423,7 +423,6 @@ static struct clk_fixed_factor gpll0_out_main_div2 = {
},
.num_parents = 1,
.ops = &clk_fixed_factor_ops,
.flags = CLK_SET_RATE_PARENT,
},
};
@ -470,7 +469,6 @@ static struct clk_alpha_pll_postdiv gpll2 = {
},
.num_parents = 1,
.ops = &clk_alpha_pll_postdiv_ro_ops,
.flags = CLK_SET_RATE_PARENT,
},
};
@ -503,7 +501,6 @@ static struct clk_alpha_pll_postdiv gpll4 = {
},
.num_parents = 1,
.ops = &clk_alpha_pll_postdiv_ro_ops,
.flags = CLK_SET_RATE_PARENT,
},
};
@ -537,7 +534,6 @@ static struct clk_alpha_pll_postdiv gpll6 = {
},
.num_parents = 1,
.ops = &clk_alpha_pll_postdiv_ro_ops,
.flags = CLK_SET_RATE_PARENT,
},
};
@ -551,7 +547,6 @@ static struct clk_fixed_factor gpll6_out_main_div2 = {
},
.num_parents = 1,
.ops = &clk_fixed_factor_ops,
.flags = CLK_SET_RATE_PARENT,
},
};
@ -616,7 +611,6 @@ static struct clk_alpha_pll_postdiv nss_crypto_pll = {
},
.num_parents = 1,
.ops = &clk_alpha_pll_postdiv_ro_ops,
.flags = CLK_SET_RATE_PARENT,
},
};

View File

@ -250,7 +250,7 @@ static struct clk_rcg2 gcc_cpuss_ahb_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_cpuss_ahb_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -273,7 +273,7 @@ static struct clk_rcg2 gcc_emac_ptp_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_emac_ptp_clk_src",
.parent_data = gcc_parents_5,
.num_parents = 5,
.num_parents = ARRAY_SIZE(gcc_parents_5),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -299,7 +299,7 @@ static struct clk_rcg2 gcc_emac_rgmii_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_emac_rgmii_clk_src",
.parent_data = gcc_parents_5,
.num_parents = 5,
.num_parents = ARRAY_SIZE(gcc_parents_5),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -323,7 +323,7 @@ static struct clk_rcg2 gcc_gp1_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_gp1_clk_src",
.parent_data = gcc_parents_1,
.num_parents = 5,
.num_parents = ARRAY_SIZE(gcc_parents_1),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -338,7 +338,7 @@ static struct clk_rcg2 gcc_gp2_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_gp2_clk_src",
.parent_data = gcc_parents_1,
.num_parents = 5,
.num_parents = ARRAY_SIZE(gcc_parents_1),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -353,7 +353,7 @@ static struct clk_rcg2 gcc_gp3_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_gp3_clk_src",
.parent_data = gcc_parents_1,
.num_parents = 5,
.num_parents = ARRAY_SIZE(gcc_parents_1),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -374,7 +374,7 @@ static struct clk_rcg2 gcc_pcie_0_aux_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_pcie_0_aux_clk_src",
.parent_data = gcc_parents_2,
.num_parents = 3,
.num_parents = ARRAY_SIZE(gcc_parents_2),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -389,7 +389,7 @@ static struct clk_rcg2 gcc_pcie_1_aux_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_pcie_1_aux_clk_src",
.parent_data = gcc_parents_2,
.num_parents = 3,
.num_parents = ARRAY_SIZE(gcc_parents_2),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -410,7 +410,7 @@ static struct clk_rcg2 gcc_pcie_phy_refgen_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_pcie_phy_refgen_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -432,7 +432,7 @@ static struct clk_rcg2 gcc_pdm2_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_pdm2_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -455,7 +455,7 @@ static struct clk_rcg2 gcc_qspi_core_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_qspi_core_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -489,7 +489,7 @@ static struct clk_rcg2 gcc_qupv3_wrap0_s0_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_qupv3_wrap0_s0_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -504,7 +504,7 @@ static struct clk_rcg2 gcc_qupv3_wrap0_s1_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_qupv3_wrap0_s1_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -519,7 +519,7 @@ static struct clk_rcg2 gcc_qupv3_wrap0_s2_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_qupv3_wrap0_s2_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -534,7 +534,7 @@ static struct clk_rcg2 gcc_qupv3_wrap0_s3_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_qupv3_wrap0_s3_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -549,7 +549,7 @@ static struct clk_rcg2 gcc_qupv3_wrap0_s4_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_qupv3_wrap0_s4_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -564,7 +564,7 @@ static struct clk_rcg2 gcc_qupv3_wrap0_s5_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_qupv3_wrap0_s5_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -579,7 +579,7 @@ static struct clk_rcg2 gcc_qupv3_wrap0_s6_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_qupv3_wrap0_s6_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -594,7 +594,7 @@ static struct clk_rcg2 gcc_qupv3_wrap0_s7_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_qupv3_wrap0_s7_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -609,7 +609,7 @@ static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_qupv3_wrap1_s0_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -624,7 +624,7 @@ static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_qupv3_wrap1_s1_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -639,7 +639,7 @@ static struct clk_rcg2 gcc_qupv3_wrap1_s2_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_qupv3_wrap1_s2_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -654,7 +654,7 @@ static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_qupv3_wrap1_s3_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -669,7 +669,7 @@ static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_qupv3_wrap1_s4_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -684,7 +684,7 @@ static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_qupv3_wrap1_s5_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -699,7 +699,7 @@ static struct clk_rcg2 gcc_qupv3_wrap2_s0_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_qupv3_wrap2_s0_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -714,7 +714,7 @@ static struct clk_rcg2 gcc_qupv3_wrap2_s1_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_qupv3_wrap2_s1_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -729,7 +729,7 @@ static struct clk_rcg2 gcc_qupv3_wrap2_s2_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_qupv3_wrap2_s2_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -744,7 +744,7 @@ static struct clk_rcg2 gcc_qupv3_wrap2_s3_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_qupv3_wrap2_s3_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -759,7 +759,7 @@ static struct clk_rcg2 gcc_qupv3_wrap2_s4_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_qupv3_wrap2_s4_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -774,7 +774,7 @@ static struct clk_rcg2 gcc_qupv3_wrap2_s5_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_qupv3_wrap2_s5_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -800,8 +800,8 @@ static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_sdcc2_apps_clk_src",
.parent_data = gcc_parents_6,
.num_parents = 5,
.flags = CLK_SET_RATE_PARENT,
.num_parents = ARRAY_SIZE(gcc_parents_6),
.flags = CLK_OPS_PARENT_ENABLE,
.ops = &clk_rcg2_floor_ops,
},
};
@ -825,7 +825,7 @@ static struct clk_rcg2 gcc_sdcc4_apps_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_sdcc4_apps_clk_src",
.parent_data = gcc_parents_3,
.num_parents = 3,
.num_parents = ARRAY_SIZE(gcc_parents_3),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_floor_ops,
},
@ -845,7 +845,7 @@ static struct clk_rcg2 gcc_tsif_ref_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_tsif_ref_clk_src",
.parent_data = gcc_parents_7,
.num_parents = 5,
.num_parents = ARRAY_SIZE(gcc_parents_7),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -869,7 +869,7 @@ static struct clk_rcg2 gcc_ufs_card_axi_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_ufs_card_axi_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -892,7 +892,7 @@ static struct clk_rcg2 gcc_ufs_card_ice_core_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_ufs_card_ice_core_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -912,7 +912,7 @@ static struct clk_rcg2 gcc_ufs_card_phy_aux_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_ufs_card_phy_aux_clk_src",
.parent_data = gcc_parents_4,
.num_parents = 2,
.num_parents = ARRAY_SIZE(gcc_parents_4),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -934,7 +934,7 @@ static struct clk_rcg2 gcc_ufs_card_unipro_core_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_ufs_card_unipro_core_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -958,7 +958,7 @@ static struct clk_rcg2 gcc_ufs_phy_axi_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_ufs_phy_axi_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -973,7 +973,7 @@ static struct clk_rcg2 gcc_ufs_phy_ice_core_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_ufs_phy_ice_core_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -988,7 +988,7 @@ static struct clk_rcg2 gcc_ufs_phy_phy_aux_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_ufs_phy_phy_aux_clk_src",
.parent_data = gcc_parents_4,
.num_parents = 2,
.num_parents = ARRAY_SIZE(gcc_parents_4),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -1003,7 +1003,7 @@ static struct clk_rcg2 gcc_ufs_phy_unipro_core_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_ufs_phy_unipro_core_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -1027,7 +1027,7 @@ static struct clk_rcg2 gcc_usb30_prim_master_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_usb30_prim_master_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -1049,7 +1049,7 @@ static struct clk_rcg2 gcc_usb30_prim_mock_utmi_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_usb30_prim_mock_utmi_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -1064,7 +1064,7 @@ static struct clk_rcg2 gcc_usb30_sec_master_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_usb30_sec_master_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -1079,7 +1079,7 @@ static struct clk_rcg2 gcc_usb30_sec_mock_utmi_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_usb30_sec_mock_utmi_clk_src",
.parent_data = gcc_parents_0,
.num_parents = 4,
.num_parents = ARRAY_SIZE(gcc_parents_0),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -1094,7 +1094,7 @@ static struct clk_rcg2 gcc_usb3_prim_phy_aux_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_usb3_prim_phy_aux_clk_src",
.parent_data = gcc_parents_2,
.num_parents = 3,
.num_parents = ARRAY_SIZE(gcc_parents_2),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},
@ -1109,7 +1109,7 @@ static struct clk_rcg2 gcc_usb3_sec_phy_aux_clk_src = {
.clkr.hw.init = &(struct clk_init_data){
.name = "gcc_usb3_sec_phy_aux_clk_src",
.parent_data = gcc_parents_2,
.num_parents = 3,
.num_parents = ARRAY_SIZE(gcc_parents_2),
.flags = CLK_SET_RATE_PARENT,
.ops = &clk_rcg2_ops,
},

View File

@ -310,6 +310,7 @@ static void __init tcb_setup_dual_chan(struct atmel_tc *tc, int mck_divisor_idx)
writel(mck_divisor_idx /* likely divide-by-8 */
| ATMEL_TC_WAVE
| ATMEL_TC_WAVESEL_UP /* free-run */
| ATMEL_TC_ASWTRG_SET /* TIOA0 rises at software trigger */
| ATMEL_TC_ACPA_SET /* TIOA0 rises at 0 */
| ATMEL_TC_ACPC_CLEAR, /* (duty cycle 50%) */
tcaddr + ATMEL_TC_REG(0, CMR));

View File

@ -460,12 +460,16 @@ static int __init mxc_timer_init_dt(struct device_node *np, enum imx_gpt_type t
return -ENOMEM;
imxtm->base = of_iomap(np, 0);
if (!imxtm->base)
return -ENXIO;
if (!imxtm->base) {
ret = -ENXIO;
goto err_kfree;
}
imxtm->irq = irq_of_parse_and_map(np, 0);
if (imxtm->irq <= 0)
return -EINVAL;
if (imxtm->irq <= 0) {
ret = -EINVAL;
goto err_kfree;
}
imxtm->clk_ipg = of_clk_get_by_name(np, "ipg");
@ -478,11 +482,15 @@ static int __init mxc_timer_init_dt(struct device_node *np, enum imx_gpt_type t
ret = _mxc_timer_init(imxtm);
if (ret)
return ret;
goto err_kfree;
initialized = 1;
return 0;
err_kfree:
kfree(imxtm);
return ret;
}
static int __init imx1_timer_init_dt(struct device_node *np)

View File

@ -210,6 +210,14 @@ static struct cpufreq_driver imx6q_cpufreq_driver = {
.suspend = cpufreq_generic_suspend,
};
static void imx6x_disable_freq_in_opp(struct device *dev, unsigned long freq)
{
int ret = dev_pm_opp_disable(dev, freq);
if (ret < 0 && ret != -ENODEV)
dev_warn(dev, "failed to disable %ldMHz OPP\n", freq / 1000000);
}
#define OCOTP_CFG3 0x440
#define OCOTP_CFG3_SPEED_SHIFT 16
#define OCOTP_CFG3_SPEED_1P2GHZ 0x3
@ -245,17 +253,15 @@ static void imx6q_opp_check_speed_grading(struct device *dev)
val &= 0x3;
if (val < OCOTP_CFG3_SPEED_996MHZ)
if (dev_pm_opp_disable(dev, 996000000))
dev_warn(dev, "failed to disable 996MHz OPP\n");
imx6x_disable_freq_in_opp(dev, 996000000);
if (of_machine_is_compatible("fsl,imx6q") ||
of_machine_is_compatible("fsl,imx6qp")) {
if (val != OCOTP_CFG3_SPEED_852MHZ)
if (dev_pm_opp_disable(dev, 852000000))
dev_warn(dev, "failed to disable 852MHz OPP\n");
imx6x_disable_freq_in_opp(dev, 852000000);
if (val != OCOTP_CFG3_SPEED_1P2GHZ)
if (dev_pm_opp_disable(dev, 1200000000))
dev_warn(dev, "failed to disable 1.2GHz OPP\n");
imx6x_disable_freq_in_opp(dev, 1200000000);
}
iounmap(base);
put_node:
@ -308,20 +314,16 @@ static int imx6ul_opp_check_speed_grading(struct device *dev)
val >>= OCOTP_CFG3_SPEED_SHIFT;
val &= 0x3;
if (of_machine_is_compatible("fsl,imx6ul")) {
if (of_machine_is_compatible("fsl,imx6ul"))
if (val != OCOTP_CFG3_6UL_SPEED_696MHZ)
if (dev_pm_opp_disable(dev, 696000000))
dev_warn(dev, "failed to disable 696MHz OPP\n");
}
imx6x_disable_freq_in_opp(dev, 696000000);
if (of_machine_is_compatible("fsl,imx6ull")) {
if (val != OCOTP_CFG3_6ULL_SPEED_792MHZ)
if (dev_pm_opp_disable(dev, 792000000))
dev_warn(dev, "failed to disable 792MHz OPP\n");
if (val < OCOTP_CFG3_6ULL_SPEED_792MHZ)
imx6x_disable_freq_in_opp(dev, 792000000);
if (val != OCOTP_CFG3_6ULL_SPEED_900MHZ)
if (dev_pm_opp_disable(dev, 900000000))
dev_warn(dev, "failed to disable 900MHz OPP\n");
imx6x_disable_freq_in_opp(dev, 900000000);
}
return ret;

View File

@ -553,7 +553,8 @@ static int chachapoly_setkey(struct crypto_aead *aead, const u8 *key,
return -EINVAL;
}
ctx->cdata.key_virt = key;
memcpy(ctx->key, key, keylen);
ctx->cdata.key_virt = ctx->key;
ctx->cdata.keylen = keylen - saltlen;
return chachapoly_set_sh_desc(aead);

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