Merge 5.15.46 into android14-5.15

Changes in 5.15.46
	binfmt_flat: do not stop relocating GOT entries prematurely on riscv
	parisc/stifb: Implement fb_is_primary_device()
	parisc/stifb: Keep track of hardware path of graphics card
	RISC-V: Mark IORESOURCE_EXCLUSIVE for reserved mem instead of IORESOURCE_BUSY
	riscv: Initialize thread pointer before calling C functions
	riscv: Fix irq_work when SMP is disabled
	riscv: Wire up memfd_secret in UAPI header
	riscv: Move alternative length validation into subsection
	ALSA: hda/realtek - Add new type for ALC245
	ALSA: hda/realtek: Enable 4-speaker output for Dell XPS 15 9520 laptop
	ALSA: hda/realtek - Fix microphone noise on ASUS TUF B550M-PLUS
	ALSA: usb-audio: Cancel pending work at closing a MIDI substream
	USB: serial: pl2303: fix type detection for odd device
	USB: serial: option: add Quectel BG95 modem
	USB: new quirk for Dell Gen 2 devices
	usb: isp1760: Fix out-of-bounds array access
	usb: dwc3: gadget: Move null pinter check to proper place
	usb: core: hcd: Add support for deferring roothub registration
	fs/ntfs3: Update valid size if -EIOCBQUEUED
	fs/ntfs3: Fix fiemap + fix shrink file size (to remove preallocated space)
	fs/ntfs3: Keep preallocated only if option prealloc enabled
	fs/ntfs3: Check new size for limits
	fs/ntfs3: In function ntfs_set_acl_ex do not change inode->i_mode if called from function ntfs_init_acl
	fs/ntfs3: Fix some memory leaks in an error handling path of 'log_replay()'
	fs/ntfs3: Update i_ctime when xattr is added
	fs/ntfs3: Restore ntfs_xattr_get_acl and ntfs_xattr_set_acl functions
	cifs: fix potential double free during failed mount
	cifs: when extending a file with falloc we should make files not-sparse
	xhci: Allow host runtime PM as default for Intel Alder Lake N xHCI
	platform/x86: intel-hid: fix _DSM function index handling
	x86/MCE/AMD: Fix memory leak when threshold_create_bank() fails
	perf/x86/intel: Fix event constraints for ICL
	x86/kexec: fix memory leak of elf header buffer
	x86/sgx: Set active memcg prior to shmem allocation
	ptrace/um: Replace PT_DTRACE with TIF_SINGLESTEP
	ptrace/xtensa: Replace PT_SINGLESTEP with TIF_SINGLESTEP
	ptrace: Reimplement PTRACE_KILL by always sending SIGKILL
	btrfs: add "0x" prefix for unsupported optional features
	btrfs: return correct error number for __extent_writepage_io()
	btrfs: repair super block num_devices automatically
	btrfs: fix the error handling for submit_extent_page() for btrfs_do_readpage()
	iommu/vt-d: Add RPLS to quirk list to skip TE disabling
	drm/vmwgfx: validate the screen formats
	drm/virtio: fix NULL pointer dereference in virtio_gpu_conn_get_modes
	selftests/bpf: Fix vfs_link kprobe definition
	selftests/bpf: Fix parsing of prog types in UAPI hdr for bpftool sync
	mwifiex: add mutex lock for call in mwifiex_dfs_chan_sw_work_queue
	b43legacy: Fix assigning negative value to unsigned variable
	b43: Fix assigning negative value to unsigned variable
	ipw2x00: Fix potential NULL dereference in libipw_xmit()
	ipv6: fix locking issues with loops over idev->addr_list
	fbcon: Consistently protect deferred_takeover with console_lock()
	x86/platform/uv: Update TSC sync state for UV5
	ACPICA: Avoid cache flush inside virtual machines
	mac80211: minstrel_ht: fix where rate stats are stored (fixes debugfs output)
	drm/komeda: return early if drm_universal_plane_init() fails.
	drm/amd/display: Disabling Z10 on DCN31
	rcu-tasks: Fix race in schedule and flush work
	rcu: Make TASKS_RUDE_RCU select IRQ_WORK
	sfc: ef10: Fix assigning negative value to unsigned variable
	ALSA: jack: Access input_dev under mutex
	rtw88: 8821c: fix debugfs rssi value
	spi: spi-rspi: Remove setting {src,dst}_{addr,addr_width} based on DMA direction
	tools/power turbostat: fix ICX DRAM power numbers
	scsi: lpfc: Move cfg_log_verbose check before calling lpfc_dmp_dbg()
	scsi: lpfc: Fix SCSI I/O completion and abort handler deadlock
	scsi: lpfc: Fix call trace observed during I/O with CMF enabled
	cpuidle: PSCI: Improve support for suspend-to-RAM for PSCI OSI mode
	drm/amd/pm: fix double free in si_parse_power_table()
	ASoC: rsnd: care default case on rsnd_ssiu_busif_err_status_clear()
	ASoC: rsnd: care return value from rsnd_node_fixed_index()
	ath9k: fix QCA9561 PA bias level
	media: venus: hfi: avoid null dereference in deinit
	media: pci: cx23885: Fix the error handling in cx23885_initdev()
	media: cx25821: Fix the warning when removing the module
	md/bitmap: don't set sb values if can't pass sanity check
	mmc: jz4740: Apply DMA engine limits to maximum segment size
	drivers: mmc: sdhci_am654: Add the quirk to set TESTCD bit
	scsi: megaraid: Fix error check return value of register_chrdev()
	drm/amdgpu/sdma: Fix incorrect calculations of the wptr of the doorbells
	scsi: ufs: Use pm_runtime_resume_and_get() instead of pm_runtime_get_sync()
	scsi: lpfc: Fix resource leak in lpfc_sli4_send_seq_to_ulp()
	ath11k: disable spectral scan during spectral deinit
	ASoC: Intel: bytcr_rt5640: Add quirk for the HP Pro Tablet 408
	drm/plane: Move range check for format_count earlier
	drm/amd/pm: fix the compile warning
	ath10k: skip ath10k_halt during suspend for driver state RESTARTING
	arm64: compat: Do not treat syscall number as ESR_ELx for a bad syscall
	drm: msm: fix error check return value of irq_of_parse_and_map()
	scsi: target: tcmu: Fix possible data corruption
	ipv6: Don't send rs packets to the interface of ARPHRD_TUNNEL
	net/mlx5: fs, delete the FTE when there are no rules attached to it
	ASoC: dapm: Don't fold register value changes into notifications
	mlxsw: spectrum_dcb: Do not warn about priority changes
	mlxsw: Treat LLDP packets as control
	drm/amdgpu/psp: move PSP memory alloc from hw_init to sw_init
	drm/amdgpu/ucode: Remove firmware load type check in amdgpu_ucode_free_bo
	regulator: mt6315: Enforce regulator-compatible, not name
	HID: bigben: fix slab-out-of-bounds Write in bigben_probe
	of: Support more than one crash kernel regions for kexec -s
	ASoC: tscs454: Add endianness flag in snd_soc_component_driver
	scsi: lpfc: Alter FPIN stat accounting logic
	net: remove two BUG() from skb_checksum_help()
	s390/preempt: disable __preempt_count_add() optimization for PROFILE_ALL_BRANCHES
	perf/amd/ibs: Cascade pmu init functions' return value
	sched/core: Avoid obvious double update_rq_clock warning
	spi: stm32-qspi: Fix wait_cmd timeout in APM mode
	dma-debug: change allocation mode from GFP_NOWAIT to GFP_ATIOMIC
	ACPI: PM: Block ASUS B1400CEAE from suspend to idle by default
	ipmi:ssif: Check for NULL msg when handling events and messages
	ipmi: Fix pr_fmt to avoid compilation issues
	rtlwifi: Use pr_warn instead of WARN_ONCE
	mt76: mt7921: accept rx frames with non-standard VHT MCS10-11
	mt76: fix encap offload ethernet type check
	media: rga: fix possible memory leak in rga_probe
	media: coda: limit frame interval enumeration to supported encoder frame sizes
	media: hantro: HEVC: unconditionnaly set pps_{cb/cr}_qp_offset values
	media: ccs-core.c: fix failure to call clk_disable_unprepare
	media: imon: reorganize serialization
	media: cec-adap.c: fix is_configuring state
	usbnet: Run unregister_netdev() before unbind() again
	openrisc: start CPU timer early in boot
	nvme-pci: fix a NULL pointer dereference in nvme_alloc_admin_tags
	ASoC: rt5645: Fix errorenous cleanup order
	nbd: Fix hung on disconnect request if socket is closed before
	drm/amd/pm: update smartshift powerboost calc for smu12
	drm/amd/pm: update smartshift powerboost calc for smu13
	net: phy: micrel: Allow probing without .driver_data
	media: exynos4-is: Fix compile warning
	media: hantro: Stop using H.264 parameter pic_num
	ASoC: max98357a: remove dependency on GPIOLIB
	ASoC: rt1015p: remove dependency on GPIOLIB
	ACPI: CPPC: Assume no transition latency if no PCCT
	nvme: set non-mdts limits in nvme_scan_work
	can: mcp251xfd: silence clang's -Wunaligned-access warning
	x86/microcode: Add explicit CPU vendor dependency
	net: ipa: ignore endianness if there is no header
	m68k: atari: Make Atari ROM port I/O write macros return void
	rxrpc: Return an error to sendmsg if call failed
	rxrpc, afs: Fix selection of abort codes
	afs: Adjust ACK interpretation to try and cope with NAT
	eth: tg3: silence the GCC 12 array-bounds warning
	char: tpm: cr50_i2c: Suppress duplicated error message in .remove()
	selftests/bpf: fix btf_dump/btf_dump due to recent clang change
	gfs2: use i_lock spin_lock for inode qadata
	scsi: target: tcmu: Avoid holding XArray lock when calling lock_page
	IB/rdmavt: add missing locks in rvt_ruc_loopback
	ARM: dts: ox820: align interrupt controller node name with dtschema
	ARM: dts: socfpga: align interrupt controller node name with dtschema
	ARM: dts: s5pv210: align DMA channels with dtschema
	arm64: dts: qcom: msm8994: Fix the cont_splash_mem address
	arm64: dts: qcom: msm8994: Fix BLSP[12]_DMA channels count
	PM / devfreq: rk3399_dmc: Disable edev on remove()
	crypto: ccree - use fine grained DMA mapping dir
	soc: ti: ti_sci_pm_domains: Check for null return of devm_kcalloc
	fs: jfs: fix possible NULL pointer dereference in dbFree()
	arm64: dts: qcom: sdm845-xiaomi-beryllium: fix typo in panel's vddio-supply property
	ALSA: usb-audio: Add quirk bits for enabling/disabling generic implicit fb
	ALSA: usb-audio: Move generic implicit fb quirk entries into quirks.c
	ARM: OMAP1: clock: Fix UART rate reporting algorithm
	powerpc/fadump: Fix fadump to work with a different endian capture kernel
	fat: add ratelimit to fat*_ent_bread()
	pinctrl: renesas: rzn1: Fix possible null-ptr-deref in sh_pfc_map_resources()
	ARM: versatile: Add missing of_node_put in dcscb_init
	ARM: dts: exynos: add atmel,24c128 fallback to Samsung EEPROM
	ARM: hisi: Add missing of_node_put after of_find_compatible_node
	cpufreq: Avoid unnecessary frequency updates due to mismatch
	powerpc/rtas: Keep MSR[RI] set when calling RTAS
	PCI: Avoid pci_dev_lock() AB/BA deadlock with sriov_numvfs_store()
	KVM: PPC: Book3S HV Nested: L2 LPCR should inherit L1 LPES setting
	alpha: fix alloc_zeroed_user_highpage_movable()
	tracing: incorrect isolate_mote_t cast in mm_vmscan_lru_isolate
	powerpc/powernv/vas: Assign real address to rx_fifo in vas_rx_win_attr
	powerpc/xics: fix refcount leak in icp_opal_init()
	powerpc/powernv: fix missing of_node_put in uv_init()
	macintosh/via-pmu: Fix build failure when CONFIG_INPUT is disabled
	powerpc/iommu: Add missing of_node_put in iommu_init_early_dart
	smb3: check for null tcon
	RDMA/hfi1: Prevent panic when SDMA is disabled
	Input: gpio-keys - cancel delayed work only in case of GPIO
	drm: fix EDID struct for old ARM OABI format
	drm/bridge_connector: enable HPD by default if supported
	dt-bindings: display: sitronix, st7735r: Fix backlight in example
	drm/vmwgfx: Fix an invalid read
	ath11k: acquire ab->base_lock in unassign when finding the peer by addr
	drm: bridge: it66121: Fix the register page length
	ath9k: fix ar9003_get_eepmisc
	drm/edid: fix invalid EDID extension block filtering
	drm/bridge: adv7511: clean up CEC adapter when probe fails
	drm: bridge: icn6211: Fix register layout
	drm: bridge: icn6211: Fix HFP_HSW_HBP_HI and HFP_MIN handling
	mtd: spinand: gigadevice: fix Quad IO for GD5F1GQ5UExxG
	spi: qcom-qspi: Add minItems to interconnect-names
	ASoC: mediatek: Fix error handling in mt8173_max98090_dev_probe
	ASoC: mediatek: Fix missing of_node_put in mt2701_wm8960_machine_probe
	x86/delay: Fix the wrong asm constraint in delay_loop()
	drm/vc4: hvs: Fix frame count register readout
	drm/mediatek: Fix mtk_cec_mask()
	drm/vc4: hvs: Reset muxes at probe time
	drm/vc4: txp: Don't set TXP_VSTART_AT_EOF
	drm/vc4: txp: Force alpha to be 0xff if it's disabled
	libbpf: Don't error out on CO-RE relos for overriden weak subprogs
	x86/PCI: Fix ALi M1487 (IBC) PIRQ router link value interpretation
	mptcp: reset the packet scheduler on PRIO change
	nl80211: show SSID for P2P_GO interfaces
	drm/komeda: Fix an undefined behavior bug in komeda_plane_add()
	drm: mali-dp: potential dereference of null pointer
	spi: spi-ti-qspi: Fix return value handling of wait_for_completion_timeout
	scftorture: Fix distribution of short handler delays
	net: dsa: mt7530: 1G can also support 1000BASE-X link mode
	ixp4xx_eth: fix error check return value of platform_get_irq()
	NFC: NULL out the dev->rfkill to prevent UAF
	efi: Add missing prototype for efi_capsule_setup_info
	device property: Check fwnode->secondary when finding properties
	device property: Allow error pointer to be passed to fwnode APIs
	target: remove an incorrect unmap zeroes data deduction
	drbd: fix duplicate array initializer
	EDAC/dmc520: Don't print an error for each unconfigured interrupt line
	mtd: rawnand: denali: Use managed device resources
	HID: hid-led: fix maximum brightness for Dream Cheeky
	HID: elan: Fix potential double free in elan_input_configured
	drm/bridge: Fix error handling in analogix_dp_probe
	regulator: da9121: Fix uninit-value in da9121_assign_chip_model()
	drm/mediatek: dpi: Use mt8183 output formats for mt8192
	signal: Deliver SIGTRAP on perf event asynchronously if blocked
	sched/fair: Fix cfs_rq_clock_pelt() for throttled cfs_rq
	sched/psi: report zeroes for CPU full at the system level
	spi: img-spfi: Fix pm_runtime_get_sync() error checking
	cpufreq: Fix possible race in cpufreq online error path
	printk: use atomic updates for klogd work
	printk: add missing memory barrier to wake_up_klogd()
	printk: wake waiters for safe and NMI contexts
	ath9k_htc: fix potential out of bounds access with invalid rxstatus->rs_keyix
	media: i2c: max9286: Use dev_err_probe() helper
	media: i2c: max9286: Use "maxim,gpio-poc" property
	media: i2c: max9286: fix kernel oops when removing module
	media: hantro: Empty encoder capture buffers by default
	drm/panel: simple: Add missing bus flags for Innolux G070Y2-L01
	ALSA: pcm: Check for null pointer of pointer substream before dereferencing it
	mtdblock: warn if opened on NAND
	inotify: show inotify mask flags in proc fdinfo
	fsnotify: fix wrong lockdep annotations
	spi: rockchip: Stop spi slave dma receiver when cs inactive
	spi: rockchip: Preset cs-high and clk polarity in setup progress
	spi: rockchip: fix missing error on unsupported SPI_CS_HIGH
	of: overlay: do not break notify on NOTIFY_{OK|STOP}
	selftests/damon: add damon to selftests root Makefile
	drm/msm/dp: Modify prototype of encoder based API
	drm/msm/hdmi: switch to drm_bridge_connector
	drm/msm/dpu: adjust display_v_end for eDP and DP
	scsi: iscsi: Fix harmless double shift bug
	scsi: ufs: qcom: Fix ufs_qcom_resume()
	scsi: ufs: core: Exclude UECxx from SFR dump list
	drm/v3d: Fix null pointer dereference of pointer perfmon
	selftests/resctrl: Fix null pointer dereference on open failed
	libbpf: Fix logic for finding matching program for CO-RE relocation
	mtd: spi-nor: core: Check written SR value in spi_nor_write_16bit_sr_and_check()
	x86/pm: Fix false positive kmemleak report in msr_build_context()
	mtd: rawnand: cadence: fix possible null-ptr-deref in cadence_nand_dt_probe()
	mtd: rawnand: intel: fix possible null-ptr-deref in ebu_nand_probe()
	x86/speculation: Add missing prototype for unpriv_ebpf_notify()
	ASoC: rk3328: fix disabling mclk on pclk probe failure
	perf tools: Add missing headers needed by util/data.h
	drm/msm/disp/dpu1: set vbif hw config to NULL to avoid use after memory free during pm runtime resume
	drm/msm/dp: stop event kernel thread when DP unbind
	drm/msm/dp: fix error check return value of irq_of_parse_and_map()
	drm/msm/dp: reset DP controller before transmit phy test pattern
	drm/msm/dp: do not stop transmitting phy test pattern during DP phy compliance test
	drm/msm/dsi: fix error checks and return values for DSI xmit functions
	drm/msm/hdmi: check return value after calling platform_get_resource_byname()
	drm/msm/hdmi: fix error check return value of irq_of_parse_and_map()
	drm/msm: add missing include to msm_drv.c
	drm/panel: panel-simple: Fix proper bpc for AM-1280800N3TZQW-T00H
	kunit: fix debugfs code to use enum kunit_status, not bool
	drm/rockchip: vop: fix possible null-ptr-deref in vop_bind()
	spi: cadence-quadspi: fix Direct Access Mode disable for SoCFPGA
	perf tools: Use Python devtools for version autodetection rather than runtime
	virtio_blk: fix the discard_granularity and discard_alignment queue limits
	nl80211: don't hold RTNL in color change request
	x86: Fix return value of __setup handlers
	irqchip/exiu: Fix acknowledgment of edge triggered interrupts
	irqchip/aspeed-i2c-ic: Fix irq_of_parse_and_map() return value
	irqchip/aspeed-scu-ic: Fix irq_of_parse_and_map() return value
	x86/mm: Cleanup the control_va_addr_alignment() __setup handler
	arm64: fix types in copy_highpage()
	regulator: core: Fix enable_count imbalance with EXCLUSIVE_GET
	drm/msm/dsi: fix address for second DSI PHY on SDM660
	drm/msm/dp: fix event thread stuck in wait_event after kthread_stop()
	drm/msm/mdp5: Return error code in mdp5_pipe_release when deadlock is detected
	drm/msm/mdp5: Return error code in mdp5_mixer_release when deadlock is detected
	drm/msm: return an error pointer in msm_gem_prime_get_sg_table()
	media: uvcvideo: Fix missing check to determine if element is found in list
	arm64: stackleak: fix current_top_of_stack()
	iomap: iomap_write_failed fix
	spi: spi-fsl-qspi: check return value after calling platform_get_resource_byname()
	Revert "cpufreq: Fix possible race in cpufreq online error path"
	regulator: qcom_smd: Fix up PM8950 regulator configuration
	samples: bpf: Don't fail for a missing VMLINUX_BTF when VMLINUX_H is provided
	perf/amd/ibs: Use interrupt regs ip for stack unwinding
	ath11k: Don't check arvif->is_started before sending management frames
	wilc1000: fix crash observed in AP mode with cfg80211_register_netdevice()
	HID: amd_sfh: Modify the bus name
	HID: amd_sfh: Modify the hid name
	ASoC: fsl: Use dev_err_probe() helper
	ASoC: fsl: Fix refcount leak in imx_sgtl5000_probe
	ASoC: imx-hdmi: Fix refcount leak in imx_hdmi_probe
	ASoC: mxs-saif: Fix refcount leak in mxs_saif_probe
	regulator: pfuze100: Fix refcount leak in pfuze_parse_regulators_dt
	dma-direct: factor out a helper for DMA_ATTR_NO_KERNEL_MAPPING allocations
	dma-direct: don't fail on highmem CMA pages in dma_direct_alloc_pages
	ASoC: samsung: Use dev_err_probe() helper
	ASoC: samsung: Fix refcount leak in aries_audio_probe
	block: Fix the bio.bi_opf comment
	kselftest/cgroup: fix test_stress.sh to use OUTPUT dir
	scripts/faddr2line: Fix overlapping text section failures
	media: aspeed: Fix an error handling path in aspeed_video_probe()
	media: exynos4-is: Fix PM disable depth imbalance in fimc_is_probe
	mt76: mt7921: Fix the error handling path of mt7921_pci_probe()
	mt76: do not attempt to reorder received 802.3 packets without agg session
	media: st-delta: Fix PM disable depth imbalance in delta_probe
	media: atmel: atmel-isc: Fix PM disable depth imbalance in atmel_isc_probe
	media: i2c: rdacm2x: properly set subdev entity function
	media: exynos4-is: Change clk_disable to clk_disable_unprepare
	media: pvrusb2: fix array-index-out-of-bounds in pvr2_i2c_core_init
	media: vsp1: Fix offset calculation for plane cropping
	media: atmel: atmel-sama5d2-isc: fix wrong mask in YUYV format check
	media: hantro: HEVC: Fix tile info buffer value computation
	Bluetooth: fix dangling sco_conn and use-after-free in sco_sock_timeout
	Bluetooth: use hdev lock in activate_scan for hci_is_adv_monitoring
	Bluetooth: use hdev lock for accept_list and reject_list in conn req
	nvme: set dma alignment to dword
	m68k: math-emu: Fix dependencies of math emulation support
	sctp: read sk->sk_bound_dev_if once in sctp_rcv()
	net: hinic: add missing destroy_workqueue in hinic_pf_to_mgmt_init
	ASoC: ti: j721e-evm: Fix refcount leak in j721e_soc_probe_*
	kselftest/arm64: bti: force static linking
	media: ov7670: remove ov7670_power_off from ov7670_remove
	media: i2c: ov5648: fix wrong pointer passed to IS_ERR() and PTR_ERR()
	media: staging: media: rkvdec: Make use of the helper function devm_platform_ioremap_resource()
	media: rkvdec: h264: Fix dpb_valid implementation
	media: rkvdec: h264: Fix bit depth wrap in pps packet
	regulator: scmi: Fix refcount leak in scmi_regulator_probe
	ext4: reject the 'commit' option on ext2 filesystems
	drm/msm/a6xx: Fix refcount leak in a6xx_gpu_init
	drm: msm: fix possible memory leak in mdp5_crtc_cursor_set()
	x86/sev: Annotate stack change in the #VC handler
	drm/msm: don't free the IRQ if it was not requested
	selftests/bpf: Add missed ima_setup.sh in Makefile
	drm/msm/dpu: handle pm_runtime_get_sync() errors in bind path
	drm/i915: Fix CFI violation with show_dynamic_id()
	thermal/drivers/bcm2711: Don't clamp temperature at zero
	thermal/drivers/broadcom: Fix potential NULL dereference in sr_thermal_probe
	thermal/core: Fix memory leak in __thermal_cooling_device_register()
	thermal/drivers/imx_sc_thermal: Fix refcount leak in imx_sc_thermal_probe
	bfq: Relax waker detection for shared queues
	bfq: Allow current waker to defend against a tentative one
	ASoC: wm2000: fix missing clk_disable_unprepare() on error in wm2000_anc_transition()
	PM: domains: Fix initialization of genpd's next_wakeup
	net: macb: Fix PTP one step sync support
	NFC: hci: fix sleep in atomic context bugs in nfc_hci_hcp_message_tx
	ASoC: max98090: Move check for invalid values before casting in max98090_put_enab_tlv()
	net: stmmac: selftests: Use kcalloc() instead of kzalloc()
	net: stmmac: fix out-of-bounds access in a selftest
	hv_netvsc: Fix potential dereference of NULL pointer
	hwmon: (pmbus) Check PEC support before reading other registers
	rxrpc: Fix listen() setting the bar too high for the prealloc rings
	rxrpc: Don't try to resend the request if we're receiving the reply
	rxrpc: Fix overlapping ACK accounting
	rxrpc: Don't let ack.previousPacket regress
	rxrpc: Fix decision on when to generate an IDLE ACK
	net: huawei: hinic: Use devm_kcalloc() instead of devm_kzalloc()
	hinic: Avoid some over memory allocation
	net: dsa: restrict SMSC_LAN9303_I2C kconfig
	net/smc: postpone sk_refcnt increment in connect()
	dma-direct: factor out dma_set_{de,en}crypted helpers
	dma-direct: don't call dma_set_decrypted for remapped allocations
	dma-direct: always leak memory that can't be re-encrypted
	dma-direct: don't over-decrypt memory
	arm64: dts: rockchip: Move drive-impedance-ohm to emmc phy on rk3399
	arm64: dts: mt8192: Fix nor_flash status disable typo
	PCI/ACPI: Allow D3 only if Root Port can signal and wake from D3
	memory: samsung: exynos5422-dmc: Avoid some over memory allocation
	ARM: dts: BCM5301X: update CRU block description
	ARM: dts: BCM5301X: Update pin controller node name
	ARM: dts: suniv: F1C100: fix watchdog compatible
	soc: qcom: smp2p: Fix missing of_node_put() in smp2p_parse_ipc
	soc: qcom: smsm: Fix missing of_node_put() in smsm_parse_ipc
	PCI: cadence: Fix find_first_zero_bit() limit
	PCI: rockchip: Fix find_first_zero_bit() limit
	PCI: mediatek: Fix refcount leak in mtk_pcie_subsys_powerup()
	PCI: dwc: Fix setting error return on MSI DMA mapping failure
	ARM: dts: ci4x10: Adapt to changes in imx6qdl.dtsi regarding fec clocks
	soc: qcom: llcc: Add MODULE_DEVICE_TABLE()
	KVM: nVMX: Leave most VM-Exit info fields unmodified on failed VM-Entry
	KVM: nVMX: Clear IDT vectoring on nested VM-Exit for double/triple fault
	crypto: qat - set CIPHER capability for QAT GEN2
	crypto: qat - set COMPRESSION capability for QAT GEN2
	crypto: qat - set CIPHER capability for DH895XCC
	crypto: qat - set COMPRESSION capability for DH895XCC
	platform/chrome: cros_ec: fix error handling in cros_ec_register()
	ARM: dts: imx6dl-colibri: Fix I2C pinmuxing
	platform/chrome: Re-introduce cros_ec_cmd_xfer and use it for ioctls
	can: xilinx_can: mark bit timing constants as const
	ARM: dts: stm32: Fix PHY post-reset delay on Avenger96
	ARM: dts: bcm2835-rpi-zero-w: Fix GPIO line name for Wifi/BT
	ARM: dts: bcm2837-rpi-cm3-io3: Fix GPIO line names for SMPS I2C
	ARM: dts: bcm2837-rpi-3-b-plus: Fix GPIO line name of power LED
	ARM: dts: bcm2835-rpi-b: Fix GPIO line names
	misc: ocxl: fix possible double free in ocxl_file_register_afu
	crypto: marvell/cesa - ECB does not IV
	gpiolib: of: Introduce hook for missing gpio-ranges
	pinctrl: bcm2835: implement hook for missing gpio-ranges
	arm: mediatek: select arch timer for mt7629
	pinctrl/rockchip: support deferring other gpio params
	pinctrl: mediatek: mt8195: enable driver on mtk platforms
	arm64: dts: qcom: qrb5165-rb5: Fix can-clock node name
	Drivers: hv: vmbus: Fix handling of messages with transaction ID of zero
	powerpc/fadump: fix PT_LOAD segment for boot memory area
	mfd: ipaq-micro: Fix error check return value of platform_get_irq()
	scsi: fcoe: Fix Wstringop-overflow warnings in fcoe_wwn_from_mac()
	soc: bcm: Check for NULL return of devm_kzalloc()
	arm64: dts: ti: k3-am64-mcu: remove incorrect UART base clock rates
	ASoC: sh: rz-ssi: Check return value of pm_runtime_resume_and_get()
	ASoC: sh: rz-ssi: Propagate error codes returned from platform_get_irq_byname()
	ASoC: sh: rz-ssi: Release the DMA channels in rz_ssi_probe() error path
	firmware: arm_scmi: Fix list protocols enumeration in the base protocol
	nvdimm: Fix firmware activation deadlock scenarios
	nvdimm: Allow overwrite in the presence of disabled dimms
	pinctrl: mvebu: Fix irq_of_parse_and_map() return value
	drivers/base/node.c: fix compaction sysfs file leak
	dax: fix cache flush on PMD-mapped pages
	drivers/base/memory: fix an unlikely reference counting issue in __add_memory_block()
	firmware: arm_ffa: Fix uuid parameter to ffa_partition_probe
	firmware: arm_ffa: Remove incorrect assignment of driver_data
	list: introduce list_is_head() helper and re-use it in list.h
	list: fix a data-race around ep->rdllist
	drm/msm/dpu: fix error check return value of irq_of_parse_and_map()
	powerpc/8xx: export 'cpm_setbrg' for modules
	pinctrl: renesas: r8a779a0: Fix GPIO function on I2C-capable pins
	pinctrl: renesas: core: Fix possible null-ptr-deref in sh_pfc_map_resources()
	powerpc/idle: Fix return value of __setup() handler
	powerpc/4xx/cpm: Fix return value of __setup() handler
	RDMA/hns: Add the detection for CMDQ status in the device initialization process
	arm64: dts: marvell: espressobin-ultra: fix SPI-NOR config
	arm64: dts: marvell: espressobin-ultra: enable front USB3 port
	ASoC: atmel-pdmic: Remove endianness flag on pdmic component
	ASoC: atmel-classd: Remove endianness flag on class d component
	proc: fix dentry/inode overinstantiating under /proc/${pid}/net
	ipc/mqueue: use get_tree_nodev() in mqueue_get_tree()
	PCI: imx6: Fix PERST# start-up sequence
	tty: fix deadlock caused by calling printk() under tty_port->lock
	crypto: sun8i-ss - rework handling of IV
	crypto: sun8i-ss - handle zero sized sg
	crypto: cryptd - Protect per-CPU resource by disabling BH.
	ARM: dts: at91: sama7g5: remove interrupt-parent from gic node
	hugetlbfs: fix hugetlbfs_statfs() locking
	Input: sparcspkr - fix refcount leak in bbc_beep_probe
	PCI/AER: Clear MULTI_ERR_COR/UNCOR_RCV bits
	PCI: microchip: Fix potential race in interrupt handling
	hwrng: omap3-rom - fix using wrong clk_disable() in omap_rom_rng_runtime_resume()
	powerpc/64: Only WARN if __pa()/__va() called with bad addresses
	powerpc/perf: Fix the threshold compare group constraint for power10
	powerpc/perf: Fix the threshold compare group constraint for power9
	macintosh: via-pmu and via-cuda need RTC_LIB
	powerpc/xive: Add some error handling code to 'xive_spapr_init()'
	powerpc/xive: Fix refcount leak in xive_spapr_init
	powerpc/fsl_rio: Fix refcount leak in fsl_rio_setup
	mfd: davinci_voicecodec: Fix possible null-ptr-deref davinci_vc_probe()
	nfsd: destroy percpu stats counters after reply cache shutdown
	mailbox: forward the hrtimer if not queued and under a lock
	RDMA/hfi1: Prevent use of lock before it is initialized
	KVM: LAPIC: Drop pending LAPIC timer injection when canceling the timer
	Input: stmfts - do not leave device disabled in stmfts_input_open
	OPP: call of_node_put() on error path in _bandwidth_supported()
	f2fs: support fault injection for dquot_initialize()
	f2fs: fix to do sanity check on inline_dots inode
	f2fs: fix dereference of stale list iterator after loop body
	iommu/amd: Enable swiotlb in all cases
	iommu/mediatek: Fix 2 HW sharing pgtable issue
	iommu/mediatek: Add list_del in mtk_iommu_remove
	iommu/mediatek: Remove clk_disable in mtk_iommu_remove
	iommu/mediatek: Add mutex for m4u_group and m4u_dom in data
	i2c: at91: use dma safe buffers
	cpufreq: mediatek: Use module_init and add module_exit
	cpufreq: mediatek: Unregister platform device on exit
	iommu/arm-smmu-v3-sva: Fix mm use-after-free
	MIPS: Loongson: Use hwmon_device_register_with_groups() to register hwmon
	iommu/mediatek: Fix NULL pointer dereference when printing dev_name
	i2c: at91: Initialize dma_buf in at91_twi_xfer()
	dmaengine: idxd: Fix the error handling path in idxd_cdev_register()
	NFS: Do not report EINTR/ERESTARTSYS as mapping errors
	NFS: fsync() should report filesystem errors over EINTR/ERESTARTSYS
	NFS: Don't report ENOSPC write errors twice
	NFS: Do not report flush errors in nfs_write_end()
	NFS: Don't report errors from nfs_pageio_complete() more than once
	NFSv4/pNFS: Do not fail I/O when we fail to allocate the pNFS layout
	NFS: Further fixes to the writeback error handling
	video: fbdev: clcdfb: Fix refcount leak in clcdfb_of_vram_setup
	dmaengine: stm32-mdma: remove GISR1 register
	dmaengine: stm32-mdma: fix chan initialization in stm32_mdma_irq_handler()
	iommu/amd: Increase timeout waiting for GA log enablement
	i2c: npcm: Fix timeout calculation
	i2c: npcm: Correct register access width
	i2c: npcm: Handle spurious interrupts
	i2c: rcar: fix PM ref counts in probe error paths
	perf build: Fix btf__load_from_kernel_by_id() feature check
	perf c2c: Use stdio interface if slang is not supported
	perf jevents: Fix event syntax error caused by ExtSel
	video: fbdev: vesafb: Fix a use-after-free due early fb_info cleanup
	NFS: Always initialise fattr->label in nfs_fattr_alloc()
	NFS: Create a new nfs_alloc_fattr_with_label() function
	NFS: Convert GFP_NOFS to GFP_KERNEL
	NFSv4.1 mark qualified async operations as MOVEABLE tasks
	f2fs: fix to avoid f2fs_bug_on() in dec_valid_node_count()
	f2fs: fix to do sanity check on block address in f2fs_do_zero_range()
	f2fs: fix to clear dirty inode in f2fs_evict_inode()
	f2fs: fix deadloop in foreground GC
	f2fs: don't need inode lock for system hidden quota
	f2fs: fix to do sanity check on total_data_blocks
	f2fs: don't use casefolded comparison for "." and ".."
	f2fs: fix fallocate to use file_modified to update permissions consistently
	f2fs: fix to do sanity check for inline inode
	objtool: Fix objtool regression on x32 systems
	objtool: Fix symbol creation
	wifi: mac80211: fix use-after-free in chanctx code
	iwlwifi: mvm: fix assert 1F04 upon reconfig
	fs-writeback: writeback_sb_inodes:Recalculate 'wrote' according skipped pages
	efi: Do not import certificates from UEFI Secure Boot for T2 Macs
	bfq: Avoid false marking of bic as stably merged
	bfq: Avoid merging queues with different parents
	bfq: Split shared queues on move between cgroups
	bfq: Update cgroup information before merging bio
	bfq: Drop pointless unlock-lock pair
	bfq: Remove pointless bfq_init_rq() calls
	bfq: Track whether bfq_group is still online
	bfq: Get rid of __bio_blkcg() usage
	bfq: Make sure bfqg for which we are queueing requests is online
	ext4: mark group as trimmed only if it was fully scanned
	ext4: fix use-after-free in ext4_rename_dir_prepare
	ext4: fix race condition between ext4_write and ext4_convert_inline_data
	ext4: fix warning in ext4_handle_inode_extension
	ext4: fix bug_on in ext4_writepages
	ext4: filter out EXT4_FC_REPLAY from on-disk superblock field s_state
	ext4: fix bug_on in __es_tree_search
	ext4: verify dir block before splitting it
	ext4: avoid cycles in directory h-tree
	ACPI: property: Release subnode properties with data nodes
	tty: goldfish: Introduce gf_ioread32()/gf_iowrite32()
	tracing: Fix potential double free in create_var_ref()
	tracing: Initialize integer variable to prevent garbage return value
	drm/amdgpu: add beige goby PCI ID
	PCI/PM: Fix bridge_d3_blacklist[] Elo i2 overwrite of Gigabyte X299
	PCI: qcom: Fix runtime PM imbalance on probe errors
	PCI: qcom: Fix unbalanced PHY init on probe errors
	staging: r8188eu: prevent ->Ssid overflow in rtw_wx_set_scan()
	mm, compaction: fast_find_migrateblock() should return pfn in the target zone
	s390/perf: obtain sie_block from the right address
	s390/stp: clock_delta should be signed
	dlm: fix plock invalid read
	dlm: uninitialized variable on error in dlm_listen_for_all()
	dlm: fix missing lkb refcount handling
	ocfs2: dlmfs: fix error handling of user_dlm_destroy_lock
	scsi: dc395x: Fix a missing check on list iterator
	scsi: ufs: qcom: Add a readl() to make sure ref_clk gets enabled
	landlock: Add clang-format exceptions
	landlock: Format with clang-format
	selftests/landlock: Add clang-format exceptions
	selftests/landlock: Normalize array assignment
	selftests/landlock: Format with clang-format
	samples/landlock: Add clang-format exceptions
	samples/landlock: Format with clang-format
	landlock: Fix landlock_add_rule(2) documentation
	selftests/landlock: Make tests build with old libc
	selftests/landlock: Extend tests for minimal valid attribute size
	selftests/landlock: Add tests for unknown access rights
	selftests/landlock: Extend access right tests to directories
	selftests/landlock: Fully test file rename with "remove" access
	selftests/landlock: Add tests for O_PATH
	landlock: Change landlock_add_rule(2) argument check ordering
	landlock: Change landlock_restrict_self(2) check ordering
	selftests/landlock: Test landlock_create_ruleset(2) argument check ordering
	landlock: Define access_mask_t to enforce a consistent access mask size
	landlock: Reduce the maximum number of layers to 16
	landlock: Create find_rule() from unmask_layers()
	landlock: Fix same-layer rule unions
	drm/amdgpu/cs: make commands with 0 chunks illegal behaviour.
	drm/nouveau/subdev/bus: Ratelimit logging for fault errors
	drm/etnaviv: check for reaped mapping in etnaviv_iommu_unmap_gem
	drm/nouveau/clk: Fix an incorrect NULL check on list iterator
	drm/nouveau/kms/nv50-: atom: fix an incorrect NULL check on list iterator
	drm/bridge: analogix_dp: Grab runtime PM reference for DP-AUX
	drm/i915/dsi: fix VBT send packet port selection for ICL+
	md: fix an incorrect NULL check in does_sb_need_changing
	md: fix an incorrect NULL check in md_reload_sb
	mtd: cfi_cmdset_0002: Move and rename chip_check/chip_ready/chip_good_for_write
	mtd: cfi_cmdset_0002: Use chip_ready() for write on S29GL064N
	media: coda: Fix reported H264 profile
	media: coda: Add more H264 levels for CODA960
	ima: remove the IMA_TEMPLATE Kconfig option
	Kconfig: Add option for asm goto w/ tied outputs to workaround clang-13 bug
	RDMA/hfi1: Fix potential integer multiplication overflow errors
	mmc: core: Allows to override the timeout value for ioctl() path
	csky: patch_text: Fixup last cpu should be master
	irqchip/armada-370-xp: Do not touch Performance Counter Overflow on A375, A38x, A39x
	irqchip: irq-xtensa-mx: fix initial IRQ affinity
	thermal: devfreq_cooling: use local ops instead of global ops
	cfg80211: declare MODULE_FIRMWARE for regulatory.db
	mac80211: upgrade passive scan to active scan on DFS channels after beacon rx
	um: Use asm-generic/dma-mapping.h
	um: chan_user: Fix winch_tramp() return value
	um: Fix out-of-bounds read in LDT setup
	kexec_file: drop weak attribute from arch_kexec_apply_relocations[_add]
	ftrace: Clean up hash direct_functions on register failures
	ksmbd: fix outstanding credits related bugs
	iommu/msm: Fix an incorrect NULL check on list iterator
	iommu/dma: Fix iova map result check bug
	Revert "mm/cma.c: remove redundant cma_mutex lock"
	mm/page_alloc: always attempt to allocate at least one page during bulk allocation
	nodemask.h: fix compilation error with GCC12
	hugetlb: fix huge_pmd_unshare address update
	mm/memremap: fix missing call to untrack_pfn() in pagemap_range()
	xtensa/simdisk: fix proc_read_simdisk()
	rtl818x: Prevent using not initialized queues
	ASoC: rt5514: Fix event generation for "DSP Voice Wake Up" control
	carl9170: tx: fix an incorrect use of list iterator
	stm: ltdc: fix two incorrect NULL checks on list iterator
	bcache: improve multithreaded bch_btree_check()
	bcache: improve multithreaded bch_sectors_dirty_init()
	bcache: remove incremental dirty sector counting for bch_sectors_dirty_init()
	bcache: avoid journal no-space deadlock by reserving 1 journal bucket
	serial: pch: don't overwrite xmit->buf[0] by x_char
	tilcdc: tilcdc_external: fix an incorrect NULL check on list iterator
	gma500: fix an incorrect NULL check on list iterator
	arm64: dts: qcom: ipq8074: fix the sleep clock frequency
	arm64: tegra: Add missing DFLL reset on Tegra210
	clk: tegra: Add missing reset deassertion
	phy: qcom-qmp: fix struct clk leak on probe errors
	ARM: dts: s5pv210: Remove spi-cs-high on panel in Aries
	ARM: pxa: maybe fix gpio lookup tables
	SMB3: EBADF/EIO errors in rename/open caused by race condition in smb2_compound_op
	docs/conf.py: Cope with removal of language=None in Sphinx 5.0.0
	dt-bindings: gpio: altera: correct interrupt-cells
	vdpasim: allow to enable a vq repeatedly
	blk-iolatency: Fix inflight count imbalances and IO hangs on offline
	coresight: core: Fix coresight device probe failure issue
	phy: qcom-qmp: fix reset-controller leak on probe errors
	net: ipa: fix page free in ipa_endpoint_trans_release()
	net: ipa: fix page free in ipa_endpoint_replenish_one()
	kseltest/cgroup: Make test_stress.sh work if run interactively
	list: test: Add a test for list_is_head()
	Revert "random: use static branch for crng_ready()"
	staging: r8188eu: delete rtw_wx_read/write32()
	RDMA/hns: Remove the num_cqc_timer variable
	RDMA/rxe: Generate a completion for unsupported/invalid opcode
	MIPS: IP27: Remove incorrect `cpu_has_fpu' override
	MIPS: IP30: Remove incorrect `cpu_has_fpu' override
	ext4: only allow test_dummy_encryption when supported
	interconnect: qcom: sc7180: Drop IP0 interconnects
	interconnect: qcom: icc-rpmh: Add BCMs to commit list in pre_aggregate
	fs: add two trivial lookup helpers
	exportfs: support idmapped mounts
	fs/ntfs3: Fix invalid free in log_replay
	md: Don't set mddev private to NULL in raid0 pers->free
	md: fix double free of io_acct_set bioset
	md: bcache: check the return value of kzalloc() in detached_dev_do_request()
	pinctrl/rockchip: support setting input-enable param
	block: fix bio_clone_blkg_association() to associate with proper blkcg_gq
	Linux 5.15.46

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I7b65df29c22a01b81a94cd844867a18e73098a15
This commit is contained in:
Greg Kroah-Hartman
2022-07-13 11:40:42 +02:00
694 changed files with 6705 additions and 3816 deletions

