Merge tag 'android11-5.4.191_r01' into android11-5.4
This is the merge of the upstream LTS release of 5.4.191 into the android11-5.4 branch. It contains the following commits: d81463675427 Merge tag 'android11-5.4.191_r01' into android11-5.484c84ac7a3
Revert "oom_kill.c: futex: delay the OOM reaper to allow time for proper futex cleanup"36dda9143f
Merge 5.4.191 into android11-5.4-lts4426e6017f
Linux 5.4.1913c946909a3
Revert "net: micrel: fix KS8851_MLL Kconfig"c028b81d06
block/compat_ioctl: fix range check in BLKGETSIZE27da8d16e4
staging: ion: Prevent incorrect reference counting behavourcb158b152e
spi: atmel-quadspi: Fix the buswidth adjustment between spi-mem and controller1b6ad24210
jbd2: fix a potential race while discarding reserved buffers after an abort0b1ba14ab2
ext4: force overhead calculation if the s_overhead_cluster makes no sense425301ef60
ext4: fix overhead calculation to account for the reserved gdt blocksea9c206111
ext4, doc: fix incorrect h_reserved size259dc49dea
ext4: limit length to bitmap_maxbytes - blocksize in punch_holefaadbf7ac4
ext4: fix use-after-free in ext4_search_dir0309665eb2
ext4: fix symlink file size not match to file contentddfe3babc5
arm_pmu: Validate single/group leader events852b02d1f8
ARC: entry: fix syscall_trace_exit argument016ba7cbed
e1000e: Fix possible overflow in LTR decoding1217cf141b
ASoC: soc-dapm: fix two incorrect uses of list iteratoraa70705560
openvswitch: fix OOB access in reserve_sfa_size()d24e0d9d69
xtensa: fix a7 clobbering in coprocessor context load/store4c26a96d0c
xtensa: patch_text: Fixup last cpu should be master8d6937c1e0
powerpc/perf: Fix power9 event alternatives0dafb826ed
drm/vc4: Use pm_runtime_resume_and_get to fix pm_runtime_get_sync() usage013231f75f
KVM: PPC: Fix TCE handling for VFIO9cf05812cb
drm/panel/raspberrypi-touchscreen: Initialise the bridge in prepare4f08e85ca0
drm/panel/raspberrypi-touchscreen: Avoid NULL deref if not initialised23f0ba5585
dma: at_xdmac: fix a missing check on list iteratora22f3c9926
ata: pata_marvell: Check the 'bmdma_addr' beforing reading0441d3e95b
oom_kill.c: futex: delay the OOM reaper to allow time for proper futex cleanup530d32ac52
EDAC/synopsys: Read the error count from the correct register91367af460
stat: fix inconsistency between struct stat and struct compat_stat837e319ebe
scsi: qedi: Fix failed disconnect handling4b813ce289
net: macb: Restart tx only if queue pointer is lagginga1419bee4d
drm/msm/mdp5: check the return of kzalloc()80b188da30
dpaa_eth: Fix missing of_node_put in dpaa_get_ts_info()46f9fa0a66
brcmfmac: sdio: Fix undefined behavior due to shift overflowing the constant12a753edd9
mt76: Fix undefined behavior due to shift overflowing the constant7c48a6e62d
cifs: Check the IOCB_DIRECT flag, not O_DIRECT435142fbdc
vxlan: fix error return code in vxlan_fdb_append99c2d9a52f
ALSA: usb-audio: Fix undefined behavior due to shift overflowing the constant3e28d157e5
platform/x86: samsung-laptop: Fix an unsigned comparison which can never be negative54be94d336
reset: tegra-bpmp: Restore Handle errors in BPMP response0cb2c00dd1
ARM: vexpress/spc: Avoid negative array index when !SMP3a5ad1b8db
selftests: mlxsw: vxlan_flooding: Prevent flooding of unwanted packetsd37295129e
netlink: reset network and mac headers in netlink_dump()4c4f2a019f
l3mdev: l3mdev_master_upper_ifindex_by_index_rcu should be using netdev_master_upper_dev_get_rcu8c5ca6492a
net/sched: cls_u32: fix possible leak in u32_init_knode()f883def546
net/packet: fix packet_sock xmit return value checkinge1bc684c81
net/smc: Fix sock leak when release after smc_shutdown()f10e5c9f22
rxrpc: Restore removed timer deletion9a9c481593
igc: Fix BUG: scheduling while atomicf9d5d17d23
igc: Fix infinite loop in release_swfw_sync6d6271dbbb
dmaengine: mediatek:Fix PM usage reference leak of mtk_uart_apdma_alloc_chan_resources65c36555bd
dmaengine: imx-sdma: Fix error checking in sdma_event_remapccf554d148
ASoC: msm8916-wcd-digital: Check failure for devm_snd_soc_register_component6a20bf46c6
ASoC: atmel: Remove system clock tree configuration for at91sam9g20ek6a54979c78
ALSA: usb-audio: Clear MIDI port active flag after draining9c99aacfb4
tcp: Fix potential use-after-free due to double kfree()5a4f3eba21
net/sched: cls_u32: fix netns refcount changes in u32_change()b01b700e0c
tcp: fix race condition when creating child sockets from syncookiesebb3b84596
gfs2: assign rgrp glock before compute_bitstructs660784e719
can: usb_8dev: usb_8dev_start_xmit(): fix double dev_kfree_skb() in error path2da11442a1
tracing: Dump stacktrace trigger to the corresponding instancebad7ed5575
mm: page_alloc: fix building error on -Werror=array-compareac94e87675
etherdevice: Adjust ether_addr* prototypes to silence -Wstringop-overeadaf912bfbcd
Merge branch 'android11-5.4' into 'android11-5.4-lts'4bd8a3c04c
Merge 5.4.190 into android11-5.4-ltsdc213ac856
Linux 5.4.190a83a18c4c9
ax25: Fix UAF bugs in ax25 timers40cb8b3b19
ax25: Fix NULL pointer dereferences in ax25 timersd2be5b563e
ax25: fix NPD bug in ax25_disconnecteaa7eb23fa
ax25: fix UAF bug in ax25_send_control()9e1e088a57
ax25: Fix refcount leaks caused by ax25_cb_del()7528d0f221
ax25: fix UAF bugs of net_device caused by rebinding operation1db0b2c55c
ax25: fix reference count leaks of ax25_dev418993bbaa
ax25: add refcount in ax25_dev to avoid UAF bugs4459946e86
dma-direct: avoid redundant memory sync for swiotlb7efb8e49f6
i2c: pasemi: Wait for write xfers to finish659855c62c
smp: Fix offline cpu check in flush_smp_call_function_queue()7f84c93722
dm integrity: fix memory corruption when tag_size is less than digest size89931d4762
ARM: davinci: da850-evm: Avoid NULL pointer dereference28956e530b
tick/nohz: Use WARN_ON_ONCE() to prevent console saturationf4fb50ee25
genirq/affinity: Consider that CPUs on nodes can be unbalancedf616ecec0f
drm/amd/display: don't ignore alpha property on pre-multiplied modeab2f5afb7a
ipv6: fix panic when forwarding a pkt with no in6 dev377a80ca65
ALSA: pcm: Test for "silence" field in struct "pcm_format_data"5f77b1c0e6
ALSA: hda/realtek: Add quirk for Clevo PD50PNT358e7b451a
btrfs: mark resumed async balance as writingd5b0b11c06
btrfs: remove unused variable in btrfs_{start,write}_dirty_block_groups()0aad67337f
ath9k: Fix usage of driver-private space in tx_info7fb98e4f5b
ath9k: Properly clear TX status area before reporting to mac802117a9e1327cc
gcc-plugins: latent_entropy: use /dev/urandom534d0aebe1
mm: kmemleak: take a full lowmem check in kmemleak_*_phys()b56d305274
mm, page_alloc: fix build_zonerefs_node()e07a70ca83
perf/imx_ddr: Fix undefined behavior due to shift overflowing the constantd05cd68ed8
drivers: net: slip: fix NPD bug in sl_tx_timeout()6d41134f30
scsi: megaraid_sas: Target with invalid LUN ID is deleted during scan3ecd43dcda
scsi: mvsas: Add PCI ID of RocketRaid 2640deab81144d
powerpc: Fix virt_addr_valid() for 64-bit Book3E & 32-bitdd9b4b435a
drm/amd/display: Fix allocate_mst_payload assert on resume404998a137
net: usb: aqc111: Fix out-of-bounds accesses in RX fixup4a24416796
tlb: hugetlb: Add more sizes to tlb_remove_huge_tlb_entry29c2910c50
arm64: alternatives: mark patch_alternative() as `noinstr`8c4db601ac
regulator: wm8994: Add an off-on delay for WM8994 variant066180758f
gpu: ipu-v3: Fix dev_dbg frequency outputb4ef44c7c2
ata: libata-core: Disable READ LOG DMA EXT for Samsung 840 EVOs4cd3c9e070
net: micrel: fix KS8851_MLL Kconfig6117facb44
scsi: ibmvscsis: Increase INITIAL_SRP_LIMIT to 1024fb7a511542
scsi: target: tcmu: Fix possible page UAF70b97c1546
Drivers: hv: vmbus: Prevent load re-ordering when reading ring bufferc7a268b338
drm/amdkfd: Check for potential null return of kmalloc_array()2f3e1f3863
drm/amdkfd: Fix Incorrect VMIDs passed to HWS46ca8233f1
drm/amd/display: Update VTEM Infopacket definition74090c44c1
drm/amd/display: fix audio format not updated after edid updated0b3c2222d7
drm/amd: Add USBC connector ID22d658c6c5
cifs: potential buffer overflow in handling symlinks5c63ad2b0a
nfc: nci: add flush_workqueue to prevent uaf1407cc68aa
testing/selftests/mqueue: Fix mq_perf_tests to free the allocated cpu set37e54d151e
sctp: Initialize daddr on peeled off socketa05f5e26cb
net/smc: Fix NULL pointer dereference in smc_pnet_find_ib()1ac7c6d75e
drm/msm/dsi: Use connector directly in msm_dsi_manager_connector_init()02ee10d2a4
cfg80211: hold bss_lock while updating nontrans_list99a435c378
net/sched: taprio: Check if socket flags are valid7e59fdf954
net: ethernet: stmmac: fix altr_tse_pcs function when using a fixed-link94541468c1
net/sched: fix initialization order when updating chain 0 head4f83ba16a1
mlxsw: i2c: Fix initialization error flow8cefae8c40
gpiolib: acpi: use correct format characters2fd90b86df
veth: Ensure eth header is in skb's linear part5f2e543918
net/sched: flower: fix parsing of ethertype following VLAN header9250186785
memory: atmel-ebi: Fix missing of_node_put in atmel_ebi_probe347d6f40b8
ANDROID: GKI: fix crc issue with commit3f91687e6e
("block: don't merge across cgroup boundaries if blkcg is enabled")ebb848e772
Revert "PCI: Reduce warnings on possible RW1C corruption"023cd1cf3f
Merge 5.4.189 into android11-5.4-ltse7f5213d75
Linux 5.4.189b15feb09a3
ACPI: processor idle: Check for architectural support for LPI60b6aae072
cpuidle: PSCI: Move the `has_lpi` check to the beginning of the function598a22a077
selftests: cgroup: Test open-time cgroup namespace usage for migration checksa3f6c5949f
selftests: cgroup: Test open-time credential usage for migration checks48848242d3
selftests: cgroup: Make cg_create() use 0755 for permission instead of 06448a887060af
cgroup: Use open-time cgroup namespace for process migration perm checks9bd1ced646
cgroup: Allocate cgroup_file_ctx for kernfs_open_file->priv691a0fd625
cgroup: Use open-time credentials for process migraton perm checks1a623d361f
io_uring: fix fs->users overflow33fcb359a6
drm/amdkfd: Fix -Wstrict-prototypes from amdgpu_amdkfd_gfx_10_0_get_functions()1549bc8cc1
drm/amdkfd: add missing void argument to function kgd2kfd_initfdfb9ae261
mm/sparsemem: fix 'mem_section' will never be NULL gcc 12 warninga0c0867f06
arm64: module: remove (NOLOAD) from linker script2bd5b0d56d
mm: don't skip swap entry even if zap_details specifieddfa87d9a5d
mmc: mmci: stm32: correctly check all elements of sg listc645de49e9
mmc: mmci_sdmmc: Replace sg_dma_xxx macros0d99cce85e
dmaengine: Revert "dmaengine: shdma: Fix runtime PM imbalance on error"9e6980c68c
tools build: Use $(shell ) instead of `` to get embedded libperl's ccoptsf0752ee5ef
tools build: Filter out options and warnings not supported by clang3c07cc242b
irqchip/gic-v3: Fix GICR_CTLR.RWP pollinge44d6af17b
perf: qcom_l2_pmu: fix an incorrect NULL check on list iterator55e1465ba7
ata: sata_dwc_460ex: Fix crash due to OOB writeb0c4b3fc01
arm64: patch_text: Fixup last cpu should be master44277c50fd
btrfs: fix qgroup reserve overflow the qgroup limit17f3e31c86
x86/speculation: Restore speculation related MSRs during S3 resume0b8043e0fc
x86/pm: Save the MSR validity status at context setup25f506273b
mm/mempolicy: fix mpol_new leak in shared_policy_replacec19d8de4e6
mmmremap.c: avoid pointless invalidate_range_start/end on mremap(old_size=0)73953dfa9d
lz4: fix LZ4_decompress_safe_partial read out of bound3b35143888
mmc: renesas_sdhi: don't overwrite TAP settings when HS400 tuning is complete0869cb9f62
Revert "mmc: sdhci-xenon: fix annoying 1.8V regulator warning"c79c1846bd
perf session: Remap buf if there is no space for event9b6894db7c
perf tools: Fix perf's libperf_print callback4ecef6f28a
SUNRPC: Handle low memory situations in call_status()9a0da98a36
SUNRPC: Handle ENOMEM in call_transmit_status()b6a4055036
drbd: Fix five use after free bugs in get_initial_statea581b08921
bpf: Support dual-stack sockets in bpf_tcp_check_syncookieeb175e0606
spi: bcm-qspi: fix MSPI only access with bcm_qspi_exec_mem_op()034a92c6a8
qede: confirm skb is allocated before using7ee84d29f2
rxrpc: fix a race in rxrpc_exit_net()fee500c335
net: openvswitch: don't send internal clone attribute to the userspace.c154cf184b
ipv6: Fix stats accounting in ip6_pkt_dropfbe5f4c0dd
dpaa2-ptp: Fix refcount leak in dpaa2_ptp_probe8a50937227
IB/rdmavt: add lock to call to rvt_error_qp to prevent a race condition1ef586a864
bnxt_en: reserve space inside receive page for skb_shared_infoc539a6a589
drm/imx: Fix memory leak in imx_pd_connector_get_modescc9c2f51cd
net: stmmac: Fix unset max_speed difference between DT and non-DT platformsf5064531c2
net: ipv4: fix route with nexthop object delete warning2b7d14c105
net/tls: fix slab-out-of-bounds bug in decrypt_internal34a47f7ddb
scsi: zorro7xx: Fix a resource leak in zorro7xx_remove_one()2133c422a1
Drivers: hv: vmbus: Fix potential crash on module unloadc5e12c3a47
drm/amdgpu: fix off by one in amdgpu_gfx_kiq_acquire()0091429095
KVM: arm64: Check arm64_get_bp_hardening_data() didn't return NULL18e0097daf
mm: fix race between MADV_FREE reclaim and blkdev direct IO readabb1f310e7
parisc: Fix patch code locking and flushingbab8e3b4f6
parisc: Fix CPU affinity for Lasi, WAX and Dino chips1b8a6d1bda
SUNRPC: Fix socket waits for write buffer spacee19c3149a8
jfs: prevent NULL deref in diFree3504b0a177
virtio_console: eliminate anonymous module_init & module_exit60ade478c9
serial: samsung_tty: do not unlock port->lock for uart_write_wakeup()14e6bab373
NFS: swap-out must always use STABLE writes.66cf5de084
NFS: swap IO handling is slightly different for O_DIRECT IOfa47286c01
SUNRPC/call_alloc: async tasks mustn't block waiting for memorye427cd0ad5
clk: Enforce that disjoints limits are invalid8a7462b521
xen: delay xen_hvm_init_time_ops() if kdump is boot on vcpu>=323f8f3a1c10
NFSv4: Protect the state recovery thread against direct reclaim96cdf2fdbe
w1: w1_therm: fixes w1_seq for ds28ea00 sensors823f0364d4
clk: si5341: fix reported clk_rate when output divider is 2f4e16d12bc
minix: fix bug when opening a file with O_DIRECTa95bbfea8f
init/main.c: return 1 from handled __setup() functionsb4be80aa4b
netlabel: fix out-of-bounds memory accesses3803d896dd
Bluetooth: Fix use after free in hci_send_acl8beb760f63
xtensa: fix DTC warning unit_address_formatd41bdccb3c
usb: dwc3: omap: fix "unbalanced disables for smps10_out1" on omap5evm5cf2ce8967
scsi: libfc: Fix use after free in fc_exch_abts_resp()0aeaadc52b
MIPS: fix fortify panic when copying asm exception handlersc871b83748
bnxt_en: Eliminate unintended link toggle during FW reset1166f5c139
tuntap: add sanity checks about msg_controllen in sendmsgc68dd44fb8
macvtap: advertise link netns via netlink060a485df4
mips: ralink: fix a refcount leak in ill_acc_of_setup()1dd7569b8c
net/smc: correct settings of RMB window update limit2fda284a3a
scsi: aha152x: Fix aha152x_setup() __setup handler return valuea0ef536256
scsi: pm8001: Fix pm8001_mpi_task_abort_resp()a45af7e340
drm/amdkfd: make CRAT table missing message informational only0320bac580
dm ioctl: prevent potential spectre v1 gadget73dd98ac19
ipv4: Invalidate neighbour for broadcast address upon address additionf5e4f728d5
power: supply: axp288-charger: Set Vhold to 4.4V6e2dff272c
PCI: pciehp: Add Qualcomm quirk for Command Completed erratum4225947957
usb: ehci: add pci device support for Aspeed platformsea057ac8c9
iommu/arm-smmu-v3: fix event handling soft lockup4e85f5ab58
PCI: aardvark: Fix support for MSI interruptsc0e9d868a1
drm/amdgpu: Fix recursive locking warningcee00fd800
powerpc: Set crashkernel offset to mid of RMA regionfbb7b03320
ipv6: make mc_forwarding atomic9f24efe239
power: supply: axp20x_battery: properly report current when discharging3575fa75da
scsi: bfa: Replace snprintf() with sysfs_emit()9cd46ee374
scsi: mvsas: Replace snprintf() with sysfs_emit()ca5da71a58
bpf: Make dst_port field in struct bpf_sock 16-bit wide90dbc4c664
powerpc: dts: t104xrdb: fix phy type for FMAN 4/59388d87609
ptp: replace snprintf with sysfs_emit4009f104b0
drm/amd/amdgpu/amdgpu_cs: fix refcount leak of a dma_fence objc4e2f57727
ath5k: fix OOB in ath5k_eeprom_read_pcal_info_511161ffe21833
drm: Add orientation quirk for GPD Win Max01f700bae4
KVM: x86/svm: Clear reserved bits written to PerfEvtSeln MSRsa5476f8d35
ARM: 9187/1: JIVE: fix return value of __setup handler63efb90030
riscv module: remove (NOLOAD)68a7bb6948
rtc: wm8350: Handle error for wm8350_register_irqd95e0367fd
ubifs: Rectify space amount budget for mkdir/tmpfile operations9e24d03dd4
KVM: x86: Forbid VMM to set SYNIC/STIMER MSRs when SynIC wasn't activated1553126ecc
KVM: x86/mmu: do compare-and-exchange of gPTE via the user addresseb05ef70b6
openvswitch: Fixed nd target mask field in the flow dump.ce8043771f
um: Fix uml_mconsole stop/go337eb95570
ARM: dts: spear13xx: Update SPI dma properties4e48a66623
ARM: dts: spear1340: Update serial node properties7f19400e59
ASoC: topology: Allow TLV control to be either read or write32a76a5574
ubi: fastmap: Return error code if memory allocation fails in add_aeb()0c1a26c3d3
dt-bindings: spi: mxic: The interrupt property is not mandatory97ba943e99
dt-bindings: mtd: nand-controller: Fix a comment in the examplesa42ab650d3
dt-bindings: mtd: nand-controller: Fix the reg property description7d418a0a56
bpf: Fix comment for helper bpf_current_task_under_cgroup()a075e95614
mm/usercopy: return 1 from hardened_usercopy __setup() handlerabc0b4ea02
mm/memcontrol: return 1 from cgroup.memory __setup() handler2e16f48838
mm/mmap: return 1 from stack_guard_gap __setup() handlerd650ed0617
ASoC: soc-compress: Change the check for codec_dai7f19245c36
powerpc/kasan: Fix early region not updated correctlycb249f8c00
ACPI: CPPC: Avoid out of bounds access when parsing _CPC data7d4a3c930d
ARM: iop32x: offset IRQ numbers by 1d727fd32cb
ubi: Fix race condition between ctrl_cdev_ioctl and ubi_cdev_ioctl4f9a59cf84
ASoC: mediatek: mt6358: add missing EXPORT_SYMBOLs230987c2bb
pinctrl: nuvoton: npcm7xx: Use %zu printk format for ARRAY_SIZE()18455cc74e
pinctrl: nuvoton: npcm7xx: Rename DS() macro to DSTR()9611d8ef68
pinctrl: pinconf-generic: Print arguments for bias-pull-*b0c0f40570
net: hns3: fix software vlan talbe of vlan 0 inconsistent with hardware2a548fbf09
gfs2: Make sure FITRIM minlen is rounded up to fs block size8d67f67361
rtc: check if __rtc_read_time was successful9a8835902e
XArray: Update the LRU list in xas_split()cbd110b8dd
can: mcba_usb: properly check endpoint type2dfe9422d5
can: mcba_usb: mcba_usb_start_xmit(): fix double dev_kfree_skb in error path3e2852eda1
XArray: Fix xas_create_range() when multi-order entry presenta840286f13
ubifs: rename_whiteout: correct old_dir size computingb80ccbec0e
ubifs: Fix read out-of-bounds in ubifs_wbuf_write_nolock()1afe219e4a
ubifs: setflags: Make dirtied_ino_d 8 bytes aligned786013ecba
ubifs: Add missing iput if do_tmpfile() failed in rename whiteout37bdf1ad59
ubifs: Fix deadlock in concurrent rename whiteout and inode writeback14276d38c8
ubifs: rename_whiteout: Fix double free for whiteout_ui->data01df5f7627
ASoC: SOF: Intel: Fix NULL ptr dereference when ENOMEM4c277c846a
KVM: x86: fix sending PV IPIa1c03f11cc
KVM: Prevent module exit until all VMs are freed8f608ee87e
scsi: qla2xxx: Use correct feature type field during RFF_ID processingaf744ef8f1
scsi: qla2xxx: Reduce false trigger to login7f9ce17a1d
scsi: qla2xxx: Fix N2N inconsistent PLOGI2d087c7e55
scsi: qla2xxx: Fix missed DMA unmap for NVMe ls requests4a0a3c66a5
scsi: qla2xxx: Fix hang due to session stuck9d1651c8a4
scsi: qla2xxx: Fix incorrect reporting of task management failure2eb1274176
scsi: qla2xxx: Fix disk failure to rediscover8077a7162b
scsi: qla2xxx: Suppress a kernel complaint in qla_create_qpair()c478b2cde9
scsi: qla2xxx: Check for firmware dump already collected96391480ab
scsi: qla2xxx: Add devids and conditionals for 28xx08d04784cc
scsi: qla2xxx: Fix device reconnect in loop topology167debaeaa
scsi: qla2xxx: Fix warning for missing error codee67e9620a0
scsi: qla2xxx: Fix wrong FDMI data for 64G adapter8e561cbb78
scsi: qla2xxx: Fix stuck session in gpdbf196d94cc7
powerpc: Fix build errors with newer binutils71ca99a509
powerpc/lib/sstep: Fix build errors with newer binutilsd42b045e92
powerpc/lib/sstep: Fix 'sthcx' instruction0af21531f5
ALSA: hda/realtek: Add alc256-samsung-headphone fixup95d65bca6e
mmc: host: Return an error when ->enable_sdio_irq() ops is missing813553e4a9
media: hdpvr: initialize dev->worker at hdpvr_register_videodev236311be09
media: Revert "media: em28xx: add missing em28xx_close_extension"3b36c05f68
video: fbdev: sm712fb: Fix crash in smtcfb_write()11186875ba
ARM: mmp: Fix failure to remove sram devicedc958cd4c8
ARM: tegra: tamonten: Fix I2C3 pad setting691b0c0cb6
media: cx88-mpeg: clear interrupt status register before streaming videob239e9d52d
ASoC: soc-core: skip zero num_dai component in searching dai name7d0afbc41b
video: fbdev: udlfb: replace snprintf in show functions with sysfs_emitefe9631a76
video: fbdev: omapfb: panel-tpo-td043mtea1: Use sysfs_emit() instead of snprintf()ee7ce43367
video: fbdev: omapfb: panel-dsi-cm: Use sysfs_emit() instead of snprintf()046d9fd86b
ASoC: madera: Add dependencies on MFD46ac0e768d
ARM: dts: bcm2837: Add the missing L1/L2 cache informationbf27f5dfcf
ARM: dts: qcom: fix gic_irq_domain_translate warnings for msm89603856562e94
video: fbdev: omapfb: acx565akm: replace snprintf with sysfs_emit53a2088a39
video: fbdev: cirrusfb: check pixclock to avoid divide by zerob19c7df304
video: fbdev: w100fb: Reset global state055cdd2e7b
video: fbdev: nvidiafb: Use strscpy() to prevent buffer overflowfe41ad8be0
ntfs: add sanity check on allocation size5a016c053f
ext4: don't BUG if someone dirty pages without asking ext4 first07150842fa
spi: tegra20: Use of_device_get_match_data()0cccf9d4fb
PM: core: keep irq flags in device_pm_check_callbacks()f24e2362d6
ACPI/APEI: Limit printable size of BERT table data931aff6274
Revert "Revert "block, bfq: honor already-setup queue merges""7a7b11d694
lib/raid6/test/Makefile: Use $(pound) instead of \# for Make 4.3c7f6ae51b1
ACPICA: Avoid walking the ACPI Namespace if it is not there5117c9ff4c
bfq: fix use-after-free in bfq_dispatch_requeste464aafd35
irqchip/nvic: Release nvic_base upon failurec159eb634e
irqchip/qcom-pdc: Fix broken lockingc345724f2b
Fix incorrect type in assignment of ipv6 port for audit927649f3f3
loop: use sysfs_emit() in the sysfs xxx show()799f22279e
selinux: use correct type for context lengthc4f5a678ad
block, bfq: don't move oom_bfqqf409e9d178
pinctrl: npcm: Fix broken references to chip->parent_devicef36dd10d1b
gcc-plugins/stackleak: Exactly match strings instead of prefixesddcdda888e
LSM: general protection fault in legacy_parse_param1f316b42a8
lib/test: use after free in register_test_dev_kmod()7a2ba24cee
net: dsa: bcm_sf2_cfp: fix an incorrect NULL check on list iterator910a98e5c1
NFSv4/pNFS: Fix another issue with a list iterator pointing to the head9acf05b4e7
net/x25: Fix null-ptr-deref caused by x25_disconnectd15a70fcda
qlcnic: dcb: default to returning -EOPNOTSUPP8ba93ab509
selftests: test_vxlan_under_vrf: Fix broken test caseae713d7d99
net: phy: broadcom: Fix brcm_fet_config_init()ab2c789d1c
xen: fix is_xen_pmu()d85841e4b2
clk: Initialize orphan req_rate025c75ba38
clk: qcom: gcc-msm8994: Fix gpll4 widthf6f1c9a51e
NFSv4.1: don't retry BIND_CONN_TO_SESSION on session error806ef544cf
netfilter: nf_conntrack_tcp: preserve liberal flag in tcp optionscec71a718c
jfs: fix divide error in dbNextAGb3ac1e0196
driver core: dd: fix return value of __setup handler1bb231de81
firmware: google: Properly state IOMEM dependencye9f2a8c642
kgdbts: fix return value of __setup handler16fe77f86a
kgdboc: fix return value of __setup handler7c617cb38c
tty: hvc: fix return value of __setup handler0615a444c5
pinctrl/rockchip: Add missing of_node_put() in rockchip_pinctrl_probebc1e29a351
pinctrl: nomadik: Add missing of_node_put() in nmk_pinctrl_probe27681f9e02
pinctrl: mediatek: paris: Fix pingroup pin config state readbacke9eacc8952
pinctrl: mediatek: paris: Fix "argument" argument type for mtk_pinconf_get()b348618c17
pinctrl: mediatek: Fix missing of_node_put() in mtk_pctrl_init6e0d696188
staging: mt7621-dts: fix LEDs and pinctrl on GB-PC1 devicetreeefc605469e
NFS: remove unneeded check in decode_devicenotify_args()110c038779
clk: tegra: tegra124-emc: Fix missing put_device() call in emc_ensure_emc_driver2b5e68095c
clk: clps711x: Terminate clk_div_table with sentinel element166c0185f3
clk: loongson1: Terminate clk_div_table with sentinel element1d04467bbb
clk: actions: Terminate clk_div_table with sentinel element50b48ba439
remoteproc: qcom_wcnss: Add missing of_node_put() in wcnss_alloc_memory_regionb5625e7a16
remoteproc: qcom: Fix missing of_node_put in adsp_alloc_memory_region16ad029942
clk: qcom: clk-rcg2: Update the frac table for pixel clock52592f9afb
clk: qcom: clk-rcg2: Update logic to calculate D value for RCGb576488fa3
clk: imx7d: Remove audio_mclk_root_clk79467b9563
dma-debug: fix return value of __setup handlersfe334765e4
NFS: Return valid errors from nfs2/3_decode_dirent()546604de8a
iio: adc: Add check for devm_request_threaded_irq1da082f728
serial: 8250: Fix race condition in RTS-after-send handling617d9c0b98
serial: 8250_mid: Balance reference count for PCI DMA device61d3fdef61
phy: dphy: Correct lpx parameter and its derivatives(ta_{get,go,sure})84ee0c81dd
clk: qcom: ipq8074: Use floor ops for SDCC1 clockdd719fca42
pinctrl: renesas: r8a77470: Reduce size for narrow VIN1 channelb82465c1ff
staging:iio:adc:ad7280a: Fix handing of device address bit reversing.3ba0143128
misc: alcor_pci: Fix an error handling pathaf1fdbbb7b
pwm: lpc18xx-sct: Initialize driver data and hardware before pwmchip_add()996291d068
mxser: fix xmit_buf leak in activate when LSR == 0xff58200dedbd
mfd: asic3: Add missing iounmap() on error asic3_mfd_probe043b197013
tipc: fix the timer expires after interval 100ms6e2e80b2e9
openvswitch: always update flow key after nat7a970dbb7d
tcp: ensure PMTU updates are processed during fastopenb4725ad1e4
selftests/bpf/test_lirc_mode2.sh: Exit with proper code1c7b252a60
i2c: mux: demux-pinctrl: do not deactivate a master that is not active41249fff50
af_netlink: Fix shift out of bounds in group mask calculation874eca9396
Bluetooth: btmtksdio: Fix kernel oops in btmtksdio_interrupt2fe415601b
USB: storage: ums-realtek: fix error code in rts51x_read_mem()94c6ac22ab
bpf, sockmap: Fix double uncharge the mem of sk_msg244ce90c8d
bpf, sockmap: Fix more uncharged while msg has more_data6d03722c34
bpf, sockmap: Fix memleak in tcp_bpf_sendmsg while sk msg is full0174a89663
RDMA/mlx5: Fix memory leak in error flow for subscribe event routine9b08d211db
mtd: rawnand: atmel: fix refcount issue in atmel_nand_controller_init443121c994
MIPS: RB532: fix return value of __setup handler9a9a62846c
vxcan: enable local echo for sent CAN frames6f259b1a4a
powerpc: 8xx: fix a return value error in mpc8xx_pic_initd87803ba6b
selftests/bpf: Make test_lwt_ip_encap more stable and fasterac6edd6fcb
mfd: mc13xxx: Add check for mc13xxx_irq_requestd2577dc2b3
powerpc/sysdev: fix incorrect use to determine if list is empty7192df97a0
mips: DEC: honor CONFIG_MIPS_FP_SUPPORT=n10705a4305
PCI: Reduce warnings on possible RW1C corruption90bec38f6a
power: supply: wm8350-power: Add missing free in free_charger_irqa16d8f4191
power: supply: wm8350-power: Handle error for wm8350_register_irqc703292315
i2c: xiic: Make bus names unique6f41e4a69b
hv_balloon: rate-limit "Unhandled message" warningc00a91aca2
KVM: x86/emulator: Defer not-present segment check in __load_segment_descriptor()5f43ec383e
KVM: x86: Fix emulation in writing cr8e91ba23f55
powerpc/Makefile: Don't pass -mcpu=powerpc64 when building 32-bit3c660fa0f9
libbpf: Skip forward declaration when counting duplicated type namesb62e615a61
bpf, arm64: Feed byte-offset into bpf line info8f3192a241
bpf, arm64: Call build_prologue() first in first JIT pass54bc98a0ab
drm/bridge: cdns-dsi: Make sure to to create proper aliases for dt30c5cf4bf2
scsi: hisi_sas: Change permission of parameter prot_maske2cd206815
power: supply: bq24190_charger: Fix bq24190_vbus_is_enabled() wrong false returna725070701
drm/tegra: Fix reference leak in tegra_dsi_ganged_probecc16d0bc1c
ext2: correct max file size computingb689622cc4
TOMOYO: fix __setup handlers return valuesaa7981012a
drm/amd/display: Remove vupdate_int_entry definition765674e3b3
scsi: pm8001: Fix abort all task initialization442685f952
scsi: pm8001: Fix payload initialization in pm80xx_set_thermal_config()e7336d4775
scsi: pm8001: Fix command initialization in pm8001_chip_ssp_tm_req()898c73387e
scsi: pm8001: Fix command initialization in pm80XX_send_read_log()5e3359ed09
dm crypt: fix get_key_size compiler warning if !CONFIG_KEYS37e847b674
iwlwifi: mvm: Fix an error code in iwl_mvm_up()4ad7d29ee4
iwlwifi: Fix -EIO error code that is never returned770d42fff1
dax: make sure inodes are flushed before destroy cachec10980c522
IB/cma: Allow XRC INI QPs to set their local ACK timeout2eaa9d86e0
drm/amd/display: Add affected crtcs to atomic state for dsc mst unplug8ae97a595b
iommu/ipmmu-vmsa: Check for error num after setting maska29ce9592c
HID: i2c-hid: fix GET/SET_REPORT for unnumbered reports41ed613642
power: supply: ab8500: Fix memory leak in ab8500_fg_sysfs_initaf5ad6e837
PCI: aardvark: Fix reading PCI_EXP_RTSTA_PME bit on emulated bridge93b47d22d6
net: dsa: mv88e6xxx: Enable port policy support on 6097b03c06171b
mt76: mt7615: check sta_rates pointer in mt7615_sta_rate_tbl_updateeb5932160e
mt76: mt7603: check sta_rates pointer in mt7603_sta_rate_tbl_updated2ee8da9f7
powerpc/perf: Don't use perf_hw_context for trace IMC PMU135eb4e2be
ray_cs: Check ioremap return value3be1bb175f
power: reset: gemini-poweroff: Fix IRQ check in gemini_poweroff_probe9a0e270c40
i40e: don't reserve excessive XDP_PACKET_HEADROOM on XSK Rx to skb5607badbb1
KVM: PPC: Fix vmx/vsx mixup in mmio emulation4d244b7311
ath9k_htc: fix uninit value bugs57f4ad5e28
drm/amd/display: Fix a NULL pointer dereference in amdgpu_dm_connector_add_common_modes()1feb6ff89d
drm/edid: Don't clear formats if using deep color0d0ee651e7
mtd: rawnand: gpmi: fix controller timings setting750d2dc19f
mtd: onenand: Check for error irqd58d281d6a
Bluetooth: hci_serdev: call init_rwsem() before p->open()5d50f851dd
udmabuf: validate ubuf->pagecount2cf7d537d3
ath10k: fix memory overwrite of the WoWLAN wakeup packet pattern820e469a2f
drm/bridge: Add missing pm_runtime_disable() in __dw_mipi_dsi_probee7a0c8546f
drm/bridge: Fix free wrong object in sii8620_init_rcp_input_devf419751373
ASoC: msm8916-wcd-analog: Fix error handling in pm8916_wcd_analog_spmi_probe1f31073b77
mmc: davinci_mmc: Handle error for clk_enable93476f9f82
ASoC: msm8916-wcd-digital: Fix missing clk_disable_unprepare() in msm8916_wcd_digital_probe9e1fdf18fe
ASoC: imx-es8328: Fix error return code in imx_es8328_probe()67e12f1cb2
ASoC: mxs: Fix error handling in mxs_sgtl5000_probeed41d104be
ASoC: dmaengine: do not use a NULL prepare_slave_config() callback29e91a49b6
ivtv: fix incorrect device_caps for ivtvfb0342da6350
video: fbdev: omapfb: Add missing of_node_put() in dvic_probe_of58e42ee4a0
ASoC: fsi: Add check for clk_enableea9adaa598
ASoC: wm8350: Handle error for wm8350_register_irq0325193cf4
ASoC: atmel: Add missing of_node_put() in at91sam9g20ek_audio_probe3cc050df73
media: stk1160: If start stream fails, return buffers with VB2_BUF_STATE_QUEUED97398470c9
arm64: dts: rockchip: Fix SDIO regulator supply properties on rk3399-firefly7025f40690
ALSA: firewire-lib: fix uninitialized flag for AV/C deferred transactionfd5dda439e
memory: emif: check the pointer temp in get_device_details()0ead05f721
memory: emif: Add check for setup_interrupts68a69ad8df
ASoC: soc-compress: prevent the potentially use of null pointeraf6e1d11f7
ASoC: atmel_ssc_dai: Handle errors for clk_enablefd0c4082fd
ASoC: mxs-saif: Handle errors for clk_enable5847873140
printk: fix return value of printk.devkmsg __setup handler38bc92ae39
arm64: dts: broadcom: Fix sata nodename9873232fde
arm64: dts: ns2: Fix spi-cpol and spi-cpha propertyc6475df1e7
ALSA: spi: Add check for clk_enable()e0cfb41d46
ASoC: ti: davinci-i2s: Add check for clk_enable()3905742f93
ASoC: rt5663: check the return value of devm_kzalloc() in rt5663_parse_dp()a975000e7a
uaccess: fix nios2 and microblaze get_user_8()14cd5a8e61
media: usb: go7007: s2250-board: fix leak in probe()92f84aa82d
media: em28xx: initialize refcount before kref_getc6f0999461
media: video/hdmi: handle short reads of hdmi info frame.a9d0bb2988
ARM: dts: imx: Add missing LVDS decoder on M53Menlocac1473d83
soc: ti: wkup_m3_ipc: Fix IRQ check in wkup_m3_ipc_probefb7f2eabfe
arm64: dts: qcom: sm8150: Correct TCS configuration for apps rsc583fcb66ab
soc: qcom: aoss: remove spurious IRQF_ONESHOT flags755dbc3d73
soc: qcom: rpmpd: Check for null return of devm_kcalloc12081a1520
ARM: dts: qcom: ipq4019: fix sleep clock547d36fa41
video: fbdev: fbcvt.c: fix printing in fb_cvt_print_name()125d10f0be
video: fbdev: atmel_lcdfb: fix an error code in atmel_lcdfb_probe()da8b269cc0
video: fbdev: smscufx: Fix null-ptr-deref in ufx_usb_probe()4d847e455d
media: aspeed: Correct value for h-total-pixelsbd342c7bef
media: hantro: Fix overfill bottom register field namedb1b3b99d6
media: coda: Fix missing put_device() call in coda_get_vdoa_datab0f6b41490
media: bttv: fix WARNING regression on tunerless devices0478ccdc8e
f2fs: fix to avoid potential deadlock005f9cdab7
f2fs: fix missing free nid in f2fs_handle_failed_inodea2e534c6a0
perf/x86/intel/pt: Fix address filter config for 32-bit kernel015d31165d
perf/core: Fix address filter parser for multiple filters841f5b235d
sched/debug: Remove mpol_get/put and task_lock/unlock from sched_show_numa715a343172
clocksource: acpi_pm: fix return value of __setup handler4c0173521d
hwmon: (pmbus) Add Vin unit off handlingacba286182
crypto: ccp - ccp_dmaengine_unregister release dma channels39a521faf4
ACPI: APEI: fix return value of __setup handlers8dc887ae33
clocksource/drivers/timer-of: Check return value of of_iomap in timer_of_base_init()b305975a66
crypto: vmx - add missing dependenciesb7f3e230ca
hwrng: atmel - disable trng on failure path63266a1488
PM: suspend: fix return value of __setup handler6c4c026c3d
PM: hibernate: fix __setup handler error handling84fe3ca6e7
block: don't delete queue kobject before its childrenb68d1742f4
hwmon: (sch56xx-common) Replace WDOG_ACTIVE with WDOG_HW_RUNNINGbf78aca8e4
hwmon: (pmbus) Add mutex to regulator ops00d67f54b8
spi: pxa2xx-pci: Balance reference count for PCI DMA device40e6d5d1de
crypto: ccree - don't attempt 0 len DMA mappingsc3a5acf91c
audit: log AUDIT_TIME_* records only from rules152ebc0ee9
selftests/x86: Add validity check and allow field splittingf8a3de8d7c
spi: tegra114: Add missing IRQ check in tegra_spi_probee5e748a6ff
crypto: mxs-dcp - Fix scatterlist processing30d3f45bcf
crypto: authenc - Fix sleep in atomic context in decrypt_tail9b19022137
regulator: qcom_smd: fix for_each_child.cocci warningsaccf175d0c
PCI: pciehp: Clear cmd_busy bit in polling modea92f720554
brcmfmac: pcie: Fix crashes due to early IRQs51fffd722e
brcmfmac: pcie: Replace brcmf_pcie_copy_mem_todev with memcpy_toiod0ab87f8dc
brcmfmac: pcie: Release firmwares in the brcmf_pcie_setup error path2c894b12b2
brcmfmac: firmware: Allocate space for default boardrev in nvram34a57be0f9
xtensa: fix xtensa_wsr always writing 054c9fb17be
xtensa: fix stop_machine_cpuslocked call in patch_text4df9d88a9c
media: davinci: vpif: fix unbalanced runtime PM get28859c3a77
DEC: Limit PMAX memory probing to R3k systemsbaa4aa800d
crypto: rsa-pkcs1pad - fix buffer overread in pkcs1pad_verify_complete()058b2e59db
crypto: rsa-pkcs1pad - restore signature length check7973dc9118
crypto: rsa-pkcs1pad - correctly get hash from source scatterlist002288800e
lib/raid6/test: fix multiple definition linking errore73efa5ad5
thermal: int340x: Increase bitmap size5d553ed5c5
carl9170: fix missing bit-wise or operator for tx_params55f078dc66
ARM: dts: exynos: add missing HDMI supplies on SMDK54200e0d9bd6be
ARM: dts: exynos: add missing HDMI supplies on SMDK5250a77dd759bd
ARM: dts: exynos: fix UART3 pins configuration in Exynos52502fafe8b57c
ARM: dts: at91: sama5d2: Fix PMERRLOC resource size51186190c4
video: fbdev: atari: Atari 2 bpp (STe) palette bugfix478154be3a
video: fbdev: sm712fb: Fix crash in smtcfb_read()67643b89fb
drm/edid: check basic audio support on CEA extension block3f91687e6e
block: don't merge across cgroup boundaries if blkcg is enabled8d3a7b2064
mailbox: tegra-hsp: Flush whole channel28c8fd84be
drivers: hamradio: 6pack: fix UAF bug caused by mod_timer()5217ae080e
ACPI: properties: Consistently return -ENOENT if there are no more referencesf3ec0c9db5
udp: call udp_encap_enable for v6 sockets when enabling encap11dc8286f9
powerpc/kvm: Fix kvm_use_magic_pageded6277630
drbd: fix potential silent data corruption35b72d8e2c
mm/kmemleak: reset tag when compare object pointerd102fcacfc
mm,hwpoison: unmap poisoned page before invalidation099553a1a8
ALSA: hda/realtek: Fix audio regression on Mi Notebook Pro 2020a86bde8930
ALSA: cs4236: fix an incorrect NULL check on list iterator8489774120
Revert "Input: clear BTN_RIGHT/MIDDLE on buttonpads"097479aeb2
riscv: Fix fill_callchain return valuec82cbbefc6
qed: validate and restrict untrusted VFs vlan promisc mode5081cbfb62
qed: display VF trust config930a3ed5d8
scsi: libsas: Fix sas_ata_qc_issue() handling of NCQ NON DATA commandsae2a271ed5
mempolicy: mbind_range() set_policy() after vma_merge()d1313f5e8f
mm: invalidate hwpoison page cache page in fault path2efe956a74
mm/pages_alloc.c: don't create ZONE_MOVABLE beyond the end of a node455f4a2349
jffs2: fix memory leak in jffs2_scan_medium0978e9af45
jffs2: fix memory leak in jffs2_do_mount_fs30bf7244ac
jffs2: fix use-after-free in jffs2_clear_xattr_subsysteme27caad38b
can: ems_usb: ems_usb_start_xmit(): fix double dev_kfree_skb() in error path00a856fa69
spi: mxic: Fix the transmit pathe05221d201
pinctrl: samsung: drop pin banks references on error paths0996eaaddf
f2fs: fix to do sanity check on .cp_pack_total_block_countf1d5946d47
f2fs: quota: fix loop condition at f2fs_quota_sync()947ca26390
f2fs: fix to unlock page correctly in error path of is_alive()ce1aa09cc1
NFSD: prevent integer overflow on 32 bit systems85259340fc
NFSD: prevent underflow in nfssvc_decode_writeargs()1cfeeeee8c
SUNRPC: avoid race between mod_timer() and del_timer_sync()1a1e73e9ad
HID: intel-ish-hid: Use dma_alloc_coherent for firmware updatebeb7d96906
Documentation: update stable tree link20de1038e2
Documentation: add link to stable release candidate treed312c0035e
KEYS: fix length validation in keyctl_pkey_params_get_2()2458ecd21f
ptrace: Check PTRACE_O_SUSPEND_SECCOMP permission on PTRACE_SEIZE8a609c88fe
clk: uniphier: Fix fixed-rate initialization9d97610e74
greybus: svc: fix an error handling bug in gb_svc_hello()468757502e
iio: inkern: make a best effort on offset calculationbe2b89a909
iio: inkern: apply consumer scale when no channel scale is available5be8a07b95
iio: inkern: apply consumer scale on IIO_VAL_INT casesc459b27945
iio: afe: rescale: use s64 for temporary scale calculations576a1ce64c
coresight: Fix TRCCONFIGR.QE sysfs interfaced8f98a23b4
xhci: fix uninitialized string returned by xhci_decode_ctrl_ctx()b310e82e77
xhci: make xhci_handshake timeout for xhci_reset() adjustablea771cc784a
xhci: fix runtime PM imbalance in USB2 resumeb5a7ab0e1a
USB: usb-storage: Fix use of bitfields for hardware data in ene_ub6250.c212765c94f
virtio-blk: Use blk_validate_block_size() to validate block size40f282870d
block: Add a helper to validate the block sizea27ed2f369
tpm: fix reference counting for struct tpm_chip631bb18e83
iommu/iova: Improve 32-bit free space estimate2e2dee5e22
net: dsa: microchip: add spi_device_id tablesef388db2fe
af_key: add __GFP_ZERO flag for compose_sadb_supported in function pfkey_register0cdb512da0
spi: Fix erroneous sgs value with min_t()ab951c9c23
net:mcf8390: Use platform_get_irq() to get the interrupte62e6c2d7a
spi: Fix invalid sgs value96f9c386fe
ethernet: sun: Free the coherent when failing in probingaa3c3746e7
virtio_console: break out of buf poll on remove291efbad3d
xfrm: fix tunnel model fragmentation behaviora83df90a3b
HID: logitech-dj: add new lightspeed receiver id5c727ba42c
netdevice: add the case if dev is NULL7e9c9e3f62
USB: serial: simple: add Nokia phone driver80e5bf89a8
USB: serial: pl2303: add IBM device IDs6bfc5377a2
swiotlb: fix info leak with DMA_FROM_DEVICE5789342ce9
Merge 5.4.188 into android11-5.4-lts2845ff3fd3
Linux 5.4.188993c23880b
llc: only change llc->dev when bind() succeedsbb4878b39d
nds32: fix access_ok() checks in get/put_user5b1d2561a0
tpm: use try_get_ops() in tpm-space.c3bbd0000d0
mac80211: fix potential double free on mesh joincda27a2c6d
rcu: Don't deboost before reporting expedited quiescent stateedcc12ae32
crypto: qat - disable registration of algorithmsb0222e222d
ACPI: video: Force backlight native for Clevo NL5xRU and NL5xNUd7f29f397b
ACPI: battery: Add device HID and quirk for Microsoft Surface Go 32374007850
ACPI / x86: Work around broken XSDT on Advantech DAC-BJ01 board06f0ff82c7
netfilter: nf_tables: initialize registers in nft_do_chain()5061bf0f79
ALSA: hda/realtek: Add quirk for ASUS GA402f7a7cd530a
ALSA: hda/realtek - Fix headset mic problem for a HP machine with alc6710c4190b41a
ALSA: oss: Fix PCM OSS buffer allocation overflowab49515f7d
ASoC: sti: Fix deadlock via snd_pcm_stop_xrun() calld5c7e1987c
drivers: net: xgene: Fix regression in CRC stripping7870321eaf
ALSA: pci: fix reading of swapped values from pcmreg in AC97 codec1f4eefc585
ALSA: cmipci: Restore aux vol on suspend/resumed86bf7e073
ALSA: usb-audio: Add mute TLV for playback volumes on RODE NT-USB0f27a350f8
ALSA: pcm: Add stream lock during PCM reset ioctl operations572f9a0d3f
llc: fix netdevice reference leaks in llc_ui_bind()2e798814e0
thermal: int340x: fix memory leak in int3400_notify()5ff048f4ab
staging: fbtft: fb_st7789v: reset display before initialization637d12f9dc
tpm: Fix error handling in async workfee4dfbda6
esp: Fix possible buffer overflow in ESP transformation2774edd43a
net: ipv6: fix skb_over_panic in __ip6_append_data0aef718463
nfc: st21nfca: Fix potential buffer overflows in EVT_TRANSACTION628adfa218
nfsd: Containerise filecache laundrettec32f104138
nfsd: cleanup nfsd_file_lru_dispose()400a374bce
Merge 5.4.187 into android11-5.4-lts055c4cf7e6
Linux 5.4.1871771bc0d04
Revert "selftests/bpf: Add test for bpf_timer overwriting crash"0dd366cfdf
perf symbols: Fix symbol size calculation conditione732b0412f
Input: aiptek - properly check endpoint type700a071585
usb: usbtmc: Fix bug in pipe direction for control transfers2282a6eb6d
usb: gadget: Fix use-after-free bug by not setting udc->dev.driver2182937626
usb: gadget: rndis: prevent integer overflow in rndis_set_response()58ee8e2cb3
arm64: fix clang warning about TRAMP_VALIASd7b9296375
net: dsa: Add missing of_node_put() in dsa_port_parse_off96aa063ff
net: handle ARPHRD_PIMREG in dev_is_mac_header_xmit()3fd96bc64c
drm/panel: simple: Fix Innolux G070Y2-L01 BPP settingsb01e2df5fb
hv_netvsc: Add check for kvmalloc_array97ccef56e5
atm: eni: Add check for dma_map_single268dcf1f7b
net/packet: fix slab-out-of-bounds access in packet_recvmsg()9369748366
net: phy: marvell: Fix invalid comparison in the resume and suspend functionsd0f3c2d1d8
efi: fix return value of __setup handlerse61655430d
ocfs2: fix crash when initialize filecheck kobj fails184f7bd08c
crypto: qcom-rng - ensure buffer for generate is completely filled8aca45f6ed
Merge branch 'android11-5.4' into 'android11-5.4-lts'f54aeabbaa
Merge 5.4.186 into android11-5.4-lts8e24ff11b5
Linux 5.4.186fcbdaa6a3c
fixup for "arm64 entry: Add macro for reading symbol address from the trampoline"b8bc0718ba
kselftest/vm: fix tests build with old libc2643ca24f5
sfc: extend the locking on mcdi->seqno46fd0a0740
tcp: make tcp_read_sock() more robust16a2e50fe9
nl80211: Update bss channel on channel switch for P2P_CLIENT941e8bcd2b
drm/vrr: Set VRR capable prop only if it is attached to connector6becb05724
iwlwifi: don't advertise TWT support51969ebe7f
atm: firestream: check the return value of ioremap() in fs_init()23352749f0
can: rcar_canfd: rcar_canfd_channel_probe(): register the CAN device when fully ready4006447f55
ARM: 9178/1: fix unmet dependency on BITREVERSE for HAVE_ARCH_BITREVERSEc2420bc333
MIPS: smp: fill in sibling and core maps earlierd1df59e312
mac80211: refuse aggregations sessions before authorizedfb35b0cfba
ARM: dts: rockchip: fix a typo on rk3288 crypto-controller4857a9b291
ARM: dts: rockchip: reorder rk322x hmdi clocksba14ba2d4c
arm64: dts: agilex: use the compatible "intel,socfpga-agilex-hsotg"aca8fdddee
arm64: dts: rockchip: reorder rk3399 hdmi clockse49ebea3f5
arm64: dts: rockchip: fix rk3399-puma eMMC HS400 signal integritybd33f9b864
xfrm: Fix xfrm migrate issues when address family changes3c21ece775
xfrm: Check if_id in xfrm_migrate970a21404e
arm64: Use the clearbhb instruction in mitigationsfb65675f66
KVM: arm64: Allow SMCCC_ARCH_WORKAROUND_3 to be discovered and migrated9013fd4bc9
arm64: Mitigate spectre style branch history side channels26129ea295
KVM: arm64: Add templates for BHB mitigation sequences1b735c8dc1
arm64: proton-pack: Report Spectre-BHB vulnerabilities as part of Spectre-v2c45d885c5a
arm64: Add percpu vectors for EL11bb1944970
arm64: entry: Add macro for reading symbol addresses from the trampoline3abf6e8a7a
arm64: entry: Add vectors that have the bhb mitigation sequences2933ca8c81
arm64: entry: Add non-kpti __bp_harden_el1_vectors for mitigations9232867e4f
arm64: entry: Allow the trampoline text to occupy multiple pagesad8800443b
arm64: entry: Make the kpti trampoline's kpti sequence optional4b91f35c87
arm64: entry: Move trampoline macros out of ifdef'd section0bfdd73348
arm64: entry: Don't assume tramp_vectors is the start of the vectorsfb117a27c6
arm64: entry: Allow tramp_alias to access symbols after the 4K boundary788fbb5fe2
arm64: entry: Move the trampoline data page before the text page33397322d4
arm64: entry: Free up another register on kpti's tramp_exit path3f95cc642c
arm64: entry: Make the trampoline cleanup optional8aa1257128
arm64: entry.S: Add ventry overflow sanity checks503fdc244a
arm64: Add Cortex-X2 CPU part definition7103651c98
arm64: add ID_AA64ISAR2_EL1 sys registerf5f94aa500
arm64: Add Neoverse-N2, Cortex-A710 CPU part definitioned5bf8a507
arm64: Add part number for Arm Cortex-A770b84cfaefe
sctp: fix the processing for INIT chunk57e401a53c
Revert "xfrm: state and policy should fail if XFRMA_IF_ID 0"80b62a22cd
Merge 5.4.185 into android11-5.4-lts70f77a2cb5
Linux 5.4.185afb684cb97
KVM: SVM: Don't flush cache if hardware enforces cache coherency across encryption domains690909c6d9
x86/mm/pat: Don't flush cache if hardware enforces cache coherency across encryption domnains6b13a18860
x86/cpu: Add hardware-enforced cache coherency as a CPUID feature9dd71ec106
x86/cpufeatures: Mark two free bits in word 3a4eef9e769
ext4: add check to prevent attempting to resize an fs with sparse_super2269db254c3
ARM: fix Thumb2 regression with Spectre BHB635959a821
virtio: acknowledge all features before accessffeb42e05d
virtio: unexport virtio_finalize_features19d57cfbf8
arm64: dts: marvell: armada-37xx: Remap IO space to bus address 0x0978e4f2648
riscv: Fix auipc+jalr relocation range checksd6948de3b6
mmc: meson: Fix usage of meson_mmc_post_req()ba0d7beec2
net: macb: Fix lost RX packet wakeup race in NAPI receive403e3afe24
staging: gdm724x: fix use after free in gdm_lte_rx()a9174077fe
fuse: fix pipe buffer lifetime for direct_iod72c79b60d
ARM: Spectre-BHB: provide empty stub for non-configad66df9064
selftests/memfd: clean up mapping in mfd_fail_write849c78024e
selftest/vm: fix map_fixed_noreplace test failure500158df87
tracing: Ensure trace buffer is at least 4096 bytes large090e73fb9c
ipv6: prevent a possible race condition with lifetimes1d4bdaaa8d
Revert "xen-netback: Check for hotplug-status existence before watching"60e4e3198c
Revert "xen-netback: remove 'hotplug-status' once it has served its purpose"8879b5313e
net-sysfs: add check for netdevice being present to speed_showdcf55b071d
selftests/bpf: Add test for bpf_timer overwriting crashe0eca9285c
net: bcmgenet: Don't claim WOL when its not availablebbf59d7ae5
sctp: fix kernel-infoleak for SCTP socketse934371971
net: phy: DP83822: clear MISR2 register to disable interruptsf7b3b52034
gianfar: ethtool: Fix refcount leak in gfar_get_ts_info54fd6b2eb1
gpio: ts4900: Do not set DAT and OE together82b298e014
selftests: pmtu.sh: Kill tcpdump processes launched by subshell.cd2a5c0da0
NFC: port100: fix use-after-free in port100_send_complete1a4017926e
net/mlx5: Fix a race on command flush flow6102e2e5c6
net/mlx5: Fix size field in bufferx_reg struct0a64aea5fe
ax25: Fix NULL pointer dereference in ax25_kill_by_device45bfd0a937
net: ethernet: lpc_eth: Handle error for clk_enablee84d37af40
net: ethernet: ti: cpts: Handle error for clk_enable8ee065a7a9
ethernet: Fix error handling in xemaclite_of_probe4c0b769d95
ARM: dts: aspeed: Fix AST2600 quad spi group7db2bc0861
drm/sun4i: mixer: Fix P010 and P210 format numbers7f8f564141
qed: return status of qed_iov_get_linkf59e786090
net: qlogic: check the return value of dma_alloc_coherent() in qed_vf_hw_prepare()45d470e4f8
virtio-blk: Don't use MAX_DISCARD_SEGMENTS if max_discard_seg is zero278b2c7d9f
arm64: dts: armada-3720-turris-mox: Add missing ethernet0 aliasf62922b601
clk: qcom: gdsc: Add support to update GDSC transition delay9ed911a069
Merge 5.4.184 into android11-5.4-lts8f2333be80
Merge 5.4.183 into android11-5.4-lts55d2e3e494
ANDROID: fix up rndis ABI breakage1346e17653
Linux 5.4.184f7fc9c3487
Revert "ACPI: PM: s2idle: Cancel wakeup before dispatching EC GPE"0e35f3ab69
xen/netfront: react properly to failing gnttab_end_foreign_access_ref()782e5ebcc8
xen/gnttab: fix gnttab_end_foreign_access() without page specified051c4cc7bd
xen/pvcalls: use alloc/free_pages_exact()be63ea883e
xen/9p: use alloc/free_pages_exact()8efaf0c862
xen: remove gnttab_query_foreign_access()d193785a4b
xen/gntalloc: don't use gnttab_query_foreign_access()089a8e491d
xen/scsifront: don't use gnttab_query_foreign_access() for mapped statusb507879c1e
xen/netfront: don't use gnttab_query_foreign_access() for mapped statusa83400456f
xen/blkfront: don't use gnttab_query_foreign_access() for mapped status44d86dccd2
xen/grant-table: add gnttab_try_end_foreign_access()95ff823832
xen/xenbus: don't let xenbus_grant_ring() remove grants in error case56f1b3c5c8
ARM: fix build warning in proc-v7-bugs.c40da947ba0
ARM: Do not use NOCROSSREFS directive with ld.lld583662bfd8
ARM: fix co-processor register typo21a466c32f
ARM: fix build error when BPF_SYSCALL is disabledd1cfdd5077
ARM: include unprivileged BPF status in Spectre V2 reporting920f7970cf
ARM: Spectre-BHB workarounddcf33beb49
ARM: use LOADADDR() to get load address of sections31814db6e4
ARM: early traps initialisationfdfc0baf82
ARM: report Spectre v2 status through sysfs26171b016b
arm/arm64: smccc/psci: add arm_smccc_1_1_get_conduit()baaaba74e0
arm/arm64: Provide a wrapper for SMCCC 1.1 calls6c1599fd1b
x86/speculation: Warn about eIBRS + LFENCE + Unprivileged eBPF + SMT7c77025694
x86/speculation: Warn about Spectre v2 LFENCE mitigation865da3868b
x86/speculation: Update link to AMD speculation whitepaperb1bacf22a8
x86/speculation: Use generic retpoline by default on AMD1e47ab3df9
x86/speculation: Include unprivileged eBPF status in Spectre v2 mitigation reporting327a4da9b0
Documentation/hw-vuln: Update spectre doc96b3d45aea
x86/speculation: Add eIBRS + Retpoline options41b50510e5
x86/speculation: Rename RETPOLINE_AMD to RETPOLINE_LFENCEb70bc2e355
x86,bugs: Unconditionally allow spectre_v2=retpoline,amd22aed24089
x86/speculation: Merge one test in spectre_v2_user_select_mitigation()e7d1268f56
Linux 5.4.1835817c13cd6
hamradio: fix macro redefine warning3c7d63cfa1
net: dcb: disable softirqs in dcbnl_flush_dev()5f53a6a8ae
Revert "xfrm: xfrm_state_mtu should return at least 1280 for ipv6"f73eb7342b
btrfs: add missing run of delayed items after unlink during log replayf8d4a8eebb
btrfs: qgroup: fix deadlock between rescan worker and remove qgroup39403d72b4
btrfs: fix lost prealloc extents beyond eof after full fsync4dd5d3310c
tracing: Fix return value of __setup handlersc0f7253376
tracing/histogram: Fix sorting on old "cpu" value35fa6f2a31
HID: add mapping for KEY_ALL_APPLICATIONSecefb8cc0f
HID: add mapping for KEY_DICTATE52b984b17d
Input: elan_i2c - fix regulator enable count imbalance after suspend/resume16eb602ead
Input: elan_i2c - move regulator_[en|dis]able() out of elan_[en|dis]able_power()3f123c305e
nl80211: Handle nla_memdup failures in handle_nan_filterec89b27646
net: chelsio: cxgb3: check the return value of pci_find_capability()6650fa5f3b
soc: fsl: qe: Check of ioremap return valuee89c53fcd2
memfd: fix F_SEAL_WRITE after shmem huge page allocated58b07100c2
ibmvnic: free reset-work-item when flushing2e7abe2efc
igc: igc_write_phy_reg_gpy: drop premature return5c215ea574
ARM: 9182/1: mmu: fix returns from early_param() and __setup() functions89b881f339
ARM: Fix kgdb breakpoint for Thumb287765309bf
igc: igc_read_phy_reg_gpy: drop premature return44ff6c29b2
arm64: dts: rockchip: Switch RK3399-Gru DP to SPDIF outputd59120a489
can: gs_usb: change active_channels's type from atomic_t to u8bc65372492
ASoC: cs4265: Fix the duplicated control namecff3987e09
firmware: arm_scmi: Remove space in MODULE_ALIAS name461a26ebf0
efivars: Respect "block" flag in efivar_entry_set_safe()b4f4659843
ixgbe: xsk: change !netif_carrier_ok() handling in ixgbe_xmit_zc()e50c589678
net: arcnet: com20020: Fix null-ptr-deref in com20020pci_probe()044e209c72
net: sxgbe: fix return value of __setup handlera54dedf620
iavf: Fix missing check for running netdev150b8a05d0
net: stmmac: fix return value of __setup handlere9fa400903
mac80211: fix forwarded mesh frames AC & queue selectionf17b27f3d4
ia64: ensure proper NUMA distance and possible map initialization80998dbde1
sched/topology: Fix sched_domain_topology_level alloc in sched_init_numa()407ec382ba
sched/topology: Make sched_init_numa() use a set for the deduplicating sortb40c912624
xen/netfront: destroy queues before real_num_tx_queues is zeroedfa84d44df4
block: Fix fsync always failed if once failed849339fd72
net/smc: fix unexpected SMC_CLC_DECL_ERR_REGRMB error cause by server8e306a76b9
net/smc: fix unexpected SMC_CLC_DECL_ERR_REGRMB error generated by client1f5abd671d
net: dcb: flush lingering app table entries for unregistered devicesed05368024
batman-adv: Don't expect inter-netns unique iflink indices8639532271
batman-adv: Request iflink once in batadv_get_real_netdevicea1ccea6183
batman-adv: Request iflink once in batadv-on-batadv check43c25da41e
netfilter: nf_queue: fix possible use-after-free3c934f1087
netfilter: nf_queue: don't assume sk is full socketd2c96b1930
xfrm: enforce validity of offload input flags019b4b9d59
xfrm: fix the if_id check in changelink49c24579ce
netfilter: fix use-after-free in __nf_register_net_hook()ac858e4462
xfrm: fix MTU regressionf3537f1b2b
ASoC: ops: Shift tested values in snd_soc_put_volsw() by +min75a471401b
ALSA: intel_hdmi: Fix reference to PCM buffer addresse28372b295
ata: pata_hpt37x: fix PCI clock detection58b419d16e
usb: gadget: clear related members when goto failba6fdd55b1
usb: gadget: don't release an existing dev->buf0babb778ff
net: usb: cdc_mbim: avoid altsetting toggling for Telit FN990a7ef01d25a
i2c: qup: allow COMPILE_TESTda9bf89344
i2c: cadence: allow COMPILE_TESTbb07c8bb77
dmaengine: shdma: Fix runtime PM imbalance on errore208668ef7
cifs: fix double free race when mount fails in cifs_get_root()2ed93e3e3f
Input: clear BTN_RIGHT/MIDDLE on buttonpads7b6d98f869
ASoC: rt5682: do not block workqueue if card is unbounde2106e429f
ASoC: rt5668: do not block workqueue if card is unbound7b7c65abeb
i2c: bcm2835: Avoid clock stretching timeouts964f155c38
mac80211_hwsim: initialize ieee80211_tx_info at hw_scan_work1a7d2fccd8
mac80211_hwsim: report NOACK frames in tx_status31855d74fd
Merge 5.4.182 into android11-5.4-lts866ae42cf4
Linux 5.4.182fb2bbb7d30
fget: clarify and improve __fget_files() implementationd6a29ce52a
memblock: use kfree() to release kmalloced memblock regions5d9453bf41
Revert "drm/nouveau/pmu/gm200-: avoid touching PMU outside of DEVINIT/PREOS/ACR"1fb051bbbc
gpio: tegra186: Fix chip_data type confusion2782b05d02
tty: n_gsm: fix NULL pointer access due to DLCI releasec03a495814
tty: n_gsm: fix proper link termination after failed open912144e8a3
tty: n_gsm: fix encoding of control signal octet bit DV1879db4f25
xhci: Prevent futile URB re-submissions due to incorrect return value.80922d7b52
xhci: re-initialize the HC during resume if HCE was set0139a10090
usb: dwc3: gadget: Let the interrupt handler disable bottom halves.6e74aebbf7
usb: dwc3: pci: Fix Bay Trail phy GPIO mappingsba3e83e5a0
USB: serial: option: add Telit LE910R1 compositions92ac25b79d
USB: serial: option: add support for DW5829e40256addf5
tracefs: Set the group ownership in apply_options() not parse_options()6b23eda989
USB: gadget: validate endpoint index for xilinx udc9ab652d41d
usb: gadget: rndis: add spinlock for rndis response list39848d7e4e
Revert "USB: serial: ch341: add new Product ID for CH341A"7c453de366
ata: pata_hpt37x: disable primary channel on HPT371a28f8dbd47
iio: Fix error handling for PM8fff0310e6
iio: adc: ad7124: fix mask used for setting AIN_BUFP & AIN_BUFM bitsce1076b33e
iio: adc: men_z188_adc: Fix a resource leak in an error handling pathcb90ab3f09
tracing: Have traceon and traceoff trigger honor the instance901206f71e
RDMA/ib_srp: Fix a deadlockb7e2b91fcb
configfs: fix a race in configfs_{,un}register_subsystem()df14d2bed8
spi: spi-zynq-qspi: Fix a NULL pointer dereference in zynq_qspi_exec_mem_op()a62f4266d5
net/mlx5: Fix wrong limitation of metadata match on ecpf45618e9157
net/mlx5: Fix possible deadlock on rule deletion53026346a9
netfilter: nf_tables: fix memory leak during stateful obj update5ad5886f85
nfp: flower: Fix a potential leak in nfp_tunnel_add_shared_mac()dfe537b0c9
net: Force inlining of checksum functions in net/checksum.heee01c88c9
net: ll_temac: check the return value of devm_kmalloc()fc92a14fa0
net/mlx5e: Fix wrong return value on ioctl EEPROM query failure3cbf1f98d8
drm/edid: Always set RGB444d0251c38df
openvswitch: Fix setting ipv6 fields causing hw csum failure2b3cdd70ea
gso: do not skip outer ip header in case of ipip and net_failover0240bb276f
tipc: Fix end of loop tests for list_for_each_entry()2ed1326376
net: __pskb_pull_tail() & pskb_carve_frag_list() drop_monitor friends97a6c07d6f
bpf: Do not try bpf_msg_push_data with len 0dffce58f6f
perf data: Fix double free in perf_session__delete()3174b09fe1
ping: remove pr_err from ping_lookup767099f0ec
lan743x: fix deadlock in lan743x_phy_link_status_change()5d76e0b69d
optee: use driver internal tee_context for some rpc0e526f533f
tee: export teedev_open() and teedev_close_context()64e0b5894c
x86/fpu: Correct pkru/xstate inconsistency49c011a44e
netfilter: nf_tables_offload: incorrect flow offload action array size49a4536a46
USB: zaurus: support another broken Zaurusb95d71abeb
sr9700: sanity check for packet lengthd0dac454b9
drm/amdgpu: disable MMHUB PG for Picassoeb88a38831
parisc/unaligned: Fix ldw() and stw() unalignment handlersb783ef3eb6
parisc/unaligned: Fix fldd and fstd unaligned handlers on 32-bit kernel0b608b3392
vhost/vsock: don't check owner in vhost_vsock_stop() while releasingdd0de35102
clk: jz4725b: fix mmc0 clock gatingd1f1de5dff
cgroup/cpuset: Fix a race between cpuset_attach() and cpu hotplug2867afd647
Revert "netfilter: conntrack: don't refresh sctp entries in closed state"56f5213db8
Merge 5.4.181 into android11-5.4-ltsb6e8856b8a
Linux 5.4.1813e73b02af6
kconfig: fix failing to generate auto.conf90c0d3cc67
net: macb: Align the dma and coherent dma masksf1c3f41245
net: usb: qmi_wwan: Add support for Dell DW5829e6b364ca481
tracing: Fix tp_printk option related with tp_printk_stop_on_boot8bf73d5ea9
drm/rockchip: dw_hdmi: Do not leave clock enabled in error case5a21d50723
ata: libata-core: Disable TRIM on M88V2941da91158e
kconfig: let 'shell' return enough output for deep path names913932a306
arm64: dts: meson-g12: drop BL32 region from SEI510/SEI610d2fd1c7804
arm64: dts: meson-g12: add ATF BL32 reserved-memory regiondaa8680809
arm64: dts: meson-gx: add ATF BL32 reserved-memory regionba4b40356a
netfilter: conntrack: don't refresh sctp entries in closed stated4de2bbcbc
irqchip/sifive-plic: Add missing thead,c900-plic match string2d7a327a12
ARM: OMAP2+: adjust the location of put_device() call in omapdss_init_offff21185f5
ARM: OMAP2+: hwmod: Add of_node_put() before break3deabc3f60
KVM: x86/pmu: Use AMD64_RAW_EVENT_MASK for PERF_TYPE_RAWfe595759c2
Drivers: hv: vmbus: Fix memory leak in vmbus_add_channel_kobjba71b1b30d
i2c: brcmstb: fix support for DSL and CM variants6f08452c56
copy_process(): Move fd_install() out of sighand->siglock critical sectione52dfd2a49
dmaengine: sh: rcar-dmac: Check for error num after setting maskc83049cb88
net: sched: limit TC_ACT_REPEAT loops87c575d2a2
lib/iov_iter: initialize "flags" in new pipe_buffer091dac5c63
EDAC: Fix calculation of returned address and next offset in edac_align_ptr()f0c2c023c2
scsi: lpfc: Fix pt2pt NVMe PRLI reject LOGO loop56f9abba98
mtd: rawnand: brcmnand: Fixed incorrect sub-page ECC statusbdc70b603d
mtd: rawnand: qcom: Fix clock sequencing in qcom_nandc_probe()3758a57076
NFS: Do not report writeback errors in nfs_getattr()357d42d593
NFS: LOOKUP_DIRECTORY is also ok with symlinks20f4ee3c33
block/wbt: fix negative inflight counter when remove scsi device4cd3281a91
mtd: rawnand: gpmi: don't leak PM reference in error pathc6fee7c854
powerpc/lib/sstep: fix 'ptesync' build erroredfac6b77b
ASoC: ops: Fix stereo change notifications in snd_soc_put_volsw_range()d6d8d1db80
ASoC: ops: Fix stereo change notifications in snd_soc_put_volsw()99c2b13ce9
ALSA: hda: Fix missing codec probe on Shenker Dock 152b2b531ceb
ALSA: hda: Fix regression on forced probe mask optionaca7e5b6a5
libsubcmd: Fix use-after-free for realloc(..., 0)7af6164cee
bonding: fix data-races around agg_select_timeraeb993412e
drop_monitor: fix data-race in dropmon_net_event / trace_napi_poll_hitdb3ffc5d33
bonding: force carrier update when releasing slavefb8c98f92a
ping: fix the dif and sdif check in ping_lookup8198c4d4c2
net: ieee802154: ca8210: Fix lifs/sifs periodsa06440508a
net: dsa: lan9303: fix reset on probe73f8575216
netfilter: nft_synproxy: unregister hooks on init error path5e8c5b217c
iwlwifi: pcie: gen2: fix locking when "HW not ready"e1d0e738b0
iwlwifi: pcie: fix locking when "HW not ready"902528183f
mmc: block: fix read single on recovery logic5f326fe2ae
vsock: remove vsock from connected table when connect is interrupted by a signalf48a38703c
dmaengine: at_xdmac: Start transfer for cyclic channels in issue_pending41ce06a3ec
taskstats: Cleanup the use of task->exit_code8583d2ea90
ext4: prevent partial update of the extent blocksd57fcf0d91
ext4: check for inconsistent extents between index and leaf block6a332d095c
ext4: check for out-of-order index extents in ext4_valid_extent_entries()13f6ebef03
drm/radeon: Fix backlight control on iMac 12,1494de920d9
iwlwifi: fix use-after-free6194b46897
arm64: module/ftrace: intialize PLT at load timeadcc4b795f
arm64: module: rework special section handlingdfe928f16c
module/ftrace: handle patchable-function-entry30af4dcfa8
ftrace: add ftrace_init_nop()42c8cccf83
Revert "module, async: async_synchronize_full() on module init iff async is used"5c7726bd57
drm/amdgpu: fix logic inversion in checkd411b2a5da
nvme-rdma: fix possible use-after-free in transport error_recovery work61a26ffd5a
nvme-tcp: fix possible use-after-free in transport error_recovery work70356b756a
nvme: fix a possible use-after-free in controller reset during load89d2bd1325
quota: make dquot_quota_sync return errors from ->sync_fsf124d9eff9
vfs: make freeze_super abort when sync_filesystem returns errorcfc8b37ef0
ax25: improve the incomplete fix to avoid UAF and NPD bugsdd2fcac324
selftests/zram: Adapt the situation that /dev/zram0 is being usedc3a9afa824
selftests/zram01.sh: Fix compression ratio calculation8d1c50c868
selftests/zram: Skip max_comp_streams interface on newer kernel455ef08d6e
net: ieee802154: at86rf230: Stop leaking skb's3bd8bebb16
selftests: rtc: Increase test timeout so that all tests runbc6ac6c0f6
platform/x86: ISST: Fix possible circular locking dependency detectedbd6492930a
btrfs: send: in case of IO error log it3ff48a67ed
parisc: Fix sglist access in ccio-dma.cefccc9b0c7
parisc: Fix data TLB miss in sba_unmap_sg3434d8837f
parisc: Drop __init from map_pages declarationbd282ee53e
serial: parisc: GSC: fix build when IOSAPIC is not set9d2aad133b
Revert "svm: Add warning message for AVIC IPI invalid target"1902725520
HID:Add support for UGTABLET WP5540866a85813b
Makefile.extrawarn: Move -Wunaligned-access to W=1 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: Ic789d7f387b2848b0c0a9a72d4867720841a5e2b
This commit is contained in:
commit
375c2e2cdb
@ -156,3 +156,13 @@ accesses to DMA buffers in both privileged "supervisor" and unprivileged
|
||||
subsystem that the buffer is fully accessible at the elevated privilege
|
||||
level (and ideally inaccessible or at least read-only at the
|
||||
lesser-privileged levels).
|
||||
|
||||
DMA_ATTR_PRIVILEGED
|
||||
-------------------
|
||||
|
||||
Some advanced peripherals such as remote processors and GPUs perform
|
||||
accesses to DMA buffers in both privileged "supervisor" and unprivileged
|
||||
"user" modes. This attribute is used to indicate to the DMA-mapping
|
||||
subsystem that the buffer is fully accessible at the elevated privilege
|
||||
level (and ideally inaccessible or at least read-only at the
|
||||
lesser-privileged levels).
|
||||
|
@ -44,7 +44,7 @@ patternProperties:
|
||||
properties:
|
||||
reg:
|
||||
description:
|
||||
Contains the native Ready/Busy IDs.
|
||||
Contains the chip-select IDs.
|
||||
|
||||
nand-ecc-mode:
|
||||
allOf:
|
||||
@ -139,6 +139,6 @@ examples:
|
||||
nand-ecc-mode = "soft";
|
||||
nand-ecc-algo = "bch";
|
||||
|
||||
/* controller specific properties */
|
||||
/* NAND chip specific properties */
|
||||
};
|
||||
};
|
||||
|
@ -8,11 +8,13 @@ Required properties:
|
||||
- reg: should contain 2 entries, one for the registers and one for the direct
|
||||
mapping area
|
||||
- reg-names: should contain "regs" and "dirmap"
|
||||
- interrupts: interrupt line connected to the SPI controller
|
||||
- clock-names: should contain "ps_clk", "send_clk" and "send_dly_clk"
|
||||
- clocks: should contain 3 entries for the "ps_clk", "send_clk" and
|
||||
"send_dly_clk" clocks
|
||||
|
||||
Optional properties:
|
||||
- interrupts: interrupt line connected to the SPI controller
|
||||
|
||||
Example:
|
||||
|
||||
spi@43c30000 {
|
||||
|
@ -76,7 +76,7 @@ The beginning of an extended attribute block is in
|
||||
- Checksum of the extended attribute block.
|
||||
* - 0x14
|
||||
- \_\_u32
|
||||
- h\_reserved[2]
|
||||
- h\_reserved[3]
|
||||
- Zero.
|
||||
|
||||
The checksum is calculated against the FS UUID, the 64-bit block number
|
||||
|
@ -174,7 +174,16 @@ Trees
|
||||
- The finalized and tagged releases of all stable kernels can be found
|
||||
in separate branches per version at:
|
||||
|
||||
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
|
||||
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
|
||||
|
||||
- The release candidate of all stable kernel versions can be found at:
|
||||
|
||||
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/
|
||||
|
||||
.. warning::
|
||||
The -stable-rc tree is a snapshot in time of the stable-queue tree and
|
||||
will change frequently, hence will be rebased often. It should only be
|
||||
used for testing purposes (e.g. to be consumed by CI systems).
|
||||
|
||||
|
||||
Review committee
|
||||
|
@ -261,6 +261,10 @@ alc-sense-combo
|
||||
huawei-mbx-stereo
|
||||
Enable initialization verbs for Huawei MBX stereo speakers;
|
||||
might be risky, try this at your own risk
|
||||
alc298-samsung-headphone
|
||||
Samsung laptops with ALC298
|
||||
alc256-samsung-headphone
|
||||
Samsung laptops with ALC256
|
||||
|
||||
ALC66x/67x/892
|
||||
==============
|
||||
|
2
Makefile
2
Makefile
@ -1,7 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
VERSION = 5
|
||||
PATCHLEVEL = 4
|
||||
SUBLEVEL = 180
|
||||
SUBLEVEL = 191
|
||||
EXTRAVERSION =
|
||||
NAME = Kleptomaniac Octopus
|
||||
|
||||
|
@ -199,6 +199,7 @@ tracesys_exit:
|
||||
st r0, [sp, PT_r0] ; sys call return value in pt_regs
|
||||
|
||||
;POST Sys Call Ptrace Hook
|
||||
mov r0, sp ; pt_regs needed
|
||||
bl @syscall_trace_exit
|
||||
b ret_from_exception ; NOT ret_from_system_call at is saves r0 which
|
||||
; we'd done before calling post hook above
|
||||
|
@ -118,7 +118,7 @@
|
||||
};
|
||||
|
||||
pinctrl_fwqspid_default: fwqspid_default {
|
||||
function = "FWQSPID";
|
||||
function = "FWSPID";
|
||||
groups = "FWQSPID";
|
||||
};
|
||||
|
||||
|
@ -38,12 +38,26 @@
|
||||
#size-cells = <0>;
|
||||
enable-method = "brcm,bcm2836-smp"; // for ARM 32-bit
|
||||
|
||||
/* Source for d/i-cache-line-size and d/i-cache-sets
|
||||
* https://developer.arm.com/documentation/ddi0500/e/level-1-memory-system
|
||||
* /about-the-l1-memory-system?lang=en
|
||||
*
|
||||
* Source for d/i-cache-size
|
||||
* https://magpi.raspberrypi.com/articles/raspberry-pi-3-specs-benchmarks
|
||||
*/
|
||||
cpu0: cpu@0 {
|
||||
device_type = "cpu";
|
||||
compatible = "arm,cortex-a53";
|
||||
reg = <0>;
|
||||
enable-method = "spin-table";
|
||||
cpu-release-addr = <0x0 0x000000d8>;
|
||||
d-cache-size = <0x8000>;
|
||||
d-cache-line-size = <64>;
|
||||
d-cache-sets = <128>; // 32KiB(size)/64(line-size)=512ways/4-way set
|
||||
i-cache-size = <0x8000>;
|
||||
i-cache-line-size = <64>;
|
||||
i-cache-sets = <256>; // 32KiB(size)/64(line-size)=512ways/2-way set
|
||||
next-level-cache = <&l2>;
|
||||
};
|
||||
|
||||
cpu1: cpu@1 {
|
||||
@ -52,6 +66,13 @@
|
||||
reg = <1>;
|
||||
enable-method = "spin-table";
|
||||
cpu-release-addr = <0x0 0x000000e0>;
|
||||
d-cache-size = <0x8000>;
|
||||
d-cache-line-size = <64>;
|
||||
d-cache-sets = <128>; // 32KiB(size)/64(line-size)=512ways/4-way set
|
||||
i-cache-size = <0x8000>;
|
||||
i-cache-line-size = <64>;
|
||||
i-cache-sets = <256>; // 32KiB(size)/64(line-size)=512ways/2-way set
|
||||
next-level-cache = <&l2>;
|
||||
};
|
||||
|
||||
cpu2: cpu@2 {
|
||||
@ -60,6 +81,13 @@
|
||||
reg = <2>;
|
||||
enable-method = "spin-table";
|
||||
cpu-release-addr = <0x0 0x000000e8>;
|
||||
d-cache-size = <0x8000>;
|
||||
d-cache-line-size = <64>;
|
||||
d-cache-sets = <128>; // 32KiB(size)/64(line-size)=512ways/4-way set
|
||||
i-cache-size = <0x8000>;
|
||||
i-cache-line-size = <64>;
|
||||
i-cache-sets = <256>; // 32KiB(size)/64(line-size)=512ways/2-way set
|
||||
next-level-cache = <&l2>;
|
||||
};
|
||||
|
||||
cpu3: cpu@3 {
|
||||
@ -68,6 +96,27 @@
|
||||
reg = <3>;
|
||||
enable-method = "spin-table";
|
||||
cpu-release-addr = <0x0 0x000000f0>;
|
||||
d-cache-size = <0x8000>;
|
||||
d-cache-line-size = <64>;
|
||||
d-cache-sets = <128>; // 32KiB(size)/64(line-size)=512ways/4-way set
|
||||
i-cache-size = <0x8000>;
|
||||
i-cache-line-size = <64>;
|
||||
i-cache-sets = <256>; // 32KiB(size)/64(line-size)=512ways/2-way set
|
||||
next-level-cache = <&l2>;
|
||||
};
|
||||
|
||||
/* Source for cache-line-size + cache-sets
|
||||
* https://developer.arm.com/documentation/ddi0500
|
||||
* /e/level-2-memory-system/about-the-l2-memory-system?lang=en
|
||||
* Source for cache-size
|
||||
* https://datasheets.raspberrypi.com/cm/cm1-and-cm3-datasheet.pdf
|
||||
*/
|
||||
l2: l2-cache0 {
|
||||
compatible = "cache";
|
||||
cache-size = <0x80000>;
|
||||
cache-line-size = <64>;
|
||||
cache-sets = <512>; // 512KiB(size)/64(line-size)=8192ways/16-way set
|
||||
cache-level = <2>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -260,7 +260,7 @@
|
||||
};
|
||||
|
||||
uart3_data: uart3-data {
|
||||
samsung,pins = "gpa1-4", "gpa1-4";
|
||||
samsung,pins = "gpa1-4", "gpa1-5";
|
||||
samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
|
||||
samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
|
||||
samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
|
||||
|
@ -117,6 +117,9 @@
|
||||
status = "okay";
|
||||
ddc = <&i2c_2>;
|
||||
hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>;
|
||||
vdd-supply = <&ldo8_reg>;
|
||||
vdd_osc-supply = <&ldo10_reg>;
|
||||
vdd_pll-supply = <&ldo8_reg>;
|
||||
};
|
||||
|
||||
&i2c_0 {
|
||||
|
@ -132,6 +132,9 @@
|
||||
hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hdmi_hpd_irq>;
|
||||
vdd-supply = <&ldo6_reg>;
|
||||
vdd_osc-supply = <&ldo7_reg>;
|
||||
vdd_pll-supply = <&ldo6_reg>;
|
||||
};
|
||||
|
||||
&hsi2c_4 {
|
||||
|
@ -53,6 +53,31 @@
|
||||
};
|
||||
};
|
||||
|
||||
lvds-decoder {
|
||||
compatible = "ti,ds90cf364a", "lvds-decoder";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
|
||||
lvds_decoder_in: endpoint {
|
||||
remote-endpoint = <&lvds0_out>;
|
||||
};
|
||||
};
|
||||
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
|
||||
lvds_decoder_out: endpoint {
|
||||
remote-endpoint = <&panel_in>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
panel {
|
||||
compatible = "edt,etm0700g0dh6";
|
||||
pinctrl-0 = <&pinctrl_display_gpio>;
|
||||
@ -61,7 +86,7 @@
|
||||
|
||||
port {
|
||||
panel_in: endpoint {
|
||||
remote-endpoint = <&lvds0_out>;
|
||||
remote-endpoint = <&lvds_decoder_out>;
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -450,7 +475,7 @@
|
||||
reg = <2>;
|
||||
|
||||
lvds0_out: endpoint {
|
||||
remote-endpoint = <&panel_in>;
|
||||
remote-endpoint = <&lvds_decoder_in>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -141,7 +141,8 @@
|
||||
clocks {
|
||||
sleep_clk: sleep_clk {
|
||||
compatible = "fixed-clock";
|
||||
clock-frequency = <32768>;
|
||||
clock-frequency = <32000>;
|
||||
clock-output-names = "gcc_sleep_clk_src";
|
||||
#clock-cells = <0>;
|
||||
};
|
||||
|
||||
|
@ -145,7 +145,9 @@
|
||||
reg = <0x108000 0x1000>;
|
||||
qcom,ipc = <&l2cc 0x8 2>;
|
||||
|
||||
interrupts = <0 19 0>, <0 21 0>, <0 22 0>;
|
||||
interrupts = <GIC_SPI 19 IRQ_TYPE_EDGE_RISING>,
|
||||
<GIC_SPI 21 IRQ_TYPE_EDGE_RISING>,
|
||||
<GIC_SPI 22 IRQ_TYPE_EDGE_RISING>;
|
||||
interrupt-names = "ack", "err", "wakeup";
|
||||
|
||||
regulators {
|
||||
@ -191,7 +193,7 @@
|
||||
compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
|
||||
reg = <0x16440000 0x1000>,
|
||||
<0x16400000 0x1000>;
|
||||
interrupts = <0 154 0x0>;
|
||||
interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&gcc GSBI5_UART_CLK>, <&gcc GSBI5_H_CLK>;
|
||||
clock-names = "core", "iface";
|
||||
status = "disabled";
|
||||
@ -317,7 +319,7 @@
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0x16080000 0x1000>;
|
||||
interrupts = <0 147 0>;
|
||||
interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>;
|
||||
spi-max-frequency = <24000000>;
|
||||
cs-gpios = <&msmgpio 8 0>;
|
||||
|
||||
|
@ -635,8 +635,8 @@
|
||||
interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
|
||||
assigned-clocks = <&cru SCLK_HDMI_PHY>;
|
||||
assigned-clock-parents = <&hdmi_phy>;
|
||||
clocks = <&cru SCLK_HDMI_HDCP>, <&cru PCLK_HDMI_CTRL>, <&cru SCLK_HDMI_CEC>;
|
||||
clock-names = "isfr", "iahb", "cec";
|
||||
clocks = <&cru PCLK_HDMI_CTRL>, <&cru SCLK_HDMI_HDCP>, <&cru SCLK_HDMI_CEC>;
|
||||
clock-names = "iahb", "isfr", "cec";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hdmii2c_xfer &hdmi_hpd &hdmi_cec>;
|
||||
resets = <&cru SRST_HDMI_P>;
|
||||
|
@ -975,7 +975,7 @@
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
crypto: cypto-controller@ff8a0000 {
|
||||
crypto: crypto@ff8a0000 {
|
||||
compatible = "rockchip,rk3288-crypto";
|
||||
reg = <0x0 0xff8a0000 0x0 0x4000>;
|
||||
interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
@ -526,7 +526,7 @@
|
||||
pmecc: ecc-engine@f8014070 {
|
||||
compatible = "atmel,sama5d2-pmecc";
|
||||
reg = <0xf8014070 0x490>,
|
||||
<0xf8014500 0x100>;
|
||||
<0xf8014500 0x200>;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -136,9 +136,9 @@
|
||||
reg = <0xb4100000 0x1000>;
|
||||
interrupts = <0 105 0x4>;
|
||||
status = "disabled";
|
||||
dmas = <&dwdma0 12 0 1>,
|
||||
<&dwdma0 13 1 0>;
|
||||
dma-names = "tx", "rx";
|
||||
dmas = <&dwdma0 13 0 1>,
|
||||
<&dwdma0 12 1 0>;
|
||||
dma-names = "rx", "tx";
|
||||
};
|
||||
|
||||
thermal@e07008c4 {
|
||||
|
@ -284,9 +284,9 @@
|
||||
#size-cells = <0>;
|
||||
interrupts = <0 31 0x4>;
|
||||
status = "disabled";
|
||||
dmas = <&dwdma0 4 0 0>,
|
||||
<&dwdma0 5 0 0>;
|
||||
dma-names = "tx", "rx";
|
||||
dmas = <&dwdma0 5 0 0>,
|
||||
<&dwdma0 4 0 0>;
|
||||
dma-names = "rx", "tx";
|
||||
};
|
||||
|
||||
rtc@e0580000 {
|
||||
|
@ -183,8 +183,8 @@
|
||||
};
|
||||
conf_ata {
|
||||
nvidia,pins = "ata", "atb", "atc", "atd", "ate",
|
||||
"cdev1", "cdev2", "dap1", "dtb", "gma",
|
||||
"gmb", "gmc", "gmd", "gme", "gpu7",
|
||||
"cdev1", "cdev2", "dap1", "dtb", "dtf",
|
||||
"gma", "gmb", "gmc", "gmd", "gme", "gpu7",
|
||||
"gpv", "i2cp", "irrx", "irtx", "pta",
|
||||
"rm", "slxa", "slxk", "spia", "spib",
|
||||
"uac";
|
||||
@ -203,7 +203,7 @@
|
||||
};
|
||||
conf_crtp {
|
||||
nvidia,pins = "crtp", "dap2", "dap3", "dap4",
|
||||
"dtc", "dte", "dtf", "gpu", "sdio1",
|
||||
"dtc", "dte", "gpu", "sdio1",
|
||||
"slxc", "slxd", "spdi", "spdo", "spig",
|
||||
"uda";
|
||||
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
|
||||
|
@ -154,22 +154,38 @@ static int kgdb_compiled_brk_fn(struct pt_regs *regs, unsigned int instr)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct undef_hook kgdb_brkpt_hook = {
|
||||
static struct undef_hook kgdb_brkpt_arm_hook = {
|
||||
.instr_mask = 0xffffffff,
|
||||
.instr_val = KGDB_BREAKINST,
|
||||
.cpsr_mask = MODE_MASK,
|
||||
.cpsr_mask = PSR_T_BIT | MODE_MASK,
|
||||
.cpsr_val = SVC_MODE,
|
||||
.fn = kgdb_brk_fn
|
||||
};
|
||||
|
||||
static struct undef_hook kgdb_compiled_brkpt_hook = {
|
||||
static struct undef_hook kgdb_brkpt_thumb_hook = {
|
||||
.instr_mask = 0xffff,
|
||||
.instr_val = KGDB_BREAKINST & 0xffff,
|
||||
.cpsr_mask = PSR_T_BIT | MODE_MASK,
|
||||
.cpsr_val = PSR_T_BIT | SVC_MODE,
|
||||
.fn = kgdb_brk_fn
|
||||
};
|
||||
|
||||
static struct undef_hook kgdb_compiled_brkpt_arm_hook = {
|
||||
.instr_mask = 0xffffffff,
|
||||
.instr_val = KGDB_COMPILED_BREAK,
|
||||
.cpsr_mask = MODE_MASK,
|
||||
.cpsr_mask = PSR_T_BIT | MODE_MASK,
|
||||
.cpsr_val = SVC_MODE,
|
||||
.fn = kgdb_compiled_brk_fn
|
||||
};
|
||||
|
||||
static struct undef_hook kgdb_compiled_brkpt_thumb_hook = {
|
||||
.instr_mask = 0xffff,
|
||||
.instr_val = KGDB_COMPILED_BREAK & 0xffff,
|
||||
.cpsr_mask = PSR_T_BIT | MODE_MASK,
|
||||
.cpsr_val = PSR_T_BIT | SVC_MODE,
|
||||
.fn = kgdb_compiled_brk_fn
|
||||
};
|
||||
|
||||
static int __kgdb_notify(struct die_args *args, unsigned long cmd)
|
||||
{
|
||||
struct pt_regs *regs = args->regs;
|
||||
@ -210,8 +226,10 @@ int kgdb_arch_init(void)
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
|
||||
register_undef_hook(&kgdb_brkpt_hook);
|
||||
register_undef_hook(&kgdb_compiled_brkpt_hook);
|
||||
register_undef_hook(&kgdb_brkpt_arm_hook);
|
||||
register_undef_hook(&kgdb_brkpt_thumb_hook);
|
||||
register_undef_hook(&kgdb_compiled_brkpt_arm_hook);
|
||||
register_undef_hook(&kgdb_compiled_brkpt_thumb_hook);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -224,8 +242,10 @@ int kgdb_arch_init(void)
|
||||
*/
|
||||
void kgdb_arch_exit(void)
|
||||
{
|
||||
unregister_undef_hook(&kgdb_brkpt_hook);
|
||||
unregister_undef_hook(&kgdb_compiled_brkpt_hook);
|
||||
unregister_undef_hook(&kgdb_brkpt_arm_hook);
|
||||
unregister_undef_hook(&kgdb_brkpt_thumb_hook);
|
||||
unregister_undef_hook(&kgdb_compiled_brkpt_arm_hook);
|
||||
unregister_undef_hook(&kgdb_compiled_brkpt_thumb_hook);
|
||||
unregister_die_notifier(&kgdb_notifier);
|
||||
}
|
||||
|
||||
|
@ -1101,11 +1101,13 @@ static int __init da850_evm_config_emac(void)
|
||||
int ret;
|
||||
u32 val;
|
||||
struct davinci_soc_info *soc_info = &davinci_soc_info;
|
||||
u8 rmii_en = soc_info->emac_pdata->rmii_en;
|
||||
u8 rmii_en;
|
||||
|
||||
if (!machine_is_davinci_da850_evm())
|
||||
return 0;
|
||||
|
||||
rmii_en = soc_info->emac_pdata->rmii_en;
|
||||
|
||||
cfg_chip3_base = DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP3_REG);
|
||||
|
||||
val = __raw_readl(cfg_chip3_base);
|
||||
|
@ -20,7 +20,7 @@
|
||||
mrc p6, 0, \irqstat, c8, c0, 0 @ Read IINTSRC
|
||||
cmp \irqstat, #0
|
||||
clzne \irqnr, \irqstat
|
||||
rsbne \irqnr, \irqnr, #31
|
||||
rsbne \irqnr, \irqnr, #32
|
||||
.endm
|
||||
|
||||
.macro arch_ret_to_user, tmp1, tmp2
|
||||
|
@ -9,6 +9,6 @@
|
||||
#ifndef __IRQS_H
|
||||
#define __IRQS_H
|
||||
|
||||
#define NR_IRQS 32
|
||||
#define NR_IRQS 33
|
||||
|
||||
#endif
|
||||
|
@ -32,14 +32,14 @@ static void intstr_write(u32 val)
|
||||
static void
|
||||
iop32x_irq_mask(struct irq_data *d)
|
||||
{
|
||||
iop32x_mask &= ~(1 << d->irq);
|
||||
iop32x_mask &= ~(1 << (d->irq - 1));
|
||||
intctl_write(iop32x_mask);
|
||||
}
|
||||
|
||||
static void
|
||||
iop32x_irq_unmask(struct irq_data *d)
|
||||
{
|
||||
iop32x_mask |= 1 << d->irq;
|
||||
iop32x_mask |= 1 << (d->irq - 1);
|
||||
intctl_write(iop32x_mask);
|
||||
}
|
||||
|
||||
@ -65,7 +65,7 @@ void __init iop32x_init_irq(void)
|
||||
machine_is_em7210())
|
||||
*IOP3XX_PCIIRSR = 0x0f;
|
||||
|
||||
for (i = 0; i < NR_IRQS; i++) {
|
||||
for (i = 1; i < NR_IRQS; i++) {
|
||||
irq_set_chip_and_handler(i, &ext_chip, handle_level_irq);
|
||||
irq_clear_status_flags(i, IRQ_NOREQUEST | IRQ_NOPROBE);
|
||||
}
|
||||
|
@ -7,36 +7,40 @@
|
||||
#ifndef __IOP32X_IRQS_H
|
||||
#define __IOP32X_IRQS_H
|
||||
|
||||
/* Interrupts in Linux start at 1, hardware starts at 0 */
|
||||
|
||||
#define IOP_IRQ(x) ((x) + 1)
|
||||
|
||||
/*
|
||||
* IOP80321 chipset interrupts
|
||||
*/
|
||||
#define IRQ_IOP32X_DMA0_EOT 0
|
||||
#define IRQ_IOP32X_DMA0_EOC 1
|
||||
#define IRQ_IOP32X_DMA1_EOT 2
|
||||
#define IRQ_IOP32X_DMA1_EOC 3
|
||||
#define IRQ_IOP32X_AA_EOT 6
|
||||
#define IRQ_IOP32X_AA_EOC 7
|
||||
#define IRQ_IOP32X_CORE_PMON 8
|
||||
#define IRQ_IOP32X_TIMER0 9
|
||||
#define IRQ_IOP32X_TIMER1 10
|
||||
#define IRQ_IOP32X_I2C_0 11
|
||||
#define IRQ_IOP32X_I2C_1 12
|
||||
#define IRQ_IOP32X_MESSAGING 13
|
||||
#define IRQ_IOP32X_ATU_BIST 14
|
||||
#define IRQ_IOP32X_PERFMON 15
|
||||
#define IRQ_IOP32X_CORE_PMU 16
|
||||
#define IRQ_IOP32X_BIU_ERR 17
|
||||
#define IRQ_IOP32X_ATU_ERR 18
|
||||
#define IRQ_IOP32X_MCU_ERR 19
|
||||
#define IRQ_IOP32X_DMA0_ERR 20
|
||||
#define IRQ_IOP32X_DMA1_ERR 21
|
||||
#define IRQ_IOP32X_AA_ERR 23
|
||||
#define IRQ_IOP32X_MSG_ERR 24
|
||||
#define IRQ_IOP32X_SSP 25
|
||||
#define IRQ_IOP32X_XINT0 27
|
||||
#define IRQ_IOP32X_XINT1 28
|
||||
#define IRQ_IOP32X_XINT2 29
|
||||
#define IRQ_IOP32X_XINT3 30
|
||||
#define IRQ_IOP32X_HPI 31
|
||||
#define IRQ_IOP32X_DMA0_EOT IOP_IRQ(0)
|
||||
#define IRQ_IOP32X_DMA0_EOC IOP_IRQ(1)
|
||||
#define IRQ_IOP32X_DMA1_EOT IOP_IRQ(2)
|
||||
#define IRQ_IOP32X_DMA1_EOC IOP_IRQ(3)
|
||||
#define IRQ_IOP32X_AA_EOT IOP_IRQ(6)
|
||||
#define IRQ_IOP32X_AA_EOC IOP_IRQ(7)
|
||||
#define IRQ_IOP32X_CORE_PMON IOP_IRQ(8)
|
||||
#define IRQ_IOP32X_TIMER0 IOP_IRQ(9)
|
||||
#define IRQ_IOP32X_TIMER1 IOP_IRQ(10)
|
||||
#define IRQ_IOP32X_I2C_0 IOP_IRQ(11)
|
||||
#define IRQ_IOP32X_I2C_1 IOP_IRQ(12)
|
||||
#define IRQ_IOP32X_MESSAGING IOP_IRQ(13)
|
||||
#define IRQ_IOP32X_ATU_BIST IOP_IRQ(14)
|
||||
#define IRQ_IOP32X_PERFMON IOP_IRQ(15)
|
||||
#define IRQ_IOP32X_CORE_PMU IOP_IRQ(16)
|
||||
#define IRQ_IOP32X_BIU_ERR IOP_IRQ(17)
|
||||
#define IRQ_IOP32X_ATU_ERR IOP_IRQ(18)
|
||||
#define IRQ_IOP32X_MCU_ERR IOP_IRQ(19)
|
||||
#define IRQ_IOP32X_DMA0_ERR IOP_IRQ(20)
|
||||
#define IRQ_IOP32X_DMA1_ERR IOP_IRQ(21)
|
||||
#define IRQ_IOP32X_AA_ERR IOP_IRQ(23)
|
||||
#define IRQ_IOP32X_MSG_ERR IOP_IRQ(24)
|
||||
#define IRQ_IOP32X_SSP IOP_IRQ(25)
|
||||
#define IRQ_IOP32X_XINT0 IOP_IRQ(27)
|
||||
#define IRQ_IOP32X_XINT1 IOP_IRQ(28)
|
||||
#define IRQ_IOP32X_XINT2 IOP_IRQ(29)
|
||||
#define IRQ_IOP32X_XINT3 IOP_IRQ(30)
|
||||
#define IRQ_IOP32X_HPI IOP_IRQ(31)
|
||||
|
||||
#endif
|
||||
|
@ -72,6 +72,8 @@ static int sram_probe(struct platform_device *pdev)
|
||||
if (!info)
|
||||
return -ENOMEM;
|
||||
|
||||
platform_set_drvdata(pdev, info);
|
||||
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
if (res == NULL) {
|
||||
dev_err(&pdev->dev, "no memory resource defined\n");
|
||||
@ -107,8 +109,6 @@ static int sram_probe(struct platform_device *pdev)
|
||||
list_add(&info->node, &sram_bank_list);
|
||||
mutex_unlock(&sram_lock);
|
||||
|
||||
platform_set_drvdata(pdev, info);
|
||||
|
||||
dev_info(&pdev->dev, "initialized\n");
|
||||
return 0;
|
||||
|
||||
@ -127,17 +127,19 @@ static int sram_remove(struct platform_device *pdev)
|
||||
struct sram_bank_info *info;
|
||||
|
||||
info = platform_get_drvdata(pdev);
|
||||
if (info == NULL)
|
||||
return -ENODEV;
|
||||
|
||||
mutex_lock(&sram_lock);
|
||||
list_del(&info->node);
|
||||
mutex_unlock(&sram_lock);
|
||||
if (info->sram_size) {
|
||||
mutex_lock(&sram_lock);
|
||||
list_del(&info->node);
|
||||
mutex_unlock(&sram_lock);
|
||||
|
||||
gen_pool_destroy(info->gpool);
|
||||
iounmap(info->sram_virt);
|
||||
kfree(info->pool_name);
|
||||
}
|
||||
|
||||
gen_pool_destroy(info->gpool);
|
||||
iounmap(info->sram_virt);
|
||||
kfree(info->pool_name);
|
||||
kfree(info);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -263,9 +263,9 @@ static int __init omapdss_init_of(void)
|
||||
}
|
||||
|
||||
r = of_platform_populate(node, NULL, NULL, &pdev->dev);
|
||||
put_device(&pdev->dev);
|
||||
if (r) {
|
||||
pr_err("Unable to populate DSS submodule devices\n");
|
||||
put_device(&pdev->dev);
|
||||
return r;
|
||||
}
|
||||
|
||||
|
@ -782,8 +782,10 @@ static int __init _init_clkctrl_providers(void)
|
||||
|
||||
for_each_matching_node(np, ti_clkctrl_match_table) {
|
||||
ret = _setup_clkctrl_provider(np);
|
||||
if (ret)
|
||||
if (ret) {
|
||||
of_node_put(np);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
@ -237,11 +237,11 @@ static int __init jive_mtdset(char *options)
|
||||
unsigned long set;
|
||||
|
||||
if (options == NULL || options[0] == '\0')
|
||||
return 0;
|
||||
return 1;
|
||||
|
||||
if (kstrtoul(options, 10, &set)) {
|
||||
printk(KERN_ERR "failed to parse mtdset=%s\n", options);
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
switch (set) {
|
||||
@ -256,7 +256,7 @@ static int __init jive_mtdset(char *options)
|
||||
"using default.", set);
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* parse the mtdset= option given to the kernel command line */
|
||||
|
@ -580,7 +580,7 @@ static int __init ve_spc_clk_init(void)
|
||||
}
|
||||
|
||||
cluster = topology_physical_package_id(cpu_dev->id);
|
||||
if (init_opp_table[cluster])
|
||||
if (cluster < 0 || init_opp_table[cluster])
|
||||
continue;
|
||||
|
||||
if (ve_init_opp_table(cpu_dev))
|
||||
|
@ -229,12 +229,14 @@ early_param("ecc", early_ecc);
|
||||
static int __init early_cachepolicy(char *p)
|
||||
{
|
||||
pr_warn("cachepolicy kernel parameter not supported without cp15\n");
|
||||
return 0;
|
||||
}
|
||||
early_param("cachepolicy", early_cachepolicy);
|
||||
|
||||
static int __init noalign_setup(char *__unused)
|
||||
{
|
||||
pr_warn("noalign kernel parameter not supported without cp15\n");
|
||||
return 1;
|
||||
}
|
||||
__setup("noalign", noalign_setup);
|
||||
|
||||
|
@ -76,6 +76,12 @@
|
||||
no-map;
|
||||
};
|
||||
|
||||
/* 32 MiB reserved for ARM Trusted Firmware (BL32) */
|
||||
secmon_reserved_bl32: secmon@5300000 {
|
||||
reg = <0x0 0x05300000 0x0 0x2000000>;
|
||||
no-map;
|
||||
};
|
||||
|
||||
linux,cma {
|
||||
compatible = "shared-dma-pool";
|
||||
reusable;
|
||||
|
@ -157,14 +157,6 @@
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reserved-memory {
|
||||
/* TEE Reserved Memory */
|
||||
bl32_reserved: bl32@5000000 {
|
||||
reg = <0x0 0x05300000 0x0 0x2000000>;
|
||||
no-map;
|
||||
};
|
||||
};
|
||||
|
||||
sdio_pwrseq: sdio-pwrseq {
|
||||
compatible = "mmc-pwrseq-simple";
|
||||
reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
|
||||
|
@ -41,6 +41,12 @@
|
||||
no-map;
|
||||
};
|
||||
|
||||
/* 32 MiB reserved for ARM Trusted Firmware (BL32) */
|
||||
secmon_reserved_bl32: secmon@5300000 {
|
||||
reg = <0x0 0x05300000 0x0 0x2000000>;
|
||||
no-map;
|
||||
};
|
||||
|
||||
linux,cma {
|
||||
compatible = "shared-dma-pool";
|
||||
reusable;
|
||||
|
@ -164,14 +164,6 @@
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reserved-memory {
|
||||
/* TEE Reserved Memory */
|
||||
bl32_reserved: bl32@5000000 {
|
||||
reg = <0x0 0x05300000 0x0 0x2000000>;
|
||||
no-map;
|
||||
};
|
||||
};
|
||||
|
||||
sdio_pwrseq: sdio-pwrseq {
|
||||
compatible = "mmc-pwrseq-simple";
|
||||
reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
|
||||
|
@ -111,8 +111,8 @@
|
||||
compatible = "silabs,si3226x";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <5000000>;
|
||||
spi-cpha = <1>;
|
||||
spi-cpol = <1>;
|
||||
spi-cpha;
|
||||
spi-cpol;
|
||||
pl022,hierarchy = <0>;
|
||||
pl022,interface = <0>;
|
||||
pl022,slave-tx-disable = <0>;
|
||||
@ -135,8 +135,8 @@
|
||||
at25,byte-len = <0x8000>;
|
||||
at25,addr-mode = <2>;
|
||||
at25,page-size = <64>;
|
||||
spi-cpha = <1>;
|
||||
spi-cpol = <1>;
|
||||
spi-cpha;
|
||||
spi-cpol;
|
||||
pl022,hierarchy = <0>;
|
||||
pl022,interface = <0>;
|
||||
pl022,slave-tx-disable = <0>;
|
||||
|
@ -687,7 +687,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
sata: ahci@663f2000 {
|
||||
sata: sata@663f2000 {
|
||||
compatible = "brcm,iproc-ahci", "generic-ahci";
|
||||
reg = <0x663f2000 0x1000>;
|
||||
dma-coherent;
|
||||
|
@ -369,7 +369,7 @@
|
||||
};
|
||||
|
||||
usb0: usb@ffb00000 {
|
||||
compatible = "snps,dwc2";
|
||||
compatible = "intel,socfpga-agilex-hsotg", "snps,dwc2";
|
||||
reg = <0xffb00000 0x40000>;
|
||||
interrupts = <0 93 4>;
|
||||
phys = <&usbphy0>;
|
||||
@ -381,7 +381,7 @@
|
||||
};
|
||||
|
||||
usb1: usb@ffb40000 {
|
||||
compatible = "snps,dwc2";
|
||||
compatible = "intel,socfpga-agilex-hsotg", "snps,dwc2";
|
||||
reg = <0xffb40000 0x40000>;
|
||||
interrupts = <0 94 4>;
|
||||
phys = <&usbphy0>;
|
||||
|
@ -18,6 +18,7 @@
|
||||
|
||||
aliases {
|
||||
spi0 = &spi0;
|
||||
ethernet0 = ð0;
|
||||
ethernet1 = ð1;
|
||||
};
|
||||
|
||||
@ -137,7 +138,9 @@
|
||||
/*
|
||||
* U-Boot port for Turris Mox has a bug which always expects that "ranges" DT property
|
||||
* contains exactly 2 ranges with 3 (child) address cells, 2 (parent) address cells and
|
||||
* 2 size cells and also expects that the second range starts at 16 MB offset. If these
|
||||
* 2 size cells and also expects that the second range starts at 16 MB offset. Also it
|
||||
* expects that first range uses same address for PCI (child) and CPU (parent) cells (so
|
||||
* no remapping) and that this address is the lowest from all specified ranges. If these
|
||||
* conditions are not met then U-Boot crashes during loading kernel DTB file. PCIe address
|
||||
* space is 128 MB long, so the best split between MEM and IO is to use fixed 16 MB window
|
||||
* for IO and the rest 112 MB (64+32+16) for MEM, despite that maximal IO size is just 64 kB.
|
||||
@ -146,6 +149,9 @@
|
||||
* https://source.denx.de/u-boot/u-boot/-/commit/cb2ddb291ee6fcbddd6d8f4ff49089dfe580f5d7
|
||||
* https://source.denx.de/u-boot/u-boot/-/commit/c64ac3b3185aeb3846297ad7391fc6df8ecd73bf
|
||||
* https://source.denx.de/u-boot/u-boot/-/commit/4a82fca8e330157081fc132a591ebd99ba02ee33
|
||||
* Bug related to requirement of same child and parent addresses for first range is fixed
|
||||
* in U-Boot version 2022.04 by following commit:
|
||||
* https://source.denx.de/u-boot/u-boot/-/commit/1fd54253bca7d43d046bba4853fe5fafd034bc17
|
||||
*/
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
|
@ -495,7 +495,7 @@
|
||||
* (totaling 127 MiB) for MEM.
|
||||
*/
|
||||
ranges = <0x82000000 0 0xe8000000 0 0xe8000000 0 0x07f00000 /* Port 0 MEM */
|
||||
0x81000000 0 0xefff0000 0 0xefff0000 0 0x00010000>; /* Port 0 IO */
|
||||
0x81000000 0 0x00000000 0 0xefff0000 0 0x00010000>; /* Port 0 IO */
|
||||
interrupt-map-mask = <0 0 0 7>;
|
||||
interrupt-map = <0 0 0 1 &pcie_intc 0>,
|
||||
<0 0 0 2 &pcie_intc 1>,
|
||||
|
@ -459,9 +459,9 @@
|
||||
qcom,tcs-offset = <0xd00>;
|
||||
qcom,drv-id = <2>;
|
||||
qcom,tcs-config = <ACTIVE_TCS 2>,
|
||||
<SLEEP_TCS 1>,
|
||||
<WAKE_TCS 1>,
|
||||
<CONTROL_TCS 0>;
|
||||
<SLEEP_TCS 3>,
|
||||
<WAKE_TCS 3>,
|
||||
<CONTROL_TCS 1>;
|
||||
|
||||
rpmhcc: clock-controller {
|
||||
compatible = "qcom,sm8150-rpmh-clk";
|
||||
|
@ -666,8 +666,8 @@
|
||||
sd-uhs-sdr104;
|
||||
|
||||
/* Power supply */
|
||||
vqmmc-supply = &vcc1v8_s3; /* IO line */
|
||||
vmmc-supply = &vcc_sdio; /* card's power */
|
||||
vqmmc-supply = <&vcc1v8_s3>; /* IO line */
|
||||
vmmc-supply = <&vcc_sdio>; /* card's power */
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
@ -281,7 +281,7 @@
|
||||
|
||||
sound: sound {
|
||||
compatible = "rockchip,rk3399-gru-sound";
|
||||
rockchip,cpu = <&i2s0 &i2s2>;
|
||||
rockchip,cpu = <&i2s0 &spdif>;
|
||||
};
|
||||
};
|
||||
|
||||
@ -432,10 +432,6 @@ ap_i2c_audio: &i2c8 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2s2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&io_domains {
|
||||
status = "okay";
|
||||
|
||||
@ -532,6 +528,17 @@ ap_i2c_audio: &i2c8 {
|
||||
vqmmc-supply = <&ppvar_sd_card_io>;
|
||||
};
|
||||
|
||||
&spdif {
|
||||
status = "okay";
|
||||
|
||||
/*
|
||||
* SPDIF is routed internally to DP; we either don't use these pins, or
|
||||
* mux them to something else.
|
||||
*/
|
||||
/delete-property/ pinctrl-0;
|
||||
/delete-property/ pinctrl-names;
|
||||
};
|
||||
|
||||
&spi1 {
|
||||
status = "okay";
|
||||
|
||||
|
@ -467,6 +467,12 @@
|
||||
};
|
||||
|
||||
&sdhci {
|
||||
/*
|
||||
* Signal integrity isn't great at 200MHz but 100MHz has proven stable
|
||||
* enough.
|
||||
*/
|
||||
max-frequency = <100000000>;
|
||||
|
||||
bus-width = <8>;
|
||||
mmc-hs400-1_8v;
|
||||
mmc-hs400-enhanced-strobe;
|
||||
|
@ -1746,10 +1746,10 @@
|
||||
interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH 0>;
|
||||
clocks = <&cru PCLK_HDMI_CTRL>,
|
||||
<&cru SCLK_HDMI_SFR>,
|
||||
<&cru PLL_VPLL>,
|
||||
<&cru SCLK_HDMI_CEC>,
|
||||
<&cru PCLK_VIO_GRF>,
|
||||
<&cru SCLK_HDMI_CEC>;
|
||||
clock-names = "iahb", "isfr", "vpll", "grf", "cec";
|
||||
<&cru PLL_VPLL>;
|
||||
clock-names = "iahb", "isfr", "cec", "grf", "vpll";
|
||||
power-domains = <&power RK3399_PD_HDCP>;
|
||||
reg-io-width = <4>;
|
||||
rockchip,grf = <&grf>;
|
||||
|
@ -58,7 +58,7 @@
|
||||
#define ARM64_HAS_AMU_EXTN 48
|
||||
#define ARM64_SPECTRE_BHB 49
|
||||
|
||||
/* kabi: reserve 48 - 62 for future cpu capabilities */
|
||||
/* kabi: reserve 50 - 62 for future cpu capabilities */
|
||||
#define ARM64_NCAPS 62
|
||||
|
||||
#endif /* __ASM_CPUCAPS_H */
|
||||
|
@ -479,7 +479,8 @@ static inline void *kvm_get_hyp_vector(void)
|
||||
int slot = -1;
|
||||
|
||||
if ((cpus_have_const_cap(ARM64_HARDEN_BRANCH_PREDICTOR) ||
|
||||
cpus_have_const_cap(ARM64_SPECTRE_BHB)) && data->template_start) {
|
||||
cpus_have_const_cap(ARM64_SPECTRE_BHB)) &&
|
||||
data && data->template_start) {
|
||||
vect = kern_hyp_va(kvm_ksym_ref(__bp_harden_hyp_vecs_start));
|
||||
slot = data->hyp_vectors_slot;
|
||||
}
|
||||
|
@ -56,14 +56,14 @@ enum arm64_bp_harden_el1_vectors {
|
||||
DECLARE_PER_CPU_READ_MOSTLY(const char *, this_cpu_vector);
|
||||
|
||||
#ifndef CONFIG_UNMAP_KERNEL_AT_EL0
|
||||
#define TRAMP_VALIAS 0
|
||||
#define TRAMP_VALIAS 0ul
|
||||
#endif
|
||||
|
||||
static inline const char *
|
||||
arm64_get_bp_hardening_vector(enum arm64_bp_harden_el1_vectors slot)
|
||||
{
|
||||
if (arm64_kernel_unmapped_at_el0())
|
||||
return (char *)TRAMP_VALIAS + SZ_2K * slot;
|
||||
return (char *)(TRAMP_VALIAS + SZ_2K * slot);
|
||||
|
||||
WARN_ON_ONCE(slot == EL1_VECTOR_KPTI);
|
||||
|
||||
|
@ -41,7 +41,7 @@ bool alternative_is_applied(u16 cpufeature)
|
||||
/*
|
||||
* Check if the target PC is within an alternative block.
|
||||
*/
|
||||
static bool branch_insn_requires_update(struct alt_instr *alt, unsigned long pc)
|
||||
static __always_inline bool branch_insn_requires_update(struct alt_instr *alt, unsigned long pc)
|
||||
{
|
||||
unsigned long replptr = (unsigned long)ALT_REPL_PTR(alt);
|
||||
return !(pc >= replptr && pc <= (replptr + alt->alt_len));
|
||||
@ -49,7 +49,7 @@ static bool branch_insn_requires_update(struct alt_instr *alt, unsigned long pc)
|
||||
|
||||
#define align_down(x, a) ((unsigned long)(x) & ~(((unsigned long)(a)) - 1))
|
||||
|
||||
static u32 get_alt_insn(struct alt_instr *alt, __le32 *insnptr, __le32 *altinsnptr)
|
||||
static __always_inline u32 get_alt_insn(struct alt_instr *alt, __le32 *insnptr, __le32 *altinsnptr)
|
||||
{
|
||||
u32 insn;
|
||||
|
||||
@ -94,7 +94,7 @@ static u32 get_alt_insn(struct alt_instr *alt, __le32 *insnptr, __le32 *altinsnp
|
||||
return insn;
|
||||
}
|
||||
|
||||
static void patch_alternative(struct alt_instr *alt,
|
||||
static noinstr void patch_alternative(struct alt_instr *alt,
|
||||
__le32 *origptr, __le32 *updptr, int nr_inst)
|
||||
{
|
||||
__le32 *replptr;
|
||||
|
@ -53,6 +53,9 @@ static int psci_acpi_cpu_init_idle(unsigned int cpu)
|
||||
struct acpi_lpi_state *lpi;
|
||||
struct acpi_processor *pr = per_cpu(processors, cpu);
|
||||
|
||||
if (unlikely(!pr || !pr->flags.has_lpi))
|
||||
return -EINVAL;
|
||||
|
||||
/*
|
||||
* If the PSCI cpu_suspend function hook has not been initialized
|
||||
* idle states must not be enabled, so bail out
|
||||
@ -60,9 +63,6 @@ static int psci_acpi_cpu_init_idle(unsigned int cpu)
|
||||
if (!psci_ops.cpu_suspend)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (unlikely(!pr || !pr->flags.has_lpi))
|
||||
return -EINVAL;
|
||||
|
||||
count = pr->power.count - 1;
|
||||
if (count <= 0)
|
||||
return -ENODEV;
|
||||
|
@ -73,9 +73,21 @@ int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr)
|
||||
|
||||
if (offset < -SZ_128M || offset >= SZ_128M) {
|
||||
#ifdef CONFIG_ARM64_MODULE_PLTS
|
||||
struct plt_entry trampoline, *dst;
|
||||
struct module *mod;
|
||||
|
||||
/*
|
||||
* There is only one ftrace trampoline per module. For now,
|
||||
* this is not a problem since on arm64, all dynamic ftrace
|
||||
* invocations are routed via ftrace_caller(). This will need
|
||||
* to be revisited if support for multiple ftrace entry points
|
||||
* is added in the future, but for now, the pr_err() below
|
||||
* deals with a theoretical issue only.
|
||||
*/
|
||||
if (addr != FTRACE_ADDR) {
|
||||
pr_err("ftrace: far branches to multiple entry points unsupported inside a single module\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/*
|
||||
* On kernels that support module PLTs, the offset between the
|
||||
* branch instruction and its target may legally exceed the
|
||||
@ -93,46 +105,7 @@ int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr)
|
||||
if (WARN_ON(!mod))
|
||||
return -EINVAL;
|
||||
|
||||
/*
|
||||
* There is only one ftrace trampoline per module. For now,
|
||||
* this is not a problem since on arm64, all dynamic ftrace
|
||||
* invocations are routed via ftrace_caller(). This will need
|
||||
* to be revisited if support for multiple ftrace entry points
|
||||
* is added in the future, but for now, the pr_err() below
|
||||
* deals with a theoretical issue only.
|
||||
*
|
||||
* Note that PLTs are place relative, and plt_entries_equal()
|
||||
* checks whether they point to the same target. Here, we need
|
||||
* to check if the actual opcodes are in fact identical,
|
||||
* regardless of the offset in memory so use memcmp() instead.
|
||||
*/
|
||||
dst = mod->arch.ftrace_trampoline;
|
||||
trampoline = get_plt_entry(addr, dst);
|
||||
if (memcmp(dst, &trampoline, sizeof(trampoline))) {
|
||||
if (plt_entry_is_initialized(dst)) {
|
||||
pr_err("ftrace: far branches to multiple entry points unsupported inside a single module\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* point the trampoline to our ftrace entry point */
|
||||
module_disable_ro(mod);
|
||||
*dst = trampoline;
|
||||
module_enable_ro(mod, true);
|
||||
|
||||
/*
|
||||
* Ensure updated trampoline is visible to instruction
|
||||
* fetch before we patch in the branch. Although the
|
||||
* architecture doesn't require an IPI in this case,
|
||||
* Neoverse-N1 erratum #1542419 does require one
|
||||
* if the TLB maintenance in module_enable_ro() is
|
||||
* skipped due to rodata_enabled. It doesn't seem worth
|
||||
* it to make it conditional given that this is
|
||||
* certainly not a fast-path.
|
||||
*/
|
||||
flush_icache_range((unsigned long)&dst[0],
|
||||
(unsigned long)&dst[1]);
|
||||
}
|
||||
addr = (unsigned long)dst;
|
||||
addr = (unsigned long)mod->arch.ftrace_trampoline;
|
||||
#else /* CONFIG_ARM64_MODULE_PLTS */
|
||||
return -EINVAL;
|
||||
#endif /* CONFIG_ARM64_MODULE_PLTS */
|
||||
|
@ -207,8 +207,8 @@ static int __kprobes aarch64_insn_patch_text_cb(void *arg)
|
||||
int i, ret = 0;
|
||||
struct aarch64_insn_patch *pp = arg;
|
||||
|
||||
/* The first CPU becomes master */
|
||||
if (atomic_inc_return(&pp->cpu_count) == 1) {
|
||||
/* The last CPU becomes master */
|
||||
if (atomic_inc_return(&pp->cpu_count) == num_online_cpus()) {
|
||||
for (i = 0; ret == 0 && i < pp->insn_cnt; i++)
|
||||
ret = aarch64_insn_patch_text_nosync(pp->text_addrs[i],
|
||||
pp->new_insns[i]);
|
||||
|
@ -9,6 +9,7 @@
|
||||
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/elf.h>
|
||||
#include <linux/ftrace.h>
|
||||
#include <linux/gfp.h>
|
||||
#include <linux/kasan.h>
|
||||
#include <linux/kernel.h>
|
||||
@ -470,22 +471,48 @@ int apply_relocate_add(Elf64_Shdr *sechdrs,
|
||||
return -ENOEXEC;
|
||||
}
|
||||
|
||||
int module_finalize(const Elf_Ehdr *hdr,
|
||||
const Elf_Shdr *sechdrs,
|
||||
struct module *me)
|
||||
static const Elf_Shdr *find_section(const Elf_Ehdr *hdr,
|
||||
const Elf_Shdr *sechdrs,
|
||||
const char *name)
|
||||
{
|
||||
const Elf_Shdr *s, *se;
|
||||
const char *secstrs = (void *)hdr + sechdrs[hdr->e_shstrndx].sh_offset;
|
||||
|
||||
for (s = sechdrs, se = sechdrs + hdr->e_shnum; s < se; s++) {
|
||||
if (strcmp(".altinstructions", secstrs + s->sh_name) == 0)
|
||||
apply_alternatives_module((void *)s->sh_addr, s->sh_size);
|
||||
#ifdef CONFIG_ARM64_MODULE_PLTS
|
||||
if (IS_ENABLED(CONFIG_DYNAMIC_FTRACE) &&
|
||||
!strcmp(".text.ftrace_trampoline", secstrs + s->sh_name))
|
||||
me->arch.ftrace_trampoline = (void *)s->sh_addr;
|
||||
#endif
|
||||
if (strcmp(name, secstrs + s->sh_name) == 0)
|
||||
return s;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static int module_init_ftrace_plt(const Elf_Ehdr *hdr,
|
||||
const Elf_Shdr *sechdrs,
|
||||
struct module *mod)
|
||||
{
|
||||
#if defined(CONFIG_ARM64_MODULE_PLTS) && defined(CONFIG_DYNAMIC_FTRACE)
|
||||
const Elf_Shdr *s;
|
||||
struct plt_entry *plt;
|
||||
|
||||
s = find_section(hdr, sechdrs, ".text.ftrace_trampoline");
|
||||
if (!s)
|
||||
return -ENOEXEC;
|
||||
|
||||
plt = (void *)s->sh_addr;
|
||||
*plt = get_plt_entry(FTRACE_ADDR, plt);
|
||||
mod->arch.ftrace_trampoline = plt;
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
int module_finalize(const Elf_Ehdr *hdr,
|
||||
const Elf_Shdr *sechdrs,
|
||||
struct module *me)
|
||||
{
|
||||
const Elf_Shdr *s;
|
||||
s = find_section(hdr, sechdrs, ".altinstructions");
|
||||
if (s)
|
||||
apply_alternatives_module((void *)s->sh_addr, s->sh_size);
|
||||
|
||||
return module_init_ftrace_plt(hdr, sechdrs, me);
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
SECTIONS {
|
||||
.plt 0 (NOLOAD) : { BYTE(0) }
|
||||
.init.plt 0 (NOLOAD) : { BYTE(0) }
|
||||
.text.ftrace_trampoline 0 (NOLOAD) : { BYTE(0) }
|
||||
.plt 0 : { BYTE(0) }
|
||||
.init.plt 0 : { BYTE(0) }
|
||||
.text.ftrace_trampoline 0 : { BYTE(0) }
|
||||
}
|
||||
|
@ -909,15 +909,18 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog)
|
||||
goto out_off;
|
||||
}
|
||||
|
||||
/* 1. Initial fake pass to compute ctx->idx. */
|
||||
|
||||
/* Fake pass to fill in ctx->offset. */
|
||||
if (build_body(&ctx, extra_pass)) {
|
||||
/*
|
||||
* 1. Initial fake pass to compute ctx->idx and ctx->offset.
|
||||
*
|
||||
* BPF line info needs ctx->offset[i] to be the offset of
|
||||
* instruction[i] in jited image, so build prologue first.
|
||||
*/
|
||||
if (build_prologue(&ctx, was_classic)) {
|
||||
prog = orig_prog;
|
||||
goto out_off;
|
||||
}
|
||||
|
||||
if (build_prologue(&ctx, was_classic)) {
|
||||
if (build_body(&ctx, extra_pass)) {
|
||||
prog = orig_prog;
|
||||
goto out_off;
|
||||
}
|
||||
@ -983,6 +986,11 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog)
|
||||
prog->jited_len = image_size;
|
||||
|
||||
if (!prog->is_func || extra_pass) {
|
||||
int i;
|
||||
|
||||
/* offset[prog->len] is the size of program */
|
||||
for (i = 0; i <= prog->len; i++)
|
||||
ctx.offset[i] *= AARCH64_INSN_SIZE;
|
||||
bpf_prog_fill_jited_linfo(prog, ctx.offset + 1);
|
||||
out_off:
|
||||
kfree(ctx.offset);
|
||||
|
@ -448,7 +448,8 @@ void __init acpi_numa_fixup(void)
|
||||
if (srat_num_cpus == 0) {
|
||||
node_set_online(0);
|
||||
node_cpuid[0].phys_id = hard_smp_processor_id();
|
||||
return;
|
||||
slit_distance(0, 0) = LOCAL_DISTANCE;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -491,7 +492,7 @@ void __init acpi_numa_fixup(void)
|
||||
for (j = 0; j < MAX_NUMNODES; j++)
|
||||
slit_distance(i, j) = i == j ?
|
||||
LOCAL_DISTANCE : REMOTE_DISTANCE;
|
||||
return;
|
||||
goto out;
|
||||
}
|
||||
|
||||
memset(numa_slit, -1, sizeof(numa_slit));
|
||||
@ -516,6 +517,8 @@ void __init acpi_numa_fixup(void)
|
||||
printk("\n");
|
||||
}
|
||||
#endif
|
||||
out:
|
||||
node_possible_map = node_online_map;
|
||||
}
|
||||
#endif /* CONFIG_ACPI_NUMA */
|
||||
|
||||
|
@ -171,27 +171,27 @@ extern long __user_bad(void);
|
||||
|
||||
#define __get_user(x, ptr) \
|
||||
({ \
|
||||
unsigned long __gu_val = 0; \
|
||||
long __gu_err; \
|
||||
switch (sizeof(*(ptr))) { \
|
||||
case 1: \
|
||||
__get_user_asm("lbu", (ptr), __gu_val, __gu_err); \
|
||||
__get_user_asm("lbu", (ptr), x, __gu_err); \
|
||||
break; \
|
||||
case 2: \
|
||||
__get_user_asm("lhu", (ptr), __gu_val, __gu_err); \
|
||||
__get_user_asm("lhu", (ptr), x, __gu_err); \
|
||||
break; \
|
||||
case 4: \
|
||||
__get_user_asm("lw", (ptr), __gu_val, __gu_err); \
|
||||
__get_user_asm("lw", (ptr), x, __gu_err); \
|
||||
break; \
|
||||
case 8: \
|
||||
__gu_err = __copy_from_user(&__gu_val, ptr, 8); \
|
||||
if (__gu_err) \
|
||||
__gu_err = -EFAULT; \
|
||||
case 8: { \
|
||||
__u64 __x = 0; \
|
||||
__gu_err = raw_copy_from_user(&__x, ptr, 8) ? \
|
||||
-EFAULT : 0; \
|
||||
(x) = (typeof(x))(typeof((x) - (x)))__x; \
|
||||
break; \
|
||||
} \
|
||||
default: \
|
||||
/* __gu_val = 0; __gu_err = -EINVAL;*/ __gu_err = __user_bad();\
|
||||
} \
|
||||
x = (__force __typeof__(*(ptr))) __gu_val; \
|
||||
__gu_err; \
|
||||
})
|
||||
|
||||
|
@ -131,7 +131,7 @@
|
||||
*/
|
||||
mfc0 t0,CP0_CAUSE # get pending interrupts
|
||||
mfc0 t1,CP0_STATUS
|
||||
#ifdef CONFIG_32BIT
|
||||
#if defined(CONFIG_32BIT) && defined(CONFIG_MIPS_FP_SUPPORT)
|
||||
lw t2,cpu_fpu_mask
|
||||
#endif
|
||||
andi t0,ST0_IM # CAUSE.CE may be non-zero!
|
||||
@ -139,7 +139,7 @@
|
||||
|
||||
beqz t0,spurious
|
||||
|
||||
#ifdef CONFIG_32BIT
|
||||
#if defined(CONFIG_32BIT) && defined(CONFIG_MIPS_FP_SUPPORT)
|
||||
and t2,t0
|
||||
bnez t2,fpu # handle FPU immediately
|
||||
#endif
|
||||
@ -280,7 +280,7 @@ handle_it:
|
||||
j dec_irq_dispatch
|
||||
nop
|
||||
|
||||
#ifdef CONFIG_32BIT
|
||||
#if defined(CONFIG_32BIT) && defined(CONFIG_MIPS_FP_SUPPORT)
|
||||
fpu:
|
||||
lw t0,fpu_kstat_irq
|
||||
nop
|
||||
|
@ -6,4 +6,4 @@
|
||||
|
||||
lib-y += init.o memory.o cmdline.o identify.o console.o
|
||||
|
||||
lib-$(CONFIG_32BIT) += locore.o
|
||||
lib-$(CONFIG_CPU_R3000) += locore.o
|
||||
|
@ -766,7 +766,8 @@ void __init arch_init_irq(void)
|
||||
dec_interrupt[DEC_IRQ_HALT] = -1;
|
||||
|
||||
/* Register board interrupts: FPU and cascade. */
|
||||
if (dec_interrupt[DEC_IRQ_FPU] >= 0 && cpu_has_fpu) {
|
||||
if (IS_ENABLED(CONFIG_MIPS_FP_SUPPORT) &&
|
||||
dec_interrupt[DEC_IRQ_FPU] >= 0 && cpu_has_fpu) {
|
||||
struct irq_desc *desc_fpu;
|
||||
int irq_fpu;
|
||||
|
||||
|
@ -43,16 +43,11 @@
|
||||
*/
|
||||
#define REX_PROM_MAGIC 0x30464354
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
|
||||
#define prom_is_rex(magic) 1 /* KN04 and KN05 are REX PROMs. */
|
||||
|
||||
#else /* !CONFIG_64BIT */
|
||||
|
||||
#define prom_is_rex(magic) ((magic) == REX_PROM_MAGIC)
|
||||
|
||||
#endif /* !CONFIG_64BIT */
|
||||
|
||||
/* KN04 and KN05 are REX PROMs, so only do the check for R3k systems. */
|
||||
static inline bool prom_is_rex(u32 magic)
|
||||
{
|
||||
return !IS_ENABLED(CONFIG_CPU_R3000) || magic == REX_PROM_MAGIC;
|
||||
}
|
||||
|
||||
/*
|
||||
* 3MIN/MAXINE PROM entry points for DS5000/1xx's, DS5000/xx's and
|
||||
|
@ -16,7 +16,7 @@ static inline void setup_8250_early_printk_port(unsigned long base,
|
||||
unsigned int reg_shift, unsigned int timeout) {}
|
||||
#endif
|
||||
|
||||
extern void set_handler(unsigned long offset, void *addr, unsigned long len);
|
||||
void set_handler(unsigned long offset, const void *addr, unsigned long len);
|
||||
extern void set_uncached_handler(unsigned long offset, void *addr, unsigned long len);
|
||||
|
||||
typedef void (*vi_handler_t)(void);
|
||||
|
@ -361,6 +361,9 @@ asmlinkage void start_secondary(void)
|
||||
cpu = smp_processor_id();
|
||||
cpu_data[cpu].udelay_val = loops_per_jiffy;
|
||||
|
||||
set_cpu_sibling_map(cpu);
|
||||
set_cpu_core_map(cpu);
|
||||
|
||||
cpumask_set_cpu(cpu, &cpu_coherent_mask);
|
||||
notify_cpu_starting(cpu);
|
||||
|
||||
@ -372,9 +375,6 @@ asmlinkage void start_secondary(void)
|
||||
/* The CPU is running and counters synchronised, now mark it online */
|
||||
set_cpu_online(cpu, true);
|
||||
|
||||
set_cpu_sibling_map(cpu);
|
||||
set_cpu_core_map(cpu);
|
||||
|
||||
calculate_cpu_foreign_map();
|
||||
|
||||
/*
|
||||
|
@ -2020,19 +2020,19 @@ static void *set_vi_srs_handler(int n, vi_handler_t addr, int srs)
|
||||
* If no shadow set is selected then use the default handler
|
||||
* that does normal register saving and standard interrupt exit
|
||||
*/
|
||||
extern char except_vec_vi, except_vec_vi_lui;
|
||||
extern char except_vec_vi_ori, except_vec_vi_end;
|
||||
extern char rollback_except_vec_vi;
|
||||
char *vec_start = using_rollback_handler() ?
|
||||
&rollback_except_vec_vi : &except_vec_vi;
|
||||
extern const u8 except_vec_vi[], except_vec_vi_lui[];
|
||||
extern const u8 except_vec_vi_ori[], except_vec_vi_end[];
|
||||
extern const u8 rollback_except_vec_vi[];
|
||||
const u8 *vec_start = using_rollback_handler() ?
|
||||
rollback_except_vec_vi : except_vec_vi;
|
||||
#if defined(CONFIG_CPU_MICROMIPS) || defined(CONFIG_CPU_BIG_ENDIAN)
|
||||
const int lui_offset = &except_vec_vi_lui - vec_start + 2;
|
||||
const int ori_offset = &except_vec_vi_ori - vec_start + 2;
|
||||
const int lui_offset = except_vec_vi_lui - vec_start + 2;
|
||||
const int ori_offset = except_vec_vi_ori - vec_start + 2;
|
||||
#else
|
||||
const int lui_offset = &except_vec_vi_lui - vec_start;
|
||||
const int ori_offset = &except_vec_vi_ori - vec_start;
|
||||
const int lui_offset = except_vec_vi_lui - vec_start;
|
||||
const int ori_offset = except_vec_vi_ori - vec_start;
|
||||
#endif
|
||||
const int handler_len = &except_vec_vi_end - vec_start;
|
||||
const int handler_len = except_vec_vi_end - vec_start;
|
||||
|
||||
if (handler_len > VECTORSPACING) {
|
||||
/*
|
||||
@ -2240,7 +2240,7 @@ void per_cpu_trap_init(bool is_boot_cpu)
|
||||
}
|
||||
|
||||
/* Install CPU exception handler */
|
||||
void set_handler(unsigned long offset, void *addr, unsigned long size)
|
||||
void set_handler(unsigned long offset, const void *addr, unsigned long size)
|
||||
{
|
||||
#ifdef CONFIG_CPU_MICROMIPS
|
||||
memcpy((void *)(ebase + offset), ((unsigned char *)addr - 1), size);
|
||||
|
@ -61,6 +61,7 @@ static int __init ill_acc_of_setup(void)
|
||||
pdev = of_find_device_by_node(np);
|
||||
if (!pdev) {
|
||||
pr_err("%pOFn: failed to lookup pdev\n", np);
|
||||
of_node_put(np);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -310,11 +310,9 @@ static int __init plat_setup_devices(void)
|
||||
static int __init setup_kmac(char *s)
|
||||
{
|
||||
printk(KERN_INFO "korina mac = %s\n", s);
|
||||
if (!mac_pton(s, korina_dev0_data.mac)) {
|
||||
if (!mac_pton(s, korina_dev0_data.mac))
|
||||
printk(KERN_ERR "Invalid mac\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
__setup("kmac=", setup_kmac);
|
||||
|
@ -71,9 +71,7 @@ static inline void set_fs(mm_segment_t fs)
|
||||
* versions are void (ie, don't return a value as such).
|
||||
*/
|
||||
|
||||
#define get_user __get_user \
|
||||
|
||||
#define __get_user(x, ptr) \
|
||||
#define get_user(x, ptr) \
|
||||
({ \
|
||||
long __gu_err = 0; \
|
||||
__get_user_check((x), (ptr), __gu_err); \
|
||||
@ -86,6 +84,14 @@ static inline void set_fs(mm_segment_t fs)
|
||||
(void)0; \
|
||||
})
|
||||
|
||||
#define __get_user(x, ptr) \
|
||||
({ \
|
||||
long __gu_err = 0; \
|
||||
const __typeof__(*(ptr)) __user *__p = (ptr); \
|
||||
__get_user_err((x), __p, (__gu_err)); \
|
||||
__gu_err; \
|
||||
})
|
||||
|
||||
#define __get_user_check(x, ptr, err) \
|
||||
({ \
|
||||
const __typeof__(*(ptr)) __user *__p = (ptr); \
|
||||
@ -166,12 +172,18 @@ do { \
|
||||
: "r"(addr), "i"(-EFAULT) \
|
||||
: "cc")
|
||||
|
||||
#define put_user __put_user \
|
||||
#define put_user(x, ptr) \
|
||||
({ \
|
||||
long __pu_err = 0; \
|
||||
__put_user_check((x), (ptr), __pu_err); \
|
||||
__pu_err; \
|
||||
})
|
||||
|
||||
#define __put_user(x, ptr) \
|
||||
({ \
|
||||
long __pu_err = 0; \
|
||||
__put_user_err((x), (ptr), __pu_err); \
|
||||
__typeof__(*(ptr)) __user *__p = (ptr); \
|
||||
__put_user_err((x), __p, __pu_err); \
|
||||
__pu_err; \
|
||||
})
|
||||
|
||||
|
@ -89,6 +89,7 @@ extern __must_check long strnlen_user(const char __user *s, long n);
|
||||
/* Optimized macros */
|
||||
#define __get_user_asm(val, insn, addr, err) \
|
||||
{ \
|
||||
unsigned long __gu_val; \
|
||||
__asm__ __volatile__( \
|
||||
" movi %0, %3\n" \
|
||||
"1: " insn " %1, 0(%2)\n" \
|
||||
@ -97,14 +98,20 @@ extern __must_check long strnlen_user(const char __user *s, long n);
|
||||
" .section __ex_table,\"a\"\n" \
|
||||
" .word 1b, 2b\n" \
|
||||
" .previous" \
|
||||
: "=&r" (err), "=r" (val) \
|
||||
: "=&r" (err), "=r" (__gu_val) \
|
||||
: "r" (addr), "i" (-EFAULT)); \
|
||||
val = (__force __typeof__(*(addr)))__gu_val; \
|
||||
}
|
||||
|
||||
#define __get_user_unknown(val, size, ptr, err) do { \
|
||||
extern void __get_user_unknown(void);
|
||||
|
||||
#define __get_user_8(val, ptr, err) do { \
|
||||
u64 __val = 0; \
|
||||
err = 0; \
|
||||
if (__copy_from_user(&(val), ptr, size)) { \
|
||||
if (raw_copy_from_user(&(__val), ptr, sizeof(val))) { \
|
||||
err = -EFAULT; \
|
||||
} else { \
|
||||
val = (typeof(val))(typeof((val) - (val)))__val; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
@ -120,8 +127,11 @@ do { \
|
||||
case 4: \
|
||||
__get_user_asm(val, "ldw", ptr, err); \
|
||||
break; \
|
||||
case 8: \
|
||||
__get_user_8(val, ptr, err); \
|
||||
break; \
|
||||
default: \
|
||||
__get_user_unknown(val, size, ptr, err); \
|
||||
__get_user_unknown(); \
|
||||
break; \
|
||||
} \
|
||||
} while (0)
|
||||
@ -130,9 +140,7 @@ do { \
|
||||
({ \
|
||||
long __gu_err = -EFAULT; \
|
||||
const __typeof__(*(ptr)) __user *__gu_ptr = (ptr); \
|
||||
unsigned long __gu_val = 0; \
|
||||
__get_user_common(__gu_val, sizeof(*(ptr)), __gu_ptr, __gu_err);\
|
||||
(x) = (__force __typeof__(x))__gu_val; \
|
||||
__get_user_common(x, sizeof(*(ptr)), __gu_ptr, __gu_err); \
|
||||
__gu_err; \
|
||||
})
|
||||
|
||||
@ -140,11 +148,9 @@ do { \
|
||||
({ \
|
||||
long __gu_err = -EFAULT; \
|
||||
const __typeof__(*(ptr)) __user *__gu_ptr = (ptr); \
|
||||
unsigned long __gu_val = 0; \
|
||||
if (access_ok( __gu_ptr, sizeof(*__gu_ptr))) \
|
||||
__get_user_common(__gu_val, sizeof(*__gu_ptr), \
|
||||
__get_user_common(x, sizeof(*__gu_ptr), \
|
||||
__gu_ptr, __gu_err); \
|
||||
(x) = (__force __typeof__(x))__gu_val; \
|
||||
__gu_err; \
|
||||
})
|
||||
|
||||
|
@ -65,7 +65,6 @@ KBUILD_CFLAGS += -DCC_USING_PATCHABLE_FUNCTION_ENTRY=1 \
|
||||
-DFTRACE_PATCHABLE_FUNCTION_SIZE=$(NOP_COUNT)
|
||||
|
||||
CC_FLAGS_FTRACE := -fpatchable-function-entry=$(NOP_COUNT),$(shell echo $$(($(NOP_COUNT)-1)))
|
||||
KBUILD_LDS_MODULE += $(srctree)/arch/parisc/kernel/module.lds
|
||||
endif
|
||||
|
||||
OBJCOPY_FLAGS =-O binary -R .note -R .comment -S
|
||||
|
@ -43,6 +43,7 @@
|
||||
#include <linux/elf.h>
|
||||
#include <linux/vmalloc.h>
|
||||
#include <linux/fs.h>
|
||||
#include <linux/ftrace.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/bug.h>
|
||||
@ -862,7 +863,7 @@ int module_finalize(const Elf_Ehdr *hdr,
|
||||
const char *strtab = NULL;
|
||||
const Elf_Shdr *s;
|
||||
char *secstrings;
|
||||
int err, symindex = -1;
|
||||
int symindex = -1;
|
||||
Elf_Sym *newptr, *oldptr;
|
||||
Elf_Shdr *symhdr = NULL;
|
||||
#ifdef DEBUG
|
||||
@ -946,11 +947,13 @@ int module_finalize(const Elf_Ehdr *hdr,
|
||||
/* patch .altinstructions */
|
||||
apply_alternatives(aseg, aseg + s->sh_size, me->name);
|
||||
|
||||
#ifdef CONFIG_DYNAMIC_FTRACE
|
||||
/* For 32 bit kernels we're compiling modules with
|
||||
* -ffunction-sections so we must relocate the addresses in the
|
||||
*__mcount_loc section.
|
||||
* ftrace callsite section.
|
||||
*/
|
||||
if (symindex != -1 && !strcmp(secname, "__mcount_loc")) {
|
||||
if (symindex != -1 && !strcmp(secname, FTRACE_CALLSITE_SECTION)) {
|
||||
int err;
|
||||
if (s->sh_type == SHT_REL)
|
||||
err = apply_relocate((Elf_Shdr *)sechdrs,
|
||||
strtab, symindex,
|
||||
@ -962,6 +965,7 @@ int module_finalize(const Elf_Ehdr *hdr,
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,7 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
|
||||
SECTIONS {
|
||||
__mcount_loc : {
|
||||
*(__patchable_function_entries)
|
||||
}
|
||||
}
|
@ -40,10 +40,7 @@ static void __kprobes *patch_map(void *addr, int fixmap, unsigned long *flags,
|
||||
|
||||
*need_unmap = 1;
|
||||
set_fixmap(fixmap, page_to_phys(page));
|
||||
if (flags)
|
||||
raw_spin_lock_irqsave(&patch_lock, *flags);
|
||||
else
|
||||
__acquire(&patch_lock);
|
||||
raw_spin_lock_irqsave(&patch_lock, *flags);
|
||||
|
||||
return (void *) (__fix_to_virt(fixmap) + (uintaddr & ~PAGE_MASK));
|
||||
}
|
||||
@ -52,10 +49,7 @@ static void __kprobes patch_unmap(int fixmap, unsigned long *flags)
|
||||
{
|
||||
clear_fixmap(fixmap);
|
||||
|
||||
if (flags)
|
||||
raw_spin_unlock_irqrestore(&patch_lock, *flags);
|
||||
else
|
||||
__release(&patch_lock);
|
||||
raw_spin_unlock_irqrestore(&patch_lock, *flags);
|
||||
}
|
||||
|
||||
void __kprobes __patch_text_multiple(void *addr, u32 *insn, unsigned int len)
|
||||
@ -67,8 +61,9 @@ void __kprobes __patch_text_multiple(void *addr, u32 *insn, unsigned int len)
|
||||
int mapped;
|
||||
|
||||
/* Make sure we don't have any aliases in cache */
|
||||
flush_kernel_vmap_range(addr, len);
|
||||
flush_icache_range(start, end);
|
||||
flush_kernel_dcache_range_asm(start, end);
|
||||
flush_kernel_icache_range_asm(start, end);
|
||||
flush_tlb_kernel_range(start, end);
|
||||
|
||||
p = fixmap = patch_map(addr, FIX_TEXT_POKE0, &flags, &mapped);
|
||||
|
||||
@ -81,8 +76,10 @@ void __kprobes __patch_text_multiple(void *addr, u32 *insn, unsigned int len)
|
||||
* We're crossing a page boundary, so
|
||||
* need to remap
|
||||
*/
|
||||
flush_kernel_vmap_range((void *)fixmap,
|
||||
(p-fixmap) * sizeof(*p));
|
||||
flush_kernel_dcache_range_asm((unsigned long)fixmap,
|
||||
(unsigned long)p);
|
||||
flush_tlb_kernel_range((unsigned long)fixmap,
|
||||
(unsigned long)p);
|
||||
if (mapped)
|
||||
patch_unmap(FIX_TEXT_POKE0, &flags);
|
||||
p = fixmap = patch_map(addr, FIX_TEXT_POKE0, &flags,
|
||||
@ -90,10 +87,10 @@ void __kprobes __patch_text_multiple(void *addr, u32 *insn, unsigned int len)
|
||||
}
|
||||
}
|
||||
|
||||
flush_kernel_vmap_range((void *)fixmap, (p-fixmap) * sizeof(*p));
|
||||
flush_kernel_dcache_range_asm((unsigned long)fixmap, (unsigned long)p);
|
||||
flush_tlb_kernel_range((unsigned long)fixmap, (unsigned long)p);
|
||||
if (mapped)
|
||||
patch_unmap(FIX_TEXT_POKE0, &flags);
|
||||
flush_icache_range(start, end);
|
||||
}
|
||||
|
||||
void __kprobes __patch_text(void *addr, u32 insn)
|
||||
|
@ -340,7 +340,7 @@ static int emulate_stw(struct pt_regs *regs, int frreg, int flop)
|
||||
: "r" (val), "r" (regs->ior), "r" (regs->isr)
|
||||
: "r19", "r20", "r21", "r22", "r1", FIXUP_BRANCH_CLOBBER );
|
||||
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
static int emulate_std(struct pt_regs *regs, int frreg, int flop)
|
||||
{
|
||||
@ -397,7 +397,7 @@ static int emulate_std(struct pt_regs *regs, int frreg, int flop)
|
||||
__asm__ __volatile__ (
|
||||
" mtsp %4, %%sr1\n"
|
||||
" zdep %2, 29, 2, %%r19\n"
|
||||
" dep %%r0, 31, 2, %2\n"
|
||||
" dep %%r0, 31, 2, %3\n"
|
||||
" mtsar %%r19\n"
|
||||
" zvdepi -2, 32, %%r19\n"
|
||||
"1: ldw 0(%%sr1,%3),%%r20\n"
|
||||
@ -409,7 +409,7 @@ static int emulate_std(struct pt_regs *regs, int frreg, int flop)
|
||||
" andcm %%r21, %%r19, %%r21\n"
|
||||
" or %1, %%r20, %1\n"
|
||||
" or %2, %%r21, %2\n"
|
||||
"3: stw %1,0(%%sr1,%1)\n"
|
||||
"3: stw %1,0(%%sr1,%3)\n"
|
||||
"4: stw %%r1,4(%%sr1,%3)\n"
|
||||
"5: stw %2,8(%%sr1,%3)\n"
|
||||
" copy %%r0, %0\n"
|
||||
@ -596,7 +596,6 @@ void handle_unaligned(struct pt_regs *regs)
|
||||
ret = ERR_NOTHANDLED; /* "undefined", but lets kill them. */
|
||||
break;
|
||||
}
|
||||
#ifdef CONFIG_PA20
|
||||
switch (regs->iir & OPCODE2_MASK)
|
||||
{
|
||||
case OPCODE_FLDD_L:
|
||||
@ -607,22 +606,23 @@ void handle_unaligned(struct pt_regs *regs)
|
||||
flop=1;
|
||||
ret = emulate_std(regs, R2(regs->iir),1);
|
||||
break;
|
||||
#ifdef CONFIG_PA20
|
||||
case OPCODE_LDD_L:
|
||||
ret = emulate_ldd(regs, R2(regs->iir),0);
|
||||
break;
|
||||
case OPCODE_STD_L:
|
||||
ret = emulate_std(regs, R2(regs->iir),0);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
switch (regs->iir & OPCODE3_MASK)
|
||||
{
|
||||
case OPCODE_FLDW_L:
|
||||
flop=1;
|
||||
ret = emulate_ldw(regs, R2(regs->iir),0);
|
||||
ret = emulate_ldw(regs, R2(regs->iir), 1);
|
||||
break;
|
||||
case OPCODE_LDW_M:
|
||||
ret = emulate_ldw(regs, R2(regs->iir),1);
|
||||
ret = emulate_ldw(regs, R2(regs->iir), 0);
|
||||
break;
|
||||
|
||||
case OPCODE_FSTW_L:
|
||||
|
@ -347,9 +347,9 @@ static void __init setup_bootmem(void)
|
||||
|
||||
static bool kernel_set_to_readonly;
|
||||
|
||||
static void __init map_pages(unsigned long start_vaddr,
|
||||
unsigned long start_paddr, unsigned long size,
|
||||
pgprot_t pgprot, int force)
|
||||
static void __ref map_pages(unsigned long start_vaddr,
|
||||
unsigned long start_paddr, unsigned long size,
|
||||
pgprot_t pgprot, int force)
|
||||
{
|
||||
pgd_t *pg_dir;
|
||||
pmd_t *pmd;
|
||||
@ -485,7 +485,7 @@ void __init set_kernel_text_rw(int enable_read_write)
|
||||
flush_tlb_all();
|
||||
}
|
||||
|
||||
void __ref free_initmem(void)
|
||||
void free_initmem(void)
|
||||
{
|
||||
unsigned long init_begin = (unsigned long)__init_begin;
|
||||
unsigned long init_end = (unsigned long)__init_end;
|
||||
@ -499,7 +499,6 @@ void __ref free_initmem(void)
|
||||
/* The init text pages are marked R-X. We have to
|
||||
* flush the icache and mark them RW-
|
||||
*
|
||||
* This is tricky, because map_pages is in the init section.
|
||||
* Do a dummy remap of the data section first (the data
|
||||
* section is already PAGE_KERNEL) to pull in the TLB entries
|
||||
* for map_kernel */
|
||||
|
@ -174,7 +174,7 @@ else
|
||||
CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=power7,$(call cc-option,-mtune=power5))
|
||||
CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mcpu=power5,-mcpu=power4)
|
||||
endif
|
||||
else
|
||||
else ifdef CONFIG_PPC_BOOK3E_64
|
||||
CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=powerpc64
|
||||
endif
|
||||
|
||||
|
@ -139,12 +139,12 @@
|
||||
fman@400000 {
|
||||
ethernet@e6000 {
|
||||
phy-handle = <&phy_rgmii_0>;
|
||||
phy-connection-type = "rgmii";
|
||||
phy-connection-type = "rgmii-id";
|
||||
};
|
||||
|
||||
ethernet@e8000 {
|
||||
phy-handle = <&phy_rgmii_1>;
|
||||
phy-connection-type = "rgmii";
|
||||
phy-connection-type = "rgmii-id";
|
||||
};
|
||||
|
||||
mdio0: mdio@fc000 {
|
||||
|
@ -345,25 +345,37 @@ static inline void __raw_writeq_be(unsigned long v, volatile void __iomem *addr)
|
||||
*/
|
||||
static inline void __raw_rm_writeb(u8 val, volatile void __iomem *paddr)
|
||||
{
|
||||
__asm__ __volatile__("stbcix %0,0,%1"
|
||||
__asm__ __volatile__(".machine push; \
|
||||
.machine power6; \
|
||||
stbcix %0,0,%1; \
|
||||
.machine pop;"
|
||||
: : "r" (val), "r" (paddr) : "memory");
|
||||
}
|
||||
|
||||
static inline void __raw_rm_writew(u16 val, volatile void __iomem *paddr)
|
||||
{
|
||||
__asm__ __volatile__("sthcix %0,0,%1"
|
||||
__asm__ __volatile__(".machine push; \
|
||||
.machine power6; \
|
||||
sthcix %0,0,%1; \
|
||||
.machine pop;"
|
||||
: : "r" (val), "r" (paddr) : "memory");
|
||||
}
|
||||
|
||||
static inline void __raw_rm_writel(u32 val, volatile void __iomem *paddr)
|
||||
{
|
||||
__asm__ __volatile__("stwcix %0,0,%1"
|
||||
__asm__ __volatile__(".machine push; \
|
||||
.machine power6; \
|
||||
stwcix %0,0,%1; \
|
||||
.machine pop;"
|
||||
: : "r" (val), "r" (paddr) : "memory");
|
||||
}
|
||||
|
||||
static inline void __raw_rm_writeq(u64 val, volatile void __iomem *paddr)
|
||||
{
|
||||
__asm__ __volatile__("stdcix %0,0,%1"
|
||||
__asm__ __volatile__(".machine push; \
|
||||
.machine power6; \
|
||||
stdcix %0,0,%1; \
|
||||
.machine pop;"
|
||||
: : "r" (val), "r" (paddr) : "memory");
|
||||
}
|
||||
|
||||
@ -375,7 +387,10 @@ static inline void __raw_rm_writeq_be(u64 val, volatile void __iomem *paddr)
|
||||
static inline u8 __raw_rm_readb(volatile void __iomem *paddr)
|
||||
{
|
||||
u8 ret;
|
||||
__asm__ __volatile__("lbzcix %0,0, %1"
|
||||
__asm__ __volatile__(".machine push; \
|
||||
.machine power6; \
|
||||
lbzcix %0,0, %1; \
|
||||
.machine pop;"
|
||||
: "=r" (ret) : "r" (paddr) : "memory");
|
||||
return ret;
|
||||
}
|
||||
@ -383,7 +398,10 @@ static inline u8 __raw_rm_readb(volatile void __iomem *paddr)
|
||||
static inline u16 __raw_rm_readw(volatile void __iomem *paddr)
|
||||
{
|
||||
u16 ret;
|
||||
__asm__ __volatile__("lhzcix %0,0, %1"
|
||||
__asm__ __volatile__(".machine push; \
|
||||
.machine power6; \
|
||||
lhzcix %0,0, %1; \
|
||||
.machine pop;"
|
||||
: "=r" (ret) : "r" (paddr) : "memory");
|
||||
return ret;
|
||||
}
|
||||
@ -391,7 +409,10 @@ static inline u16 __raw_rm_readw(volatile void __iomem *paddr)
|
||||
static inline u32 __raw_rm_readl(volatile void __iomem *paddr)
|
||||
{
|
||||
u32 ret;
|
||||
__asm__ __volatile__("lwzcix %0,0, %1"
|
||||
__asm__ __volatile__(".machine push; \
|
||||
.machine power6; \
|
||||
lwzcix %0,0, %1; \
|
||||
.machine pop;"
|
||||
: "=r" (ret) : "r" (paddr) : "memory");
|
||||
return ret;
|
||||
}
|
||||
@ -399,7 +420,10 @@ static inline u32 __raw_rm_readl(volatile void __iomem *paddr)
|
||||
static inline u64 __raw_rm_readq(volatile void __iomem *paddr)
|
||||
{
|
||||
u64 ret;
|
||||
__asm__ __volatile__("ldcix %0,0, %1"
|
||||
__asm__ __volatile__(".machine push; \
|
||||
.machine power6; \
|
||||
ldcix %0,0, %1; \
|
||||
.machine pop;"
|
||||
: "=r" (ret) : "r" (paddr) : "memory");
|
||||
return ret;
|
||||
}
|
||||
|
@ -132,7 +132,11 @@ static inline bool pfn_valid(unsigned long pfn)
|
||||
#define virt_to_page(kaddr) pfn_to_page(virt_to_pfn(kaddr))
|
||||
#define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT)
|
||||
|
||||
#define virt_addr_valid(kaddr) pfn_valid(virt_to_pfn(kaddr))
|
||||
#define virt_addr_valid(vaddr) ({ \
|
||||
unsigned long _addr = (unsigned long)vaddr; \
|
||||
_addr >= PAGE_OFFSET && _addr < (unsigned long)high_memory && \
|
||||
pfn_valid(virt_to_pfn(_addr)); \
|
||||
})
|
||||
|
||||
/*
|
||||
* On Book-E parts we need __va to parse the device tree and we can't
|
||||
|
@ -191,8 +191,11 @@ extern long __get_user_bad(void);
|
||||
*/
|
||||
#define __get_user_atomic_128_aligned(kaddr, uaddr, err) \
|
||||
__asm__ __volatile__( \
|
||||
".machine push\n" \
|
||||
".machine altivec\n" \
|
||||
"1: lvx 0,0,%1 # get user\n" \
|
||||
" stvx 0,0,%2 # put kernel\n" \
|
||||
".machine pop\n" \
|
||||
"2:\n" \
|
||||
".section .fixup,\"ax\"\n" \
|
||||
"3: li %0,%3\n" \
|
||||
|
@ -669,7 +669,7 @@ static void __init kvm_use_magic_page(void)
|
||||
on_each_cpu(kvm_map_magic_page, &features, 1);
|
||||
|
||||
/* Quick self-test to see if the mapping works */
|
||||
if (!fault_in_pages_readable((const char *)KVM_MAGIC_PAGE, sizeof(u32))) {
|
||||
if (fault_in_pages_readable((const char *)KVM_MAGIC_PAGE, sizeof(u32))) {
|
||||
kvm_patching_worked = false;
|
||||
return;
|
||||
}
|
||||
|
@ -146,11 +146,18 @@ void __init reserve_crashkernel(void)
|
||||
if (!crashk_res.start) {
|
||||
#ifdef CONFIG_PPC64
|
||||
/*
|
||||
* On 64bit we split the RMO in half but cap it at half of
|
||||
* a small SLB (128MB) since the crash kernel needs to place
|
||||
* itself and some stacks to be in the first segment.
|
||||
* On the LPAR platform place the crash kernel to mid of
|
||||
* RMA size (512MB or more) to ensure the crash kernel
|
||||
* gets enough space to place itself and some stack to be
|
||||
* in the first segment. At the same time normal kernel
|
||||
* also get enough space to allocate memory for essential
|
||||
* system resource in the first segment. Keep the crash
|
||||
* kernel starts at 128MB offset on other platforms.
|
||||
*/
|
||||
crashk_res.start = min(0x8000000ULL, (ppc64_rma_size / 2));
|
||||
if (firmware_has_feature(FW_FEATURE_LPAR))
|
||||
crashk_res.start = ppc64_rma_size / 2;
|
||||
else
|
||||
crashk_res.start = min(0x8000000ULL, (ppc64_rma_size / 2));
|
||||
#else
|
||||
crashk_res.start = KDUMP_KERNELBASE;
|
||||
#endif
|
||||
|
@ -1244,6 +1244,12 @@ int __init early_init_dt_scan_rtas(unsigned long node,
|
||||
entryp = of_get_flat_dt_prop(node, "linux,rtas-entry", NULL);
|
||||
sizep = of_get_flat_dt_prop(node, "rtas-size", NULL);
|
||||
|
||||
#ifdef CONFIG_PPC64
|
||||
/* need this feature to decide the crashkernel offset */
|
||||
if (of_get_flat_dt_prop(node, "ibm,hypertas-functions", NULL))
|
||||
powerpc_firmware_features |= FW_FEATURE_LPAR;
|
||||
#endif
|
||||
|
||||
if (basep && entryp && sizep) {
|
||||
rtas.base = *basep;
|
||||
rtas.entry = *entryp;
|
||||
|
@ -420,13 +420,19 @@ static void kvmppc_tce_put(struct kvmppc_spapr_tce_table *stt,
|
||||
tbl[idx % TCES_PER_PAGE] = tce;
|
||||
}
|
||||
|
||||
static void kvmppc_clear_tce(struct mm_struct *mm, struct iommu_table *tbl,
|
||||
unsigned long entry)
|
||||
static void kvmppc_clear_tce(struct mm_struct *mm, struct kvmppc_spapr_tce_table *stt,
|
||||
struct iommu_table *tbl, unsigned long entry)
|
||||
{
|
||||
unsigned long hpa = 0;
|
||||
enum dma_data_direction dir = DMA_NONE;
|
||||
unsigned long i;
|
||||
unsigned long subpages = 1ULL << (stt->page_shift - tbl->it_page_shift);
|
||||
unsigned long io_entry = entry << (stt->page_shift - tbl->it_page_shift);
|
||||
|
||||
iommu_tce_xchg_no_kill(mm, tbl, entry, &hpa, &dir);
|
||||
for (i = 0; i < subpages; ++i) {
|
||||
unsigned long hpa = 0;
|
||||
enum dma_data_direction dir = DMA_NONE;
|
||||
|
||||
iommu_tce_xchg_no_kill(mm, tbl, io_entry + i, &hpa, &dir);
|
||||
}
|
||||
}
|
||||
|
||||
static long kvmppc_tce_iommu_mapped_dec(struct kvm *kvm,
|
||||
@ -485,6 +491,8 @@ static long kvmppc_tce_iommu_unmap(struct kvm *kvm,
|
||||
break;
|
||||
}
|
||||
|
||||
iommu_tce_kill(tbl, io_entry, subpages);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -544,6 +552,8 @@ static long kvmppc_tce_iommu_map(struct kvm *kvm,
|
||||
break;
|
||||
}
|
||||
|
||||
iommu_tce_kill(tbl, io_entry, subpages);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -590,10 +600,9 @@ long kvmppc_h_put_tce(struct kvm_vcpu *vcpu, unsigned long liobn,
|
||||
ret = kvmppc_tce_iommu_map(vcpu->kvm, stt, stit->tbl,
|
||||
entry, ua, dir);
|
||||
|
||||
iommu_tce_kill(stit->tbl, entry, 1);
|
||||
|
||||
if (ret != H_SUCCESS) {
|
||||
kvmppc_clear_tce(vcpu->kvm->mm, stit->tbl, entry);
|
||||
kvmppc_clear_tce(vcpu->kvm->mm, stt, stit->tbl, entry);
|
||||
goto unlock_exit;
|
||||
}
|
||||
}
|
||||
@ -669,13 +678,13 @@ long kvmppc_h_put_tce_indirect(struct kvm_vcpu *vcpu,
|
||||
*/
|
||||
if (get_user(tce, tces + i)) {
|
||||
ret = H_TOO_HARD;
|
||||
goto invalidate_exit;
|
||||
goto unlock_exit;
|
||||
}
|
||||
tce = be64_to_cpu(tce);
|
||||
|
||||
if (kvmppc_tce_to_ua(vcpu->kvm, tce, &ua)) {
|
||||
ret = H_PARAMETER;
|
||||
goto invalidate_exit;
|
||||
goto unlock_exit;
|
||||
}
|
||||
|
||||
list_for_each_entry_lockless(stit, &stt->iommu_tables, next) {
|
||||
@ -684,19 +693,15 @@ long kvmppc_h_put_tce_indirect(struct kvm_vcpu *vcpu,
|
||||
iommu_tce_direction(tce));
|
||||
|
||||
if (ret != H_SUCCESS) {
|
||||
kvmppc_clear_tce(vcpu->kvm->mm, stit->tbl,
|
||||
entry);
|
||||
goto invalidate_exit;
|
||||
kvmppc_clear_tce(vcpu->kvm->mm, stt, stit->tbl,
|
||||
entry + i);
|
||||
goto unlock_exit;
|
||||
}
|
||||
}
|
||||
|
||||
kvmppc_tce_put(stt, entry + i, tce);
|
||||
}
|
||||
|
||||
invalidate_exit:
|
||||
list_for_each_entry_lockless(stit, &stt->iommu_tables, next)
|
||||
iommu_tce_kill(stit->tbl, entry, npages);
|
||||
|
||||
unlock_exit:
|
||||
srcu_read_unlock(&vcpu->kvm->srcu, idx);
|
||||
|
||||
@ -735,20 +740,16 @@ long kvmppc_h_stuff_tce(struct kvm_vcpu *vcpu,
|
||||
continue;
|
||||
|
||||
if (ret == H_TOO_HARD)
|
||||
goto invalidate_exit;
|
||||
return ret;
|
||||
|
||||
WARN_ON_ONCE(1);
|
||||
kvmppc_clear_tce(vcpu->kvm->mm, stit->tbl, entry);
|
||||
kvmppc_clear_tce(vcpu->kvm->mm, stt, stit->tbl, entry + i);
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < npages; ++i, ioba += (1ULL << stt->page_shift))
|
||||
kvmppc_tce_put(stt, ioba >> stt->page_shift, tce_value);
|
||||
|
||||
invalidate_exit:
|
||||
list_for_each_entry_lockless(stit, &stt->iommu_tables, next)
|
||||
iommu_tce_kill(stit->tbl, ioba >> stt->page_shift, npages);
|
||||
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(kvmppc_h_stuff_tce);
|
||||
|
@ -251,13 +251,19 @@ extern void iommu_tce_kill_rm(struct iommu_table *tbl,
|
||||
tbl->it_ops->tce_kill(tbl, entry, pages, true);
|
||||
}
|
||||
|
||||
static void kvmppc_rm_clear_tce(struct kvm *kvm, struct iommu_table *tbl,
|
||||
unsigned long entry)
|
||||
static void kvmppc_rm_clear_tce(struct kvm *kvm, struct kvmppc_spapr_tce_table *stt,
|
||||
struct iommu_table *tbl, unsigned long entry)
|
||||
{
|
||||
unsigned long hpa = 0;
|
||||
enum dma_data_direction dir = DMA_NONE;
|
||||
unsigned long i;
|
||||
unsigned long subpages = 1ULL << (stt->page_shift - tbl->it_page_shift);
|
||||
unsigned long io_entry = entry << (stt->page_shift - tbl->it_page_shift);
|
||||
|
||||
iommu_tce_xchg_no_kill_rm(kvm->mm, tbl, entry, &hpa, &dir);
|
||||
for (i = 0; i < subpages; ++i) {
|
||||
unsigned long hpa = 0;
|
||||
enum dma_data_direction dir = DMA_NONE;
|
||||
|
||||
iommu_tce_xchg_no_kill_rm(kvm->mm, tbl, io_entry + i, &hpa, &dir);
|
||||
}
|
||||
}
|
||||
|
||||
static long kvmppc_rm_tce_iommu_mapped_dec(struct kvm *kvm,
|
||||
@ -320,6 +326,8 @@ static long kvmppc_rm_tce_iommu_unmap(struct kvm *kvm,
|
||||
break;
|
||||
}
|
||||
|
||||
iommu_tce_kill_rm(tbl, io_entry, subpages);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -383,6 +391,8 @@ static long kvmppc_rm_tce_iommu_map(struct kvm *kvm,
|
||||
break;
|
||||
}
|
||||
|
||||
iommu_tce_kill_rm(tbl, io_entry, subpages);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -428,10 +438,8 @@ long kvmppc_rm_h_put_tce(struct kvm_vcpu *vcpu, unsigned long liobn,
|
||||
ret = kvmppc_rm_tce_iommu_map(vcpu->kvm, stt,
|
||||
stit->tbl, entry, ua, dir);
|
||||
|
||||
iommu_tce_kill_rm(stit->tbl, entry, 1);
|
||||
|
||||
if (ret != H_SUCCESS) {
|
||||
kvmppc_rm_clear_tce(vcpu->kvm, stit->tbl, entry);
|
||||
kvmppc_rm_clear_tce(vcpu->kvm, stt, stit->tbl, entry);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
@ -571,7 +579,7 @@ long kvmppc_rm_h_put_tce_indirect(struct kvm_vcpu *vcpu,
|
||||
ua = 0;
|
||||
if (kvmppc_rm_tce_to_ua(vcpu->kvm, tce, &ua, NULL)) {
|
||||
ret = H_PARAMETER;
|
||||
goto invalidate_exit;
|
||||
goto unlock_exit;
|
||||
}
|
||||
|
||||
list_for_each_entry_lockless(stit, &stt->iommu_tables, next) {
|
||||
@ -580,19 +588,15 @@ long kvmppc_rm_h_put_tce_indirect(struct kvm_vcpu *vcpu,
|
||||
iommu_tce_direction(tce));
|
||||
|
||||
if (ret != H_SUCCESS) {
|
||||
kvmppc_rm_clear_tce(vcpu->kvm, stit->tbl,
|
||||
entry);
|
||||
goto invalidate_exit;
|
||||
kvmppc_rm_clear_tce(vcpu->kvm, stt, stit->tbl,
|
||||
entry + i);
|
||||
goto unlock_exit;
|
||||
}
|
||||
}
|
||||
|
||||
kvmppc_rm_tce_put(stt, entry + i, tce);
|
||||
}
|
||||
|
||||
invalidate_exit:
|
||||
list_for_each_entry_lockless(stit, &stt->iommu_tables, next)
|
||||
iommu_tce_kill_rm(stit->tbl, entry, npages);
|
||||
|
||||
unlock_exit:
|
||||
if (rmap)
|
||||
unlock_rmap(rmap);
|
||||
@ -635,20 +639,16 @@ long kvmppc_rm_h_stuff_tce(struct kvm_vcpu *vcpu,
|
||||
continue;
|
||||
|
||||
if (ret == H_TOO_HARD)
|
||||
goto invalidate_exit;
|
||||
return ret;
|
||||
|
||||
WARN_ON_ONCE_RM(1);
|
||||
kvmppc_rm_clear_tce(vcpu->kvm, stit->tbl, entry);
|
||||
kvmppc_rm_clear_tce(vcpu->kvm, stt, stit->tbl, entry + i);
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < npages; ++i, ioba += (1ULL << stt->page_shift))
|
||||
kvmppc_rm_tce_put(stt, ioba >> stt->page_shift, tce_value);
|
||||
|
||||
invalidate_exit:
|
||||
list_for_each_entry_lockless(stit, &stt->iommu_tables, next)
|
||||
iommu_tce_kill_rm(stit->tbl, ioba >> stt->page_shift, npages);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1495,7 +1495,7 @@ int kvmppc_handle_vmx_load(struct kvm_run *run, struct kvm_vcpu *vcpu,
|
||||
{
|
||||
enum emulation_result emulated = EMULATE_DONE;
|
||||
|
||||
if (vcpu->arch.mmio_vsx_copy_nums > 2)
|
||||
if (vcpu->arch.mmio_vmx_copy_nums > 2)
|
||||
return EMULATE_FAIL;
|
||||
|
||||
while (vcpu->arch.mmio_vmx_copy_nums) {
|
||||
@ -1592,7 +1592,7 @@ int kvmppc_handle_vmx_store(struct kvm_run *run, struct kvm_vcpu *vcpu,
|
||||
unsigned int index = rs & KVM_MMIO_REG_MASK;
|
||||
enum emulation_result emulated = EMULATE_DONE;
|
||||
|
||||
if (vcpu->arch.mmio_vsx_copy_nums > 2)
|
||||
if (vcpu->arch.mmio_vmx_copy_nums > 2)
|
||||
return EMULATE_FAIL;
|
||||
|
||||
vcpu->arch.io_gpr = rs;
|
||||
|
@ -906,7 +906,10 @@ NOKPROBE_SYMBOL(emulate_dcbz);
|
||||
|
||||
#define __put_user_asmx(x, addr, err, op, cr) \
|
||||
__asm__ __volatile__( \
|
||||
".machine push\n" \
|
||||
".machine power8\n" \
|
||||
"1: " op " %2,0,%3\n" \
|
||||
".machine pop\n" \
|
||||
" mfcr %1\n" \
|
||||
"2:\n" \
|
||||
".section .fixup,\"ax\"\n" \
|
||||
@ -919,7 +922,10 @@ NOKPROBE_SYMBOL(emulate_dcbz);
|
||||
|
||||
#define __get_user_asmx(x, addr, err, op) \
|
||||
__asm__ __volatile__( \
|
||||
".machine push\n" \
|
||||
".machine power8\n" \
|
||||
"1: "op" %1,0,%2\n" \
|
||||
".machine pop\n" \
|
||||
"2:\n" \
|
||||
".section .fixup,\"ax\"\n" \
|
||||
"3: li %0,%3\n" \
|
||||
@ -2787,12 +2793,14 @@ void emulate_update_regs(struct pt_regs *regs, struct instruction_op *op)
|
||||
case BARRIER_EIEIO:
|
||||
eieio();
|
||||
break;
|
||||
#ifdef CONFIG_PPC64
|
||||
case BARRIER_LWSYNC:
|
||||
asm volatile("lwsync" : : : "memory");
|
||||
break;
|
||||
case BARRIER_PTESYNC:
|
||||
asm volatile("ptesync" : : : "memory");
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
|
||||
@ -2910,7 +2918,7 @@ int emulate_loadstore(struct pt_regs *regs, struct instruction_op *op)
|
||||
__put_user_asmx(op->val, ea, err, "stbcx.", cr);
|
||||
break;
|
||||
case 2:
|
||||
__put_user_asmx(op->val, ea, err, "stbcx.", cr);
|
||||
__put_user_asmx(op->val, ea, err, "sthcx.", cr);
|
||||
break;
|
||||
#endif
|
||||
case 4:
|
||||
|
@ -121,7 +121,7 @@ static void __init kasan_remap_early_shadow_ro(void)
|
||||
pmd_t *pmd = pmd_offset(pud_offset(pgd_offset_k(k_cur), k_cur), k_cur);
|
||||
pte_t *ptep = pte_offset_kernel(pmd, k_cur);
|
||||
|
||||
if ((pte_val(*ptep) & PTE_RPN_MASK) != pa)
|
||||
if (pte_page(*ptep) != virt_to_page(lm_alias(kasan_early_shadow_page)))
|
||||
continue;
|
||||
|
||||
__set_pte_at(&init_mm, k_cur, ptep, pfn_pte(PHYS_PFN(pa), prot), 0);
|
||||
|
@ -1441,7 +1441,11 @@ static int trace_imc_event_init(struct perf_event *event)
|
||||
event->hw.idx = -1;
|
||||
target = event->hw.target;
|
||||
|
||||
event->pmu->task_ctx_nr = perf_hw_context;
|
||||
/*
|
||||
* There can only be a single PMU for perf_hw_context events which is assigned to
|
||||
* core PMU. Hence use "perf_sw_context" for trace_imc.
|
||||
*/
|
||||
event->pmu->task_ctx_nr = perf_sw_context;
|
||||
event->destroy = reset_global_refc;
|
||||
return 0;
|
||||
}
|
||||
|
@ -131,11 +131,11 @@ int p9_dd22_bl_ev[] = {
|
||||
|
||||
/* Table of alternatives, sorted by column 0 */
|
||||
static const unsigned int power9_event_alternatives[][MAX_ALT] = {
|
||||
{ PM_INST_DISP, PM_INST_DISP_ALT },
|
||||
{ PM_RUN_CYC_ALT, PM_RUN_CYC },
|
||||
{ PM_RUN_INST_CMPL_ALT, PM_RUN_INST_CMPL },
|
||||
{ PM_LD_MISS_L1, PM_LD_MISS_L1_ALT },
|
||||
{ PM_BR_2PATH, PM_BR_2PATH_ALT },
|
||||
{ PM_INST_DISP, PM_INST_DISP_ALT },
|
||||
{ PM_RUN_CYC_ALT, PM_RUN_CYC },
|
||||
{ PM_LD_MISS_L1, PM_LD_MISS_L1_ALT },
|
||||
{ PM_RUN_INST_CMPL_ALT, PM_RUN_INST_CMPL },
|
||||
};
|
||||
|
||||
static int power9_get_alternatives(u64 event, unsigned int flags, u64 alt[])
|
||||
|
@ -153,6 +153,7 @@ int mpc8xx_pic_init(void)
|
||||
if (mpc8xx_pic_host == NULL) {
|
||||
printk(KERN_ERR "MPC8xx PIC: failed to allocate irq host!\n");
|
||||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
|
@ -43,7 +43,11 @@ static unsigned long rng_whiten(struct powernv_rng *rng, unsigned long val)
|
||||
unsigned long parity;
|
||||
|
||||
/* Calculate the parity of the value */
|
||||
asm ("popcntd %0,%1" : "=r" (parity) : "r" (val));
|
||||
asm (".machine push; \
|
||||
.machine power7; \
|
||||
popcntd %0,%1; \
|
||||
.machine pop;"
|
||||
: "=r" (parity) : "r" (val));
|
||||
|
||||
/* xor our value with the previous mask */
|
||||
val ^= rng->mask;
|
||||
|
@ -86,7 +86,7 @@ static LIST_HEAD(gtms);
|
||||
*/
|
||||
struct gtm_timer *gtm_get_timer16(void)
|
||||
{
|
||||
struct gtm *gtm = NULL;
|
||||
struct gtm *gtm;
|
||||
int i;
|
||||
|
||||
list_for_each_entry(gtm, >ms, list_node) {
|
||||
@ -103,7 +103,7 @@ struct gtm_timer *gtm_get_timer16(void)
|
||||
spin_unlock_irq(>m->lock);
|
||||
}
|
||||
|
||||
if (gtm)
|
||||
if (!list_empty(>ms))
|
||||
return ERR_PTR(-EBUSY);
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
@ -13,6 +13,19 @@
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/sections.h>
|
||||
|
||||
/*
|
||||
* The auipc+jalr instruction pair can reach any PC-relative offset
|
||||
* in the range [-2^31 - 2^11, 2^31 - 2^11)
|
||||
*/
|
||||
static bool riscv_insn_valid_32bit_offset(ptrdiff_t val)
|
||||
{
|
||||
#ifdef CONFIG_32BIT
|
||||
return true;
|
||||
#else
|
||||
return (-(1L << 31) - (1L << 11)) <= val && val < ((1L << 31) - (1L << 11));
|
||||
#endif
|
||||
}
|
||||
|
||||
static int apply_r_riscv_32_rela(struct module *me, u32 *location, Elf_Addr v)
|
||||
{
|
||||
if (v != (u32)v) {
|
||||
@ -95,7 +108,7 @@ static int apply_r_riscv_pcrel_hi20_rela(struct module *me, u32 *location,
|
||||
ptrdiff_t offset = (void *)v - (void *)location;
|
||||
s32 hi20;
|
||||
|
||||
if (offset != (s32)offset) {
|
||||
if (!riscv_insn_valid_32bit_offset(offset)) {
|
||||
pr_err(
|
||||
"%s: target %016llx can not be addressed by the 32-bit offset from PC = %p\n",
|
||||
me->name, (long long)v, location);
|
||||
@ -197,10 +210,9 @@ static int apply_r_riscv_call_plt_rela(struct module *me, u32 *location,
|
||||
Elf_Addr v)
|
||||
{
|
||||
ptrdiff_t offset = (void *)v - (void *)location;
|
||||
s32 fill_v = offset;
|
||||
u32 hi20, lo12;
|
||||
|
||||
if (offset != fill_v) {
|
||||
if (!riscv_insn_valid_32bit_offset(offset)) {
|
||||
/* Only emit the plt entry if offset over 32-bit range */
|
||||
if (IS_ENABLED(CONFIG_MODULE_SECTIONS)) {
|
||||
offset = module_emit_plt_entry(me, v);
|
||||
@ -224,10 +236,9 @@ static int apply_r_riscv_call_rela(struct module *me, u32 *location,
|
||||
Elf_Addr v)
|
||||
{
|
||||
ptrdiff_t offset = (void *)v - (void *)location;
|
||||
s32 fill_v = offset;
|
||||
u32 hi20, lo12;
|
||||
|
||||
if (offset != fill_v) {
|
||||
if (!riscv_insn_valid_32bit_offset(offset)) {
|
||||
pr_err(
|
||||
"%s: target %016llx can not be addressed by the 32-bit offset from PC = %p\n",
|
||||
me->name, (long long)v, location);
|
||||
|
@ -2,7 +2,7 @@
|
||||
/* Copyright (C) 2017 Andes Technology Corporation */
|
||||
|
||||
SECTIONS {
|
||||
.plt (NOLOAD) : { BYTE(0) }
|
||||
.got (NOLOAD) : { BYTE(0) }
|
||||
.got.plt (NOLOAD) : { BYTE(0) }
|
||||
.plt : { BYTE(0) }
|
||||
.got : { BYTE(0) }
|
||||
.got.plt : { BYTE(0) }
|
||||
}
|
||||
|
@ -77,7 +77,7 @@ void perf_callchain_user(struct perf_callchain_entry_ctx *entry,
|
||||
|
||||
bool fill_callchain(unsigned long pc, void *entry)
|
||||
{
|
||||
return perf_callchain_store(entry, pc);
|
||||
return perf_callchain_store(entry, pc) == 0;
|
||||
}
|
||||
|
||||
void notrace walk_stackframe(struct task_struct *task,
|
||||
|
@ -217,7 +217,7 @@ void mconsole_go(struct mc_request *req)
|
||||
|
||||
void mconsole_stop(struct mc_request *req)
|
||||
{
|
||||
deactivate_fd(req->originating_fd, MCONSOLE_IRQ);
|
||||
block_signals();
|
||||
os_set_fd_block(req->originating_fd, 1);
|
||||
mconsole_reply(req, "stopped", 0, 0);
|
||||
for (;;) {
|
||||
@ -240,6 +240,7 @@ void mconsole_stop(struct mc_request *req)
|
||||
}
|
||||
os_set_fd_block(req->originating_fd, 0);
|
||||
mconsole_reply(req, "", 0, 0);
|
||||
unblock_signals();
|
||||
}
|
||||
|
||||
static DEFINE_SPINLOCK(mc_devices_lock);
|
||||
|
@ -460,7 +460,7 @@ static u64 pt_config_filters(struct perf_event *event)
|
||||
pt->filters.filter[range].msr_b = filter->msr_b;
|
||||
}
|
||||
|
||||
rtit_ctl |= filter->config << pt_address_ranges[range].reg_off;
|
||||
rtit_ctl |= (u64)filter->config << pt_address_ranges[range].reg_off;
|
||||
}
|
||||
|
||||
return rtit_ctl;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user