View File

@@ -37,11 +37,7 @@ Pressure interface
Pressure information for each resource is exported through the Pressure information for each resource is exported through the
respective file in /proc/pressure/ -- cpu, memory, and io. respective file in /proc/pressure/ -- cpu, memory, and io.
The format for CPU is as such:: The format is as such::
some avg10=0.00 avg60=0.00 avg300=0.00 total=0
and for memory and IO::
some avg10=0.00 avg60=0.00 avg300=0.00 total=0 some avg10=0.00 avg60=0.00 avg300=0.00 total=0
full avg10=0.00 avg60=0.00 avg300=0.00 total=0 full avg10=0.00 avg60=0.00 avg300=0.00 total=0
@@ -58,6 +54,9 @@ situation from a state where some tasks are stalled but the CPU is
still doing productive work. As such, time spent in this subset of the still doing productive work. As such, time spent in this subset of the
stall state is tracked separately and exported in the "full" averages. stall state is tracked separately and exported in the "full" averages.
CPU full is undefined at the system level, but has been reported
since 5.13, so it is set to zero for backward compatibility.
The ratios (in %) are tracked as recent trends over ten, sixty, and The ratios (in %) are tracked as recent trends over ten, sixty, and
three hundred second windows, which gives insight into short term events three hundred second windows, which gives insight into short term events
as well as medium and long term trends. The total absolute stall time as well as medium and long term trends. The total absolute stall time

View File

@@ -161,7 +161,7 @@ finally:
# #
# This is also used if you do content translation via gettext catalogs. # This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases. # Usually you set "language" from the command line for these cases.
language = None language = 'en'
# There are two options for replacing |today|: either, you set today to some # There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used: # non-false value, then it is used:

View File

@@ -72,6 +72,7 @@ examples:
dc-gpios = <&gpio 43 GPIO_ACTIVE_HIGH>; dc-gpios = <&gpio 43 GPIO_ACTIVE_HIGH>;
reset-gpios = <&gpio 80 GPIO_ACTIVE_HIGH>; reset-gpios = <&gpio 80 GPIO_ACTIVE_HIGH>;
rotation = <270>; rotation = <270>;
backlight = <&backlight>;
}; };
}; };

View File

@@ -9,8 +9,9 @@ Required properties:
- The second cell is reserved and is currently unused. - The second cell is reserved and is currently unused.
- gpio-controller : Marks the device node as a GPIO controller. - gpio-controller : Marks the device node as a GPIO controller.
- interrupt-controller: Mark the device node as an interrupt controller - interrupt-controller: Mark the device node as an interrupt controller
- #interrupt-cells : Should be 1. The interrupt type is fixed in the hardware. - #interrupt-cells : Should be 2. The interrupt type is fixed in the hardware.
- The first cell is the GPIO offset number within the GPIO controller. - The first cell is the GPIO offset number within the GPIO controller.
- The second cell is the interrupt trigger type and level flags.
- interrupts: Specify the interrupt. - interrupts: Specify the interrupt.
- altr,interrupt-type: Specifies the interrupt trigger type the GPIO - altr,interrupt-type: Specifies the interrupt trigger type the GPIO
hardware is synthesized. This field is required if the Altera GPIO controller hardware is synthesized. This field is required if the Altera GPIO controller
@@ -38,6 +39,6 @@ gpio_altr: gpio@ff200000 {
altr,interrupt-type = <IRQ_TYPE_EDGE_RISING>; altr,interrupt-type = <IRQ_TYPE_EDGE_RISING>;
#gpio-cells = <2>; #gpio-cells = <2>;
gpio-controller; gpio-controller;
#interrupt-cells = <1>; #interrupt-cells = <2>;
interrupt-controller; interrupt-controller;
}; };

View File

@@ -31,7 +31,7 @@ properties:
$ref: "regulator.yaml#" $ref: "regulator.yaml#"
properties: properties:
regulator-name: regulator-compatible:
pattern: "^vbuck[1-4]$" pattern: "^vbuck[1-4]$"
additionalProperties: false additionalProperties: false

View File

@@ -45,6 +45,7 @@ properties:
maxItems: 2 maxItems: 2
interconnect-names: interconnect-names:
minItems: 1
items: items:
- const: qspi-config - const: qspi-config
- const: qspi-memory - const: qspi-memory

View File

@@ -2246,7 +2246,7 @@ implicit_fb
Apply the generic implicit feedback sync mode. When this is set Apply the generic implicit feedback sync mode. When this is set
and the playback stream sync mode is ASYNC, the driver tries to and the playback stream sync mode is ASYNC, the driver tries to
tie an adjacent ASYNC capture stream as the implicit feedback tie an adjacent ASYNC capture stream as the implicit feedback
source. source. This is equivalent with quirk_flags bit 17.
use_vmalloc use_vmalloc
Use vmalloc() for allocations of the PCM buffers (default: yes). Use vmalloc() for allocations of the PCM buffers (default: yes).
For architectures with non-coherent memory like ARM or MIPS, the For architectures with non-coherent memory like ARM or MIPS, the
@@ -2288,6 +2288,8 @@ quirk_flags
* bit 14: Ignore errors for mixer access * bit 14: Ignore errors for mixer access
* bit 15: Support generic DSD raw U32_BE format * bit 15: Support generic DSD raw U32_BE format
* bit 16: Set up the interface at first like UAC1 * bit 16: Set up the interface at first like UAC1
* bit 17: Apply the generic implicit feedback sync mode
* bit 18: Don't apply implicit feedback sync mode
This module supports multiple devices, autoprobe and hotplugging. This module supports multiple devices, autoprobe and hotplugging.

View File

@@ -267,8 +267,8 @@ restrict such paths with dedicated ruleset flags.
Ruleset layers Ruleset layers
-------------- --------------
There is a limit of 64 layers of stacked rulesets. This can be an issue for a There is a limit of 16 layers of stacked rulesets. This can be an issue for a
task willing to enforce a new ruleset in complement to its 64 inherited task willing to enforce a new ruleset in complement to its 16 inherited
rulesets. Once this limit is reached, sys_landlock_restrict_self() returns rulesets. Once this limit is reached, sys_landlock_restrict_self() returns
E2BIG. It is then strongly suggested to carefully build rulesets once in the E2BIG. It is then strongly suggested to carefully build rulesets once in the
life of a thread, especially for applications able to launch other applications life of a thread, especially for applications able to launch other applications

View File

@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
VERSION = 5 VERSION = 5
PATCHLEVEL = 15 PATCHLEVEL = 15
SUBLEVEL = 45 SUBLEVEL = 46
EXTRAVERSION = EXTRAVERSION =
NAME = Trick or Treat NAME = Trick or Treat

View File

@@ -18,7 +18,7 @@ extern void clear_page(void *page);
#define clear_user_page(page, vaddr, pg) clear_page(page) #define clear_user_page(page, vaddr, pg) clear_page(page)
#define alloc_zeroed_user_highpage_movable(vma, vaddr) \ #define alloc_zeroed_user_highpage_movable(vma, vaddr) \
alloc_page_vma(GFP_HIGHUSER_MOVABLE | __GFP_ZERO, vma, vmaddr) alloc_page_vma(GFP_HIGHUSER_MOVABLE | __GFP_ZERO, vma, vaddr)
#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE_MOVABLE #define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE_MOVABLE
extern void copy_page(void * _to, void * _from); extern void copy_page(void * _to, void * _from);

View File

@@ -53,18 +53,17 @@
"GPIO18", "GPIO18",
"NC", /* GPIO19 */ "NC", /* GPIO19 */
"NC", /* GPIO20 */ "NC", /* GPIO20 */
"GPIO21", "CAM_GPIO0",
"GPIO22", "GPIO22",
"GPIO23", "GPIO23",
"GPIO24", "GPIO24",
"GPIO25", "GPIO25",
"NC", /* GPIO26 */ "NC", /* GPIO26 */
"CAM_GPIO0", "GPIO27",
/* Binary number representing build/revision */ "GPIO28",
"CONFIG0", "GPIO29",
"CONFIG1", "GPIO30",
"CONFIG2", "GPIO31",
"CONFIG3",
"NC", /* GPIO32 */ "NC", /* GPIO32 */
"NC", /* GPIO33 */ "NC", /* GPIO33 */
"NC", /* GPIO34 */ "NC", /* GPIO34 */

View File

@@ -74,16 +74,18 @@
"GPIO27", "GPIO27",
"SDA0", "SDA0",
"SCL0", "SCL0",
"NC", /* GPIO30 */ /* Used by BT module */
"NC", /* GPIO31 */ "CTS0",
"NC", /* GPIO32 */ "RTS0",
"NC", /* GPIO33 */ "TXD0",
"NC", /* GPIO34 */ "RXD0",
"NC", /* GPIO35 */ /* Used by Wifi */
"NC", /* GPIO36 */ "SD1_CLK",
"NC", /* GPIO37 */ "SD1_CMD",
"NC", /* GPIO38 */ "SD1_DATA0",
"NC", /* GPIO39 */ "SD1_DATA1",
"SD1_DATA2",
"SD1_DATA3",
"CAM_GPIO1", /* GPIO40 */ "CAM_GPIO1", /* GPIO40 */
"WL_ON", /* GPIO41 */ "WL_ON", /* GPIO41 */
"NC", /* GPIO42 */ "NC", /* GPIO42 */

View File

@@ -45,7 +45,7 @@
#gpio-cells = <2>; #gpio-cells = <2>;
gpio-line-names = "BT_ON", gpio-line-names = "BT_ON",
"WL_ON", "WL_ON",
"STATUS_LED_R", "PWR_LED_R",
"LAN_RUN", "LAN_RUN",
"", "",
"CAM_GPIO0", "CAM_GPIO0",

View File

@@ -63,8 +63,8 @@
"GPIO43", "GPIO43",
"GPIO44", "GPIO44",
"GPIO45", "GPIO45",
"GPIO46", "SMPS_SCL",
"GPIO47", "SMPS_SDA",
/* Used by eMMC */ /* Used by eMMC */
"SD_CLK_R", "SD_CLK_R",
"SD_CMD_R", "SD_CMD_R",

View File

@@ -423,14 +423,14 @@
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
cru@100 { cru-bus@100 {
compatible = "simple-bus"; compatible = "brcm,ns-cru", "simple-mfd";
reg = <0x100 0x1a4>; reg = <0x100 0x1a4>;
ranges; ranges;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
lcpll0: lcpll0@100 { lcpll0: clock-controller@100 {
#clock-cells = <1>; #clock-cells = <1>;
compatible = "brcm,nsp-lcpll0"; compatible = "brcm,nsp-lcpll0";
reg = <0x100 0x14>; reg = <0x100 0x14>;
@@ -439,7 +439,7 @@
"sdio", "ddr_phy"; "sdio", "ddr_phy";
}; };
genpll: genpll@140 { genpll: clock-controller@140 {
#clock-cells = <1>; #clock-cells = <1>;
compatible = "brcm,nsp-genpll"; compatible = "brcm,nsp-genpll";
reg = <0x140 0x24>; reg = <0x140 0x24>;
@@ -450,7 +450,12 @@
"sata1", "sata2"; "sata1", "sata2";
}; };
pinctrl: pin-controller@1c0 { syscon@180 {
compatible = "brcm,cru-clkset", "syscon";
reg = <0x180 0x4>;
};
pinctrl: pinctrl@1c0 {
compatible = "brcm,bcm4708-pinmux"; compatible = "brcm,bcm4708-pinmux";
reg = <0x1c0 0x24>; reg = <0x1c0 0x24>;
reg-names = "cru_gpio_control"; reg-names = "cru_gpio_control";

View File

@@ -129,7 +129,7 @@
samsung,i2c-max-bus-freq = <20000>; samsung,i2c-max-bus-freq = <20000>;
eeprom@50 { eeprom@50 {
compatible = "samsung,s524ad0xd1"; compatible = "samsung,s524ad0xd1", "atmel,24c128";
reg = <0x50>; reg = <0x50>;
}; };
@@ -289,7 +289,7 @@
samsung,i2c-max-bus-freq = <20000>; samsung,i2c-max-bus-freq = <20000>;
eeprom@51 { eeprom@51 {
compatible = "samsung,s524ad0xd1"; compatible = "samsung,s524ad0xd1", "atmel,24c128";
reg = <0x51>; reg = <0x51>;
}; };

View File

@@ -297,7 +297,11 @@
phy-mode = "rmii"; phy-mode = "rmii";
phy-reset-gpios = <&gpio1 18 GPIO_ACTIVE_LOW>; phy-reset-gpios = <&gpio1 18 GPIO_ACTIVE_LOW>;
phy-handle = <&phy>; phy-handle = <&phy>;
clocks = <&clks IMX6QDL_CLK_ENET>, <&clks IMX6QDL_CLK_ENET>, <&rmii_clk>; clocks = <&clks IMX6QDL_CLK_ENET>,
<&clks IMX6QDL_CLK_ENET>,
<&rmii_clk>,
<&clks IMX6QDL_CLK_ENET_REF>;
clock-names = "ipg", "ahb", "ptp", "enet_out";
status = "okay"; status = "okay";
mdio { mdio {

View File

@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0+ OR MIT // SPDX-License-Identifier: GPL-2.0+ OR MIT
/* /*
* Copyright 2014-2020 Toradex * Copyright 2014-2022 Toradex
* Copyright 2012 Freescale Semiconductor, Inc. * Copyright 2012 Freescale Semiconductor, Inc.
* Copyright 2011 Linaro Ltd. * Copyright 2011 Linaro Ltd.
*/ */
@@ -132,7 +132,7 @@
clock-frequency = <100000>; clock-frequency = <100000>;
pinctrl-names = "default", "gpio"; pinctrl-names = "default", "gpio";
pinctrl-0 = <&pinctrl_i2c2>; pinctrl-0 = <&pinctrl_i2c2>;
pinctrl-0 = <&pinctrl_i2c2_gpio>; pinctrl-1 = <&pinctrl_i2c2_gpio>;
scl-gpios = <&gpio2 30 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; scl-gpios = <&gpio2 30 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
sda-gpios = <&gpio3 16 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; sda-gpios = <&gpio3 16 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
status = "okay"; status = "okay";
@@ -488,7 +488,7 @@
>; >;
}; };
pinctrl_i2c2_gpio: i2c2grp { pinctrl_i2c2_gpio: i2c2gpiogrp {
fsl,pins = < fsl,pins = <
MX6QDL_PAD_EIM_EB2__GPIO2_IO30 0x4001b8b1 MX6QDL_PAD_EIM_EB2__GPIO2_IO30 0x4001b8b1
MX6QDL_PAD_EIM_D16__GPIO3_IO16 0x4001b8b1 MX6QDL_PAD_EIM_D16__GPIO3_IO16 0x4001b8b1

View File

@@ -287,7 +287,7 @@
clocks = <&armclk>; clocks = <&armclk>;
}; };
gic: gic@1000 { gic: interrupt-controller@1000 {
compatible = "arm,arm11mp-gic"; compatible = "arm,arm11mp-gic";
interrupt-controller; interrupt-controller;
#interrupt-cells = <3>; #interrupt-cells = <3>;

View File

@@ -564,7 +564,6 @@
reset-gpios = <&mp05 5 GPIO_ACTIVE_LOW>; reset-gpios = <&mp05 5 GPIO_ACTIVE_LOW>;
vdd3-supply = <&ldo7_reg>; vdd3-supply = <&ldo7_reg>;
vci-supply = <&ldo17_reg>; vci-supply = <&ldo17_reg>;
spi-cs-high;
spi-max-frequency = <1200000>; spi-max-frequency = <1200000>;
pinctrl-names = "default"; pinctrl-names = "default";
@@ -636,7 +635,7 @@
}; };
&i2s0 { &i2s0 {
dmas = <&pdma0 9>, <&pdma0 10>, <&pdma0 11>; dmas = <&pdma0 10>, <&pdma0 9>, <&pdma0 11>;
status = "okay"; status = "okay";
}; };

View File

@@ -239,8 +239,8 @@
reg = <0xeee30000 0x1000>; reg = <0xeee30000 0x1000>;
interrupt-parent = <&vic2>; interrupt-parent = <&vic2>;
interrupts = <16>; interrupts = <16>;
dma-names = "rx", "tx", "tx-sec"; dma-names = "tx", "rx", "tx-sec";
dmas = <&pdma1 9>, <&pdma1 10>, <&pdma1 11>; dmas = <&pdma1 10>, <&pdma1 9>, <&pdma1 11>;
clock-names = "iis", clock-names = "iis",
"i2s_opclk0", "i2s_opclk0",
"i2s_opclk1"; "i2s_opclk1";
@@ -259,8 +259,8 @@
reg = <0xe2100000 0x1000>; reg = <0xe2100000 0x1000>;
interrupt-parent = <&vic2>; interrupt-parent = <&vic2>;
interrupts = <17>; interrupts = <17>;
dma-names = "rx", "tx"; dma-names = "tx", "rx";
dmas = <&pdma1 12>, <&pdma1 13>; dmas = <&pdma1 13>, <&pdma1 12>;
clock-names = "iis", "i2s_opclk0"; clock-names = "iis", "i2s_opclk0";
clocks = <&clocks CLK_I2S1>, <&clocks SCLK_AUDIO1>; clocks = <&clocks CLK_I2S1>, <&clocks SCLK_AUDIO1>;
pinctrl-names = "default"; pinctrl-names = "default";
@@ -274,8 +274,8 @@
reg = <0xe2a00000 0x1000>; reg = <0xe2a00000 0x1000>;
interrupt-parent = <&vic2>; interrupt-parent = <&vic2>;
interrupts = <18>; interrupts = <18>;
dma-names = "rx", "tx"; dma-names = "tx", "rx";
dmas = <&pdma1 14>, <&pdma1 15>; dmas = <&pdma1 15>, <&pdma1 14>;
clock-names = "iis", "i2s_opclk0"; clock-names = "iis", "i2s_opclk0";
clocks = <&clocks CLK_I2S2>, <&clocks SCLK_AUDIO2>; clocks = <&clocks CLK_I2S2>, <&clocks SCLK_AUDIO2>;
pinctrl-names = "default"; pinctrl-names = "default";

View File

@@ -553,7 +553,6 @@
#interrupt-cells = <3>; #interrupt-cells = <3>;
#address-cells = <0>; #address-cells = <0>;
interrupt-controller; interrupt-controller;
interrupt-parent;
reg = <0xe8c11000 0x1000>, reg = <0xe8c11000 0x1000>,
<0xe8c12000 0x2000>; <0xe8c12000 0x2000>;
}; };

View File

@@ -46,7 +46,7 @@
<0xff113000 0x1000>; <0xff113000 0x1000>;
}; };
intc: intc@fffed000 { intc: interrupt-controller@fffed000 {
compatible = "arm,cortex-a9-gic"; compatible = "arm,cortex-a9-gic";
#interrupt-cells = <3>; #interrupt-cells = <3>;
interrupt-controller; interrupt-controller;

View File

@@ -38,7 +38,7 @@
<0xff113000 0x1000>; <0xff113000 0x1000>;
}; };
intc: intc@ffffd000 { intc: interrupt-controller@ffffd000 {
compatible = "arm,cortex-a9-gic"; compatible = "arm,cortex-a9-gic";
#interrupt-cells = <3>; #interrupt-cells = <3>;
interrupt-controller; interrupt-controller;

View File

@@ -141,6 +141,7 @@
compatible = "snps,dwmac-mdio"; compatible = "snps,dwmac-mdio";
reset-gpios = <&gpioz 2 GPIO_ACTIVE_LOW>; reset-gpios = <&gpioz 2 GPIO_ACTIVE_LOW>;
reset-delay-us = <1000>; reset-delay-us = <1000>;
reset-post-delay-us = <1000>;
phy0: ethernet-phy@7 { phy0: ethernet-phy@7 {
reg = <7>; reg = <7>;

View File

@@ -104,8 +104,10 @@
wdt: watchdog@1c20ca0 { wdt: watchdog@1c20ca0 {
compatible = "allwinner,suniv-f1c100s-wdt", compatible = "allwinner,suniv-f1c100s-wdt",
"allwinner,sun4i-a10-wdt"; "allwinner,sun6i-a31-wdt";
reg = <0x01c20ca0 0x20>; reg = <0x01c20ca0 0x20>;
interrupts = <16>;
clocks = <&osc32k>;
}; };
uart0: serial@1c25000 { uart0: serial@1c25000 {

View File

@@ -708,6 +708,7 @@ static_assert(offsetof(siginfo_t, si_upper) == 0x18);
static_assert(offsetof(siginfo_t, si_pkey) == 0x14); static_assert(offsetof(siginfo_t, si_pkey) == 0x14);
static_assert(offsetof(siginfo_t, si_perf_data) == 0x10); static_assert(offsetof(siginfo_t, si_perf_data) == 0x10);
static_assert(offsetof(siginfo_t, si_perf_type) == 0x14); static_assert(offsetof(siginfo_t, si_perf_type) == 0x14);
static_assert(offsetof(siginfo_t, si_perf_flags) == 0x18);
static_assert(offsetof(siginfo_t, si_band) == 0x0c); static_assert(offsetof(siginfo_t, si_band) == 0x0c);
static_assert(offsetof(siginfo_t, si_fd) == 0x10); static_assert(offsetof(siginfo_t, si_fd) == 0x10);
static_assert(offsetof(siginfo_t, si_call_addr) == 0x0c); static_assert(offsetof(siginfo_t, si_call_addr) == 0x0c);

View File

@@ -67,14 +67,17 @@ static void __init hi3xxx_smp_prepare_cpus(unsigned int max_cpus)
} }
ctrl_base = of_iomap(np, 0); ctrl_base = of_iomap(np, 0);
if (!ctrl_base) { if (!ctrl_base) {
of_node_put(np);
pr_err("failed to map address\n"); pr_err("failed to map address\n");
return; return;
} }
if (of_property_read_u32(np, "smp-offset", &offset) < 0) { if (of_property_read_u32(np, "smp-offset", &offset) < 0) {
of_node_put(np);
pr_err("failed to find smp-offset property\n"); pr_err("failed to find smp-offset property\n");
return; return;
} }
ctrl_base += offset; ctrl_base += offset;
of_node_put(np);
} }
} }
@@ -160,6 +163,7 @@ static int hip01_boot_secondary(unsigned int cpu, struct task_struct *idle)
if (WARN_ON(!node)) if (WARN_ON(!node))
return -1; return -1;
ctrl_base = of_iomap(node, 0); ctrl_base = of_iomap(node, 0);
of_node_put(node);
/* set the secondary core boot from DDR */ /* set the secondary core boot from DDR */
remap_reg_value = readl_relaxed(ctrl_base + REG_SC_CTRL); remap_reg_value = readl_relaxed(ctrl_base + REG_SC_CTRL);

View File

@@ -30,6 +30,7 @@ config MACH_MT7623
config MACH_MT7629 config MACH_MT7629
bool "MediaTek MT7629 SoCs support" bool "MediaTek MT7629 SoCs support"
default ARCH_MEDIATEK default ARCH_MEDIATEK
select HAVE_ARM_ARCH_TIMER
config MACH_MT8127 config MACH_MT8127
bool "MediaTek MT8127 SoCs support" bool "MediaTek MT8127 SoCs support"

View File

@@ -41,7 +41,7 @@ static DEFINE_SPINLOCK(clockfw_lock);
unsigned long omap1_uart_recalc(struct clk *clk) unsigned long omap1_uart_recalc(struct clk *clk)
{ {
unsigned int val = __raw_readl(clk->enable_reg); unsigned int val = __raw_readl(clk->enable_reg);
return val & clk->enable_bit ? 48000000 : 12000000; return val & 1 << clk->enable_bit ? 48000000 : 12000000;
} }
unsigned long omap1_sossi_recalc(struct clk *clk) unsigned long omap1_sossi_recalc(struct clk *clk)

View File

@@ -354,13 +354,13 @@ static struct platform_device cm_x300_spi_gpio = {
static struct gpiod_lookup_table cm_x300_spi_gpiod_table = { static struct gpiod_lookup_table cm_x300_spi_gpiod_table = {
.dev_id = "spi_gpio", .dev_id = "spi_gpio",
.table = { .table = {
GPIO_LOOKUP("gpio-pxa", GPIO_LCD_SCL, GPIO_LOOKUP("pca9555.1", GPIO_LCD_SCL - GPIO_LCD_BASE,
"sck", GPIO_ACTIVE_HIGH), "sck", GPIO_ACTIVE_HIGH),
GPIO_LOOKUP("gpio-pxa", GPIO_LCD_DIN, GPIO_LOOKUP("pca9555.1", GPIO_LCD_DIN - GPIO_LCD_BASE,
"mosi", GPIO_ACTIVE_HIGH), "mosi", GPIO_ACTIVE_HIGH),
GPIO_LOOKUP("gpio-pxa", GPIO_LCD_DOUT, GPIO_LOOKUP("pca9555.1", GPIO_LCD_DOUT - GPIO_LCD_BASE,
"miso", GPIO_ACTIVE_HIGH), "miso", GPIO_ACTIVE_HIGH),
GPIO_LOOKUP("gpio-pxa", GPIO_LCD_CS, GPIO_LOOKUP("pca9555.1", GPIO_LCD_CS - GPIO_LCD_BASE,
"cs", GPIO_ACTIVE_HIGH), "cs", GPIO_ACTIVE_HIGH),
{ }, { },
}, },

View File

@@ -681,7 +681,7 @@ static struct platform_device bq24022 = {
static struct gpiod_lookup_table bq24022_gpiod_table = { static struct gpiod_lookup_table bq24022_gpiod_table = {
.dev_id = "gpio-regulator", .dev_id = "gpio-regulator",
.table = { .table = {
GPIO_LOOKUP("gpio-pxa", EGPIO_MAGICIAN_BQ24022_ISET2, GPIO_LOOKUP("htc-egpio-0", EGPIO_MAGICIAN_BQ24022_ISET2 - MAGICIAN_EGPIO_BASE,
NULL, GPIO_ACTIVE_HIGH), NULL, GPIO_ACTIVE_HIGH),
GPIO_LOOKUP("gpio-pxa", GPIO30_MAGICIAN_BQ24022_nCHARGE_EN, GPIO_LOOKUP("gpio-pxa", GPIO30_MAGICIAN_BQ24022_nCHARGE_EN,
"enable", GPIO_ACTIVE_LOW), "enable", GPIO_ACTIVE_LOW),

View File

@@ -296,9 +296,9 @@ static struct gpiod_lookup_table tosa_mci_gpio_table = {
.table = { .table = {
GPIO_LOOKUP("gpio-pxa", TOSA_GPIO_nSD_DETECT, GPIO_LOOKUP("gpio-pxa", TOSA_GPIO_nSD_DETECT,
"cd", GPIO_ACTIVE_LOW), "cd", GPIO_ACTIVE_LOW),
GPIO_LOOKUP("gpio-pxa", TOSA_GPIO_SD_WP, GPIO_LOOKUP("sharp-scoop.0", TOSA_GPIO_SD_WP - TOSA_SCOOP_GPIO_BASE,
"wp", GPIO_ACTIVE_LOW), "wp", GPIO_ACTIVE_LOW),
GPIO_LOOKUP("gpio-pxa", TOSA_GPIO_PWR_ON, GPIO_LOOKUP("sharp-scoop.0", TOSA_GPIO_PWR_ON - TOSA_SCOOP_GPIO_BASE,
"power", GPIO_ACTIVE_HIGH), "power", GPIO_ACTIVE_HIGH),
{ }, { },
}, },

View File

@@ -144,6 +144,7 @@ static int __init dcscb_init(void)
if (!node) if (!node)
return -ENODEV; return -ENODEV;
dcscb_base = of_iomap(node, 0); dcscb_base = of_iomap(node, 0);
of_node_put(node);
if (!dcscb_base) if (!dcscb_base)
return -EADDRNOTAVAIL; return -EADDRNOTAVAIL;
cfg = readl_relaxed(dcscb_base + DCS_CFG_R); cfg = readl_relaxed(dcscb_base + DCS_CFG_R);

View File

@@ -258,6 +258,7 @@ config ARCH_INTEL_SOCFPGA
config ARCH_SYNQUACER config ARCH_SYNQUACER
bool "Socionext SynQuacer SoC Family" bool "Socionext SynQuacer SoC Family"
select IRQ_FASTEOI_HIERARCHY_HANDLERS
config ARCH_TEGRA config ARCH_TEGRA
bool "NVIDIA Tegra SoC Family" bool "NVIDIA Tegra SoC Family"

View File

@@ -71,10 +71,6 @@
&spi0 { &spi0 {
flash@0 { flash@0 {
spi-max-frequency = <108000000>;
spi-rx-bus-width = <4>;
spi-tx-bus-width = <4>;
partitions { partitions {
compatible = "fixed-partitions"; compatible = "fixed-partitions";
#address-cells = <1>; #address-cells = <1>;
@@ -112,7 +108,6 @@
&usb3 { &usb3 {
usb-phy = <&usb3_phy>; usb-phy = <&usb3_phy>;
status = "disabled";
}; };
&mdio { &mdio {

View File

@@ -433,7 +433,7 @@
clock-names = "spi", "sf", "axi"; clock-names = "spi", "sf", "axi";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
status = "disable"; status = "disabled";
}; };
i2c3: i2c3@11cb0000 { i2c3: i2c3@11cb0000 {

View File

@@ -1355,8 +1355,9 @@
<&tegra_car TEGRA210_CLK_DFLL_REF>, <&tegra_car TEGRA210_CLK_DFLL_REF>,
<&tegra_car TEGRA210_CLK_I2C5>; <&tegra_car TEGRA210_CLK_I2C5>;
clock-names = "soc", "ref", "i2c"; clock-names = "soc", "ref", "i2c";
resets = <&tegra_car TEGRA210_RST_DFLL_DVCO>; resets = <&tegra_car TEGRA210_RST_DFLL_DVCO>,
reset-names = "dvco"; <&tegra_car 155>;
reset-names = "dvco", "dfll";
#clock-cells = <0>; #clock-cells = <0>;
clock-output-names = "dfllCPU_out"; clock-output-names = "dfllCPU_out";
status = "disabled"; status = "disabled";

View File

@@ -13,7 +13,7 @@
clocks { clocks {
sleep_clk: sleep_clk { sleep_clk: sleep_clk {
compatible = "fixed-clock"; compatible = "fixed-clock";
clock-frequency = <32000>; clock-frequency = <32768>;
#clock-cells = <0>; #clock-cells = <0>;
}; };

View File

@@ -183,8 +183,8 @@
no-map; no-map;
}; };
cont_splash_mem: memory@3800000 { cont_splash_mem: memory@3401000 {
reg = <0 0x03800000 0 0x2400000>; reg = <0 0x03401000 0 0x2200000>;
no-map; no-map;
}; };
@@ -498,7 +498,7 @@
#dma-cells = <1>; #dma-cells = <1>;
qcom,ee = <0>; qcom,ee = <0>;
qcom,controlled-remotely; qcom,controlled-remotely;
num-channels = <18>; num-channels = <24>;
qcom,num-ees = <4>; qcom,num-ees = <4>;
}; };
@@ -634,7 +634,7 @@
#dma-cells = <1>; #dma-cells = <1>;
qcom,ee = <0>; qcom,ee = <0>;
qcom,controlled-remotely; qcom,controlled-remotely;
num-channels = <18>; num-channels = <24>;
qcom,num-ees = <4>; qcom,num-ees = <4>;
}; };

View File

@@ -29,7 +29,7 @@
}; };
/* Fixed crystal oscillator dedicated to MCP2518FD */ /* Fixed crystal oscillator dedicated to MCP2518FD */
clk40M: can_clock { clk40M: can-clock {
compatible = "fixed-clock"; compatible = "fixed-clock";
#clock-cells = <0>; #clock-cells = <0>;
clock-frequency = <40000000>; clock-frequency = <40000000>;

View File

@@ -221,7 +221,7 @@
panel@0 { panel@0 {
compatible = "tianma,fhd-video"; compatible = "tianma,fhd-video";
reg = <0>; reg = <0>;
vddi0-supply = <&vreg_l14a_1p8>; vddio-supply = <&vreg_l14a_1p8>;
vddpos-supply = <&lab>; vddpos-supply = <&lab>;
vddneg-supply = <&ibb>; vddneg-supply = <&ibb>;

View File

@@ -1477,6 +1477,7 @@
reg = <0xf780 0x24>; reg = <0xf780 0x24>;
clocks = <&sdhci>; clocks = <&sdhci>;
clock-names = "emmcclk"; clock-names = "emmcclk";
drive-impedance-ohm = <50>;
#phy-cells = <0>; #phy-cells = <0>;
status = "disabled"; status = "disabled";
}; };
@@ -1487,7 +1488,6 @@
clock-names = "refclk"; clock-names = "refclk";
#phy-cells = <1>; #phy-cells = <1>;
resets = <&cru SRST_PCIEPHY>; resets = <&cru SRST_PCIEPHY>;
drive-impedance-ohm = <50>;
reset-names = "phy"; reset-names = "phy";
status = "disabled"; status = "disabled";
}; };

View File

@@ -10,7 +10,6 @@
compatible = "ti,am64-uart", "ti,am654-uart"; compatible = "ti,am64-uart", "ti,am654-uart";
reg = <0x00 0x04a00000 0x00 0x100>; reg = <0x00 0x04a00000 0x00 0x100>;
interrupts = <GIC_SPI 185 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 185 IRQ_TYPE_LEVEL_HIGH>;
clock-frequency = <48000000>;
current-speed = <115200>; current-speed = <115200>;
power-domains = <&k3_pds 149 TI_SCI_PD_EXCLUSIVE>; power-domains = <&k3_pds 149 TI_SCI_PD_EXCLUSIVE>;
clocks = <&k3_clks 149 0>; clocks = <&k3_clks 149 0>;
@@ -21,7 +20,6 @@
compatible = "ti,am64-uart", "ti,am654-uart"; compatible = "ti,am64-uart", "ti,am654-uart";
reg = <0x00 0x04a10000 0x00 0x100>; reg = <0x00 0x04a10000 0x00 0x100>;
interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>;
clock-frequency = <48000000>;
current-speed = <115200>; current-speed = <115200>;
power-domains = <&k3_pds 160 TI_SCI_PD_EXCLUSIVE>; power-domains = <&k3_pds 160 TI_SCI_PD_EXCLUSIVE>;
clocks = <&k3_clks 160 0>; clocks = <&k3_clks 160 0>;

View File

@@ -339,12 +339,10 @@ long get_tagged_addr_ctrl(struct task_struct *task);
* of header definitions for the use of task_stack_page. * of header definitions for the use of task_stack_page.
*/ */
#define current_top_of_stack() \ /*
({ \ * The top of the current task's task stack
struct stack_info _info; \ */
BUG_ON(!on_accessible_stack(current, current_stack_pointer, 1, &_info)); \ #define current_top_of_stack() ((unsigned long)current->stack + THREAD_SIZE)
_info.high; \
})
#define on_thread_stack() (on_task_stack(current, current_stack_pointer, 1, NULL)) #define on_thread_stack() (on_task_stack(current, current_stack_pointer, 1, NULL))
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */

View File

@@ -1012,6 +1012,7 @@ static_assert(offsetof(siginfo_t, si_upper) == 0x28);
static_assert(offsetof(siginfo_t, si_pkey) == 0x20); static_assert(offsetof(siginfo_t, si_pkey) == 0x20);
static_assert(offsetof(siginfo_t, si_perf_data) == 0x18); static_assert(offsetof(siginfo_t, si_perf_data) == 0x18);
static_assert(offsetof(siginfo_t, si_perf_type) == 0x20); static_assert(offsetof(siginfo_t, si_perf_type) == 0x20);
static_assert(offsetof(siginfo_t, si_perf_flags) == 0x24);
static_assert(offsetof(siginfo_t, si_band) == 0x10); static_assert(offsetof(siginfo_t, si_band) == 0x10);
static_assert(offsetof(siginfo_t, si_fd) == 0x18); static_assert(offsetof(siginfo_t, si_fd) == 0x18);
static_assert(offsetof(siginfo_t, si_call_addr) == 0x10); static_assert(offsetof(siginfo_t, si_call_addr) == 0x10);

View File

@@ -487,6 +487,7 @@ static_assert(offsetof(compat_siginfo_t, si_upper) == 0x18);
static_assert(offsetof(compat_siginfo_t, si_pkey) == 0x14); static_assert(offsetof(compat_siginfo_t, si_pkey) == 0x14);
static_assert(offsetof(compat_siginfo_t, si_perf_data) == 0x10); static_assert(offsetof(compat_siginfo_t, si_perf_data) == 0x10);
static_assert(offsetof(compat_siginfo_t, si_perf_type) == 0x14); static_assert(offsetof(compat_siginfo_t, si_perf_type) == 0x14);
static_assert(offsetof(compat_siginfo_t, si_perf_flags) == 0x18);
static_assert(offsetof(compat_siginfo_t, si_band) == 0x0c); static_assert(offsetof(compat_siginfo_t, si_band) == 0x0c);
static_assert(offsetof(compat_siginfo_t, si_fd) == 0x10); static_assert(offsetof(compat_siginfo_t, si_fd) == 0x10);
static_assert(offsetof(compat_siginfo_t, si_call_addr) == 0x0c); static_assert(offsetof(compat_siginfo_t, si_call_addr) == 0x0c);

View File

@@ -114,6 +114,6 @@ long compat_arm_syscall(struct pt_regs *regs, int scno)
addr = instruction_pointer(regs) - (compat_thumb_mode(regs) ? 2 : 4); addr = instruction_pointer(regs) - (compat_thumb_mode(regs) ? 2 : 4);
arm64_notify_die("Oops - bad compat syscall(2)", regs, arm64_notify_die("Oops - bad compat syscall(2)", regs,
SIGILL, ILL_ILLTRP, addr, scno); SIGILL, ILL_ILLTRP, addr, 0);
return 0; return 0;
} }

View File

@@ -16,8 +16,8 @@
void copy_highpage(struct page *to, struct page *from) void copy_highpage(struct page *to, struct page *from)
{ {
struct page *kto = page_address(to); void *kto = page_address(to);
struct page *kfrom = page_address(from); void *kfrom = page_address(from);
copy_page(kto, kfrom); copy_page(kto, kfrom);

View File

@@ -28,7 +28,7 @@ static int __kprobes patch_text_cb(void *priv)
struct csky_insn_patch *param = priv; struct csky_insn_patch *param = priv;
unsigned int addr = (unsigned int)param->addr; unsigned int addr = (unsigned int)param->addr;
if (atomic_inc_return(&param->cpu_count) == 1) { if (atomic_inc_return(&param->cpu_count) == num_online_cpus()) {
*(u16 *) addr = cpu_to_le16(param->opcode); *(u16 *) addr = cpu_to_le16(param->opcode);
dcache_wb_range(addr, addr + 2); dcache_wb_range(addr, addr + 2);
atomic_inc(&param->cpu_count); atomic_inc(&param->cpu_count);

View File

@@ -338,7 +338,7 @@ comment "Processor Specific Options"
config M68KFPU_EMU config M68KFPU_EMU
bool "Math emulation support" bool "Math emulation support"
depends on MMU depends on M68KCLASSIC && FPU
help help
At some point in the future, this will cause floating-point math At some point in the future, this will cause floating-point math
instructions to be emulated by the kernel on machines that lack a instructions to be emulated by the kernel on machines that lack a

View File

@@ -80,14 +80,14 @@
({ u16 __v = le16_to_cpu(*(__force volatile u16 *) (addr)); __v; }) ({ u16 __v = le16_to_cpu(*(__force volatile u16 *) (addr)); __v; })
#define rom_out_8(addr, b) \ #define rom_out_8(addr, b) \
({u8 __maybe_unused __w, __v = (b); u32 _addr = ((u32) (addr)); \ (void)({u8 __maybe_unused __w, __v = (b); u32 _addr = ((u32) (addr)); \
__w = ((*(__force volatile u8 *) ((_addr | 0x10000) + (__v<<1)))); }) __w = ((*(__force volatile u8 *) ((_addr | 0x10000) + (__v<<1)))); })
#define rom_out_be16(addr, w) \ #define rom_out_be16(addr, w) \
({u16 __maybe_unused __w, __v = (w); u32 _addr = ((u32) (addr)); \ (void)({u16 __maybe_unused __w, __v = (w); u32 _addr = ((u32) (addr)); \
__w = ((*(__force volatile u16 *) ((_addr & 0xFFFF0000UL) + ((__v & 0xFF)<<1)))); \ __w = ((*(__force volatile u16 *) ((_addr & 0xFFFF0000UL) + ((__v & 0xFF)<<1)))); \
__w = ((*(__force volatile u16 *) ((_addr | 0x10000) + ((__v >> 8)<<1)))); }) __w = ((*(__force volatile u16 *) ((_addr | 0x10000) + ((__v >> 8)<<1)))); })
#define rom_out_le16(addr, w) \ #define rom_out_le16(addr, w) \
({u16 __maybe_unused __w, __v = (w); u32 _addr = ((u32) (addr)); \ (void)({u16 __maybe_unused __w, __v = (w); u32 _addr = ((u32) (addr)); \
__w = ((*(__force volatile u16 *) ((_addr & 0xFFFF0000UL) + ((__v >> 8)<<1)))); \ __w = ((*(__force volatile u16 *) ((_addr & 0xFFFF0000UL) + ((__v >> 8)<<1)))); \
__w = ((*(__force volatile u16 *) ((_addr | 0x10000) + ((__v & 0xFF)<<1)))); }) __w = ((*(__force volatile u16 *) ((_addr | 0x10000) + ((__v & 0xFF)<<1)))); })

View File

@@ -625,6 +625,7 @@ static inline void siginfo_build_tests(void)
/* _sigfault._perf */ /* _sigfault._perf */
BUILD_BUG_ON(offsetof(siginfo_t, si_perf_data) != 0x10); BUILD_BUG_ON(offsetof(siginfo_t, si_perf_data) != 0x10);
BUILD_BUG_ON(offsetof(siginfo_t, si_perf_type) != 0x14); BUILD_BUG_ON(offsetof(siginfo_t, si_perf_type) != 0x14);
BUILD_BUG_ON(offsetof(siginfo_t, si_perf_flags) != 0x18);
/* _sigpoll */ /* _sigpoll */
BUILD_BUG_ON(offsetof(siginfo_t, si_band) != 0x0c); BUILD_BUG_ON(offsetof(siginfo_t, si_band) != 0x0c);

View File

@@ -26,7 +26,6 @@
#define cpu_has_3k_cache 0 #define cpu_has_3k_cache 0
#define cpu_has_4k_cache 1 #define cpu_has_4k_cache 1
#define cpu_has_tx39_cache 0 #define cpu_has_tx39_cache 0
#define cpu_has_fpu 1
#define cpu_has_nofpuex 0 #define cpu_has_nofpuex 0
#define cpu_has_32fpr 1 #define cpu_has_32fpr 1
#define cpu_has_counter 1 #define cpu_has_counter 1

View File

@@ -29,7 +29,6 @@
#define cpu_has_3k_cache 0 #define cpu_has_3k_cache 0
#define cpu_has_4k_cache 1 #define cpu_has_4k_cache 1
#define cpu_has_tx39_cache 0 #define cpu_has_tx39_cache 0
#define cpu_has_fpu 1
#define cpu_has_nofpuex 0 #define cpu_has_nofpuex 0
#define cpu_has_32fpr 1 #define cpu_has_32fpr 1
#define cpu_has_counter 1 #define cpu_has_counter 1

View File

@@ -23,6 +23,7 @@ static inline cycles_t get_cycles(void)
{ {
return mfspr(SPR_TTCR); return mfspr(SPR_TTCR);
} }
#define get_cycles get_cycles
/* This isn't really used any more */ /* This isn't really used any more */
#define CLOCK_TICK_RATE 1000 #define CLOCK_TICK_RATE 1000

View File

@@ -521,6 +521,15 @@ _start:
l.ori r3,r0,0x1 l.ori r3,r0,0x1
l.mtspr r0,r3,SPR_SR l.mtspr r0,r3,SPR_SR
/*
* Start the TTCR as early as possible, so that the RNG can make use of
* measurements of boot time from the earliest opportunity. Especially
* important is that the TTCR does not return zero by the time we reach
* rand_initialize().
*/
l.movhi r3,hi(SPR_TTMR_CR)
l.mtspr r0,r3,SPR_TTMR
CLEAR_GPR(r1) CLEAR_GPR(r1)
CLEAR_GPR(r2) CLEAR_GPR(r2)
CLEAR_GPR(r3) CLEAR_GPR(r3)

View File

@@ -12,9 +12,13 @@ static inline void fb_pgprotect(struct file *file, struct vm_area_struct *vma,
pgprot_val(vma->vm_page_prot) |= _PAGE_NO_CACHE; pgprot_val(vma->vm_page_prot) |= _PAGE_NO_CACHE;
} }
#if defined(CONFIG_STI_CONSOLE) || defined(CONFIG_FB_STI)
int fb_is_primary_device(struct fb_info *info);
#else
static inline int fb_is_primary_device(struct fb_info *info) static inline int fb_is_primary_device(struct fb_info *info)
{ {
return 0; return 0;
} }
#endif
#endif /* _ASM_FB_H_ */ #endif /* _ASM_FB_H_ */

View File

@@ -216,6 +216,9 @@ static inline bool pfn_valid(unsigned long pfn)
#define __pa(x) ((phys_addr_t)(unsigned long)(x) - VIRT_PHYS_OFFSET) #define __pa(x) ((phys_addr_t)(unsigned long)(x) - VIRT_PHYS_OFFSET)
#else #else
#ifdef CONFIG_PPC64 #ifdef CONFIG_PPC64
#define VIRTUAL_WARN_ON(x) WARN_ON(IS_ENABLED(CONFIG_DEBUG_VIRTUAL) && (x))
/* /*
* gcc miscompiles (unsigned long)(&static_var) - PAGE_OFFSET * gcc miscompiles (unsigned long)(&static_var) - PAGE_OFFSET
* with -mcmodel=medium, so we use & and | instead of - and + on 64-bit. * with -mcmodel=medium, so we use & and | instead of - and + on 64-bit.
@@ -223,13 +226,13 @@ static inline bool pfn_valid(unsigned long pfn)
*/ */
#define __va(x) \ #define __va(x) \
({ \ ({ \
VIRTUAL_BUG_ON((unsigned long)(x) >= PAGE_OFFSET); \ VIRTUAL_WARN_ON((unsigned long)(x) >= PAGE_OFFSET); \
(void *)(unsigned long)((phys_addr_t)(x) | PAGE_OFFSET); \ (void *)(unsigned long)((phys_addr_t)(x) | PAGE_OFFSET); \
}) })
#define __pa(x) \ #define __pa(x) \
({ \ ({ \
VIRTUAL_BUG_ON((unsigned long)(x) < PAGE_OFFSET); \ VIRTUAL_WARN_ON((unsigned long)(x) < PAGE_OFFSET); \
(unsigned long)(x) & 0x0fffffffffffffffUL; \ (unsigned long)(x) & 0x0fffffffffffffffUL; \
}) })

View File

@@ -112,7 +112,7 @@ static inline void vas_user_win_add_mm_context(struct vas_user_win_ref *ref)
* Receive window attributes specified by the (in-kernel) owner of window. * Receive window attributes specified by the (in-kernel) owner of window.
*/ */
struct vas_rx_win_attr { struct vas_rx_win_attr {
void *rx_fifo; u64 rx_fifo;
int rx_fifo_size; int rx_fifo_size;
int wcreds_max; int wcreds_max;

View File

@@ -330,23 +330,23 @@ _GLOBAL(enter_rtas)
clrldi r4,r4,2 /* convert to realmode address */ clrldi r4,r4,2 /* convert to realmode address */
mtlr r4 mtlr r4
li r0,0
ori r0,r0,MSR_EE|MSR_SE|MSR_BE|MSR_RI
andc r0,r6,r0
li r9,1
rldicr r9,r9,MSR_SF_LG,(63-MSR_SF_LG)
ori r9,r9,MSR_IR|MSR_DR|MSR_FE0|MSR_FE1|MSR_FP|MSR_RI|MSR_LE
andc r6,r0,r9
__enter_rtas: __enter_rtas:
sync /* disable interrupts so SRR0/1 */
mtmsrd r0 /* don't get trashed */
LOAD_REG_ADDR(r4, rtas) LOAD_REG_ADDR(r4, rtas)
ld r5,RTASENTRY(r4) /* get the rtas->entry value */ ld r5,RTASENTRY(r4) /* get the rtas->entry value */
ld r4,RTASBASE(r4) /* get the rtas->base value */ ld r4,RTASBASE(r4) /* get the rtas->base value */
/*
* RTAS runs in 32-bit big endian real mode, but leave MSR[RI] on as we
* may hit NMI (SRESET or MCE) while in RTAS. RTAS should disable RI in
* its critical regions (as specified in PAPR+ section 7.2.1). MSR[S]
* is not impacted by RFI_TO_KERNEL (only urfid can unset it). So if
* MSR[S] is set, it will remain when entering RTAS.
*/
LOAD_REG_IMMEDIATE(r6, MSR_ME | MSR_RI)
li r0,0
mtmsrd r0,1 /* disable RI before using SRR0/1 */
mtspr SPRN_SRR0,r5 mtspr SPRN_SRR0,r5
mtspr SPRN_SRR1,r6 mtspr SPRN_SRR1,r6
RFI_TO_KERNEL RFI_TO_KERNEL

View File

@@ -861,7 +861,6 @@ static int fadump_alloc_mem_ranges(struct fadump_mrange_info *mrange_info)
sizeof(struct fadump_memory_range)); sizeof(struct fadump_memory_range));
return 0; return 0;
} }
static inline int fadump_add_mem_range(struct fadump_mrange_info *mrange_info, static inline int fadump_add_mem_range(struct fadump_mrange_info *mrange_info,
u64 base, u64 end) u64 base, u64 end)
{ {
@@ -880,7 +879,12 @@ static inline int fadump_add_mem_range(struct fadump_mrange_info *mrange_info,
start = mem_ranges[mrange_info->mem_range_cnt - 1].base; start = mem_ranges[mrange_info->mem_range_cnt - 1].base;
size = mem_ranges[mrange_info->mem_range_cnt - 1].size; size = mem_ranges[mrange_info->mem_range_cnt - 1].size;
if ((start + size) == base) /*
* Boot memory area needs separate PT_LOAD segment(s) as it
* is moved to a different location at the time of crash.
* So, fold only if the region is not boot memory area.
*/
if ((start + size) == base && start >= fw_dump.boot_mem_top)
is_adjacent = true; is_adjacent = true;
} }
if (!is_adjacent) { if (!is_adjacent) {

View File

@@ -37,7 +37,7 @@ static int __init powersave_off(char *arg)
{ {
ppc_md.power_save = NULL; ppc_md.power_save = NULL;
cpuidle_disable = IDLE_POWERSAVE_OFF; cpuidle_disable = IDLE_POWERSAVE_OFF;
return 0; return 1;
} }
__setup("powersave=off", powersave_off); __setup("powersave=off", powersave_off);

View File

@@ -49,6 +49,15 @@ void enter_rtas(unsigned long);
static inline void do_enter_rtas(unsigned long args) static inline void do_enter_rtas(unsigned long args)
{ {
unsigned long msr;
/*
* Make sure MSR[RI] is currently enabled as it will be forced later
* in enter_rtas.
*/
msr = mfmsr();
BUG_ON(!(msr & MSR_RI));
enter_rtas(args); enter_rtas(args);
srr_regs_clobbered(); /* rtas uses SRRs, invalidate */ srr_regs_clobbered(); /* rtas uses SRRs, invalidate */

View File

@@ -5235,6 +5235,10 @@ static int kvmppc_core_init_vm_hv(struct kvm *kvm)
kvm->arch.host_lpcr = lpcr = mfspr(SPRN_LPCR); kvm->arch.host_lpcr = lpcr = mfspr(SPRN_LPCR);
lpcr &= LPCR_PECE | LPCR_LPES; lpcr &= LPCR_PECE | LPCR_LPES;
} else { } else {
/*
* The L2 LPES mode will be set by the L0 according to whether
* or not it needs to take external interrupts in HV mode.
*/
lpcr = 0; lpcr = 0;
} }
lpcr |= (4UL << LPCR_DPFD_SH) | LPCR_HDICE | lpcr |= (4UL << LPCR_DPFD_SH) | LPCR_HDICE |

View File

@@ -261,8 +261,7 @@ static void load_l2_hv_regs(struct kvm_vcpu *vcpu,
/* /*
* Don't let L1 change LPCR bits for the L2 except these: * Don't let L1 change LPCR bits for the L2 except these:
*/ */
mask = LPCR_DPFD | LPCR_ILE | LPCR_TC | LPCR_AIL | LPCR_LD | mask = LPCR_DPFD | LPCR_ILE | LPCR_TC | LPCR_AIL | LPCR_LD | LPCR_MER;
LPCR_LPES | LPCR_MER;
/* /*
* Additional filtering is required depending on hardware * Additional filtering is required depending on hardware

View File

@@ -108,7 +108,7 @@ static void mmcra_sdar_mode(u64 event, unsigned long *mmcra)
*mmcra |= MMCRA_SDAR_MODE_TLB; *mmcra |= MMCRA_SDAR_MODE_TLB;
} }
static u64 p10_thresh_cmp_val(u64 value) static int p10_thresh_cmp_val(u64 value)
{ {
int exp = 0; int exp = 0;
u64 result = value; u64 result = value;
@@ -139,7 +139,7 @@ static u64 p10_thresh_cmp_val(u64 value)
* exponent is also zero. * exponent is also zero.
*/ */
if (!(value & 0xC0) && exp) if (!(value & 0xC0) && exp)
result = 0; result = -1;
else else
result = (exp << 8) | value; result = (exp << 8) | value;
} }
@@ -187,7 +187,7 @@ static bool is_thresh_cmp_valid(u64 event)
unsigned int cmp, exp; unsigned int cmp, exp;
if (cpu_has_feature(CPU_FTR_ARCH_31)) if (cpu_has_feature(CPU_FTR_ARCH_31))
return p10_thresh_cmp_val(event) != 0; return p10_thresh_cmp_val(event) >= 0;
/* /*
* Check the mantissa upper two bits are not zero, unless the * Check the mantissa upper two bits are not zero, unless the
@@ -456,12 +456,14 @@ int isa207_get_constraint(u64 event, unsigned long *maskp, unsigned long *valp,
value |= CNST_THRESH_CTL_SEL_VAL(event >> EVENT_THRESH_SHIFT); value |= CNST_THRESH_CTL_SEL_VAL(event >> EVENT_THRESH_SHIFT);
mask |= p10_CNST_THRESH_CMP_MASK; mask |= p10_CNST_THRESH_CMP_MASK;
value |= p10_CNST_THRESH_CMP_VAL(p10_thresh_cmp_val(event_config1)); value |= p10_CNST_THRESH_CMP_VAL(p10_thresh_cmp_val(event_config1));
} } else if (event_is_threshold(event))
return -1;
} else if (cpu_has_feature(CPU_FTR_ARCH_300)) { } else if (cpu_has_feature(CPU_FTR_ARCH_300)) {
if (event_is_threshold(event) && is_thresh_cmp_valid(event)) { if (event_is_threshold(event) && is_thresh_cmp_valid(event)) {
mask |= CNST_THRESH_MASK; mask |= CNST_THRESH_MASK;
value |= CNST_THRESH_VAL(event >> EVENT_THRESH_SHIFT); value |= CNST_THRESH_VAL(event >> EVENT_THRESH_SHIFT);
} } else if (event_is_threshold(event))
return -1;
} else { } else {
/* /*
* Special case for PM_MRK_FAB_RSP_MATCH and PM_MRK_FAB_RSP_MATCH_CYC, * Special case for PM_MRK_FAB_RSP_MATCH and PM_MRK_FAB_RSP_MATCH_CYC,

View File

@@ -327,6 +327,6 @@ late_initcall(cpm_init);
static int __init cpm_powersave_off(char *arg) static int __init cpm_powersave_off(char *arg)
{ {
cpm.powersave_off = 1; cpm.powersave_off = 1;
return 0; return 1;
} }
__setup("powersave=off", cpm_powersave_off); __setup("powersave=off", cpm_powersave_off);

View File

@@ -280,6 +280,7 @@ cpm_setbrg(uint brg, uint rate)
out_be32(bp, (((BRG_UART_CLK_DIV16 / rate) - 1) << 1) | out_be32(bp, (((BRG_UART_CLK_DIV16 / rate) - 1) << 1) |
CPM_BRG_EN | CPM_BRG_DIV16); CPM_BRG_EN | CPM_BRG_DIV16);
} }
EXPORT_SYMBOL(cpm_setbrg);
struct cpm_ioport16 { struct cpm_ioport16 {
__be16 dir, par, odr_sor, dat, intr; __be16 dir, par, odr_sor, dat, intr;

View File

@@ -60,7 +60,7 @@ void __init opal_fadump_dt_scan(struct fw_dump *fadump_conf, u64 node)
addr = be64_to_cpu(addr); addr = be64_to_cpu(addr);
pr_debug("Kernel metadata addr: %llx\n", addr); pr_debug("Kernel metadata addr: %llx\n", addr);
opal_fdm_active = (void *)addr; opal_fdm_active = (void *)addr;
if (opal_fdm_active->registered_regions == 0) if (be16_to_cpu(opal_fdm_active->registered_regions) == 0)
return; return;
ret = opal_mpipl_query_tag(OPAL_MPIPL_TAG_BOOT_MEM, &addr); ret = opal_mpipl_query_tag(OPAL_MPIPL_TAG_BOOT_MEM, &addr);
@@ -95,17 +95,17 @@ static int opal_fadump_unregister(struct fw_dump *fadump_conf);
static void opal_fadump_update_config(struct fw_dump *fadump_conf, static void opal_fadump_update_config(struct fw_dump *fadump_conf,
const struct opal_fadump_mem_struct *fdm) const struct opal_fadump_mem_struct *fdm)
{ {
pr_debug("Boot memory regions count: %d\n", fdm->region_cnt); pr_debug("Boot memory regions count: %d\n", be16_to_cpu(fdm->region_cnt));
/* /*
* The destination address of the first boot memory region is the * The destination address of the first boot memory region is the
* destination address of boot memory regions. * destination address of boot memory regions.
*/ */
fadump_conf->boot_mem_dest_addr = fdm->rgn[0].dest; fadump_conf->boot_mem_dest_addr = be64_to_cpu(fdm->rgn[0].dest);
pr_debug("Destination address of boot memory regions: %#016llx\n", pr_debug("Destination address of boot memory regions: %#016llx\n",
fadump_conf->boot_mem_dest_addr); fadump_conf->boot_mem_dest_addr);
fadump_conf->fadumphdr_addr = fdm->fadumphdr_addr; fadump_conf->fadumphdr_addr = be64_to_cpu(fdm->fadumphdr_addr);
} }
/* /*
@@ -126,9 +126,9 @@ static void opal_fadump_get_config(struct fw_dump *fadump_conf,
fadump_conf->boot_memory_size = 0; fadump_conf->boot_memory_size = 0;
pr_debug("Boot memory regions:\n"); pr_debug("Boot memory regions:\n");
for (i = 0; i < fdm->region_cnt; i++) { for (i = 0; i < be16_to_cpu(fdm->region_cnt); i++) {
base = fdm->rgn[i].src; base = be64_to_cpu(fdm->rgn[i].src);
size = fdm->rgn[i].size; size = be64_to_cpu(fdm->rgn[i].size);
pr_debug("\t[%03d] base: 0x%lx, size: 0x%lx\n", i, base, size); pr_debug("\t[%03d] base: 0x%lx, size: 0x%lx\n", i, base, size);
fadump_conf->boot_mem_addr[i] = base; fadump_conf->boot_mem_addr[i] = base;
@@ -143,7 +143,7 @@ static void opal_fadump_get_config(struct fw_dump *fadump_conf,
* Start address of reserve dump area (permanent reservation) for * Start address of reserve dump area (permanent reservation) for
* re-registering FADump after dump capture. * re-registering FADump after dump capture.
*/ */
fadump_conf->reserve_dump_area_start = fdm->rgn[0].dest; fadump_conf->reserve_dump_area_start = be64_to_cpu(fdm->rgn[0].dest);
/* /*
* Rarely, but it can so happen that system crashes before all * Rarely, but it can so happen that system crashes before all
@@ -155,13 +155,14 @@ static void opal_fadump_get_config(struct fw_dump *fadump_conf,
* Hope the memory that could not be preserved only has pages * Hope the memory that could not be preserved only has pages
* that are usually filtered out while saving the vmcore. * that are usually filtered out while saving the vmcore.
*/ */
if (fdm->region_cnt > fdm->registered_regions) { if (be16_to_cpu(fdm->region_cnt) > be16_to_cpu(fdm->registered_regions)) {
pr_warn("Not all memory regions were saved!!!\n"); pr_warn("Not all memory regions were saved!!!\n");
pr_warn(" Unsaved memory regions:\n"); pr_warn(" Unsaved memory regions:\n");
i = fdm->registered_regions; i = be16_to_cpu(fdm->registered_regions);
while (i < fdm->region_cnt) { while (i < be16_to_cpu(fdm->region_cnt)) {
pr_warn("\t[%03d] base: 0x%llx, size: 0x%llx\n", pr_warn("\t[%03d] base: 0x%llx, size: 0x%llx\n",
i, fdm->rgn[i].src, fdm->rgn[i].size); i, be64_to_cpu(fdm->rgn[i].src),
be64_to_cpu(fdm->rgn[i].size));
i++; i++;
} }
@@ -170,7 +171,7 @@ static void opal_fadump_get_config(struct fw_dump *fadump_conf,
} }
fadump_conf->boot_mem_top = (fadump_conf->boot_memory_size + hole_size); fadump_conf->boot_mem_top = (fadump_conf->boot_memory_size + hole_size);
fadump_conf->boot_mem_regs_cnt = fdm->region_cnt; fadump_conf->boot_mem_regs_cnt = be16_to_cpu(fdm->region_cnt);
opal_fadump_update_config(fadump_conf, fdm); opal_fadump_update_config(fadump_conf, fdm);
} }
@@ -178,35 +179,38 @@ static void opal_fadump_get_config(struct fw_dump *fadump_conf,
static void opal_fadump_init_metadata(struct opal_fadump_mem_struct *fdm) static void opal_fadump_init_metadata(struct opal_fadump_mem_struct *fdm)
{ {
fdm->version = OPAL_FADUMP_VERSION; fdm->version = OPAL_FADUMP_VERSION;
fdm->region_cnt = 0; fdm->region_cnt = cpu_to_be16(0);
fdm->registered_regions = 0; fdm->registered_regions = cpu_to_be16(0);
fdm->fadumphdr_addr = 0; fdm->fadumphdr_addr = cpu_to_be64(0);
} }
static u64 opal_fadump_init_mem_struct(struct fw_dump *fadump_conf) static u64 opal_fadump_init_mem_struct(struct fw_dump *fadump_conf)
{ {
u64 addr = fadump_conf->reserve_dump_area_start; u64 addr = fadump_conf->reserve_dump_area_start;
u16 reg_cnt;
int i; int i;
opal_fdm = __va(fadump_conf->kernel_metadata); opal_fdm = __va(fadump_conf->kernel_metadata);
opal_fadump_init_metadata(opal_fdm); opal_fadump_init_metadata(opal_fdm);
/* Boot memory regions */ /* Boot memory regions */
reg_cnt = be16_to_cpu(opal_fdm->region_cnt);
for (i = 0; i < fadump_conf->boot_mem_regs_cnt; i++) { for (i = 0; i < fadump_conf->boot_mem_regs_cnt; i++) {
opal_fdm->rgn[i].src = fadump_conf->boot_mem_addr[i]; opal_fdm->rgn[i].src = cpu_to_be64(fadump_conf->boot_mem_addr[i]);
opal_fdm->rgn[i].dest = addr; opal_fdm->rgn[i].dest = cpu_to_be64(addr);
opal_fdm->rgn[i].size = fadump_conf->boot_mem_sz[i]; opal_fdm->rgn[i].size = cpu_to_be64(fadump_conf->boot_mem_sz[i]);
opal_fdm->region_cnt++; reg_cnt++;
addr += fadump_conf->boot_mem_sz[i]; addr += fadump_conf->boot_mem_sz[i];
} }
opal_fdm->region_cnt = cpu_to_be16(reg_cnt);
/* /*
* Kernel metadata is passed to f/w and retrieved in capture kerenl. * Kernel metadata is passed to f/w and retrieved in capture kerenl.
* So, use it to save fadump header address instead of calculating it. * So, use it to save fadump header address instead of calculating it.
*/ */
opal_fdm->fadumphdr_addr = (opal_fdm->rgn[0].dest + opal_fdm->fadumphdr_addr = cpu_to_be64(be64_to_cpu(opal_fdm->rgn[0].dest) +
fadump_conf->boot_memory_size); fadump_conf->boot_memory_size);
opal_fadump_update_config(fadump_conf, opal_fdm); opal_fadump_update_config(fadump_conf, opal_fdm);
@@ -269,18 +273,21 @@ static u64 opal_fadump_get_bootmem_min(void)
static int opal_fadump_register(struct fw_dump *fadump_conf) static int opal_fadump_register(struct fw_dump *fadump_conf)
{ {
s64 rc = OPAL_PARAMETER; s64 rc = OPAL_PARAMETER;
u16 registered_regs;
int i, err = -EIO; int i, err = -EIO;
for (i = 0; i < opal_fdm->region_cnt; i++) { registered_regs = be16_to_cpu(opal_fdm->registered_regions);
for (i = 0; i < be16_to_cpu(opal_fdm->region_cnt); i++) {
rc = opal_mpipl_update(OPAL_MPIPL_ADD_RANGE, rc = opal_mpipl_update(OPAL_MPIPL_ADD_RANGE,
opal_fdm->rgn[i].src, be64_to_cpu(opal_fdm->rgn[i].src),
opal_fdm->rgn[i].dest, be64_to_cpu(opal_fdm->rgn[i].dest),
opal_fdm->rgn[i].size); be64_to_cpu(opal_fdm->rgn[i].size));
if (rc != OPAL_SUCCESS) if (rc != OPAL_SUCCESS)
break; break;
opal_fdm->registered_regions++; registered_regs++;
} }
opal_fdm->registered_regions = cpu_to_be16(registered_regs);
switch (rc) { switch (rc) {
case OPAL_SUCCESS: case OPAL_SUCCESS:
@@ -291,7 +298,8 @@ static int opal_fadump_register(struct fw_dump *fadump_conf)
case OPAL_RESOURCE: case OPAL_RESOURCE:
/* If MAX regions limit in f/w is hit, warn and proceed. */ /* If MAX regions limit in f/w is hit, warn and proceed. */
pr_warn("%d regions could not be registered for MPIPL as MAX limit is reached!\n", pr_warn("%d regions could not be registered for MPIPL as MAX limit is reached!\n",
(opal_fdm->region_cnt - opal_fdm->registered_regions)); (be16_to_cpu(opal_fdm->region_cnt) -
be16_to_cpu(opal_fdm->registered_regions)));
fadump_conf->dump_registered = 1; fadump_conf->dump_registered = 1;
err = 0; err = 0;
break; break;
@@ -312,7 +320,7 @@ static int opal_fadump_register(struct fw_dump *fadump_conf)
* If some regions were registered before OPAL_MPIPL_ADD_RANGE * If some regions were registered before OPAL_MPIPL_ADD_RANGE
* OPAL call failed, unregister all regions. * OPAL call failed, unregister all regions.
*/ */
if ((err < 0) && (opal_fdm->registered_regions > 0)) if ((err < 0) && (be16_to_cpu(opal_fdm->registered_regions) > 0))
opal_fadump_unregister(fadump_conf); opal_fadump_unregister(fadump_conf);
return err; return err;
@@ -328,7 +336,7 @@ static int opal_fadump_unregister(struct fw_dump *fadump_conf)
return -EIO; return -EIO;
} }
opal_fdm->registered_regions = 0; opal_fdm->registered_regions = cpu_to_be16(0);
fadump_conf->dump_registered = 0; fadump_conf->dump_registered = 0;
return 0; return 0;
} }
@@ -563,19 +571,20 @@ static void opal_fadump_region_show(struct fw_dump *fadump_conf,
else else
fdm_ptr = opal_fdm; fdm_ptr = opal_fdm;
for (i = 0; i < fdm_ptr->region_cnt; i++) { for (i = 0; i < be16_to_cpu(fdm_ptr->region_cnt); i++) {
/* /*
* Only regions that are registered for MPIPL * Only regions that are registered for MPIPL
* would have dump data. * would have dump data.
*/ */
if ((fadump_conf->dump_active) && if ((fadump_conf->dump_active) &&
(i < fdm_ptr->registered_regions)) (i < be16_to_cpu(fdm_ptr->registered_regions)))
dumped_bytes = fdm_ptr->rgn[i].size; dumped_bytes = be64_to_cpu(fdm_ptr->rgn[i].size);
seq_printf(m, "DUMP: Src: %#016llx, Dest: %#016llx, ", seq_printf(m, "DUMP: Src: %#016llx, Dest: %#016llx, ",
fdm_ptr->rgn[i].src, fdm_ptr->rgn[i].dest); be64_to_cpu(fdm_ptr->rgn[i].src),
be64_to_cpu(fdm_ptr->rgn[i].dest));
seq_printf(m, "Size: %#llx, Dumped: %#llx bytes\n", seq_printf(m, "Size: %#llx, Dumped: %#llx bytes\n",
fdm_ptr->rgn[i].size, dumped_bytes); be64_to_cpu(fdm_ptr->rgn[i].size), dumped_bytes);
} }
/* Dump is active. Show reserved area start address. */ /* Dump is active. Show reserved area start address. */
@@ -624,6 +633,7 @@ void __init opal_fadump_dt_scan(struct fw_dump *fadump_conf, u64 node)
{ {
const __be32 *prop; const __be32 *prop;
unsigned long dn; unsigned long dn;
__be64 be_addr;
u64 addr = 0; u64 addr = 0;
int i, len; int i, len;
s64 ret; s64 ret;
@@ -680,13 +690,13 @@ void __init opal_fadump_dt_scan(struct fw_dump *fadump_conf, u64 node)
if (!prop) if (!prop)
return; return;
ret = opal_mpipl_query_tag(OPAL_MPIPL_TAG_KERNEL, &addr); ret = opal_mpipl_query_tag(OPAL_MPIPL_TAG_KERNEL, &be_addr);
if ((ret != OPAL_SUCCESS) || !addr) { if ((ret != OPAL_SUCCESS) || !be_addr) {
pr_err("Failed to get Kernel metadata (%lld)\n", ret); pr_err("Failed to get Kernel metadata (%lld)\n", ret);
return; return;
} }
addr = be64_to_cpu(addr); addr = be64_to_cpu(be_addr);
pr_debug("Kernel metadata addr: %llx\n", addr); pr_debug("Kernel metadata addr: %llx\n", addr);
opal_fdm_active = __va(addr); opal_fdm_active = __va(addr);
@@ -697,14 +707,14 @@ void __init opal_fadump_dt_scan(struct fw_dump *fadump_conf, u64 node)
} }
/* Kernel regions not registered with f/w for MPIPL */ /* Kernel regions not registered with f/w for MPIPL */
if (opal_fdm_active->registered_regions == 0) { if (be16_to_cpu(opal_fdm_active->registered_regions) == 0) {
opal_fdm_active = NULL; opal_fdm_active = NULL;
return; return;
} }
ret = opal_mpipl_query_tag(OPAL_MPIPL_TAG_CPU, &addr); ret = opal_mpipl_query_tag(OPAL_MPIPL_TAG_CPU, &be_addr);
if (addr) { if (be_addr) {
addr = be64_to_cpu(addr); addr = be64_to_cpu(be_addr);
pr_debug("CPU metadata addr: %llx\n", addr); pr_debug("CPU metadata addr: %llx\n", addr);
opal_cpu_metadata = __va(addr); opal_cpu_metadata = __va(addr);
} }

View File

@@ -31,14 +31,14 @@
* OPAL FADump kernel metadata * OPAL FADump kernel metadata
* *
* The address of this structure will be registered with f/w for retrieving * The address of this structure will be registered with f/w for retrieving
* and processing during crash dump. * in the capture kernel to process the crash dump.
*/ */
struct opal_fadump_mem_struct { struct opal_fadump_mem_struct {
u8 version; u8 version;
u8 reserved[3]; u8 reserved[3];
u16 region_cnt; /* number of regions */ __be16 region_cnt; /* number of regions */
u16 registered_regions; /* Regions registered for MPIPL */ __be16 registered_regions; /* Regions registered for MPIPL */
u64 fadumphdr_addr; __be64 fadumphdr_addr;
struct opal_mpipl_region rgn[FADUMP_MAX_MEM_REGS]; struct opal_mpipl_region rgn[FADUMP_MAX_MEM_REGS];
} __packed; } __packed;
@@ -135,7 +135,7 @@ static inline void opal_fadump_read_regs(char *bufp, unsigned int regs_cnt,
for (i = 0; i < regs_cnt; i++, bufp += reg_entry_size) { for (i = 0; i < regs_cnt; i++, bufp += reg_entry_size) {
reg_entry = (struct hdat_fadump_reg_entry *)bufp; reg_entry = (struct hdat_fadump_reg_entry *)bufp;
val = (cpu_endian ? be64_to_cpu(reg_entry->reg_val) : val = (cpu_endian ? be64_to_cpu(reg_entry->reg_val) :
reg_entry->reg_val); (u64)(reg_entry->reg_val));
opal_fadump_set_regval_regnum(regs, opal_fadump_set_regval_regnum(regs,
be32_to_cpu(reg_entry->reg_type), be32_to_cpu(reg_entry->reg_type),
be32_to_cpu(reg_entry->reg_num), be32_to_cpu(reg_entry->reg_num),

View File

@@ -55,6 +55,7 @@ static int __init uv_init(void)
return -ENODEV; return -ENODEV;
uv_memcons = memcons_init(node, "memcons"); uv_memcons = memcons_init(node, "memcons");
of_node_put(node);
if (!uv_memcons) if (!uv_memcons)
return -ENOENT; return -ENOENT;

View File

@@ -216,7 +216,7 @@ int vas_setup_fault_window(struct vas_instance *vinst)
vas_init_rx_win_attr(&attr, VAS_COP_TYPE_FAULT); vas_init_rx_win_attr(&attr, VAS_COP_TYPE_FAULT);
attr.rx_fifo_size = vinst->fault_fifo_size; attr.rx_fifo_size = vinst->fault_fifo_size;
attr.rx_fifo = vinst->fault_fifo; attr.rx_fifo = __pa(vinst->fault_fifo);
/* /*
* Max creds is based on number of CRBs can fit in the FIFO. * Max creds is based on number of CRBs can fit in the FIFO.

View File

@@ -404,7 +404,7 @@ static void init_winctx_regs(struct pnv_vas_window *window,
* *
* See also: Design note in function header. * See also: Design note in function header.
*/ */
val = __pa(winctx->rx_fifo); val = winctx->rx_fifo;
val = SET_FIELD(VAS_PAGE_MIGRATION_SELECT, val, 0); val = SET_FIELD(VAS_PAGE_MIGRATION_SELECT, val, 0);
write_hvwc_reg(window, VREG(LFIFO_BAR), val); write_hvwc_reg(window, VREG(LFIFO_BAR), val);
@@ -739,7 +739,7 @@ static void init_winctx_for_rxwin(struct pnv_vas_window *rxwin,
*/ */
winctx->fifo_disable = true; winctx->fifo_disable = true;
winctx->intr_disable = true; winctx->intr_disable = true;
winctx->rx_fifo = NULL; winctx->rx_fifo = 0;
} }
winctx->lnotify_lpid = rxattr->lnotify_lpid; winctx->lnotify_lpid = rxattr->lnotify_lpid;

View File

@@ -376,7 +376,7 @@ struct pnv_vas_window {
* is a container for the register fields in the window context. * is a container for the register fields in the window context.
*/ */
struct vas_winctx { struct vas_winctx {
void *rx_fifo; u64 rx_fifo;
int rx_fifo_size; int rx_fifo_size;
int wcreds_max; int wcreds_max;
int rsvd_txbuf_count; int rsvd_txbuf_count;

View File

@@ -404,9 +404,10 @@ void __init iommu_init_early_dart(struct pci_controller_ops *controller_ops)
} }
/* Initialize the DART HW */ /* Initialize the DART HW */
if (dart_init(dn) != 0) if (dart_init(dn) != 0) {
of_node_put(dn);
return; return;
}
/* /*
* U4 supports a DART bypass, we use it for 64-bit capable devices to * U4 supports a DART bypass, we use it for 64-bit capable devices to
* improve performance. However, that only works for devices connected * improve performance. However, that only works for devices connected
@@ -419,6 +420,7 @@ void __init iommu_init_early_dart(struct pci_controller_ops *controller_ops)
/* Setup pci_dma ops */ /* Setup pci_dma ops */
set_pci_dma_ops(&dma_iommu_ops); set_pci_dma_ops(&dma_iommu_ops);
of_node_put(dn);
} }
#ifdef CONFIG_PM #ifdef CONFIG_PM

View File

@@ -505,8 +505,10 @@ int fsl_rio_setup(struct platform_device *dev)
if (rc) { if (rc) {
dev_err(&dev->dev, "Can't get %pOF property 'reg'\n", dev_err(&dev->dev, "Can't get %pOF property 'reg'\n",
rmu_node); rmu_node);
of_node_put(rmu_node);
goto err_rmu; goto err_rmu;
} }
of_node_put(rmu_node);
rmu_regs_win = ioremap(rmu_regs.start, resource_size(&rmu_regs)); rmu_regs_win = ioremap(rmu_regs.start, resource_size(&rmu_regs));
if (!rmu_regs_win) { if (!rmu_regs_win) {
dev_err(&dev->dev, "Unable to map rmu register window\n"); dev_err(&dev->dev, "Unable to map rmu register window\n");

View File

@@ -196,6 +196,7 @@ int icp_opal_init(void)
printk("XICS: Using OPAL ICP fallbacks\n"); printk("XICS: Using OPAL ICP fallbacks\n");
of_node_put(np);
return 0; return 0;
} }

View File

@@ -67,6 +67,17 @@ static int xive_irq_bitmap_add(int base, int count)
return 0; return 0;
} }
static void xive_irq_bitmap_remove_all(void)
{
struct xive_irq_bitmap *xibm, *tmp;
list_for_each_entry_safe(xibm, tmp, &xive_irq_bitmaps, list) {
list_del(&xibm->list);
kfree(xibm->bitmap);
kfree(xibm);
}
}
static int __xive_irq_bitmap_alloc(struct xive_irq_bitmap *xibm) static int __xive_irq_bitmap_alloc(struct xive_irq_bitmap *xibm)
{ {
int irq; int irq;
@@ -803,7 +814,7 @@ bool __init xive_spapr_init(void)
u32 val; u32 val;
u32 len; u32 len;
const __be32 *reg; const __be32 *reg;
int i; int i, err;
if (xive_spapr_disabled()) if (xive_spapr_disabled())
return false; return false;
@@ -819,32 +830,35 @@ bool __init xive_spapr_init(void)
/* Resource 1 is the OS ring TIMA */ /* Resource 1 is the OS ring TIMA */
if (of_address_to_resource(np, 1, &r)) { if (of_address_to_resource(np, 1, &r)) {
pr_err("Failed to get thread mgmnt area resource\n"); pr_err("Failed to get thread mgmnt area resource\n");
return false; goto err_put;
} }
tima = ioremap(r.start, resource_size(&r)); tima = ioremap(r.start, resource_size(&r));
if (!tima) { if (!tima) {
pr_err("Failed to map thread mgmnt area\n"); pr_err("Failed to map thread mgmnt area\n");
return false; goto err_put;
} }
if (!xive_get_max_prio(&max_prio)) if (!xive_get_max_prio(&max_prio))
return false; goto err_unmap;
/* Feed the IRQ number allocator with the ranges given in the DT */ /* Feed the IRQ number allocator with the ranges given in the DT */
reg = of_get_property(np, "ibm,xive-lisn-ranges", &len); reg = of_get_property(np, "ibm,xive-lisn-ranges", &len);
if (!reg) { if (!reg) {
pr_err("Failed to read 'ibm,xive-lisn-ranges' property\n"); pr_err("Failed to read 'ibm,xive-lisn-ranges' property\n");
return false; goto err_unmap;
} }
if (len % (2 * sizeof(u32)) != 0) { if (len % (2 * sizeof(u32)) != 0) {
pr_err("invalid 'ibm,xive-lisn-ranges' property\n"); pr_err("invalid 'ibm,xive-lisn-ranges' property\n");
return false; goto err_unmap;
} }
for (i = 0; i < len / (2 * sizeof(u32)); i++, reg += 2) for (i = 0; i < len / (2 * sizeof(u32)); i++, reg += 2) {
xive_irq_bitmap_add(be32_to_cpu(reg[0]), err = xive_irq_bitmap_add(be32_to_cpu(reg[0]),
be32_to_cpu(reg[1])); be32_to_cpu(reg[1]));
if (err < 0)
goto err_mem_free;
}
/* Iterate the EQ sizes and pick one */ /* Iterate the EQ sizes and pick one */
of_property_for_each_u32(np, "ibm,xive-eq-sizes", prop, reg, val) { of_property_for_each_u32(np, "ibm,xive-eq-sizes", prop, reg, val) {
@@ -855,10 +869,19 @@ bool __init xive_spapr_init(void)
/* Initialize XIVE core with our backend */ /* Initialize XIVE core with our backend */
if (!xive_core_init(np, &xive_spapr_ops, tima, TM_QW1_OS, max_prio)) if (!xive_core_init(np, &xive_spapr_ops, tima, TM_QW1_OS, max_prio))
return false; goto err_mem_free;
of_node_put(np);
pr_info("Using %dkB queues\n", 1 << (xive_queue_shift - 10)); pr_info("Using %dkB queues\n", 1 << (xive_queue_shift - 10));
return true; return true;
err_mem_free:
xive_irq_bitmap_remove_all();
err_unmap:
iounmap(tima);
err_put:
of_node_put(np);
return false;
} }
machine_arch_initcall(pseries, xive_core_debug_init); machine_arch_initcall(pseries, xive_core_debug_init);

View File

@@ -23,9 +23,9 @@
888 : 888 :
\new_c \new_c
889 : 889 :
.previous
.org . - (889b - 888b) + (887b - 886b) .org . - (889b - 888b) + (887b - 886b)
.org . - (887b - 886b) + (889b - 888b) .org . - (887b - 886b) + (889b - 888b)
.previous
.endif .endif
.endm .endm
@@ -60,9 +60,9 @@
"888 :\n" \ "888 :\n" \
new_c "\n" \ new_c "\n" \
"889 :\n" \ "889 :\n" \
".previous\n" \
".org . - (887b - 886b) + (889b - 888b)\n" \ ".org . - (887b - 886b) + (889b - 888b)\n" \
".org . - (889b - 888b) + (887b - 886b)\n" \ ".org . - (889b - 888b) + (887b - 886b)\n" \
".previous\n" \
".endif\n" ".endif\n"
#define __ALTERNATIVE_CFG(old_c, new_c, vendor_id, errata_id, enable) \ #define __ALTERNATIVE_CFG(old_c, new_c, vendor_id, errata_id, enable) \

View File

@@ -4,7 +4,7 @@
static inline bool arch_irq_work_has_interrupt(void) static inline bool arch_irq_work_has_interrupt(void)
{ {
return true; return IS_ENABLED(CONFIG_SMP);
} }
extern void arch_irq_work_raise(void); extern void arch_irq_work_raise(void);
#endif /* _ASM_RISCV_IRQ_WORK_H */ #endif /* _ASM_RISCV_IRQ_WORK_H */

View File

@@ -9,7 +9,6 @@
*/ */
#define __ARCH_WANT_SYS_CLONE #define __ARCH_WANT_SYS_CLONE
#define __ARCH_WANT_MEMFD_SECRET
#include <uapi/asm/unistd.h> #include <uapi/asm/unistd.h>

View File

@@ -21,6 +21,7 @@
#endif /* __LP64__ */ #endif /* __LP64__ */
#define __ARCH_WANT_SYS_CLONE3 #define __ARCH_WANT_SYS_CLONE3
#define __ARCH_WANT_MEMFD_SECRET
#include <asm-generic/unistd.h> #include <asm-generic/unistd.h>

View File

@@ -301,6 +301,7 @@ clear_bss_done:
REG_S a0, (a2) REG_S a0, (a2)
/* Initialize page tables and relocate to virtual addresses */ /* Initialize page tables and relocate to virtual addresses */
la tp, init_task
la sp, init_thread_union + THREAD_SIZE la sp, init_thread_union + THREAD_SIZE
XIP_FIXUP_OFFSET sp XIP_FIXUP_OFFSET sp
#ifdef CONFIG_BUILTIN_DTB #ifdef CONFIG_BUILTIN_DTB

View File

@@ -199,7 +199,7 @@ static void __init init_resources(void)
res = &mem_res[res_idx--]; res = &mem_res[res_idx--];
res->name = "Reserved"; res->name = "Reserved";
res->flags = IORESOURCE_MEM | IORESOURCE_BUSY; res->flags = IORESOURCE_MEM | IORESOURCE_EXCLUSIVE;
res->start = __pfn_to_phys(memblock_region_reserved_base_pfn(region)); res->start = __pfn_to_phys(memblock_region_reserved_base_pfn(region));
res->end = __pfn_to_phys(memblock_region_reserved_end_pfn(region)) - 1; res->end = __pfn_to_phys(memblock_region_reserved_end_pfn(region)) - 1;
@@ -224,7 +224,7 @@ static void __init init_resources(void)
if (unlikely(memblock_is_nomap(region))) { if (unlikely(memblock_is_nomap(region))) {
res->name = "Reserved"; res->name = "Reserved";
res->flags = IORESOURCE_MEM | IORESOURCE_BUSY; res->flags = IORESOURCE_MEM | IORESOURCE_EXCLUSIVE;
} else { } else {
res->name = "System RAM"; res->name = "System RAM";
res->flags = IORESOURCE_SYSTEM_RAM | IORESOURCE_BUSY; res->flags = IORESOURCE_SYSTEM_RAM | IORESOURCE_BUSY;

View File

@@ -369,7 +369,7 @@ void cio_gp_dma_destroy(struct gen_pool *gp_dma, struct device *dma_dev);
struct gen_pool *cio_gp_dma_create(struct device *dma_dev, int nr_pages); struct gen_pool *cio_gp_dma_create(struct device *dma_dev, int nr_pages);
/* Function from drivers/s390/cio/chsc.c */ /* Function from drivers/s390/cio/chsc.c */
int chsc_sstpc(void *page, unsigned int op, u16 ctrl, u64 *clock_delta); int chsc_sstpc(void *page, unsigned int op, u16 ctrl, long *clock_delta);
int chsc_sstpi(void *page, void *result, size_t size); int chsc_sstpi(void *page, void *result, size_t size);
int chsc_stzi(void *page, void *result, size_t size); int chsc_stzi(void *page, void *result, size_t size);
int chsc_sgib(u32 origin); int chsc_sgib(u32 origin);

View File

@@ -9,6 +9,8 @@
#ifndef _S390_KEXEC_H #ifndef _S390_KEXEC_H
#define _S390_KEXEC_H #define _S390_KEXEC_H
#include <linux/module.h>
#include <asm/processor.h> #include <asm/processor.h>
#include <asm/page.h> #include <asm/page.h>
#include <asm/setup.h> #include <asm/setup.h>
@@ -83,4 +85,12 @@ struct kimage_arch {
extern const struct kexec_file_ops s390_kexec_image_ops; extern const struct kexec_file_ops s390_kexec_image_ops;
extern const struct kexec_file_ops s390_kexec_elf_ops; extern const struct kexec_file_ops s390_kexec_elf_ops;
#ifdef CONFIG_KEXEC_FILE
struct purgatory_info;
int arch_kexec_apply_relocations_add(struct purgatory_info *pi,
Elf_Shdr *section,
const Elf_Shdr *relsec,
const Elf_Shdr *symtab);
#define arch_kexec_apply_relocations_add arch_kexec_apply_relocations_add
#endif
#endif /*_S390_KEXEC_H */ #endif /*_S390_KEXEC_H */

View File

@@ -46,10 +46,17 @@ static inline bool test_preempt_need_resched(void)
static inline void __preempt_count_add(int val) static inline void __preempt_count_add(int val)
{ {
if (__builtin_constant_p(val) && (val >= -128) && (val <= 127)) /*
__atomic_add_const(val, &S390_lowcore.preempt_count); * With some obscure config options and CONFIG_PROFILE_ALL_BRANCHES
else * enabled, gcc 12 fails to handle __builtin_constant_p().
__atomic_add(val, &S390_lowcore.preempt_count); */
if (!IS_ENABLED(CONFIG_PROFILE_ALL_BRANCHES)) {
if (__builtin_constant_p(val) && (val >= -128) && (val <= 127)) {
__atomic_add_const(val, &S390_lowcore.preempt_count);
return;
}
}
__atomic_add(val, &S390_lowcore.preempt_count);
} }
static inline void __preempt_count_sub(int val) static inline void __preempt_count_sub(int val)

View File

@@ -30,7 +30,7 @@ static struct kvm_s390_sie_block *sie_block(struct pt_regs *regs)
if (!stack) if (!stack)
return NULL; return NULL;
return (struct kvm_s390_sie_block *) stack->empty1[0]; return (struct kvm_s390_sie_block *)stack->empty1[1];
} }
static bool is_in_guest(struct pt_regs *regs) static bool is_in_guest(struct pt_regs *regs)

View File

@@ -364,7 +364,7 @@ static inline int check_sync_clock(void)
* Apply clock delta to the global data structures. * Apply clock delta to the global data structures.
* This is called once on the CPU that performed the clock sync. * This is called once on the CPU that performed the clock sync.
*/ */
static void clock_sync_global(unsigned long delta) static void clock_sync_global(long delta)
{ {
unsigned long now, adj; unsigned long now, adj;
struct ptff_qto qto; struct ptff_qto qto;
@@ -400,7 +400,7 @@ static void clock_sync_global(unsigned long delta)
* Apply clock delta to the per-CPU data structures of this CPU. * Apply clock delta to the per-CPU data structures of this CPU.
* This is called for each online CPU after the call to clock_sync_global. * This is called for each online CPU after the call to clock_sync_global.
*/ */
static void clock_sync_local(unsigned long delta) static void clock_sync_local(long delta)
{ {
/* Add the delta to the clock comparator. */ /* Add the delta to the clock comparator. */
if (S390_lowcore.clock_comparator != clock_comparator_max) { if (S390_lowcore.clock_comparator != clock_comparator_max) {
@@ -424,7 +424,7 @@ static void __init time_init_wq(void)
struct clock_sync_data { struct clock_sync_data {
atomic_t cpus; atomic_t cpus;
int in_sync; int in_sync;
unsigned long clock_delta; long clock_delta;
}; };
/* /*
@@ -544,7 +544,7 @@ static int stpinfo_valid(void)
static int stp_sync_clock(void *data) static int stp_sync_clock(void *data)
{ {
struct clock_sync_data *sync = data; struct clock_sync_data *sync = data;
u64 clock_delta, flags; long clock_delta, flags;
static int first; static int first;
int rc; int rc;

View File

@@ -780,5 +780,6 @@ static_assert(offsetof(compat_siginfo_t, si_upper) == 0x18);
static_assert(offsetof(compat_siginfo_t, si_pkey) == 0x14); static_assert(offsetof(compat_siginfo_t, si_pkey) == 0x14);
static_assert(offsetof(compat_siginfo_t, si_perf_data) == 0x10); static_assert(offsetof(compat_siginfo_t, si_perf_data) == 0x10);
static_assert(offsetof(compat_siginfo_t, si_perf_type) == 0x14); static_assert(offsetof(compat_siginfo_t, si_perf_type) == 0x14);
static_assert(offsetof(compat_siginfo_t, si_perf_flags) == 0x18);
static_assert(offsetof(compat_siginfo_t, si_band) == 0x0c); static_assert(offsetof(compat_siginfo_t, si_band) == 0x0c);
static_assert(offsetof(compat_siginfo_t, si_fd) == 0x10); static_assert(offsetof(compat_siginfo_t, si_fd) == 0x10);

View File

@@ -590,5 +590,6 @@ static_assert(offsetof(siginfo_t, si_upper) == 0x28);
static_assert(offsetof(siginfo_t, si_pkey) == 0x20); static_assert(offsetof(siginfo_t, si_pkey) == 0x20);
static_assert(offsetof(siginfo_t, si_perf_data) == 0x18); static_assert(offsetof(siginfo_t, si_perf_data) == 0x18);
static_assert(offsetof(siginfo_t, si_perf_type) == 0x20); static_assert(offsetof(siginfo_t, si_perf_type) == 0x20);
static_assert(offsetof(siginfo_t, si_perf_flags) == 0x24);
static_assert(offsetof(siginfo_t, si_band) == 0x10); static_assert(offsetof(siginfo_t, si_band) == 0x10);
static_assert(offsetof(siginfo_t, si_fd) == 0x14); static_assert(offsetof(siginfo_t, si_fd) == 0x14);

View File

@@ -220,7 +220,7 @@ static int winch_tramp(int fd, struct tty_port *port, int *fd_out,
unsigned long *stack_out) unsigned long *stack_out)
{ {
struct winch_data data; struct winch_data data;
int fds[2], n, err; int fds[2], n, err, pid;
char c; char c;
err = os_pipe(fds, 1, 1); err = os_pipe(fds, 1, 1);
@@ -238,8 +238,9 @@ static int winch_tramp(int fd, struct tty_port *port, int *fd_out,
* problem with /dev/net/tun, which if held open by this * problem with /dev/net/tun, which if held open by this
* thread, prevents the TUN/TAP device from being reused. * thread, prevents the TUN/TAP device from being reused.
*/ */
err = run_helper_thread(winch_thread, &data, CLONE_FILES, stack_out); pid = run_helper_thread(winch_thread, &data, CLONE_FILES, stack_out);
if (err < 0) { if (pid < 0) {
err = pid;
printk(UM_KERN_ERR "fork of winch_thread failed - errno = %d\n", printk(UM_KERN_ERR "fork of winch_thread failed - errno = %d\n",
-err); -err);
goto out_close; goto out_close;
@@ -263,7 +264,7 @@ static int winch_tramp(int fd, struct tty_port *port, int *fd_out,
goto out_close; goto out_close;
} }
return err; return pid;
out_close: out_close:
close(fds[1]); close(fds[1]);

View File

@@ -4,6 +4,7 @@ generic-y += bug.h
generic-y += compat.h generic-y += compat.h
generic-y += current.h generic-y += current.h
generic-y += device.h generic-y += device.h
generic-y += dma-mapping.h
generic-y += emergency-restart.h generic-y += emergency-restart.h
generic-y += exec.h generic-y += exec.h
generic-y += extable.h generic-y += extable.h

View File

@@ -64,6 +64,7 @@ static inline struct thread_info *current_thread_info(void)
#define TIF_RESTORE_SIGMASK 7 #define TIF_RESTORE_SIGMASK 7
#define TIF_NOTIFY_RESUME 8 #define TIF_NOTIFY_RESUME 8
#define TIF_SECCOMP 9 /* secure computing */ #define TIF_SECCOMP 9 /* secure computing */
#define TIF_SINGLESTEP 10 /* single stepping userspace */
#define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE) #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)
#define _TIF_SIGPENDING (1 << TIF_SIGPENDING) #define _TIF_SIGPENDING (1 << TIF_SIGPENDING)
@@ -72,5 +73,6 @@ static inline struct thread_info *current_thread_info(void)
#define _TIF_MEMDIE (1 << TIF_MEMDIE) #define _TIF_MEMDIE (1 << TIF_MEMDIE)
#define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT) #define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT)
#define _TIF_SECCOMP (1 << TIF_SECCOMP) #define _TIF_SECCOMP (1 << TIF_SECCOMP)
#define _TIF_SINGLESTEP (1 << TIF_SINGLESTEP)
#endif #endif

View File

@@ -42,7 +42,7 @@ void start_thread(struct pt_regs *regs, unsigned long eip, unsigned long esp)
{ {
PT_REGS_IP(regs) = eip; PT_REGS_IP(regs) = eip;
PT_REGS_SP(regs) = esp; PT_REGS_SP(regs) = esp;
current->ptrace &= ~PT_DTRACE; clear_thread_flag(TIF_SINGLESTEP);
#ifdef SUBARCH_EXECVE1 #ifdef SUBARCH_EXECVE1
SUBARCH_EXECVE1(regs->regs); SUBARCH_EXECVE1(regs->regs);
#endif #endif

View File

@@ -339,7 +339,7 @@ int singlestepping(void * t)
{ {
struct task_struct *task = t ? t : current; struct task_struct *task = t ? t : current;
if (!(task->ptrace & PT_DTRACE)) if (!test_thread_flag(TIF_SINGLESTEP))
return 0; return 0;
if (task->thread.singlestep_syscall) if (task->thread.singlestep_syscall)

View File

@@ -12,7 +12,7 @@
void user_enable_single_step(struct task_struct *child) void user_enable_single_step(struct task_struct *child)
{ {
child->ptrace |= PT_DTRACE; set_tsk_thread_flag(child, TIF_SINGLESTEP);
child->thread.singlestep_syscall = 0; child->thread.singlestep_syscall = 0;
#ifdef SUBARCH_SET_SINGLESTEPPING #ifdef SUBARCH_SET_SINGLESTEPPING
@@ -22,7 +22,7 @@ void user_enable_single_step(struct task_struct *child)
void user_disable_single_step(struct task_struct *child) void user_disable_single_step(struct task_struct *child)
{ {
child->ptrace &= ~PT_DTRACE; clear_tsk_thread_flag(child, TIF_SINGLESTEP);
child->thread.singlestep_syscall = 0; child->thread.singlestep_syscall = 0;
#ifdef SUBARCH_SET_SINGLESTEPPING #ifdef SUBARCH_SET_SINGLESTEPPING
@@ -121,7 +121,7 @@ static void send_sigtrap(struct uml_pt_regs *regs, int error_code)
} }
/* /*
* XXX Check PT_DTRACE vs TIF_SINGLESTEP for singlestepping check and * XXX Check TIF_SINGLESTEP for singlestepping check and
* PT_PTRACED vs TIF_SYSCALL_TRACE for syscall tracing check * PT_PTRACED vs TIF_SYSCALL_TRACE for syscall tracing check
*/ */
int syscall_trace_enter(struct pt_regs *regs) int syscall_trace_enter(struct pt_regs *regs)
@@ -145,7 +145,7 @@ void syscall_trace_leave(struct pt_regs *regs)
audit_syscall_exit(regs); audit_syscall_exit(regs);
/* Fake a debug trap */ /* Fake a debug trap */
if (ptraced & PT_DTRACE) if (test_thread_flag(TIF_SINGLESTEP))
send_sigtrap(&regs->regs, 0); send_sigtrap(&regs->regs, 0);
if (!test_thread_flag(TIF_SYSCALL_TRACE)) if (!test_thread_flag(TIF_SYSCALL_TRACE))

View File

@@ -53,7 +53,7 @@ static void handle_signal(struct ksignal *ksig, struct pt_regs *regs)
unsigned long sp; unsigned long sp;
int err; int err;
if ((current->ptrace & PT_DTRACE) && (current->ptrace & PT_PTRACED)) if (test_thread_flag(TIF_SINGLESTEP) && (current->ptrace & PT_PTRACED))
singlestep = 1; singlestep = 1;
/* Did we come from a system call? */ /* Did we come from a system call? */
@@ -128,7 +128,7 @@ void do_signal(struct pt_regs *regs)
* on the host. The tracing thread will check this flag and * on the host. The tracing thread will check this flag and
* PTRACE_SYSCALL if necessary. * PTRACE_SYSCALL if necessary.
*/ */
if (current->ptrace & PT_DTRACE) if (test_thread_flag(TIF_SINGLESTEP))
current->thread.singlestep_syscall = current->thread.singlestep_syscall =
is_syscall(PT_REGS_IP(&current->thread.regs)); is_syscall(PT_REGS_IP(&current->thread.regs));

View File

@@ -1325,7 +1325,7 @@ config MICROCODE
config MICROCODE_INTEL config MICROCODE_INTEL
bool "Intel microcode loading support" bool "Intel microcode loading support"
depends on MICROCODE depends on CPU_SUP_INTEL && MICROCODE
default MICROCODE default MICROCODE
help help
This options enables microcode patch loading support for Intel This options enables microcode patch loading support for Intel
@@ -1337,7 +1337,7 @@ config MICROCODE_INTEL
config MICROCODE_AMD config MICROCODE_AMD
bool "AMD microcode loading support" bool "AMD microcode loading support"
depends on MICROCODE depends on CPU_SUP_AMD && MICROCODE
help help
If you select this option, microcode patch loading support for AMD If you select this option, microcode patch loading support for AMD
processors will be enabled. processors will be enabled.

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